(function() { 'use strict'; // دریافت تنظیمات از wp_localize_script const config = { siteUrl: karmatusData.siteUrl, ajaxUrl: karmatusData.ajaxUrl, nonce: karmatusData.nonce, isMobile: window.innerWidth <= 768 }; let state = { query: '', page: 1, isLoading: false, hasMore: true }; let history = JSON.parse(localStorage.getItem('karmatus_history') || '[]'); const debounce = (func, wait) => { let timeout; return function executedFunction(...args) { const later = () => { clearTimeout(timeout); func(...args); }; clearTimeout(timeout); timeout = setTimeout(later, wait); }; }; // تزریق فرم جستجو فقط در دسکتاپ const injectDesktop = () => { if (!config.isMobile) { const target = document.querySelector('.dina-search-con'); if (target && !target.querySelector('.dina-search-form')) { target.innerHTML = `
`; const deskInput = target.querySelector('.search-input'); if (deskInput) deskInput.addEventListener('input', (e) => handleSearch(e.target.value, true)); } } }; const renderHistory = () => { const box = document.querySelector('.karmatus-history-box'); const items = document.querySelector('.history-items'); if (!history.length) { if (box) box.style.display = 'none'; return; } if (box) box.style.display = 'block'; if (items) { items.innerHTML = history.map(t => `${t}` ).join(''); } }; const performSearch = (query, isDesktop, isLoadMore) => { if (query.length < 2) return; state.isLoading = true; const els = { prodGrid: document.querySelector('.karmatus-products-grid'), catGrid: document.querySelector('.karmatus-cats-grid'), loadMore: document.querySelector('.karmatus-load-more-btn'), msg: document.querySelector('.karmatus-status-msg'), desktopRes: document.querySelector('.karmatus-desktop-results') }; if (isLoadMore && els.loadMore) { els.loadMore.innerText = 'در حال بارگذاری...'; els.loadMore.disabled = true; } else if (!isDesktop) { if (state.page === 1 && els.prodGrid) els.prodGrid.innerHTML = `
کاوش در میان ۱۰۰,۰۰۰+ محصول...
`; if (els.msg) els.msg.style.display = 'none'; } else if (isDesktop && els.desktopRes) { els.desktopRes.classList.add('active'); els.desktopRes.innerHTML = `
در حال جستجو...
`; } const params = new URLSearchParams(); params.append('action', 'karmatus_search_load'); params.append('query', query); params.append('page', state.page); params.append('nonce', config.nonce); fetch(config.ajaxUrl, { method: 'POST', body: params }) .then(res => res.json()) .then(data => { state.isLoading = false; if (!isDesktop) { if (state.page === 1) els.prodGrid.innerHTML = ''; if (state.page === 1 && data.categories.length && els.catGrid) { els.catGrid.innerHTML = data.categories.map(c => `
${c.name}
${c.type}
` ).join(''); } if (data.products.length && els.prodGrid) { const productsHTML = data.products.map(p => `
${p.title}
${p.price}
` ).join(''); els.prodGrid.insertAdjacentHTML('beforeend', productsHTML); } if (els.loadMore) { state.hasMore = (state.page < data.max_pages); els.loadMore.style.display = state.hasMore ? 'block' : 'none'; els.loadMore.innerText = 'نمایش نتایج بیشتر'; els.loadMore.disabled = false; } if (state.page === 1 && !data.products.length && !data.categories.length && els.msg) { els.msg.style.display = 'block'; els.msg.innerText = 'هیچ نتیجه‌ای یافت نشد.'; } if (state.page === 1 && (data.products.length || data.categories.length)) { history = history.filter(h => h !== query); history.unshift(query); history = history.slice(0, 6); localStorage.setItem('karmatus_history', JSON.stringify(history)); } } else { let html = ''; if (data.categories.length) { html += `
دسته‌بندی و کالکشن‌ها
`; html += data.categories.map(c => `${c.name} ${c.type}`).join(''); } if (data.products.length) { html += `
محصولات
`; html += data.products.map(p => `
${p.title}
${p.price}
` ).join(''); html += `مشاهده همه نتایج`; } els.desktopRes.innerHTML = html || '
نتیجه‌ای یافت نشد.
'; } }) .catch(err => { console.error(err); state.isLoading = false; }); }; const handleSearch = debounce((query, isDesktop) => { state.query = query; state.page = 1; state.hasMore = true; if (!isDesktop) { const pGrid = document.querySelector('.karmatus-products-grid'); const cGrid = document.querySelector('.karmatus-cats-grid'); if (pGrid) pGrid.innerHTML = ''; if (cGrid) cGrid.innerHTML = ''; document.querySelector('.karmatus-load-more-btn').style.display = 'none'; } performSearch(query, isDesktop, false); }, 600); document.addEventListener("DOMContentLoaded", function() { injectDesktop(); document.body.addEventListener('click', function(e) { if (e.target.closest('.karmatus-glass-bar')) { document.querySelector('.karmatus-search-overlay').classList.add('active'); document.querySelector('.karmatus-search-page').classList.add('active'); renderHistory(); setTimeout(() => document.querySelector('.karmatus-real-input').focus(), 300); } if (e.target.closest('.karmatus-search-back')) { document.querySelector('.karmatus-search-page').classList.remove('active'); setTimeout(() => document.querySelector('.karmatus-search-overlay').classList.remove('active'), 300); } if (e.target.classList.contains('hist-item')) { const term = e.target.dataset.term; document.querySelector('.karmatus-real-input').value = term; handleSearch(term, false); } if (e.target.classList.contains('clear-history')) { history = []; localStorage.setItem('karmatus_history', '[]'); renderHistory(); } if (e.target.classList.contains('karmatus-load-more-btn')) { if (!state.isLoading && state.hasMore) { state.page++; performSearch(state.query, false, true); } } if (config.isMobile === false && !e.target.closest('.dina-search-con')) { const res = document.querySelector('.karmatus-desktop-results'); if (res) res.classList.remove('active'); } }); const mobInput = document.querySelector('.karmatus-real-input'); if (mobInput) mobInput.addEventListener('input', (e) => handleSearch(e.target.value, false)); }); })(); دیدگاه‌ها برای: قاب موبایل آرکتیک مانکیز | کالکشن Music مدل AM-8 https://mail.karmatus.com/shop/%d9%82%d8%a7%d8%a8-%d9%85%d9%88%d8%a8%d8%a7%db%8c%d9%84-%d8%b7%d8%b1%d8%ad-%da%af%d8%b1%d9%88%d9%87-%d8%a2%d8%b1%da%a9%d8%aa%db%8c%da%a9-%d9%85%d8%a7%d9%86%da%a9%db%8c%d8%b2-arctic-monkeys-8/ خرید آنلاین محصولات چاپ گروه انیمه، فیلم، سریال، گیم، موسیقی و... Wed, 31 Dec 2025 09:30:43 +0000 hourly 1