@@ -122,10 +122,16 @@ export function pageSidebar(context: DefaultThemeRenderContext, props: PageEvent
122122export 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