import React from 'react'; import type { Path, FieldValues } from 'react-hook-form'; import { useController, useFormContext } from 'react-hook-form'; import type { FormFieldPropsBase } from './types'; import type { SelectAsyncProps } from 'toolkit/chakra/select'; import { SelectAsync } from 'toolkit/chakra/select'; import getFieldErrorText from '../utils/getFieldErrorText'; type Props< FormFields extends FieldValues, Name extends Path, > = FormFieldPropsBase & SelectAsyncProps; const FormFieldSelectAsync = < FormFields extends FieldValues, Name extends Path, >(props: Props) => { const { name, rules, size = 'lg', ...rest } = props; const { control } = useFormContext(); const { field, fieldState, formState } = useController({ control, name, rules, }); const isDisabled = formState.isSubmitting; const handleChange = React.useCallback(({ value }: { value: Array }) => { field.onChange(value); }, [ field ]); const handleBlur = React.useCallback(() => { field.onBlur(); }, [ field ]); return ( ); }; export default React.memo(FormFieldSelectAsync) as typeof FormFieldSelectAsync;