isDisabled.js 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. 'use strict';
  2. var isElementType = require('./isElementType.js');
  3. // This should probably just rely on the :disabled pseudo-class, but JSDOM doesn't implement it properly.
  4. function isDisabled(element) {
  5. for(let el = element; el; el = el.parentElement){
  6. if (isElementType.isElementType(el, [
  7. 'button',
  8. 'input',
  9. 'select',
  10. 'textarea',
  11. 'optgroup',
  12. 'option'
  13. ])) {
  14. if (el.hasAttribute('disabled')) {
  15. return true;
  16. }
  17. } else if (isElementType.isElementType(el, 'fieldset')) {
  18. var _el_querySelector;
  19. if (el.hasAttribute('disabled') && !((_el_querySelector = el.querySelector(':scope > legend')) === null || _el_querySelector === undefined ? undefined : _el_querySelector.contains(element))) {
  20. return true;
  21. }
  22. } else if (el.tagName.includes('-')) {
  23. if (el.constructor.formAssociated && el.hasAttribute('disabled')) {
  24. return true;
  25. }
  26. }
  27. }
  28. return false;
  29. }
  30. exports.isDisabled = isDisabled;