stylescape
Version:
Stylescape is a visual identity framework developed by Scape Agency.
63 lines • 2.41 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.AsideHandler = void 0;
const StateManager_js_1 = require("../state/StateManager.js");
const LocalStorageManager_js_1 = require("../storage/LocalStorageManager.js");
class AsideHandler {
constructor(menuId, switchId) {
this.asideMenu = null;
this.asideSwitch = null;
this.asideMenuActive = AsideHandler.HIDDEN_STATE;
this.localStorageManager = LocalStorageManager_js_1.LocalStorageManager.getInstance();
this.stateManager = new StateManager_js_1.StateManager();
this.menuId = menuId;
this.switchId = switchId;
this.assertMenu();
this.setupToggleListener();
this.updateStateMenu();
}
assertMenu() {
this.asideMenu = document.getElementById(this.menuId);
this.asideSwitch = document.getElementById(this.switchId);
}
setupToggleListener() {
if (this.asideSwitch) {
this.asideSwitch.addEventListener("click", () => this.toggleMenu());
}
}
toggleMenu() {
this.assertMenu();
if (this.asideMenu?.classList.contains(AsideHandler.VISIBLE_CLASS)) {
this.hideMenu();
}
else {
this.showMenu();
}
}
showMenu() {
this.assertMenu();
this.localStorageManager.setValue(this.menuId + AsideHandler.VISIBLE_SUFFIX, AsideHandler.VISIBLE_STATE);
this.updateStateMenu();
}
hideMenu() {
this.assertMenu();
this.localStorageManager.setValue(this.menuId + AsideHandler.VISIBLE_SUFFIX, AsideHandler.HIDDEN_STATE);
this.updateStateMenu();
}
updateStateMenu() {
this.assertMenu();
if (!this.asideMenu)
return;
this.asideMenuActive =
this.localStorageManager.getValue(this.menuId + AsideHandler.VISIBLE_SUFFIX) || this.asideMenuActive;
const isVisible = this.asideMenuActive === AsideHandler.VISIBLE_STATE;
this.asideMenu.classList.toggle(AsideHandler.VISIBLE_CLASS, isVisible);
this.asideSwitch?.classList.toggle(AsideHandler.VISIBLE_CLASS, isVisible);
}
}
exports.AsideHandler = AsideHandler;
AsideHandler.VISIBLE_CLASS = "active";
AsideHandler.VISIBLE_SUFFIX = "_visibility";
AsideHandler.VISIBLE_STATE = "show";
AsideHandler.HIDDEN_STATE = "hide";
//# sourceMappingURL=AsideHandler.js.map