UNPKG

yarfl

Version:

Yet Another Redux Forms Library

94 lines 4.42 kB
"use strict"; var __assign = (this && this.__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; }; Object.defineProperty(exports, "__esModule", { value: true }); var redux_1 = require("redux"); var ThunkFactory_1 = require("./actions/ThunkFactory"); var connect_1 = require("./connect"); var FormProvider_1 = require("./FormProvider"); var checkers_1 = require("./helpers/checkers"); var utils_1 = require("./helpers/utils"); var validator_1 = require("./helpers/validator"); var initializeState_1 = require("./initializeState"); var reducers_1 = require("./reducers"); function init() { var configs = []; for (var _i = 0; _i < arguments.length; _i++) { configs[_i] = arguments[_i]; } checkers_1.checkConfigs(configs); var forms = configs.map(initForm); var mergedForms = forms.reduce(function (acc, curr) { var _a, _b, _c, _d, _e; // tslint:disable-next-line:no-shadowed-variable var initialState = curr.initialState, reducer = curr.reducer, formProvider = curr.formProvider, config = curr.config, c = curr.connect, actionCreators = curr.actionCreators; var name = config.name; return utils_1.mergeDeep(acc, { initialState: initialState, reducers: (_a = {}, _a[name] = reducer, _a), formProviders: (_b = {}, _b[name] = formProvider, _b), config: (_c = {}, _c[name] = config, _c), connectors: (_d = {}, _d[name] = c, _d), actionCreators: (_e = {}, _e[name] = actionCreators, _e), }); }, {}); var _a = mergedForms, reducers = _a.reducers, connectors = _a.connectors, formProviders = _a.formProviders; var connect = redux_1.compose.apply(void 0, Object.values(connectors)); Object.entries(connectors).forEach(function (_a) { var key = _a[0], connector = _a[1]; connect[key] = connector; }); // tslint:disable-next-line:variable-name var FormProvider = connect(FormProvider_1.FormProviderComponent); Object.entries(formProviders).forEach(function (_a) { var key = _a[0], formProvider = _a[1]; FormProvider[key] = formProvider; }); return { initialState: mergedForms.initialState, config: mergedForms.config, connect: connect, reducer: redux_1.combineReducers(reducers), FormProvider: FormProvider, actionCreators: mergedForms.actionCreators, }; } exports.init = init; var initForm = function (config) { var _a; var customRules = config.customRules, errorMessages = config.errorMessages; var isAsync = customRules && customRules.length ? validator_1.registerCustomRules(customRules) : false; if (errorMessages) { validator_1.reigsterErrorMessages(errorMessages); } var configWithDefaults = addDefaultsToConfig(config); var initialFormState = initializeState_1.initializeFormState(configWithDefaults, isAsync); var reducer = reducers_1.createReducer(configWithDefaults, initialFormState); var connect = connect_1.connectDirectly(configWithDefaults); var formProvider = connect(FormProvider_1.FormProviderComponent); // TODO: include option to return selectors var actionCreators = new ThunkFactory_1.default(configWithDefaults).getThunks(); var initialState = (_a = {}, _a[config.name] = initialFormState, _a); return { initialState: initialState, reducer: reducer, connect: connect, formProvider: formProvider, config: configWithDefaults, actionCreators: actionCreators, }; }; var addDefaultsToConfig = function (config) { return __assign({ // useLang?: string; method: 'POST', customRules: [], errorMessages: {}, validateOnInit: true, validateOnFocus: false, validateOnBlur: true, validateOnChange: true, validateOnClear: true, validateOnReset: true, validateOnAdd: true, validateOnDelete: true, showErrorsOnInit: false, showErrorsOnFocus: false, showErrorsOnBlur: true, showErrorsOnChange: false, showErrorsOnClear: false, showErrorsOnReset: false, autoParseNumbers: true, skipDefaults: false, mapState: function (state) { return state[config.name]; } }, config); }; //# sourceMappingURL=init.js.map