import React, { useEffect } from "react"; import { useForm, FormProvider, } from "react-hook-form"; import { z } from "zod"; import { zodResolver } from "@hookform/resolvers/zod"; import SelectMultiple from "../common/SelectMultiple"; import { useFeatures } from "../../hooks/useMasterRole"; import { EXPENSE_MANAGEMENT } from "../../utils/constants"; import { useCreateExpenseStatus, useUpdateExpenseStatus } from "../../hooks/masterHook/useMaster"; import { displayName } from "react-quill"; import { AppColorconfig } from "../../utils/appUtils"; const ExpenseStatusSchema = z.object({ name: z.string().min(1, { message: "Name is required" }), displayName: z.string().min(1, { message: "Display Name is required" }), description: z.string().min(1, { message: "Description is required" }), permissionIds: z.array(z.string()).min(1, { message: "At least one permission is required", }), color: z .string() .regex(/^#([0-9A-F]{3}){1,2}$/i, { message: "Invalid hex color" }), }); const ManageExpenseStatus = ({data, onClose }) => { const methods = useForm({ resolver: zodResolver(ExpenseStatusSchema), defaultValues: { name: "", displayName: "", description: "", permissionIds: [], color: AppColorconfig.colors.primary, }, }); const { register, handleSubmit, reset, formState: { errors }, } = methods; const { masterFeatures, loading } = useFeatures(); const ExpenseFeature = masterFeatures?.find( (appfeature) => appfeature.id === EXPENSE_MANAGEMENT ); const {mutate:CreateExpenseStatus,isPending:isPending} = useCreateExpenseStatus(()=>onClose?.()) const {mutate:UpdateExpenseStatus,isPending:Updating} = useUpdateExpenseStatus(()=>onClose?.()); const onSubmit = (payload) => { if(data){ UpdateExpenseStatus({id:data.id,payload:{...payload,id:data.id}}) }else{ CreateExpenseStatus(payload) } }; useEffect(()=>{ if(data){ reset({ name:data.name ?? "", displayName:data.displayName ?? "", description:data.description ?? "", permissionIds:data.permissionIds ?? [], color:data.color ?? AppColorconfig.colors.primary }) } },[data]) return ( {loading ? (
Loading...
) : (
{errors.name &&

{errors.name.message}

}
{errors.displayName && (

{errors.displayName.message}

)}
{errors.permissionIds && (

{errors.permissionIds.message}

)}
{errors.color && (

{errors.color.message}

)}