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,