Fix JS error on index page and detect dark mode (#18191)
* Fix JS error on index page and detect dark mode The theindex.html page doesn't have a dark mode switch so the main function will error because `toggleSwitch` is not defined. Checks have been added to prevent this from happening. Also add automatic detection of system settings for dark-mode. This could also be done with pure css, but then the dark mode variable declarations would have to be duplicated to work with the switch so I went with this approach. * Fix nimdoc tests * Fix rst2html tests
This commit is contained in:
parent
21f3b8539a
commit
51ab7ccec1
7 changed files with 63 additions and 28 deletions
|
|
@ -252,7 +252,6 @@ function main() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]');
|
|
||||||
function switchTheme(e) {
|
function switchTheme(e) {
|
||||||
if (e.target.checked) {
|
if (e.target.checked) {
|
||||||
document.documentElement.setAttribute('data-theme', 'dark');
|
document.documentElement.setAttribute('data-theme', 'dark');
|
||||||
|
|
@ -263,13 +262,19 @@ function main() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]');
|
||||||
|
if (toggleSwitch !== null) {
|
||||||
toggleSwitch.addEventListener('change', switchTheme, false);
|
toggleSwitch.addEventListener('change', switchTheme, false);
|
||||||
|
}
|
||||||
|
|
||||||
const currentTheme = localStorage.getItem('theme') ? localStorage.getItem('theme') : null;
|
var currentTheme = localStorage.getItem('theme');
|
||||||
|
if (!currentTheme && window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
||||||
|
currentTheme = 'dark';
|
||||||
|
}
|
||||||
if (currentTheme) {
|
if (currentTheme) {
|
||||||
document.documentElement.setAttribute('data-theme', currentTheme);
|
document.documentElement.setAttribute('data-theme', currentTheme);
|
||||||
|
|
||||||
if (currentTheme === 'dark') {
|
if (currentTheme === 'dark' && toggleSwitch !== null) {
|
||||||
toggleSwitch.checked = true;
|
toggleSwitch.checked = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,6 @@ function main() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]');
|
|
||||||
function switchTheme(e) {
|
function switchTheme(e) {
|
||||||
if (e.target.checked) {
|
if (e.target.checked) {
|
||||||
document.documentElement.setAttribute('data-theme', 'dark');
|
document.documentElement.setAttribute('data-theme', 'dark');
|
||||||
|
|
@ -45,13 +44,19 @@ function main() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]');
|
||||||
|
if (toggleSwitch !== null) {
|
||||||
toggleSwitch.addEventListener('change', switchTheme, false);
|
toggleSwitch.addEventListener('change', switchTheme, false);
|
||||||
|
}
|
||||||
|
|
||||||
const currentTheme = localStorage.getItem('theme') ? localStorage.getItem('theme') : null;
|
var currentTheme = localStorage.getItem('theme');
|
||||||
|
if (!currentTheme && window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
||||||
|
currentTheme = 'dark';
|
||||||
|
}
|
||||||
if (currentTheme) {
|
if (currentTheme) {
|
||||||
document.documentElement.setAttribute('data-theme', currentTheme);
|
document.documentElement.setAttribute('data-theme', currentTheme);
|
||||||
|
|
||||||
if (currentTheme === 'dark') {
|
if (currentTheme === 'dark' && toggleSwitch !== null) {
|
||||||
toggleSwitch.checked = true;
|
toggleSwitch.checked = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,6 @@ function main() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]');
|
|
||||||
function switchTheme(e) {
|
function switchTheme(e) {
|
||||||
if (e.target.checked) {
|
if (e.target.checked) {
|
||||||
document.documentElement.setAttribute('data-theme', 'dark');
|
document.documentElement.setAttribute('data-theme', 'dark');
|
||||||
|
|
@ -45,13 +44,19 @@ function main() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]');
|
||||||
|
if (toggleSwitch !== null) {
|
||||||
toggleSwitch.addEventListener('change', switchTheme, false);
|
toggleSwitch.addEventListener('change', switchTheme, false);
|
||||||
|
}
|
||||||
|
|
||||||
const currentTheme = localStorage.getItem('theme') ? localStorage.getItem('theme') : null;
|
var currentTheme = localStorage.getItem('theme');
|
||||||
|
if (!currentTheme && window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
||||||
|
currentTheme = 'dark';
|
||||||
|
}
|
||||||
if (currentTheme) {
|
if (currentTheme) {
|
||||||
document.documentElement.setAttribute('data-theme', currentTheme);
|
document.documentElement.setAttribute('data-theme', currentTheme);
|
||||||
|
|
||||||
if (currentTheme === 'dark') {
|
if (currentTheme === 'dark' && toggleSwitch !== null) {
|
||||||
toggleSwitch.checked = true;
|
toggleSwitch.checked = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,6 @@ function main() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]');
|
|
||||||
function switchTheme(e) {
|
function switchTheme(e) {
|
||||||
if (e.target.checked) {
|
if (e.target.checked) {
|
||||||
document.documentElement.setAttribute('data-theme', 'dark');
|
document.documentElement.setAttribute('data-theme', 'dark');
|
||||||
|
|
@ -45,13 +44,19 @@ function main() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]');
|
||||||
|
if (toggleSwitch !== null) {
|
||||||
toggleSwitch.addEventListener('change', switchTheme, false);
|
toggleSwitch.addEventListener('change', switchTheme, false);
|
||||||
|
}
|
||||||
|
|
||||||
const currentTheme = localStorage.getItem('theme') ? localStorage.getItem('theme') : null;
|
var currentTheme = localStorage.getItem('theme');
|
||||||
|
if (!currentTheme && window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
||||||
|
currentTheme = 'dark';
|
||||||
|
}
|
||||||
if (currentTheme) {
|
if (currentTheme) {
|
||||||
document.documentElement.setAttribute('data-theme', currentTheme);
|
document.documentElement.setAttribute('data-theme', currentTheme);
|
||||||
|
|
||||||
if (currentTheme === 'dark') {
|
if (currentTheme === 'dark' && toggleSwitch !== null) {
|
||||||
toggleSwitch.checked = true;
|
toggleSwitch.checked = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,6 @@ function main() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]');
|
|
||||||
function switchTheme(e) {
|
function switchTheme(e) {
|
||||||
if (e.target.checked) {
|
if (e.target.checked) {
|
||||||
document.documentElement.setAttribute('data-theme', 'dark');
|
document.documentElement.setAttribute('data-theme', 'dark');
|
||||||
|
|
@ -45,13 +44,19 @@ function main() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]');
|
||||||
|
if (toggleSwitch !== null) {
|
||||||
toggleSwitch.addEventListener('change', switchTheme, false);
|
toggleSwitch.addEventListener('change', switchTheme, false);
|
||||||
|
}
|
||||||
|
|
||||||
const currentTheme = localStorage.getItem('theme') ? localStorage.getItem('theme') : null;
|
var currentTheme = localStorage.getItem('theme');
|
||||||
|
if (!currentTheme && window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
||||||
|
currentTheme = 'dark';
|
||||||
|
}
|
||||||
if (currentTheme) {
|
if (currentTheme) {
|
||||||
document.documentElement.setAttribute('data-theme', currentTheme);
|
document.documentElement.setAttribute('data-theme', currentTheme);
|
||||||
|
|
||||||
if (currentTheme === 'dark') {
|
if (currentTheme === 'dark' && toggleSwitch !== null) {
|
||||||
toggleSwitch.checked = true;
|
toggleSwitch.checked = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,6 @@ function main() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]');
|
|
||||||
function switchTheme(e) {
|
function switchTheme(e) {
|
||||||
if (e.target.checked) {
|
if (e.target.checked) {
|
||||||
document.documentElement.setAttribute('data-theme', 'dark');
|
document.documentElement.setAttribute('data-theme', 'dark');
|
||||||
|
|
@ -45,13 +44,19 @@ function main() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]');
|
||||||
|
if (toggleSwitch !== null) {
|
||||||
toggleSwitch.addEventListener('change', switchTheme, false);
|
toggleSwitch.addEventListener('change', switchTheme, false);
|
||||||
|
}
|
||||||
|
|
||||||
const currentTheme = localStorage.getItem('theme') ? localStorage.getItem('theme') : null;
|
var currentTheme = localStorage.getItem('theme');
|
||||||
|
if (!currentTheme && window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
||||||
|
currentTheme = 'dark';
|
||||||
|
}
|
||||||
if (currentTheme) {
|
if (currentTheme) {
|
||||||
document.documentElement.setAttribute('data-theme', currentTheme);
|
document.documentElement.setAttribute('data-theme', currentTheme);
|
||||||
|
|
||||||
if (currentTheme === 'dark') {
|
if (currentTheme === 'dark' && toggleSwitch !== null) {
|
||||||
toggleSwitch.checked = true;
|
toggleSwitch.checked = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,6 @@ function main() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]');
|
|
||||||
function switchTheme(e) {
|
function switchTheme(e) {
|
||||||
if (e.target.checked) {
|
if (e.target.checked) {
|
||||||
document.documentElement.setAttribute('data-theme', 'dark');
|
document.documentElement.setAttribute('data-theme', 'dark');
|
||||||
|
|
@ -45,13 +44,19 @@ function main() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]');
|
||||||
|
if (toggleSwitch !== null) {
|
||||||
toggleSwitch.addEventListener('change', switchTheme, false);
|
toggleSwitch.addEventListener('change', switchTheme, false);
|
||||||
|
}
|
||||||
|
|
||||||
const currentTheme = localStorage.getItem('theme') ? localStorage.getItem('theme') : null;
|
var currentTheme = localStorage.getItem('theme');
|
||||||
|
if (!currentTheme && window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
||||||
|
currentTheme = 'dark';
|
||||||
|
}
|
||||||
if (currentTheme) {
|
if (currentTheme) {
|
||||||
document.documentElement.setAttribute('data-theme', currentTheme);
|
document.documentElement.setAttribute('data-theme', currentTheme);
|
||||||
|
|
||||||
if (currentTheme === 'dark') {
|
if (currentTheme === 'dark' && toggleSwitch !== null) {
|
||||||
toggleSwitch.checked = true;
|
toggleSwitch.checked = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue