Newer
Older
import { DropTarget } from 'react-dnd'
import { NativeTypes } from 'react-dnd-html5-backend'
export default DropTarget(
NativeTypes.FILE,
{
drop(
{ onFileDrop, files, maxFiles, setError, allowedFileExtensions },
monitor,
) {
const [file] = monitor.getItem().files
const fileExtention = file.name.split('.')[1]
if (files.length >= maxFiles) {
setError('No more files can be added to this section.')
return
}
if (
allowedFileExtensions &&
!allowedFileExtensions.includes(fileExtention)
) {
setError('Invalid file type.')
}
typeof onFileDrop === 'function' && onFileDrop(file)
},
},
(connect, monitor) => ({
isFileOver: monitor.isOver(),
canDropFile: monitor.canDrop(),
connectFileDrop: connect.dropTarget(),
}),
)