|
@@ -23,6 +23,22 @@
|
|
|
</span>
|
|
|
|
|
|
<div class="nav-right nav-menu" :class="{ 'is-active': isMobile }">
|
|
|
+ <div class="nav-item" id="nightmode-toggle">
|
|
|
+ <span
|
|
|
+ :class="{
|
|
|
+ 'material-icons': true,
|
|
|
+ 'night-mode-toggle': true,
|
|
|
+ 'night-mode-on': localNightmode
|
|
|
+ }"
|
|
|
+ @click="toggleNightmode()"
|
|
|
+ :content="`${
|
|
|
+ localNightmode ? 'Disable' : 'Enable'
|
|
|
+ } Night Mode`"
|
|
|
+ v-tippy
|
|
|
+ >
|
|
|
+ {{ localNightmode ? "dark_mode" : "light_mode" }}
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
<span v-if="loggedIn" class="grouped">
|
|
|
<router-link
|
|
|
v-if="role === 'admin'"
|
|
@@ -49,22 +65,6 @@
|
|
|
<a class="nav-item" @click="openModal('login')">Login</a>
|
|
|
<a class="nav-item" @click="openModal('register')">Register</a>
|
|
|
</span>
|
|
|
- <div class="nav-item" id="nightmode-toggle">
|
|
|
- <p class="is-expanded checkbox-control">
|
|
|
- <label class="switch">
|
|
|
- <input
|
|
|
- type="checkbox"
|
|
|
- id="instant-nightmode"
|
|
|
- v-model="localNightmode"
|
|
|
- />
|
|
|
- <span class="slider round"></span>
|
|
|
- </label>
|
|
|
-
|
|
|
- <label for="instant-nightmode">
|
|
|
- <p>Nightmode</p>
|
|
|
- </label>
|
|
|
- </p>
|
|
|
- </div>
|
|
|
</div>
|
|
|
|
|
|
<christmas-lights
|
|
@@ -92,7 +92,7 @@ export default {
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
- localNightmode: null,
|
|
|
+ localNightmode: false,
|
|
|
isMobile: false,
|
|
|
frontendDomain: "",
|
|
|
siteSettings: {
|
|
@@ -116,26 +116,9 @@ export default {
|
|
|
})
|
|
|
},
|
|
|
watch: {
|
|
|
- localNightmode(newValue, oldValue) {
|
|
|
- if (oldValue === null) return;
|
|
|
-
|
|
|
- localStorage.setItem("nightmode", this.localNightmode);
|
|
|
-
|
|
|
- if (this.loggedIn) {
|
|
|
- this.socket.dispatch(
|
|
|
- "users.updatePreferences",
|
|
|
- { nightmode: this.localNightmode },
|
|
|
- res => {
|
|
|
- if (res.status !== "success") new Toast(res.message);
|
|
|
- }
|
|
|
- );
|
|
|
- }
|
|
|
-
|
|
|
- this.changeNightmode(this.localNightmode);
|
|
|
- },
|
|
|
nightmode(nightmode) {
|
|
|
if (this.localNightmode !== nightmode)
|
|
|
- this.localNightmode = nightmode;
|
|
|
+ this.toggleNightmode(nightmode);
|
|
|
}
|
|
|
},
|
|
|
async mounted() {
|
|
@@ -151,6 +134,23 @@ export default {
|
|
|
});
|
|
|
},
|
|
|
methods: {
|
|
|
+ toggleNightmode(toggle) {
|
|
|
+ this.localNightmode = toggle || !this.localNightmode;
|
|
|
+
|
|
|
+ localStorage.setItem("nightmode", this.localNightmode);
|
|
|
+
|
|
|
+ if (this.loggedIn) {
|
|
|
+ this.socket.dispatch(
|
|
|
+ "users.updatePreferences",
|
|
|
+ { nightmode: this.localNightmode },
|
|
|
+ res => {
|
|
|
+ if (res.status !== "success") new Toast(res.message);
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ this.changeNightmode(this.localNightmode);
|
|
|
+ },
|
|
|
onResize() {
|
|
|
this.windowWidth = window.innerWidth;
|
|
|
},
|