@fundamental-ngx/btp 0.58.0-rc.6 → 0.58.0-rc.61

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,12 +1,12 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { ElementRef, Signal, TemplateRef, OnDestroy, OnChanges, AfterViewInit, EventEmitter, SimpleChanges, QueryList, WritableSignal, DestroyRef, AfterContentInit, OnInit } from '@angular/core';
3
+ import { Nullable as Nullable$1 } from '@fundamental-ngx/cdk';
3
4
  import { FocusableOption, FocusOrigin } from '@angular/cdk/a11y';
4
5
  import { HasElementRef, Nullable, CssClassBuilder } from '@fundamental-ngx/cdk/utils';
5
6
  import { PopoverComponent } from '@fundamental-ngx/core/popover';
6
7
  import { Placement } from '@fundamental-ngx/core/shared';
7
8
  import * as i1 from '@angular/router';
8
9
  import { RouterLink } from '@angular/router';
9
- import { Nullable as Nullable$1 } from '@fundamental-ngx/cdk';
10
10
  import { IconFont } from '@fundamental-ngx/core/icon';
11
11
  import { Subject, Observable } from 'rxjs';
12
12
  import * as i1$1 from '@fundamental-ngx/core/scrollbar';
@@ -37,8 +37,6 @@ declare class NavigationLinkComponent extends FdbNavigationItemLink implements O
37
37
  external: boolean;
38
38
  /** Whether it's a quick create button. */
39
39
  quickCreate: boolean;
40
- /** @hidden */
41
- private get _tabIndex();
42
40
  /** Whether the link is inside popover. */
43
41
  get inPopover(): boolean;
44
42
  /** Element reference. */
@@ -56,13 +54,21 @@ declare class NavigationLinkComponent extends FdbNavigationItemLink implements O
56
54
  /** @hidden */
57
55
  private readonly _navigation;
58
56
  /** @hidden */
57
+ private _renderer;
58
+ /** @hidden */
59
+ private _tabIndexEffect;
60
+ /** @hidden */
59
61
  constructor();
60
62
  /** @hidden */
61
- private _clickHandler;
63
+ protected _clickHandler(event: Event): void;
62
64
  /** @hidden */
63
- private _keyDownHandler;
65
+ protected _keyDownHandler(event: Event): void;
64
66
  /** @hidden */
65
67
  ngOnDestroy(): void;
68
+ /** @hidden */
69
+ private _updateTabIndex;
70
+ /** @hidden */
71
+ private _canItemBeSelected;
66
72
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NavigationLinkComponent, never>;
67
73
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<NavigationLinkComponent, "a[fdb-navigation-link], button[fdb-navigation-link]", never, { "class": { "alias": "class"; "required": false; }; "glyph": { "alias": "glyph"; "required": false; }; "glyphFont": { "alias": "glyphFont"; "required": false; }; "external": { "alias": "external"; "required": false; }; "quickCreate": { "alias": "quickCreate"; "required": false; }; }, {}, never, ["*"], true, [{ directive: typeof i1.RouterLinkActive; inputs: {}; outputs: {}; }]>;
68
74
  static ngAcceptInputType_quickCreate: unknown;
@@ -73,7 +79,16 @@ declare class NavigationListComponent implements OnChanges, AfterViewInit, OnDes
73
79
  set _listItems(value: Nullable$1<FdbNavigationListItem>[]);
74
80
  get _listItems(): Nullable$1<FdbNavigationListItem>[];
75
81
  /** List Role. */
76
- role: 'tree' | 'menubar';
82
+ get _role(): 'tree' | 'menubar' | 'group' | 'menu';
83
+ role: 'tree' | 'menubar' | 'group' | 'menu';
84
+ /**
85
+ * aria-label for the navigation list.
86
+ */
87
+ ariaLabel: Nullable$1<string>;
88
+ /**
89
+ * aria-roledescription for the navigation list.
90
+ */
91
+ ariaRoleDescription: Nullable$1<string>;
77
92
  /** Whether the list is for parent items. */
78
93
  parentItems: boolean;
79
94
  /** Whether the list is for child items. */
@@ -82,10 +97,16 @@ declare class NavigationListComponent implements OnChanges, AfterViewInit, OnDes
82
97
  noGrow: boolean;
83
98
  /** Whether the list should handle keyboard navigation. */
84
99
  withKeyboardNavigation: boolean;
100
+ /** Reference to the More button component if this list is inside a More button popover. */
101
+ moreButtonRef: any;
85
102
  /** Event emitted when user tries to navigate to the item before the list itself. */
86
103
  focusBefore: EventEmitter<void>;
87
104
  /** Event emitted when user tries to navigate to the item after the list itself. */
88
105
  focusAfter: EventEmitter<void>;
106
+ /** Computed role based on navigation state and input role. */
107
+ readonly computedRole: _angular_core.Signal<"menu" | "tree" | "menubar" | "group">;
108
+ /** Computed aria-label for group lists based on parent item's text content. */
109
+ readonly computedAriaLabel: _angular_core.Signal<Nullable$1<string>>;
89
110
  /** List items. */
90
111
  readonly listItems$: _angular_core.WritableSignal<Nullable$1<FdbNavigationListItem>[]>;
91
112
  /** @hidden */
@@ -94,6 +115,11 @@ declare class NavigationListComponent implements OnChanges, AfterViewInit, OnDes
94
115
  private _keyManager;
95
116
  /** @hidden */
96
117
  private readonly _navigationService;
118
+ /**
119
+ * @hidden
120
+ * Parent navigation component.
121
+ */
122
+ private readonly _navigation;
97
123
  /**
98
124
  * @hidden
99
125
  * Parent list item.
@@ -106,6 +132,12 @@ declare class NavigationListComponent implements OnChanges, AfterViewInit, OnDes
106
132
  /** @hidden */
107
133
  private get _activeItemIndex();
108
134
  /** @hidden */
135
+ private _renderer;
136
+ /** @hidden */
137
+ private _elementRef;
138
+ /** @hidden */
139
+ private _ariaLabelEffect;
140
+ /** @hidden */
109
141
  constructor();
110
142
  /**
111
143
  * @hidden
@@ -120,10 +152,14 @@ declare class NavigationListComponent implements OnChanges, AfterViewInit, OnDes
120
152
  ngOnChanges(changes: SimpleChanges): void;
121
153
  /** @hidden */
122
154
  ngOnDestroy(): void;
155
+ /**
156
+ * Updates aria-label attribute manually to avoid expression changed errors
157
+ */
158
+ private _updateAriaLabel;
123
159
  /** @hidden */
124
160
  private _setupKeyManager;
125
161
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NavigationListComponent, never>;
126
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NavigationListComponent, "ul[fdb-navigation-list]", never, { "_listItems": { "alias": "listItems"; "required": false; }; "role": { "alias": "role"; "required": false; }; "parentItems": { "alias": "parentItems"; "required": false; }; "childItems": { "alias": "childItems"; "required": false; }; "noGrow": { "alias": "noGrow"; "required": false; }; "withKeyboardNavigation": { "alias": "withKeyboardNavigation"; "required": false; }; }, { "focusBefore": "focusBefore"; "focusAfter": "focusAfter"; }, never, ["*"], true, never>;
162
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NavigationListComponent, "ul[fdb-navigation-list]", never, { "_listItems": { "alias": "listItems"; "required": false; }; "role": { "alias": "role"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "ariaRoleDescription": { "alias": "ariaRoleDescription"; "required": false; }; "parentItems": { "alias": "parentItems"; "required": false; }; "childItems": { "alias": "childItems"; "required": false; }; "noGrow": { "alias": "noGrow"; "required": false; }; "withKeyboardNavigation": { "alias": "withKeyboardNavigation"; "required": false; }; "moreButtonRef": { "alias": "moreButtonRef"; "required": false; }; }, { "focusBefore": "focusBefore"; "focusAfter": "focusAfter"; }, never, ["*"], true, never>;
127
163
  static ngAcceptInputType_parentItems: unknown;
128
164
  static ngAcceptInputType_childItems: unknown;
129
165
  static ngAcceptInputType_noGrow: unknown;
@@ -163,6 +199,9 @@ declare class NavigationListItemComponent extends FdbNavigationListItem implemen
163
199
  /** Whether the item should be marked as selected. */
164
200
  set selected(selected: boolean);
165
201
  get selected(): boolean;
202
+ /** Whether the item is disabled. */
203
+ set disabled(disabled: boolean);
204
+ get disabled(): boolean;
166
205
  /** @hidden */
167
206
  listItems: QueryList<FdbNavigationListItem>;
168
207
  /** Link reference. */
@@ -173,6 +212,8 @@ declare class NavigationListItemComponent extends FdbNavigationListItem implemen
173
212
  linkRef: Nullable<NavigationLinkRefDirective>;
174
213
  /** Renderer template reference. */
175
214
  set renderer(renderer: TemplateRef<any> | undefined);
215
+ /** ID for the navigation list item. Default one is assigned if not provided. */
216
+ id: _angular_core.InputSignal<string>;
176
217
  /** Type of the list item. Whether its a standard item or a "show more" button container. */
177
218
  readonly type: 'item' | 'showMore';
178
219
  /** @hidden */
@@ -183,16 +224,47 @@ declare class NavigationListItemComponent extends FdbNavigationListItem implemen
183
224
  * Whether the list item is visible in the main navigation list container.
184
225
  */
185
226
  readonly isVisible$: _angular_core.Signal<boolean>;
227
+ /** Whether the item is disabled. Cached to avoid repeated signal calls. */
228
+ readonly _isDisabledCached$: _angular_core.Signal<boolean>;
186
229
  /**
187
230
  * Whether the item is navigatable via the keyboard.
188
231
  */
189
232
  get skipNavigation(): boolean;
190
233
  /** aria-expanded attribute value. */
191
234
  readonly expandedAttr$: _angular_core.Signal<boolean>;
235
+ /** Role attribute value based on navigation state. */
236
+ readonly roleAttr$: _angular_core.Signal<"treeitem" | "menuitem" | "menuitemradio">;
237
+ /** aria-checked attribute value for menuitemradio role. */
238
+ readonly ariaCheckedAttr$: _angular_core.Signal<any>;
239
+ /** aria-selected attribute value - kept in both expanded and snapped modes. */
240
+ readonly ariaSelectedAttr$: _angular_core.Signal<any>;
241
+ /** aria-level attribute value - only for treeitem role. */
242
+ readonly ariaLevelAttr$: _angular_core.Signal<any>;
243
+ /** aria-owns attribute value for items with children. */
244
+ readonly ariaOwnsAttr$: _angular_core.Signal<string | undefined>;
245
+ /** ID attribute for child lists. */
246
+ readonly childListIdAttr$: _angular_core.Signal<string | undefined>;
247
+ /** aria-label attribute value for snapped mode menuitemradio. */
248
+ readonly ariaLabelAttr$: _angular_core.Signal<string | undefined>;
249
+ /** Expander aria-label attribute value. */
250
+ readonly expanderAriaLabelAttr$: _angular_core.Signal<string>;
251
+ /** aria-haspopup attribute value for snapped mode items with children. */
252
+ readonly ariaHasPopupAttr$: _angular_core.Signal<"menu" | "dialog" | undefined>;
253
+ /** aria-current attribute value for snapped mode items with children. */
254
+ readonly ariaCurrentAttr$: _angular_core.Signal<"page" | undefined>;
255
+ /** Wrapper role attribute for snapped mode popovers. */
256
+ readonly wrapperRoleAttr$: _angular_core.Signal<"tree" | undefined>;
257
+ /** Wrapper aria-roledescription for snapped mode popovers. */
258
+ readonly wrapperAriaRoleDescriptionAttr$: _angular_core.Signal<string | undefined>;
259
+ /** Title item role for snapped mode - should be treeitem in popovers. */
260
+ readonly titleItemRoleAttr$: _angular_core.Signal<"treeitem" | "menuitem" | "menuitemradio">;
261
+ /** Title item aria-selected for snapped mode - should not be selected if children are selected. */
262
+ readonly titleItemAriaSelectedAttr$: _angular_core.Signal<any>;
263
+ readonly titleItemFocusable$: _angular_core.Signal<any>;
192
264
  /** CSS Class signal. */
193
265
  readonly class$: _angular_core.Signal<string>;
194
- /** Selected Signal. */
195
- readonly selected$: _angular_core.WritableSignal<boolean>;
266
+ /** Combined selected state - considers both manual selection and service selection. */
267
+ readonly selected$: any;
196
268
  /** @hidden */
197
269
  readonly quickCreate$: _angular_core.WritableSignal<boolean>;
198
270
  /**
@@ -200,12 +272,16 @@ declare class NavigationListItemComponent extends FdbNavigationListItem implemen
200
272
  * Popover position. Changes based on rtl value.
201
273
  */
202
274
  readonly _popoverPlacement$: _angular_core.Signal<Placement>;
275
+ /** @hidden */
276
+ readonly _moreButtonRef$: _angular_core.Signal<any>;
203
277
  /** Optional parent list component. */
204
278
  readonly parentListItemComponent: FdbNavigationListItemCmp | null;
205
279
  /** @hidden */
206
280
  get parentListItem(): FdbNavigationListItem | null;
207
281
  /** @hidden */
208
282
  private readonly _home$;
283
+ /** Manual selection state signal (for router-based selection mode). */
284
+ private readonly _manuallySelected$;
209
285
  /** @hidden */
210
286
  private readonly _class$;
211
287
  /** @hidden */
@@ -220,6 +296,14 @@ declare class NavigationListItemComponent extends FdbNavigationListItem implemen
220
296
  private _keyManager;
221
297
  /** @hidden */
222
298
  private readonly _zone;
299
+ /** @hidden */
300
+ private readonly _lang$;
301
+ /** @hidden */
302
+ private _translationResolver;
303
+ /** Translation signal for snapped popover role description. */
304
+ private readonly _snappedPopoverRoleDescription$;
305
+ /** Translation signal for expander aria-label. */
306
+ private readonly _expanderAriaLabel$;
223
307
  private readonly _rtlService;
224
308
  /** @hidden */
225
309
  private readonly _rtl$;
@@ -231,6 +315,8 @@ declare class NavigationListItemComponent extends FdbNavigationListItem implemen
231
315
  /** @hidden */
232
316
  private readonly _parentNavigationService;
233
317
  /** @hidden */
318
+ private readonly _parentNavigationList;
319
+ /** @hidden */
234
320
  private readonly _destroyRef;
235
321
  /** @hidden */
236
322
  constructor();
@@ -263,6 +349,10 @@ declare class NavigationListItemComponent extends FdbNavigationListItem implemen
263
349
  _innerListKeydown(event: KeyboardEvent): void;
264
350
  /** Toggles expanded state of the item. */
265
351
  toggleExpanded(): void;
352
+ /** Handles item click for both selection and expansion based on item type and navigation mode. */
353
+ handleItemClick(): void;
354
+ /** Handles keydown events for navigation item actions. */
355
+ handleItemKeydown(event: KeyboardEvent): void;
266
356
  /** Callback method when user used keyboard arrows to expand/collapse list item. */
267
357
  keyboardExpanded(shouldExpand: boolean): void;
268
358
  /**
@@ -278,8 +368,15 @@ declare class NavigationListItemComponent extends FdbNavigationListItem implemen
278
368
  focusLink(closePopover?: boolean): void;
279
369
  /** @hidden */
280
370
  _onPopoverOpen(isOpen: boolean, popover: PopoverComponent): void;
371
+ /**
372
+ * Determines if this item can be selected based on its type and structure.
373
+ * @returns true if the item can be selected, false otherwise
374
+ */
375
+ canItemBeSelected(): boolean;
281
376
  private _focusPopoverLink;
282
377
  /** @hidden */
378
+ private _ensureChildTabindexUpdated;
379
+ /** @hidden */
283
380
  private _visibleItemKeyboardExpandedHandler;
284
381
  /** @hidden */
285
382
  private _snappedItemKeyboardExpandedHandler;
@@ -291,7 +388,7 @@ declare class NavigationListItemComponent extends FdbNavigationListItem implemen
291
388
  /** @hidden */
292
389
  private _onZoneStable;
293
390
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NavigationListItemComponent, never>;
294
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NavigationListItemComponent, "fdb-navigation-list-item", never, { "class": { "alias": "class"; "required": false; }; "home": { "alias": "home"; "required": false; }; "quickCreate": { "alias": "quickCreate"; "required": false; }; "separator": { "alias": "separator"; "required": false; }; "spacer": { "alias": "spacer"; "required": false; }; "group": { "alias": "group"; "required": false; }; "expanded": { "alias": "expanded"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; }, {}, ["link", "linkRef", "listItems"], never, true, never>;
391
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NavigationListItemComponent, "fdb-navigation-list-item", never, { "class": { "alias": "class"; "required": false; }; "home": { "alias": "home"; "required": false; }; "quickCreate": { "alias": "quickCreate"; "required": false; }; "separator": { "alias": "separator"; "required": false; }; "spacer": { "alias": "spacer"; "required": false; }; "group": { "alias": "group"; "required": false; }; "expanded": { "alias": "expanded"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, ["link", "linkRef", "listItems"], never, true, never>;
295
392
  static ngAcceptInputType_home: unknown;
296
393
  static ngAcceptInputType_quickCreate: unknown;
297
394
  static ngAcceptInputType_separator: unknown;
@@ -299,6 +396,30 @@ declare class NavigationListItemComponent extends FdbNavigationListItem implemen
299
396
  static ngAcceptInputType_group: unknown;
300
397
  static ngAcceptInputType_expanded: unknown;
301
398
  static ngAcceptInputType_selected: unknown;
399
+ static ngAcceptInputType_disabled: unknown;
400
+ }
401
+
402
+ declare class NavigationService {
403
+ /** Currently active list item. */
404
+ currentItem$: Subject<FdbNavigationListItem>;
405
+ /** Currently selected item (for click-based selection mode). */
406
+ selectedItem$: _angular_core.WritableSignal<FdbNavigationListItem | null>;
407
+ /** Subject to notify when an overflow item is selected and should be promoted. */
408
+ overflowItemSelected$: Subject<FdbNavigationListItem>;
409
+ /** Subject to notify when selection changes to clear manual selections */
410
+ selectionChanged$: Subject<FdbNavigationListItem | null>;
411
+ /**
412
+ * Set the selected item.
413
+ * @param item The item to select, or null to clear selection.
414
+ */
415
+ setSelectedItem(item: FdbNavigationListItem | null): void;
416
+ /**
417
+ * Get the currently selected item.
418
+ * @returns The currently selected item, or null if none is selected.
419
+ */
420
+ getSelectedItem(): FdbNavigationListItem | null;
421
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NavigationService, never>;
422
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<NavigationService>;
302
423
  }
303
424
 
304
425
  declare abstract class FdbNavigation {
@@ -307,6 +428,8 @@ declare abstract class FdbNavigation {
307
428
  abstract showMoreButton$: WritableSignal<Nullable<FdbNavigationListItem>>;
308
429
  abstract _navigationItemRenderer: Signal<any>;
309
430
  abstract closeAllPopups: Subject<void>;
431
+ abstract selectionMode: 'router' | 'click';
432
+ abstract service: NavigationService;
310
433
  abstract setActiveItem(value: FdbNavigationListItem | null): void;
311
434
  abstract getActiveItem(): FdbNavigationListItem | null;
312
435
  abstract closePopups(): void;
@@ -325,6 +448,7 @@ declare abstract class FdbNavigationListItem implements FocusableOption {
325
448
  abstract parentListItem: FdbNavigationListItem | null;
326
449
  abstract class$: Signal<string>;
327
450
  abstract selected$: Signal<boolean>;
451
+ abstract id: Signal<string>;
328
452
  abstract focus(origin?: FocusOrigin | undefined): void;
329
453
  abstract toggleExpanded(): void;
330
454
  abstract keyboardExpanded(shouldExpand: boolean): void;
@@ -335,6 +459,7 @@ declare abstract class FdbNavigationListItem implements FocusableOption {
335
459
  abstract unregisterChildList(list: NavigationListComponent): void;
336
460
  abstract handleHorizontalNavigation(isExpand: boolean): void;
337
461
  abstract focusLink(closePopover?: boolean): void;
462
+ abstract canItemBeSelected(): boolean;
338
463
  /** Marker directive that is attached to the rendered list item. */
339
464
  marker: Nullable<NavigationListItemMarkerDirective>;
340
465
  /** @hidden */
@@ -381,6 +506,8 @@ declare abstract class FdbNavigationListItem implements FocusableOption {
381
506
  readonly expanded$: _angular_core.WritableSignal<boolean>;
382
507
  /** @hidden */
383
508
  readonly isGroup$: _angular_core.WritableSignal<boolean>;
509
+ /** @hidden */
510
+ readonly disabled$: _angular_core.WritableSignal<boolean>;
384
511
  /** Navigation container reference. */
385
512
  readonly navigation: FdbNavigation;
386
513
  }
@@ -421,6 +548,14 @@ declare abstract class FdbNavigationContentContainer {
421
548
  declare class NavigationContentEndComponent extends FdbNavigationContentContainer implements AfterContentInit {
422
549
  /** Whether the list items are content-projected. Used only with data-driven navigation. */
423
550
  contentProjected: boolean;
551
+ /**
552
+ * aria-label for the navigation list.
553
+ */
554
+ ariaLabel: Nullable$1<string>;
555
+ /**
556
+ * aria-roledescription for the navigation list.
557
+ */
558
+ ariaRoleDescription: Nullable$1<string>;
424
559
  /** @hidden */
425
560
  private readonly _listItems;
426
561
  /** @hidden */
@@ -430,12 +565,20 @@ declare class NavigationContentEndComponent extends FdbNavigationContentContaine
430
565
  /** @hidden */
431
566
  ngAfterContentInit(): void;
432
567
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NavigationContentEndComponent, never>;
433
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NavigationContentEndComponent, "fdb-navigation-content-end", never, { "contentProjected": { "alias": "contentProjected"; "required": false; }; }, {}, ["_listItems"], never, true, never>;
568
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NavigationContentEndComponent, "fdb-navigation-content-end", never, { "contentProjected": { "alias": "contentProjected"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "ariaRoleDescription": { "alias": "ariaRoleDescription"; "required": false; }; }, {}, ["_listItems"], never, true, never>;
434
569
  }
435
570
 
436
571
  declare class NavigationContentStartComponent extends FdbNavigationContentContainer implements AfterContentInit {
437
572
  /** Whether the list items are content-projected. Used only with data-driven navigation. */
438
573
  contentProjected: boolean;
574
+ /**
575
+ * aria-label for the navigation list.
576
+ */
577
+ ariaLabel: Nullable$1<string>;
578
+ /**
579
+ * aria-roledescription for the navigation list.
580
+ */
581
+ ariaRoleDescription: Nullable$1<string>;
439
582
  /** @hidden */
440
583
  private readonly _listItems;
441
584
  /** @hidden */
@@ -474,15 +617,17 @@ declare class NavigationContentStartComponent extends FdbNavigationContentContai
474
617
  * Determines whether to show the "More" button if available space is not enough to fit all list items.
475
618
  */
476
619
  private _calculateVisibleItems;
620
+ /**
621
+ * @hidden
622
+ * Promotes an overflow item to be the last visible item.
623
+ * Moves the current last visible item to overflow while preserving overflow order.
624
+ */
625
+ private _promoteOverflowItem;
477
626
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NavigationContentStartComponent, never>;
478
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NavigationContentStartComponent, "fdb-navigation-content-start", never, { "contentProjected": { "alias": "contentProjected"; "required": false; }; }, {}, ["_listItems"], never, true, [{ directive: typeof i1$1.ScrollbarDirective; inputs: {}; outputs: {}; }]>;
627
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NavigationContentStartComponent, "fdb-navigation-content-start", never, { "contentProjected": { "alias": "contentProjected"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "ariaRoleDescription": { "alias": "ariaRoleDescription"; "required": false; }; }, {}, ["_listItems"], never, true, [{ directive: typeof i1$1.ScrollbarDirective; inputs: {}; outputs: {}; }]>;
479
628
  }
480
629
 
481
630
  declare class NavigationListItemDirective implements OnDestroy {
482
- /**
483
- * Item definition.
484
- */
485
- item: any;
486
631
  /**
487
632
  * Injector used for rendering child list item component.
488
633
  * Allows list item component to inject parent list container and register itself as a child item.
@@ -520,7 +665,7 @@ declare class NavigationListItemDirective implements OnDestroy {
520
665
  /** @hidden */
521
666
  ngOnDestroy(): void;
522
667
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NavigationListItemDirective, never>;
523
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NavigationListItemDirective, "[fdbNavigationListItem]", ["fdbListItem"], { "item": { "alias": "item"; "required": false; }; }, {}, never, never, true, never>;
668
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NavigationListItemDirective, "[fdbNavigationListItem]", ["fdbListItem"], {}, {}, never, never, true, never>;
524
669
  }
525
670
  declare class NavigationListItemRefDirective<T = any> {
526
671
  /** Type alias. */
@@ -535,51 +680,28 @@ declare class NavigationListItemRefDirective<T = any> {
535
680
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NavigationListItemRefDirective<any>, "[fdbNavigationListItemRef]", never, { "fdbNavigationListItemRefAs": { "alias": "fdbNavigationListItemRefAs"; "required": false; }; }, {}, never, never, true, never>;
536
681
  }
537
682
 
538
- type NavigationDataSourceItem<T extends Record<string, any> = Record<string, any>> = {
539
- placement: 'start' | 'end';
540
- children?: NavigationDataSourceItem<T>[];
541
- } & T;
542
- declare class FdbNavigationDataSource<T extends NavigationDataSourceItem> extends BaseDataSource<T> {
543
- dataProvider: AbstractDataProvider<T>;
544
- /** @hidden */
545
- limitless: boolean;
546
- /** @hidden */
547
- constructor(dataProvider: AbstractDataProvider<T>);
548
- }
549
- declare class ArrayNavigationDataSource<T extends NavigationDataSourceItem> extends FdbNavigationDataSource<T> {
550
- /** @hidden */
551
- constructor(data: T[]);
552
- }
553
- declare class ObservableNavigationDataSDataSource<T extends NavigationDataSourceItem> extends FdbNavigationDataSource<T> {
554
- /** @hidden */
555
- constructor(data: Observable<T[]>);
556
- }
557
- /**
558
- * Type of acceptable objects as a datasource for the Navigation component.
559
- */
560
- type FdbNavigationDataSAcceptableDataSource<T extends NavigationDataSourceItem> = FdbNavigationDataSource<T> | Observable<T[]> | T[];
561
- declare class NavigationDataSourceParser<T extends NavigationDataSourceItem> implements DataSourceParser<T, FdbNavigationDataSource<T>> {
562
- /**
563
- * Transforms plain array or observable into DataSource class.
564
- * @param source
565
- */
566
- parse(source: FdbNavigationDataSAcceptableDataSource<T>): FdbNavigationDataSource<T> | undefined;
567
- }
568
-
569
683
  type FdbNavigationType = 'horizontal' | 'vertical';
570
684
  type FdbNavigationState = 'expanded' | 'snapped' | 'popup';
571
685
 
572
- interface GroupedDataSourceItems {
573
- start: NavigationDataSourceItem[];
574
- end: NavigationDataSourceItem[];
575
- }
576
686
  declare class NavigationComponent extends FdbNavigation implements CssClassBuilder, OnChanges, OnInit, AfterViewInit, OnDestroy {
577
687
  /** @hidden */
578
688
  class: string;
689
+ /**
690
+ * aria-label for the navigation.
691
+ */
692
+ ariaLabel: Nullable<string>;
693
+ /**
694
+ * aria-roledescription for the navigation.
695
+ */
696
+ ariaRoleDescription: Nullable<string>;
579
697
  /**
580
698
  * Navigation mode.
581
699
  */
582
700
  mode: FdbViewMode;
701
+ /**
702
+ * Whether the navigation is rendered as an overlay.
703
+ */
704
+ isOverlay: boolean;
583
705
  /**
584
706
  * Navigation state.
585
707
  */
@@ -589,6 +711,12 @@ declare class NavigationComponent extends FdbNavigation implements CssClassBuild
589
711
  * Navigation type.
590
712
  */
591
713
  type: FdbNavigationType;
714
+ /**
715
+ * Selection mode for navigation items.
716
+ * - 'router': Selection is handled by router link activation (default)
717
+ * - 'click': Selection is handled by click events
718
+ */
719
+ selectionMode: 'router' | 'click';
592
720
  /** @hidden */
593
721
  set _navigationItemRef(value: Nullable<NavigationListItemRefDirective>);
594
722
  /** @hidden */
@@ -600,7 +728,7 @@ declare class NavigationComponent extends FdbNavigation implements CssClassBuild
600
728
  /**
601
729
  * Whether the navigation is in snapped mode.
602
730
  */
603
- readonly isSnapped$: Signal<boolean>;
731
+ readonly isSnapped$: _angular_core.Signal<boolean>;
604
732
  /**
605
733
  * Whether to show "More" button. Applicable for `snapped` state only.
606
734
  */
@@ -612,19 +740,14 @@ declare class NavigationComponent extends FdbNavigation implements CssClassBuild
612
740
  readonly classList$: _angular_core.WritableSignal<string[]>;
613
741
  /** @hidden */
614
742
  readonly elementRef: ElementRef<any>;
615
- /** @hidden */
616
- readonly dataSourceItems: Signal<GroupedDataSourceItems | undefined>;
743
+ /** Navigation service for managing selection state. */
744
+ readonly service: NavigationService;
617
745
  /** @hidden */
618
746
  readonly _navigationItemRenderer: _angular_core.WritableSignal<NavigationListItemRefDirective<any> | null>;
619
747
  /** Stream notifies to close all popups in child list items. */
620
748
  readonly closeAllPopups: Subject<void>;
621
749
  /** @hidden */
622
750
  private readonly _viewInitiated$;
623
- /**
624
- * @hidden
625
- * Data source directive.
626
- */
627
- private readonly _dataSourceDirective;
628
751
  /** @hidden */
629
752
  private _keyManager;
630
753
  /** @hidden */
@@ -635,7 +758,7 @@ declare class NavigationComponent extends FdbNavigation implements CssClassBuild
635
758
  * @hidden
636
759
  * Main keyboard navigation handler.
637
760
  */
638
- private _keyDownHandler;
761
+ _keyDownHandler(event: KeyboardEvent): void;
639
762
  /** @hidden */
640
763
  ngOnInit(): void;
641
764
  /** @hidden */
@@ -654,6 +777,39 @@ declare class NavigationComponent extends FdbNavigation implements CssClassBuild
654
777
  setActiveItem(item: FdbNavigationListItem): void;
655
778
  /** Notifies child list items that all popups should be closed. */
656
779
  closePopups(): void;
780
+ /**
781
+ * Get the currently selected item when in click selection mode.
782
+ * @returns The currently selected item, or null if none is selected.
783
+ */
784
+ getSelectedItem(): FdbNavigationListItem | null;
785
+ /**
786
+ * Set the selected item when in click selection mode.
787
+ * @param item The item to select, or null to clear selection.
788
+ */
789
+ setSelectedItem(item: FdbNavigationListItem | null): void;
790
+ /**
791
+ * Clear the current selection when in click selection mode.
792
+ */
793
+ clearSelection(): void;
794
+ /**
795
+ * Get a navigation item by its ID.
796
+ * @param id The ID of the navigation item to find.
797
+ * @returns The navigation item with the specified ID, or null if not found.
798
+ */
799
+ getNavigationItemById(id: string): FdbNavigationListItem | null;
800
+ /**
801
+ * Set the selected item by its ID when in click selection mode.
802
+ * @param id The ID of the navigation item to select.
803
+ * @returns True if the item was found and selected, false otherwise.
804
+ */
805
+ setSelectedItemById(id: string): boolean;
806
+ /**
807
+ * Helper method to find an item by ID recursively through the navigation tree.
808
+ * @param items Array of navigation items to search through.
809
+ * @param id The ID to search for.
810
+ * @returns The found item or null.
811
+ */
812
+ private _findItemById;
657
813
  /**
658
814
  * Updates the list of items.
659
815
  * Optionally inserts "More" button if overflow menu should be rendered.
@@ -661,7 +817,39 @@ declare class NavigationComponent extends FdbNavigation implements CssClassBuild
661
817
  */
662
818
  private _resetItemsList;
663
819
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NavigationComponent, never>;
664
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NavigationComponent, "fdb-navigation", never, { "class": { "alias": "class"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "state": { "alias": "state"; "required": false; }; "type": { "alias": "type"; "required": false; }; }, {}, ["_navigationItemRef", "_navigationItems"], ["*"], true, never>;
820
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NavigationComponent, "fdb-navigation", never, { "class": { "alias": "class"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "ariaRoleDescription": { "alias": "ariaRoleDescription"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "isOverlay": { "alias": "isOverlay"; "required": false; }; "state": { "alias": "state"; "required": false; }; "type": { "alias": "type"; "required": false; }; "selectionMode": { "alias": "selectionMode"; "required": false; }; }, {}, ["_navigationItemRef", "_navigationItems"], ["*"], true, never>;
821
+ static ngAcceptInputType_isOverlay: unknown;
822
+ }
823
+
824
+ type NavigationDataSourceItem<T extends Record<string, any> = Record<string, any>> = {
825
+ placement: 'start' | 'end';
826
+ children?: NavigationDataSourceItem<T>[];
827
+ } & T;
828
+ declare class FdbNavigationDataSource<T extends NavigationDataSourceItem> extends BaseDataSource<T> {
829
+ dataProvider: AbstractDataProvider<T>;
830
+ /** @hidden */
831
+ limitless: boolean;
832
+ /** @hidden */
833
+ constructor(dataProvider: AbstractDataProvider<T>);
834
+ }
835
+ declare class ArrayNavigationDataSource<T extends NavigationDataSourceItem> extends FdbNavigationDataSource<T> {
836
+ /** @hidden */
837
+ constructor(data: T[]);
838
+ }
839
+ declare class ObservableNavigationDataSDataSource<T extends NavigationDataSourceItem> extends FdbNavigationDataSource<T> {
840
+ /** @hidden */
841
+ constructor(data: Observable<T[]>);
842
+ }
843
+ /**
844
+ * Type of acceptable objects as a datasource for the Navigation component.
845
+ */
846
+ type FdbNavigationDataSAcceptableDataSource<T extends NavigationDataSourceItem> = FdbNavigationDataSource<T> | Observable<T[]> | T[];
847
+ declare class NavigationDataSourceParser<T extends NavigationDataSourceItem> implements DataSourceParser<T, FdbNavigationDataSource<T>> {
848
+ /**
849
+ * Transforms plain array or observable into DataSource class.
850
+ * @param source
851
+ */
852
+ parse(source: FdbNavigationDataSAcceptableDataSource<T>): FdbNavigationDataSource<T> | undefined;
665
853
  }
666
854
 
667
855
  declare class NavigationListDataSourceDirective<T extends Record<string, any>> extends DataSourceDirective<NavigationDataSourceItem<T>, FdbNavigationDataSource<NavigationDataSourceItem<T>>> {
@@ -678,11 +866,17 @@ declare class NavigationMoreButtonComponent {
678
866
  /** @hidden */
679
867
  private readonly _link;
680
868
  /** @hidden */
869
+ private readonly _popover;
870
+ /** @hidden */
871
+ private readonly _navigationList;
872
+ /** @hidden */
681
873
  customMoreRenderer: Nullable$1<TemplateRef<any>>;
682
874
  /** Whether the show more is visible. */
683
875
  isVisible$: _angular_core.WritableSignal<boolean>;
684
876
  /** Whether popover is open. Applicable for snapped navigation state. */
685
877
  readonly popoverOpen$: _angular_core.WritableSignal<boolean>;
878
+ /** ID for the more button. */
879
+ readonly id: _angular_core.WritableSignal<string>;
686
880
  /** @hidden */
687
881
  readonly type = "showMore";
688
882
  /** @hidden */
@@ -699,6 +893,10 @@ declare class NavigationMoreButtonComponent {
699
893
  * Link reference.
700
894
  */
701
895
  readonly link$: _angular_core.WritableSignal<Nullable$1<FdbNavigationItemLink>>;
896
+ /** More button aria-label attribute value. */
897
+ readonly moreButtonAriaLabelAttr$: _angular_core.Signal<string>;
898
+ /** Overflow menu aria-label attribute value. */
899
+ readonly overflowMenuAriaLabelAttr$: _angular_core.Signal<string>;
702
900
  /**
703
901
  * @hidden
704
902
  * Popover position. Changes based on rtl value.
@@ -709,10 +907,22 @@ declare class NavigationMoreButtonComponent {
709
907
  /** @hidden */
710
908
  private readonly _rtlService;
711
909
  /** @hidden */
910
+ private readonly elementRef;
911
+ /** @hidden */
712
912
  private readonly _rtl$;
713
913
  /** @hidden */
914
+ private readonly _lang$;
915
+ /** @hidden */
916
+ private _translationResolver;
917
+ /** Translation signal for more button aria-label. */
918
+ private readonly _moreButtonAriaLabel$;
919
+ /** Translation signal for overflow menu aria-label. */
920
+ private readonly _overflowMenuAriaLabel$;
921
+ /** @hidden */
714
922
  constructor();
715
923
  /** @hidden */
924
+ _onPopoverOpenChange(isOpen: boolean): void;
925
+ /** @hidden */
716
926
  togglePopover(withClick?: boolean): void;
717
927
  /** @hidden */
718
928
  registerLink(): void;
@@ -732,9 +942,11 @@ declare class NavigationMoreButtonComponent {
732
942
  /** @hidden */
733
943
  toggleExpanded(): void;
734
944
  /** @hidden */
735
- keyboardExpanded(): void;
945
+ keyboardExpanded(shouldExpand: boolean): void;
736
946
  /** @hidden */
737
947
  _keydownPopoverToggle(event: KeyboardEvent): void;
948
+ /** @hidden */
949
+ canItemBeSelected(): boolean;
738
950
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NavigationMoreButtonComponent, never>;
739
951
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<NavigationMoreButtonComponent, "li[fdb-navigation-more-button]", never, { "listItems": { "alias": "listItems"; "required": false; }; }, {}, never, never, true, never>;
740
952
  }