(function(){ const SHOW_BEFORE_FADE_MS = 750; // show briefly before fading function getCartSkus() { let skus = []; // 🔹 Minicart rows const miniRows = document.querySelectorAll(".cart-dropdown table.minicart tr.item"); miniRows.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); } } }); // 🔹 Basket page rows if (skus.length === 0) { const basketRows = document.querySelectorAll("tr.item .item_sku"); basketRows.forEach(el => { const sku = el.textContent.trim(); if (sku) skus.push(sku); }); } 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 = getCartSkus(); 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"; 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 (not basket page) const target = document.querySelector(".minicart_container"); if (target) { const observer = new MutationObserver(updatePromoBanners); observer.observe(target, { childList: true, subtree: true }); } })();