2023-09-21 18:30:20 +02:00

130 lines
3.6 KiB
JavaScript

let observer;
function createObserver(elements) {
let options = {
threshold: [.3, .9],
};
observer = new IntersectionObserver(handleIntersect, options);
elements.forEach((el) => {
observer.observe(el);
});
}
function handleIntersect(entries, _observer) {
entries.forEach((entry) => {
const threshold = entry.target.dataset.threshold || 0;
if (entry.intersectionRatio >= Number(threshold)) {
entry.target.classList.add("show");
} else {
entry.target.classList.remove("show");
}
});
}
window.addEventListener(
"load",
() => {
const elements = document.querySelectorAll(".animate-in");
if ("IntersectionObserver" in window) {
createObserver(elements);
} else {
elements.forEach((el) => {
el.classList.add("show");
});
}
const faqLinks = document.querySelectorAll(".faq-link");
faqLinks.forEach((link) =>
link.addEventListener("click", (e) => {
e.preventDefault();
const container = link.nextElementSibling;
const icon = link.querySelector(".faq-icon");
if (container.classList.contains("open")) {
container.classList.remove("open");
icon.classList.remove("open");
} else {
container.classList.add("open");
icon.classList.add("open");
}
})
);
const wrappernav = document.querySelector(".wrappernav");
if (document.documentElement.scrollTop > 68) {
wrappernav.classList.add("scrolled");
}
window.addEventListener(
"scroll",
() => {
if (document.documentElement.scrollTop > 68) {
wrappernav.classList.add("scrolled");
} else {
wrappernav.classList.remove("scrolled");
}
},
{ passive: true }
);
},
false
);
const buyDialog = document.getElementById("buy-dialog");
const buyFabs = document.querySelectorAll(".buy");
buyFabs.forEach(btn => btn.addEventListener("click", (e) => {
e.preventDefault();
showBuyDialog();
}));
function showBuyDialog() {
buyDialog.style.display = "flex";
}
function closeDialog() {
buyDialog.style.display = "none";
}
window.onclick = function (event) {
if (event.target === buyDialog) {
closeDialog();
}
};
if (document.location.search === "?order") {
showBuyDialog();
}
const menuMobileBtn = document.getElementById("open-mobile-menu");
const mobileMenu = document.querySelector(".w-nav-overlay");
const mobileMenuLinks = document.querySelectorAll(".w-nav-overlay a");
menuMobileBtn.addEventListener("click", (e) => {
e.preventDefault();
if (mobileMenu.classList.contains("open")) {
mobileMenu.classList.remove("open");
menuMobileBtn.classList.remove("open");
} else {
mobileMenu.classList.add("open");
menuMobileBtn.classList.add("open");
}
});
mobileMenuLinks.forEach((link) =>
link.addEventListener("click", () => {
mobileMenu.classList.remove("open");
menuMobileBtn.classList.remove("open");
})
);
const rendering = document.querySelector(".exploded-view-rendered");
rendering.addEventListener("animationend", () => {
rendering.style.opacity = 1;
observer.unobserve(rendering.parentElement);
rendering.parentElement.classList.add("show");
document.querySelectorAll(".exploded-part").forEach((part) => {
part.remove();
});
}, {once: true});