41 lines
1.3 KiB
JavaScript
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);
|
|
}
|