-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLayout.tsx
57 lines (50 loc) · 1.5 KB
/
Layout.tsx
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
import React from 'react'
import PropTypes from 'prop-types'
import { ILayoutProps } from './Dropzone'
const Layout = (props: ILayoutProps) => {
const {
input,
previews,
submitButton,
dropzoneProps,
files,
extra: { maxFiles },
} = props
return (
<div {...dropzoneProps}>
{previews}
{files.length < maxFiles && input}
{files.length > 0 && submitButton}
</div>
)
}
Layout.propTypes = {
input: PropTypes.node,
previews: PropTypes.arrayOf(PropTypes.node),
submitButton: PropTypes.node,
dropzoneProps: PropTypes.shape({
ref: PropTypes.any.isRequired,
className: PropTypes.string.isRequired,
style: PropTypes.object,
onDragEnter: PropTypes.func.isRequired,
onDragOver: PropTypes.func.isRequired,
onDragLeave: PropTypes.func.isRequired,
onDrop: PropTypes.func.isRequired,
}).isRequired,
files: PropTypes.arrayOf(PropTypes.any).isRequired,
extra: PropTypes.shape({
active: PropTypes.bool.isRequired,
reject: PropTypes.bool.isRequired,
dragged: PropTypes.arrayOf(PropTypes.any).isRequired,
accept: PropTypes.string.isRequired,
multiple: PropTypes.bool.isRequired,
minSizeBytes: PropTypes.number.isRequired,
maxSizeBytes: PropTypes.number.isRequired,
maxFiles: PropTypes.number.isRequired,
onFiles: PropTypes.func.isRequired,
onCancelFile: PropTypes.func.isRequired,
onRemoveFile: PropTypes.func.isRequired,
onRestartFile: PropTypes.func.isRequired,
}).isRequired,
}
export default Layout