isDisabled.js 1.1 KB

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