easy-file-dragdrop
v2.0.5
Published
A provider-driven React file drop library with separated input and preview panes, animations, and built CSS.
Readme
easy-file-dragdrop
easy-file-dragdrop is a React file upload library with a split input/preview model, drag-and-drop support, animated transitions, and bundled CSS output.
Install
npm install easy-file-dragdropPeer dependencies:
react^18 || ^19react-dom^18 || ^19
Import styles
import "easy-file-dragdrop/styles.css";Basic usage
import React from "react";
import { useDragDrop } from "easy-file-dragdrop";
export default function Example() {
const { InputCanvas, PreviewPane } = useDragDrop();
const [files, setFiles] = React.useState([]);
return (
<>
<InputCanvas
label="Upload attachments"
description="PNG, JPG, or PDF up to 5 MB"
value={files}
onChange={setFiles}
accept="image/*,.pdf"
multiple
maxFiles={5}
maxFileSize={5}
/>
<PreviewPane showPreview />
</>
);
}Controlled usage
InputCanvas is controlled. Pass value and onChange.
import React from "react";
import { FileObject, useEasyDragDrop } from "easy-file-dragdrop";
export default function UploadForm() {
const [files, setFiles] = React.useState<FileObject[]>([]);
const { InputCanvas, PreviewPane } = useEasyDragDrop();
return (
<>
<InputCanvas
name="files"
label="Upload files"
value={files}
onChange={setFiles}
accept="image/*,.pdf"
multiple
maxFiles={5}
/>
<PreviewPane />
</>
);
}API
useDragDrop and useEasyDragDrop both return:
InputCanvasPreviewPane
FileObject shape:
idcreatedAtmetadata:name,size,type,extension,lastModified,isImageimage(for images):width,height,aspectRatiofile
InputCanvas props:
name,id,label,description,onBlurvalue,onChangeaccept,multiple,disabledmaxFiles,maxFileSize,maxTotalSizevalidation
PreviewPane props:
showPreviewimageLoader
Build
npm run buildLicense
ISC
