summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorBrandon Rainey <83629154+brandonrainey@users.noreply.github.com>2024-05-17 00:06:33 -0400
committerGitHub <noreply@github.com>2024-05-17 04:06:33 +0000
commita3ed56c3deb1a286a7e84c86064fd33fc33e8f61 (patch)
treed14b47e509adde3430c7f4b1fb57b951d8299662 /ext
parent6ade1eb2e0d8037472631a5e6718c33621303e31 (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.js19
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});
}
}