diff --git a/frontend/lib/registry/components/button-primary/ButtonPrimaryComponent.tsx b/frontend/lib/registry/components/button-primary/ButtonPrimaryComponent.tsx index 1f067865..ade1c5cc 100644 --- a/frontend/lib/registry/components/button-primary/ButtonPrimaryComponent.tsx +++ b/frontend/lib/registry/components/button-primary/ButtonPrimaryComponent.tsx @@ -832,7 +832,14 @@ export const ButtonPrimaryComponent: React.FC = ({ } // modalDataStore에서 선택된 데이터 가져오기 (분할 패널 등에서 선택한 데이터) - if ((!effectiveSelectedRowsData || effectiveSelectedRowsData.length === 0) && effectiveTableName) { + // 단, 모달(modal) 액션은 신규 등록이므로 modalDataStore 데이터를 가져오지 않음 + // (다른 화면에서 선택한 데이터가 남아있을 수 있으므로) + const shouldFetchFromModalDataStore = + processedConfig.action.type !== "modal" && + (!effectiveSelectedRowsData || effectiveSelectedRowsData.length === 0) && + effectiveTableName; + + if (shouldFetchFromModalDataStore) { try { const { useModalDataStore } = await import("@/stores/modalDataStore"); const dataRegistry = useModalDataStore.getState().dataRegistry; @@ -860,9 +867,10 @@ export const ButtonPrimaryComponent: React.FC = ({ return; } - // 모달 액션인데 선택된 데이터가 있으면 경고 메시지 표시하고 중단 + // 모달 액션인데 현재 화면(테이블)에서 직접 선택된 데이터가 있으면 경고 메시지 표시하고 중단 // (신규 등록 모달에서 선택된 데이터가 초기값으로 전달되는 것을 방지) - if (processedConfig.action.type === "modal" && effectiveSelectedRowsData && effectiveSelectedRowsData.length > 0) { + // 주의: selectedRowsData만 체크 (modalDataStore의 데이터는 이미 제외했으므로) + if (processedConfig.action.type === "modal" && selectedRowsData && selectedRowsData.length > 0) { toast.warning("신규 등록 시에는 테이블에서 선택된 항목을 해제해주세요."); return; }