diff --git a/frontend/components/screen/StyleEditor.tsx b/frontend/components/screen/StyleEditor.tsx index ecd405d0..cadeb641 100644 --- a/frontend/components/screen/StyleEditor.tsx +++ b/frontend/components/screen/StyleEditor.tsx @@ -29,59 +29,6 @@ export default function StyleEditor({ style, onStyleChange, className }: StyleEd return (
- {/* 여백 섹션 */} -
-
- -

여백

-
- -
-
-
- - handleStyleChange("margin", e.target.value)} - className="h-8" - /> -
-
- - handleStyleChange("padding", e.target.value)} - className="h-8" - /> -
-
- -
- - handleStyleChange("gap", e.target.value)} - className="h-8" - /> -
-
-
- {/* 테두리 섹션 */}
@@ -101,7 +48,7 @@ export default function StyleEditor({ style, onStyleChange, className }: StyleEd placeholder="1px" value={localStyle.borderWidth || ""} onChange={(e) => handleStyleChange("borderWidth", e.target.value)} - className="h-8" + className="h-8 text-xs" />
@@ -112,7 +59,7 @@ export default function StyleEditor({ style, onStyleChange, className }: StyleEd value={localStyle.borderStyle || "solid"} onValueChange={(value) => handleStyleChange("borderStyle", value)} > - + @@ -136,14 +83,14 @@ export default function StyleEditor({ style, onStyleChange, className }: StyleEd type="color" value={localStyle.borderColor || "#000000"} onChange={(e) => handleStyleChange("borderColor", e.target.value)} - className="h-8 w-14 p-1" + className="h-8 w-14 p-1 text-xs" /> handleStyleChange("borderColor", e.target.value)} placeholder="#000000" - className="h-8 flex-1" + className="h-8 flex-1 text-xs" />
@@ -157,7 +104,7 @@ export default function StyleEditor({ style, onStyleChange, className }: StyleEd placeholder="5px" value={localStyle.borderRadius || ""} onChange={(e) => handleStyleChange("borderRadius", e.target.value)} - className="h-8" + className="h-8 text-xs" />
@@ -182,14 +129,14 @@ export default function StyleEditor({ style, onStyleChange, className }: StyleEd type="color" value={localStyle.backgroundColor || "#ffffff"} onChange={(e) => handleStyleChange("backgroundColor", e.target.value)} - className="h-8 w-14 p-1" + className="h-8 w-14 p-1 text-xs" /> handleStyleChange("backgroundColor", e.target.value)} placeholder="#ffffff" - className="h-8 flex-1" + className="h-8 flex-1 text-xs" /> @@ -204,7 +151,7 @@ export default function StyleEditor({ style, onStyleChange, className }: StyleEd placeholder="url('image.jpg')" value={localStyle.backgroundImage || ""} onChange={(e) => handleStyleChange("backgroundImage", e.target.value)} - className="h-8" + className="h-8 text-xs" /> @@ -229,14 +176,14 @@ export default function StyleEditor({ style, onStyleChange, className }: StyleEd type="color" value={localStyle.color || "#000000"} onChange={(e) => handleStyleChange("color", e.target.value)} - className="h-8 w-14 p-1" + className="h-8 w-14 p-1 text-xs" /> handleStyleChange("color", e.target.value)} placeholder="#000000" - className="h-8 flex-1" + className="h-8 flex-1 text-xs" /> @@ -250,7 +197,7 @@ export default function StyleEditor({ style, onStyleChange, className }: StyleEd placeholder="14px" value={localStyle.fontSize || ""} onChange={(e) => handleStyleChange("fontSize", e.target.value)} - className="h-8" + className="h-8 text-xs" /> @@ -264,17 +211,31 @@ export default function StyleEditor({ style, onStyleChange, className }: StyleEd value={localStyle.fontWeight || "normal"} onValueChange={(value) => handleStyleChange("fontWeight", value)} > - + - 보통 - 굵게 - 100 - 400 - 500 - 600 - 700 + + 보통 + + + 굵게 + + + 100 + + + 400 + + + 500 + + + 600 + + + 700 + @@ -286,14 +247,22 @@ export default function StyleEditor({ style, onStyleChange, className }: StyleEd value={localStyle.textAlign || "left"} onValueChange={(value) => handleStyleChange("textAlign", value)} > - + - 왼쪽 - 가운데 - 오른쪽 - 양쪽 + + 왼쪽 + + + 가운데 + + + 오른쪽 + + + 양쪽 + diff --git a/frontend/components/screen/config-panels/ButtonConfigPanel.tsx b/frontend/components/screen/config-panels/ButtonConfigPanel.tsx index 01663c89..6b1669c4 100644 --- a/frontend/components/screen/config-panels/ButtonConfigPanel.tsx +++ b/frontend/components/screen/config-panels/ButtonConfigPanel.tsx @@ -515,94 +515,60 @@ export const ButtonConfigPanel: React.FC = ({ {/* 테이블 이력 보기 액션 설정 */} {(component.componentConfig?.action?.type || "save") === "view_table_history" && (
-

📜 테이블 이력 보기 설정

-
- {!config.action?.historyTableName && !currentTableName ? ( -
-

- ⚠️ 먼저 테이블명을 입력하거나, 현재 화면에 테이블을 연결해주세요. -

-
- ) : ( - <> - {!config.action?.historyTableName && currentTableName && ( -
-

- ✓ 현재 화면의 테이블 {currentTableName}을(를) 자동으로 사용합니다. -

-
- )} - - - - - - - - - - 컬럼을 찾을 수 없습니다. - - {tableColumns.map((column) => ( - { - onUpdateProperty("componentConfig.action.historyDisplayColumn", currentValue); - setDisplayColumnOpen(false); - }} - className="text-sm" - > - - {column} - - ))} - - - - - - -

- 전체 테이블 이력에서 레코드를 구분하기 위한 컬럼입니다. -
- 예: device_code를 설정하면 이력에 "DTG-001"로 - 표시됩니다. -
이 컬럼으로 검색도 가능합니다. -

- - {tableColumns.length === 0 && !columnsLoading && ( -

- ⚠️ ID 및 날짜 타입 컬럼을 제외한 사용 가능한 컬럼이 없습니다. -

- )} - - )} + + + + + + + + + 컬럼을 찾을 수 없습니다. + + {tableColumns.map((column) => ( + { + onUpdateProperty("componentConfig.action.historyDisplayColumn", currentValue); + setDisplayColumnOpen(false); + }} + className="text-sm" + > + + {column} + + ))} + + + + +
)} @@ -693,6 +659,7 @@ export const ButtonConfigPanel: React.FC = ({ setLocalInputs((prev) => ({ ...prev, targetUrl: newValue })); onUpdateProperty("componentConfig.action.targetUrl", newValue); }} + className="h-8 text-xs" />

URL을 입력하면 화면 선택보다 우선 적용됩니다

diff --git a/frontend/components/screen/panels/ComponentsPanel.tsx b/frontend/components/screen/panels/ComponentsPanel.tsx index b341cfb2..893bef5f 100644 --- a/frontend/components/screen/panels/ComponentsPanel.tsx +++ b/frontend/components/screen/panels/ComponentsPanel.tsx @@ -21,14 +21,14 @@ interface ComponentsPanelProps { placedColumns?: Set; // 이미 배치된 컬럼명 집합 } -export function ComponentsPanel({ - className, - tables = [], - searchTerm = "", - onSearchChange, +export function ComponentsPanel({ + className, + tables = [], + searchTerm = "", + onSearchChange, onTableDragStart, selectedTableName, - placedColumns + placedColumns, }: ComponentsPanelProps) { const [searchQuery, setSearchQuery] = useState(""); @@ -176,8 +176,8 @@ export function ComponentsPanel({ {/* 카테고리 탭 */} - - + + 테이블 diff --git a/frontend/components/screen/panels/DetailSettingsPanel.tsx b/frontend/components/screen/panels/DetailSettingsPanel.tsx index 1320778e..ee50e54d 100644 --- a/frontend/components/screen/panels/DetailSettingsPanel.tsx +++ b/frontend/components/screen/panels/DetailSettingsPanel.tsx @@ -1150,7 +1150,7 @@ export const DetailSettingsPanel: React.FC = ({
- + @@ -93,7 +93,7 @@ const ResolutionPanel: React.FC = ({ currentResolution, on {SCREEN_RESOLUTIONS.filter((r) => r.category === "desktop").map((resolution) => (
- + {resolution.name}
@@ -125,7 +125,7 @@ const ResolutionPanel: React.FC = ({ currentResolution, on
사용자 정의
- + 사용자 정의
@@ -139,43 +139,33 @@ const ResolutionPanel: React.FC = ({ currentResolution, on
- + setCustomWidth(e.target.value)} placeholder="1920" min="1" + className="h-8 text-xs" />
- + setCustomHeight(e.target.value)} placeholder="1080" min="1" + className="h-8 text-xs" />
-
)} - - {/* 해상도 정보 */} -
-
- 화면 비율: - {(currentResolution.width / currentResolution.height).toFixed(2)}:1 -
-
- 총 픽셀: - {(currentResolution.width * currentResolution.height).toLocaleString()} -
-
); }; diff --git a/frontend/components/screen/panels/UnifiedPropertiesPanel.tsx b/frontend/components/screen/panels/UnifiedPropertiesPanel.tsx index bb6ccf66..6e992de0 100644 --- a/frontend/components/screen/panels/UnifiedPropertiesPanel.tsx +++ b/frontend/components/screen/panels/UnifiedPropertiesPanel.tsx @@ -202,15 +202,6 @@ export const UnifiedPropertiesPanel: React.FC = ({ return (
- {/* 컴포넌트 정보 - 간소화 */} -
-
- - {selectedComponent.type} -
- {selectedComponent.id.slice(0, 8)} -
- {/* 라벨 + 최소 높이 (같은 행) */}
@@ -300,24 +291,15 @@ export const UnifiedPropertiesPanel: React.FC = ({
)} - {/* 위치 */} -
-
- - -
-
- - -
-
- - handleUpdate("position.z", parseInt(e.target.value) || 1)} - /> -
+ {/* Z-Index */} +
+ + handleUpdate("position.z", parseInt(e.target.value) || 1)} + className="h-6 text-[10px]" + />
{/* 라벨 스타일 */} @@ -389,33 +371,6 @@ export const UnifiedPropertiesPanel: React.FC = ({
)}
- - {/* 액션 버튼 */} - -
- {onCopyComponent && ( - - )} - {onDeleteComponent && ( - - )} -
); }; @@ -513,7 +468,7 @@ export const UnifiedPropertiesPanel: React.FC = ({
handleUpdate("webType", value)}> - + diff --git a/frontend/components/screen/panels/webtype-configs/CheckboxTypeConfigPanel.tsx b/frontend/components/screen/panels/webtype-configs/CheckboxTypeConfigPanel.tsx index abc400bb..4a6016aa 100644 --- a/frontend/components/screen/panels/webtype-configs/CheckboxTypeConfigPanel.tsx +++ b/frontend/components/screen/panels/webtype-configs/CheckboxTypeConfigPanel.tsx @@ -90,11 +90,11 @@ export const CheckboxTypeConfigPanel: React.FC = ( const newConfig = JSON.parse(JSON.stringify(currentValues)); // console.log("☑️ CheckboxTypeConfig 업데이트:", { - // key, - // value, - // oldConfig: safeConfig, - // newConfig, - // localValues, + // key, + // value, + // oldConfig: safeConfig, + // newConfig, + // localValues, // }); setTimeout(() => { @@ -122,7 +122,7 @@ export const CheckboxTypeConfigPanel: React.FC = ( 라벨 위치 updateConfig("language", value)}> - + @@ -140,7 +140,7 @@ export const CodeTypeConfigPanel: React.FC = ({ config 테마 updateConfig("displayFormat", value)}> - + @@ -317,7 +317,7 @@ export const EntityTypeConfigPanel: React.FC = ({ co
-
+
{localValues.placeholder || `${localValues.referenceTable || "엔터티"}를 선택하세요`}
@@ -334,7 +334,7 @@ export const EntityTypeConfigPanel: React.FC = ({ co
{/* 안내 메시지 */} -
+
엔터티 타입 설정 가이드
참조 테이블: 데이터를 가져올 다른 테이블 이름 diff --git a/frontend/components/screen/panels/webtype-configs/NumberTypeConfigPanel.tsx b/frontend/components/screen/panels/webtype-configs/NumberTypeConfigPanel.tsx index 5ad60139..d317c049 100644 --- a/frontend/components/screen/panels/webtype-configs/NumberTypeConfigPanel.tsx +++ b/frontend/components/screen/panels/webtype-configs/NumberTypeConfigPanel.tsx @@ -89,12 +89,12 @@ export const NumberTypeConfigPanel: React.FC = ({ co const newConfig = JSON.parse(JSON.stringify(currentValues)); // console.log("🔢 NumberTypeConfig 업데이트:", { - // key, - // value, - // oldConfig: safeConfig, - // newConfig, - // localValues, - // timestamp: new Date().toISOString(), + // key, + // value, + // oldConfig: safeConfig, + // newConfig, + // localValues, + // timestamp: new Date().toISOString(), // }); // 약간의 지연을 두고 업데이트 (배치 업데이트 방지) @@ -111,7 +111,7 @@ export const NumberTypeConfigPanel: React.FC = ({ co 숫자 형식 updateConfig("format", value)}> - + @@ -220,13 +220,13 @@ export const TextTypeConfigPanel: React.FC = ({ config
{localValues.autoInput && ( -
+