From 5dea1f188849e35aee866120958eaf3a2e196a47 Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Fri, 5 Mar 2021 16:16:03 +0100 Subject: [PATCH] Clean up code around theme elements --- src/librustdoc/html/static/main.js | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/src/librustdoc/html/static/main.js b/src/librustdoc/html/static/main.js index 5abcf4aec39..aef86998f0d 100644 --- a/src/librustdoc/html/static/main.js +++ b/src/librustdoc/html/static/main.js @@ -1,3 +1,4 @@ +// ignore-tidy-filelength // Local js definitions: /* global addClass, getSettingValue, hasClass */ /* global onEach, onEachLazy, hasOwnProperty, removeClass, updateLocalStorage */ @@ -84,12 +85,20 @@ function getSearchElement() { return document.getElementById("search"); } +function getThemesElementId() { + return "theme-choices"; +} + function getThemesElement() { - return document.getElementById("theme-choices"); + return document.getElementById(getThemesElementId()); +} + +function getThemePickerElementId() { + return "theme-picker"; } function getThemePickerElement() { - return document.getElementById("theme-picker"); + return document.getElementById(getThemePickerElementId()); } // Returns the current URL without any query parameter or hash. @@ -143,11 +152,11 @@ function hideThemeButtonState() { var active = document.activeElement; var related = e.relatedTarget; - if (active.id !== "theme-picker" && - (!active.parentNode || active.parentNode.id !== "theme-choices") && + if (active.id !== getThemePickerElementId() && + (!active.parentNode || active.parentNode.id !== getThemesElementId()) && (!related || - (related.id !== "theme-picker" && - (!related.parentNode || related.parentNode.id !== "theme-choices")))) { + (related.id !== getThemePickerElementId() && + (!related.parentNode || related.parentNode.id !== getThemesElementId())))) { hideThemeButtonState(); } } @@ -512,8 +521,7 @@ function hideThemeButtonState() { break; default: - var themePicker = getThemePickerElement(); - if (themePicker.parentNode.contains(ev.target)) { + if (getThemePickerElement().parentNode.contains(ev.target)) { handleThemeKeyDown(ev); } } @@ -526,7 +534,7 @@ function hideThemeButtonState() { switch (getVirtualKey(ev)) { case "ArrowUp": ev.preventDefault(); - if (active.previousElementSibling && ev.target.id !== "theme-picker") { + if (active.previousElementSibling && ev.target.id !== getThemePickerElementId()) { active.previousElementSibling.focus(); } else { showThemeButtonState(); @@ -535,7 +543,7 @@ function hideThemeButtonState() { break; case "ArrowDown": ev.preventDefault(); - if (active.nextElementSibling && ev.target.id !== "theme-picker") { + if (active.nextElementSibling && ev.target.id !== getThemePickerElementId()) { active.nextElementSibling.focus(); } else { showThemeButtonState(); @@ -545,7 +553,7 @@ function hideThemeButtonState() { case "Enter": case "Return": case "Space": - if (ev.target.id === "theme-picker" && themes.style.display === "none") { + if (ev.target.id === getThemePickerElementId() && themes.style.display === "none") { ev.preventDefault(); showThemeButtonState(); themes.firstElementChild.focus();