39 lines
1.4 KiB
JavaScript
39 lines
1.4 KiB
JavaScript
(() => {
|
|
// 展开/收起子菜单
|
|
document.querySelectorAll('.nav-item.has-children').forEach(group => {
|
|
const btn = group.querySelector('.nav-item-btn');
|
|
const caret = btn.querySelector('.caret');
|
|
const children = group.querySelector('.nav-children');
|
|
btn.addEventListener('click', () => {
|
|
children.classList.toggle('open');
|
|
caret.classList.toggle('rotate');
|
|
});
|
|
});
|
|
|
|
// 侧边栏折叠功能
|
|
const sidebar = document.getElementById('sidebar');
|
|
const toggleBtn = document.getElementById('sidebar-toggle');
|
|
|
|
if (sidebar && toggleBtn) {
|
|
// 从 localStorage 恢复状态
|
|
const isCollapsed = localStorage.getItem('sidebar-collapsed') === 'true';
|
|
if (isCollapsed) {
|
|
sidebar.classList.add('collapsed');
|
|
}
|
|
|
|
toggleBtn.addEventListener('click', () => {
|
|
sidebar.classList.toggle('collapsed');
|
|
const collapsed = sidebar.classList.contains('collapsed');
|
|
localStorage.setItem('sidebar-collapsed', collapsed);
|
|
toggleBtn.title = collapsed ? '展开菜单' : '收起菜单';
|
|
|
|
// 触发窗口 resize 事件,让图表立即重绘
|
|
setTimeout(() => {
|
|
window.dispatchEvent(new Event('resize'));
|
|
}, 310); // 等待侧边栏动画完成 (300ms)
|
|
});
|
|
|
|
// 设置初始 title
|
|
toggleBtn.title = sidebar.classList.contains('collapsed') ? '展开菜单' : '收起菜单';
|
|
}
|
|
})(); |