From 3eeaa72145ba09ddb8161d16b6e93a554099d1ca Mon Sep 17 00:00:00 2001 From: salirezav Date: Wed, 14 Jan 2026 16:04:28 -0500 Subject: [PATCH] Implement sidebar state persistence in DashboardLayout - Changed initial state of sidebar expansion to false. - Added functions to save and retrieve sidebar state from localStorage. - Updated useEffect to load saved sidebar state on component mount. - Modified toggleSidebar function to save the new state after toggling. --- .../src/components/DashboardLayout.tsx | 34 +++++++++++++++---- 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/management-dashboard-web-app/src/components/DashboardLayout.tsx b/management-dashboard-web-app/src/components/DashboardLayout.tsx index 3273303..af4a5e4 100755 --- a/management-dashboard-web-app/src/components/DashboardLayout.tsx +++ b/management-dashboard-web-app/src/components/DashboardLayout.tsx @@ -26,9 +26,8 @@ export function DashboardLayout({ onLogout, currentRoute }: DashboardLayoutProps const [loading, setLoading] = useState(true) const [error, setError] = useState(null) const [currentView, setCurrentView] = useState('dashboard') - const [isExpanded, setIsExpanded] = useState(true) + const [isExpanded, setIsExpanded] = useState(false) const [isMobileOpen, setIsMobileOpen] = useState(false) - const [isHovered, setIsHovered] = useState(false) // Valid dashboard views const validViews = ['dashboard', 'user-management', 'experiments', 'analytics', 'data-entry', 'vision-system', 'scheduling', 'video-library', 'profile'] @@ -53,6 +52,26 @@ export function DashboardLayout({ onLogout, currentRoute }: DashboardLayoutProps } } + // Save sidebar expanded state to localStorage + const saveSidebarState = (expanded: boolean) => { + try { + localStorage.setItem('sidebar-expanded', String(expanded)) + } catch (error) { + console.warn('Failed to save sidebar state to localStorage:', error) + } + } + + // Get saved sidebar state from localStorage + const getSavedSidebarState = (): boolean => { + try { + const saved = localStorage.getItem('sidebar-expanded') + return saved === 'true' + } catch (error) { + console.warn('Failed to get saved sidebar state from localStorage:', error) + return false + } + } + // Check if user has access to a specific view const hasAccessToView = (view: string): boolean => { if (!user) return false @@ -80,6 +99,9 @@ export function DashboardLayout({ onLogout, currentRoute }: DashboardLayoutProps useEffect(() => { fetchUserProfile() + // Load saved sidebar state + const savedSidebarState = getSavedSidebarState() + setIsExpanded(savedSidebarState) }, []) // Restore saved view when user is loaded @@ -144,7 +166,9 @@ export function DashboardLayout({ onLogout, currentRoute }: DashboardLayoutProps } const toggleSidebar = () => { - setIsExpanded(!isExpanded) + const newState = !isExpanded + setIsExpanded(newState) + saveSidebarState(newState) } const toggleMobileSidebar = () => { @@ -300,8 +324,6 @@ export function DashboardLayout({ onLogout, currentRoute }: DashboardLayoutProps onViewChange={handleViewChange} isExpanded={isExpanded} isMobileOpen={isMobileOpen} - isHovered={isHovered} - setIsHovered={setIsHovered} /> {/* Backdrop for mobile */} {isMobileOpen && ( @@ -312,7 +334,7 @@ export function DashboardLayout({ onLogout, currentRoute }: DashboardLayoutProps )}