From 1e89f8f70642cfa4f576b0593e297c9599462901 Mon Sep 17 00:00:00 2001 From: seaheart Date: Tue, 11 Jul 2023 23:03:30 +0800 Subject: [PATCH] add paste upload file --- src/pages/matter/List.tsx | 58 ++++++++++++++++++++++++++++++++------- 1 file changed, 48 insertions(+), 10 deletions(-) diff --git a/src/pages/matter/List.tsx b/src/pages/matter/List.tsx index c18f14f..67fc38d 100644 --- a/src/pages/matter/List.tsx +++ b/src/pages/matter/List.tsx @@ -128,16 +128,48 @@ export default class List extends TankComponent { this.updateUI(); }, register: () => { - const { - dragEnterListener, - dragleaveListener, - dragoverListener, - dropListener, - } = this.drag; - this.wrapperRef.current?.addEventListener('dragenter', dragEnterListener); - this.wrapperRef.current?.addEventListener('dragleave', dragleaveListener); - this.wrapperRef.current?.addEventListener('dragover', dragoverListener); - this.wrapperRef.current?.addEventListener('drop', dropListener); + this.wrapperRef.current?.addEventListener( + 'dragenter', + this.drag.dragEnterListener + ); + this.wrapperRef.current?.addEventListener( + 'dragleave', + this.drag.dragleaveListener + ); + this.wrapperRef.current?.addEventListener( + 'dragover', + this.drag.dragoverListener + ); + this.wrapperRef.current?.addEventListener('drop', this.drag.dropListener); + }, + unregister: () => { + this.wrapperRef.current?.addEventListener( + 'dragenter', + this.drag.dragEnterListener + ); + this.wrapperRef.current?.addEventListener( + 'dragleave', + this.drag.dragleaveListener + ); + this.wrapperRef.current?.addEventListener( + 'dragover', + this.drag.dragoverListener + ); + this.wrapperRef.current?.addEventListener('drop', this.drag.dropListener); + }, + }; + + paste = { + pasteListener: (e: ClipboardEvent) => { + if (e.clipboardData?.files?.length! > 0) { + this.launchUpload(e.clipboardData?.files!); + } + }, + register: () => { + document.addEventListener('paste', this.paste.pasteListener); + }, + unregister: () => { + document.removeEventListener('paste', this.paste.pasteListener); }, }; @@ -147,6 +179,12 @@ export default class List extends TankComponent { this.refresh(); this.refreshBreadcrumbs(); this.drag.register(); + this.paste.register(); + } + + componentWillUnmount() { + this.drag.unregister(); + this.paste.unregister(); } componentWillReceiveProps() {