UNPKG

envoc-form

Version:

Envoc form components

27 lines (26 loc) 1.67 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var jsx_runtime_1 = require("react/jsx-runtime"); var react_1 = require("react"); var react_router_dom_1 = require("react-router-dom"); var formik_1 = require("formik"); var LegacyFormBasedPreventNavigation_1 = __importDefault(require("./LegacyFormBasedPreventNavigation")); var NewFormBasedPreventNavigation_1 = __importDefault(require("./NewFormBasedPreventNavigation")); /** Prevent the user from navigating away from a form if there are any changes. */ function FormBasedPreventNavigation(_a) { var ignoreLostChanges = _a.ignoreLostChanges, _b = _a.promptMessage, promptMessage = _b === void 0 ? 'Changes you made may not be saved.' : _b; var _c = (0, formik_1.useFormikContext)(), dirty = _c.dirty, isSubmitting = _c.isSubmitting; var preventNavigate = !ignoreLostChanges && dirty && !isSubmitting; var navigator = (0, react_1.useContext)(react_router_dom_1.UNSAFE_NavigationContext).navigator; var isUsingDataRouter = navigator.location === undefined; if (isUsingDataRouter) { return ((0, jsx_runtime_1.jsx)(NewFormBasedPreventNavigation_1.default, { promptMessage: promptMessage, preventNavigate: preventNavigate, navigator: navigator })); } else { return ((0, jsx_runtime_1.jsx)(LegacyFormBasedPreventNavigation_1.default, { promptMessage: promptMessage, preventNavigate: preventNavigate, navigator: navigator })); } } exports.default = FormBasedPreventNavigation;