import type { Ref } from 'react'; import type { BaseProps, ForwardRefForwardPropsComponent, NoChildrenProp, OmitStrict, TestIdProp } from '../../types'; import type { FormControlProps } from '../FormControl'; import { type ModalProps } from '../Modal'; import type { FileItemProps } from './FileItem'; import type { FileListProps } from './FileList'; /** Props to be used when rendering compact variant for multiple FileInput. */ interface MultiAttachCompactProps { /** Modal props */ modal?: Pick & { /** Callback for cancel button */ onCancel: ({ close }: { close: () => void; }) => void; /** Callback for submit button */ onSubmit: ({ close }: { close: () => void; }) => void; /** If true renders loading indicator inside Modal. */ loading?: boolean; }; /** Conveys the number of files attached */ count?: number; } interface BaseFileInputProps extends BaseProps, NoChildrenProp, TestIdProp, Pick, Pick { /** Called when files are added either via the input or drop zone. */ onFilesAdded?: (files: File[]) => void; /** * Allow multiple files to be selected from the OS specific file browser. * NOTE: This does not restrict multiple files from being added via drag and drop. * Restrict multi file drag and drop via onFilesAdded and custom info message. * @default false */ multiple?: boolean; /** * Renders compact variant. * @default false */ compact?: boolean; /** An array of files that have been uploaded. */ files?: OmitStrict[]; /** * Specify allowed file types. * @see {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/accept} */ accept?: string | string[]; /** * Sets DOM id for the control and associates label element via 'for' attribute. * If an id is not pass, a random id will be generated for any render. */ id?: FormControlProps['id']; /** Set visual state based on a validation state. */ status?: FormControlProps['status']; /** Pass a string or a fragment with an Icon and string. */ label?: FormControlProps['label']; /** Visually hides the label region. */ labelHidden?: FormControlProps['labelHidden']; /** It is recommended to pass a simple string to offer guidance. Text will be styled based on status prop. */ info?: FormControlProps['info']; /** Indicate if the field is required. The browser defaults to false. */ required?: FormControlProps['required']; /** Disable the control. The browser defaults to false. */ disabled?: FormControlProps['disabled']; /** Makes the input non editable and non clickable. */ readOnly?: FormControlProps['readOnly']; /** Sets html name attribute for the underlying control. Useful for mapping to a data field. */ name?: FormControlProps['name']; /** Pass a heading and content to show additional information on the field. */ additionalInfo?: FormControlProps['additionalInfo']; /** Ref for the input element within the component's dom structure. */ ref?: Ref; } export interface FileInputProps extends BaseFileInputProps, MultiAttachCompactProps { } declare const _default: ForwardRefForwardPropsComponent & { getTestIds: (testIdProp?: TestIdProp["testId"]) => import("../../types").TestIdsRecord; }; export default _default; //# sourceMappingURL=FileInput.d.ts.map