Fixed dark theme not applying on the first time (#273)
Reviewed-on: #273 Reviewed-by: Mikolaj Widla <widlam@noreply.example.com> Co-authored-by: Adam Bem <adam.bem@zoho.eu> Co-committed-by: Adam Bem <adam.bem@zoho.eu>
This commit is contained in:
		| @@ -3,29 +3,43 @@ import { RouterView } from 'vue-router'; | ||||
| import SidebarComponent from '@components/sidebar/SidebarComponent.vue'; | ||||
| import {onMounted, provide, ref } from 'vue'; | ||||
|  | ||||
| const theme = ref( getTheme() ); | ||||
| provide('theme', theme ); | ||||
|  | ||||
| onMounted( ()=> { | ||||
|   switch( localStorage.theme ) { | ||||
|     case "dark":{ | ||||
|       document.documentElement.classList.add('dark'); | ||||
|       break; | ||||
|   if (localStorage.theme) | ||||
|     selectThemeFromLocalStorage(); | ||||
|   else if (browserPrefersDarkMode()) { | ||||
|     setDarkTheme(); | ||||
|   } | ||||
|     case "light":{ | ||||
|       document.documentElement.classList.remove('dark'); | ||||
|     }}  | ||||
|     theme.value = localStorage.theme;  | ||||
| }) | ||||
|  | ||||
|   const theme = ref( getTheme() ); | ||||
|   provide('theme', theme ); | ||||
| function setDarkTheme() { | ||||
|   document.documentElement.classList.add('dark'); | ||||
|   theme.value = "dark";  | ||||
|   localStorage.setItem("theme", "dark"); | ||||
| } | ||||
|  | ||||
|   function setTheme(newTheme : string){ | ||||
| function selectThemeFromLocalStorage() { | ||||
|   if (localStorage.theme == "dark") | ||||
|     document.documentElement.classList.add('dark'); | ||||
|   else | ||||
|     document.documentElement.classList.remove('dark'); | ||||
|  | ||||
|   theme.value = localStorage.theme; | ||||
| } | ||||
|  | ||||
| function browserPrefersDarkMode(){ | ||||
|     return window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches; | ||||
| } | ||||
|  | ||||
| function setTheme(newTheme : string){ | ||||
|   theme.value = newTheme; | ||||
|   } | ||||
| } | ||||
|  | ||||
|   function getTheme(){ | ||||
| function getTheme(){ | ||||
|   return localStorage.theme; | ||||
|   } | ||||
| } | ||||
|    | ||||
|  | ||||
| </script> | ||||
|   | ||||
| @@ -18,7 +18,10 @@ function changeLogoForTheme(){ | ||||
| } | ||||
|  | ||||
| function isDarkModeSet(){ | ||||
|     if (localStorage.theme)  | ||||
|         return localStorage.theme == "dark"; | ||||
|     else | ||||
|         return window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches; | ||||
| } | ||||
|  | ||||
| function changeTheme(theme:string){ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user