From 959b45c945b929587bc22edabfd24c57976a49b6 Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade Date: Mon, 27 Nov 2023 16:27:39 +0200 Subject: [PATCH] Activate tabs based on browser's operating system --- docs/conf.py | 4 +++ docs/installation.rst | 8 ++++++ docs/resources/js/activate_tab.js | 42 +++++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+) create mode 100644 docs/resources/js/activate_tab.js diff --git a/docs/conf.py b/docs/conf.py index ef2cb5b8826..c342fded918 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -166,6 +166,10 @@ # directly to the root of the documentation. # html_extra_path = [] +html_js_files = [ + "js/activate_tab.js", +] + # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. # html_last_updated_fmt = '%b %d, %Y' diff --git a/docs/installation.rst b/docs/installation.rst index ed25c551a64..78900aa57af 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -1,6 +1,14 @@ Installation ============ +.. raw:: html + + + Warnings -------- diff --git a/docs/resources/js/activate_tab.js b/docs/resources/js/activate_tab.js new file mode 100644 index 00000000000..789052a02b6 --- /dev/null +++ b/docs/resources/js/activate_tab.js @@ -0,0 +1,42 @@ +// Based on https://stackoverflow.com/a/38241481/724176 +function getOS() { + const userAgent = window.navigator.userAgent, + platform = + window.navigator?.userAgentData?.platform || window.navigator.platform, + macosPlatforms = ["macOS", "Macintosh", "MacIntel", "MacPPC", "Mac68K"], + windowsPlatforms = ["Win32", "Win64", "Windows", "WinCE"], + iosPlatforms = ["iPhone", "iPad", "iPod"]; + + if (macosPlatforms.includes(platform)) { + return "macOS"; + } else if (iosPlatforms.includes(platform)) { + return "iOS"; + } else if (windowsPlatforms.includes(platform)) { + return "Windows"; + } else if (/Android/.test(userAgent)) { + return "Android"; + } else if (/Linux/.test(platform)) { + return "Linux"; + } + + return "unknown"; +} + +function activateTab(tabName) { + // Find all label elements containing the specified tab name + const labels = document.querySelectorAll(".tab-label"); + + labels.forEach((label) => { + if (label.textContent.includes(tabName)) { + // Find the associated input element using the 'for' attribute + const tabInputId = label.getAttribute("for"); + const tabInput = document.getElementById(tabInputId); + + // Check if the input element exists before attempting to set the "checked" attribute + if (tabInput) { + // Activate the tab by setting its "checked" attribute to true + tabInput.checked = true; + } + } + }); +}