(function () { "use strict"; /** * Adds click listeners to the main header * @namespace */ db.libs.profile = (function () { function init() { // If already initialized, do nothing and return var initiated = document.querySelector('html').hasAttribute('data-top-nav-initiated'); if (initiated) { return; } // Mobile menu toggler var smallMenuToggle = document.querySelector('#js-menu-toggle'); var header = document.querySelector('#main-navigation'); smallMenuToggle.addEventListener('click', function (event) { event.preventDefault(); header.classList.toggle('expand'); smallMenuToggle.classList.toggle('active'); }); // Large dropdown menu toggler var contentMenuToggler = document.querySelector('#js-top-nav-content'); var largeDropdown = document.querySelector('.large-dropdown'); contentMenuToggler.addEventListener('click', function (event) { event.preventDefault(); var expanded = contentMenuToggler.getAttribute('aria-expanded'); if (expanded === 'false') { contentMenuToggler.setAttribute('aria-expanded', 'true'); } else { contentMenuToggler.setAttribute('aria-expanded', 'false'); } this.classList.toggle('active'); largeDropdown.classList.toggle('expand'); }); // Close menu by pressing the Escape key var ESC_KEY = 27; document.addEventListener("keydown", function (event) { if (event.keyCode === ESC_KEY) { contentMenuToggler.classList.remove('active'); largeDropdown.classList.remove('expand'); contentMenuToggler.setAttribute('aria-expanded', 'false'); } }); // Section toggler var sectionToggler = document.querySelectorAll('.js-section-toggle'); sectionToggler.forEach(function (section) { section.addEventListener('click', function () { var toggleid = this.dataset.toggle; this.classList.toggle('active'); document.querySelectorAll('[data-toggle-id]').forEach(function (e) { if (e.dataset.toggleId != toggleid) { e.classList.remove('expand'); } }); document.querySelector('[data-toggle-id="' + toggleid + '"]').classList.toggle('expand'); }); }); var bindClickListener = function (element) { element.addEventListener('click', function (event) { event.preventDefault(); this.classList.toggle('active'); userDropdown.classList.toggle('expand'); if (!contentMenuToggler.classList.contains('active')) { this.blur(); } }); }; // User dropdown toggler var userMenuToggle = document.querySelectorAll('.js-user-menu'); var userDropdown = document.querySelector('.js-user-dropdown'); for (var i = 0; i < userMenuToggle.length; i++) { var toggle = userMenuToggle[i]; bindClickListener(toggle); } document.querySelector('html').setAttribute('data-top-nav-initiated', 'true'); } return { init: init, reflow: init }; })(); })();