ngx-material-navigation 20.2.0 → 20.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,4 @@
1
+ import * as i4 from '@angular/common';
1
2
  import { CommonModule, NgOptimizedImage } from '@angular/common';
2
3
  import * as i0 from '@angular/core';
3
4
  import { Input, Component, runInInjectionContext, Directive, model, ElementRef, HostListener, ViewChild, inject, Injectable, InjectionToken, Inject } from '@angular/core';
@@ -833,7 +834,9 @@ class NgxMatNavigationNavbarComponent {
833
834
  const res = [];
834
835
  // anchorRow is excluded from sidenav
835
836
  for (const row of this.navbarRows) {
836
- res.push(...row.elements.filter(e => this.checkCondition(e) && !this.checkVisible(e)));
837
+ res.push(...row.elements
838
+ .filter(e => this.checkCondition(e) && !this.checkVisible(e))
839
+ .map(e => ({ ...e, id: `sidenav-${e.id}` })));
837
840
  }
838
841
  return res;
839
842
  }
@@ -910,10 +913,6 @@ class NgxMatNavigationNavbarComponent {
910
913
  }
911
914
  }
912
915
  // eslint-disable-next-line jsdoc/require-jsdoc
913
- getElementClass(element) {
914
- return `collapse-${element.collapse ?? 'sm'}`;
915
- }
916
- // eslint-disable-next-line jsdoc/require-jsdoc
917
916
  getBurgerMenuClass() {
918
917
  if (this.sidenavElements.find(e => e.collapse === 'always')) {
919
918
  return 'burger-always';
@@ -982,14 +981,14 @@ class NgxMatNavigationNavbarComponent {
982
981
  }
983
982
  }
984
983
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: NgxMatNavigationNavbarComponent, deps: [{ token: i1$2.DomSanitizer }, { token: NgxMatNavigationService }, { token: NGX_BURGER_MENU_ICON }, { token: NGX_BURGER_MENU_ARIA_LABEL }, { token: i0.EnvironmentInjector }, { token: i3.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
985
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: NgxMatNavigationNavbarComponent, isStandalone: true, selector: "ngx-mat-navigation-navbar", inputs: { navbarRows: "navbarRows", minHeight: "minHeight", minHeightOtherElements: "minHeightOtherElements", minSidenavWidth: "minSidenavWidth" }, host: { listeners: { "window:resize": "onResize()" } }, viewQueries: [{ propertyName: "navbar", first: true, predicate: ["navbar"], descendants: true, read: ElementRef, static: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<!-- eslint-disable angular/cyclomatic-complexity -->\n<!-- eslint-disable angular/no-call-expression -->\n<nav #navbar id=\"toolbar\" [style.min-height.px]=\"minHeight ?? 0\">\n @for (row of navbarRows; track $index) {\n @if (getNavbarElements(row, 'left').length || getNavbarElements(row, 'center').length || getNavbarElements(row, 'right').length || $index === 0) {\n <div class=\"toolbar-row\">\n <div class=\"toolbar-col\">\n @for (element of getNavbarElements(row, 'left'); track element.id) {\n <ngx-mat-navigation-element [class]=\"getElementClass(element)\" [element]=\"element\" [(sidenavOpened)]=\"sidenavOpened\" (click)=\"clickSidenavElement(element)\"></ngx-mat-navigation-element>\n }\n </div>\n <div class=\"toolbar-col\">\n @for (element of getNavbarElements(row, 'center'); track element.id) {\n <ngx-mat-navigation-element [class]=\"getElementClass(element)\" [element]=\"element\" [(sidenavOpened)]=\"sidenavOpened\" (click)=\"clickSidenavElement(element)\"></ngx-mat-navigation-element>\n }\n </div>\n <div class=\"toolbar-col\">\n @for (element of getNavbarElements(row, 'right'); track element.id) {\n <ngx-mat-navigation-element [class]=\"getElementClass(element)\" [element]=\"element\" [(sidenavOpened)]=\"sidenavOpened\" (click)=\"clickSidenavElement(element)\"></ngx-mat-navigation-element>\n }\n @if ($index === 0) {\n <ngx-mat-navigation-element [class]=\"getBurgerMenuClass()\" [element]=\"burgerMenu\"></ngx-mat-navigation-element>\n }\n </div>\n </div>\n }\n }\n @if (navService.anchorRow.elements.length) {\n <div class=\"anchor-row\">\n <div class=\"anchor-row-content\">\n @for (element of navService.anchorRow.elements; track element.id) {\n <ngx-mat-navigation-element [element]=\"element\" [(sidenavOpened)]=\"sidenavOpened\" (click)=\"clickSidenavElement(element)\"></ngx-mat-navigation-element>\n }\n </div>\n </div>\n }\n</nav>\n\n<div #content class=\"content\" [style.min-height]=\"sanitizedContentMinHeight\">\n <ng-content></ng-content>\n</div>\n\n@if (this.navbar && this.content) {\n <div class=\"sidenav\"\n [class.open]=\"sidenavOpened\"\n [style.min-width]=\"sidenavOpened ? minSidenavWidth : undefined\"\n [style.width.px]=\"sidenavOpened ? undefined : 0\"\n [style.top.px]=\"this.navbar.nativeElement.offsetHeight\"\n [style.height.px]=\"this.content.nativeElement.offsetHeight\"\n >\n @for (element of sidenavElements; track element.id) {\n <div class=\"sidenav-row\">\n <ngx-mat-navigation-element\n [class]=\"getElementClass(element)\"\n [isSidenavElement]=\"true\"\n [element]=\"element\"\n [(sidenavOpened)]=\"sidenavOpened\"\n (click)=\"clickSidenavElement(element)\"\n >\n </ngx-mat-navigation-element>\n </div>\n }\n </div>\n @if (sidenavOpened) {\n <div class=\"sidenav-backdrop\"\n [class.open]=\"sidenavOpened\"\n [style.top.px]=\"this.navbar.nativeElement.offsetHeight\"\n [style.height.px]=\"this.content.nativeElement.offsetHeight\"\n (click)=\"sidenavOpened = false\"\n >\n </div>\n }\n}", styles: ["nav{height:auto;justify-content:center;padding:16px;box-shadow:0 0 5px -1px #0003,0 0 8px 5px #00000024,0 0 14px 8px #0000001f;display:flex;flex-direction:column;gap:10px}.toolbar-row{display:flex;align-items:center;justify-content:space-between;box-sizing:border-box;width:100%;max-width:max(80%,1200px);margin-left:auto;margin-right:auto}.toolbar-col{height:100%;display:flex;gap:20px;align-items:center;flex-wrap:wrap}.anchor-row{border-top:1px solid rgb(200,200,200);padding-left:16px;margin:6px -16px -16px;padding-right:16px}.anchor-row-content{display:flex;align-items:center;flex-wrap:wrap;column-gap:20px;width:100%;max-width:max(80%,1200px);margin-left:auto;margin-right:auto}ngx-mat-navigation-element{display:inline-flex}.content{display:flex;flex-direction:column}.sidenav{position:absolute;right:0;background-color:#fff;border-top:1px solid rgb(200,200,200);border-bottom:1px solid rgb(200,200,200);display:flex;flex-direction:column;gap:10px;overflow:scroll;z-index:20;box-sizing:border-box;transform:translate(100%);transition:transform .3s;opacity:0}.sidenav.open{transform:translate(0);opacity:1;padding:16px}.sidenav-backdrop{position:absolute;right:0;left:0;bottom:0;background-color:#00000073;z-index:10;opacity:0;transition:opacity .3s}.sidenav-backdrop.open{opacity:1}.sidenav-row .collapse-lg,.sidenav-row .collapse-md,.sidenav-row .collapse-sm,.sidenav-row .collapse-never,.burger-lg,.burger-md,.burger-sm,.burger-never{display:none}@media (max-width: 1199px){.toolbar-col .collapse-lg{display:none}.toolbar-col .burger-lg{display:inline-flex}.sidenav-row .collapse-lg{display:block}}@media (max-width: 991px){.toolbar-col .collapse-md{display:none}.toolbar-col .burger-md{display:inline-flex}.sidenav-row .collapse-md{display:block}}@media (max-width: 767px){.toolbar-col .collapse-sm{display:none}.toolbar-col .burger-sm{display:inline-flex}.sidenav-row .collapse-sm{display:block}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: NavElementComponent, selector: "ngx-mat-navigation-element", inputs: ["element", "parentMenusButtons", "sidenavOpened", "isSidenavElement", "isMenuItem"], outputs: ["sidenavOpenedChange"] }] });
984
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: NgxMatNavigationNavbarComponent, isStandalone: true, selector: "ngx-mat-navigation-navbar", inputs: { navbarRows: "navbarRows", minHeight: "minHeight", minHeightOtherElements: "minHeightOtherElements", minSidenavWidth: "minSidenavWidth" }, host: { listeners: { "window:resize": "onResize()" } }, viewQueries: [{ propertyName: "navbar", first: true, predicate: ["navbar"], descendants: true, read: ElementRef, static: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<!-- eslint-disable angular/cyclomatic-complexity -->\n<!-- eslint-disable angular/no-call-expression -->\n<nav #navbar id=\"toolbar\" [style.min-height.px]=\"minHeight ?? 0\">\n @for (row of navbarRows; track $index) {\n @if (getNavbarElements(row, 'left').length || getNavbarElements(row, 'center').length || getNavbarElements(row, 'right').length || $index === 0) {\n <div class=\"toolbar-row\">\n <div class=\"toolbar-col\">\n @for (element of getNavbarElements(row, 'left'); track element.id) {\n <ngx-mat-navigation-element\n [ngClass]=\"{\n 'collapse-sm': element.collapse === 'sm' || element.collapse === undefined,\n 'collapse-md': element.collapse === 'md',\n 'collapse-lg': element.collapse === 'lg',\n 'collapse-always': element.collapse === 'always',\n 'collapse-never': element.collapse === 'never',\n }\"\n [element]=\"element\" \n [(sidenavOpened)]=\"sidenavOpened\" \n (click)=\"clickSidenavElement(element)\"\n >\n </ngx-mat-navigation-element>\n }\n </div>\n <div class=\"toolbar-col\">\n @for (element of getNavbarElements(row, 'center'); track element.id) {\n <ngx-mat-navigation-element \n [ngClass]=\"{\n 'collapse-sm': element.collapse === 'sm' || element.collapse === undefined,\n 'collapse-md': element.collapse === 'md',\n 'collapse-lg': element.collapse === 'lg',\n 'collapse-always': element.collapse === 'always',\n 'collapse-never': element.collapse === 'never',\n }\"\n [element]=\"element\" \n [(sidenavOpened)]=\"sidenavOpened\"\n (click)=\"clickSidenavElement(element)\"\n >\n </ngx-mat-navigation-element>\n }\n </div>\n <div class=\"toolbar-col\">\n @for (element of getNavbarElements(row, 'right'); track element.id) {\n <ngx-mat-navigation-element\n [ngClass]=\"{\n 'collapse-sm': element.collapse === 'sm' || element.collapse === undefined,\n 'collapse-md': element.collapse === 'md',\n 'collapse-lg': element.collapse === 'lg',\n 'collapse-always': element.collapse === 'always',\n 'collapse-never': element.collapse === 'never',\n }\"\n [element]=\"element\" \n [(sidenavOpened)]=\"sidenavOpened\" \n (click)=\"clickSidenavElement(element)\"\n >\n </ngx-mat-navigation-element>\n }\n @if ($index === 0) {\n <ngx-mat-navigation-element [class]=\"getBurgerMenuClass()\" [element]=\"burgerMenu\"></ngx-mat-navigation-element>\n }\n </div>\n </div>\n }\n }\n @if (navService.anchorRow.elements.length) {\n <div class=\"anchor-row\">\n <div class=\"anchor-row-content\">\n @for (element of navService.anchorRow.elements; track element.id) {\n <ngx-mat-navigation-element [element]=\"element\" [(sidenavOpened)]=\"sidenavOpened\" (click)=\"clickSidenavElement(element)\"></ngx-mat-navigation-element>\n }\n </div>\n </div>\n }\n</nav>\n\n<div #content class=\"content\" [style.min-height]=\"sanitizedContentMinHeight\">\n <ng-content></ng-content>\n</div>\n\n@if (this.navbar && this.content) {\n <div class=\"sidenav\"\n [class.open]=\"sidenavOpened\"\n [style.min-width]=\"sidenavOpened ? minSidenavWidth : undefined\"\n [style.width.px]=\"sidenavOpened ? undefined : 0\"\n [style.top.px]=\"this.navbar.nativeElement.offsetHeight\"\n [style.height.px]=\"this.content.nativeElement.offsetHeight\"\n >\n @for (element of sidenavElements; track element.id) {\n <div class=\"sidenav-row\">\n <ngx-mat-navigation-element\n [ngClass]=\"{\n 'collapse-sm': element.collapse === 'sm' || element.collapse === undefined,\n 'collapse-md': element.collapse === 'md',\n 'collapse-lg': element.collapse === 'lg',\n 'collapse-always': element.collapse === 'always',\n 'collapse-never': element.collapse === 'never',\n }\"\n [isSidenavElement]=\"true\"\n [element]=\"element\"\n [(sidenavOpened)]=\"sidenavOpened\"\n (click)=\"clickSidenavElement(element)\"\n >\n </ngx-mat-navigation-element>\n </div>\n }\n </div>\n @if (sidenavOpened) {\n <div class=\"sidenav-backdrop\"\n [class.open]=\"sidenavOpened\"\n [style.top.px]=\"this.navbar.nativeElement.offsetHeight\"\n [style.height.px]=\"this.content.nativeElement.offsetHeight\"\n (click)=\"sidenavOpened = false\"\n >\n </div>\n }\n}", styles: ["nav{height:auto;justify-content:center;padding:16px;box-shadow:0 0 5px -1px #0003,0 0 8px 5px #00000024,0 0 14px 8px #0000001f;display:flex;flex-direction:column;gap:10px}.toolbar-row{display:flex;align-items:center;justify-content:space-between;box-sizing:border-box;width:100%;max-width:max(80%,1200px);margin-left:auto;margin-right:auto}.toolbar-col{height:100%;display:flex;gap:20px;align-items:center;flex-wrap:wrap}.anchor-row{border-top:1px solid rgb(200,200,200);padding-left:16px;margin:6px -16px -16px;padding-right:16px}.anchor-row-content{display:flex;align-items:center;flex-wrap:wrap;column-gap:20px;width:100%;max-width:max(80%,1200px);margin-left:auto;margin-right:auto}ngx-mat-navigation-element{display:inline-flex}.content{display:flex;flex-direction:column}.sidenav{position:absolute;right:0;background-color:#fff;border-top:1px solid rgb(200,200,200);border-bottom:1px solid rgb(200,200,200);display:flex;flex-direction:column;gap:10px;overflow:scroll;z-index:20;box-sizing:border-box;transform:translate(100%);transition:transform .3s;opacity:0}.sidenav.open{transform:translate(0);opacity:1;padding:16px}.sidenav-backdrop{position:absolute;right:0;left:0;bottom:0;background-color:#00000073;z-index:10;opacity:0;transition:opacity .3s}.sidenav-backdrop.open{opacity:1}.sidenav-row .collapse-lg,.sidenav-row .collapse-md,.sidenav-row .collapse-sm,.sidenav-row .collapse-never,.burger-lg,.burger-md,.burger-sm,.burger-never{display:none}@media (max-width: 1199px){.toolbar-col .collapse-lg{display:none}.toolbar-col .burger-lg{display:inline-flex}.sidenav-row .collapse-lg{display:block}}@media (max-width: 991px){.toolbar-col .collapse-md{display:none}.toolbar-col .burger-md{display:inline-flex}.sidenav-row .collapse-md{display:block}}@media (max-width: 767px){.toolbar-col .collapse-sm{display:none}.toolbar-col .burger-sm{display:inline-flex}.sidenav-row .collapse-sm{display:block}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: NavElementComponent, selector: "ngx-mat-navigation-element", inputs: ["element", "parentMenusButtons", "sidenavOpened", "isSidenavElement", "isMenuItem"], outputs: ["sidenavOpenedChange"] }] });
986
985
  }
987
986
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: NgxMatNavigationNavbarComponent, decorators: [{
988
987
  type: Component,
989
988
  args: [{ selector: 'ngx-mat-navigation-navbar', standalone: true, imports: [
990
989
  CommonModule,
991
990
  NavElementComponent
992
- ], template: "<!-- eslint-disable angular/cyclomatic-complexity -->\n<!-- eslint-disable angular/no-call-expression -->\n<nav #navbar id=\"toolbar\" [style.min-height.px]=\"minHeight ?? 0\">\n @for (row of navbarRows; track $index) {\n @if (getNavbarElements(row, 'left').length || getNavbarElements(row, 'center').length || getNavbarElements(row, 'right').length || $index === 0) {\n <div class=\"toolbar-row\">\n <div class=\"toolbar-col\">\n @for (element of getNavbarElements(row, 'left'); track element.id) {\n <ngx-mat-navigation-element [class]=\"getElementClass(element)\" [element]=\"element\" [(sidenavOpened)]=\"sidenavOpened\" (click)=\"clickSidenavElement(element)\"></ngx-mat-navigation-element>\n }\n </div>\n <div class=\"toolbar-col\">\n @for (element of getNavbarElements(row, 'center'); track element.id) {\n <ngx-mat-navigation-element [class]=\"getElementClass(element)\" [element]=\"element\" [(sidenavOpened)]=\"sidenavOpened\" (click)=\"clickSidenavElement(element)\"></ngx-mat-navigation-element>\n }\n </div>\n <div class=\"toolbar-col\">\n @for (element of getNavbarElements(row, 'right'); track element.id) {\n <ngx-mat-navigation-element [class]=\"getElementClass(element)\" [element]=\"element\" [(sidenavOpened)]=\"sidenavOpened\" (click)=\"clickSidenavElement(element)\"></ngx-mat-navigation-element>\n }\n @if ($index === 0) {\n <ngx-mat-navigation-element [class]=\"getBurgerMenuClass()\" [element]=\"burgerMenu\"></ngx-mat-navigation-element>\n }\n </div>\n </div>\n }\n }\n @if (navService.anchorRow.elements.length) {\n <div class=\"anchor-row\">\n <div class=\"anchor-row-content\">\n @for (element of navService.anchorRow.elements; track element.id) {\n <ngx-mat-navigation-element [element]=\"element\" [(sidenavOpened)]=\"sidenavOpened\" (click)=\"clickSidenavElement(element)\"></ngx-mat-navigation-element>\n }\n </div>\n </div>\n }\n</nav>\n\n<div #content class=\"content\" [style.min-height]=\"sanitizedContentMinHeight\">\n <ng-content></ng-content>\n</div>\n\n@if (this.navbar && this.content) {\n <div class=\"sidenav\"\n [class.open]=\"sidenavOpened\"\n [style.min-width]=\"sidenavOpened ? minSidenavWidth : undefined\"\n [style.width.px]=\"sidenavOpened ? undefined : 0\"\n [style.top.px]=\"this.navbar.nativeElement.offsetHeight\"\n [style.height.px]=\"this.content.nativeElement.offsetHeight\"\n >\n @for (element of sidenavElements; track element.id) {\n <div class=\"sidenav-row\">\n <ngx-mat-navigation-element\n [class]=\"getElementClass(element)\"\n [isSidenavElement]=\"true\"\n [element]=\"element\"\n [(sidenavOpened)]=\"sidenavOpened\"\n (click)=\"clickSidenavElement(element)\"\n >\n </ngx-mat-navigation-element>\n </div>\n }\n </div>\n @if (sidenavOpened) {\n <div class=\"sidenav-backdrop\"\n [class.open]=\"sidenavOpened\"\n [style.top.px]=\"this.navbar.nativeElement.offsetHeight\"\n [style.height.px]=\"this.content.nativeElement.offsetHeight\"\n (click)=\"sidenavOpened = false\"\n >\n </div>\n }\n}", styles: ["nav{height:auto;justify-content:center;padding:16px;box-shadow:0 0 5px -1px #0003,0 0 8px 5px #00000024,0 0 14px 8px #0000001f;display:flex;flex-direction:column;gap:10px}.toolbar-row{display:flex;align-items:center;justify-content:space-between;box-sizing:border-box;width:100%;max-width:max(80%,1200px);margin-left:auto;margin-right:auto}.toolbar-col{height:100%;display:flex;gap:20px;align-items:center;flex-wrap:wrap}.anchor-row{border-top:1px solid rgb(200,200,200);padding-left:16px;margin:6px -16px -16px;padding-right:16px}.anchor-row-content{display:flex;align-items:center;flex-wrap:wrap;column-gap:20px;width:100%;max-width:max(80%,1200px);margin-left:auto;margin-right:auto}ngx-mat-navigation-element{display:inline-flex}.content{display:flex;flex-direction:column}.sidenav{position:absolute;right:0;background-color:#fff;border-top:1px solid rgb(200,200,200);border-bottom:1px solid rgb(200,200,200);display:flex;flex-direction:column;gap:10px;overflow:scroll;z-index:20;box-sizing:border-box;transform:translate(100%);transition:transform .3s;opacity:0}.sidenav.open{transform:translate(0);opacity:1;padding:16px}.sidenav-backdrop{position:absolute;right:0;left:0;bottom:0;background-color:#00000073;z-index:10;opacity:0;transition:opacity .3s}.sidenav-backdrop.open{opacity:1}.sidenav-row .collapse-lg,.sidenav-row .collapse-md,.sidenav-row .collapse-sm,.sidenav-row .collapse-never,.burger-lg,.burger-md,.burger-sm,.burger-never{display:none}@media (max-width: 1199px){.toolbar-col .collapse-lg{display:none}.toolbar-col .burger-lg{display:inline-flex}.sidenav-row .collapse-lg{display:block}}@media (max-width: 991px){.toolbar-col .collapse-md{display:none}.toolbar-col .burger-md{display:inline-flex}.sidenav-row .collapse-md{display:block}}@media (max-width: 767px){.toolbar-col .collapse-sm{display:none}.toolbar-col .burger-sm{display:inline-flex}.sidenav-row .collapse-sm{display:block}}\n"] }]
991
+ ], template: "<!-- eslint-disable angular/cyclomatic-complexity -->\n<!-- eslint-disable angular/no-call-expression -->\n<nav #navbar id=\"toolbar\" [style.min-height.px]=\"minHeight ?? 0\">\n @for (row of navbarRows; track $index) {\n @if (getNavbarElements(row, 'left').length || getNavbarElements(row, 'center').length || getNavbarElements(row, 'right').length || $index === 0) {\n <div class=\"toolbar-row\">\n <div class=\"toolbar-col\">\n @for (element of getNavbarElements(row, 'left'); track element.id) {\n <ngx-mat-navigation-element\n [ngClass]=\"{\n 'collapse-sm': element.collapse === 'sm' || element.collapse === undefined,\n 'collapse-md': element.collapse === 'md',\n 'collapse-lg': element.collapse === 'lg',\n 'collapse-always': element.collapse === 'always',\n 'collapse-never': element.collapse === 'never',\n }\"\n [element]=\"element\" \n [(sidenavOpened)]=\"sidenavOpened\" \n (click)=\"clickSidenavElement(element)\"\n >\n </ngx-mat-navigation-element>\n }\n </div>\n <div class=\"toolbar-col\">\n @for (element of getNavbarElements(row, 'center'); track element.id) {\n <ngx-mat-navigation-element \n [ngClass]=\"{\n 'collapse-sm': element.collapse === 'sm' || element.collapse === undefined,\n 'collapse-md': element.collapse === 'md',\n 'collapse-lg': element.collapse === 'lg',\n 'collapse-always': element.collapse === 'always',\n 'collapse-never': element.collapse === 'never',\n }\"\n [element]=\"element\" \n [(sidenavOpened)]=\"sidenavOpened\"\n (click)=\"clickSidenavElement(element)\"\n >\n </ngx-mat-navigation-element>\n }\n </div>\n <div class=\"toolbar-col\">\n @for (element of getNavbarElements(row, 'right'); track element.id) {\n <ngx-mat-navigation-element\n [ngClass]=\"{\n 'collapse-sm': element.collapse === 'sm' || element.collapse === undefined,\n 'collapse-md': element.collapse === 'md',\n 'collapse-lg': element.collapse === 'lg',\n 'collapse-always': element.collapse === 'always',\n 'collapse-never': element.collapse === 'never',\n }\"\n [element]=\"element\" \n [(sidenavOpened)]=\"sidenavOpened\" \n (click)=\"clickSidenavElement(element)\"\n >\n </ngx-mat-navigation-element>\n }\n @if ($index === 0) {\n <ngx-mat-navigation-element [class]=\"getBurgerMenuClass()\" [element]=\"burgerMenu\"></ngx-mat-navigation-element>\n }\n </div>\n </div>\n }\n }\n @if (navService.anchorRow.elements.length) {\n <div class=\"anchor-row\">\n <div class=\"anchor-row-content\">\n @for (element of navService.anchorRow.elements; track element.id) {\n <ngx-mat-navigation-element [element]=\"element\" [(sidenavOpened)]=\"sidenavOpened\" (click)=\"clickSidenavElement(element)\"></ngx-mat-navigation-element>\n }\n </div>\n </div>\n }\n</nav>\n\n<div #content class=\"content\" [style.min-height]=\"sanitizedContentMinHeight\">\n <ng-content></ng-content>\n</div>\n\n@if (this.navbar && this.content) {\n <div class=\"sidenav\"\n [class.open]=\"sidenavOpened\"\n [style.min-width]=\"sidenavOpened ? minSidenavWidth : undefined\"\n [style.width.px]=\"sidenavOpened ? undefined : 0\"\n [style.top.px]=\"this.navbar.nativeElement.offsetHeight\"\n [style.height.px]=\"this.content.nativeElement.offsetHeight\"\n >\n @for (element of sidenavElements; track element.id) {\n <div class=\"sidenav-row\">\n <ngx-mat-navigation-element\n [ngClass]=\"{\n 'collapse-sm': element.collapse === 'sm' || element.collapse === undefined,\n 'collapse-md': element.collapse === 'md',\n 'collapse-lg': element.collapse === 'lg',\n 'collapse-always': element.collapse === 'always',\n 'collapse-never': element.collapse === 'never',\n }\"\n [isSidenavElement]=\"true\"\n [element]=\"element\"\n [(sidenavOpened)]=\"sidenavOpened\"\n (click)=\"clickSidenavElement(element)\"\n >\n </ngx-mat-navigation-element>\n </div>\n }\n </div>\n @if (sidenavOpened) {\n <div class=\"sidenav-backdrop\"\n [class.open]=\"sidenavOpened\"\n [style.top.px]=\"this.navbar.nativeElement.offsetHeight\"\n [style.height.px]=\"this.content.nativeElement.offsetHeight\"\n (click)=\"sidenavOpened = false\"\n >\n </div>\n }\n}", styles: ["nav{height:auto;justify-content:center;padding:16px;box-shadow:0 0 5px -1px #0003,0 0 8px 5px #00000024,0 0 14px 8px #0000001f;display:flex;flex-direction:column;gap:10px}.toolbar-row{display:flex;align-items:center;justify-content:space-between;box-sizing:border-box;width:100%;max-width:max(80%,1200px);margin-left:auto;margin-right:auto}.toolbar-col{height:100%;display:flex;gap:20px;align-items:center;flex-wrap:wrap}.anchor-row{border-top:1px solid rgb(200,200,200);padding-left:16px;margin:6px -16px -16px;padding-right:16px}.anchor-row-content{display:flex;align-items:center;flex-wrap:wrap;column-gap:20px;width:100%;max-width:max(80%,1200px);margin-left:auto;margin-right:auto}ngx-mat-navigation-element{display:inline-flex}.content{display:flex;flex-direction:column}.sidenav{position:absolute;right:0;background-color:#fff;border-top:1px solid rgb(200,200,200);border-bottom:1px solid rgb(200,200,200);display:flex;flex-direction:column;gap:10px;overflow:scroll;z-index:20;box-sizing:border-box;transform:translate(100%);transition:transform .3s;opacity:0}.sidenav.open{transform:translate(0);opacity:1;padding:16px}.sidenav-backdrop{position:absolute;right:0;left:0;bottom:0;background-color:#00000073;z-index:10;opacity:0;transition:opacity .3s}.sidenav-backdrop.open{opacity:1}.sidenav-row .collapse-lg,.sidenav-row .collapse-md,.sidenav-row .collapse-sm,.sidenav-row .collapse-never,.burger-lg,.burger-md,.burger-sm,.burger-never{display:none}@media (max-width: 1199px){.toolbar-col .collapse-lg{display:none}.toolbar-col .burger-lg{display:inline-flex}.sidenav-row .collapse-lg{display:block}}@media (max-width: 991px){.toolbar-col .collapse-md{display:none}.toolbar-col .burger-md{display:inline-flex}.sidenav-row .collapse-md{display:block}}@media (max-width: 767px){.toolbar-col .collapse-sm{display:none}.toolbar-col .burger-sm{display:inline-flex}.sidenav-row .collapse-sm{display:block}}\n"] }]
993
992
  }], ctorParameters: () => [{ type: i1$2.DomSanitizer }, { type: NgxMatNavigationService }, { type: undefined, decorators: [{
994
993
  type: Inject,
995
994
  args: [NGX_BURGER_MENU_ICON]
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-material-navigation.mjs","sources":["../../../projects/ngx-material-navigation/src/components/nav-element/base-nav-element.component.ts","../../../projects/ngx-material-navigation/src/components/nav-element/button/nav-button/nav-button.component.ts","../../../projects/ngx-material-navigation/src/components/nav-element/button/nav-button/nav-button.component.html","../../../projects/ngx-material-navigation/src/components/nav-element/button/nav-button-flat/nav-button-flat.component.ts","../../../projects/ngx-material-navigation/src/components/nav-element/button/nav-button-flat/nav-button-flat.component.html","../../../projects/ngx-material-navigation/src/components/nav-element/custom/nav-custom/nav-custom.component.ts","../../../projects/ngx-material-navigation/src/components/nav-element/custom/nav-custom/nav-custom.component.html","../../../projects/ngx-material-navigation/src/components/nav-element/image/nav-image/nav-image.component.ts","../../../projects/ngx-material-navigation/src/components/nav-element/image/nav-image/nav-image.component.html","../../../projects/ngx-material-navigation/src/components/nav-element/image/nav-image-with-external-link/nav-image-with-external-link.component.ts","../../../projects/ngx-material-navigation/src/components/nav-element/image/nav-image-with-external-link/nav-image-with-external-link.component.html","../../../projects/ngx-material-navigation/src/components/nav-element/image/nav-image-with-internal-link/nav-image-with-internal-link.component.ts","../../../projects/ngx-material-navigation/src/components/nav-element/image/nav-image-with-internal-link/nav-image-with-internal-link.component.html","../../../projects/ngx-material-navigation/src/components/nav-element/link/nav-external-link/nav-external-link.component.ts","../../../projects/ngx-material-navigation/src/components/nav-element/link/nav-external-link/nav-external-link.component.html","../../../projects/ngx-material-navigation/src/components/nav-element/link/nav-internal-link/nav-internal-link.component.ts","../../../projects/ngx-material-navigation/src/components/nav-element/link/nav-internal-link/nav-internal-link.component.html","../../../projects/ngx-material-navigation/src/components/nav-element/text/nav-text/nav-text.component.ts","../../../projects/ngx-material-navigation/src/components/nav-element/text/nav-text/nav-text.component.html","../../../projects/ngx-material-navigation/src/components/nav-element/title/nav-title/nav-title.component.ts","../../../projects/ngx-material-navigation/src/components/nav-element/title/nav-title/nav-title.component.html","../../../projects/ngx-material-navigation/src/components/nav-element/title/nav-title-with-external-link/nav-title-with-external-link.component.ts","../../../projects/ngx-material-navigation/src/components/nav-element/title/nav-title-with-external-link/nav-title-with-external-link.component.html","../../../projects/ngx-material-navigation/src/components/nav-element/title/nav-title-with-internal-link/nav-title-with-internal-link.component.ts","../../../projects/ngx-material-navigation/src/components/nav-element/title/nav-title-with-internal-link/nav-title-with-internal-link.component.html","../../../projects/ngx-material-navigation/src/directives/disable-hover.directive.ts","../../../projects/ngx-material-navigation/src/models/nav-element.model.ts","../../../projects/ngx-material-navigation/src/utilities/nav.utilities.ts","../../../projects/ngx-material-navigation/src/components/nav-element/nav-element.component.ts","../../../projects/ngx-material-navigation/src/components/nav-element/nav-element.component.html","../../../projects/ngx-material-navigation/src/components/footer/footer.component.ts","../../../projects/ngx-material-navigation/src/components/footer/footer.component.html","../../../projects/ngx-material-navigation/src/services/nav.service.ts","../../../projects/ngx-material-navigation/src/components/navbar/navbar.component.ts","../../../projects/ngx-material-navigation/src/components/navbar/navbar.component.html","../../../projects/ngx-material-navigation/src/components/not-found/not-found.component.ts","../../../projects/ngx-material-navigation/src/components/not-found/not-found.component.html","../../../projects/ngx-material-navigation/src/components/breadcrumbs/breadcrumbs.component.ts","../../../projects/ngx-material-navigation/src/components/breadcrumbs/breadcrumbs.component.html","../../../projects/ngx-material-navigation/src/models/nav-link.model.ts","../../../projects/ngx-material-navigation/src/public-api.ts","../../../projects/ngx-material-navigation/src/ngx-material-navigation.ts"],"sourcesContent":["/* eslint-disable stylistic/indent */\nimport { Component, Input } from '@angular/core';\n\nimport { NavButton } from '../../models/nav-button.model';\nimport { NavCustom } from '../../models/nav-custom.model';\nimport { NavElement, NavElementTypes } from '../../models/nav-element.model';\nimport { NavImage, NavImageWithExternalLink, NavImageWithInternalLink } from '../../models/nav-image.model';\nimport { NavExternalLink, NavInternalLink } from '../../models/nav-link.model';\nimport { NavMenu } from '../../models/nav-menu.model';\nimport { NavText } from '../../models/nav-text.model';\nimport { NavTitle, NavTitleWithExternalLink, NavTitleWithInternalLink } from '../../models/nav-title.model';\n\n/**\n * The abstract base class of any ngx-mat-navigation nav element.\n *\n * It already provides the elementValue: Just the typed version of the element.\n */\n@Component({\n selector: 'ngx-mat-navigation-base-nav-element',\n template: ''\n})\nexport abstract class NgxMatNavigationBaseNavElementComponent<Type extends NavElementTypes> {\n /**\n * The input nav element to display.\n */\n @Input({ required: true })\n element!: NavElement;\n\n /**\n * Whether or not the element is inside a sidenav.\n */\n @Input({ required: true })\n isSidenavElement!: boolean;\n\n /**\n * Whether or not the element is inside a menu.\n */\n @Input({ required: true })\n isMenuItem!: boolean;\n\n // eslint-disable-next-line jsdoc/require-returns\n /**\n * The nav element correctly typed.\n */\n get elementValue(): NavElementType<Type> {\n return this.element as NavElementType<Type>;\n }\n}\n\n/**\n * Gives the metadata-config Type based on the DecoratorTypes enum.\n */\nexport type NavElementType<T>\n = T extends NavElementTypes.TITLE ? NavTitle\n : T extends NavElementTypes.TITLE_WITH_INTERNAL_LINK ? NavTitleWithInternalLink\n : T extends NavElementTypes.TITLE_WITH_EXTERNAL_LINK ? NavTitleWithExternalLink\n : T extends NavElementTypes.IMAGE ? NavImage\n : T extends NavElementTypes.IMAGE_WITH_INTERNAL_LINK ? NavImageWithInternalLink\n : T extends NavElementTypes.IMAGE_WITH_EXTERNAL_LINK ? NavImageWithExternalLink\n : T extends NavElementTypes.INTERNAL_LINK ? NavInternalLink\n : T extends NavElementTypes.EXTERNAL_LINK ? NavExternalLink\n : T extends NavElementTypes.BUTTON ? NavButton\n : T extends NavElementTypes.BUTTON_FLAT ? NavButton\n : T extends NavElementTypes.MENU ? NavMenu\n // eslint-disable-next-line typescript/no-explicit-any\n : T extends NavElementTypes.CUSTOM ? NavCustom<any>\n : T extends NavElementTypes.TEXT ? NavText\n : never;","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component, EnvironmentInjector, runInInjectionContext } from '@angular/core';\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\n\nimport { NavElementTypes } from '../../../../models/nav-element.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line angular/component-selector\n selector: 'nav-button',\n templateUrl: './nav-button.component.html',\n styleUrls: ['./nav-button.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n FaIconComponent\n ]\n})\nexport class NavButtonComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.BUTTON> {\n\n constructor(private readonly injector: EnvironmentInjector) {\n super();\n }\n\n /**\n * Runs the action of the element.\n * This wrapper is needed to enable the user to use injections in his action functions.\n */\n runAction(): void {\n runInInjectionContext(this.injector, () => this.elementValue.action());\n }\n}","<div [class.sidenavElement]=\"isSidenavElement\"\n [class.menuItem]=\"isMenuItem\"\n [attr.aria-label]=\"elementValue.ariaLabel\"\n>\n <button type=\"button\" (click)=\"runAction()\">\n @if (elementValue.icon) {\n <fa-icon [icon]=\"elementValue.icon\"></fa-icon>\n }\n {{elementValue.name}}\n </button>\n</div>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\n\nimport { NavButtonComponent } from '../nav-button/nav-button.component';\n\n@Component({\n // eslint-disable-next-line angular/component-selector\n selector: 'nav-button-flat',\n templateUrl: './nav-button-flat.component.html',\n styleUrls: ['./nav-button-flat.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n FaIconComponent\n ]\n})\nexport class NavButtonFlatComponent extends NavButtonComponent {}","<button\n type=\"button\"\n [class.sidenavElement]=\"isSidenavElement\"\n [class.menuItem]=\"isMenuItem\"\n [attr.aria-label]=\"elementValue.ariaLabel\"\n (click)=\"runAction()\"\n>\n @if (elementValue.icon) {\n <fa-icon [icon]=\"elementValue.icon\"></fa-icon>\n }\n {{elementValue.name}}\n</button>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component, ComponentRef, OnInit, Type, ViewContainerRef } from '@angular/core';\n\nimport { NavElementTypes } from '../../../../models/nav-element.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line angular/component-selector\n selector: 'nav-custom',\n templateUrl: './nav-custom.component.html',\n standalone: true,\n imports: [CommonModule]\n})\nexport class NavCustomComponent<\n ComponentType extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.CUSTOM>\n> extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.CUSTOM> implements OnInit {\n\n component!: ComponentRef<ComponentType>;\n\n constructor(private readonly viewContainerRef: ViewContainerRef) {\n super();\n }\n\n ngOnInit(): void {\n this.component = this.viewContainerRef.createComponent<ComponentType>(this.elementValue.component as Type<ComponentType>);\n this.component.instance.element = this.element;\n this.component.instance.isMenuItem = this.isMenuItem;\n this.component.instance.isSidenavElement = this.isSidenavElement;\n }\n}","","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule, NgOptimizedImage } from '@angular/common';\nimport { Component } from '@angular/core';\n\nimport { NavElementTypes } from '../../../../models/nav-element.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line angular/component-selector\n selector: 'nav-image',\n templateUrl: './nav-image.component.html',\n styleUrls: ['../base-nav-image.scss'],\n standalone: true,\n imports: [CommonModule, NgOptimizedImage]\n})\nexport class NavImageComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.IMAGE> { }","<div [class.sidenavElement]=\"isSidenavElement\" [class.menuItem]=\"isMenuItem\">\n <img [alt]=\"elementValue.alt ?? ''\" [height]=\"elementValue.height\" [style.height.px]=\"elementValue.height\" [width]=\"elementValue.width\" [style.width.px]=\"elementValue.width\" [ngSrc]=\"elementValue.url\">\n</div>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule, NgOptimizedImage } from '@angular/common';\nimport { Component } from '@angular/core';\n\nimport { NavElementTypes } from '../../../../models/nav-element.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line angular/component-selector\n selector: 'nav-image-with-external-link',\n templateUrl: './nav-image-with-external-link.component.html',\n styleUrls: ['../base-nav-image.scss'],\n standalone: true,\n imports: [CommonModule, NgOptimizedImage]\n})\nexport class NavImageWithExternalLinkComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.IMAGE_WITH_EXTERNAL_LINK> { }","<a class=\"image-link\"\n [href]=\"elementValue.link.url\"\n [target]=\"elementValue.link.openInNewTab ? '_blank' : '_self'\"\n [rel]=\"elementValue.link.openInNewTab ? 'noreferrer noopener' : undefined\"\n [class.sidenavElement]=\"isSidenavElement\"\n [class.menuItem]=\"isMenuItem\"\n>\n <img [alt]=\"elementValue.alt ?? ''\" [height]=\"elementValue.height\" [style.height.px]=\"elementValue.height\" [width]=\"elementValue.width\" [style.width.px]=\"elementValue.width\" [ngSrc]=\"elementValue.url\">\n</a>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule, NgOptimizedImage } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { NavElementTypes } from '../../../../models/nav-element.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line angular/component-selector\n selector: 'nav-image-with-internal-link',\n templateUrl: './nav-image-with-internal-link.component.html',\n styleUrls: ['../base-nav-image.scss'],\n standalone: true,\n imports: [\n CommonModule,\n RouterModule,\n NgOptimizedImage\n ]\n})\nexport class NavImageWithInternalLinkComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.IMAGE_WITH_INTERNAL_LINK> {\n get route(): string {\n if (typeof this.elementValue.link.route === 'string') {\n return this.elementValue.link.route;\n }\n return this.elementValue.link.route.path;\n }\n}","<a class=\"image-link\"\n [routerLink]=\"route\"\n [target]=\"elementValue.link.openInNewTab ? '_blank' : '_self'\"\n [rel]=\"elementValue.link.openInNewTab ? 'noreferrer noopener' : undefined\"\n [class.sidenavElement]=\"isSidenavElement\"\n [class.menuItem]=\"isMenuItem\"\n [routerLinkActive]=\"'active'\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n>\n <img [alt]=\"elementValue.alt ?? ''\" [height]=\"elementValue.height\" [width]=\"elementValue.width\" [style.width.px]=\"elementValue.width\" [style.height.px]=\"elementValue.height\" [ngSrc]=\"elementValue.url\">\n</a>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\n\nimport { NavElementTypes } from '../../../../models/nav-element.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line angular/component-selector\n selector: 'nav-external-link',\n templateUrl: './nav-external-link.component.html',\n styleUrls: ['./nav-external-link.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n FaIconComponent\n ]\n})\nexport class NavExternalLinkComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.EXTERNAL_LINK> { }","<a\n [href]=\"elementValue.url\"\n [target]=\"elementValue.openInNewTab ? '_blank' : '_self'\"\n [rel]=\"elementValue.openInNewTab ? 'noreferrer noopener' : undefined\"\n [class.sidenavElement]=\"isSidenavElement\"\n [class.menuItem]=\"isMenuItem\"\n [attr.aria-label]=\"elementValue.ariaLabel\"\n>\n @if (elementValue.icon) {\n <fa-icon [icon]=\"elementValue.icon\"></fa-icon>\n }\n {{elementValue.name}}\n</a>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\n\nimport { NavElementTypes } from '../../../../models/nav-element.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line angular/component-selector\n selector: 'nav-internal-link',\n templateUrl: './nav-internal-link.component.html',\n styleUrls: ['./nav-internal-link.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n RouterModule,\n FaIconComponent\n ]\n})\nexport class NavInternalLinkComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.INTERNAL_LINK> {\n @Input({ required: true })\n isBreadcrumb!: boolean;\n\n get route(): string {\n if (typeof this.elementValue.route === 'string') {\n return this.elementValue.route;\n }\n return this.elementValue.route.path;\n }\n}","<a\n [routerLink]=\"route\"\n [fragment]=\"elementValue.fragment\"\n [target]=\"elementValue.openInNewTab ? '_blank' : '_self'\"\n [rel]=\"elementValue.openInNewTab ? 'noreferrer noopener' : undefined\"\n [class.sidenavElement]=\"isSidenavElement\"\n [class.menuItem]=\"isMenuItem\"\n [class.breadcrumb]=\"isBreadcrumb\"\n [attr.aria-label]=\"elementValue.ariaLabel\"\n [routerLinkActive]=\"'active'\"\n [routerLinkActiveOptions]=\"elementValue.fragment ? { matrixParams: 'exact', queryParams: 'exact', paths: 'exact', fragment: 'exact' } : { exact: true }\"\n>\n @if (elementValue.icon) {\n <fa-icon [icon]=\"elementValue.icon\"></fa-icon>\n }\n {{elementValue.name}}\n</a>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\n\nimport { NavElementTypes } from '../../../../models/nav-element.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line angular/component-selector\n selector: 'nav-text',\n templateUrl: './nav-text.component.html',\n standalone: true,\n imports: [CommonModule]\n})\nexport class NavTextComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.TEXT> {}","@for (paragraph of elementValue.paragraphs; track paragraph) {\n <div>{{paragraph}}</div>\n}","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\n\nimport { NavElementTypes } from '../../../../models/nav-element.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line angular/component-selector\n selector: 'nav-title',\n templateUrl: './nav-title.component.html',\n styleUrls: ['../base-nav-title.scss'],\n standalone: true,\n imports: [CommonModule, FaIconComponent]\n})\n// eslint-disable-next-line jsdoc/require-jsdoc\nexport class NavTitleComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.TITLE> { }","<div [class.sidenavElement]=\"isSidenavElement\" [class.menuItem]=\"isMenuItem\" [attr.aria-label]=\"elementValue.ariaLabel\">\n <b>\n @if (elementValue.icon) {\n <fa-icon [icon]=\"elementValue.icon\"></fa-icon>\n }\n {{elementValue.title}}\n </b>\n</div>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\n\nimport { NavElementTypes } from '../../../../models/nav-element.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line angular/component-selector\n selector: 'nav-title-with-external-link',\n templateUrl: './nav-title-with-external-link.component.html',\n styleUrls: ['../base-nav-title.scss'],\n standalone: true,\n imports: [CommonModule, FaIconComponent]\n})\nexport class NavTitleWithExternalLinkComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.TITLE_WITH_EXTERNAL_LINK> { }","<a class=\"title-link\"\n [href]=\"elementValue.link.url\"\n [target]=\"elementValue.link.openInNewTab ? '_blank' : '_self'\"\n [rel]=\"elementValue.link.openInNewTab ? 'noreferrer noopener' : undefined\"\n [class.sidenavElement]=\"isSidenavElement\"\n [class.menuItem]=\"isMenuItem\"\n [attr.aria-label]=\"elementValue.ariaLabel\"\n>\n <b>\n @if (elementValue.icon) {\n <fa-icon [icon]=\"elementValue.icon\"></fa-icon>\n }\n {{elementValue.title}}\n </b>\n</a>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\n\nimport { NavElementTypes } from '../../../../models/nav-element.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line angular/component-selector\n selector: 'nav-title-with-internal-link',\n templateUrl: './nav-title-with-internal-link.component.html',\n styleUrls: ['../base-nav-title.scss'],\n standalone: true,\n imports: [\n CommonModule,\n RouterModule,\n FaIconComponent\n ]\n})\nexport class NavTitleWithInternalLinkComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.TITLE_WITH_INTERNAL_LINK> {\n get route(): string {\n if (typeof this.elementValue.link.route === 'string') {\n return this.elementValue.link.route;\n }\n return this.elementValue.link.route.path;\n }\n}","<a class=\"title-link\"\n [routerLink]=\"route\"\n [target]=\"elementValue.link.openInNewTab ? '_blank' : '_self'\"\n [rel]=\"elementValue.link.openInNewTab ? 'noreferrer noopener' : undefined\"\n [class.sidenavElement]=\"isSidenavElement\"\n [class.menuItem]=\"isMenuItem\"\n [attr.aria-label]=\"elementValue.ariaLabel\"\n [routerLinkActive]=\"'active'\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n>\n <b>\n @if (elementValue.icon) {\n <fa-icon [icon]=\"elementValue.icon\"></fa-icon>\n }\n {{elementValue.title}}\n </b>\n</a>","// stop-hover-capture.directive.ts\nimport { Directive, ElementRef, OnDestroy, OnInit } from '@angular/core';\n\n/**\n * Disables 'mouseenter', 'mouseover', 'pointerenter', 'pointermove' and 'mousemove'.\n */\n@Directive({\n selector: '[disableHover]',\n standalone: true\n})\nexport class DisableHoverDirective implements OnInit, OnDestroy {\n private readonly unsubscribeFunctions: (() => void)[] = [];\n private readonly events: string[] = ['mouseenter', 'mouseover', 'pointerenter', 'pointermove', 'mousemove'];\n\n constructor(private readonly el: ElementRef<HTMLElement>) {}\n\n ngOnInit(): void {\n for (const ev of this.events) {\n const listener: EventListener = (e: Event) => {\n e.stopImmediatePropagation?.();\n e.stopPropagation?.();\n e.preventDefault?.();\n };\n this.el.nativeElement.addEventListener(ev, listener, { capture: true });\n this.unsubscribeFunctions.push(() => this.el.nativeElement.removeEventListener(ev, listener, { capture: true }));\n }\n }\n\n ngOnDestroy(): void {\n for (const fn of this.unsubscribeFunctions) {\n fn();\n }\n }\n}","import { Route } from '@angular/router';\n\nimport { NavButton } from './nav-button.model';\nimport { NavCustom } from './nav-custom.model';\nimport { NavImage, NavImageWithExternalLink, NavImageWithInternalLink } from './nav-image.model';\nimport { NavExternalLink, NavInternalLink } from './nav-link.model';\nimport { NavMenu } from './nav-menu.model';\nimport { NavRoute } from './nav-route.model';\nimport { NavText } from './nav-text.model';\nimport { NavTitle, NavTitleWithExternalLink, NavTitleWithInternalLink } from './nav-title.model';\n\n/**\n * The three currently supported breakpoints.\n * These are the same as in bootstrap.\n */\nexport type ScreenWidthName = 'lg' | 'md' | 'sm';\n\n/**\n * Type for the position of a nav element inside the navbar or footer.\n */\nexport type NavElementPosition = 'left' | 'center' | 'right';\n\n/**\n * The type of the nav element. Eg. Title or button.\n */\nexport enum NavElementTypes {\n TITLE = 'title',\n TITLE_WITH_INTERNAL_LINK = 'titleWithInternalLink',\n TITLE_WITH_EXTERNAL_LINK = 'titleWithExternalLink',\n IMAGE = 'image',\n IMAGE_WITH_INTERNAL_LINK = 'imageWithInternalLink',\n IMAGE_WITH_EXTERNAL_LINK = 'imageWithExternalLink',\n INTERNAL_LINK = 'internalLink',\n BUTTON = 'button',\n BUTTON_FLAT = 'buttonFlat',\n EXTERNAL_LINK = 'externalLink',\n MENU = 'menu',\n CUSTOM = 'custom',\n TEXT = 'text'\n}\n\n/**\n * The abstract base class of any nav element.\n */\nexport abstract class BaseNavElement {\n /**\n * The id of the element.\n */\n id!: string;\n /**\n * The type of the element.\n */\n type!: NavElementTypes;\n /**\n * The position of the element.\n */\n position?: 'left' | 'center' | 'right';\n /**\n * At which breakpoint the element should be moved inside the sidenav.\n */\n collapse?: ScreenWidthName | 'never' | 'always';\n /**\n * A condition that must be met for the element to be displayed.\n */\n condition?: () => boolean;\n /**\n * The aria label of the element.\n */\n ariaLabel?: string;\n}\n\n/**\n * One of the many NavElements.\n */\nexport type NavElement<RouteType extends Route = NavRoute> = NavTitle\n | NavTitleWithInternalLink<RouteType> | NavTitleWithExternalLink\n | NavImage | NavImageWithExternalLink | NavImageWithInternalLink<RouteType>\n // eslint-disable-next-line typescript/no-explicit-any\n | NavButton | NavInternalLink<RouteType> | NavExternalLink | NavMenu | NavCustom<any> | NavText;","import { Route } from '@angular/router';\n\nimport { FooterRow, NavFooterElement } from '../models/footer.model';\nimport { NavElement, NavElementTypes } from '../models/nav-element.model';\nimport { NavImageWithInternalLink } from '../models/nav-image.model';\nimport { NavInternalLink } from '../models/nav-link.model';\nimport { NavMenu, NavMenuElement } from '../models/nav-menu.model';\nimport { NavRoute } from '../models/nav-route.model';\nimport { NavTitleWithInternalLink } from '../models/nav-title.model';\nimport { NavbarRow } from '../models/navbar.model';\n\n/**\n * Contains HelperMethods around handling Navigation.\n */\nexport abstract class NavUtilities {\n // eslint-disable-next-line jsdoc/require-jsdoc\n static asMenu(element: NavElement | NavMenuElement | NavFooterElement): NavMenu {\n return element as NavMenu;\n }\n\n // eslint-disable-next-line jsdoc/require-jsdoc\n static isMenu(element: NavElement | NavFooterElement): element is NavMenu {\n return Object.keys(element).includes('elements');\n }\n\n private static isAngularRoute(route: Route | string): route is Route {\n return typeof route !== 'string';\n }\n\n /**\n * Gets the angular routes.\n * Extracts them from the navbar and footer rows and adds any additional routes provided in additionalRoutes.\n * @param navbarRows - The NavbarRows used as a configuration for the navbar element.\n * @param footerRows - The FooterRows used as a configuration for the footer element.\n * @param additionalRoutes - Any additional routes that aren't included in the navbar or footer rows.\n * @returns All found angular routes.\n */\n static getAngularRoutes<RouteType extends Route = NavRoute>(\n navbarRows: NavbarRow[] = [],\n footerRows: FooterRow[] = [],\n additionalRoutes: RouteType[] = []\n ): RouteType[] {\n let allRoutes: RouteType[] = [];\n allRoutes = allRoutes.concat(NavUtilities.getRoutesFromNavbar<RouteType>(navbarRows));\n allRoutes = allRoutes.concat(NavUtilities.getRoutesFromFooter<RouteType>(footerRows));\n allRoutes = allRoutes.concat(additionalRoutes);\n // Filters to only contain unique paths\n const uniquePaths: string[] = [];\n const res: RouteType[] = [];\n for (const route of allRoutes) {\n // eslint-disable-next-line sonar/no-empty-collection\n if (!uniquePaths.find(r => r === route.path)) {\n res.push(route);\n }\n }\n return res;\n }\n\n private static getRoutesFromNavbar<RouteType extends Route>(navbarRows: NavbarRow[]): RouteType[] {\n let res: RouteType[] = [];\n for (const row of navbarRows) {\n res = res.concat(NavUtilities.getRoutesFromElements<RouteType>(row.elements));\n }\n return res;\n }\n\n private static getRoutesFromFooter<RouteType extends Route>(footerRows: FooterRow[]): RouteType[] {\n let res: RouteType[] = [];\n for (const row of footerRows) {\n res = res.concat(NavUtilities.getRoutesFromElements<RouteType>(row.elements));\n }\n return res;\n }\n\n private static getRoutesFromElements<RouteType extends Route>(elements: NavElement[] | NavFooterElement[]): RouteType[] {\n let res: RouteType[] = [];\n\n const linksRoutes: (string | NavRoute)[] = NavUtilities.findInternalLinksFromElements(elements).map(l => l.route);\n res = res.concat(linksRoutes.filter(r => NavUtilities.isAngularRoute(r)) as RouteType[]);\n\n const titleLinksRoutes: (string | NavRoute)[] = NavUtilities.findTitleLinksFromElements(elements).map(l => l.link.route);\n res = res.concat(titleLinksRoutes.filter(r => NavUtilities.isAngularRoute(r)) as RouteType[]);\n\n const imageLinksRoutes: (string | NavRoute)[] = NavUtilities.findImageLinksFromElements(elements).map(l => l.link.route);\n res = res.concat(imageLinksRoutes.filter(r => NavUtilities.isAngularRoute(r)) as RouteType[]);\n\n const menus: NavMenu[] = elements.filter(e => e.type === NavElementTypes.MENU) as NavMenu[];\n for (const menu of menus) {\n res = res.concat(NavUtilities.getRoutesFromElements<RouteType>(menu.elements));\n }\n return res;\n }\n\n private static findImageLinksFromElements(elements: NavElement[] | NavMenuElement[]): NavImageWithInternalLink[] {\n return elements.filter(e => e.type === NavElementTypes.IMAGE_WITH_INTERNAL_LINK) as NavImageWithInternalLink[];\n }\n\n private static findTitleLinksFromElements(elements: NavElement[] | NavMenuElement[]): NavTitleWithInternalLink[] {\n return elements.filter(e => e.type === NavElementTypes.TITLE_WITH_INTERNAL_LINK) as NavTitleWithInternalLink[];\n }\n\n private static findInternalLinksFromElements(elements: NavElement[]): NavInternalLink[] {\n return elements.filter(e => e.type === NavElementTypes.INTERNAL_LINK);\n }\n}","\nimport { CdkMenuModule, CdkMenuTrigger } from '@angular/cdk/menu';\nimport { CommonModule } from '@angular/common';\nimport { AfterContentChecked, Component, ElementRef, HostListener, Input, model, ModelSignal, OnInit, ViewChild } from '@angular/core';\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\nimport { faChevronDown } from '@fortawesome/free-solid-svg-icons';\n\nimport { NavButtonComponent } from './button/nav-button/nav-button.component';\nimport { NavButtonFlatComponent } from './button/nav-button-flat/nav-button-flat.component';\nimport { NavCustomComponent } from './custom/nav-custom/nav-custom.component';\nimport { NavImageComponent } from './image/nav-image/nav-image.component';\nimport { NavImageWithExternalLinkComponent } from './image/nav-image-with-external-link/nav-image-with-external-link.component';\nimport { NavImageWithInternalLinkComponent } from './image/nav-image-with-internal-link/nav-image-with-internal-link.component';\nimport { NavExternalLinkComponent } from './link/nav-external-link/nav-external-link.component';\nimport { NavInternalLinkComponent } from './link/nav-internal-link/nav-internal-link.component';\nimport { NavTextComponent } from './text/nav-text/nav-text.component';\nimport { NavTitleComponent } from './title/nav-title/nav-title.component';\nimport { NavTitleWithExternalLinkComponent } from './title/nav-title-with-external-link/nav-title-with-external-link.component';\nimport { NavTitleWithInternalLinkComponent } from './title/nav-title-with-internal-link/nav-title-with-internal-link.component';\nimport { DisableHoverDirective } from '../../directives/disable-hover.directive';\nimport { NavElement, NavElementTypes } from '../../models/nav-element.model';\nimport { NavMenu } from '../../models/nav-menu.model';\nimport { NavUtilities } from '../../utilities/nav.utilities';\n\n/**\n * Displays a single Navigation Element.\n */\n@Component({\n selector: 'ngx-mat-navigation-element',\n templateUrl: './nav-element.component.html',\n styleUrls: ['./nav-element.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n CdkMenuModule,\n NavTitleComponent,\n NavTitleWithInternalLinkComponent,\n NavTitleWithExternalLinkComponent,\n NavImageComponent,\n NavImageWithInternalLinkComponent,\n NavImageWithExternalLinkComponent,\n NavButtonComponent,\n NavButtonFlatComponent,\n NavInternalLinkComponent,\n NavExternalLinkComponent,\n NavCustomComponent,\n NavTextComponent,\n FaIconComponent,\n DisableHoverDirective\n ]\n})\nexport class NavElementComponent implements AfterContentChecked, OnInit {\n\n // eslint-disable-next-line jsdoc/require-jsdoc\n NavElementTypes: typeof NavElementTypes = NavElementTypes;\n\n /**\n * The element to display.\n */\n @Input({ required: true })\n element!: NavElement;\n\n /**\n * A list of all the buttons that .\n */\n @Input()\n parentMenusButtons: CdkMenuTrigger[] = [];\n // eslint-disable-next-line jsdoc/require-jsdoc\n protected get internalParentMenusButtons(): CdkMenuTrigger[] {\n return this.menuButton ? [...this.parentMenusButtons, this.menuButton] : this.parentMenusButtons;\n }\n\n // eslint-disable-next-line jsdoc/require-jsdoc\n elementMenu!: NavMenu & Required<Pick<NavMenu, 'iconState'>>;\n\n /**\n * A reference to the sidenav. Is needed for the menu to close the sidenav.\n */\n sidenavOpened: ModelSignal<boolean | undefined> = model<boolean>();\n\n /**\n * Whether or not this element should be displayed inside the sidenav.\n * Used to apply different styling.\n */\n @Input()\n isSidenavElement?: boolean;\n // eslint-disable-next-line jsdoc/require-jsdoc\n protected internalIsSidenavElement!: boolean;\n\n /**\n * Whether or not this element should be displayed inside a menu.\n * Used to apply different styling.\n */\n @Input()\n isMenuItem?: boolean;\n // eslint-disable-next-line jsdoc/require-jsdoc\n protected internalIsMenuItem!: boolean;\n\n // eslint-disable-next-line jsdoc/require-jsdoc\n @ViewChild('menuButton', { read: CdkMenuTrigger, static: false })\n menuButton?: CdkMenuTrigger;\n // eslint-disable-next-line jsdoc/require-jsdoc\n @ViewChild('menuButtonElement', { read: ElementRef, static: false })\n menuButtonElement?: ElementRef<HTMLButtonElement>;\n\n // eslint-disable-next-line jsdoc/require-jsdoc\n menuWidth!: number;\n\n ngOnInit(): void {\n this.internalIsSidenavElement = this.isSidenavElement ?? false;\n this.internalIsMenuItem = this.isMenuItem ?? false;\n this.elementMenu = {\n ...NavUtilities.asMenu(this.element),\n iconState: NavUtilities.asMenu(this.element).iconState ?? faChevronDown\n };\n }\n\n ngAfterContentChecked(): void {\n this.onResize();\n }\n\n /**\n * Updates the width of the menu to the value of its button.\n */\n @HostListener('window:resize')\n onResize(): void {\n if (this.menuButtonElement) {\n this.menuWidth = this.menuButtonElement.nativeElement.offsetWidth;\n }\n }\n\n /**\n * Defines if the sidenav should be closed when the given element is clicked.\n * @param element - The element that has been clicked.\n */\n clickSidenavElement(element: NavElement): void {\n switch (element.type) {\n case NavElementTypes.TITLE:\n case NavElementTypes.IMAGE:\n case NavElementTypes.MENU:\n case NavElementTypes.TEXT: {\n return;\n }\n case NavElementTypes.TITLE_WITH_INTERNAL_LINK:\n case NavElementTypes.TITLE_WITH_EXTERNAL_LINK:\n case NavElementTypes.IMAGE_WITH_INTERNAL_LINK:\n case NavElementTypes.IMAGE_WITH_EXTERNAL_LINK:\n case NavElementTypes.INTERNAL_LINK:\n case NavElementTypes.BUTTON:\n case NavElementTypes.BUTTON_FLAT:\n case NavElementTypes.EXTERNAL_LINK: {\n this.sidenavOpened?.set(false);\n return;\n }\n case NavElementTypes.CUSTOM: {\n const closeSidenavOnClick: boolean = element.closeSidenavOnClick ?? false;\n if (!closeSidenavOnClick) {\n return;\n }\n this.sidenavOpened?.set(false);\n }\n }\n }\n\n /**\n * Defines if the menu should be closed when the given item is clicked.\n * @param item - The item that has been clicked.\n */\n clickMenuItem(item: NavElement): void {\n switch (item.type) {\n case NavElementTypes.TITLE:\n case NavElementTypes.IMAGE:\n case NavElementTypes.MENU:\n case NavElementTypes.TEXT: {\n return;\n }\n case NavElementTypes.TITLE_WITH_INTERNAL_LINK:\n case NavElementTypes.TITLE_WITH_EXTERNAL_LINK:\n case NavElementTypes.IMAGE_WITH_INTERNAL_LINK:\n case NavElementTypes.IMAGE_WITH_EXTERNAL_LINK:\n case NavElementTypes.INTERNAL_LINK:\n case NavElementTypes.BUTTON:\n case NavElementTypes.BUTTON_FLAT:\n case NavElementTypes.EXTERNAL_LINK: {\n this.menuButton?.close();\n for (const button of this.parentMenusButtons.reverse()) {\n button.close();\n }\n return;\n }\n case NavElementTypes.CUSTOM: {\n const closeMenuOnClick: boolean = item.closeMenuOnClick ?? false;\n if (!closeMenuOnClick) {\n return;\n }\n this.menuButton?.close();\n for (const button of this.parentMenusButtons.reverse()) {\n button.close();\n }\n }\n }\n }\n}","<!-- eslint-disable angular/cyclomatic-complexity -->\n@switch (element.type) {\n <!-------------------------------------------->\n <!------------------Titles-------------------->\n <!-------------------------------------------->\n @case (NavElementTypes.TITLE) {\n <nav-title [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-title>\n }\n @case (NavElementTypes.TITLE_WITH_INTERNAL_LINK) {\n <nav-title-with-internal-link [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-title-with-internal-link>\n }\n @case (NavElementTypes.TITLE_WITH_EXTERNAL_LINK) {\n <nav-title-with-external-link [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-title-with-external-link>\n }\n <!-------------------------------------------->\n <!-------------------Images------------------->\n <!-------------------------------------------->\n @case (NavElementTypes.IMAGE) {\n <nav-image [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-image>\n }\n @case (NavElementTypes.IMAGE_WITH_INTERNAL_LINK) {\n <nav-image-with-internal-link [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-image-with-internal-link>\n }\n @case (NavElementTypes.IMAGE_WITH_EXTERNAL_LINK) {\n <nav-image-with-external-link [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-image-with-external-link>\n }\n <!-------------------------------------------->\n <!-------------------Buttons------------------>\n <!-------------------------------------------->\n @case (NavElementTypes.BUTTON) {\n <nav-button [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-button>\n }\n @case (NavElementTypes.BUTTON_FLAT) {\n <nav-button-flat [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-button-flat>\n }\n <!-------------------------------------------->\n <!--------------------Link-------------------->\n <!-------------------------------------------->\n @case (NavElementTypes.INTERNAL_LINK) {\n <nav-internal-link [element]=\"element\" [isBreadcrumb]=\"false\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-internal-link>\n }\n @case (NavElementTypes.EXTERNAL_LINK) {\n <nav-external-link [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-external-link>\n }\n <!-------------------------------------------->\n <!-------------------CUSTOM------------------->\n <!-------------------------------------------->\n @case (NavElementTypes.CUSTOM) {\n <div [class.menuItem]=\"internalIsMenuItem\" (click)=\"clickSidenavElement(element); clickMenuItem(element);\">\n <nav-custom\n [element]=\"element\" \n [isSidenavElement]=\"internalIsSidenavElement\"\n [isMenuItem]=\"internalIsMenuItem\"\n >\n </nav-custom>\n </div>\n }\n <!-------------------------------------------->\n <!--------------------TEXT-------------------->\n <!-------------------------------------------->\n @case (NavElementTypes.TEXT) {\n <nav-text [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-text>\n }\n <!-------------------------------------------->\n <!--------------------Menu-------------------->\n <!-------------------------------------------->\n @case (NavElementTypes.MENU) {\n <button\n #menuButton=\"cdkMenuTriggerFor\"\n #menuButtonElement\n type=\"button\"\n disableHover\n [cdkMenuTriggerFor]=\"menu\"\n [class.sidenavElement]=\"internalIsSidenavElement\"\n [class.menuItem]=\"internalIsMenuItem\"\n [attr.aria-label]=\"element.ariaLabel\"\n >\n {{elementMenu.name}}\n @if (elementMenu.iconState !== 'empty') {\n <!-- eslint-disable-next-line angular/no-call-expression -->\n <fa-icon [icon]=\"elementMenu.iconState\" [class.open]=\"menuButton.isOpen()\"></fa-icon>\n }\n </button>\n\n <ng-template #menu>\n <div class=\"menu\" cdkMenu [class.subMenu]=\"internalIsMenuItem\" [style.min-width.px]=\"menuWidth\">\n @for (menuElement of elementMenu.elements; track menuElement.id) {\n <ngx-mat-navigation-element\n [isSidenavElement]=\"internalIsSidenavElement\"\n [isMenuItem]=\"true\"\n [element]=\"menuElement\"\n [parentMenusButtons]=\"internalParentMenusButtons\"\n [(sidenavOpened)]=\"sidenavOpened\"\n (click)=\"clickSidenavElement(menuElement); clickMenuItem(menuElement);\"\n >\n </ngx-mat-navigation-element>\n }\n </div>\n </ng-template>\n }\n}","import { CommonModule } from '@angular/common';\nimport { Component, EnvironmentInjector, Input, runInInjectionContext } from '@angular/core';\n\nimport { FooterRow, NavFooterElement } from '../../models/footer.model';\nimport { NavElement, NavElementPosition } from '../../models/nav-element.model';\nimport { NavElementComponent } from '../nav-element/nav-element.component';\n\n/**\n * Displays a footer based on the provided input data.\n */\n@Component({\n selector: 'ngx-mat-navigation-footer',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n NavElementComponent\n ]\n})\nexport class NgxMatNavigationFooterComponent {\n\n /**\n * The minimum height of the footer.\n */\n @Input({ required: true })\n minHeight!: number;\n\n /**\n * The footer rows to build the footer from.\n */\n @Input({ required: true })\n footerRows!: FooterRow[];\n\n constructor(private readonly injector: EnvironmentInjector) {}\n\n /**\n * Gets the footer elements for the given row at the provided position.\n * @param row - The row to get the elements for.\n * @param position - Where in the footer the elements are positioned.\n * @returns An array of the resolved footer elements.\n */\n getFooterElements(row: FooterRow, position: NavElementPosition): NavFooterElement[] {\n let res: NavFooterElement[] = [];\n res = res.concat(row.elements);\n res = res.filter(e => this.checkCondition(e));\n\n if (position === 'left') {\n return res.filter(e => e.position == undefined || e.position === position);\n }\n return res.filter(e => e.position === position);\n }\n\n private checkCondition(element: NavElement): boolean {\n if (element.condition == undefined) {\n return true;\n }\n // runInInjectionContext(...) is needed to enable the user to use injections in his condition functions.\n return runInInjectionContext(this.injector, () => element.condition ? element.condition() : true);\n }\n}","<!-- eslint-disable angular/no-call-expression -->\n<footer [style.min-height.px]=\"minHeight\">\n @for (row of footerRows; track $index) {\n <div class=\"footer-row\">\n <div class=\"footer-col\" id=\"left\">\n @for (element of getFooterElements(row, 'left'); track element.id) {\n <ngx-mat-navigation-element [element]=\"element\"></ngx-mat-navigation-element>\n }\n </div>\n <div class=\"footer-col\" id=\"center\">\n @for (element of getFooterElements(row, 'center'); track element.id) {\n <ngx-mat-navigation-element [element]=\"element\"></ngx-mat-navigation-element>\n }\n </div>\n <div class=\"footer-col\" id=\"right\">\n @for (element of getFooterElements(row, 'right'); track element.id) {\n <ngx-mat-navigation-element [element]=\"element\"></ngx-mat-navigation-element>\n }\n </div>\n </div>\n }\n</footer>","import { EnvironmentInjector, inject, Injectable, runInInjectionContext } from '@angular/core';\nimport { ActivatedRoute, ActivatedRouteSnapshot, NavigationEnd, Route, Router } from '@angular/router';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { Breadcrumb } from '../models/breadcrumb.model';\nimport { NavElementTypes } from '../models/nav-element.model';\nimport { NavInternalLink } from '../models/nav-link.model';\nimport { DefaultNavRouteDataType, NavAnchor } from '../models/nav-route.model';\nimport { NavbarRow } from '../models/navbar.model';\n\n/**\n * The service that contains information and functionality about he navigation data.\n */\n@Injectable({ providedIn: 'root' })\nexport class NgxMatNavigationService {\n\n /**\n * The subject of the anchors of the current page.\n */\n readonly anchorsSubject: BehaviorSubject<NavAnchor[]> = new BehaviorSubject<NavAnchor[]>([]);\n\n /**\n * The subject of the anchors of the current page.\n */\n readonly breadcrumbsSubject: BehaviorSubject<Breadcrumb[]> = new BehaviorSubject<Breadcrumb[]>([]);\n\n private get currentRoute(): string {\n return this.router.url.split('#')[0];\n }\n\n // eslint-disable-next-line jsdoc/require-returns\n /**\n * The anchor row, dynamically generated from the current route.\n */\n get anchorRow(): NavbarRow {\n const elements: NavInternalLink[] = this.anchorsSubject.value.map(a => {\n return {\n id: a.name,\n type: NavElementTypes.INTERNAL_LINK,\n route: this.currentRoute,\n collapse: 'never',\n ...a\n };\n });\n return {\n elements: elements\n };\n }\n\n // eslint-disable-next-line jsdoc/require-returns\n /**\n * The breadcrumbs, dynamically generated from the current route.\n */\n get breadcrumbs(): Breadcrumb[] {\n return this.breadcrumbsSubject.value;\n }\n\n constructor(private readonly router: Router, private readonly injector: EnvironmentInjector) {\n this.router.events.subscribe(e => {\n if (e instanceof NavigationEnd) {\n this.updateAnchors();\n this.updateBreadcrumbs();\n }\n });\n }\n\n private updateAnchors(): void {\n let route: ActivatedRoute | null = this.router.routerState.root.firstChild;\n while (route?.firstChild) {\n route = route.firstChild;\n }\n const data: DefaultNavRouteDataType | undefined = route?.snapshot.data;\n this.anchorsSubject.next(data?.anchors ?? []);\n }\n\n private updateBreadcrumbs(): void {\n const route: ActivatedRoute | null = this.router.routerState.root.firstChild;\n if (!route) {\n this.breadcrumbsSubject.next([]);\n return;\n }\n\n const breadcrumbs: Breadcrumb[] = [];\n for (const snapshot of route.snapshot.pathFromRoot) {\n const data: DefaultNavRouteDataType = snapshot.data;\n if (data.pageNotFoundConfig) {\n this.breadcrumbsSubject.next([]);\n return;\n }\n\n breadcrumbs.push({\n name: this.resolveBreadcrumbName(data, undefined, snapshot),\n route: snapshot.url.map(segment => segment.path).join('/'),\n icon: data.breadcrumbConfig?.icon,\n ariaLabel: data.breadcrumbConfig?.ariaLabel\n });\n\n if (data.breadcrumbConfig?.parentRoute && !breadcrumbs.find(b => b.route === data.breadcrumbConfig?.parentRoute)) {\n const parentRoute: Route | undefined = this.router.config.find(r => r.path === data.breadcrumbConfig?.parentRoute);\n\n if (!parentRoute) {\n throw new Error('parent route could not be resolved');\n }\n\n const parentData: DefaultNavRouteDataType | undefined = parentRoute.data;\n breadcrumbs.splice(breadcrumbs.length - 1, 0, {\n name: this.resolveBreadcrumbName(parentData, parentRoute, undefined),\n route: data.breadcrumbConfig?.parentRoute,\n icon: parentData?.breadcrumbConfig?.icon,\n ariaLabel: parentData?.breadcrumbConfig?.ariaLabel\n });\n }\n }\n\n this.breadcrumbsSubject.next(breadcrumbs);\n }\n\n private resolveBreadcrumbName(\n navData: DefaultNavRouteDataType | undefined,\n route: Route | undefined,\n snapshot: ActivatedRouteSnapshot | undefined\n ): string {\n const res: string | undefined = runInInjectionContext(this.injector, () => {\n if (navData?.breadcrumbConfig?.name == undefined) {\n return undefined;\n }\n if (typeof navData.breadcrumbConfig.name === 'string') {\n return navData.breadcrumbConfig.name;\n }\n\n const route: ActivatedRoute = inject(ActivatedRoute);\n return navData.breadcrumbConfig.name(snapshot ?? route.snapshot, this.router.routerState.snapshot);\n });\n if (res) {\n return res;\n }\n\n if (snapshot) {\n return snapshot.title ?? 'Start';\n }\n\n if (route) {\n if (route.title == undefined) {\n return 'Start';\n }\n if (typeof route.title === 'string') {\n return route.title;\n }\n }\n\n return 'Start';\n }\n}","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { CommonModule } from '@angular/common';\nimport { AfterContentChecked, Component, ElementRef, EnvironmentInjector, HostListener, Inject, InjectionToken, Input, runInInjectionContext, ViewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\nimport { IconDefinition } from '@fortawesome/angular-fontawesome';\nimport { faBars } from '@fortawesome/free-solid-svg-icons';\n\nimport { BaseNavElement, NavElement, NavElementPosition, NavElementTypes } from '../../models/nav-element.model';\nimport { NavbarRow } from '../../models/navbar.model';\nimport { NgxMatNavigationService } from '../../services/nav.service';\nimport { NavElementComponent } from '../nav-element/nav-element.component';\n\n// eslint-disable-next-line jsdoc/require-jsdoc\nexport const NGX_BURGER_MENU_ARIA_LABEL: InjectionToken<string> = new InjectionToken<string>(\n 'Provider for the burger menu aria label. Default: \"Open Sidenav\"',\n {\n providedIn: 'root',\n factory: () => 'Open Sidenav'\n }\n);\n\n// eslint-disable-next-line jsdoc/require-jsdoc\nexport const NGX_BURGER_MENU_ICON: InjectionToken<IconDefinition> = new InjectionToken<IconDefinition>(\n 'Provider for the burger menu icon. Default: \"faBars\"',\n {\n providedIn: 'root',\n factory: () => faBars\n }\n);\n\n/**\n * The navbar component.\n * Takes in your configuration and builds a toolbar as well as a sidenav accordingly.\n * Also handles responsiveness.\n */\n@Component({\n selector: 'ngx-mat-navigation-navbar',\n templateUrl: './navbar.component.html',\n styleUrls: ['./navbar.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n NavElementComponent\n ]\n})\nexport class NgxMatNavigationNavbarComponent implements AfterContentChecked {\n /**\n * The navbar rows to build the navbar from.\n */\n @Input({ required: true })\n navbarRows!: NavbarRow[];\n\n /**\n * The minimum height of the navbar.\n */\n @Input()\n minHeight?: number;\n\n /**\n * The minimum height of all other elements that are on the same level as the navbar component.\n */\n @Input()\n minHeightOtherElements?: number;\n\n /**\n * The minimum width of the sidenav.\n */\n @Input()\n minSidenavWidth?: string;\n\n // eslint-disable-next-line jsdoc/require-jsdoc\n @ViewChild('navbar', { read: ElementRef, static: true })\n navbar?: ElementRef<HTMLElement>;\n\n // eslint-disable-next-line jsdoc/require-jsdoc\n @ViewChild('content', { read: ElementRef, static: true })\n content?: ElementRef<HTMLElement>;\n\n // eslint-disable-next-line jsdoc/require-jsdoc\n burgerMenu!: NavElement;\n\n /**\n * What screen size to collapse.\n */\n collapse!: 'xl' | 'lg' | 'md' | 'sm';\n\n /**\n * The minimum height of the navbar in sanitized.\n */\n sanitizedContentMinHeight!: SafeStyle;\n\n /**\n * Whether or not the sidenav is currently opened.\n */\n sidenavOpened: boolean = false;\n\n // eslint-disable-next-line jsdoc/require-returns\n /**\n * All sidenav elements which conditions are fulfilled.\n */\n get sidenavElements(): NavElement[] {\n const res: NavElement[] = [];\n // anchorRow is excluded from sidenav\n for (const row of this.navbarRows) {\n res.push(...row.elements.filter(e => this.checkCondition(e) && !this.checkVisible(e)));\n }\n return res;\n }\n\n constructor(\n private readonly sanitizer: DomSanitizer,\n readonly navService: NgxMatNavigationService,\n @Inject(NGX_BURGER_MENU_ICON)\n burgerMenuIcon: IconDefinition,\n @Inject(NGX_BURGER_MENU_ARIA_LABEL)\n burgerMenuAriaLabel: string,\n private readonly injector: EnvironmentInjector,\n private readonly breakpointObserver: BreakpointObserver\n ) {\n this.burgerMenu = {\n id: 'burger-menu',\n type: NavElementTypes.BUTTON_FLAT,\n name: '',\n icon: burgerMenuIcon,\n action: () => this.sidenavOpened = !this.sidenavOpened,\n collapse: 'never',\n ariaLabel: burgerMenuAriaLabel\n };\n\n this.breakpointObserver.observe(['(max-width: 767px)', '(max-width: 991px)', '(max-width: 1199px)'])\n .pipe(takeUntilDestroyed())\n .subscribe(result => {\n if (result.breakpoints['(max-width: 767px)']) {\n this.collapse = 'sm';\n }\n else if (result.breakpoints['(max-width: 991px)']) {\n this.collapse = 'md';\n }\n else if (result.breakpoints['(max-width: 1199px)']) {\n this.collapse = 'lg';\n }\n else {\n this.collapse = 'xl';\n }\n });\n }\n\n /**\n * Gets thee navbar elements for the row with the given index at the given position.\n * @param row - The index of the row to get the elements for.\n * @param position - Where in the row the elements are positioned.\n * @returns An array of the resolved navbar elements.\n */\n getNavbarElements(row: NavbarRow, position: NavElementPosition): NavElement[] {\n return row.elements.filter(e => {\n return (\n (e.position === position)\n || (e.position == undefined && position === 'left')\n )\n && this.checkCondition(e)\n && this.checkVisible(e);\n });\n }\n\n private checkCondition(element: NavElement): boolean {\n if (!element.condition) {\n return true;\n }\n // runInInjectionContext(...) is needed to enable the user to use injections in his condition functions.\n return runInInjectionContext(this.injector, () => element.condition ? element.condition() : true);\n }\n\n private checkVisible(element: NavElement): boolean {\n const collapse: BaseNavElement['collapse'] = element.collapse ?? 'sm';\n switch (collapse) {\n case 'always': {\n return false;\n }\n case 'never': {\n return true;\n }\n case 'lg': {\n return this.collapse === 'xl';\n }\n case 'md': {\n return ['lg', 'xl'].includes(this.collapse);\n }\n case 'sm': {\n return ['md', 'lg', 'xl'].includes(this.collapse);\n }\n }\n }\n\n // eslint-disable-next-line jsdoc/require-jsdoc\n getElementClass(element: NavElement): string {\n return `collapse-${element.collapse ?? 'sm'}`;\n }\n\n // eslint-disable-next-line jsdoc/require-jsdoc\n getBurgerMenuClass(): string {\n if (this.sidenavElements.find(e => e.collapse === 'always')) {\n return 'burger-always';\n }\n if (this.sidenavElements.find(e => e.collapse === 'lg')) {\n return 'burger-lg';\n }\n if (this.sidenavElements.find(e => e.collapse === 'md')) {\n return 'burger-md';\n }\n if (this.sidenavElements.find(e => e.collapse === 'sm' || e.collapse === undefined)) {\n return 'burger-sm';\n }\n return 'burger-never';\n }\n\n ngAfterContentChecked(): void {\n this.updateHeights();\n }\n\n private updateHeights(): void {\n if (this.minHeight && typeof this.minHeight !== 'number') {\n throw new Error('Incorrect input data');\n }\n if (this.minHeightOtherElements && typeof this.minHeightOtherElements !== 'number') {\n throw new Error('Incorrect input data');\n }\n if (!this.navbar) {\n return;\n }\n if (!this.minHeight || (this.navbar.nativeElement.offsetHeight > this.minHeight)) {\n this.sanitizedContentMinHeight = this.sanitizer.bypassSecurityTrustStyle(\n `calc(100vh - 0px - ${this.navbar.nativeElement.offsetHeight + (this.minHeightOtherElements ?? 0)}px)`\n );\n return;\n }\n this.sanitizedContentMinHeight = this.sanitizer.bypassSecurityTrustStyle(\n `calc(100vh - 0px - ${(this.minHeight ?? 0) + (this.minHeightOtherElements ?? 0)}px)`\n );\n }\n\n /**\n * Updates the current screen width and filters the sidenav elements accordingly.\n * @throws When no height data is provided or the data is invalid.\n */\n @HostListener('window:resize')\n onResize(): void {\n this.updateHeights();\n this.sidenavOpened = false;\n }\n\n /**\n * Defines if the sidenav should be closed when the given element is clicked.\n * @param element - The element that has been clicked.\n */\n clickSidenavElement(element: NavElement): void {\n switch (element.type) {\n case NavElementTypes.TITLE:\n case NavElementTypes.IMAGE:\n case NavElementTypes.MENU:\n case NavElementTypes.CUSTOM: {\n return;\n }\n case NavElementTypes.TITLE_WITH_INTERNAL_LINK:\n case NavElementTypes.TITLE_WITH_EXTERNAL_LINK:\n case NavElementTypes.IMAGE_WITH_INTERNAL_LINK:\n case NavElementTypes.IMAGE_WITH_EXTERNAL_LINK:\n case NavElementTypes.INTERNAL_LINK:\n case NavElementTypes.BUTTON:\n case NavElementTypes.BUTTON_FLAT:\n case NavElementTypes.EXTERNAL_LINK:\n case NavElementTypes.TEXT: {\n this.sidenavOpened = false;\n }\n }\n }\n}","<!-- eslint-disable angular/cyclomatic-complexity -->\n<!-- eslint-disable angular/no-call-expression -->\n<nav #navbar id=\"toolbar\" [style.min-height.px]=\"minHeight ?? 0\">\n @for (row of navbarRows; track $index) {\n @if (getNavbarElements(row, 'left').length || getNavbarElements(row, 'center').length || getNavbarElements(row, 'right').length || $index === 0) {\n <div class=\"toolbar-row\">\n <div class=\"toolbar-col\">\n @for (element of getNavbarElements(row, 'left'); track element.id) {\n <ngx-mat-navigation-element [class]=\"getElementClass(element)\" [element]=\"element\" [(sidenavOpened)]=\"sidenavOpened\" (click)=\"clickSidenavElement(element)\"></ngx-mat-navigation-element>\n }\n </div>\n <div class=\"toolbar-col\">\n @for (element of getNavbarElements(row, 'center'); track element.id) {\n <ngx-mat-navigation-element [class]=\"getElementClass(element)\" [element]=\"element\" [(sidenavOpened)]=\"sidenavOpened\" (click)=\"clickSidenavElement(element)\"></ngx-mat-navigation-element>\n }\n </div>\n <div class=\"toolbar-col\">\n @for (element of getNavbarElements(row, 'right'); track element.id) {\n <ngx-mat-navigation-element [class]=\"getElementClass(element)\" [element]=\"element\" [(sidenavOpened)]=\"sidenavOpened\" (click)=\"clickSidenavElement(element)\"></ngx-mat-navigation-element>\n }\n @if ($index === 0) {\n <ngx-mat-navigation-element [class]=\"getBurgerMenuClass()\" [element]=\"burgerMenu\"></ngx-mat-navigation-element>\n }\n </div>\n </div>\n }\n }\n @if (navService.anchorRow.elements.length) {\n <div class=\"anchor-row\">\n <div class=\"anchor-row-content\">\n @for (element of navService.anchorRow.elements; track element.id) {\n <ngx-mat-navigation-element [element]=\"element\" [(sidenavOpened)]=\"sidenavOpened\" (click)=\"clickSidenavElement(element)\"></ngx-mat-navigation-element>\n }\n </div>\n </div>\n }\n</nav>\n\n<div #content class=\"content\" [style.min-height]=\"sanitizedContentMinHeight\">\n <ng-content></ng-content>\n</div>\n\n@if (this.navbar && this.content) {\n <div class=\"sidenav\"\n [class.open]=\"sidenavOpened\"\n [style.min-width]=\"sidenavOpened ? minSidenavWidth : undefined\"\n [style.width.px]=\"sidenavOpened ? undefined : 0\"\n [style.top.px]=\"this.navbar.nativeElement.offsetHeight\"\n [style.height.px]=\"this.content.nativeElement.offsetHeight\"\n >\n @for (element of sidenavElements; track element.id) {\n <div class=\"sidenav-row\">\n <ngx-mat-navigation-element\n [class]=\"getElementClass(element)\"\n [isSidenavElement]=\"true\"\n [element]=\"element\"\n [(sidenavOpened)]=\"sidenavOpened\"\n (click)=\"clickSidenavElement(element)\"\n >\n </ngx-mat-navigation-element>\n </div>\n }\n </div>\n @if (sidenavOpened) {\n <div class=\"sidenav-backdrop\"\n [class.open]=\"sidenavOpened\"\n [style.top.px]=\"this.navbar.nativeElement.offsetHeight\"\n [style.height.px]=\"this.content.nativeElement.offsetHeight\"\n (click)=\"sidenavOpened = false\"\n >\n </div>\n }\n}","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { ActivatedRoute, RouterModule } from '@angular/router';\n\nimport { PageNotFoundConfig } from '../../models/page-not-found-config.model';\n\n/**\n * A default 404 Not found page to display when the user tries to access an unknown resource.\n */\n@Component({\n selector: 'ngx-mat-navigation-not-found',\n templateUrl: './not-found.component.html',\n styleUrls: ['./not-found.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n RouterModule\n ]\n})\nexport class NgxMatNavigationNotFoundComponent implements OnInit {\n /**\n * The custom configuration for the 404 Page.\n * You can alternatively define this on the data of the route with the key 'pageNotFoundData'.\n */\n @Input()\n config?: PageNotFoundConfig;\n\n // eslint-disable-next-line jsdoc/require-jsdoc\n title!: string;\n // eslint-disable-next-line jsdoc/require-jsdoc\n message!: string;\n // eslint-disable-next-line jsdoc/require-jsdoc\n buttonLabel!: string;\n // eslint-disable-next-line jsdoc/require-jsdoc\n homeRoute!: string;\n\n constructor(private readonly route: ActivatedRoute) {}\n\n ngOnInit(): void {\n const routeData: PageNotFoundConfig | undefined = this.route.snapshot.data['pageNotFoundConfig'] as PageNotFoundConfig | undefined;\n this.title = this.config?.title ?? routeData?.title ?? 'Page not found';\n this.message = this.config?.message\n ?? routeData?.message\n ?? 'The page you are looking for might have been removed, had its name changed or is temporarily unavailable.';\n this.buttonLabel = this.config?.buttonLabel ?? routeData?.buttonLabel ?? 'Homepage';\n this.homeRoute = this.config?.homeRoute ?? routeData?.homeRoute ?? '/';\n }\n}","<h1>404</h1>\n<h2>{{title}}</h2>\n<p>\n {{message}}\n</p>\n<a [routerLink]=\"homeRoute\">{{buttonLabel}}</a> ","import { Component } from '@angular/core';\nimport { FaIconComponent, IconDefinition } from '@fortawesome/angular-fontawesome';\nimport { faChevronRight } from '@fortawesome/free-solid-svg-icons';\n\nimport { NavElementTypes } from '../../models/nav-element.model';\nimport { NgxMatNavigationService } from '../../services/nav.service';\nimport { NavInternalLinkComponent } from '../nav-element/link/nav-internal-link/nav-internal-link.component';\n\n/**\n * The breadcrumbs component.\n * Is built dynamically from the data of the current route.\n */\n@Component({\n selector: 'ngx-mat-navigation-breadcrumbs',\n templateUrl: './breadcrumbs.component.html',\n styleUrls: ['./breadcrumbs.component.scss'],\n standalone: true,\n imports: [NavInternalLinkComponent, FaIconComponent]\n})\nexport class NgxMatNavigationBreadcrumbsComponent {\n // eslint-disable-next-line jsdoc/require-jsdoc\n readonly NavElementTypes: typeof NavElementTypes = NavElementTypes;\n\n // eslint-disable-next-line jsdoc/require-jsdoc\n readonly separator: IconDefinition = faChevronRight;\n\n constructor(readonly navService: NgxMatNavigationService) {}\n}","<nav id=\"breadcrumbs\">\n @for (bc of navService.breadcrumbs; track bc.route) {\n <nav-internal-link \n [class.first]=\"$first\"\n [isBreadcrumb]=\"true\"\n [isSidenavElement]=\"false\"\n [isMenuItem]=\"false\"\n [element]=\"{ id: bc.route, type: NavElementTypes.INTERNAL_LINK, route: bc.route, name: bc.name, icon: bc.icon, ariaLabel: bc.ariaLabel }\"\n >\n </nav-internal-link>\n @if (!$last) {\n <fa-icon [icon]=\"separator\"></fa-icon>\n }\n }\n</nav>","import { Route } from '@angular/router';\nimport { IconDefinition } from '@fortawesome/angular-fontawesome';\n\nimport { BaseNavElement, NavElementTypes } from './nav-element.model';\nimport { NavRoute } from './nav-route.model';\n\n/**\n * The base abstract definition for internal and external links.\n */\nexport abstract class NavLink extends BaseNavElement {\n /**\n * The name to display for the link.\n */\n name!: string;\n /**\n * An icon to display left of the link.\n */\n icon?: IconDefinition;\n /**\n * Whether or not the link should be opened in a new tab.\n */\n openInNewTab?: boolean;\n}\n\n/**\n * The definition for an internal route.\n */\nexport interface NavInternalLink<RouteType extends Route = NavRoute> extends NavLink {\n // eslint-disable-next-line jsdoc/require-jsdoc\n type: NavElementTypes.INTERNAL_LINK,\n /**\n * The route of the Link. Can be either an angular route or a simple string.\n */\n route: RouteType | string,\n /**\n * The fragment of the route used for anchor scrolling.\n */\n fragment?: string\n}\n\n/**\n * The definition for an external link.\n */\nexport interface NavExternalLink extends NavLink {\n // eslint-disable-next-line jsdoc/require-jsdoc\n type: NavElementTypes.EXTERNAL_LINK,\n /**\n * The url of the link.\n */\n url: string\n}","/*\n * Public API Surface of ngx-material-navigation\n */\nexport * from './components/footer/footer.component';\nexport * from './components/navbar/navbar.component';\nexport * from './components/not-found/not-found.component';\nexport * from './components/breadcrumbs/breadcrumbs.component';\nexport * from './components/nav-element/base-nav-element.component';\nexport * from './models/footer.model';\nexport * from './models/nav-button.model';\nexport * from './models/nav-custom.model';\nexport * from './models/nav-image.model';\nexport * from './models/nav-link.model';\nexport * from './models/nav-menu.model';\nexport * from './models/nav-route.model';\nexport * from './models/nav-title.model';\nexport * from './models/nav-element.model';\nexport * from './models/navbar.model';\nexport * from './models/page-not-found-config.model';\nexport * from './utilities/nav.utilities';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.NgxMatNavigationService","i1.NgxMatNavigationService"],"mappings":"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"}
1
+ {"version":3,"file":"ngx-material-navigation.mjs","sources":["../../../projects/ngx-material-navigation/src/components/nav-element/base-nav-element.component.ts","../../../projects/ngx-material-navigation/src/components/nav-element/button/nav-button/nav-button.component.ts","../../../projects/ngx-material-navigation/src/components/nav-element/button/nav-button/nav-button.component.html","../../../projects/ngx-material-navigation/src/components/nav-element/button/nav-button-flat/nav-button-flat.component.ts","../../../projects/ngx-material-navigation/src/components/nav-element/button/nav-button-flat/nav-button-flat.component.html","../../../projects/ngx-material-navigation/src/components/nav-element/custom/nav-custom/nav-custom.component.ts","../../../projects/ngx-material-navigation/src/components/nav-element/custom/nav-custom/nav-custom.component.html","../../../projects/ngx-material-navigation/src/components/nav-element/image/nav-image/nav-image.component.ts","../../../projects/ngx-material-navigation/src/components/nav-element/image/nav-image/nav-image.component.html","../../../projects/ngx-material-navigation/src/components/nav-element/image/nav-image-with-external-link/nav-image-with-external-link.component.ts","../../../projects/ngx-material-navigation/src/components/nav-element/image/nav-image-with-external-link/nav-image-with-external-link.component.html","../../../projects/ngx-material-navigation/src/components/nav-element/image/nav-image-with-internal-link/nav-image-with-internal-link.component.ts","../../../projects/ngx-material-navigation/src/components/nav-element/image/nav-image-with-internal-link/nav-image-with-internal-link.component.html","../../../projects/ngx-material-navigation/src/components/nav-element/link/nav-external-link/nav-external-link.component.ts","../../../projects/ngx-material-navigation/src/components/nav-element/link/nav-external-link/nav-external-link.component.html","../../../projects/ngx-material-navigation/src/components/nav-element/link/nav-internal-link/nav-internal-link.component.ts","../../../projects/ngx-material-navigation/src/components/nav-element/link/nav-internal-link/nav-internal-link.component.html","../../../projects/ngx-material-navigation/src/components/nav-element/text/nav-text/nav-text.component.ts","../../../projects/ngx-material-navigation/src/components/nav-element/text/nav-text/nav-text.component.html","../../../projects/ngx-material-navigation/src/components/nav-element/title/nav-title/nav-title.component.ts","../../../projects/ngx-material-navigation/src/components/nav-element/title/nav-title/nav-title.component.html","../../../projects/ngx-material-navigation/src/components/nav-element/title/nav-title-with-external-link/nav-title-with-external-link.component.ts","../../../projects/ngx-material-navigation/src/components/nav-element/title/nav-title-with-external-link/nav-title-with-external-link.component.html","../../../projects/ngx-material-navigation/src/components/nav-element/title/nav-title-with-internal-link/nav-title-with-internal-link.component.ts","../../../projects/ngx-material-navigation/src/components/nav-element/title/nav-title-with-internal-link/nav-title-with-internal-link.component.html","../../../projects/ngx-material-navigation/src/directives/disable-hover.directive.ts","../../../projects/ngx-material-navigation/src/models/nav-element.model.ts","../../../projects/ngx-material-navigation/src/utilities/nav.utilities.ts","../../../projects/ngx-material-navigation/src/components/nav-element/nav-element.component.ts","../../../projects/ngx-material-navigation/src/components/nav-element/nav-element.component.html","../../../projects/ngx-material-navigation/src/components/footer/footer.component.ts","../../../projects/ngx-material-navigation/src/components/footer/footer.component.html","../../../projects/ngx-material-navigation/src/services/nav.service.ts","../../../projects/ngx-material-navigation/src/components/navbar/navbar.component.ts","../../../projects/ngx-material-navigation/src/components/navbar/navbar.component.html","../../../projects/ngx-material-navigation/src/components/not-found/not-found.component.ts","../../../projects/ngx-material-navigation/src/components/not-found/not-found.component.html","../../../projects/ngx-material-navigation/src/components/breadcrumbs/breadcrumbs.component.ts","../../../projects/ngx-material-navigation/src/components/breadcrumbs/breadcrumbs.component.html","../../../projects/ngx-material-navigation/src/models/nav-link.model.ts","../../../projects/ngx-material-navigation/src/public-api.ts","../../../projects/ngx-material-navigation/src/ngx-material-navigation.ts"],"sourcesContent":["/* eslint-disable stylistic/indent */\nimport { Component, Input } from '@angular/core';\n\nimport { NavButton } from '../../models/nav-button.model';\nimport { NavCustom } from '../../models/nav-custom.model';\nimport { NavElement, NavElementTypes } from '../../models/nav-element.model';\nimport { NavImage, NavImageWithExternalLink, NavImageWithInternalLink } from '../../models/nav-image.model';\nimport { NavExternalLink, NavInternalLink } from '../../models/nav-link.model';\nimport { NavMenu } from '../../models/nav-menu.model';\nimport { NavText } from '../../models/nav-text.model';\nimport { NavTitle, NavTitleWithExternalLink, NavTitleWithInternalLink } from '../../models/nav-title.model';\n\n/**\n * The abstract base class of any ngx-mat-navigation nav element.\n *\n * It already provides the elementValue: Just the typed version of the element.\n */\n@Component({\n selector: 'ngx-mat-navigation-base-nav-element',\n template: ''\n})\nexport abstract class NgxMatNavigationBaseNavElementComponent<Type extends NavElementTypes> {\n /**\n * The input nav element to display.\n */\n @Input({ required: true })\n element!: NavElement;\n\n /**\n * Whether or not the element is inside a sidenav.\n */\n @Input({ required: true })\n isSidenavElement!: boolean;\n\n /**\n * Whether or not the element is inside a menu.\n */\n @Input({ required: true })\n isMenuItem!: boolean;\n\n // eslint-disable-next-line jsdoc/require-returns\n /**\n * The nav element correctly typed.\n */\n get elementValue(): NavElementType<Type> {\n return this.element as NavElementType<Type>;\n }\n}\n\n/**\n * Gives the metadata-config Type based on the DecoratorTypes enum.\n */\nexport type NavElementType<T>\n = T extends NavElementTypes.TITLE ? NavTitle\n : T extends NavElementTypes.TITLE_WITH_INTERNAL_LINK ? NavTitleWithInternalLink\n : T extends NavElementTypes.TITLE_WITH_EXTERNAL_LINK ? NavTitleWithExternalLink\n : T extends NavElementTypes.IMAGE ? NavImage\n : T extends NavElementTypes.IMAGE_WITH_INTERNAL_LINK ? NavImageWithInternalLink\n : T extends NavElementTypes.IMAGE_WITH_EXTERNAL_LINK ? NavImageWithExternalLink\n : T extends NavElementTypes.INTERNAL_LINK ? NavInternalLink\n : T extends NavElementTypes.EXTERNAL_LINK ? NavExternalLink\n : T extends NavElementTypes.BUTTON ? NavButton\n : T extends NavElementTypes.BUTTON_FLAT ? NavButton\n : T extends NavElementTypes.MENU ? NavMenu\n // eslint-disable-next-line typescript/no-explicit-any\n : T extends NavElementTypes.CUSTOM ? NavCustom<any>\n : T extends NavElementTypes.TEXT ? NavText\n : never;","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component, EnvironmentInjector, runInInjectionContext } from '@angular/core';\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\n\nimport { NavElementTypes } from '../../../../models/nav-element.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line angular/component-selector\n selector: 'nav-button',\n templateUrl: './nav-button.component.html',\n styleUrls: ['./nav-button.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n FaIconComponent\n ]\n})\nexport class NavButtonComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.BUTTON> {\n\n constructor(private readonly injector: EnvironmentInjector) {\n super();\n }\n\n /**\n * Runs the action of the element.\n * This wrapper is needed to enable the user to use injections in his action functions.\n */\n runAction(): void {\n runInInjectionContext(this.injector, () => this.elementValue.action());\n }\n}","<div [class.sidenavElement]=\"isSidenavElement\"\n [class.menuItem]=\"isMenuItem\"\n [attr.aria-label]=\"elementValue.ariaLabel\"\n>\n <button type=\"button\" (click)=\"runAction()\">\n @if (elementValue.icon) {\n <fa-icon [icon]=\"elementValue.icon\"></fa-icon>\n }\n {{elementValue.name}}\n </button>\n</div>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\n\nimport { NavButtonComponent } from '../nav-button/nav-button.component';\n\n@Component({\n // eslint-disable-next-line angular/component-selector\n selector: 'nav-button-flat',\n templateUrl: './nav-button-flat.component.html',\n styleUrls: ['./nav-button-flat.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n FaIconComponent\n ]\n})\nexport class NavButtonFlatComponent extends NavButtonComponent {}","<button\n type=\"button\"\n [class.sidenavElement]=\"isSidenavElement\"\n [class.menuItem]=\"isMenuItem\"\n [attr.aria-label]=\"elementValue.ariaLabel\"\n (click)=\"runAction()\"\n>\n @if (elementValue.icon) {\n <fa-icon [icon]=\"elementValue.icon\"></fa-icon>\n }\n {{elementValue.name}}\n</button>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component, ComponentRef, OnInit, Type, ViewContainerRef } from '@angular/core';\n\nimport { NavElementTypes } from '../../../../models/nav-element.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line angular/component-selector\n selector: 'nav-custom',\n templateUrl: './nav-custom.component.html',\n standalone: true,\n imports: [CommonModule]\n})\nexport class NavCustomComponent<\n ComponentType extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.CUSTOM>\n> extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.CUSTOM> implements OnInit {\n\n component!: ComponentRef<ComponentType>;\n\n constructor(private readonly viewContainerRef: ViewContainerRef) {\n super();\n }\n\n ngOnInit(): void {\n this.component = this.viewContainerRef.createComponent<ComponentType>(this.elementValue.component as Type<ComponentType>);\n this.component.instance.element = this.element;\n this.component.instance.isMenuItem = this.isMenuItem;\n this.component.instance.isSidenavElement = this.isSidenavElement;\n }\n}","","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule, NgOptimizedImage } from '@angular/common';\nimport { Component } from '@angular/core';\n\nimport { NavElementTypes } from '../../../../models/nav-element.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line angular/component-selector\n selector: 'nav-image',\n templateUrl: './nav-image.component.html',\n styleUrls: ['../base-nav-image.scss'],\n standalone: true,\n imports: [CommonModule, NgOptimizedImage]\n})\nexport class NavImageComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.IMAGE> { }","<div [class.sidenavElement]=\"isSidenavElement\" [class.menuItem]=\"isMenuItem\">\n <img [alt]=\"elementValue.alt ?? ''\" [height]=\"elementValue.height\" [style.height.px]=\"elementValue.height\" [width]=\"elementValue.width\" [style.width.px]=\"elementValue.width\" [ngSrc]=\"elementValue.url\">\n</div>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule, NgOptimizedImage } from '@angular/common';\nimport { Component } from '@angular/core';\n\nimport { NavElementTypes } from '../../../../models/nav-element.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line angular/component-selector\n selector: 'nav-image-with-external-link',\n templateUrl: './nav-image-with-external-link.component.html',\n styleUrls: ['../base-nav-image.scss'],\n standalone: true,\n imports: [CommonModule, NgOptimizedImage]\n})\nexport class NavImageWithExternalLinkComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.IMAGE_WITH_EXTERNAL_LINK> { }","<a class=\"image-link\"\n [href]=\"elementValue.link.url\"\n [target]=\"elementValue.link.openInNewTab ? '_blank' : '_self'\"\n [rel]=\"elementValue.link.openInNewTab ? 'noreferrer noopener' : undefined\"\n [class.sidenavElement]=\"isSidenavElement\"\n [class.menuItem]=\"isMenuItem\"\n>\n <img [alt]=\"elementValue.alt ?? ''\" [height]=\"elementValue.height\" [style.height.px]=\"elementValue.height\" [width]=\"elementValue.width\" [style.width.px]=\"elementValue.width\" [ngSrc]=\"elementValue.url\">\n</a>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule, NgOptimizedImage } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { NavElementTypes } from '../../../../models/nav-element.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line angular/component-selector\n selector: 'nav-image-with-internal-link',\n templateUrl: './nav-image-with-internal-link.component.html',\n styleUrls: ['../base-nav-image.scss'],\n standalone: true,\n imports: [\n CommonModule,\n RouterModule,\n NgOptimizedImage\n ]\n})\nexport class NavImageWithInternalLinkComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.IMAGE_WITH_INTERNAL_LINK> {\n get route(): string {\n if (typeof this.elementValue.link.route === 'string') {\n return this.elementValue.link.route;\n }\n return this.elementValue.link.route.path;\n }\n}","<a class=\"image-link\"\n [routerLink]=\"route\"\n [target]=\"elementValue.link.openInNewTab ? '_blank' : '_self'\"\n [rel]=\"elementValue.link.openInNewTab ? 'noreferrer noopener' : undefined\"\n [class.sidenavElement]=\"isSidenavElement\"\n [class.menuItem]=\"isMenuItem\"\n [routerLinkActive]=\"'active'\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n>\n <img [alt]=\"elementValue.alt ?? ''\" [height]=\"elementValue.height\" [width]=\"elementValue.width\" [style.width.px]=\"elementValue.width\" [style.height.px]=\"elementValue.height\" [ngSrc]=\"elementValue.url\">\n</a>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\n\nimport { NavElementTypes } from '../../../../models/nav-element.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line angular/component-selector\n selector: 'nav-external-link',\n templateUrl: './nav-external-link.component.html',\n styleUrls: ['./nav-external-link.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n FaIconComponent\n ]\n})\nexport class NavExternalLinkComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.EXTERNAL_LINK> { }","<a\n [href]=\"elementValue.url\"\n [target]=\"elementValue.openInNewTab ? '_blank' : '_self'\"\n [rel]=\"elementValue.openInNewTab ? 'noreferrer noopener' : undefined\"\n [class.sidenavElement]=\"isSidenavElement\"\n [class.menuItem]=\"isMenuItem\"\n [attr.aria-label]=\"elementValue.ariaLabel\"\n>\n @if (elementValue.icon) {\n <fa-icon [icon]=\"elementValue.icon\"></fa-icon>\n }\n {{elementValue.name}}\n</a>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\n\nimport { NavElementTypes } from '../../../../models/nav-element.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line angular/component-selector\n selector: 'nav-internal-link',\n templateUrl: './nav-internal-link.component.html',\n styleUrls: ['./nav-internal-link.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n RouterModule,\n FaIconComponent\n ]\n})\nexport class NavInternalLinkComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.INTERNAL_LINK> {\n @Input({ required: true })\n isBreadcrumb!: boolean;\n\n get route(): string {\n if (typeof this.elementValue.route === 'string') {\n return this.elementValue.route;\n }\n return this.elementValue.route.path;\n }\n}","<a\n [routerLink]=\"route\"\n [fragment]=\"elementValue.fragment\"\n [target]=\"elementValue.openInNewTab ? '_blank' : '_self'\"\n [rel]=\"elementValue.openInNewTab ? 'noreferrer noopener' : undefined\"\n [class.sidenavElement]=\"isSidenavElement\"\n [class.menuItem]=\"isMenuItem\"\n [class.breadcrumb]=\"isBreadcrumb\"\n [attr.aria-label]=\"elementValue.ariaLabel\"\n [routerLinkActive]=\"'active'\"\n [routerLinkActiveOptions]=\"elementValue.fragment ? { matrixParams: 'exact', queryParams: 'exact', paths: 'exact', fragment: 'exact' } : { exact: true }\"\n>\n @if (elementValue.icon) {\n <fa-icon [icon]=\"elementValue.icon\"></fa-icon>\n }\n {{elementValue.name}}\n</a>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\n\nimport { NavElementTypes } from '../../../../models/nav-element.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line angular/component-selector\n selector: 'nav-text',\n templateUrl: './nav-text.component.html',\n standalone: true,\n imports: [CommonModule]\n})\nexport class NavTextComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.TEXT> {}","@for (paragraph of elementValue.paragraphs; track paragraph) {\n <div>{{paragraph}}</div>\n}","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\n\nimport { NavElementTypes } from '../../../../models/nav-element.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line angular/component-selector\n selector: 'nav-title',\n templateUrl: './nav-title.component.html',\n styleUrls: ['../base-nav-title.scss'],\n standalone: true,\n imports: [CommonModule, FaIconComponent]\n})\n// eslint-disable-next-line jsdoc/require-jsdoc\nexport class NavTitleComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.TITLE> { }","<div [class.sidenavElement]=\"isSidenavElement\" [class.menuItem]=\"isMenuItem\" [attr.aria-label]=\"elementValue.ariaLabel\">\n <b>\n @if (elementValue.icon) {\n <fa-icon [icon]=\"elementValue.icon\"></fa-icon>\n }\n {{elementValue.title}}\n </b>\n</div>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\n\nimport { NavElementTypes } from '../../../../models/nav-element.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line angular/component-selector\n selector: 'nav-title-with-external-link',\n templateUrl: './nav-title-with-external-link.component.html',\n styleUrls: ['../base-nav-title.scss'],\n standalone: true,\n imports: [CommonModule, FaIconComponent]\n})\nexport class NavTitleWithExternalLinkComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.TITLE_WITH_EXTERNAL_LINK> { }","<a class=\"title-link\"\n [href]=\"elementValue.link.url\"\n [target]=\"elementValue.link.openInNewTab ? '_blank' : '_self'\"\n [rel]=\"elementValue.link.openInNewTab ? 'noreferrer noopener' : undefined\"\n [class.sidenavElement]=\"isSidenavElement\"\n [class.menuItem]=\"isMenuItem\"\n [attr.aria-label]=\"elementValue.ariaLabel\"\n>\n <b>\n @if (elementValue.icon) {\n <fa-icon [icon]=\"elementValue.icon\"></fa-icon>\n }\n {{elementValue.title}}\n </b>\n</a>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\n\nimport { NavElementTypes } from '../../../../models/nav-element.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line angular/component-selector\n selector: 'nav-title-with-internal-link',\n templateUrl: './nav-title-with-internal-link.component.html',\n styleUrls: ['../base-nav-title.scss'],\n standalone: true,\n imports: [\n CommonModule,\n RouterModule,\n FaIconComponent\n ]\n})\nexport class NavTitleWithInternalLinkComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.TITLE_WITH_INTERNAL_LINK> {\n get route(): string {\n if (typeof this.elementValue.link.route === 'string') {\n return this.elementValue.link.route;\n }\n return this.elementValue.link.route.path;\n }\n}","<a class=\"title-link\"\n [routerLink]=\"route\"\n [target]=\"elementValue.link.openInNewTab ? '_blank' : '_self'\"\n [rel]=\"elementValue.link.openInNewTab ? 'noreferrer noopener' : undefined\"\n [class.sidenavElement]=\"isSidenavElement\"\n [class.menuItem]=\"isMenuItem\"\n [attr.aria-label]=\"elementValue.ariaLabel\"\n [routerLinkActive]=\"'active'\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n>\n <b>\n @if (elementValue.icon) {\n <fa-icon [icon]=\"elementValue.icon\"></fa-icon>\n }\n {{elementValue.title}}\n </b>\n</a>","// stop-hover-capture.directive.ts\nimport { Directive, ElementRef, OnDestroy, OnInit } from '@angular/core';\n\n/**\n * Disables 'mouseenter', 'mouseover', 'pointerenter', 'pointermove' and 'mousemove'.\n */\n@Directive({\n selector: '[disableHover]',\n standalone: true\n})\nexport class DisableHoverDirective implements OnInit, OnDestroy {\n private readonly unsubscribeFunctions: (() => void)[] = [];\n private readonly events: string[] = ['mouseenter', 'mouseover', 'pointerenter', 'pointermove', 'mousemove'];\n\n constructor(private readonly el: ElementRef<HTMLElement>) {}\n\n ngOnInit(): void {\n for (const ev of this.events) {\n const listener: EventListener = (e: Event) => {\n e.stopImmediatePropagation?.();\n e.stopPropagation?.();\n e.preventDefault?.();\n };\n this.el.nativeElement.addEventListener(ev, listener, { capture: true });\n this.unsubscribeFunctions.push(() => this.el.nativeElement.removeEventListener(ev, listener, { capture: true }));\n }\n }\n\n ngOnDestroy(): void {\n for (const fn of this.unsubscribeFunctions) {\n fn();\n }\n }\n}","import { Route } from '@angular/router';\n\nimport { NavButton } from './nav-button.model';\nimport { NavCustom } from './nav-custom.model';\nimport { NavImage, NavImageWithExternalLink, NavImageWithInternalLink } from './nav-image.model';\nimport { NavExternalLink, NavInternalLink } from './nav-link.model';\nimport { NavMenu } from './nav-menu.model';\nimport { NavRoute } from './nav-route.model';\nimport { NavText } from './nav-text.model';\nimport { NavTitle, NavTitleWithExternalLink, NavTitleWithInternalLink } from './nav-title.model';\n\n/**\n * The three currently supported breakpoints.\n * These are the same as in bootstrap.\n */\nexport type ScreenWidthName = 'lg' | 'md' | 'sm';\n\n/**\n * Type for the position of a nav element inside the navbar or footer.\n */\nexport type NavElementPosition = 'left' | 'center' | 'right';\n\n/**\n * The type of the nav element. Eg. Title or button.\n */\nexport enum NavElementTypes {\n TITLE = 'title',\n TITLE_WITH_INTERNAL_LINK = 'titleWithInternalLink',\n TITLE_WITH_EXTERNAL_LINK = 'titleWithExternalLink',\n IMAGE = 'image',\n IMAGE_WITH_INTERNAL_LINK = 'imageWithInternalLink',\n IMAGE_WITH_EXTERNAL_LINK = 'imageWithExternalLink',\n INTERNAL_LINK = 'internalLink',\n BUTTON = 'button',\n BUTTON_FLAT = 'buttonFlat',\n EXTERNAL_LINK = 'externalLink',\n MENU = 'menu',\n CUSTOM = 'custom',\n TEXT = 'text'\n}\n\n/**\n * The abstract base class of any nav element.\n */\nexport abstract class BaseNavElement {\n /**\n * The id of the element.\n */\n id!: string;\n /**\n * The type of the element.\n */\n type!: NavElementTypes;\n /**\n * The position of the element.\n */\n position?: 'left' | 'center' | 'right';\n /**\n * At which breakpoint the element should be moved inside the sidenav.\n */\n collapse?: ScreenWidthName | 'never' | 'always';\n /**\n * A condition that must be met for the element to be displayed.\n */\n condition?: () => boolean;\n /**\n * The aria label of the element.\n */\n ariaLabel?: string;\n}\n\n/**\n * One of the many NavElements.\n */\nexport type NavElement<RouteType extends Route = NavRoute> = NavTitle\n | NavTitleWithInternalLink<RouteType> | NavTitleWithExternalLink\n | NavImage | NavImageWithExternalLink | NavImageWithInternalLink<RouteType>\n // eslint-disable-next-line typescript/no-explicit-any\n | NavButton | NavInternalLink<RouteType> | NavExternalLink | NavMenu | NavCustom<any> | NavText;","import { Route } from '@angular/router';\n\nimport { FooterRow, NavFooterElement } from '../models/footer.model';\nimport { NavElement, NavElementTypes } from '../models/nav-element.model';\nimport { NavImageWithInternalLink } from '../models/nav-image.model';\nimport { NavInternalLink } from '../models/nav-link.model';\nimport { NavMenu, NavMenuElement } from '../models/nav-menu.model';\nimport { NavRoute } from '../models/nav-route.model';\nimport { NavTitleWithInternalLink } from '../models/nav-title.model';\nimport { NavbarRow } from '../models/navbar.model';\n\n/**\n * Contains HelperMethods around handling Navigation.\n */\nexport abstract class NavUtilities {\n // eslint-disable-next-line jsdoc/require-jsdoc\n static asMenu(element: NavElement | NavMenuElement | NavFooterElement): NavMenu {\n return element as NavMenu;\n }\n\n // eslint-disable-next-line jsdoc/require-jsdoc\n static isMenu(element: NavElement | NavFooterElement): element is NavMenu {\n return Object.keys(element).includes('elements');\n }\n\n private static isAngularRoute(route: Route | string): route is Route {\n return typeof route !== 'string';\n }\n\n /**\n * Gets the angular routes.\n * Extracts them from the navbar and footer rows and adds any additional routes provided in additionalRoutes.\n * @param navbarRows - The NavbarRows used as a configuration for the navbar element.\n * @param footerRows - The FooterRows used as a configuration for the footer element.\n * @param additionalRoutes - Any additional routes that aren't included in the navbar or footer rows.\n * @returns All found angular routes.\n */\n static getAngularRoutes<RouteType extends Route = NavRoute>(\n navbarRows: NavbarRow[] = [],\n footerRows: FooterRow[] = [],\n additionalRoutes: RouteType[] = []\n ): RouteType[] {\n let allRoutes: RouteType[] = [];\n allRoutes = allRoutes.concat(NavUtilities.getRoutesFromNavbar<RouteType>(navbarRows));\n allRoutes = allRoutes.concat(NavUtilities.getRoutesFromFooter<RouteType>(footerRows));\n allRoutes = allRoutes.concat(additionalRoutes);\n // Filters to only contain unique paths\n const uniquePaths: string[] = [];\n const res: RouteType[] = [];\n for (const route of allRoutes) {\n // eslint-disable-next-line sonar/no-empty-collection\n if (!uniquePaths.find(r => r === route.path)) {\n res.push(route);\n }\n }\n return res;\n }\n\n private static getRoutesFromNavbar<RouteType extends Route>(navbarRows: NavbarRow[]): RouteType[] {\n let res: RouteType[] = [];\n for (const row of navbarRows) {\n res = res.concat(NavUtilities.getRoutesFromElements<RouteType>(row.elements));\n }\n return res;\n }\n\n private static getRoutesFromFooter<RouteType extends Route>(footerRows: FooterRow[]): RouteType[] {\n let res: RouteType[] = [];\n for (const row of footerRows) {\n res = res.concat(NavUtilities.getRoutesFromElements<RouteType>(row.elements));\n }\n return res;\n }\n\n private static getRoutesFromElements<RouteType extends Route>(elements: NavElement[] | NavFooterElement[]): RouteType[] {\n let res: RouteType[] = [];\n\n const linksRoutes: (string | NavRoute)[] = NavUtilities.findInternalLinksFromElements(elements).map(l => l.route);\n res = res.concat(linksRoutes.filter(r => NavUtilities.isAngularRoute(r)) as RouteType[]);\n\n const titleLinksRoutes: (string | NavRoute)[] = NavUtilities.findTitleLinksFromElements(elements).map(l => l.link.route);\n res = res.concat(titleLinksRoutes.filter(r => NavUtilities.isAngularRoute(r)) as RouteType[]);\n\n const imageLinksRoutes: (string | NavRoute)[] = NavUtilities.findImageLinksFromElements(elements).map(l => l.link.route);\n res = res.concat(imageLinksRoutes.filter(r => NavUtilities.isAngularRoute(r)) as RouteType[]);\n\n const menus: NavMenu[] = elements.filter(e => e.type === NavElementTypes.MENU) as NavMenu[];\n for (const menu of menus) {\n res = res.concat(NavUtilities.getRoutesFromElements<RouteType>(menu.elements));\n }\n return res;\n }\n\n private static findImageLinksFromElements(elements: NavElement[] | NavMenuElement[]): NavImageWithInternalLink[] {\n return elements.filter(e => e.type === NavElementTypes.IMAGE_WITH_INTERNAL_LINK) as NavImageWithInternalLink[];\n }\n\n private static findTitleLinksFromElements(elements: NavElement[] | NavMenuElement[]): NavTitleWithInternalLink[] {\n return elements.filter(e => e.type === NavElementTypes.TITLE_WITH_INTERNAL_LINK) as NavTitleWithInternalLink[];\n }\n\n private static findInternalLinksFromElements(elements: NavElement[]): NavInternalLink[] {\n return elements.filter(e => e.type === NavElementTypes.INTERNAL_LINK);\n }\n}","\nimport { CdkMenuModule, CdkMenuTrigger } from '@angular/cdk/menu';\nimport { CommonModule } from '@angular/common';\nimport { AfterContentChecked, Component, ElementRef, HostListener, Input, model, ModelSignal, OnInit, ViewChild } from '@angular/core';\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\nimport { faChevronDown } from '@fortawesome/free-solid-svg-icons';\n\nimport { NavButtonComponent } from './button/nav-button/nav-button.component';\nimport { NavButtonFlatComponent } from './button/nav-button-flat/nav-button-flat.component';\nimport { NavCustomComponent } from './custom/nav-custom/nav-custom.component';\nimport { NavImageComponent } from './image/nav-image/nav-image.component';\nimport { NavImageWithExternalLinkComponent } from './image/nav-image-with-external-link/nav-image-with-external-link.component';\nimport { NavImageWithInternalLinkComponent } from './image/nav-image-with-internal-link/nav-image-with-internal-link.component';\nimport { NavExternalLinkComponent } from './link/nav-external-link/nav-external-link.component';\nimport { NavInternalLinkComponent } from './link/nav-internal-link/nav-internal-link.component';\nimport { NavTextComponent } from './text/nav-text/nav-text.component';\nimport { NavTitleComponent } from './title/nav-title/nav-title.component';\nimport { NavTitleWithExternalLinkComponent } from './title/nav-title-with-external-link/nav-title-with-external-link.component';\nimport { NavTitleWithInternalLinkComponent } from './title/nav-title-with-internal-link/nav-title-with-internal-link.component';\nimport { DisableHoverDirective } from '../../directives/disable-hover.directive';\nimport { NavElement, NavElementTypes } from '../../models/nav-element.model';\nimport { NavMenu } from '../../models/nav-menu.model';\nimport { NavUtilities } from '../../utilities/nav.utilities';\n\n/**\n * Displays a single Navigation Element.\n */\n@Component({\n selector: 'ngx-mat-navigation-element',\n templateUrl: './nav-element.component.html',\n styleUrls: ['./nav-element.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n CdkMenuModule,\n NavTitleComponent,\n NavTitleWithInternalLinkComponent,\n NavTitleWithExternalLinkComponent,\n NavImageComponent,\n NavImageWithInternalLinkComponent,\n NavImageWithExternalLinkComponent,\n NavButtonComponent,\n NavButtonFlatComponent,\n NavInternalLinkComponent,\n NavExternalLinkComponent,\n NavCustomComponent,\n NavTextComponent,\n FaIconComponent,\n DisableHoverDirective\n ]\n})\nexport class NavElementComponent implements AfterContentChecked, OnInit {\n\n // eslint-disable-next-line jsdoc/require-jsdoc\n NavElementTypes: typeof NavElementTypes = NavElementTypes;\n\n /**\n * The element to display.\n */\n @Input({ required: true })\n element!: NavElement;\n\n /**\n * A list of all the buttons that .\n */\n @Input()\n parentMenusButtons: CdkMenuTrigger[] = [];\n // eslint-disable-next-line jsdoc/require-jsdoc\n protected get internalParentMenusButtons(): CdkMenuTrigger[] {\n return this.menuButton ? [...this.parentMenusButtons, this.menuButton] : this.parentMenusButtons;\n }\n\n // eslint-disable-next-line jsdoc/require-jsdoc\n elementMenu!: NavMenu & Required<Pick<NavMenu, 'iconState'>>;\n\n /**\n * A reference to the sidenav. Is needed for the menu to close the sidenav.\n */\n sidenavOpened: ModelSignal<boolean | undefined> = model<boolean>();\n\n /**\n * Whether or not this element should be displayed inside the sidenav.\n * Used to apply different styling.\n */\n @Input()\n isSidenavElement?: boolean;\n // eslint-disable-next-line jsdoc/require-jsdoc\n protected internalIsSidenavElement!: boolean;\n\n /**\n * Whether or not this element should be displayed inside a menu.\n * Used to apply different styling.\n */\n @Input()\n isMenuItem?: boolean;\n // eslint-disable-next-line jsdoc/require-jsdoc\n protected internalIsMenuItem!: boolean;\n\n // eslint-disable-next-line jsdoc/require-jsdoc\n @ViewChild('menuButton', { read: CdkMenuTrigger, static: false })\n menuButton?: CdkMenuTrigger;\n // eslint-disable-next-line jsdoc/require-jsdoc\n @ViewChild('menuButtonElement', { read: ElementRef, static: false })\n menuButtonElement?: ElementRef<HTMLButtonElement>;\n\n // eslint-disable-next-line jsdoc/require-jsdoc\n menuWidth!: number;\n\n ngOnInit(): void {\n this.internalIsSidenavElement = this.isSidenavElement ?? false;\n this.internalIsMenuItem = this.isMenuItem ?? false;\n this.elementMenu = {\n ...NavUtilities.asMenu(this.element),\n iconState: NavUtilities.asMenu(this.element).iconState ?? faChevronDown\n };\n }\n\n ngAfterContentChecked(): void {\n this.onResize();\n }\n\n /**\n * Updates the width of the menu to the value of its button.\n */\n @HostListener('window:resize')\n onResize(): void {\n if (this.menuButtonElement) {\n this.menuWidth = this.menuButtonElement.nativeElement.offsetWidth;\n }\n }\n\n /**\n * Defines if the sidenav should be closed when the given element is clicked.\n * @param element - The element that has been clicked.\n */\n clickSidenavElement(element: NavElement): void {\n switch (element.type) {\n case NavElementTypes.TITLE:\n case NavElementTypes.IMAGE:\n case NavElementTypes.MENU:\n case NavElementTypes.TEXT: {\n return;\n }\n case NavElementTypes.TITLE_WITH_INTERNAL_LINK:\n case NavElementTypes.TITLE_WITH_EXTERNAL_LINK:\n case NavElementTypes.IMAGE_WITH_INTERNAL_LINK:\n case NavElementTypes.IMAGE_WITH_EXTERNAL_LINK:\n case NavElementTypes.INTERNAL_LINK:\n case NavElementTypes.BUTTON:\n case NavElementTypes.BUTTON_FLAT:\n case NavElementTypes.EXTERNAL_LINK: {\n this.sidenavOpened?.set(false);\n return;\n }\n case NavElementTypes.CUSTOM: {\n const closeSidenavOnClick: boolean = element.closeSidenavOnClick ?? false;\n if (!closeSidenavOnClick) {\n return;\n }\n this.sidenavOpened?.set(false);\n }\n }\n }\n\n /**\n * Defines if the menu should be closed when the given item is clicked.\n * @param item - The item that has been clicked.\n */\n clickMenuItem(item: NavElement): void {\n switch (item.type) {\n case NavElementTypes.TITLE:\n case NavElementTypes.IMAGE:\n case NavElementTypes.MENU:\n case NavElementTypes.TEXT: {\n return;\n }\n case NavElementTypes.TITLE_WITH_INTERNAL_LINK:\n case NavElementTypes.TITLE_WITH_EXTERNAL_LINK:\n case NavElementTypes.IMAGE_WITH_INTERNAL_LINK:\n case NavElementTypes.IMAGE_WITH_EXTERNAL_LINK:\n case NavElementTypes.INTERNAL_LINK:\n case NavElementTypes.BUTTON:\n case NavElementTypes.BUTTON_FLAT:\n case NavElementTypes.EXTERNAL_LINK: {\n this.menuButton?.close();\n for (const button of this.parentMenusButtons.reverse()) {\n button.close();\n }\n return;\n }\n case NavElementTypes.CUSTOM: {\n const closeMenuOnClick: boolean = item.closeMenuOnClick ?? false;\n if (!closeMenuOnClick) {\n return;\n }\n this.menuButton?.close();\n for (const button of this.parentMenusButtons.reverse()) {\n button.close();\n }\n }\n }\n }\n}","<!-- eslint-disable angular/cyclomatic-complexity -->\n@switch (element.type) {\n <!-------------------------------------------->\n <!------------------Titles-------------------->\n <!-------------------------------------------->\n @case (NavElementTypes.TITLE) {\n <nav-title [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-title>\n }\n @case (NavElementTypes.TITLE_WITH_INTERNAL_LINK) {\n <nav-title-with-internal-link [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-title-with-internal-link>\n }\n @case (NavElementTypes.TITLE_WITH_EXTERNAL_LINK) {\n <nav-title-with-external-link [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-title-with-external-link>\n }\n <!-------------------------------------------->\n <!-------------------Images------------------->\n <!-------------------------------------------->\n @case (NavElementTypes.IMAGE) {\n <nav-image [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-image>\n }\n @case (NavElementTypes.IMAGE_WITH_INTERNAL_LINK) {\n <nav-image-with-internal-link [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-image-with-internal-link>\n }\n @case (NavElementTypes.IMAGE_WITH_EXTERNAL_LINK) {\n <nav-image-with-external-link [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-image-with-external-link>\n }\n <!-------------------------------------------->\n <!-------------------Buttons------------------>\n <!-------------------------------------------->\n @case (NavElementTypes.BUTTON) {\n <nav-button [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-button>\n }\n @case (NavElementTypes.BUTTON_FLAT) {\n <nav-button-flat [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-button-flat>\n }\n <!-------------------------------------------->\n <!--------------------Link-------------------->\n <!-------------------------------------------->\n @case (NavElementTypes.INTERNAL_LINK) {\n <nav-internal-link [element]=\"element\" [isBreadcrumb]=\"false\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-internal-link>\n }\n @case (NavElementTypes.EXTERNAL_LINK) {\n <nav-external-link [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-external-link>\n }\n <!-------------------------------------------->\n <!-------------------CUSTOM------------------->\n <!-------------------------------------------->\n @case (NavElementTypes.CUSTOM) {\n <div [class.menuItem]=\"internalIsMenuItem\" (click)=\"clickSidenavElement(element); clickMenuItem(element);\">\n <nav-custom\n [element]=\"element\" \n [isSidenavElement]=\"internalIsSidenavElement\"\n [isMenuItem]=\"internalIsMenuItem\"\n >\n </nav-custom>\n </div>\n }\n <!-------------------------------------------->\n <!--------------------TEXT-------------------->\n <!-------------------------------------------->\n @case (NavElementTypes.TEXT) {\n <nav-text [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-text>\n }\n <!-------------------------------------------->\n <!--------------------Menu-------------------->\n <!-------------------------------------------->\n @case (NavElementTypes.MENU) {\n <button\n #menuButton=\"cdkMenuTriggerFor\"\n #menuButtonElement\n type=\"button\"\n disableHover\n [cdkMenuTriggerFor]=\"menu\"\n [class.sidenavElement]=\"internalIsSidenavElement\"\n [class.menuItem]=\"internalIsMenuItem\"\n [attr.aria-label]=\"element.ariaLabel\"\n >\n {{elementMenu.name}}\n @if (elementMenu.iconState !== 'empty') {\n <!-- eslint-disable-next-line angular/no-call-expression -->\n <fa-icon [icon]=\"elementMenu.iconState\" [class.open]=\"menuButton.isOpen()\"></fa-icon>\n }\n </button>\n\n <ng-template #menu>\n <div class=\"menu\" cdkMenu [class.subMenu]=\"internalIsMenuItem\" [style.min-width.px]=\"menuWidth\">\n @for (menuElement of elementMenu.elements; track menuElement.id) {\n <ngx-mat-navigation-element\n [isSidenavElement]=\"internalIsSidenavElement\"\n [isMenuItem]=\"true\"\n [element]=\"menuElement\"\n [parentMenusButtons]=\"internalParentMenusButtons\"\n [(sidenavOpened)]=\"sidenavOpened\"\n (click)=\"clickSidenavElement(menuElement); clickMenuItem(menuElement);\"\n >\n </ngx-mat-navigation-element>\n }\n </div>\n </ng-template>\n }\n}","import { CommonModule } from '@angular/common';\nimport { Component, EnvironmentInjector, Input, runInInjectionContext } from '@angular/core';\n\nimport { FooterRow, NavFooterElement } from '../../models/footer.model';\nimport { NavElement, NavElementPosition } from '../../models/nav-element.model';\nimport { NavElementComponent } from '../nav-element/nav-element.component';\n\n/**\n * Displays a footer based on the provided input data.\n */\n@Component({\n selector: 'ngx-mat-navigation-footer',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n NavElementComponent\n ]\n})\nexport class NgxMatNavigationFooterComponent {\n\n /**\n * The minimum height of the footer.\n */\n @Input({ required: true })\n minHeight!: number;\n\n /**\n * The footer rows to build the footer from.\n */\n @Input({ required: true })\n footerRows!: FooterRow[];\n\n constructor(private readonly injector: EnvironmentInjector) {}\n\n /**\n * Gets the footer elements for the given row at the provided position.\n * @param row - The row to get the elements for.\n * @param position - Where in the footer the elements are positioned.\n * @returns An array of the resolved footer elements.\n */\n getFooterElements(row: FooterRow, position: NavElementPosition): NavFooterElement[] {\n let res: NavFooterElement[] = [];\n res = res.concat(row.elements);\n res = res.filter(e => this.checkCondition(e));\n\n if (position === 'left') {\n return res.filter(e => e.position == undefined || e.position === position);\n }\n return res.filter(e => e.position === position);\n }\n\n private checkCondition(element: NavElement): boolean {\n if (element.condition == undefined) {\n return true;\n }\n // runInInjectionContext(...) is needed to enable the user to use injections in his condition functions.\n return runInInjectionContext(this.injector, () => element.condition ? element.condition() : true);\n }\n}","<!-- eslint-disable angular/no-call-expression -->\n<footer [style.min-height.px]=\"minHeight\">\n @for (row of footerRows; track $index) {\n <div class=\"footer-row\">\n <div class=\"footer-col\" id=\"left\">\n @for (element of getFooterElements(row, 'left'); track element.id) {\n <ngx-mat-navigation-element [element]=\"element\"></ngx-mat-navigation-element>\n }\n </div>\n <div class=\"footer-col\" id=\"center\">\n @for (element of getFooterElements(row, 'center'); track element.id) {\n <ngx-mat-navigation-element [element]=\"element\"></ngx-mat-navigation-element>\n }\n </div>\n <div class=\"footer-col\" id=\"right\">\n @for (element of getFooterElements(row, 'right'); track element.id) {\n <ngx-mat-navigation-element [element]=\"element\"></ngx-mat-navigation-element>\n }\n </div>\n </div>\n }\n</footer>","import { EnvironmentInjector, inject, Injectable, runInInjectionContext } from '@angular/core';\nimport { ActivatedRoute, ActivatedRouteSnapshot, NavigationEnd, Route, Router } from '@angular/router';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { Breadcrumb } from '../models/breadcrumb.model';\nimport { NavElementTypes } from '../models/nav-element.model';\nimport { NavInternalLink } from '../models/nav-link.model';\nimport { DefaultNavRouteDataType, NavAnchor } from '../models/nav-route.model';\nimport { NavbarRow } from '../models/navbar.model';\n\n/**\n * The service that contains information and functionality about he navigation data.\n */\n@Injectable({ providedIn: 'root' })\nexport class NgxMatNavigationService {\n\n /**\n * The subject of the anchors of the current page.\n */\n readonly anchorsSubject: BehaviorSubject<NavAnchor[]> = new BehaviorSubject<NavAnchor[]>([]);\n\n /**\n * The subject of the anchors of the current page.\n */\n readonly breadcrumbsSubject: BehaviorSubject<Breadcrumb[]> = new BehaviorSubject<Breadcrumb[]>([]);\n\n private get currentRoute(): string {\n return this.router.url.split('#')[0];\n }\n\n // eslint-disable-next-line jsdoc/require-returns\n /**\n * The anchor row, dynamically generated from the current route.\n */\n get anchorRow(): NavbarRow {\n const elements: NavInternalLink[] = this.anchorsSubject.value.map(a => {\n return {\n id: a.name,\n type: NavElementTypes.INTERNAL_LINK,\n route: this.currentRoute,\n collapse: 'never',\n ...a\n };\n });\n return {\n elements: elements\n };\n }\n\n // eslint-disable-next-line jsdoc/require-returns\n /**\n * The breadcrumbs, dynamically generated from the current route.\n */\n get breadcrumbs(): Breadcrumb[] {\n return this.breadcrumbsSubject.value;\n }\n\n constructor(private readonly router: Router, private readonly injector: EnvironmentInjector) {\n this.router.events.subscribe(e => {\n if (e instanceof NavigationEnd) {\n this.updateAnchors();\n this.updateBreadcrumbs();\n }\n });\n }\n\n private updateAnchors(): void {\n let route: ActivatedRoute | null = this.router.routerState.root.firstChild;\n while (route?.firstChild) {\n route = route.firstChild;\n }\n const data: DefaultNavRouteDataType | undefined = route?.snapshot.data;\n this.anchorsSubject.next(data?.anchors ?? []);\n }\n\n private updateBreadcrumbs(): void {\n const route: ActivatedRoute | null = this.router.routerState.root.firstChild;\n if (!route) {\n this.breadcrumbsSubject.next([]);\n return;\n }\n\n const breadcrumbs: Breadcrumb[] = [];\n for (const snapshot of route.snapshot.pathFromRoot) {\n const data: DefaultNavRouteDataType = snapshot.data;\n if (data.pageNotFoundConfig) {\n this.breadcrumbsSubject.next([]);\n return;\n }\n\n breadcrumbs.push({\n name: this.resolveBreadcrumbName(data, undefined, snapshot),\n route: snapshot.url.map(segment => segment.path).join('/'),\n icon: data.breadcrumbConfig?.icon,\n ariaLabel: data.breadcrumbConfig?.ariaLabel\n });\n\n if (data.breadcrumbConfig?.parentRoute && !breadcrumbs.find(b => b.route === data.breadcrumbConfig?.parentRoute)) {\n const parentRoute: Route | undefined = this.router.config.find(r => r.path === data.breadcrumbConfig?.parentRoute);\n\n if (!parentRoute) {\n throw new Error('parent route could not be resolved');\n }\n\n const parentData: DefaultNavRouteDataType | undefined = parentRoute.data;\n breadcrumbs.splice(breadcrumbs.length - 1, 0, {\n name: this.resolveBreadcrumbName(parentData, parentRoute, undefined),\n route: data.breadcrumbConfig?.parentRoute,\n icon: parentData?.breadcrumbConfig?.icon,\n ariaLabel: parentData?.breadcrumbConfig?.ariaLabel\n });\n }\n }\n\n this.breadcrumbsSubject.next(breadcrumbs);\n }\n\n private resolveBreadcrumbName(\n navData: DefaultNavRouteDataType | undefined,\n route: Route | undefined,\n snapshot: ActivatedRouteSnapshot | undefined\n ): string {\n const res: string | undefined = runInInjectionContext(this.injector, () => {\n if (navData?.breadcrumbConfig?.name == undefined) {\n return undefined;\n }\n if (typeof navData.breadcrumbConfig.name === 'string') {\n return navData.breadcrumbConfig.name;\n }\n\n const route: ActivatedRoute = inject(ActivatedRoute);\n return navData.breadcrumbConfig.name(snapshot ?? route.snapshot, this.router.routerState.snapshot);\n });\n if (res) {\n return res;\n }\n\n if (snapshot) {\n return snapshot.title ?? 'Start';\n }\n\n if (route) {\n if (route.title == undefined) {\n return 'Start';\n }\n if (typeof route.title === 'string') {\n return route.title;\n }\n }\n\n return 'Start';\n }\n}","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { CommonModule } from '@angular/common';\nimport { AfterContentChecked, Component, ElementRef, EnvironmentInjector, HostListener, Inject, InjectionToken, Input, runInInjectionContext, ViewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\nimport { IconDefinition } from '@fortawesome/angular-fontawesome';\nimport { faBars } from '@fortawesome/free-solid-svg-icons';\n\nimport { BaseNavElement, NavElement, NavElementPosition, NavElementTypes } from '../../models/nav-element.model';\nimport { NavbarRow } from '../../models/navbar.model';\nimport { NgxMatNavigationService } from '../../services/nav.service';\nimport { NavElementComponent } from '../nav-element/nav-element.component';\n\n// eslint-disable-next-line jsdoc/require-jsdoc\nexport const NGX_BURGER_MENU_ARIA_LABEL: InjectionToken<string> = new InjectionToken<string>(\n 'Provider for the burger menu aria label. Default: \"Open Sidenav\"',\n {\n providedIn: 'root',\n factory: () => 'Open Sidenav'\n }\n);\n\n// eslint-disable-next-line jsdoc/require-jsdoc\nexport const NGX_BURGER_MENU_ICON: InjectionToken<IconDefinition> = new InjectionToken<IconDefinition>(\n 'Provider for the burger menu icon. Default: \"faBars\"',\n {\n providedIn: 'root',\n factory: () => faBars\n }\n);\n\n/**\n * The navbar component.\n * Takes in your configuration and builds a toolbar as well as a sidenav accordingly.\n * Also handles responsiveness.\n */\n@Component({\n selector: 'ngx-mat-navigation-navbar',\n templateUrl: './navbar.component.html',\n styleUrls: ['./navbar.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n NavElementComponent\n ]\n})\nexport class NgxMatNavigationNavbarComponent implements AfterContentChecked {\n /**\n * The navbar rows to build the navbar from.\n */\n @Input({ required: true })\n navbarRows!: NavbarRow[];\n\n /**\n * The minimum height of the navbar.\n */\n @Input()\n minHeight?: number;\n\n /**\n * The minimum height of all other elements that are on the same level as the navbar component.\n */\n @Input()\n minHeightOtherElements?: number;\n\n /**\n * The minimum width of the sidenav.\n */\n @Input()\n minSidenavWidth?: string;\n\n // eslint-disable-next-line jsdoc/require-jsdoc\n @ViewChild('navbar', { read: ElementRef, static: true })\n navbar?: ElementRef<HTMLElement>;\n\n // eslint-disable-next-line jsdoc/require-jsdoc\n @ViewChild('content', { read: ElementRef, static: true })\n content?: ElementRef<HTMLElement>;\n\n // eslint-disable-next-line jsdoc/require-jsdoc\n burgerMenu!: NavElement;\n\n /**\n * What screen size to collapse.\n */\n collapse!: 'xl' | 'lg' | 'md' | 'sm';\n\n /**\n * The minimum height of the navbar in sanitized.\n */\n sanitizedContentMinHeight!: SafeStyle;\n\n /**\n * Whether or not the sidenav is currently opened.\n */\n sidenavOpened: boolean = false;\n\n // eslint-disable-next-line jsdoc/require-returns\n /**\n * All sidenav elements which conditions are fulfilled.\n */\n get sidenavElements(): NavElement[] {\n const res: NavElement[] = [];\n // anchorRow is excluded from sidenav\n for (const row of this.navbarRows) {\n res.push(\n ...row.elements\n .filter(e => this.checkCondition(e) && !this.checkVisible(e))\n .map(e => ({ ...e, id: `sidenav-${e.id}` }))\n );\n }\n return res;\n }\n\n constructor(\n private readonly sanitizer: DomSanitizer,\n readonly navService: NgxMatNavigationService,\n @Inject(NGX_BURGER_MENU_ICON)\n burgerMenuIcon: IconDefinition,\n @Inject(NGX_BURGER_MENU_ARIA_LABEL)\n burgerMenuAriaLabel: string,\n private readonly injector: EnvironmentInjector,\n private readonly breakpointObserver: BreakpointObserver\n ) {\n this.burgerMenu = {\n id: 'burger-menu',\n type: NavElementTypes.BUTTON_FLAT,\n name: '',\n icon: burgerMenuIcon,\n action: () => this.sidenavOpened = !this.sidenavOpened,\n collapse: 'never',\n ariaLabel: burgerMenuAriaLabel\n };\n\n this.breakpointObserver.observe(['(max-width: 767px)', '(max-width: 991px)', '(max-width: 1199px)'])\n .pipe(takeUntilDestroyed())\n .subscribe(result => {\n if (result.breakpoints['(max-width: 767px)']) {\n this.collapse = 'sm';\n }\n else if (result.breakpoints['(max-width: 991px)']) {\n this.collapse = 'md';\n }\n else if (result.breakpoints['(max-width: 1199px)']) {\n this.collapse = 'lg';\n }\n else {\n this.collapse = 'xl';\n }\n });\n }\n\n /**\n * Gets thee navbar elements for the row with the given index at the given position.\n * @param row - The index of the row to get the elements for.\n * @param position - Where in the row the elements are positioned.\n * @returns An array of the resolved navbar elements.\n */\n getNavbarElements(row: NavbarRow, position: NavElementPosition): NavElement[] {\n return row.elements.filter(e => {\n return (\n (e.position === position)\n || (e.position == undefined && position === 'left')\n )\n && this.checkCondition(e)\n && this.checkVisible(e);\n });\n }\n\n private checkCondition(element: NavElement): boolean {\n if (!element.condition) {\n return true;\n }\n // runInInjectionContext(...) is needed to enable the user to use injections in his condition functions.\n return runInInjectionContext(this.injector, () => element.condition ? element.condition() : true);\n }\n\n private checkVisible(element: NavElement): boolean {\n const collapse: BaseNavElement['collapse'] = element.collapse ?? 'sm';\n switch (collapse) {\n case 'always': {\n return false;\n }\n case 'never': {\n return true;\n }\n case 'lg': {\n return this.collapse === 'xl';\n }\n case 'md': {\n return ['lg', 'xl'].includes(this.collapse);\n }\n case 'sm': {\n return ['md', 'lg', 'xl'].includes(this.collapse);\n }\n }\n }\n\n // eslint-disable-next-line jsdoc/require-jsdoc\n getBurgerMenuClass(): string {\n if (this.sidenavElements.find(e => e.collapse === 'always')) {\n return 'burger-always';\n }\n if (this.sidenavElements.find(e => e.collapse === 'lg')) {\n return 'burger-lg';\n }\n if (this.sidenavElements.find(e => e.collapse === 'md')) {\n return 'burger-md';\n }\n if (this.sidenavElements.find(e => e.collapse === 'sm' || e.collapse === undefined)) {\n return 'burger-sm';\n }\n return 'burger-never';\n }\n\n ngAfterContentChecked(): void {\n this.updateHeights();\n }\n\n private updateHeights(): void {\n if (this.minHeight && typeof this.minHeight !== 'number') {\n throw new Error('Incorrect input data');\n }\n if (this.minHeightOtherElements && typeof this.minHeightOtherElements !== 'number') {\n throw new Error('Incorrect input data');\n }\n if (!this.navbar) {\n return;\n }\n if (!this.minHeight || (this.navbar.nativeElement.offsetHeight > this.minHeight)) {\n this.sanitizedContentMinHeight = this.sanitizer.bypassSecurityTrustStyle(\n `calc(100vh - 0px - ${this.navbar.nativeElement.offsetHeight + (this.minHeightOtherElements ?? 0)}px)`\n );\n return;\n }\n this.sanitizedContentMinHeight = this.sanitizer.bypassSecurityTrustStyle(\n `calc(100vh - 0px - ${(this.minHeight ?? 0) + (this.minHeightOtherElements ?? 0)}px)`\n );\n }\n\n /**\n * Updates the current screen width and filters the sidenav elements accordingly.\n * @throws When no height data is provided or the data is invalid.\n */\n @HostListener('window:resize')\n onResize(): void {\n this.updateHeights();\n this.sidenavOpened = false;\n }\n\n /**\n * Defines if the sidenav should be closed when the given element is clicked.\n * @param element - The element that has been clicked.\n */\n clickSidenavElement(element: NavElement): void {\n switch (element.type) {\n case NavElementTypes.TITLE:\n case NavElementTypes.IMAGE:\n case NavElementTypes.MENU:\n case NavElementTypes.CUSTOM: {\n return;\n }\n case NavElementTypes.TITLE_WITH_INTERNAL_LINK:\n case NavElementTypes.TITLE_WITH_EXTERNAL_LINK:\n case NavElementTypes.IMAGE_WITH_INTERNAL_LINK:\n case NavElementTypes.IMAGE_WITH_EXTERNAL_LINK:\n case NavElementTypes.INTERNAL_LINK:\n case NavElementTypes.BUTTON:\n case NavElementTypes.BUTTON_FLAT:\n case NavElementTypes.EXTERNAL_LINK:\n case NavElementTypes.TEXT: {\n this.sidenavOpened = false;\n }\n }\n }\n}","<!-- eslint-disable angular/cyclomatic-complexity -->\n<!-- eslint-disable angular/no-call-expression -->\n<nav #navbar id=\"toolbar\" [style.min-height.px]=\"minHeight ?? 0\">\n @for (row of navbarRows; track $index) {\n @if (getNavbarElements(row, 'left').length || getNavbarElements(row, 'center').length || getNavbarElements(row, 'right').length || $index === 0) {\n <div class=\"toolbar-row\">\n <div class=\"toolbar-col\">\n @for (element of getNavbarElements(row, 'left'); track element.id) {\n <ngx-mat-navigation-element\n [ngClass]=\"{\n 'collapse-sm': element.collapse === 'sm' || element.collapse === undefined,\n 'collapse-md': element.collapse === 'md',\n 'collapse-lg': element.collapse === 'lg',\n 'collapse-always': element.collapse === 'always',\n 'collapse-never': element.collapse === 'never',\n }\"\n [element]=\"element\" \n [(sidenavOpened)]=\"sidenavOpened\" \n (click)=\"clickSidenavElement(element)\"\n >\n </ngx-mat-navigation-element>\n }\n </div>\n <div class=\"toolbar-col\">\n @for (element of getNavbarElements(row, 'center'); track element.id) {\n <ngx-mat-navigation-element \n [ngClass]=\"{\n 'collapse-sm': element.collapse === 'sm' || element.collapse === undefined,\n 'collapse-md': element.collapse === 'md',\n 'collapse-lg': element.collapse === 'lg',\n 'collapse-always': element.collapse === 'always',\n 'collapse-never': element.collapse === 'never',\n }\"\n [element]=\"element\" \n [(sidenavOpened)]=\"sidenavOpened\"\n (click)=\"clickSidenavElement(element)\"\n >\n </ngx-mat-navigation-element>\n }\n </div>\n <div class=\"toolbar-col\">\n @for (element of getNavbarElements(row, 'right'); track element.id) {\n <ngx-mat-navigation-element\n [ngClass]=\"{\n 'collapse-sm': element.collapse === 'sm' || element.collapse === undefined,\n 'collapse-md': element.collapse === 'md',\n 'collapse-lg': element.collapse === 'lg',\n 'collapse-always': element.collapse === 'always',\n 'collapse-never': element.collapse === 'never',\n }\"\n [element]=\"element\" \n [(sidenavOpened)]=\"sidenavOpened\" \n (click)=\"clickSidenavElement(element)\"\n >\n </ngx-mat-navigation-element>\n }\n @if ($index === 0) {\n <ngx-mat-navigation-element [class]=\"getBurgerMenuClass()\" [element]=\"burgerMenu\"></ngx-mat-navigation-element>\n }\n </div>\n </div>\n }\n }\n @if (navService.anchorRow.elements.length) {\n <div class=\"anchor-row\">\n <div class=\"anchor-row-content\">\n @for (element of navService.anchorRow.elements; track element.id) {\n <ngx-mat-navigation-element [element]=\"element\" [(sidenavOpened)]=\"sidenavOpened\" (click)=\"clickSidenavElement(element)\"></ngx-mat-navigation-element>\n }\n </div>\n </div>\n }\n</nav>\n\n<div #content class=\"content\" [style.min-height]=\"sanitizedContentMinHeight\">\n <ng-content></ng-content>\n</div>\n\n@if (this.navbar && this.content) {\n <div class=\"sidenav\"\n [class.open]=\"sidenavOpened\"\n [style.min-width]=\"sidenavOpened ? minSidenavWidth : undefined\"\n [style.width.px]=\"sidenavOpened ? undefined : 0\"\n [style.top.px]=\"this.navbar.nativeElement.offsetHeight\"\n [style.height.px]=\"this.content.nativeElement.offsetHeight\"\n >\n @for (element of sidenavElements; track element.id) {\n <div class=\"sidenav-row\">\n <ngx-mat-navigation-element\n [ngClass]=\"{\n 'collapse-sm': element.collapse === 'sm' || element.collapse === undefined,\n 'collapse-md': element.collapse === 'md',\n 'collapse-lg': element.collapse === 'lg',\n 'collapse-always': element.collapse === 'always',\n 'collapse-never': element.collapse === 'never',\n }\"\n [isSidenavElement]=\"true\"\n [element]=\"element\"\n [(sidenavOpened)]=\"sidenavOpened\"\n (click)=\"clickSidenavElement(element)\"\n >\n </ngx-mat-navigation-element>\n </div>\n }\n </div>\n @if (sidenavOpened) {\n <div class=\"sidenav-backdrop\"\n [class.open]=\"sidenavOpened\"\n [style.top.px]=\"this.navbar.nativeElement.offsetHeight\"\n [style.height.px]=\"this.content.nativeElement.offsetHeight\"\n (click)=\"sidenavOpened = false\"\n >\n </div>\n }\n}","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { ActivatedRoute, RouterModule } from '@angular/router';\n\nimport { PageNotFoundConfig } from '../../models/page-not-found-config.model';\n\n/**\n * A default 404 Not found page to display when the user tries to access an unknown resource.\n */\n@Component({\n selector: 'ngx-mat-navigation-not-found',\n templateUrl: './not-found.component.html',\n styleUrls: ['./not-found.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n RouterModule\n ]\n})\nexport class NgxMatNavigationNotFoundComponent implements OnInit {\n /**\n * The custom configuration for the 404 Page.\n * You can alternatively define this on the data of the route with the key 'pageNotFoundData'.\n */\n @Input()\n config?: PageNotFoundConfig;\n\n // eslint-disable-next-line jsdoc/require-jsdoc\n title!: string;\n // eslint-disable-next-line jsdoc/require-jsdoc\n message!: string;\n // eslint-disable-next-line jsdoc/require-jsdoc\n buttonLabel!: string;\n // eslint-disable-next-line jsdoc/require-jsdoc\n homeRoute!: string;\n\n constructor(private readonly route: ActivatedRoute) {}\n\n ngOnInit(): void {\n const routeData: PageNotFoundConfig | undefined = this.route.snapshot.data['pageNotFoundConfig'] as PageNotFoundConfig | undefined;\n this.title = this.config?.title ?? routeData?.title ?? 'Page not found';\n this.message = this.config?.message\n ?? routeData?.message\n ?? 'The page you are looking for might have been removed, had its name changed or is temporarily unavailable.';\n this.buttonLabel = this.config?.buttonLabel ?? routeData?.buttonLabel ?? 'Homepage';\n this.homeRoute = this.config?.homeRoute ?? routeData?.homeRoute ?? '/';\n }\n}","<h1>404</h1>\n<h2>{{title}}</h2>\n<p>\n {{message}}\n</p>\n<a [routerLink]=\"homeRoute\">{{buttonLabel}}</a> ","import { Component } from '@angular/core';\nimport { FaIconComponent, IconDefinition } from '@fortawesome/angular-fontawesome';\nimport { faChevronRight } from '@fortawesome/free-solid-svg-icons';\n\nimport { NavElementTypes } from '../../models/nav-element.model';\nimport { NgxMatNavigationService } from '../../services/nav.service';\nimport { NavInternalLinkComponent } from '../nav-element/link/nav-internal-link/nav-internal-link.component';\n\n/**\n * The breadcrumbs component.\n * Is built dynamically from the data of the current route.\n */\n@Component({\n selector: 'ngx-mat-navigation-breadcrumbs',\n templateUrl: './breadcrumbs.component.html',\n styleUrls: ['./breadcrumbs.component.scss'],\n standalone: true,\n imports: [NavInternalLinkComponent, FaIconComponent]\n})\nexport class NgxMatNavigationBreadcrumbsComponent {\n // eslint-disable-next-line jsdoc/require-jsdoc\n readonly NavElementTypes: typeof NavElementTypes = NavElementTypes;\n\n // eslint-disable-next-line jsdoc/require-jsdoc\n readonly separator: IconDefinition = faChevronRight;\n\n constructor(readonly navService: NgxMatNavigationService) {}\n}","<nav id=\"breadcrumbs\">\n @for (bc of navService.breadcrumbs; track bc.route) {\n <nav-internal-link \n [class.first]=\"$first\"\n [isBreadcrumb]=\"true\"\n [isSidenavElement]=\"false\"\n [isMenuItem]=\"false\"\n [element]=\"{ id: bc.route, type: NavElementTypes.INTERNAL_LINK, route: bc.route, name: bc.name, icon: bc.icon, ariaLabel: bc.ariaLabel }\"\n >\n </nav-internal-link>\n @if (!$last) {\n <fa-icon [icon]=\"separator\"></fa-icon>\n }\n }\n</nav>","import { Route } from '@angular/router';\nimport { IconDefinition } from '@fortawesome/angular-fontawesome';\n\nimport { BaseNavElement, NavElementTypes } from './nav-element.model';\nimport { NavRoute } from './nav-route.model';\n\n/**\n * The base abstract definition for internal and external links.\n */\nexport abstract class NavLink extends BaseNavElement {\n /**\n * The name to display for the link.\n */\n name!: string;\n /**\n * An icon to display left of the link.\n */\n icon?: IconDefinition;\n /**\n * Whether or not the link should be opened in a new tab.\n */\n openInNewTab?: boolean;\n}\n\n/**\n * The definition for an internal route.\n */\nexport interface NavInternalLink<RouteType extends Route = NavRoute> extends NavLink {\n // eslint-disable-next-line jsdoc/require-jsdoc\n type: NavElementTypes.INTERNAL_LINK,\n /**\n * The route of the Link. Can be either an angular route or a simple string.\n */\n route: RouteType | string,\n /**\n * The fragment of the route used for anchor scrolling.\n */\n fragment?: string\n}\n\n/**\n * The definition for an external link.\n */\nexport interface NavExternalLink extends NavLink {\n // eslint-disable-next-line jsdoc/require-jsdoc\n type: NavElementTypes.EXTERNAL_LINK,\n /**\n * The url of the link.\n */\n url: string\n}","/*\n * Public API Surface of ngx-material-navigation\n */\nexport * from './components/footer/footer.component';\nexport * from './components/navbar/navbar.component';\nexport * from './components/not-found/not-found.component';\nexport * from './components/breadcrumbs/breadcrumbs.component';\nexport * from './components/nav-element/base-nav-element.component';\nexport * from './models/footer.model';\nexport * from './models/nav-button.model';\nexport * from './models/nav-custom.model';\nexport * from './models/nav-image.model';\nexport * from './models/nav-link.model';\nexport * from './models/nav-menu.model';\nexport * from './models/nav-route.model';\nexport * from './models/nav-title.model';\nexport * from './models/nav-element.model';\nexport * from './models/navbar.model';\nexport * from './models/page-not-found-config.model';\nexport * from './utilities/nav.utilities';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.NgxMatNavigationService","i1.NgxMatNavigationService"],"mappings":"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"}
package/index.d.ts CHANGED
@@ -610,7 +610,6 @@ declare class NgxMatNavigationNavbarComponent implements AfterContentChecked {
610
610
  getNavbarElements(row: NavbarRow, position: NavElementPosition): NavElement[];
611
611
  private checkCondition;
612
612
  private checkVisible;
613
- getElementClass(element: NavElement): string;
614
613
  getBurgerMenuClass(): string;
615
614
  ngAfterContentChecked(): void;
616
615
  private updateHeights;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ngx-material-navigation",
3
- "version": "20.2.0",
3
+ "version": "20.2.2",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "url": "https://github.com/Service-Soft/ngx-material-navigation"