From 49669b37e52db5ff96af14044df121362b29242e Mon Sep 17 00:00:00 2001 From: dohyeons Date: Mon, 20 Oct 2025 11:39:50 +0900 Subject: [PATCH] =?UTF-8?q?=EC=95=BC=EB=93=9C=EA=B4=80=EB=A6=AC=EC=9A=A9?= =?UTF-8?q?=20=EC=84=A4=EC=A0=95=20=EB=AA=A8=EB=8B=AC=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/dashboard/DashboardDesigner.tsx | 8 ++ .../widgets/YardWidgetConfigModal.tsx | 79 +++++++++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 frontend/components/admin/dashboard/widgets/YardWidgetConfigModal.tsx diff --git a/frontend/components/admin/dashboard/DashboardDesigner.tsx b/frontend/components/admin/dashboard/DashboardDesigner.tsx index 27115ee1..e0b5778f 100644 --- a/frontend/components/admin/dashboard/DashboardDesigner.tsx +++ b/frontend/components/admin/dashboard/DashboardDesigner.tsx @@ -6,6 +6,7 @@ import { DashboardCanvas } from "./DashboardCanvas"; import { DashboardTopMenu } from "./DashboardTopMenu"; import { ElementConfigModal } from "./ElementConfigModal"; import { ListWidgetConfigModal } from "./widgets/ListWidgetConfigModal"; +import { YardWidgetConfigModal } from "./widgets/YardWidgetConfigModal"; import { DashboardSaveModal } from "./DashboardSaveModal"; import { DashboardElement, ElementType, ElementSubtype } from "./types"; import { GRID_CONFIG, snapToGrid, snapSizeToGrid, calculateCellSize } from "./gridUtils"; @@ -495,6 +496,13 @@ export default function DashboardDesigner({ dashboardId: initialDashboardId }: D onClose={closeConfigModal} onSave={saveListWidgetConfig} /> + ) : configModalElement.type === "widget" && configModalElement.subtype === "yard-management-3d" ? ( + ) : ( void; + onSave: (updates: Partial) => void; +} + +export function YardWidgetConfigModal({ element, isOpen, onClose, onSave }: YardWidgetConfigModalProps) { + const [customTitle, setCustomTitle] = useState(element.customTitle || ""); + const [showHeader, setShowHeader] = useState(element.showHeader !== false); + + useEffect(() => { + if (isOpen) { + setCustomTitle(element.customTitle || ""); + setShowHeader(element.showHeader !== false); + } + }, [isOpen, element]); + + const handleSave = () => { + onSave({ + customTitle, + showHeader, + }); + onClose(); + }; + + return ( + + e.stopPropagation()} className="sm:max-w-[500px]"> + + 야드 관리 위젯 설정 + + +
+ {/* 위젯 제목 */} +
+ + setCustomTitle(e.target.value)} + placeholder="제목을 입력하세요 (비워두면 기본 제목 사용)" + /> +

기본 제목: 야드 관리 3D

+
+ + {/* 헤더 표시 여부 */} +
+ setShowHeader(checked === true)} + /> + +
+
+ +
+ + +
+
+
+ ); +}