isFocusable.js 972 B

1234567891011121314151617181920212223
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports["default"] = void 0;
  7. var _jsxAstUtils = require("jsx-ast-utils");
  8. var _getTabIndex = _interopRequireDefault(require("./getTabIndex"));
  9. var _isInteractiveElement = _interopRequireDefault(require("./isInteractiveElement"));
  10. /**
  11. * Returns boolean indicating whether an element appears in tab focus.
  12. * Identifies an element as focusable if it is an interactive element, or an element with a tabIndex greater than or equal to 0.
  13. */
  14. function isFocusable(type, attributes) {
  15. var tabIndex = (0, _getTabIndex["default"])((0, _jsxAstUtils.getProp)(attributes, 'tabIndex'));
  16. if ((0, _isInteractiveElement["default"])(type, attributes)) {
  17. return tabIndex === undefined || tabIndex >= 0;
  18. }
  19. return tabIndex >= 0;
  20. }
  21. var _default = exports["default"] = isFocusable;
  22. module.exports = exports.default;