"use client"; import * as React from "react"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import * as z from "zod"; import { Button } from "@/components/ui/button"; import { Sheet, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, } from "@/components/ui/sheet"; import { Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; import { Textarea } from "@/components/ui/textarea"; import { Checkbox } from "@/components/ui/checkbox"; import { complianceSurveyTemplates } from "@/db/schema/compliance"; import { updateComplianceSurveyTemplate } from "@/lib/compliance/services"; import { toast } from "sonner"; import { useRouter } from "next/navigation"; const templateSchema = z.object({ name: z.string().min(1, "템플릿명을 입력하세요"), description: z.string().min(1, "설명을 입력하세요"), version: z.string().min(1, "버전을 입력하세요"), isActive: z.boolean(), }); type TemplateFormData = z.infer; interface ComplianceTemplateEditSheetProps { template: typeof complianceSurveyTemplates.$inferSelect; open: boolean; onOpenChange: (open: boolean) => void; } export function ComplianceTemplateEditSheet({ template, open, onOpenChange }: ComplianceTemplateEditSheetProps) { const [isLoading, setIsLoading] = React.useState(false); const router = useRouter(); const form = useForm({ resolver: zodResolver(templateSchema), defaultValues: { name: template.name, description: template.description, version: template.version, isActive: template.isActive, }, }); const onSubmit = async (data: TemplateFormData) => { try { setIsLoading(true); await updateComplianceSurveyTemplate(template.id, data); toast.success("템플릿이 성공적으로 수정되었습니다."); onOpenChange(false); // 페이지 새로고침 router.refresh(); } catch (error) { console.error("Error updating template:", error); toast.error("템플릿 수정 중 오류가 발생했습니다."); } finally { setIsLoading(false); } }; return ( 템플릿 수정 템플릿 정보를 수정합니다.
( 템플릿명 )} /> ( 설명