(function () { 'use strict'; // Dostosuj timeout jeśli Twoje menu/renderowanie jest wolniejsze const RENDER_DELAY_MS = 300; const OBSERVER_TIMEOUT_MS = 5000; function hasProductElements() { const productSelectors = [ '.product-card', '.product-item', '.product-tile', '.product-list-item', '.product', '.product-grid .product', '.product-grid-item', '.products__item', '.product-list__item' ]; return productSelectors.some(sel => document.querySelector(sel)); } function emptyMessagePresent() { const emptyMessages = [ 'Brak produktów', 'Nie znaleziono produktów', 'Brak dostępnych produktów', 'Brak produktów w tej kategorii', 'Brak produktów spełniających kryteria' ]; const bodyText = (document.body.textContent || '').trim(); return emptyMessages.some(msg => bodyText.includes(msg)); } function isCategoryEmpty() { // 1) jeśli są widoczne kafelki/elementy produktów -> niepusta if (hasProductElements()) return false; // 2) jeśli istnieje kontener listy produktów i nie ma w nim elementów -> pusta const containers = ['.products', '.product-list', '.products-list', '.product-grid', '.items', '.productListing', '.listing']; for (const sel of containers) { const el = document.querySelector(sel); if (el) { // jeśli w kontenerze są jakiekolwiek elementy, uznajemy że nie jest pusta if (el.querySelector('*')) { // ale upewnijmy się, czy to nie są np. elementy pomocnicze - jeśli nie znajdziemy typowych produktów, // to dalej sprawdzamy emptyMessagePresent() if (el.querySelector('a[href*="-p"], .product-item, .product-card, img')) { return false; } } // kontener istnieje ale nie ma produktowych elementów -> pusta return true; } } // 3) eksplicytny komunikat o braku produktów if (emptyMessagePresent()) return true; // 4) fallback: nie wykryliśmy jednoznacznie pustej kategorii -> uznajemy że NIE jest pusta (bez ryzyka ukrycia) return false; } function hideMenuItemForCurrentCategory() { try { // selektor linków kategorii: zakładamy, że linki zawierają '-c' jak w przykładzie const links = document.querySelectorAll('a[aria-label][href*="-c"]'); if (!links.length) return; links.forEach(link => { try { const linkUrl = new URL(link.href, location.origin); // porównujemy ścieżki bez końcowych slashy const linkPath = linkUrl.pathname.replace(/\/+$/, ''); const currentPath = location.pathname.replace(/\/+$/, ''); if (linkPath === currentPath) { // próbujemy ukryć najbliższy sensowny kontener (li, .category-item, .col itp.) const container = link.closest('li, .category-item, .col, .menu-item, .col.align-self-start') || link.parentElement; if (container) { container.style.display = 'none'; console.log('[SKY-HIDE] Ukryto element menu dla kategorii:', link.href); } else { link.style.display = 'none'; console.log('[SKY-HIDE] Ukryto link kategorii:', link.href); } } } catch (e) { /* ignorujemy poszczególne linki */ } }); } catch (e) { console.error('[SKY-HIDE] Błąd w hideMenuItemForCurrentCategory:', e); } } function runOnceWhenReady() { // tylko jeśli URL wygląda jak strona kategorii (np. /Nazwa-c123) if (!/-c\d+/.test(location.href)) return; setTimeout(() => { if (!isCategoryEmpty()) { console.log('[SKY-HIDE] Kategoria niepusta — nic nie robię.'); return; } // ukryj element odpowiadający aktualnej kategorii hideMenuItemForCurrentCategory(); // obserwator na wypadek asynchronicznego ładowania menu (np. mega-menu renderuje po chwili) const observer = new MutationObserver(() => { hideMenuItemForCurrentCategory(); }); observer.observe(document.body, { childList: true, subtree: true }); // odłączamy obserwatora po pewnym czasie setTimeout(() => observer.disconnect(), OBSERVER_TIMEOUT_MS); }, RENDER_DELAY_MS); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', runOnceWhenReady); } else { runOnceWhenReady(); } })();
Darmowa dostawa od 250 PLN

Serwetka nr. 2766 World of Kids [33x33]

Symbol: 12000002766

Dostępność: Duża dostępność

Cena: 0.90

szt.

Dostępność i dostawa

Wysyłka w ciągu: 4 dni
Cena przesyłki:
13.5
  • Odbiór osobisty 0
  • Paczkomaty InPost 13.5
  • Kurier 15
Parametry:
PLU:1287
Nie ma jeszcze komentarzy ani ocen dla tego produktu.
Jakość
Funkcjonalność
Cena
Podpis
Opinia
Zadaj pytanie
Podpis:
E-mail:
Zadaj pytanie: