import React, {ChangeEventHandler} from 'react'; import {mergeProps, useObjectRef} from '@react-aria/utils'; import {useController} from 'react-hook-form'; import clsx from 'clsx'; import {BaseFieldProps} from './base-field-props'; import {useField} from './use-field'; import {getInputFieldClassNames} from './get-input-field-class-names'; import {Field} from './field'; import {TextFieldProps} from './text-field/text-field'; export interface FileFieldProps extends Omit { onChange?: ChangeEventHandler<'input'>; accept?: string; } export const FileField = React.forwardRef( (props, ref) => { const inputRef = useObjectRef(ref); const {fieldProps, inputProps} = useField({...props, focusRef: inputRef}); const inputFieldClassNames = getInputFieldClassNames(props); return ( ); } ); export interface FormFileFieldProps extends FileFieldProps { name: string; } export function FormFileField({name, ...props}: FormFileFieldProps) { const { field: {onChange, onBlur, ref}, fieldState: {invalid, error}, } = useController({ name, }); const [value, setValue] = React.useState(''); const formProps: TextFieldProps = { onChange: e => { onChange(e.target.files?.[0]); setValue(e.target.value); }, onBlur, value, invalid, errorMessage: error?.message, }; return ; }