diff options
author | Brandon Rainey <83629154+brandonrainey@users.noreply.github.com> | 2024-05-17 00:06:33 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-17 04:06:33 +0000 |
commit | a3ed56c3deb1a286a7e84c86064fd33fc33e8f61 (patch) | |
tree | d14b47e509adde3430c7f4b1fb57b951d8299662 /ext | |
parent | 6ade1eb2e0d8037472631a5e6718c33621303e31 (diff) |
refactored onKeyDown to be easier to read, and added test (#943)
* refactored onKeyDown to be easier to read, and added test to ensure preserved behavior
* added new keypress events to test
* refactored test to call method directly from SearchDisplayController, removed second test, removed old copyright
* added test for invalid keys, split keyboard events into valid and invalid
* added crtl + backspace as valid keypress, added 2 new invaid keypresses to test
Diffstat (limited to 'ext')
-rw-r--r-- | ext/js/display/search-display-controller.js | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/ext/js/display/search-display-controller.js b/ext/js/display/search-display-controller.js index 9b2311d1..e63b96e8 100644 --- a/ext/js/display/search-display-controller.js +++ b/ext/js/display/search-display-controller.js @@ -154,16 +154,15 @@ export class SearchDisplayController { * @param {KeyboardEvent} e */ _onKeyDown(e) { - const {activeElement} = document; - if ( - activeElement !== this._queryInput && - !this._isElementInput(activeElement) && - (!e.ctrlKey || e.key === 'Backspace') && - !e.metaKey && - !e.altKey && - (e.key.length === 1 || e.key === 'Backspace') && - e.key !== ' ' - ) { + const activeElement = document.activeElement; + + const isInputField = this._isElementInput(activeElement); + const isAllowedKey = e.key.length === 1 || e.key === 'Backspace'; + const isModifierKey = e.ctrlKey || e.metaKey || e.altKey; + const isSpaceKey = e.key === ' '; + const isCtrlBackspace = e.ctrlKey && e.key === 'Backspace'; + + if (!isInputField && (!isModifierKey || isCtrlBackspace) && isAllowedKey && !isSpaceKey) { this._queryInput.focus({preventScroll: true}); } } |