(function () { 'use strict'; // Farbschema umschalten (hell/dunkel) und merken var toggle = document.querySelector('.theme-toggle'); if (toggle) { toggle.addEventListener('click', function () { var dark = document.documentElement.getAttribute('data-theme') !== 'dark'; document.documentElement.setAttribute('data-theme', dark ? 'dark' : 'light'); try { localStorage.setItem('theme', dark ? 'dark' : 'light'); } catch (e) {} }); } // Menü auf kleinen Bildschirmen auf-/zuklappen var navToggle = document.querySelector('.nav-toggle'); var nav = document.getElementById('site-nav'); if (navToggle && nav) { navToggle.addEventListener('click', function () { var open = nav.classList.toggle('is-open'); navToggle.setAttribute('aria-expanded', open ? 'true' : 'false'); }); } // Aufklappmenüs per Klick/Tippen auf den Pfeil (mit der Maus öffnen sie auch beim Überfahren) var submenuToggles = document.querySelectorAll('.nav-submenu-toggle'); var closeSubmenus = function (except) { Array.prototype.forEach.call(document.querySelectorAll('.nav-has-children.is-open'), function (item) { // Der Eintrag selbst und seine Oberpunkte bleiben offen if (except && (item === except || item.contains(except))) return; item.classList.remove('is-open'); item.querySelector(':scope > .nav-submenu-toggle').setAttribute('aria-expanded', 'false'); }); }; Array.prototype.forEach.call(submenuToggles, function (button) { button.addEventListener('click', function (event) { event.stopPropagation(); var item = button.parentNode; closeSubmenus(item); var open = item.classList.toggle('is-open'); button.setAttribute('aria-expanded', open ? 'true' : 'false'); }); }); document.addEventListener('click', function (event) { if (!event.target.closest('.nav-has-children')) closeSubmenus(null); }); document.addEventListener('keydown', function (event) { if (event.key === 'Escape') closeSubmenus(null); }); // Bildanzeige: Klick auf ein Bild im Beitrag zeigt es groß var content = document.querySelector('.gh-content'); if (content) { var lightbox = document.createElement('div'); lightbox.className = 'lightbox'; lightbox.hidden = true; lightbox.innerHTML = ''; document.body.appendChild(lightbox); var lightboxImage = lightbox.querySelector('img'); var close = function () { lightbox.hidden = true; lightboxImage.removeAttribute('src'); }; content.addEventListener('click', function (event) { var img = event.target.closest('.kg-image-card img, .kg-gallery-image img'); // Bilder, die selbst ein Link sind, behalten ihr Linkziel if (!img || img.closest('a')) return; lightboxImage.src = img.currentSrc || img.src; lightboxImage.alt = img.alt || ''; lightbox.hidden = false; }); lightbox.addEventListener('click', close); document.addEventListener('keydown', function (event) { if (event.key === 'Escape' && !lightbox.hidden) close(); }); } })();