Skip to content

Commit 07687f1

Browse files
committed
properly reobserve the new page post-navigation so the page nav picker updates during scroll on mobile
this is because the page doesnt actually remount, we reuse the existing component tree
1 parent ecf9ef0 commit 07687f1

File tree

2 files changed

+5
-7
lines changed

2 files changed

+5
-7
lines changed

packages/dev/s2-docs/src/Layout.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ export function Layout(props: PageProps & {children: ReactElement<any>}) {
118118
<Header pages={pages} currentPage={currentPage} />
119119
<MobileHeader
120120
currentPage={currentPage}
121-
toc={<MobileToc key="toc" toc={currentPage.tableOfContents ?? []} />}
121+
toc={<MobileToc key="toc" toc={currentPage.tableOfContents ?? []} currentPage={currentPage} />}
122122
nav={<MobileNav key="nav" pages={pages} currentPage={currentPage} />} />
123123
<div className={style({display: 'flex', width: 'full', marginTop: 12})}>
124124
<Nav pages={pages} currentPage={currentPage} />
@@ -200,9 +200,9 @@ function Toc({toc}) {
200200
);
201201
}
202202

203-
function MobileToc({toc}) {
203+
function MobileToc({toc, currentPage}) {
204204
return (
205-
<MobileOnPageNav>
205+
<MobileOnPageNav currentPage={currentPage}>
206206
{renderMobileToc(toc)}
207207
</MobileOnPageNav>
208208
);

packages/dev/s2-docs/src/Nav.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -496,13 +496,11 @@ export function OnPageNav({children}) {
496496
);
497497
}
498498

499-
export function MobileOnPageNav({children}) {
499+
export function MobileOnPageNav({children, currentPage}) {
500500
let [selected, setSelected] = useState('');
501-
502501
useEffect(() => {
503502
let elements = Array.from(document.querySelectorAll('article > :is(h1,h2,h3,h4,h5)'));
504503
elements.reverse();
505-
506504
let visible = new Set();
507505
let observer = new IntersectionObserver(entries => {
508506
for (let entry of entries) {
@@ -531,7 +529,7 @@ export function MobileOnPageNav({children}) {
531529
}
532530

533531
return () => observer.disconnect();
534-
}, []);
532+
}, [currentPage]);
535533

536534
return (
537535
<Picker aria-label="Table of contents" selectedKey={selected} isQuiet size="L">

0 commit comments

Comments
 (0)