diff --git a/Minecraft-Modern-Theme/js/faq-accordion.js b/Minecraft-Modern-Theme/js/faq-accordion.js new file mode 100644 index 0000000..3030d66 --- /dev/null +++ b/Minecraft-Modern-Theme/js/faq-accordion.js @@ -0,0 +1,47 @@ +document.addEventListener('DOMContentLoaded', function() { + + // === FAQ TABS FUNKTIONALITÄT === + const tabButtons = document.querySelectorAll('.faq-tab-button'); + const tabPanes = document.querySelectorAll('.faq-tab-pane'); + + tabButtons.forEach(button => { + button.addEventListener('click', () => { + // 1. Aktive Klassen von allen Buttons und Panes entfernen + tabButtons.forEach(btn => btn.classList.remove('active')); + tabPanes.forEach(pane => pane.classList.remove('active')); + + // 2. Aktive Klasse zum geklickten Button hinzufügen + button.classList.add('active'); + + // 3. Den zugehörigen Inhalt (Pane) finden und aktivieren + const targetCategory = button.getAttribute('data-category'); + const targetPane = document.querySelector(`.faq-tab-pane[data-category="${targetCategory}"]`); + if (targetPane) { + targetPane.classList.add('active'); + } + }); + }); + + + // === FAQ AKKORDEON FUNKTIONALITÄT (bleibt gleich) === + const faqItems = document.querySelectorAll('.faq-item'); + + faqItems.forEach(item => { + const question = item.querySelector('.faq-question'); + const answer = item.querySelector('.faq-answer'); + + if (question && answer) { + question.addEventListener('click', () => { + // 'active' Klasse zum aktuellen Item togglen + const isActive = item.classList.toggle('active'); + + // Höhe der Antwort anpassen für smooth slide + if (isActive) { + answer.style.maxHeight = answer.scrollHeight + 'px'; + } else { + answer.style.maxHeight = null; + } + }); + } + }); +}); \ No newline at end of file diff --git a/Minecraft-Modern-Theme/js/header-scroll.js b/Minecraft-Modern-Theme/js/header-scroll.js new file mode 100644 index 0000000..48dc990 --- /dev/null +++ b/Minecraft-Modern-Theme/js/header-scroll.js @@ -0,0 +1,17 @@ +// /js/header-scroll.js +document.addEventListener('DOMContentLoaded', function() { + // WICHTIG: Das Skript nur ausführen, wenn wir NICHT im Customizer sind. + // Diese Prüfung ist robuster und funktioniert ohne PHP. + if ( window.location.href.includes('/wp-admin/customize.php') || ( window.parent && window.parent.wp && window.parent.wp.customize ) ) { + return; // Skript hier beenden, wenn wir im Customizer sind. + } + + const header = document.querySelector('.site-header'); + window.addEventListener('scroll', function() { + if (window.scrollY > 50) { + header.classList.add('scrolled'); + } else { + header.classList.remove('scrolled'); + } + }); +}); \ No newline at end of file diff --git a/Minecraft-Modern-Theme/js/slider-init.js b/Minecraft-Modern-Theme/js/slider-init.js new file mode 100644 index 0000000..20c9ffd --- /dev/null +++ b/Minecraft-Modern-Theme/js/slider-init.js @@ -0,0 +1,55 @@ +document.addEventListener('DOMContentLoaded', function() { + // Hole den Slider-Container + const heroSlider = document.querySelector('.hero-slider'); + + // Stelle sicher, dass der Slider auf der Seite existiert, bevor du versuchst, ihn zu konfigurieren + if (!heroSlider) { + return; + } + + // Konfiguration für den Slider vorbereiten + const swiperConfig = { + // Optionen für den Slider + loop: true, // Endloses Schleifen + + // Autoplay + autoplay: { + delay: 5000, // 5 Sekunden pro Slide + disableOnInteraction: false, // Autoplay nicht nach Klick stoppen + }, + + // Wenn der Nutzer die Maus darüber bewegt, pausieren + pauseOnMouseEnter: true, + + // Effekt + effect: 'fade', // Übergangseffekt: 'slide', 'fade', 'cube', etc. + fadeEffect: { + crossFade: true + } + }; + + // Prüfe, ob die Pfeile ausgeblendet werden sollen + if (sliderSettings.hideArrows === '1') { + heroSlider.classList.add('slider-hide-arrows'); + } else { + // Navigation nur hinzufügen, wenn sie nicht ausgeblendet wird + swiperConfig.navigation = { + nextEl: '.swiper-button-next', + prevEl: '.swiper-button-prev', + }; + } + + // Prüfe, ob die Paginierung ausgeblendet werden soll + if (sliderSettings.hidePagination === '1') { + heroSlider.classList.add('slider-hide-pagination'); + } else { + // Pagination nur hinzufügen, wenn sie nicht ausgeblendet wird + swiperConfig.pagination = { + el: '.swiper-pagination', + clickable: true, // Klick auf Punkt springt zum Slide + }; + } + + // Initialisiere den Slider mit der konfigurierten Optionen + new Swiper('.hero-slider', swiperConfig); +}); \ No newline at end of file diff --git a/Minecraft-Modern-Theme/js/theme-toggle.js b/Minecraft-Modern-Theme/js/theme-toggle.js new file mode 100644 index 0000000..869f8e8 --- /dev/null +++ b/Minecraft-Modern-Theme/js/theme-toggle.js @@ -0,0 +1,32 @@ +document.addEventListener('DOMContentLoaded', function () { + const html = document.documentElement; + const toggle = document.querySelector('.theme-toggle'); + const iconMoon = toggle.querySelector('.icon-moon'); + const iconSun = toggle.querySelector('.icon-sun'); + + const defaultMode = typeof sliderSettings !== 'undefined' ? sliderSettings.defaultMode : 'dark'; + const saved = localStorage.getItem('themeMode') || defaultMode; + + if (saved === 'light') { + html.classList.add('light-mode'); + iconMoon.style.display = 'none'; + iconSun.style.display = 'block'; + } else { + iconMoon.style.display = 'block'; + iconSun.style.display = 'none'; + } + + toggle.addEventListener('click', function () { + html.classList.toggle('light-mode'); + + if (html.classList.contains('light-mode')) { + iconMoon.style.display = 'none'; + iconSun.style.display = 'block'; + localStorage.setItem('themeMode', 'light'); + } else { + iconMoon.style.display = 'block'; + iconSun.style.display = 'none'; + localStorage.setItem('themeMode', 'dark'); + } + }); +}); \ No newline at end of file