diff --git a/assets/css/frontend/widget-batch5.css b/assets/css/frontend/widget-batch5.css index ddc37d63..c5d94b39 100644 --- a/assets/css/frontend/widget-batch5.css +++ b/assets/css/frontend/widget-batch5.css @@ -2479,3 +2479,41 @@ a.main-color > .icon-cover-card:hover, .widget-tab-posts__skeleton .placeholder.k1 { width: 80%; } .widget-tab-posts__skeleton .placeholder.s1 { width: 48%; } .posts-mini-lists.aksrt-main-posts { /* zibll mini outer */ } + + +/* batch37-39 residual */ +.aksrt-post-pay-box { position: relative; overflow: hidden; } +.aksrt-post-pay-box .pay-tag.abs-center { + position: absolute; top: 12px; left: 50%; transform: translateX(-50%); + z-index: 2; padding: 2px 10px; border-radius: 999px; background: rgba(0,0,0,.35); color: #fff; font-size: 12px; +} +.aksrt-post-pay-box__hero { position: relative; overflow: hidden; min-height: 120px; color: #fff; } +.aksrt-post-pay-box__blob { opacity: .55; pointer-events: none; } +.aksrt-post-pay-box__blob--a { height: 200px; left: 75%; width: 200px; top: -34%; border-radius: 100%; } +.aksrt-post-pay-box__blob--b { height: 305px; width: 337px; left: -229px; border-radius: 100%; opacity: .7; } +.aksrt-post-pay-box .box-body { position: relative; z-index: 1; } +.aksrt-post-pay-box .img-badge.hot { position: absolute; top: 8px; right: 8px; z-index: 2; } +.aksrt-post-pay-box .but.btn-block { width: 100%; justify-content: center; } +.aksrt-main-posts__skeleton .placeholder-row, +.aksrt-product-tab__skeleton .placeholder-row { + display: flex; flex-direction: column; gap: 8px; margin-bottom: 12px; +} +.aksrt-main-posts__skeleton .posts-mini.placeholder-row { flex-direction: row; align-items: center; gap: 10px; } +.aksrt-main-posts__skeleton .thumb-placeholder, +.aksrt-product-tab__skeleton .placeholder.thumb { + width: 72px; height: 54px; border-radius: 8px; background: var(--surface-2, #eee); +} +.aksrt-product-tab__skeleton .placeholder.thumb { width: 100%; height: 100px; } +.aksrt-main-posts__skeleton .placeholder.k1, +.aksrt-main-posts__skeleton .placeholder.t1, +.aksrt-main-posts__skeleton .placeholder.s1, +.aksrt-product-tab__skeleton .placeholder.k1, +.aksrt-product-tab__skeleton .placeholder.s1 { + height: 12px; border-radius: 4px; background: var(--surface-2, #eee); +} +.aksrt-main-posts__skeleton .placeholder.k1, +.aksrt-product-tab__skeleton .placeholder.k1 { width: 80%; } +.aksrt-main-posts__skeleton .placeholder.s1, +.aksrt-product-tab__skeleton .placeholder.s1 { width: 48%; } +.aksrt-main-posts[data-load-mode="ajax"].is-ajax-loading { opacity: .85; } +.widget-search-box.is-affix { position: sticky; top: 72px; } diff --git a/assets/js/widget-set.js b/assets/js/widget-set.js index 5ee91678..6bd366d6 100644 --- a/assets/js/widget-set.js +++ b/assets/js/widget-set.js @@ -9,8 +9,16 @@ (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').forEach(function (widget) { + document.querySelectorAll('.widget-tab-posts[data-aksrt-tab-posts]').forEach(function (widget) { if (widget.dataset.aksrtWidgetTabsBound === '1') return; widget.dataset.aksrtWidgetTabsBound = '1'; @@ -37,11 +45,7 @@ }); var url = rest + (rest.indexOf('?') > -1 ? '&' : '?') + qs.toString(); panel.classList.add('is-ajax-loading'); - var headers = { Accept: 'application/json' }; - if (window.aksrtData && aksrtData.restNonce) { - headers['X-WP-Nonce'] = aksrtData.restNonce; - } - fetch(url, { credentials: 'same-origin', headers: headers }) + fetch(url, { credentials: 'same-origin', headers: restHeaders() }) .then(function (r) { return r.json(); }) .then(function (j) { var d = (j && j.data) || j || {}; @@ -59,16 +63,16 @@ 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); @@ -81,6 +85,265 @@ }); } + // 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', ''); + } + }); + }); + }); + }); + } + + // Forum multi-tab topics. + function initForumTabTopics() { + document.querySelectorAll('.aksrt-ftab[data-aksrt-ftab]').forEach(function (root) { + if (root.dataset.aksrtFtabBound === '1') return; + root.dataset.aksrtFtabBound = '1'; + var rest = root.getAttribute('data-rest') || ''; + var count = root.getAttribute('data-count') || '6'; + var style = root.getAttribute('data-style') || 'mini'; + var plate = root.getAttribute('data-plate') || '0'; + var btns = [].slice.call(root.querySelectorAll('.aksrt-ftab__btn')); + var panels = [].slice.call(root.querySelectorAll('.aksrt-ftab__panel')); + + function load(panel, orderby) { + if (!panel || panel.getAttribute('data-loaded') === '1' || !rest) return; + var qs = new URLSearchParams({ + page: '1', + count: count, + orderby: orderby || 'date', + style: style, + plate: plate, + period: 'all', + paginate: 'none', + }); + 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 || ''; + panel.innerHTML = html || '