From 172ecf34b3f0f9f729c2fc61496b6dc8b9938c17 Mon Sep 17 00:00:00 2001 From: dohyeons Date: Wed, 1 Oct 2025 16:17:41 +0900 Subject: [PATCH] =?UTF-8?q?=EB=A0=88=EC=9D=B4=EC=96=B4=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../report/designer/ReportDesignerToolbar.tsx | 43 ++++++++- frontend/contexts/ReportDesignerContext.tsx | 92 +++++++++++++++++++ 2 files changed, 134 insertions(+), 1 deletion(-) diff --git a/frontend/components/report/designer/ReportDesignerToolbar.tsx b/frontend/components/report/designer/ReportDesignerToolbar.tsx index 1ec55145..f1dcde6f 100644 --- a/frontend/components/report/designer/ReportDesignerToolbar.tsx +++ b/frontend/components/report/designer/ReportDesignerToolbar.tsx @@ -22,6 +22,10 @@ import { RectangleHorizontal, RectangleVertical, Square, + ChevronDown, + ChevronsDown, + ChevronsUp, + ChevronUp, } from "lucide-react"; import { useRouter } from "next/navigation"; import { useReportDesigner } from "@/contexts/ReportDesignerContext"; @@ -70,14 +74,19 @@ export function ReportDesignerToolbar() { makeSameWidth, makeSameHeight, makeSameSize, + bringToFront, + sendToBack, + bringForward, + sendBackward, } = useReportDesigner(); const [showPreview, setShowPreview] = useState(false); const [showSaveAsTemplate, setShowSaveAsTemplate] = useState(false); const { toast } = useToast(); - // 정렬 버튼 활성화 조건 + // 버튼 활성화 조건 const canAlign = selectedComponentIds && selectedComponentIds.length >= 2; const canDistribute = selectedComponentIds && selectedComponentIds.length >= 3; + const hasSelection = selectedComponentIds && selectedComponentIds.length >= 1; // 템플릿 저장 가능 여부: 컴포넌트가 있어야 함 const canSaveAsTemplate = components.length > 0; @@ -316,6 +325,38 @@ export function ReportDesignerToolbar() { + + {/* 레이어 드롭다운 */} + + + + + + + 맨 앞으로 + + + 한 단계 앞으로 + + + + 한 단계 뒤로 + + + 맨 뒤로 + + + +