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

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);
}
}
});
}