import { Form, FormItemProps } from 'antd'; import { ReactNode, useMemo } from 'react'; import { Controller, ControllerFieldState, ControllerRenderProps, FieldPath, FieldValues, UseControllerProps, UseFormStateReturn, } from 'react-hook-form'; export const ControlledFormItem: < TFieldValues extends FieldValues = FieldValues, TName extends FieldPath = FieldPath, >( props: { render: ({ field, fieldState, formState, }: { field: ControllerRenderProps & { id: string }; fieldState: ControllerFieldState; formState: UseFormStateReturn; }) => React.ReactElement; } & UseControllerProps & Omit, 'name'>, ) => ReactNode = ({ control, name, render, ...formItemProps }) => { const id = useMemo(() => Math.random().toString(32).substring(2), []); return ( ( {render({ field: { ...field, id }, fieldState, formState })} )} /> ); };