react-application-core
Version:
A react-based application core for the business applications.
94 lines • 4.46 kB
JavaScript
"use strict";
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.formReducer = void 0;
var R = require("ramda");
var util_1 = require("../../util");
var definition_1 = require("../../definition");
var action_1 = require("../../action");
/**
* @stable [24.04.2020]
* @param changes
* @param defaultChanges
* @returns {boolean}
*/
var isDirty = function (changes, defaultChanges) { return !R.isEmpty(changes) || !R.isEmpty(defaultChanges); };
/**
* @reducer
* @stable [08.05.2020]
*
* @param {IReduxFormEntity} state
* @param {IEffectsAction} action
* @returns {IReduxFormEntity}
*/
exports.formReducer = function (state, action) {
if (state === void 0) { state = definition_1.INITIAL_REDUX_FORM_ENTITY; }
var section = util_1.Selectors.sectionFromAction(action);
var actionType = action.type;
var actionData = action.data;
var defaultChanges;
switch (actionType) {
case action_1.FormActionBuilder.buildDestroyActionType(section):
/**
* @stable [24.04.2020]
*/
return __assign({}, definition_1.INITIAL_REDUX_FORM_ENTITY);
case action_1.FormActionBuilder.buildClearActionType(section):
case action_1.FormActionBuilder.buildChangeActionType(section):
/**
* @stable [24.04.2020]
*/
var changes = util_1.FilterUtils.defValuesFilter(__assign(__assign({}, state.changes), actionData.fields));
return __assign(__assign({}, state), { changes: changes, dirty: isDirty(changes, state.defaultChanges), error: null, touched: true });
case action_1.FormActionBuilder.buildDefaultChangeActionType(section):
/**
* @stable [23.04.2020]
*/
defaultChanges = util_1.FilterUtils.defValuesFilter(__assign(__assign({}, state.defaultChanges), actionData.fields));
return __assign(__assign({}, state), { defaultChanges: defaultChanges, dirty: isDirty(state.changes, defaultChanges) });
case action_1.FormActionBuilder.buildValidActionType(section):
/**
* @stable [23.04.2020]
*/
return __assign(__assign({}, state), { validateAfterReset: false, valid: actionData.valid });
case action_1.FormActionBuilder.buildActiveValueActionType(section):
/**
* @stable [24.04.2020]
*/
return __assign(__assign({}, state), { activeValue: actionData.payload });
case action_1.FormActionBuilder.buildProgressActionType(section):
case action_1.FormActionBuilder.buildSubmitActionType(section):
/**
* @stable [24.04.2020]
*/
return __assign(__assign({}, state), { error: null, progress: true });
case action_1.FormActionBuilder.buildSubmitErrorActionType(section):
return __assign(__assign({}, state), { progress: false, error: util_1.asErrorMessage(action.error).message });
case action_1.FormActionBuilder.buildSubmitFinishActionType(section):
/**
* @stable [24.04.2020]
*/
return __assign(__assign({}, state), { progress: false });
case action_1.FormActionBuilder.buildResetActionType(section):
case action_1.FormActionBuilder.buildSubmitDoneActionType(section):
/**
* @stable [23.04.2020]
*/
defaultChanges = state.defaultChanges;
var activeValue = state.activeValue;
return __assign(__assign(__assign({}, definition_1.INITIAL_REDUX_FORM_ENTITY), (actionType === action_1.FormActionBuilder.buildResetActionType(section)
? __assign({ defaultChanges: defaultChanges, validateAfterReset: true }, (R.isEmpty(defaultChanges) ? {} : { dirty: true })) : {})), (util_1.TypeUtils.isDef(activeValue) ? { activeValue: activeValue } : {}));
}
return state;
};
//# sourceMappingURL=form.reducer.js.map