1(self.webpackChunkapp_project=self.webpackChunkapp_project||[]).push([[2795],{53166:(e,t,i)=>{"use strict";i.r(t),i.d(t,{default:()=>s});class s{constructor(e){this.formElement=e;try{if(this.inputElement=e.querySelector("input")||e.querySelector("textarea")||e.querySelector("select"),!this.inputElement)throw new Error("No input element or textarea element on this FormElement component")}catch(e){console.error(e)}this.labelElement=e.querySelector("label"),this.errorElement=e.querySelector(".form-element__error"),this.baseError=this.errorElement?this.errorElement.textContent:"",this.formElement.addEventListener("animationend",(e=>{"shake"===e.animationName&&this.setInvalidMessage(this.inputElement)})),this.inputElement.value&&-1===this.inputElement.name.indexOf("_postalCode")&&(this.inputElement.checkValidity()?this.setValidMessage():this.setInvalidMessage(this.inputElement)),document.addEventListener("formelementvalidate",(()=>{this.inputElement.value&&(this.inputElement.checkValidity()?this.setValidMessage():this.setInvalidMessage(this.inputElement))})),this.inputElement.addEventListener("blur",(e=>{const t=e.currentTarget;if(t.required&&!t.value.trim()){if(t.classList.contains("invalid"))return;return this.formElement.classList.remove("valid","invalid"),t.classList.remove("valid","invalid"),void(this.errorElement&&(this.errorElement.textContent=""))}t.checkValidity()?this.setValidMessage():this.setInvalidMessage(t)})),this.inputElement.addEventListener("input",(e=>{const t=e.currentTarget;t.classList.contains("invalid")&&(this.formElement.classList.remove("invalid"),t.classList.remove("invalid"),this.errorElement&&(this.errorElement.textContent=""))})),this.inputElement.addEventListener("change",this.inputElementOnChange.bind(this)),this.inputElement.addEventListener("invalid",(e=>{e.preventDefault(),this.formElement.classList.add("invalid")})),this.inputElement.addEventListener("valid",(e=>{e.preventDefault(),this.formElement.classList.remove("invalid")})),this.inputElement.addEventListener("unchecked",(e=>{e.preventDefault(),this.validity&&this.inputElement.remove(this.validity.valid?"invalid":"valid")})),this.initShowPassword()}inputElementOnChange(e){e.currentTarget.checkValidity()?this.setValidMessage():this.setInvalidMessage(e.currentTarget)}setInvalidMessage(e){this.formElement.classList.remove("valid"),this.formElement.classList.add("invalid"),this.inputElement.classList.remove("valid"),this.inputElement.classList.add("invalid");const t=window.formValidationMessages?window.formValidationMessages[e.id]:null;if(this.errorElement)if(t){if(e.validity.customError&&t[e.validationMessage])this.errorElement.textContent=t[e.validationMessage];else for(let i in e.validity)if("valid"!==i&&e.validity[i]&&t[i]){this.errorElement.textContent=t[i];break}}else this.errorElement.textContent=this.baseError}setValidMessage(){this.formElement.classList.remove("invalid"),this.formElement.classList.add("valid"),this.inputElement.classList.remove("invalid"),this.inputElement.classList.add("valid")}async initShowPassword(){const e=this.formElement.querySelector(".js-show-password");e&&e.addEventListener("click",(t=>{t.preventDefault();const i="password"===this.inputElement.getAttribute("type")?"text":"password";this.inputElement.setAttribute("type",i),e.classList.toggle("visible","password"!==i)}))}}}}]);
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.