UNPKG

react-formal

Version:

Classy HTML form management for React

37 lines (36 loc) 1.32 kB
"use strict"; 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])]; }