export const run = () => { const html = document.documentElement; const body = document.body; const menuLinks = document.querySelectorAll('.admin-menu a'); const collapseBtn = document.querySelector('.admin-menu .collapse-btn'); const toggleMobileMenu = document.querySelector('.toggle-mob-menu'); const switchInput = document.querySelector('.switch input'); const switchLabel = document.querySelector('.switch label'); const switchLabelText = switchLabel.querySelector('span:last-child'); const collapsedClass = 'collapsed'; const lightModeClass = 'light-mode'; /*TOGGLE HEADER STATE*/ collapseBtn.addEventListener('click', function() { body.classList.toggle(collapsedClass); this.getAttribute('aria-expanded') == 'true' ? this.setAttribute('aria-expanded', 'false') : this.setAttribute('aria-expanded', 'true'); this.getAttribute('aria-label') == 'collapse menu' ? this.setAttribute('aria-label', 'expand menu') : this.setAttribute('aria-label', 'collapse menu'); }); /*TOGGLE MOBILE MENU*/ toggleMobileMenu.addEventListener('click', function() { body.classList.toggle('mob-menu-opened'); this.getAttribute('aria-expanded') == 'true' ? this.setAttribute('aria-expanded', 'false') : this.setAttribute('aria-expanded', 'true'); this.getAttribute('aria-label') == 'open menu' ? this.setAttribute('aria-label', 'close menu') : this.setAttribute('aria-label', 'open menu'); }); /*SHOW TOOLTIP ON MENU LINK HOVER*/ for (const link of menuLinks) { link.addEventListener('mouseenter', function() { if ( body.classList.contains(collapsedClass) && window.matchMedia('(min-width: 768px)').matches ) { const tooltip = this.querySelector('span').textContent; this.setAttribute('title', tooltip); } else { this.removeAttribute('title'); } }); } /*TOGGLE LIGHT/DARK MODE*/ if (localStorage.getItem('dark-mode') === 'false') { html.classList.add(lightModeClass); switchInput.checked = false; switchLabelText.textContent = 'Light'; } switchInput.addEventListener('input', function() { html.classList.toggle(lightModeClass); if (html.classList.contains(lightModeClass)) { switchLabelText.textContent = 'Light'; localStorage.setItem('dark-mode', 'false'); } else { switchLabelText.textContent = 'Dark'; localStorage.setItem('dark-mode', 'true'); } }); };