From 572eb0a4a9b4329f6e3469d41a97390b2347efca Mon Sep 17 00:00:00 2001 From: Vijaykant Yadav Date: Thu, 24 Oct 2024 13:18:37 +0530 Subject: [PATCH] fix: close sidebar on left side item click --- .../AppBuilder/LeftSidebar/LeftSidebar.jsx | 11 +++++++--- .../_stores/slices/leftSideBarSlice.js | 20 ++++++++++++++----- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/frontend/src/AppBuilder/LeftSidebar/LeftSidebar.jsx b/frontend/src/AppBuilder/LeftSidebar/LeftSidebar.jsx index 66eecfa201..8436adb513 100644 --- a/frontend/src/AppBuilder/LeftSidebar/LeftSidebar.jsx +++ b/frontend/src/AppBuilder/LeftSidebar/LeftSidebar.jsx @@ -50,9 +50,14 @@ export const LeftSidebar = ({ darkMode = false, switchDarkMode }) => { // const exposed const handleSelectedSidebarItem = (item) => { if (item === 'debugger') resetUnreadErrorCount(); - setSelectedSidebarItem(item); - if (!isSidebarOpen) toggleLeftSidebar(true); - pinned && localStorage.setItem('selectedSidebarItem', item); + if (item === selectedSidebarItem && !pinned) { + setSelectedSidebarItem(null); + } else { + setSelectedSidebarItem(item); + pinned && localStorage.setItem('selectedSidebarItem', item); + } + + toggleLeftSidebar(!isSidebarOpen); }; const setSideBarBtnRefs = (page) => (ref) => { diff --git a/frontend/src/AppBuilder/_stores/slices/leftSideBarSlice.js b/frontend/src/AppBuilder/_stores/slices/leftSideBarSlice.js index d0a59759eb..1670efd995 100644 --- a/frontend/src/AppBuilder/_stores/slices/leftSideBarSlice.js +++ b/frontend/src/AppBuilder/_stores/slices/leftSideBarSlice.js @@ -1,12 +1,22 @@ +const selectedItem = localStorage.getItem('selectedSidebarItem'); +const isLeftSideBarPinned = !!selectedItem; +const selectedSidebarItem = selectedItem; + const initialState = { - isLeftSideBarPinned: false, - selectedSidebarItem: false, - isSidebarOpen: false, + isSidebarOpen: isLeftSideBarPinned || !!selectedSidebarItem, + isLeftSideBarPinned, + selectedSidebarItem, }; -export const createLeftSideBarSlice = (set) => ({ +export const createLeftSideBarSlice = (set, get) => ({ ...initialState, - setIsLeftSideBarPinned: (status) => set(() => ({ isLeftSideBarPinned: status }), false, 'setIsLeftSideBarPinned'), + setIsLeftSideBarPinned: (status) => { + status + ? localStorage.setItem('selectedSidebarItem', get().selectedSidebarItem) + : localStorage.removeItem('selectedSidebarItem'); + + set(() => ({ isLeftSideBarPinned: status })); + }, setSelectedSidebarItem: (selectedSidebarItem) => set(() => ({ selectedSidebarItem }), false, 'setSelectedSidebarItem'), toggleLeftSidebar: (isSidebarOpen) =>