UNPKG

yarfl

Version:

Yet Another Redux Forms Library

80 lines 3.83 kB
import creatorFactory from '../actions/creatorFactory'; import types from '../actions/types'; import { checkActionForObjectValue } from '../helpers/checkers'; import { extract } from '../helpers/utils'; import { createClearFieldReducer, createResetFieldReducer, createShowFieldErrorsReducer, createUpdateFieldReducer, createValidateFieldReducer, } from './fieldReducer'; export var createFormReducer = function (config) { return function (state, action) { switch (action.type) { case types.FORM_UPDATE: return formUpdateReducer(config)(state, action); case types.FORM_CLEAR: return formClearReducer(config)(state); case types.FORM_RESET: return formResetReducer(config)(state); case types.FORM_SHOW_ERRORS: return formShowErrorsReducer(config)(state, action); case types.FORM_VALIDATE: return formValidateReducer(config)(state, action); default: return state; } }; }; export var formUpdateReducer = function (config) { return function (state, action) { var value = checkActionForObjectValue(action).value; var updateActions = createUpdateActions(config)(value); return updateActions.reduce(function (updatedState, fieldAction) { return createUpdateFieldReducer(config)(updatedState, fieldAction); }, state); }; }; var createUpdateActions = function (config) { return function (obj, parentKey) { return Object.entries(obj).reduce(function (acc, _a) { var fieldKey = _a[0], value = _a[1]; var key = parentKey ? parentKey + "." + fieldKey : fieldKey; if (typeof value === 'object') { return acc.concat(createUpdateActions(config)(value, key)); } var action = creatorFactory(config).updateField(key, value); return acc.concat([action]); }, []); }; }; var formClearReducer = function (config) { return function (state) { var keys = Object.keys(extract(state.fields, 'key', { flatten: true })); var clearActions = keys.map(creatorFactory(config).clearField); return clearActions.reduce(function (updatedState, fieldAction) { return createClearFieldReducer()(updatedState, fieldAction); }, state); }; }; var formResetReducer = function (config) { return function (state) { var keys = Object.keys(extract(state.fields, 'key', { flatten: true })); var resetActions = keys.map(creatorFactory(config).resetField); return resetActions.reduce(function (updatedState, fieldAction) { return createResetFieldReducer()(updatedState, fieldAction); }, state); }; }; export var formShowErrorsReducer = function (config) { return function (state, action) { var keys = Object.keys(extract(state.fields, 'key', { flatten: true })); var showErrors = action.showErrors; var creator = function (key) { return creatorFactory(config).showFieldErrors(key, showErrors); }; var showErrorActions = keys.map(creator); return showErrorActions.reduce(function (updatedState, fieldAction) { return createShowFieldErrorsReducer()(updatedState, fieldAction); }, state); }; }; export var formValidateReducer = function (config) { return function (state, action) { var keys = Object.keys(extract(state.fields, 'key', { flatten: true })); var validateActions = keys.map(function (key) { return creatorFactory(config).validateField(key, action.validator); }); return validateActions.reduce(function (updatedState, fieldAction) { return createValidateFieldReducer()(updatedState, fieldAction); }, state); }; }; //# sourceMappingURL=formReducer.js.map