import React, { useState, useEffect } from "react"; import Avatar from "../common/Avatar"; import { useForm } from "react-hook-form"; import { z } from "zod"; import { zodResolver } from "@hookform/resolvers/zod"; export const roleSchema = z.object({ jobRole: z.string().min(1, "Job Role is required"), isChecked: z.literal(true, { errorMap: () => ({ message: "You must check the box first" }), }), }); const AssignEmployeeTable = ({ employee, jobRoles, isChecked, onRoleChange, onCheckboxChange, }) => { const [currentJobRole, setCurrentJobRole] = useState( employee.jobRoleId?.toString() || "" ); const { register, handleSubmit, formState: { errors }, setValue, trigger, getValues, } = useForm({ resolver: zodResolver(roleSchema), defaultValues: { jobRole: currentJobRole, isChecked: isChecked || false, }, }); useEffect(() => { const jobRoleStr = employee.jobRoleId?.toString() || ""; setCurrentJobRole(jobRoleStr); setValue("jobRole", jobRoleStr); setValue("isChecked", isChecked); }, [employee.jobRoleId, isChecked, setValue]); const onSubmit = (data) => { setCurrentJobRole(data.jobRole); onRoleChange(employee.id, data.jobRole); }; const handleRoleSelect = async (e) => { const value = e.target.value; setValue("jobRole", value); const isValid = await trigger(); // Validate the form if (isValid) { const values = getValues(); onRoleChange(employee.id, values.jobRole); } }; const handleCheckboxChange = async () => { if (!employee.isActive) { setValue("isChecked", !isChecked); const isValid = await trigger(); // Validate after setting value if (isValid) { const values = getValues(); onCheckboxChange(employee.id); onRoleChange(employee.id, values.jobRole); // Update role if it changed } } }; return (