From 126b3a25abccd7c02cd8b6355dabf0d129806699 Mon Sep 17 00:00:00 2001 From: Michael Schnerring <3743342+schnerring@users.noreply.github.com> Date: Wed, 13 Oct 2021 20:13:19 +0200 Subject: [PATCH] Fix flexsearch arrow navigation error --- assets/js/index.js | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/assets/js/index.js b/assets/js/index.js index c10a58b..2e0c542 100644 --- a/assets/js/index.js +++ b/assets/js/index.js @@ -33,24 +33,23 @@ Source: document.addEventListener('keydown',suggestionFocus); -function suggestionFocus(e){ +function suggestionFocus(e) { + const suggestionsHidden = suggestions.classList.contains('d-none'); + if (suggestionsHidden) return; - const focusableSuggestions= suggestions.querySelectorAll('a'); - const focusable= [...focusableSuggestions]; - const index = focusable.indexOf(document.activeElement); + const focusableSuggestions= [...suggestions.querySelectorAll('a')]; + if (focusableSuggestions.length === 0) return; - const keyDefault = suggestions.classList.contains('d-none'); + const index = focusableSuggestions.indexOf(document.activeElement); - let nextIndex = 0; - - if ((e.keyCode === 38) && (!keyDefault)) { + if (e.key === "ArrowUp") { e.preventDefault(); - nextIndex= index > 0 ? index-1 : 0; + const nextIndex = index > 0 ? index - 1 : 0; focusableSuggestions[nextIndex].focus(); } - else if ((e.keyCode === 40) && (!keyDefault)) { + else if (e.key === "ArrowDown") { e.preventDefault(); - nextIndex= index+1 < focusable.length ? index+1 : index; + const nextIndex= index + 1 < focusableSuggestions.length ? index + 1 : index; focusableSuggestions[nextIndex].focus(); } @@ -127,11 +126,9 @@ Source: //flatSearch now returns results for each index field. create a single list const flatResults = {}; //keyed by href to dedupe results - results.forEach(result=>{ - result.result.forEach(r=>{ - flatResults[r.doc.href] = r.doc; - }); - }); + for (const result of results.flatMap(r => r.result)) { + flatResults[result.doc.href] = result.doc; + } //construct a list of suggestions list for(const href in flatResults) {