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;
|
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 */
|
/* Mobile: sidebar as overlay */
|
||||||
@media (max-width: 768px) {
|
@media (max-width: 768px) {
|
||||||
.sage-sidebar {
|
.sage-sidebar {
|
||||||
|
|||||||
@ -105,6 +105,13 @@
|
|||||||
var isCollapsed = sidebar.classList.contains('collapsed');
|
var isCollapsed = sidebar.classList.contains('collapsed');
|
||||||
try { localStorage.setItem(SIDEBAR_KEY, isCollapsed); } catch(e) {}
|
try { localStorage.setItem(SIDEBAR_KEY, isCollapsed); } catch(e) {}
|
||||||
updateSidebarIcon(isCollapsed);
|
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
|
// Initialize SPA Router
|
||||||
@ -128,6 +135,8 @@
|
|||||||
console.log('[Shell] sage_sidebar not found');
|
console.log('[Shell] sage_sidebar not found');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
// Check if sidebar is currently collapsed before clearing
|
||||||
|
var isCollapsed = sidebar.el && sidebar.el.classList.contains('collapsed');
|
||||||
// Clear existing children
|
// Clear existing children
|
||||||
sidebar.subwidgets.forEach(function(w) { w.destroy && w.destroy(); });
|
sidebar.subwidgets.forEach(function(w) { w.destroy && w.destroy(); });
|
||||||
sidebar.subwidgets = [];
|
sidebar.subwidgets = [];
|
||||||
@ -142,6 +151,13 @@
|
|||||||
var w = await bricks.widgetBuild(desc, sidebar);
|
var w = await bricks.widgetBuild(desc, sidebar);
|
||||||
if (w) {
|
if (w) {
|
||||||
sidebar.addSubWidget(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');
|
console.log('[Shell] Menu reloaded');
|
||||||
}
|
}
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
@ -185,6 +201,16 @@
|
|||||||
if (btn && sidebar) {
|
if (btn && sidebar) {
|
||||||
var isCollapsed = sidebar.classList.contains('collapsed');
|
var isCollapsed = sidebar.classList.contains('collapsed');
|
||||||
updateSidebarIcon(isCollapsed);
|
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 {
|
} else {
|
||||||
setTimeout(retrySidebarIcon, 200);
|
setTimeout(retrySidebarIcon, 200);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user