UNPKG

@zohodesk/hooks

Version:

Unified Component Library - Hooks

74 lines (64 loc) 1.68 kB
import React from 'react'; import * as constants from "./constants"; import { addOption, handleSelect, handleRemove, updateFilteredOptions, handleSelectAll, handleRemoveAll, handleSearch } from "./utils/actions"; const multiSelectStateReducer = function (state, action) { let initialState = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : { list: [], selectedOptions: [], filteredOptions: [], searchString: '' }; let stateJson = initialState; const actionType = action.type; const { data } = action; let val = {}; switch (actionType) { case constants.ADD: val = addOption(data); stateJson = { ...state, ...val }; return stateJson; case constants.SELECT: val = handleSelect(data); stateJson = { ...state, ...val }; return stateJson; case constants.REMOVE: val = handleRemove(data); stateJson = { ...state, ...val }; return stateJson; case constants.UPDATE_FILTERED_OPTIONS: val = updateFilteredOptions(data); stateJson = { ...state, ...val }; return stateJson; case constants.SELECT_ALL: val = handleSelectAll(data); stateJson = { ...state, ...val }; return stateJson; case constants.REMOVE_ALL: val = handleRemoveAll(data); stateJson = { ...state, ...val }; return stateJson; case constants.SEARCH: val = handleSearch(data); stateJson = { ...state, ...val }; return stateJson; default: return stateJson; } }; export default multiSelectStateReducer;