Skip to content

Commit 0cea26e

Browse files
committed
Improved JS to manage special cases with dark/light mode
1 parent c9f77d6 commit 0cea26e

1 file changed

Lines changed: 29 additions & 10 deletions

File tree

system/Debug/Toolbar/Views/toolbar.js

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -507,29 +507,48 @@ var ciDebugBar = {
507507

508508
setToolbarTheme: function () {
509509
var btnTheme = document.getElementById('toolbar-theme');
510+
var isDarkMode = window.matchMedia("(prefers-color-scheme: dark)").matches;
511+
var isLightMode = window.matchMedia("(prefers-color-scheme: light)").matches;
510512

513+
// If a cookie is set with a value, we force the color scheme
511514
if (ciDebugBar.readCookie('debug-bar-theme') === 'dark')
512515
{
513-
ciDebugBar.addClass(ciDebugBar.icon, 'dark');
516+
ciDebugBar.removeClass(ciDebugBar.toolbar, 'light');
514517
ciDebugBar.addClass(ciDebugBar.toolbar, 'dark');
515518
}
519+
else if (ciDebugBar.readCookie('debug-bar-theme') === 'light')
520+
{
521+
ciDebugBar.removeClass(ciDebugBar.toolbar, 'dark');
522+
ciDebugBar.addClass(ciDebugBar.toolbar, 'light');
523+
}
516524

517525
btnTheme.addEventListener('click', function () {
518526
var theme = ciDebugBar.readCookie('debug-bar-theme');
519527

520-
ciDebugBar.createCookie('debug-bar-theme', '', -1);
521-
522-
if (!theme || theme === 'light')
528+
if (!theme && window.matchMedia("(prefers-color-scheme: dark)").matches)
523529
{
524-
ciDebugBar.createCookie('debug-bar-theme', 'dark', 365);
525-
ciDebugBar.addClass(ciDebugBar.icon, 'dark');
526-
ciDebugBar.addClass(ciDebugBar.toolbar, 'dark');
530+
// If there is no cookie, and "prefers-color-scheme" is set to "dark"
531+
// It means that the user wants to switch to light mode
532+
ciDebugBar.createCookie('debug-bar-theme', 'light', 365);
533+
ciDebugBar.removeClass(ciDebugBar.toolbar, 'dark');
534+
ciDebugBar.addClass(ciDebugBar.toolbar, 'light');
527535
}
528536
else
529537
{
530-
ciDebugBar.createCookie('debug-bar-theme', 'light', 365);
531-
ciDebugBar.removeClass(ciDebugBar.icon, 'dark');
532-
ciDebugBar.removeClass(ciDebugBar.toolbar, 'dark');
538+
if (theme === 'dark')
539+
{
540+
ciDebugBar.createCookie('debug-bar-theme', 'light', 365);
541+
ciDebugBar.removeClass(ciDebugBar.toolbar, 'dark');
542+
ciDebugBar.addClass(ciDebugBar.toolbar, 'light');
543+
}
544+
else
545+
{
546+
// In any other cases: if there is no cookie, or the cookie is set to
547+
// "light", or the "prefers-color-scheme" is "light"...
548+
ciDebugBar.createCookie('debug-bar-theme', 'dark', 365);
549+
ciDebugBar.removeClass(ciDebugBar.toolbar, 'light');
550+
ciDebugBar.addClass(ciDebugBar.toolbar, 'dark');
551+
}
533552
}
534553
}, true);
535554
},

0 commit comments

Comments
 (0)