From 84ef409d55225436db8169ec506dd93f924e81a9 Mon Sep 17 00:00:00 2001 From: Max Bazuev Date: Tue, 25 Feb 2025 17:30:17 +0300 Subject: [PATCH 1/2] feat: tabs restore on page mount --- src/components/App/Page.tsx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/components/App/Page.tsx b/src/components/App/Page.tsx index 7f2dc31..a87e9a4 100644 --- a/src/components/App/Page.tsx +++ b/src/components/App/Page.tsx @@ -2,7 +2,7 @@ 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'; @@ -21,6 +21,14 @@ export function Page({data, ...pageProps}: Props) { const type = getPageType(data); const Page = getPageByType(type); + useEffect(() => { + const tabsContoller = window[Symbol.for('diplodocTabs') as unknown as number]; + if (tabsContoller) { + // @ts-ignore + tabsContoller.restoreTabsPreferred(); + } + }, []); + return ( From 8e76fc746cb7471cca1fcb51867fc9cb581611c4 Mon Sep 17 00:00:00 2001 From: Max Bazuev Date: Wed, 26 Feb 2025 20:26:35 +0300 Subject: [PATCH 2/2] feat: more control of tabs diplodoc-platform/tabs-extension#78 --- src/components/App/Page.tsx | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/components/App/Page.tsx b/src/components/App/Page.tsx index a87e9a4..7046a2c 100644 --- a/src/components/App/Page.tsx +++ b/src/components/App/Page.tsx @@ -5,6 +5,7 @@ import type {Settings} from '../../utils'; 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,13 +22,16 @@ export function Page({data, ...pageProps}: Props) { const type = getPageType(data); const Page = getPageByType(type); + const tabs = useDiplodocTabs(); + tabs.configure({saveTabsToLocalStorage: true, saveTabsToQueryStateMode: 'page'}); + useEffect(() => { - const tabsContoller = window[Symbol.for('diplodocTabs') as unknown as number]; - if (tabsContoller) { - // @ts-ignore - tabsContoller.restoreTabsPreferred(); - } - }, []); + tabs.onPageChanged(); + tabs.restoreTabs({ + ...tabs.getTabsFromLocalStorage(), + ...tabs.getTabsFromSearchQuery, + }); + }, [tabs]); return (