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