61 lines
2.1 KiB
JavaScript
61 lines
2.1 KiB
JavaScript
import Mmenu from '../../core/oncanvas/mmenu.oncanvas';
|
|
import * as DOM from '../../_modules/dom';
|
|
export default function (navbar) {
|
|
var _this = this;
|
|
// Add content to the navbar.
|
|
var title = DOM.create('a.mm-navbar__title');
|
|
var titleText = DOM.create('span');
|
|
title.append(titleText);
|
|
navbar.append(title);
|
|
// Update the title to the opened panel.
|
|
var _url, _txt;
|
|
var original;
|
|
this.bind('openPanel:start', function (panel) {
|
|
// Do nothing in a vertically expanding panel.
|
|
if (panel.parentElement.matches('.mm-listitem_vertical')) {
|
|
return;
|
|
}
|
|
// Find the original title in the opened panel.
|
|
original = panel.querySelector('.' + _this.conf.classNames.navbars.panelTitle);
|
|
if (!original) {
|
|
original = panel.querySelector('.mm-navbar__title span');
|
|
}
|
|
// Get the URL for the title.
|
|
_url =
|
|
original && original.closest('a')
|
|
? original.closest('a').getAttribute('href')
|
|
: '';
|
|
if (_url) {
|
|
title.setAttribute('href', _url);
|
|
}
|
|
else {
|
|
title.removeAttribute('href');
|
|
}
|
|
// Get the text for the title.
|
|
_txt = original ? original.innerHTML : '';
|
|
titleText.innerHTML = _txt;
|
|
});
|
|
// Add screenreader / aria support
|
|
var prev;
|
|
this.bind('openPanel:start:sr-aria', function (panel) {
|
|
if (_this.opts.screenReader.text) {
|
|
if (!prev) {
|
|
var navbars = DOM.children(_this.node.menu, '.mm-navbars_top, .mm-navbars_bottom');
|
|
navbars.forEach(function (navbar) {
|
|
var btn = navbar.querySelector('.mm-btn_prev');
|
|
if (btn) {
|
|
prev = btn;
|
|
}
|
|
});
|
|
}
|
|
if (prev) {
|
|
var hidden = true;
|
|
if (_this.opts.navbar.titleLink == 'parent') {
|
|
hidden = !prev.matches('.mm-hidden');
|
|
}
|
|
Mmenu.sr_aria(title, 'hidden', hidden);
|
|
}
|
|
}
|
|
});
|
|
}
|