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