Update Resource kind reference, update missing component props in tests
[arvados-workbench2.git] / src / store / side-panel / side-panel-reducer.ts
index 9f01fa2a1d67c8c3bd7c320b90934241b3cac9b6..ca26eeb6435b619af28faf2e3a98d68190a83461 100644 (file)
@@ -10,65 +10,76 @@ import { SidePanelItem } from '../../components/side-panel/side-panel';
 export type SidePanelState = SidePanelItem[];
 
 const sidePanelReducer = (state: SidePanelState = sidePanelData, action: SidePanelAction) => {
-    return actions.match(action, {
-        TOGGLE_SIDE_PANEL_ITEM_OPEN: () => {
-            const sidePanel = _.cloneDeep(state);
-            sidePanel[0].open = !sidePanel[0].open;
-            return sidePanel;
-        },
-        TOGGLE_SIDE_PANEL_ITEM_ACTIVE: itemId => {
-            const sidePanel = _.cloneDeep(state);
-            resetSidePanelActivity(sidePanel);
-            sidePanel.map(it => {
-                if (it.id === itemId) {
-                    it.active = true;
-                }
-            });
-            return sidePanel;
-        },
-        RESET_SIDE_PANEL_ACTIVITY: () => {
-            const sidePanel = _.cloneDeep(state);
-            resetSidePanelActivity(sidePanel);
-            return sidePanel;
-        },
-        default: () => state
-    });
+    if (state.length === 0) {
+        return sidePanelData;
+    } else {
+        return actions.match(action, {
+            TOGGLE_SIDE_PANEL_ITEM_OPEN: itemId => state.map(it => itemId === it.id && it.open === false ? {...it, open: true} : {...it, open: false}),
+            TOGGLE_SIDE_PANEL_ITEM_ACTIVE: itemId => {
+                const sidePanel = _.cloneDeep(state);
+                resetSidePanelActivity(sidePanel);
+                sidePanel.map(it => {
+                    if (it.id === itemId) {
+                        it.active = true;
+                    }
+                });
+                return sidePanel;
+            },
+            RESET_SIDE_PANEL_ACTIVITY: () => {
+                const sidePanel = _.cloneDeep(state);
+                resetSidePanelActivity(sidePanel);
+                return sidePanel;
+            },
+            default: () => state
+        });
+    }
 };
 
+export enum SidePanelIdentifiers {
+    Projects = "Projects",
+    SharedWithMe = "SharedWithMe",
+    Workflows = "Workflows",
+    RecentOpen = "RecentOpen",
+    Favourites = "Favourites",
+    Trash = "Trash"
+}
+
 export const sidePanelData = [
     {
-        id: "1",
+        id: SidePanelIdentifiers.Projects,
         name: "Projects",
         icon: "fas fa-th fa-fw",
         open: false,
         active: false,
+        margin: true,
+        openAble: true
     },
     {
-        id: "2",
+        id: SidePanelIdentifiers.SharedWithMe,
         name: "Shared with me",
         icon: "fas fa-users fa-fw",
         active: false,
     },
     {
-        id: "3",
+        id: SidePanelIdentifiers.Workflows,
         name: "Workflows",
         icon: "fas fa-cogs fa-fw",
         active: false,
     },
     {
-        id: "4",
+        id: SidePanelIdentifiers.RecentOpen,
         name: "Recent open",
         icon: "icon-time fa-fw",
         active: false,
     },
     {
-        id: "5",
+        id: SidePanelIdentifiers.Favourites,
         name: "Favorites",
         icon: "fas fa-star fa-fw",
         active: false,
     },
     {
-        id: "6",
+        id: SidePanelIdentifiers.Trash,
         name: "Trash",
         icon: "fas fa-trash-alt fa-fw",
         active: false,