mirror of https://github.com/docusealco/docuseal
				
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							39 lines
						
					
					
						
							918 B
						
					
					
				
			
		
		
	
	
							39 lines
						
					
					
						
							918 B
						
					
					
				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
 | 
						|
        }
 | 
						|
      }
 | 
						|
    })
 | 
						|
  }
 | 
						|
}
 |