Skip to content

Commit 2eb6e0d

Browse files
authored
Simplify handling of release roadmap image class (#2046)
Due to the fact that a cookie can override the user's system setting for dark mode, the class on the release roadmap image was being managed by JavaScript. However, we can detect all cases in CSS since the `setTheme` JavaScript function has updated the `data-theme` attribute on the `body` tag in all cases. This patch also groups all CSS related to the release roadmap image together in `_dark-mode.scss`.
1 parent 01fa337 commit 2eb6e0d

File tree

2 files changed

+13
-35
lines changed

2 files changed

+13
-35
lines changed

djangoproject/scss/_dark-mode.scss

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -210,10 +210,6 @@ html[data-theme="dark"] {
210210
--community-img-bg: #{$green-dark};
211211
--community-img-fg: #{$white};
212212

213-
.img-release {
214-
filter: invert(1);
215-
}
216-
217213
.homepage {
218214
.copy-banner {
219215
background: var(--white-color);
@@ -261,12 +257,22 @@ html[data-theme="dark"] {
261257
}
262258
}
263259

264-
.img-release {
265-
&.light {
260+
html[data-theme="light"] .img-release {
261+
filter: invert(0);
262+
}
263+
264+
@media (prefers-color-scheme: light) {
265+
html[data-theme="auto"] .img-release {
266266
filter: invert(0);
267267
}
268+
}
269+
270+
html[data-theme="dark"] .img-release {
271+
filter: invert(1);
272+
}
268273

269-
&.dark {
274+
@media (prefers-color-scheme: dark) {
275+
html[data-theme="auto"] .img-release {
270276
filter: invert(1);
271277
}
272278
}

djangoproject/static/js/mod/switch-dark-mode.js

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,12 @@ function cycleTheme() {
3535
setTheme('auto');
3636
}
3737
}
38-
39-
setReleaseImgClass();
4038
}
4139

4240
function initTheme() {
4341
// set theme defined in localStorage if there is one, or fallback to auto mode
4442
const currentTheme = getCookie('theme');
4543
currentTheme ? setTheme(currentTheme) : setTheme('auto');
46-
setReleaseImgClass();
4744
}
4845

4946
function setupTheme() {
@@ -52,30 +49,6 @@ function setupTheme() {
5249
for (var i = 0; i < buttons.length; i++) {
5350
buttons[i].addEventListener('click', cycleTheme);
5451
}
55-
setReleaseImgClass();
56-
}
57-
58-
function setReleaseImgClass() {
59-
// set class for the image about releases to invert color if needed
60-
const currentTheme = getCookie('theme') || 'auto';
61-
const image = document.getElementsByClassName('img-release')[0];
62-
63-
if (image && currentTheme == 'auto' && prefersDark) {
64-
image.classList.add('dark');
65-
image.classList.remove('light');
66-
}
67-
if (image && currentTheme == 'auto' && !prefersDark) {
68-
image.classList.add('light');
69-
image.classList.remove('dark');
70-
}
71-
if (image && currentTheme == 'light') {
72-
image.classList.add('light');
73-
image.classList.remove('dark');
74-
}
75-
if (image && currentTheme == 'dark') {
76-
image.classList.add('dark');
77-
image.classList.remove('light');
78-
}
7952
}
8053

8154
function setCookie(cname, cvalue, domain) {
@@ -118,5 +91,4 @@ window
11891
.addEventListener('change', function (e) {
11992
prefersDark = e.matches;
12093
initTheme();
121-
setReleaseImgClass();
12294
});

0 commit comments

Comments
 (0)