Skip to content

Commit aa6c20d

Browse files
authored
feat: Update dark mode switch to be compatible with Django 4.2 admin dark mode (#491)
* Bump version to 3.2.4 * Fix: Add support for Django 4.2 color scheme switch while maintaining backwards compatibility * fix linter * Remove unnecessary line in JS * Update css
1 parent 7dea618 commit aa6c20d

File tree

5 files changed

+35
-21
lines changed

5 files changed

+35
-21
lines changed

djangocms_admin_style/sass/settings/_cms.scss

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,10 @@ $gray-super-lightest: var(--dca-gray-super-lightest); //;
3737
color-scheme: dark light;
3838
}
3939

40-
:root[data-color-scheme="light"], :root:not([data-color-scheme]) {
40+
:root[data-color-scheme="light"],
41+
:root:not([data-color-scheme]):not([data-theme]),
42+
:root[data-theme="light"],
43+
:root[data-theme="auto"] {
4144
color-scheme: light;
4245
--dca-light-mode: 1;
4346
--dca-dark-mode: 0;
@@ -53,7 +56,7 @@ $gray-super-lightest: var(--dca-gray-super-lightest); //;
5356
--dca-gray-super-lightest: #f7f7f7;
5457
}
5558

56-
:root[data-color-scheme="dark"] {
59+
:root[data-color-scheme="dark"], :root[data-theme="dark"] {
5760
color-scheme: dark;
5861
--dca-light-mode: 0;
5962
--dca-dark-mode: 1;
@@ -72,7 +75,8 @@ $gray-super-lightest: var(--dca-gray-super-lightest); //;
7275
--focus-brightness: 1.5;
7376
}
7477
@media (prefers-color-scheme: dark) {
75-
:root:not([data-color-scheme]) {
78+
:root:not([data-color-scheme]):not([data-theme]),
79+
:root[data-theme="auto"] {
7680
--dca-light-mode: 0;
7781
--dca-dark-mode: 1;
7882
--dca-white: #2A2C2E;

djangocms_admin_style/sass/settings/_reset-django-dark-mode.scss

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
:root[data-color-scheme="light"] {
1+
:root[data-color-scheme="light"],
2+
:root[data-theme="light"] {
23
--primary: #79aec8;
34
--secondary: #417690;
45
--accent: #f5dd5d;
@@ -50,7 +51,8 @@
5051
--object-tools-hover-bg: var(--close-button-hover-bg);
5152
}
5253

53-
:root[data-color-scheme="dark"] {
54+
:root[data-color-scheme="dark"],
55+
:root[data-theme="dark"] {
5456
--primary: #264b5d;
5557
--primary-fg: #f7f7f7;
5658

djangocms_admin_style/static/djangocms_admin_style/css/djangocms-admin.css

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

djangocms_admin_style/static/djangocms_admin_style/js/dist/bundle.adminstyle.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

djangocms_admin_style/static/djangocms_admin_style/js/modules/dark-mode.js

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -40,22 +40,30 @@ function getColorSchemeFromSettings(CMS) {
4040
* @returns {void}
4141
*/
4242
function darkModeSettings() {
43-
if (!document.documentElement.dataset.colorScheme) {
44-
var colorScheme = 'auto'; // Default mode
45-
var cms_window = getTopWindow();
46-
47-
if (cms_window.CMS) {
48-
colorScheme = getColorSchemeFromSettings(cms_window.CMS);
49-
} else if (window.localStorage) {
50-
// CMS not loaded: set color scheme for admin site according to settings
51-
colorScheme = JSON.parse(localStorage.getItem('cms_cookie') || '{}').color_scheme;
52-
}
53-
if (colorScheme === 'auto' || colorScheme === undefined) {
54-
delete document.documentElement.dataset.colorScheme;
55-
} else {
56-
document.documentElement.dataset.colorScheme = colorScheme;
43+
var colorScheme = document.documentElement.dataset.theme;
44+
45+
if (!colorScheme) {
46+
colorScheme = localStorage.getItem('theme');
47+
if (!colorScheme) {
48+
if (!document.documentElement.dataset.colorScheme) {
49+
var cms_window = getTopWindow();
50+
51+
if (cms_window.CMS) {
52+
colorScheme = getColorSchemeFromSettings(cms_window.CMS);
53+
} else {
54+
// CMS not loaded: set color scheme for admin site according to settings
55+
colorScheme = JSON.parse(localStorage.getItem('cms_cookie') || '{}').color_scheme;
56+
}
57+
58+
if (colorScheme === 'auto' || colorScheme === undefined) {
59+
document.documentElement.dataset.theme = 'auto';
60+
} else {
61+
document.documentElement.dataset.theme = colorScheme;
62+
}
63+
}
5764
}
5865
}
66+
document.documentElement.dataset.theme = colorScheme;
5967
}
6068

6169
module.exports = darkModeSettings;

0 commit comments

Comments
 (0)