redux-formo
Version:
An alternate forms framework for Redux+React.
69 lines (56 loc) • 1.84 kB
JavaScript
;
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; };
exports.default = function (state, action) {
switch (action.status) {
case 'start':
return startSubmitting(state);
case 'finish':
return finishSubmitting(state);
case 'error':
return errorSubmitting(state, action);
default:
return state;
}
};
/**
* Start submitting a form
* @param {object} state
* @returns {{submitting: boolean}}
*/
function startSubmitting(state) {
return _extends({}, state, { submitting: true });
}
/**
* Finish submitting a form
* @param {object} state
* @returns {{submitting: boolean}}
*/
function finishSubmitting(state) {
return _extends({}, state, { submitting: false, submitted: true, error: undefined });
}
/**
* Error submitting a form
* @param {object} state
* @param {object} action
* @param {string} action.payload The form error
* @returns {{submitting: boolean, error: string}}
*/
function errorSubmitting(state, action) {
return _extends({}, state, {
submitting: false,
error: (action.payload && action.payload.message ? action.payload.message : String(action.payload)) || 'An unknown error occurred whilst submitting'
});
}
/**
* Submit the values of a form
* @param {object} state The form state
* @param {object} action
* @param {string} action.type
* @param {boolean} action.status
* @param {string} [action.payload]
* @returns {{submitting: boolean, [submitted]: boolean, [error]: string}}
*/
//# sourceMappingURL=submit.js.map