export default class extends HTMLElement { static observedAttributes = ['class'] connectedCallback () { this.trigger() } attributeChangedCallback (attributeName, oldValue, newValue) { if (attributeName === 'class' && oldValue !== newValue) { this.trigger() } } trigger () { const hasHiddenClass = this.classList.contains('hidden') const elements = this.querySelectorAll('input, textarea, select') elements.forEach((element) => { if (hasHiddenClass) { element.disabled = true if (!element.dataset.wasRequired) { element.dataset.wasRequired = element.required } element.required = false } else { element.disabled = false if (element.dataset.wasRequired) { element.required = element.dataset.wasRequired === 'true' delete element.dataset.wasRequired } } }) } }