import useFileDropzone from '../../hooks/useFileDropzone'; import { FileDropzoneProps } from './types'; import './FileDropzone.scss'; import Icon from '../Icon'; import { checkEmpty } from '../../utils/checkEmpty/checkEmpty'; import { useMemo } from 'react'; import Dropzone from './Dropzone'; import FilePreview from './FilePreview'; const FileDropzone: React.FC = ({ icon = , primaryLabel = 'Drag & drop your file to upload', secondaryLabel = 'Or', buttonLabel = 'Choose File to upload', accept = [], multiple = false, maxFiles, maxSize, onMaxFilesError, maxSizeErrorMessage = '', invalidFileMessage = '', fileExistMessage = '', validateMIMEType = false, }) => { const { getRootProps, getInputProps, acceptedFiles, rejectedFiles, isDragActive, handleRemoveClick, handleReplaceClick, } = useFileDropzone({ accept, multiple, maxFiles, maxSize, onMaxFilesError, maxSizeErrorMessage, invalidFileMessage, fileExistMessage, validateMIMEType, // onDrop: (accepted, rejected, event) => {}, //onDrop function to handle dropped or selected files explicitly. }); const acceptedFilesList = useMemo( () => acceptedFiles.map((file) => ( )), [acceptedFiles, handleRemoveClick, handleReplaceClick] ); const rejectedFilesList = useMemo( () => rejectedFiles.map((rejectedFile) => ( )), [rejectedFiles, handleRemoveClick, handleReplaceClick] ); return (
{!checkEmpty(acceptedFiles) && (
{acceptedFilesList}
)} {!checkEmpty(rejectedFiles) && (
{rejectedFilesList}
)}
); }; export default FileDropzone;