'use client'; import { DetailedHTMLProps, FC, InputHTMLAttributes, ReactNode, useEffect, useMemo } from 'react'; import { clsx } from 'clsx'; import { useFormContext, useWatch } from 'react-hook-form'; import interClass from '../helpers/inter.font'; export const Input: FC< DetailedHTMLProps, HTMLInputElement> & { removeError?: boolean; error?: any; disableForm?: boolean; customUpdate?: () => void; label: string; name: string; icon?: ReactNode; } > = (props) => { const { label, icon, removeError, customUpdate, className, disableForm, error, ...rest } = props; const form = useFormContext(); const err = useMemo(() => { if (error) return error; if (!form || !form.formState.errors[props?.name!]) return; return form?.formState?.errors?.[props?.name!]?.message! as string; }, [form?.formState?.errors?.[props?.name!]?.message, error]); const watch = customUpdate ? form?.watch(props.name) : null; useEffect(() => { if (customUpdate) { customUpdate(); } }, [watch]); return (
{!!label && (
{label}
)}
{icon &&
{icon}
}
{!removeError && (
{err || <> }
)}
); };