"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 { Input } from "@/components/ui/input" import { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, } from "@/components/ui/sheet" import { BiddingProjects } from "@/db/schema/projects" import { updateBiddingProjectSchema, type UpdateBiddingProjectSchema } from "../validation" import { updateBiddingProject } from "../actions" interface UpdateProjectSheetProps extends React.ComponentPropsWithRef { project: BiddingProjects | null } export function UpdateProjectSheet({ project, ...props }: UpdateProjectSheetProps) { const [isUpdatePending, startUpdateTransition] = React.useTransition() const form = useForm({ resolver: zodResolver(updateBiddingProjectSchema), }) React.useEffect(() => { if (project) { form.reset({ id: project.id, projNm: project.projNm || "", kunnrNm: project.kunnrNm || "", cls1Nm: project.cls1Nm || "", ptypeNm: project.ptypeNm || "", pmodelNm: project.pmodelNm || "", pmodelSz: project.pmodelSz || "", txt30: project.txt30 || "", estmPm: project.estmPm || "", }) } }, [project, form]) function onSubmit(input: UpdateBiddingProjectSchema) { startUpdateTransition(async () => { const result = await updateBiddingProject(input) if (result.success) { toast.success(result.message) props.onOpenChange?.(false) form.reset() } else { toast.error(result.error) } }) } return ( 프로젝트 정보 수정 해양 TOP 프로젝트의 정보를 수정할 수 있습니다. {project && (
{project.pspid} | {project.pjtType}
)}
{/* Hidden ID field */} ( )} /> {/* 프로젝트명 */} ( 프로젝트명 )} /> {/* 선주명 */} ( 선주명 )} /> {/* 선급명 */} ( 선급명 )} /> {/* 선종명 */} ( 선종명 )} /> {/* 선형명 */} ( 선형명 )} /> {/* 선형크기 */} ( 선형크기 )} /> {/* 견적상태명 */} ( 견적상태명 )} /> {/* 견적대표PM */} ( 견적대표PM )} />
) }