2024-09-06 14:39:21 +02:00
|
|
|
import { expandNav, closeNav, show } from "./functions.js";
|
2024-08-26 17:03:32 +02:00
|
|
|
|
2024-08-27 14:28:25 +02:00
|
|
|
document.addEventListener("DOMContentLoaded", () => {
|
2024-08-26 17:03:32 +02:00
|
|
|
// Variables
|
2024-08-27 14:28:25 +02:00
|
|
|
const nodes = {
|
|
|
|
|
burgerBtn: document.querySelector(".burger-btn"),
|
|
|
|
|
closeNavBtn: document.querySelector(".expanded-nav .close-btn"),
|
|
|
|
|
expandedNav: document.querySelector(".expanded-nav"),
|
|
|
|
|
main: document.querySelector("main"),
|
2024-08-27 15:03:19 +02:00
|
|
|
footer: document.querySelector(".main-footer"),
|
2024-08-28 12:15:41 +02:00
|
|
|
nav: document.querySelector(".main-nav"),
|
2024-09-02 17:09:53 +02:00
|
|
|
jsLinks: document.querySelectorAll(".js-link"),
|
2024-09-06 14:39:21 +02:00
|
|
|
images: document.querySelectorAll("img"),
|
2024-08-27 14:28:25 +02:00
|
|
|
};
|
2024-08-26 17:03:32 +02:00
|
|
|
|
|
|
|
|
// Listeners
|
2024-08-27 14:28:25 +02:00
|
|
|
nodes.burgerBtn.addEventListener("click", () => expandNav(nodes));
|
|
|
|
|
nodes.closeNavBtn.addEventListener("click", () => closeNav(nodes));
|
2024-09-02 17:09:53 +02:00
|
|
|
nodes.jsLinks.forEach((jsLink) => {
|
|
|
|
|
const to = jsLink.dataset.href;
|
|
|
|
|
jsLink.addEventListener("click", () => (location.href = to));
|
|
|
|
|
});
|
2024-08-27 14:34:07 +02:00
|
|
|
|
2024-09-06 14:39:21 +02:00
|
|
|
nodes.images.forEach((image) => {
|
2024-09-17 15:20:46 +02:00
|
|
|
if (image.complete) {
|
|
|
|
|
show(image);
|
|
|
|
|
} else {
|
|
|
|
|
image.addEventListener("load", () => {
|
2024-09-06 14:39:21 +02:00
|
|
|
show(image);
|
2024-09-17 15:20:46 +02:00
|
|
|
});
|
|
|
|
|
}
|
2024-09-06 14:39:21 +02:00
|
|
|
});
|
|
|
|
|
|
2024-08-27 14:34:07 +02:00
|
|
|
// Key shortcuts
|
|
|
|
|
window.addEventListener("keyup", (event) => {
|
|
|
|
|
if (event.key === "Escape") {
|
|
|
|
|
closeNav(nodes);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
window.addEventListener("scroll", (event) => {
|
|
|
|
|
if (nodes.expandedNav.classList.contains("open")) {
|
|
|
|
|
closeNav(nodes);
|
|
|
|
|
}
|
2024-08-28 12:15:41 +02:00
|
|
|
if (
|
2024-09-03 16:35:32 +02:00
|
|
|
(window.scrollY > 120) &
|
2024-08-28 12:15:41 +02:00
|
|
|
!nodes.nav.classList.contains("main-nav--small")
|
|
|
|
|
) {
|
|
|
|
|
nodes.nav.classList.add("main-nav--small");
|
|
|
|
|
} else if (window.scrollY < 100) {
|
|
|
|
|
nodes.nav.classList.remove("main-nav--small");
|
|
|
|
|
}
|
2024-08-27 14:34:07 +02:00
|
|
|
});
|
2024-08-26 17:03:32 +02:00
|
|
|
});
|