(function(){ const SHOW_BEFORE_FADE_MS = 750; // show briefly before fading function getCartSkusFromMini() { const rows = document.querySelectorAll(".cart-dropdown table.minicart tr.item"); const skus = []; rows.forEach(row => { const raw = row.getAttribute("data-itemobj"); if (raw) { try { const item = JSON.parse(raw.replace(/"/g, '"')); if (item.item_sku) skus.push(item.item_sku); } catch(e) { console.error("Failed to parse itemobj", e); } } }); return skus; } function fadeAndHide(banner) { banner.classList.add("fading"); setTimeout(() => { banner.classList.remove("visible", "fading"); banner.style.display = "none"; }, 800); // match CSS transition } function updatePromoBanners() { const cartSkus = getCartSkusFromMini(); document.querySelectorAll(".promo-banner[data-promo-sku]").forEach(banner => { const sku = banner.dataset.promoSku; if (!sku) return; if (cartSkus.includes(sku)) { if (sessionStorage.getItem("justAdded-" + sku) === "true") { // Just added → show briefly, then fade banner.classList.add("visible"); setTimeout(() => { sessionStorage.removeItem("justAdded-" + sku); fadeAndHide(banner); }, SHOW_BEFORE_FADE_MS); } else { // Already in cart from before → hide instantly banner.classList.remove("visible"); banner.style.display = "none"; } } else { // Not in cart → show banner.classList.add("visible"); banner.style.display = "flex"; // or block if that's your layout banner.style.opacity = "1"; } }); } // Track when items are added to cart document.querySelectorAll(".paratus-add-to-cart-btn").forEach(btn => { btn.addEventListener("click", () => { const sku = btn.dataset.itemSku; if (sku) { sessionStorage.setItem("justAdded-" + sku, "true"); } }); }); document.addEventListener("DOMContentLoaded", updatePromoBanners); // Watch minicart changes const target = document.querySelector(".minicart_container"); if (target) { const observer = new MutationObserver(updatePromoBanners); observer.observe(target, { childList: true, subtree: true }); } })();