Skip to content

Commit 5ad8f8f

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 4630efb commit 5ad8f8f

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
@@ -116,7 +116,7 @@ export function Layout(props: PageProps & {children: ReactElement<any>}) {
116116
<Header pages={pages} currentPage={currentPage} />
117117
<MobileHeader
118118
currentPage={currentPage}
119-
toc={<MobileToc key="toc" toc={currentPage.tableOfContents ?? []} />}
119+
toc={<MobileToc key="toc" toc={currentPage.tableOfContents ?? []} currentPage={currentPage} />}
120120
nav={<MobileNav key="nav" pages={pages} currentPage={currentPage} />} />
121121
<div className={style({display: 'flex', width: 'full', marginTop: 12})}>
122122
<Nav pages={pages} currentPage={currentPage} />
@@ -198,9 +198,9 @@ function Toc({toc}) {
198198
);
199199
}
200200

201-
function MobileToc({toc}) {
201+
function MobileToc({toc, currentPage}) {
202202
return (
203-
<MobileOnPageNav>
203+
<MobileOnPageNav currentPage={currentPage}>
204204
{renderMobileToc(toc)}
205205
</MobileOnPageNav>
206206
);

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -489,13 +489,11 @@ export function OnPageNav({children}) {
489489
);
490490
}
491491

492-
export function MobileOnPageNav({children}) {
492+
export function MobileOnPageNav({children, currentPage}) {
493493
let [selected, setSelected] = useState('');
494-
495494
useEffect(() => {
496495
let elements = Array.from(document.querySelectorAll('article > :is(h1,h2,h3,h4,h5)'));
497496
elements.reverse();
498-
499497
let visible = new Set();
500498
let observer = new IntersectionObserver(entries => {
501499
for (let entry of entries) {
@@ -524,7 +522,7 @@ export function MobileOnPageNav({children}) {
524522
}
525523

526524
return () => observer.disconnect();
527-
}, []);
525+
}, [currentPage]);
528526

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

0 commit comments

Comments
 (0)