From cd893c2fa30a25f3aa23342383ea68192e80db80 Mon Sep 17 00:00:00 2001 From: dohyeons Date: Mon, 20 Oct 2025 11:30:09 +0900 Subject: [PATCH] =?UTF-8?q?alert=EB=A5=BC=20Dialog=20=EB=A1=9C=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dashboard/widgets/yard-3d/YardEditor.tsx | 45 +++++++++++++++++-- 1 file changed, 42 insertions(+), 3 deletions(-) diff --git a/frontend/components/admin/dashboard/widgets/yard-3d/YardEditor.tsx b/frontend/components/admin/dashboard/widgets/yard-3d/YardEditor.tsx index faa25e3c..346d59f5 100644 --- a/frontend/components/admin/dashboard/widgets/yard-3d/YardEditor.tsx +++ b/frontend/components/admin/dashboard/widgets/yard-3d/YardEditor.tsx @@ -7,7 +7,8 @@ import { yardLayoutApi } from "@/lib/api/yardLayoutApi"; import dynamic from "next/dynamic"; import { YardLayout, YardPlacement } from "./types"; import { Alert, AlertDescription } from "@/components/ui/alert"; -import { AlertCircle } from "lucide-react"; +import { AlertCircle, CheckCircle } from "lucide-react"; +import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription } from "@/components/ui/dialog"; const Yard3DCanvas = dynamic(() => import("./Yard3DCanvas"), { ssr: false, @@ -39,6 +40,11 @@ export default function YardEditor({ layout, onBack }: YardEditorProps) { const [error, setError] = useState(null); const [hasUnsavedChanges, setHasUnsavedChanges] = useState(false); // 미저장 변경사항 추적 const [nextPlacementId, setNextPlacementId] = useState(-1); // 임시 ID (음수 사용) + const [saveResultDialog, setSaveResultDialog] = useState<{ + open: boolean; + success: boolean; + message: string; + }>({ open: false, success: false, message: "" }); // 배치 목록 로드 useEffect(() => { @@ -208,11 +214,19 @@ export default function YardEditor({ layout, onBack }: YardEditorProps) { setHasUnsavedChanges(false); setSelectedPlacement(null); setShowConfigPanel(false); - alert("저장되었습니다"); + setSaveResultDialog({ + open: true, + success: true, + message: "모든 변경사항이 성공적으로 저장되었습니다.", + }); } } catch (error) { console.error("저장 실패:", error); - alert("저장에 실패했습니다"); + setSaveResultDialog({ + open: true, + success: false, + message: `저장에 실패했습니다: ${error instanceof Error ? error.message : "알 수 없는 오류"}`, + }); } finally { setIsSaving(false); } @@ -403,6 +417,31 @@ export default function YardEditor({ layout, onBack }: YardEditorProps) { )} + + {/* 저장 결과 Dialog */} + setSaveResultDialog((prev) => ({ ...prev, open }))}> + e.stopPropagation()}> + + + {saveResultDialog.success ? ( + <> + + 저장 완료 + + ) : ( + <> + + 저장 실패 + + )} + + {saveResultDialog.message} + +
+ +
+
+
); }