diff options
author | petko <petko@524c5546-5005-0410-9a3e-e25e191bd360> | 2024-01-21 17:53:09 +0000 |
---|---|---|
committer | petko <petko@524c5546-5005-0410-9a3e-e25e191bd360> | 2024-01-21 17:53:09 +0000 |
commit | cdb4536db0e62b906019c33a9012284148a40d85 (patch) | |
tree | ea6db2748e15c88b6390621af593443ba1838b1c | |
parent | a7ffee010205c71fcaa6e44126fbd455955753ff (diff) | |
download | pmwiki.svn-cdb4536db0e62b906019c33a9012284148a40d85.tar.bz2 |
Dark theme toggle specific stylesheets.
git-svn-id: svn://pmwiki.org/pmwiki/trunk@4591 524c5546-5005-0410-9a3e-e25e191bd360
-rw-r--r-- | pub/pmwiki-utils.js | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/pub/pmwiki-utils.js b/pub/pmwiki-utils.js index d8ce4d4f..328cbf80 100644 --- a/pub/pmwiki-utils.js +++ b/pub/pmwiki-utils.js @@ -590,18 +590,33 @@ } var clist = document.documentElement.classList; + var themesheets = dqsa('link[rel="stylesheet"][data-theme]'); + var darkThemeEnabled = false; function updateDarkTheme(toggle) { - var enabled = getLS('pmDarkTheme'); + darkThemeEnabled = !!getLS('pmDarkTheme'); if(toggle === 1) { - enabled = !enabled; - if(enabled) setLS('pmDarkTheme', 1); - else delLS('pmDarkTheme'); + darkThemeEnabled = !darkThemeEnabled; + if(darkThemeEnabled) setLS('pmDarkTheme', 1); + else delLS('pmDarkTheme'); } - if(enabled) clist.add('pmDarkTheme'); + if(darkThemeEnabled) clist.add('pmDarkTheme'); else clist.remove('pmDarkTheme'); + if((toggle === -1 && darkThemeEnabled) || toggle === 1) { // load || toggle + for(var i=0; i<themesheets.length; i++) { + var sheet = themesheets[i]; + var isDark = sheet.dataset.theme == 'dark'? true: false; + if(isDark != darkThemeEnabled) { + sheet.disabled = !sheet.disabled; + } + else if(sheet.disabled) { + sheet.disabled = false; + } + } + } } + if(window.localStorage) { - updateDarkTheme(); + updateDarkTheme(-1); } function ready(){ @@ -614,7 +629,7 @@ var darkToggle = dqsa('.pmToggleDarkTheme'); if(window.localStorage && darkToggle.length) { tap(darkToggle, function(){updateDarkTheme(1);}); - setInterval(updateDarkTheme, 1000);// other tabs + setInterval(updateDarkTheme, 1000);// sync other tabs } } if( document.readyState !== 'loading' ) ready(); |