Explorar o código

feat(search): Add search shortcuts (/ and ESC)

* Press / to toggle search dialog
* Press ESC to close search dialog

See #784
George Cushen %!s(int64=6) %!d(string=hai) anos
pai
achega
07c9f4f387
Modificáronse 1 ficheiros con 26 adicións e 6 borrados
  1. 26 6
      assets/js/academic.js

+ 26 - 6
assets/js/academic.js

@@ -251,6 +251,21 @@
     });
   }
 
+  /* ---------------------------------------------------------------------------
+  * Toggle search dialog.
+  * --------------------------------------------------------------------------- */
+
+  function toggleSearchDialog() {
+    if ($('body').hasClass('searching')) {
+      $('[id=search-query]').blur();
+      $('body').removeClass('searching');
+    } else {
+      $('body').addClass('searching');
+      $('.search-results').css({opacity: 0, visibility: 'visible'}).animate({opacity: 1}, 200);
+      $('#search-query').focus();
+    }
+  }
+
   /* ---------------------------------------------------------------------------
    * On window load.
    * --------------------------------------------------------------------------- */
@@ -370,14 +385,19 @@
     // On search icon click toggle search dialog.
     $('.js-search').click(function(e) {
       e.preventDefault();
-      if ($('body').hasClass('searching')) {
-        $('body').removeClass('searching');
-      } else {
-        $('body').addClass('searching');
-        $('.search-results').css({opacity: 0, visibility: 'visible'}).animate({opacity: 1}, 200);
-        $('#search-query').focus();
+      toggleSearchDialog();
+    });
+    $(document).on('keydown', function(e){
+      if (e.which == 27) {
+        if ($('body').hasClass('searching')) {
+          toggleSearchDialog();
+        }
+      } else if (e.which == 191) {
+        e.preventDefault();
+        toggleSearchDialog();
       }
     });
+
   });
 
 })(jQuery);