focus-lock
Version:
DOM trap for a focus
30 lines (29 loc) • 1.05 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.correctNodes = exports.correctNode = void 0;
var is_1 = require("./is");
var findSelectedRadio = function (node, nodes) {
return nodes
.filter(is_1.isRadioElement)
.filter(function (el) { return el.name === node.name; })
.filter(function (el) { return el.checked; })[0] || node;
};
var correctNode = function (node, nodes) {
if ((0, is_1.isRadioElement)(node) && node.name) {
return findSelectedRadio(node, nodes);
}
return node;
};
exports.correctNode = correctNode;
/**
* giving a set of radio inputs keeps only selected (tabbable) ones
* @param nodes
*/
var correctNodes = function (nodes) {
// IE11 has no Set(array) constructor
var resultSet = new Set();
nodes.forEach(function (node) { return resultSet.add((0, exports.correctNode)(node, nodes)); });
// using filter to support IE11
return nodes.filter(function (node) { return resultSet.has(node); });
};
exports.correctNodes = correctNodes;