@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
54 lines (53 loc) • 1.92 kB
JavaScript
;
"use client";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = useNextRouter;
var _index = _interopRequireDefault(require("core-js-pure/stable/url-search-params/index.js"));
var _push = _interopRequireDefault(require("core-js-pure/stable/instance/push.js"));
var _react = require("react");
var _useStep = _interopRequireDefault(require("./useStep.js"));
var _useIsomorphicLayoutEffect = require("../../../../shared/helpers/useIsomorphicLayoutEffect.js");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function useNextRouter(id = null, {
useRouter,
usePathname,
useSearchParams
}) {
const name = id ? `${id}-step` : 'step';
const {
setFormError
} = (0, _useStep.default)(id);
const router = useRouter();
const pathname = usePathname();
const searchParams = useSearchParams();
const onStepChange = (0, _react.useCallback)(index => {
try {
const params = new _index.default(searchParams.toString());
params.set(name, String(index));
(0, _push.default)(router).call(router, `${pathname}?${params.toString()}`);
} catch (error) {
setFormError(error);
}
}, [name, pathname, router, searchParams, setFormError]);
const {
setActiveIndex
} = (0, _useStep.default)(id, {
onStepChange
});
const getIndex = (0, _react.useCallback)(() => parseFloat(searchParams.get(name)), [name, searchParams]);
(0, _useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(() => {
const routerIndex = getIndex();
if (!isNaN(routerIndex)) {
setActiveIndex === null || setActiveIndex === void 0 || setActiveIndex(routerIndex, {
skipStepChangeCallFromHook: true,
skipStepChangeCallBeforeMounted: true
});
}
}, [getIndex, id, searchParams, setActiveIndex, setFormError]);
return {
getIndex
};
}
//# sourceMappingURL=useNextRouter.js.map