From 12bcad983735b83b668cb21ea1869a87f3480fe2 Mon Sep 17 00:00:00 2001 From: hjcho Date: Thu, 24 Jul 2025 18:03:25 +0900 Subject: [PATCH] fix(theme-classic): fix collapsed sidebar category expansion when navigating to another link within that category (#11338) Co-authored-by: qqq614 --- .../theme/DocSidebarItem/Category/index.tsx | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Category/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Category/index.tsx index cf29059928..22270f21a3 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Category/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocSidebarItem/Category/index.tsx @@ -37,18 +37,30 @@ function useAutoExpandActiveCategory({ isActive, collapsed, updateCollapsed, + activePath, }: { isActive: boolean; collapsed: boolean; updateCollapsed: (b: boolean) => void; + activePath: string; }) { const wasActive = usePrevious(isActive); + const previousActivePath = usePrevious(activePath); useEffect(() => { const justBecameActive = isActive && !wasActive; - if (justBecameActive && collapsed) { + const stillActiveButPathChanged = + isActive && wasActive && activePath !== previousActivePath; + if ((justBecameActive || stillActiveButPathChanged) && collapsed) { updateCollapsed(false); } - }, [isActive, wasActive, collapsed, updateCollapsed]); + }, [ + isActive, + wasActive, + collapsed, + updateCollapsed, + activePath, + previousActivePath, + ]); } /** @@ -150,7 +162,12 @@ export default function DocSidebarItemCategory({ setExpandedItem(toCollapsed ? null : index); setCollapsed(toCollapsed); }; - useAutoExpandActiveCategory({isActive, collapsed, updateCollapsed}); + useAutoExpandActiveCategory({ + isActive, + collapsed, + updateCollapsed, + activePath, + }); useEffect(() => { if ( collapsible &&