|
1 | 1 | // Local js definitions: |
2 | 2 | /* global getSettingValue, updateLocalStorage, updateTheme */ |
3 | 3 | /* global addClass, removeClass, onEach, onEachLazy */ |
4 | | -/* global MAIN_ID, getVar, getSettingsButton, getHelpButton */ |
5 | | - |
6 | | -// Eventually fix this. |
| 4 | +/* global MAIN_ID, getVar, getSettingsButton, getHelpButton, nonnull */ |
7 | 5 |
|
8 | 6 | "use strict"; |
9 | 7 |
|
|
317 | 315 | } |
318 | 316 |
|
319 | 317 | /** |
320 | | - * @param {MouseEvent} event |
| 318 | + * @param {FocusEvent} event |
321 | 319 | */ |
322 | 320 | function settingsBlurHandler(event) { |
323 | 321 | const helpBtn = getHelpButton(); |
|
337 | 335 |
|
338 | 336 | if (!isSettingsPage) { |
339 | 337 | // We replace the existing "onclick" callback. |
340 | | - const settingsButton = getSettingsButton(); |
341 | | - const settingsMenu = document.getElementById("settings"); |
| 338 | + // These elements must exist, as (outside of the settings page) |
| 339 | + // `settings.js` is only loaded after the settings button is clicked. |
| 340 | + const settingsButton = nonnull(getSettingsButton()); |
| 341 | + const settingsMenu = nonnull(document.getElementById("settings")); |
342 | 342 | settingsButton.onclick = event => { |
| 343 | + // @ts-expect-error |
343 | 344 | if (settingsMenu.contains(event.target)) { |
344 | 345 | return; |
345 | 346 | } |
346 | 347 | event.preventDefault(); |
347 | 348 | const shouldDisplaySettings = settingsMenu.style.display === "none"; |
348 | 349 |
|
349 | | - window.hideAllModals(); |
| 350 | + window.hideAllModals(false); |
350 | 351 | if (shouldDisplaySettings) { |
351 | 352 | displaySettings(); |
352 | 353 | } |
353 | 354 | }; |
354 | 355 | settingsButton.onblur = settingsBlurHandler; |
355 | | - settingsButton.querySelector("a").onblur = settingsBlurHandler; |
| 356 | + // the settings button should always have a link in it |
| 357 | + nonnull(settingsButton.querySelector("a")).onblur = settingsBlurHandler; |
356 | 358 | onEachLazy(settingsMenu.querySelectorAll("input"), el => { |
357 | 359 | el.onblur = settingsBlurHandler; |
358 | 360 | }); |
|
0 commit comments