Skip to content

Commit 3f35b73

Browse files
committed
🐛 fix sidebar collapse state reuse by fiber
1 parent d1dc2af commit 3f35b73

File tree

5 files changed

+12
-9
lines changed

5 files changed

+12
-9
lines changed

packages/theme-nonepress/src/theme/Menu/Category.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export default function MenuCategory({
1313
items,
1414
href,
1515
collapsed = false,
16-
setCollapsed = () => undefined,
16+
updateCollapsed = () => undefined,
1717
collapsible = true,
1818
className,
1919
activeClassName,
@@ -31,10 +31,10 @@ export default function MenuCategory({
3131
collapsible
3232
? (e) => {
3333
if (href) {
34-
setCollapsed(false);
34+
updateCollapsed(false);
3535
} else {
3636
e.preventDefault();
37-
setCollapsed(!collapsed);
37+
updateCollapsed();
3838
}
3939
}
4040
: undefined
@@ -50,7 +50,7 @@ export default function MenuCategory({
5050
className="menu-category-button"
5151
onClick={(e) => {
5252
e.preventDefault();
53-
setCollapsed(!collapsed);
53+
updateCollapsed();
5454
}}
5555
>
5656
<IconDropdown

packages/theme-nonepress/src/theme/NavbarItem/DropdownNavbarItem.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,9 @@ function DropdownNavbarItemMobile({
8585
const { collapsed, setCollapsed } = useCollapsible({
8686
initialState: () => !containsActive,
8787
});
88+
const updateCollapsed = (toCollapsed: boolean = !collapsed) => {
89+
setCollapsed(toCollapsed);
90+
};
8891

8992
// Expand/collapse if any item active after a navigation
9093
useEffect(() => {
@@ -102,7 +105,7 @@ function DropdownNavbarItemMobile({
102105
{...props}
103106
collapsed={collapsed}
104107
collapsible
105-
setCollapsed={setCollapsed}
108+
updateCollapsed={updateCollapsed}
106109
items={subItems}
107110
/>
108111
);

packages/theme-nonepress/src/theme/Page/Sidebar/Items/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ function SidebarItems({ items, path, level }: Props): JSX.Element {
1010
<DocSidebarItemsExpandedStateProvider>
1111
{items.map((item, index) => (
1212
<SidebarItem
13-
key={index}
13+
key={`${path}_${index}`}
1414
index={index}
1515
level={level}
1616
item={item}

packages/theme-nonepress/src/theme/Page/SidebarItem/Category/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ export default function SidebarItemCategory({
9292
return isActive ? false : item.collapsed;
9393
},
9494
});
95-
95+
9696
const { expandedItem, setExpandedItem } = useDocSidebarItemsExpandedState();
9797
// Use this instead of `setCollapsed`, because it is also reactive
9898
const updateCollapsed = (toCollapsed: boolean = !collapsed) => {
@@ -126,7 +126,7 @@ export default function SidebarItemCategory({
126126
label={label}
127127
items={subItems}
128128
collapsed={collapsed}
129-
setCollapsed={updateCollapsed}
129+
updateCollapsed={updateCollapsed}
130130
collapsible={collapsible}
131131
aria-current={isCurrentPage ? "page" : undefined}
132132
aria-expanded={collapsible ? !collapsed : undefined}

packages/theme-nonepress/src/types.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1195,7 +1195,7 @@ declare module "@theme/Menu/Category" {
11951195
readonly items: React.ReactNode;
11961196
readonly collapsed?: boolean;
11971197
readonly collapsible?: boolean;
1198-
readonly setCollapsed?: (collapsed: boolean) => void;
1198+
readonly updateCollapsed?: (toCollapsed?: boolean) => void;
11991199
readonly wrapperClassName?: string;
12001200
}
12011201

0 commit comments

Comments
 (0)