11
11
12
12
function setupScrollSpy ( ) {
13
13
const mainContent = document . querySelector ( '#main-content' ) ;
14
- // Ensure initial keyboard navigability
15
- mainContent . focus ( ) ;
16
14
const toc = mainContent . querySelector ( '.doc-toc' ) ;
17
15
const sections = mainContent . querySelectorAll ( 'section' ) ;
18
16
const sectionPositions = Array . from ( sections ) . map ( ( section ) => section . offsetTop ) ;
@@ -168,6 +166,7 @@ function setupSearch() {
168
166
169
167
function setupSearchKeymaps ( ) {
170
168
const searchInput = document . querySelector ( '#search input' ) ;
169
+ const mainContent = document . querySelector ( '#main-content' ) ;
171
170
// Keyboard shortcut indicator
172
171
const searchKeys = document . createElement ( 'div' ) ;
173
172
const modifierKeyPrefix = navigator . platform . includes ( 'Mac' ) ? '⌘' : 'Ctrl' ;
@@ -190,14 +189,15 @@ function setupSearchKeymaps() {
190
189
results [ selectedIdx ] . classList . remove ( 'selected' ) ;
191
190
}
192
191
results [ newIdx ] . classList . add ( 'selected' ) ;
193
- results [ newIdx ] . scrollIntoView ( { behavior : 'smooth ' , block : 'end ' , inline : 'nearest' } ) ;
192
+ results [ newIdx ] . scrollIntoView ( { behavior : 'instant ' , block : 'nearest ' , inline : 'nearest' } ) ;
194
193
selectedIdx = newIdx ;
195
194
}
196
195
searchInput . addEventListener ( 'keydown' , ( ev ) => {
197
196
const searchResults = document . querySelectorAll ( '.search .result' ) ;
198
197
switch ( ev . key ) {
199
198
case 'Escape' :
200
199
searchInput . blur ( ) ;
200
+ mainContent . focus ( ) ;
201
201
break ;
202
202
case 'Enter' :
203
203
if ( ! searchResults . length || selectedIdx === - 1 ) break ;
@@ -229,6 +229,8 @@ function setupSearchKeymaps() {
229
229
selectedIdx = - 1 ;
230
230
}
231
231
} ) ;
232
+ // Ensure initial keyboard navigability
233
+ mainContent . focus ( ) ;
232
234
}
233
235
234
236
function createSearchResult ( data ) {
0 commit comments