"use client" import * as React from "react" import { zodResolver } from "@hookform/resolvers/zod" import { useForm } from "react-hook-form" import { toast } from "sonner" import * as z from "zod" import { Loader } from "lucide-react" import { Button } from "@/components/ui/button" import { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, } from "@/components/ui/sheet" import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form" import { Input } from "@/components/ui/input" import { updateDocumentClassCodeGroup } from "@/lib/docu-list-rule/document-class/service" import { documentClasses } from "@/db/schema/documentClasses" const updateDocumentClassSchema = z.object({ value: z.string().min(1, "Value는 필수입니다."), description: z.string().optional(), }) type UpdateDocumentClassSchema = z.infer interface DocumentClassEditSheetProps { open: boolean onOpenChange: (open: boolean) => void data: typeof documentClasses.$inferSelect | null onSuccess?: () => void } export function DocumentClassEditSheet({ open, onOpenChange, data, onSuccess, }: DocumentClassEditSheetProps) { const [isUpdatePending, startUpdateTransition] = React.useTransition() const form = useForm({ resolver: zodResolver(updateDocumentClassSchema), defaultValues: { value: data?.value || "", description: data?.description || "", }, mode: "onChange" }) React.useEffect(() => { if (data) { form.reset({ value: data.value || "", description: data.description || "", }) } }, [data, form]) async function onSubmit(input: UpdateDocumentClassSchema) { if (!data) return startUpdateTransition(async () => { try { const result = await updateDocumentClassCodeGroup({ id: data.id, value: input.value, description: input.description, }) if (result.success) { toast.success("Document Class가 성공적으로 수정되었습니다.") onSuccess?.() onOpenChange(false) } else { toast.error(result.error || "수정에 실패했습니다.") } } catch (error) { console.error("Update error:", error) toast.error("Document Class 수정 중 오류가 발생했습니다.") } }) } return ( Document Class 수정 Document Class 정보를 수정하고 변경사항을 저장하세요
( Value )} /> ( Description )} />
) }