/** * AKSRT Widget Set * * Handles widget-local interactions and floating QR widgets. * * @package AKSRT */ (function () { 'use strict'; function restHeaders() { var headers = { Accept: 'application/json' }; if (window.aksrtData && aksrtData.restNonce) { headers['X-WP-Nonce'] = aksrtData.restNonce; } return headers; } function initWidgetTabs() { document.querySelectorAll('.widget-tab-posts[data-aksrt-tab-posts]').forEach(function (widget) { if (widget.dataset.aksrtWidgetTabsBound === '1') return; widget.dataset.aksrtWidgetTabsBound = '1'; var tabs = widget.querySelectorAll('.widget-tab-posts__tab'); var panels = widget.querySelectorAll('.widget-tab-posts__panel'); if (!tabs.length || !panels.length) return; var rest = widget.getAttribute('data-rest') || ''; var defaultCount = widget.getAttribute('data-count') || '5'; function loadPanel(panel, tab) { if (!panel || panel.getAttribute('data-loaded') === '1' || !rest) return; var orderby = tab.getAttribute('data-orderby') || 'date'; var cat = tab.getAttribute('data-cat') || '0'; var tabCount = tab.getAttribute('data-tab-count') || '0'; var style = widget.getAttribute('data-style') || 'mini'; var paginate = widget.getAttribute('data-paginate') || 'none'; var qs = new URLSearchParams({ count: defaultCount, orderby: orderby, cat: cat, tab_count: tabCount, style: style, paginate: paginate, limit_day: tab.getAttribute('data-limit-day') || '0', pay_type: tab.getAttribute('data-pay-type') || '', }); var url = rest + (rest.indexOf('?') > -1 ? '&' : '?') + qs.toString(); panel.classList.add('is-ajax-loading'); fetch(url, { credentials: 'same-origin', headers: restHeaders() }) .then(function (r) { return r.json(); }) .then(function (j) { var d = (j && j.data) || j || {}; var html = d.html || ''; var pag = d.paginate_html || d.paginateHtml || ''; panel.innerHTML = (html || '
') + (pag || ''); panel.setAttribute('data-loaded', '1'); panel.classList.remove('is-ajax-loading'); }) .catch(function () { panel.classList.remove('is-ajax-loading'); }); } tabs.forEach(function (tab) { tab.addEventListener('click', function () { var target = tab.getAttribute('data-tab'); tabs.forEach(function (item) { var active = item === tab; item.classList.toggle('active', active); item.classList.toggle('is-active', active); item.setAttribute('aria-selected', active ? 'true' : 'false'); }); panels.forEach(function (panel) { var active = panel.getAttribute('data-tab-panel') === target; panel.classList.toggle('active', active); panel.classList.toggle('is-active', active); if (active) { panel.removeAttribute('hidden'); loadPanel(panel, tab); } else { panel.setAttribute('hidden', ''); } }); }); }); }); } // Homepage category tabs (was inline in CategoryTabsWidget). function initCategoryTabs() { document.querySelectorAll('[data-aksrt-home-cat-tabs]').forEach(function (section) { if (section.dataset.aksrtCatTabsBound === '1') return; section.dataset.aksrtCatTabsBound = '1'; var rest = section.getAttribute('data-rest') || ''; var count = section.getAttribute('data-count') || '6'; var layout = section.getAttribute('data-layout') || 'card'; var columns = section.getAttribute('data-columns') || '3'; var context = section.getAttribute('data-context') || 'homepage'; var showMore = section.getAttribute('data-show-more') === '1'; var tabs = [].slice.call(section.querySelectorAll('.widget-tab-posts__tab')); var panels = [].slice.call(section.querySelectorAll('.widget-tab-posts__panel')); if (!tabs.length || !panels.length || !rest) return; function load(panel) { if (!panel || panel.getAttribute('data-loaded') === '1') return; var cat = panel.getAttribute('data-cat') || '0'; var more = panel.getAttribute('data-more') || ''; var qs = new URLSearchParams({ cat: cat, count: String(count), layout: layout, columns: String(columns), context: context, }); var url = rest + (rest.indexOf('?') > -1 ? '&' : '?') + qs.toString(); panel.classList.add('is-ajax-loading'); fetch(url, { credentials: 'same-origin', headers: restHeaders() }) .then(function (r) { return r.json(); }) .then(function (j) { var d = (j && j.data) || j || {}; var html = d.html || ''; if (showMore && more) { html += ''; } panel.innerHTML = html || ''; panel.setAttribute('data-loaded', '1'); panel.classList.remove('is-ajax-loading'); }) .catch(function () { panel.classList.remove('is-ajax-loading'); }); } tabs.forEach(function (tab) { tab.addEventListener('click', function () { var target = tab.getAttribute('data-tab'); tabs.forEach(function (item) { var active = item === tab; item.classList.toggle('active', active); item.setAttribute('aria-selected', active ? 'true' : 'false'); }); panels.forEach(function (panel) { var active = panel.getAttribute('data-tab-panel') === target; panel.classList.toggle('active', active); if (active) { panel.removeAttribute('hidden'); load(panel); } else { panel.setAttribute('hidden', ''); } }); }); }); }); } // Product multi-tab. function initProductTabs() { document.querySelectorAll('[data-aksrt-product-tab]').forEach(function (root) { if (root.dataset.aksrtProductTabBound === '1') return; root.dataset.aksrtProductTabBound = '1'; var rest = root.getAttribute('data-rest') || ''; var per = root.getAttribute('data-per-page') || '8'; var style = root.getAttribute('data-style') || 'default'; var paginate = root.getAttribute('data-paginate') || 'ajax'; function skeleton(n) { n = Math.max(1, Math.min(12, parseInt(n, 10) || 4)); var html = '