PageSourceSearch

https://www.shilav.co.il/cdn/shop/t/230/assets/boa-custom-color-sw…?v=152198589685414699871787739576

js shilav.co.il collected 2026-10-02 19:24:58 UTC 12,695 bytes, 2 lines download raw bytes

1import{formatMoney}from"@archetype-themes/scripts/helpers/currency";document.addEventListener("DOMContentLoaded",initializeEventListeners);const MAX_SIZE_VARIANTS=7;function initializeEventListeners(){document.addEventListener("click",event=>{const swatch=event.target.closest?.(".collection-grid__wrapper .swatch-color-boa, .cart-recommendations .swatch-color-boa");!swatch||swatch.closest(".shilav-bundle-page")||handleColorSwatchChange(event,swatch)},!0),document.addEventListener("click",event=>{event.target.closest?.(".extend-swatch-options")?.closest(".collection-grid__wrapper, .cart-recommendations")&&toggleSwatchColors(event)}),document.addEventListener("quickshop:opened",()=>{const tooltip=document.querySelector(".tool-tip__inner");if(!tooltip)return;tooltip.querySelectorAll(".swatch-color-boa").forEach(swatch=>{swatch.addEventListener("click",redirectProductPage)})})}function handleColorSwatchChange(event,swatch){event.preventDefault(),event.stopPropagation();const swatchClickedColor=swatch.style.getPropertyValue("--product-current-color"),swatchClickedColorId=swatch.dataset.productId,currentSwatch=swatch.closest(".swatch-colors-wrapper")?.querySelector(".current-product-color");if(!currentSwatch)return;const swatchCurrentColor=currentSwatch.style.getPropertyValue("--product-current-color"),swatchCurrentColorId=currentSwatch.dataset.productId;if(swatchCurrentColor===swatchClickedColor&&swatchClickedColorId===swatchCurrentColorId)return;const productBlock=swatch.closest(".product-grid-item");productBlock&&(updateProductImage(productBlock,swatch),updateProductPrice(productBlock,swatch),updateProductTitle(productBlock,swatch),updateProductColorName(productBlock,swatch),updateProductUrl(productBlock,swatch),updateSelectedColor(productBlock,swatch),updateDiscountText(productBlock,swatch),updateSoldOutTag(productBlock,swatch),updateExtraTag(productBlock,swatch),updateCustomTag(productBlock,swatch),updateQuickShopButton(productBlock,swatch),updateQuickAddButton(productBlock,swatch),updateSizesAvailability(productBlock,swatch),window.location.href.includes("/products")&&updateQuantitySelectorProductVariant(productBlock,swatch))}function updateProductImage(productBlock,swatch){const productImageElement=productBlock.querySelector(".grid__image-ratio img"),newImageUrl=swatch.dataset.productImage;productImageElement&&newImageUrl&&(productImageElement.srcset=newImageUrl)}function updateProductPrice(productBlock,swatch){if(productBlock.querySelector(".grid-product__price").classList.contains("required"))return;const currentPriceContainer=productBlock.querySelector(".grid-product__price"),comparePrice=currentPriceContainer.querySelector(".grid-product__price--original"),selectedCompare=normalizePriceToCents(swatch.dataset.productComparePrice),price=normalizePriceToCents(swatch.dataset.productPrice);Number(selectedCompare)>0?changePriceCompare({comparePrice,price,selectedCompare,currentPriceContainer}):changePriceOriginal(comparePrice,currentPriceContainer),updatePriceWithoutCompare(currentPriceContainer,price)}function changePriceCompare({comparePrice,price,selectedCompare,currentPriceContainer}){if(comparePrice){const modifiedPrice=formatMoney(selectedCompare,"{{amount}} \u20AA",!0).replace("</sup> \u20AA"," \u20AA</sup>");setPriceMarkup(comparePrice,modifiedPrice)}else createComparePrice({comparePrice,price,selectedCompare,currentPriceContainer})}function changePriceOriginal(comparePrice){comparePrice&&comparePrice.remove()}function updatePriceWithoutCompare(currentPriceContainer,currentPrice){const currentPriceElement=currentPriceContainer.querySelector(".grid-product__price--current");if(!currentPriceElement)return;const modifiedPrice=formatMoney(currentPrice,"{{amount}} \u20AA",!0).replace("</sup> \u20AA"," \u20AA</sup>");setPriceMarkup(currentPriceElement,modifiedPrice)}function createComparePrice({selectedCompare,currentPriceContainer}){const modifiedPrice=formatMoney(selectedCompare,"{{amount}} \u20AA",!0).replace("</sup> \u20AA"," \u20AA</sup>"),comparePriceSpan=document.createElement("span");comparePriceSpan.classList.add("grid-product__price--original"),setPriceMarkup(comparePriceSpan,modifiedPrice),currentPriceContainer.appendChild(comparePriceSpan)}function setPriceMarkup(container,markup){let visualPrice=container.querySelector('span[aria-hidden="true"]');visualPrice||(visualPrice=document.createElement("span"),visualPrice.setAttribute("aria-hidden","true"),container.appendChild(visualPrice)),visualPrice.innerHTML=markup;let hiddenPrice=container.querySelector(".visually-hidden");hiddenPrice||(hiddenPrice=document.createElement("span"),hiddenPrice.classList.add("visually-hidden"),container.appendChild(hiddenPrice)),hiddenPrice.textContent=visualPrice.textContent.trim()}function normalizePriceToCents(price){if(price==null)return"0";const cleanedPriceString=String(price).replace(/[^0-9.,]/g,"").replace(/,/g,"").trim();return cleanedPriceString?cleanedPriceString.includes(".")?String(Math.round(parseFloat(cleanedPriceString)*100)):cleanedPriceString:"0"}function updateProductTitle(productBlock,swatch){const title=productBlock.querySelector(".grid-product__title"),newTitle=swatch.dataset.productTitle;title&&(title.textContent=newTitle)}function updateProductColorName(productBlock,swatch){const colorName=productBlock.querySelector(".current-color-name"),newColorName=swatch.dataset.productC
1olor;if(colorName){const span=colorName.querySelector("span");span.textContent=newColorName}}function updateDiscountText(productBlock,swatch){const existingProductDiscount=productBlock.querySelector(".boa-discount-text"),newProductDiscountText=swatch.dataset.productDiscountText;if(!(!existingProductDiscount&&!newProductDiscountText)&&(existingProductDiscount&&(existingProductDiscount.textContent=newProductDiscountText),newProductDiscountText&&!existingProductDiscount)){const targetElement=productBlock.querySelector(".grid-item__content"),discountDiv=document.createElement("div");discountDiv.classList.add("boa-discount-text"),discountDiv.textContent=newProductDiscountText,targetElement.appendChild(discountDiv)}}function updateSoldOutTag(productBlock,swatch){const tagsContainer=productBlock.querySelector(".grid-product__tags"),existingSoldOutTag=tagsContainer.querySelector(".grid-product__tag--sold-out"),productAvailable=swatch.dataset.productAvailable;if(!(!existingSoldOutTag&&productAvailable==="true")&&(existingSoldOutTag&&productAvailable==="true"&&existingSoldOutTag.remove(),!existingSoldOutTag&&productAvailable==="false")){const tagDiv=document.createElement("div");tagDiv.textContent="\u05D0\u05D6\u05DC \u05D4\u05DE\u05DC\u05D0\u05D9",tagDiv.classList.add("grid-product__tag","grid-product__tag--sold-out"),tagsContainer.appendChild(tagDiv)}}function updateExtraTag(productBlock,swatch){const tagsContainer=productBlock.querySelector(".grid-product__tags"),extraTag=tagsContainer.querySelector(".extra-tag"),existingExtraTag=swatch.dataset.productExtraTag;if(!(!existingExtraTag.trim()&&!extraTag)){if(existingExtraTag&&!extraTag){const tagDiv=document.createElement("div");tagDiv.classList.add("extra-tag"),tagDiv.textContent=existingExtraTag,tagsContainer.appendChild(tagDiv)}!existingExtraTag&&extraTag&&extraTag.remove()}}function updateCustomTag(productBlock,swatch){const tagsContainer=productBlock.querySelector(".grid-product__tags"),customTag=tagsContainer.querySelector(".grid-product__tag.grid-product__tag--custom"),existingCustomTag=swatch.dataset.productCustomTag;if(!(!existingCustomTag.trim()&&!customTag)){if(existingCustomTag&&!customTag){const tagDiv=document.createElement("div");tagDiv.classList.add("grid-product__tag","grid-product__tag--custom"),tagDiv.textContent=existingCustomTag,tagsContainer.appendChild(tagDiv)}!existingCustomTag&&customTag&&customTag.remove()}}function updateProductUrl(productBlock,swatch){const newUrl=`${window.location.origin}/products/${swatch.dataset.productHandle}`;productBlock.querySelectorAll(".grid-item__link").forEach(link=>{link.href=newUrl})}function updateSelectedColor(productBlock,swatch){const currentColor=productBlock.querySelector(".swatch-color-boa.current-product-color");currentColor&&(currentColor.classList.remove("current-product-color"),swatch.classList.add("current-product-color"))}function updateQuickAddButton(productBlock,swatch){const quickAddButtons=productBlock.querySelectorAll(".quick-add-btn");if(!quickAddButtons.length)return;const isNewVariantAvailable=swatch.dataset.productAvailable==="true",variantId=swatch.dataset.key||swatch.dataset.variantId,comparePrice=normalizePriceToCents(swatch.dataset.productComparePrice);quickAddButtons.forEach(quickAddButton=>{const isOutOfStock=quickAddButton.classList.contains("out-of-stock");isOutOfStock&&isNewVariantAvailable&&quickAddButton.classList.remove("out-of-stock"),!isOutOfStock&&!isNewVariantAvailable&&quickAddButton.classList.add("out-of-stock"),variantId&&quickAddButton.setAttribute("data-id",variantId),quickAddButton.setAttribute("data-compare-price",comparePrice)}),productBlock.querySelectorAll("quick-add").forEach(el=>{el.quickAddData=null}),productBlock.querySelectorAll(".grid-product__registry-gift").forEach(registryBtn=>{registryBtn.hasAttribute("data-grid-add-to-registry")&&(registryBtn.dataset.variantId=variantId),isNewVariantAvailable?(registryBtn.classList.remove("out-of-stock"),registryBtn.removeAttribute("disabled")):(registryBtn.classList.add("out-of-stock"),registryBtn.setAttribute("disabled","disabled"))})}
1function updateQuickShopButton(productBlock,swatch){const button=productBlock.querySelector(".quick-product__btn"),currentProductId=productBlock.dataset.productId;productBlock.setAttribute("data-product-handle",swatch.dataset.productHandle),productBlock.setAttribute("data-product-id",swatch.dataset.productId),button&&(button.classList.remove(`js-modal-open-quick-modal-${currentProductId}`),button.setAttribute("data-handle",swatch.dataset.productHandle),button.classList.add(`js-modal-open-quick-modal-${swatch.dataset.productId}`))}function updateSizesAvailability(productBlock,swatch){const productItemSizeContainer=productBlock.querySelector(".product-item-sizes-popup");if(!productItemSizeContainer)return;const productItemSizeWrapper=productItemSizeContainer.querySelector(".product-item-sizes-wrap"),sizesAvailability=swatch.dataset.productSizesAvailability.split(","),existingSizesCount=productItemSizeWrapper.querySelectorAll(".size-item").length,newSizesCount=sizesAvailability.length;productItemSizeWrapper.textContent="",sizesAvailability.forEach(sizeData=>{const[size,availability]=sizeData.split(":");if(!size.trim()||!availability.trim())return;const sizeItem=document.createElement("p");sizeItem.classList.add("size-item"),sizeItem.textContent=size.trim(),availability.toLowerCase()==="false"&&sizeItem.classList.add("size-unavailable"),productItemSizeWrapper.appendChild(sizeItem)});const arrowDown=productItemSizeContainer.querySelector(".arrow-btn-down"),arrowUp=productItemSizeContainer.querySelector(".arrow-btn-up");if(existingSizesCount<MAX_SIZE_VARIANTS&&newSizesCount>MAX_SIZE_VARIANTS&&(arrowDown.classList.remove("hidden-arrow"),productItemSizeContainer.dataset.sizesAmount=newSizesCount),existingSizesCount>MAX_SIZE_VARIANTS&&newSizesCount<MAX_SIZE_VARIANTS){arrowDown.classList.add("hidden-arrow"),arrowUp.classList.add("hidden-arrow"),productItemSizeContainer.dataset.sizesAmount=newSizesCount,productItemSizeContainer.dataset.currentPage=1;const wrapper=productItemSizeContainer.querySelector(".product-item-sizes-wrap");wrapper.style.transform="translateY(0)"}productItemSizeWrapper.addEventListener("change",e=>handleScrollSizes(e))}function toggleSwatchColors(e){e.preventDefault();const button=e.target.closest(".extend-swatch-options"),swatchWrapper=button.closest(".swatch-colors-wrapper"),hiddenSwatches=swatchWrapper.querySelectorAll(".swatch-color-boa:nth-child(n+5)");button.classList.toggle("active"),hiddenSwatches.forEach(swatch=>{button.classList.contains("active")?swatch.classList.remove("hidden-swatch"):swatch.classList.add("hidden-swatch")}),button.classList.contains("active")&&swatchWrapper.appendChild(button)}function redirectProductPage(e){window.location.href=e.target.dataset.productUrl}function updateQuantitySelectorProductVariant(productBlock,swatch){const quantitySelectorInput=productBlock.querySelector(".quantity-selector__input"),newVariantId=swatch.dataset.key;quantitySelectorInput&&(quantitySelectorInput.dataset.productVariantId=newVariantId,quantitySelectorInput.setAttribute("name",`quantity-${newVariantId}`))}
2//# sourceMappingURL=/cdn/shop/t/230/assets/boa-custom-color-swatch-collection.js.map?v=152198589685414699871787739576

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.