This commit is contained in:
Iliyan Angelov
2025-09-14 23:24:25 +03:00
commit c67067a2a4
71311 changed files with 6800714 additions and 0 deletions

View File

@@ -0,0 +1,54 @@
import React from "react";
import Dropzone from "../../";
export default class Accept extends React.Component {
state = {
accepted: [],
rejected: [],
};
render() {
return (
<section>
<div className="dropzone">
<Dropzone
accept={{
"image/*": [".jpeg", ".png"],
}}
onDrop={(accepted, rejected) => {
this.setState({ accepted, rejected });
}}
>
{({ getRootProps }) => (
<div {...getRootProps()}>
<p>
Try dropping some files here, or click to select files to
upload.
</p>
<p>Only *.jpeg and *.png images will be accepted</p>
</div>
)}
</Dropzone>
</div>
<aside>
<h2>Accepted files</h2>
<ul>
{this.state.accepted.map((f) => (
<li key={f.name}>
{f.name} - {f.size} bytes
</li>
))}
</ul>
<h2>Rejected files</h2>
<ul>
{this.state.rejected.map((f) => (
<li key={f.name}>
{f.name} - {f.size} bytes
</li>
))}
</ul>
</aside>
</section>
);
}
}

View File

@@ -0,0 +1,46 @@
import React from "react";
import Dropzone from "../../";
export default class Test extends React.Component {
render() {
return (
<div>
<Dropzone
onDrop={(acceptedFiles, fileRejections, event) =>
console.log(acceptedFiles, fileRejections, event)
}
onDragEnter={(event) => console.log(event)}
onDragOver={(event) => console.log(event)}
onDragLeave={(event) => console.log(event)}
onDropAccepted={(files, event) => console.log(files, event)}
onDropRejected={(files, event) => console.log(files, event)}
onFileDialogCancel={() => console.log("onFileDialogCancel invoked")}
onFileDialogOpen={() => console.log("onFileDialogOpen invoked")}
onError={(e) => console.log(e)}
validator={(f) => ({ message: f.name, code: "" })}
minSize={2000}
maxSize={Infinity}
maxFiles={100}
preventDropOnDocument
noClick={false}
noKeyboard={false}
noDrag={false}
noDragEventsBubbling={false}
disabled
multiple={false}
accept={{
"image/*": [".png"],
}}
useFsAccessApi={false}
autoFocus
>
{({ getRootProps, getInputProps }) => (
<div {...getRootProps()}>
<input {...getInputProps()} />
</div>
)}
</Dropzone>
</div>
);
}
}

View File

@@ -0,0 +1,53 @@
import React from "react";
import Dropzone from "../../";
import { FileWithPath } from "file-selector";
export default class Basic extends React.Component {
state = { files: [] };
onDrop = (files: FileWithPath[]) => {
this.setState({
files,
});
};
render() {
return (
<section>
<div className="dropzone">
<Dropzone onDrop={this.onDrop}>
{({ getRootProps, getInputProps }) => (
<div {...getRootProps()}>
<input {...getInputProps()} />
<p>
Try dropping some files here, or click to select files to
upload.
</p>
</div>
)}
</Dropzone>
</div>
<aside>
<h2>Dropped files</h2>
<ul>
{this.state.files.map((f) => (
<li key={f.name}>
{f.name} - {f.size} bytes
</li>
))}
</ul>
</aside>
</section>
);
}
}
export const optional = (
<Dropzone>
{({ getRootProps, getInputProps }) => (
<div {...getRootProps()}>
<input {...getInputProps()} />
</div>
)}
</Dropzone>
);

View File

@@ -0,0 +1,31 @@
import React from "react";
import Dropzone from "../../";
export class Events extends React.Component {
render() {
return (
<section>
<div className="dropzone">
<Dropzone
onDrop={(acceptedFiles, fileRejections, event) =>
console.log(acceptedFiles, fileRejections, event)
}
onDragEnter={(event) => console.log(event)}
onDragOver={(event) => console.log(event)}
onDragLeave={(event) => console.log(event)}
>
{({ getRootProps, getInputProps }) => (
<div {...getRootProps()}>
<input {...getInputProps()} />
<p>
Try dropping some files here, or click to select files to
upload.
</p>
</div>
)}
</Dropzone>
</div>
</section>
);
}
}

View File

@@ -0,0 +1,20 @@
import React from "react";
import Dropzone from "../../";
export const dropzone = (
<Dropzone
onDrop={(files) => console.log(files)}
onFileDialogCancel={() => console.log("onFileDialogCancel invoked")}
onFileDialogOpen={() => console.log("onFileDialogOpen invoked")}
>
{({ getRootProps, getInputProps, open }) => (
<div {...getRootProps()}>
<input {...getInputProps()} />
<p>Drop some files here.</p>
<button type="button" onClick={open}>
Open file dialog
</button>
</div>
)}
</Dropzone>
);

View File

@@ -0,0 +1,15 @@
import React from "react";
import { useDropzone, DropzoneProps } from "../../";
export const Dropzone = ({ children, ...opts }: DropzoneProps) => {
const { ...state } = useDropzone(opts);
return children(state);
};
<Dropzone>
{({ getRootProps, getInputProps }) => (
<div {...getRootProps()}>
<input {...getInputProps()} />
</div>
)}
</Dropzone>;

View File

@@ -0,0 +1,87 @@
import React, { Component } from "react";
import Dropzone from "../../";
export class TestReactDragEvt extends Component {
getFiles = async (event: React.DragEvent<HTMLDivElement>) => {
const files = Array.from(event.dataTransfer.files);
return files;
};
render() {
return (
<div>
<Dropzone getFilesFromEvent={this.getFiles}>
{({ getRootProps }) => <div {...getRootProps()} />}
</Dropzone>
</div>
);
}
}
export class TestDataTransferItems extends Component {
getFiles = async (event: React.DragEvent<HTMLDivElement>) => {
const items = Array.from(event.dataTransfer.items);
return items;
};
render() {
return (
<div>
<Dropzone getFilesFromEvent={this.getFiles}>
{({ getRootProps }) => <div {...getRootProps()} />}
</Dropzone>
</div>
);
}
}
export class TestNativeDragEventEvt extends Component {
getFiles = async (event: DragEvent) => {
const files = Array.from(event.dataTransfer.files);
return files;
};
render() {
return (
<div>
<Dropzone getFilesFromEvent={this.getFiles}>
{({ getRootProps }) => <div {...getRootProps()} />}
</Dropzone>
</div>
);
}
}
export class TestChangeEvt extends Component {
getFiles = async (event: React.ChangeEvent<HTMLInputElement>) => {
const files = Array.from(event.target.files);
return files;
};
render() {
return (
<div>
<Dropzone getFilesFromEvent={this.getFiles}>
{({ getRootProps }) => <div {...getRootProps()} />}
</Dropzone>
</div>
);
}
}
export class TestNativeEvt extends Component {
getFiles = async (event: Event) => {
const files = Array.from((event.target as HTMLInputElement).files);
return files;
};
render() {
return (
<div>
<Dropzone getFilesFromEvent={this.getFiles}>
{({ getRootProps }) => <div {...getRootProps()} />}
</Dropzone>
</div>
);
}
}

View File

@@ -0,0 +1,18 @@
import React, { createRef } from "react";
import Dropzone, { DropzoneRef } from "../../";
const ref = createRef<DropzoneRef>();
export const dropzone = (
<Dropzone ref={ref}>
{({ getRootProps, getInputProps }) => (
<div {...getRootProps()}>
<input {...getInputProps()} />
<p>Drop some files here.</p>
<button type="button" onClick={ref.current.open}>
Open file dialog
</button>
</div>
)}
</Dropzone>
);

View File

@@ -0,0 +1,22 @@
{
"compilerOptions": {
"baseUrl": ".",
"allowSyntheticDefaultImports": true,
"declaration": true,
"noEmit": true,
"jsx": "react",
"moduleResolution": "node",
"module": "es2015",
"target": "esnext",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2015",
"dom"
]
},
"include": [
"./*.tsx"
]
}