`);
}
// Scan all current recommended products
document.querySelectorAll(".each-recommended-products").forEach(addFreeShippingBadge);
// Watch for future cloned slides (Owl Carousel may clone DOM)
const recommendationsContainer = document.querySelector(".recommended-products-response");
if (recommendationsContainer) {
const observer = new MutationObserver(function(mutations) {
mutations.forEach(mutation => {
mutation.addedNodes.forEach(node => {
if (node.nodeType === 1 && node.matches(".each-recommended-products, .each-recommended-products *")) {
// Run badge function on each recommended product inside added nodes
node.closest(".each-recommended-products") && addFreeShippingBadge(node.closest(".each-recommended-products"));
}
});
});
});
observer.observe(recommendationsContainer, { childList: true, subtree: true });
}
}, 200); // delay after window.load
});
// featured products in the homepage
document.addEventListener("DOMContentLoaded", function () {
document.querySelectorAll(".featured-products-module .image-wrapper").forEach(wrapper => {
wrapper.style.marginTop = "40px";
// Check if free-shipping image exists
if (wrapper.querySelector("img.free-shipping")) {
// Prevent duplicates
if (!wrapper.querySelector(".catalog-product-card-chips")) {
wrapper.insertAdjacentHTML("beforeend", `
Free Shipping
`);
}
}
});
});
// end of featured products in the homepage
// start badge free ship in PDP
document.addEventListener("DOMContentLoaded", function () {
document.querySelectorAll("#layout_product .product-images-module").forEach(module => {
// Check if free-shipping exists anywhere inside this module
if (module.querySelector(".free-shipping")) {
// Choose where to inject the chip (main image area is best)
const target = module.querySelector(".main-image");
if (target && !target.querySelector(".catalog-product-card-chips")) {
target.insertAdjacentHTML("afterbegin", `
Free Shipping
`);
}
}
});
});
// end of PDP Free Ship
// start free ship in cart page
document.addEventListener("DOMContentLoaded", function () {
document.querySelectorAll("#layout_cart .catalog-product.free-shipping").forEach(product => {
// Choose insertion target (image column is ideal)
const target = product.querySelector(".product-image-col");
if (target && !target.querySelector(".catalog-product-card-chips")) {
target.insertAdjacentHTML("afterbegin", `