@zohodesk/hooks
Version:
Unified Component Library - Hooks
74 lines (64 loc) • 1.68 kB
JavaScript
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;