1customElements.get("product-form")||customElements.define("product-form",class extends HTMLElement{constructor(){super(),this.form=this.querySelector("form");const idInput=this.form.querySelector("[name=id]"),cardQuickadd=this.closest("[js-card-quickadd]");idInput&&(cardQuickadd&&!idInput.value?idInput.disabled=!0:idInput.disabled=!1),this.form.addEventListener("submit",this.onSubmitHandler.bind(this)),this.cart=document.querySelector("cart-notification")||document.querySelector("cart-drawer"),this.submitButton=this.querySelector('[type="submit"]'),document.querySelector("cart-drawer")&&this.submitButton&&this.submitButton.setAttribute("aria-haspopup","dialog")}_setSubmitLoading(isLoading){this.submitButton&&(isLoading?(this.submitButton.setAttribute("aria-disabled",!0),this.submitButton.classList.add("loading")):(this.submitButton.classList.remove("loading"),this.error||this.submitButton.removeAttribute("aria-disabled"))),this.querySelector(".loading-overlay__spinner")?.classList.toggle("hidden",!isLoading)}onSubmitHandler(evt){evt.preventDefault();const hasSizeInForm=this.form.querySelector('input[name="Size"]'),hasAmountInForm=this.form.querySelector('input[name="Amount"]');if(hasSizeInForm||hasAmountInForm){const checked_size=hasSizeInForm?this.form.querySelector('input[name="Size"]:checked'):null,checked_amount=hasAmountInForm?this.form.querySelector('input[name="Amount"]:checked'):null;if(!checked_size&&!checked_amount){hasSizeInForm?this.handleErrorMessage("Please select a size."):hasAmountInForm&&this.handleErrorMessage("Please select an amount.");const variantContainer=document.querySelector(".product-form__input--variants");variantContainer&&variantContainer.classList.add("is-error");return}}const idField=this.form.querySelector("[name=id]"),quickaddRoot=this.closest("[js-card-quickadd]");if(quickaddRoot&&idField&&!idField.value){quickaddRoot.dataset.quickaddSubmitting="false";return}if(quickaddRoot?.dataset.quickaddSubmitting==="true")return;if(quickaddRoot&&(quickaddRoot.dataset.quickaddSubmitting="true"),this.submitButton?.getAttribute("aria-disabled")==="true"){quickaddRoot&&(quickaddRoot.dataset.quickaddSubmitting="false");return}this.handleErrorMessage(),this._setSubmitLoading(!0);const config=fetchConfig("javascript");config.headers["X-Requested-With"]="XMLHttpRequest",delete config.headers["Content-Type"];const formData=new FormData(this.form);this.cart&&(formData.append("sections",this.cart.getSectionsToRender().map(section=>section.id)),formData.append("sections_url",window.location.pathname),this.cart.setActiveElement(document.activeElement)),config.body=formData,fetch(`${routes.cart_add_url}`,config).then(response=>response.json()).then(response=>{if(response.status){this.handleErrorMessage(response.description);const soldOutMessage=this.submitButton?.querySelector(".sold-out-message");if(!soldOutMessage){this.error=!0;return}this.submitButton.setAttribute("aria-disabled",!0),this.submitButton.querySelector("span")?.classList.add("hidden"),soldOutMessage.classList.remove("hidden"),this.error=!0;return}else if(!this.cart){console.log("down here");return}this.error=!1;const quickAddModal=this.closest("quick-add-modal");quickAddModal?(document.body.addEventListener("modalClosed",()=>{setTimeout(()=>{this.cart.renderContents(response)})},{once:!0}),quickAddModal.hide(!0)):this.cart.renderContents(response),this.dispatchEvent(new CustomEvent("product-form:cart-success",{bubbles:!0}))}).catch(e=>{console.error(e)}).finally(()=>{this._setSubmitLoading(!1),this.cart&&this.cart.classList.contains("is-empty")&&this.cart.classList.remove("is-empty");const quickaddRoot2=this.closest("[js-card-quickadd]");quickaddRoot2&&(quickaddRoot2.dataset.quickaddSubmitting="false")})}handleErrorMessage(errorMessage=!1){this.errorMessageWrapper=this.errorMessageWrapper||this.querySelector(".product-form__error-message-wrapper"),this.errorMessageWrapper&&(this.errorMessage=this.errorMessage||this.errorMessageWrapper.querySelector(".product-form__error-message"),this.errorMessageWrapper.toggleAttribute("hidden",!errorMessage),document.querySelector(".product-form__input--variants")?.classList.remove("is-error"),errorMessage&&(this.errorMessage.textContent=errorMessage))}}); 2//# sourceMappingURL=/cdn/shop/t/223/assets/product-form.js.map?v=64875929296211521051780346597
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.