"use client" import * as React from "react" import { zodResolver } from "@hookform/resolvers/zod" import { Loader } from "lucide-react" import { useForm } from "react-hook-form" import { toast } from "sonner" import { Button } from "@/components/ui/button" import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select" import { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, } from "@/components/ui/sheet" import { Textarea } from "@/components/ui/textarea" import { Item } from "@/db/schema/items" import { updateItemSchema, UpdateItemSchema } from "../validations" import { modifyItem } from "../service" import { Input } from "@/components/ui/input" interface UpdateItemSheetProps extends React.ComponentPropsWithRef { item: Item | null } export function UpdateItemSheet({ item, ...props }: UpdateItemSheetProps) { const [isUpdatePending, startUpdateTransition] = React.useTransition() console.log(item) const form = useForm({ resolver: zodResolver(updateItemSchema), defaultValues: { itemCode: item?.itemCode ?? "", itemName: item?.itemName ?? "", description: item?.description ?? "", parentItemCode: item?.parentItemCode ?? "", itemLevel: item?.itemLevel ?? null, deleteFlag: item?.deleteFlag ?? "", unitOfMeasure: item?.unitOfMeasure ?? "", steelType: item?.steelType ?? "", gradeMaterial: item?.gradeMaterial ?? "", changeDate: item?.changeDate ?? "", baseUnitOfMeasure: item?.baseUnitOfMeasure ?? "", }, }) React.useEffect(() => { if (item) { form.reset({ itemCode: item.itemCode ?? "", itemName: item.itemName ?? "", description: item.description ?? "", parentItemCode: item.parentItemCode ?? "", itemLevel: item.itemLevel ?? null, deleteFlag: item.deleteFlag ?? "", unitOfMeasure: item.unitOfMeasure ?? "", steelType: item.steelType ?? "", gradeMaterial: item.gradeMaterial ?? "", changeDate: item.changeDate ?? "", baseUnitOfMeasure: item.baseUnitOfMeasure ?? "", }); } }, [item, form]); function onSubmit(input: UpdateItemSchema) { startUpdateTransition(async () => { if (!item) return const { error } = await modifyItem({ id: item.id, ...input, }) if (error) { toast.error(error) return } form.reset() props.onOpenChange?.(false) toast.success("Item updated") }) } return ( Update item Update the item details and save the changes
( 자재그룹코드 )} /> ( 자재그룹명 )} /> ( 상세