focus-disabled.js 833 B

123456789101112131415161718192021222324252627282930
  1. import AbstractVirtualNode from '../../core/base/virtual-node/abstract-virtual-node';
  2. import { getNodeFromTree } from '../../core/utils';
  3. import isHiddenWithCSS from './is-hidden-with-css';
  4. /**
  5. * Determines if focusing has been disabled on an element.
  6. * @param {HTMLElement|VirtualNode} el The HTMLElement
  7. * @return {Boolean} Whether focusing has been disabled on an element.
  8. */
  9. function focusDisabled(el) {
  10. const vNode = el instanceof AbstractVirtualNode ? el : getNodeFromTree(el);
  11. if (vNode.hasAttr('disabled')) {
  12. return true;
  13. }
  14. if (vNode.props.nodeName !== 'area') {
  15. // if the virtual node does not have an actual node, treat it
  16. // as not hidden
  17. if (!vNode.actualNode) {
  18. return false;
  19. }
  20. return isHiddenWithCSS(vNode.actualNode);
  21. }
  22. return false;
  23. }
  24. export default focusDisabled;