UNPKG

react-dropzone-async-validation

Version:
102 lines (88 loc) 2.68 kB
import * as React from "react"; export { FileWithPath } from "file-selector"; export default function Dropzone( props: DropzoneProps & React.RefAttributes<DropzoneRef> ): JSX.Element; export function useDropzone(options?: DropzoneOptions): DropzoneState; export interface DropzoneProps extends DropzoneOptions { children?(state: DropzoneState): JSX.Element; } export enum ErrorCode { FileInvalidType = "file-invalid-type", FileTooLarge = "file-too-large", FileTooSmall = "file-too-small", TooManyFiles = "too-many-files", } export interface FileError { message: string; code: ErrorCode | string; } export interface FileRejection { file: File; errors: FileError[]; } export type DropzoneOptions = Pick<React.HTMLProps<HTMLElement>, PropTypes> & { accept?: Accept; minSize?: number; maxSize?: number; maxFiles?: number; preventDropOnDocument?: boolean; noClick?: boolean; noKeyboard?: boolean; noDrag?: boolean; noDragEventsBubbling?: boolean; disabled?: boolean; onDrop?: <T extends File>( acceptedFiles: T[], fileRejections: FileRejection[], event: DropEvent ) => void; onDropAccepted?: <T extends File>(files: T[], event: DropEvent) => void; onDropRejected?: (fileRejections: FileRejection[], event: DropEvent) => void; getFilesFromEvent?: ( event: DropEvent ) => Promise<Array<File | DataTransferItem>>; onFileDialogCancel?: () => void; onFileDialogOpen?: () => void; onError?: (err: Error) => void; validator?: | (<T extends File>( file: T ) => FileError | FileError[] | Promise<FileError | FileError[] | null>) | null; useFsAccessApi?: boolean; autoFocus?: boolean; }; export type DropEvent = | React.DragEvent<HTMLElement> | React.ChangeEvent<HTMLInputElement> | DragEvent | Event; export type DropzoneState = DropzoneRef & { isFocused: boolean; isDragActive: boolean; isDragAccept: boolean; isDragReject: boolean; isFileDialogActive: boolean; acceptedFiles: File[]; fileRejections: FileRejection[]; rootRef: React.RefObject<HTMLElement>; inputRef: React.RefObject<HTMLInputElement>; getRootProps: <T extends DropzoneRootProps>(props?: T) => T; getInputProps: <T extends DropzoneInputProps>(props?: T) => T; }; export interface DropzoneRef { open: () => void; } export interface DropzoneRootProps extends React.HTMLAttributes<HTMLElement> { refKey?: string; [key: string]: any; } export interface DropzoneInputProps extends React.InputHTMLAttributes<HTMLInputElement> { refKey?: string; } type PropTypes = "multiple" | "onDragEnter" | "onDragOver" | "onDragLeave"; export interface Accept { [key: string]: string[]; }