ngx-material-navigation 15.1.2 → 15.1.3
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.
- package/esm2020/components/nav-element/text/nav-text/nav-text.component.mjs +3 -3
- package/fesm2015/ngx-material-navigation.mjs +2 -2
- package/fesm2015/ngx-material-navigation.mjs.map +1 -1
- package/fesm2020/ngx-material-navigation.mjs +2 -2
- package/fesm2020/ngx-material-navigation.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -7,11 +7,11 @@ import * as i1 from "@angular/common";
|
|
|
7
7
|
export class NavTextComponent extends NgxMatNavigationBaseNavElementComponent {
|
|
8
8
|
}
|
|
9
9
|
NavTextComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: NavTextComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
10
|
-
NavTextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.3", type: NavTextComponent, isStandalone: true, selector: "nav-text", usesInheritance: true, ngImport: i0, template: "<
|
|
10
|
+
NavTextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.3", type: NavTextComponent, isStandalone: true, selector: "nav-text", usesInheritance: true, ngImport: i0, template: "<div *ngFor=\"let paragraph of elementValue.paragraphs\">\n {{paragraph}}\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
11
11
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: NavTextComponent, decorators: [{
|
|
12
12
|
type: Component,
|
|
13
13
|
args: [{ selector: 'nav-text', standalone: true, imports: [
|
|
14
14
|
CommonModule
|
|
15
|
-
], template: "<
|
|
15
|
+
], template: "<div *ngFor=\"let paragraph of elementValue.paragraphs\">\n {{paragraph}}\n</div>" }]
|
|
16
16
|
}] });
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LXRleHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLW5hdmlnYXRpb24vc3JjL2NvbXBvbmVudHMvbmF2LWVsZW1lbnQvdGV4dC9uYXYtdGV4dC9uYXYtdGV4dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtbmF2aWdhdGlvbi9zcmMvY29tcG9uZW50cy9uYXYtZWxlbWVudC90ZXh0L25hdi10ZXh0L25hdi10ZXh0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdDQUF3QztBQUN4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxQyxPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7O0FBWTNGLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSx1Q0FBNkQ7OzZHQUF0RixnQkFBZ0I7aUdBQWhCLGdCQUFnQiwyRkNoQjdCLG9GQUVNLHlERFdFLFlBQVk7MkZBR1AsZ0JBQWdCO2tCQVY1QixTQUFTOytCQUVJLFVBQVUsY0FHUixJQUFJLFdBQ1A7d0JBQ0wsWUFBWTtxQkFDZiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGpzZG9jL3JlcXVpcmUtanNkb2MgKi9cbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdkVsZW1lbnRUeXBlcyB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9uYXYubW9kZWwnO1xuaW1wb3J0IHsgTmd4TWF0TmF2aWdhdGlvbkJhc2VOYXZFbGVtZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYmFzZS1uYXYtZWxlbWVudC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnbmF2LXRleHQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9uYXYtdGV4dC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbmF2LXRleHQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBOYXZUZXh0Q29tcG9uZW50IGV4dGVuZHMgTmd4TWF0TmF2aWdhdGlvbkJhc2VOYXZFbGVtZW50Q29tcG9uZW50PE5hdkVsZW1lbnRUeXBlcy5URVhUPiB7fSIsIjxkaXYgKm5nRm9yPVwibGV0IHBhcmFncmFwaCBvZiBlbGVtZW50VmFsdWUucGFyYWdyYXBoc1wiPlxuICB7e3BhcmFncmFwaH19XG48L2Rpdj4iXX0=
|
|
@@ -460,12 +460,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImpor
|
|
|
460
460
|
class NavTextComponent extends NgxMatNavigationBaseNavElementComponent {
|
|
461
461
|
}
|
|
462
462
|
NavTextComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: NavTextComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
463
|
-
NavTextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.3", type: NavTextComponent, isStandalone: true, selector: "nav-text", usesInheritance: true, ngImport: i0, template: "<
|
|
463
|
+
NavTextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.3", type: NavTextComponent, isStandalone: true, selector: "nav-text", usesInheritance: true, ngImport: i0, template: "<div *ngFor=\"let paragraph of elementValue.paragraphs\">\n {{paragraph}}\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
464
464
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: NavTextComponent, decorators: [{
|
|
465
465
|
type: Component,
|
|
466
466
|
args: [{ selector: 'nav-text', standalone: true, imports: [
|
|
467
467
|
CommonModule
|
|
468
|
-
], template: "<
|
|
468
|
+
], template: "<div *ngFor=\"let paragraph of elementValue.paragraphs\">\n {{paragraph}}\n</div>" }]
|
|
469
469
|
}] });
|
|
470
470
|
|
|
471
471
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-material-navigation.mjs","sources":["../../../projects/ngx-material-navigation/src/models/nav.model.ts","../../../projects/ngx-material-navigation/src/models/nav-link.model.ts","../../../projects/ngx-material-navigation/src/services/nav.service.ts","../../../projects/ngx-material-navigation/src/utilities/nav.utilities.ts","../../../projects/ngx-material-navigation/src/components/nav-element/base-nav-element.component.ts","../../../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-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/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/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-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/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/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/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/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/utilities/purify.utilities.ts","../../../projects/ngx-material-navigation/src/components/nav-element/html/nav-html/nav-html.component.ts","../../../projects/ngx-material-navigation/src/components/nav-element/html/nav-html/nav-html.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/nav-element.component.ts","../../../projects/ngx-material-navigation/src/components/nav-element/nav-element.component.html","../../../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/nav-element/nav-element.module.ts","../../../projects/ngx-material-navigation/src/components/navbar/navbar.module.ts","../../../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/components/footer/footer.module.ts","../../../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/not-found/not-found.module.ts","../../../projects/ngx-material-navigation/src/public-api.ts","../../../projects/ngx-material-navigation/src/ngx-material-navigation.ts"],"sourcesContent":["import { Route } from '@angular/router';\nimport { NavButton } from './nav-button.model';\nimport { NavHtml } from './nav-html.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 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 HTML = 'html',\n TEXT = 'text'\n}\n\n/**\n * The abstract base class of any nav element.\n */\nexport abstract class BaseNavElement {\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?: 'lg' | 'md' | 'sm' | 'never' | 'always';\n /**\n * A condition that must be met for the element to be displayed.\n */\n condition?: () => boolean;\n}\n\n/**\n * One of the many NavElements.\n */\nexport type NavElement<RouteType extends Route = NavRoute> =\n NavTitle | NavTitleWithInternalLink<RouteType> | NavTitleWithExternalLink\n | NavImage | NavImageWithExternalLink | NavImageWithInternalLink<RouteType>\n | NavButton | NavInternalLink<RouteType> | NavExternalLink | NavMenu | NavHtml | NavText;","import { Route } from '@angular/router';\nimport { NavRoute } from './nav-route.model';\nimport { BaseNavElement, NavElementTypes } from './nav.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?: string;\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\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}","import { EnvironmentInjector, Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { FooterRow, NavFooterElement } from '../models/footer.model';\nimport { NavElement } from '../models/nav.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 * The subject of the currently visible navbar rows.\n */\n readonly navbarRowsSubject: BehaviorSubject<NavbarRow[]> = new BehaviorSubject<NavbarRow[]>([]);\n\n /**\n * The subject of the currently visible sidenav elements.\n */\n readonly footerRowsSubject: BehaviorSubject<FooterRow[]> = new BehaviorSubject<FooterRow[]>([]);\n\n constructor(private readonly injector: EnvironmentInjector) { }\n\n /**\n * Gets the rows that are really displayed in the navbar and not collapsed to the sidenav.\n *\n * @param navbarRows - All navbar rows, including the ones collapsed to the sidenav.\n * @param screenWidthName - Name of the current width of the screen.\n * @returns All rows that are displayed inside the navbar.\n */\n getNavbarRows(navbarRows: NavbarRow[], screenWidthName: 'lg' | 'md' | 'sm'): NavbarRow[] {\n const emptyRows: NavbarRow[] = navbarRows.filter(r =>\n !this.getNavbarElementsForRow('left', screenWidthName, r).length\n && !this.getNavbarElementsForRow('center', screenWidthName, r).length\n && !this.getNavbarElementsForRow('right', screenWidthName, r).length\n );\n return navbarRows.filter(r => !emptyRows.includes(r));\n }\n\n /**\n * Get all elements at the provided position with the provided screenWidth from the given elements.\n *\n * @param position - The position for which to get the elements.\n * @param screenWidthName - Name of the current width of the screen.\n * @param row - The row to get the elements from.\n * @returns All Elements for the provided input.\n */\n getNavbarElementsForRow(position: 'left' | 'center' | 'right', screenWidthName: 'lg' | 'md' | 'sm', row: NavbarRow): NavElement[] {\n let res: NavElement[] = [];\n res = res.concat(row.elements);\n res = res.filter(e => this.checkCondition(e));\n\n if (position === 'left') {\n res = res.filter(e => !e.position || e.position === position);\n }\n else {\n res = res.filter(e => e.position === position);\n }\n switch (screenWidthName) {\n case 'lg':\n return res.filter(e => e.collapse !== 'always' && e.collapse !== 'lg');\n case 'md':\n return res.filter(e => e.collapse !== 'always' && e.collapse !== 'lg' && e.collapse !== 'md');\n case 'sm':\n return res.filter(e => e.collapse === 'never');\n }\n }\n\n private checkCondition(element: NavElement | NavFooterElement): boolean {\n if (!element.condition) {\n return true;\n }\n // runInContext(...) is needed to enable the user to use injections in his condition functions.\n return this.injector.runInContext(() => element.condition ? element.condition() : true);\n }\n\n /**\n * Gets all the elements to display in the sidenav.\n *\n * @param rows - The rows to get the elements from.\n * @param screenWidthName - Name of the current width of the screen.\n * @returns The NavElements to display in the sidenav.\n */\n getSidenavElements(rows: NavbarRow[], screenWidthName: 'lg' | 'md' | 'sm'): NavElement[] {\n let res: NavElement[] = [];\n for (const row of rows) {\n res = res.concat(row.elements);\n }\n res = res.filter(e => this.checkCondition(e));\n switch (screenWidthName) {\n case 'lg':\n return res.filter(e => e.collapse === 'always' || e.collapse === 'lg');\n case 'md':\n return res.filter(e => e.collapse === 'always' || e.collapse === 'lg' || e.collapse === 'md');\n case 'sm':\n // eslint-disable-next-line max-len\n return res.filter(e => !e.collapse || e.collapse === 'always' || e.collapse === 'lg' || e.collapse === 'md' || e.collapse === 'sm');\n }\n }\n\n /**\n * Get all elements at the provided position from the given elements.\n *\n * @param position - The position for which to get the elements.\n * @param row - The row to get the elements from.\n * @returns All Elements for the provided input.\n */\n getFooterElementsForRow(position: 'left' | 'center' | 'right', row: FooterRow): 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 || e.position === position);\n }\n return res.filter(e => e.position === position);\n }\n}","import { Route } from '@angular/router';\nimport { FooterRow, NavFooterElement } from '../models/footer.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 { NavElement, NavElementTypes } from '../models/nav.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 // eslint-disable-next-line jsdoc/require-jsdoc\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 *\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 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) as NavInternalLink[];\n }\n}","import { Component, Input } from '@angular/core';\nimport { NavButton } from '../../models/nav-button.model';\nimport { NavHtml } from '../../models/nav-html.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';\nimport { NavElement, NavElementTypes } from '../../models/nav.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()\n element!: NavElement;\n\n /**\n * Whether or not the element is inside a sidenav.\n */\n @Input()\n isSidenavElement!: boolean;\n\n /**\n * Whether or not the element is inside a menu.\n */\n @Input()\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 : T extends NavElementTypes.HTML ? NavHtml\n : T extends NavElementTypes.TEXT ? NavText\n : never;","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'nav-title',\n templateUrl: './nav-title.component.html',\n styleUrls: ['./nav-title.component.scss', '../base-nav-title.scss'],\n standalone: true,\n imports: [\n CommonModule\n ]\n})\nexport class NavTitleComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.TITLE> { }","<h1 [class.sidenavElement]=\"isSidenavElement\" [class.menuItem]=\"isMenuItem\">\n <i *ngIf=\"elementValue.icon\" [ngClass]=\"elementValue.icon\"></i>\n {{elementValue.title}}\n</h1>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'nav-title-with-internal-link',\n templateUrl: './nav-title-with-internal-link.component.html',\n styleUrls: ['./nav-title-with-internal-link.component.scss', '../base-nav-title.scss'],\n standalone: true,\n imports: [\n CommonModule,\n RouterModule\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 id=\"title-link\" disableRipple\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>\n <h1>\n <i *ngIf=\"elementValue.icon\" [ngClass]=\"elementValue.icon\"></i>\n {{elementValue.title}}\n </h1>\n</a>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'nav-title-with-external-link',\n templateUrl: './nav-title-with-external-link.component.html',\n styleUrls: ['./nav-title-with-external-link.component.scss', '../base-nav-title.scss'],\n standalone: true,\n imports: [\n CommonModule\n ]\n})\nexport class NavTitleWithExternalLinkComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.TITLE_WITH_EXTERNAL_LINK> { }","<a class=\"title-link\" disableRipple\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 <h1>\n <i *ngIf=\"elementValue.icon\" [ngClass]=\"elementValue.icon\"></i>\n {{elementValue.title}}\n </h1>\n</a>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'nav-image',\n templateUrl: './nav-image.component.html',\n styleUrls: ['./nav-image.component.scss', '../base-nav-image.scss'],\n standalone: true,\n imports: [\n CommonModule\n ]\n})\nexport class NavImageComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.IMAGE> { }","<img [ngStyle]=\"{ 'height.px': elementValue.height }\" [class.sidenavElement]=\"isSidenavElement\" [class.menuItem]=\"isMenuItem\" [src]=\"elementValue.url\">","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'nav-image-with-internal-link',\n templateUrl: './nav-image-with-internal-link.component.html',\n styleUrls: ['./nav-image-with-internal-link.component.scss', '../base-nav-image.scss'],\n standalone: true,\n imports: [\n CommonModule,\n RouterModule\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 id=\"image-link\" disableRipple\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>\n <img [ngStyle]=\"{ 'height.px': elementValue.height }\" [src]=\"elementValue.url\">\n</a>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'nav-image-with-external-link',\n templateUrl: './nav-image-with-external-link.component.html',\n styleUrls: ['./nav-image-with-external-link.component.scss', '../base-nav-image.scss'],\n standalone: true,\n imports: [\n CommonModule\n ]\n})\nexport class NavImageWithExternalLinkComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.IMAGE_WITH_EXTERNAL_LINK> { }","<a id=\"image-link\" disableRipple\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 [ngStyle]=\"{ 'height.px': elementValue.height }\" [src]=\"elementValue.url\">\n</a>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component, EnvironmentInjector } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/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 MatButtonModule\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 this.injector.runInContext(() => this.elementValue.action());\n }\n}","<button mat-raised-button\n (click)=\"runAction()\"\n [class.sidenavElement]=\"isSidenavElement\"\n [class.menuItem]=\"isMenuItem\"\n>\n <i *ngIf=\"elementValue.icon\" [ngClass]=\"elementValue.icon\"></i>\n {{elementValue.name}}\n</button>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { NavButtonComponent } from '../nav-button/nav-button.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/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 MatButtonModule\n ]\n})\nexport class NavButtonFlatComponent extends NavButtonComponent {}","<button mat-button\n (click)=\"runAction()\"\n [class.sidenavElement]=\"isSidenavElement\"\n [class.menuItem]=\"isMenuItem\"\n>\n <i *ngIf=\"elementValue.icon\" [ngClass]=\"elementValue.icon\"></i>\n {{elementValue.name}}\n</button>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { RouterModule } from '@angular/router';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/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 MatButtonModule,\n RouterModule\n ]\n})\nexport class NavInternalLinkComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.INTERNAL_LINK> {\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 mat-button\n [routerLink]=\"route\"\n [target]=\"elementValue.openInNewTab ? '_blank' : '_self'\"\n [rel]=\"elementValue.openInNewTab ? 'noreferrer noopener' : undefined\"\n [class.sidenavElement]=\"isSidenavElement\"\n [class.menuItem]=\"isMenuItem\"\n>\n <i *ngIf=\"elementValue.icon\" [ngClass]=\"elementValue.icon\"></i> \n {{elementValue.name}}\n</a>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/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 MatButtonModule\n ]\n})\nexport class NavExternalLinkComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.EXTERNAL_LINK> { }","<a mat-button\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>\n <i *ngIf=\"elementValue.icon\" [ngClass]=\"elementValue.icon\"></i>\n {{elementValue.name}}\n</a>","import { sanitize } from 'dompurify';\n\n/**\n * Contains HelperMethods around handling the purification of html strings.\n * Is less strict than angular's own sanitizer.\n */\nexport abstract class PurifyUtilities {\n\n /**\n * Sanitizes the given source string.\n *\n * @param source - The html value as a string.\n * @returns A sanitized string of the given source.\n */\n static sanitize(source: string): string {\n return sanitize(source);\n }\n}","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { PurifyUtilities } from '../../../../utilities/purify.utilities';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'nav-html',\n templateUrl: './nav-html.component.html',\n styleUrls: ['./nav-html.component.scss'],\n standalone: true,\n imports: [\n CommonModule\n ]\n})\nexport class NavHtmlComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.HTML> {\n\n constructor(private readonly sanitizer: DomSanitizer) {\n super();\n }\n\n get sanitizedHtml(): SafeHtml {\n return this.sanitizer.bypassSecurityTrustHtml(PurifyUtilities.sanitize(this.elementValue.html));\n }\n}","<span [class.sidenavElement]=\"isSidenavElement\" [class.menuItem]=\"isMenuItem\" [innerHtml]=\"sanitizedHtml\">\n</span>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'nav-text',\n templateUrl: './nav-text.component.html',\n styleUrls: ['./nav-text.component.scss'],\n standalone: true,\n imports: [\n CommonModule\n ]\n})\nexport class NavTextComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.TEXT> {}","<p *ngFor=\"let paragraph of elementValue.paragraphs\">\n {{paragraph}}\n</p>","import { AfterContentChecked, Component, HostListener, Input, OnInit, ViewChild } from '@angular/core';\nimport { MatButton } from '@angular/material/button';\nimport { MatSidenav } from '@angular/material/sidenav';\nimport { NavElement, NavElementTypes } from '../../models/nav.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})\nexport class NavElementComponent implements AfterContentChecked, OnInit {\n\n NavUtilities = NavUtilities;\n NavElementTypes = NavElementTypes;\n\n /**\n * The element to display.\n */\n @Input()\n element!: NavElement;\n\n /**\n * A reference to the sidenav. Is needed for the menu to close the sidenav.\n */\n @Input()\n sidenav?: MatSidenav;\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 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 protected internalIsMenuItem!: boolean;\n\n @ViewChild('menuButton')\n menuButton?: MatButton;\n\n menuWidth!: number;\n\n ngOnInit(): void {\n this.internalIsSidenavElement = this.isSidenavElement ?? false;\n this.internalIsMenuItem = this.isMenuItem ?? false;\n }\n\n ngAfterContentChecked(): void {\n if (this.menuButton) {\n this.menuWidth = this.getMenuWidth();\n }\n }\n\n /**\n * Updates the width of the menu to the value of its button.\n */\n @HostListener('window:resize', ['$event'])\n onResize(): void {\n if (this.menuButton) {\n this.menuWidth = this.getMenuWidth();\n }\n }\n\n private getMenuWidth(): number {\n return (this.menuButton?._elementRef.nativeElement as HTMLElement).offsetWidth;\n }\n\n /**\n * Defines if the sidenav should be closed when the given element is clicked.\n *\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.HTML:\n return;\n default:\n void this.sidenav?.close();\n }\n }\n}","<div [ngSwitch]=\"element.type\">\n <!-------------------------------------------->\n <!------------------Titles-------------------->\n <!-------------------------------------------->\n <div *ngSwitchCase=\"NavElementTypes.TITLE\">\n <nav-title [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-title>\n </div>\n <div *ngSwitchCase=\"NavElementTypes.TITLE_WITH_INTERNAL_LINK\">\n <nav-title-with-internal-link [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-title-with-internal-link>\n </div>\n <div *ngSwitchCase=\"NavElementTypes.TITLE_WITH_EXTERNAL_LINK\">\n <nav-title-with-external-link [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-title-with-external-link>\n </div>\n\n <!-------------------------------------------->\n <!-------------------Image-------------------->\n <!-------------------------------------------->\n <div *ngSwitchCase=\"NavElementTypes.IMAGE\">\n <nav-image [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-image>\n </div>\n <div *ngSwitchCase=\"NavElementTypes.IMAGE_WITH_EXTERNAL_LINK\">\n <nav-image-with-internal-link [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-image-with-internal-link>\n </div>\n <div *ngSwitchCase=\"NavElementTypes.IMAGE_WITH_INTERNAL_LINK\">\n <nav-image-with-external-link [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-image-with-external-link>\n </div>\n \n <!-------------------------------------------->\n <!-------------------Button------------------->\n <!-------------------------------------------->\n <div *ngSwitchCase=\"NavElementTypes.BUTTON\">\n <nav-button [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-button>\n </div>\n <div *ngSwitchCase=\"NavElementTypes.BUTTON_FLAT\">\n <nav-button-flat [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-button-flat>\n </div>\n\n <!-------------------------------------------->\n <!--------------------Link-------------------->\n <!-------------------------------------------->\n <div *ngSwitchCase=\"NavElementTypes.INTERNAL_LINK\">\n <nav-internal-link [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-internal-link>\n </div>\n <div *ngSwitchCase=\"NavElementTypes.EXTERNAL_LINK\">\n <nav-external-link [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-external-link>\n </div>\n\n <!-------------------------------------------->\n <!--------------------HTML-------------------->\n <!-------------------------------------------->\n <div *ngSwitchCase=\"NavElementTypes.HTML\">\n <nav-html [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-html>\n </div>\n\n <!-------------------------------------------->\n <!--------------------TEXT-------------------->\n <!-------------------------------------------->\n <div *ngSwitchCase=\"NavElementTypes.TEXT\">\n <nav-text [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-text>\n </div>\n\n <!-------------------------------------------->\n <!--------------------Menu-------------------->\n <!-------------------------------------------->\n <div *ngSwitchCase=\"NavElementTypes.MENU\">\n <button #menuButton *ngIf=\"internalIsMenuItem\"\n mat-menu-item\n [matMenuTriggerFor]=\"menu\"\n [class.sidenavElement]=\"isSidenavElement\"\n >\n <i *ngIf=\"NavUtilities.asMenu(element).icon\" [ngClass]=\"NavUtilities.asMenu(element).icon\"></i>\n {{NavUtilities.asMenu(element).name}}\n </button>\n\n <button #menuButton *ngIf=\"!internalIsMenuItem\"\n mat-button\n [matMenuTriggerFor]=\"menu\"\n [class.sidenavElement]=\"isSidenavElement\"\n >\n <i *ngIf=\"NavUtilities.asMenu(element).icon\" [ngClass]=\"NavUtilities.asMenu(element).icon\"></i>\n {{NavUtilities.asMenu(element).name}}\n </button>\n </div>\n\n <mat-menu #menu=\"matMenu\" [overlapTrigger]=\"false\" [style.min-width.px]=\"menuWidth\">\n <div *ngFor=\"let menuElement of NavUtilities.asMenu(element).elements\" [style.min-width.px]=\"menuWidth\">\n <ngx-mat-navigation-element (click)=\"clickSidenavElement(menuElement)\" [isSidenavElement]=\"internalIsSidenavElement\" [sidenav]=\"sidenav\" [isMenuItem]=\"true\" [element]=\"menuElement\">\n </ngx-mat-navigation-element>\n </div>\n </mat-menu>\n \n</div>","import { AfterContentChecked, Component, ElementRef, HostListener, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { MatSidenav } from '@angular/material/sidenav';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\nimport { Subject, takeUntil } from 'rxjs';\nimport { NavElement, NavElementTypes } from '../../models/nav.model';\nimport { NavbarRow } from '../../models/navbar.model';\nimport { NgxMatNavigationService } from '../../services/nav.service';\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})\nexport class NgxMatNavigationNavbarComponent implements OnInit, OnDestroy, AfterContentChecked {\n private readonly onDestroy: Subject<void> = new Subject();\n\n /**\n * The navbar rows to build the navbar from.\n */\n @Input()\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 @ViewChild('sidenav')\n sidenav?: MatSidenav;\n\n @ViewChild('navbar', { read: ElementRef })\n navbar?: ElementRef<HTMLElement>;\n\n burgerMenu: NavElement = {\n type: NavElementTypes.BUTTON_FLAT,\n name: '',\n icon: 'fas fa-bars',\n action: () => this.sidenav?.toggle(),\n collapse: 'never'\n };\n\n sanitizedMinHeight!: SafeStyle;\n\n screenWidthName: 'lg' | 'md' | 'sm' = this.getCurrentScreenWidthName();\n\n internalNavbarRows: NavbarRow[] = [];\n\n internalSidenavElements: NavElement[] = [];\n\n constructor(private readonly sanitizer: DomSanitizer, public navService: NgxMatNavigationService) {}\n\n ngOnInit(): void {\n this.navService.navbarRowsSubject.pipe(takeUntil(this.onDestroy)).subscribe(navbarRows => {\n this.internalNavbarRows = navbarRows;\n this.internalSidenavElements = this.navService.getSidenavElements(navbarRows, this.screenWidthName);\n if (!this.internalSidenavElements.length && this.sidenav && this.sidenav.opened) {\n void this.sidenav.close();\n }\n });\n this.navService.navbarRowsSubject.next(this.navbarRows);\n }\n\n ngOnDestroy(): void {\n this.onDestroy.next(undefined);\n this.onDestroy.complete();\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 if (!this.minHeight || this.navbar.nativeElement.offsetHeight > this.minHeight) {\n this.sanitizedMinHeight = this.sanitizer.bypassSecurityTrustStyle(\n // eslint-disable-next-line max-len\n `calc(100vh - ${this.navbar.nativeElement.offsetHeight + (this.minHeightOtherElements ? this.minHeightOtherElements : 0)}px)`\n );\n }\n else {\n this.sanitizedMinHeight = this.sanitizer.bypassSecurityTrustStyle(\n // eslint-disable-next-line max-len\n `calc(100vh - ${(this.minHeight ? this.minHeight : 0) + (this.minHeightOtherElements ? this.minHeightOtherElements : 0)}px)`\n );\n }\n }\n }\n\n /**\n * Updates the current screen width and filters the sidenav elements accordingly.\n *\n * @throws When no height data is provided or the data is invalid.\n */\n @HostListener('window:resize', ['$event'])\n onResize(): void {\n this.updateHeights();\n this.screenWidthName = this.getCurrentScreenWidthName();\n this.navService.navbarRowsSubject.next(this.navService.navbarRowsSubject.value);\n }\n\n private getCurrentScreenWidthName(): 'lg' | 'md' | 'sm' {\n if (window.innerWidth < 768) {\n return 'sm';\n }\n else if (window.innerWidth < 992) {\n return 'md';\n }\n else {\n return 'lg';\n }\n }\n\n /**\n * Defines if the sidenav should be closed when the given element is clicked.\n *\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.HTML:\n return;\n default:\n void this.sidenav?.close();\n }\n }\n}","<mat-toolbar [style.min-height.px]=\"minHeight ? minHeight : 0\" id=\"toolbar\" #navbar *ngIf=\"navService.getNavbarRows(navbarRows, screenWidthName).length>1\" class=\"mat-elevation-z8\">\n <mat-toolbar-row class=\"toolbar-row\" *ngFor=\"let row of navService.getNavbarRows(navbarRows, screenWidthName)\">\n <div class=\"toolbar-col\">\n <ngx-mat-navigation-element *ngFor=\"let element of navService.getNavbarElementsForRow('left', screenWidthName, row)\" [element]=\"element\"></ngx-mat-navigation-element>\n </div>\n <div class=\"toolbar-col\">\n <ngx-mat-navigation-element *ngFor=\"let element of navService.getNavbarElementsForRow('center', screenWidthName, row)\" [element]=\"element\"></ngx-mat-navigation-element>\n </div>\n <div class=\"toolbar-col\">\n <span *ngFor=\"let element of navService.getNavbarElementsForRow('right', screenWidthName, row)\">\n <ngx-mat-navigation-element [element]=\"element\"></ngx-mat-navigation-element>\n </span>\n <span *ngIf=\"internalSidenavElements.length && (navbarRows.indexOf(row) === 0)\">\n <ngx-mat-navigation-element [element]=\"burgerMenu\"></ngx-mat-navigation-element>\n </span>\n </div>\n </mat-toolbar-row>\n</mat-toolbar>\n\n<mat-toolbar [style.min-height.px]=\"minHeight ? minHeight : 0\" id=\"toolbar\" #navbar *ngIf=\"!(navService.getNavbarRows(navbarRows, screenWidthName).length>1)\" class=\"mat-elevation-z8\">\n <div class=\"toolbar-row\">\n <div class=\"toolbar-col\">\n <ngx-mat-navigation-element *ngFor=\"let element of navService.getNavbarElementsForRow('left', screenWidthName, navbarRows[0])\" [element]=\"element\"></ngx-mat-navigation-element>\n </div>\n <div class=\"toolbar-col\">\n <ngx-mat-navigation-element *ngFor=\"let element of navService.getNavbarElementsForRow('center', screenWidthName, navbarRows[0])\" [element]=\"element\"></ngx-mat-navigation-element>\n </div>\n <div class=\"toolbar-col\">\n <ngx-mat-navigation-element *ngFor=\"let element of navService.getNavbarElementsForRow('right', screenWidthName, navbarRows[0])\" [element]=\"element\"></ngx-mat-navigation-element>\n <ngx-mat-navigation-element *ngIf=\"internalSidenavElements.length\" [element]=\"burgerMenu\"></ngx-mat-navigation-element>\n </div>\n </div>\n</mat-toolbar>\n\n<mat-sidenav-container style=\"background-color: transparent;\" [style.min-height]=\"sanitizedMinHeight\">\n <mat-sidenav style=\"padding-top: 12px; padding-bottom: 12px;\" #sidenav position=\"end\" [style.min-width]=\"minSidenavWidth\" [autoFocus]=\"false\">\n <div style=\"margin-left: 12px; margin-right: 12px;\" *ngFor=\"let element of internalSidenavElements\">\n <ngx-mat-navigation-element (click)=\"clickSidenavElement(element)\" [sidenav]=\"sidenav\" [isSidenavElement]=\"true\" [element]=\"element\"></ngx-mat-navigation-element>\n </div>\n </mat-sidenav>\n <mat-sidenav-content>\n <ng-content></ng-content>\n </mat-sidenav-content>\n</mat-sidenav-container>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { NavButtonFlatComponent } from './button/nav-button-flat/nav-button-flat.component';\nimport { NavButtonComponent } from './button/nav-button/nav-button.component';\nimport { NavHtmlComponent } from './html/nav-html/nav-html.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 { NavImageComponent } from './image/nav-image/nav-image.component';\nimport { NavExternalLinkComponent } from './link/nav-external-link/nav-external-link.component';\nimport { NavInternalLinkComponent } from './link/nav-internal-link/nav-internal-link.component';\nimport { NavElementComponent } from './nav-element.component';\nimport { NavTextComponent } from './text/nav-text/nav-text.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 { NavTitleComponent } from './title/nav-title/nav-title.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatMenuModule,\n MatButtonModule,\n MatSidenavModule,\n NavTitleComponent,\n NavTitleWithInternalLinkComponent,\n NavTitleWithExternalLinkComponent,\n NavImageComponent,\n NavImageWithInternalLinkComponent,\n NavImageWithExternalLinkComponent,\n NavButtonComponent,\n NavButtonFlatComponent,\n NavInternalLinkComponent,\n NavExternalLinkComponent,\n NavHtmlComponent,\n NavTextComponent\n ],\n declarations: [\n NavElementComponent\n ],\n exports: [NavElementComponent]\n})\nexport class NavElementModule { }","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { NgxMatNavigationNavbarComponent } from './navbar.component';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { NavElementModule } from '../nav-element/nav-element.module';\nimport { MatSidenavModule } from '@angular/material/sidenav';\n\n@NgModule({\n declarations: [NgxMatNavigationNavbarComponent],\n imports: [\n CommonModule,\n MatToolbarModule,\n NavElementModule,\n MatSidenavModule\n ],\n exports: [NgxMatNavigationNavbarComponent]\n})\nexport class NgxMatNavigationNavbarModule {}","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { FooterRow } from '../../models/footer.model';\nimport { NgxMatNavigationService } from '../../services/nav.service';\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})\nexport class NgxMatNavigationFooterComponent implements OnInit, OnDestroy {\n private readonly onDestroy: Subject<void> = new Subject();\n\n /**\n * The minimum height of the footer.\n */\n @Input()\n minHeight!: number;\n\n /**\n * The footer rows to build the footer from.\n */\n @Input()\n footerRows!: FooterRow[];\n\n internalFooterRows: FooterRow[] = [];\n\n constructor(public navService: NgxMatNavigationService) { }\n\n ngOnInit(): void {\n this.navService.footerRowsSubject.pipe(takeUntil(this.onDestroy)).subscribe(footerRows => {\n this.internalFooterRows = footerRows;\n });\n this.navService.footerRowsSubject.next(this.footerRows);\n }\n\n ngOnDestroy(): void {\n this.onDestroy.next(undefined);\n this.onDestroy.complete();\n }\n}","<footer [style.min-height.px]=\"minHeight\">\n <div class=\"footer-row\" *ngFor=\"let row of internalFooterRows\">\n <div class=\"footer-col\" id=\"left\">\n <ngx-mat-navigation-element *ngFor=\"let element of navService.getFooterElementsForRow('left', row)\" [element]=\"element\"></ngx-mat-navigation-element>\n </div>\n <div class=\"footer-col\" id=\"center\">\n <ngx-mat-navigation-element *ngFor=\"let element of navService.getFooterElementsForRow('center', row)\" [element]=\"element\"></ngx-mat-navigation-element>\n </div>\n <div class=\"footer-col\" id=\"right\">\n <ngx-mat-navigation-element *ngFor=\"let element of navService.getFooterElementsForRow('right', row)\" [element]=\"element\"></ngx-mat-navigation-element>\n </div>\n </div>\n</footer>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { NavElementModule } from '../nav-element/nav-element.module';\nimport { NgxMatNavigationFooterComponent } from './footer.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatToolbarModule,\n NavElementModule\n ],\n declarations: [NgxMatNavigationFooterComponent],\n exports: [NgxMatNavigationFooterComponent]\n})\nexport class NgxMatNavigationFooterModule { }","import { Component, Input, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\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})\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 title!: string;\n message!: string;\n buttonLabel!: string;\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 // eslint-disable-next-line max-len\n this.message = this.config?.message ?? routeData?.message ?? '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<button mat-raised-button [routerLink]=\"homeRoute\">{{buttonLabel}}</button>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgxMatNavigationNotFoundComponent } from './not-found.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { RouterModule } from '@angular/router';\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n RouterModule\n ],\n declarations: [NgxMatNavigationNotFoundComponent],\n exports: [NgxMatNavigationNotFoundComponent]\n})\nexport class NgxMatNavigationNotFoundModule { }","/*\n * Public API Surface of ngx-material-navigation\n */\nexport * from './models/footer.model';\nexport * from './models/nav-button.model';\nexport * from './models/nav-html.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.model';\nexport * from './models/navbar.model';\nexport * from './models/page-not-found-config.model';\n\nexport * from './components/navbar/navbar.component';\nexport * from './components/navbar/navbar.module';\n\nexport * from './components/footer/footer.component';\nexport * from './components/footer/footer.module';\n\nexport * from './components/not-found/not-found.component';\nexport * from './components/not-found/not-found.module';\n\nexport * from './utilities/nav.utilities';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i1","i4.NavTitleComponent","i5.NavTitleWithInternalLinkComponent","i6.NavTitleWithExternalLinkComponent","i7.NavImageComponent","i8.NavImageWithInternalLinkComponent","i9.NavImageWithExternalLinkComponent","i10.NavButtonComponent","i11.NavButtonFlatComponent","i12.NavInternalLinkComponent","i13.NavExternalLinkComponent","i14.NavHtmlComponent","i15.NavTextComponent","i2.NgxMatNavigationService","i5.NavElementComponent","i1.NgxMatNavigationService","i3.NavElementComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-material-navigation.mjs","sources":["../../../projects/ngx-material-navigation/src/models/nav.model.ts","../../../projects/ngx-material-navigation/src/models/nav-link.model.ts","../../../projects/ngx-material-navigation/src/services/nav.service.ts","../../../projects/ngx-material-navigation/src/utilities/nav.utilities.ts","../../../projects/ngx-material-navigation/src/components/nav-element/base-nav-element.component.ts","../../../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-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/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/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-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/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/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/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/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/utilities/purify.utilities.ts","../../../projects/ngx-material-navigation/src/components/nav-element/html/nav-html/nav-html.component.ts","../../../projects/ngx-material-navigation/src/components/nav-element/html/nav-html/nav-html.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/nav-element.component.ts","../../../projects/ngx-material-navigation/src/components/nav-element/nav-element.component.html","../../../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/nav-element/nav-element.module.ts","../../../projects/ngx-material-navigation/src/components/navbar/navbar.module.ts","../../../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/components/footer/footer.module.ts","../../../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/not-found/not-found.module.ts","../../../projects/ngx-material-navigation/src/public-api.ts","../../../projects/ngx-material-navigation/src/ngx-material-navigation.ts"],"sourcesContent":["import { Route } from '@angular/router';\nimport { NavButton } from './nav-button.model';\nimport { NavHtml } from './nav-html.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 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 HTML = 'html',\n TEXT = 'text'\n}\n\n/**\n * The abstract base class of any nav element.\n */\nexport abstract class BaseNavElement {\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?: 'lg' | 'md' | 'sm' | 'never' | 'always';\n /**\n * A condition that must be met for the element to be displayed.\n */\n condition?: () => boolean;\n}\n\n/**\n * One of the many NavElements.\n */\nexport type NavElement<RouteType extends Route = NavRoute> =\n NavTitle | NavTitleWithInternalLink<RouteType> | NavTitleWithExternalLink\n | NavImage | NavImageWithExternalLink | NavImageWithInternalLink<RouteType>\n | NavButton | NavInternalLink<RouteType> | NavExternalLink | NavMenu | NavHtml | NavText;","import { Route } from '@angular/router';\nimport { NavRoute } from './nav-route.model';\nimport { BaseNavElement, NavElementTypes } from './nav.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?: string;\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\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}","import { EnvironmentInjector, Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { FooterRow, NavFooterElement } from '../models/footer.model';\nimport { NavElement } from '../models/nav.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 * The subject of the currently visible navbar rows.\n */\n readonly navbarRowsSubject: BehaviorSubject<NavbarRow[]> = new BehaviorSubject<NavbarRow[]>([]);\n\n /**\n * The subject of the currently visible sidenav elements.\n */\n readonly footerRowsSubject: BehaviorSubject<FooterRow[]> = new BehaviorSubject<FooterRow[]>([]);\n\n constructor(private readonly injector: EnvironmentInjector) { }\n\n /**\n * Gets the rows that are really displayed in the navbar and not collapsed to the sidenav.\n *\n * @param navbarRows - All navbar rows, including the ones collapsed to the sidenav.\n * @param screenWidthName - Name of the current width of the screen.\n * @returns All rows that are displayed inside the navbar.\n */\n getNavbarRows(navbarRows: NavbarRow[], screenWidthName: 'lg' | 'md' | 'sm'): NavbarRow[] {\n const emptyRows: NavbarRow[] = navbarRows.filter(r =>\n !this.getNavbarElementsForRow('left', screenWidthName, r).length\n && !this.getNavbarElementsForRow('center', screenWidthName, r).length\n && !this.getNavbarElementsForRow('right', screenWidthName, r).length\n );\n return navbarRows.filter(r => !emptyRows.includes(r));\n }\n\n /**\n * Get all elements at the provided position with the provided screenWidth from the given elements.\n *\n * @param position - The position for which to get the elements.\n * @param screenWidthName - Name of the current width of the screen.\n * @param row - The row to get the elements from.\n * @returns All Elements for the provided input.\n */\n getNavbarElementsForRow(position: 'left' | 'center' | 'right', screenWidthName: 'lg' | 'md' | 'sm', row: NavbarRow): NavElement[] {\n let res: NavElement[] = [];\n res = res.concat(row.elements);\n res = res.filter(e => this.checkCondition(e));\n\n if (position === 'left') {\n res = res.filter(e => !e.position || e.position === position);\n }\n else {\n res = res.filter(e => e.position === position);\n }\n switch (screenWidthName) {\n case 'lg':\n return res.filter(e => e.collapse !== 'always' && e.collapse !== 'lg');\n case 'md':\n return res.filter(e => e.collapse !== 'always' && e.collapse !== 'lg' && e.collapse !== 'md');\n case 'sm':\n return res.filter(e => e.collapse === 'never');\n }\n }\n\n private checkCondition(element: NavElement | NavFooterElement): boolean {\n if (!element.condition) {\n return true;\n }\n // runInContext(...) is needed to enable the user to use injections in his condition functions.\n return this.injector.runInContext(() => element.condition ? element.condition() : true);\n }\n\n /**\n * Gets all the elements to display in the sidenav.\n *\n * @param rows - The rows to get the elements from.\n * @param screenWidthName - Name of the current width of the screen.\n * @returns The NavElements to display in the sidenav.\n */\n getSidenavElements(rows: NavbarRow[], screenWidthName: 'lg' | 'md' | 'sm'): NavElement[] {\n let res: NavElement[] = [];\n for (const row of rows) {\n res = res.concat(row.elements);\n }\n res = res.filter(e => this.checkCondition(e));\n switch (screenWidthName) {\n case 'lg':\n return res.filter(e => e.collapse === 'always' || e.collapse === 'lg');\n case 'md':\n return res.filter(e => e.collapse === 'always' || e.collapse === 'lg' || e.collapse === 'md');\n case 'sm':\n // eslint-disable-next-line max-len\n return res.filter(e => !e.collapse || e.collapse === 'always' || e.collapse === 'lg' || e.collapse === 'md' || e.collapse === 'sm');\n }\n }\n\n /**\n * Get all elements at the provided position from the given elements.\n *\n * @param position - The position for which to get the elements.\n * @param row - The row to get the elements from.\n * @returns All Elements for the provided input.\n */\n getFooterElementsForRow(position: 'left' | 'center' | 'right', row: FooterRow): 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 || e.position === position);\n }\n return res.filter(e => e.position === position);\n }\n}","import { Route } from '@angular/router';\nimport { FooterRow, NavFooterElement } from '../models/footer.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 { NavElement, NavElementTypes } from '../models/nav.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 // eslint-disable-next-line jsdoc/require-jsdoc\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 *\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 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) as NavInternalLink[];\n }\n}","import { Component, Input } from '@angular/core';\nimport { NavButton } from '../../models/nav-button.model';\nimport { NavHtml } from '../../models/nav-html.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';\nimport { NavElement, NavElementTypes } from '../../models/nav.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()\n element!: NavElement;\n\n /**\n * Whether or not the element is inside a sidenav.\n */\n @Input()\n isSidenavElement!: boolean;\n\n /**\n * Whether or not the element is inside a menu.\n */\n @Input()\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 : T extends NavElementTypes.HTML ? NavHtml\n : T extends NavElementTypes.TEXT ? NavText\n : never;","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'nav-title',\n templateUrl: './nav-title.component.html',\n styleUrls: ['./nav-title.component.scss', '../base-nav-title.scss'],\n standalone: true,\n imports: [\n CommonModule\n ]\n})\nexport class NavTitleComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.TITLE> { }","<h1 [class.sidenavElement]=\"isSidenavElement\" [class.menuItem]=\"isMenuItem\">\n <i *ngIf=\"elementValue.icon\" [ngClass]=\"elementValue.icon\"></i>\n {{elementValue.title}}\n</h1>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'nav-title-with-internal-link',\n templateUrl: './nav-title-with-internal-link.component.html',\n styleUrls: ['./nav-title-with-internal-link.component.scss', '../base-nav-title.scss'],\n standalone: true,\n imports: [\n CommonModule,\n RouterModule\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 id=\"title-link\" disableRipple\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>\n <h1>\n <i *ngIf=\"elementValue.icon\" [ngClass]=\"elementValue.icon\"></i>\n {{elementValue.title}}\n </h1>\n</a>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'nav-title-with-external-link',\n templateUrl: './nav-title-with-external-link.component.html',\n styleUrls: ['./nav-title-with-external-link.component.scss', '../base-nav-title.scss'],\n standalone: true,\n imports: [\n CommonModule\n ]\n})\nexport class NavTitleWithExternalLinkComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.TITLE_WITH_EXTERNAL_LINK> { }","<a class=\"title-link\" disableRipple\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 <h1>\n <i *ngIf=\"elementValue.icon\" [ngClass]=\"elementValue.icon\"></i>\n {{elementValue.title}}\n </h1>\n</a>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'nav-image',\n templateUrl: './nav-image.component.html',\n styleUrls: ['./nav-image.component.scss', '../base-nav-image.scss'],\n standalone: true,\n imports: [\n CommonModule\n ]\n})\nexport class NavImageComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.IMAGE> { }","<img [ngStyle]=\"{ 'height.px': elementValue.height }\" [class.sidenavElement]=\"isSidenavElement\" [class.menuItem]=\"isMenuItem\" [src]=\"elementValue.url\">","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'nav-image-with-internal-link',\n templateUrl: './nav-image-with-internal-link.component.html',\n styleUrls: ['./nav-image-with-internal-link.component.scss', '../base-nav-image.scss'],\n standalone: true,\n imports: [\n CommonModule,\n RouterModule\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 id=\"image-link\" disableRipple\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>\n <img [ngStyle]=\"{ 'height.px': elementValue.height }\" [src]=\"elementValue.url\">\n</a>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'nav-image-with-external-link',\n templateUrl: './nav-image-with-external-link.component.html',\n styleUrls: ['./nav-image-with-external-link.component.scss', '../base-nav-image.scss'],\n standalone: true,\n imports: [\n CommonModule\n ]\n})\nexport class NavImageWithExternalLinkComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.IMAGE_WITH_EXTERNAL_LINK> { }","<a id=\"image-link\" disableRipple\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 [ngStyle]=\"{ 'height.px': elementValue.height }\" [src]=\"elementValue.url\">\n</a>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component, EnvironmentInjector } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/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 MatButtonModule\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 this.injector.runInContext(() => this.elementValue.action());\n }\n}","<button mat-raised-button\n (click)=\"runAction()\"\n [class.sidenavElement]=\"isSidenavElement\"\n [class.menuItem]=\"isMenuItem\"\n>\n <i *ngIf=\"elementValue.icon\" [ngClass]=\"elementValue.icon\"></i>\n {{elementValue.name}}\n</button>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { NavButtonComponent } from '../nav-button/nav-button.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/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 MatButtonModule\n ]\n})\nexport class NavButtonFlatComponent extends NavButtonComponent {}","<button mat-button\n (click)=\"runAction()\"\n [class.sidenavElement]=\"isSidenavElement\"\n [class.menuItem]=\"isMenuItem\"\n>\n <i *ngIf=\"elementValue.icon\" [ngClass]=\"elementValue.icon\"></i>\n {{elementValue.name}}\n</button>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { RouterModule } from '@angular/router';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/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 MatButtonModule,\n RouterModule\n ]\n})\nexport class NavInternalLinkComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.INTERNAL_LINK> {\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 mat-button\n [routerLink]=\"route\"\n [target]=\"elementValue.openInNewTab ? '_blank' : '_self'\"\n [rel]=\"elementValue.openInNewTab ? 'noreferrer noopener' : undefined\"\n [class.sidenavElement]=\"isSidenavElement\"\n [class.menuItem]=\"isMenuItem\"\n>\n <i *ngIf=\"elementValue.icon\" [ngClass]=\"elementValue.icon\"></i> \n {{elementValue.name}}\n</a>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/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 MatButtonModule\n ]\n})\nexport class NavExternalLinkComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.EXTERNAL_LINK> { }","<a mat-button\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>\n <i *ngIf=\"elementValue.icon\" [ngClass]=\"elementValue.icon\"></i>\n {{elementValue.name}}\n</a>","import { sanitize } from 'dompurify';\n\n/**\n * Contains HelperMethods around handling the purification of html strings.\n * Is less strict than angular's own sanitizer.\n */\nexport abstract class PurifyUtilities {\n\n /**\n * Sanitizes the given source string.\n *\n * @param source - The html value as a string.\n * @returns A sanitized string of the given source.\n */\n static sanitize(source: string): string {\n return sanitize(source);\n }\n}","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { PurifyUtilities } from '../../../../utilities/purify.utilities';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'nav-html',\n templateUrl: './nav-html.component.html',\n styleUrls: ['./nav-html.component.scss'],\n standalone: true,\n imports: [\n CommonModule\n ]\n})\nexport class NavHtmlComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.HTML> {\n\n constructor(private readonly sanitizer: DomSanitizer) {\n super();\n }\n\n get sanitizedHtml(): SafeHtml {\n return this.sanitizer.bypassSecurityTrustHtml(PurifyUtilities.sanitize(this.elementValue.html));\n }\n}","<span [class.sidenavElement]=\"isSidenavElement\" [class.menuItem]=\"isMenuItem\" [innerHtml]=\"sanitizedHtml\">\n</span>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'nav-text',\n templateUrl: './nav-text.component.html',\n styleUrls: ['./nav-text.component.scss'],\n standalone: true,\n imports: [\n CommonModule\n ]\n})\nexport class NavTextComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.TEXT> {}","<div *ngFor=\"let paragraph of elementValue.paragraphs\">\n {{paragraph}}\n</div>","import { AfterContentChecked, Component, HostListener, Input, OnInit, ViewChild } from '@angular/core';\nimport { MatButton } from '@angular/material/button';\nimport { MatSidenav } from '@angular/material/sidenav';\nimport { NavElement, NavElementTypes } from '../../models/nav.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})\nexport class NavElementComponent implements AfterContentChecked, OnInit {\n\n NavUtilities = NavUtilities;\n NavElementTypes = NavElementTypes;\n\n /**\n * The element to display.\n */\n @Input()\n element!: NavElement;\n\n /**\n * A reference to the sidenav. Is needed for the menu to close the sidenav.\n */\n @Input()\n sidenav?: MatSidenav;\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 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 protected internalIsMenuItem!: boolean;\n\n @ViewChild('menuButton')\n menuButton?: MatButton;\n\n menuWidth!: number;\n\n ngOnInit(): void {\n this.internalIsSidenavElement = this.isSidenavElement ?? false;\n this.internalIsMenuItem = this.isMenuItem ?? false;\n }\n\n ngAfterContentChecked(): void {\n if (this.menuButton) {\n this.menuWidth = this.getMenuWidth();\n }\n }\n\n /**\n * Updates the width of the menu to the value of its button.\n */\n @HostListener('window:resize', ['$event'])\n onResize(): void {\n if (this.menuButton) {\n this.menuWidth = this.getMenuWidth();\n }\n }\n\n private getMenuWidth(): number {\n return (this.menuButton?._elementRef.nativeElement as HTMLElement).offsetWidth;\n }\n\n /**\n * Defines if the sidenav should be closed when the given element is clicked.\n *\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.HTML:\n return;\n default:\n void this.sidenav?.close();\n }\n }\n}","<div [ngSwitch]=\"element.type\">\n <!-------------------------------------------->\n <!------------------Titles-------------------->\n <!-------------------------------------------->\n <div *ngSwitchCase=\"NavElementTypes.TITLE\">\n <nav-title [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-title>\n </div>\n <div *ngSwitchCase=\"NavElementTypes.TITLE_WITH_INTERNAL_LINK\">\n <nav-title-with-internal-link [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-title-with-internal-link>\n </div>\n <div *ngSwitchCase=\"NavElementTypes.TITLE_WITH_EXTERNAL_LINK\">\n <nav-title-with-external-link [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-title-with-external-link>\n </div>\n\n <!-------------------------------------------->\n <!-------------------Image-------------------->\n <!-------------------------------------------->\n <div *ngSwitchCase=\"NavElementTypes.IMAGE\">\n <nav-image [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-image>\n </div>\n <div *ngSwitchCase=\"NavElementTypes.IMAGE_WITH_EXTERNAL_LINK\">\n <nav-image-with-internal-link [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-image-with-internal-link>\n </div>\n <div *ngSwitchCase=\"NavElementTypes.IMAGE_WITH_INTERNAL_LINK\">\n <nav-image-with-external-link [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-image-with-external-link>\n </div>\n \n <!-------------------------------------------->\n <!-------------------Button------------------->\n <!-------------------------------------------->\n <div *ngSwitchCase=\"NavElementTypes.BUTTON\">\n <nav-button [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-button>\n </div>\n <div *ngSwitchCase=\"NavElementTypes.BUTTON_FLAT\">\n <nav-button-flat [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-button-flat>\n </div>\n\n <!-------------------------------------------->\n <!--------------------Link-------------------->\n <!-------------------------------------------->\n <div *ngSwitchCase=\"NavElementTypes.INTERNAL_LINK\">\n <nav-internal-link [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-internal-link>\n </div>\n <div *ngSwitchCase=\"NavElementTypes.EXTERNAL_LINK\">\n <nav-external-link [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-external-link>\n </div>\n\n <!-------------------------------------------->\n <!--------------------HTML-------------------->\n <!-------------------------------------------->\n <div *ngSwitchCase=\"NavElementTypes.HTML\">\n <nav-html [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-html>\n </div>\n\n <!-------------------------------------------->\n <!--------------------TEXT-------------------->\n <!-------------------------------------------->\n <div *ngSwitchCase=\"NavElementTypes.TEXT\">\n <nav-text [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-text>\n </div>\n\n <!-------------------------------------------->\n <!--------------------Menu-------------------->\n <!-------------------------------------------->\n <div *ngSwitchCase=\"NavElementTypes.MENU\">\n <button #menuButton *ngIf=\"internalIsMenuItem\"\n mat-menu-item\n [matMenuTriggerFor]=\"menu\"\n [class.sidenavElement]=\"isSidenavElement\"\n >\n <i *ngIf=\"NavUtilities.asMenu(element).icon\" [ngClass]=\"NavUtilities.asMenu(element).icon\"></i>\n {{NavUtilities.asMenu(element).name}}\n </button>\n\n <button #menuButton *ngIf=\"!internalIsMenuItem\"\n mat-button\n [matMenuTriggerFor]=\"menu\"\n [class.sidenavElement]=\"isSidenavElement\"\n >\n <i *ngIf=\"NavUtilities.asMenu(element).icon\" [ngClass]=\"NavUtilities.asMenu(element).icon\"></i>\n {{NavUtilities.asMenu(element).name}}\n </button>\n </div>\n\n <mat-menu #menu=\"matMenu\" [overlapTrigger]=\"false\" [style.min-width.px]=\"menuWidth\">\n <div *ngFor=\"let menuElement of NavUtilities.asMenu(element).elements\" [style.min-width.px]=\"menuWidth\">\n <ngx-mat-navigation-element (click)=\"clickSidenavElement(menuElement)\" [isSidenavElement]=\"internalIsSidenavElement\" [sidenav]=\"sidenav\" [isMenuItem]=\"true\" [element]=\"menuElement\">\n </ngx-mat-navigation-element>\n </div>\n </mat-menu>\n \n</div>","import { AfterContentChecked, Component, ElementRef, HostListener, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { MatSidenav } from '@angular/material/sidenav';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\nimport { Subject, takeUntil } from 'rxjs';\nimport { NavElement, NavElementTypes } from '../../models/nav.model';\nimport { NavbarRow } from '../../models/navbar.model';\nimport { NgxMatNavigationService } from '../../services/nav.service';\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})\nexport class NgxMatNavigationNavbarComponent implements OnInit, OnDestroy, AfterContentChecked {\n private readonly onDestroy: Subject<void> = new Subject();\n\n /**\n * The navbar rows to build the navbar from.\n */\n @Input()\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 @ViewChild('sidenav')\n sidenav?: MatSidenav;\n\n @ViewChild('navbar', { read: ElementRef })\n navbar?: ElementRef<HTMLElement>;\n\n burgerMenu: NavElement = {\n type: NavElementTypes.BUTTON_FLAT,\n name: '',\n icon: 'fas fa-bars',\n action: () => this.sidenav?.toggle(),\n collapse: 'never'\n };\n\n sanitizedMinHeight!: SafeStyle;\n\n screenWidthName: 'lg' | 'md' | 'sm' = this.getCurrentScreenWidthName();\n\n internalNavbarRows: NavbarRow[] = [];\n\n internalSidenavElements: NavElement[] = [];\n\n constructor(private readonly sanitizer: DomSanitizer, public navService: NgxMatNavigationService) {}\n\n ngOnInit(): void {\n this.navService.navbarRowsSubject.pipe(takeUntil(this.onDestroy)).subscribe(navbarRows => {\n this.internalNavbarRows = navbarRows;\n this.internalSidenavElements = this.navService.getSidenavElements(navbarRows, this.screenWidthName);\n if (!this.internalSidenavElements.length && this.sidenav && this.sidenav.opened) {\n void this.sidenav.close();\n }\n });\n this.navService.navbarRowsSubject.next(this.navbarRows);\n }\n\n ngOnDestroy(): void {\n this.onDestroy.next(undefined);\n this.onDestroy.complete();\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 if (!this.minHeight || this.navbar.nativeElement.offsetHeight > this.minHeight) {\n this.sanitizedMinHeight = this.sanitizer.bypassSecurityTrustStyle(\n // eslint-disable-next-line max-len\n `calc(100vh - ${this.navbar.nativeElement.offsetHeight + (this.minHeightOtherElements ? this.minHeightOtherElements : 0)}px)`\n );\n }\n else {\n this.sanitizedMinHeight = this.sanitizer.bypassSecurityTrustStyle(\n // eslint-disable-next-line max-len\n `calc(100vh - ${(this.minHeight ? this.minHeight : 0) + (this.minHeightOtherElements ? this.minHeightOtherElements : 0)}px)`\n );\n }\n }\n }\n\n /**\n * Updates the current screen width and filters the sidenav elements accordingly.\n *\n * @throws When no height data is provided or the data is invalid.\n */\n @HostListener('window:resize', ['$event'])\n onResize(): void {\n this.updateHeights();\n this.screenWidthName = this.getCurrentScreenWidthName();\n this.navService.navbarRowsSubject.next(this.navService.navbarRowsSubject.value);\n }\n\n private getCurrentScreenWidthName(): 'lg' | 'md' | 'sm' {\n if (window.innerWidth < 768) {\n return 'sm';\n }\n else if (window.innerWidth < 992) {\n return 'md';\n }\n else {\n return 'lg';\n }\n }\n\n /**\n * Defines if the sidenav should be closed when the given element is clicked.\n *\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.HTML:\n return;\n default:\n void this.sidenav?.close();\n }\n }\n}","<mat-toolbar [style.min-height.px]=\"minHeight ? minHeight : 0\" id=\"toolbar\" #navbar *ngIf=\"navService.getNavbarRows(navbarRows, screenWidthName).length>1\" class=\"mat-elevation-z8\">\n <mat-toolbar-row class=\"toolbar-row\" *ngFor=\"let row of navService.getNavbarRows(navbarRows, screenWidthName)\">\n <div class=\"toolbar-col\">\n <ngx-mat-navigation-element *ngFor=\"let element of navService.getNavbarElementsForRow('left', screenWidthName, row)\" [element]=\"element\"></ngx-mat-navigation-element>\n </div>\n <div class=\"toolbar-col\">\n <ngx-mat-navigation-element *ngFor=\"let element of navService.getNavbarElementsForRow('center', screenWidthName, row)\" [element]=\"element\"></ngx-mat-navigation-element>\n </div>\n <div class=\"toolbar-col\">\n <span *ngFor=\"let element of navService.getNavbarElementsForRow('right', screenWidthName, row)\">\n <ngx-mat-navigation-element [element]=\"element\"></ngx-mat-navigation-element>\n </span>\n <span *ngIf=\"internalSidenavElements.length && (navbarRows.indexOf(row) === 0)\">\n <ngx-mat-navigation-element [element]=\"burgerMenu\"></ngx-mat-navigation-element>\n </span>\n </div>\n </mat-toolbar-row>\n</mat-toolbar>\n\n<mat-toolbar [style.min-height.px]=\"minHeight ? minHeight : 0\" id=\"toolbar\" #navbar *ngIf=\"!(navService.getNavbarRows(navbarRows, screenWidthName).length>1)\" class=\"mat-elevation-z8\">\n <div class=\"toolbar-row\">\n <div class=\"toolbar-col\">\n <ngx-mat-navigation-element *ngFor=\"let element of navService.getNavbarElementsForRow('left', screenWidthName, navbarRows[0])\" [element]=\"element\"></ngx-mat-navigation-element>\n </div>\n <div class=\"toolbar-col\">\n <ngx-mat-navigation-element *ngFor=\"let element of navService.getNavbarElementsForRow('center', screenWidthName, navbarRows[0])\" [element]=\"element\"></ngx-mat-navigation-element>\n </div>\n <div class=\"toolbar-col\">\n <ngx-mat-navigation-element *ngFor=\"let element of navService.getNavbarElementsForRow('right', screenWidthName, navbarRows[0])\" [element]=\"element\"></ngx-mat-navigation-element>\n <ngx-mat-navigation-element *ngIf=\"internalSidenavElements.length\" [element]=\"burgerMenu\"></ngx-mat-navigation-element>\n </div>\n </div>\n</mat-toolbar>\n\n<mat-sidenav-container style=\"background-color: transparent;\" [style.min-height]=\"sanitizedMinHeight\">\n <mat-sidenav style=\"padding-top: 12px; padding-bottom: 12px;\" #sidenav position=\"end\" [style.min-width]=\"minSidenavWidth\" [autoFocus]=\"false\">\n <div style=\"margin-left: 12px; margin-right: 12px;\" *ngFor=\"let element of internalSidenavElements\">\n <ngx-mat-navigation-element (click)=\"clickSidenavElement(element)\" [sidenav]=\"sidenav\" [isSidenavElement]=\"true\" [element]=\"element\"></ngx-mat-navigation-element>\n </div>\n </mat-sidenav>\n <mat-sidenav-content>\n <ng-content></ng-content>\n </mat-sidenav-content>\n</mat-sidenav-container>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { NavButtonFlatComponent } from './button/nav-button-flat/nav-button-flat.component';\nimport { NavButtonComponent } from './button/nav-button/nav-button.component';\nimport { NavHtmlComponent } from './html/nav-html/nav-html.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 { NavImageComponent } from './image/nav-image/nav-image.component';\nimport { NavExternalLinkComponent } from './link/nav-external-link/nav-external-link.component';\nimport { NavInternalLinkComponent } from './link/nav-internal-link/nav-internal-link.component';\nimport { NavElementComponent } from './nav-element.component';\nimport { NavTextComponent } from './text/nav-text/nav-text.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 { NavTitleComponent } from './title/nav-title/nav-title.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatMenuModule,\n MatButtonModule,\n MatSidenavModule,\n NavTitleComponent,\n NavTitleWithInternalLinkComponent,\n NavTitleWithExternalLinkComponent,\n NavImageComponent,\n NavImageWithInternalLinkComponent,\n NavImageWithExternalLinkComponent,\n NavButtonComponent,\n NavButtonFlatComponent,\n NavInternalLinkComponent,\n NavExternalLinkComponent,\n NavHtmlComponent,\n NavTextComponent\n ],\n declarations: [\n NavElementComponent\n ],\n exports: [NavElementComponent]\n})\nexport class NavElementModule { }","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { NgxMatNavigationNavbarComponent } from './navbar.component';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { NavElementModule } from '../nav-element/nav-element.module';\nimport { MatSidenavModule } from '@angular/material/sidenav';\n\n@NgModule({\n declarations: [NgxMatNavigationNavbarComponent],\n imports: [\n CommonModule,\n MatToolbarModule,\n NavElementModule,\n MatSidenavModule\n ],\n exports: [NgxMatNavigationNavbarComponent]\n})\nexport class NgxMatNavigationNavbarModule {}","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { FooterRow } from '../../models/footer.model';\nimport { NgxMatNavigationService } from '../../services/nav.service';\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})\nexport class NgxMatNavigationFooterComponent implements OnInit, OnDestroy {\n private readonly onDestroy: Subject<void> = new Subject();\n\n /**\n * The minimum height of the footer.\n */\n @Input()\n minHeight!: number;\n\n /**\n * The footer rows to build the footer from.\n */\n @Input()\n footerRows!: FooterRow[];\n\n internalFooterRows: FooterRow[] = [];\n\n constructor(public navService: NgxMatNavigationService) { }\n\n ngOnInit(): void {\n this.navService.footerRowsSubject.pipe(takeUntil(this.onDestroy)).subscribe(footerRows => {\n this.internalFooterRows = footerRows;\n });\n this.navService.footerRowsSubject.next(this.footerRows);\n }\n\n ngOnDestroy(): void {\n this.onDestroy.next(undefined);\n this.onDestroy.complete();\n }\n}","<footer [style.min-height.px]=\"minHeight\">\n <div class=\"footer-row\" *ngFor=\"let row of internalFooterRows\">\n <div class=\"footer-col\" id=\"left\">\n <ngx-mat-navigation-element *ngFor=\"let element of navService.getFooterElementsForRow('left', row)\" [element]=\"element\"></ngx-mat-navigation-element>\n </div>\n <div class=\"footer-col\" id=\"center\">\n <ngx-mat-navigation-element *ngFor=\"let element of navService.getFooterElementsForRow('center', row)\" [element]=\"element\"></ngx-mat-navigation-element>\n </div>\n <div class=\"footer-col\" id=\"right\">\n <ngx-mat-navigation-element *ngFor=\"let element of navService.getFooterElementsForRow('right', row)\" [element]=\"element\"></ngx-mat-navigation-element>\n </div>\n </div>\n</footer>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { NavElementModule } from '../nav-element/nav-element.module';\nimport { NgxMatNavigationFooterComponent } from './footer.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatToolbarModule,\n NavElementModule\n ],\n declarations: [NgxMatNavigationFooterComponent],\n exports: [NgxMatNavigationFooterComponent]\n})\nexport class NgxMatNavigationFooterModule { }","import { Component, Input, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\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})\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 title!: string;\n message!: string;\n buttonLabel!: string;\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 // eslint-disable-next-line max-len\n this.message = this.config?.message ?? routeData?.message ?? '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<button mat-raised-button [routerLink]=\"homeRoute\">{{buttonLabel}}</button>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgxMatNavigationNotFoundComponent } from './not-found.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { RouterModule } from '@angular/router';\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n RouterModule\n ],\n declarations: [NgxMatNavigationNotFoundComponent],\n exports: [NgxMatNavigationNotFoundComponent]\n})\nexport class NgxMatNavigationNotFoundModule { }","/*\n * Public API Surface of ngx-material-navigation\n */\nexport * from './models/footer.model';\nexport * from './models/nav-button.model';\nexport * from './models/nav-html.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.model';\nexport * from './models/navbar.model';\nexport * from './models/page-not-found-config.model';\n\nexport * from './components/navbar/navbar.component';\nexport * from './components/navbar/navbar.module';\n\nexport * from './components/footer/footer.component';\nexport * from './components/footer/footer.module';\n\nexport * from './components/not-found/not-found.component';\nexport * from './components/not-found/not-found.module';\n\nexport * from './utilities/nav.utilities';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i1","i4.NavTitleComponent","i5.NavTitleWithInternalLinkComponent","i6.NavTitleWithExternalLinkComponent","i7.NavImageComponent","i8.NavImageWithInternalLinkComponent","i9.NavImageWithExternalLinkComponent","i10.NavButtonComponent","i11.NavButtonFlatComponent","i12.NavInternalLinkComponent","i13.NavExternalLinkComponent","i14.NavHtmlComponent","i15.NavTextComponent","i2.NgxMatNavigationService","i5.NavElementComponent","i1.NgxMatNavigationService","i3.NavElementComponent"],"mappings":"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"}
|
|
@@ -460,12 +460,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImpor
|
|
|
460
460
|
class NavTextComponent extends NgxMatNavigationBaseNavElementComponent {
|
|
461
461
|
}
|
|
462
462
|
NavTextComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: NavTextComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
463
|
-
NavTextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.3", type: NavTextComponent, isStandalone: true, selector: "nav-text", usesInheritance: true, ngImport: i0, template: "<
|
|
463
|
+
NavTextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.3", type: NavTextComponent, isStandalone: true, selector: "nav-text", usesInheritance: true, ngImport: i0, template: "<div *ngFor=\"let paragraph of elementValue.paragraphs\">\n {{paragraph}}\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
464
464
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: NavTextComponent, decorators: [{
|
|
465
465
|
type: Component,
|
|
466
466
|
args: [{ selector: 'nav-text', standalone: true, imports: [
|
|
467
467
|
CommonModule
|
|
468
|
-
], template: "<
|
|
468
|
+
], template: "<div *ngFor=\"let paragraph of elementValue.paragraphs\">\n {{paragraph}}\n</div>" }]
|
|
469
469
|
}] });
|
|
470
470
|
|
|
471
471
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-material-navigation.mjs","sources":["../../../projects/ngx-material-navigation/src/models/nav.model.ts","../../../projects/ngx-material-navigation/src/models/nav-link.model.ts","../../../projects/ngx-material-navigation/src/services/nav.service.ts","../../../projects/ngx-material-navigation/src/utilities/nav.utilities.ts","../../../projects/ngx-material-navigation/src/components/nav-element/base-nav-element.component.ts","../../../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-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/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/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-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/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/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/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/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/utilities/purify.utilities.ts","../../../projects/ngx-material-navigation/src/components/nav-element/html/nav-html/nav-html.component.ts","../../../projects/ngx-material-navigation/src/components/nav-element/html/nav-html/nav-html.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/nav-element.component.ts","../../../projects/ngx-material-navigation/src/components/nav-element/nav-element.component.html","../../../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/nav-element/nav-element.module.ts","../../../projects/ngx-material-navigation/src/components/navbar/navbar.module.ts","../../../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/components/footer/footer.module.ts","../../../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/not-found/not-found.module.ts","../../../projects/ngx-material-navigation/src/public-api.ts","../../../projects/ngx-material-navigation/src/ngx-material-navigation.ts"],"sourcesContent":["import { Route } from '@angular/router';\nimport { NavButton } from './nav-button.model';\nimport { NavHtml } from './nav-html.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 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 HTML = 'html',\n TEXT = 'text'\n}\n\n/**\n * The abstract base class of any nav element.\n */\nexport abstract class BaseNavElement {\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?: 'lg' | 'md' | 'sm' | 'never' | 'always';\n /**\n * A condition that must be met for the element to be displayed.\n */\n condition?: () => boolean;\n}\n\n/**\n * One of the many NavElements.\n */\nexport type NavElement<RouteType extends Route = NavRoute> =\n NavTitle | NavTitleWithInternalLink<RouteType> | NavTitleWithExternalLink\n | NavImage | NavImageWithExternalLink | NavImageWithInternalLink<RouteType>\n | NavButton | NavInternalLink<RouteType> | NavExternalLink | NavMenu | NavHtml | NavText;","import { Route } from '@angular/router';\nimport { NavRoute } from './nav-route.model';\nimport { BaseNavElement, NavElementTypes } from './nav.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?: string;\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\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}","import { EnvironmentInjector, Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { FooterRow, NavFooterElement } from '../models/footer.model';\nimport { NavElement } from '../models/nav.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 * The subject of the currently visible navbar rows.\n */\n readonly navbarRowsSubject: BehaviorSubject<NavbarRow[]> = new BehaviorSubject<NavbarRow[]>([]);\n\n /**\n * The subject of the currently visible sidenav elements.\n */\n readonly footerRowsSubject: BehaviorSubject<FooterRow[]> = new BehaviorSubject<FooterRow[]>([]);\n\n constructor(private readonly injector: EnvironmentInjector) { }\n\n /**\n * Gets the rows that are really displayed in the navbar and not collapsed to the sidenav.\n *\n * @param navbarRows - All navbar rows, including the ones collapsed to the sidenav.\n * @param screenWidthName - Name of the current width of the screen.\n * @returns All rows that are displayed inside the navbar.\n */\n getNavbarRows(navbarRows: NavbarRow[], screenWidthName: 'lg' | 'md' | 'sm'): NavbarRow[] {\n const emptyRows: NavbarRow[] = navbarRows.filter(r =>\n !this.getNavbarElementsForRow('left', screenWidthName, r).length\n && !this.getNavbarElementsForRow('center', screenWidthName, r).length\n && !this.getNavbarElementsForRow('right', screenWidthName, r).length\n );\n return navbarRows.filter(r => !emptyRows.includes(r));\n }\n\n /**\n * Get all elements at the provided position with the provided screenWidth from the given elements.\n *\n * @param position - The position for which to get the elements.\n * @param screenWidthName - Name of the current width of the screen.\n * @param row - The row to get the elements from.\n * @returns All Elements for the provided input.\n */\n getNavbarElementsForRow(position: 'left' | 'center' | 'right', screenWidthName: 'lg' | 'md' | 'sm', row: NavbarRow): NavElement[] {\n let res: NavElement[] = [];\n res = res.concat(row.elements);\n res = res.filter(e => this.checkCondition(e));\n\n if (position === 'left') {\n res = res.filter(e => !e.position || e.position === position);\n }\n else {\n res = res.filter(e => e.position === position);\n }\n switch (screenWidthName) {\n case 'lg':\n return res.filter(e => e.collapse !== 'always' && e.collapse !== 'lg');\n case 'md':\n return res.filter(e => e.collapse !== 'always' && e.collapse !== 'lg' && e.collapse !== 'md');\n case 'sm':\n return res.filter(e => e.collapse === 'never');\n }\n }\n\n private checkCondition(element: NavElement | NavFooterElement): boolean {\n if (!element.condition) {\n return true;\n }\n // runInContext(...) is needed to enable the user to use injections in his condition functions.\n return this.injector.runInContext(() => element.condition ? element.condition() : true);\n }\n\n /**\n * Gets all the elements to display in the sidenav.\n *\n * @param rows - The rows to get the elements from.\n * @param screenWidthName - Name of the current width of the screen.\n * @returns The NavElements to display in the sidenav.\n */\n getSidenavElements(rows: NavbarRow[], screenWidthName: 'lg' | 'md' | 'sm'): NavElement[] {\n let res: NavElement[] = [];\n for (const row of rows) {\n res = res.concat(row.elements);\n }\n res = res.filter(e => this.checkCondition(e));\n switch (screenWidthName) {\n case 'lg':\n return res.filter(e => e.collapse === 'always' || e.collapse === 'lg');\n case 'md':\n return res.filter(e => e.collapse === 'always' || e.collapse === 'lg' || e.collapse === 'md');\n case 'sm':\n // eslint-disable-next-line max-len\n return res.filter(e => !e.collapse || e.collapse === 'always' || e.collapse === 'lg' || e.collapse === 'md' || e.collapse === 'sm');\n }\n }\n\n /**\n * Get all elements at the provided position from the given elements.\n *\n * @param position - The position for which to get the elements.\n * @param row - The row to get the elements from.\n * @returns All Elements for the provided input.\n */\n getFooterElementsForRow(position: 'left' | 'center' | 'right', row: FooterRow): 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 || e.position === position);\n }\n return res.filter(e => e.position === position);\n }\n}","import { Route } from '@angular/router';\nimport { FooterRow, NavFooterElement } from '../models/footer.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 { NavElement, NavElementTypes } from '../models/nav.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 // eslint-disable-next-line jsdoc/require-jsdoc\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 *\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 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) as NavInternalLink[];\n }\n}","import { Component, Input } from '@angular/core';\nimport { NavButton } from '../../models/nav-button.model';\nimport { NavHtml } from '../../models/nav-html.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';\nimport { NavElement, NavElementTypes } from '../../models/nav.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()\n element!: NavElement;\n\n /**\n * Whether or not the element is inside a sidenav.\n */\n @Input()\n isSidenavElement!: boolean;\n\n /**\n * Whether or not the element is inside a menu.\n */\n @Input()\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 : T extends NavElementTypes.HTML ? NavHtml\n : T extends NavElementTypes.TEXT ? NavText\n : never;","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'nav-title',\n templateUrl: './nav-title.component.html',\n styleUrls: ['./nav-title.component.scss', '../base-nav-title.scss'],\n standalone: true,\n imports: [\n CommonModule\n ]\n})\nexport class NavTitleComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.TITLE> { }","<h1 [class.sidenavElement]=\"isSidenavElement\" [class.menuItem]=\"isMenuItem\">\n <i *ngIf=\"elementValue.icon\" [ngClass]=\"elementValue.icon\"></i>\n {{elementValue.title}}\n</h1>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'nav-title-with-internal-link',\n templateUrl: './nav-title-with-internal-link.component.html',\n styleUrls: ['./nav-title-with-internal-link.component.scss', '../base-nav-title.scss'],\n standalone: true,\n imports: [\n CommonModule,\n RouterModule\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 id=\"title-link\" disableRipple\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>\n <h1>\n <i *ngIf=\"elementValue.icon\" [ngClass]=\"elementValue.icon\"></i>\n {{elementValue.title}}\n </h1>\n</a>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'nav-title-with-external-link',\n templateUrl: './nav-title-with-external-link.component.html',\n styleUrls: ['./nav-title-with-external-link.component.scss', '../base-nav-title.scss'],\n standalone: true,\n imports: [\n CommonModule\n ]\n})\nexport class NavTitleWithExternalLinkComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.TITLE_WITH_EXTERNAL_LINK> { }","<a class=\"title-link\" disableRipple\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 <h1>\n <i *ngIf=\"elementValue.icon\" [ngClass]=\"elementValue.icon\"></i>\n {{elementValue.title}}\n </h1>\n</a>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'nav-image',\n templateUrl: './nav-image.component.html',\n styleUrls: ['./nav-image.component.scss', '../base-nav-image.scss'],\n standalone: true,\n imports: [\n CommonModule\n ]\n})\nexport class NavImageComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.IMAGE> { }","<img [ngStyle]=\"{ 'height.px': elementValue.height }\" [class.sidenavElement]=\"isSidenavElement\" [class.menuItem]=\"isMenuItem\" [src]=\"elementValue.url\">","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'nav-image-with-internal-link',\n templateUrl: './nav-image-with-internal-link.component.html',\n styleUrls: ['./nav-image-with-internal-link.component.scss', '../base-nav-image.scss'],\n standalone: true,\n imports: [\n CommonModule,\n RouterModule\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 id=\"image-link\" disableRipple\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>\n <img [ngStyle]=\"{ 'height.px': elementValue.height }\" [src]=\"elementValue.url\">\n</a>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'nav-image-with-external-link',\n templateUrl: './nav-image-with-external-link.component.html',\n styleUrls: ['./nav-image-with-external-link.component.scss', '../base-nav-image.scss'],\n standalone: true,\n imports: [\n CommonModule\n ]\n})\nexport class NavImageWithExternalLinkComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.IMAGE_WITH_EXTERNAL_LINK> { }","<a id=\"image-link\" disableRipple\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 [ngStyle]=\"{ 'height.px': elementValue.height }\" [src]=\"elementValue.url\">\n</a>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component, EnvironmentInjector } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/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 MatButtonModule\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 this.injector.runInContext(() => this.elementValue.action());\n }\n}","<button mat-raised-button\n (click)=\"runAction()\"\n [class.sidenavElement]=\"isSidenavElement\"\n [class.menuItem]=\"isMenuItem\"\n>\n <i *ngIf=\"elementValue.icon\" [ngClass]=\"elementValue.icon\"></i>\n {{elementValue.name}}\n</button>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { NavButtonComponent } from '../nav-button/nav-button.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/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 MatButtonModule\n ]\n})\nexport class NavButtonFlatComponent extends NavButtonComponent {}","<button mat-button\n (click)=\"runAction()\"\n [class.sidenavElement]=\"isSidenavElement\"\n [class.menuItem]=\"isMenuItem\"\n>\n <i *ngIf=\"elementValue.icon\" [ngClass]=\"elementValue.icon\"></i>\n {{elementValue.name}}\n</button>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { RouterModule } from '@angular/router';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/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 MatButtonModule,\n RouterModule\n ]\n})\nexport class NavInternalLinkComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.INTERNAL_LINK> {\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 mat-button\n [routerLink]=\"route\"\n [target]=\"elementValue.openInNewTab ? '_blank' : '_self'\"\n [rel]=\"elementValue.openInNewTab ? 'noreferrer noopener' : undefined\"\n [class.sidenavElement]=\"isSidenavElement\"\n [class.menuItem]=\"isMenuItem\"\n>\n <i *ngIf=\"elementValue.icon\" [ngClass]=\"elementValue.icon\"></i> \n {{elementValue.name}}\n</a>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/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 MatButtonModule\n ]\n})\nexport class NavExternalLinkComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.EXTERNAL_LINK> { }","<a mat-button\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>\n <i *ngIf=\"elementValue.icon\" [ngClass]=\"elementValue.icon\"></i>\n {{elementValue.name}}\n</a>","import { sanitize } from 'dompurify';\n\n/**\n * Contains HelperMethods around handling the purification of html strings.\n * Is less strict than angular's own sanitizer.\n */\nexport abstract class PurifyUtilities {\n\n /**\n * Sanitizes the given source string.\n *\n * @param source - The html value as a string.\n * @returns A sanitized string of the given source.\n */\n static sanitize(source: string): string {\n return sanitize(source);\n }\n}","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { PurifyUtilities } from '../../../../utilities/purify.utilities';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'nav-html',\n templateUrl: './nav-html.component.html',\n styleUrls: ['./nav-html.component.scss'],\n standalone: true,\n imports: [\n CommonModule\n ]\n})\nexport class NavHtmlComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.HTML> {\n\n constructor(private readonly sanitizer: DomSanitizer) {\n super();\n }\n\n get sanitizedHtml(): SafeHtml {\n return this.sanitizer.bypassSecurityTrustHtml(PurifyUtilities.sanitize(this.elementValue.html));\n }\n}","<span [class.sidenavElement]=\"isSidenavElement\" [class.menuItem]=\"isMenuItem\" [innerHtml]=\"sanitizedHtml\">\n</span>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'nav-text',\n templateUrl: './nav-text.component.html',\n styleUrls: ['./nav-text.component.scss'],\n standalone: true,\n imports: [\n CommonModule\n ]\n})\nexport class NavTextComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.TEXT> {}","<p *ngFor=\"let paragraph of elementValue.paragraphs\">\n {{paragraph}}\n</p>","import { AfterContentChecked, Component, HostListener, Input, OnInit, ViewChild } from '@angular/core';\nimport { MatButton } from '@angular/material/button';\nimport { MatSidenav } from '@angular/material/sidenav';\nimport { NavElement, NavElementTypes } from '../../models/nav.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})\nexport class NavElementComponent implements AfterContentChecked, OnInit {\n\n NavUtilities = NavUtilities;\n NavElementTypes = NavElementTypes;\n\n /**\n * The element to display.\n */\n @Input()\n element!: NavElement;\n\n /**\n * A reference to the sidenav. Is needed for the menu to close the sidenav.\n */\n @Input()\n sidenav?: MatSidenav;\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 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 protected internalIsMenuItem!: boolean;\n\n @ViewChild('menuButton')\n menuButton?: MatButton;\n\n menuWidth!: number;\n\n ngOnInit(): void {\n this.internalIsSidenavElement = this.isSidenavElement ?? false;\n this.internalIsMenuItem = this.isMenuItem ?? false;\n }\n\n ngAfterContentChecked(): void {\n if (this.menuButton) {\n this.menuWidth = this.getMenuWidth();\n }\n }\n\n /**\n * Updates the width of the menu to the value of its button.\n */\n @HostListener('window:resize', ['$event'])\n onResize(): void {\n if (this.menuButton) {\n this.menuWidth = this.getMenuWidth();\n }\n }\n\n private getMenuWidth(): number {\n return (this.menuButton?._elementRef.nativeElement as HTMLElement).offsetWidth;\n }\n\n /**\n * Defines if the sidenav should be closed when the given element is clicked.\n *\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.HTML:\n return;\n default:\n void this.sidenav?.close();\n }\n }\n}","<div [ngSwitch]=\"element.type\">\n <!-------------------------------------------->\n <!------------------Titles-------------------->\n <!-------------------------------------------->\n <div *ngSwitchCase=\"NavElementTypes.TITLE\">\n <nav-title [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-title>\n </div>\n <div *ngSwitchCase=\"NavElementTypes.TITLE_WITH_INTERNAL_LINK\">\n <nav-title-with-internal-link [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-title-with-internal-link>\n </div>\n <div *ngSwitchCase=\"NavElementTypes.TITLE_WITH_EXTERNAL_LINK\">\n <nav-title-with-external-link [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-title-with-external-link>\n </div>\n\n <!-------------------------------------------->\n <!-------------------Image-------------------->\n <!-------------------------------------------->\n <div *ngSwitchCase=\"NavElementTypes.IMAGE\">\n <nav-image [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-image>\n </div>\n <div *ngSwitchCase=\"NavElementTypes.IMAGE_WITH_EXTERNAL_LINK\">\n <nav-image-with-internal-link [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-image-with-internal-link>\n </div>\n <div *ngSwitchCase=\"NavElementTypes.IMAGE_WITH_INTERNAL_LINK\">\n <nav-image-with-external-link [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-image-with-external-link>\n </div>\n \n <!-------------------------------------------->\n <!-------------------Button------------------->\n <!-------------------------------------------->\n <div *ngSwitchCase=\"NavElementTypes.BUTTON\">\n <nav-button [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-button>\n </div>\n <div *ngSwitchCase=\"NavElementTypes.BUTTON_FLAT\">\n <nav-button-flat [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-button-flat>\n </div>\n\n <!-------------------------------------------->\n <!--------------------Link-------------------->\n <!-------------------------------------------->\n <div *ngSwitchCase=\"NavElementTypes.INTERNAL_LINK\">\n <nav-internal-link [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-internal-link>\n </div>\n <div *ngSwitchCase=\"NavElementTypes.EXTERNAL_LINK\">\n <nav-external-link [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-external-link>\n </div>\n\n <!-------------------------------------------->\n <!--------------------HTML-------------------->\n <!-------------------------------------------->\n <div *ngSwitchCase=\"NavElementTypes.HTML\">\n <nav-html [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-html>\n </div>\n\n <!-------------------------------------------->\n <!--------------------TEXT-------------------->\n <!-------------------------------------------->\n <div *ngSwitchCase=\"NavElementTypes.TEXT\">\n <nav-text [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-text>\n </div>\n\n <!-------------------------------------------->\n <!--------------------Menu-------------------->\n <!-------------------------------------------->\n <div *ngSwitchCase=\"NavElementTypes.MENU\">\n <button #menuButton *ngIf=\"internalIsMenuItem\"\n mat-menu-item\n [matMenuTriggerFor]=\"menu\"\n [class.sidenavElement]=\"isSidenavElement\"\n >\n <i *ngIf=\"NavUtilities.asMenu(element).icon\" [ngClass]=\"NavUtilities.asMenu(element).icon\"></i>\n {{NavUtilities.asMenu(element).name}}\n </button>\n\n <button #menuButton *ngIf=\"!internalIsMenuItem\"\n mat-button\n [matMenuTriggerFor]=\"menu\"\n [class.sidenavElement]=\"isSidenavElement\"\n >\n <i *ngIf=\"NavUtilities.asMenu(element).icon\" [ngClass]=\"NavUtilities.asMenu(element).icon\"></i>\n {{NavUtilities.asMenu(element).name}}\n </button>\n </div>\n\n <mat-menu #menu=\"matMenu\" [overlapTrigger]=\"false\" [style.min-width.px]=\"menuWidth\">\n <div *ngFor=\"let menuElement of NavUtilities.asMenu(element).elements\" [style.min-width.px]=\"menuWidth\">\n <ngx-mat-navigation-element (click)=\"clickSidenavElement(menuElement)\" [isSidenavElement]=\"internalIsSidenavElement\" [sidenav]=\"sidenav\" [isMenuItem]=\"true\" [element]=\"menuElement\">\n </ngx-mat-navigation-element>\n </div>\n </mat-menu>\n \n</div>","import { AfterContentChecked, Component, ElementRef, HostListener, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { MatSidenav } from '@angular/material/sidenav';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\nimport { Subject, takeUntil } from 'rxjs';\nimport { NavElement, NavElementTypes } from '../../models/nav.model';\nimport { NavbarRow } from '../../models/navbar.model';\nimport { NgxMatNavigationService } from '../../services/nav.service';\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})\nexport class NgxMatNavigationNavbarComponent implements OnInit, OnDestroy, AfterContentChecked {\n private readonly onDestroy: Subject<void> = new Subject();\n\n /**\n * The navbar rows to build the navbar from.\n */\n @Input()\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 @ViewChild('sidenav')\n sidenav?: MatSidenav;\n\n @ViewChild('navbar', { read: ElementRef })\n navbar?: ElementRef<HTMLElement>;\n\n burgerMenu: NavElement = {\n type: NavElementTypes.BUTTON_FLAT,\n name: '',\n icon: 'fas fa-bars',\n action: () => this.sidenav?.toggle(),\n collapse: 'never'\n };\n\n sanitizedMinHeight!: SafeStyle;\n\n screenWidthName: 'lg' | 'md' | 'sm' = this.getCurrentScreenWidthName();\n\n internalNavbarRows: NavbarRow[] = [];\n\n internalSidenavElements: NavElement[] = [];\n\n constructor(private readonly sanitizer: DomSanitizer, public navService: NgxMatNavigationService) {}\n\n ngOnInit(): void {\n this.navService.navbarRowsSubject.pipe(takeUntil(this.onDestroy)).subscribe(navbarRows => {\n this.internalNavbarRows = navbarRows;\n this.internalSidenavElements = this.navService.getSidenavElements(navbarRows, this.screenWidthName);\n if (!this.internalSidenavElements.length && this.sidenav && this.sidenav.opened) {\n void this.sidenav.close();\n }\n });\n this.navService.navbarRowsSubject.next(this.navbarRows);\n }\n\n ngOnDestroy(): void {\n this.onDestroy.next(undefined);\n this.onDestroy.complete();\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 if (!this.minHeight || this.navbar.nativeElement.offsetHeight > this.minHeight) {\n this.sanitizedMinHeight = this.sanitizer.bypassSecurityTrustStyle(\n // eslint-disable-next-line max-len\n `calc(100vh - ${this.navbar.nativeElement.offsetHeight + (this.minHeightOtherElements ? this.minHeightOtherElements : 0)}px)`\n );\n }\n else {\n this.sanitizedMinHeight = this.sanitizer.bypassSecurityTrustStyle(\n // eslint-disable-next-line max-len\n `calc(100vh - ${(this.minHeight ? this.minHeight : 0) + (this.minHeightOtherElements ? this.minHeightOtherElements : 0)}px)`\n );\n }\n }\n }\n\n /**\n * Updates the current screen width and filters the sidenav elements accordingly.\n *\n * @throws When no height data is provided or the data is invalid.\n */\n @HostListener('window:resize', ['$event'])\n onResize(): void {\n this.updateHeights();\n this.screenWidthName = this.getCurrentScreenWidthName();\n this.navService.navbarRowsSubject.next(this.navService.navbarRowsSubject.value);\n }\n\n private getCurrentScreenWidthName(): 'lg' | 'md' | 'sm' {\n if (window.innerWidth < 768) {\n return 'sm';\n }\n else if (window.innerWidth < 992) {\n return 'md';\n }\n else {\n return 'lg';\n }\n }\n\n /**\n * Defines if the sidenav should be closed when the given element is clicked.\n *\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.HTML:\n return;\n default:\n void this.sidenav?.close();\n }\n }\n}","<mat-toolbar [style.min-height.px]=\"minHeight ? minHeight : 0\" id=\"toolbar\" #navbar *ngIf=\"navService.getNavbarRows(navbarRows, screenWidthName).length>1\" class=\"mat-elevation-z8\">\n <mat-toolbar-row class=\"toolbar-row\" *ngFor=\"let row of navService.getNavbarRows(navbarRows, screenWidthName)\">\n <div class=\"toolbar-col\">\n <ngx-mat-navigation-element *ngFor=\"let element of navService.getNavbarElementsForRow('left', screenWidthName, row)\" [element]=\"element\"></ngx-mat-navigation-element>\n </div>\n <div class=\"toolbar-col\">\n <ngx-mat-navigation-element *ngFor=\"let element of navService.getNavbarElementsForRow('center', screenWidthName, row)\" [element]=\"element\"></ngx-mat-navigation-element>\n </div>\n <div class=\"toolbar-col\">\n <span *ngFor=\"let element of navService.getNavbarElementsForRow('right', screenWidthName, row)\">\n <ngx-mat-navigation-element [element]=\"element\"></ngx-mat-navigation-element>\n </span>\n <span *ngIf=\"internalSidenavElements.length && (navbarRows.indexOf(row) === 0)\">\n <ngx-mat-navigation-element [element]=\"burgerMenu\"></ngx-mat-navigation-element>\n </span>\n </div>\n </mat-toolbar-row>\n</mat-toolbar>\n\n<mat-toolbar [style.min-height.px]=\"minHeight ? minHeight : 0\" id=\"toolbar\" #navbar *ngIf=\"!(navService.getNavbarRows(navbarRows, screenWidthName).length>1)\" class=\"mat-elevation-z8\">\n <div class=\"toolbar-row\">\n <div class=\"toolbar-col\">\n <ngx-mat-navigation-element *ngFor=\"let element of navService.getNavbarElementsForRow('left', screenWidthName, navbarRows[0])\" [element]=\"element\"></ngx-mat-navigation-element>\n </div>\n <div class=\"toolbar-col\">\n <ngx-mat-navigation-element *ngFor=\"let element of navService.getNavbarElementsForRow('center', screenWidthName, navbarRows[0])\" [element]=\"element\"></ngx-mat-navigation-element>\n </div>\n <div class=\"toolbar-col\">\n <ngx-mat-navigation-element *ngFor=\"let element of navService.getNavbarElementsForRow('right', screenWidthName, navbarRows[0])\" [element]=\"element\"></ngx-mat-navigation-element>\n <ngx-mat-navigation-element *ngIf=\"internalSidenavElements.length\" [element]=\"burgerMenu\"></ngx-mat-navigation-element>\n </div>\n </div>\n</mat-toolbar>\n\n<mat-sidenav-container style=\"background-color: transparent;\" [style.min-height]=\"sanitizedMinHeight\">\n <mat-sidenav style=\"padding-top: 12px; padding-bottom: 12px;\" #sidenav position=\"end\" [style.min-width]=\"minSidenavWidth\" [autoFocus]=\"false\">\n <div style=\"margin-left: 12px; margin-right: 12px;\" *ngFor=\"let element of internalSidenavElements\">\n <ngx-mat-navigation-element (click)=\"clickSidenavElement(element)\" [sidenav]=\"sidenav\" [isSidenavElement]=\"true\" [element]=\"element\"></ngx-mat-navigation-element>\n </div>\n </mat-sidenav>\n <mat-sidenav-content>\n <ng-content></ng-content>\n </mat-sidenav-content>\n</mat-sidenav-container>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { NavButtonFlatComponent } from './button/nav-button-flat/nav-button-flat.component';\nimport { NavButtonComponent } from './button/nav-button/nav-button.component';\nimport { NavHtmlComponent } from './html/nav-html/nav-html.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 { NavImageComponent } from './image/nav-image/nav-image.component';\nimport { NavExternalLinkComponent } from './link/nav-external-link/nav-external-link.component';\nimport { NavInternalLinkComponent } from './link/nav-internal-link/nav-internal-link.component';\nimport { NavElementComponent } from './nav-element.component';\nimport { NavTextComponent } from './text/nav-text/nav-text.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 { NavTitleComponent } from './title/nav-title/nav-title.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatMenuModule,\n MatButtonModule,\n MatSidenavModule,\n NavTitleComponent,\n NavTitleWithInternalLinkComponent,\n NavTitleWithExternalLinkComponent,\n NavImageComponent,\n NavImageWithInternalLinkComponent,\n NavImageWithExternalLinkComponent,\n NavButtonComponent,\n NavButtonFlatComponent,\n NavInternalLinkComponent,\n NavExternalLinkComponent,\n NavHtmlComponent,\n NavTextComponent\n ],\n declarations: [\n NavElementComponent\n ],\n exports: [NavElementComponent]\n})\nexport class NavElementModule { }","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { NgxMatNavigationNavbarComponent } from './navbar.component';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { NavElementModule } from '../nav-element/nav-element.module';\nimport { MatSidenavModule } from '@angular/material/sidenav';\n\n@NgModule({\n declarations: [NgxMatNavigationNavbarComponent],\n imports: [\n CommonModule,\n MatToolbarModule,\n NavElementModule,\n MatSidenavModule\n ],\n exports: [NgxMatNavigationNavbarComponent]\n})\nexport class NgxMatNavigationNavbarModule {}","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { FooterRow } from '../../models/footer.model';\nimport { NgxMatNavigationService } from '../../services/nav.service';\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})\nexport class NgxMatNavigationFooterComponent implements OnInit, OnDestroy {\n private readonly onDestroy: Subject<void> = new Subject();\n\n /**\n * The minimum height of the footer.\n */\n @Input()\n minHeight!: number;\n\n /**\n * The footer rows to build the footer from.\n */\n @Input()\n footerRows!: FooterRow[];\n\n internalFooterRows: FooterRow[] = [];\n\n constructor(public navService: NgxMatNavigationService) { }\n\n ngOnInit(): void {\n this.navService.footerRowsSubject.pipe(takeUntil(this.onDestroy)).subscribe(footerRows => {\n this.internalFooterRows = footerRows;\n });\n this.navService.footerRowsSubject.next(this.footerRows);\n }\n\n ngOnDestroy(): void {\n this.onDestroy.next(undefined);\n this.onDestroy.complete();\n }\n}","<footer [style.min-height.px]=\"minHeight\">\n <div class=\"footer-row\" *ngFor=\"let row of internalFooterRows\">\n <div class=\"footer-col\" id=\"left\">\n <ngx-mat-navigation-element *ngFor=\"let element of navService.getFooterElementsForRow('left', row)\" [element]=\"element\"></ngx-mat-navigation-element>\n </div>\n <div class=\"footer-col\" id=\"center\">\n <ngx-mat-navigation-element *ngFor=\"let element of navService.getFooterElementsForRow('center', row)\" [element]=\"element\"></ngx-mat-navigation-element>\n </div>\n <div class=\"footer-col\" id=\"right\">\n <ngx-mat-navigation-element *ngFor=\"let element of navService.getFooterElementsForRow('right', row)\" [element]=\"element\"></ngx-mat-navigation-element>\n </div>\n </div>\n</footer>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { NavElementModule } from '../nav-element/nav-element.module';\nimport { NgxMatNavigationFooterComponent } from './footer.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatToolbarModule,\n NavElementModule\n ],\n declarations: [NgxMatNavigationFooterComponent],\n exports: [NgxMatNavigationFooterComponent]\n})\nexport class NgxMatNavigationFooterModule { }","import { Component, Input, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\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})\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 title!: string;\n message!: string;\n buttonLabel!: string;\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 // eslint-disable-next-line max-len\n this.message = this.config?.message ?? routeData?.message ?? '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<button mat-raised-button [routerLink]=\"homeRoute\">{{buttonLabel}}</button>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgxMatNavigationNotFoundComponent } from './not-found.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { RouterModule } from '@angular/router';\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n RouterModule\n ],\n declarations: [NgxMatNavigationNotFoundComponent],\n exports: [NgxMatNavigationNotFoundComponent]\n})\nexport class NgxMatNavigationNotFoundModule { }","/*\n * Public API Surface of ngx-material-navigation\n */\nexport * from './models/footer.model';\nexport * from './models/nav-button.model';\nexport * from './models/nav-html.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.model';\nexport * from './models/navbar.model';\nexport * from './models/page-not-found-config.model';\n\nexport * from './components/navbar/navbar.component';\nexport * from './components/navbar/navbar.module';\n\nexport * from './components/footer/footer.component';\nexport * from './components/footer/footer.module';\n\nexport * from './components/not-found/not-found.component';\nexport * from './components/not-found/not-found.module';\n\nexport * from './utilities/nav.utilities';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i1","i4.NavTitleComponent","i5.NavTitleWithInternalLinkComponent","i6.NavTitleWithExternalLinkComponent","i7.NavImageComponent","i8.NavImageWithInternalLinkComponent","i9.NavImageWithExternalLinkComponent","i10.NavButtonComponent","i11.NavButtonFlatComponent","i12.NavInternalLinkComponent","i13.NavExternalLinkComponent","i14.NavHtmlComponent","i15.NavTextComponent","i2.NgxMatNavigationService","i5.NavElementComponent","i1.NgxMatNavigationService","i3.NavElementComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-material-navigation.mjs","sources":["../../../projects/ngx-material-navigation/src/models/nav.model.ts","../../../projects/ngx-material-navigation/src/models/nav-link.model.ts","../../../projects/ngx-material-navigation/src/services/nav.service.ts","../../../projects/ngx-material-navigation/src/utilities/nav.utilities.ts","../../../projects/ngx-material-navigation/src/components/nav-element/base-nav-element.component.ts","../../../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-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/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/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-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/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/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/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/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/utilities/purify.utilities.ts","../../../projects/ngx-material-navigation/src/components/nav-element/html/nav-html/nav-html.component.ts","../../../projects/ngx-material-navigation/src/components/nav-element/html/nav-html/nav-html.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/nav-element.component.ts","../../../projects/ngx-material-navigation/src/components/nav-element/nav-element.component.html","../../../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/nav-element/nav-element.module.ts","../../../projects/ngx-material-navigation/src/components/navbar/navbar.module.ts","../../../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/components/footer/footer.module.ts","../../../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/not-found/not-found.module.ts","../../../projects/ngx-material-navigation/src/public-api.ts","../../../projects/ngx-material-navigation/src/ngx-material-navigation.ts"],"sourcesContent":["import { Route } from '@angular/router';\nimport { NavButton } from './nav-button.model';\nimport { NavHtml } from './nav-html.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 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 HTML = 'html',\n TEXT = 'text'\n}\n\n/**\n * The abstract base class of any nav element.\n */\nexport abstract class BaseNavElement {\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?: 'lg' | 'md' | 'sm' | 'never' | 'always';\n /**\n * A condition that must be met for the element to be displayed.\n */\n condition?: () => boolean;\n}\n\n/**\n * One of the many NavElements.\n */\nexport type NavElement<RouteType extends Route = NavRoute> =\n NavTitle | NavTitleWithInternalLink<RouteType> | NavTitleWithExternalLink\n | NavImage | NavImageWithExternalLink | NavImageWithInternalLink<RouteType>\n | NavButton | NavInternalLink<RouteType> | NavExternalLink | NavMenu | NavHtml | NavText;","import { Route } from '@angular/router';\nimport { NavRoute } from './nav-route.model';\nimport { BaseNavElement, NavElementTypes } from './nav.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?: string;\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\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}","import { EnvironmentInjector, Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { FooterRow, NavFooterElement } from '../models/footer.model';\nimport { NavElement } from '../models/nav.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 * The subject of the currently visible navbar rows.\n */\n readonly navbarRowsSubject: BehaviorSubject<NavbarRow[]> = new BehaviorSubject<NavbarRow[]>([]);\n\n /**\n * The subject of the currently visible sidenav elements.\n */\n readonly footerRowsSubject: BehaviorSubject<FooterRow[]> = new BehaviorSubject<FooterRow[]>([]);\n\n constructor(private readonly injector: EnvironmentInjector) { }\n\n /**\n * Gets the rows that are really displayed in the navbar and not collapsed to the sidenav.\n *\n * @param navbarRows - All navbar rows, including the ones collapsed to the sidenav.\n * @param screenWidthName - Name of the current width of the screen.\n * @returns All rows that are displayed inside the navbar.\n */\n getNavbarRows(navbarRows: NavbarRow[], screenWidthName: 'lg' | 'md' | 'sm'): NavbarRow[] {\n const emptyRows: NavbarRow[] = navbarRows.filter(r =>\n !this.getNavbarElementsForRow('left', screenWidthName, r).length\n && !this.getNavbarElementsForRow('center', screenWidthName, r).length\n && !this.getNavbarElementsForRow('right', screenWidthName, r).length\n );\n return navbarRows.filter(r => !emptyRows.includes(r));\n }\n\n /**\n * Get all elements at the provided position with the provided screenWidth from the given elements.\n *\n * @param position - The position for which to get the elements.\n * @param screenWidthName - Name of the current width of the screen.\n * @param row - The row to get the elements from.\n * @returns All Elements for the provided input.\n */\n getNavbarElementsForRow(position: 'left' | 'center' | 'right', screenWidthName: 'lg' | 'md' | 'sm', row: NavbarRow): NavElement[] {\n let res: NavElement[] = [];\n res = res.concat(row.elements);\n res = res.filter(e => this.checkCondition(e));\n\n if (position === 'left') {\n res = res.filter(e => !e.position || e.position === position);\n }\n else {\n res = res.filter(e => e.position === position);\n }\n switch (screenWidthName) {\n case 'lg':\n return res.filter(e => e.collapse !== 'always' && e.collapse !== 'lg');\n case 'md':\n return res.filter(e => e.collapse !== 'always' && e.collapse !== 'lg' && e.collapse !== 'md');\n case 'sm':\n return res.filter(e => e.collapse === 'never');\n }\n }\n\n private checkCondition(element: NavElement | NavFooterElement): boolean {\n if (!element.condition) {\n return true;\n }\n // runInContext(...) is needed to enable the user to use injections in his condition functions.\n return this.injector.runInContext(() => element.condition ? element.condition() : true);\n }\n\n /**\n * Gets all the elements to display in the sidenav.\n *\n * @param rows - The rows to get the elements from.\n * @param screenWidthName - Name of the current width of the screen.\n * @returns The NavElements to display in the sidenav.\n */\n getSidenavElements(rows: NavbarRow[], screenWidthName: 'lg' | 'md' | 'sm'): NavElement[] {\n let res: NavElement[] = [];\n for (const row of rows) {\n res = res.concat(row.elements);\n }\n res = res.filter(e => this.checkCondition(e));\n switch (screenWidthName) {\n case 'lg':\n return res.filter(e => e.collapse === 'always' || e.collapse === 'lg');\n case 'md':\n return res.filter(e => e.collapse === 'always' || e.collapse === 'lg' || e.collapse === 'md');\n case 'sm':\n // eslint-disable-next-line max-len\n return res.filter(e => !e.collapse || e.collapse === 'always' || e.collapse === 'lg' || e.collapse === 'md' || e.collapse === 'sm');\n }\n }\n\n /**\n * Get all elements at the provided position from the given elements.\n *\n * @param position - The position for which to get the elements.\n * @param row - The row to get the elements from.\n * @returns All Elements for the provided input.\n */\n getFooterElementsForRow(position: 'left' | 'center' | 'right', row: FooterRow): 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 || e.position === position);\n }\n return res.filter(e => e.position === position);\n }\n}","import { Route } from '@angular/router';\nimport { FooterRow, NavFooterElement } from '../models/footer.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 { NavElement, NavElementTypes } from '../models/nav.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 // eslint-disable-next-line jsdoc/require-jsdoc\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 *\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 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) as NavInternalLink[];\n }\n}","import { Component, Input } from '@angular/core';\nimport { NavButton } from '../../models/nav-button.model';\nimport { NavHtml } from '../../models/nav-html.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';\nimport { NavElement, NavElementTypes } from '../../models/nav.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()\n element!: NavElement;\n\n /**\n * Whether or not the element is inside a sidenav.\n */\n @Input()\n isSidenavElement!: boolean;\n\n /**\n * Whether or not the element is inside a menu.\n */\n @Input()\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 : T extends NavElementTypes.HTML ? NavHtml\n : T extends NavElementTypes.TEXT ? NavText\n : never;","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'nav-title',\n templateUrl: './nav-title.component.html',\n styleUrls: ['./nav-title.component.scss', '../base-nav-title.scss'],\n standalone: true,\n imports: [\n CommonModule\n ]\n})\nexport class NavTitleComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.TITLE> { }","<h1 [class.sidenavElement]=\"isSidenavElement\" [class.menuItem]=\"isMenuItem\">\n <i *ngIf=\"elementValue.icon\" [ngClass]=\"elementValue.icon\"></i>\n {{elementValue.title}}\n</h1>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'nav-title-with-internal-link',\n templateUrl: './nav-title-with-internal-link.component.html',\n styleUrls: ['./nav-title-with-internal-link.component.scss', '../base-nav-title.scss'],\n standalone: true,\n imports: [\n CommonModule,\n RouterModule\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 id=\"title-link\" disableRipple\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>\n <h1>\n <i *ngIf=\"elementValue.icon\" [ngClass]=\"elementValue.icon\"></i>\n {{elementValue.title}}\n </h1>\n</a>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'nav-title-with-external-link',\n templateUrl: './nav-title-with-external-link.component.html',\n styleUrls: ['./nav-title-with-external-link.component.scss', '../base-nav-title.scss'],\n standalone: true,\n imports: [\n CommonModule\n ]\n})\nexport class NavTitleWithExternalLinkComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.TITLE_WITH_EXTERNAL_LINK> { }","<a class=\"title-link\" disableRipple\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 <h1>\n <i *ngIf=\"elementValue.icon\" [ngClass]=\"elementValue.icon\"></i>\n {{elementValue.title}}\n </h1>\n</a>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'nav-image',\n templateUrl: './nav-image.component.html',\n styleUrls: ['./nav-image.component.scss', '../base-nav-image.scss'],\n standalone: true,\n imports: [\n CommonModule\n ]\n})\nexport class NavImageComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.IMAGE> { }","<img [ngStyle]=\"{ 'height.px': elementValue.height }\" [class.sidenavElement]=\"isSidenavElement\" [class.menuItem]=\"isMenuItem\" [src]=\"elementValue.url\">","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'nav-image-with-internal-link',\n templateUrl: './nav-image-with-internal-link.component.html',\n styleUrls: ['./nav-image-with-internal-link.component.scss', '../base-nav-image.scss'],\n standalone: true,\n imports: [\n CommonModule,\n RouterModule\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 id=\"image-link\" disableRipple\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>\n <img [ngStyle]=\"{ 'height.px': elementValue.height }\" [src]=\"elementValue.url\">\n</a>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'nav-image-with-external-link',\n templateUrl: './nav-image-with-external-link.component.html',\n styleUrls: ['./nav-image-with-external-link.component.scss', '../base-nav-image.scss'],\n standalone: true,\n imports: [\n CommonModule\n ]\n})\nexport class NavImageWithExternalLinkComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.IMAGE_WITH_EXTERNAL_LINK> { }","<a id=\"image-link\" disableRipple\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 [ngStyle]=\"{ 'height.px': elementValue.height }\" [src]=\"elementValue.url\">\n</a>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component, EnvironmentInjector } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/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 MatButtonModule\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 this.injector.runInContext(() => this.elementValue.action());\n }\n}","<button mat-raised-button\n (click)=\"runAction()\"\n [class.sidenavElement]=\"isSidenavElement\"\n [class.menuItem]=\"isMenuItem\"\n>\n <i *ngIf=\"elementValue.icon\" [ngClass]=\"elementValue.icon\"></i>\n {{elementValue.name}}\n</button>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { NavButtonComponent } from '../nav-button/nav-button.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/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 MatButtonModule\n ]\n})\nexport class NavButtonFlatComponent extends NavButtonComponent {}","<button mat-button\n (click)=\"runAction()\"\n [class.sidenavElement]=\"isSidenavElement\"\n [class.menuItem]=\"isMenuItem\"\n>\n <i *ngIf=\"elementValue.icon\" [ngClass]=\"elementValue.icon\"></i>\n {{elementValue.name}}\n</button>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { RouterModule } from '@angular/router';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/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 MatButtonModule,\n RouterModule\n ]\n})\nexport class NavInternalLinkComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.INTERNAL_LINK> {\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 mat-button\n [routerLink]=\"route\"\n [target]=\"elementValue.openInNewTab ? '_blank' : '_self'\"\n [rel]=\"elementValue.openInNewTab ? 'noreferrer noopener' : undefined\"\n [class.sidenavElement]=\"isSidenavElement\"\n [class.menuItem]=\"isMenuItem\"\n>\n <i *ngIf=\"elementValue.icon\" [ngClass]=\"elementValue.icon\"></i> \n {{elementValue.name}}\n</a>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/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 MatButtonModule\n ]\n})\nexport class NavExternalLinkComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.EXTERNAL_LINK> { }","<a mat-button\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>\n <i *ngIf=\"elementValue.icon\" [ngClass]=\"elementValue.icon\"></i>\n {{elementValue.name}}\n</a>","import { sanitize } from 'dompurify';\n\n/**\n * Contains HelperMethods around handling the purification of html strings.\n * Is less strict than angular's own sanitizer.\n */\nexport abstract class PurifyUtilities {\n\n /**\n * Sanitizes the given source string.\n *\n * @param source - The html value as a string.\n * @returns A sanitized string of the given source.\n */\n static sanitize(source: string): string {\n return sanitize(source);\n }\n}","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { PurifyUtilities } from '../../../../utilities/purify.utilities';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'nav-html',\n templateUrl: './nav-html.component.html',\n styleUrls: ['./nav-html.component.scss'],\n standalone: true,\n imports: [\n CommonModule\n ]\n})\nexport class NavHtmlComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.HTML> {\n\n constructor(private readonly sanitizer: DomSanitizer) {\n super();\n }\n\n get sanitizedHtml(): SafeHtml {\n return this.sanitizer.bypassSecurityTrustHtml(PurifyUtilities.sanitize(this.elementValue.html));\n }\n}","<span [class.sidenavElement]=\"isSidenavElement\" [class.menuItem]=\"isMenuItem\" [innerHtml]=\"sanitizedHtml\">\n</span>","/* eslint-disable jsdoc/require-jsdoc */\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { NavElementTypes } from '../../../../models/nav.model';\nimport { NgxMatNavigationBaseNavElementComponent } from '../../base-nav-element.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'nav-text',\n templateUrl: './nav-text.component.html',\n styleUrls: ['./nav-text.component.scss'],\n standalone: true,\n imports: [\n CommonModule\n ]\n})\nexport class NavTextComponent extends NgxMatNavigationBaseNavElementComponent<NavElementTypes.TEXT> {}","<div *ngFor=\"let paragraph of elementValue.paragraphs\">\n {{paragraph}}\n</div>","import { AfterContentChecked, Component, HostListener, Input, OnInit, ViewChild } from '@angular/core';\nimport { MatButton } from '@angular/material/button';\nimport { MatSidenav } from '@angular/material/sidenav';\nimport { NavElement, NavElementTypes } from '../../models/nav.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})\nexport class NavElementComponent implements AfterContentChecked, OnInit {\n\n NavUtilities = NavUtilities;\n NavElementTypes = NavElementTypes;\n\n /**\n * The element to display.\n */\n @Input()\n element!: NavElement;\n\n /**\n * A reference to the sidenav. Is needed for the menu to close the sidenav.\n */\n @Input()\n sidenav?: MatSidenav;\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 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 protected internalIsMenuItem!: boolean;\n\n @ViewChild('menuButton')\n menuButton?: MatButton;\n\n menuWidth!: number;\n\n ngOnInit(): void {\n this.internalIsSidenavElement = this.isSidenavElement ?? false;\n this.internalIsMenuItem = this.isMenuItem ?? false;\n }\n\n ngAfterContentChecked(): void {\n if (this.menuButton) {\n this.menuWidth = this.getMenuWidth();\n }\n }\n\n /**\n * Updates the width of the menu to the value of its button.\n */\n @HostListener('window:resize', ['$event'])\n onResize(): void {\n if (this.menuButton) {\n this.menuWidth = this.getMenuWidth();\n }\n }\n\n private getMenuWidth(): number {\n return (this.menuButton?._elementRef.nativeElement as HTMLElement).offsetWidth;\n }\n\n /**\n * Defines if the sidenav should be closed when the given element is clicked.\n *\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.HTML:\n return;\n default:\n void this.sidenav?.close();\n }\n }\n}","<div [ngSwitch]=\"element.type\">\n <!-------------------------------------------->\n <!------------------Titles-------------------->\n <!-------------------------------------------->\n <div *ngSwitchCase=\"NavElementTypes.TITLE\">\n <nav-title [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-title>\n </div>\n <div *ngSwitchCase=\"NavElementTypes.TITLE_WITH_INTERNAL_LINK\">\n <nav-title-with-internal-link [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-title-with-internal-link>\n </div>\n <div *ngSwitchCase=\"NavElementTypes.TITLE_WITH_EXTERNAL_LINK\">\n <nav-title-with-external-link [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-title-with-external-link>\n </div>\n\n <!-------------------------------------------->\n <!-------------------Image-------------------->\n <!-------------------------------------------->\n <div *ngSwitchCase=\"NavElementTypes.IMAGE\">\n <nav-image [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-image>\n </div>\n <div *ngSwitchCase=\"NavElementTypes.IMAGE_WITH_EXTERNAL_LINK\">\n <nav-image-with-internal-link [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-image-with-internal-link>\n </div>\n <div *ngSwitchCase=\"NavElementTypes.IMAGE_WITH_INTERNAL_LINK\">\n <nav-image-with-external-link [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-image-with-external-link>\n </div>\n \n <!-------------------------------------------->\n <!-------------------Button------------------->\n <!-------------------------------------------->\n <div *ngSwitchCase=\"NavElementTypes.BUTTON\">\n <nav-button [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-button>\n </div>\n <div *ngSwitchCase=\"NavElementTypes.BUTTON_FLAT\">\n <nav-button-flat [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-button-flat>\n </div>\n\n <!-------------------------------------------->\n <!--------------------Link-------------------->\n <!-------------------------------------------->\n <div *ngSwitchCase=\"NavElementTypes.INTERNAL_LINK\">\n <nav-internal-link [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-internal-link>\n </div>\n <div *ngSwitchCase=\"NavElementTypes.EXTERNAL_LINK\">\n <nav-external-link [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-external-link>\n </div>\n\n <!-------------------------------------------->\n <!--------------------HTML-------------------->\n <!-------------------------------------------->\n <div *ngSwitchCase=\"NavElementTypes.HTML\">\n <nav-html [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-html>\n </div>\n\n <!-------------------------------------------->\n <!--------------------TEXT-------------------->\n <!-------------------------------------------->\n <div *ngSwitchCase=\"NavElementTypes.TEXT\">\n <nav-text [element]=\"element\" [isSidenavElement]=\"internalIsSidenavElement\" [isMenuItem]=\"internalIsMenuItem\"></nav-text>\n </div>\n\n <!-------------------------------------------->\n <!--------------------Menu-------------------->\n <!-------------------------------------------->\n <div *ngSwitchCase=\"NavElementTypes.MENU\">\n <button #menuButton *ngIf=\"internalIsMenuItem\"\n mat-menu-item\n [matMenuTriggerFor]=\"menu\"\n [class.sidenavElement]=\"isSidenavElement\"\n >\n <i *ngIf=\"NavUtilities.asMenu(element).icon\" [ngClass]=\"NavUtilities.asMenu(element).icon\"></i>\n {{NavUtilities.asMenu(element).name}}\n </button>\n\n <button #menuButton *ngIf=\"!internalIsMenuItem\"\n mat-button\n [matMenuTriggerFor]=\"menu\"\n [class.sidenavElement]=\"isSidenavElement\"\n >\n <i *ngIf=\"NavUtilities.asMenu(element).icon\" [ngClass]=\"NavUtilities.asMenu(element).icon\"></i>\n {{NavUtilities.asMenu(element).name}}\n </button>\n </div>\n\n <mat-menu #menu=\"matMenu\" [overlapTrigger]=\"false\" [style.min-width.px]=\"menuWidth\">\n <div *ngFor=\"let menuElement of NavUtilities.asMenu(element).elements\" [style.min-width.px]=\"menuWidth\">\n <ngx-mat-navigation-element (click)=\"clickSidenavElement(menuElement)\" [isSidenavElement]=\"internalIsSidenavElement\" [sidenav]=\"sidenav\" [isMenuItem]=\"true\" [element]=\"menuElement\">\n </ngx-mat-navigation-element>\n </div>\n </mat-menu>\n \n</div>","import { AfterContentChecked, Component, ElementRef, HostListener, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { MatSidenav } from '@angular/material/sidenav';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\nimport { Subject, takeUntil } from 'rxjs';\nimport { NavElement, NavElementTypes } from '../../models/nav.model';\nimport { NavbarRow } from '../../models/navbar.model';\nimport { NgxMatNavigationService } from '../../services/nav.service';\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})\nexport class NgxMatNavigationNavbarComponent implements OnInit, OnDestroy, AfterContentChecked {\n private readonly onDestroy: Subject<void> = new Subject();\n\n /**\n * The navbar rows to build the navbar from.\n */\n @Input()\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 @ViewChild('sidenav')\n sidenav?: MatSidenav;\n\n @ViewChild('navbar', { read: ElementRef })\n navbar?: ElementRef<HTMLElement>;\n\n burgerMenu: NavElement = {\n type: NavElementTypes.BUTTON_FLAT,\n name: '',\n icon: 'fas fa-bars',\n action: () => this.sidenav?.toggle(),\n collapse: 'never'\n };\n\n sanitizedMinHeight!: SafeStyle;\n\n screenWidthName: 'lg' | 'md' | 'sm' = this.getCurrentScreenWidthName();\n\n internalNavbarRows: NavbarRow[] = [];\n\n internalSidenavElements: NavElement[] = [];\n\n constructor(private readonly sanitizer: DomSanitizer, public navService: NgxMatNavigationService) {}\n\n ngOnInit(): void {\n this.navService.navbarRowsSubject.pipe(takeUntil(this.onDestroy)).subscribe(navbarRows => {\n this.internalNavbarRows = navbarRows;\n this.internalSidenavElements = this.navService.getSidenavElements(navbarRows, this.screenWidthName);\n if (!this.internalSidenavElements.length && this.sidenav && this.sidenav.opened) {\n void this.sidenav.close();\n }\n });\n this.navService.navbarRowsSubject.next(this.navbarRows);\n }\n\n ngOnDestroy(): void {\n this.onDestroy.next(undefined);\n this.onDestroy.complete();\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 if (!this.minHeight || this.navbar.nativeElement.offsetHeight > this.minHeight) {\n this.sanitizedMinHeight = this.sanitizer.bypassSecurityTrustStyle(\n // eslint-disable-next-line max-len\n `calc(100vh - ${this.navbar.nativeElement.offsetHeight + (this.minHeightOtherElements ? this.minHeightOtherElements : 0)}px)`\n );\n }\n else {\n this.sanitizedMinHeight = this.sanitizer.bypassSecurityTrustStyle(\n // eslint-disable-next-line max-len\n `calc(100vh - ${(this.minHeight ? this.minHeight : 0) + (this.minHeightOtherElements ? this.minHeightOtherElements : 0)}px)`\n );\n }\n }\n }\n\n /**\n * Updates the current screen width and filters the sidenav elements accordingly.\n *\n * @throws When no height data is provided or the data is invalid.\n */\n @HostListener('window:resize', ['$event'])\n onResize(): void {\n this.updateHeights();\n this.screenWidthName = this.getCurrentScreenWidthName();\n this.navService.navbarRowsSubject.next(this.navService.navbarRowsSubject.value);\n }\n\n private getCurrentScreenWidthName(): 'lg' | 'md' | 'sm' {\n if (window.innerWidth < 768) {\n return 'sm';\n }\n else if (window.innerWidth < 992) {\n return 'md';\n }\n else {\n return 'lg';\n }\n }\n\n /**\n * Defines if the sidenav should be closed when the given element is clicked.\n *\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.HTML:\n return;\n default:\n void this.sidenav?.close();\n }\n }\n}","<mat-toolbar [style.min-height.px]=\"minHeight ? minHeight : 0\" id=\"toolbar\" #navbar *ngIf=\"navService.getNavbarRows(navbarRows, screenWidthName).length>1\" class=\"mat-elevation-z8\">\n <mat-toolbar-row class=\"toolbar-row\" *ngFor=\"let row of navService.getNavbarRows(navbarRows, screenWidthName)\">\n <div class=\"toolbar-col\">\n <ngx-mat-navigation-element *ngFor=\"let element of navService.getNavbarElementsForRow('left', screenWidthName, row)\" [element]=\"element\"></ngx-mat-navigation-element>\n </div>\n <div class=\"toolbar-col\">\n <ngx-mat-navigation-element *ngFor=\"let element of navService.getNavbarElementsForRow('center', screenWidthName, row)\" [element]=\"element\"></ngx-mat-navigation-element>\n </div>\n <div class=\"toolbar-col\">\n <span *ngFor=\"let element of navService.getNavbarElementsForRow('right', screenWidthName, row)\">\n <ngx-mat-navigation-element [element]=\"element\"></ngx-mat-navigation-element>\n </span>\n <span *ngIf=\"internalSidenavElements.length && (navbarRows.indexOf(row) === 0)\">\n <ngx-mat-navigation-element [element]=\"burgerMenu\"></ngx-mat-navigation-element>\n </span>\n </div>\n </mat-toolbar-row>\n</mat-toolbar>\n\n<mat-toolbar [style.min-height.px]=\"minHeight ? minHeight : 0\" id=\"toolbar\" #navbar *ngIf=\"!(navService.getNavbarRows(navbarRows, screenWidthName).length>1)\" class=\"mat-elevation-z8\">\n <div class=\"toolbar-row\">\n <div class=\"toolbar-col\">\n <ngx-mat-navigation-element *ngFor=\"let element of navService.getNavbarElementsForRow('left', screenWidthName, navbarRows[0])\" [element]=\"element\"></ngx-mat-navigation-element>\n </div>\n <div class=\"toolbar-col\">\n <ngx-mat-navigation-element *ngFor=\"let element of navService.getNavbarElementsForRow('center', screenWidthName, navbarRows[0])\" [element]=\"element\"></ngx-mat-navigation-element>\n </div>\n <div class=\"toolbar-col\">\n <ngx-mat-navigation-element *ngFor=\"let element of navService.getNavbarElementsForRow('right', screenWidthName, navbarRows[0])\" [element]=\"element\"></ngx-mat-navigation-element>\n <ngx-mat-navigation-element *ngIf=\"internalSidenavElements.length\" [element]=\"burgerMenu\"></ngx-mat-navigation-element>\n </div>\n </div>\n</mat-toolbar>\n\n<mat-sidenav-container style=\"background-color: transparent;\" [style.min-height]=\"sanitizedMinHeight\">\n <mat-sidenav style=\"padding-top: 12px; padding-bottom: 12px;\" #sidenav position=\"end\" [style.min-width]=\"minSidenavWidth\" [autoFocus]=\"false\">\n <div style=\"margin-left: 12px; margin-right: 12px;\" *ngFor=\"let element of internalSidenavElements\">\n <ngx-mat-navigation-element (click)=\"clickSidenavElement(element)\" [sidenav]=\"sidenav\" [isSidenavElement]=\"true\" [element]=\"element\"></ngx-mat-navigation-element>\n </div>\n </mat-sidenav>\n <mat-sidenav-content>\n <ng-content></ng-content>\n </mat-sidenav-content>\n</mat-sidenav-container>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { NavButtonFlatComponent } from './button/nav-button-flat/nav-button-flat.component';\nimport { NavButtonComponent } from './button/nav-button/nav-button.component';\nimport { NavHtmlComponent } from './html/nav-html/nav-html.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 { NavImageComponent } from './image/nav-image/nav-image.component';\nimport { NavExternalLinkComponent } from './link/nav-external-link/nav-external-link.component';\nimport { NavInternalLinkComponent } from './link/nav-internal-link/nav-internal-link.component';\nimport { NavElementComponent } from './nav-element.component';\nimport { NavTextComponent } from './text/nav-text/nav-text.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 { NavTitleComponent } from './title/nav-title/nav-title.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatMenuModule,\n MatButtonModule,\n MatSidenavModule,\n NavTitleComponent,\n NavTitleWithInternalLinkComponent,\n NavTitleWithExternalLinkComponent,\n NavImageComponent,\n NavImageWithInternalLinkComponent,\n NavImageWithExternalLinkComponent,\n NavButtonComponent,\n NavButtonFlatComponent,\n NavInternalLinkComponent,\n NavExternalLinkComponent,\n NavHtmlComponent,\n NavTextComponent\n ],\n declarations: [\n NavElementComponent\n ],\n exports: [NavElementComponent]\n})\nexport class NavElementModule { }","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { NgxMatNavigationNavbarComponent } from './navbar.component';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { NavElementModule } from '../nav-element/nav-element.module';\nimport { MatSidenavModule } from '@angular/material/sidenav';\n\n@NgModule({\n declarations: [NgxMatNavigationNavbarComponent],\n imports: [\n CommonModule,\n MatToolbarModule,\n NavElementModule,\n MatSidenavModule\n ],\n exports: [NgxMatNavigationNavbarComponent]\n})\nexport class NgxMatNavigationNavbarModule {}","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { FooterRow } from '../../models/footer.model';\nimport { NgxMatNavigationService } from '../../services/nav.service';\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})\nexport class NgxMatNavigationFooterComponent implements OnInit, OnDestroy {\n private readonly onDestroy: Subject<void> = new Subject();\n\n /**\n * The minimum height of the footer.\n */\n @Input()\n minHeight!: number;\n\n /**\n * The footer rows to build the footer from.\n */\n @Input()\n footerRows!: FooterRow[];\n\n internalFooterRows: FooterRow[] = [];\n\n constructor(public navService: NgxMatNavigationService) { }\n\n ngOnInit(): void {\n this.navService.footerRowsSubject.pipe(takeUntil(this.onDestroy)).subscribe(footerRows => {\n this.internalFooterRows = footerRows;\n });\n this.navService.footerRowsSubject.next(this.footerRows);\n }\n\n ngOnDestroy(): void {\n this.onDestroy.next(undefined);\n this.onDestroy.complete();\n }\n}","<footer [style.min-height.px]=\"minHeight\">\n <div class=\"footer-row\" *ngFor=\"let row of internalFooterRows\">\n <div class=\"footer-col\" id=\"left\">\n <ngx-mat-navigation-element *ngFor=\"let element of navService.getFooterElementsForRow('left', row)\" [element]=\"element\"></ngx-mat-navigation-element>\n </div>\n <div class=\"footer-col\" id=\"center\">\n <ngx-mat-navigation-element *ngFor=\"let element of navService.getFooterElementsForRow('center', row)\" [element]=\"element\"></ngx-mat-navigation-element>\n </div>\n <div class=\"footer-col\" id=\"right\">\n <ngx-mat-navigation-element *ngFor=\"let element of navService.getFooterElementsForRow('right', row)\" [element]=\"element\"></ngx-mat-navigation-element>\n </div>\n </div>\n</footer>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { NavElementModule } from '../nav-element/nav-element.module';\nimport { NgxMatNavigationFooterComponent } from './footer.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatToolbarModule,\n NavElementModule\n ],\n declarations: [NgxMatNavigationFooterComponent],\n exports: [NgxMatNavigationFooterComponent]\n})\nexport class NgxMatNavigationFooterModule { }","import { Component, Input, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\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})\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 title!: string;\n message!: string;\n buttonLabel!: string;\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 // eslint-disable-next-line max-len\n this.message = this.config?.message ?? routeData?.message ?? '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<button mat-raised-button [routerLink]=\"homeRoute\">{{buttonLabel}}</button>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgxMatNavigationNotFoundComponent } from './not-found.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { RouterModule } from '@angular/router';\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n RouterModule\n ],\n declarations: [NgxMatNavigationNotFoundComponent],\n exports: [NgxMatNavigationNotFoundComponent]\n})\nexport class NgxMatNavigationNotFoundModule { }","/*\n * Public API Surface of ngx-material-navigation\n */\nexport * from './models/footer.model';\nexport * from './models/nav-button.model';\nexport * from './models/nav-html.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.model';\nexport * from './models/navbar.model';\nexport * from './models/page-not-found-config.model';\n\nexport * from './components/navbar/navbar.component';\nexport * from './components/navbar/navbar.module';\n\nexport * from './components/footer/footer.component';\nexport * from './components/footer/footer.module';\n\nexport * from './components/not-found/not-found.component';\nexport * from './components/not-found/not-found.module';\n\nexport * from './utilities/nav.utilities';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i1","i4.NavTitleComponent","i5.NavTitleWithInternalLinkComponent","i6.NavTitleWithExternalLinkComponent","i7.NavImageComponent","i8.NavImageWithInternalLinkComponent","i9.NavImageWithExternalLinkComponent","i10.NavButtonComponent","i11.NavButtonFlatComponent","i12.NavInternalLinkComponent","i13.NavExternalLinkComponent","i14.NavHtmlComponent","i15.NavTextComponent","i2.NgxMatNavigationService","i5.NavElementComponent","i1.NgxMatNavigationService","i3.NavElementComponent"],"mappings":"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"}
|