/* ===================================================== WIHAF — الجافاسكربت (خفيف) 1) زرا القائمة والبحث في الهيدر 2) زر الرجوع للأعلى + ظل الهيدر 3) تفاصيل المنتج: عرض المزيد / عرض أقل — ما فيه انتظار ولا مؤقتات: كل شي يشتغل أول ما تجهز الصفحة. — ترتيب الهيدر كله CSS، والقائمة تتبني لما تضغط عليها فقط. *** احذف أي كود جافاسكربت قديم لوهاف وحط هذا الملف وحده *** للتأكد: DevTools ← Elements ← وسم فيه data-wihaf-js="v19" ===================================================== */ (function () { 'use strict'; var d = document, root = d.documentElement; if (root.getAttribute('data-wihaf-js')) return; root.setAttribute('data-wihaf-js', 'v19'); var raf = window.requestAnimationFrame || function (f) { return setTimeout(f, 16); }; var reduce = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches; var MENU = '.main-nav-container .main-menu, .main-nav-container salla-menu, .main-nav-container .navbar-nav, .main-menu'; function ready(fn) { if (d.readyState === 'loading') d.addEventListener('DOMContentLoaded', fn); else fn(); } function txt(a) { return (a.textContent || '').replace(/\s+/g, ' ').trim(); } /* ---------- 1) الهيدر: زر القائمة + زر البحث ---------- */ var SEARCH_SVG = ''; // قائمة التصنيفات (رئيسي ← فرعي) من قائمة الهيدر الأصلية، بدون تكرار function list(ul, lvl) { var out = d.createElement('ul'), seen = {}; out.className = 'wihaf-drawer__list wihaf-drawer__list--l' + lvl; [].forEach.call(ul.children, function (li) { var sub = li.querySelector('ul'); var a = [].filter.call(li.querySelectorAll('a[href]'), function (x) { return !sub || !sub.contains(x); })[0]; var t = a && txt(a); if (!t || seen[t]) return; seen[t] = 1; var item = d.createElement('li'), l = d.createElement('a'); l.href = a.getAttribute('href'); l.textContent = t; item.appendChild(l); if (sub && lvl < 2) item.appendChild(list(sub, lvl + 1)); out.appendChild(item); }); return out; } function flat(m) { var out = d.createElement('ul'), seen = {}; out.className = 'wihaf-drawer__list wihaf-drawer__list--l0'; [].forEach.call(m.querySelectorAll('a[href]'), function (a) { var t = txt(a), h = a.getAttribute('href'); if (!t || h === '#' || seen[h + t]) return; seen[h + t] = 1; var li = d.createElement('li'), l = d.createElement('a'); l.href = h; l.textContent = t; li.appendChild(l); out.appendChild(li); }); return out; } function buildMenu() { var m = d.querySelector(MENU); if (!m) return null; var ul = m.matches('ul') ? m : m.querySelector('ul'); var l = ul ? list(ul, 0) : null; if (!l || !l.children.length) l = flat(m); return l.children.length ? l : null; } function header() { var row = d.querySelector('.main-nav-container .container > .flex.items-stretch') || d.querySelector('.main-nav-container .container'); if (!row) return; var g = d.createElement('div'); g.className = 'wihaf-hd-start'; g.innerHTML = '' + ''; row.insertBefore(g, row.firstChild); var burger = g.firstChild, searchBtn = g.lastChild; // البحث: نركّز على حقل سلة الأصلي فتفتح نافذتها searchBtn.addEventListener('click', function () { var i = d.querySelector('salla-search input'); if (i) { i.focus(); i.click(); } }); // القائمة: الدرج يتبني أول مرة تضغط var drawer = null, overlay = null, nav = null, tries = 0; function fill() { var l = buildMenu(); if (l) { nav.textContent = ''; nav.appendChild(l); } else if (++tries < 15) setTimeout(fill, 400); // القائمة لسا تتحمّل } function create() { overlay = d.createElement('div'); overlay.className = 'wihaf-drawer-overlay'; drawer = d.createElement('aside'); drawer.className = 'wihaf-drawer'; drawer.setAttribute('role', 'dialog'); drawer.setAttribute('aria-modal', 'true'); drawer.setAttribute('aria-label', 'القائمة'); drawer.innerHTML = '