PageSourceSearch

https://us.koala.com/cdn/shop/t/128/assets/product-form.js?v=99502475660779482231743995470

js koala.com collected 2026-10-02 18:15:36 UTC 5,863 bytes, 2 lines download raw bytes

1customElements.get("product-form")||customElements.define("product-form",class extends HTMLElement{constructor(){super(),this.form=this.querySelector("form"),this.variantIdInput&&(this.variantIdInput.disabled=!1),this.form.addEventListener("submit",this.onSubmitHandler.bind(this)),this.cart=document.querySelector("cart-notification")||document.querySelector("cart-drawer"),this.submitButton=this.querySelector(".product-form__submit")||this.querySelector('[type="submit"]'),this.submitButtonText=this.submitButton.querySelector("span"),document.querySelector("cart-drawer")&&this.submitButton.setAttribute("aria-haspopup","dialog"),this.hideErrors=this.dataset.hideErrors==="true"}onSubmitHandler(evt,retries=0){if(evt.preventDefault(),window.cartRequestInProgress=!0,this.submitButton.getAttribute("aria-disabled")==="true"&&retries===0)return;this.handleErrorMessage(),this.submitButton.setAttribute("aria-disabled",!0),this.submitButton.classList.add("loading"),this.querySelector(".loading__spinner").classList.remove("hidden");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;const handleFinally=()=>{this.submitButton.classList.remove("loading"),this.cart&&this.cart.classList.contains("is-empty")&&this.cart.classList.remove("is-empty"),this.error||this.submitButton.removeAttribute("aria-disabled"),this.querySelector(".loading__spinner").classList.add("hidden")};if(this.dataset.isGift==="true"&&this.querySelector('[name="properties[Recipient name]"][required]')?.value===""){const response={status:422,description:{name:["Name can't be blank"]},errors:{name:["Name can't be blank"]},message:"Validation failed: Name can't be blank"};response.message="Validation failed: Name can't be blank",this.querySelector('[name="properties[Recipient email]"]')?.value===""&&(response.description.email=["Email can't be blank"],response.errors.email=["Email can't be blank"],response.message="Validation failed: Name can't be blank and Email can't be blank"),publish(PUB_SUB_EVENTS.cartError,{source:"product-form",productVariantId:formData.get("id"),errors:response.errors||response.description,message:response.message}),this.handleErrorMessage(response.description),handleFinally();return}fetch(`${routes.cart_add_url}`,config).then(response=>response.json()).then(response=>{if(response.status){publish(PUB_SUB_EVENTS.cartError,{source:"product-form",productVariantId:formData.get("id"),errors:response.errors||response.description,message:response.message}),this.handleErrorMessage(response.description);const soldOutMessage=this.submitButton.querySelector(".sold-out-message");if(!soldOutMessage)return;this.submitButton.setAttribute("aria-disabled",!0),this.submitButtonText.classList.add("hidden"),soldOutMessage.classList.remove("hidden"),this.error=!0;return}else if(!this.cart){window.location=window.routes.cart_url;return}this.error||publish(PUB_SUB_EVENTS.cartUpdate,{source:"product-form",productVariantId:formData.get("id"),cartData:response,originalEvent:evt,retries,originator:this}),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)}).catch(e=>{console.error(e)}).finally(handleFinally)}handleErrorMessage(errorMessage=!1){this.hideErrors||(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),errorMessage&&(this.errorMessage.textContent=errorMessage)))}toggleSubmitButton(disable=!0,text){disable?(this.submitButton.setAttribute("disabled","disabled"),text&&(this.submitButtonText.textContent=text)):(this.submitButton.removeAttribute("disabled"),text?this.submitButtonText.textContent=text:this.submitButtonText.textContent=window.variantStrings.addToCart)}get variantIdInput(){return this.form.querySelector("[name=id]")}
1handleNotificationButton(newButton){if(!newButton)return;const hasKlaviyoFormId=newButton.hasAttribute("data-klaviyo-form-id")&&newButton.getAttribute("data-klaviyo-form-id")!=="",isKlaviyoFormTrigger=newButton.getAttribute("is")==="klaviyo-form-trigger",hasKlaviyoFormTrigger=this.submitButton.dataset.hasKlaviyoFormTrigger==="true";hasKlaviyoFormId&&isKlaviyoFormTrigger?(this.submitButton.setAttribute("type","button"),this.submitButton.setAttribute("data-klaviyo-form-id",newButton.getAttribute("data-klaviyo-form-id")),this.submitButton.setAttribute("is","klaviyo-form-trigger"),hasKlaviyoFormTrigger||(this.submitButton.onClick=window.KlaviyoFormTrigger.prototype.onClick,this.submitButton.boundOnClick=this.submitButton.onClick.bind(this.submitButton),this.submitButton.addEventListener("click",this.submitButton.boundOnClick))):(this.submitButton?.disconnectedCallback&&this.submitButton.disconnectedCallback(),this.submitButton.removeAttribute("data-klaviyo-form-id"),this.submitButton.removeAttribute("is"),this.submitButton.getAttribute("type")==="button"&&this.submitButton.setAttribute("type","submit"),this.submitButton.removeEventListener("click",this.submitButton.boundOnClick),this.submitButton.onClick=null,this.submitButton.boundOnClick=null),this.submitButton.innerHTML=newButton.innerHTML}});
2//# sourceMappingURL=/cdn/shop/t/128/assets/product-form.js.map?v=99502475660779482231743995470

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.