ERP/frontend/js/components/sidebar.js
2025-12-08 11:20:28 +08:00

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') ? '展开菜单' : '收起菜单';
}
})();