react-formal
Version:
Classy HTML form management for React
37 lines (36 loc) • 1.32 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = useFormSubmit;
var _react = require("react");
var _Contexts = require("./Contexts");
var _useErrors = _interopRequireDefault(require("./useErrors"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
*
* @param options
* @param {string[]} options.trigger A set of paths to trigger validation for
*/
function useFormSubmit({
triggers
} = {}) {
const {
actions,
submits
} = (0, _Contexts.useFormContext)(_Contexts.BITS.actions | _Contexts.BITS.submits);
const errors = (0, _useErrors.default)(triggers);
const handleSubmit = (0, _react.useCallback)((...args) => {
if (!actions) {
if (process.env.NODE_ENV !== 'production') return console.error('A Form submit event ' + 'was triggered from a component outside the context of a Form. ' + 'The Button should be wrapped in a Form component');
}
if (triggers && triggers.length) {
actions.onValidate(triggers, 'submit', args);
} else actions.onSubmit();
},
// eslint-disable-next-line react-hooks/exhaustive-deps
[actions, triggers && triggers.join(',')]);
return [handleSubmit, (0, _react.useMemo)(() => Object.assign({
errors
}, submits), [errors, submits])];
}