diff --git a/frontend/components/screen/panels/UnifiedPropertiesPanel.tsx b/frontend/components/screen/panels/UnifiedPropertiesPanel.tsx index 1d4829bb..61051439 100644 --- a/frontend/components/screen/panels/UnifiedPropertiesPanel.tsx +++ b/frontend/components/screen/panels/UnifiedPropertiesPanel.tsx @@ -119,6 +119,25 @@ export const UnifiedPropertiesPanel: React.FC = ({ const [localHeight, setLocalHeight] = useState(""); const [localWidth, setLocalWidth] = useState(""); + // 🆕 전체 테이블 목록 (selected-items-detail-input 등에서 사용) + const [allTables, setAllTables] = useState>([]); + + // 🆕 전체 테이블 목록 로드 + useEffect(() => { + const loadAllTables = async () => { + try { + const { tableManagementApi } = await import("@/lib/api/tableManagement"); + const response = await tableManagementApi.getTableList(); + if (response.success && response.data) { + setAllTables(response.data); + } + } catch (error) { + console.error("전체 테이블 목록 로드 실패:", error); + } + }; + loadAllTables(); + }, []); + // 새로운 컴포넌트 시스템의 webType 동기화 useEffect(() => { if (selectedComponent?.type === "component") { @@ -326,6 +345,7 @@ export const UnifiedPropertiesPanel: React.FC = ({ config={config} onChange={handleConfigChange} tables={tables} // 테이블 정보 전달 + allTables={allTables} // 🆕 전체 테이블 목록 전달 (selected-items-detail-input 등에서 사용) screenTableName={selectedComponent.tableName || currentTable?.tableName || currentTableName} // 🔧 화면 테이블명 전달 tableColumns={currentTable?.columns || []} // 🔧 테이블 컬럼 정보 전달 /> diff --git a/frontend/lib/registry/components/selected-items-detail-input/SelectedItemsDetailInputConfigPanel.tsx b/frontend/lib/registry/components/selected-items-detail-input/SelectedItemsDetailInputConfigPanel.tsx index 408934e2..fa4813c2 100644 --- a/frontend/lib/registry/components/selected-items-detail-input/SelectedItemsDetailInputConfigPanel.tsx +++ b/frontend/lib/registry/components/selected-items-detail-input/SelectedItemsDetailInputConfigPanel.tsx @@ -180,7 +180,8 @@ export const SelectedItemsDetailInputConfigPanel: React.FC { - onChange({ [key]: value }); + // 🔧 기존 config와 병합하여 다른 속성 유지 + onChange({ ...config, [key]: value }); }; const handleFieldsChange = (fields: AdditionalFieldDefinition[]) => { @@ -403,7 +404,6 @@ export const SelectedItemsDetailInputConfigPanel: React.FC {selectedSourceTableLabel} diff --git a/frontend/lib/registry/components/table-list/TableListComponent.tsx b/frontend/lib/registry/components/table-list/TableListComponent.tsx index 24b80975..4a6aec26 100644 --- a/frontend/lib/registry/components/table-list/TableListComponent.tsx +++ b/frontend/lib/registry/components/table-list/TableListComponent.tsx @@ -1228,8 +1228,9 @@ export const TableListComponent: React.FC = ({ } // 체크박스 컬럼 (나중에 위치 결정) + // 기본값: enabled가 undefined면 true로 처리 let checkboxCol: ColumnConfig | null = null; - if (tableConfig.checkbox?.enabled) { + if (tableConfig.checkbox?.enabled ?? true) { checkboxCol = { columnName: "__checkbox__", displayName: "", @@ -1258,7 +1259,7 @@ export const TableListComponent: React.FC = ({ // 체크박스를 맨 앞 또는 맨 뒤에 추가 if (checkboxCol) { - if (tableConfig.checkbox.position === "right") { + if (tableConfig.checkbox?.position === "right") { cols = [...cols, checkboxCol]; } else { cols = [checkboxCol, ...cols]; diff --git a/frontend/lib/registry/components/table-list/TableListConfigPanel.tsx b/frontend/lib/registry/components/table-list/TableListConfigPanel.tsx index 6d76cfc8..c5ed9aaa 100644 --- a/frontend/lib/registry/components/table-list/TableListConfigPanel.tsx +++ b/frontend/lib/registry/components/table-list/TableListConfigPanel.tsx @@ -269,7 +269,9 @@ export const TableListConfigPanel: React.FC = ({ // }); const parentValue = config[parentKey] as any; + // 전체 config와 병합하여 다른 속성 유지 const newConfig = { + ...config, [parentKey]: { ...parentValue, [childKey]: value, @@ -754,6 +756,52 @@ export const TableListConfigPanel: React.FC = ({ + {/* 체크박스 설정 */} +
+
+

체크박스 설정

+
+
+
+
+ handleNestedChange("checkbox", "enabled", checked)} + /> + +
+ + {config.checkbox?.enabled && ( + <> +
+ handleNestedChange("checkbox", "selectAll", checked)} + /> + +
+ +
+ + +
+ + )} +
+
+ {/* 가로 스크롤 및 컬럼 고정 */}