UNPKG

cosmo-ui

Version:
82 lines 3.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var constants_1 = require("../constants"); exports.formReducer = function (state, action) { if (state === void 0) { state = {}; } switch (action.type) { case constants_1.SET_FORM_FIELD: return setFormField(state, action); case constants_1.DESTROY_FORM: return destroyForm(state, action); case constants_1.RESET_FORM: return resetForm(state, action); case constants_1.SUBMIT_FORM_VALID: case constants_1.SUBMIT_FORM_INVALID: return submitForm(state, action); default: return state; } }; var setFormField = function (state, action) { if (action.formName) { return tslib_1.__assign({}, state, (_a = {}, _a[action.formName] = tslib_1.__assign({}, state[action.formName], (_b = {}, _b[action.name] = action.field, _b)), _a)); } else { return tslib_1.__assign({}, state, (_c = {}, _c[action.name] = action.field, _c)); } var _a, _b, _c; }; var destroyForm = function (state, action) { var newState = tslib_1.__assign({}, state); delete newState[action.formName]; return newState; }; /** * Clear the form data for a named form * * @param state * @param action */ var resetForm = function (state, action) { var s = tslib_1.__assign({}, state, (_a = {}, _a[action.formName] = tslib_1.__assign({}, state[action.formName]), _a)); Object.keys(s[action.formName]).forEach(function (field) { s[action.formName][field] = tslib_1.__assign({}, s[action.formName][field], { value: '' }); }); return s; var _a; }; /** * When a form is submitted we can immediately * make every field in the form as being submitted * * @param state * @param action */ var submitForm = function (state, action) { var form = state[action.formName]; if (!form) { throw new Error("A form with the name " + action.formName + " does not exist"); } var newState = tslib_1.__assign({}, state, (_a = {}, _a[action.formName] = tslib_1.__assign({}, form), _a)); for (var _i = 0, _b = Object.keys(form); _i < _b.length; _i++) { var key = _b[_i]; newState[action.formName][key] = tslib_1.__assign({}, newState[action.formName][key], { submitted: true }); } return newState; var _a; }; // TODO - see if these can be generalized for all fields var setAddressLoading = function (state, action) { return (tslib_1.__assign({}, state, (_a = {}, _a[action.args.formName] = tslib_1.__assign({}, state[action.args.formName], (_b = {}, _b[action.args.name] = tslib_1.__assign({}, state[action.args.formName][action.args.name], { loading: true }), _b)), _a))); var _a, _b; }; var setAddressOptions = function (state, action) { return (tslib_1.__assign({}, state, (_a = {}, _a[action.args.formName] = tslib_1.__assign({}, state[action.args.formName], (_b = {}, _b[action.args.name] = tslib_1.__assign({}, state[action.args.formName][action.args.name], { loading: true }), _b)), _a))); var _a, _b; }; var setAddressErrors = function (state, action) { return (tslib_1.__assign({}, state, (_a = {}, _a[action.args.formName] = tslib_1.__assign({}, state[action.args.formName], (_b = {}, _b[action.args.name] = tslib_1.__assign({}, state[action.args.formName][action.args.name], { loading: true }), _b)), _a))); var _a, _b; }; //# sourceMappingURL=form.js.map