73 lines
2.3 KiB
JavaScript
73 lines
2.3 KiB
JavaScript
/**
|
|
* DO NOT EDIT THIS FILE.
|
|
* See the following change record for more information,
|
|
* https://www.drupal.org/node/2815083
|
|
* @preserve
|
|
**/
|
|
|
|
(function (Drupal) {
|
|
var isDesktopNav = Drupal.olivero.isDesktopNav;
|
|
var secondLevelNavMenus = document.querySelectorAll('.primary-nav__menu-item--has-children');
|
|
|
|
function toggleSubNav(topLevelMenuITem, toState) {
|
|
var button = topLevelMenuITem.querySelector('.primary-nav__button-toggle, .primary-nav__menu-link--button');
|
|
var state = toState !== undefined ? toState : button.getAttribute('aria-expanded') !== 'true';
|
|
|
|
if (state) {
|
|
button.setAttribute('aria-expanded', 'true');
|
|
topLevelMenuITem.querySelector('.primary-nav__menu--level-2').classList.add('is-active');
|
|
} else {
|
|
button.setAttribute('aria-expanded', 'false');
|
|
topLevelMenuITem.querySelector('.primary-nav__menu--level-2').classList.remove('is-active');
|
|
}
|
|
}
|
|
|
|
Drupal.olivero.toggleSubNav = toggleSubNav;
|
|
secondLevelNavMenus.forEach(function (el) {
|
|
var button = el.querySelector('.primary-nav__button-toggle, .primary-nav__menu-link--button');
|
|
button.removeAttribute('aria-hidden');
|
|
button.removeAttribute('tabindex');
|
|
button.addEventListener('click', function (e) {
|
|
var topLevelMenuITem = e.currentTarget.parentNode;
|
|
toggleSubNav(topLevelMenuITem);
|
|
});
|
|
el.addEventListener('mouseover', function (e) {
|
|
if (isDesktopNav()) {
|
|
toggleSubNav(e.currentTarget, true);
|
|
}
|
|
});
|
|
el.addEventListener('mouseout', function (e) {
|
|
if (isDesktopNav()) {
|
|
toggleSubNav(e.currentTarget, false);
|
|
}
|
|
});
|
|
});
|
|
|
|
function closeAllSubNav() {
|
|
secondLevelNavMenus.forEach(function (el) {
|
|
toggleSubNav(el, false);
|
|
});
|
|
}
|
|
|
|
Drupal.olivero.closeAllSubNav = closeAllSubNav;
|
|
|
|
function areAnySubNavsOpen() {
|
|
var subNavsAreOpen = false;
|
|
secondLevelNavMenus.forEach(function (el) {
|
|
var button = el.querySelector('.primary-nav__button-toggle');
|
|
var state = button.getAttribute('aria-expanded') === 'true';
|
|
|
|
if (state) {
|
|
subNavsAreOpen = true;
|
|
}
|
|
});
|
|
return subNavsAreOpen;
|
|
}
|
|
|
|
Drupal.olivero.areAnySubNavsOpen = areAnySubNavsOpen;
|
|
document.addEventListener('keyup', function (e) {
|
|
if (e.keyCode === 27 && isDesktopNav()) {
|
|
closeAllSubNav();
|
|
}
|
|
});
|
|
})(Drupal); |