PageSourceSearch

https://www.chemicalguys.com/cdn/shop/t/5/assets/product-form.js?v=71692318886237009901762231523

js chemicalguys.com collected 2026-09-24 09:18:31 UTC 8,870 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.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"]'),this.submitButtonText=this.submitButton.querySelector("span"),document.querySelector("cart-drawer")&&this.submitButton.setAttribute("aria-haspopup","dialog"),this.hideErrors=this.dataset.hideErrors==="true",this.submitButton.hasAttribute("data-out-of-stock")||this.submitButton.removeAttribute("disabled"),this.quickAddSelect=this.form.querySelector("select.quick-add-select"),this.quickAddSelect&&this.quickAddSelect.addEventListener("change",this.onQuickAddSelectHandler.bind(this))}onQuickAddSelectHandler(){try{const quickAddWrapper=this.form.closest(".card-wrapper");if(quickAddWrapper&&this.quickAddSelect&&this.quickAddSelect.value!==this.variantIdInput.value){const priceHtml=quickAddWrapper.querySelector(".price"),option=this.quickAddSelect.querySelector(`option[value="${this.quickAddSelect.value}"]`);option&&priceHtml&&(priceHtml.dataset.sku=option.dataset.sku,priceHtml.dataset.price=option.dataset.price||0,priceHtml.dataset.saleprice=option.dataset.saleprice,priceHtml.dataset.compareprice=option.dataset.compareprice||option.dataset.price||0,priceHtml.dataset.available=option.dataset.available,priceHtml.dataset.collections=option.dataset.collections,priceHtml.dataset.hideprice=option.dataset.hideprice||"N",quickAddWrapper.dispatchEvent(new CustomEvent("cg-ninja-dynamic-content:updated",{bubbles:!0})));const cardImageHtml=quickAddWrapper.querySelector("img.selected-image");cardImageHtml&&option.dataset.image&&cardImageHtml.getAttribute("src")!==option.dataset.image&&cardImageHtml.setAttribute("src",option.dataset.image),this.variantIdInput.value=this.quickAddSelect.value}}catch(e){console.error(e)}}onSubmitHandler(evt){if(evt.preventDefault(),this.submitButton.getAttribute("aria-disabled")==="true")return;this.handleErrorMessage(),this.submitButton.setAttribute("aria-disabled",!0),this.submitButton.classList.add("loading"),this.submitButton.querySelector(".loading__spinner").classList.remove("hidden"),this.submitButton.querySelector(".button-text")?.classList.add("hidden");const quickAddIcon=document.querySelector(`#${this.form.getAttribute("id")}-submit-icon.quick-add-icon`);quickAddIcon&&(quickAddIcon.classList.add("loading"),quickAddIcon.querySelector(".loading__spinner").classList.remove("hidden"),quickAddIcon.querySelector(".quick-add-text__icon")?.classList.add("hidden"));const buyButtonSticky=document.querySelector(`button.product-form__submit[data-form-id="${this.form.getAttribute("id")}"`);buyButtonSticky&&(buyButtonSticky.classList.add("loading"),buyButtonSticky.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?.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){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=!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),publish(PUB_SUB_EVENTS.cartUpdate,{source:"product-form",productVariantId:formData.get("id"),cartData:response})}).catch(e=>{console.error(e)}).finally(()=>{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.submitButton.querySelector(".loading__spinner").classList.add("hidden"),this.submitButton.querySelector(".button-text")?.classList.remove("hidden"),quickAddIcon&&(quickAddIcon.classList.remove("loading"),quickAddIcon.querySelector(".loading__spinner").classList.add("hidden"),quickAddIcon.querySelector(".quick-add-text__icon")?.classList.remove("hidden")),buyButtonSticky&&(buyButtonSticky.classList.remove("loading"),buy
1ButtonSticky.querySelector(".loading__spinner").classList.add("hidden")),(this.querySelectorAll(".reset__text")||[])?.forEach(element=>element.textContent="")})}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"),this.submitButtonText.textContent=window.variantStrings.addToCart)}get variantIdInput(){return this.form.querySelector("[name=id]")}}),customElements.get("back-in-stock-form")||customElements.define("back-in-stock-form",class extends HTMLElement{constructor(){super(),this.form=this.querySelector("form"),this.form.addEventListener("submit",this.onSubmitHandler.bind(this)),this.submitButton=this.querySelector('[type="submit"]'),this.emailInput=this.querySelector('[type="email"]'),this.variantID=this.querySelector('[name="variant_id"]'),this.successMessage=this.querySelector(".back-in-stock-success"),this.errorMessage=this.querySelector(".back-in-stock-error"),this.variantChangeUnsubscriber=void 0}connectedCallback(){this.variantChangeUnsubscriber=subscribe(PUB_SUB_EVENTS.variantChange,event=>{const variant=event?.data?.variant||null;variant&&(this.variantID.value=variant.id,variant.available?this.classList.add("hidden"):this.classList.remove("hidden"))})}disconnectedCallback(){this.variantChangeUnsubscriber&&this.variantChangeUnsubscriber()}onSubmitHandler(evt){evt.preventDefault();try{if(this.errorMessage.classList.add("hidden"),this.submitButton.classList.remove("loading"),this.emailInput.classList.remove("input-error"),this.querySelector(".loading__spinner").classList.add("hidden"),this.submitButton.getAttribute("aria-disabled")==="true")return!1;const formData=new FormData(this.form),company_id=formData.get("company_id"),url=this.form.getAttribute("action")+"?company_id="+company_id,email=formData.get("email"),variant_id=formData.get("variant_id"),customer_id=formData.get("customer_id");email||this.emailInput.classList.add("input-error"),this.submitButton.setAttribute("aria-disabled",!0),this.submitButton.classList.add("loading"),this.querySelector(".loading__spinner").classList.remove("hidden");const options={method:"POST",headers:{accept:"application/vnd.api+json",revision:"2025-01-15","content-type":"application/vnd.api+json"}},attributes={email};customer_id&&(attributes.external_id=customer_id);const body={data:{type:"back-in-stock-subscription",attributes:{profile:{data:{type:"profile",attributes}},channels:["EMAIL"]},relationships:{variant:{data:{type:"catalog-variant",id:"$shopify:::$default:::"+variant_id}}}}};options.body=JSON.stringify(body),fetch(url,options).then(res=>{res.status==202?(this.error=!1,this.form.classList.add("hidden"),this.successMessage.classList.remove("hidden")):res?.errors?.length&&((res?.errors.map(err=>err.code)).includes("invalid")?this.emailInput.classList.add("input-error"):this.errorMessage.classList.remove("hidden"))}).catch(err=>{console.error("ERROR: ",err),this.error=!0,this.emailInput.classList.add("input-error")}).finally(()=>{this.submitButton.classList.remove("loading"),this.submitButton.removeAttribute("aria-disabled"),this.querySelector(".loading__spinner").classList.add("hidden")})}catch(e){console.log(e)}}});
2//# sourceMappingURL=/cdn/shop/t/5/assets/product-form.js.map?v=71692318886237009901762231523

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.