import React, { useEffect,useState } from 'react' import { useForm ,Controller} from 'react-hook-form'; import { set, z } from 'zod'; import { zodResolver } from '@hookform/resolvers/zod'; import { MasterRespository } from '../../repositories/MastersRepository'; import { cacheData,getCachedData } from '../../slices/apiDataManager'; import showToast from '../../services/toastService'; const schema = z.object({ name: z.string().min(1, { message: "Work Category is required" }), description: z.string().min(1, { message: "Description is required" }) .max(255, { message: "Description cannot exceed 255 characters" }), }); const EditWorkCategory = ({data,onClose}) => { const[isLoading,setIsLoading] = useState(false) const { register, handleSubmit, formState: { errors } ,reset } = useForm({ resolver: zodResolver(schema), defaultValues: { name: data?.name || "", description:data?.description || "", }, }); const onSubmit = (formdata) => { setIsLoading(true) const result = { id:data?.id, name: formdata?.name, description: formdata.description, }; MasterRespository.updateWorkCategory(data?.id,result).then((resp)=>{ setIsLoading(false) showToast("Work Category Update successfully.", "success"); const cachedData = getCachedData("Work Category"); if (cachedData) { const updatedData = cachedData.map((category) => category.id === data?.id ? { ...category, ...resp.data } : category ); cacheData("Work Category", updatedData); } onClose() }).catch((error)=>{ showToast(error?.response?.data?.message, "error") setIsLoading(false) }) }; useEffect(() => { reset({ name: data?.name, description: data?.description }); setDescriptionLength(data?.description?.length || 0); }, [data, reset]); const [descriptionLength, setDescriptionLength] = useState(data?.description?.length || 0); const maxDescriptionLength = 255; return (<>
{errors.name &&

{errors.name.message}

}
{maxDescriptionLength - descriptionLength} characters left
{errors.description && (

{errors.description.message}

)}
) } export default EditWorkCategory;