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 '../../../chakra/select'; import { SelectAsync } from '../../../chakra/select'; import { getFormFieldErrorText } from '../utils/getFormFieldErrorText'; export type FormFieldSelectAsyncProps< FormFields extends FieldValues, Name extends Path, > = FormFieldPropsBase & SelectAsyncProps; const FormFieldSelectAsyncContent = < FormFields extends FieldValues, Name extends Path, >(props: FormFieldSelectAsyncProps) => { const { name, rules, size = 'lg', controllerProps, ...rest } = props; const { control } = useFormContext(); const { field, fieldState, formState } = useController({ control, name, rules, ...controllerProps, }); const isDisabled = formState.isSubmitting; const handleChange = React.useCallback(({ value }: { value: Array }) => { field.onChange(value); }, [ field ]); const handleBlur = React.useCallback(() => { field.onBlur(); }, [ field ]); return ( ); }; export const FormFieldSelectAsync = React.memo(FormFieldSelectAsyncContent) as typeof FormFieldSelectAsyncContent;