Skip to content
Snippets Groups Projects
Commit 1949c66e authored by Léo Banno-Cloutier's avatar Léo Banno-Cloutier Committed by Sébastien Blin
Browse files

jams-react-client: add CustomImgDropZone component

Change-Id: I215dfec7237746fcbcd28aeabecabc5e8701565d
parent ad9a9fc9
No related branches found
No related tags found
No related merge requests found
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"] },
maxFiles: 1,
};
export default CustomImgDropZone;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment