{"version":3,"file":"eddie666-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/multilevel-menu.service.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/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/eddie666-ng-material-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 ListStyle {\r\n    backgroundColor?: 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 { Injectable } from '@angular/core';\r\nimport { 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 { animate, group, state, style, transition, trigger } from '@angular/animations';\r\n\r\nexport const SlideInOut = trigger('SlideInOut', [\r\n    state('in', style({ height: '*', opacity: 0 })),\r\n    transition(':leave', [\r\n        style({ height: '*', opacity: 0.2 }),\r\n        group([animate(200, style({ height: 0 })), animate('200ms ease-out', style({ opacity: 0 }))]),\r\n    ]),\r\n    transition(':enter', [\r\n        style({ height: '0', opacity: 0 }),\r\n        group([animate(200, style({ height: '*' })), animate('400ms ease-out', style({ opacity: 1 }))]),\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    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 { Component, Input } from '@angular/core';\r\nimport { MultilevelNode } 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})\r\nexport class ListItemContentComponent {\r\n    @Input() node: MultilevelNode;\r\n    @Input() isRtlLayout: boolean;\r\n\r\n    getListIcon(node: MultilevelNode): string {\r\n        if (!CommonUtils.isNullOrUndefinedOrEmpty(node.icon)) {\r\n            return `icon`;\r\n        }\r\n        if (!CommonUtils.isNullOrUndefinedOrEmpty(node.faIcon)) {\r\n            return `faIcon`;\r\n        }\r\n        if (!CommonUtils.isNullOrUndefinedOrEmpty(node.imageIcon)) {\r\n            return `imageIcon`;\r\n        }\r\n        if (!CommonUtils.isNullOrUndefinedOrEmpty(node.svgIcon)) {\r\n            return `svgIcon`;\r\n        }\r\n        return ``;\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<ng-template #redirectLinkTemplate>\r\n    <a\r\n        class=\"anml-link\"\r\n        [href]=\"node.link\"\r\n        [target]=\"getHrefTargetType()\">\r\n        <ng-container *ngTemplateOutlet=\"isRtlLayout ? linkLabelRtlOutlet : linkLabelLtrOutlet\"></ng-container>\r\n    </a>\r\n</ng-template>\r\n<ng-template #routerLinkTemplate>\r\n    <a\r\n        class=\"anml-link\"\r\n        *ngIf=\"!node.externalRedirect && node.link\"\r\n        [routerLink]=\"node.link\">\r\n        <ng-container *ngTemplateOutlet=\"isRtlLayout ? linkLabelRtlOutlet : linkLabelLtrOutlet\"></ng-container>\r\n    </a>\r\n    <a\r\n        class=\"anml-link\"\r\n        *ngIf=\"!node.link\">\r\n        <ng-container *ngTemplateOutlet=\"isRtlLayout ? linkLabelRtlOutlet : linkLabelLtrOutlet\"></ng-container>\r\n    </a>\r\n</ng-template>\r\n<ng-template #linkLabelLtrOutlet>\r\n    <div\r\n        class=\"anml-data\"\r\n        [dir]=\"'ltr'\">\r\n        <ng-container *ngTemplateOutlet=\"iconContainer\"></ng-container>\r\n        <span class=\"label\">{{node.label}}</span>\r\n    </div>\r\n    <div\r\n        class=\"amml-icon-arrow-container\"\r\n        *ngIf='node.hasChildren'>\r\n        <mat-icon [@ExpandedLTR]=\"nodeExpandStatus()\">keyboard_arrow_down</mat-icon>\r\n    </div>\r\n</ng-template>\r\n<ng-template #linkLabelRtlOutlet>\r\n    <div\r\n        class=\"anml-data\"\r\n        [dir]=\"'rtl'\">\r\n        <ng-container *ngTemplateOutlet=\"iconContainer\"></ng-container>\r\n        <span class=\"label\">{{node.label}}</span>\r\n    </div>\r\n    <div\r\n        class=\"amml-icon-arrow-container\"\r\n        *ngIf='node.hasChildren'>\r\n        <mat-icon [@ExpandedRTL]=\"nodeExpandStatus()\">keyboard_arrow_down</mat-icon>\r\n    </div>\r\n</ng-template>\r\n<ng-template #iconContainer>\r\n    <div\r\n        class=\"icon-container\"\r\n        [ngSwitch]=\"getListIcon(node)\">\r\n        <span\r\n            *ngSwitchCase=\"'faIcon'\"\r\n            class=\"amml-icon amml-icon-fa\">\r\n            <i [ngClass]=\"getSelectedFaIcon()\"></i>\r\n        </span>\r\n        <mat-icon\r\n            *ngSwitchCase=\"'icon'\"\r\n            class=\"amml-icon\">\r\n            {{getSelectedIcon()}}\r\n        </mat-icon>\r\n        <mat-icon\r\n            *ngSwitchCase=\"'svgIcon'\"\r\n            class=\"amml-icon amml-svg-icon\"\r\n            svgIcon=\"{{getSelectedSvgIcon()}}\">\r\n        </mat-icon>\r\n        <img\r\n            *ngSwitchCase=\"'imageIcon'\"\r\n            matListAvatar\r\n            class=\"amml-icon\"\r\n            src=\"{{getSelectedImageIcon()}}\"\r\n            alt=\"{{node.label}}\">\r\n    </div>\r\n</ng-template>\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})\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, 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    ngOnInit() {\r\n        this.selectedListClasses[CONSTANT.DISABLED_ITEM_CLASS_NAME] = this.node.disabled;\r\n\r\n        if (!CommonUtils.isNullOrUndefined(this.node.faIcon) && 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    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    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        return {\r\n            color: this.getColor(),\r\n            backgroundColor: this.getBackgroundColor(),\r\n        };\r\n    }\r\n\r\n    getColorStyle(): ListStyle {\r\n        return { color: this.getColor() };\r\n    }\r\n\r\n    getBackgroundStyle(): ListStyle {\r\n        return { backgroundColor: this.getBackgroundColor() };\r\n    }\r\n\r\n    private getColor(): string {\r\n        return this.isSelected\r\n            ? this.nodeConfiguration.selectedListFontColor !== null\r\n                ? this.nodeConfiguration.selectedListFontColor\r\n                : CONSTANT.DEFAULT_SELECTED_FONT_COLOR\r\n            : this.nodeConfiguration.fontColor !== null\r\n            ? this.nodeConfiguration.fontColor\r\n            : CONSTANT.DEFAULT_LIST_FONT_COLOR;\r\n    }\r\n\r\n    private getBackgroundColor(): string {\r\n        return this.nodeConfiguration.listBackgroundColor !== null\r\n            ? this.nodeConfiguration.listBackgroundColor\r\n            : CONSTANT.DEFAULT_LIST_BACKGROUND_COLOR;\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            return;\r\n        }\r\n\r\n        if (this.nodeExpandCollapseStatus === ExpandCollapseStatusEnum.expand) {\r\n            this.setExpandStatus(true);\r\n        }\r\n        if (this.nodeExpandCollapseStatus === ExpandCollapseStatusEnum.collapse) {\r\n            this.setExpandStatus(false);\r\n        }\r\n    }\r\n\r\n    private setExpandStatus(value: boolean): void {\r\n        this.expanded = value;\r\n        if (!this.nodeConfiguration.customTemplate) {\r\n            return;\r\n        }\r\n        this.node.expanded = value;\r\n    }\r\n\r\n    expand(node: MultilevelNode): void {\r\n        if (node.disabled) {\r\n            return;\r\n        }\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\r\n        this.setClasses();\r\n\r\n        if (this.nodeConfiguration.interfaceWithRoute && node.link) {\r\n            void this.router.navigate([node.link], node.navigationExtras).then();\r\n            return;\r\n        }\r\n\r\n        if (node.onSelected && typeof node.onSelected === 'function') {\r\n            node.onSelected(node);\r\n            this.selectedListItem(node);\r\n            return;\r\n        }\r\n\r\n        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","<div class=\"amml-menu-container\">\r\n    <!-- Base Template rendering condition starts -->\r\n    <div\r\n        *ngIf=\"nodeConfiguration.customTemplate && !node.hidden;else baseTemplate\"\r\n        [ngClass]=\"selectedListClasses\"\r\n        [ngStyle]=\"getListStyle()\"\r\n        (click)=\"expand(node)\">\r\n        <ng-container\r\n            [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    <!-- Recursive Template calls begins -->\r\n    <div\r\n        *ngIf=\"hasItems() && expanded\"\r\n        [@SlideInOut]\r\n        [dir]=\"isRtlLayout() ? 'rtl' : 'ltr'\"\r\n        [ngClass]=\"classes\">\r\n        <ng-list-item\r\n            *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<!-- Base Template starts from here -->\r\n<ng-template #baseTemplate>\r\n    <mat-list-item\r\n        matRipple\r\n        *ngIf=\"!node.hidden\"\r\n        title=\"{{node.label}}\"\r\n        [matRippleDisabled]=\"node.disabled\"\r\n        [ngClass]=\"selectedListClasses\"\r\n        [ngStyle]=\"getBackgroundStyle()\"\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<ng-template #linkTemplate>\r\n    <ng-list-item-content\r\n        class=\"filled\"\r\n        [node]=\"node\"\r\n        [isRtlLayout]=\"isRtlLayout()\"\r\n        [ngStyle]=\"getColorStyle()\"></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: [MatIconModule, MatListModule, MatRippleModule],\r\n    declarations: [],\r\n    exports: [MatIconModule, MatListModule, MatRippleModule],\r\n})\r\nexport class MaterialsModule {}\r\n","import {\r\n    Component,\r\n    OnChanges,\r\n    OnInit,\r\n    OnDestroy,\r\n    Output,\r\n    EventEmitter,\r\n    Input,\r\n    ContentChild,\r\n    TemplateRef,\r\n    ElementRef,\r\n} from '@angular/core';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { Configuration, MultilevelNode, ExpandCollapseStatusEnum, ListStyle } 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})\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    private readonly stringConfigProperties = [\r\n        'classname',\r\n        'backgroundColor',\r\n        'listBackgroundColor',\r\n        'fontColor',\r\n        'selectedListFontColor',\r\n    ];\r\n\r\n    private destroyed$ = new Subject<void>();\r\n\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\r\n    isInvalidConfig = true;\r\n    isInvalidData = true;\r\n    nodeExpandCollapseStatus: ExpandCollapseStatusEnum = ExpandCollapseStatusEnum.neutral;\r\n\r\n    constructor(private router: Router, public multilevelMenuService: MultilevelMenuService) {}\r\n\r\n    ngOnInit() {\r\n        this.subscribeToRouterEvents();\r\n    }\r\n\r\n    ngOnChanges() {\r\n        this.checkConfigAndData();\r\n        this.initExpandCollapseStatus();\r\n        this.initSelectedMenuID();\r\n\r\n        if (!this.isInvalidData) {\r\n            this.menuIsReady.emit(this.items);\r\n        }\r\n    }\r\n\r\n    ngOnDestroy() {\r\n        this.destroyed$.next();\r\n        this.destroyed$.complete();\r\n    }\r\n\r\n    subscribeToRouterEvents() {\r\n        if (this.configuration?.interfaceWithRoute === false) {\r\n            return;\r\n        }\r\n\r\n        this.router.events.pipe(takeUntil(this.destroyed$)).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\r\n        if (!foundNode || CommonUtils.isNullOrUndefinedOrEmpty(foundNode.link)) {\r\n            return;\r\n        }\r\n\r\n        this.currentNode = foundNode;\r\n        if (CommonUtils.isNullOrUndefined(foundNode.dontEmit) || foundNode.dontEmit) {\r\n            return;\r\n        }\r\n\r\n        this.selectedListItem(foundNode);\r\n    }\r\n\r\n    checkConfigAndData(): void {\r\n        this.detectInvalidConfig();\r\n        this.checkValidData();\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((item) => !item.hidden);\r\n        this.multilevelMenuService.addRandomId(this.items);\r\n        this.isInvalidData = false;\r\n    }\r\n\r\n    detectInvalidConfig(): void {\r\n        if (CommonUtils.isNullOrUndefinedOrEmpty(this.configuration)) {\r\n            this.isInvalidConfig = true;\r\n            return;\r\n        }\r\n        this.isInvalidConfig = false;\r\n        const config = this.configuration;\r\n\r\n        for (const property of Object.keys(config)) {\r\n            this.stringConfigProperties.some((item) => item === property)\r\n                ? this.setStringConfigProperty(property, config[property])\r\n                : this.setBooleanConfigProperty(property, config[property]);\r\n        }\r\n    }\r\n\r\n    initExpandCollapseStatus(): void {\r\n        this.multilevelMenuService.expandCollapseStatus$.pipe(takeUntil(this.destroyed$)).subscribe({\r\n            next: (expandCollapseStatus: ExpandCollapseStatusEnum) => {\r\n                this.nodeExpandCollapseStatus = expandCollapseStatus ? expandCollapseStatus : ExpandCollapseStatusEnum.neutral;\r\n            },\r\n            error: () => {\r\n                this.nodeExpandCollapseStatus = ExpandCollapseStatusEnum.neutral;\r\n            },\r\n        });\r\n    }\r\n\r\n    initSelectedMenuID(): void {\r\n        this.multilevelMenuService.selectedMenuID$.pipe(takeUntil(this.destroyed$)).subscribe((selectedMenuID: string) => {\r\n            if (selectedMenuID) {\r\n                const foundNode = this.multilevelMenuService.getMatchedObjectById(this.items, selectedMenuID);\r\n                if (!foundNode) {\r\n                    return;\r\n                }\r\n                this.currentNode = foundNode;\r\n                this.selectedListItem(foundNode);\r\n            }\r\n        });\r\n    }\r\n\r\n    getClassName(): string {\r\n        return this.isInvalidConfig || CommonUtils.isNullOrUndefinedOrEmpty(this.configuration.classname)\r\n            ? CONSTANT.DEFAULT_CLASS_NAME\r\n            : `${CONSTANT.DEFAULT_CLASS_NAME} ${this.configuration.classname}`;\r\n    }\r\n\r\n    getGlobalStyle(): ListStyle {\r\n        const styles = {\r\n            backgroundColor: null,\r\n        };\r\n\r\n        if (this.isInvalidConfig || CommonUtils.isNullOrUndefinedOrEmpty(this.configuration.backgroundColor)) {\r\n            return styles;\r\n        }\r\n\r\n        styles.backgroundColor = 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\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\r\n        event.items === undefined && (!event.onSelected || typeof event.onSelected !== 'function')\r\n            ? this.selectedItem.emit(event)\r\n            : this.selectedLabel.emit(event);\r\n    }\r\n\r\n    private setStringConfigProperty(propertyName: string, value: string): void {\r\n        if (CommonUtils.isNullOrUndefinedOrEmpty(value)) {\r\n            return;\r\n        }\r\n\r\n        this.nodeConfig[propertyName] = value;\r\n    }\r\n\r\n    private setBooleanConfigProperty(propertyName: string, value: boolean): void {\r\n        if (CommonUtils.isNullOrUndefined(value) || typeof value !== 'boolean') {\r\n            return;\r\n        }\r\n\r\n        this.nodeConfig[propertyName] = value;\r\n    }\r\n}\r\n","<div\r\n    [ngClass]=\"getClassName()\"\r\n    [ngStyle]=\"getGlobalStyle()\"\r\n    *ngIf='!isInvalidData && items.length !== 0'\r\n    [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        </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    imports: [CommonModule, MaterialsModule, RouterModule],\r\n    declarations: [NgMaterialMultilevelMenuComponent, ListItemComponent, ListItemContentComponent],\r\n    exports: [NgMaterialMultilevelMenuComponent],\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","i8.ListItemContentComponent","i6.ListItemComponent"],"mappings":"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"}