(function(){ const SHOW_BEFORE_FADE_MS = 750; // how long to show before fade const onCartPage = window.location.pathname === "/cart"; 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); } } }); // Fallback for /cart page (when minicart dropdown is disabled) if (skus.length === 0 && onCartPage) { document.querySelectorAll("tr.item .item_sku").forEach(el => { skus.push(el.textContent.trim()); }); } return skus; } function fadeAndHide(banner) { banner.classList.add("fading"); setTimeout(() => { banner.classList.remove("visible", "fading"); banner.style.display = "none"; }, 800); } 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 (onCartPage) { // On the cart page → hide immediately if in basket banner.classList.remove("visible"); banner.style.display = "none"; } else if (sessionStorage.getItem("justAdded-" + sku) === "true") { // Just added → show briefly then fade banner.classList.add("visible"); banner.style.display = "flex"; setTimeout(() => { sessionStorage.removeItem("justAdded-" + sku); fadeAndHide(banner); }, SHOW_BEFORE_FADE_MS); } else { // Already in cart elsewhere → hide immediately 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 add-to-cart events 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 }); } })();