@zohodesk/hooks
Version:
Unified Component Library - Hooks
55 lines (48 loc) • 1.11 kB
JavaScript
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;
}
}
}