UNPKG

@zohodesk/hooks

Version:

Unified Component Library - Hooks

55 lines (48 loc) 1.11 kB
import * as CONST from "./constants"; /** @module accordion/reducer */ /** * accordion reducer description * @function accordionReducer * @param {Array<boolean>} state - previous state * @param {object} action - action object * @param {string} action.type * @param {object} action.data * @returns {Array<boolean>} */ export default function reducer() { let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; let { type, data } = arguments.length > 1 ? arguments[1] : undefined; switch (type) { case CONST.OPEN: { const newState = state.slice(); newState[data.index] = true; return newState; } case CONST.CLOSE: { const newState = state.slice(); newState[data.index] = false; return newState; } case CONST.TOGGLE: { const newState = state.slice(); newState[data.index] = !newState[data.index]; return newState; } case CONST.RESET: { return data; } default: { return state; } } }