@@ -46,54 +46,46 @@ document.addEventListener('DOMContentLoaded', (event) => {
4646 function toggleIcon ( mode ) {
4747 if ( mode == 'dark' ) {
4848 setIcon ( 'light' ) ;
49- } else if ( mode == 'light' ) {
49+ } else {
5050 setIcon ( 'dark' ) ;
5151 }
5252 }
5353
5454 function switchMode ( mode , bsTheme ) {
55- if ( mode == true ) {
55+ if ( ( mode == true || mode == "dark" ) && htmlEl . getAttribute ( 'data-bs-theme' ) != 'dark' ) {
5656 htmlEl . setAttribute ( 'data-bs-theme' , 'dark' ) ;
57+ toggleIcon ( 'dark' ) ;
5758 if ( bsTheme == true ) {
5859 localStorage . setItem ( 'bsTheme' , 'dark' ) ;
5960 }
60- toggleIcon ( 'dark' ) ;
6161 } else {
6262 htmlEl . setAttribute ( 'data-bs-theme' , 'light' ) ;
63+ toggleIcon ( 'light' ) ;
6364 if ( bsTheme == true ) {
6465 localStorage . setItem ( 'bsTheme' , 'light' ) ;
6566 }
66- toggleIcon ( 'light' ) ;
6767 }
6868 }
69- const currentTheme = localStorage . getItem ( 'bsTheme' ) || null ;
69+ const currentTheme = localStorage . getItem ( 'bsTheme' ) ;
7070
7171 // Set the theme by OS preferences
72- if ( window . matchMedia ) {
73- var osMode = window . matchMedia ( '(prefers-color-scheme: dark)' )
74- if ( currentTheme == null ) {
75- switchEl . setAttribute ( 'checked' , osMode . matches ) ;
76- switchMode ( osMode . matches , false ) ;
77- }
78- osMode . addEventListener ( 'change' , e => {
79- if ( currentTheme == null ) {
72+ if ( currentTheme == null ) {
73+ if ( window . matchMedia ) {
74+ osMode = window . matchMedia ( '(prefers-color-scheme: dark)' )
8075 switchEl . setAttribute ( 'checked' , osMode . matches ) ;
8176 switchMode ( osMode . matches , false ) ;
82- }
83- } )
84-
77+ osMode . addEventListener ( 'change' , e => {
78+ switchEl . setAttribute ( 'checked' , osMode . matches ) ;
79+ switchMode ( osMode . matches , false ) ;
80+ } )
81+ }
82+ // Graceful override
83+ } else {
84+ switchMode ( currentTheme , false )
8585 }
86+
8687 // Set the default theme to light if no setting is found in local storage
87-
88- toggleIcon ( currentTheme ) ;
89-
9088 switchEl . addEventListener ( 'change' , function ( ) {
91- if ( this . checked ) {
92- switchMode ( false , true ) ;
93- setIcon ( 'dark' ) ;
94- } else {
95- switchMode ( true , true ) ;
96- setIcon ( 'light' ) ;
97- }
89+ switchMode ( this . checked , true ) ;
9890 } ) ;
9991} ) ;
0 commit comments