176 lines
5.2 KiB
JavaScript
176 lines
5.2 KiB
JavaScript
|
|
// Add your javascript here
|
||
|
|
|
||
|
|
window.darkMode = false;
|
||
|
|
|
||
|
|
const stickyClasses = ["fixed", "h-14"];
|
||
|
|
const unstickyClasses = ["absolute", "h-20"];
|
||
|
|
const stickyClassesContainer = [
|
||
|
|
"border-neutral-300/50",
|
||
|
|
"bg-white/80",
|
||
|
|
"dark:border-neutral-600/40",
|
||
|
|
"dark:bg-neutral-900/60",
|
||
|
|
"backdrop-blur-2xl",
|
||
|
|
];
|
||
|
|
const unstickyClassesContainer = ["border-transparent"];
|
||
|
|
let headerElement = null;
|
||
|
|
|
||
|
|
document.addEventListener("DOMContentLoaded", () => {
|
||
|
|
headerElement = document.getElementById("header");
|
||
|
|
|
||
|
|
if (
|
||
|
|
localStorage.getItem("dark_mode") &&
|
||
|
|
localStorage.getItem("dark_mode") === "true"
|
||
|
|
) {
|
||
|
|
window.darkMode = true;
|
||
|
|
showNight();
|
||
|
|
} else {
|
||
|
|
showDay();
|
||
|
|
}
|
||
|
|
stickyHeaderFuncionality();
|
||
|
|
applyMenuItemClasses();
|
||
|
|
evaluateHeaderPosition();
|
||
|
|
mobileMenuFunctionality();
|
||
|
|
});
|
||
|
|
|
||
|
|
// window.toggleDarkMode = function(){
|
||
|
|
// document.documentElement.classList.toggle('dark');
|
||
|
|
// if(document.documentElement.classList.contains('dark')){
|
||
|
|
// localStorage.setItem('dark_mode', true);
|
||
|
|
// window.darkMode = true;
|
||
|
|
// } else {
|
||
|
|
// window.darkMode = false;
|
||
|
|
// localStorage.setItem('dark_mode', false);
|
||
|
|
// }
|
||
|
|
// }
|
||
|
|
|
||
|
|
window.stickyHeaderFuncionality = () => {
|
||
|
|
window.addEventListener("scroll", () => {
|
||
|
|
evaluateHeaderPosition();
|
||
|
|
});
|
||
|
|
};
|
||
|
|
|
||
|
|
window.evaluateHeaderPosition = () => {
|
||
|
|
if (window.scrollY > 16) {
|
||
|
|
headerElement.firstElementChild.classList.add(...stickyClassesContainer);
|
||
|
|
headerElement.firstElementChild.classList.remove(
|
||
|
|
...unstickyClassesContainer,
|
||
|
|
);
|
||
|
|
headerElement.classList.add(...stickyClasses);
|
||
|
|
headerElement.classList.remove(...unstickyClasses);
|
||
|
|
document.getElementById("menu").classList.add("top-[56px]");
|
||
|
|
document.getElementById("menu").classList.remove("top-[75px]");
|
||
|
|
} else {
|
||
|
|
headerElement.firstElementChild.classList.remove(...stickyClassesContainer);
|
||
|
|
headerElement.firstElementChild.classList.add(...unstickyClassesContainer);
|
||
|
|
headerElement.classList.add(...unstickyClasses);
|
||
|
|
headerElement.classList.remove(...stickyClasses);
|
||
|
|
document.getElementById("menu").classList.remove("top-[56px]");
|
||
|
|
document.getElementById("menu").classList.add("top-[75px]");
|
||
|
|
}
|
||
|
|
};
|
||
|
|
|
||
|
|
document.getElementById("darkToggle").addEventListener("click", () => {
|
||
|
|
document.documentElement.classList.add("duration-300");
|
||
|
|
|
||
|
|
if (document.documentElement.classList.contains("dark")) {
|
||
|
|
localStorage.removeItem("dark_mode");
|
||
|
|
showDay(true);
|
||
|
|
} else {
|
||
|
|
localStorage.setItem("dark_mode", true);
|
||
|
|
showNight(true);
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
function showDay(animate) {
|
||
|
|
document.getElementById("sun").classList.remove("setting");
|
||
|
|
document.getElementById("moon").classList.remove("rising");
|
||
|
|
|
||
|
|
let timeout = 0;
|
||
|
|
|
||
|
|
if (animate) {
|
||
|
|
timeout = 500;
|
||
|
|
|
||
|
|
document.getElementById("moon").classList.add("setting");
|
||
|
|
}
|
||
|
|
|
||
|
|
setTimeout(() => {
|
||
|
|
document.getElementById("dayText").classList.remove("hidden");
|
||
|
|
document.getElementById("nightText").classList.add("hidden");
|
||
|
|
|
||
|
|
document.getElementById("moon").classList.add("hidden");
|
||
|
|
document.getElementById("sun").classList.remove("hidden");
|
||
|
|
|
||
|
|
if (animate) {
|
||
|
|
document.documentElement.classList.remove("dark");
|
||
|
|
document.getElementById("sun").classList.add("rising");
|
||
|
|
}
|
||
|
|
}, timeout);
|
||
|
|
}
|
||
|
|
|
||
|
|
function showNight(animate) {
|
||
|
|
document.getElementById("moon").classList.remove("setting");
|
||
|
|
document.getElementById("sun").classList.remove("rising");
|
||
|
|
|
||
|
|
let timeout = 0;
|
||
|
|
|
||
|
|
if (animate) {
|
||
|
|
timeout = 500;
|
||
|
|
|
||
|
|
document.getElementById("sun").classList.add("setting");
|
||
|
|
}
|
||
|
|
|
||
|
|
setTimeout(() => {
|
||
|
|
document.getElementById("nightText").classList.remove("hidden");
|
||
|
|
document.getElementById("dayText").classList.add("hidden");
|
||
|
|
|
||
|
|
document.getElementById("sun").classList.add("hidden");
|
||
|
|
document.getElementById("moon").classList.remove("hidden");
|
||
|
|
|
||
|
|
if (animate) {
|
||
|
|
document.documentElement.classList.add("dark");
|
||
|
|
document.getElementById("moon").classList.add("rising");
|
||
|
|
}
|
||
|
|
}, timeout);
|
||
|
|
}
|
||
|
|
|
||
|
|
window.applyMenuItemClasses = () => {
|
||
|
|
const menuItems = document.querySelectorAll("#menu a");
|
||
|
|
for (let i = 0; i < menuItems.length; i++) {
|
||
|
|
if (menuItems[i].pathname === window.location.pathname) {
|
||
|
|
menuItems[i].classList.add("text-neutral-900", "dark:text-white");
|
||
|
|
}
|
||
|
|
}
|
||
|
|
//:class="{ 'text-neutral-900 dark:text-white': window.location.pathname == '{menu.url}', 'text-neutral-700 dark:text-neutral-400': window.location.pathname != '{menu.url}' }"
|
||
|
|
};
|
||
|
|
|
||
|
|
function mobileMenuFunctionality() {
|
||
|
|
document.getElementById("openMenu").addEventListener("click", () => {
|
||
|
|
openMobileMenu();
|
||
|
|
});
|
||
|
|
|
||
|
|
document.getElementById("closeMenu").addEventListener("click", () => {
|
||
|
|
closeMobileMenu();
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
window.openMobileMenu = () => {
|
||
|
|
document.getElementById("openMenu").classList.add("hidden");
|
||
|
|
document.getElementById("closeMenu").classList.remove("hidden");
|
||
|
|
document.getElementById("menu").classList.remove("hidden");
|
||
|
|
document.getElementById("mobileMenuBackground").classList.add("opacity-0");
|
||
|
|
document.getElementById("mobileMenuBackground").classList.remove("hidden");
|
||
|
|
|
||
|
|
setTimeout(() => {
|
||
|
|
document
|
||
|
|
.getElementById("mobileMenuBackground")
|
||
|
|
.classList.remove("opacity-0");
|
||
|
|
}, 1);
|
||
|
|
};
|
||
|
|
|
||
|
|
window.closeMobileMenu = () => {
|
||
|
|
document.getElementById("closeMenu").classList.add("hidden");
|
||
|
|
document.getElementById("openMenu").classList.remove("hidden");
|
||
|
|
document.getElementById("menu").classList.add("hidden");
|
||
|
|
document.getElementById("mobileMenuBackground").classList.add("hidden");
|
||
|
|
};
|