forked from Kieran/snort
Merge pull request 'allow upload of files using drag and drop' (#670) from fernandoporazzi/snort:drag-and-drop-images into main
Reviewed-on: Kieran/snort#670
This commit is contained in:
commit
9016d21eaa
@ -12,7 +12,7 @@ import ProfileImage from "Element/User/ProfileImage";
|
|||||||
import useFileUpload from "Upload";
|
import useFileUpload from "Upload";
|
||||||
import Note from "Element/Event/Note";
|
import Note from "Element/Event/Note";
|
||||||
|
|
||||||
import { ClipboardEventHandler } from "react";
|
import { ClipboardEventHandler, DragEvent } from "react";
|
||||||
import useLogin from "Hooks/useLogin";
|
import useLogin from "Hooks/useLogin";
|
||||||
import { GetPowWorker } from "index";
|
import { GetPowWorker } from "index";
|
||||||
import AsyncButton from "Element/AsyncButton";
|
import AsyncButton from "Element/AsyncButton";
|
||||||
@ -505,6 +505,24 @@ export function NoteCreator() {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const handleDragOver = (event: DragEvent<HTMLTextAreaElement>) => {
|
||||||
|
event.preventDefault();
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleDragLeave = (event: DragEvent<HTMLTextAreaElement>) => {
|
||||||
|
event.preventDefault();
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleDrop = (event: DragEvent<HTMLTextAreaElement>) => {
|
||||||
|
event.preventDefault();
|
||||||
|
|
||||||
|
const droppedFiles = Array.from(event.dataTransfer.files);
|
||||||
|
|
||||||
|
droppedFiles.forEach(async file => {
|
||||||
|
await uploadFile(file);
|
||||||
|
})
|
||||||
|
};
|
||||||
|
|
||||||
function noteCreatorForm() {
|
function noteCreatorForm() {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
@ -550,6 +568,9 @@ export function NoteCreator() {
|
|||||||
{!note.preview && (
|
{!note.preview && (
|
||||||
<div onPaste={handlePaste} className={classNames("note-creator", { poll: Boolean(note.pollOptions) })}>
|
<div onPaste={handlePaste} className={classNames("note-creator", { poll: Boolean(note.pollOptions) })}>
|
||||||
<Textarea
|
<Textarea
|
||||||
|
onDragOver={handleDragOver}
|
||||||
|
onDragLeave={handleDragLeave}
|
||||||
|
onDrop={handleDrop}
|
||||||
autoFocus
|
autoFocus
|
||||||
className={classNames("textarea", { "textarea--focused": note.active })}
|
className={classNames("textarea", { "textarea--focused": note.active })}
|
||||||
onChange={c => onChange(c)}
|
onChange={c => onChange(c)}
|
||||||
|
@ -51,6 +51,9 @@ interface TextareaProps {
|
|||||||
value: string;
|
value: string;
|
||||||
onFocus(): void;
|
onFocus(): void;
|
||||||
onKeyDown(ev: React.KeyboardEvent<HTMLTextAreaElement>): void;
|
onKeyDown(ev: React.KeyboardEvent<HTMLTextAreaElement>): void;
|
||||||
|
onDragOver?(ev: React.DragEvent<HTMLTextAreaElement>): void;
|
||||||
|
onDragLeave?(ev: React.DragEvent<HTMLTextAreaElement>): void;
|
||||||
|
onDrop?(ev: React.DragEvent<HTMLTextAreaElement>): void;
|
||||||
}
|
}
|
||||||
|
|
||||||
const Textarea = (props: TextareaProps) => {
|
const Textarea = (props: TextareaProps) => {
|
||||||
|
Loading…
Reference in New Issue
Block a user