PageSourceSearch

https://shop.angel.com/cdn/shop/t/143/assets/product-form.js?v=141589483436845884731769709132

js angel.com collected 2026-09-24 08:43:39 UTC 4,216 bytes, 2 lines download raw bytes

1customElements.get("product-form")||customElements.define("product-form",class extends HTMLElement{constructor(){if(super(),this.form=this.querySelector("form"),!this.form)return;const variantInput=this.form.querySelector("[name=id]");variantInput&&(variantInput.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&&this.submitButton.setAttribute("aria-haspopup","dialog"),this.hideErrors=this.dataset.hideErrors==="true"}connectedCallback(){this.addEventListener("variant:change",this.onVariantChange.bind(this))}onVariantChange(event){const variant=event.detail.variant,priceSpan=this.querySelector(".product-price");priceSpan&&window.Shopify&&Shopify.formatMoney?priceSpan.innerHTML=Shopify.formatMoney(variant.price,Shopify.money_format):priceSpan&&(priceSpan.innerHTML=(variant.price/100).toFixed(2));const variantIdInput=this.form?.querySelector("[name=id]");variantIdInput&&(variantIdInput.value=variant.id,variantIdInput.disabled=!variant.available);const sellingPlanInput=this.form?.querySelector("[name=selling_plan]");if(sellingPlanInput){const sellingPlanAllocations=variant.selling_plan_allocations||[];sellingPlanAllocations.length>0?(sellingPlanInput.value=sellingPlanAllocations[0].selling_plan_id,sellingPlanInput.disabled=!1):(sellingPlanInput.value="",sellingPlanInput.disabled=!0)}this.submitButton&&(this.submitButton.disabled=!variant.available)}async onSubmitHandler(evt){if(evt.preventDefault(),this.submitButton=this.querySelector('[type="submit"]'),!this.submitButton){console.error("[ProductForm] No submit button found");return}if(this.submitButton.getAttribute("aria-disabled")==="true")return;const variantId=this.form.querySelector("[name=id]")?.value;if(!variantId){console.error("[ProductForm] No variant ID found");return}const quantity=this.form.querySelector("[name=quantity]")?.value||1;this.submitButton.setAttribute("aria-disabled","true"),this.submitButton.classList.add("loading");const spinner=this.querySelector(".loading__spinner");spinner&&spinner.classList.remove("hidden");try{const data=await(await fetch("/cart/add.js",{method:"POST",headers:{"Content-Type":"application/json","X-Requested-With":"XMLHttpRequest"},body:JSON.stringify({id:variantId,quantity:parseInt(quantity)})})).json();if(data.status===422||data.status==="error")console.error("[ProductForm] Add to cart error:",data.description||data.message),this.handleErrorMessage(data.description||data.message);else{document.dispatchEvent(new CustomEvent("cart:updated",{detail:data}));const cartDrawer=document.querySelector("cart-drawer");cartDrawer&&typeof cartDrawer.open=="function"&&cartDrawer.open()}}catch(error){console.error("[ProductForm] Network error:",error)}finally{this.submitButton.classList.remove("loading"),this.submitButton.removeAttribute("aria-disabled"),this.submitButton.removeAttribute("disabled"),this.submitButton.disabled=!1;const spinner2=this.querySelector(".loading__spinner");spinner2&&spinner2.classList.add("hidden")}}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&&(this.errorMessage.textContent=errorMessage)))}toggleSubmitButton(disable=!0,text){this.submitButton&&(disable?(this.submitButton.setAttribute("disabled","disabled"),text&&this.submitButtonText&&(this.submitButtonText.textContent=text)):(this.submitButton.removeAttribute("disabled"),this.submitButtonText&&(this.submitButtonText.textContent=window.variantStrings?.addToCart||"Add to cart")))}get variantIdInput(){return this.form?.querySelector("[name=id]")}});
2//# sourceMappingURL=/cdn/shop/t/143/assets/product-form.js.map?v=141589483436845884731769709132

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.