"use client"; import { useState } from "react"; import { Dialog, DialogContent, DialogHeader, } from "@/components/ui/resizable-dialog"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Textarea } from "@/components/ui/textarea"; import { Loader2 } from "lucide-react"; interface SaveAsTemplateModalProps { isOpen: boolean; onClose: () => void; onSave: (data: { templateNameKor: string; templateNameEng?: string; description?: string }) => Promise; } export function SaveAsTemplateModal({ isOpen, onClose, onSave }: SaveAsTemplateModalProps) { const [formData, setFormData] = useState({ templateNameKor: "", templateNameEng: "", description: "", }); const [isSaving, setIsSaving] = useState(false); const handleSave = async () => { if (!formData.templateNameKor.trim()) { alert("템플릿명을 입력해주세요."); return; } setIsSaving(true); try { await onSave({ templateNameKor: formData.templateNameKor, templateNameEng: formData.templateNameEng || undefined, description: formData.description || undefined, }); // 초기화 setFormData({ templateNameKor: "", templateNameEng: "", description: "", }); onClose(); } catch (error) { console.error("템플릿 저장 실패:", error); } finally { setIsSaving(false); } }; const handleClose = () => { if (!isSaving) { setFormData({ templateNameKor: "", templateNameEng: "", description: "", }); onClose(); } }; return ( 템플릿으로 저장 현재 리포트 레이아웃을 템플릿으로 저장하면 다른 리포트에서 재사용할 수 있습니다.
setFormData({ ...formData, templateNameKor: e.target.value, }) } placeholder="예: 발주서 양식" disabled={isSaving} />
setFormData({ ...formData, templateNameEng: e.target.value, }) } placeholder="예: Purchase Order Template" disabled={isSaving} />