UNPKG

yarfl

Version:

Yet Another Redux Forms Library

68 lines 3.74 kB
import creatorFactory from '../actions/creatorFactory'; import types from '../actions/types'; import { checkActionForKey, checkActionForObjectValue } from '../helpers/checkers'; import { extract, setInWithPath } from '../helpers/utils'; import { createClearFieldReducer, createResetFieldReducer, createShowFieldErrorsReducer, createValidateFieldReducer, } from './fieldReducer'; import { formUpdateReducer } from './formReducer'; export var createNodeReducer = function (config) { return function (state, action) { switch (action.type) { case types.NODE_UPDATE: return nodeUpdateReducer(config)(state, action); case types.NODE_CLEAR: return nodeClearReducer(config)(state, action); case types.NODE_RESET: return nodeResetReducer(config)(state, action); case types.NODE_SHOW_ERRORS: return nodeShowErrorsReducer(config)(state, action); case types.NODE_VALIDATE: return nodeValidateReducer(config)(state, action); default: return state; } }; }; var nodeUpdateReducer = function (config) { return function (state, action) { var key = checkActionForKey(action).key; var value = checkActionForObjectValue(action).value; var updateObject = setInWithPath({}, key.split('.'), value); var updateAction = creatorFactory(config).updateForm(updateObject); return formUpdateReducer(config)(state, updateAction); }; }; var nodeClearReducer = function (config) { return function (state, action) { var key = checkActionForKey(action).key; var keys = Object.keys(extract(state.fields, 'key', { flatten: true })); var nodeKeys = keys.filter(function (k) { return k.startsWith(key); }); var clearActions = nodeKeys.map(creatorFactory(config).clearField); return clearActions.reduce(function (updatedState, fieldAction) { return createClearFieldReducer()(updatedState, fieldAction); }, state); }; }; var nodeResetReducer = function (config) { return function (state, action) { var key = checkActionForKey(action).key; var keys = Object.keys(extract(state.fields, 'key', { flatten: true })); var nodeKeys = keys.filter(function (k) { return k.startsWith(key); }); var resetActions = nodeKeys.map(creatorFactory(config).resetField); return resetActions.reduce(function (updatedState, fieldAction) { return createResetFieldReducer()(updatedState, fieldAction); }, state); }; }; var nodeShowErrorsReducer = function (config) { return function (state, action) { var _a = checkActionForKey(action), key = _a.key, showErrors = _a.showErrors; var keys = Object.keys(extract(state.fields, 'key', { flatten: true })); var nodeKeys = keys.filter(function (k) { return k.startsWith(key); }); var showErrorActions = nodeKeys.map(function (k) { return creatorFactory(config).showFieldErrors(k, showErrors); }); return showErrorActions.reduce(function (updatedState, fieldAction) { return createShowFieldErrorsReducer()(updatedState, fieldAction); }, state); }; }; var nodeValidateReducer = function (config) { return function (state, action) { var key = action.key, validator = action.validator; var keys = Object.keys(extract(state.fields, 'key', { flatten: true })); var nodeKeys = keys.filter(function (k) { return k.startsWith(key); }); var resetActions = nodeKeys.map(function (k) { return creatorFactory(config).validateField(k, validator); }); return resetActions.reduce(function (updatedState, fieldAction) { return createValidateFieldReducer()(updatedState, fieldAction); }, state); }; }; //# sourceMappingURL=nodeReducer.js.map