import React from 'react'; import type { FieldValues, Path } from 'react-hook-form'; import { useController, useFormContext } from 'react-hook-form'; import type { FormFieldPropsBase } from './types'; import { Field } from 'toolkit/chakra/field'; import type { InputProps } from 'toolkit/chakra/input'; import { Input } from 'toolkit/chakra/input'; import { InputGroup } from 'toolkit/chakra/input-group'; import type { TextareaProps } from 'toolkit/chakra/textarea'; import { Textarea } from 'toolkit/chakra/textarea'; import getFieldErrorText from '../utils/getFieldErrorText'; interface Props< FormFields extends FieldValues, Name extends Path = Path, > extends FormFieldPropsBase { asComponent?: 'Input' | 'Textarea'; } const FormFieldText = < FormFields extends FieldValues, Name extends Path = Path, >({ name, placeholder, rules, onBlur, group, inputProps, asComponent, size: sizeProp, disabled, floating: floatingProp, ...restProps }: Props) => { const defaultSize = asComponent === 'Textarea' ? '2xl' : 'xl'; const size = sizeProp || defaultSize; const floating = floatingProp !== undefined ? floatingProp : size === defaultSize; const { control } = useFormContext(); const { field, fieldState, formState } = useController({ control, name, rules: { ...rules, required: restProps.required }, }); const handleBlur = React.useCallback(() => { field.onBlur(); onBlur?.(); }, [ field, onBlur ]); const input = asComponent === 'Textarea' ? (