Menu Structure
Menu Structure for TopBar
File: app/layout/shared/topbar
<header id="page-topbar">
<div class="navbar-header">
<div class="header-leftbar">
<!-- LOGO -->
<div class="navbar-brand-box">
<a routerLink="/" class="logo logo-dark">
<span class="logo-sm">
<img src="../assets/images/logo-sm-dark.png" alt="" height="26">
</span>
<span class="logo-lg">
<img src="../assets/images/logo-dark.png" alt="" height="30">
</span>
</a>
<a routerLink="/" class="logo logo-light">
<span class="logo-sm">
<img src="../assets/images/logo-sm-light.png" alt="" height="26">
</span>
<span class="logo-lg">
<img src="../assets/images/logo-light.png" alt="" height="30">
</span>
</a>
</div>
<button type="button" class="btn btn-sm font-size-32 menu-icon header-item" id="vertical-menu-btn" (click)="toggleMobileMenu($event)" (clickOutside)="hideSidebar()" [excludeBeforeClick]="true" [exclude]="'#vertical-menu-btn, .vertical-menu'">
<i class="mdi mdi-menu"></i>
</button>
<!-- App Search-->
<form class="app-search d-none d-lg-block">
<div class="position-relative">
<input type="text" class="form-control" placeholder="Search...">
<span class="mdi mdi-magnify"></span>
</div>
</form>
<button type="button" class="btn btn-sm ms-auto font-size-24 header-item d-sm-none" (click)="mobileToggle = !mobileToggle">
<i class="mdi mdi-dots-vertical"></i>
</button>
</div>
<div class="header-rightbar" [ngClass]="{'show': mobileToggle}">
<div ngbDropdown class="d-inline-block d-lg-none ms-2">
<button type="button" class="btn header-item noti-icon" id="page-header-search-dropdown"
ngbDropdownToggle aria-haspopup="true" aria-expanded="false">
<i class="mdi mdi-magnify"></i>
</button>
<div ngbDropdownMenu class="dropdown-menu-lg dropdown-menu-right p-0"
aria-labelledby="page-header-search-dropdown">
<form class="p-3">
<div class="form-group m-0">
<div class="input-group">
<input type="text" class="form-control" placeholder="Search ..." aria-label="Recipient's username">
<div class="input-group-append">
<button class="btn btn-primary" type="submit"><i class="mdi mdi-magnify"></i></button>
</div>
</div>
</div>
</form>
</div>
</div>
<div ngbDropdown class="d-inline-block">
<button type="button" class="btn header-item" ngbDropdownToggle id="page-header-flag-dropdown"
aria-haspopup="true" aria-expanded="false">
<img [src]="selectedLanguage?.flag" alt="Header Language" height="14">
<span class="ms-2 d-none d-sm-inline-block align-middle">{{selectedLanguage?.shortCode}}</span>
</button>
<div class="dropdown-menu-right" ngbDropdownMenu id="countries">
<!-- item-->
<a href="javascript:void(0);" *ngFor="let item of languages; let i = index;" ngbDropdownItem class="notify-item" (click)="changeLanguage(i, item)">
<img [src]="item?.flag" alt="user-image" class="me-2" height="12"><span
class="align-middle">{{item?.country}}</span>
</a>
</div>
</div>
<div class="d-none d-lg-inline-block">
<button type="button" class="btn header-item noti-icon" (click)="requestFullscreen()">
<i class="mdi-24px" [ngClass]="['mdi', !isfullscreen ? 'mdi-fullscreen' : 'mdi-fullscreen-exit']"></i>
</button>
</div>
<div class="d-inline-block" ngbDropdown>
<button ngbDropdownToggle aria-haspopup="true" type="button" id="page-header-notification-dropdown"
aria-expanded="false" class="btn header-item noti-icon position-relative">
<i class="mdi mdi-bell"></i>
<span class="badge badge-danger badge-pill notify-icon-badge">3</span>
</button>
<div aria-labelledby="page-header-notification-dropdown" class="dropdown-menu-lg dropdown-menu-right p-0" ngbDropdownMenu>
<div class="notify-title p-3">
<h5 class="font-size-14 font-weight-600 mb-0">
<span>Notification</span>
<a class="text-primary float-end" href="javascript: void(0);">
<small>Clear All</small>
</a>
</h5>
</div>
<div class="notify-scroll">
<ngx-simplebar class="scroll-content">
...
</ngx-simplebar>
<div class="clearfix">
<a href="javascript: void(0);" class="text-primary text-center p-3 d-block">
<small>View All</small>
</a>
</div>
</div>
</div>
</div>
<div ngbDropdown class="d-inline-block">
<button type="button" class="btn header-item" id="page-header-user-dropdown" ngbDropdownToggle
aria-haspopup="true" aria-expanded="false">
<img class="rounded-circle header-profile-user" src="../assets/images/users/avatar-1.jpg" alt="Header Avatar">
<span class="d-none d-sm-inline-block ms-1">Smith</span>
<i class="mdi mdi-chevron-down d-none d-sm-inline-block"></i>
</button>
<div ngbDropdownMenu class="dropdown-menu-right">
<!-- item-->
</div>
</div>
<!--layouts change-->
<div class="d-inline-flex">
<button type="button" class="btn header-item notify-icon right-bar-toggle" (click)="toggleRightSidebar()">
<i class="mdi mdi-settings mdi-spin mdi-24px"></i>
</button>
</div>
</div>
</div>
</header>
Menu Structure for Vertical layout
File: app/layout/shared/menu
<div class="vertical-menu">
<ngx-simplebar class="h-100">
<div id="sidebar-menu">
<ul class="metismenu list-unstyled" id="side-menu" #sideMenu>
<ng-container *ngFor="let item of menuItems">
<!--Title-->
<li class="menu-title" *ngIf="item.isTitle">{{ item.label }}</li>
<!-- link -->
<li *ngIf="!item.isTitle">
<!-- link title with submenu -->
<a *ngIf="hasItems(item)" href="javascript:void(0);" class="has-arrow side-nav-link">
<div class="d-inline-block me-1" *ngIf="item.icon"><i [class]="item?.icon"></i></div>
<span> {{ item?.label }}</span>
</a>
<!-- link title -->
<a *ngIf="!hasItems(item)" [routerLink]="item?.link" class="side-nav-link">
<div class="d-inline-block me-1" *ngIf="item.icon"><i [class]="item?.icon"></i></div>
<span> {{ item?.label }}</span>
<span class="badge badge-{{item.badge.variant}} float-right"
*ngIf="item?.badge">{{item?.badge?.text}}</span>
</a>
<!-- subment level 1 -->
<ul *ngIf="hasItems(item)" class="sub-menu" aria-expanded="false">
<li *ngFor="let subitem of item?.subItems">
<a *ngIf="hasItems(subitem)" href="javascript:void(0);" class="side-nav-link">
<div class="d-inline-block me-1" *ngIf="subitem.icon"><i [class]="subitem?.icon"></i></div>
<span> {{ subitem?.label }}</span>
</a>
<a [routerLink]="subitem?.link" *ngIf="!hasItems(subitem)" class="side-nav-link">
<div class="d-inline-block me-1" *ngIf="subitem.icon"><i [class]="subitem?.icon"></i></div>
{{ subitem?.label }}
</a>
<ul *ngIf="hasItems(subitem)" class="sub-menu" aria-expanded="false">
<li *ngFor="let subSubitem of subitem?.subItems">
<a [routerLink]="subSubitem?.link" class="side-nav-link">
<div class="d-inline-block me-1" *ngIf="subSubitem.icon"><i [class]="subSubitem?.icon"></i></div>
<span> {{ subSubitem?.label }}</span>
</a>
</li>
</ul>
</li>
</ul>
</li>
</ng-container>
</ul>
</div>
</ngx-simplebar>
</div>
Menu Structure for TopBar Horizontal
File: app/layout/shared/horizontal-topbar
<header id="page-topbar">
<div class="navbar-header">
<div class="container-fluid">
<div class="float-end">
<button type="button" class="btn btn-sm ml-auto font-size-24 header-item d-sm-none" (click)="mobileToggle = !mobileToggle">
<i class="mdi mdi-dots-vertical"></i>
</button>
<div class="header-rightbar" [ngClass]="{'show': mobileToggle}">
<div ngbDropdown class="d-inline-block ml-2">
<button type="button" class="btn header-item noti-icon" id="page-header-search-dropdown" ngbDropdownToggle aria-haspopup="true" aria-expanded="false">
<i class="mdi mdi-magnify"></i>
</button>
<div ngbDropdownMenu class="dropdown-menu-lg dropdown-menu-right p-0"
aria-labelledby="page-header-search-dropdown">
<form class="p-3">
<div class="form-group m-0">
<div class="input-group">
<input type="text" class="form-control" placeholder="Search ..." aria-label="Recipient's username">
<div class="input-group-append">
<button class="btn btn-primary" type="submit"><i class="mdi mdi-magnify"></i></button>
</div>
</div>
</div>
</form>
</div>
</div>
<div ngbDropdown class="d-inline-block">
<button type="button" class="btn header-item" ngbDropdownToggle id="page-header-flag-dropdown"
aria-haspopup="true" aria-expanded="false">
<img [src]="selectedLanguage?.flag" alt="Header Language" height="14">
<span class="ms-2 d-none d-sm-inline-block align-middle">{{selectedLanguage?.shortCode}}</span>
</button>
<div class="dropdown-menu-right" ngbDropdownMenu id="countries">
<!-- item-->
<a href="javascript:void(0);" *ngFor="let item of languages; let i = index;" ngbDropdownItem class="notify-item" (click)="changeLanguage(i, item)">
<img [src]="item?.flag" alt="user-image" class="me-2" height="12"><span
class="align-middle">{{item?.country}}</span>
</a>
</div>
</div>
<div class="d-none d-lg-inline-block">
<button type="button" class="btn header-item noti-icon" (click)="requestFullscreen()">
<i class="mdi-24px" [ngClass]="['mdi', !isfullscreen ? 'mdi-fullscreen' : 'mdi-fullscreen-exit']"></i>
</button>
</div>
<div class="d-inline-block" ngbDropdown>
<button ngbDropdownToggle aria-haspopup="true" type="button" id="page-header-notification-dropdown"
aria-expanded="false" class="btn header-item noti-icon position-relative">
<i class="mdi mdi-bell"></i>
<span class="badge badge-danger badge-pill notify-icon-badge">3</span>
</button>
<div aria-labelledby="page-header-notification-dropdown" class="dropdown-menu-lg dropdown-menu-right p-0" ngbDropdownMenu>
<div class="notify-title p-3">
<h5 class="font-size-14 font-weight-600 mb-0">
<span>Notification</span>
<a class="text-primary float-end" href="javascript: void(0);">
<small>Clear All</small>
</a>
</h5>
</div>
<div class="notify-scroll">
<ngx-simplebar class="scroll-content">
...
</ngx-simplebar>
<div class="clearfix">
<a href="javascript: void(0);" class="text-primary text-center p-3 d-block">
<small>View All</small>
</a>
</div>
</div>
</div>
</div>
<div ngbDropdown class="d-inline-block">
<button type="button" class="btn header-item" id="page-header-user-dropdown" ngbDropdownToggle
aria-haspopup="true" aria-expanded="false">
<img class="rounded-circle header-profile-user" src="../assets/images/users/avatar-1.jpg" alt="Header Avatar">
<span class="d-none d-sm-inline-block ms-1">Smith</span>
<i class="mdi mdi-chevron-down d-none d-sm-inline-block"></i>
</button>
<div ngbDropdownMenu class="dropdown-menu-right">
<!-- item-->
</div>
</div>
<div class="d-inline-flex">
<button type="button" class="btn header-item notify-icon right-bar-toggle" (click)="toggleRightSidebar()">
<i class="mdi mdi-settings mdi-spin mdi-24px"></i>
</button>
</div>
</div>
</div>
<!-- LOGO -->
<div class="navbar-brand-box">
<a href="index.html" class="logo logo-dark">
<span class="logo-sm">
<img src="../assets/images/logo-sm-dark.png" alt="" height="26">
</span>
<span class="logo-lg">
<img src="../assets/images/logo-dark.png" alt="" height="35">
</span>
</a>
<a href="index.html" class="logo logo-light">
<span class="logo-sm">
<img src="../assets/images/logo-sm-light.png" alt="" height="30">
</span>
<span class="logo-lg">
<img src="../assets/images/logo-light.png" alt="" height="35">
</span>
</a>
</div>
<button type="button" class="btn btn-sm mr-2 font-size-32 d-lg-none header-item" data-toggle="collapse" data-target="#topnav-menu-content">
<i class="fa fa-fw fa-bars"></i>
</button>
<app-menu-horizontal></app-menu-horizontal>
</div>
</div>
</header>
Menu Structure for Horizontal layout
File: app/layout/shared/menu-horizontal
<div class="topnav">
<nav class="navbar navbar-light navbar-expand-lg topnav-menu">
<div class="collapse navbar-collapse" id="topnav-menu-content">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link" routerLink="/">
Dashboard
</a>
</li>
<li class="nav-item" ngbDropdown>
<a class="nav-link arrow-none" ngbDropdownToggle href="javascript:void(0)" id="topnav-uielement" role="button" aria-haspopup="true" aria-expanded="false">
UI <div class="arrow-down"></div>
</a>
<div ngbDropdownMenu class="dropdown-menu dropdown-mega-menu-xl px-2" aria-labelledby="topnav-uielement">
<div class="row">
<div class="col-lg-4">
...
</div>
<div class="col-lg-4">
...
</div>
<div class="col-lg-4">
...
</div>
</div>
</div>
</li>
<li class="nav-item" ngbDropdown>
<a ngbDropdownToggle class="nav-link arrow-none" id="topnav-apps" aria-haspopup="true"
aria-expanded="false">
Apps
<div class="arrow-down"></div>
</a>
<div ngbDropdownMenu aria-labelledby="topnav-apps">
...
</div>
</li>
<li class="nav-item" ngbDropdown>
<a ngbDropdownToggle class="nav-link arrow-none" href="javascript:void(0)" id="topnav-components" role="button"
aria-haspopup="true" aria-expanded="false">
Components <div class="arrow-down"></div>
</a>
<div ngbDropdownMenu aria-labelledby="topnav-components">
<div ngbDropdown>
<a ngbDropdownToggle class="dropdown-item arrow-none" href="javascript:void(0)" id="topnav-advanced" role="button"
aria-haspopup="true" aria-expanded="false">
Advanced UI <div class="arrow-down"></div>
</a>
<div ngbDropdownMenu aria-labelledby="topnav-advanced">
...
</div>
</div>
<div ngbDropdown>
<a ngbDropdownToggle class="dropdown-item arrow-none" href="javascript:void(0)" id="topnav-icon" role="button"
aria-haspopup="true" aria-expanded="false">
Icons <div class="arrow-down"></div>
</a>
<div ngbDropdownMenu aria-labelledby="topnav-icon">
...
</div>
</div>
<div ngbDropdown>
<a ngbDropdownToggle class="dropdown-item arrow-none" href="javascript:void(0)" id="topnav-table" role="button"
aria-haspopup="true" aria-expanded="false">
Tables <div class="arrow-down"></div>
</a>
<div ngbDropdownMenu aria-labelledby="topnav-table">
...
</div>
</div>
<div ngbDropdown>
<a ngbDropdownToggle class="dropdown-item arrow-none" href="javascript:void(0)" id="topnav-form" role="button"
aria-haspopup="true" aria-expanded="false">
Forms <div class="arrow-down"></div>
</a>
<div ngbDropdownMenu aria-labelledby="topnav-form">
...
</div>
</div>
<div ngbDropdown>
<a ngbDropdownToggle class="dropdown-item arrow-none" href="javascript:void(0)" id="topnav-chart" role="button"
aria-haspopup="true" aria-expanded="false">
Charts <div class="arrow-down"></div>
</a>
<div ngbDropdownMenu aria-labelledby="topnav-chart">
...
</div>
</div>
</div>
</li>
<li class="nav-item" ngbDropdown>
<a ngbDropdownToggle class="nav-link arrow-none" href="javascript:void(0)" id="topnav-more" role="button"
aria-haspopup="true" aria-expanded="false">
Extra pages <div class="arrow-down"></div>
</a>
<div ngbDropdownMenu aria-labelledby="topnav-more">
<div ngbDropdown>
<a ngbDropdownToggle class="dropdown-item arrow-none" href="javascript:void(0)" id="topnav-auth" role="button"
aria-haspopup="true" aria-expanded="false">
Authentication <div class="arrow-down"></div>
</a>
<div ngbDropdownMenu aria-labelledby="topnav-auth">
...
</div>
</div>
<div ngbDropdown>
<a ngbDropdownToggle class="dropdown-item arrow-none" href="javascript:void(0)" id="topnav-utility" role="button"
aria-haspopup="true" aria-expanded="false">
Utility <div class="arrow-down"></div>
</a>
<div ngbDropdownMenu aria-labelledby="topnav-utility">
....
</div>
</div>
<div ngbDropdown>
<a ngbDropdownToggle class="dropdown-item arrow-none" href="javascript:void(0)" id="topnav-layout" role="button"
aria-haspopup="true" aria-expanded="false">
Layouts <div class="arrow-down"></div>
</a>
<div ngbDropdownMenu aria-labelledby="topnav-layout">
....
</div>
</div>
</div>
</li>
</ul>
</div>
</nav>
</div>



