Skip to content

Commit edd6b6b

Browse files
committed
Improve weird header handling
Resolves #2515
1 parent 9124254 commit edd6b6b

File tree

2 files changed

+16
-12
lines changed

2 files changed

+16
-12
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
### Bug Fixes
44

55
- Fixed an issue introduced with 0.25.10 which causes the page index to initially render empty, #2514.
6+
- "On This Page" section is now smarter when handling page headings which do not follow the normal `h1>h2>h3` process, #2515.
67

78
## v0.25.10 (2024-03-03)
89

src/lib/output/themes/default/partials/navigation.tsx

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -122,10 +122,16 @@ export function pageSidebar(context: DefaultThemeRenderContext, props: PageEvent
122122
export function pageNavigation(context: DefaultThemeRenderContext, props: PageEvent<Reflection>) {
123123
const levels: JSX.Element[][] = [[]];
124124

125-
function finalizeLevel() {
125+
function finalizeLevel(finishedHandlingHeadings: boolean) {
126+
const level = levels.pop()!;
127+
if (levels[levels.length - 1].length === 0 && finishedHandlingHeadings) {
128+
levels[levels.length - 1] = level;
129+
return;
130+
}
131+
126132
const built = (
127133
<ul>
128-
{levels.pop()!.map((l) => (
134+
{level.map((l) => (
129135
<li>{l}</li>
130136
))}
131137
</ul>
@@ -136,9 +142,9 @@ export function pageNavigation(context: DefaultThemeRenderContext, props: PageEv
136142
for (const heading of props.pageHeadings) {
137143
const inferredLevel = heading.level ? heading.level + 1 : 1;
138144
while (inferredLevel < levels.length) {
139-
finalizeLevel();
145+
finalizeLevel(false);
140146
}
141-
if (inferredLevel > levels.length) {
147+
while (inferredLevel > levels.length) {
142148
// Lower level than before
143149
levels.push([]);
144150
}
@@ -152,13 +158,16 @@ export function pageNavigation(context: DefaultThemeRenderContext, props: PageEv
152158
}
153159

154160
while (levels.length > 1) {
155-
finalizeLevel();
161+
finalizeLevel(true);
156162
}
157163

158164
if (!levels[0].length) {
159165
return <></>;
160166
}
161167

168+
levels.unshift([]);
169+
finalizeLevel(true);
170+
162171
return (
163172
<details open={true} class="tsd-index-accordion tsd-page-navigation">
164173
<summary class="tsd-accordion-summary">
@@ -167,13 +176,7 @@ export function pageNavigation(context: DefaultThemeRenderContext, props: PageEv
167176
On This Page
168177
</h3>
169178
</summary>
170-
<div class="tsd-accordion-details">
171-
<ul>
172-
{levels[0].map((l) => (
173-
<li>{l}</li>
174-
))}
175-
</ul>
176-
</div>
179+
<div class="tsd-accordion-details">{levels[0]}</div>
177180
</details>
178181
);
179182
}

0 commit comments

Comments
 (0)