Skip to content

Commit 47a65ca

Browse files
committed
Fix localStorage integration
1 parent 4867221 commit 47a65ca

File tree

2 files changed

+10
-10
lines changed

2 files changed

+10
-10
lines changed

packages/components/src/components/tabs/index.client.tsx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -74,14 +74,19 @@ export const Tabs = ({
7474

7575
const tabPanelsRef = useRef<HTMLDivElement>(null!);
7676

77-
const ignoreLocalStorage = useActiveTabFromURL(
77+
const tabIndexFromSearchParams = useActiveTabFromURL(
7878
tabPanelsRef,
7979
items,
8080
searchParamKey,
8181
setSelectedIndex,
8282
);
8383
const id = useId();
84-
useActiveTabFromStorage(storageKey ?? id, items, setSelectedIndex, ignoreLocalStorage);
84+
useActiveTabFromStorage(
85+
storageKey ?? id,
86+
items,
87+
setSelectedIndex,
88+
tabIndexFromSearchParams !== -1,
89+
);
8590

8691
const handleChange = (index: number) => {
8792
onChange?.(index);
@@ -252,11 +257,6 @@ function useActiveTabFromStorage(
252257
}
253258

254259
const setSelectedTab = (key: string) => {
255-
const numericIndex = Number(key);
256-
if (!isNaN(numericIndex) && numericIndex >= 0 && numericIndex < items.length) {
257-
setSelectedIndex(numericIndex);
258-
return;
259-
}
260260
const index = items.findIndex((_, i) => getTabKey(items, i) === key);
261261
if (index !== -1) {
262262
setSelectedIndex(index);

packages/components/src/components/tabs/tabs.stories.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -216,15 +216,15 @@ export const LocalStoragePersistence: Story = {
216216
const tab2 = canvas.getByRole('tab', { name: 'Tab 2' });
217217
await userEvent.click(tab2);
218218

219-
// Check that the value was stored in localStorage
219+
// Check that the value was stored in localStorage (slugified key)
220220
const storedValue = localStorage.getItem('test-tabs-storage');
221-
await expect(storedValue).toBe('1');
221+
await expect(storedValue).toBe('tab-2');
222222

223223
// Simulate storage event from another tab/window
224224
window.dispatchEvent(
225225
new StorageEvent('storage', {
226226
key: 'test-tabs-storage',
227-
newValue: '2',
227+
newValue: 'tab-3',
228228
}),
229229
);
230230

0 commit comments

Comments
 (0)