import type { FieldValues, Path, RegisterOptions, UseControllerReturn, } from "react-hook-form"; import { useController, useFormContext } from "react-hook-form"; interface Props { name: Path; rules?: Omit< RegisterOptions>, "valueAsNumber" | "valueAsDate" | "setValueAs" | "disabled" >; children: ( controller: UseControllerReturn> & { setValue: (value: any) => void; }, ) => any; } function FormItem(props: Props) { const formMethods = useFormContext(); const controller = useController({ name: props.name, control: formMethods.control, rules: props.rules, }); return props.children({ ...controller, setValue(value) { controller.field.onChange(value); }, }); } export type FormItemProps = Omit; export default FormItem;