From 4830f22b1d0486deb9af6aa7bf48f94a5e2ec8d9 Mon Sep 17 00:00:00 2001 From: Andrey Sitnik Date: Mon, 6 May 2024 19:37:47 +0200 Subject: [PATCH] Allow to press Alt hotkeys on focus in other fields --- hotkey.js | 2 +- package.json | 2 +- test/hotkey.test.ts | 21 +++++++++++++++++++++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/hotkey.js b/hotkey.js index 5c5410e..e7affde 100644 --- a/hotkey.js +++ b/hotkey.js @@ -92,7 +92,7 @@ function findHotKey(event, window, transformers) { export function hotkeyKeyUX(transformers = []) { return window => { function keyDown(event) { - if (ignoreHotkeysIn(event.target)) return + if (!event.altKey && ignoreHotkeysIn(event.target)) return let press = findHotKey(event, window, transformers) if (press) press.click() } diff --git a/package.json b/package.json index a0e3b02..4a6ebc6 100644 --- a/package.json +++ b/package.json @@ -85,7 +85,7 @@ "import": { "./index.js": "{ startKeyUX, hotkeyKeyUX, pressKeyUX, focusGroupKeyUX, jumpKeyUX, hiddenKeyUX, likelyWithKeyboard, getHotKeyHint, hotkeyOverrides, hotkeyMacCompat }" }, - "limit": "2059 B" + "limit": "2070 B" } ], "clean-publish": { diff --git a/test/hotkey.test.ts b/test/hotkey.test.ts index 6ad025f..9844eb5 100644 --- a/test/hotkey.test.ts +++ b/test/hotkey.test.ts @@ -108,6 +108,27 @@ test('ignores hot keys when focus is inside text fields', () => { equal(clicked, 2) }) +test('does not ignore hotkeys with Alt on focus in text field', () => { + let window = new JSDOM().window + startKeyUX(window, [hotkeyKeyUX()]) + window.document.body.innerHTML = + '' + + '' + + '' + + let clicked = 0 + window.document.querySelector('button')!.addEventListener('click', () => { + clicked += 1 + }) + + press( + window, + { altKey: true, key: 'b' }, + window.document.querySelector('[type=text]')! + ) + equal(clicked, 1) +}) + test('supports non-English keyboard layouts', () => { let window = new JSDOM().window startKeyUX(window, [hotkeyKeyUX()])