"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 { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form" import { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, } from "@/components/ui/sheet" import { Input } from "@/components/ui/input" import { Switch } from "@/components/ui/switch" import { updateIncoterm } from "../service" import { incoterms } from "@/db/schema/procurementRFQ" const updateIncotermSchema = z.object({ code: z.string().min(1, "코드는 필수입니다."), description: z.string().min(1, "설명은 필수입니다."), isActive: z.boolean().default(true), }) type UpdateIncotermSchema = z.infer interface IncotermsEditSheetProps { open: boolean onOpenChange: (open: boolean) => void data: typeof incoterms.$inferSelect | null onSuccess: () => void } export function IncotermsEditSheet({ open, onOpenChange, data, onSuccess, }: IncotermsEditSheetProps) { const [isUpdatePending, startUpdateTransition] = React.useTransition() const form = useForm({ resolver: zodResolver(updateIncotermSchema), defaultValues: { code: data?.code ?? "", description: data?.description ?? "", isActive: data?.isActive ?? true, }, mode: "onChange" }) React.useEffect(() => { if (data) { form.reset({ code: data.code, description: data.description, isActive: data.isActive, }) } }, [data, form]) async function onSubmit(input: UpdateIncotermSchema) { if (!data) return startUpdateTransition(async () => { try { await updateIncoterm(data.code, input) toast.success("인코텀즈가 성공적으로 수정되었습니다.") onSuccess() onOpenChange(false) } catch (error) { console.error("Update error:", error) toast.error("인코텀즈 수정 중 오류가 발생했습니다.") } }) } return ( 인코텀즈 수정 인코텀즈 정보를 수정하고 변경사항을 저장하세요
( 코드 )} /> ( 설명 )} /> (
활성화
)} />
) }