You've already forked framexEngine-pro
Firts up
This commit is contained in:
58
public/js/init.js
Normal file
58
public/js/init.js
Normal file
@@ -0,0 +1,58 @@
|
||||
"use strict";
|
||||
|
||||
(function () {
|
||||
const framexEngine = {
|
||||
init() {
|
||||
this.bindThemeToggle();
|
||||
this.bindMobileMenu();
|
||||
},
|
||||
|
||||
bindThemeToggle() {
|
||||
const buttons = document.querySelectorAll("[data-theme-toggle]");
|
||||
if (!buttons.length) {
|
||||
return;
|
||||
}
|
||||
|
||||
const applyTheme = (theme) => {
|
||||
const isDark = theme === "dark";
|
||||
document.documentElement.classList.toggle("dark", isDark);
|
||||
try {
|
||||
localStorage.setItem("framex-theme", theme);
|
||||
} catch (error) {}
|
||||
buttons.forEach((button) => {
|
||||
button.setAttribute("aria-pressed", String(isDark));
|
||||
});
|
||||
};
|
||||
|
||||
buttons.forEach((button) => {
|
||||
button.addEventListener("click", () => {
|
||||
const nextTheme = document.documentElement.classList.contains("dark")
|
||||
? "light"
|
||||
: "dark";
|
||||
applyTheme(nextTheme);
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
bindMobileMenu() {
|
||||
const button = document.querySelector("[data-mobile-menu-toggle]");
|
||||
const menu = document.querySelector("[data-mobile-menu]");
|
||||
if (!button || !menu) {
|
||||
return;
|
||||
}
|
||||
|
||||
button.addEventListener("click", () => {
|
||||
const isOpen = button.getAttribute("aria-expanded") === "true";
|
||||
button.setAttribute("aria-expanded", String(!isOpen));
|
||||
menu.classList.toggle("hidden", isOpen);
|
||||
});
|
||||
},
|
||||
};
|
||||
|
||||
// Initialize on DOM ready
|
||||
if (document.readyState === "loading") {
|
||||
document.addEventListener("DOMContentLoaded", () => framexEngine.init());
|
||||
} else {
|
||||
framexEngine.init();
|
||||
}
|
||||
})();
|
||||
Reference in New Issue
Block a user