"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 { Plus } from "lucide-react" import { Button } from "@/components/ui/button" import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog" import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form" import { Input } from "@/components/ui/input" import { createDocumentClassOptionItem } from "@/lib/docu-list-rule/document-class/service" const createOptionSchema = z.object({ optionCode: z.string().min(1, "코드는 필수입니다."), }) type CreateOptionSchema = z.infer interface DocumentClassOptionAddDialogProps { documentClassId: number onSuccess?: () => void } export function DocumentClassOptionAddDialog({ documentClassId, onSuccess }: DocumentClassOptionAddDialogProps) { const [open, setOpen] = React.useState(false) const [isPending, startTransition] = React.useTransition() const form = useForm({ resolver: zodResolver(createOptionSchema), defaultValues: { optionCode: "", }, }) const handleSubmit = (data: CreateOptionSchema) => { startTransition(async () => { try { const result = await createDocumentClassOptionItem({ documentClassId, optionCode: data.optionCode, }) if (result.success) { toast.success("옵션이 성공적으로 추가되었습니다.") setOpen(false) form.reset() onSuccess?.() } else { toast.error(`옵션 추가 실패: ${result.error}`) } } catch (error) { console.error("Create error:", error) toast.error("옵션 추가 중 오류가 발생했습니다.") } }) } const handleCancel = () => { setOpen(false) form.reset() } return ( 옵션 추가 새로운 Document Class 옵션을 추가합니다.
( 코드 )} />
) }