PageSourceSearch

https://lumberliquidators.com/cdn/shop/t/9/assets/product-form.js?v=117197166312263173401730821568

js lumberliquidators.com collected 2026-09-26 00:45:30 UTC 9,299 bytes, 2 lines download raw bytes

1if(!customElements.get("product-form")){class ProductForm extends HTMLElement{constructor(){super(),this.hasChildNodes()&&this.init()}init(){this.form=this.querySelector(".js-product-form"),this.form&&(this.form.querySelector('[name="id"]').disabled=!1,this.cartDrawer=document.querySelector("cart-drawer"),this.submitBtn=this.querySelector('[name="add"]'),this.form.addEventListener("submit",this.handleSubmit.bind(this)),this.dataset.showQuantitySelector&&(this.quantitySelector=this.querySelector("quantity-input"),this.quantitySelector&&(this.quantityInput=this.quantitySelector.querySelector(".qty-input__input"),this.quantitySelector.addEventListener("change",debounce(this.handleChange.bind(this))),this.lineItemChangeListener=this.lineItemChangeListener||this.handleLineItemChange.bind(this),document.addEventListener("on:line-item:change",evt=>{this.lineItemChangeListener(evt)}))),this.setMaximumInputQuantity(),this.handleQuantityButtonState(),document.addEventListener("on:variant:change",this.setMaximumInputQuantity.bind(this)))}disconnectedCallback(){document.removeEventListener("on:line-item:change",this.lineItemChangeListener)}setMaximumInputQuantity(){const productInfo=this.closest(".product-info")||this.closest("quick-add-drawer");if(productInfo){const quantitySelector=this.querySelector("quantity-input");if(quantitySelector){const quantityInput=quantitySelector.querySelector(".qty-input__input"),dataEl=productInfo.querySelector(".js-inventory-data");if(dataEl){const variantId=Number(this.form.querySelector('[name="id"]').value),inventory=JSON.parse(dataEl.textContent).find(item=>item.id===variantId);if(inventory.inventory_management.length!==0&&inventory.inventory_quantity>0&&inventory.inventory_policy!=="continue"){quantityInput.max=inventory.inventory_quantity;const currentQuantity=Number(quantityInput.value);currentQuantity>1&&currentQuantity>inventory.inventory_quantity&&(quantityInput.value=quantityInput.max)}}const minusButton=quantitySelector.querySelector(".btn--minus"),plusButton=quantitySelector.querySelector(".btn--plus");ProductForm.setQuantityButtonState(null,quantityInput,minusButton,plusButton)}}}handleQuantityButtonState(){if(this.closest(".product-info")||this.closest("quick-add-drawer")){const quantitySelector=this.querySelector("quantity-input");if(quantitySelector){const quantityInput=quantitySelector.querySelector(".qty-input__input"),minusButton=quantitySelector.querySelector(".btn--minus"),plusButton=quantitySelector.querySelector(".btn--plus");plusButton.addEventListener("click",()=>{ProductForm.setQuantityButtonState("up",quantityInput,minusButton,plusButton)}),minusButton.addEventListener("click",()=>{ProductForm.setQuantityButtonState("down",quantityInput,minusButton,plusButton)}),ProductForm.setQuantityButtonState(null,quantityInput,minusButton,plusButton)}}}static setQuantityButtonState(direction,quantityInput,minusButton,plusButton){const currentQuantity=Number(quantityInput.value),max=Number(quantityInput.max),min=Number(quantityInput.min);let newQuantity=currentQuantity;direction==="up"?newQuantity=currentQuantity+1:direction==="down"&&(newQuantity=currentQuantity-1),minusButton.disabled=newQuantity<=min,plusButton.disabled=max>0&&newQuantity>=max}handleLineItemChange(evt){evt.detail.variantId.toString()===this.dataset.variantId&&debounce(this.updateQuantityState(evt.detail.newQuantity))}handleChange(evt){this.updateQuantity(evt.target.value)}async handleSubmit(evt){if(evt.target.id==="product-signup_form"||(evt.preventDefault(),this.submitBtn.getAttribute("aria-disabled")==="true"))return;theme.settings.vibrateOnATC&&window.navigator.vibrate&&window.navigator.vibrate(100),this.errorMsg=null,this.setErrorMsgState(),this.submitBtn.setAttribute("aria-disabled","true"),this.submitBtn.classList.add("is-loading");const formData=new FormData(this.form);let sections="cart-icon-bubble";this.cartDrawer&&(sections+=`,${this.cartDrawer.closest(".shopify-section").id.replace("shopify-section-","")}`);const quickOrderSections=[];document.querySelectorAll("quick-order-list").forEach(quickOrderList=>{const closestSection=quickOrderList.closest(".shopify-section");if(closestSection){const sectionId=closestSection.id.replace("shopify-section-","");sections+=`,${sectionId}`}}),formData.append("sections_url",window.location.pathname),formData.append("sections",sections);const fetchRequestOpts={method:"POST",headers:{Accept:"application/javascript","X-Requested-With":"XMLHttpRequest"},body:formData};try{const oldCartResponse=await fetch(`${theme.routes.cart}.js`);if(!oldCartResponse.ok)throw new Error(oldCartResponse.status);const oldCartData=await oldCartResponse.json(),response=await fetch(theme.routes.cartAdd,fetchRequestOpts),data=await response.json();
1let error=typeof data.description=="string"?data.description:data.message;if(data.errors&&typeof data.errors=="object"&&(error=Object.entries(data.errors).map(item=>item[1].join(", "))),data.status&&this.setErrorMsgState(error),!response.ok)throw new Error(response.status);if(theme.settings.afterAtc==="page")setTimeout(()=>{window.location.href=theme.routes.cart},300);else{ProductForm.updateCartIcon(data);const quickAddDrawer=this.closest("quick-add-drawer");quickAddDrawer&&quickAddDrawer.addedToCart(),setTimeout(()=>{if(this.cartDrawer)this.cartDrawer.renderContents(data,!quickAddDrawer&&(theme.settings.afterAtc==="drawer_desktop"&&theme.mediaMatches.md||theme.settings.afterAtc==="drawer")),quickOrderSections.length&&quickOrderSections.forEach(quickOrderSection=>{const sectionEl=document.getElementById(quickOrderSection.id);if(!sectionEl)return;const el=sectionEl.querySelector(quickOrderSection.selector)||sectionEl;el.innerHTML=ProductForm.getElementHTML(data.sections[quickOrderSection.section],quickOrderSection.selector)});else if(window.location.pathname===theme.routes.cart){const cartItems=document.querySelector("cart-items");cartItems&&(cartItems.dataset.empty==="true"?window.location.reload():cartItems.refreshCartItems())}},700)}const newCartResponse=await fetch(`${theme.routes.cart}.js`);if(!newCartResponse.ok)throw new Error(newCartResponse.status);const newCartData=await newCartResponse.json(),itemInOldCart=oldCartData.items.filter(item=>item.variant_id===data.variant_id)[0];let newQuantity=1;itemInOldCart?(newQuantity=itemInOldCart.quantity===data.quantity?itemInOldCart.quantity:data.quantity,this.dispatchEvent(new CustomEvent("on:line-item:change",{bubbles:!0,detail:{cart:newCartData,variantId:data.variant_id,oldQuantity:itemInOldCart.quantity,newQuantity}}))):(this.dispatchEvent(new CustomEvent("on:cart:add",{bubbles:!0,detail:{cart:newCartData,variantId:data.variant_id}})),this.quantitySelector&&(this.setAttribute("data-show-quantity-selector","true"),this.quantityInput.value=newQuantity,this.quantitySelector.currentQty=this.quantityInput.dataset.initialValue))}catch(error){console.log(error),this.dispatchEvent(new CustomEvent("on:cart:error",{bubbles:!0,detail:{error:this.errorMsg.textContent}})),this.cartDrawer&&this.cartDrawer.refreshCartDrawer()}finally{this.submitBtn.classList.add("is-success"),this.submitBtn.removeAttribute("aria-disabled"),setTimeout(()=>{this.submitBtn.classList.remove("is-loading"),this.submitBtn.classList.remove("is-success")},1400)}}static updateCartIcon(response){const cartIconBubble=document.getElementById("cart-icon-bubble");cartIconBubble&&(cartIconBubble.innerHTML=response.sections["cart-icon-bubble"])}updateQuantityState(newQuantity){this.quantityInput.value=newQuantity,this.quantitySelector.currentQty=newQuantity,this.setAttribute("data-show-quantity-selector",newQuantity>0?"true":"false")}async updateQuantity(quantity){this.quantitySelector.setAttribute("aria-disabled","true");const lineErrors=this.querySelector(".js-product-form-errors"),fetchRequestOpts={method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"}};fetchRequestOpts.body=JSON.stringify({id:this.dataset.variantId,quantity});try{const response=await fetch(theme.routes.cartChange,fetchRequestOpts),data=await response.json();if(!response.ok)throw new Error(data.errors||response.status);lineErrors.innerHTML="",lineErrors.hidden=!0}catch(error){/^[0-9]+$/.test(error.message)?lineErrors.textContent=theme.strings.cartError:lineErrors.textContent=error.message,lineErrors.hidden=!1,console.log(error);const oldQuantity=parseInt(this.quantityInput.dataset.initialValue,10);this.updateQuantityState(oldQuantity)}finally{this.updateQuantityState(parseInt(quantity,10)),this.quantitySelector.removeAttribute("aria-disabled"),this.cartDrawer&&this.cartDrawer.refreshCartDrawer()}}static getElementHTML(html,selector){const tmpl=document.createElement("template");tmpl.innerHTML=html;const el=tmpl.content.querySelector(selector);return el?el.innerHTML:""}setErrorMsgState(error=!1){this.errorMsg=this.errorMsg||this.querySelector(".js-form-error"),this.errorMsg&&(this.errorMsg.hidden=!error,error&&(this.errorMsg.innerHTML="",(Array.isArray(error)?error:[error]).forEac
1h((err,index)=>{index>0&&this.errorMsg.insertAdjacentHTML("beforeend","<br>"),this.errorMsg.insertAdjacentText("beforeend",err)})))}}customElements.define("product-form",ProductForm)}
2//# sourceMappingURL=/cdn/shop/t/9/assets/product-form.js.map?v=117197166312263173401730821568

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.