yarfl
Version:
Yet Another Redux Forms Library
82 lines • 4.01 kB
JavaScript
;
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