"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 { createComboBoxOption } from "../service" const createOptionSchema = z.object({ description: z.string().min(1, "값은 필수입니다."), remark: z.string().optional(), }) type CreateOptionSchema = z.infer interface ComboBoxOptionsAddDialogProps { codeGroupId: number onSuccess?: () => void } export function ComboBoxOptionsAddDialog({ codeGroupId, onSuccess }: ComboBoxOptionsAddDialogProps) { const [open, setOpen] = React.useState(false) const [isPending, startTransition] = React.useTransition() const form = useForm({ resolver: zodResolver(createOptionSchema), defaultValues: { description: "", remark: "", }, }) const handleSubmit = (data: CreateOptionSchema) => { startTransition(async () => { try { const result = await createComboBoxOption({ codeGroupId, code: "", // 서비스에서 자동 생성 description: data.description, remark: data.remark, }) 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 ( 옵션 추가 새로운 Combo Box 옵션을 추가합니다.
( )} /> ( 비고 )} />
) }