UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

64 lines (63 loc) 1.86 kB
"use strict"; "use client"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = useHandleStatus; require("core-js/modules/web.dom-collections.iterator.js"); var _react = require("react"); var _useHasContentChanged = _interopRequireDefault(require("./useHasContentChanged")); var _useReportError = _interopRequireDefault(require("./useReportError")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } function useHandleStatus(_ref) { let { outerContext, preventUncommittedChanges, error, name } = _ref; const { hasContentChanged } = (0, _useHasContentChanged.default)({ enabled: preventUncommittedChanges }); let errorToReport = undefined; if (preventUncommittedChanges && hasContentChanged) { errorToReport = error; } (0, _useReportError.default)(errorToReport, outerContext, name); const showStatus = useShowStatus({ outerContext, hasContentChanged, preventUncommittedChanges }); return { hasContentChanged, showStatus }; } function useShowStatus(_ref2) { let { outerContext, hasContentChanged, preventUncommittedChanges } = _ref2; const showAllErrors = outerContext === null || outerContext === void 0 ? void 0 : outerContext.showAllErrors; const [showStatus, setShowStatus] = (0, _react.useState)(showAllErrors); const showRef = (0, _react.useRef)(showAllErrors); (0, _react.useEffect)(() => { if (!preventUncommittedChanges) { return; } if (!hasContentChanged) { setShowStatus(false); } else { if (showRef.current !== showAllErrors) { setShowStatus(showAllErrors); } } showRef.current = showAllErrors; }, [hasContentChanged, preventUncommittedChanges, showAllErrors]); return showStatus; } //# sourceMappingURL=useHandleStatus.js.map