diff --git a/src/examples/clip-one/components/AppLayout/AppLayout.tsx b/src/examples/clip-one/components/AppLayout/AppLayout.tsx index 88f48df..e6b2fde 100644 --- a/src/examples/clip-one/components/AppLayout/AppLayout.tsx +++ b/src/examples/clip-one/components/AppLayout/AppLayout.tsx @@ -92,6 +92,9 @@ export function AppLayout() { onTabsChange={setTabs} onStartPinnedTabsChange={setStartPinnedTabsChange} startPinnedTabs={startPinnedTabs} + initialActiveTabId={activeTabId} + initialTabs={tabs} + initialStartPinnedTabs={startPinnedTabs} hasControlledActiveTabId activeTabId={activeTabId} onActiveTabIdChange={setActiveTabId} diff --git a/src/examples/clip-one/routes/CategoriesRoute.tsx b/src/examples/clip-one/routes/CategoriesRoute.tsx index 40b6feb..935fa2b 100644 --- a/src/examples/clip-one/routes/CategoriesRoute.tsx +++ b/src/examples/clip-one/routes/CategoriesRoute.tsx @@ -97,6 +97,9 @@ export function CategoriesRoute() { onActiveTabIdChange={setActiveTabId} tabs={tabs} startPinnedTabs={startPinnedTabs} + initialActiveTabId={activeTabId} + initialTabs={tabs} + initialStartPinnedTabs={startPinnedTabs} onTabsChange={setTabs} hasControlledActiveTabId onStartPinnedTabsChange={setStartPinnedTabsChange} diff --git a/src/examples/clip-one/routes/ProductsRoute.tsx b/src/examples/clip-one/routes/ProductsRoute.tsx index 4b5699e..c97149c 100644 --- a/src/examples/clip-one/routes/ProductsRoute.tsx +++ b/src/examples/clip-one/routes/ProductsRoute.tsx @@ -95,6 +95,9 @@ export function ProductsRoute() { onTabsChange={setTabs} onStartPinnedTabsChange={onStartPinnedTabsChange} startPinnedTabs={startPinnedTabs} + initialActiveTabId={activeTabId} + initialTabs={tabs} + initialStartPinnedTabs={startPinnedTabs} hasControlledActiveTabId activeTabId={activeTabId} onActiveTabIdChange={setActiveTabId} diff --git a/src/lib/tabs/useTabs.tsx b/src/lib/tabs/useTabs.tsx index c9cc9ff..e431529 100644 --- a/src/lib/tabs/useTabs.tsx +++ b/src/lib/tabs/useTabs.tsx @@ -24,8 +24,11 @@ export type TabsApi = { export type TabsProps = { hasControlledActiveTabId?: boolean; activeTabId?: string; + initialActiveTabId?: string; startPinnedTabs?: string[]; tabs?: TabModel[]; + initialTabs?: TabModel[]; + initialStartPinnedTabs?: string[]; onActiveTabIdChange?: (id: string | undefined) => void; onStartPinnedTabsChange?: (ids: string[]) => void; onTabsChange?: (tabs: TabModel[]) => void; @@ -91,7 +94,14 @@ const useActive = (apiRef: MutableRefObject, props: TabsProps) => { }; const useTabsState = (apiRef: MutableRefObject, props: TabsProps) => { - const { onTabsChange, onActiveTabIdChange, onStartPinnedTabsChange } = props; + const { + onTabsChange, + onActiveTabIdChange, + onStartPinnedTabsChange, + initialTabs = [], + initialActiveTabId, + initialStartPinnedTabs = [], + } = props; const handlersMapRef = useRef<{ tabs?: (tabs: TabModel[]) => void; activeTabId?: (id: string | undefined) => void; @@ -103,9 +113,9 @@ const useTabsState = (apiRef: MutableRefObject, props: TabsProps) => { }); const stateRef = useRef({ - tabs: [], - activeTabId: undefined, - startPinnedTabs: [], + tabs: initialTabs, + activeTabId: initialActiveTabId, + startPinnedTabs: initialStartPinnedTabs, }); apiRef.current["getState"] = () => {