UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

39 lines 1.25 kB
import React, { useCallback } from 'react'; import useStep from './useStep'; const useLayoutEffect = typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect; export default function useReactRouter(id = null, { useSearchParams }) { const name = id ? `${id}-step` : 'step'; const { setFormError } = useStep(id); const [searchParams, setSearchParams] = useSearchParams(); const onStepChange = useCallback(index => { try { searchParams.set(name, index); setSearchParams(searchParams); } catch (error) { setFormError(error); } }, [name, searchParams, setFormError, setSearchParams]); const { setActiveIndex } = useStep(id, { onStepChange }); const getIndex = useCallback(() => parseFloat(searchParams.get(name)), [name, searchParams]); useLayoutEffect(() => { const routerIndex = getIndex(); if (!isNaN(routerIndex)) { setActiveIndex === null || setActiveIndex === void 0 ? void 0 : setActiveIndex(routerIndex, { skipStepChangeCallFromHook: true, skipStepChangeCallBeforeMounted: true }); } }, [getIndex, id, searchParams, setActiveIndex, setFormError]); return { getIndex }; } //# sourceMappingURL=useReactRouter.js.map