Merge pull request 'common/feat/dashboard-map' (#293) from common/feat/dashboard-map into main
Reviewed-on: http://39.117.244.52:3000/kjs/ERP-node/pulls/293
This commit is contained in:
commit
27b5f54a7c
|
|
@ -48,6 +48,10 @@ export const EmbeddedScreen = forwardRef<EmbeddedScreenHandle, EmbeddedScreenPro
|
|||
// 분할 패널 컨텍스트 (분할 패널 내부에 있을 때만 사용)
|
||||
const splitPanelContext = useSplitPanelContext();
|
||||
|
||||
// 🆕 selectedLeftData 참조 안정화 (실제 값이 바뀔 때만 업데이트)
|
||||
const selectedLeftData = splitPanelContext?.selectedLeftData;
|
||||
const prevSelectedLeftDataRef = useRef<string>("");
|
||||
|
||||
// 🆕 사용자 정보 가져오기 (저장 액션에 필요)
|
||||
const { userId, userName, companyCode } = useAuth();
|
||||
|
||||
|
|
@ -93,9 +97,6 @@ export const EmbeddedScreen = forwardRef<EmbeddedScreenHandle, EmbeddedScreenPro
|
|||
}, [initialFormData]);
|
||||
|
||||
// 🆕 분할 패널에서 좌측 선택 데이터가 변경되면 우측 화면의 formData에 자동 반영
|
||||
// 🆕 좌측 선택 데이터 (분할 패널 컨텍스트에서 직접 참조)
|
||||
const selectedLeftData = splitPanelContext?.selectedLeftData;
|
||||
|
||||
// 🆕 좌측 선택 데이터가 변경되면 우측 formData를 업데이트
|
||||
useEffect(() => {
|
||||
// 우측 화면인 경우에만 적용
|
||||
|
|
@ -108,6 +109,13 @@ export const EmbeddedScreen = forwardRef<EmbeddedScreenHandle, EmbeddedScreenPro
|
|||
return;
|
||||
}
|
||||
|
||||
// 🆕 값 비교로 실제 변경 여부 확인 (불필요한 리렌더링 방지)
|
||||
const currentDataStr = JSON.stringify(selectedLeftData || {});
|
||||
if (prevSelectedLeftDataRef.current === currentDataStr) {
|
||||
return; // 실제 값이 같으면 스킵
|
||||
}
|
||||
prevSelectedLeftDataRef.current = currentDataStr;
|
||||
|
||||
// 🆕 현재 화면의 모든 컴포넌트에서 columnName 수집
|
||||
const allColumnNames = layout.filter((comp) => comp.columnName).map((comp) => comp.columnName as string);
|
||||
|
||||
|
|
|
|||
|
|
@ -182,10 +182,8 @@ export const RepeaterInput: React.FC<RepeaterInputProps> = ({
|
|||
|
||||
// 항목 제거
|
||||
const handleRemoveItem = (index: number) => {
|
||||
// 🆕 minItems가 0이면 모든 항목 삭제 가능, 그 외에는 minItems 이하로 줄일 수 없음
|
||||
if (minItems > 0 && items.length <= minItems) {
|
||||
return;
|
||||
}
|
||||
// 🆕 항목이 1개 이하일 때도 삭제 가능 (빈 상태 허용)
|
||||
// minItems 체크 제거 - 모든 항목 삭제 허용
|
||||
|
||||
// 🆕 삭제되는 항목의 ID 저장 (DB에서 삭제할 때 필요)
|
||||
const removedItem = items[index];
|
||||
|
|
@ -811,7 +809,7 @@ export const RepeaterInput: React.FC<RepeaterInputProps> = ({
|
|||
|
||||
{/* 삭제 버튼 */}
|
||||
<TableCell className="h-12 px-2.5 py-2 text-center">
|
||||
{!readonly && !disabled && (minItems === 0 || items.length > minItems) && (
|
||||
{!readonly && !disabled && (
|
||||
<Button
|
||||
type="button"
|
||||
variant="ghost"
|
||||
|
|
@ -881,7 +879,7 @@ export const RepeaterInput: React.FC<RepeaterInputProps> = ({
|
|||
)}
|
||||
|
||||
{/* 삭제 버튼 */}
|
||||
{!readonly && !disabled && (minItems === 0 || items.length > minItems) && (
|
||||
{!readonly && !disabled && (
|
||||
<Button
|
||||
type="button"
|
||||
variant="ghost"
|
||||
|
|
|
|||
Loading…
Reference in New Issue