aboutsummaryrefslogtreecommitdiff
path: root/site/static/docs
diff options
context:
space:
mode:
authorXhmikosR <[email protected]>2022-12-18 23:32:17 +0200
committerGitHub <[email protected]>2022-12-18 14:32:17 -0700
commite1315d11f2fb9a43b96dd48bf8f9aaf5305372b2 (patch)
treea1f09437ae0d47979c6e157e8dffcd1867a0ca82 /site/static/docs
parent6807008159012b9cf370db87dcd804c4cae3a1b5 (diff)
downloadbootstrap-e1315d11f2fb9a43b96dd48bf8f9aaf5305372b2.tar.xz
bootstrap-e1315d11f2fb9a43b96dd48bf8f9aaf5305372b2.zip
docs: move color-mode script (#37658)
* docs: move color-mode script * Move color-modes.js in static folder * Async load color-modes.js * Switch to DOMContentLoaded * Revert async loading
Diffstat (limited to 'site/static/docs')
-rw-r--r--site/static/docs/5.2/assets/js/color-modes.js62
1 files changed, 62 insertions, 0 deletions
diff --git a/site/static/docs/5.2/assets/js/color-modes.js b/site/static/docs/5.2/assets/js/color-modes.js
new file mode 100644
index 000000000..41b6b893e
--- /dev/null
+++ b/site/static/docs/5.2/assets/js/color-modes.js
@@ -0,0 +1,62 @@
+/*!
+ * Color mode toggler for Bootstrap's docs (https://getbootstrap.com/)
+ * Copyright 2011-2022 The Bootstrap Authors
+ * Licensed under the Creative Commons Attribution 3.0 Unported License.
+ */
+
+(() => {
+ 'use strict'
+
+ const storedTheme = localStorage.getItem('theme')
+
+ const getPreferredTheme = () => {
+ if (storedTheme) {
+ return storedTheme
+ }
+
+ return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'
+ }
+
+ const setTheme = function (theme) {
+ if (theme === 'auto' && window.matchMedia('(prefers-color-scheme: dark)').matches) {
+ document.documentElement.setAttribute('data-bs-theme', 'dark')
+ } else {
+ document.documentElement.setAttribute('data-bs-theme', theme)
+ }
+ }
+
+ setTheme(getPreferredTheme())
+
+ const showActiveTheme = theme => {
+ const activeThemeIcon = document.querySelector('.theme-icon-active use')
+ const btnToActive = document.querySelector(`[data-bs-theme-value="${theme}"]`)
+ const svgOfActiveBtn = btnToActive.querySelector('svg use').getAttribute('href')
+
+ document.querySelectorAll('[data-bs-theme-value]').forEach(element => {
+ element.classList.remove('active')
+ })
+
+ btnToActive.classList.add('active')
+ activeThemeIcon.setAttribute('href', svgOfActiveBtn)
+ }
+
+ window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
+ if (storedTheme !== 'light' || storedTheme !== 'dark') {
+ setTheme(getPreferredTheme())
+ }
+ })
+
+ window.addEventListener('DOMContentLoaded', () => {
+ showActiveTheme(getPreferredTheme())
+
+ document.querySelectorAll('[data-bs-theme-value]')
+ .forEach(toggle => {
+ toggle.addEventListener('click', () => {
+ const theme = toggle.getAttribute('data-bs-theme-value')
+ localStorage.setItem('theme', theme)
+ setTheme(theme)
+ showActiveTheme(theme)
+ })
+ })
+ })
+})()