@fundamental-ngx/btp 0.55.4 → 0.55.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"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/models/navigation-data-source-item.model.ts","../../../../libs/btp/navigation/directives/navigation-list-data-source.directive.ts","../../../../libs/btp/navigation/components/navigation/navigation.component.ts","../../../../libs/btp/navigation/components/navigation/navigation.component.html","../../../../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 { 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 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 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\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 /** Navigation container reference. */\n readonly navigation = inject(FdbNavigation);\n}\n\nexport abstract class FdbNavigationListItemCmp extends FdbNavigationListItem {}\n","import { Injectable } 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","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 EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n ViewEncapsulation,\n booleanAttribute,\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 { 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 @Input()\n role: 'tree' | 'menubar' = 'tree';\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 /** 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 /** 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 list item.\n */\n private readonly _listItem = inject(FdbNavigationListItem, {\n optional: true\n });\n\n /** @hidden */\n private readonly _rtl = 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 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 const isExpandAction = KeyUtil.isKeyCode(event, this._rtl?.rtl.value ? LEFT_ARROW : RIGHT_ARROW);\n\n if (!isExpandAction) {\n this._listItem?.focusLink(true);\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 /** @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$()\">\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\"></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 { 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 fdb-navigation-list [listItems]=\"allListItems$()\"></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 /** @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 * Item definition.\n */\n @Input()\n item: any;\n\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, LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n Signal,\n TemplateRef,\n ViewEncapsulation,\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]',\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 role: '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 /** @hidden */\n @HostBinding('attr.tabindex')\n private get _tabIndex(): number {\n return this._listItemComponent?.popoverOpen$() || this._navigation.getActiveItem()?.link$() === this ? 0 : -1;\n }\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 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')\n private _clickHandler(): void {\n if (this.inPopover || !this._listItemComponent?.isVisible$() || this._listItemComponent?.isOverflow$()) {\n this._navigation.closePopups();\n }\n // Ignore click if link has URL applied to it.\n if (this.routerLink) {\n return;\n }\n this._listItemComponent?.toggleExpanded();\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n private _keyDownHandler(event: KeyboardEvent): void {\n if (this.inPopover && KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n this._listItemComponent?.popoverLinkArrowDown();\n return;\n }\n if (!KeyUtil.isKeyCode(event, [LEFT_ARROW, RIGHT_ARROW])) {\n return;\n }\n\n const expansionKey = this._rtl?.rtl.value ? RIGHT_ARROW : LEFT_ARROW;\n\n this._listItemComponent?.keyboardExpanded(KeyUtil.isKeyCode(event, expansionKey));\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._listItemComponent?.unregisterLink(this);\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, LEFT_ARROW, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n DestroyRef,\n Directive,\n ElementRef,\n Input,\n NgZone,\n OnDestroy,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n effect,\n inject,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NestedButtonDirective } from '@fundamental-ngx/btp/button';\nimport { HasElementRef, KeyUtil, Nullable, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { PopoverBodyComponent, PopoverComponent } from '@fundamental-ngx/core/popover';\nimport { Placement } from '@fundamental-ngx/core/shared';\nimport { Observable, asyncScheduler, filter, observeOn, startWith, take } 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\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 IconComponent,\n ButtonComponent,\n NestedButtonDirective,\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 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.selected$.set(selected);\n }\n\n get selected(): boolean {\n return this.selected$();\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 this._onZoneStable().subscribe(() => {\n this.renderer$.set(renderer || null);\n });\n }\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 /** @hidden */\n readonly _toggleIcon$ = computed(() => {\n if (this.expandedAttr$()) {\n return 'slim-arrow-down';\n }\n return this._rtl$() ? 'slim-arrow-left' : 'slim-arrow-right';\n });\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 /**\n * Whether the item is navigatable via the keyboard.\n */\n get skipNavigation(): boolean {\n return this.spacer || this.separator;\n }\n\n /** aria-expanded attribute value. */\n readonly expandedAttr$ = computed(() =>\n this.navigation.isSnapped$() ? this.popoverOpen$() && !this.isOverflow$() : this.expanded$()\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 /** Selected Signal. */\n readonly selected$ = signal(false);\n\n /**\n * @hidden\n * Popover position. Changes based on rtl value.\n */\n readonly _popoverPlacement$ = computed<Placement>(() => (this._rtl$() ? 'left-start' : 'right-start'));\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 /** @hidden */\n private readonly _home$ = 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 _zone = inject(NgZone);\n\n private readonly _rtlService = inject(RtlService, {\n optional: true\n });\n\n /** @hidden */\n private readonly _rtl$ = computed<boolean>(() => !!this._rtlService?.rtlSignal());\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 _destroyRef = inject(DestroyRef);\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\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._rtl$() ? RIGHT_ARROW : LEFT_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.hasChildren$()) {\n return;\n }\n this.expanded$.update((expanded) => !expanded);\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 this.popoverOpen$.set(isOpen);\n if (!isOpen) {\n return;\n }\n\n this._onZoneStable().subscribe(() => {\n popover.popoverBody._focusFirstTabbableElement(true);\n });\n }\n\n private _focusPopoverLink(): void {\n this._links.find((link) => link.inPopover)?.elementRef.nativeElement.focus();\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 /** @hidden */\n private _onZoneStable(): Observable<void> {\n return this._zone.onStable.pipe(\n startWith(this._zone.isStable),\n observeOn(asyncScheduler),\n take(1),\n takeUntilDestroyed(this._destroyRef)\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--child]=\"normalizedLevel$() > 2\"\n [class.fd-navigation__item--overflow]=\"isOverflow$()\"\n [class.fd-navigation__item--with-expander]=\"!!link$()?.routerLink && hasChildren$()\"\n [attr.aria-level]=\"level$()\"\n [attr.aria-selected]=\"isActiveAttr$()\"\n [attr.aria-expanded]=\"expandedAttr$()\"\n [attr.normalized-level]=\"normalizedLevel$()\"\n (focusin)=\"_focusInHandler()\"\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]=\"false\"\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 >\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 (!!showToggleButton && !!link$()?.routerLink && hasChildren$()) {\n <button (click)=\"toggleExpanded()\" fd-button fdbNestedButton class=\"fd-navigation__expander\">\n <fd-icon [glyph]=\"_toggleIcon$()\"></fd-icon>\n </button>\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 fdb-navigation-list [listItems]=\"listItems$()\" parentItems></ul>\n } @else {\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 class=\"fd-navigation__list-container fd-navigation__list-container--submenu fd-menu__sublist\">\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 class=\"fd-navigation__list-wrapper\">\n @if (navigation.isSnapped$() && !isOverflow$()) {\n <!-- If opener link itself is active, project aria-selected attribute to link repeater too. -->\n <div\n class=\"fd-navigation__item fd-navigation__item--title fd-navigation__item--child\"\n [attr.aria-selected]=\"link$()?.isActive$() || selected$()\"\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]=\"normalizedLevel$() > 2\"\n (keydown)=\"(false)\"\n (focusBefore)=\"_focusBeforeList()\"\n [withKeyboardNavigation]=\"keyboardNavigation\"\n ></ul>\n </div>\n</ng-template>\n","import { LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport { NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n Input,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\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 { PopoverBodyComponent, PopoverComponent } from '@fundamental-ngx/core/popover';\nimport { Placement } from '@fundamental-ngx/core/shared';\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 {\n /** @hidden */\n @Input()\n listItems: FdbNavigationListItem[] = [];\n\n /** @hidden */\n @ViewChild(FdbNavigationItemLink)\n private readonly _link: Nullable<FdbNavigationItemLink>;\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 /** @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 /**\n * @hidden\n * Popover position. Changes based on rtl value.\n */\n readonly _popoverPlacement$ = computed<Placement>(() => (this._rtl$() ? 'left-start' : 'right-start'));\n\n /** @hidden */\n private _popoverClicked = false;\n\n /** @hidden */\n private readonly _rtlService = inject(RtlService, {\n optional: true\n });\n\n /** @hidden */\n private readonly _rtl$ = computed<boolean>(() => !!this._rtlService?.rtlSignal());\n\n /** @hidden */\n constructor() {\n effect(() => {\n if (this.popoverOpen$() && !this._popoverClicked) {\n setTimeout(() => {\n this.listItems[0]?.focus();\n });\n }\n this._popoverClicked = false;\n });\n\n this._navigation.closeAllPopups.pipe(takeUntilDestroyed(inject(DestroyRef))).subscribe(() => {\n this.popoverOpen$.set(false);\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(): void {}\n\n /** @hidden */\n _keydownPopoverToggle(event: KeyboardEvent): void {\n if (!KeyUtil.isKeyCode(event, [LEFT_ARROW, RIGHT_ARROW])) {\n return;\n }\n const isRtl = this._rtl$() || false;\n\n const isOpenAction = KeyUtil.isKeyCode(event, isRtl ? LEFT_ARROW : RIGHT_ARROW);\n\n // If user clicked on popover opener button, and then tried to use keyboard, simply shift focus to the first item in the popover menu.\n if (isOpenAction && this.popoverOpen$()) {\n this.listItems[0]?.focus();\n return;\n }\n\n this.popoverOpen$.set(isOpenAction);\n }\n}\n","<div\n aria-current=\"page\"\n role=\"menuitem\"\n class=\"fd-navigation__item\"\n [attr.aria-expanded]=\"popoverOpen$()\"\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 [trigger]=\"trigger\"\n [triggers]=\"[]\"\n [isOpen]=\"popoverOpen$()\"\n (isOpenChange)=\"popoverOpen$.set($event)\"\n [focusTrapped]=\"true\"\n [noArrow]=\"false\"\n additionalBodyClass=\"fd-navigation__list-container fd-navigation__list-container--menu\"\n [placement]=\"_popoverPlacement$()\"\n >\n <fd-popover-body [ngClass]=\"_navigation.classList$()\">\n <ul\n fdb-navigation-list\n withKeyboardNavigation\n [parentItems]=\"true\"\n class=\"fd-menu__list\"\n [listItems]=\"listItems\"\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 NgZone,\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 { asyncScheduler, debounceTime, filter, merge, observeOn, startWith, switchMap, take } 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 /** @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 private readonly _zone = inject(NgZone);\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(switchMap(() => this._zone.onStable.pipe(startWith(this._zone.isStable), take(1))))\n .subscribe(() => {\n this._calculateVisibleItems();\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 availableSpace = availableSpace + item?.marker?.elementRef.nativeElement.clientHeight;\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","<ul fdb-navigation-list [listItems]=\"visibleItems$()\"></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 {\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 { FocusKeyManager } from '@angular/cdk/a11y';\nimport { DOWN_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n QueryList,\n Signal,\n ViewEncapsulation,\n computed,\n effect,\n inject,\n signal\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { FdbViewMode } from '@fundamental-ngx/btp/shared';\nimport { CssClassBuilder, KeyUtil, Nullable, applyCssClass } from '@fundamental-ngx/cdk/utils';\nimport { Subject, map, of } from 'rxjs';\nimport { NavigationListDataSourceDirective } from '../../directives/navigation-list-data-source.directive';\nimport {\n NavigationListItemDirective,\n NavigationListItemRefDirective\n} from '../../directives/navigation-list-item-ref.directive';\nimport { NavigationDataSourceItem } from '../../models/navigation-data-source-item.model';\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';\nimport { NavigationContentEndComponent } from '../navigation-end/navigation-content-end.component';\nimport { NavigationContentStartComponent } from '../navigation-start/navigation-content-start.component';\n\ninterface GroupedDataSourceItems {\n start: NavigationDataSourceItem[];\n end: NavigationDataSourceItem[];\n}\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 imports: [\n NgTemplateOutlet,\n NavigationListItemDirective,\n NavigationContentStartComponent,\n NavigationContentEndComponent\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 * Navigation mode.\n */\n @Input()\n mode: FdbViewMode = '';\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 /** @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 /** @hidden */\n readonly dataSourceItems: Signal<GroupedDataSourceItems | undefined>;\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 /**\n * @hidden\n * Data source directive.\n */\n private readonly _dataSourceDirective = inject(NavigationListDataSourceDirective, {\n optional: true,\n self: true\n });\n\n /** @hidden */\n private _keyManager: FocusKeyManager<FdbNavigationListItem>;\n\n /** @hidden */\n constructor() {\n super();\n this.dataSourceItems = toSignal(\n !this._dataSourceDirective\n ? of({ start: [], end: [] } as GroupedDataSourceItems)\n : this._dataSourceDirective.dataChanged$.asObservable().pipe(\n map((data) => {\n const groupedItems: GroupedDataSourceItems = data.reduce(\n (acc, item) => {\n acc[item.placement].push(item);\n return acc;\n },\n { start: [], end: [] } as GroupedDataSourceItems\n );\n return groupedItems;\n })\n )\n );\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--${this.mode}` : '',\n `fd-navigation--${this.state}`\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 private _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 this._dataSourceDirective?.dataSourceProvider?.match();\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 * 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@if (_navigationItemRenderer()) {\n @if (dataSourceItems()?.start; as startItems) {\n <fdb-navigation-content-start [contentProjected]=\"false\">\n @for (item of startItems; track item) {\n <ng-container fdbNavigationListItem [item]=\"item\" #listItemDirective=\"fdbListItem\">\n <ng-template\n [ngTemplateOutlet]=\"itemRenderer\"\n [ngTemplateOutletContext]=\"{ $implicit: item, injector: listItemDirective.injector }\"\n [ngTemplateOutletInjector]=\"listItemDirective.injector\"\n ></ng-template>\n </ng-container>\n }\n </fdb-navigation-content-start>\n }\n @if (dataSourceItems()?.end; as endItems) {\n <fdb-navigation-content-end [contentProjected]=\"false\">\n @for (item of endItems; track item) {\n <ng-container fdbNavigationListItem [item]=\"item\" #listItemDirective=\"fdbListItem\">\n <ng-template\n [ngTemplateOutlet]=\"itemRenderer\"\n [ngTemplateOutletContext]=\"{ $implicit: item, injector: listItemDirective.injector }\"\n [ngTemplateOutletInjector]=\"listItemDirective.injector\"\n ></ng-template>\n </ng-container>\n }\n </fdb-navigation-content-end>\n }\n}\n\n<ng-template #itemRenderer let-item let-injector=\"injector\">\n <ng-template\n [ngTemplateOutlet]=\"_navigationItemRenderer()?.templateRef || null\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n [ngTemplateOutletInjector]=\"injector\"\n ></ng-template>\n @if (item.children && item.children.length > 0) {\n @for (child of item.children; track child) {\n <ng-container fdbNavigationListItem [item]=\"child\" #listItemDirective=\"fdbListItem\">\n <ng-template\n [ngTemplateOutlet]=\"itemRenderer\"\n [ngTemplateOutletContext]=\"{ $implicit: child, injector: listItemDirective.injector }\"\n [ngTemplateOutletInjector]=\"listItemDirective.injector\"\n ></ng-template>\n </ng-container>\n }\n }\n</ng-template>\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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"}
1
+ {"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/models/navigation-data-source-item.model.ts","../../../../libs/btp/navigation/directives/navigation-list-data-source.directive.ts","../../../../libs/btp/navigation/components/navigation/navigation.component.ts","../../../../libs/btp/navigation/components/navigation/navigation.component.html","../../../../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 { 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 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 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\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 /** Navigation container reference. */\n readonly navigation = inject(FdbNavigation);\n}\n\nexport abstract class FdbNavigationListItemCmp extends FdbNavigationListItem {}\n","import { Injectable } 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","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 EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n ViewEncapsulation,\n booleanAttribute,\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 { 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 @Input()\n role: 'tree' | 'menubar' = 'tree';\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 /** 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 /** 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 list item.\n */\n private readonly _listItem = inject(FdbNavigationListItem, {\n optional: true\n });\n\n /** @hidden */\n private readonly _rtl = 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 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 const isExpandAction = KeyUtil.isKeyCode(event, this._rtl?.rtl.value ? LEFT_ARROW : RIGHT_ARROW);\n\n if (!isExpandAction) {\n this._listItem?.focusLink(true);\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 /** @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$()\">\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\"></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 { 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 fdb-navigation-list [listItems]=\"allListItems$()\"></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 /** @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 * Item definition.\n */\n @Input()\n item: any;\n\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, LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n Signal,\n TemplateRef,\n ViewEncapsulation,\n booleanAttribute,\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 /** @hidden */\n @HostBinding('attr.tabindex')\n private get _tabIndex(): number {\n return this._listItemComponent?.popoverOpen$() || this._navigation.getActiveItem()?.link$() === this ? 0 : -1;\n }\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 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')\n private _clickHandler(): void {\n if (this.inPopover || !this._listItemComponent?.isVisible$() || this._listItemComponent?.isOverflow$()) {\n this._navigation.closePopups();\n }\n // Ignore click if link has URL applied to it.\n if (this.routerLink) {\n return;\n }\n this._listItemComponent?.toggleExpanded();\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n private _keyDownHandler(event: KeyboardEvent): void {\n if (this.inPopover && KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n this._listItemComponent?.popoverLinkArrowDown();\n return;\n }\n if (!KeyUtil.isKeyCode(event, [LEFT_ARROW, RIGHT_ARROW])) {\n return;\n }\n\n const expansionKey = this._rtl?.rtl.value ? RIGHT_ARROW : LEFT_ARROW;\n\n this._listItemComponent?.keyboardExpanded(KeyUtil.isKeyCode(event, expansionKey));\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._listItemComponent?.unregisterLink(this);\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, LEFT_ARROW, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n DestroyRef,\n Directive,\n ElementRef,\n Input,\n NgZone,\n OnDestroy,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n effect,\n inject,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NestedButtonDirective } from '@fundamental-ngx/btp/button';\nimport { HasElementRef, KeyUtil, Nullable, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { PopoverBodyComponent, PopoverComponent } from '@fundamental-ngx/core/popover';\nimport { Placement } from '@fundamental-ngx/core/shared';\nimport { Observable, asyncScheduler, filter, observeOn, startWith, take } 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\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 IconComponent,\n ButtonComponent,\n NestedButtonDirective,\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.selected$.set(selected);\n }\n\n get selected(): boolean {\n return this.selected$();\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 this._onZoneStable().subscribe(() => {\n this.renderer$.set(renderer || null);\n });\n }\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 /** @hidden */\n readonly _toggleIcon$ = computed(() => {\n if (this.expandedAttr$()) {\n return 'slim-arrow-down';\n }\n return this._rtl$() ? 'slim-arrow-left' : 'slim-arrow-right';\n });\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 /**\n * Whether the item is navigatable via the keyboard.\n */\n get skipNavigation(): boolean {\n return this.spacer || this.separator;\n }\n\n /** aria-expanded attribute value. */\n readonly expandedAttr$ = computed(() =>\n this.navigation.isSnapped$() ? this.popoverOpen$() && !this.isOverflow$() : this.expanded$()\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 /** Selected Signal. */\n readonly selected$ = signal(false);\n\n /** @hidden */\n readonly quickCreate$ = signal(false);\n\n /**\n * @hidden\n * Popover position. Changes based on rtl value.\n */\n readonly _popoverPlacement$ = computed<Placement>(() => (this._rtl$() ? 'left-start' : 'right-start'));\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 /** @hidden */\n private readonly _home$ = 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 _zone = inject(NgZone);\n\n private readonly _rtlService = inject(RtlService, {\n optional: true\n });\n\n /** @hidden */\n private readonly _rtl$ = computed<boolean>(() => !!this._rtlService?.rtlSignal());\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 _destroyRef = inject(DestroyRef);\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\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._rtl$() ? RIGHT_ARROW : LEFT_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.hasChildren$()) {\n return;\n }\n this.expanded$.update((expanded) => !expanded);\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 this.popoverOpen$.set(isOpen);\n if (!isOpen) {\n return;\n }\n\n this._onZoneStable().subscribe(() => {\n popover.popoverBody._focusFirstTabbableElement(true);\n });\n }\n\n private _focusPopoverLink(): void {\n this._links.find((link) => link.inPopover)?.elementRef.nativeElement.focus();\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 /** @hidden */\n private _onZoneStable(): Observable<void> {\n return this._zone.onStable.pipe(\n startWith(this._zone.isStable),\n observeOn(asyncScheduler),\n take(1),\n takeUntilDestroyed(this._destroyRef)\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 [attr.aria-level]=\"level$()\"\n [attr.aria-selected]=\"isActiveAttr$()\"\n [attr.aria-expanded]=\"expandedAttr$()\"\n [attr.normalized-level]=\"normalizedLevel$()\"\n (focusin)=\"_focusInHandler()\"\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]=\"false\"\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 >\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 aria-label=\"expand/collapse children\"\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 fdb-navigation-list [listItems]=\"listItems$()\" parentItems></ul>\n } @else {\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 class=\"fd-navigation__list-container fd-navigation__list-container--submenu fd-menu__sublist\">\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 class=\"fd-navigation__list-wrapper\">\n @if (navigation.isSnapped$() && !isOverflow$()) {\n <!-- If opener link itself is active, project aria-selected attribute to link repeater too. -->\n <div\n class=\"fd-navigation__item fd-navigation__item--title fd-navigation__item--child\"\n [attr.aria-selected]=\"link$()?.isActive$() || selected$()\"\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]=\"normalizedLevel$() > 2\"\n (keydown)=\"(false)\"\n (focusBefore)=\"_focusBeforeList()\"\n [withKeyboardNavigation]=\"keyboardNavigation\"\n ></ul>\n </div>\n</ng-template>\n","import { LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport { NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n Input,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\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 { PopoverBodyComponent, PopoverComponent } from '@fundamental-ngx/core/popover';\nimport { Placement } from '@fundamental-ngx/core/shared';\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 {\n /** @hidden */\n @Input()\n listItems: FdbNavigationListItem[] = [];\n\n /** @hidden */\n @ViewChild(FdbNavigationItemLink)\n private readonly _link: Nullable<FdbNavigationItemLink>;\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 /** @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 /**\n * @hidden\n * Popover position. Changes based on rtl value.\n */\n readonly _popoverPlacement$ = computed<Placement>(() => (this._rtl$() ? 'left-start' : 'right-start'));\n\n /** @hidden */\n private _popoverClicked = false;\n\n /** @hidden */\n private readonly _rtlService = inject(RtlService, {\n optional: true\n });\n\n /** @hidden */\n private readonly _rtl$ = computed<boolean>(() => !!this._rtlService?.rtlSignal());\n\n /** @hidden */\n constructor() {\n effect(() => {\n if (this.popoverOpen$() && !this._popoverClicked) {\n setTimeout(() => {\n this.listItems[0]?.focus();\n });\n }\n this._popoverClicked = false;\n });\n\n this._navigation.closeAllPopups.pipe(takeUntilDestroyed(inject(DestroyRef))).subscribe(() => {\n this.popoverOpen$.set(false);\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(): void {}\n\n /** @hidden */\n _keydownPopoverToggle(event: KeyboardEvent): void {\n if (!KeyUtil.isKeyCode(event, [LEFT_ARROW, RIGHT_ARROW])) {\n return;\n }\n const isRtl = this._rtl$() || false;\n\n const isOpenAction = KeyUtil.isKeyCode(event, isRtl ? LEFT_ARROW : RIGHT_ARROW);\n\n // If user clicked on popover opener button, and then tried to use keyboard, simply shift focus to the first item in the popover menu.\n if (isOpenAction && this.popoverOpen$()) {\n this.listItems[0]?.focus();\n return;\n }\n\n this.popoverOpen$.set(isOpenAction);\n }\n}\n","<div\n aria-current=\"page\"\n role=\"menuitem\"\n class=\"fd-navigation__item\"\n [attr.aria-expanded]=\"popoverOpen$()\"\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 [trigger]=\"trigger\"\n [triggers]=\"[]\"\n [isOpen]=\"popoverOpen$()\"\n (isOpenChange)=\"popoverOpen$.set($event)\"\n [focusTrapped]=\"true\"\n [noArrow]=\"false\"\n additionalBodyClass=\"fd-navigation__list-container fd-navigation__list-container--menu\"\n [placement]=\"_popoverPlacement$()\"\n >\n <fd-popover-body [ngClass]=\"_navigation.classList$()\">\n <ul\n fdb-navigation-list\n withKeyboardNavigation\n [parentItems]=\"true\"\n class=\"fd-menu__list\"\n [listItems]=\"listItems\"\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 NgZone,\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 { asyncScheduler, debounceTime, filter, merge, observeOn, startWith, switchMap, take } 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 /** @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 private readonly _zone = inject(NgZone);\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(switchMap(() => this._zone.onStable.pipe(startWith(this._zone.isStable), take(1))))\n .subscribe(() => {\n this._calculateVisibleItems();\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 availableSpace = availableSpace + item?.marker?.elementRef.nativeElement.clientHeight;\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","<ul fdb-navigation-list [listItems]=\"visibleItems$()\"></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 {\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 { FocusKeyManager } from '@angular/cdk/a11y';\nimport { DOWN_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n QueryList,\n Signal,\n ViewEncapsulation,\n computed,\n effect,\n inject,\n signal\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { FdbViewMode } from '@fundamental-ngx/btp/shared';\nimport { CssClassBuilder, KeyUtil, Nullable, applyCssClass } from '@fundamental-ngx/cdk/utils';\nimport { Subject, map, of } from 'rxjs';\nimport { NavigationListDataSourceDirective } from '../../directives/navigation-list-data-source.directive';\nimport {\n NavigationListItemDirective,\n NavigationListItemRefDirective\n} from '../../directives/navigation-list-item-ref.directive';\nimport { NavigationDataSourceItem } from '../../models/navigation-data-source-item.model';\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';\nimport { NavigationContentEndComponent } from '../navigation-end/navigation-content-end.component';\nimport { NavigationContentStartComponent } from '../navigation-start/navigation-content-start.component';\n\ninterface GroupedDataSourceItems {\n start: NavigationDataSourceItem[];\n end: NavigationDataSourceItem[];\n}\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 imports: [\n NgTemplateOutlet,\n NavigationListItemDirective,\n NavigationContentStartComponent,\n NavigationContentEndComponent\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 * Navigation mode.\n */\n @Input()\n mode: FdbViewMode = '';\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 /** @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 /** @hidden */\n readonly dataSourceItems: Signal<GroupedDataSourceItems | undefined>;\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 /**\n * @hidden\n * Data source directive.\n */\n private readonly _dataSourceDirective = inject(NavigationListDataSourceDirective, {\n optional: true,\n self: true\n });\n\n /** @hidden */\n private _keyManager: FocusKeyManager<FdbNavigationListItem>;\n\n /** @hidden */\n constructor() {\n super();\n this.dataSourceItems = toSignal(\n !this._dataSourceDirective\n ? of({ start: [], end: [] } as GroupedDataSourceItems)\n : this._dataSourceDirective.dataChanged$.asObservable().pipe(\n map((data) => {\n const groupedItems: GroupedDataSourceItems = data.reduce(\n (acc, item) => {\n acc[item.placement].push(item);\n return acc;\n },\n { start: [], end: [] } as GroupedDataSourceItems\n );\n return groupedItems;\n })\n )\n );\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 ].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 private _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 this._dataSourceDirective?.dataSourceProvider?.match();\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 * 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@if (_navigationItemRenderer()) {\n @if (dataSourceItems()?.start; as startItems) {\n <fdb-navigation-content-start [contentProjected]=\"false\">\n @for (item of startItems; track item) {\n <ng-container fdbNavigationListItem [item]=\"item\" #listItemDirective=\"fdbListItem\">\n <ng-template\n [ngTemplateOutlet]=\"itemRenderer\"\n [ngTemplateOutletContext]=\"{ $implicit: item, injector: listItemDirective.injector }\"\n [ngTemplateOutletInjector]=\"listItemDirective.injector\"\n ></ng-template>\n </ng-container>\n }\n </fdb-navigation-content-start>\n }\n @if (dataSourceItems()?.end; as endItems) {\n <fdb-navigation-content-end [contentProjected]=\"false\">\n @for (item of endItems; track item) {\n <ng-container fdbNavigationListItem [item]=\"item\" #listItemDirective=\"fdbListItem\">\n <ng-template\n [ngTemplateOutlet]=\"itemRenderer\"\n [ngTemplateOutletContext]=\"{ $implicit: item, injector: listItemDirective.injector }\"\n [ngTemplateOutletInjector]=\"listItemDirective.injector\"\n ></ng-template>\n </ng-container>\n }\n </fdb-navigation-content-end>\n }\n}\n\n<ng-template #itemRenderer let-item let-injector=\"injector\">\n <ng-template\n [ngTemplateOutlet]=\"_navigationItemRenderer()?.templateRef || null\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n [ngTemplateOutletInjector]=\"injector\"\n ></ng-template>\n @if (item.children && item.children.length > 0) {\n @for (child of item.children; track child) {\n <ng-container fdbNavigationListItem [item]=\"child\" #listItemDirective=\"fdbListItem\">\n <ng-template\n [ngTemplateOutlet]=\"itemRenderer\"\n [ngTemplateOutletContext]=\"{ $implicit: child, injector: listItemDirective.injector }\"\n [ngTemplateOutletInjector]=\"listItemDirective.injector\"\n ></ng-template>\n </ng-container>\n }\n }\n</ng-template>\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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"}