Wp2ghost/GhostTheme/unterwegs/assets/js/main.js
2026-10-14 19:12:29 +02:00

78 lines
3.4 KiB
JavaScript

(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 = '<button class="lightbox__close" type="button" aria-label="Close">&times;</button><img alt="">';
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();
});
}
})();