UNPKG

ng-material-multilevel-menu

Version:
1 lines 56.6 kB
{"version":3,"file":"ng-material-multilevel-menu.mjs","sources":["../../../projects/ng-material-multilevel-menu/src/lib/app.model.ts","../../../projects/ng-material-multilevel-menu/src/lib/constants.ts","../../../projects/ng-material-multilevel-menu/src/lib/animation.ts","../../../projects/ng-material-multilevel-menu/src/lib/common-utils.ts","../../../projects/ng-material-multilevel-menu/src/lib/multilevel-menu.service.ts","../../../projects/ng-material-multilevel-menu/src/lib/list-item/list-item-content/list-item-content.component.ts","../../../projects/ng-material-multilevel-menu/src/lib/list-item/list-item-content/list-item-content.component.html","../../../projects/ng-material-multilevel-menu/src/lib/list-item/list-item.component.ts","../../../projects/ng-material-multilevel-menu/src/lib/list-item/list-item.component.html","../../../projects/ng-material-multilevel-menu/src/lib/materials.module.ts","../../../projects/ng-material-multilevel-menu/src/lib/ng-material-multilevel-menu.component.ts","../../../projects/ng-material-multilevel-menu/src/lib/ng-material-multilevel-menu.component.html","../../../projects/ng-material-multilevel-menu/src/lib/ng-material-multilevel-menu.module.ts","../../../projects/ng-material-multilevel-menu/src/public_api.ts","../../../projects/ng-material-multilevel-menu/src/ng-material-multilevel-menu.ts"],"sourcesContent":["import { NavigationExtras } from '@angular/router';\n\nexport interface MultilevelNode {\n id?: string;\n label: string;\n faIcon?: string;\n icon?: string;\n imageIcon?: string;\n svgIcon?: string;\n activeFaIcon?: string;\n activeIcon?: string;\n activeImageIcon?: string;\n activeSvgIcon?: string;\n hidden?: boolean;\n link?: string;\n externalRedirect?: boolean;\n hrefTargetType?: string;\n data?: any;\n items?: MultilevelNode[];\n onSelected?: Function;\n disabled?: boolean;\n expanded?: boolean;\n navigationExtras?: NavigationExtras;\n dontEmit?: boolean;\n hasChildren?: boolean;\n isSelected?: boolean;\n}\n\nexport interface Configuration {\n classname?: string;\n paddingAtStart?: boolean;\n backgroundColor?: string;\n listBackgroundColor?: string;\n fontColor?: string;\n selectedListFontColor?: string;\n interfaceWithRoute?: boolean;\n collapseOnSelect?: boolean;\n highlightOnSelect?: boolean;\n useDividers?: boolean;\n rtlLayout?: boolean;\n customTemplate?: boolean;\n}\n\nexport interface BackgroundStyle {\n background: string;\n}\n\nexport interface ListStyle {\n background: string;\n color: string;\n}\n\nexport enum ExpandCollapseStatusEnum {\n expand = 'expand',\n collapse = 'collapse',\n neutral = 'neutral',\n}\n","export const CONSTANT = {\n PADDING_AT_START: true,\n DEFAULT_CLASS_NAME: `amml-container`,\n DEFAULT_LIST_CLASS_NAME: `amml-item`,\n SELECTED_LIST_CLASS_NAME: `selected-amml-item`,\n ACTIVE_ITEM_CLASS_NAME: `active-amml-item`,\n DISABLED_ITEM_CLASS_NAME: `disabled-amml-item`,\n SUBMENU_ITEM_CLASS_NAME: `amml-submenu`,\n HAS_SUBMENU_ITEM_CLASS_NAME: `has-amml-submenu`,\n DEFAULT_SELECTED_FONT_COLOR: `#1976d2`,\n DEFAULT_LIST_BACKGROUND_COLOR: `transparent`,\n DEFAULT_LIST_FONT_COLOR: `rgba(0,0,0,.87)`,\n DEFAULT_HREF_TARGET_TYPE: '_self',\n ERROR_MESSAGE: `Invalid data for material Multilevel List Component`,\n POSSIBLE: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789',\n YES: 'yes',\n NO: 'no'\n};\n","import { animate, group, state, style, transition, trigger } from '@angular/animations';\n\nexport const SlideInOut = trigger('SlideInOut', [\n state(\n 'in',\n style({ height: '*', opacity: 0 })),\n transition(':leave', [\n style({ height: '*', opacity: 0.2 }),\n group([\n animate(200, style({ height: 0 })),\n animate('200ms ease-out', style({ opacity: 0 }))\n ])\n ]),\n transition(':enter', [\n style({ height: '0', opacity: 0 }),\n group([\n animate(200, style({ height: '*' })),\n animate('400ms ease-out', style({ opacity: 1 }))\n ])\n ])\n ]\n);\n\nexport const ExpandedLTR = trigger('ExpandedLTR', [\n state('no', style({ transform: 'rotate(-90deg)' })),\n state('yes', style({ transform: 'rotate(0deg)', })),\n\n transition('no => yes', animate(200)),\n transition('yes => no', animate(200))\n]);\n\nexport const ExpandedRTL = trigger('ExpandedRTL', [\n state('no', style({ transform: 'rotate(90deg)' })),\n state('yes', style({ transform: 'rotate(0deg)', })),\n\n transition('no => yes', animate(200)),\n transition('yes => no', animate(200))\n]);\n","export class CommonUtils {\n\n static isNullOrUndefinedOrEmpty = function (object: any): boolean {\n return CommonUtils.isNullOrUndefined(object) || object === '';\n };\n\n static isNullOrUndefined = function (object: any): boolean {\n return object === null || object === undefined;\n };\n}\n"," import {BehaviorSubject, Observable, Subject} from 'rxjs';\nimport { MultilevelNode, ExpandCollapseStatusEnum } from './app.model';\nimport {CONSTANT} from './constants';\n\nexport class MultilevelMenuService {\n foundLinkObject: MultilevelNode;\n private expandCollapseStatus: Subject<ExpandCollapseStatusEnum> = new Subject<ExpandCollapseStatusEnum>();\n expandCollapseStatus$: Observable<ExpandCollapseStatusEnum> = this.expandCollapseStatus.asObservable();\n\n private selectedMenuID: Subject<string> = new Subject<string>();\n selectedMenuID$: Observable<string> = this.selectedMenuID.asObservable();\n\n private generateId(): string {\n let text = '';\n for (let i = 0; i < 20; i++) {\n text += CONSTANT.POSSIBLE.charAt(Math.floor(Math.random() * CONSTANT.POSSIBLE.length));\n }\n return text;\n }\n addRandomId(nodes: MultilevelNode[]): void {\n nodes.forEach((node: MultilevelNode) => {\n node.id = this.generateId();\n if (node.items !== undefined) {\n this.addRandomId(node.items);\n }\n });\n }\n recursiveCheckId(node: MultilevelNode, nodeId: string): boolean {\n if (node.id === nodeId) {\n return true;\n } else {\n if (node.items !== undefined) {\n return node.items.some((nestedNode: MultilevelNode) => {\n return this.recursiveCheckId(nestedNode, nodeId);\n });\n }\n }\n }\n private findNodeRecursively({nodes, link, id}: {nodes: MultilevelNode[], link?: string, id?: string}): void {\n for (let nodeIndex = 0; nodeIndex < nodes.length; nodeIndex++) {\n const node = nodes[nodeIndex];\n for (const key in node) {\n if (node.hasOwnProperty(key)) {\n if (encodeURI(node.link) === link) {\n this.foundLinkObject = node;\n } else if (node.id === id) {\n this.foundLinkObject = node;\n } else {\n if (node.items !== undefined) {\n this.findNodeRecursively({\n nodes: node.items,\n link: link ? link : null,\n id: id ? id : null\n });\n }\n }\n }\n }\n }\n }\n getMatchedObjectByUrl(nodes: MultilevelNode[], link: string): MultilevelNode {\n this.findNodeRecursively({nodes, link});\n return this.foundLinkObject;\n }\n getMatchedObjectById(nodes: MultilevelNode[], id: string): MultilevelNode {\n this.findNodeRecursively({nodes, id});\n return this.foundLinkObject;\n }\n // overrides key-value pipe's default reordering (by key) by implementing dummy comprarer function\n // https://angular.io/api/common/KeyValuePipe#description\n kvDummyComparerFn() {\n return 0;\n }\n setMenuExpandCollapseStatus(status: ExpandCollapseStatusEnum): void {\n this.expandCollapseStatus.next(status ? status : ExpandCollapseStatusEnum.neutral);\n }\n selectMenuByID(menuID: string) {\n this.selectedMenuID.next(menuID);\n return this.foundLinkObject;\n }\n}\n","import {Component, Input, OnInit} from '@angular/core';\nimport {Configuration, MultilevelNode, ListStyle} from '../../app.model';\nimport {ExpandedLTR, ExpandedRTL} from '../../animation';\nimport {CommonUtils} from '../../common-utils';\nimport {CONSTANT} from '../../constants';\n\n@Component({\n selector: 'ng-list-item-content',\n templateUrl: './list-item-content.component.html',\n styleUrls: ['./list-item-content.component.css'],\n animations: [ExpandedLTR, ExpandedRTL]\n})\nexport class ListItemContentComponent implements OnInit {\n @Input() node: MultilevelNode;\n @Input() isRtlLayout: boolean;\n @Input() listContentStyle: ListStyle;\n @Input() nodeConfiguration: Configuration = null;\n\n constructor() {\n // NOOP\n }\n\n ngOnInit(): void {\n // NOOP\n }\n\n getListIcon(node: MultilevelNode): string {\n if (!CommonUtils.isNullOrUndefinedOrEmpty(node.icon)) {\n return `icon`;\n } else if (!CommonUtils.isNullOrUndefinedOrEmpty(node.faIcon)) {\n return `faIcon`;\n } else if (!CommonUtils.isNullOrUndefinedOrEmpty(node.imageIcon)) {\n return `imageIcon`;\n } else if (!CommonUtils.isNullOrUndefinedOrEmpty(node.svgIcon)) {\n return `svgIcon`;\n } else {\n return ``;\n }\n }\n\n getHrefTargetType(): string {\n return this.node.hrefTargetType ? this.node.hrefTargetType : CONSTANT.DEFAULT_HREF_TARGET_TYPE;\n }\n\n getSelectedSvgIcon(): string {\n return this.node.isSelected && this.node.activeSvgIcon ? this.node.activeSvgIcon : this.node.svgIcon;\n }\n\n getSelectedIcon(): string {\n return this.node.isSelected && this.node.activeIcon ? this.node.activeIcon : this.node.icon;\n }\n\n getSelectedFaIcon(): string {\n return this.node.isSelected && this.node.activeFaIcon ? this.node.activeFaIcon : this.node.faIcon;\n }\n\n getSelectedImageIcon(): string {\n return this.node.isSelected && this.node.activeImageIcon ? this.node.activeImageIcon : this.node.imageIcon;\n }\n\n nodeExpandStatus(): string {\n return this.node.expanded ? CONSTANT.YES : CONSTANT.NO;\n }\n}\n","<ng-container *ngTemplateOutlet=\"node.externalRedirect ? redirectLinkTemplate : routerLinkTemplate\"></ng-container>\n\n<ng-template #redirectLinkTemplate>\n <a class=\"anml-link\" [href]=\"node.link\" [target]=\"getHrefTargetType()\" [ngStyle]=\"listContentStyle\">\n <ng-container *ngTemplateOutlet=\"isRtlLayout ? linkLabelRtlOutlet : linkLabelLtrOutlet\"></ng-container>\n </a>\n</ng-template>\n\n<ng-template #routerLinkTemplate>\n <ng-container *ngIf=\"node.link && nodeConfiguration.interfaceWithRoute; else defaultContentContainer\">\n <a class=\"anml-link\" [routerLink]=\"node.link\" [ngStyle]=\"listContentStyle\">\n <ng-container *ngTemplateOutlet=\"isRtlLayout ? linkLabelRtlOutlet : linkLabelLtrOutlet\"></ng-container>\n </a>\n </ng-container>\n</ng-template>\n\n<ng-template #defaultContentContainer>\n <a class=\"anml-link\" [ngStyle]=\"listContentStyle\">\n <ng-container *ngTemplateOutlet=\"isRtlLayout ? linkLabelRtlOutlet : linkLabelLtrOutlet\"></ng-container>\n </a>\n</ng-template>\n\n<ng-template #linkLabelLtrOutlet>\n <div class=\"anml-data\" [dir]=\"'ltr'\">\n <ng-container *ngTemplateOutlet=\"iconContainer\"></ng-container>\n <span class=\"label\">{{node.label}}</span>\n </div>\n <div class=\"amml-icon-arrow-container\" *ngIf='node.hasChildren'>\n <mat-icon [@ExpandedLTR]=\"nodeExpandStatus()\">\n keyboard_arrow_down\n </mat-icon>\n </div>\n</ng-template>\n\n<ng-template #linkLabelRtlOutlet>\n <div class=\"anml-data\" [dir]=\"'rtl'\">\n <ng-container *ngTemplateOutlet=\"iconContainer\"></ng-container>\n <span class=\"label\">{{node.label}}</span>\n </div>\n <div class=\"amml-icon-arrow-container\" *ngIf='node.hasChildren'>\n <mat-icon [@ExpandedRTL]=\"nodeExpandStatus()\">\n keyboard_arrow_down\n </mat-icon>\n </div>\n</ng-template>\n\n<ng-template #iconContainer>\n <div class=\"icon-container\" [ngSwitch]=\"getListIcon(node)\">\n <span *ngSwitchCase=\"'faIcon'\" class=\"amml-icon amml-icon-fa\">\n <i [ngClass]=\"getSelectedFaIcon()\"></i>\n </span>\n <mat-icon *ngSwitchCase=\"'icon'\" class=\"amml-icon\">\n {{getSelectedIcon()}}\n </mat-icon>\n <mat-icon *ngSwitchCase=\"'svgIcon'\" class=\"amml-icon amml-svg-icon\"\n svgIcon=\"{{getSelectedSvgIcon()}}\">\n </mat-icon>\n <img *ngSwitchCase=\"'imageIcon'\" class=\"amml-icon amml-img-icon\"\n src=\"{{getSelectedImageIcon()}}\" alt=\"{{node.label}}\"/>\n </div>\n</ng-template>\n\n","import { Component, Input, OnChanges, OnInit, Output, EventEmitter, TemplateRef, ElementRef } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { Configuration, ListStyle, MultilevelNode, ExpandCollapseStatusEnum } from '../app.model';\nimport { CONSTANT } from '../constants';\nimport { MultilevelMenuService } from '../multilevel-menu.service';\nimport { SlideInOut } from '../animation';\nimport {CommonUtils} from '../common-utils';\n\n@Component({\n selector: 'ng-list-item',\n templateUrl: './list-item.component.html',\n styleUrls: ['./list-item.component.css'],\n animations: [SlideInOut]\n})\nexport class ListItemComponent implements OnChanges, OnInit {\n @Input() node: MultilevelNode;\n @Input() level = 1;\n @Input() submenuLevel = 0;\n @Input() selectedNode: MultilevelNode;\n @Input() nodeConfiguration: Configuration = null;\n @Input() nodeExpandCollapseStatus: ExpandCollapseStatusEnum = null;\n @Input() listTemplate: TemplateRef<ElementRef> = null;\n\n @Output() selectedItem = new EventEmitter<MultilevelNode>();\n\n isSelected = false;\n expanded = false;\n firstInitializer = false;\n\n nodeChildren: MultilevelNode[];\n classes: { [index: string]: boolean };\n selectedListClasses: { [index: string]: boolean };\n\n constructor(private router: Router,\n public multilevelMenuService: MultilevelMenuService) {\n this.selectedListClasses = {\n [CONSTANT.DEFAULT_LIST_CLASS_NAME]: true,\n [CONSTANT.SELECTED_LIST_CLASS_NAME]: false,\n [CONSTANT.ACTIVE_ITEM_CLASS_NAME]: false,\n };\n }\n\n ngOnChanges() {\n this.nodeChildren = this.node && this.node.items ? this.node.items.filter(n => !n.hidden) : [];\n this.node.hasChildren = this.hasItems();\n\n if (!CommonUtils.isNullOrUndefined(this.selectedNode)) {\n this.setSelectedClass(this.multilevelMenuService.recursiveCheckId(this.node, this.selectedNode.id));\n }\n this.setExpandCollapseStatus();\n }\n\n ngOnInit() {\n this.selectedListClasses[CONSTANT.DISABLED_ITEM_CLASS_NAME] = this.node.disabled;\n\n if (!CommonUtils.isNullOrUndefined(this.node.faIcon) &&\n this.node.faIcon.match(/\\bfa\\w(?!-)/) === null) {\n this.node.faIcon = `fas ${this.node.faIcon}`;\n }\n\n this.selectedListClasses[`level-${this.level}-submenulevel-${this.submenuLevel}`] = true;\n if (typeof this.node.expanded === 'boolean') {\n this.expanded = this.node.expanded;\n }\n this.setClasses();\n }\n\n setSelectedClass(isFound: boolean): void {\n if (isFound) {\n if (!this.firstInitializer) {\n this.expanded = true;\n }\n this.isSelected = this.nodeConfiguration.highlightOnSelect || this.selectedNode.items === undefined;\n } else {\n this.isSelected = false;\n if (this.nodeConfiguration.collapseOnSelect) {\n this.node.expanded = false;\n this.expanded = false;\n }\n }\n this.selectedListClasses = {\n [CONSTANT.DEFAULT_LIST_CLASS_NAME]: true,\n [CONSTANT.SELECTED_LIST_CLASS_NAME]: this.isSelected,\n [CONSTANT.ACTIVE_ITEM_CLASS_NAME]: this.selectedNode.id === this.node.id,\n [CONSTANT.DISABLED_ITEM_CLASS_NAME]: this.node.disabled,\n [`level-${this.level}-submenulevel-${this.submenuLevel}`]: true,\n };\n this.node.isSelected = this.isSelected;\n this.setClasses();\n }\n\n getPaddingAtStart(): boolean {\n return this.nodeConfiguration.paddingAtStart;\n }\n\n getListStyle(): ListStyle {\n const styles = {\n background: CONSTANT.DEFAULT_LIST_BACKGROUND_COLOR,\n color: CONSTANT.DEFAULT_LIST_FONT_COLOR\n };\n if (this.nodeConfiguration.listBackgroundColor !== null) {\n styles.background = this.nodeConfiguration.listBackgroundColor;\n }\n if (this.isSelected) {\n this.nodeConfiguration.selectedListFontColor !== null ?\n styles.color = this.nodeConfiguration.selectedListFontColor : styles.color = CONSTANT.DEFAULT_SELECTED_FONT_COLOR;\n } else if (this.nodeConfiguration.fontColor !== null) {\n styles.color = this.nodeConfiguration.fontColor;\n }\n return styles;\n }\n\n hasItems(): boolean {\n return this.nodeChildren.length > 0;\n }\n\n isRtlLayout(): boolean {\n return this.nodeConfiguration.rtlLayout;\n }\n\n setClasses(): void {\n this.classes = {\n [`level-${this.level + 1}`]: true,\n [CONSTANT.SUBMENU_ITEM_CLASS_NAME]: this.hasItems() && this.getPaddingAtStart(),\n [CONSTANT.HAS_SUBMENU_ITEM_CLASS_NAME]: this.hasItems()\n };\n }\n\n setExpandCollapseStatus(): void {\n if (!CommonUtils.isNullOrUndefined(this.nodeExpandCollapseStatus)) {\n if (this.nodeExpandCollapseStatus === ExpandCollapseStatusEnum.expand) {\n this.expanded = true;\n if (this.nodeConfiguration.customTemplate) {\n this.node.expanded = true;\n }\n }\n if (this.nodeExpandCollapseStatus === ExpandCollapseStatusEnum.collapse) {\n this.expanded = false;\n if (this.nodeConfiguration.customTemplate) {\n this.node.expanded = false;\n }\n }\n }\n }\n\n expand(node: MultilevelNode): void {\n if (node.disabled) {\n return;\n }\n this.nodeExpandCollapseStatus = ExpandCollapseStatusEnum.neutral;\n this.expanded = !this.expanded;\n this.node.expanded = this.expanded;\n this.firstInitializer = true;\n this.setClasses();\n if (this.nodeConfiguration.interfaceWithRoute !== null\n && this.nodeConfiguration.interfaceWithRoute\n && node.link !== undefined\n && node.link\n ) {\n this.router.navigate([node.link], node.navigationExtras).then();\n } else if (node.onSelected && typeof node.onSelected === 'function') {\n node.onSelected(node);\n this.selectedListItem(node);\n } else if (node.items === undefined || this.nodeConfiguration.collapseOnSelect) {\n this.selectedListItem(node);\n }\n }\n\n selectedListItem(node: MultilevelNode): void {\n this.selectedItem.emit(node);\n }\n\n}\n","<div class=\"amml-menu-container\">\n <!-- Base Template rendering condition starts -->\n <div *ngIf=\"nodeConfiguration.customTemplate && !node.hidden;else baseTemplate\"\n [ngClass]=\"selectedListClasses\"\n (click)=\"expand(node)\">\n <ng-container [ngTemplateOutlet]=\"listTemplate\"\n [ngTemplateOutletContext]=\"{item: node, configuration: nodeConfiguration}\">\n </ng-container>\n </div>\n <!-- Base Template rendering condition ends -->\n\n <!-- Recursive Template calls begins -->\n <div *ngIf=\"hasItems() && expanded\" [@SlideInOut] [dir]=\"isRtlLayout() ? 'rtl' : 'ltr'\" [ngClass]=\"classes\">\n <ng-list-item *ngFor=\"let singleNode of nodeChildren | keyvalue : multilevelMenuService.kvDummyComparerFn\"\n [nodeConfiguration]='nodeConfiguration'\n [node]=\"singleNode.value\"\n [level]=\"level + 1\"\n [submenuLevel]=\"singleNode.key\"\n [selectedNode]='selectedNode'\n [nodeExpandCollapseStatus]='nodeExpandCollapseStatus'\n (selectedItem)=\"selectedListItem($event)\"\n [listTemplate]=\"listTemplate\">\n </ng-list-item>\n </div>\n</div>\n<!-- Recursive Template calls ends -->\n\n<!-- Base Template starts from here -->\n<ng-template #baseTemplate>\n <mat-list-item matRipple\n *ngIf=\"!node.hidden\"\n title=\"{{node.label}}\"\n [matRippleDisabled]=\"node.disabled\"\n [ngClass]=\"selectedListClasses\"\n (click)=\"expand(node)\">\n <ng-container *ngTemplateOutlet=\"linkTemplate\"></ng-container>\n </mat-list-item>\n <mat-divider *ngIf=\"nodeConfiguration.useDividers\"></mat-divider>\n</ng-template>\n\n<ng-template #linkTemplate>\n <ng-list-item-content class=\"filled\" [node]=\"node\" [nodeConfiguration]=\"nodeConfiguration\" [isRtlLayout]=\"isRtlLayout()\" [listContentStyle]=\"getListStyle()\"></ng-list-item-content>\n</ng-template>\n","import { NgModule } from '@angular/core';\n\nimport { MatRippleModule } from '@angular/material/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\n\n@NgModule({\n imports: [\n MatIconModule,\n MatListModule,\n MatRippleModule,\n ],\n declarations: [],\n exports: [\n MatIconModule,\n MatListModule,\n MatRippleModule,\n ]\n})\nexport class MaterialsModule { }\n","import { Component, OnChanges, OnInit, OnDestroy, Output, EventEmitter, Input, ContentChild, TemplateRef, ElementRef } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { BackgroundStyle, Configuration, MultilevelNode, ExpandCollapseStatusEnum } from './app.model';\nimport { CONSTANT } from './constants';\nimport { MultilevelMenuService } from './multilevel-menu.service';\nimport {CommonUtils} from './common-utils';\n\n@Component({\n selector: 'ng-material-multilevel-menu',\n templateUrl: './ng-material-multilevel-menu.component.html',\n styleUrls: ['./ng-material-multilevel-menu.component.css'],\n})\nexport class NgMaterialMultilevelMenuComponent implements OnInit, OnChanges, OnDestroy {\n @Input() items: MultilevelNode[];\n @Input() configuration: Configuration = null;\n @Output() selectedItem = new EventEmitter<MultilevelNode>();\n @Output() selectedLabel = new EventEmitter<MultilevelNode>();\n @Output() menuIsReady = new EventEmitter<MultilevelNode[]>();\n @ContentChild('listTemplate', {static: true}) listTemplate: TemplateRef<ElementRef>;\n\n expandCollapseStatusSubscription: Subscription = null;\n selectMenuByIDSubscription: Subscription = null;\n currentNode: MultilevelNode = null;\n\n nodeConfig: Configuration = {\n paddingAtStart: true,\n listBackgroundColor: null,\n fontColor: null,\n selectedListFontColor: null,\n interfaceWithRoute: null,\n collapseOnSelect: null,\n highlightOnSelect: false,\n useDividers: true,\n rtlLayout: false,\n customTemplate: false\n };\n isInvalidConfig = true;\n isInvalidData = true;\n nodeExpandCollapseStatus: ExpandCollapseStatusEnum = ExpandCollapseStatusEnum.neutral;\n\n constructor(private router: Router,\n public multilevelMenuService: MultilevelMenuService) {\n // NOOP\n }\n ngOnChanges() {\n this.detectInvalidConfig();\n this.initExpandCollapseStatus();\n this.initSelectedMenuID();\n if (!this.isInvalidData) {\n this.menuIsReady.emit(this.items);\n }\n }\n ngOnInit() {\n if (!CommonUtils.isNullOrUndefinedOrEmpty(this.configuration) &&\n this.configuration.interfaceWithRoute !== null && this.configuration.interfaceWithRoute) {\n this.router.events\n .subscribe((event) => {\n if (event instanceof NavigationEnd) {\n this.updateNodeByURL(event.urlAfterRedirects);\n }\n });\n this.updateNodeByURL(this.router.url);\n }\n }\n updateNodeByURL(url: string): void {\n const foundNode = this.multilevelMenuService.getMatchedObjectByUrl(this.items, url);\n if (foundNode !== undefined && !CommonUtils.isNullOrUndefinedOrEmpty(foundNode.link)\n // && !foundNode.disabled // Prevent route redirection for disabled menu\n ) {\n this.currentNode = foundNode;\n if (!CommonUtils.isNullOrUndefined(foundNode.dontEmit) && !foundNode.dontEmit) {\n this.selectedListItem(foundNode);\n }\n }\n }\n checkValidData(): void {\n if (this.items === undefined || (Array.isArray(this.items) && this.items.length === 0)) {\n console.warn(CONSTANT.ERROR_MESSAGE);\n return;\n }\n this.items = this.items.filter(n => !n.hidden);\n this.multilevelMenuService.addRandomId(this.items);\n this.isInvalidData = false;\n }\n detectInvalidConfig(): void {\n if (CommonUtils.isNullOrUndefinedOrEmpty(this.configuration)) {\n this.isInvalidConfig = true;\n } else {\n this.isInvalidConfig = false;\n const config = this.configuration;\n if (!CommonUtils.isNullOrUndefined(config.paddingAtStart) &&\n typeof config.paddingAtStart === 'boolean') {\n this.nodeConfig.paddingAtStart = config.paddingAtStart;\n }\n if (!CommonUtils.isNullOrUndefinedOrEmpty(config.listBackgroundColor)) {\n this.nodeConfig.listBackgroundColor = config.listBackgroundColor;\n }\n if (!CommonUtils.isNullOrUndefinedOrEmpty(config.fontColor)) {\n this.nodeConfig.fontColor = config.fontColor;\n }\n if (!CommonUtils.isNullOrUndefinedOrEmpty(config.selectedListFontColor)) {\n this.nodeConfig.selectedListFontColor = config.selectedListFontColor;\n }\n if (!CommonUtils.isNullOrUndefined(config.interfaceWithRoute) &&\n typeof config.interfaceWithRoute === 'boolean') {\n this.nodeConfig.interfaceWithRoute = config.interfaceWithRoute;\n }\n if (!CommonUtils.isNullOrUndefined(config.collapseOnSelect) &&\n typeof config.collapseOnSelect === 'boolean') {\n this.nodeConfig.collapseOnSelect = config.collapseOnSelect;\n }\n if (!CommonUtils.isNullOrUndefined(config.highlightOnSelect) &&\n typeof config.highlightOnSelect === 'boolean') {\n this.nodeConfig.highlightOnSelect = config.highlightOnSelect;\n }\n if (!CommonUtils.isNullOrUndefined(config.useDividers) &&\n typeof config.useDividers === 'boolean') {\n this.nodeConfig.useDividers = config.useDividers;\n }\n if (!CommonUtils.isNullOrUndefined(config.rtlLayout) &&\n typeof config.rtlLayout === 'boolean') {\n this.nodeConfig.rtlLayout = config.rtlLayout;\n }\n if (!CommonUtils.isNullOrUndefined(config.customTemplate) &&\n typeof config.customTemplate === 'boolean') {\n this.nodeConfig.customTemplate = config.customTemplate;\n }\n }\n this.checkValidData();\n }\n initExpandCollapseStatus(): void {\n this.expandCollapseStatusSubscription = this.multilevelMenuService.expandCollapseStatus$\n .subscribe( (expandCollapseStatus: ExpandCollapseStatusEnum) => {\n this.nodeExpandCollapseStatus = expandCollapseStatus ? expandCollapseStatus : ExpandCollapseStatusEnum.neutral;\n }, () => {\n this.nodeExpandCollapseStatus = ExpandCollapseStatusEnum.neutral;\n });\n }\n initSelectedMenuID(): void {\n this.selectMenuByIDSubscription = this.multilevelMenuService.selectedMenuID$.subscribe( (selectedMenuID: string) => {\n if (selectedMenuID) {\n const foundNode = this.multilevelMenuService.getMatchedObjectById(this.items, selectedMenuID);\n if (foundNode !== undefined) {\n this.currentNode = foundNode;\n this.selectedListItem(foundNode);\n }\n }\n });\n }\n getClassName(): string {\n if (!this.isInvalidConfig && !CommonUtils.isNullOrUndefinedOrEmpty(this.configuration.classname)) {\n return `${CONSTANT.DEFAULT_CLASS_NAME} ${this.configuration.classname}`;\n }\n return CONSTANT.DEFAULT_CLASS_NAME;\n }\n getGlobalStyle(): BackgroundStyle {\n if (!this.isInvalidConfig) {\n const styles = {\n background : null\n };\n if (!CommonUtils.isNullOrUndefinedOrEmpty(this.configuration.backgroundColor)) {\n styles.background = this.configuration.backgroundColor;\n }\n return styles;\n }\n }\n isRtlLayout(): boolean {\n return this.nodeConfig.rtlLayout;\n }\n selectedListItem(event: MultilevelNode): void {\n this.nodeExpandCollapseStatus = ExpandCollapseStatusEnum.neutral;\n this.currentNode = event;\n if (!CommonUtils.isNullOrUndefined(event.dontEmit) && event.dontEmit) {\n return;\n }\n if (event.items === undefined && (!event.onSelected || typeof event.onSelected !== 'function') ) {\n this.selectedItem.emit(event);\n } else {\n this.selectedLabel.emit(event);\n }\n }\n ngOnDestroy() {\n this.expandCollapseStatusSubscription.unsubscribe();\n this.selectMenuByIDSubscription.unsubscribe();\n }\n}\n","<div [ngClass]=\"getClassName()\" [ngStyle]=\"getGlobalStyle()\" *ngIf='!isInvalidData && items.length !== 0' [dir]=\"isRtlLayout() ? 'rtl' : 'ltr'\">\n <mat-list>\n <ng-list-item\n *ngFor=\"let node of items | keyvalue: multilevelMenuService.kvDummyComparerFn\"\n [nodeConfiguration]='nodeConfig'\n [node]='node.value'\n [level]=\"1\"\n [submenuLevel]=\"node.key\"\n [selectedNode]='currentNode'\n [nodeExpandCollapseStatus]='nodeExpandCollapseStatus'\n (selectedItem)=\"selectedListItem($event)\"\n [listTemplate] = \"listTemplate\"\n >\n </ng-list-item>\n </mat-list>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { ListItemComponent } from './list-item/list-item.component';\nimport { MaterialsModule } from './materials.module';\nimport { NgMaterialMultilevelMenuComponent } from './ng-material-multilevel-menu.component';\nimport { ListItemContentComponent } from './list-item/list-item-content/list-item-content.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MaterialsModule,\n RouterModule,\n ],\n declarations: [\n NgMaterialMultilevelMenuComponent,\n ListItemComponent,\n ListItemContentComponent,\n ],\n exports: [NgMaterialMultilevelMenuComponent]\n})\nexport class NgMaterialMultilevelMenuModule {}\n","/*\n * Public API Surface of ng-material-multilevel-menu\n */\n\nexport * from './lib/ng-material-multilevel-menu.module';\nexport * from './lib/ng-material-multilevel-menu.component';\nexport * from './lib/multilevel-menu.service';\nexport * from './lib/animation';\nexport { MultilevelNode, Configuration, ExpandCollapseStatusEnum } from './lib/app.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i3","i4","i2.MultilevelMenuService","i8.ListItemContentComponent","i6.ListItemComponent"],"mappings":"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