about summary refs log tree commit diff
path: root/src/librustdoc/html/static/js
diff options
context:
space:
mode:
authorbinarycat <binarycat@envs.net>2025-04-02 13:56:31 -0500
committerbinarycat <binarycat@envs.net>2025-04-02 13:56:31 -0500
commit9f54910f4ba9d1183c5246ec16f0a35183772db2 (patch)
treecc219ae26c68a8154b270256f0a4dfa2f931d270 /src/librustdoc/html/static/js
parent8a341298ec1c6a029bda1cc9f0ec696e9444caa9 (diff)
settings.js: add elemContainsTarget utility function
this allows us to eliminate the last 3 @ts-expect-error
in this file.
Diffstat (limited to 'src/librustdoc/html/static/js')
-rw-r--r--src/librustdoc/html/static/js/settings.js21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/librustdoc/html/static/js/settings.js b/src/librustdoc/html/static/js/settings.js
index 4facb45ae38..d82f5f54633 100644
--- a/src/librustdoc/html/static/js/settings.js
+++ b/src/librustdoc/html/static/js/settings.js
@@ -9,6 +9,18 @@
     const isSettingsPage = window.location.pathname.endsWith("/settings.html");
 
     /**
+     * @param {Element} elem
+     * @param {EventTarget|null} target
+     */
+    function elemContainsTarget(elem, target) {
+        if (target instanceof Node) {
+            return elem.contains(target);
+        } else {
+            return false;
+        }
+    }
+    
+    /**
      * @overload {"theme"|"preferred-dark-theme"|"preferred-light-theme"}
      * @param {string} settingName
      * @param {string} value
@@ -322,12 +334,10 @@
         const settingsBtn = getSettingsButton();
         const helpUnfocused = helpBtn === null ||
               (!helpBtn.contains(document.activeElement) &&
-               // @ts-expect-error
-               !helpBtn.contains(event.relatedTarget));
+               !elemContainsTarget(helpBtn, event.relatedTarget));
         const settingsUnfocused = settingsBtn === null ||
               (!settingsBtn.contains(document.activeElement) &&
-               // @ts-expect-error
-               !settingsBtn.contains(event.relatedTarget));
+               !elemContainsTarget(settingsBtn, event.relatedTarget));
         if (helpUnfocused && settingsUnfocused) {
             window.hidePopoverMenus();
         }
@@ -340,8 +350,7 @@
         const settingsButton = nonnull(getSettingsButton());
         const settingsMenu = nonnull(document.getElementById("settings"));
         settingsButton.onclick = event => {
-            // @ts-expect-error
-            if (settingsMenu.contains(event.target)) {
+            if (elemContainsTarget(settingsMenu, event.target)) {
                 return;
             }
             event.preventDefault();