NEusortierung der Eigenschaften der Ferienwohnungen.

This commit is contained in:
Michael Stangl
2026-08-24 17:57:45 +02:00
parent 6c4ed83ac5
commit 9a3cbc4de2
13 changed files with 312 additions and 116 deletions
+32 -8
View File
@@ -26,16 +26,34 @@ document.querySelectorAll('.slider').forEach(slider => {
if (next) next.addEventListener('click', () => track.scrollBy({ left: step(), behavior: 'smooth' }));
});
// Lightbox für Bildergalerien (Ferienwohnungen)
const lightboxGallery = document.querySelector('.lightbox-gallery');
const lightbox = document.querySelector('.lightbox');
if (lightboxGallery && lightbox) {
const triggers = Array.from(lightboxGallery.querySelectorAll('.lightbox-trigger'));
const images = triggers.map(a => ({ src: a.href, alt: a.querySelector('img').alt }));
// Belegungsplan ein-/ausblenden (externes webplanner-Skript erst bei Klick nachladen)
const belBtn = document.getElementById('belegungsplan-btn');
const belFrame = document.getElementById('belegungsplan-frame');
if (belBtn && belFrame) {
const labelClosed = belBtn.textContent.trim();
let loaded = false;
belBtn.addEventListener('click', () => {
const willShow = belFrame.hidden;
if (willShow && !loaded) {
const script = document.createElement('script');
script.src = belFrame.dataset.src;
belFrame.appendChild(script);
loaded = true;
}
belFrame.hidden = !willShow;
belBtn.setAttribute('aria-expanded', String(willShow));
belBtn.textContent = willShow ? 'Belegungsplan ausblenden' : labelClosed;
});
}
// Lightbox für Bildergalerien (eine Lightbox, beliebig viele Galerien pro Seite)
const lightbox = document.querySelector('.lightbox');
if (lightbox) {
const imgEl = lightbox.querySelector('.lightbox-img');
const closeBtn = lightbox.querySelector('.lightbox-close');
const prevBtn = lightbox.querySelector('.lightbox-prev');
const nextBtn = lightbox.querySelector('.lightbox-next');
let images = [];
let current = 0;
const show = i => {
@@ -43,7 +61,9 @@ if (lightboxGallery && lightbox) {
imgEl.src = images[current].src;
imgEl.alt = images[current].alt;
};
const open = i => {
const open = (gallery, i) => {
images = Array.from(gallery.querySelectorAll('.lightbox-trigger'))
.map(a => ({ src: a.href, alt: a.querySelector('img').alt }));
show(i);
lightbox.hidden = false;
document.body.style.overflow = 'hidden';
@@ -53,7 +73,11 @@ if (lightboxGallery && lightbox) {
document.body.style.overflow = '';
};
triggers.forEach((a, i) => a.addEventListener('click', e => { e.preventDefault(); open(i); }));
document.querySelectorAll('.lightbox-gallery').forEach(gallery => {
Array.from(gallery.querySelectorAll('.lightbox-trigger')).forEach((a, i) => {
a.addEventListener('click', e => { e.preventDefault(); open(gallery, i); });
});
});
closeBtn.addEventListener('click', close);
prevBtn.addEventListener('click', () => show(current - 1));
nextBtn.addEventListener('click', () => show(current + 1));