frdh-mmenu-js/dist/addons/navbars/_navbar.tabs.js
2022-11-18 21:38:41 +01:00

41 lines
1.3 KiB
JavaScript

import * as DOM from '../../_modules/dom';
export default function (navbar) {
var _this = this;
navbar.classList.add('mm-navbar_tabs');
navbar.parentElement.classList.add('mm-navbars_has-tabs');
var anchors = DOM.children(navbar, 'a');
navbar.addEventListener('click', function (evnt) {
var anchor = evnt.target;
if (!anchor.matches('a')) {
return;
}
if (anchor.matches('.mm-navbar__tab_selected')) {
evnt.stopImmediatePropagation();
return;
}
try {
_this.openPanel(_this.node.menu.querySelector(anchor.getAttribute('href')), false);
evnt.stopImmediatePropagation();
}
catch (err) { }
});
function selectTab(panel) {
anchors.forEach(function (anchor) {
anchor.classList.remove('mm-navbar__tab_selected');
});
var anchor = anchors.filter(function (anchor) {
return anchor.matches('[href="#' + panel.id + '"]');
})[0];
if (anchor) {
anchor.classList.add('mm-navbar__tab_selected');
}
else {
var parent = panel['mmParent'];
if (parent) {
selectTab.call(this, parent.closest('.mm-panel'));
}
}
}
this.bind('openPanel:start', selectTab);
}