PageSourceSearch

https://coesdurable.com/cdn/shop/t/2/assets/sticky-add-to-cart.js?v=120530715230847614681682341823

js coesdurable.com collected 2026-10-07 17:44:12 UTC 20,747 bytes, 2 lines download raw bytes

1class StickyAddToCart extends HTMLElement{constructor(){super(),this.sticky=this,this.stickyBounds=document.getElementById("product-add-to-cart")||document.querySelector("[data-combo-addtocart]"),this.closeSticky=this.querySelector("[data-close-sticky-add-to-cart]"),this.expandSticky=this.querySelector("[data-expand-sticky-add-to-cart]"),this.closeSticky?.addEventListener("click",this.setCloseSticky.bind(this)),this.expandSticky?.addEventListener("click",this.setExpandSticky.bind(this)),this.openStickyButton=document.getElementById("show-sticky-product"),this.closeModal=this.closeStickyModal.bind(this)}connectedCallback(){this.onScrollHandler=this.onScroll.bind(this),window.addEventListener("scroll",this.onScrollHandler,!1),this.openStickyButton.addEventListener("click",this.openStickyModal.bind(this)),document.addEventListener("click",e=>{(e.target.matches(".background-overlay")||e.target.closest("[data-close-sticky-mobile]")!=null||e.target.matches("[data-close-sticky-mobile]"))&&this.closeModal()});const height=this.closest("[data-sticky-add-to-cart]").clientHeight;this.sticky.querySelector(".sticky-product-mobile").style.bottom=height+"px"}openStickyModal(){document.body.classList.add("show-mobile-options")}closeStickyModal(){document.body.classList.remove("show-mobile-options")}disconnectedCallback(){window.removeEventListener("scroll",this.onScrollHandler)}onScroll(){const scrollTop=window.pageYOffset||document.documentElement.scrollTop,offsetScroll=$(this.stickyBounds).offset().top+$(this.stickyBounds).outerHeight(!0)+100,winHeight=window.innerHeight,docHeight=document.body.clientHeight;if(scrollTop>offsetScroll&&scrollTop+winHeight<docHeight){if(requestAnimationFrame(this.show.bind(this)),this.sticky.classList.contains("style-1")){let height=0;const previewBar=document.getElementById("preview-bar-iframe"),toolbarMobile=document.querySelector(".halo-sticky-toolbar-mobile");previewBar&&window.getComputedStyle(previewBar).display!=="none"?height=previewBar.offsetHeight:toolbarMobile&&(height=toolbarMobile.offsetHeight),this.sticky.style.top="auto",this.sticky.style.bottom=`${height}px`}else if(this.sticky.classList.contains("style-2"))if(document.body.classList.contains("scroll-up")){let height=document.querySelector("sticky-header").offsetHeight;window.innerWidth<551&&(height=height+20),this.sticky.style.top=`${height}px`}else document.body.classList.contains("scroll-down")&&(window.innerWidth>550?this.sticky.style.top=0:this.sticky.style.top="20px")}else requestAnimationFrame(this.hide.bind(this));this.currentScrollTop=scrollTop}hide(){this.sticky.classList.remove("show-sticky","hidden-sticky","full-sticky","animate"),document.body.classList.remove("show-mobile-options")}show(){this.sticky.classList.add("show-sticky","animate")}setCloseSticky(event){event.preventDefault(),this.sticky.classList.contains("full-sticky")?this.sticky.classList.remove("full-sticky"):this.sticky.classList.add("hidden-sticky")}setExpandSticky(event){event.preventDefault(),this.sticky.classList.add("full-sticky")}}customElements.define("sticky-add-to-cart",StickyAddToCart);class VariantStickyAddToCart extends HTMLElement{constructor(){super(),this.item=$(this).closest(".productView"),this.sticky=$(this).closest(".productView-stickyCart"),this.addEventListener("change",this.onVariantChange.bind(this))}onVariantChange(event){this.updateOptions(),this.updateMasterId(),this.updatePickupAvailability(),this.updateMedia(200),this.updateURL(),this.updateVariantInput(),this.renderProductAjaxInfo(),this.renderProductInfo(),this.updateAttribute(!this.currentVariant.available)}updateOptions(){this.options=Array.from(this.querySelectorAll("select"),select=>select.value)}decodeOptions(){this.options=this.options.map(option=>this.decodeOption(option))}decodeOption(option){return option?option.split("Special_Double_Quote").join('"').split("Special_Slash").join("/"):null}encodeOption(option){return option?option.split('"').join("Special_Double_Quote").split("/").join("Special_Slash"):null}updateMasterId(){this.decodeOptions(),this.currentVariant=this.getVariantData().find(variant=>variant.id==this.options)}updateMedia(time){if(!this.currentVariant||!this.currentVariant?.featured_media)return;const itemImage=this.item.find(".sticky-image"),image=this.currentVariant?.featured_image;if(!itemImage)return;itemImage.find("img").attr({src:image.src,srcset:image.src,alt:image.alt});const newMedia=document.querySelectorAll(`[data-media-id="${this.dataset.section}-${this.currentVariant.featured_media.id}"]`);newMedia&&window.setTimeout(()=>{$(newMedia).trigger("click")},time)}updateURL(){this.currentVariant&&window.history.replaceState({},"",`${this.dataset.url}?variant=${this.currentVariant.id}`)}updateVariantInput(){document.querySelectorAll(`#product-form-${this.dataset.product}, #product-form-installment-${this.dataset.product}, #product-form-sticky-${this.dataset.product}`).forEach(productForm=>{const input=productForm.querySelector('input[name="id"]');input.value=this.currentVariant.id,input.dispatchEvent(new Event("change",{bubbles:!0}))})}updatePickupAvailability(){const pickUpAvailability=document.querySelector("pickup-availability");pickUpAvailability&&(this.currentVariant?.available?pickUpAvailability.fetchAvailability(this.currentVariant.id):(pickUpAvailability.removeAttribute("available"),pickUpAvailability.innerHTML=""))}renderProductAjaxInfo(){fetch(`${this.dataset.url}?variant=${this.currentVariant.id}&section_id=${this.dataset.section}`).then(response=>response.text()).then(responseText=>{const id=`product-price-${this.dataset.product}`,html=new DOMParser().parseFromString(responseText,"text/html"),destination=document.getElementById(id),source=html.getElementById(id);source&&destination&&(destination.innerHTML=source.innerHTML),document.getElementById(`product-price-${this.dataset.product}`)?.classList.remove("visibility-hidden")})}renderProductInfo(){var variantList=this.getVariantData().filter(variant=>variant.available),selectedOption1=this.currentVariant?.option1,selectedOption2=this.currentVariant?.option2,selectedOption3=this.currentVariant?.option3,options=this.item.find(".product-form__input:not(.mobile)"),optionsMobile=this.item.find(".product-form__input.mobile"),checkStickyVariant=!1;const renderOptions=options2=>{$.each(options2,(index,element)=>{var position=$(element).data("option-index"),type=$(element).data("product-attribute");switch(position){case 0:if($(element).find("[data-header-option]").text(selectedOption1),type=="set-select"){$(element).find(".select__select").val(selectedOption1);var selectList=$(element).find(".select__select option");selectList.each((idx,elt)=>{elt.value==selectedOption1?$(elt).attr("selected","selected"):$(elt).removeAttr("selected")})}else $(element).find(".product-form__radio").prop("checked",!1),$(element).find(`.product-form__radio[value="${this.encodeOption(selectedOption1)}"]`).prop("checked",!0);var option1List=variantList.filter(variant=>variant.option1===selectedOption1);if(selectedOption2){var inputList=$(options2[1]),input=inputList.find(".product-form__radio"),selectOption=inputList.find(".select__select option");type=="set-rectangle"?input.each((idx,elt)=>{var $input=$(elt),$label=$input.next(),optionValue=$(elt).val(),optionSoldout=option1List.find(variant=>variant.option2==this.decodeOption(optionValue));optionSoldout==null?($label.removeClass("available").addClass("soldout"),checkStickyVariant&&$(inputSticky[idx]).next().removeClass("available").addClass("soldout")):($label.removeClass("soldout").addClass("available"),checkStickyVariant&&$(inputSticky[idx]).next().removeClass("soldout").addClass("available"))}):selectOption.each((idx,elt)=>{var $option=$(elt),optionValue=$(elt).val(),optionSoldout=option1List.find(variant=>variant.option2==this.decodeOption(optionValue));optionSoldout==null?($option.attr("disabled",!0),checkStickyVariant&&$(selectOptionSticky[idx]).attr("disabled",!0)):($option.removeAttr("disabled"),checkStickyVariant&&$(selectOptionSticky[idx]).removeAttr("disabled"))})}if(selectedOption3){var inputList=$(options2[2]),input=inputList.find(".product-form__radio"),selectOption=inputList.find(".select__select option");type=="set-rectangle"?input.each((idx,elt)=>{var $input=$(elt),$label=$input.next(),optionValue=$(elt).val(),optionSoldout=option1List.find(variant=>variant.option3==this.decodeOption(optionValue));optionSoldout==null?($label.removeClass("available").addClass("soldout"),checkStickyVariant&&$(inputSticky[idx]).next().removeClass("available").addClass("soldout")):($label.removeClass("soldout").addClass("available"),checkStickyVariant&&$(inputSticky[idx]).next().removeClass("soldout").addClass("available"))}):electOption.each((idx,elt)=>{var $option=$(elt),optionValue=$(elt).val(),optionSoldout=option1List.find(variant=>variant.option3==this.decodeOption(optionValue));optionSoldout==null?($option.attr("disabled",!0),checkStickyVariant&&$(selectOptionSticky[idx]).attr("disabled",!0)):($option.removeAttr("disabled"),checkStickyVariant&&$(selectOptionSticky[idx]).removeAttr("disabled"))})}break;case 1:if($(element).find("[data-header-option]").text(selectedOption2),type=="set-select"){$(element).find(".select__select").val(selectedOption2);var selectList=$(element).find(".select__select option");selectList.each((idx,elt)=>{elt.value==selectedOption2?$(elt).attr("selected","selected"):$(elt).removeAttr("selected")})}else $(element).find(".product-form__radio").prop("checked",!1),$(element).find(`.product-form__radio[value="${this.encodeOption(selectedOption2)}"]`).prop("checked",!0);var option2List=variantList.filter(variant=>variant.option2===selectedOption2);if(selectedOption1){var inputList=$(options2[0]),input=inputList.find(".product-form__radio"),selectOption=inputList.find(".select__select option");type=="set-rectangle"?input.each((idx,elt)=>{var $input=$(elt),$label=$input.next(),optionValue=$(elt).val(),optionSoldout=option2List.find(variant=>variant.option1==this.decodeOption(optionValue));optionSoldout==null?($label.removeClass("available").addClass("soldout"),checkStickyVariant&&$(inputSticky[idx]).next().removeClass("available").addClass("soldout")):($label.removeClass("soldout").addClass("available"),checkStickyVariant&&$(inputSticky[idx]).next().removeClass("soldout").addClass("available"))}):selectOption.each((idx,elt)=>{var $option=$(elt),optionValue=$(elt).val(),optionSoldout=option2List.find(variant=>variant.option1==this.decodeOption(optionValue));optionSoldout==null?($option.attr("disabled",!0),checkStickyVariant&&$(inputSticky[idx]).attr("disabled",!0)):($option.removeAttr("disabled"),checkStickyVariant&&$(inputSticky[idx]).removeAttr("disabled"))})}if(selectedOption3){var inputList=$(options2[2]),input=inputList.find(".product-form__radio"),selectOption=inputList.find(".select__select option");type=="set-rectangle"?input.each((idx,elt)=>{var $input=$(elt),$label=$input.next(),optionValue=$(elt).val(),optionSoldout=option2List.find(variant=>variant.option3==this.decodeOption(optionValue));optionSoldout==null?($label.removeClass("available").addClass("soldout"),checkStickyVariant&&$(inputSticky[idx]).next().removeClass("available").addClass("soldout")):($label.removeClass("soldout").addClass("available"),checkStickyVariant&&$(inputSticky[idx]).next().removeClass("soldout").addClass("available"))}):electOption.each((idx,elt)=>{var $option=$(elt),optionValue=$(elt).val(),optionSoldout=option2List.find(variant=>variant.option3==this.decodeOption(optionValue));optionSoldout==null?($option.attr("disabled",!0),checkStickyVariant&&$(inputSticky[idx]).attr("disabled",!0)):($option.removeAttr("disabled"),checkStickyVariant&&$(inputSticky[idx]).removeAttr("disabled"))})}break;case 2:if($(element).find("[data-header-option]").text(selectedOption3),type=="set-select"){$(element).find(".select__select").val(selectedOption3);var selectList=$(element).find(".select__select option");selectList.each((idx,elt)=>{elt.value==selectedOption3?$(elt).attr("selected","selected"):$(elt).removeAttr("selected")})}else $(element).find(".product-form__radio").prop("checked",!1),$(element).find(`.product-form__radio[value="${this.encodeOption(selectedOption3)}"]`).prop("checked",!0);var option3List=variantList.filter(variant=>variant.option3===selectedOption3);if(selectedOption1){var inputList=$(options2[0]),input=inputList.find(".product-form__radio"),selectOption=inputList.find(".select__select option");type=="set-rectangle"?input.each((idx,elt)=>{var $input=$(elt),$label=$input.next(),optionValue=$(elt).val(),optionSoldout=option3List.find(variant=>variant.option1==this.decodeOption(optionValue));optionSoldout==null?($label.removeClass("available").addClass("soldout"),checkStickyVariant&&$(inputSticky[idx]).next().removeClass("available").addClass("soldout")):($label.removeClass("soldout").addClass("available"),checkStickyVariant&&$(inputSticky[idx]).next().removeClass("soldout").addClass("available"))}):selectOption.each((idx,elt)=>{var $option=$(elt),optionValue=$(elt).val(),optionSoldout=option3List.find(variant=>variant.option1==this.decodeOption(optionValue));optionSoldout==null?($option.attr("disabled",!0),checkStickyVariant&&$(inputSticky[idx]).attr("disabled",!0)):($option.removeAttr("disabled"),checkStickyVariant&&$(inputSticky[idx]).removeAttr("disabled"))})}if(selectedOption2){var inputList=$(options2[1]),input=inputList.find(".product-form__radio");type=="set-rectangle"?input.each((idx,elt)=>{var $input=$(elt),$label=$input.next(),optionValue=$(elt).val(),optionSoldout=option3List.find(variant=>variant.option2==this.decodeOption(optionValue));optionSoldout==null?($label.removeClass("available").addClass("soldout"),checkStickyVariant&&$(inputSticky[idx]).next().removeClass("available").addClass("soldout")):($label.removeClass("soldout").addClass("available"),checkStickyVariant&&$(inputSticky[idx]).next().removeClass("soldout").addClass("available"))}):selectOption.each((idx,elt)=>{var $option=$(elt),optionValue=$(elt).val(),optionSoldout=option3List.find(variant=>variant.option2==this.decodeOption(optionValue));optionSoldout==null?($option.attr("disabled",!0),checkStickyVariant&&$(inputSticky[idx]).attr("disabled",!0)):($option.removeAttr("disabled"),checkStickyVariant&&$(inputSticky[idx]).removeAttr("disabled"))})}break}})};renderOptions(options),renderOptions(optionsMobile),this.item.find("[data-sku]").length>0&&this.item.find("[data-sku] .productView-info-value").text(this.currentVariant.sku);var inventory=this.currentVariant?.inventory_management;if(inventory!=null){var arrayInVarName=`product_inven_array_${this.dataset.product}`,inven_array=window[arrayInVarName];if(inven_array!=null){var inven_num=inven_array[this.currentVariant.id],inventoryQuantity=parseInt(inven_num);if(this.item.find('input[name="quantity"]').attr("data-inventory-quantity",inventoryQuantity),this.item.find("[data-inventory]").length>0&&(inventoryQuantity>0?this.item.find("[data-inventory] .productView-info-value").text(window.inventory_text.inStock):this.item.find("[data-inventory] .productView-info-value").text(window.inventory_text.outOfStock)),this.item.find(".productView-hotStock").length>0){var hotStock=this.item.find(".productView-hotStock"),maxStock=hotStock.data("hot-stock");if(inventoryQuantity>0&&inventoryQuantity<=maxStock){var textStock=window.inventory_text.hotStock.replace("[inventory]",inventoryQuantity);hotStock.text(textStock).show()}else hotStock.hide()}}}}updateAttribute(disable=!0){const addButton=document.getElementById(`product-form-${this.dataset.product}`)?.querySelector('[name="add"]'),stickyButton=document.getElementById(`product-form-sticky-${this.dataset.product}`)?.querySelector('[name="add"]');var quantityInput=$("[data-sticky-add-to-cart] .quantity__input"),notifyMe=this.item.find(".productView-notifyMe"),stickyPrice=$("[data-sticky-add-to-cart] .money-subtotal .money"),stickyComparePrice=$("[data-sticky-add-to-cart] .money-compare-price .money"),maxValue=parseInt(quantityInput.attr("data-inventory-quantity"));if(stickyPrice.length===0&&(stickyPrice=$("[data-sticky-add-to-cart] .sticky-price .money-subtotal")),disable){var text=window.variantStrings.soldOut;this.item.removeClass("isChecked"),quantityInput.attr("data-price",this.currentVariant?.price),quantityInput.attr("disabled",!0),addButton.setAtt
1ribute("disabled",!0),addButton.textContent=text,stickyButton.setAttribute("disabled",!0),stickyButton.textContent=text,notifyMe.length>0&&(notifyMe.find('input[name="halo-notify-product-variant"]').val(this.currentVariant.title),notifyMe.find(".notifyMe-text").empty(),notifyMe.slideDown("slow"))}else{var text,subTotal=0,price=this.currentVariant?.price;if(window.subtotal.show)if(subTotal=quantityInput.val()*price,subTotal=Shopify.formatMoney(subTotal,window.money_format),window.currencyFormatted&&(subTotal=$(subTotal).text()),window.subtotal.style=="1"){const pdView_subTotal=document.querySelector(".productView-subtotal .money")||document.querySelector(".productView-subtotal .money-subtotal");pdView_subTotal.textContent=subTotal,this.currentVariant.available&&maxValue<=0?text=window.variantStrings.preOrder:text=window.variantStrings.addToCart}else window.subtotal.style=="2"&&(text=window.subtotal.text.replace("[value]",subTotal));else subTotal=Shopify.formatMoney(price,window.money_format),window.currencyFormatted&&(subTotal=$(subTotal).text()),this.currentVariant.available&&maxValue<=0?text=window.variantStrings.preOrder:text=window.variantStrings.addToCart;if(this.item.addClass("isChecked"),quantityInput.attr("data-price",this.currentVariant?.price),quantityInput.attr("disabled",!1),addButton.removeAttribute("disabled"),addButton.textContent=text,stickyButton.removeAttribute("disabled"),stickyButton.textContent=text,subTotal!=0&&stickyPrice.length&&stickyPrice.text(subTotal),subTotal!=0&&stickyComparePrice.length&&window.subtotal.show){let comparePrice=$("[data-sticky-add-to-cart] .money-compare-price").data("compare-price");comparePrice=quantityInput.val()*comparePrice,comparePrice=Shopify.formatMoney(comparePrice,window.money_format),comparePrice=extractContent(comparePrice),stickyComparePrice.text(comparePrice)}notifyMe.length>0&&notifyMe.slideUp("slow")}}getVariantData(){return this.variantData=this.variantData||JSON.parse(this.querySelector('[type="application/json"]').textContent),this.variantData}}customElements.define("variant-sticky-selects",VariantStickyAddToCart);class VariantStickyRadios extends VariantStickyAddToCart{constructor(){super()}connectedCallback(){this.updateMediaTimeout=void 0}onVariantChange(event){this.updateOptions(),this.updateMasterId(),this.updatePickupAvailability(),this.updateMedia(10),this.updateURL(),this.updateVariantInput(),this.updateSelectVariant(),this.renderProductAjaxInfo(),this.renderProductInfo(),this.updateAttribute(!this.currentVariant.available)}updateOptions(){const fieldsets=Array.from(this.querySelectorAll("fieldset"));this.options=fieldsets.map(fieldset=>Array.from(fieldset.querySelectorAll("input")).find(radio=>radio.checked).value)}decodeOptions(){this.options=this.options.map(option=>this.decodeOption(option))}decodeOption(option){return option?option.split("Special_Double_Quote").join('"').split("Special_Slash").join("/"):null}encodeOption(option){return option?option.split('"').join("Special_Double_Quote").split("/").join("Special_Slash"):null}updateSelectVariant(){const selectElement=this.closest(".productView-stickyCart").querySelector("select");selectElement.value=this.currentVariant.id}updateMasterId(){this.decodeOptions(),this.currentVariant=this.getVariantData().find(variant=>!variant.options.map((option,index)=>this.options[index]===option).includes(!1))}updateMedia(time){if(!this.currentVariant||!this.currentVariant?.featured_media)return;const itemImage=this.item.find(".sticky-image"),image=this.currentVariant?.featured_image;if(!itemImage)return;itemImage.find("img").attr({src:image.src,srcset:image.src,alt:image.alt});const newMedia=document.querySelectorAll(`[data-media-id="${this.dataset.section}-${this.currentVariant.featured_media.id}"]`);newMedia&&(clearTimeout(this.updateMediaTimeout),this.updateMediaTimeout=setTimeout(()=>{$(newMedia).trigger("click")},time))}openStickyModal(){document.body.classList.add("show-mobile-options")}closeStickyModal(){document.body.classList.remove("show-mobile-options")}}customElements.define("variant-sticky-radios",VariantStickyRadios);function parseDoubleQuote(option,isDecoding=!0){return option&&(isDecoding?option.replace('"',"spc_dbl_qte"):option.replace("spc_dbl_qte",'"'))}
2//# sourceMappingURL=/cdn/shop/t/2/assets/sticky-add-to-cart.js.map?v=120530715230847614681682341823

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.