UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

31 lines (30 loc) 1.4 kB
"use strict"; "use client"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = useSubmit; var _react = require("react"); var _useSharedState = require("../../../../shared/helpers/useSharedState.js"); var _Context = _interopRequireDefault(require("../../DataContext/Context.js")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const invalidUseSubmitErrorMessage = 'Form.useSubmit needs to run inside Form.Handler or have a valid id'; function useSubmit(id) { const sharedDataContext = id ? (0, _useSharedState.createSharedState)((0, _useSharedState.createReferenceKey)(id, 'data-context')) : null; const dataContext = (0, _react.useContext)(_Context.default); if (!id && !dataContext?.hasContext) { throw new Error(invalidUseSubmitErrorMessage); } const submit = (0, _react.useCallback)(() => { var _context$handleSubmit; const context = id ? sharedDataContext?.get() : dataContext; if (!context?.hasContext) { return Promise.reject(new Error(invalidUseSubmitErrorMessage)); } return (_context$handleSubmit = context.handleSubmit?.()) !== null && _context$handleSubmit !== void 0 ? _context$handleSubmit : Promise.resolve(undefined); }, [dataContext, id, sharedDataContext]); return (0, _react.useMemo)(() => ({ submit }), [submit]); } //# sourceMappingURL=useSubmit.js.map