1const{debounce,getElement}=window.BAO.Utils;class FormValidation extends window.BAO.CustomElement(){connectedCallback(){super.connectedCallback(),this.formDisabled=!1,this.form=getElement("form",{context:this}),this.hasRecaptcha=this.form?.getAttribute("data-has-recaptcha")==="true",this.recaptchaSiteKey=this.form?.getAttribute("data-recaptcha-site-key"),this.initRecaptcha(),this.restoreInputValues(),this.checkRequiredState()}setupListeners(){super.setupListeners(),this.validateAndPreserveInput=this.validateAndPreserveInput.bind(this);const requiredElements=this.els?.required,submitElement=this.els?.submit;if(requiredElements?.exists&&submitElement?.exists)for(const requiredEl of requiredElements.elements)this.listeners.add(requiredEl,"input",debounce(this.validateAndPreserveInput,750));this.handleMaidenNameInput=this.handleMaidenNameInput.bind(this);const maidenNameInput=this.els?.maidenNameInput;if(maidenNameInput?.exists)for(const input of maidenNameInput.elements)input.addEventListener("input",this.handleMaidenNameInput)}initRecaptcha(){!this.hasRecaptcha||!this.form||this.form.addEventListener("submit",async e=>{e.preventDefault();try{if(!window.grecaptcha)throw new Error("grecaptcha is not defined");const token=await window.grecaptcha.execute(this.recaptchaSiteKey),recaptchaInput=document.createElement("input");recaptchaInput.type="hidden",recaptchaInput.name="g-recaptcha-response",recaptchaInput.value=token,this.form.appendChild(recaptchaInput),HTMLFormElement.prototype.submit.call(this.form)}catch(error){console.error("reCAPTCHA validation failed:",error)}})}handleMaidenNameInput(e){const inputValue=e.target?.value;inputValue&&inputValue.length>0&&this.disableForm()}disableForm(){this.formDisabled=!0,this?.els?.submit?.exists&&(this.els.submit.element.ariaDisabled=!0,this.els.submit.element.disabled=!0);const form=getElement("form",{context:this});form&&(form.setAttribute("disabled","disabled"),form.addEventListener("submit",e=>{e.preventDefault()}))}validateAndPreserveInput(input){this.formDisabled||(this.validateInput(input),this.preserveInputValues(input.target),this.checkRequiredState())}validateInput(input){if(!input.target.form.noValidate)return;const{target:inputField}=input;inputField.type==="email"&&(inputField.validity.valid?(inputField.removeAttribute("aria-invalid"),inputField.removeAttribute("aria-errormessage")):(inputField.setAttribute("aria-invalid",!0),inputField.setAttribute("aria-errormessage",window.theme.strings.invalidEmail)),inputField.reportValidity())}checkRequiredState(){let allAreFilled=!0;this?.els?.required?.exists&&this.els.required.elements.every(requiredEl=>requiredEl.type==="text"&&requiredEl.value.length===0||requiredEl.type==="email"&&(requiredEl.value.length===0||!requiredEl.validity.valid)||requiredEl.type==="password"&&requiredEl.value.length===0||requiredEl.type==="checkbox"&&requiredEl.checked!==!0?(allAreFilled=!1,!1):!0),this?.els?.submit?.exists&&(this.els.submit.element.ariaDisabled=!allAreFilled,this.els.submit.element.disabled=!allAreFilled)}preserveInputValues(element){(element.type==="text"||element.type==="email")&&window.sessionStorage.setItem(`BAO-${element.name}`,element.value)}restoreInputValues(){this?.els?.required?.exists&&this.els.required.elements.forEach(requiredEl=>{if(requiredEl.validity.valid){window.sessionStorage.removeItem(`BAO-${requiredEl.name}`);return}if(requiredEl.type==="text"||requiredEl.type==="email"){const value=window.sessionStorage.getItem(`BAO-${requiredEl.name}`);value&&(requiredEl.value=value)}})}}customElements.define("form-validation",FormValidation); 2//# sourceMappingURL=/cdn/shop/t/1379/assets/form-validation.js.map?v=151724030122661173951789975539
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.