aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpetko <petko@524c5546-5005-0410-9a3e-e25e191bd360>2024-01-21 17:53:09 +0000
committerpetko <petko@524c5546-5005-0410-9a3e-e25e191bd360>2024-01-21 17:53:09 +0000
commitcdb4536db0e62b906019c33a9012284148a40d85 (patch)
treeea6db2748e15c88b6390621af593443ba1838b1c
parenta7ffee010205c71fcaa6e44126fbd455955753ff (diff)
downloadpmwiki.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.js29
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();