aboutsummaryrefslogtreecommitdiff
path: root/assets
diff options
context:
space:
mode:
authorDaniel Forssten <daniel+github@forssten.se>2020-01-19 21:57:53 +0100
committerAlex Shpak <alex-shpak@users.noreply.github.com>2020-01-19 21:57:53 +0100
commit7e2af86777bee9cd9483152f9f8be79c98c43fb9 (patch)
treeb8fcec7db779862bab97eab4dfaadd0d8bef4717 /assets
parent4b641b0f9a681009e80f847f415f29ea14126420 (diff)
#134, Focus search field by pressing s or / (#135)
* #134, Focus search field by pressing s or / * #134, Refactoring away an array loop using indexOf
Diffstat (limited to 'assets')
-rw-r--r--assets/search.js23
1 files changed, 23 insertions, 0 deletions
diff --git a/assets/search.js b/assets/search.js
index 9b1c5ab..e064a14 100644
--- a/assets/search.js
+++ b/assets/search.js
@@ -10,6 +10,29 @@
input.addEventListener('focus', init);
input.addEventListener('keyup', search);
+ document.addEventListener('keypress', focusSearchFieldOnKeyPress);
+
+ function focusSearchFieldOnKeyPress(e) {
+ if (input === document.activeElement) {
+ return;
+ }
+
+ const characterPressed = String.fromCharCode(e.charCode);
+ if (!isHotkey(characterPressed)) {
+ return;
+ }
+
+ input.focus();
+ e.preventDefault();
+ }
+
+ function isHotkey(character) {
+ const dataHotkeys = input.getAttribute('data-hotkeys') || '';
+ const hotkeys = dataHotkeys.split(' ');
+
+ return dataHotkeys.indexOf(character) >= 0;
+ }
+
function init() {
input.removeEventListener('focus', init); // init once
input.required = true;