File

src/app/core/layout/sidebar/sidebar.component.ts

Metadata

Index

Properties
Methods

Methods

actionMenuCompact
actionMenuCompact()
Returns : void
handleClick
handleClick(item: MenuItem)
Parameters :
Name Type Optional
item MenuItem No
Returns : void

Properties

collapsed
Default value : true
menuCompact
Default value : false
multiple
Type : boolean
Default value : false
Protected Readonly navbarData
Default value : navbarData
import { Component } from '@angular/core';
import { CommonModule } from '@angular/common';
import { MatIconModule } from '@angular/material/icon';
import { SimplebarAngularModule } from 'simplebar-angular';
import { RouterLink, RouterLinkActive } from '@angular/router';
import { navbarData } from './nav-data';
import { SublevelMenuComponent } from './sublevel-menu.component';
import { MenuItem } from './menu.model';

@Component({
  selector: 'bgui-sidebar',
  standalone: true,
  imports: [
    CommonModule,
    MatIconModule,
    SimplebarAngularModule,
    RouterLinkActive,
    RouterLink,
    SublevelMenuComponent,
  ],
  templateUrl: './sidebar.component.html',
  styleUrls: ['./sidebar.component.scss'],
})
export class SidebarComponent {
  collapsed = true;
  multiple: boolean = false;
  menuCompact = false;
  actionMenuCompact() {
    this.menuCompact = !this.menuCompact;
  }

  protected readonly navbarData = navbarData;

  handleClick(item: MenuItem): void {
    if (!this.multiple) {
      for (const modelItem of this.navbarData) {
        if (item !== modelItem && modelItem.expanded) {
          modelItem.expanded = false;
        }
      }
    }
    item.expanded = !item.expanded;
  }
}
<div class="nk-sidebar-element">
  <div class="nk-sidebar-content">
    <div class="nk-sidebar-menu">
      <ul class="nk-menu">
        <ng-container *ngFor="let data of navbarData">
          <li class="nk-menu-heading" *ngIf="data.isTitle">
            <h6 class="overline-title text-primary-alt">{{ data.label }}</h6>
          </li>
          <!-- .nk-menu-item -->
          <li
            class="nk-menu-item has-sub"
            *ngIf="!data.isTitle"
            routerLinkActive="active"
            [routerLinkActiveOptions]="{ exact: true }">
            <div class="">
              <a
                class="nk-menu-link"
                (click)="handleClick(data)"
                *ngIf="data.items && data.items.length > 0">
                <mat-icon fontSet="material-icons-round" class="icon">{{
                  data.icon
                }}</mat-icon>
                <span class="nk-menu-text">{{ data.label }}</span>
                <i
                  *ngIf="data.items && collapsed"
                  class="bgui-menu-toggle"
                  [ngClass]="
                    !data.expanded ? 'fal fa-angle-right' : 'fal fa-angle-down'
                  "></i>
              </a>
            </div>
            <a
              class="nk-menu-link"
              [routerLink]="[data.routeLink]"
              *ngIf="!data.items || (data.items && data.items.length === 0)"
              routerLinkActive="active"
              [routerLinkActiveOptions]="{ exact: true }">
              <span class="nk-menu-icon">
                <mat-icon fontSet="material-icons-round" class="icon">{{
                  data.icon
                }}</mat-icon></span
              >
              <span class="nk-menu-text">{{ data.label }}</span>
            </a>
            <div *ngIf="collapsed && data.items && data.items.length > 0">
              <bgui-sublevel-menu
                [data]="data"
                [collapsed]="collapsed"
                [multiple]="multiple"
                [expanded]="data.expanded"></bgui-sublevel-menu>
            </div></li
        ></ng-container>
      </ul>
    </div>
  </div>
</div>

./sidebar.component.scss

.bgui-menu-toggle {
  position: absolute;
  top: 50%;
  right: 1.25rem;
  transform: translateY(-50%);

  font-size: 1.3rem;
  color: #aedcb6;
  transition: transform 0.3s, color 0.1s, opacity 0.3s ease 0.3s;
}
Legend
Html element
Component
Html element with directive

results matching ""

    No results matching ""