UNPKG

stylescape

Version:

Stylescape is a visual identity framework developed by Scape Agency.

63 lines 2.41 kB
"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