|
20 | 20 | constructor() { |
21 | 21 | if (this.mode != null) { |
22 | 22 | if (this.mode == ModeToggle.DARK_MODE) { |
23 | | - if (!this.isDarkPrefer) { |
| 23 | + if (!this.isSysDarkPrefer) { |
24 | 24 | this.setDark(); |
25 | 25 | } |
26 | 26 | } else { |
27 | | - if (this.isDarkPrefer) { |
| 27 | + if (this.isSysDarkPrefer) { |
28 | 28 | this.setLight(); |
29 | 29 | } |
30 | 30 | } |
|
34 | 34 |
|
35 | 35 | /* always follow the system prefers */ |
36 | 36 | this.sysDarkPrefers.addListener(function() { |
37 | | - |
38 | 37 | if (self.mode != null) { |
39 | 38 | if (self.mode == ModeToggle.DARK_MODE) { |
40 | | - if (!self.isDarkPrefer) { |
| 39 | + if (!self.isSysDarkPrefer) { |
41 | 40 | self.setDark(); |
42 | 41 | } |
43 | 42 |
|
44 | 43 | } else { |
45 | | - if (self.isDarkPrefer) { |
| 44 | + if (self.isSysDarkPrefer) { |
46 | 45 | self.setLight(); |
47 | 46 | } |
48 | 47 | } |
|
69 | 68 | sessionStorage.removeItem(ModeToggle.MODE_KEY); |
70 | 69 | } |
71 | 70 |
|
72 | | - get sysDarkPrefers() { |
73 | | - return window.matchMedia("(prefers-color-scheme: dark)"); |
74 | | - } |
| 71 | + get sysDarkPrefers() { return window.matchMedia("(prefers-color-scheme: dark)"); } |
75 | 72 |
|
76 | | - get isDarkPrefer() { |
77 | | - return this.sysDarkPrefers.matches; |
78 | | - } |
| 73 | + get isSysDarkPrefer() { return this.sysDarkPrefers.matches; } |
79 | 74 |
|
80 | | - get mode() { |
81 | | - return sessionStorage.getItem(ModeToggle.MODE_KEY); |
82 | | - } |
| 75 | + get isDarkMode() { return this.mode == ModeToggle.DARK_MODE; } |
| 76 | + |
| 77 | + get isLightkMode() { return this.mode == ModeToggle.LIGHT_MODE; } |
| 78 | + |
| 79 | + get hasMode() { return this.mode != null; } |
| 80 | + |
| 81 | + get mode() { return sessionStorage.getItem(ModeToggle.MODE_KEY); } |
83 | 82 |
|
84 | 83 | flipMode() { |
85 | | - if ((this.mode == null && this.isDarkPrefer) || |
86 | | - this.mode == ModeToggle.DARK_MODE) { |
87 | | - this.setLight(); |
| 84 | + if (this.hasMode) { |
| 85 | + if (this.isSysDarkPrefer) { |
| 86 | + if (this.isLightkMode) { |
| 87 | + this.clearMode(); |
| 88 | + } else { |
| 89 | + this.setLight(); |
| 90 | + } |
88 | 91 |
|
89 | | - } else { /* light mode or default-light */ |
90 | | - this.setDark(); |
| 92 | + } else { |
| 93 | + if (this.isDarkMode) { |
| 94 | + this.clearMode(); |
| 95 | + } else { |
| 96 | + this.setDark(); |
| 97 | + } |
| 98 | + } |
| 99 | + |
| 100 | + } else { |
| 101 | + if (this.isSysDarkPrefer) { |
| 102 | + this.setLight(); |
| 103 | + } else { |
| 104 | + this.setDark(); |
| 105 | + } |
91 | 106 | } |
92 | | - } |
| 107 | + |
| 108 | + } /* flipMode() */ |
93 | 109 |
|
94 | 110 | } /* ModeToggle */ |
95 | 111 |
|
|
0 commit comments