PageSourceSearch

https://betulasbotanica.com/cdn/shop/t/6/assets/quick-order-list.js?v=144388046002098609951732052542

js betulasbotanica.com collected 2026-09-24 13:56:50 UTC 12,646 bytes, 2 lines download raw bytes

1customElements.get("quick-order-list-remove-button")||customElements.define("quick-order-list-remove-button",class extends BulkAdd{constructor(){super(),this.addEventListener("click",event=>{event.preventDefault(),this.startQueue(this.dataset.index,0)})}}),customElements.get("quick-order-list-remove-all-button")||customElements.define("quick-order-list-remove-all-button",class extends HTMLElement{constructor(){super(),this.quickOrderList=this.closest("quick-order-list");const allVariants=this.quickOrderList.querySelectorAll("[data-quantity-variant-id]"),items={};let hasVariantsInCart=!1;allVariants.forEach(variant=>{parseInt(variant.dataset.cartQuantity)>0&&(hasVariantsInCart=!0,items[parseInt(variant.dataset.quantityVariantId)]=0)}),hasVariantsInCart||this.classList.add("hidden"),this.actions={confirm:"confirm",remove:"remove",cancel:"cancel"},this.addEventListener("click",event=>{event.preventDefault(),this.dataset.action===this.actions.confirm?this.toggleConfirmation(!1,!0):this.dataset.action===this.actions.remove?(this.quickOrderList.updateMultipleQty(items),this.toggleConfirmation(!0,!1)):this.dataset.action===this.actions.cancel&&this.toggleConfirmation(!0,!1)})}toggleConfirmation(showConfirmation,showInfo){this.quickOrderList.querySelector(".quick-order-list-total__confirmation").classList.toggle("hidden",showConfirmation),this.quickOrderList.querySelector(".quick-order-list-total__info").classList.toggle("hidden",showInfo)}}),customElements.get("quick-order-list")||customElements.define("quick-order-list",class extends BulkAdd{constructor(){super(),this.cart=document.querySelector("cart-drawer"),this.quickOrderListId=`${this.dataset.section}-${this.dataset.productId}`,this.defineInputsAndQuickOrderTable(),this.variantItemStatusElement=document.getElementById("shopping-cart-variant-item-status");const form=this.querySelector("form");this.inputFieldHeight=this.querySelector(".variant-item__quantity-wrapper").offsetHeight,this.isListInsideModal=document.querySelector(".quick-add-bulk"),this.stickyHeaderElement=document.querySelector("sticky-header"),this.getTableHead(),this.getTotalBar(),this.stickyHeaderElement&&(this.stickyHeader={height:this.stickyHeaderElement.offsetHeight,type:`${this.stickyHeaderElement.getAttribute("data-sticky-type")}`}),this.getTotalBar()&&(this.totalBarPosition=window.innerHeight-this.getTotalBar().offsetHeight,window.addEventListener("resize",()=>{this.totalBarPosition=window.innerHeight-this.getTotalBar().offsetHeight,this.stickyHeader.height=this.stickyHeaderElement?this.stickyHeaderElement.offsetHeight:0}));const pageParams=new URLSearchParams(window.location.search);window.pageNumber=decodeURIComponent(pageParams.get("page")||""),form.addEventListener("submit",this.onSubmit.bind(this)),this.addMultipleDebounce()}cartUpdateUnsubscriber=void 0;onSubmit(event){event.preventDefault()}connectedCallback(){this.cartUpdateUnsubscriber=subscribe(PUB_SUB_EVENTS.cartUpdate,event=>{const variantIds=[];this.querySelectorAll(".variant-item").forEach(item=>{variantIds.push(parseInt(item.dataset.variantId))}),!(event.source===this.quickOrderListId||!event.cartData.items?.some(element=>variantIds.includes(element.variant_id)))&&this.refresh().then(()=>{this.defineInputsAndQuickOrderTable(),this.addMultipleDebounce()})}),this.sectionId=this.dataset.section}disconnectedCallback(){this.cartUpdateUnsubscriber?.()}defineInputsAndQuickOrderTable(){this.allInputsArray=Array.from(this.querySelectorAll('input[type="number"]')),this.quickOrderListTable=this.querySelector(".quick-order-list__table"),this.quickOrderListTable.addEventListener("focusin",this.switchVariants.bind(this))}onChange(event){const inputValue=parseInt(event.target.value);this.cleanErrorMessageOnType(event),inputValue==0?this.startQueue(event.target.dataset.index,inputValue):this.validateQuantity(event)}cleanErrorMessageOnType(event){event.target.addEventListener("keydown",()=>{event.target.setCustomValidity(" "),event.target.reportValidity()})}validateInput(target){return target.max?parseInt(target.value)==0||parseInt(target.value)>=parseInt(target.dataset.min)&&parseInt(target.value)<=parseInt(target.max)&&parseInt(target.value)%parseInt(target.step)==0:parseInt(target.value)==0||parseInt(target.value)>=parseInt(target.dataset.min)&&parseInt(target.value)%parseInt(target.step)==0}refresh(){return new Promise((resolve,reject)=>
1{fetch(`${this.getSectionsUrl()}?section_id=${this.sectionId}`).then(response=>response.text()).then(responseText=>{const sourceQty=new DOMParser().parseFromString(responseText,"text/html").querySelector(`#${this.quickOrderListId}`);sourceQty&&(this.innerHTML=sourceQty.innerHTML),resolve()}).catch(e=>{console.error(e),reject(e)})})}getSectionsToRender(){return[{id:this.quickOrderListId,section:document.getElementById(this.quickOrderListId).dataset.section,selector:`#${this.quickOrderListId} .js-contents`},{id:"cart-icon-bubble",section:"cart-icon-bubble",selector:".shopify-section"},{id:`quick-order-list-live-region-text-${this.dataset.productId}`,section:"cart-live-region-text",selector:".shopify-section"},{id:`quick-order-list-total-${this.dataset.productId}-${this.dataset.section}`,section:document.getElementById(this.quickOrderListId).dataset.section,selector:`#${this.quickOrderListId} .quick-order-list__total`},{id:"CartDrawer",selector:"#CartDrawer",section:"cart-drawer"}]}addMultipleDebounce(){this.querySelectorAll("quantity-input").forEach(qty=>{const debouncedOnChange=debounce(event=>{this.onChange(event)},100);qty.addEventListener("change",debouncedOnChange.bind(this))})}renderSections(parsedState,ids){this.ids.push(ids),this.queue.filter(element=>ids.includes(element.id)).length===0&&(this.getSectionsToRender().forEach(section=>{const sectionElement=document.getElementById(section.id);sectionElement&&sectionElement.parentElement&&sectionElement.parentElement.classList.contains("drawer")&&(parsedState.items.length>0?sectionElement.parentElement.classList.remove("is-empty"):sectionElement.parentElement.classList.add("is-empty"),setTimeout(()=>{document.querySelector("#CartDrawer-Overlay").addEventListener("click",this.cart.close.bind(this.cart))}));const elementToReplace=sectionElement&&sectionElement.querySelector(section.selector)?sectionElement.querySelector(section.selector):sectionElement;elementToReplace&&(section.selector===`#${this.quickOrderListId} .js-contents`&&this.ids.length>0?this.ids.flat().forEach(i=>{elementToReplace.querySelector(`#Variant-${i}`).innerHTML=this.getSectionInnerHTML(parsedState.sections[section.section],`#Variant-${i}`)}):elementToReplace.innerHTML=this.getSectionInnerHTML(parsedState.sections[section.section],section.selector))}),this.defineInputsAndQuickOrderTable(),this.addMultipleDebounce(),this.ids=[])}getTableHead(){return document.querySelector(".quick-order-list__table thead")}getTotalBar(){return this.querySelector(".quick-order-list__total")}scrollQuickOrderListTable(){const inputTopBorder=this.variantListInput.getBoundingClientRect().top,inputBottomBorder=this.variantListInput.getBoundingClientRect().bottom;if(this.isListInsideModal){const totalBarCrossesInput=inputBottomBorder>this.getTotalBar().getBoundingClientRect().top,tableHeadCrossesInput=inputTopBorder<this.getTableHead().getBoundingClientRect().bottom;(totalBarCrossesInput||tableHeadCrossesInput)&&this.scrollToCenter()}else{const stickyHeaderBottomBorder=this.stickyHeaderElement&&this.stickyHeaderElement.getBoundingClientRect().bottom,totalBarCrossesInput=inputBottomBorder>this.totalBarPosition,inputOutsideOfViewPort=inputBottomBorder<this.inputFieldHeight,stickyHeaderCrossesInput=this.stickyHeaderElement&&this.stickyHeader.type!=="on-scroll-up"&&this.stickyHeader.height>inputTopBorder,stickyHeaderScrollupCrossesInput=this.stickyHeaderElement&&this.stickyHeader.type==="on-scroll-up"&&this.stickyHeader.height>inputTopBorder&&stickyHeaderBottomBorder>0;(totalBarCrossesInput||inputOutsideOfViewPort||stickyHeaderCrossesInput||stickyHeaderScrollupCrossesInput)&&this.scrollToCenter()}}scrollToCenter(){this.variantListInput.scrollIntoView({block:"center",behavior:"smooth"})}switchVariants(event){event.target.tagName==="INPUT"&&(this.variantListInput=event.target,this.variantListInput.select(),this.allInputsArray.length!==1?(this.variantListInput.addEventListener("keydown",e=>{if(e.key==="Enter"&&(e.preventDefault(),e.target.blur(),this.validateInput(e.target))){const currentIndex=this.allInputsArray.indexOf(e.target);if(this.lastKey=e.shiftKey,e.shiftKey){const previousIndex=currentIndex-1,previousVariant=this.allInputsArray[previousIndex]||this.allInputsArray[this.allInputsArray.length-1];this.lastElement=previousVariant.dataset.index,previousVariant.select()}else{const nextIndex=currentIndex+1;(this.allInputsArray[nextIndex]||this.allInputsArray[0]).select()}}}),this.scrollQuickOrderListTable()):this.variantListInput.addEventListener("keydown",e=>{e.key==="Enter"&&(e.preventDefault(),e.target.blur())}))}updateMultipleQty(items){this.querySelector(".variant-remove-total .loading__spinner")?.classList.remove("hidden");const ids=Object.keys(items),body=JSON.stringify({updates:items,sections:this.getSectionsToRender().map(section=>section.section),sections_url:this.dataset.url});this.updateMessage(),this.setErrorMessage(),fetch(`${routes.cart_update_url}`,{...fetchConfig(),body}).then(response=>response.text()).then(state=>{const parsedState=JSON.parse(state);this.renderSections(parsedState,ids),publish(PUB_SUB_EVENTS.cartUpdate,{source:this.quickOrderListId,cartData:parsedState})}).catch(()=>{this.setErrorMessage(window.cartStrings.error)}).finally(()=>{this.querySelector(".variant-remove-total .loading__spinner")?.classList.add("hidden"),this.requestStarted=!1})}setErrorMessage(message=null){this.errorMessageTemplate=this.errorMessageTemplate??document.getElementById(`QuickOrderListErrorTemplate-${this.dataset.productId}`).cloneNode(!0),document.querySelectorAll(".quick-order-list-error").forEach(errorElement=>{if(errorElement.innerHTML="",!message)return;const updatedMessageElement=this.errorMessageTemplate.cloneNode(!0);updatedMessageElement.content.querySelector(".quick-order-list-error-message").innerText=message,errorElement.appendChild(updatedMessageElement.content)})}updateMessage(quantity=null){const messages=this.querySelectorAll(".quick-order-list__message-text"),icons=this.querySelectorAll(".quick-order-list__message-icon");
1if(quantity===null||isNaN(quantity)){messages.forEach(message=>message.innerHTML=""),icons.forEach(icon=>icon.classList.add("hidden"));return}const isQuantityNegative=quantity<0,absQuantity=Math.abs(quantity),textTemplate=isQuantityNegative?absQuantity===1?window.quickOrderListStrings.itemRemoved:window.quickOrderListStrings.itemsRemoved:quantity===1?window.quickOrderListStrings.itemAdded:window.quickOrderListStrings.itemsAdded;messages.forEach(msg=>msg.innerHTML=textTemplate.replace("[quantity]",absQuantity)),isQuantityNegative||icons.forEach(i=>i.classList.remove("hidden"))}updateError(updatedValue,id){let message="";typeof updatedValue>"u"?message=window.cartStrings.error:message=window.cartStrings.quantityError.replace("[quantity]",updatedValue),this.updateLiveRegions(id,message)}cleanErrors(id){}updateLiveRegions(id,message){const variantItemErrorDesktop=document.getElementById(`Quick-order-list-item-error-desktop-${id}`),variantItemErrorMobile=document.getElementById(`Quick-order-list-item-error-mobile-${id}`);variantItemErrorDesktop&&(variantItemErrorDesktop.querySelector(".variant-item__error-text").innerHTML=message,variantItemErrorDesktop.closest("tr").classList.remove("hidden")),variantItemErrorMobile&&(variantItemErrorMobile.querySelector(".variant-item__error-text").innerHTML=message),this.variantItemStatusElement.setAttribute("aria-hidden",!0);const cartStatus=document.getElementById("quick-order-list-live-region-text");cartStatus.setAttribute("aria-hidden",!1),setTimeout(()=>{cartStatus.setAttribute("aria-hidden",!0)},1e3)}toggleLoading(id,enable){const quickOrderListItems=this.querySelectorAll(`#Variant-${id} .loading__spinner`),quickOrderListItem=this.querySelector(`#Variant-${id}`);enable?(quickOrderListItem.classList.add("quick-order-list__container--disabled"),[...quickOrderListItems].forEach(overlay=>overlay.classList.remove("hidden")),this.variantItemStatusElement.setAttribute("aria-hidden",!1)):(quickOrderListItem.classList.remove("quick-order-list__container--disabled"),quickOrderListItems.forEach(overlay=>overlay.classList.add("hidden")))}});
2//# sourceMappingURL=/cdn/shop/t/6/assets/quick-order-list.js.map?v=144388046002098609951732052542

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.