feat: wire Menu collapse/expand to sidebar toggle button + menu-collapsed CSS
This commit is contained in:
parent
e2687054df
commit
37b648da0e
@ -143,6 +143,18 @@ body {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* Menu collapsed state - hide text labels, center icons */
|
||||
.menu-collapsed .filler {
|
||||
display: none !important;
|
||||
}
|
||||
.menu-collapsed .menuitem {
|
||||
justify-content: center;
|
||||
padding: 8px 0;
|
||||
}
|
||||
.menu-collapsed .menuitem:hover {
|
||||
background-color: var(--sage-bg-hover);
|
||||
}
|
||||
|
||||
/* Mobile: sidebar as overlay */
|
||||
@media (max-width: 768px) {
|
||||
.sage-sidebar {
|
||||
|
||||
@ -105,6 +105,13 @@
|
||||
var isCollapsed = sidebar.classList.contains('collapsed');
|
||||
try { localStorage.setItem(SIDEBAR_KEY, isCollapsed); } catch(e) {}
|
||||
updateSidebarIcon(isCollapsed);
|
||||
// Toggle Menu widget collapse state
|
||||
if (typeof bricks !== 'undefined') {
|
||||
var menu = bricks.getWidgetById('global_nav_menu', bricks.app);
|
||||
if (menu && menu.toggle_collapse) {
|
||||
menu.toggle_collapse();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Initialize SPA Router
|
||||
@ -128,6 +135,8 @@
|
||||
console.log('[Shell] sage_sidebar not found');
|
||||
return;
|
||||
}
|
||||
// Check if sidebar is currently collapsed before clearing
|
||||
var isCollapsed = sidebar.el && sidebar.el.classList.contains('collapsed');
|
||||
// Clear existing children
|
||||
sidebar.subwidgets.forEach(function(w) { w.destroy && w.destroy(); });
|
||||
sidebar.subwidgets = [];
|
||||
@ -142,6 +151,13 @@
|
||||
var w = await bricks.widgetBuild(desc, sidebar);
|
||||
if (w) {
|
||||
sidebar.addSubWidget(w);
|
||||
// Re-apply collapsed state to newly built menu
|
||||
if (isCollapsed) {
|
||||
var menu = bricks.getWidgetById('global_nav_menu', bricks.app);
|
||||
if (menu && menu.collapse) {
|
||||
menu.collapse();
|
||||
}
|
||||
}
|
||||
console.log('[Shell] Menu reloaded');
|
||||
}
|
||||
} catch(e) {
|
||||
@ -185,6 +201,16 @@
|
||||
if (btn && sidebar) {
|
||||
var isCollapsed = sidebar.classList.contains('collapsed');
|
||||
updateSidebarIcon(isCollapsed);
|
||||
// Apply collapsed state to Menu if sidebar was already collapsed
|
||||
if (isCollapsed && typeof bricks !== 'undefined') {
|
||||
var menu = bricks.getWidgetById('global_nav_menu', bricks.app);
|
||||
if (menu && menu.collapse) {
|
||||
menu.collapse();
|
||||
} else {
|
||||
setTimeout(retrySidebarIcon, 200);
|
||||
return;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
setTimeout(retrySidebarIcon, 200);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user