"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 { Button } from "@/components/ui/button" import { Sheet, 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 { updateDocumentClassOption } from "@/lib/docu-list-rule/document-class/service" import { documentClassOptions } from "@/db/schema/docu-list-rule" const updateOptionSchema = z.object({ optionCode: z.string().min(1, "코드는 필수입니다."), }) type UpdateOptionSchema = z.infer interface DocumentClassOptionEditSheetProps { open: boolean onOpenChange: (open: boolean) => void data: typeof documentClassOptions.$inferSelect | null onSuccess?: () => void } export function DocumentClassOptionEditSheet({ open, onOpenChange, data, onSuccess, }: DocumentClassOptionEditSheetProps) { const [isPending, startTransition] = React.useTransition() const form = useForm({ resolver: zodResolver(updateOptionSchema), defaultValues: { optionCode: "", }, }) React.useEffect(() => { if (data) { form.reset({ optionCode: data.optionCode || "", }) } }, [data, form]) const handleSubmit = (formData: UpdateOptionSchema) => { if (!data) return startTransition(async () => { try { const result = await updateDocumentClassOption({ id: data.id, optionCode: formData.optionCode, }) if (result.success) { toast.success("옵션이 성공적으로 수정되었습니다.") onOpenChange(false) onSuccess?.() } else { toast.error(`옵션 수정 실패: ${result.error}`) } } catch (error) { console.error("Update error:", error) toast.error("옵션 수정 중 오류가 발생했습니다.") } }) } const handleCancel = () => { onOpenChange(false) form.reset() } return ( 옵션 수정 Document Class 옵션을 수정합니다.
( 코드 )} />
) }