I have a multi level dropdown bootstrap 4 navbar. It works in a fashion but I have the problem in that if a page is selected from one of the multi levels rather than the immediate menu I loose the activate class.
Wondering if someone might guide me to how I can get activate on lower multi level options?
Here is the navmenu.html
<template>
<require from="./navmenu.scss"></require>
<nav class="navbar navbar-expand-lg navbar-dark bg-dark mainmenu mr-auto">
<a class="navbar-brand" href="#/home">JobsLedger</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto">
<li repeat.for="route of router.navigation">
<a href.bind="route.href" if.bind="!route.settings.nav" class="menu-level-link ${route.isActive ? 'active' : ''}"><font-awesome-icon icon="${ route.settings.icon }"></font-awesome-icon> ${route.title}</a>
<a href.bind="route.href" if.bind="route.settings.nav" class="menu-level-dropdown dropdown-toggle ${route.isActive ? 'active' : ''}" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<font-awesome-icon icon="${ route.settings.icon }"></font-awesome-icon>
${route.title}
</a>
<ul if.bind="route.settings.nav" class="dropdown-menu" aria-labelledby="navbarDropdown" role="button">
<li repeat.for="menu of route.settings.nav" class="${menu.settings.divider ? 'divider' : 'dropdown-submenu '}">
<a href.bind="menu.href" if.bind="!menu.settings.nav" class="dropdown-submenu-link">
<font-awesome-icon icon="${ menu.settings.icon }"></font-awesome-icon>
${menu.title}
</a>
<a href.bind="menu.href" if.bind="menu.settings.nav" class="dropdown-toggle" data-toggle="dropdown" role="button">
<font-awesome-icon icon="${ menu.settings.icon }"></font-awesome-icon>
${menu.title} <span class="caret-right"></span>
</a>
<ul if.bind="menu.settings.nav" class="dropdown-menu" aria-labelledby="navbarDropdown">
<li repeat.for="subMenu of menu.settings.nav" class="${subMenu.settings.divider ? 'divider' : 'dropdown-submenu '}">
<a href.bind="subMenu.href" if.bind="!subMenu.settings.nav" class="dropdown-submenu-link">
<font-awesome-icon icon="${ subMenu.settings.icon }"></font-awesome-icon>
${subMenu.title}
</a>
<a href.bind="subMenu.href" if.bind="subMenu.settings.nav" class="dropdown-toggle" data-toggle="dropdown" role="button">
<font-awesome-icon icon="${ subMenu.settings.icon }"></font-awesome-icon>
${subMenu.title} <span class="caret-right"></span>
</a>
<ul if.bind="subMenu.settings.nav" class="dropdown-menu" aria-labelledby="navbarDropdown">
<li repeat.for="lowestSubMenu of subMenu.settings.nav" class="${lowestSubMenu.settings.divider ? 'divider' : 'dropdown-submenu '}">
<a href.bind="lowestSubMenu.href" if.bind="!lowestSubMenu.settings.divider" class="dropdown-submenu-link">
<font-awesome-icon icon="${ lowestSubMenu.settings.icon }"></font-awesome-icon>
${lowestSubMenu.title}
</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul class="nav navbar-nav navbar-right mr-auto">
<li repeat.for="row of routes" if.bind="row.settings.pos == 'right'" class="${ row.isActive ? 'link-active' : '' }">
<a href.bind="row.href" if.bind="!row.settings.nav">${ row.title }</a>
<a href.bind="row.href" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"
if.bind="row.settings.nav">
${row.title}
<span class="caret"></span>
</a>
<ul if.bind="row.settings.nav" class="dropdown-menu">
<li repeat.for="menu of row.settings.nav">
<a href.bind="menu.href">${menu.title}</a>
</li>
</ul>
</li>
<li><a>Welcome ${userName}</a></li>
<li><a href="#" click.delegate="logout()">Log Out</a></li>
</ul>
</div>
</nav>
You can see that at the top level I use a ternary function
class=“menu-level-link ${route.isActive ? ‘active’ : ‘’}”
…and it works for those menu items that are directly under the menu option but should I select a second or third level option the menu item looses its active class tag…
No idea how to fix this… Hope someone might have a solution
Simon