UNPKG

redux-form-submit

Version:

Adds a submit action creator to redux-form

103 lines (83 loc) 3.8 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _reduxForm = require('redux-form'); var _actions = require('redux-form/lib/actions'); var _handleSubmit = require('redux-form/lib/handleSubmit'); var _handleSubmit2 = _interopRequireDefault(_handleSubmit); var _asyncValidation = require('redux-form/lib/asyncValidation'); var _asyncValidation2 = _interopRequireDefault(_asyncValidation); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var submit = function submit(config, values) { return function (dispatch, getState) { var form = config.form, validate = config.validate, onSubmit = config.onSubmit, asyncValidate = config.asyncValidate; var fields = config.fields; var formState = getState().form[form]; values = values || (0, _reduxForm.getFormValues)(form)(getState()) || {}; if (!formState) { dispatch((0, _reduxForm.initialize)(form, values)); fields.forEach(function (field) { dispatch((0, _actions.registerField)(form, field, 'Field')); }); values = (0, _reduxForm.getFormValues)(form)(getState()); } else if (formState.registeredFields) { fields = formState.registeredFields.map(function (field) { return field.name; }); } else { throw new Error('You must set fields on redux-form config'); } if (typeof validate === 'function') { dispatch((0, _actions.updateSyncErrors)(form, validate(values))); } var props = _extends({}, config, { dispatch: dispatch, startSubmit: function startSubmit() { return dispatch((0, _reduxForm.startSubmit)(form)); }, stopSubmit: function stopSubmit() { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return dispatch(_reduxForm.stopSubmit.apply(undefined, [form].concat(args))); }, setSubmitFailed: function setSubmitFailed() { for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { args[_key2] = arguments[_key2]; } return dispatch(_reduxForm.setSubmitFailed.apply(undefined, [form].concat(args))); }, setSubmitSucceeded: function setSubmitSucceeded() { return dispatch((0, _reduxForm.setSubmitSucceeded)(form)); }, syncErrors: getState().form[form].syncErrors, touch: function touch() { for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { args[_key3] = arguments[_key3]; } return dispatch(_reduxForm.touch.apply(undefined, [form].concat(args))); }, values: values }); return Promise.resolve().then(function () { return (0, _handleSubmit2.default)(onSubmit, props, (0, _reduxForm.isValid)(form, function (state) { return state.form; })(getState()), asyncValidate && _asyncValidation2.default.bind(null, function () { return asyncValidate(values, dispatch, props); }, function () { return dispatch((0, _reduxForm.startAsyncValidation)(form)); }, function () { for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { args[_key4] = arguments[_key4]; } return dispatch(_reduxForm.stopAsyncValidation.apply(undefined, [form].concat(args))); }), fields); }); }; }; exports.default = submit;