|
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