/
react-dropzone.d.ts
73 lines (62 loc) · 2.28 KB
/
react-dropzone.d.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
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 interface FileError {
message: string;
code: "file-too-large" | "file-too-small" | "too-many-files" | "file-invalid-type" | string;
}
export interface FileRejection {
file: File;
errors: FileError[];
}
export type DropzoneOptions = Pick<React.HTMLProps<HTMLElement>, PropTypes> & {
accept?: string | string[];
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;
validator?: <T extends File>(file: T) => FileError | FileError[];
};
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;
draggedFiles: File[];
acceptedFiles: File[];
fileRejections: FileRejection[];
rootRef: React.RefObject<HTMLElement>;
inputRef: React.RefObject<HTMLInputElement>;
getRootProps: (props?: DropzoneRootProps) => DropzoneRootProps;
getInputProps: (props?: DropzoneInputProps) => DropzoneInputProps;
};
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";