Files
freeCodeCamp/client/src/components/layouts/components/guide/redux/index.js
2019-03-01 13:02:29 +00:00

50 lines
1.4 KiB
JavaScript

import { createAction, handleActions } from 'redux-actions';
import { createTypes } from '../../../../../utils/createTypes';
import { createSideNavigationSaga } from './side-navigation-saga';
export const ns = 'guideNav';
const initialState = {
displaySideNav: false,
displayMenu: false,
expandedState: {}
};
const types = createTypes(
['toggleExpandedState', 'toggleDisplaySideNav', 'toggleDisplayMenu'],
ns
);
export const sagas = [...createSideNavigationSaga(types)];
export const toggleExpandedState = createAction(types.toggleExpandedState);
export const toggleDisplaySideNav = createAction(types.toggleDisplaySideNav);
export const toggleDisplayMenu = createAction(types.toggleDisplayMenu);
export const displaySideNavSelector = state => state[ns].displaySideNav;
export const displayMenuSelector = state => state[ns].displayMenu;
export const expandedStateSelector = state => state[ns].expandedState;
export const reducer = handleActions(
{
[types.toggleExpandedState]: (state, { payload }) => ({
...state,
expandedState: {
...state.expandedState,
[payload]: !state.expandedState[payload]
}
}),
[types.toggleDisplaySideNav]: state => ({
...state,
displayMenu: !state.displayMenu,
displaySideNav: !state.displaySideNav
}),
[types.toggleDisplayMenu]: state => ({
...state,
displayMenu: !state.displayMenu
})
},
initialState
);