in packages/core/js/menu.js [8:82]
function menu($elements) {
$elements.forEach(($menu) => {
$menu.addEventListener('click', (event) => {
let $listItem = event.target;
while ($listItem) {
if ($listItem.classList.contains('menu')) {
return;
}
if ($listItem.classList.contains('menu__list-item')) {
break;
}
$listItem = $listItem.parentNode;
}
// Not clicking on a list item.
if (!$listItem) {
return;
}
const regularSubList =
$listItem.classList.contains('menu__list-item') &&
!$listItem.querySelector('.menu__list-item-collapsible');
const caretBtn = event.target.classList.contains('menu__caret');
if (regularSubList || caretBtn) {
$listItem.classList.toggle('menu__list-item--collapsed');
}
// Don't add any active class if non-leaf item selected.
if ($listItem.querySelector('.menu__list')) {
return;
}
$menu
.querySelectorAll('.menu__link')
.forEach(($elItem) => $elItem.classList.remove('menu__link--active'));
// Traverse parents and add active class.
while ($listItem) {
if ($listItem.classList.contains('menu')) {
return;
}
if ($listItem.classList.contains('menu__list-item')) {
const $link = $listItem.querySelector('.menu__link');
if ($link) {
$link.classList.add('menu__link--active');
}
const $listItemCollapsible = $listItem.querySelector(
'.menu__list-item-collapsible',
);
if ($listItemCollapsible) {
$listItemCollapsible.classList.add(
'menu__list-item-collapsible--active',
);
}
}
$listItem = $listItem.parentNode;
}
});
$navbarSidebarBackButton = document.querySelector('.navbar-sidebar__back');
$navbarSidebarItems = document.querySelector('.navbar-sidebar__items');
if ($navbarSidebarBackButton) {
$navbarSidebarBackButton.addEventListener('click', () => {
$navbarSidebarItems.classList.remove(
'navbar-sidebar__items--show-secondary',
);
});
}
});
}