all files / lib/helpers/ scopeTab.js

61.11% Statements 11/18
28.57% Branches 4/14
100% Functions 2/2
62.5% Lines 10/16
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29                                     
'use strict';
 
Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = scopeTab;
 
var _tabbable = require('./tabbable');
 
var _tabbable2 = _interopRequireDefault(_tabbable);
 
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
function scopeTab(node, event) {
  var tabbable = (0, _tabbable2.default)(node);
  Eif (!tabbable.length) {
    event.preventDefault();
    return;
  }
  var finalTabbable = tabbable[event.shiftKey ? 0 : tabbable.length - 1];
  var leavingFinalTabbable = finalTabbable === document.activeElement ||
  // handle immediate shift+tab after opening with mouse
  node === document.activeElement;
  if (!leavingFinalTabbable) return;
  event.preventDefault();
  var target = tabbable[event.shiftKey ? tabbable.length - 1 : 0];
  target.focus();
}