@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
64 lines (63 loc) • 1.86 kB
JavaScript
;
"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