]> git.ipfire.org Git - thirdparty/foundation/foundation-sites.git/commitdiff
Fix incorrect keyboard nav within methods
authorBrett Mason <brettsmason@gmail.com>
Wed, 30 Nov 2016 19:47:25 +0000 (19:47 +0000)
committerBrett Mason <brettsmason@gmail.com>
Wed, 30 Nov 2016 19:47:25 +0000 (19:47 +0000)
js/foundation.offcanvas.js

index 1660de382f45ccfab9b0e8747d3205aa0b8cbf3a..aa549a65e8b177fb2193838f1b85e749386eab5b 100644 (file)
@@ -215,15 +215,14 @@ class OffCanvas {
         last = focusable.eq(-1);
 
     focusable.off('.zf.offcanvas').on('keydown.zf.offcanvas', function(e) {
-      if (e.which === 9 || e.keycode === 9) {
-        if (e.target === last[0] && !e.shiftKey) {
-          e.preventDefault();
-          first.focus();
-        }
-        if (e.target === first[0] && e.shiftKey) {
-          e.preventDefault();
-          last.focus();
-        }
+      var key = Foundation.Keyboard.parseKey(e);
+      if (key === 'TAB' && e.target === last[0]) {
+        e.preventDefault();
+        first.focus();
+      }
+      if (key === 'SHIFT_TAB' && e.target === first[0]) {
+        e.preventDefault();
+        last.focus();
       }
     });
   }
@@ -287,13 +286,18 @@ class OffCanvas {
    * @function
    * @private
    */
-  _handleKeyboard(event) {
-    if (event.which !== 27) return;
-
-    event.stopPropagation();
-    event.preventDefault();
-    this.close();
-    this.$lastTrigger.focus();
+  _handleKeyboard(e) {
+    Foundation.Keyboard.handleKey(e, 'OffCanvas', {
+      close: () => {
+        this.close();
+        this.$lastTrigger.focus();
+        return true;
+      },
+      handled: () => {
+        e.stopPropagation();
+        e.preventDefault();
+      }
+    });
   }
 
   /**