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;
- }
- });
- resetProjectsCollapse(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 const sidePanelData = [
icon: "fas fa-th fa-fw",
open: false,
active: false,
+ margin: true,
+ openAble: true
},
{
id: "2",
}
}
-function resetProjectsCollapse(sidePanel: SidePanelItem[]) {
- if (!sidePanel[0].active) {
- sidePanel[0].open = false;
- }
-}
-
export default sidePanelReducer;