mirror of
				https://github.com/fooflington/selfdefined.git
				synced 2025-10-30 21:58:32 +00:00 
			
		
		
		
	fix: Prevent flash of light mode if dark mode is selected (#446)
This commit is contained in:
		 Sebastian Silbermann
					Sebastian Silbermann
				
			
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			 GitHub
						GitHub
					
				
			
						parent
						
							d2165177ab
						
					
				
				
					commit
					630089cdb6
				
			| @@ -35,6 +35,29 @@ | |||||||
|     {% endblock pageStyles %} |     {% endblock pageStyles %} | ||||||
|   </head> |   </head> | ||||||
|   <body> |   <body> | ||||||
|  |     <script> | ||||||
|  |       /** | ||||||
|  |       * @type String | ||||||
|  |       */ | ||||||
|  |       let userThemeSetting = localStorage.getItem('sdUserTheme'); | ||||||
|  |  | ||||||
|  |       if (userThemeSetting) { | ||||||
|  |         document.documentElement.setAttribute( | ||||||
|  |           'data-user-theme', | ||||||
|  |           userThemeSetting | ||||||
|  |         ); | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       window.setUserPreference = function setUserPreference(value) { | ||||||
|  |         localStorage.setItem('sdUserTheme', value); | ||||||
|  |         document.documentElement.setAttribute('data-user-theme', value); | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       window.unsetUserPreference = function unsetUserPreference() { | ||||||
|  |         localStorage.removeItem('sdUserTheme'); | ||||||
|  |         document.documentElement.removeAttribute('data-user-theme'); | ||||||
|  |       } | ||||||
|  |     </script> | ||||||
|     {% block content %}{% endblock content %} |     {% block content %}{% endblock content %} | ||||||
|     {% include 'components/base/site-footer.njk' %} |     {% include 'components/base/site-footer.njk' %} | ||||||
|     {% block pageScript %} |     {% block pageScript %} | ||||||
|   | |||||||
| @@ -9,17 +9,15 @@ function initThemeSwitch() { | |||||||
|  |  | ||||||
|   let $buttons = $switchContainer.querySelectorAll('[type="radio"]'); |   let $buttons = $switchContainer.querySelectorAll('[type="radio"]'); | ||||||
|  |  | ||||||
|   /** |  | ||||||
|    * @type String |  | ||||||
|    */ |  | ||||||
|   let userThemeSetting = localStorage.getItem('sdUserTheme'); |  | ||||||
|  |  | ||||||
|   function setInitialState() { |   function setInitialState() { | ||||||
|  |     /** | ||||||
|  |      * @type String | ||||||
|  |      */ | ||||||
|  |     let userThemeSetting = document.documentElement.getAttribute( | ||||||
|  |       'data-user-theme' | ||||||
|  |     ); | ||||||
|  |  | ||||||
|     if (userThemeSetting) { |     if (userThemeSetting) { | ||||||
|       document.documentElement.setAttribute( |  | ||||||
|         'data-user-theme', |  | ||||||
|         userThemeSetting |  | ||||||
|       ); |  | ||||||
|       $switchContainer.querySelector( |       $switchContainer.querySelector( | ||||||
|         `[value="${userThemeSetting}"]` |         `[value="${userThemeSetting}"]` | ||||||
|       ).checked = true; |       ).checked = true; | ||||||
| @@ -28,25 +26,15 @@ function initThemeSwitch() { | |||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   function setUserPreference(value) { |  | ||||||
|     localStorage.setItem('sdUserTheme', value); |  | ||||||
|     document.documentElement.setAttribute('data-user-theme', value); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   function unsetUserPreference() { |  | ||||||
|     localStorage.removeItem('sdUserTheme'); |  | ||||||
|     document.documentElement.removeAttribute('data-user-theme'); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   Array.from($buttons).forEach(function($button) { |   Array.from($buttons).forEach(function($button) { | ||||||
|     $button.addEventListener('change', function() { |     $button.addEventListener('change', function() { | ||||||
|       // only run the switch functionality for the currently active radio button |       // only run the switch functionality for the currently active radio button | ||||||
|       if (!$button.checked) return; |       if (!$button.checked) return; | ||||||
|  |  | ||||||
|       if (userOverwrite.includes($button.value)) { |       if (userOverwrite.includes($button.value)) { | ||||||
|         setUserPreference($button.value); |         window.setUserPreference($button.value); | ||||||
|       } else { |       } else { | ||||||
|         unsetUserPreference(); |         window.unsetUserPreference(); | ||||||
|       } |       } | ||||||
|     }); |     }); | ||||||
|   }); |   }); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user