Skip to content

Commit 0b4716f

Browse files
committed
commentaires
1 parent b207815 commit 0b4716f

File tree

2 files changed

+44
-38
lines changed

2 files changed

+44
-38
lines changed

public/css/style.css

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
--grey: #d4e0fa;
55
}
66

7+
/* styles pour le changement de thème */
78
body.light-theme {
89
background-color: var(--light);
910
color: var(--dark);

public/js/main.js

+43-38
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,52 @@
11
document.addEventListener('DOMContentLoaded', function () {
2-
const themeToggleBtn = document.getElementById('themeToggleBtn');
3-
const table = document.getElementsByClassName('table');
4-
const body = document.body;
5-
6-
// on regarde si l'utilisateur avait le thème sombre à la dernière visite sur la page ou avant de la rafraîchir
7-
// Si ce n'est pas le cas, on regarde la préférence sélectionnée dans le système de l'utilisateur
8-
const savedTheme = localStorage.getItem('theme');
9-
if (savedTheme) {
10-
body.classList.add(savedTheme);
11-
} else {
12-
13-
const userPrefersDark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
14-
body.classList.add(userPrefersDark ? 'dark-theme' : 'light-theme');
15-
}
2+
const themeToggleBtn = document.getElementById('themeToggleBtn');
3+
const table = document.getElementsByClassName('table');
4+
const body = document.body;
165

17-
// écouteurs d'évènements
18-
themeToggleBtn.addEventListener('click', function(){
19-
body.classList.toggle('light-theme');
20-
body.classList.toggle('dark-theme');
21-
themeToggleBtn.classList.remove('btn-primary');
22-
23-
setTimeout(function(){
24-
themeToggleBtn.classList.toggle(
25-
'btn-dark',
26-
body.classList.contains('light-theme'));
6+
// on regarde si l'utilisateur avait le thème sombre à la dernière visite sur la page ou avant de la rafraîchir
7+
// Si ce n'est pas le cas, on regarde la préférence sélectionnée dans le système de l'utilisateur
8+
const savedTheme = localStorage.getItem('theme');
9+
if (savedTheme) {
10+
body.classList.add(savedTheme);
11+
} else {
12+
13+
const userPrefersDark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
14+
body.classList.add(userPrefersDark ? 'dark-theme' : 'light-theme');
15+
}
2716

28-
themeToggleBtn.classList.toggle(
29-
'btn-light',
30-
body.classList.contains('dark-theme'));
17+
// écouteurs d'évènements
18+
themeToggleBtn.addEventListener('click', function(){
19+
body.classList.toggle('light-theme');
20+
body.classList.toggle('dark-theme');
21+
themeToggleBtn.classList.remove('btn-primary');
22+
23+
/*
24+
L'idée est la suivante: Lorsque qu'un utilisateur clique sur le bouton, on applique aux éléments de la page souhaités une classe, qui varie selon l'élément et si c'est pour
25+
le thème clair ou sombre. Le style de ces classes sont pré-définis dans le fichier style.css, ou alors directement grâce aux classes bootstrap.
3126
32-
themeToggleBtn.innerText = body.classList.contains('dark-theme') ? 'Mode clair' : 'Mode sombre';
27+
On change aussi la couleur du bouton : fond noir & texte blanc si le thème est clair, ou fond blanc et texte noir si thème blanc.
28+
*/
29+
setTimeout(function(){
30+
// setTimeout pour ajouter un effet de transition
31+
themeToggleBtn.classList.toggle(
32+
'btn-dark',
33+
body.classList.contains('light-theme'));
3334

34-
35-
}, 200);
35+
themeToggleBtn.classList.toggle(
36+
'btn-light',
37+
body.classList.contains('dark-theme'));
3638

37-
for (var i = 0; i < table.length; i++){
38-
table[i].classList.toggle('text-light');
39-
}
39+
// on change de le texte du bouton pour indiquer quel thème s'appliquerai si l'utilisateur clique sur le bouton.
40+
themeToggleBtn.innerText = body.classList.contains('dark-theme') ? 'Mode clair' : 'Mode sombre';
41+
}, 200);
4042

41-
// on enregistre le choix de l'utilisateur (pour que le thème reste le même quand il revient)
42-
const currentTheme = body.classList.contains('dark-theme') ? 'dark-theme' : 'light-theme';
43-
localStorage.setItem('theme', currentTheme);
43+
// changer le texte en blanc de tous les tableaux quand le thème est sombre
44+
for (var i = 0; i < table.length; i++){
45+
table[i].classList.toggle('text-light');
46+
}
4447

45-
46-
});
48+
// on enregistre le choix de l'utilisateur (pour que le thème reste le même quand il revient)
49+
const currentTheme = body.classList.contains('dark-theme') ? 'dark-theme' : 'light-theme';
50+
localStorage.setItem('theme', currentTheme);
51+
});
4752
});

0 commit comments

Comments
 (0)