From b624405b0c2980591b1b367cf6251006369bcdd7 Mon Sep 17 00:00:00 2001 From: 0HyperCube <78500760+0HyperCube@users.noreply.github.com> Date: Tue, 24 May 2022 04:01:36 +0100 Subject: [PATCH] Fix paste into UI (#654) * Keyboard menu navigation * Fix dropdown keyboard navigation * Fix merge error * Add font prieviews * Fix paste into UI * Fix paste UI Co-authored-by: Keavon Chambers --- frontend/src/io-managers/input.ts | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/frontend/src/io-managers/input.ts b/frontend/src/io-managers/input.ts index b29a75f3..38458fbc 100644 --- a/frontend/src/io-managers/input.ts +++ b/frontend/src/io-managers/input.ts @@ -42,12 +42,7 @@ export function createInputManager(editor: Editor, container: HTMLElement, dialo if (!key) return false; // Don't redirect user input from text entry into HTML elements - if ( - key !== "escape" && - !(key === "enter" && e.ctrlKey) && - e.target instanceof HTMLElement && - (e.target.nodeName === "INPUT" || e.target.nodeName === "TEXTAREA" || e.target.isContentEditable) - ) { + if (key !== "escape" && !(e.ctrlKey && key === "enter") && targetIsTextField(e.target)) { return false; } @@ -228,7 +223,7 @@ export function createInputManager(editor: Editor, container: HTMLElement, dialo function onPaste(e: ClipboardEvent): void { const dataTransfer = e.clipboardData; - if (!dataTransfer) return; + if (!dataTransfer || targetIsTextField(e.target)) return; e.preventDefault(); Array.from(dataTransfer.items).forEach((item) => { @@ -251,6 +246,10 @@ export function createInputManager(editor: Editor, container: HTMLElement, dialo }); } + function targetIsTextField(target: EventTarget | null): boolean { + return target instanceof HTMLElement && (target.nodeName === "INPUT" || target.nodeName === "TEXTAREA" || target.isContentEditable); + } + // Event bindings function bindListeners(): void {