diff --git a/src/components/App/Page.tsx b/src/components/App/Page.tsx index 7f2dc31..7046a2c 100644 --- a/src/components/App/Page.tsx +++ b/src/components/App/Page.tsx @@ -2,9 +2,10 @@ import type {PropsWithChildren} from 'react'; import type {AppProps, PageData} from './index'; import type {Settings} from '../../utils'; -import React, {useCallback, useMemo} from 'react'; +import React, {useCallback, useEffect, useMemo} from 'react'; import {PageConstructor, PageConstructorProvider} from '@gravity-ui/page-constructor'; import {DocBasePageData, getPageByType, getPageType} from '@diplodoc/components'; +import {useDiplodocTabs} from '@diplodoc/tabs-extension/react'; import {Layout} from '../Layout'; import {ConstructorPage} from '../ConstructorPage'; @@ -21,6 +22,17 @@ export function Page({data, ...pageProps}: Props) { const type = getPageType(data); const Page = getPageByType(type); + const tabs = useDiplodocTabs(); + tabs.configure({saveTabsToLocalStorage: true, saveTabsToQueryStateMode: 'page'}); + + useEffect(() => { + tabs.onPageChanged(); + tabs.restoreTabs({ + ...tabs.getTabsFromLocalStorage(), + ...tabs.getTabsFromSearchQuery, + }); + }, [tabs]); + return (