X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/152a17b28656fe498d3b3bbf21d5994e9ccd34ab..975f9b6c2e0f6d5988c01d7dbe6e2a6214d54de6:/src/store/side-panel/side-panel-reducer.ts diff --git a/src/store/side-panel/side-panel-reducer.ts b/src/store/side-panel/side-panel-reducer.ts index 9f01fa2a..ca26eeb6 100644 --- a/src/store/side-panel/side-panel-reducer.ts +++ b/src/store/side-panel/side-panel-reducer.ts @@ -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,