choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
31 lines (26 loc) • 1.21 kB
JavaScript
var selector = 'a[href], area[href], input:not([disabled]):not([type="hidden"]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, [tabindex="0"], [contenteditable], audio[controls], video[controls], summary, [tabindex^="0"], [tabindex^="1"], [tabindex^="2"], [tabindex^="3"], [tabindex^="4"], [tabindex^="5"], [tabindex^="6"], [tabindex^="7"], [tabindex^="8"], [tabindex^="9"]';
export default function focusable(node) {
return ['matches', 'msMatchesSelector', 'webkitMatchesSelector', 'mozMatchesSelector'].some(function (method) {
return method in node && node[method](selector);
});
}
export function findFirstFocusableElement(node) {
return node.querySelector(selector);
}
export function findFocusableElements(node) {
return Array.from(node.querySelectorAll(selector));
}
export function findFocusableParent(node, root) {
var parentElement = node.parentElement;
if (parentElement) {
if (focusable(parentElement)) {
return parentElement;
}
if (root && parentElement === root) {
return null;
}
return findFocusableParent(parentElement, root);
}
return null;
}
//# sourceMappingURL=focusable.js.map