Nested Navbar menu not working in Bootstrap - css

Ok! I am not using Primefaces/Omnifaces or Bootfaces, the requirement is to do it using Bootstrap only.
What I am trying to achieve is creating nested menu dynamically, I have been able to achieve only one level Menu.
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand" href="#">LAS</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="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto">
<ui:repeat value="#{menuViewModel.parentMenu}" var="parentMenuItem">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
#{parentMenuItem.menuLabel}
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<ui:repeat value="#{menuViewModel.generateChildMenu(parentMenuItem.menuName)}" var="childMenuItem">
<a class="dropdown-item" href="#">#{childMenuItem.menuLabel}</a>
</ui:repeat>
</div>
</li>
</ui:repeat>
</ul>
<button class="btn btn-outline-success my-2 my-sm-0 dropdown">
<span class="glyphicon glyphicon-user"></span> User
</button>
</div>
</nav>
Now, as there may be many number of children (though we have only 3 level of nested menu items yet) the problem starts. How I have to change my xhtml to generate nested menus.
The attached image shows first level of Menu.
As you can see, the menu item Host Configuration has another sub items but I am not able to understand how I can show it on my view.
Do I have to use recursive logic or something or there is a need to write some EL?
Thanks

Related

Dropdown Menu in .Net 6 Web App does not work

Working on a .Net 6 Web App for a client and have a problem with the dropdown code that I have actually copied partially from Bootstrap web page. I have copied the entire code from bootstrap web page without any modification and it does not work. It behaves like a normal link-item even though it has all characteristics of a dropdown menu. I have also tried to move the nav bar to the top, but it uses a 150 px margin from the top and I cannot find any css code for this behavior. Any hints will be very much appreciated.
<header >
<nav class="navbar navbar-expand-lg navbar-light border-bottom">
<div id="navigation" class="container-fluid">
<a class="navbar-brand" asp-area="" asp-page="/Index"><img id="logo" src="/img/logo.png" height="102" width="95"/></a>
<button
class="navbar-toggler"
type="button"
data-mdb-toggle="collapse"
data-mdb-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent"
aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<a
class="nav-link dropdown-toggle"
href="#"
id="navbarDropdown"
role="button"
data-mdb-toggle="dropdown"
aria-expanded="false"
>
Company Name
</a>
<ul class="dropdown-menu" aria-labelledby="navbarDropdown">
<li><a class="dropdown-item" href="#"><span style="color:white; font-family:Montserrat;">Pictures</span></a></li>
<li><a class="dropdown-item" href="#"><span style="color:white; font-family:Montserrat;">Videos</span></a></li>
<li><a class="dropdown-item" asp-area="" asp-page="/Privacy"><span style="color:white; font-family:Montserrat;">Privacy</span></a></li>
</ul>
</div>
</div>
</nav>
I copied the entire nav bar code from bootstrap and it still does not work.

Dropdown Menu on Bootstrap 4 Navbar

I am having issues aligning a dropdown menu on the navbar-brand portion of the Bootstrap 4 Navbar. For some reason it is aligning to the top left of the page.
I have tried the following code below and am not sure how to go from there.
<nav class="navbar navbar-expand-lg navbar-dark bg-primary">
<div class="container">
<a class="navbar-brand dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
WebsiteName
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="/>WebsiteName</a>
<div class="dropdown-divider"></div>
<h6 class="dropdown-header">Popular Subdomains</h6>
<a class="dropdown-item" href="/">Subdomain 2</a><a class="dropdown-item" href="/">Subdomain 3</a> <div class="dropdown-divider"></div>
<a class="dropdown-item" href="/">All Subdomains</a>
</div>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarColor01" aria-controls="navbarColor01" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarColor01">
<ul class="navbar-nav mr-auto">
<li class="nav-item">
<a class="nav-link" href="/">Home Link</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/two-link/">Two Link</a>
</li>
</ul>
<form class="form-inline my-2 my-lg-0" action="/search">
<input class="form-control mr-sm-2" type="text" name="q" placeholder="Search">
</form>
</div>
</div>
</nav>
just curiosity , are you tring to make your brand is dropdown cause its a big mistake try to read this docs to see how its work
https://getbootstrap.com/docs/4.2/components/navbar/
you can also position your navbar by using float or flex alignment as you wish

Cannot get login button positioned correctly in navbar

The button that is labelled "Login" needs to be pushed to the right of the navbar and lined up properly with other buttons. Here is a jfiddle to see what it's doing. I am using bootstrap to design this and am having trouble with positioning of certain buttons.
https://jsfiddle.net/sterlingmd17/tk17zjfq/1/
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">Project name</a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li class="{{a}}"> Home</li>
<li class="{{b}}"> Order form</li>
<li class="{{c}}"> About Swirlz</li>
<li class="{{d}}"> Contact</li>
<!--TODO fix login button positioning -->
<div class="btn-group dropdown">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Login
</button>
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton"></div>
</div>
</ul>
</div>
</nav>
First, move the button div outside of the unordered list tags, then add the classes navbar-form and navbar-right to the button div.
It should look like this
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li class="{{a}}"> Home</li>
<li class="{{b}}"> Order form</li>
<li class="{{c}}"> About Swirlz</li>
<li class="{{d}}"> Contact</li>
</ul>
<!--TODO fix login button positioning -->
<div class="navbar-form navbar-right btn-group dropdown">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Login
</button>
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton"></div>
</div>
</div>

ng-sidebar to create a sidebar that pushes content to the right

I am using ng-sidebar to animate and implement the collapsable sidebar on smaller mobile screens.
This is my first time using Angular so I apologize if the question is simple for everyone else.
I have installed using npm install ng-sidebar and tried the working demo, but I have difficulty adjusting it to my needs.
In my app.component.html I have this code taken from the demo :
<ng-sidebar-container>
<ng-sidebar
[(opened)]="_opened"
[mode]="_MODES[_modeNum]"
[closeOnClickOutside]="_closeOnClickOutside"
[closeOnClickBackdrop]="_closeOnClickBackdrop"
[showBackdrop]="_showBackdrop"
[animate]="_animate">
<button (click)="_toggleOpened()">Close sidebar</button>
<p><a closeSidebar>This will close the sidebar too</a></p>
<hr>
<ul class="nav nav-pills flex-column">
<li class="nav-item collapsed side" data-toggle="collapse" data-target="#home">
<a class="nav-link" routerLinkActive="active" routerLink="/home" [routerLinkActiveOptions]="{exact: true}">Home</a>
</li>
<ul class="sub-menu collapse" id="home">
<li class="nav-item list-unstyled"> <a class="nav-link" routerLinkActive="active" routerLink="/home/submenu">Submenu</a>
</li>
<li class="nav-item list-unstyled">
<a class="nav-link" routerLinkActive="active" routerLink="/home/submenu2">Submenu2</a>
</li>
<li class="nav-item side">
<a class="nav-link" routerLinkActive="active" routerLink="/secondMenu"MenuItem>/a>
</li>
</ul>
</ng-sidebar>
<div ng-sidebar-content>
<header class="demo-header">
<button class="navbar-toggler " type="button" (click)="_toggleOpened()" data-toggle="collapse" data-target="#sidebar" aria-controls="navbarsExampleDefault"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
<span>ng-sidebar</span>
</header>
<section class="demo-contents">
<router-outlet></router-outlet>
</section>
</div>
What I do not understand is, how to put a :
<button class="navbar-toggler " type="button" data-toggle="collapse" data-target="#sidebar" aria-controls="navbarsExampleDefault"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
That when clicked, called
_toggleOpened() and [mode]="_MODES[_modeNum]"
mode should be push
Example link
And have it on the top bar as in the example. Because no css style is applied on my document when trying the demo.
How do I make that button and sidebar to only push the content as in the link when clicking mode-push, and also add transparent background ?
So the button should push the content, add background and when clicking anywhere outside on the screen to be closed. ?
I'm very sorry again, I just need a simple layout to help me get started :| To understand it
Thank you in advance!

Bootstrap 4 - Navbar title on mobile

I'm working on a site using the new Bootstrap 4 for a group that unfortunately has a long name and as a result, I am having issues with displayed this name in the navbar. As shown in the picture below, the long name has caused the burger button (the 3 line thing) that opens up the nav options has dropped down to a second line. Due to complicated issues relating to Scrollspy I need to prevent this to ensure that the navbar is the same height regardless of device screen size. Is there a way I could either prevent this from happening or set mobiles to have a different shorter title text, such as "Webpage Name", which would allow the name to fit beside the burger button. I know this was possible in Bootstrap 3, however, I cannot find a working alternative in Bootstrap 4.
<nav class="navbar navbar-expand-lg navbar-light bg-light sticky-top" id="main-nav-bar">
<a class="navbar-brand" href="#home">
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/e/e0/SNice.svg/1200px-SNice.svg.png" class="navbar-sqnlogo d-inline-block align-top">Annoying Long Webpage Name</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ml-auto">
<li class="nav-item"><a class="nav-link" href="#home">Home</a></li>
<li class="nav-item"><a class="nav-link active" href="#about" id="aboutlink">About</a></li>
<li class="nav-item"><a class="nav-link" href="#whatwedo">What We Do</a></li>
<li class="nav-item"><a class="nav-link" href="#join">Join</a></li>
</ul>
</div>
</nav>
Here is the solution I found for Bootstrap v4-beta:
<!-- Navbar -->
<nav class="navbar navbar-expand-lg navbar-light bg-light sticky-top" id="main-nav-bar">
<a class="navbar-brand" href="#home">
<img src="img/logo.png" class="navbar-sqnlogo d-inline-block align-top">
Long <span class="d-none d-md-inline">Web Page </span>Name
</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ml-auto">
<li class="nav-item"><a class="nav-link" data-toggle="collapse" data-target="#navbarNav" href="#home">Home</a></li>
<li class="nav-item"><a class="nav-link" data-toggle="collapse" data-target="#navbarNav" href="#about" id="aboutlink">About</a></li>
<li class="nav-item"><a class="nav-link" data-toggle="collapse" data-target="#navbarNav" href="#whatwedo">What We Do</a></li>
<li class="nav-item"><a class="nav-link" data-toggle="collapse" data-target="#navbarNav" href="#join">Join</a></li>
</ul>
</div>
</nav
For reference, the classes d-*-* do this.

Resources