File: /var/www/viitorx.stgviitor.com/wp-content/themes/viitorx/js/blog-listing.js
/**
* Blog listing: live search via admin-ajax (no full page reload).
*/
(function () {
'use strict';
var grid = document.getElementById('blog-grid-results');
var input = document.getElementById('blog-search-input');
var form = document.getElementById('blog-search-form');
var paginationWrap = document.getElementById('blog-pagination-wrap');
var gridRoot = document.getElementById('blog-grid');
if (!grid || !input || !form || typeof viitorxBlogListing === 'undefined') {
return;
}
var ajaxUrl = viitorxBlogListing.ajaxUrl;
var nonce = viitorxBlogListing.nonce;
var debounceMs = 320;
var timer;
function setLoading(on) {
if (gridRoot) {
gridRoot.classList.toggle('blog-grid--loading', on);
gridRoot.setAttribute('aria-busy', on ? 'true' : 'false');
}
}
function fetchPosts(search) {
var body = new URLSearchParams();
body.set('action', 'viitorx_blog_search');
body.set('nonce', nonce);
body.set('s', search);
body.set('paged', '1');
setLoading(true);
fetch(ajaxUrl, {
method: 'POST',
credentials: 'same-origin',
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
},
body: body.toString(),
})
.then(function (r) {
return r.json();
})
.then(function (res) {
if (!res || !res.success || !res.data) {
return;
}
grid.innerHTML = res.data.html;
if (paginationWrap) {
if (res.data.showPagination && res.data.paginationHtml) {
paginationWrap.innerHTML = res.data.paginationHtml;
paginationWrap.hidden = false;
} else {
paginationWrap.innerHTML = '';
paginationWrap.hidden = true;
}
}
})
.catch(function () {})
.finally(function () {
setLoading(false);
});
}
form.addEventListener('submit', function (e) {
e.preventDefault();
clearTimeout(timer);
fetchPosts(input.value.trim());
});
input.addEventListener('input', function () {
clearTimeout(timer);
timer = setTimeout(function () {
fetchPosts(input.value.trim());
}, debounceMs);
});
})();