feat: 수정 모달 자동 닫기 및 테이블 새로고침 기능 구현

- EditModal: 저장 완료 후 자동으로 닫히고 부모 테이블 새로고침
- buttonActions.ts: 저장 성공 후 closeEditModal 이벤트 발생
- InteractiveScreenViewerDynamic: onSave prop 추가하여 EditModal 연동
- InteractiveDataTable: EditModal 열 때 onSave 콜백으로 loadData 전달
- 두 가지 시나리오 모두 지원:
  1. InteractiveScreenViewerDynamic 버튼의 onSave 호출
  2. DynamicComponentRenderer 버튼의 buttonActions.ts 처리
This commit is contained in:
kjs
2025-11-03 09:58:04 +09:00
parent aef62454c2
commit 8e9daf5b22
6 changed files with 481 additions and 55 deletions

View File

@@ -38,6 +38,7 @@ interface InteractiveScreenViewerProps {
id: number;
tableName?: string;
};
onSave?: () => Promise<void>;
}
export const InteractiveScreenViewerDynamic: React.FC<InteractiveScreenViewerProps> = ({
@@ -47,6 +48,7 @@ export const InteractiveScreenViewerDynamic: React.FC<InteractiveScreenViewerPro
onFormDataChange,
hideLabel = false,
screenInfo,
onSave,
}) => {
const { isPreviewMode } = useScreenPreview(); // 프리뷰 모드 확인
const { userName, user } = useAuth();
@@ -204,8 +206,7 @@ export const InteractiveScreenViewerDynamic: React.FC<InteractiveScreenViewerPro
// 테이블 컴포넌트는 자체적으로 loadData 호출
}}
onClose={() => {
// 화면 닫기 로직 (필요시 구현)
console.log("🚪 화면 닫기 요청");
// buttonActions.ts가 이미 처리함
}}
/>
);
@@ -299,6 +300,18 @@ export const InteractiveScreenViewerDynamic: React.FC<InteractiveScreenViewerPro
// 버튼 액션 핸들러들
const handleSaveAction = async () => {
// EditModal에서 전달된 onSave가 있으면 우선 사용 (수정 모달)
if (onSave) {
try {
await onSave();
} catch (error) {
console.error("저장 오류:", error);
toast.error("저장 중 오류가 발생했습니다.");
}
return;
}
// 일반 저장 액션 (신규 생성)
if (!screenInfo?.tableName) {
toast.error("테이블명이 설정되지 않았습니다.");
return;