MediaWiki:Common.js: Difference between revisions
Content deleted Content added
No edit summary |
No edit summary Tag: Manual revert |
||
| (5 intermediate revisions by the same user not shown) | |||
Line 995:
});
});
/* -------------------------------------------------------------------------
* TUFLOW Wiki dark mode toggle
* ------------------------------------------------------------------------- */
(function () {
'use strict';
function initialiseDarkModeToggle() {
if (document.getElementById('tuflow-dark-mode-toggle')) {
return;
}
var savedMode = localStorage.getItem('tuflowDarkMode');
var darkModeEnabled = savedMode === 'dark';
var link = document.createElement('a');
link.id = 'tuflow-dark-mode-toggle';
link.href = '#';
link.textContent = darkModeEnabled
? '☀ Light mode'
: '☾ Dark mode';
link.setAttribute(
'aria-label',
darkModeEnabled
? 'Turn off dark mode'
: 'Turn on dark mode'
);
function applyDarkMode(enabled) {
document.documentElement.classList.toggle(
'tuflow-dark-mode',
enabled
);
link.textContent = enabled
? '☀ Light mode'
: '☾ Dark mode';
link.setAttribute(
'aria-label',
enabled
? 'Turn off dark mode'
: 'Turn on dark mode'
);
}
link.addEventListener('click', function (event) {
event.preventDefault();
darkModeEnabled =
!document.documentElement.classList.contains(
'tuflow-dark-mode'
);
localStorage.setItem(
'tuflowDarkMode',
darkModeEnabled ? 'dark' : 'light'
);
applyDarkMode(darkModeEnabled);
});
var listItem = document.createElement('li');
listItem.id = 'pt-tuflow-dark-mode';
listItem.appendChild(link);
var personalList =
document.querySelector('#p-personal ul') ||
document.querySelector('#p-personal .vector-menu-content-list') ||
document.querySelector('.vector-user-links ul');
if (personalList) {
personalList.appendChild(listItem);
} else {
var fallback = document.createElement('div');
fallback.id = 'tuflow-dark-mode-fallback';
fallback.appendChild(link);
document.body.appendChild(fallback);
}
applyDarkMode(darkModeEnabled);
}
if (document.readyState === 'loading') {
document.addEventListener(
'DOMContentLoaded',
initialiseDarkModeToggle
);
} else {
initialiseDarkModeToggle();
}
})();
| |||