Files
testpoint/static/js/catalogue-search.js
T
2026-07-29 10:47:40 +00:00

30 lines
1.2 KiB
JavaScript

(() => {
const search = document.getElementById('catalogue-search');
const grid = document.getElementById('catalogue-test-grid');
if (!search || !grid) return;
const cards = [...grid.querySelectorAll('.catalogue-compact-card')];
const buttons = [...document.querySelectorAll('.catalogue-part-filters [data-part]')];
const empty = document.getElementById('catalogue-search-empty');
let part = 'all';
const update = () => {
const query = search.value.trim().toLocaleLowerCase();
let visible = 0;
cards.forEach((card) => {
const matches = (!query || card.dataset.title.includes(query)) && (part === 'all' || card.dataset.part === part);
card.hidden = !matches;
if (matches) visible += 1;
});
empty.hidden = visible !== 0;
};
search.addEventListener('input', update);
buttons.forEach((button) => button.addEventListener('click', () => {
part = button.dataset.part;
buttons.forEach((item) => {
const active = item === button;
item.classList.toggle('is-active', active);
item.setAttribute('aria-pressed', active ? 'true' : 'false');
});
update();
}));
})();