UNPKG

devextreme

Version:

JavaScript/TypeScript Component Suite for Responsive Web Development

66 lines (63 loc) 2.35 kB
/** * DevExtreme (cjs/__internal/core/utils/m_selectors.js) * Version: 25.2.7 * Build date: Tue May 05 2026 * * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/ */ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.tabbable = exports.focused = exports.focusable = exports.default = void 0; var _dom_adapter = _interopRequireDefault(require("../../../core/dom_adapter")); var _renderer = _interopRequireDefault(require("../../../core/renderer")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const focusableFn = (element, tabIndex) => { if (!visible(element)) { return false } const nodeName = element.nodeName.toLowerCase(); const isTabIndexNotNaN = !isNaN(tabIndex); const isDisabled = element.disabled; const isDefaultFocus = /^(input|select|textarea|button|object|iframe)$/.test(nodeName); const isHyperlink = "a" === nodeName; let isFocusable; const { isContentEditable: isContentEditable } = element; if (isDefaultFocus || isContentEditable) { isFocusable = !isDisabled } else if (isHyperlink) { isFocusable = element.href || isTabIndexNotNaN } else { isFocusable = isTabIndexNotNaN } return isFocusable }; function visible(element) { const $element = (0, _renderer.default)(element); return $element.is(":visible") && "hidden" !== $element.css("visibility") && "hidden" !== $element.parents().css("visibility") } const focusable = (index, element) => focusableFn(element, (0, _renderer.default)(element).attr("tabIndex")); exports.focusable = focusable; const tabbable = (index, element) => { const tabIndex = (0, _renderer.default)(element).attr("tabIndex"); return (isNaN(tabIndex) || tabIndex >= 0) && focusableFn(element, tabIndex) }; exports.tabbable = tabbable; const focused = $element => { const element = (0, _renderer.default)($element).get(0); return _dom_adapter.default.getActiveElement(element) === element }; exports.focused = focused; var _default = exports.default = { focusable: focusable, tabbable: tabbable, focused: focused };