diff --git a/src/components/layouts/dashboard/headerWithSidebar/Sidebar/SidebarListItems.jsx b/src/components/layouts/dashboard/headerWithSidebar/Sidebar/SidebarListItems.jsx index 05ee6df..533d2b8 100644 --- a/src/components/layouts/dashboard/headerWithSidebar/Sidebar/SidebarListItems.jsx +++ b/src/components/layouts/dashboard/headerWithSidebar/Sidebar/SidebarListItems.jsx @@ -8,7 +8,7 @@ const SidebarListItems = ({ menuItem, dispatch }) => { <> + actionId === item.id + ? { ...item, showSubitems: !item.showSubitems } + : { ...item, showSubitems: false } + ); +} + function reducer(state, action) { switch (action.type) { case "UPDATE_MENU": const _permissions = action.permissions || []; - const filteredPageMenu = filterMenuItems(state, ["all", ..._permissions]); - return filteredPageMenu; + return filterMenuItems(state, ["all", ..._permissions]); + case "COLLAPSE_MENU": - return state.map((item) => - action.id == item.id - ? { - ...item, - showSubitems: !item.showSubitems, - } - : item, - ); + return state.map((item) => ({ + ...item, + showSubitems: item.id === action.id ? !item.showSubitems : false, + })); + case "COLLAPSE_SUB_ITEMS": - return state.map((item) => { - return item.hasSubitems + return state.map((item) => + item.hasSubitems + ? { ...item, Subitems: toggleSubitems(item.Subitems, action.id) } + : item + ); + + case "COLLAPSE_SUB_SECOND_ITEMS": + return state.map((item) => + item.hasSubitems ? { ...item, Subitems: item.Subitems.map((subitem) => - action.id === subitem.id + subitem.hasSubitems ? { ...subitem, - showSubitems: !subitem.showSubitems, - } - : subitem, - ), - } - : item; - }); - case "COLLAPSE_SUB_SECOND_ITEMS": - return state.map((item) => { - return item.hasSubitems - ? { - ...item, - Subitems: item.Subitems.map((subitem) => { - return subitem.hasSubitems - ? { - ...subitem, - Subitems: subitem.Subitems.map((secondSubitem) => - action.id === secondSubitem.id - ? { - ...secondSubitem, - showSubitems: !secondSubitem.showSubitems, - } - : secondSubitem, + Subitems: toggleSubitems( + subitem.Subitems, + action.id ), } - : subitem; - }), + : subitem + ), } - : item; - }); + : item + ); + case "SELECTED": return state.map((item) => selectPage(item, action.route)); diff --git a/src/components/layouts/dashboard/headerWithSidebar/Sidebar/SidebarSubitems.jsx b/src/components/layouts/dashboard/headerWithSidebar/Sidebar/SidebarSubitems.jsx index 69418ea..e539394 100644 --- a/src/components/layouts/dashboard/headerWithSidebar/Sidebar/SidebarSubitems.jsx +++ b/src/components/layouts/dashboard/headerWithSidebar/Sidebar/SidebarSubitems.jsx @@ -8,7 +8,7 @@ const SidebarSubitems = ({ subitem, dispatch }) => {