Skip to content

Commit 27e519e

Browse files
committed
fix theme toggle bug
1 parent 42c27a0 commit 27e519e

File tree

2 files changed

+12
-5
lines changed

2 files changed

+12
-5
lines changed

site/_includes/partials/header.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161
</div>
6262
<!-- end big menu -->
6363
<label id="toggle-darkmode" aria-label="light/dark mode toggle switch" class="cursor-pointer grid place-items-center">
64-
<input type="checkbox" value="dark" class="toggle theme-controller bg-base-content row-start-1 col-start-1 col-span-2"/>
64+
<input id="toggle-darkmode-checkbox" type="checkbox" value="dark" class="toggle theme-controller bg-base-content row-start-1 col-start-1 col-span-2"/>
6565
<svg class="col-start-1 row-start-1 stroke-base-100 fill-base-100" xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
6666
<circle cx="12" cy="12" r="5"/>
6767
<path d="M12 1v2M12 21v2M4.2 4.2l1.4 1.4M18.4 18.4l1.4 1.4M1 12h2M21 12h2M4.2 19.8l1.4-1.4M18.4 5.6l1.4-1.4"/>

site/assets/theme-toggle-local.js

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ const setColorMode = (mode) => {
33
if (mode) {
44
// Update data-* attr on html
55
document.documentElement.setAttribute('data-force-color-mode', mode);
6+
document.documentElement.setAttribute('data-theme', mode);
67
// Persist in local storage
78
window.localStorage.setItem('color-mode', mode);
89
// Make sure the checkbox is up-to-date
@@ -35,15 +36,21 @@ mediaQuery.addListener(() => {
3536
// Make sure the checkbox is up-to-date
3637
document.querySelector('#toggle-darkmode').checked = mediaQuery.matches;
3738
});
39+
40+
3841
// Check if there's any override. If so, let the markup know by setting an attribute on the <html> element
3942
const colorModeOverride = window.localStorage.getItem('color-mode');
4043
const hasColorModeOverride = typeof colorModeOverride === 'string';
4144
if (hasColorModeOverride) {
42-
document.documentElement.setAttribute('data-force-color-mode', colorModeOverride);
45+
setColorMode(colorModeOverride);
4346
}
47+
4448
// Check the dark-mode checkbox if
4549
// - The override is set to dark
4650
// - No override is set but the system prefers dark mode
47-
if ((colorModeOverride == 'dark') || (!hasColorModeOverride && window.matchMedia('(prefers-color-scheme: dark)').matches)) {
48-
document.querySelector('#toggle-darkmode').checked = true;
49-
}
51+
if ((colorModeOverride == 'dark') || (window.matchMedia('(prefers-color-scheme: dark)').matches)) {
52+
document.querySelector('#toggle-darkmode-checkbox').checked = true;
53+
}
54+
if ((colorModeOverride == 'light') || (window.matchMedia('(prefers-color-scheme: light)').matches)) {
55+
document.querySelector('#toggle-darkmode-checkbox').checked = false;
56+
}

0 commit comments

Comments
 (0)