| ... | ... | @@ -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 | |