diff --git a/wwwroot/shell_theme.css b/wwwroot/shell_theme.css index bd5f453..5b605e9 100644 --- a/wwwroot/shell_theme.css +++ b/wwwroot/shell_theme.css @@ -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 { diff --git a/wwwroot/shell_theme.js b/wwwroot/shell_theme.js index 89f8de3..91f0bc6 100644 --- a/wwwroot/shell_theme.js +++ b/wwwroot/shell_theme.js @@ -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); }