UNPKG

yarfl

Version:

Yet Another Redux Forms Library

82 lines 4.01 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var creatorFactory_1 = require("../actions/creatorFactory"); var types_1 = require("../actions/types"); var checkers_1 = require("../helpers/checkers"); var utils_1 = require("../helpers/utils"); var fieldReducer_1 = require("./fieldReducer"); exports.createFormReducer = function (config) { return function (state, action) { switch (action.type) { case types_1.default.FORM_UPDATE: return exports.formUpdateReducer(config)(state, action); case types_1.default.FORM_CLEAR: return formClearReducer(config)(state); case types_1.default.FORM_RESET: return formResetReducer(config)(state); case types_1.default.FORM_SHOW_ERRORS: return exports.formShowErrorsReducer(config)(state, action); case types_1.default.FORM_VALIDATE: return exports.formValidateReducer(config)(state, action); default: return state; } }; }; exports.formUpdateReducer = function (config) { return function (state, action) { var value = checkers_1.checkActionForObjectValue(action).value; var updateActions = createUpdateActions(config)(value); return updateActions.reduce(function (updatedState, fieldAction) { return fieldReducer_1.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_1.default(config).updateField(key, value); return acc.concat([action]); }, []); }; }; var formClearReducer = function (config) { return function (state) { var keys = Object.keys(utils_1.extract(state.fields, 'key', { flatten: true })); var clearActions = keys.map(creatorFactory_1.default(config).clearField); return clearActions.reduce(function (updatedState, fieldAction) { return fieldReducer_1.createClearFieldReducer()(updatedState, fieldAction); }, state); }; }; var formResetReducer = function (config) { return function (state) { var keys = Object.keys(utils_1.extract(state.fields, 'key', { flatten: true })); var resetActions = keys.map(creatorFactory_1.default(config).resetField); return resetActions.reduce(function (updatedState, fieldAction) { return fieldReducer_1.createResetFieldReducer()(updatedState, fieldAction); }, state); }; }; exports.formShowErrorsReducer = function (config) { return function (state, action) { var keys = Object.keys(utils_1.extract(state.fields, 'key', { flatten: true })); var showErrors = action.showErrors; var creator = function (key) { return creatorFactory_1.default(config).showFieldErrors(key, showErrors); }; var showErrorActions = keys.map(creator); return showErrorActions.reduce(function (updatedState, fieldAction) { return fieldReducer_1.createShowFieldErrorsReducer()(updatedState, fieldAction); }, state); }; }; exports.formValidateReducer = function (config) { return function (state, action) { var keys = Object.keys(utils_1.extract(state.fields, 'key', { flatten: true })); var validateActions = keys.map(function (key) { return creatorFactory_1.default(config).validateField(key, action.validator); }); return validateActions.reduce(function (updatedState, fieldAction) { return fieldReducer_1.createValidateFieldReducer()(updatedState, fieldAction); }, state); }; }; //# sourceMappingURL=formReducer.js.map