mirror of
https://github.com/Choices-js/Choices.git
synced 2024-05-02 05:52:46 +02:00
68313da412
* Typescript config setup * Add type annotations to components * Further type additions * And more... * Add types to actions * Add types to templates * Further type checks * Further type additons * Install fuse latest * Housekeeping * Remove old type definitions * Fix remaning type issues * Fix some failing tests * Remove types workflow * Fix failing unit tests * Resolve back space event regression * Convert cypress files to .ts * Fix eslint issues * Remove cachebusting urls * Resolve delete button bug * Resolve regression bugs * Fix lint script * Fix lint workflow * Pass args instead of object to keyboard handlers * Flatten misc reducer * Resolve keyboad action test failures * Use Pick instead of Partial * Use interfaces in action tests * Update firefox image * Incorporate #791 * Incorporate #788
38 lines
901 B
TypeScript
38 lines
901 B
TypeScript
import { combineReducers } from 'redux';
|
|
import items from './items';
|
|
import groups from './groups';
|
|
import choices from './choices';
|
|
import loading from './loading';
|
|
import { cloneObject } from '../lib/utils';
|
|
|
|
export const defaultState = {
|
|
groups: [],
|
|
items: [],
|
|
choices: [],
|
|
loading: false,
|
|
};
|
|
|
|
const appReducer = combineReducers({
|
|
items,
|
|
groups,
|
|
choices,
|
|
loading,
|
|
});
|
|
|
|
const rootReducer = (passedState, action): object => {
|
|
let state = passedState;
|
|
// If we are clearing all items, groups and options we reassign
|
|
// state and then pass that state to our proper reducer. This isn't
|
|
// mutating our actual state
|
|
// See: http://stackoverflow.com/a/35641992
|
|
if (action.type === 'CLEAR_ALL') {
|
|
state = defaultState;
|
|
} else if (action.type === 'RESET_TO') {
|
|
return cloneObject(action.state);
|
|
}
|
|
|
|
return appReducer(state, action);
|
|
};
|
|
|
|
export default rootReducer;
|