40 lines
1.8 KiB
JavaScript
40 lines
1.8 KiB
JavaScript
(function () {
|
|
var listing = document.getElementById('blog-listing');
|
|
var content = document.getElementById('blog-window-content');
|
|
var panels = document.querySelectorAll('.blog-post-panel');
|
|
var tagBtns = document.querySelectorAll('.blog-tag');
|
|
var items = document.querySelectorAll('.post-list-item');
|
|
|
|
// ── Tag filtering ──────────────────────────────
|
|
tagBtns.forEach(function (btn) {
|
|
btn.addEventListener('click', function () {
|
|
tagBtns.forEach(function (b) { b.classList.remove('active'); });
|
|
btn.classList.add('active');
|
|
var tag = btn.dataset.tag;
|
|
items.forEach(function (li) {
|
|
var tags = li.dataset.tags ? li.dataset.tags.split(' ') : [];
|
|
li.style.display = (tag === '*' || tags.indexOf(tag) !== -1) ? '' : 'none';
|
|
});
|
|
});
|
|
});
|
|
|
|
// ── Open a post ────────────────────────────────
|
|
document.querySelectorAll('.blog-open-post').forEach(function (link) {
|
|
link.addEventListener('click', function (e) {
|
|
e.preventDefault();
|
|
listing.classList.add('hidden');
|
|
panels.forEach(function (p) { p.classList.add('hidden'); });
|
|
var panel = document.getElementById('blog-post-' + link.dataset.postIdx);
|
|
if (panel) { panel.classList.remove('hidden'); content.scrollTop = 0; }
|
|
});
|
|
});
|
|
|
|
// ── Back to listing ────────────────────────────
|
|
document.querySelectorAll('.blog-back').forEach(function (btn) {
|
|
btn.addEventListener('click', function () {
|
|
panels.forEach(function (p) { p.classList.add('hidden'); });
|
|
listing.classList.remove('hidden');
|
|
content.scrollTop = 0;
|
|
});
|
|
});
|
|
}());
|