Newer
Older
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
74
75
import React from "react";
import { makeStyles } from "@material-ui/core/styles";
import Dropzone from "react-dropzone";
import UploadIcon from "@material-ui/icons/CloudUpload";
import CloseIcon from "@material-ui/icons/Close";
const useStyles = makeStyles({
dropzoneStyle: {
display: "flex",
flexDirection: "row",
alignItems: "center",
justifyContent: "center",
padding: "20px",
background: "#0000001A 0% 0% no-repeat padding-box",
borderRadius: "5px",
opacity: "1",
outline: "none",
transition: "border .24s ease-in-out",
cursor: "pointer",
border: "none",
height: "10px",
width: "max-content",
},
uploadIconStyle: {
fontSize: "35px",
marginBottom: "10px",
marginRight: "10px",
},
deleteButton: {
backgroundColor: "transparent",
border: "none",
},
});
function CustomImgDropZone(props) {
const {
onDrop,
accept,
maxFiles,
label,
file,
handleDelete,
...rest
} = props;
const classes = useStyles();
const handleDrop = (acceptedFiles) => {
if (acceptedFiles.length > 0) {
onDrop(acceptedFiles);
}
};
return (
<Dropzone onDrop={handleDrop} accept={accept} maxFiles={maxFiles} {...rest}>
{({ getRootProps, getInputProps }) => (
<div {...getRootProps()} className={classes.dropzoneStyle}>
<input {...getInputProps()} />
<UploadIcon className={classes.uploadIconStyle} />
{file ? (
<>
<span>{file}</span>
<button onClick={handleDelete} className={classes.deleteButton}>
<CloseIcon style={{ color: "red" }} />
</button>
</>
) : (
<span>{label}</span>
)}
</div>
)}
</Dropzone>
);
}
CustomImgDropZone.defaultProps = {
accept: { "image/*": [".png", ".jpeg", ".jpg", ".svg"] },
maxFiles: 1,
};
export default CustomImgDropZone;