Quiz_dashboard/src/Hooks/useFormField.tsx
karimaldeen 7aa8d50cfd fix
2024-09-07 12:16:10 +03:00

36 lines
1.1 KiB
TypeScript

import { useField, useFormikContext } from "formik";
import { useTranslation } from "react-i18next";
import { Field } from "formik";
import { useValidationState } from "../Components/ValidationField/utils/ValidationState";
import { useModalState } from "../zustand/Modal";
import { useEffect } from "react";
const useFormField = (name: string, props?: any) => {
const [field, meta] = useField({ name, ...props });
const { t } = useTranslation();
const formik = useFormikContext<any>();
const { Validation, setValidation } = useValidationState((state) => state);
const { isOpen } = useModalState((state) => state);
const isError = !!((meta.touched && meta.error) || Validation[name as any]);
useEffect(() => {
const length = Object.keys(Validation).length;
if (length) {
if (isOpen === "" || isOpen === "isSuccess") {
setValidation([]);
}
}
}, [isOpen]);
const errorMsg =
!!isError && meta.error
? t(meta.error.toString())
: Validation[name as any] ?? "";
return { Field, field, meta, formik, isError, errorMsg, t };
};
export default useFormField;