{"version":3,"file":"fundamental-ngx-btp-navigation.mjs","sources":["../../../../libs/btp/navigation/models/navigation-content-container.class.ts","../../../../libs/btp/navigation/models/navigation.class.ts","../../../../libs/btp/navigation/models/navigation-list-item.class.ts","../../../../libs/btp/navigation/services/navigation.service.ts","../../../../libs/btp/navigation/components/navigation-list/navigation-list.component.ts","../../../../libs/btp/navigation/components/navigation-list/navigation-list.component.html","../../../../libs/btp/navigation/components/navigation-end/navigation-content-end.component.ts","../../../../libs/btp/navigation/directives/navigation-list-item-ref.directive.ts","../../../../libs/btp/navigation/models/navigation-item-link.class.ts","../../../../libs/btp/navigation/components/navigation-link/navigation-link.component.ts","../../../../libs/btp/navigation/components/navigation-link/navigation-link.component.html","../../../../libs/btp/navigation/components/navigation-item/navigation-list-item.component.ts","../../../../libs/btp/navigation/components/navigation-item/navigation-list-item.component.html","../../../../libs/btp/navigation/components/navigation-more-button/navigation-more-button.component.ts","../../../../libs/btp/navigation/components/navigation-more-button/navigation-more-button.component.html","../../../../libs/btp/navigation/components/navigation-start/navigation-content-start.component.ts","../../../../libs/btp/navigation/components/navigation-start/navigation-content-start.component.html","../../../../libs/btp/navigation/components/navigation/navigation.component.ts","../../../../libs/btp/navigation/components/navigation/navigation.component.html","../../../../libs/btp/navigation/models/navigation-data-source-item.model.ts","../../../../libs/btp/navigation/directives/navigation-list-data-source.directive.ts","../../../../libs/btp/navigation/index.ts","../../../../libs/btp/navigation/fundamental-ngx-btp-navigation.ts"],"sourcesContent":["import { DestroyRef, Signal, inject, signal } from '@angular/core';\nimport { FdbNavigationListItem } from './navigation-list-item.class';\n\nexport abstract class FdbNavigationContentContainer {\n    /**\n     * List containing child list items that needs to be rendered. Can be different than `allListItems$`.\n     */\n    abstract listItems$: Signal<FdbNavigationListItem[]>;\n    /**\n     * Container placement in Navigation component.\n     */\n    abstract placement: 'start' | 'end';\n    /**\n     * List containing all child navigation list items.\n     */\n    readonly allListItems$ = signal<FdbNavigationListItem[]>([]);\n\n    /** @hidden */\n    protected readonly _destroyRef = inject(DestroyRef);\n\n    /**\n     * @hidden\n     * List of registered navigation list items.\n     * Used only with data-driven navigation component.\n     */\n    private readonly _registeredListItems: FdbNavigationListItem[] = [];\n\n    /**\n     * Registers navigation list item.\n     */\n    registerItem(item: FdbNavigationListItem): void {\n        if (this._registeredListItems.indexOf(item) > -1) {\n            return;\n        }\n\n        this._registeredListItems.push(item);\n\n        this.allListItems$.set(this._registeredListItems);\n    }\n\n    /**\n     * Unregisters navigation list item.\n     */\n    unregisterItem(item: FdbNavigationListItem): void {\n        const foundIndex = this._registeredListItems.indexOf(item);\n        if (foundIndex === -1) {\n            return;\n        }\n\n        this._registeredListItems.splice(foundIndex, 1);\n\n        this.allListItems$.set(this._registeredListItems);\n    }\n}\n","import { Signal, WritableSignal } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { Subject } from 'rxjs';\nimport { NavigationService } from '../services/navigation.service';\nimport { FdbNavigationListItem } from './navigation-list-item.class';\n\nexport abstract class FdbNavigation {\n    abstract classList$: Signal<string[]>;\n    abstract isSnapped$: Signal<boolean>;\n    abstract showMoreButton$: WritableSignal<Nullable<FdbNavigationListItem>>;\n    abstract _navigationItemRenderer: Signal<any>;\n    abstract closeAllPopups: Subject<void>;\n    abstract selectionMode: 'router' | 'click';\n    abstract service: NavigationService;\n    abstract setActiveItem(value: FdbNavigationListItem | null): void;\n    abstract getActiveItem(): FdbNavigationListItem | null;\n    abstract closePopups(): void;\n}\n","import { FocusOrigin, FocusableOption } from '@angular/cdk/a11y';\nimport { Signal, TemplateRef, computed, inject, signal } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { NavigationListItemMarkerDirective } from '../components/navigation-item/navigation-list-item.component';\nimport { NavigationListComponent } from '../components/navigation-list/navigation-list.component';\nimport { FdbNavigationContentContainer } from './navigation-content-container.class';\nimport { FdbNavigationItemLink } from './navigation-item-link.class';\nimport { FdbNavigation } from './navigation.class';\n\nexport const LIST_ITEM_CLASS = 'fd-navigation__list-item';\n\nexport abstract class FdbNavigationListItem implements FocusableOption {\n    abstract type: 'item' | 'showMore';\n    abstract separator: boolean;\n    abstract spacer: boolean;\n    abstract home: boolean;\n    abstract isVisible$: Signal<boolean>;\n    abstract skipNavigation: boolean;\n    abstract placementContainer?: FdbNavigationContentContainer;\n    abstract parentListItemComponent: FdbNavigationListItemCmp | null;\n    abstract parentListItem: FdbNavigationListItem | null;\n    abstract class$: Signal<string>;\n    abstract selected$: Signal<boolean>;\n    abstract id: Signal<string>;\n    abstract focus(origin?: FocusOrigin | undefined): void;\n    abstract toggleExpanded(): void;\n    abstract keyboardExpanded(shouldExpand: boolean): void;\n    abstract popoverLinkArrowDown(): void;\n    abstract registerLink(link: FdbNavigationItemLink): void;\n    abstract unregisterLink(link: FdbNavigationItemLink): void;\n    abstract registerChildList(list: NavigationListComponent): void;\n    abstract unregisterChildList(list: NavigationListComponent): void;\n    abstract handleHorizontalNavigation(isExpand: boolean): void;\n    abstract focusLink(closePopover?: boolean): void;\n    abstract canItemBeSelected(): boolean;\n\n    /** Marker directive that is attached to the rendered list item. */\n    marker: Nullable<NavigationListItemMarkerDirective>;\n\n    /** @hidden */\n    readonly listItems$ = signal<Nullable<FdbNavigationListItem>[]>([]);\n\n    /** Whether item has child items. */\n    readonly hasChildren$ = computed(() => this.listItems$().length > 0);\n\n    /** Whether popover is open. Applicable for snapped navigation state. */\n    readonly popoverOpen$ = signal(false);\n\n    /**\n     * Link reference.\n     */\n    readonly link$ = signal<Nullable<FdbNavigationItemLink>>(null);\n\n    /**\n     * Item content renderer.\n     */\n    readonly renderer$ = signal<TemplateRef<any> | null>(null);\n\n    /**\n     * Whether the item should be hidden under \"More\" button.\n     */\n    readonly hidden$ = signal(false);\n\n    /**\n     * Whether the item is in overflow menu. Applicable only when the navigation is in snapped mode.\n     */\n    readonly isOverflow$ = computed(() => this.navigation.isSnapped$() && this.hidden$());\n\n    /**\n     * Item Hierarchy level in navigation tree.\n     */\n    readonly level$ = computed(() => (this.parentListItem?.level$() || 0) + 1);\n\n    /**\n     * Normalized level. Calculated based on location of the item, whether it is inside group or not.\n     * Can be different than `level$`.\n     */\n    readonly normalizedLevel$ = computed(() => {\n        if (!this.parentListItem) {\n            return this.inGroup$() ? this.level$() : this.level$() + 1;\n        }\n\n        return this.parentListItem.normalizedLevel$() + 1;\n    });\n\n    /**\n     * Whether the List item should be marked as selected.\n     * Based on a `snapped` state will determine whether to highlight the link if it, or it's child links are active.\n     */\n    readonly isActiveAttr$ = computed(\n        () =>\n            this.selected$() ||\n            this.link$()?.isActive$() ||\n            (this.navigation.isSnapped$() && this.listItems$().some((item) => item?.isActiveAttr$()))\n    );\n\n    /**\n     * Whether the item is inside group.\n     */\n    readonly inGroup$ = computed(() => (this.parentListItem ? this.parentListItem.inGroup$() : this.isGroup$()));\n\n    /** @hidden */\n    readonly expanded$ = signal<boolean>(false);\n\n    /** @hidden */\n    readonly isGroup$ = signal(false);\n\n    /** @hidden */\n    readonly disabled$ = signal(false);\n\n    /** Navigation container reference. */\n    readonly navigation = inject(FdbNavigation);\n}\n\nexport abstract class FdbNavigationListItemCmp extends FdbNavigationListItem {}\n","import { Injectable, signal } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { FdbNavigationListItem } from '../models/navigation-list-item.class';\n\n@Injectable()\nexport class NavigationService {\n    /** Currently active list item. */\n    currentItem$ = new Subject<FdbNavigationListItem>();\n\n    /** Currently selected item (for click-based selection mode). */\n    selectedItem$ = signal<FdbNavigationListItem | null>(null);\n\n    /** Subject to notify when an overflow item is selected and should be promoted. */\n    overflowItemSelected$ = new Subject<FdbNavigationListItem>();\n\n    /** Subject to notify when selection changes to clear manual selections */\n    selectionChanged$ = new Subject<FdbNavigationListItem | null>();\n\n    /**\n     * Set the selected item.\n     * @param item The item to select, or null to clear selection.\n     */\n    setSelectedItem(item: FdbNavigationListItem | null): void {\n        this.selectedItem$.set(item);\n\n        // Notify that selection has changed so other items can clear their manual selection\n        this.selectionChanged$.next(item);\n\n        // Handle smart overflow promotion logic\n        if (item) {\n            // Case 1: Child items promote their parent when the parent is in overflow\n            if (item.parentListItem && item.parentListItem.isOverflow$()) {\n                this.overflowItemSelected$.next(item.parentListItem);\n            }\n            // Case 2: Regular overflow items promote themselves\n            else if (item.isOverflow$()) {\n                this.overflowItemSelected$.next(item);\n            }\n        }\n    }\n\n    /**\n     * Get the currently selected item.\n     * @returns The currently selected item, or null if none is selected.\n     */\n    getSelectedItem(): FdbNavigationListItem | null {\n        return this.selectedItem$();\n    }\n}\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    DestroyRef,\n    ElementRef,\n    EventEmitter,\n    HostBinding,\n    HostListener,\n    Input,\n    OnChanges,\n    OnDestroy,\n    Output,\n    Renderer2,\n    SimpleChanges,\n    ViewEncapsulation,\n    booleanAttribute,\n    computed,\n    effect,\n    inject,\n    signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KeyUtil, Nullable, RtlService } from '@fundamental-ngx/cdk';\nimport { FdbNavigationListItem } from '../../models/navigation-list-item.class';\nimport { FdbNavigation } from '../../models/navigation.class';\nimport { NavigationService } from '../../services/navigation.service';\n\n@Component({\n    // eslint-disable-next-line @angular-eslint/component-selector\n    selector: 'ul[fdb-navigation-list]',\n    imports: [NgTemplateOutlet],\n    templateUrl: './navigation-list.component.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        class: 'fd-navigation__list',\n        tabindex: '-1'\n    }\n})\nexport class NavigationListComponent implements OnChanges, AfterViewInit, OnDestroy {\n    /** @hidden */\n    // eslint-disable-next-line @angular-eslint/no-input-rename\n    @Input('listItems')\n    set _listItems(value: Nullable<FdbNavigationListItem>[]) {\n        this._listItemsArray = value;\n        this.listItems$.set(value);\n        this._setupKeyManager();\n    }\n\n    get _listItems(): Nullable<FdbNavigationListItem>[] {\n        return this._listItemsArray;\n    }\n\n    /** List Role. */\n    @HostBinding('attr.role')\n    get _role(): 'tree' | 'menubar' | 'group' | 'menu' {\n        return this.computedRole();\n    }\n\n    @Input()\n    role: 'tree' | 'menubar' | 'group' | 'menu' = 'tree';\n\n    /**\n     * aria-label for the navigation list.\n     */\n    // eslint-disable-next-line @angular-eslint/no-input-rename\n    @Input('ariaLabel')\n    ariaLabel: Nullable<string> = null;\n\n    /**\n     * aria-roledescription for the navigation list.\n     */\n    // eslint-disable-next-line @angular-eslint/no-input-rename\n    @Input('ariaRoleDescription')\n    @HostBinding('attr.aria-roledescription')\n    ariaRoleDescription: Nullable<string> = null;\n\n    /** Whether the list is for parent items. */\n    @HostBinding('class.fd-navigation__list--parent-items')\n    @Input({ transform: booleanAttribute })\n    parentItems = false;\n\n    /** Whether the list is for child items. */\n    @HostBinding('class.fd-navigation__list--child-items')\n    @Input({ transform: booleanAttribute })\n    childItems = false;\n\n    /** Whether the list should not grow in height. */\n    @HostBinding('class.fd-navigation__list--no-grow')\n    @Input({ transform: booleanAttribute })\n    noGrow = false;\n\n    /** Whether the list should handle keyboard navigation. */\n    @Input({ transform: booleanAttribute })\n    withKeyboardNavigation = false;\n\n    /** Reference to the More button component if this list is inside a More button popover. */\n    @Input()\n    moreButtonRef: any;\n\n    /** Event emitted when user tries to navigate to the item before the list itself. */\n    @Output()\n    focusBefore = new EventEmitter<void>();\n\n    /** Event emitted when user tries to navigate to the item after the list itself. */\n    @Output()\n    focusAfter = new EventEmitter<void>();\n\n    /** Computed role based on navigation state and input role. */\n    readonly computedRole = computed(() => {\n        // Prioritize explicit role input\n        if (this.role && this.role !== 'tree') {\n            return this.role;\n        }\n\n        // Check if this is in an overflow menu context (More button popover)\n        const navigation = this._navigation;\n        if (navigation?.isSnapped$() && this.moreButtonRef) {\n            // In overflow menu, lists should have role=\"menu\"\n            return 'menu';\n        }\n\n        // If this is a child items list or parent items list, it should have role=\"group\"\n        if (this.childItems || this.parentItems) {\n            return 'group';\n        }\n\n        if (navigation?.isSnapped$()) {\n            return 'menubar';\n        }\n        return this.role || 'tree';\n    });\n\n    /** Computed aria-label for group lists based on parent item's text content. */\n    readonly computedAriaLabel = computed(() => {\n        try {\n            // Only provide aria-label for group role lists\n            if (this.computedRole() === 'group' && this._listItem) {\n                const parentLink = this._listItem.link$();\n                if (parentLink?.elementRef?.nativeElement) {\n                    // Get text content directly from the navigation link element\n                    // The .fd-navigation__text span contains the projected content, but we can access\n                    // the text content directly from the link element itself\n                    const linkElement = parentLink.elementRef.nativeElement;\n                    const textContent = linkElement.textContent?.trim();\n                    if (textContent) {\n                        return textContent;\n                    }\n                }\n            }\n            return this.ariaLabel;\n        } catch {\n            // Fallback to default ariaLabel if DOM is not ready or there's any error\n            return this.ariaLabel;\n        }\n    });\n\n    /** List items. */\n    readonly listItems$ = signal<Nullable<FdbNavigationListItem>[]>([]);\n\n    /** @hidden */\n    private _listItemsArray: Nullable<FdbNavigationListItem>[] = [];\n\n    /** @hidden */\n    private _keyManager: Nullable<FocusKeyManager<FdbNavigationListItem>>;\n\n    /** @hidden */\n    private readonly _navigationService = inject(NavigationService, {\n        optional: true\n    });\n\n    /**\n     * @hidden\n     * Parent navigation component.\n     */\n    private readonly _navigation = inject(FdbNavigation, {\n        optional: true\n    });\n\n    /**\n     * @hidden\n     * Parent list item.\n     */\n    private readonly _listItem = inject(FdbNavigationListItem, {\n        optional: true\n    });\n\n    /** @hidden */\n    private readonly _rtlService = inject(RtlService, {\n        optional: true\n    });\n\n    /** @hidden */\n    private readonly _destroyRef = inject(DestroyRef);\n\n    /** @hidden */\n    private get _activeItemIndex(): number {\n        return this._keyManager?.activeItemIndex ?? -1;\n    }\n\n    /** @hidden */\n    private _renderer = inject(Renderer2);\n\n    /** @hidden */\n    private _elementRef = inject(ElementRef);\n\n    /** @hidden */\n    private _ariaLabelEffect = effect(() => {\n        // This effect runs whenever the signals change, but we need to ensure\n        // it doesn't run during the initial change detection cycle\n        setTimeout(() => {\n            this._updateAriaLabel();\n        }, 0);\n    });\n\n    /** @hidden */\n    constructor() {\n        this._listItem?.registerChildList(this);\n    }\n\n    /**\n     * @hidden\n     * Handler for keyboard navigation.\n     */\n    @HostListener('keydown', ['$event'])\n    _keydownHandler(event: KeyboardEvent): void {\n        if (!this.withKeyboardNavigation) {\n            return;\n        }\n        if (KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW])) {\n            event.stopImmediatePropagation();\n        }\n        if (KeyUtil.isKeyCode(event, UP_ARROW) && this._activeItemIndex <= 0) {\n            this.focusBefore.emit();\n            return;\n        }\n        if (KeyUtil.isKeyCode(event, DOWN_ARROW) && this._activeItemIndex === this._listItemsArray.length - 1) {\n            this.focusAfter.emit();\n            return;\n        }\n\n        if (KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW])) {\n            this._keyManager?.onKeydown(event);\n            return;\n        }\n\n        if (!KeyUtil.isKeyCode(event, [LEFT_ARROW, RIGHT_ARROW])) {\n            return;\n        }\n\n        // We need to cancel event bubbling since we may have parent list that will also try to focus it's parent list item.\n        event.stopImmediatePropagation();\n\n        // All navigation lists use the same swapped arrow logic:\n        // RIGHT arrow = expand action, LEFT arrow = collapse/go back action\n        const isExpandAction = KeyUtil.isKeyCode(event, this._rtlService?.rtl() ? LEFT_ARROW : RIGHT_ARROW);\n\n        if (!isExpandAction) {\n            if (this.moreButtonRef) {\n                if (this._listItem) {\n                    this._listItem.focusLink(true);\n                } else {\n                    this.moreButtonRef.popoverOpen$.set(false);\n                    this.moreButtonRef.focusLink();\n                }\n            } else {\n                this._listItem?.focusLink(true);\n            }\n        }\n    }\n\n    /** @hidden */\n    setActiveItemIndex(index: number): void {\n        this._keyManager?.setActiveItem(index);\n    }\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        this._navigationService?.currentItem$.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((item) => {\n            this._keyManager?.setActiveItem(item);\n        });\n    }\n\n    /** @hidden */\n    ngOnChanges(changes: SimpleChanges): void {\n        if ('withKeyboardNavigation' in changes) {\n            this._setupKeyManager();\n        }\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this._listItem?.unregisterChildList(this);\n        this._keyManager?.destroy();\n    }\n\n    /**\n     * Updates aria-label attribute manually to avoid expression changed errors\n     */\n    private _updateAriaLabel(): void {\n        try {\n            const ariaLabel = this.computedAriaLabel();\n            if (ariaLabel !== null && ariaLabel !== undefined) {\n                this._renderer.setAttribute(this._elementRef.nativeElement, 'aria-label', ariaLabel);\n            } else {\n                this._renderer.removeAttribute(this._elementRef.nativeElement, 'aria-label');\n            }\n        } catch {\n            if (this.ariaLabel) {\n                this._renderer.setAttribute(this._elementRef.nativeElement, 'aria-label', this.ariaLabel);\n            }\n        }\n    }\n\n    /** @hidden */\n    private _setupKeyManager(): void {\n        this._keyManager?.destroy();\n\n        if (!this.withKeyboardNavigation) {\n            return;\n        }\n\n        this._keyManager = new FocusKeyManager(this._listItemsArray as FdbNavigationListItem[])\n            .withVerticalOrientation()\n            .skipPredicate((item) => item.skipNavigation);\n    }\n}\n","@for (item of listItems$(); track item) {\n    @if (item) {\n        <li [class]=\"item.class$()\" role=\"none\">\n            <ng-template [ngTemplateOutlet]=\"item.renderer$()\"></ng-template>\n        </li>\n        <!-- Add separator after home list item. -->\n        @if (item.home) {\n            <li class=\"fd-navigation__list-item fd-navigation__list-item--separator\" role=\"separator\"></li>\n        }\n    }\n}\n<!-- Keep this for \"More\" button -->\n<ng-content></ng-content>\n","import {\n    AfterContentInit,\n    ChangeDetectionStrategy,\n    Component,\n    ContentChildren,\n    Input,\n    QueryList,\n    ViewEncapsulation,\n    signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Nullable } from '@fundamental-ngx/cdk';\nimport { asyncScheduler, filter, observeOn, startWith } from 'rxjs';\nimport { FdbNavigationContentContainer } from '../../models/navigation-content-container.class';\nimport { FdbNavigationListItem } from '../../models/navigation-list-item.class';\nimport { NavigationListComponent } from '../navigation-list/navigation-list.component';\n\n@Component({\n    selector: 'fdb-navigation-content-end',\n    template: `<ul\n        fdb-navigation-list\n        [listItems]=\"allListItems$()\"\n        [ariaLabel]=\"ariaLabel\"\n        [ariaRoleDescription]=\"ariaRoleDescription\"\n    ></ul>`,\n    imports: [NavigationListComponent],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        class: 'fd-navigation__container fd-navigation__container--bottom'\n    },\n    providers: [\n        {\n            provide: FdbNavigationContentContainer,\n            useExisting: NavigationContentEndComponent\n        }\n    ]\n})\nexport class NavigationContentEndComponent extends FdbNavigationContentContainer implements AfterContentInit {\n    /** Whether the list items are content-projected. Used only with data-driven navigation. */\n    @Input()\n    contentProjected = true;\n\n    /**\n     * aria-label for the navigation list.\n     */\n    @Input()\n    ariaLabel: Nullable<string> = null;\n\n    /**\n     * aria-roledescription for the navigation list.\n     */\n    @Input()\n    ariaRoleDescription: Nullable<string> = null;\n\n    /** @hidden */\n    @ContentChildren(FdbNavigationListItem, { descendants: false })\n    private readonly _listItems: QueryList<FdbNavigationListItem>;\n\n    /** @hidden */\n    readonly listItems$ = signal<FdbNavigationListItem[]>([]);\n\n    /** Whether the container is placed on the start position, or the end position of the navigation. */\n    readonly placement: 'start' | 'end' = 'end';\n\n    /** @hidden */\n    ngAfterContentInit(): void {\n        this._listItems.changes\n            .pipe(\n                startWith(null),\n                observeOn(asyncScheduler),\n                filter(() => this.contentProjected),\n                takeUntilDestroyed(this._destroyRef)\n            )\n            .subscribe(() => {\n                this.allListItems$.set(this._listItems.toArray());\n                this.listItems$.set(this._listItems.toArray());\n            });\n    }\n}\n","import { Directive, Injector, Input, OnDestroy, TemplateRef, inject, signal } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { FdbNavigationContentContainer } from '../models/navigation-content-container.class';\nimport { FdbNavigationListItem } from '../models/navigation-list-item.class';\n\n@Directive({\n    selector: '[fdbNavigationListItem]',\n    standalone: true,\n    providers: [\n        {\n            provide: FdbNavigationListItem,\n            useExisting: NavigationListItemDirective\n        }\n    ],\n    exportAs: 'fdbListItem'\n})\nexport class NavigationListItemDirective implements OnDestroy {\n    /**\n     * Injector used for rendering child list item component.\n     * Allows list item component to inject parent list container and register itself as a child item.\n     */\n    readonly injector = Injector.create({ providers: [], parent: inject(Injector) });\n\n    /** @hidden */\n    readonly parentNavListItemDirective = inject(NavigationListItemDirective, {\n        skipSelf: true,\n        optional: true\n    });\n\n    /**\n     * Set of child directives.\n     * Used to build hierarchy tree.\n     */\n    readonly childDirectives = signal(new Set<NavigationListItemDirective>());\n\n    /**\n     * @hidden\n     * Navigation list item component instance.\n     */\n    _item: Nullable<FdbNavigationListItem>;\n\n    /** @hidden */\n    private readonly _contentContainer = inject(FdbNavigationContentContainer, {\n        optional: true\n    });\n\n    /** @hidden */\n    constructor() {\n        this.parentNavListItemDirective?.registerChildDirective(this);\n    }\n\n    /**\n     * Registers child list item component for further usage.\n     * @param item\n     */\n    registerItem(item: FdbNavigationListItem): void {\n        this._item = item;\n        this._contentContainer?.registerItem(this._item);\n    }\n\n    /**\n     * Removes child list item.\n     */\n    unregisterItem(): void {\n        this._item && this._contentContainer?.unregisterItem(this._item);\n        this._item = null;\n    }\n\n    /**\n     * Registers child directive.\n     */\n    registerChildDirective(directive: NavigationListItemDirective): void {\n        this.childDirectives.update((list) => list.add(directive));\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this._item && this._contentContainer?.unregisterItem(this._item);\n        this._item = null;\n        this.childDirectives().clear();\n    }\n}\n\n@Directive({\n    selector: '[fdbNavigationListItemRef]',\n    standalone: true\n})\nexport class NavigationListItemRefDirective<T = any> {\n    /** Type alias. */\n    @Input()\n    fdbNavigationListItemRefAs: T;\n    /** Template reference. */\n    readonly templateRef = inject<TemplateRef<T>>(TemplateRef);\n\n    /** @hidden */\n    static ngTemplateContextGuard<T>(dir: NavigationListItemRefDirective<T>, ctx: unknown): ctx is { $implicit: T } {\n        return true;\n    }\n}\n","import { ElementRef, Signal } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { HasElementRef, Nullable } from '@fundamental-ngx/cdk/utils';\n\nexport abstract class FdbNavigationItemLink implements HasElementRef {\n    abstract elementRef: ElementRef<HTMLLinkElement>;\n    abstract inPopover: boolean;\n    abstract isActive$: Signal<boolean | undefined>;\n    abstract routerLink: Nullable<RouterLink>;\n}\n","import { DOWN_ARROW, ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE } from '@angular/cdk/keycodes';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    Directive,\n    ElementRef,\n    HostListener,\n    Input,\n    OnDestroy,\n    Renderer2,\n    Signal,\n    TemplateRef,\n    ViewEncapsulation,\n    booleanAttribute,\n    effect,\n    inject\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { KeyUtil, Nullable, RtlService } from '@fundamental-ngx/cdk';\nimport { FD_DEFAULT_ICON_FONT_FAMILY, IconComponent, IconFont } from '@fundamental-ngx/core/icon';\nimport { of, startWith } from 'rxjs';\nimport { FdbNavigationItemLink } from '../../models/navigation-item-link.class';\nimport { FdbNavigationListItem } from '../../models/navigation-list-item.class';\nimport { FdbNavigation } from '../../models/navigation.class';\n\n@Directive({\n    selector: '[fdbNavigationLinkRef]',\n    standalone: true\n})\nexport class NavigationLinkRefDirective {\n    /** Link template ref. */\n    readonly templateRef = inject(TemplateRef);\n}\n\n@Component({\n    // eslint-disable-next-line @angular-eslint/component-selector\n    selector: 'a[fdb-navigation-link], button[fdb-navigation-link]',\n    imports: [IconComponent],\n    hostDirectives: [RouterLinkActive],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    providers: [\n        {\n            provide: FdbNavigationItemLink,\n            useExisting: NavigationLinkComponent\n        }\n    ],\n    host: {\n        class: 'fd-navigation__link',\n        '[attr.role]': 'quickCreate ? \"button\" : \"link\"'\n    },\n    templateUrl: './navigation-link.component.html'\n})\nexport class NavigationLinkComponent extends FdbNavigationItemLink implements OnDestroy {\n    /** @hidden */\n    @Input()\n    class: Nullable<string>;\n\n    /** Link glyph */\n    @Input()\n    glyph: Nullable<string>;\n\n    /** Glyph font family */\n    @Input()\n    glyphFont: IconFont = FD_DEFAULT_ICON_FONT_FAMILY;\n\n    /** Whether the link is for the external resource. */\n    @Input()\n    external = false;\n\n    /** Whether it's a quick create button. */\n    @Input({ transform: booleanAttribute })\n    quickCreate = false;\n\n    /** Whether the link is inside popover. */\n    get inPopover(): boolean {\n        return !!this.elementRef.nativeElement.parentElement?.classList.contains('fd-navigation__item--title');\n    }\n\n    /** Element reference. */\n    readonly elementRef = inject<ElementRef<HTMLLinkElement>>(ElementRef);\n\n    /** @hidden */\n    readonly isActive$: Signal<boolean | undefined>;\n\n    /** @hidden */\n    readonly _listItemComponent = inject(FdbNavigationListItem, {\n        optional: true\n    });\n\n    /** Router link reference. Used to determine whether the list item should be rendered with external expansion button. */\n    readonly routerLink = inject(RouterLink, {\n        optional: true,\n        self: true\n    });\n\n    /** @hidden */\n    private readonly _routerLinkActive = inject(RouterLinkActive, {\n        optional: true,\n        self: true\n    });\n\n    /** @hidden */\n    private readonly _rtl = inject(RtlService, {\n        optional: true\n    });\n\n    /** @hidden */\n    private readonly _navigation = inject(FdbNavigation);\n\n    /** @hidden */\n    private _renderer = inject(Renderer2);\n\n    /** @hidden */\n    private _tabIndexEffect = effect(() => {\n        // Track all the signals that affect tabindex computation\n        this._navigation.getActiveItem(); // Track active item changes\n        const isParentPopoverOpen = this._listItemComponent?.popoverOpen$();\n        const isGrandparentPopoverOpen = this._listItemComponent?.parentListItem?.popoverOpen$();\n\n        const hasOpenPopover = isParentPopoverOpen || isGrandparentPopoverOpen;\n\n        if (hasOpenPopover) {\n            // For popover cases, update immediately to ensure tabindex is set before focus management\n            this._updateTabIndex();\n        } else {\n            // For other cases, use setTimeout to avoid expression changed errors\n            setTimeout(() => {\n                this._updateTabIndex();\n            }, 0);\n        }\n    });\n\n    /** @hidden */\n    constructor() {\n        super();\n        this._listItemComponent?.registerLink(this);\n        this.isActive$ = toSignal(\n            this._routerLinkActive?.isActiveChange.pipe(startWith(this._routerLinkActive.isActive)) || of(false)\n        );\n    }\n\n    /** @hidden */\n    @HostListener('click', ['$event'])\n    protected _clickHandler(event: Event): void {\n        // Check if this is a NavigationMoreButtonComponent (More button itself)\n        if (\n            this._listItemComponent &&\n            'type' in this._listItemComponent &&\n            (this._listItemComponent as any).type === 'showMore'\n        ) {\n            return;\n        }\n\n        const disabled = this._listItemComponent?.disabled$?.() || false;\n\n        if (disabled) {\n            event.preventDefault();\n            event.stopPropagation();\n            return;\n        }\n        if (this.inPopover || !this._listItemComponent?.isVisible$() || this._listItemComponent?.isOverflow$()) {\n            this._navigation.closePopups();\n        }\n\n        if (this.routerLink) {\n            return;\n        }\n\n        // Handle selection directly if in click mode\n        if (this._navigation.selectionMode === 'click' && this._listItemComponent) {\n            const canSelect = this._canItemBeSelected();\n\n            if (canSelect) {\n                this._navigation.service.setSelectedItem(this._listItemComponent);\n            } else {\n                // Handle expansion for items with children\n                this._listItemComponent?.toggleExpanded();\n            }\n        } else {\n            // Handle expansion for items with children\n            this._listItemComponent?.toggleExpanded();\n        }\n    }\n\n    /** @hidden */\n    @HostListener('keydown', ['$event'])\n    protected _keyDownHandler(event: Event): void {\n        const keyboardEvent = event as KeyboardEvent;\n        const isDisabled = this._listItemComponent?.disabled$?.() || false;\n        if (isDisabled) {\n            return;\n        }\n\n        // Handle Space and Enter for selection (same as click behavior)\n        if (KeyUtil.isKeyCode(keyboardEvent, [SPACE, ENTER])) {\n            // Check if this is a NavigationMoreButtonComponent (More button itself)\n            if (\n                this._listItemComponent &&\n                'type' in this._listItemComponent &&\n                (this._listItemComponent as any).type === 'showMore'\n            ) {\n                return;\n            }\n\n            // Prevent default scrolling behavior for Space\n            keyboardEvent.preventDefault();\n\n            if (this.inPopover || !this._listItemComponent?.isVisible$() || this._listItemComponent?.isOverflow$()) {\n                this._navigation.closePopups();\n            }\n\n            // Ignore if link has URL applied to it (let router handle it)\n            if (this.routerLink) {\n                return;\n            }\n\n            // Handle selection directly if in click mode\n            if (this._navigation.selectionMode === 'click' && this._listItemComponent) {\n                const canSelect = this._canItemBeSelected();\n\n                if (canSelect) {\n                    this._navigation.service.setSelectedItem(this._listItemComponent);\n                } else {\n                    // Handle expansion for items with children\n                    this._listItemComponent?.toggleExpanded();\n                }\n            } else {\n                // Handle expansion for items with children\n                this._listItemComponent?.toggleExpanded();\n            }\n            return;\n        }\n\n        if (this.inPopover && KeyUtil.isKeyCode(keyboardEvent, DOWN_ARROW)) {\n            this._listItemComponent?.popoverLinkArrowDown();\n            return;\n        }\n\n        if (!KeyUtil.isKeyCode(keyboardEvent, [LEFT_ARROW, RIGHT_ARROW])) {\n            return;\n        }\n\n        // Skip keyboard expansion for More buttons - they handle their own keyboard events\n        if ((this._listItemComponent as any).type === 'showMore') {\n            return;\n        }\n\n        const expansionKey = this._rtl?.rtl() ? LEFT_ARROW : RIGHT_ARROW;\n\n        this._listItemComponent?.keyboardExpanded(KeyUtil.isKeyCode(keyboardEvent, expansionKey));\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this._listItemComponent?.unregisterLink(this);\n    }\n\n    /** @hidden */\n    private _updateTabIndex(): void {\n        try {\n            // Check if this link should have tabindex=0\n            const isActiveItem = this._navigation.getActiveItem()?.link$() === this;\n\n            // Check if any ancestor has an open popover\n            const isParentPopoverOpen = this._listItemComponent?.popoverOpen$();\n            const isGrandparentPopoverOpen = this._listItemComponent?.parentListItem?.popoverOpen$();\n\n            // Check if the navigation is inside any popover body (not just navigation item popovers)\n            const isInsidePopoverBody = this.elementRef.nativeElement.closest('.fd-popover__body');\n\n            // When a popover is open, all links in the popover hierarchy should be focusable\n            if (isParentPopoverOpen || isGrandparentPopoverOpen || isInsidePopoverBody) {\n                // All links in popover context should be focusable (except disabled ones)\n                const tabIndex = 0;\n                this._renderer.setAttribute(this.elementRef.nativeElement, 'tabindex', tabIndex.toString());\n            } else {\n                // Normal case: active item gets tabindex=0, others get -1\n                const tabIndex = isActiveItem ? 0 : -1;\n                this._renderer.setAttribute(this.elementRef.nativeElement, 'tabindex', tabIndex.toString());\n            }\n        } catch {\n            // Fallback to -1 if there's any issue during evaluation\n            this._renderer.setAttribute(this.elementRef.nativeElement, 'tabindex', '-1');\n        }\n    }\n\n    /** @hidden */\n    private _canItemBeSelected(): boolean {\n        if (!this._listItemComponent) {\n            return false;\n        }\n\n        // Group items (headers) cannot be selected\n        if (this._listItemComponent.isGroup$()) {\n            return false;\n        }\n\n        // Items with children that don't have a router link cannot be selected\n        // (they should only expand/collapse)\n        if (this._listItemComponent.hasChildren$() && !this.routerLink) {\n            return false;\n        }\n\n        // Separator and spacer items cannot be selected\n        if (this._listItemComponent.separator || this._listItemComponent.spacer) {\n            return false;\n        }\n\n        // All other items (leaf items and items with both links and children) can be selected\n        return true;\n    }\n}\n","@if (glyph) {\n    <fd-icon\n        [glyph]=\"glyph\"\n        [font]=\"glyphFont\"\n        class=\"fd-navigation__icon\"\n        [attr.role]=\"'presentation'\"\n        [ariaHidden]=\"true\"\n    ></fd-icon>\n}\n<span class=\"fd-navigation__text\">\n    <ng-content></ng-content>\n</span>\n@if (external) {\n    <span\n        class=\"fd-navigation__external-link-indicator\"\n        role=\"presentation\"\n        aria-hidden=\"true\"\n        aria-label=\"external link indicator\"\n    ></span>\n}\n<span\n    class=\"fd-navigation__selection-indicator\"\n    role=\"presentation\"\n    aria-hidden=\"true\"\n    aria-label=\"selection indicator\"\n>\n</span>\n@if (_listItemComponent?.hasChildren$() && !inPopover && !routerLink) {\n    <span\n        class=\"fd-navigation__has-children-indicator\"\n        role=\"presentation\"\n        aria-hidden=\"true\"\n        aria-label=\"has children indicator, expanded\"\n    >\n    </span>\n}\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport { DOWN_ARROW, ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n    afterNextRender,\n    AfterViewInit,\n    booleanAttribute,\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    ContentChild,\n    ContentChildren,\n    DestroyRef,\n    Directive,\n    effect,\n    ElementRef,\n    inject,\n    Injector,\n    Input,\n    input,\n    OnDestroy,\n    QueryList,\n    signal,\n    TemplateRef,\n    ViewChild,\n    viewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { HasElementRef, KeyUtil, Nullable, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { PopoverBodyComponent, PopoverComponent } from '@fundamental-ngx/core/popover';\nimport { Placement } from '@fundamental-ngx/core/shared';\nimport { FD_LANGUAGE_SIGNAL, TranslationResolver } from '@fundamental-ngx/i18n';\nimport { filter, startWith } from 'rxjs';\nimport { NavigationListItemDirective } from '../../directives/navigation-list-item-ref.directive';\nimport { FdbNavigationContentContainer } from '../../models/navigation-content-container.class';\nimport { FdbNavigationItemLink } from '../../models/navigation-item-link.class';\nimport {\n    FdbNavigationListItem,\n    FdbNavigationListItemCmp,\n    LIST_ITEM_CLASS\n} from '../../models/navigation-list-item.class';\nimport { NavigationService } from '../../services/navigation.service';\nimport { NavigationLinkRefDirective } from '../navigation-link/navigation-link.component';\nimport { NavigationListComponent } from '../navigation-list/navigation-list.component';\n\nlet navListItemUniqueId = 0;\n\n@Directive({\n    selector: '[fdbNavigationListItemMarker]',\n    standalone: true\n})\nexport class NavigationListItemMarkerDirective implements HasElementRef {\n    /** Element reference. */\n    readonly elementRef = inject(ElementRef);\n    /** @hidden */\n    constructor() {\n        inject(NavigationListItemComponent).marker = this;\n    }\n}\n\n@Component({\n    selector: 'fdb-navigation-list-item',\n    imports: [\n        NgTemplateOutlet,\n        NavigationListComponent,\n        PopoverComponent,\n        PopoverBodyComponent,\n        NavigationListItemMarkerDirective,\n        NgClass\n    ],\n    templateUrl: './navigation-list-item.component.html',\n    styles: [],\n    providers: [\n        NavigationService,\n        {\n            provide: FdbNavigationListItem,\n            useExisting: NavigationListItemComponent\n        },\n        {\n            provide: FdbNavigationListItemCmp,\n            useExisting: NavigationListItemComponent\n        }\n    ],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NavigationListItemComponent extends FdbNavigationListItem implements AfterViewInit, OnDestroy {\n    /** @hidden */\n    @Input()\n    set class(value: Nullable<string>) {\n        this._class$.set(value);\n    }\n\n    get class(): Nullable<string> {\n        return this._class$();\n    }\n\n    /** Whether the list item represents \"Home\" item. */\n    @Input({ transform: booleanAttribute })\n    set home(value: boolean) {\n        this._home$.set(value);\n    }\n\n    get home(): boolean {\n        return this._home$();\n    }\n\n    /** Whether the list item represents \"Quick create\" button. */\n    @Input({ transform: booleanAttribute })\n    set quickCreate(value: boolean) {\n        this.quickCreate$.set(value);\n    }\n\n    get quickCreate(): boolean {\n        return this.quickCreate$();\n    }\n\n    /** Whether the list item should be rendered as a separator */\n    @Input({ transform: booleanAttribute })\n    set separator(value: boolean) {\n        this._separator$.set(value);\n    }\n    get separator(): boolean {\n        return this._separator$();\n    }\n\n    /** Whether the list item should be rendered as a spacer */\n    @Input({ transform: booleanAttribute })\n    set spacer(value: boolean) {\n        this._spacer$.set(value);\n    }\n    get spacer(): boolean {\n        return this._spacer$();\n    }\n\n    /** Whether the list item should be rendered as a group. */\n    @Input({ transform: booleanAttribute })\n    set group(group: boolean) {\n        this.isGroup$.set(group);\n    }\n\n    get group(): boolean {\n        return this.isGroup$();\n    }\n\n    /** Whether the list item is expanded. */\n    @Input({ transform: booleanAttribute })\n    set expanded(expanded: boolean) {\n        this.expanded$.set(expanded);\n    }\n\n    get expanded(): boolean {\n        return this.expanded$();\n    }\n\n    /** Whether the item should be marked as selected. */\n    @Input({ transform: booleanAttribute })\n    set selected(selected: boolean) {\n        this._manuallySelected$.set(selected);\n    }\n\n    get selected(): boolean {\n        return this.selected$();\n    }\n\n    /** Whether the item is disabled. */\n    @Input({ transform: booleanAttribute })\n    set disabled(disabled: boolean) {\n        this.disabled$.set(disabled);\n    }\n\n    get disabled(): boolean {\n        return this.disabled$();\n    }\n\n    /** @hidden */\n    @ContentChildren(FdbNavigationListItem, { descendants: false })\n    listItems: QueryList<FdbNavigationListItem>;\n\n    /** Link reference. */\n    @ContentChild(FdbNavigationItemLink)\n    set link(value: Nullable<FdbNavigationItemLink>) {\n        this.link$.set(value);\n    }\n\n    /**\n     * Link template reference.\n     */\n    @ContentChild(NavigationLinkRefDirective)\n    linkRef: Nullable<NavigationLinkRefDirective>;\n\n    /** Renderer template reference. */\n    @ViewChild('renderer')\n    set renderer(renderer: TemplateRef<any> | undefined) {\n        afterNextRender(\n            () => {\n                this.renderer$.set(renderer || null);\n            },\n            { injector: this._injector }\n        );\n    }\n\n    /** ID for the navigation list item. Default one is assigned if not provided. */\n    id = input(`fdb-nav-list-item-${++navListItemUniqueId}`);\n\n    /** Type of the list item. Whether its a standard item or a \"show more\" button container. */\n    readonly type: 'item' | 'showMore' = 'item';\n\n    /** List item placement container. */\n    readonly placementContainer =\n        inject(FdbNavigationContentContainer, {\n            skipSelf: true,\n            optional: true\n        }) || undefined;\n\n    /**\n     * Whether the list item is visible in the main navigation list container.\n     */\n    readonly isVisible$ = computed(() => {\n        if (this.isOverflow$()) {\n            return false;\n        }\n\n        if (!this.parentListItem) {\n            return this.isGroup$() ? !this.navigation.isSnapped$() : true;\n        }\n\n        if (this.navigation.isSnapped$()) {\n            return this.normalizedLevel$() < 3;\n        }\n\n        return this.parentListItem.isVisible$() && this.parentListItem.expanded$();\n    });\n\n    /** Whether the item is disabled. Cached to avoid repeated signal calls. */\n    readonly _isDisabledCached$ = computed(() => this.disabled$());\n\n    /**\n     * Whether the item is navigatable via the keyboard.\n     */\n    get skipNavigation(): boolean {\n        return this.spacer || this.separator || this._isDisabledCached$();\n    }\n\n    /** aria-expanded attribute value. */\n    readonly expandedAttr$ = computed(() =>\n        this.navigation.isSnapped$() ? this.popoverOpen$() && !this.isOverflow$() : this.expanded$()\n    );\n\n    /** Role attribute value based on navigation state. */\n    readonly roleAttr$ = computed(() => {\n        if (this.navigation.isSnapped$()) {\n            // In popover context (when parent list item exists), child items should be treeitem\n            if (this.parentListItem && this.parentListItem.popoverOpen$()) {\n                return 'treeitem';\n            }\n            // In overflow menu context (More button popover), items should be menuitem\n            if (this.isOverflow$()) {\n                return 'menuitem';\n            }\n            return 'menuitemradio';\n        }\n        return 'treeitem';\n    });\n\n    /** aria-checked attribute value for menuitemradio role. */\n    readonly ariaCheckedAttr$ = computed(() => {\n        if (this.navigation.isSnapped$() && this.roleAttr$() === 'menuitemradio') {\n            return this.isActiveAttr$();\n        }\n        return undefined;\n    });\n\n    /** aria-selected attribute value - kept in both expanded and snapped modes. */\n    readonly ariaSelectedAttr$ = computed(() => this.isActiveAttr$());\n\n    /** aria-level attribute value - only for treeitem role. */\n    readonly ariaLevelAttr$ = computed(() => {\n        if (!this.navigation.isSnapped$()) {\n            return this.level$();\n        }\n        return undefined;\n    });\n\n    /** aria-owns attribute value for items with children. */\n    readonly ariaOwnsAttr$ = computed(() => {\n        if (this.hasChildren$()) {\n            return `${this.id()}-list`;\n        }\n        return undefined;\n    });\n\n    /** ID attribute for child lists. */\n    readonly childListIdAttr$ = computed(() => {\n        if (this.hasChildren$()) {\n            return `${this.id()}-list`;\n        }\n        return undefined;\n    });\n\n    /** aria-label attribute value for snapped mode menuitemradio. */\n    readonly ariaLabelAttr$ = computed(() => {\n        if (this.navigation.isSnapped$() && this.roleAttr$() === 'menuitemradio') {\n            const link = this.link$();\n            if (link?.elementRef?.nativeElement) {\n                const linkElement = link.elementRef.nativeElement;\n                const textContent = linkElement.textContent?.trim();\n                if (textContent) {\n                    return textContent;\n                }\n            }\n        }\n        return undefined;\n    });\n\n    /** Expander aria-label attribute value. */\n    readonly expanderAriaLabelAttr$ = computed(() => this._expanderAriaLabel$());\n\n    /** aria-haspopup attribute value for snapped mode items with children. */\n    readonly ariaHasPopupAttr$ = computed(() => {\n        if (this.navigation.isSnapped$() && this.hasChildren$()) {\n            // In overflow menu, items with submenus should have aria-haspopup=\"menu\"\n            if (this.isOverflow$()) {\n                return 'menu';\n            }\n            // Regular navigation items should have aria-haspopup=\"dialog\"\n            return 'dialog';\n        }\n        return undefined;\n    });\n\n    /** aria-current attribute value for snapped mode items with children. */\n    readonly ariaCurrentAttr$ = computed(() => {\n        if (this.navigation.isSnapped$() && this.hasChildren$()) {\n            return 'page';\n        }\n        return undefined;\n    });\n\n    /** Wrapper role attribute for snapped mode popovers. */\n    readonly wrapperRoleAttr$ = computed(() => {\n        if (this.navigation.isSnapped$() && this.hasChildren$() && !this.isOverflow$()) {\n            return 'tree';\n        }\n        return undefined;\n    });\n\n    /** Wrapper aria-roledescription for snapped mode popovers. */\n    readonly wrapperAriaRoleDescriptionAttr$ = computed(() => {\n        if (this.navigation.isSnapped$() && this.hasChildren$() && !this.isOverflow$()) {\n            return this._snappedPopoverRoleDescription$();\n        }\n        return undefined;\n    });\n\n    /** Title item role for snapped mode - should be treeitem in popovers. */\n    readonly titleItemRoleAttr$ = computed(() => {\n        if (this.navigation.isSnapped$() && !this.isOverflow$()) {\n            return 'treeitem';\n        }\n        return this.roleAttr$();\n    });\n\n    /** Title item aria-selected for snapped mode - should not be selected if children are selected. */\n    readonly titleItemAriaSelectedAttr$ = computed(() => {\n        if (this.navigation.isSnapped$() && !this.isOverflow$()) {\n            // In popover, if any child is selected, the parent should not have aria-selected\n            const hasSelectedChild = this.listItems$().some((item) => item?.isActiveAttr$());\n            if (hasSelectedChild) {\n                return false;\n            }\n            // Otherwise use the normal selected state\n            return this.ariaSelectedAttr$();\n        }\n        return this.ariaSelectedAttr$();\n    });\n    readonly titleItemFocusable$ = computed(() => {\n        if (this.navigation.isSnapped$() && !this.isOverflow$()) {\n            // Check if the parent item has the with-expander class (two-click area)\n            const parentItemElement = this.marker?.elementRef?.nativeElement;\n            if (parentItemElement) {\n                return parentItemElement.classList.contains('fd-navigation__item--with-expander');\n            }\n            return false; // Default to not focusable for one-click areas\n        }\n        return true;\n    });\n\n    /** CSS Class signal. */\n    readonly class$ = computed(() =>\n        [\n            LIST_ITEM_CLASS,\n            this._class$(),\n            this._separator$() ? `${LIST_ITEM_CLASS}--separator` : '',\n            this._spacer$() ? `${LIST_ITEM_CLASS}--spacer` : '',\n            this._home$() ? `${LIST_ITEM_CLASS}--home` : ''\n        ]\n            .filter((k) => !!k)\n            .join(' ')\n    );\n\n    /** Combined selected state - considers both manual selection and service selection. */\n    readonly selected$ = computed(() => {\n        // In router mode, only consider manual selection\n        if (this.navigation.selectionMode === 'router') {\n            return this._manuallySelected$();\n        }\n\n        // In click mode, check both manual selection and service selection\n        // But manual selection should only be considered if no item is selected via service\n        if (this.navigation.selectionMode === 'click') {\n            const serviceSelected = this.navigation.service.selectedItem$() === this;\n            const manuallySelected = this._manuallySelected$() && this.navigation.service.selectedItem$() === null;\n\n            return serviceSelected || manuallySelected;\n        }\n\n        return false;\n    });\n\n    /** @hidden */\n    readonly quickCreate$ = signal(false);\n\n    /** @hidden */\n    readonly _moreButtonRef$ = computed(() => this._parentNavigationList?.moreButtonRef || null);\n\n    /** Optional parent list component. */\n    readonly parentListItemComponent = inject(FdbNavigationListItemCmp, {\n        optional: true,\n        skipSelf: true\n    });\n\n    /** @hidden */\n    get parentListItem(): FdbNavigationListItem | null {\n        return (\n            this._parentNavigationListItemDirective?.parentNavListItemDirective?._item || this.parentListItemComponent\n        );\n    }\n\n    /**\n     * @hidden\n     * Popover position. Changes based on rtl value.\n     */\n    protected readonly popoverPlacement = computed<Placement>(() => (this._isRtl() ? 'left-start' : 'right-start'));\n\n    /** @hidden Max-height for the overflow submenu, computed dynamically based on viewport position. */\n    protected readonly overflowSubmenuMaxHeight = signal<string | null>(null);\n\n    /** @hidden */\n    private readonly _home$ = signal(false);\n\n    /** Manual selection state signal (for router-based selection mode). */\n    private readonly _manuallySelected$ = signal(false);\n\n    /** @hidden */\n    private readonly _class$ = signal<Nullable<string>>(null);\n\n    /** @hidden */\n    private readonly _separator$ = signal(false);\n\n    /** @hidden */\n    private readonly _spacer$ = signal(false);\n\n    /** @hidden */\n    private readonly _links: FdbNavigationItemLink[] = [];\n\n    /** @hidden */\n    private readonly _childLists: NavigationListComponent[] = [];\n\n    /** @hidden */\n    private _keyManager: Nullable<FocusKeyManager<FdbNavigationListItem>>;\n\n    /** @hidden */\n    private readonly _injector = inject(Injector);\n\n    /** @hidden */\n    private readonly _langSignal = inject(FD_LANGUAGE_SIGNAL);\n\n    /** @hidden */\n    private _translationResolver = inject(TranslationResolver);\n\n    /** Translation signal for snapped popover role description. */\n    private readonly _snappedPopoverRoleDescription$ = computed(() =>\n        this._translationResolver.resolve(this._langSignal(), 'btpNavigation.snappedPopoverRoleDescription')\n    );\n\n    /** Translation signal for expander aria-label. */\n    private readonly _expanderAriaLabel$ = computed(() =>\n        this._translationResolver.resolve(this._langSignal(), 'btpNavigation.expanderAriaLabel')\n    );\n\n    private readonly _rtlService = inject(RtlService, { optional: true });\n\n    /** @hidden */\n    private readonly _isRtl = computed(() => this._rtlService?.rtl() ?? false);\n\n    /**\n     * @hidden\n     * Directive that used during data-driven rendering.\n     */\n    private readonly _parentNavigationListItemDirective = inject(NavigationListItemDirective, { optional: true });\n\n    /** @hidden */\n    private readonly _parentNavigationService = inject(NavigationService, {\n        skipSelf: true,\n        optional: true\n    });\n\n    /** @hidden */\n    private readonly _parentNavigationList = inject(NavigationListComponent, {\n        skipSelf: true,\n        optional: true\n    });\n\n    /** @hidden */\n    private readonly _destroyRef = inject(DestroyRef);\n\n    /** @hidden */\n    private readonly _itemContainer = viewChild<ElementRef>('itemContainer');\n\n    /** @hidden */\n    private readonly _overflowSubmenuContainer = viewChild<ElementRef>('overflowSubmenuContainer');\n\n    /** @hidden */\n    constructor() {\n        super();\n        effect(() => {\n            if (this.popoverOpen$()) {\n                const listItems = this.listItems$().filter(Boolean) as FdbNavigationListItem[];\n                this._keyManager = new FocusKeyManager(listItems)\n                    .withVerticalOrientation()\n                    .skipPredicate((item) => item.skipNavigation);\n            } else {\n                this._keyManager?.destroy();\n            }\n        });\n\n        // We need to track child directives change and set list items based on that.\n        effect(() => {\n            if (!this._parentNavigationListItemDirective?.childDirectives()) {\n                return;\n            }\n\n            const children = this._parentNavigationListItemDirective.childDirectives();\n            const mappedItems = Array.from(children).map((child) => child._item);\n\n            this.listItems$.set(mappedItems);\n        });\n\n        this._parentNavigationListItemDirective?.registerItem(this);\n\n        this.navigation.closeAllPopups.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n            this.popoverOpen$.set(false);\n        });\n\n        // Listen for selection changes to implement single-selection behavior\n        this.navigation.service.selectionChanged$\n            .pipe(takeUntilDestroyed(this._destroyRef))\n            .subscribe((selectedItem) => {\n                // If another item was selected and we're in click mode, clear our manual selection\n                if (this.navigation.selectionMode === 'click' && selectedItem !== this && this._manuallySelected$()) {\n                    this._manuallySelected$.set(false);\n                }\n            });\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this._keyManager?.destroy();\n    }\n\n    /** @hidden */\n    _focusBeforeList(): void {\n        if (this.popoverOpen$()) {\n            this._focusPopoverLink();\n        }\n    }\n\n    /**\n     * @hidden\n     * When item is focused, we notify list container about it to update active index in FocusKeyManager.\n     */\n    _focusInHandler(): void {\n        if (!this.parentListItem?.popoverOpen$() && !this.isOverflow$()) {\n            this.navigation.setActiveItem(this);\n            return;\n        }\n        this._parentNavigationService?.currentItem$.next(this);\n    }\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        this.listItems.changes\n            .pipe(\n                filter(() => !this._parentNavigationListItemDirective),\n                startWith(null),\n                takeUntilDestroyed(this._destroyRef)\n            )\n            .subscribe(() => {\n                this.listItems$.set(this.listItems.toArray());\n            });\n    }\n\n    /** @hidden */\n    registerLink(link: FdbNavigationItemLink): void {\n        if (this._links.indexOf(link) === -1) {\n            this._links.push(link);\n        }\n    }\n\n    /** @hidden */\n    unregisterLink(link: FdbNavigationItemLink): void {\n        this._links.splice(this._links.indexOf(link), 1);\n    }\n\n    /** @hidden */\n    registerChildList(list: NavigationListComponent): void {\n        if (this._childLists.includes(list)) {\n            return;\n        }\n        this._childLists.push(list);\n    }\n\n    /** @hidden */\n    unregisterChildList(list: NavigationListComponent): void {\n        if (!this._childLists.includes(list)) {\n            return;\n        }\n        this._childLists.splice(this._childLists.indexOf(list), 1);\n    }\n\n    /** @hidden */\n    handleHorizontalNavigation(isExpand: boolean): void {\n        console.log(isExpand);\n    }\n\n    /**\n     * Callback method when Arrow down is pressed on the link in popover.\n     */\n    popoverLinkArrowDown(): void {\n        this._keyManager?.setActiveItem(0);\n    }\n\n    /** @Hidden */\n    _innerListKeydown(event: KeyboardEvent): void {\n        if (!this.popoverOpen$()) {\n            return;\n        }\n\n        if (KeyUtil.isKeyCode(event, UP_ARROW) && this._keyManager?.activeItemIndex === 0) {\n            this._focusPopoverLink();\n            return;\n        }\n\n        if (KeyUtil.isKeyCode(event, [UP_ARROW, DOWN_ARROW])) {\n            this._keyManager?.onKeydown(event);\n            return;\n        }\n\n        if (!KeyUtil.isKeyCode(event, [LEFT_ARROW, RIGHT_ARROW])) {\n            return;\n        }\n\n        const isGoBack = KeyUtil.isKeyCode(event, this._isRtl() ? LEFT_ARROW : RIGHT_ARROW);\n\n        if (!isGoBack) {\n            return;\n        }\n\n        this._snappedItemKeyboardExpandedHandler(false);\n    }\n\n    /** Toggles expanded state of the item. */\n    toggleExpanded(): void {\n        if (this.disabled$()) {\n            return;\n        }\n\n        if (!this.hasChildren$()) {\n            return;\n        }\n\n        // In snapped mode, toggle popover instead of expanded state\n        if (this.navigation.isSnapped$()) {\n            this.popoverOpen$.update((open) => !open);\n        } else {\n            this.expanded$.update((expanded) => !expanded);\n        }\n    }\n\n    /** Handles item click for both selection and expansion based on item type and navigation mode. */\n    handleItemClick(): void {\n        if (this.disabled$()) {\n            return;\n        }\n\n        // Let the navigation link handle expansion for items with links\n        // Only handle expansion here for items without any links\n        if (this.hasChildren$() && !this.link$()) {\n            this.toggleExpanded();\n            return;\n        }\n\n        // Handle selection in click mode for selectable items\n        if (this.navigation.selectionMode === 'click' && this.canItemBeSelected()) {\n            this.navigation.service.setSelectedItem(this);\n        }\n    }\n\n    /** Handles keydown events for navigation item actions. */\n    handleItemKeydown(event: KeyboardEvent): void {\n        // For quick create items, execute the click action on Enter/Space\n        if (this.quickCreate$() && KeyUtil.isKeyCode(event, [ENTER, SPACE])) {\n            event.preventDefault();\n            event.stopPropagation();\n\n            // Trigger click on the link element if it exists\n            const linkElement = this.link$()?.elementRef?.nativeElement;\n            if (linkElement) {\n                linkElement.click();\n            }\n        }\n    }\n\n    /** Callback method when user used keyboard arrows to expand/collapse list item. */\n    keyboardExpanded(shouldExpand: boolean): void {\n        if (this.isOverflow$()) {\n            this._overflowItemKeyboardExpandedHandler(shouldExpand);\n        } else if (this.navigation.isSnapped$()) {\n            this._snappedItemKeyboardExpandedHandler(shouldExpand);\n        } else {\n            this._visibleItemKeyboardExpandedHandler(shouldExpand);\n        }\n    }\n\n    /**\n     * Focus method implementation.\n     * Used by main navigation component FocusKeyManager.\n     * @param origin\n     */\n    focus(): void {\n        // If popover is open, focus will be automatically shifted to cloned link.\n        if (this.popoverOpen$() && !this.isOverflow$()) {\n            return;\n        }\n        this.focusLink();\n    }\n\n    /**\n     * Focuses inner link element.\n     * Optionally closes the popover.\n     */\n    focusLink(closePopover = false): void {\n        this.link$()?.elementRef.nativeElement.focus();\n\n        if (closePopover) {\n            this.popoverOpen$.set(false);\n        }\n    }\n\n    /** @hidden */\n    _onPopoverOpen(isOpen: boolean, popover: PopoverComponent): void {\n        // Set trigger if not already set\n        const itemContainer = this._itemContainer();\n        if (isOpen && !popover.trigger() && itemContainer) {\n            popover.trigger.set(itemContainer);\n        }\n\n        this.popoverOpen$.set(isOpen);\n        if (isOpen) {\n            afterNextRender(\n                () => {\n                    // Force update of tabindex for all child links before focusing\n                    this._ensureChildTabindexUpdated();\n                    setTimeout(() => {\n                        // Try to use the FocusKeyManager first\n                        if (this._keyManager) {\n                            this._keyManager.setActiveItem(0);\n                            return;\n                        }\n\n                        // Fallback: Use component data structures to find the first focusable link\n                        const firstFocusableLink = this._links.find(\n                            (link) => link.inPopover && link.elementRef?.nativeElement\n                        );\n\n                        if (firstFocusableLink) {\n                            firstFocusableLink.elementRef.nativeElement.focus();\n                            return;\n                        }\n\n                        // Alternative: Use listItems to find first item's link\n                        const firstListItem = this.listItems$().find((item) => item && !item.skipNavigation);\n                        if (firstListItem) {\n                            const link = firstListItem.link$();\n                            if (link?.elementRef?.nativeElement) {\n                                link.elementRef.nativeElement.focus();\n                                return;\n                            }\n                        }\n\n                        // Last resort: use the popover's built-in focus management\n                        try {\n                            const popoverBody = popover.popoverBody();\n                            popoverBody?._focusFirstTabbableElement(true);\n                        } catch (error) {\n                            console.error('Error focusing in popover:', error);\n\n                            const popoverBody = popover.popoverBody();\n                            const popoverBodyElement = popoverBody?._elementRef?.nativeElement;\n                            if (popoverBodyElement) {\n                                const firstFocusableElement = popoverBodyElement.querySelector(\n                                    'a, button, [tabindex]:not([tabindex=\"-1\"])'\n                                ) as HTMLElement;\n                                if (firstFocusableElement) {\n                                    firstFocusableElement.focus();\n                                }\n                            }\n                        }\n                    }, 0);\n                },\n                { injector: this._injector }\n            );\n        } else {\n            // When popover closes, return focus to the parent link (for snapped state)\n            if (this.navigation.isSnapped$()) {\n                afterNextRender(\n                    () => {\n                        this.focusLink();\n                    },\n                    { injector: this._injector }\n                );\n            }\n        }\n    }\n\n    /**\n     * Determines if this item can be selected based on its type and structure.\n     * @returns true if the item can be selected, false otherwise\n     */\n    canItemBeSelected(): boolean {\n        // Group items (headers) cannot be selected\n        if (this.isGroup$()) {\n            return false;\n        }\n\n        // Quick create items cannot be selected (they execute actions instead)\n        if (this.quickCreate$()) {\n            return false;\n        }\n\n        // Items with children that don't have a router link cannot be selected\n        // (they should only expand/collapse)\n        if (this.hasChildren$() && !this.link$()?.routerLink) {\n            return false;\n        }\n\n        // Separator and spacer items cannot be selected\n        if (this.separator || this.spacer) {\n            return false;\n        }\n\n        // All other items (leaf items and items with both links and children) can be selected\n        return true;\n    }\n\n    /**\n     * @hidden\n     * Handles mouseenter on overflow items to dynamically adjust the submenu max-height.\n     * Uses requestAnimationFrame to ensure the browser has laid out the submenu\n     * (which transitions from display:none to display:block via CSS :hover)\n     * before measuring its viewport position.\n     */\n    onOverflowItemMouseEnter(): void {\n        if (!this.isOverflow$() || !this.hasChildren$()) {\n            return;\n        }\n\n        const submenuEl = this._overflowSubmenuContainer()?.nativeElement;\n        if (!submenuEl) {\n            return;\n        }\n\n        // Wait for the browser to complete layout after CSS :hover makes the submenu visible\n        requestAnimationFrame(() => {\n            const rect = submenuEl.getBoundingClientRect();\n            const viewportHeight = window.innerHeight;\n            const margin = 16; // 1rem safety margin from viewport edge\n            const availableHeight = viewportHeight - rect.top - margin;\n\n            if (availableHeight > 0) {\n                this.overflowSubmenuMaxHeight.set(`${availableHeight}px`);\n            }\n        });\n    }\n\n    private _focusPopoverLink(): void {\n        this._links.find((link) => link.inPopover)?.elementRef.nativeElement.focus();\n    }\n\n    /** @hidden */\n    private _ensureChildTabindexUpdated(): void {\n        // When popover is open, all links should be focusable\n        this._links.forEach((link) => {\n            if (link.elementRef?.nativeElement) {\n                // Simple logic: if any popover is open in the hierarchy, all links are focusable\n                const tabIndex = this.popoverOpen$() ? 0 : -1;\n                link.elementRef.nativeElement.setAttribute('tabindex', tabIndex.toString());\n            }\n        });\n    }\n\n    /** @hidden */\n    private _visibleItemKeyboardExpandedHandler(shouldExpand: boolean): void {\n        if (!this.hasChildren$()) {\n            if (!shouldExpand) {\n                this.parentListItem?.focus();\n            }\n            return;\n        }\n\n        if (!shouldExpand) {\n            // If item already collapsed, shift focus to parent link\n            if (!this.expanded$()) {\n                this.parentListItem?.focus();\n                return;\n            }\n            this.expanded$.set(false);\n        } else {\n            if (this.expanded$()) {\n                this.listItems.first?.focus();\n                return;\n            }\n            this.expanded$.set(true);\n        }\n    }\n\n    /** @hidden */\n    private _snappedItemKeyboardExpandedHandler(shouldExpand: boolean): void {\n        if (!this.hasChildren$()) {\n            return;\n        }\n        if (shouldExpand && !this.popoverOpen$()) {\n            this.popoverOpen$.set(true);\n        }\n        if (!shouldExpand && this.popoverOpen$()) {\n            this.popoverOpen$.set(false);\n            this.link$()?.elementRef.nativeElement.focus();\n        }\n    }\n\n    /**\n     * @hidden\n     * Method used to handle keyboard navigation for list item that is inside overflow container.\n     */\n    private _overflowItemKeyboardExpandedHandler(shouldExpand: boolean): void {\n        if (shouldExpand && this._childLists.length > 0) {\n            const firstList = this._childLists[0];\n            firstList.setActiveItemIndex(0);\n        }\n        if (shouldExpand && !this.popoverOpen$()) {\n            this.popoverOpen$.set(true);\n        }\n        if (!shouldExpand && this.popoverOpen$()) {\n            this.popoverOpen$.set(false);\n            this.link?.elementRef.nativeElement.focus();\n        }\n    }\n}\n","<!-- General renderer. -->\n<ng-template #renderer>\n    @if (!separator) {\n        <div\n            class=\"fd-navigation__item\"\n            [class.fd-navigation__item--group]=\"isGroup$()\"\n            [class.fd-navigation__item--create]=\"quickCreate$()\"\n            [class.fd-navigation__item--child]=\"normalizedLevel$() > 2\"\n            [class.fd-navigation__item--overflow]=\"isOverflow$()\"\n            [class.fd-navigation__item--with-expander]=\"!!link$()?.routerLink && hasChildren$()\"\n            [class.fd-navigation__item--disabled]=\"disabled$()\"\n            [attr.id]=\"id()\"\n            [attr.role]=\"roleAttr$()\"\n            [attr.aria-level]=\"ariaLevelAttr$()\"\n            [attr.aria-label]=\"ariaLabelAttr$()\"\n            [attr.aria-selected]=\"ariaSelectedAttr$()\"\n            [attr.aria-checked]=\"ariaCheckedAttr$()\"\n            [attr.aria-expanded]=\"expandedAttr$()\"\n            [attr.aria-disabled]=\"disabled$()\"\n            [attr.aria-owns]=\"ariaOwnsAttr$()\"\n            [attr.aria-haspopup]=\"ariaHasPopupAttr$()\"\n            [attr.aria-current]=\"ariaCurrentAttr$()\"\n            [attr.normalized-level]=\"normalizedLevel$()\"\n            (focusin)=\"_focusInHandler()\"\n            (click)=\"handleItemClick()\"\n            (keydown)=\"handleItemKeydown($event)\"\n            (mouseenter)=\"onOverflowItemMouseEnter()\"\n            fdbNavigationListItemMarker\n            #itemContainer\n        >\n            @if (!navigation.isSnapped$() || !hasChildren$()) {\n                <ng-template\n                    [ngTemplateOutlet]=\"linkRenderer\"\n                    [ngTemplateOutletContext]=\"{ $implicit: true }\"\n                ></ng-template>\n            } @else {\n                <ng-template\n                    [ngTemplateOutlet]=\"snappedNavigationItemRenderer\"\n                    [ngTemplateOutletContext]=\"{ $implicit: itemContainer }\"\n                ></ng-template>\n            }\n        </div>\n        @if (isOverflow$() && hasChildren$()) {\n            <ng-template [ngTemplateOutlet]=\"overflowItemListRenderer\"></ng-template>\n        }\n        @if (!navigation.isSnapped$()) {\n            <ng-template [ngTemplateOutlet]=\"listRenderer\"></ng-template>\n        }\n    }\n</ng-template>\n<!-- Snapped navigation list item renderer. Implicit context points to the popover trigger element. -->\n<ng-template #snappedNavigationItemRenderer let-itemContainer>\n    <ng-template [ngTemplateOutlet]=\"linkRenderer\" [ngTemplateOutletContext]=\"{ $implicit: false }\"></ng-template>\n    @if (!isOverflow$()) {\n        <fd-popover\n            #popover\n            [noArrow]=\"true\"\n            additionalBodyClass=\"fd-navigation__list-container\"\n            [isOpen]=\"popoverOpen$()\"\n            (isOpenChange)=\"_onPopoverOpen($event, popover)\"\n            [trigger]=\"itemContainer\"\n            [focusAutoCapture]=\"true\"\n            [restoreFocusOnClose]=\"false\"\n            [focusTrapped]=\"true\"\n            [placement]=\"popoverPlacement()\"\n            [disableScrollbar]=\"true\"\n        >\n            <fd-popover-body [ngClass]=\"navigation.classList$()\">\n                <ng-template\n                    [ngTemplateOutlet]=\"wrapperRenderer\"\n                    [ngTemplateOutletContext]=\"{ $implicit: true }\"\n                ></ng-template>\n            </fd-popover-body>\n        </fd-popover>\n    }\n</ng-template>\n<!-- Generic link renderer. -->\n<ng-template #linkRenderer let-showToggleButton>\n    <ng-template [ngTemplateOutlet]=\"linkRef?.templateRef || null\"></ng-template>\n    @if (!!link$()?.routerLink && hasChildren$()) {\n        <span\n            class=\"fd-navigation__has-children-indicator\"\n            role=\"button\"\n            [attr.aria-label]=\"expanderAriaLabelAttr$()\"\n            (click)=\"toggleExpanded()\"\n        ></span>\n    }\n</ng-template>\n<!-- Generic list renderer. Used when navigation is not snapped. -->\n<ng-template #listRenderer>\n    @if (isGroup$() && normalizedLevel$() === 1) {\n        <ul\n            fdb-navigation-list\n            [listItems]=\"listItems$()\"\n            parentItems\n            [moreButtonRef]=\"_moreButtonRef$()\"\n            [attr.id]=\"id() + '-list'\"\n        ></ul>\n    } @else if (hasChildren$()) {\n        <div class=\"fd-navigation__list-container\">\n            <ng-template\n                [ngTemplateOutlet]=\"wrapperRenderer\"\n                [ngTemplateOutletContext]=\"{ $implicit: false }\"\n            ></ng-template>\n        </div>\n    }\n</ng-template>\n<!-- Template used for rendering sublist of items for the list item that is currently in overflow menu. -->\n<ng-template #overflowItemListRenderer>\n    <div\n        #overflowSubmenuContainer\n        class=\"fd-navigation__list-container fd-navigation__list-container--submenu fd-menu__sublist\"\n        [style.max-height]=\"overflowSubmenuMaxHeight()\"\n    >\n        <ng-template [ngTemplateOutlet]=\"wrapperRenderer\" [ngTemplateOutletContext]=\"{ $implicit: true }\"></ng-template>\n    </div>\n</ng-template>\n<!-- Generic list renderer. Implicit context defines whether the inner list should handle keyboard navigation by its own. -->\n<ng-template #wrapperRenderer let-keyboardNavigation>\n    <div\n        class=\"fd-navigation__list-wrapper\"\n        [attr.role]=\"wrapperRoleAttr$()\"\n        [attr.aria-roledescription]=\"wrapperAriaRoleDescriptionAttr$()\"\n    >\n        @if (navigation.isSnapped$() && !isOverflow$()) {\n            <!-- If opener link itself is active, project aria-checked attribute to link repeater too for snapped mode. -->\n            <div\n                class=\"fd-navigation__item fd-navigation__item--title fd-navigation__item--child\"\n                [attr.role]=\"titleItemRoleAttr$()\"\n                [attr.aria-selected]=\"titleItemAriaSelectedAttr$()\"\n                [attr.tabindex]=\"titleItemFocusable$() ? 0 : -1\"\n            >\n                <ng-template\n                    [ngTemplateOutlet]=\"linkRenderer\"\n                    [ngTemplateOutletContext]=\"{ $implicit: false }\"\n                ></ng-template>\n            </div>\n        }\n        <ul\n            fdb-navigation-list\n            [listItems]=\"listItems$() || []\"\n            [childItems]=\"true\"\n            [role]=\"isOverflow$() ? 'menu' : 'group'\"\n            (keydown)=\"(false)\"\n            (focusBefore)=\"_focusBeforeList()\"\n            [withKeyboardNavigation]=\"keyboardNavigation\"\n            [moreButtonRef]=\"_moreButtonRef$()\"\n            [attr.id]=\"childListIdAttr$()\"\n        ></ul>\n    </div>\n</ng-template>\n","import { LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport { NgClass } from '@angular/common';\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    DestroyRef,\n    ElementRef,\n    Input,\n    TemplateRef,\n    ViewChild,\n    ViewEncapsulation,\n    computed,\n    inject,\n    signal,\n    viewChild\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KeyUtil, Nullable, RtlService } from '@fundamental-ngx/cdk';\nimport { PopoverBodyComponent, PopoverComponent } from '@fundamental-ngx/core/popover';\nimport { Placement } from '@fundamental-ngx/core/shared';\nimport { FD_LANGUAGE_SIGNAL, TranslationResolver } from '@fundamental-ngx/i18n';\nimport { FdbNavigationItemLink } from '../../models/navigation-item-link.class';\nimport { FdbNavigationListItem } from '../../models/navigation-list-item.class';\nimport { FdbNavigation } from '../../models/navigation.class';\nimport { NavigationLinkComponent } from '../navigation-link/navigation-link.component';\nimport { NavigationListComponent } from '../navigation-list/navigation-list.component';\n\nexport interface NavigationMoreButtonRefContext {\n    $implicit: () => void;\n}\n\n@Component({\n    // eslint-disable-next-line @angular-eslint/component-selector\n    selector: 'li[fdb-navigation-more-button]',\n    imports: [NavigationLinkComponent, NavigationListComponent, PopoverComponent, PopoverBodyComponent, NgClass],\n    providers: [\n        {\n            provide: FdbNavigationListItem,\n            useExisting: NavigationMoreButtonComponent\n        }\n    ],\n    templateUrl: './navigation-more-button.component.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        class: 'fd-navigation__list-item'\n    }\n})\nexport class NavigationMoreButtonComponent implements AfterViewInit {\n    /** @hidden */\n    @Input()\n    listItems: FdbNavigationListItem[] = [];\n\n    /** @hidden */\n    @ViewChild(FdbNavigationItemLink)\n    private readonly _link: Nullable<FdbNavigationItemLink>;\n\n    /** @hidden */\n    @ViewChild(PopoverComponent)\n    private readonly _popover: Nullable<PopoverComponent>;\n\n    /** @hidden */\n    @ViewChild(NavigationListComponent)\n    private readonly _navigationList: Nullable<NavigationListComponent>;\n\n    /** @hidden */\n    customMoreRenderer: Nullable<TemplateRef<any>>;\n\n    /** Whether the show more is visible. */\n    isVisible$ = signal(true);\n\n    /** Whether popover is open. Applicable for snapped navigation state. */\n    readonly popoverOpen$ = signal(false);\n\n    /** ID for the more button. */\n    readonly id = signal('fdb-navigation-more-button');\n\n    /** @hidden */\n    readonly type = 'showMore';\n\n    /** @hidden */\n    readonly placementContainer = undefined;\n\n    /**\n     * Whether the item is in overflow menu.\n     */\n    readonly isOverflow$ = signal(false);\n\n    /** Whether item has child items. */\n    readonly hasChildren$ = signal(false);\n\n    /** @hidden */\n    readonly _navigation = inject(FdbNavigation);\n\n    /**\n     * Link reference.\n     */\n    readonly link$ = signal<Nullable<FdbNavigationItemLink>>(null);\n\n    /** More button aria-label attribute value. */\n    readonly moreButtonAriaLabelAttr$ = computed(() => this._moreButtonAriaLabel$());\n\n    /** Overflow menu aria-label attribute value. */\n    readonly overflowMenuAriaLabelAttr$ = computed((): string => this._overflowMenuAriaLabel$() || '');\n\n    /**\n     * @hidden\n     * Popover position. Changes based on rtl value.\n     */\n    protected readonly popoverPlacement = computed<Placement>(() => (this._isRtl() ? 'left-start' : 'right-start'));\n\n    /** @hidden */\n    private readonly _triggerElement = viewChild<ElementRef>('trigger');\n\n    /** @hidden */\n    private _popoverClicked = false;\n\n    /** @hidden */\n    private readonly elementRef = inject(ElementRef);\n\n    /** @hidden */\n    private readonly _rtlService = inject(RtlService, { optional: true });\n\n    /** @hidden */\n    private readonly _isRtl = computed(() => this._rtlService?.rtl() ?? false);\n\n    /** @hidden */\n    private readonly _langSignal = inject(FD_LANGUAGE_SIGNAL);\n\n    /** @hidden */\n    private _translationResolver = inject(TranslationResolver);\n\n    /** Translation signal for more button aria-label. */\n    private readonly _moreButtonAriaLabel$ = computed(() =>\n        this._translationResolver.resolve(this._langSignal(), 'btpNavigation.moreButtonAriaLabel')\n    );\n\n    /** Translation signal for overflow menu aria-label. */\n    private readonly _overflowMenuAriaLabel$ = computed(() =>\n        this._translationResolver.resolve(this._langSignal(), 'btpNavigation.overflowMenuAriaLabel')\n    );\n\n    /** @hidden */\n    constructor() {\n        this._navigation.closeAllPopups.pipe(takeUntilDestroyed(inject(DestroyRef))).subscribe(() => {\n            this.popoverOpen$.set(false);\n        });\n    }\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        // Set popover trigger reference\n        const triggerElement = this._triggerElement();\n        if (this._popover?.trigger && triggerElement) {\n            this._popover.trigger.set(triggerElement);\n        }\n    }\n\n    /** @hidden */\n    _onPopoverOpenChange(isOpen: boolean): void {\n        this.popoverOpen$.set(isOpen);\n\n        // When popover opens, focus the first item\n        if (isOpen) {\n            // Use a short timeout to ensure the DOM is updated\n            setTimeout(() => {\n                if (this._navigationList) {\n                    let firstValidIndex = 0;\n                    const items = this._navigationList._listItems || [];\n                    for (let i = 0; i < items.length; i++) {\n                        if (items[i] && items[i]?.link$()?.elementRef?.nativeElement) {\n                            firstValidIndex = i;\n                            break;\n                        }\n                    }\n\n                    this._navigationList.setActiveItemIndex(firstValidIndex);\n                    return;\n                }\n\n                // Fallback: Focus the first item using the listItems array\n                if (this.listItems && this.listItems.length > 0) {\n                    const firstItem = this.listItems[0];\n                    const link = firstItem.link$();\n\n                    if (link?.elementRef?.nativeElement) {\n                        link.elementRef.nativeElement.focus();\n                        return;\n                    }\n                }\n\n                // Last resort fallback: if direct access fails, try to focus any focusable element in the popover\n                const popoverBody = (this._popover as any)?.popoverBody();\n                const popoverBodyElement = popoverBody?._elementRef?.nativeElement;\n                if (popoverBodyElement) {\n                    const firstFocusableElement = popoverBodyElement.querySelector(\n                        'a, button, [tabindex]:not([tabindex=\"-1\"])'\n                    ) as HTMLElement;\n                    if (firstFocusableElement) {\n                        firstFocusableElement.focus();\n                    }\n                }\n            }, 150);\n        }\n    }\n\n    /** @hidden */\n    togglePopover(withClick = false): void {\n        this._popoverClicked = withClick;\n        this.popoverOpen$.update((value) => !value);\n    }\n\n    /** @hidden */\n    registerLink(): void {}\n\n    /** @hidden */\n    unregisterLink(): void {}\n\n    /** @hidden */\n    registerChildList(): void {}\n\n    /** @hidden */\n    unregisterChildList(): void {}\n\n    /** @hidden */\n    focus(): void {\n        this.focusLink();\n    }\n\n    /**\n     * Focuses inner link element.\n     * Optionally closes the popover.\n     */\n    focusLink(closePopover = false): void {\n        this._link?.elementRef.nativeElement.focus();\n        if (closePopover) {\n            this.popoverOpen$.set(false);\n        }\n    }\n\n    /** @hidden */\n    toggleExpanded(): void {}\n\n    /** @hidden */\n    keyboardExpanded(shouldExpand: boolean): void {\n        if (shouldExpand && !this.popoverOpen$()) {\n            this.popoverOpen$.set(true);\n        } else if (!shouldExpand && this.popoverOpen$()) {\n            this.popoverOpen$.set(false);\n        }\n    }\n\n    /** @hidden */\n    _keydownPopoverToggle(event: KeyboardEvent): void {\n        if (!KeyUtil.isKeyCode(event, [LEFT_ARROW, RIGHT_ARROW])) {\n            return;\n        }\n\n        const isRtl = this._isRtl();\n\n        if (KeyUtil.isKeyCode(event, isRtl ? LEFT_ARROW : RIGHT_ARROW)) {\n            // Open popover only if not already open\n            if (!this.popoverOpen$()) {\n                this.popoverOpen$.set(true);\n            }\n        }\n    }\n\n    /** @hidden */\n    canItemBeSelected(): boolean {\n        return false; // More button cannot be selected\n    }\n}\n","<div\n    role=\"menuitem\"\n    class=\"fd-navigation__item\"\n    [attr.aria-expanded]=\"popoverOpen$()\"\n    [attr.aria-haspopup]=\"'menu'\"\n    [attr.aria-label]=\"moreButtonAriaLabelAttr$()\"\n    aria-level=\"1\"\n    (click)=\"togglePopover(true)\"\n    (keydown)=\"_keydownPopoverToggle($event)\"\n    #trigger\n>\n    <a fdb-navigation-link glyph=\"overflow\">More Items</a>\n    <fd-popover\n        #popover\n        [triggers]=\"[]\"\n        [isOpen]=\"popoverOpen$()\"\n        (isOpenChange)=\"_onPopoverOpenChange($event)\"\n        [focusTrapped]=\"true\"\n        additionalBodyClass=\"fd-navigation__list-container fd-navigation__list-container--menu\"\n        [placement]=\"popoverPlacement()\"\n    >\n        <fd-popover-body [ngClass]=\"_navigation.classList$()\" role=\"menu\">\n            <ul\n                fdb-navigation-list\n                withKeyboardNavigation\n                [parentItems]=\"true\"\n                [ariaLabel]=\"overflowMenuAriaLabelAttr$()\"\n                class=\"fd-menu__list\"\n                [listItems]=\"listItems\"\n                [moreButtonRef]=\"this\"\n            ></ul>\n        </fd-popover-body>\n    </fd-popover>\n</div>\n","import { PortalModule } from '@angular/cdk/portal';\nimport {\n    AfterContentInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ContentChildren,\n    ElementRef,\n    Input,\n    QueryList,\n    ViewChild,\n    ViewEncapsulation,\n    computed,\n    inject,\n    signal\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { Nullable, resizeObservable } from '@fundamental-ngx/cdk';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport {\n    animationFrames,\n    asyncScheduler,\n    debounceTime,\n    filter,\n    merge,\n    observeOn,\n    startWith,\n    switchMap,\n    take\n} from 'rxjs';\nimport { FdbNavigationContentContainer } from '../../models/navigation-content-container.class';\nimport { FdbNavigationListItem } from '../../models/navigation-list-item.class';\nimport { FdbNavigation } from '../../models/navigation.class';\nimport { NavigationListComponent } from '../navigation-list/navigation-list.component';\nimport { NavigationMoreButtonComponent } from '../navigation-more-button/navigation-more-button.component';\n\nconst FD_NAVIGATION_OVERFLOW_ITEM_CLASS = 'fd-navigation__container--hidden-overflow';\n\n@Component({\n    selector: 'fdb-navigation-content-start',\n    templateUrl: './navigation-content-start.component.html',\n    imports: [PortalModule, NavigationListComponent, NavigationMoreButtonComponent],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        class: 'fd-navigation__container fd-navigation__container--top',\n        '[style.flex-grow]': '1'\n    },\n    providers: [\n        {\n            provide: FdbNavigationContentContainer,\n            useExisting: NavigationContentStartComponent\n        }\n    ],\n    hostDirectives: [ScrollbarDirective]\n})\nexport class NavigationContentStartComponent extends FdbNavigationContentContainer implements AfterContentInit {\n    /** Whether the list items are content-projected. Used only with data-driven navigation. */\n    @Input()\n    contentProjected = true;\n\n    /**\n     * aria-label for the navigation list.\n     */\n    @Input()\n    ariaLabel: Nullable<string> = null;\n\n    /**\n     * aria-roledescription for the navigation list.\n     */\n    @Input()\n    ariaRoleDescription: Nullable<string> = null;\n\n    /** @hidden */\n    @ContentChildren(FdbNavigationListItem, { descendants: true })\n    private readonly _listItems: QueryList<FdbNavigationListItem>;\n\n    /** @hidden */\n    @ViewChild('moreContainer', { read: ElementRef, static: false })\n    private readonly _moreContainer: Nullable<ElementRef>;\n\n    /** @hidden */\n    @ViewChild(NavigationMoreButtonComponent, { static: false })\n    private readonly _showMoreButton: Nullable<FdbNavigationListItem>;\n\n    /** Whether the container is placed on the start position, or the end position of the navigation. */\n    readonly placement: 'start' | 'end' = 'start';\n\n    /** Navigation component reference. */\n    readonly navigation = inject(FdbNavigation);\n\n    /** Inner List items that should be rendered. */\n    readonly listItems$ = computed(() => {\n        const isSnapped = this.navigation.isSnapped$();\n        const totalItems = this.allListItems$().filter((item) => item.normalizedLevel$() < 3);\n        return totalItems.filter((item) => {\n            const normalizedLevel = item.normalizedLevel$();\n            const level = item.level$();\n            return isSnapped ? normalizedLevel === 2 : level === 1;\n        });\n    });\n\n    /** @hidden */\n    readonly _showMoreButton$ = signal(false);\n\n    /** @hidden */\n    readonly visibleItems$ = signal<FdbNavigationListItem[]>(this.listItems$());\n\n    /** @hidden */\n    readonly hiddenItems$ = signal<FdbNavigationListItem[]>([]);\n\n    /** @hidden */\n    private _calculationInProgress = false;\n\n    /** @hidden */\n    private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n    /** @hidden */\n    private readonly _isSnappedObservable = toObservable(this.navigation.isSnapped$).pipe(\n        startWith(this.navigation.isSnapped$())\n    );\n\n    /** @hidden */\n    private readonly _listItemsObservable = toObservable(this.listItems$);\n\n    /** @hidden */\n    private readonly _cdr = inject(ChangeDetectorRef);\n\n    /** @hidden */\n    ngAfterContentInit(): void {\n        this._listItems.changes\n            .pipe(\n                startWith(null),\n                observeOn(asyncScheduler),\n                filter(() => this.contentProjected),\n                takeUntilDestroyed(this._destroyRef)\n            )\n            .subscribe(() => {\n                this.allListItems$.set(this._listItems.toArray());\n            });\n\n        const resize = resizeObservable(this._elementRef.nativeElement).pipe(debounceTime(30));\n\n        merge(this._isSnappedObservable, this._listItemsObservable, resize)\n            .pipe(\n                switchMap(() => animationFrames().pipe(take(1))),\n                takeUntilDestroyed(this._destroyRef)\n            )\n            .subscribe(() => {\n                this._calculateVisibleItems();\n            });\n\n        // Listen for overflow item selections to promote them to visible\n        this.navigation.service.overflowItemSelected$\n            .pipe(takeUntilDestroyed(this._destroyRef))\n            .subscribe((selectedItem) => {\n                this._promoteOverflowItem(selectedItem);\n            });\n    }\n\n    /**\n     * @hidden\n     * Calculates available space to fit the items.\n     * Determines whether to show the \"More\" button if available space is not enough to fit all list items.\n     */\n    private _calculateVisibleItems(): void {\n        if (this._calculationInProgress) {\n            return;\n        }\n        const items = [...this.listItems$()];\n        items.forEach((item) => item.hidden$.set(false));\n        this.visibleItems$.set([...items]);\n        this._cdr.detectChanges();\n        if (!this.navigation.isSnapped$()) {\n            this._showMoreButton$.set(false);\n            this._calculationInProgress = false;\n            this.navigation.showMoreButton$.set(null);\n            return;\n        }\n\n        this._elementRef.nativeElement.classList.add(FD_NAVIGATION_OVERFLOW_ITEM_CLASS);\n\n        let availableSpace = this._elementRef.nativeElement.clientHeight - this._elementRef.nativeElement.scrollHeight;\n\n        if (availableSpace >= 0) {\n            this._showMoreButton$.set(false);\n            this._calculationInProgress = false;\n            this.navigation.showMoreButton$.set(null);\n            this._elementRef.nativeElement.classList.remove(FD_NAVIGATION_OVERFLOW_ITEM_CLASS);\n            this._cdr.detectChanges();\n            return;\n        }\n\n        this._showMoreButton$.set(true);\n        this._cdr.detectChanges();\n        availableSpace = availableSpace - (this._moreContainer?.nativeElement.clientHeight || 0);\n\n        const hiddenItems: FdbNavigationListItem[] = [];\n\n        // We are going from the bottom to the top and checking whether the available space is enough to fit the items.\n        while (availableSpace < 0 && items.length > 0) {\n            const item = items.pop();\n            if (!item) {\n                continue;\n            }\n            // Since we are going from the bottom to the top, we need to add item to the list as the first item of the array.\n            hiddenItems.unshift(item);\n            const itemHeight = item?.marker?.elementRef?.nativeElement?.clientHeight || 0;\n            availableSpace = availableSpace + itemHeight;\n            item.hidden$.set(true);\n        }\n\n        this._elementRef.nativeElement.classList.remove(FD_NAVIGATION_OVERFLOW_ITEM_CLASS);\n\n        this.visibleItems$.set([...items]);\n        this.hiddenItems$.set([...hiddenItems]);\n\n        this._showMoreButton$.set(hiddenItems.length > 0);\n        this._cdr.detectChanges();\n\n        this.navigation.showMoreButton$.set(this._showMoreButton);\n\n        this._calculationInProgress = false;\n    }\n\n    /**\n     * @hidden\n     * Promotes an overflow item to be the last visible item.\n     * Moves the current last visible item to overflow while preserving overflow order.\n     */\n    private _promoteOverflowItem(selectedItem: FdbNavigationListItem): void {\n        if (!this.navigation.isSnapped$() || !this._showMoreButton$()) {\n            return;\n        }\n\n        const currentVisible = [...this.visibleItems$()];\n        const currentHidden = [...this.hiddenItems$()];\n        const allItems = [...this.listItems$()]; // Original order\n\n        // Find the selected item in hidden items\n        const hiddenIndex = currentHidden.findIndex((item) => item === selectedItem);\n\n        // If not found by object reference, try text-based matching\n        let fallbackIndex = -1;\n        if (hiddenIndex === -1) {\n            const selectedText = selectedItem.link$()?.elementRef?.nativeElement?.textContent?.trim();\n            fallbackIndex = currentHidden.findIndex(\n                (item) => item?.link$()?.elementRef?.nativeElement?.textContent?.trim() === selectedText\n            );\n        }\n\n        const finalIndex = hiddenIndex !== -1 ? hiddenIndex : fallbackIndex;\n\n        if (finalIndex === -1) {\n            return; // Item not found in hidden items\n        }\n\n        // Remove the selected item from hidden items\n        const [itemToPromote] = currentHidden.splice(finalIndex, 1);\n\n        // Move the last visible item to overflow, but insert it in the correct position\n        // to maintain the original order\n        const lastVisibleItem = currentVisible.pop();\n\n        if (lastVisibleItem) {\n            lastVisibleItem.hidden$.set(true);\n\n            // Find the correct position in the original order\n            const lastVisibleIndex = allItems.findIndex((item) => item === lastVisibleItem);\n\n            // Insert the item in the correct position in hidden items to maintain order\n            let insertPosition = 0;\n            for (let i = 0; i < currentHidden.length; i++) {\n                const hiddenItemIndex = allItems.findIndex((item) => item === currentHidden[i]);\n                if (hiddenItemIndex > lastVisibleIndex) {\n                    break;\n                }\n                insertPosition++;\n            }\n\n            currentHidden.splice(insertPosition, 0, lastVisibleItem);\n        }\n\n        // Add the promoted item as the last visible item\n        currentVisible.push(itemToPromote);\n        itemToPromote.hidden$.set(false);\n\n        // Update the signals\n        this.visibleItems$.set(currentVisible);\n        this.hiddenItems$.set(currentHidden);\n\n        // Update the \"More\" button visibility\n        this._showMoreButton$.set(currentHidden.length > 0);\n        this.navigation.showMoreButton$.set(currentHidden.length > 0 ? this._showMoreButton : null);\n\n        // Trigger change detection to ensure navigation items are properly updated\n        this._cdr.detectChanges();\n\n        // Focus the More button after promotion to maintain standard accessibility pattern\n        // (focus returns to trigger when popover closes)\n        setTimeout(() => {\n            if (this._showMoreButton) {\n                this._showMoreButton.focus();\n            }\n        }, 50);\n    }\n}\n","<ul\n    fdb-navigation-list\n    [listItems]=\"visibleItems$()\"\n    [ariaLabel]=\"ariaLabel\"\n    [ariaRoleDescription]=\"ariaRoleDescription\"\n></ul>\n@if (_showMoreButton$()) {\n    <ul noGrow fdb-navigation-list role=\"menubar\" #moreContainer>\n        <li fdb-navigation-more-button [listItems]=\"hiddenItems$()\"></li>\n    </ul>\n}\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport { DOWN_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    ContentChild,\n    ContentChildren,\n    ElementRef,\n    HostBinding,\n    HostListener,\n    Input,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    QueryList,\n    ViewEncapsulation,\n    booleanAttribute,\n    computed,\n    effect,\n    inject,\n    signal\n} from '@angular/core';\nimport { FdbViewMode } from '@fundamental-ngx/btp/shared';\nimport { CssClassBuilder, KeyUtil, Nullable, applyCssClass } from '@fundamental-ngx/cdk/utils';\nimport { Subject } from 'rxjs';\nimport { NavigationListItemRefDirective } from '../../directives/navigation-list-item-ref.directive';\nimport { FdbNavigationListItem } from '../../models/navigation-list-item.class';\nimport { FdbNavigation } from '../../models/navigation.class';\nimport { FdbNavigationState, FdbNavigationType } from '../../models/navigation.types';\nimport { NavigationService } from '../../services/navigation.service';\n\n@Component({\n    selector: 'fdb-navigation',\n    templateUrl: './navigation.component.html',\n    styleUrls: ['./navigation.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        NavigationService,\n        {\n            provide: FdbNavigation,\n            useExisting: NavigationComponent\n        }\n    ],\n    host: {\n        role: 'navigation'\n    }\n})\nexport class NavigationComponent\n    extends FdbNavigation\n    implements CssClassBuilder, OnChanges, OnInit, AfterViewInit, OnDestroy\n{\n    /** @hidden */\n    @Input()\n    class: string;\n\n    /**\n     * aria-label for the navigation.\n     */\n    @Input()\n    @HostBinding('attr.aria-label')\n    ariaLabel: Nullable<string> = null;\n\n    /**\n     * aria-roledescription for the navigation.\n     */\n    @Input()\n    @HostBinding('attr.aria-roledescription')\n    ariaRoleDescription: Nullable<string> = null;\n\n    /**\n     * Navigation mode.\n     */\n    @Input()\n    mode: FdbViewMode = '';\n\n    /**\n     * Whether the navigation is rendered as an overlay.\n     */\n    @Input({ transform: booleanAttribute })\n    isOverlay = false;\n\n    /**\n     * Navigation state.\n     */\n    @Input()\n    set state(value: FdbNavigationState) {\n        this.state$.set(value);\n    }\n    get state(): FdbNavigationState {\n        return this.state$();\n    }\n\n    /**\n     * Navigation type.\n     */\n    @Input()\n    type: FdbNavigationType = 'vertical';\n\n    /**\n     * Selection mode for navigation items.\n     * - 'router': Selection is handled by router link activation (default)\n     * - 'click': Selection is handled by click events\n     */\n    @Input()\n    selectionMode: 'router' | 'click' = 'router';\n\n    /** @hidden */\n    @ContentChild(NavigationListItemRefDirective)\n    set _navigationItemRef(value: Nullable<NavigationListItemRefDirective>) {\n        this._navigationItemRenderer.set(value || null);\n    }\n\n    /** @hidden */\n    @ContentChildren(FdbNavigationListItem, { descendants: true })\n    private readonly _navigationItems: QueryList<FdbNavigationListItem>;\n\n    /**\n     * State signal.\n     */\n    readonly state$ = signal<FdbNavigationState>('expanded');\n\n    /**\n     * Whether the navigation is in snapped mode.\n     */\n    readonly isSnapped$ = computed(() => this.state$() === 'snapped');\n\n    /**\n     * Whether to show \"More\" button. Applicable for `snapped` state only.\n     */\n    readonly showMoreButton$ = signal<Nullable<FdbNavigationListItem>>(null);\n\n    /**\n     * Signal for navigation classList.\n     * Used by popover-based submenus.\n     */\n    readonly classList$ = signal<string[]>([]);\n\n    /** @hidden */\n    readonly elementRef = inject(ElementRef);\n\n    /** Navigation service for managing selection state. */\n    readonly service = inject(NavigationService);\n\n    /** @hidden */\n    readonly _navigationItemRenderer = signal<NavigationListItemRefDirective | null>(null);\n\n    /** Stream notifies to close all popups in child list items. */\n    readonly closeAllPopups = new Subject<void>();\n\n    /** @hidden */\n    private readonly _viewInitiated$ = signal(false);\n\n    /** @hidden */\n    private _keyManager: FocusKeyManager<FdbNavigationListItem>;\n\n    /** @hidden */\n    constructor() {\n        super();\n        // When show more button is shown, reset items list with added \"More button\".\n        effect(() => {\n            if (this._viewInitiated$()) {\n                this._resetItemsList(this.showMoreButton$());\n            }\n        });\n    }\n\n    /** @hidden */\n    @applyCssClass\n    buildComponentCssClass(): string[] {\n        this.classList$.set(\n            [\n                this.class,\n                'fd-navigation',\n                this.mode === '' ? 'fd-navigation--compact' : '',\n                `fd-navigation--${this.state}`,\n                this.isOverlay && this.state === 'expanded' ? 'is-overlay' : ''\n            ].filter((k) => !!k)\n        );\n        return [...this.classList$(), `fd-navigation--${this.type}`];\n    }\n\n    /**\n     * @hidden\n     * Main keyboard navigation handler.\n     */\n    @HostListener('keydown', ['$event'])\n    _keyDownHandler(event: KeyboardEvent): void {\n        if (!KeyUtil.isKeyCode(event, [UP_ARROW, DOWN_ARROW])) {\n            return;\n        }\n\n        event.preventDefault();\n\n        this._keyManager.onKeydown(event);\n    }\n\n    /** @hidden */\n    ngOnInit(): void {\n        this.buildComponentCssClass();\n    }\n\n    /** @hidden */\n    ngOnChanges(): void {\n        this.buildComponentCssClass();\n    }\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        this._keyManager = new FocusKeyManager(this._navigationItems)\n            .withVerticalOrientation()\n            .skipPredicate((item) => !item.isVisible$() || item.skipNavigation);\n        this._keyManager.setActiveItem(0);\n        this._viewInitiated$.set(true);\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this._keyManager?.destroy();\n    }\n\n    /**\n     * Returns currently focused list item.\n     */\n    getActiveItem(): FdbNavigationListItem | null {\n        return this._keyManager.activeItem;\n    }\n\n    /**\n     * Sets focused item.\n     */\n    setActiveItem(item: FdbNavigationListItem): void {\n        this._keyManager.setActiveItem(item);\n    }\n\n    /** Notifies child list items that all popups should be closed. */\n    closePopups(): void {\n        this.closeAllPopups.next();\n    }\n\n    /**\n     * Get the currently selected item when in click selection mode.\n     * @returns The currently selected item, or null if none is selected.\n     */\n    getSelectedItem(): FdbNavigationListItem | null {\n        return this.service.getSelectedItem();\n    }\n\n    /**\n     * Set the selected item when in click selection mode.\n     * @param item The item to select, or null to clear selection.\n     */\n    setSelectedItem(item: FdbNavigationListItem | null): void {\n        this.service.setSelectedItem(item);\n    }\n\n    /**\n     * Clear the current selection when in click selection mode.\n     */\n    clearSelection(): void {\n        this.service.setSelectedItem(null);\n    }\n\n    /**\n     * Get a navigation item by its ID.\n     * @param id The ID of the navigation item to find.\n     * @returns The navigation item with the specified ID, or null if not found.\n     */\n    getNavigationItemById(id: string): FdbNavigationListItem | null {\n        const items = this._navigationItems.toArray();\n        return this._findItemById(items, id);\n    }\n\n    /**\n     * Set the selected item by its ID when in click selection mode.\n     * @param id The ID of the navigation item to select.\n     * @returns True if the item was found and selected, false otherwise.\n     */\n    setSelectedItemById(id: string): boolean {\n        const item = this.getNavigationItemById(id);\n        if (item) {\n            this.setSelectedItem(item);\n            return true;\n        }\n        return false;\n    }\n\n    /**\n     * Helper method to find an item by ID recursively through the navigation tree.\n     * @param items Array of navigation items to search through.\n     * @param id The ID to search for.\n     * @returns The found item or null.\n     */\n    private _findItemById(items: FdbNavigationListItem[], id: string): FdbNavigationListItem | null {\n        for (const item of items) {\n            if (item.id() === id) {\n                return item;\n            }\n\n            if (item.listItems$().length > 0) {\n                const childItems = item.listItems$().filter((child): child is FdbNavigationListItem => child !== null);\n                const found = this._findItemById(childItems, id);\n                if (found) {\n                    return found;\n                }\n            }\n        }\n        return null;\n    }\n\n    /**\n     * Updates the list of items.\n     * Optionally inserts \"More\" button if overflow menu should be rendered.\n     * @param showMoreButton Whether to add \"More\" button.\n     */\n    private _resetItemsList(showMoreButton: Nullable<FdbNavigationListItem>): void {\n        const items = [...this._navigationItems.toArray()];\n        const showMoreButtonIndex = items.findIndex((item) => item.type === 'showMore');\n        if (!showMoreButton) {\n            if (showMoreButtonIndex === -1) {\n                return;\n            }\n\n            items.splice(showMoreButtonIndex, 1);\n\n            this._navigationItems.reset(items);\n        } else {\n            if (showMoreButtonIndex > -1) {\n                return;\n            }\n\n            // Find last list item from the `Start` container.\n            const insertionIndex = items.findIndex((item) => {\n                const listItems = item.placementContainer?.listItems$();\n                if (!listItems) {\n                    return;\n                }\n\n                return item.placementContainer?.placement === 'start' && listItems[listItems.length - 1] === item;\n            });\n\n            if (insertionIndex === -1) {\n                return;\n            }\n\n            items.splice(insertionIndex, 0, showMoreButton);\n            this._navigationItems.reset(items);\n        }\n    }\n}\n","<ng-content></ng-content>\n","import {\n    AbstractDataProvider,\n    BaseDataSource,\n    DataProvider,\n    DataSourceParser,\n    isDataSource\n} from '@fundamental-ngx/cdk/data-source';\nimport { Observable, isObservable } from 'rxjs';\n\nexport type NavigationDataSourceItem<T extends Record<string, any> = Record<string, any>> = {\n    placement: 'start' | 'end';\n    children?: NavigationDataSourceItem<T>[];\n} & T;\n\nexport class FdbNavigationDataSource<T extends NavigationDataSourceItem> extends BaseDataSource<T> {\n    /** @hidden */\n    limitless = false;\n    /** @hidden */\n    constructor(public dataProvider: AbstractDataProvider<T>) {\n        super(dataProvider);\n    }\n}\n\nexport class ArrayNavigationDataSource<T extends NavigationDataSourceItem> extends FdbNavigationDataSource<T> {\n    /** @hidden */\n    constructor(data: T[]) {\n        super(new DataProvider(data));\n    }\n}\n\nexport class ObservableNavigationDataSDataSource<\n    T extends NavigationDataSourceItem\n> extends FdbNavigationDataSource<T> {\n    /** @hidden */\n    constructor(data: Observable<T[]>) {\n        super(new DataProvider(data));\n    }\n}\n\n/**\n * Type of acceptable objects as a datasource for the Navigation component.\n */\nexport type FdbNavigationDataSAcceptableDataSource<T extends NavigationDataSourceItem> =\n    | FdbNavigationDataSource<T>\n    | Observable<T[]>\n    | T[];\n\nexport class NavigationDataSourceParser<T extends NavigationDataSourceItem>\n    implements DataSourceParser<T, FdbNavigationDataSource<T>>\n{\n    /**\n     * Transforms plain array or observable into DataSource class.\n     * @param source\n     */\n    parse(source: FdbNavigationDataSAcceptableDataSource<T>): FdbNavigationDataSource<T> | undefined {\n        if (isDataSource(source)) {\n            return source as FdbNavigationDataSource<T>;\n        }\n\n        if (Array.isArray(source)) {\n            return new ArrayNavigationDataSource<T>(source);\n        }\n\n        if (isObservable(source)) {\n            return new ObservableNavigationDataSDataSource<T>(source);\n        }\n\n        return undefined;\n    }\n}\n","import { Directive } from '@angular/core';\nimport { DataSourceDirective, FD_DATA_SOURCE_TRANSFORMER } from '@fundamental-ngx/cdk/data-source';\nimport {\n    FdbNavigationDataSource,\n    NavigationDataSourceItem,\n    NavigationDataSourceParser\n} from '../models/navigation-data-source-item.model';\n\n@Directive({\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: 'fdb-navigation[dataSource]',\n    standalone: true,\n    providers: [\n        {\n            provide: FD_DATA_SOURCE_TRANSFORMER,\n            useClass: NavigationDataSourceParser\n        }\n    ]\n})\nexport class NavigationListDataSourceDirective<T extends Record<string, any>> extends DataSourceDirective<\n    NavigationDataSourceItem<T>,\n    FdbNavigationDataSource<NavigationDataSourceItem<T>>\n> {}\n","import { NavigationContentEndComponent } from './components/navigation-end/navigation-content-end.component';\nimport { NavigationListItemComponent } from './components/navigation-item/navigation-list-item.component';\nimport {\n    NavigationLinkComponent,\n    NavigationLinkRefDirective\n} from './components/navigation-link/navigation-link.component';\nimport { NavigationContentStartComponent } from './components/navigation-start/navigation-content-start.component';\nimport { NavigationComponent } from './components/navigation/navigation.component';\nimport { NavigationListDataSourceDirective } from './directives/navigation-list-data-source.directive';\nimport { NavigationListItemRefDirective } from './directives/navigation-list-item-ref.directive';\n\nexport * from './components/navigation-end/navigation-content-end.component';\nexport * from './components/navigation-item/navigation-list-item.component';\nexport * from './components/navigation-link/navigation-link.component';\nexport * from './components/navigation-start/navigation-content-start.component';\nexport * from './components/navigation/navigation.component';\nexport * from './directives/navigation-list-data-source.directive';\nexport * from './directives/navigation-list-item-ref.directive';\nexport * from './models/navigation-content-container.class';\nexport * from './models/navigation-data-source-item.model';\nexport * from './models/navigation-list-item.class';\nexport * from './models/navigation.types';\n\nexport * from './components/navigation-list/navigation-list.component';\n\nexport * from './components/navigation-more-button/navigation-more-button.component';\n\nexport const FDB_NAVIGATION = [\n    NavigationComponent,\n    NavigationContentStartComponent,\n    NavigationContentEndComponent,\n    NavigationLinkComponent,\n    NavigationLinkRefDirective,\n    NavigationListItemComponent,\n    NavigationListItemRefDirective,\n    NavigationListDataSourceDirective\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["RtlService","KeyUtil","i1"],"mappings":"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"}