Browse Source

[fix] keyboard navigation / simple theme (UI)

- avoid loop select
- fix select next item in mixed result lists

Replaces: https://github.com/searxng/searxng/pull/2789
Closes: https://github.com/searxng/searxng/issues/2751
Closes: https://github.com/searxng/searxng/issues/2788
Jinyuan Huang 1 year ago
parent
commit
92d0c378e0
2 changed files with 5 additions and 9 deletions
  1. 2 1
      AUTHORS.rst
  2. 3 8
      searx/static/themes/simple/src/js/main/keyboard.js

+ 2 - 1
AUTHORS.rst

@@ -168,4 +168,5 @@ features or generally made searx better:
 - Milad Laly @Milad-Laly
 - Milad Laly @Milad-Laly
 - @llmII
 - @llmII
 - @blob42 `<https://blob42.xyz>`_
 - @blob42 `<https://blob42.xyz>`_
-- Paolo Basso `<https://github.com/paolobasso99>`
+- Paolo Basso `<https://github.com/paolobasso99>`
+- Bernie Huang `<https://github.com/BernieHuang2008>`

+ 3 - 8
searx/static/themes/simple/src/js/main/keyboard.js

@@ -213,6 +213,7 @@ searxng.ready(function () {
       }
       }
 
 
       var next, results = document.querySelectorAll('.result');
       var next, results = document.querySelectorAll('.result');
+      results = Array.from(results);  // convert NodeList to Array for further use
 
 
       if (typeof effectiveWhich !== 'string') {
       if (typeof effectiveWhich !== 'string') {
         next = effectiveWhich;
         next = effectiveWhich;
@@ -233,16 +234,10 @@ searxng.ready(function () {
           }
           }
           break;
           break;
         case 'down':
         case 'down':
-          next = current.nextElementSibling;
-          if (next === null) {
-            next = results[0];
-          }
+          next = results[results.indexOf(current) + 1] || current;
           break;
           break;
         case 'up':
         case 'up':
-          next = current.previousElementSibling;
-          if (next === null) {
-            next = results[results.length - 1];
-          }
+          next = results[results.indexOf(current) - 1] || current;
           break;
           break;
         case 'bottom':
         case 'bottom':
           next = results[results.length - 1];
           next = results[results.length - 1];