"use client"; import * as React from "react"; import { z } from "zod"; import { zodResolver } from "@hookform/resolvers/zod"; import { useForm } from "react-hook-form"; import { Dialog, DialogTrigger, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter } from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Form, FormField, FormItem, FormLabel, FormControl, FormMessage } from "@/components/ui/form"; import { Plus } from "lucide-react"; import { toast } from "sonner"; import { createGeneralEvaluation } from "@/lib/general-check-list/service"; import { useRouter } from "next/navigation"; const schema = z.object({ category: z.string().min(1, "카테고리를 입력하세요"), inspectionItem: z.string().min(1, "점검 항목을 입력하세요"), remarks: z.string().optional(), }); type FormValues = z.infer; export function CreateEvaluationDialog({ onSuccess }: { onSuccess?: () => void }) { const [open, setOpen] = React.useState(false); const [pending, setPending] = React.useState(false); const router = useRouter(); // ⬅️ const form = useForm({ resolver: zodResolver(schema), defaultValues: { category: "", inspectionItem: "", remarks: "" }, }); async function onSubmit(values: FormValues) { setPending(true); const res = await createGeneralEvaluation(values); if (res.success) { toast.success(res.message); router.refresh(); // ❷ 새로고침 onSuccess?.(); setOpen(false); form.reset(); } else { toast.error(res.message); } setPending(false); } return ( !pending && setOpen(v)}> 새 정기평가 체크리스트 점검 항목을 추가합니다.
( 카테고리 )} /> ( 점검 항목 )} /> ( 비고 (선택) )} />
); }