diff --git a/CHANGELOG.md b/CHANGELOG.md index 824fb3f..0183d17 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ Previous changes not listed in this document can be traced using Git history. ### Added +- Added persistence of active tab in `TabList` - Added `externalNavigate` and `refresh` actions ## [1.0.26] - 2026-06-16 diff --git a/src/widgets/TabList/TabList.tsx b/src/widgets/TabList/TabList.tsx index 0e87dc8..d97c784 100644 --- a/src/widgets/TabList/TabList.tsx +++ b/src/widgets/TabList/TabList.tsx @@ -1,6 +1,7 @@ import type { TabsProps } from 'antd' import { Empty, Result, Tabs } from 'antd' import { useMemo } from 'react' +import { useSearchParams } from 'react-router' import WidgetRenderer from '../../components/WidgetRenderer' import type { WidgetProps } from '../../types/Widget' @@ -13,6 +14,7 @@ export type TabListWidgetData = WidgetType['spec']['widgetData'] const TabList = ({ resourcesRefs, uid, widgetData }: WidgetProps) => { const { items } = widgetData + const [searchParams, setSearchParams] = useSearchParams() const tabItems = useMemo(() => { return items.reduce>((acc, { label, resourceRefId, title }, index) => { @@ -40,11 +42,25 @@ const TabList = ({ resourcesRefs, uid, widgetData }: WidgetProps key === storedKey) ? storedKey! : (tabItems[0]?.key ?? '') + + const handleTabChange = (key: string) => { + setSearchParams(prev => { + const next = new URLSearchParams(prev) + next.set(paramKey, key) + return next + }, + { replace: true } + ) + } + if (!items.length) { return } - return + return } export default TabList