import { useState } from "react"; import { zodResolver } from "@hookform/resolvers/zod"; import { useForm } from "react-hook-form"; import * as z from "zod"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form"; import { AssessmentArea, AssessmentAreaCreateRequest, AssessmentAreaUpdateRequest } from "@/types"; import CustomDialog from "@/components/CustomDialog"; // Define form schema const formSchema = z.object({ title: z.string().min(2, { message: "Title must be at least 2 characters." }), }); interface AssessmentAreaDialogProps { open: boolean; onOpenChange: (open: boolean) => void; onSubmit: (data: AssessmentAreaCreateRequest | AssessmentAreaUpdateRequest) => void; areaToEdit?: AssessmentArea; isLoading?: boolean; } export function AssessmentAreaDialog({ open, onOpenChange, onSubmit, areaToEdit, isLoading = false, }: AssessmentAreaDialogProps) { const [error, setError] = useState(null); const form = useForm>({ resolver: zodResolver(formSchema), defaultValues: { title: areaToEdit?.title || "", }, }); function handleSubmit(values: z.infer) { setError(null); if (areaToEdit) { onSubmit({ areaId: areaToEdit.areaId, title: values.title, }); } else { onSubmit({ title: values.title, }); } } // Handle dialog closing const handleClose = () => { onOpenChange(false); }; return (
( Title )} /> {error &&

{error}

}
); }