envoc-form
Version:
Envoc form components
27 lines (26 loc) • 1.67 kB
JavaScript
;
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;