This commit is contained in:
+48
-25
@@ -1136,7 +1136,7 @@
|
|||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<li class="nav-item" data-nav-fixed="true">
|
<li class="nav-item" data-nav-fixed="true">
|
||||||
<button id="themeToggleBtn" class="btn btn-link nav-link px-3" aria-label="Dark Mode umschalten" title="Theme umschalten">
|
<button type="button" class="btn btn-link nav-link px-3" data-theme-toggle aria-label="Dark Mode umschalten" aria-pressed="false" title="Theme umschalten">
|
||||||
<span class="theme-icon-light" style="display: none;">☀️</span>
|
<span class="theme-icon-light" style="display: none;">☀️</span>
|
||||||
<span class="theme-icon-dark" style="display: none;">🌙</span>
|
<span class="theme-icon-dark" style="display: none;">🌙</span>
|
||||||
</button>
|
</button>
|
||||||
@@ -1229,7 +1229,7 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<li class="nav-item" data-nav-fixed="true">
|
<li class="nav-item" data-nav-fixed="true">
|
||||||
<button id="themeToggleBtn" class="btn btn-link nav-link px-3" aria-label="Dark Mode umschalten" title="Theme umschalten">
|
<button type="button" class="btn btn-link nav-link px-3" data-theme-toggle aria-label="Dark Mode umschalten" aria-pressed="false" title="Theme umschalten">
|
||||||
<span class="theme-icon-light" style="display: none;">☀️</span>
|
<span class="theme-icon-light" style="display: none;">☀️</span>
|
||||||
<span class="theme-icon-dark" style="display: none;">🌙</span>
|
<span class="theme-icon-dark" style="display: none;">🌙</span>
|
||||||
</button>
|
</button>
|
||||||
@@ -1358,7 +1358,7 @@
|
|||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<li class="nav-item" data-nav-fixed="true">
|
<li class="nav-item" data-nav-fixed="true">
|
||||||
<button id="themeToggleBtn" class="btn btn-link nav-link px-3" aria-label="Dark Mode umschalten" title="Theme umschalten">
|
<button type="button" class="btn btn-link nav-link px-3" data-theme-toggle aria-label="Dark Mode umschalten" aria-pressed="false" title="Theme umschalten">
|
||||||
<span class="theme-icon-light" style="display: none;">☀️</span>
|
<span class="theme-icon-light" style="display: none;">☀️</span>
|
||||||
<span class="theme-icon-dark" style="display: none;">🌙</span>
|
<span class="theme-icon-dark" style="display: none;">🌙</span>
|
||||||
</button>
|
</button>
|
||||||
@@ -2345,33 +2345,56 @@
|
|||||||
|
|
||||||
<!-- Theme Toggle Script -->
|
<!-- Theme Toggle Script -->
|
||||||
<script>
|
<script>
|
||||||
document.addEventListener('DOMContentLoaded', () => {
|
(function () {
|
||||||
const toggleBtns = document.querySelectorAll('#themeToggleBtn');
|
const root = document.documentElement;
|
||||||
if (toggleBtns.length === 0) return;
|
const metaThemeColor = document.getElementById('meta-theme-color');
|
||||||
|
const themeToggleSelector = '[data-theme-toggle]';
|
||||||
function updateIcons(theme) {
|
|
||||||
const isDark = theme === 'dark';
|
function getTheme() {
|
||||||
document.querySelectorAll('.theme-icon-light').forEach(icon => icon.style.display = isDark ? 'inline' : 'none');
|
return root.getAttribute('data-theme') === 'dark' ? 'dark' : 'light';
|
||||||
document.querySelectorAll('.theme-icon-dark').forEach(icon => icon.style.display = isDark ? 'none' : 'inline');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get current setup from initial script in head
|
function updateThemeUi(theme) {
|
||||||
let currentTheme = document.documentElement.getAttribute('data-theme') || 'light';
|
const isDark = theme === 'dark';
|
||||||
updateIcons(currentTheme);
|
document.querySelectorAll('.theme-icon-light').forEach(icon => {
|
||||||
|
icon.style.display = isDark ? 'inline' : 'none';
|
||||||
|
});
|
||||||
|
document.querySelectorAll('.theme-icon-dark').forEach(icon => {
|
||||||
|
icon.style.display = isDark ? 'none' : 'inline';
|
||||||
|
});
|
||||||
|
document.querySelectorAll(themeToggleSelector).forEach(button => {
|
||||||
|
button.setAttribute('aria-pressed', String(isDark));
|
||||||
|
button.setAttribute('aria-label', isDark ? 'Light Mode einschalten' : 'Dark Mode einschalten');
|
||||||
|
button.setAttribute('title', isDark ? 'Light Mode einschalten' : 'Dark Mode einschalten');
|
||||||
|
});
|
||||||
|
if (metaThemeColor) {
|
||||||
|
metaThemeColor.setAttribute('content', isDark ? '#1a252f' : '#2c3e50');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
toggleBtns.forEach(btn => {
|
function applyTheme(theme, persist) {
|
||||||
btn.addEventListener('click', (e) => {
|
const normalizedTheme = theme === 'dark' ? 'dark' : 'light';
|
||||||
e.preventDefault();
|
root.setAttribute('data-theme', normalizedTheme);
|
||||||
currentTheme = currentTheme === 'light' ? 'dark' : 'light';
|
if (persist) {
|
||||||
|
try {
|
||||||
document.documentElement.setAttribute('data-theme', currentTheme);
|
localStorage.setItem('inventarsystem-theme', normalizedTheme);
|
||||||
localStorage.setItem('inventarsystem-theme', currentTheme);
|
} catch (error) {
|
||||||
document.getElementById('meta-theme-color').setAttribute('content', currentTheme === 'dark' ? '#1a252f' : '#2c3e50');
|
console.warn('Theme konnte nicht gespeichert werden:', error);
|
||||||
|
}
|
||||||
updateIcons(currentTheme);
|
}
|
||||||
|
updateThemeUi(normalizedTheme);
|
||||||
|
}
|
||||||
|
|
||||||
|
document.addEventListener('DOMContentLoaded', function () {
|
||||||
|
updateThemeUi(getTheme());
|
||||||
|
document.addEventListener('click', function (event) {
|
||||||
|
const button = event.target.closest(themeToggleSelector);
|
||||||
|
if (!button) return;
|
||||||
|
event.preventDefault();
|
||||||
|
applyTheme(getTheme() === 'dark' ? 'light' : 'dark', true);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
})();
|
||||||
</script>
|
</script>
|
||||||
<script>
|
<script>
|
||||||
(function () {
|
(function () {
|
||||||
|
|||||||
Reference in New Issue
Block a user