{"version":3,"file":"fundamental-ngx-core-nested-list.mjs","sources":["../../../../libs/core/nested-list/nested-item/nested-item.service.ts","../../../../libs/core/nested-list/nested-list-directives.ts","../../../../libs/core/nested-list/nested-link/nested-link.directive.ts","../../../../libs/core/nested-list/nested-content/nested-list-content.directive.ts","../../../../libs/core/nested-list/nested-list-keyboard.service.ts","../../../../libs/core/nested-list/nested-list-state.service.ts","../../../../libs/core/nested-list/nested-item/nested-item.directive.ts","../../../../libs/core/nested-list/nested-list-popover/nested-list-popover.component.ts","../../../../libs/core/nested-list/nested-list-popover/nested-list-popover.component.html","../../../../libs/core/nested-list/nested-list/nested-list.directive.ts","../../../../libs/core/nested-list/prepared-nested-list/prepared-nested-list.component.ts","../../../../libs/core/nested-list/prepared-nested-list/prepared-nested-list.component.html","../../../../libs/core/nested-list/nested-list.module.ts","../../../../libs/core/nested-list/fundamental-ngx-core-nested-list.ts"],"sourcesContent":["import { Subject } from 'rxjs';\nimport { NestedListPopoverInterface } from '../nested-list-popover/nested-list-popover.interface';\nimport { NestedListInterface } from '../nested-list/nested-list.interface';\n\n/** Contains references to popover or list nested components, that are placed as direct children of item component */\nexport class NestedItemService {\n    /** @hidden */\n    list: NestedListInterface;\n    /** @hidden */\n    popover?: NestedListPopoverInterface;\n\n    /** Subject fired when expand icon is clicked */\n    toggle: Subject<boolean> = new Subject<boolean>();\n\n    /** Subject fired, when child elements are focused */\n    focus: Subject<void> = new Subject<void>();\n\n    /** Subject fired, when content or link is clicked */\n    click: Subject<void> = new Subject<void>();\n\n    /** KeyDown handler, it is triggered from link, content and item elements */\n    keyDown: Subject<KeyboardEvent> = new Subject<KeyboardEvent>();\n}\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    Directive,\n    ElementRef,\n    inject,\n    Input,\n    signal,\n    ViewEncapsulation\n} from '@angular/core';\nimport { RtlService } from '@fundamental-ngx/cdk/utils';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { NestedItemService } from './nested-item/nested-item.service';\n\nlet uniqueId = 0;\n\n@Directive({\n    selector: '[fdNestedDirectivesHeader], [fd-nested-list-header]',\n    host: {\n        class: 'fd-nested-list__group-header',\n        '[attr.id]': 'id'\n    }\n})\nexport class NestedListHeaderDirective {\n    /** Id of the element. */\n    @Input()\n    id: string | null = `fd-nested-list-group-header-${++uniqueId}`;\n\n    /** @hidden */\n    private readonly _elementRef = inject(ElementRef);\n\n    /** Get the header title */\n    get title(): string {\n        return this._elementRef.nativeElement.textContent;\n    }\n}\n\n@Component({\n    // eslint-disable-next-line @angular-eslint/component-selector\n    selector: '[fdNestedDirectivesIcon], [fd-nested-list-icon]',\n    template: `<ng-content></ng-content>`,\n    host: {\n        class: 'fd-nested-list__icon',\n        '[attr.role]': 'role'\n    }\n})\nexport class NestedListIconComponent extends IconComponent {\n    /** Role attribute */\n    @Input()\n    role = 'presentation';\n}\n\n@Directive({\n    selector: '[fdNestedDirectivesTitle], [fd-nested-list-title]',\n    host: {\n        class: 'fd-nested-list__title'\n    }\n})\nexport class NestedListTitleDirective {\n    /** @hidden */\n    private readonly _elementRef = inject(ElementRef);\n\n    /** Returns element's InnerText */\n    getInnerText(): string {\n        return this._elementRef?.nativeElement.textContent;\n    }\n}\n\n@Component({\n    // eslint-disable-next-line @angular-eslint/component-selector\n    selector: '[fdNestedListExpandIcon], [fd-nested-list-expand-icon]',\n    template: `\n        <ng-content></ng-content>\n        <fd-icon [glyph]=\"expandIcon()\"></fd-icon>\n    `,\n    host: {\n        'aria-haspopup': 'true',\n        tabindex: '-1',\n        class: 'fd-nested-list__button fd-button',\n        '[class.is-expanded]': 'expanded()',\n        '[attr.aria-expanded]': 'expanded()',\n        '[attr.aria-hidden]': 'true',\n        '(click)': 'onClick($event)',\n        '(focus)': 'onFocus()'\n    },\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    imports: [IconComponent]\n})\nexport class NestedListExpandIconComponent {\n    /**\n     * @hidden\n     * Attribute controlled by the parent `NestedItemDirective`\n     */\n    readonly expanded = signal(false);\n\n    /** @hidden */\n    readonly expandIcon = computed(() => {\n        if (this.expanded()) {\n            return 'navigation-down-arrow';\n        }\n        return this._rtlService?.rtl() ? 'navigation-left-arrow' : 'navigation-right-arrow';\n    });\n\n    /** @hidden */\n    private readonly _itemService = inject(NestedItemService);\n\n    /** @hidden */\n    private readonly _rtlService = inject(RtlService, { optional: true });\n\n    /** Mouse event handler */\n    onClick(event: MouseEvent): void {\n        this.expanded.update((v) => !v);\n        this._itemService.toggle.next(this.expanded());\n        event.stopPropagation();\n    }\n\n    /** Handler for focus events */\n    onFocus(): void {\n        this._itemService.focus.next();\n    }\n\n    /** @hidden */\n    changeExpandedState(expanded: boolean): void {\n        this.expanded.set(expanded);\n    }\n}\n","import {\n    ChangeDetectorRef,\n    ContentChild,\n    Directive,\n    ElementRef,\n    EventEmitter,\n    HostBinding,\n    HostListener,\n    Input,\n    Output\n} from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { NestedItemLink } from '../nested-item/nested-item.interface';\nimport { NestedItemService } from '../nested-item/nested-item.service';\nimport { NestedListTitleDirective } from '../nested-list-directives';\n\n@Directive({\n    selector: '[fdNestedLink], [fd-nested-list-link]',\n    standalone: true\n})\nexport class NestedLinkDirective implements NestedItemLink {\n    /** Function that is called on click event dispatch on this element. */\n    @Input()\n    onClickCallback: () => void;\n\n    /** Whether this element is selected*/\n    @Input()\n    @HostBinding('class.is-selected')\n    selected = false;\n\n    /** @hidden */\n    @HostBinding('attr.aria-label')\n    _ariaLabel: string;\n\n    /** @hidden */\n    @Input()\n    @HostBinding('attr.aria-describedby')\n    ariaDescribedby: Nullable<string | number>;\n\n    /** Event thrown, when selected state is changed */\n    @Output()\n    selectedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n    /** @hidden */\n    @HostBinding('class.fd-nested-list__link')\n    fdNestedListItemClass = true;\n\n    /** @hidden */\n    @HostBinding('attr.tabindex')\n    tabIndex = 0;\n\n    /** @hidden */\n    @HostBinding('attr.role')\n    role = 'treeitem';\n\n    /**\n     *  @hidden\n     *  Reference to title element, it is used, to get title for condensed mode.\n     */\n    @ContentChild(NestedListTitleDirective)\n    title: NestedListTitleDirective;\n\n    /** @hidden */\n    constructor(\n        public changeDetRef: ChangeDetectorRef,\n        private _elementRef: ElementRef,\n        private _itemService: NestedItemService\n    ) {}\n\n    /** Handler for keyboard events */\n    @HostListener('keydown', ['$event'])\n    onKeyDown(event: KeyboardEvent): void {\n        this._itemService.keyDown.next(event);\n    }\n\n    /** Handler for mouse events */\n    @HostListener('click')\n    onClick(): void {\n        this._itemService.click.next();\n        if (this.onClickCallback) {\n            this.onClickCallback();\n        }\n    }\n\n    /** Handler for focus events */\n    @HostListener('focus')\n    onFocus(): void {\n        this._itemService.focus.next();\n    }\n\n    /** Method to trigger selected state change */\n    changeSelected(selected: boolean): void {\n        this.selected = selected;\n        this.selectedChange.emit(selected);\n    }\n\n    /** Set focus on the element. */\n    focus(): void {\n        this._elementRef.nativeElement.focus();\n    }\n\n    /** Dispatches the click event on the element */\n    click(): void {\n        this._elementRef.nativeElement.click();\n    }\n\n    /** Returns the title value of the title directive */\n    getTitle(): string {\n        return this.title && this.title.getInnerText();\n    }\n}\n","import {\n    AfterContentInit,\n    ChangeDetectorRef,\n    ContentChild,\n    DestroyRef,\n    Directive,\n    ElementRef,\n    EventEmitter,\n    HostBinding,\n    HostListener,\n    Input,\n    Output,\n    inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NestedItemService } from '../nested-item/nested-item.service';\nimport { NestedLinkDirective } from '../nested-link/nested-link.directive';\nimport { NestedListExpandIconComponent } from '../nested-list-directives';\n\n@Directive({\n    selector: '[fdNestedListContent], [fd-nested-list-content]',\n    host: {\n        tabindex: '0'\n    },\n    standalone: true\n})\nexport class NestedListContentDirective implements AfterContentInit {\n    /** Whether this element is selected*/\n    @Input()\n    @HostBinding('class.is-selected')\n    selected = false;\n\n    /** @hidden */\n    @HostBinding('attr.role')\n    role = 'treeitem';\n\n    /** @hidden */\n    @HostBinding('attr.aria-expanded')\n    ariaExpanded = false;\n\n    /** Event thrown, when selected state is changed */\n    @Output()\n    selectedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n    /** Event that is thrown, when any keyboard event is dispatched on this element */\n    @Output()\n    readonly keyboardTriggered: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n\n    /** Event that is thrown, when this element is clicked */\n    @Output()\n    readonly clicked: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n    /** @hidden */\n    @HostBinding('class.fd-nested-list__content')\n    fdNestedListContentClass = true;\n\n    /**\n     * @hidden\n     * Attribute controlled by the parent `NestedItemDirective`\n     */\n    @HostBinding('class.has-child')\n    hasChildren = false;\n\n    /** @hidden */\n    @ContentChild(NestedLinkDirective)\n    nestedLink: NestedLinkDirective;\n\n    /** @hidden */\n    @ContentChild(NestedListExpandIconComponent)\n    nestedExpandIcon: NestedListExpandIconComponent;\n\n    /** An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing)  */\n    private readonly _destroyRef = inject(DestroyRef);\n\n    /** @hidden */\n    constructor(\n        public changeDetRef: ChangeDetectorRef,\n        private _elementRef: ElementRef,\n        private _itemService: NestedItemService\n    ) {}\n\n    /** Keyboard Event Handler */\n    @HostListener('keydown', ['$event'])\n    onKeyDown(event: KeyboardEvent): void {\n        this.keyboardTriggered.emit(event);\n        this._itemService.keyDown.next(event);\n    }\n\n    /** Handler for mouse events */\n    @HostListener('click')\n    onClick(): void {\n        this._itemService.click.next();\n    }\n\n    /** @hidden */\n    ngAfterContentInit(): void {\n        this._makeLinkUnFocusable();\n        this._setFocusSubscription();\n    }\n\n    /** Method to trigger selected state change */\n    changeSelected(selected: boolean): void {\n        this.selected = selected;\n        this.selectedChange.emit(selected);\n    }\n\n    /** Expanded state change propagation method */\n    changeExpandedState(expanded: boolean): void {\n        if (this.nestedExpandIcon) {\n            this.nestedExpandIcon.changeExpandedState(expanded);\n        }\n    }\n\n    /** Set focus on the element. */\n    focus(): void {\n        this._elementRef.nativeElement.focus();\n    }\n\n    /** Dispatches the click event on the element */\n    click(): void {\n        this.focus();\n        if (this.nestedLink) {\n            this.nestedLink.click();\n        }\n    }\n\n    /** Add subscription for child focusing */\n    private _setFocusSubscription(): void {\n        this._itemService.focus.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => this.focus());\n    }\n\n    /** Hide link child element from tab key */\n    private _makeLinkUnFocusable(): void {\n        if (this.nestedLink) {\n            this.nestedLink.tabIndex = -1;\n            this.changeDetRef.detectChanges();\n        }\n    }\n}\n","import { ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE } from '@angular/cdk/keycodes';\nimport { DestroyRef, Inject, Injectable, inject } from '@angular/core';\nimport { KeyUtil, destroyObservable } from '@fundamental-ngx/cdk/utils';\nimport { MenuKeyboardService } from '@fundamental-ngx/core/menu';\nimport { Subject, merge } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { NestedItemInterface } from './nested-item/nested-item.interface';\nimport { NestedListInterface } from './nested-list/nested-list.interface';\n\n/**\n * Nested list keyboard service, which uses MenuKeyboardService, to deal with ArrowUp, ArrowDown, Space, Enter.\n * Also has own handling of ArrowLeft and ArrowRight, to open/close the menu if it has any children.\n */\n@Injectable()\nexport class NestedListKeyboardService {\n    /**\n     * Event, that is thrown always, when the open/close i being called on item components.\n     * Also triggers changing of elements, to remove closed/hidden elements\n     */\n    readonly refresh$: Subject<void> = new Subject<void>();\n\n    /** @hidden */\n    private readonly _destroyRef = inject(DestroyRef);\n\n    /** @hidden */\n    constructor(@Inject(MenuKeyboardService) private keyboardService: MenuKeyboardService) {}\n\n    /**\n     * Function called after refresh$ event is triggered.\n     * Refresh the list of NestedItems, that the keyboard support should be provided for\n     */\n    refreshItems(lists: NestedListInterface[]): void {\n        const items: NestedItemInterface[] = [];\n\n        /** Gathering all of the items */\n        lists.forEach((list) => items.push(...this._getAllListItems(list)));\n        /** Putting the keyboard support function to each of the items */\n        items.forEach((item, index) => {\n            item.keyboardTriggered\n                .pipe(takeUntil(merge(this.refresh$, destroyObservable(this._destroyRef))))\n                .subscribe((keyboardEvent: KeyboardEvent) => this._handleKeyDown(keyboardEvent, index, items));\n        });\n    }\n\n    /** Recursive function to get all of the NestedItem elements in correct order. */\n    private _getItems(item: NestedItemInterface): NestedItemInterface[] {\n        const childrenItems = item.expanded ? item.allChildrenItems : [];\n        return childrenItems.reduce(\n            (actualArray: NestedItemInterface[], nextItem: NestedItemInterface) => [\n                ...actualArray,\n                ...this._getItems(nextItem)\n            ],\n            [item]\n        );\n    }\n\n    /** Method that calls the recursive function, getItems() and gathers all of the items in the NestedList */\n    private _getAllListItems(list: NestedListInterface): NestedItemInterface[] {\n        const _items: NestedItemInterface[] = [];\n        if (list && list.nestedItems && list.nestedItems.length > 0) {\n            list.nestedItems.forEach((item) => {\n                _items.push(...this._getItems(item));\n            });\n        }\n\n        return _items;\n    }\n\n    /**\n     * Keyboard handle function. Uses keyboard support service from MenuComponent, to deal with ArrowUp, ArrowDown, Space, Enter.\n     * For ArrowRight, if item is not expanded and has children (list or popup), the open function is triggered.\n     * Otherwise it follows ArrowDown functionality.\n     * For ArrowLeft, if item is expanded and has children (list or popup), the close function is triggered.\n     * Otherwise it follows ArrowUp functionality\n     */\n    private _handleKeyDown(keyboardEvent: KeyboardEvent, index: number, items: NestedItemInterface[]): void {\n        const item: NestedItemInterface = items[index];\n\n        if (KeyUtil.isKeyCode(keyboardEvent, RIGHT_ARROW)) {\n            if (!item.expanded && item.hasChildren) {\n                item.triggerOpen();\n            }\n            keyboardEvent.preventDefault();\n        }\n\n        if (KeyUtil.isKeyCode(keyboardEvent, LEFT_ARROW)) {\n            if (item.expanded && item.hasChildren) {\n                item.triggerClose();\n            }\n            keyboardEvent.preventDefault();\n        }\n\n        if (KeyUtil.isKeyCode(keyboardEvent, [ENTER, SPACE])) {\n            if (item.hasChildren) {\n                items[index].click();\n            }\n            keyboardEvent.preventDefault();\n        }\n\n        this.keyboardService.keyDownHandler(keyboardEvent, index, items);\n    }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class NestedListStateService {\n    /**\n     * @hidden\n     * The condensed state is modified by the parent and read by nested lists.\n     */\n    condensed = false;\n\n    /**\n     * @hidden\n     */\n    selectable = true;\n\n    /** @hidden */\n    onSelected: Subject<string> = new Subject<string>();\n}\n","import {\n    AfterContentInit,\n    ContentChild,\n    DestroyRef,\n    Directive,\n    EventEmitter,\n    HostBinding,\n    Input,\n    Output,\n    inject\n} from '@angular/core';\nimport { filter } from 'rxjs/operators';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { NestedListContentDirective } from '../nested-content/nested-list-content.directive';\nimport { NestedLinkDirective } from '../nested-link/nested-link.directive';\nimport { NestedListKeyboardService } from '../nested-list-keyboard.service';\nimport { NestedListStateService } from '../nested-list-state.service';\nimport { NestedItemInterface } from './nested-item.interface';\nimport { NestedItemService } from './nested-item.service';\n\nlet sideNavigationItemUniqueId = 0;\n\n@Directive({\n    selector: '[fdNestedItem], [fd-nested-list-item]',\n    providers: [NestedItemService],\n    host: {\n        role: 'treeitem'\n    },\n    standalone: true\n})\nexport class NestedItemDirective implements AfterContentInit, NestedItemInterface {\n    /** Whether item should be expanded */\n    @Input() set expanded(expanded: boolean) {\n        if (expanded !== this._expanded) {\n            this.propagateOpenChange(expanded);\n        }\n    }\n\n    /** @hidden */\n    get expanded(): boolean {\n        return this._expanded;\n    }\n\n    /** Event thrown, when expanded state is changed */\n    @Output()\n    readonly expandedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n    /** Event thrown, when any keyboard event is dispatched on this, or link element */\n    @Output()\n    readonly keyboardTriggered: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n\n    /** @hidden */\n    @HostBinding('class.fd-nested-list__item')\n    fdNestedListItemClass = true;\n\n    /**\n     * @hidden\n     * Reference to the link directive, to allow manipulating the properties of this element.\n     */\n    @ContentChild(NestedLinkDirective)\n    linkItem: NestedLinkDirective;\n\n    /**\n     * @hidden\n     * Mostly used, when this item has list\n     * Reference to the content directive, to allow manipulating the properties of this element.\n     */\n    @ContentChild(NestedListContentDirective)\n    contentItem: NestedListContentDirective;\n\n    /** @hidden */\n    @HostBinding('attr.aria-level')\n    _ariaLevel: Nullable<number> = null;\n\n    /** @hidden */\n    @HostBinding('attr.title')\n    _title: string;\n\n    /** @hidden */\n    @HostBinding('attr.role')\n    protected _role: string;\n\n    /** @hidden */\n    @HostBinding('attr.aria-expanded')\n    protected _ariaExpanded: Nullable<boolean> = null;\n\n    /** @hidden */\n    @HostBinding('attr.aria-selected')\n    protected _ariaSelected: Nullable<boolean> = null;\n\n    /** @hidden */\n    @HostBinding('attr.aria-disabled')\n    protected _ariaDisabled = false;\n\n    /** @hidden */\n    @HostBinding('attr.aria-label')\n    protected _ariaLabel: string;\n\n    /** @hidden */\n    @HostBinding('attr.aria-hidden')\n    protected _ariaHidden = true;\n\n    /** @hidden */\n    private _expanded = false;\n\n    /** An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing)  */\n    private readonly _destroyRef = inject(DestroyRef);\n\n    /** Unique element ID */\n    private readonly _elementId: string = 'fdNestedItem' + sideNavigationItemUniqueId++;\n\n    /** @hidden */\n    constructor(\n        private _itemService: NestedItemService,\n        private _keyboardService: NestedListKeyboardService,\n        private _stateService: NestedListStateService\n    ) {}\n\n    /** @hidden */\n    ngAfterContentInit(): void {\n        this._setUpSubscriptions();\n        this._propagateHasChildrenProperty();\n        this._passItemReferences();\n        /** Propagate initial open state to children */\n        this.propagateOpenChange(this._expanded);\n\n        if (this.linkItem) {\n            this._ariaSelected = this.linkItem.selected;\n            this._ariaDisabled = !this._stateService.selectable && !this.linkItem.selected;\n            this._title = this.linkItem.getTitle();\n        }\n    }\n\n    /** Check if the item element has any child */\n    get hasChildren(): boolean {\n        return !!this._itemService?.list;\n    }\n\n    /** Get all of the children item elements */\n    get allChildrenItems(): NestedItemInterface[] {\n        if (this._itemService?.list) {\n            return this._itemService.list.nestedItems.toArray();\n        }\n\n        return [];\n    }\n\n    /** Method that expand the item and propagate it to children */\n    triggerOpen(): void {\n        if (!this.expanded) {\n            /** Propagate initial open state to children */\n            this.propagateOpenChange(true);\n        }\n    }\n\n    /** Method that close the item and propagate it to children */\n    triggerClose(): void {\n        if (this.expanded) {\n            /** Propagate initial open state to children */\n            this.propagateOpenChange(false);\n        }\n    }\n\n    /** Method that toggle the item and propagate it to children */\n    toggle(): void {\n        /** Propagate initial open state to children */\n        this.propagateOpenChange(!this._expanded);\n    }\n\n    /** Method that dispatches `click` event on link item*/\n    click(): void {\n        if (this.contentItem) {\n            this.contentItem.click();\n        } else if (this.linkItem) {\n            this.linkItem.click();\n        }\n    }\n\n    /** Method that focuses link item*/\n    focus(): void {\n        if (this.contentItem) {\n            this.contentItem.focus();\n        } else if (this.linkItem) {\n            this.linkItem.focus();\n        }\n    }\n\n    /** Method that provides information if element, or children of this element has passed id */\n    containsId(id: string): boolean {\n        if (this._elementId === id) {\n            return true;\n        }\n\n        if (this._itemService.list) {\n            return !!this._itemService.list.nestedItems.find((item) => item.containsId(id));\n        }\n\n        return false;\n    }\n\n    /**\n     * @hidden\n     * Propagate open state to all of the children\n     */\n    private propagateOpenChange(open: boolean): void {\n        this._expanded = open;\n\n        if (this.hasChildren) {\n            this._ariaExpanded = this._expanded;\n        }\n\n        /**\n         * Propagate to child content directive, which contains icon and link\n         */\n        if (this.contentItem) {\n            this.contentItem.changeExpandedState(open);\n            this.contentItem.ariaExpanded = this._expanded;\n        }\n\n        /** Propagate hidden flag to list component, that is passed from child */\n        if (this._itemService.list) {\n            this._itemService.list.hidden = !open;\n            this._itemService.list.detectChanges();\n        }\n\n        /** Propagate open flag to popover list component, that is passed from child */\n        if (this._itemService.popover) {\n            this._itemService.popover.open = open;\n        }\n\n        /**\n         * If there are any list below\n         * Trigger event to provide keyboard support to new list of opened item element.\n         * */\n        if (this._shouldRefreshKeyboardService()) {\n            this._keyboardService.refresh$.next();\n        }\n\n        this.expandedChange.emit(open);\n    }\n\n    /** @hidden */\n    private _shouldRefreshKeyboardService(): boolean {\n        return !!(this._itemService.popover || this._itemService.list || this.contentItem);\n    }\n\n    /** @hidden */\n    private _setUpSubscriptions(): void {\n        if (this._stateService.condensed) {\n            this._role = 'menuitemradio';\n        }\n\n        /** Subscribe to mouse click event, thrown by link item */\n        this._itemService.toggle.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => this.toggle());\n\n        /** Subscribe to mouse click event, thrown by link item */\n        this._itemService.click\n            .pipe(takeUntilDestroyed(this._destroyRef))\n            .subscribe(() => this._stateService.onSelected.next(this._elementId));\n\n        /** Subscribe to keyboard event and throw it farther */\n        this._itemService.keyDown\n            .pipe(takeUntilDestroyed(this._destroyRef))\n            .subscribe((keyboardEvent) => this.keyboardTriggered.emit(keyboardEvent));\n\n        /** Subscribe to selected state change, it's not triggered, when selectable flag is disabled*/\n        this._stateService.onSelected\n            .pipe(\n                takeUntilDestroyed(this._destroyRef),\n                filter(() => this._stateService.selectable)\n            )\n            .subscribe((id) => this._selectedChange(id));\n    }\n\n    /** @hidden */\n    private _propagateHasChildrenProperty(): void {\n        if (this.contentItem && this.hasChildren) {\n            this._ariaExpanded = false;\n            this.contentItem.hasChildren = true;\n            this.contentItem.changeDetRef.detectChanges();\n        }\n    }\n\n    /** Pass this element to popover child item, to allow control `expanded` value */\n    private _passItemReferences(): void {\n        if (this._itemService.popover) {\n            this._itemService.popover.parentItemElement = this;\n        }\n    }\n\n    /** Change of selected state of content or link, if there is any children with I */\n    private _selectedChange(id: string): void {\n        const selected = this.containsId(id);\n        this._ariaSelected = selected;\n\n        if (this.contentItem) {\n            this.contentItem.changeSelected(selected);\n        } else if (this.linkItem) {\n            this.linkItem.changeSelected(selected);\n        }\n    }\n}\n","import {\n    AfterContentInit,\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    ContentChild,\n    inject,\n    Input,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\n\nimport { RtlService } from '@fundamental-ngx/cdk/utils';\nimport { PopoverBodyComponent, PopoverComponent, PopoverControlComponent } from '@fundamental-ngx/core/popover';\nimport { Placement } from '@fundamental-ngx/core/shared';\nimport { NestedListContentDirective } from '../nested-content/nested-list-content.directive';\nimport { NestedItemInterface } from '../nested-item/nested-item.interface';\nimport { NestedItemService } from '../nested-item/nested-item.service';\nimport { NestedLinkDirective } from '../nested-link/nested-link.directive';\nimport { NestedListTitleDirective } from '../nested-list-directives';\nimport { NestedListKeyboardService } from '../nested-list-keyboard.service';\nimport { NestedListPopoverInterface } from './nested-list-popover.interface';\n\n@Component({\n    selector: 'fd-nested-list-popover',\n    templateUrl: './nested-list-popover.component.html',\n    styleUrl: './nested-list-popover.component.scss',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        class: 'fd-nested-list__popover'\n    },\n    imports: [\n        PopoverComponent,\n        PopoverControlComponent,\n        PopoverBodyComponent,\n        NestedLinkDirective,\n        NestedListTitleDirective\n    ]\n})\nexport class NestedListPopoverComponent implements NestedListPopoverInterface, AfterContentInit {\n    /** @hidden\n     * For Internal Usage - Gets information about title, which should be displayed inside popover\n     */\n    @Input()\n    title = '';\n\n    /** @hidden */\n    @ViewChild(PopoverComponent)\n    popoverComponent: PopoverComponent;\n\n    /** @hidden */\n    @ContentChild(NestedLinkDirective)\n    linkDirective: NestedLinkDirective;\n\n    /** @hidden */\n    @ContentChild(NestedListContentDirective)\n    contentDirective: NestedListContentDirective;\n\n    /**\n     * @hidden\n     * Reference to parent item, to propagate open and close change from popover.\n     */\n    parentItemElement: NestedItemInterface;\n\n    /** @hidden */\n    open = false;\n\n    /** @hidden */\n    protected readonly placement = computed<Placement>(() => (this._rtlService?.rtl() ? 'left-start' : 'right-start'));\n\n    /** @hidden */\n    private readonly _keyboardNestService = inject(NestedListKeyboardService);\n\n    /** @hidden */\n    private readonly _itemService = inject(NestedItemService, { optional: true });\n\n    /** @hidden */\n    private readonly _rtlService = inject(RtlService, { optional: true });\n\n    /** @hidden */\n    constructor() {\n        this._listenOnKeyboardRefresh();\n        if (this._itemService) {\n            this._itemService.popover = this;\n        }\n    }\n\n    /** @hidden */\n    ngAfterContentInit(): void {\n        if (!this.title) {\n            this.title = this._getTitle();\n        }\n    }\n\n    /**\n     * Method called, when open state is changed, from popover component (escape key, outside click).\n     */\n    handleOpenChange(open: boolean): void {\n        this.open = open;\n        if (this.parentItemElement) {\n            if (open) {\n                this.parentItemElement.triggerOpen();\n            } else {\n                this.parentItemElement.triggerClose();\n            }\n        }\n    }\n\n    /** Returns title of nested link element inside content directive */\n    private _getTitle(): string {\n        if (this.contentDirective && this.contentDirective.nestedLink) {\n            return this.contentDirective.nestedLink.getTitle();\n        } else {\n            return '';\n        }\n    }\n\n    /** @hidden */\n    private _listenOnKeyboardRefresh(): void {\n        this._keyboardNestService.refresh$.subscribe(() => {\n            /** Update popover position, on list of hidden items change */\n            if (this.popoverComponent) {\n                this.popoverComponent.refreshPosition();\n            }\n        });\n    }\n}\n","<fd-popover\n    [placement]=\"placement()\"\n    [triggers]=\"['click']\"\n    [noArrow]=\"false\"\n    [isOpen]=\"open\"\n    (isOpenChange)=\"handleOpenChange($event)\"\n>\n    <fd-popover-control>\n        <ng-content select=\"[fd-nested-list-link]\"></ng-content>\n        <ng-content select=\"[fd-nested-list-content]\"></ng-content>\n    </fd-popover-control>\n    <fd-popover-body class=\"fd-nested-list--text-only\">\n        <a fd-nested-list-link class=\"fd-nested-list__popover-header\">\n            <span fd-nested-list-title>{{ title }}</span>\n        </a>\n        <ng-content select=\"[fd-nested-list]\"></ng-content>\n        <ng-content select=\"fd-prepared-nested-list\"></ng-content>\n    </fd-popover-body>\n</fd-popover>\n","import {\n    AfterContentInit,\n    ChangeDetectorRef,\n    ContentChild,\n    ContentChildren,\n    DestroyRef,\n    Directive,\n    effect,\n    ElementRef,\n    forwardRef,\n    HostBinding,\n    inject,\n    Injector,\n    Input,\n    Optional,\n    Provider,\n    QueryList\n} from '@angular/core';\nimport { startWith } from 'rxjs';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { MenuKeyboardService } from '@fundamental-ngx/core/menu';\nimport { FD_LANGUAGE_SIGNAL, FdLanguage, TranslationResolver } from '@fundamental-ngx/i18n';\nimport { NestedItemDirective } from '../nested-item/nested-item.directive';\nimport { NestedItemService } from '../nested-item/nested-item.service';\nimport { NestedListHeaderDirective } from '../nested-list-directives';\nimport { NestedListKeyboardService } from '../nested-list-keyboard.service';\nimport { NestedListStateService } from '../nested-list-state.service';\nimport { NestedListInterface } from './nested-list.interface';\n\nfunction provideNestedListStateService(): Provider {\n    // Nested list can be nested, and that will cause on each individual instance of NestedListStateService.\n    return {\n        provide: NestedListStateService,\n        useFactory: () =>\n            inject(NestedListStateService, { skipSelf: true, optional: true }) ?? new NestedListStateService()\n    };\n}\n\n/**\n * <div fd-nested-list>\n *  <div fd-nested-list>\n *  </div>\n * </div>\n */\n\n@Directive({\n    selector: '[fdNestedList], [fd-nested-list]',\n    providers: [\n        contentDensityObserverProviders(),\n        MenuKeyboardService,\n        NestedListKeyboardService,\n        provideNestedListStateService()\n    ],\n    standalone: true\n})\nexport class NestedListDirective implements AfterContentInit, NestedListInterface {\n    /** In case the user wants to no use icons for items in this list */\n    @Input()\n    @HostBinding('class.fd-nested-list--text-only')\n    textOnly = false;\n\n    /** Aria defines role description for the Nested List Tree. */\n    @Input()\n    ariaRoledescriptionTree = 'Navigation List Tree';\n\n    /** Aria defines role description for the Nested List MenuBar. */\n    @Input()\n    ariaRoledescriptionMenuBar = 'Navigation List Menu Bar';\n\n    /** Aria defines aria label for the selected item when the list with disabled selection. */\n    @Input()\n    ariaLabelSelected = 'Selected';\n\n    /** @hidden */\n    @HostBinding('class.fd-nested-list')\n    fdNestedListItemClass = true;\n\n    /** @hidden */\n    @HostBinding('attr.aria-hidden')\n    hidden = false;\n\n    /**\n     * @hidden\n     * This variable is mostly to keep track of this list's children. There is not usage of it inside this directive,\n     * but it's used by services and NestedItemDirective by itself,\n     */\n    @ContentChildren(forwardRef(() => NestedItemDirective))\n    nestedItems: QueryList<NestedItemDirective>;\n\n    /** @hidden */\n    @ContentChild(NestedListHeaderDirective)\n    protected _nestedListHeader: NestedListHeaderDirective;\n\n    /** @hidden */\n    @HostBinding('attr.role')\n    protected _role = 'tree';\n\n    /** @hidden */\n    @HostBinding('attr.aria-roledescription')\n    protected _ariaRoledescription: Nullable<string> = this.ariaRoledescriptionTree;\n\n    /** @hidden */\n    @HostBinding('attr.aria-haspopup')\n    protected _ariaHaspopup: Nullable<string> = null;\n\n    /** @hidden */\n    @HostBinding('attr.tabindex')\n    protected _tabindex = '-1';\n\n    /** @hidden */\n    private readonly _translationResolver = new TranslationResolver();\n\n    /** @hidden */\n    private readonly _langSignal = inject(FD_LANGUAGE_SIGNAL);\n\n    /** @hidden */\n    private readonly _destroyRef = inject(DestroyRef);\n\n    /** @hidden */\n    private readonly _injector = inject(Injector);\n\n    /** @hidden */\n    constructor(\n        @Optional() private _nestedItemService: NestedItemService,\n        private _nestedListKeyboardService: NestedListKeyboardService,\n        private _elementRef: ElementRef,\n        private _changeDetectionRef: ChangeDetectorRef,\n        private readonly _nestedListStateService: NestedListStateService,\n        _contentDensityObserver: ContentDensityObserver\n    ) {\n        if (this._nestedItemService) {\n            this._nestedItemService.list = this;\n        }\n        _contentDensityObserver.subscribe();\n    }\n\n    /** @hidden */\n    ngAfterContentInit(): void {\n        let nestedLevel: number = this._getNestedLevel();\n        /** If there is condensed mode, maximum 2nd level class of nest can be added */\n        if (this._nestedListStateService.condensed) {\n            nestedLevel = Math.min(...[nestedLevel, 2]);\n        }\n\n        this._setAccessibilityProperties(nestedLevel);\n\n        // Register effect with explicit injector context\n        effect(\n            () => {\n                const lang = this._langSignal();\n                this._nestedListKeyboardService.refresh$.next();\n                this._setAriaAttributes(nestedLevel, lang);\n            },\n            { injector: this._injector }\n        );\n\n        // React to nested items changes\n        this.nestedItems.changes.pipe(startWith(undefined), takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n            const lang = this._langSignal();\n            this._nestedListKeyboardService.refresh$.next();\n            this._setAriaAttributes(nestedLevel, lang);\n        });\n\n        this._handleNestedLevel(nestedLevel);\n    }\n\n    /** @hidden */\n    detectChanges(): void {\n        this._changeDetectionRef.markForCheck();\n    }\n\n    /** @hidden */\n    private _handleNestedLevel(level: number): void {\n        /** Adding class with the nested level */\n        this._elementRef.nativeElement.classList.add('level-' + level);\n    }\n\n    /**\n     * @hidden\n     * Method, that checks how deep is the list element\n     */\n    private _getNestedLevel(): number {\n        let element = this._elementRef.nativeElement;\n        const parentElements: Element[] = [];\n\n        /** Method that gathers all of the parentNode elements of current NestedListDirective element */\n        while (element.parentNode) {\n            parentElements.unshift(element);\n            element = element.parentNode;\n        }\n\n        /** Filter only elements, that has `fd-nested-list` directive attribute */\n        const filteredParentElements = parentElements.filter((_element) => _element.hasAttribute('fd-nested-list'));\n        return filteredParentElements.length;\n    }\n\n    /** @hidden */\n    private _setAriaAttributes(level: number, lang: FdLanguage): void {\n        this.nestedItems.forEach((item, i) => {\n            item._ariaLevel = level;\n            if (!item.linkItem) {\n                return;\n            } else {\n                item.linkItem.ariaDescribedby = this._nestedListHeader?.id || null;\n                item.linkItem._ariaLabel = this._translationResolver.resolve(lang, 'coreNestedList.linkItemAriaLabel', {\n                    itemDetails: item.linkItem.getTitle(),\n                    index: i + 1, // TODO: this property has been deprecated and will be removed from translations\n                    total: this.nestedItems.length, // TODO: this property has been deprecated and will be removed from translations\n                    selectedDescription:\n                        !this._nestedListStateService.selectable && item.linkItem.selected\n                            ? ', ' + this.ariaLabelSelected\n                            : ''\n                });\n            }\n        });\n\n        this._changeDetectionRef.detectChanges();\n    }\n\n    /** @hidden */\n    private _setAccessibilityProperties(level: number): void {\n        if (this._nestedListStateService.condensed && level === 1) {\n            this._ariaRoledescription = this.ariaRoledescriptionMenuBar;\n        }\n\n        if (level > 1 || (this._nestedItemService?.popover && !this._nestedListStateService.condensed)) {\n            this._role = 'group';\n            this._ariaRoledescription = null;\n        }\n\n        if (this._nestedItemService?.popover) {\n            this._ariaHaspopup = 'tree';\n        }\n    }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, ViewChild, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { NestedListContentDirective } from '../nested-content/nested-list-content.directive';\nimport { NestedItemDirective } from '../nested-item/nested-item.directive';\nimport { NestedLinkDirective } from '../nested-link/nested-link.directive';\nimport {\n    NestedListExpandIconComponent,\n    NestedListHeaderDirective,\n    NestedListIconComponent,\n    NestedListTitleDirective\n} from '../nested-list-directives';\nimport { NestedListItem, NestedListModel } from '../nested-list-model';\nimport { NestedListPopoverComponent } from '../nested-list-popover/nested-list-popover.component';\nimport { NestedListDirective } from '../nested-list/nested-list.directive';\n\n/**\n * Component for internal usage, allows to generate the nested list from defined object.\n */\n@Component({\n    selector: 'fd-prepared-nested-list',\n    templateUrl: './prepared-nested-list.component.html',\n    styleUrl: './prepared-nested-list.component.scss',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        NestedListDirective,\n        NestedListHeaderDirective,\n        NestedItemDirective,\n        NestedListPopoverComponent,\n        NestedListContentDirective,\n        NgTemplateOutlet,\n        NestedListExpandIconComponent,\n        forwardRef(() => PreparedNestedListComponent),\n        NestedLinkDirective,\n        RouterLink,\n        NestedListIconComponent,\n        NestedListTitleDirective\n    ]\n})\nexport class PreparedNestedListComponent {\n    /**\n     * @hidden\n     * For internal usage.\n     * Defines if the component is first\n     */\n    @Input()\n    first = true;\n\n    /** Defines if list should be displayed in condensed mode */\n    @Input()\n    condensed = false;\n\n    /** List configuration*/\n    @Input()\n    list: Nullable<NestedListModel>;\n\n    /**\n     * @hidden\n     */\n    @ViewChild(forwardRef(() => NestedListDirective))\n    _nestedListDirective: NestedListDirective;\n\n    /**\n     * In prepared nested list, nested items should be taken as reference of View, not Content.\n     * There is direct reference to these directives here.\n     */\n    get nestedListDirective(): NestedListDirective {\n        return this._nestedListDirective;\n    }\n\n    /** @hidden */\n    _expandedChange(expanded: boolean, item: NestedListItem): void {\n        item.expanded = expanded;\n    }\n}\n","<ul fd-nested-list [textOnly]=\"!!list?.textOnly\">\n    @for (item of list?.items; track item) {\n        @if (item.headerTitle) {\n            <li fd-nested-list-header>\n                {{ item.headerTitle }}\n            </li>\n        } @else {\n            <li fd-nested-list-item [expanded]=\"!!item.expanded\" (expandedChange)=\"_expandedChange($event, item)\">\n                @if (condensed && first && item.list) {\n                    <fd-nested-list-popover [title]=\"item.link?.title || ''\">\n                        <div fd-nested-list-content [selected]=\"!!item.link?.selected\">\n                            <ng-template\n                                [ngTemplateOutlet]=\"link\"\n                                [ngTemplateOutletContext]=\"{ item: item }\"\n                            ></ng-template>\n                            <button fd-nested-list-expand-icon></button>\n                        </div>\n                        @if (item.list) {\n                            <fd-prepared-nested-list [first]=\"false\" [list]=\"item.list\"></fd-prepared-nested-list>\n                        }\n                    </fd-nested-list-popover>\n                }\n                @if (!item.list) {\n                    <ng-template [ngTemplateOutlet]=\"link\" [ngTemplateOutletContext]=\"{ item: item }\"></ng-template>\n                }\n                @if ((!condensed || !first) && item.list) {\n                    <div fd-nested-list-content>\n                        <ng-template [ngTemplateOutlet]=\"link\" [ngTemplateOutletContext]=\"{ item: item }\"></ng-template>\n                        <button fd-nested-list-expand-icon></button>\n                    </div>\n                    @if (item.list) {\n                        <fd-prepared-nested-list [first]=\"false\" [list]=\"item.list\"></fd-prepared-nested-list>\n                    }\n                }\n                <ng-template let-item=\"item\" #link>\n                    @if (item.link) {\n                        <a\n                            fd-nested-list-link\n                            [onClickCallback]=\"item.link.callback\"\n                            [selected]=\"!item.list && item.link.selected\"\n                            [attr.href]=\"item.link.href ? item.link.href : null\"\n                            [routerLink]=\"item.link.routerLink ? item.link.routerLink : []\"\n                        >\n                            @if (item.link.icon) {\n                                <span fd-nested-list-icon [glyph]=\"item.link.icon\"></span>\n                            }\n                            <span fd-nested-list-title>{{ item.link.title }}</span>\n                        </a>\n                    }\n                </ng-template>\n            </li>\n        }\n    }\n</ul>\n","import { NgModule } from '@angular/core';\nimport { MenuKeyboardService } from '@fundamental-ngx/core/menu';\nimport { NestedListContentDirective } from './nested-content/nested-list-content.directive';\nimport { NestedItemDirective } from './nested-item/nested-item.directive';\nimport { NestedLinkDirective } from './nested-link/nested-link.directive';\nimport {\n    NestedListExpandIconComponent,\n    NestedListHeaderDirective,\n    NestedListIconComponent,\n    NestedListTitleDirective\n} from './nested-list-directives';\nimport { NestedListKeyboardService } from './nested-list-keyboard.service';\nimport { NestedListPopoverComponent } from './nested-list-popover/nested-list-popover.component';\nimport { NestedListStateService } from './nested-list-state.service';\nimport { NestedListDirective } from './nested-list/nested-list.directive';\nimport { PreparedNestedListComponent } from './prepared-nested-list/prepared-nested-list.component';\n\nconst components = [\n    NestedListDirective,\n    NestedLinkDirective,\n    NestedItemDirective,\n    NestedListIconComponent,\n    NestedListTitleDirective,\n    NestedListHeaderDirective,\n    NestedListPopoverComponent,\n    PreparedNestedListComponent,\n    NestedListExpandIconComponent,\n    NestedListContentDirective\n];\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [...components],\n    exports: [...components],\n    providers: [MenuKeyboardService, NestedListKeyboardService, NestedListStateService]\n})\nexport class NestedListModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.NestedItemService","i2.NestedListKeyboardService","i3.NestedListStateService"],"mappings":"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"}