@@ -41,7 +41,7 @@ var zigAnalysis;
41
41
const domSearch = document . getElementById ( "search" ) ;
42
42
const domSectSearchResults = document . getElementById ( "sectSearchResults" ) ;
43
43
const domSectSearchAllResultsLink = document . getElementById ( "sectSearchAllResultsLink" ) ;
44
-
44
+ const domDocs = document . getElementById ( "docs" ) ;
45
45
const domListSearchResults = document . getElementById ( "listSearchResults" ) ;
46
46
const domSectSearchNoResults = document . getElementById ( "sectSearchNoResults" ) ;
47
47
const domSectInfo = document . getElementById ( "sectInfo" ) ;
@@ -51,6 +51,7 @@ var zigAnalysis;
51
51
const domHdrName = document . getElementById ( "hdrName" ) ;
52
52
const domHelpModal = document . getElementById ( "helpModal" ) ;
53
53
const domSearchPlaceholder = document . getElementById ( "searchPlaceholder" ) ;
54
+ const domLangRefLink = document . getElementById ( "langRefLink" ) ;
54
55
55
56
let searchTimer = null ;
56
57
let searchTrimResults = true ;
@@ -116,10 +117,10 @@ var zigAnalysis;
116
117
} ) ;
117
118
domSectSearchAllResultsLink . addEventListener ( 'click' , onClickSearchShowAllResults , false ) ;
118
119
function onClickSearchShowAllResults ( ev ) {
119
- ev . preventDefault ( ) ;
120
- ev . stopPropagation ( ) ;
121
- searchTrimResults = false ;
122
- onHashChange ( ) ;
120
+ ev . preventDefault ( ) ;
121
+ ev . stopPropagation ( ) ;
122
+ searchTrimResults = false ;
123
+ onHashChange ( ) ;
123
124
}
124
125
125
126
domPrivDeclsBox . addEventListener (
@@ -161,6 +162,13 @@ var zigAnalysis;
161
162
window . addEventListener ( "keydown" , onWindowKeyDown , false ) ;
162
163
onHashChange ( ) ;
163
164
165
+ let langRefVersion = zigAnalysis . params . zigVersion ;
166
+ if ( ! / ^ \d + \. \d + \. \d + $ / . test ( langRefVersion ) ) {
167
+ // the version is probably not released yet
168
+ langRefVersion = "master" ;
169
+ }
170
+ domLangRefLink . href = `https://ziglang.org/documentation/${ langRefVersion } /` ;
171
+
164
172
function renderTitle ( ) {
165
173
let list = curNav . pkgNames . concat ( curNav . declNames ) ;
166
174
let suffix = " - Zig" ;
@@ -3140,6 +3148,23 @@ var zigAnalysis;
3140
3148
domSearch . blur ( ) ;
3141
3149
}
3142
3150
3151
+ // hide the modal if it's visible or return to the previous result page and unfocus the search
3152
+ function onEscape ( ev ) {
3153
+ if ( ! domHelpModal . classList . contains ( "hidden" ) ) {
3154
+ domHelpModal . classList . add ( "hidden" ) ;
3155
+ ev . preventDefault ( ) ;
3156
+ ev . stopPropagation ( ) ;
3157
+ } else {
3158
+ domSearch . value = "" ;
3159
+ domSearch . blur ( ) ;
3160
+ domSearchPlaceholder . classList . remove ( "hidden" ) ;
3161
+ curSearchIndex = - 1 ;
3162
+ ev . preventDefault ( ) ;
3163
+ ev . stopPropagation ( ) ;
3164
+ startSearch ( ) ;
3165
+ }
3166
+ }
3167
+
3143
3168
function onSearchKeyDown ( ev ) {
3144
3169
switch ( getKeyString ( ev ) ) {
3145
3170
case "Enter" :
@@ -3156,19 +3181,15 @@ var zigAnalysis;
3156
3181
ev . stopPropagation ( ) ;
3157
3182
return ;
3158
3183
case "Esc" :
3159
- domSearch . value = "" ;
3160
- domSearch . blur ( ) ;
3161
- curSearchIndex = - 1 ;
3162
- ev . preventDefault ( ) ;
3163
- ev . stopPropagation ( ) ;
3164
- startSearch ( ) ;
3165
- return ;
3184
+ onEscape ( ev ) ;
3185
+ return
3166
3186
case "Up" :
3167
3187
moveSearchCursor ( - 1 ) ;
3168
3188
ev . preventDefault ( ) ;
3169
3189
ev . stopPropagation ( ) ;
3170
3190
return ;
3171
3191
case "Down" :
3192
+ // TODO: make the page scroll down if the search cursor is out of the screen
3172
3193
moveSearchCursor ( 1 ) ;
3173
3194
ev . preventDefault ( ) ;
3174
3195
ev . stopPropagation ( ) ;
@@ -3237,19 +3258,18 @@ var zigAnalysis;
3237
3258
function onWindowKeyDown ( ev ) {
3238
3259
switch ( getKeyString ( ev ) ) {
3239
3260
case "Esc" :
3240
- if ( ! domHelpModal . classList . contains ( "hidden" ) ) {
3241
- domHelpModal . classList . add ( "hidden" ) ;
3261
+ onEscape ( ev ) ;
3262
+ break ;
3263
+ case "s" :
3264
+ if ( domHelpModal . classList . contains ( "hidden" ) ) {
3265
+ domSearch . focus ( ) ;
3266
+ domSearch . select ( ) ;
3267
+ domDocs . scrollTo ( 0 , 0 ) ;
3242
3268
ev . preventDefault ( ) ;
3243
3269
ev . stopPropagation ( ) ;
3270
+ startAsyncSearch ( ) ;
3244
3271
}
3245
3272
break ;
3246
- case "s" :
3247
- domSearch . focus ( ) ;
3248
- domSearch . select ( ) ;
3249
- ev . preventDefault ( ) ;
3250
- ev . stopPropagation ( ) ;
3251
- startAsyncSearch ( ) ;
3252
- break ;
3253
3273
case "?" :
3254
3274
ev . preventDefault ( ) ;
3255
3275
ev . stopPropagation ( ) ;
@@ -3265,6 +3285,7 @@ var zigAnalysis;
3265
3285
domHelpModal . style . top =
3266
3286
window . innerHeight / 2 - domHelpModal . clientHeight / 2 + "px" ;
3267
3287
domHelpModal . focus ( ) ;
3288
+ domSearch . blur ( ) ;
3268
3289
}
3269
3290
3270
3291
function clearAsyncSearch ( ) {
@@ -3290,7 +3311,7 @@ var zigAnalysis;
3290
3311
list . sort ( ) ;
3291
3312
return list ;
3292
3313
}
3293
-
3314
+
3294
3315
function renderSearch ( ) {
3295
3316
let matchedItems = [ ] ;
3296
3317
let ignoreCase = curNavSearch . toLowerCase ( ) === curNavSearch ;
@@ -3379,13 +3400,13 @@ var zigAnalysis;
3379
3400
const text = lastPkgName + "." + match . path . declNames . join ( "." ) ;
3380
3401
const href = navLink ( match . path . pkgNames , match . path . declNames ) ;
3381
3402
3382
- matchedItemsHTML += "<li><a href=\"" + href + "\">" + text + "</a></li>" ;
3403
+ matchedItemsHTML += "<li><a href=\"" + href + "\">" + text + "</a></li>" ;
3383
3404
}
3384
3405
3385
3406
// Replace the search results using our newly constructed HTML string
3386
3407
domListSearchResults . innerHTML = matchedItemsHTML ;
3387
3408
if ( searchTrimmed ) {
3388
- domSectSearchAllResultsLink . classList . remove ( "hidden" ) ;
3409
+ domSectSearchAllResultsLink . classList . remove ( "hidden" ) ;
3389
3410
}
3390
3411
renderSearchCursor ( ) ;
3391
3412
0 commit comments