Dropzone
Capture files from user with drag and drop
Source
LLM docs
Docs
PackageIcon
License
Installation
After installation import package styles at the root of your application:
Usage
Dropzone lets you capture one or more files from the user.
The component is based on react-dropzone and supports all of its core features:
- Accepts/rejects files based on provided mime types
- Limits individual file size
- Renders given children and provides context-based components to display elements based on current status
Drag images here or click to select files
Attach as many files as you like, each file should not exceed 5mb
Dropzone.Accept, Dropzone.Reject and Dropzone.Idle
Dropzone.Accept, Dropzone.Reject and Dropzone.Idle components are visible only when the user performs a certain action:
Dropzone.Acceptis visible only when the user drags a file that can be accepted over the dropzoneDropzone.Rejectis visible only when the user drags a file that cannot be accepted over the dropzoneDropzone.Idleis visible when the user does not drag anything over the dropzone
Loading state
Set the loading prop to indicate a loading state with the LoadingOverlay component.
When the loading prop is true, users cannot drop or select new files (Dropzone becomes disabled):
Drag images here or click to select files
Attach as many files as you like, each file should not exceed 5mb
Disabled state
If you want to implement your own loading state, you can disable Dropzone without LoadingOverlay.
Same as with loading, when Dropzone is disabled, users cannot drop or select new files:
Drag images here or click to select files
Attach as many files as you like, each file should not exceed 5mb
Open file browser manually
To open the file browser from outside of the component, use the openRef prop to get a function that will trigger the file browser:
Drag images here or click to select files
Attach as many files as you like, each file should not exceed 5mb
Enable child pointer events
By default, Dropzone disables pointer events on its children for dragging events to work. When activateOnClick={false},
clicking on any children inside Dropzone will not do anything.
However, you can set the style pointerEvents: 'all' to make children clickable.
Note that you need to set these styles only on interactive elements, such as buttons or links.
Mime types
To specify file types provide an object with the keys set to the mime type and the values as an array of file extensions. Find more examples of accepting specific file types in the react-dropzone documentation.
You can also specify file types by providing an array of mime types to the accept prop:
To save some research time, you can use the MIME_TYPES variable exported from @mantine/dropzone:
MIME_TYPES includes the following data:
Additionally, you can use grouped mime types:
Styles API
Dropzone root element has the following data attributes to change styles based on current status:
data-loading– whenloadingprop istruedata-accept– when user drags files that can be accepted over the dropzonedata-reject– when user drags files that cannot be accepted over the dropzonedata-idle– default state – the user does not drag any files over the dropzone
Drop images here
Images previews
Drop images here
Get ref
Dropzone.FullScreen component
Dropzone.FullScreen lets you capture files dropped to the browser window instead of a specific area.
It supports the same props as the Dropzone component.
To preview the component, click the button and drop images to the browser window: