重建个人应用入口与静态博客,保留旧文章并支持本地发布
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
const tools = document.querySelector('.app-tools');
|
||||
if (tools) {
|
||||
tools.hidden = false;
|
||||
let category = 'all';
|
||||
const input = tools.querySelector('input');
|
||||
const cards = [...document.querySelectorAll('#app-grid .app-card')];
|
||||
const filter = () => {
|
||||
const q = input.value.trim().toLocaleLowerCase();
|
||||
let count = 0;
|
||||
for (const card of cards) {
|
||||
const visible = (category === 'all' || card.dataset.category === category) && card.dataset.search.toLocaleLowerCase().includes(q);
|
||||
card.hidden = !visible;
|
||||
if (visible) count++;
|
||||
}
|
||||
document.querySelector('#empty').hidden = count !== 0;
|
||||
};
|
||||
tools.querySelectorAll('[data-filter]').forEach(button => button.addEventListener('click', () => {
|
||||
category = button.dataset.filter;
|
||||
tools.querySelectorAll('[data-filter]').forEach(b => b.setAttribute('aria-pressed', String(b === button)));
|
||||
filter();
|
||||
}));
|
||||
input.addEventListener('input', filter);
|
||||
}
|
||||
// Only articles containing diagrams load the pinned renderer. Text remains readable without it.
|
||||
if (document.querySelector('.mermaid')) {
|
||||
import('https://cdn.jsdelivr.net/npm/mermaid@10.9.3/dist/mermaid.esm.min.mjs').then(({default: mermaid}) => {
|
||||
mermaid.initialize({startOnLoad:false, securityLevel:'strict', theme:'neutral', fontFamily:'system-ui'});
|
||||
return mermaid.run({querySelector:'.mermaid'});
|
||||
}).catch(() => {});
|
||||
}
|
||||
Reference in New Issue
Block a user