Merge pull request #73 from fschrempf/direct-sidebar-nav-links

Use direct links for sidebar elements with only a single subitem
This commit is contained in:
Andreas Gohr 2021-06-03 09:56:35 +02:00 committed by GitHub
commit d09fe4beb2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -124,7 +124,6 @@ jQuery(function () {
; ;
$toggler = jQuery('<div class="nav">').prepend($toggler); $toggler = jQuery('<div class="nav">').prepend($toggler);
// wrap all following siblings til the next element in a wrapper // wrap all following siblings til the next element in a wrapper
var $wrap = jQuery('<div>') var $wrap = jQuery('<div>')
.addClass('nav-panel'); .addClass('nav-panel');
@ -136,20 +135,29 @@ jQuery(function () {
$sib.detach().appendTo($wrap); $sib.detach().appendTo($wrap);
addContentMenuCurrentStates($sib, $toggler); addContentMenuCurrentStates($sib, $toggler);
} }
$wrap.insertAfter($me);
/*
* if there is only one subitem with a link, disable toggling
* and use a direct link.
*/
var $links = jQuery($wrap[0]).find('a');
if ($links.length == 1) {
$toggler.children().first().attr('href', jQuery($links[0]).attr('href'));
} else {
$wrap.insertAfter($me);
if ($toggler.parent('li').length) {
$toggler.parent('li').addClass('toggler');
}
if (window.sessionStorage.getItem('sidebar-section-' + sidebarId + '-' + index + '-open') === 'true') {
$wrap.css('display', 'block');
setTogglerClass($toggler,'is-open');
}
}
// replace element with toggler // replace element with toggler
$me.replaceWith($toggler); $me.replaceWith($toggler);
if ($toggler.parent('li').length) {
$toggler.parent('li').addClass('toggler');
}
if (window.sessionStorage.getItem('sidebar-section-' + sidebarId + '-' + index + '-open') === 'true') {
$wrap.css('display', 'block');
setTogglerClass($toggler,'is-open');
}
}); });
// fade in the navigation (was hidden until now // fade in the navigation (was hidden until now
@ -161,8 +169,10 @@ jQuery(function () {
*/ */
initMenuHandling = function () { initMenuHandling = function () {
$nav.on('click', 'div.nav a', function (e) { $nav.on('click', 'div.nav a', function (e) {
toggleNav(jQuery(this)); if (jQuery(this).attr('href').startsWith('#')) {
e.preventDefault(); toggleNav(jQuery(this));
e.preventDefault();
}
}); });
}, },