@fundamental-ngx/core 0.61.2-rc.8 → 0.61.2

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.
Files changed (114) hide show
  1. package/fesm2022/fundamental-ngx-core-action-sheet.mjs +2 -3
  2. package/fesm2022/fundamental-ngx-core-action-sheet.mjs.map +1 -1
  3. package/fesm2022/fundamental-ngx-core-avatar-group.mjs +4 -6
  4. package/fesm2022/fundamental-ngx-core-avatar-group.mjs.map +1 -1
  5. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs +13 -11
  6. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  7. package/fesm2022/fundamental-ngx-core-busy-indicator.mjs +7 -5
  8. package/fesm2022/fundamental-ngx-core-busy-indicator.mjs.map +1 -1
  9. package/fesm2022/fundamental-ngx-core-calendar.mjs +31 -35
  10. package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
  11. package/fesm2022/fundamental-ngx-core-carousel.mjs +2 -2
  12. package/fesm2022/fundamental-ngx-core-carousel.mjs.map +1 -1
  13. package/fesm2022/fundamental-ngx-core-combobox.mjs +3 -5
  14. package/fesm2022/fundamental-ngx-core-combobox.mjs.map +1 -1
  15. package/fesm2022/fundamental-ngx-core-date-picker.mjs +2 -2
  16. package/fesm2022/fundamental-ngx-core-date-picker.mjs.map +1 -1
  17. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs +2 -2
  18. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
  19. package/fesm2022/fundamental-ngx-core-datetime.mjs +13 -7
  20. package/fesm2022/fundamental-ngx-core-datetime.mjs.map +1 -1
  21. package/fesm2022/fundamental-ngx-core-dynamic-page.mjs +13 -13
  22. package/fesm2022/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
  23. package/fesm2022/fundamental-ngx-core-feed-list-item.mjs +2 -2
  24. package/fesm2022/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
  25. package/fesm2022/fundamental-ngx-core-form.mjs +1 -1
  26. package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
  27. package/fesm2022/fundamental-ngx-core-grid-list.mjs +4 -4
  28. package/fesm2022/fundamental-ngx-core-grid-list.mjs.map +1 -1
  29. package/fesm2022/fundamental-ngx-core-info-label.mjs +2 -2
  30. package/fesm2022/fundamental-ngx-core-info-label.mjs.map +1 -1
  31. package/fesm2022/fundamental-ngx-core-inline-help.mjs +65 -59
  32. package/fesm2022/fundamental-ngx-core-inline-help.mjs.map +1 -1
  33. package/fesm2022/fundamental-ngx-core-link.mjs +2 -2
  34. package/fesm2022/fundamental-ngx-core-link.mjs.map +1 -1
  35. package/fesm2022/fundamental-ngx-core-menu.mjs +1 -3
  36. package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
  37. package/fesm2022/fundamental-ngx-core-message-strip.mjs +49 -44
  38. package/fesm2022/fundamental-ngx-core-message-strip.mjs.map +1 -1
  39. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +17 -23
  40. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
  41. package/fesm2022/fundamental-ngx-core-multi-input.mjs +2 -2
  42. package/fesm2022/fundamental-ngx-core-multi-input.mjs.map +1 -1
  43. package/fesm2022/fundamental-ngx-core-nested-list.mjs +21 -22
  44. package/fesm2022/fundamental-ngx-core-nested-list.mjs.map +1 -1
  45. package/fesm2022/fundamental-ngx-core-notification.mjs +16 -13
  46. package/fesm2022/fundamental-ngx-core-notification.mjs.map +1 -1
  47. package/fesm2022/fundamental-ngx-core-object-identifier.mjs +2 -2
  48. package/fesm2022/fundamental-ngx-core-object-identifier.mjs.map +1 -1
  49. package/fesm2022/fundamental-ngx-core-object-number.mjs +2 -2
  50. package/fesm2022/fundamental-ngx-core-object-number.mjs.map +1 -1
  51. package/fesm2022/fundamental-ngx-core-object-status.mjs +2 -2
  52. package/fesm2022/fundamental-ngx-core-object-status.mjs.map +1 -1
  53. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs +2 -2
  54. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  55. package/fesm2022/fundamental-ngx-core-pagination.mjs +14 -11
  56. package/fesm2022/fundamental-ngx-core-pagination.mjs.map +1 -1
  57. package/fesm2022/fundamental-ngx-core-popover.mjs +6 -0
  58. package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
  59. package/fesm2022/fundamental-ngx-core-product-switch.mjs +2 -2
  60. package/fesm2022/fundamental-ngx-core-product-switch.mjs.map +1 -1
  61. package/fesm2022/fundamental-ngx-core-rating-indicator.mjs +7 -4
  62. package/fesm2022/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
  63. package/fesm2022/fundamental-ngx-core-segmented-button.mjs +11 -10
  64. package/fesm2022/fundamental-ngx-core-segmented-button.mjs.map +1 -1
  65. package/fesm2022/fundamental-ngx-core-select.mjs +6 -7
  66. package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
  67. package/fesm2022/fundamental-ngx-core-shellbar.mjs +6 -6
  68. package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
  69. package/fesm2022/fundamental-ngx-core-slider.mjs +6 -6
  70. package/fesm2022/fundamental-ngx-core-slider.mjs.map +1 -1
  71. package/fesm2022/fundamental-ngx-core-split-button.mjs +2 -2
  72. package/fesm2022/fundamental-ngx-core-split-button.mjs.map +1 -1
  73. package/fesm2022/fundamental-ngx-core-step-input.mjs +2 -2
  74. package/fesm2022/fundamental-ngx-core-step-input.mjs.map +1 -1
  75. package/fesm2022/fundamental-ngx-core-switch.mjs +2 -2
  76. package/fesm2022/fundamental-ngx-core-switch.mjs.map +1 -1
  77. package/fesm2022/fundamental-ngx-core-tabs.mjs +2 -2
  78. package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
  79. package/fesm2022/fundamental-ngx-core-text.mjs +2 -2
  80. package/fesm2022/fundamental-ngx-core-text.mjs.map +1 -1
  81. package/fesm2022/fundamental-ngx-core-time-picker.mjs +29 -4
  82. package/fesm2022/fundamental-ngx-core-time-picker.mjs.map +1 -1
  83. package/fesm2022/fundamental-ngx-core-time.mjs +4 -4
  84. package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
  85. package/fesm2022/fundamental-ngx-core-token.mjs +15 -12
  86. package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
  87. package/fesm2022/fundamental-ngx-core-toolbar.mjs +3 -5
  88. package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
  89. package/fesm2022/fundamental-ngx-core-tree.mjs +4 -4
  90. package/fesm2022/fundamental-ngx-core-tree.mjs.map +1 -1
  91. package/fesm2022/fundamental-ngx-core-upload-collection.mjs +4 -4
  92. package/fesm2022/fundamental-ngx-core-upload-collection.mjs.map +1 -1
  93. package/fesm2022/fundamental-ngx-core-user-menu.mjs +3 -5
  94. package/fesm2022/fundamental-ngx-core-user-menu.mjs.map +1 -1
  95. package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs +2 -2
  96. package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs.map +1 -1
  97. package/package.json +3 -3
  98. package/types/fundamental-ngx-core-breadcrumb.d.ts +5 -5
  99. package/types/fundamental-ngx-core-busy-indicator.d.ts +3 -3
  100. package/types/fundamental-ngx-core-combobox.d.ts +2 -4
  101. package/types/fundamental-ngx-core-datetime.d.ts +5 -1
  102. package/types/fundamental-ngx-core-dynamic-page.d.ts +2 -1
  103. package/types/fundamental-ngx-core-inline-help.d.ts +45 -24
  104. package/types/fundamental-ngx-core-menu.d.ts +0 -2
  105. package/types/fundamental-ngx-core-message-strip.d.ts +12 -3
  106. package/types/fundamental-ngx-core-multi-combobox.d.ts +1 -1
  107. package/types/fundamental-ngx-core-nested-list.d.ts +10 -10
  108. package/types/fundamental-ngx-core-notification.d.ts +7 -5
  109. package/types/fundamental-ngx-core-pagination.d.ts +4 -3
  110. package/types/fundamental-ngx-core-rating-indicator.d.ts +2 -3
  111. package/types/fundamental-ngx-core-segmented-button.d.ts +5 -3
  112. package/types/fundamental-ngx-core-slider.d.ts +1 -1
  113. package/types/fundamental-ngx-core-time-picker.d.ts +17 -1
  114. package/types/fundamental-ngx-core-token.d.ts +4 -4
@@ -1,7 +1,8 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, ElementRef, Input, Directive, Component, signal, computed, ViewEncapsulation, ChangeDetectionStrategy, EventEmitter, HostListener, ContentChild, HostBinding, Output, DestroyRef, Inject, Injectable, ViewChild, Injector, effect, ContentChildren, forwardRef, Optional, NgModule } from '@angular/core';
2
+ import { inject, ElementRef, Input, Directive, Component, signal, computed, ViewEncapsulation, ChangeDetectionStrategy, EventEmitter, HostListener, ContentChild, HostBinding, Output, DestroyRef, Inject, Injectable, ViewChild, INJECTOR, ContentChildren, forwardRef, Optional, NgModule } from '@angular/core';
3
3
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
- import { Subject, merge, startWith } from 'rxjs';
4
+ import * as i5 from 'rxjs';
5
+ import { Subject, merge, Subscription, combineLatest, startWith } from 'rxjs';
5
6
  import { RtlService, destroyObservable, KeyUtil } from '@fundamental-ngx/cdk/utils';
6
7
  import { IconComponent } from '@fundamental-ngx/core/icon';
7
8
  import { takeUntil, filter } from 'rxjs/operators';
@@ -11,7 +12,7 @@ import { MenuKeyboardService } from '@fundamental-ngx/core/menu';
11
12
  import { PopoverComponent, PopoverControlComponent, PopoverBodyComponent } from '@fundamental-ngx/core/popover';
12
13
  import * as i4 from '@fundamental-ngx/core/content-density';
13
14
  import { contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';
14
- import { TranslationResolver, FD_LANGUAGE_SIGNAL } from '@fundamental-ngx/i18n';
15
+ import { TranslationResolver, FD_LANGUAGE } from '@fundamental-ngx/i18n';
15
16
  import { NgTemplateOutlet } from '@angular/common';
16
17
  import { RouterLink } from '@angular/router';
17
18
 
@@ -834,7 +835,8 @@ function provideNestedListStateService() {
834
835
  // Nested list can be nested, and that will cause on each individual instance of NestedListStateService.
835
836
  return {
836
837
  provide: NestedListStateService,
837
- useFactory: () => inject(NestedListStateService, { skipSelf: true, optional: true }) ?? new NestedListStateService()
838
+ useFactory: (injector) => injector.get(NestedListStateService, new NestedListStateService(), { skipSelf: true }),
839
+ deps: [INJECTOR]
838
840
  };
839
841
  }
840
842
  /**
@@ -845,12 +847,13 @@ function provideNestedListStateService() {
845
847
  */
846
848
  class NestedListDirective {
847
849
  /** @hidden */
848
- constructor(_nestedItemService, _nestedListKeyboardService, _elementRef, _changeDetectionRef, _nestedListStateService, _contentDensityObserver) {
850
+ constructor(_nestedItemService, _nestedListKeyboardService, _elementRef, _changeDetectionRef, _nestedListStateService, _language$, _contentDensityObserver) {
849
851
  this._nestedItemService = _nestedItemService;
850
852
  this._nestedListKeyboardService = _nestedListKeyboardService;
851
853
  this._elementRef = _elementRef;
852
854
  this._changeDetectionRef = _changeDetectionRef;
853
855
  this._nestedListStateService = _nestedListStateService;
856
+ this._language$ = _language$;
854
857
  /** In case the user wants to no use icons for items in this list */
855
858
  this.textOnly = false;
856
859
  /** Aria defines role description for the Nested List Tree. */
@@ -872,19 +875,19 @@ class NestedListDirective {
872
875
  /** @hidden */
873
876
  this._tabindex = '-1';
874
877
  /** @hidden */
875
- this._translationResolver = new TranslationResolver();
876
- /** @hidden */
877
- this._langSignal = inject(FD_LANGUAGE_SIGNAL);
878
+ this._subscriptions = new Subscription();
878
879
  /** @hidden */
879
- this._destroyRef = inject(DestroyRef);
880
- /** @hidden */
881
- this._injector = inject(Injector);
880
+ this._translationResolver = new TranslationResolver();
882
881
  if (this._nestedItemService) {
883
882
  this._nestedItemService.list = this;
884
883
  }
885
884
  _contentDensityObserver.subscribe();
886
885
  }
887
886
  /** @hidden */
887
+ ngOnDestroy() {
888
+ this._subscriptions.unsubscribe();
889
+ }
890
+ /** @hidden */
888
891
  ngAfterContentInit() {
889
892
  let nestedLevel = this._getNestedLevel();
890
893
  /** If there is condensed mode, maximum 2nd level class of nest can be added */
@@ -892,18 +895,11 @@ class NestedListDirective {
892
895
  nestedLevel = Math.min(...[nestedLevel, 2]);
893
896
  }
894
897
  this._setAccessibilityProperties(nestedLevel);
895
- // Register effect with explicit injector context
896
- effect(() => {
897
- const lang = this._langSignal();
898
- this._nestedListKeyboardService.refresh$.next();
899
- this._setAriaAttributes(nestedLevel, lang);
900
- }, { injector: this._injector });
901
- // React to nested items changes
902
- this.nestedItems.changes.pipe(startWith(undefined), takeUntilDestroyed(this._destroyRef)).subscribe(() => {
903
- const lang = this._langSignal();
898
+ const sub = combineLatest([this._language$, this.nestedItems.changes.pipe(startWith(undefined))]).subscribe(([lang]) => {
904
899
  this._nestedListKeyboardService.refresh$.next();
905
900
  this._setAriaAttributes(nestedLevel, lang);
906
901
  });
902
+ this._subscriptions.add(sub);
907
903
  this._handleNestedLevel(nestedLevel);
908
904
  }
909
905
  /** @hidden */
@@ -965,7 +961,7 @@ class NestedListDirective {
965
961
  this._ariaHaspopup = 'tree';
966
962
  }
967
963
  }
968
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NestedListDirective, deps: [{ token: NestedItemService, optional: true }, { token: NestedListKeyboardService }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: NestedListStateService }, { token: i4.ContentDensityObserver }], target: i0.ɵɵFactoryTarget.Directive }); }
964
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NestedListDirective, deps: [{ token: NestedItemService, optional: true }, { token: NestedListKeyboardService }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: NestedListStateService }, { token: FD_LANGUAGE }, { token: i4.ContentDensityObserver }], target: i0.ɵɵFactoryTarget.Directive }); }
969
965
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.0", type: NestedListDirective, isStandalone: true, selector: "[fdNestedList], [fd-nested-list]", inputs: { textOnly: "textOnly", ariaRoledescriptionTree: "ariaRoledescriptionTree", ariaRoledescriptionMenuBar: "ariaRoledescriptionMenuBar", ariaLabelSelected: "ariaLabelSelected" }, host: { properties: { "class.fd-nested-list--text-only": "this.textOnly", "class.fd-nested-list": "this.fdNestedListItemClass", "attr.aria-hidden": "this.hidden", "attr.role": "this._role", "attr.aria-roledescription": "this._ariaRoledescription", "attr.aria-haspopup": "this._ariaHaspopup", "attr.tabindex": "this._tabindex" } }, providers: [
970
966
  contentDensityObserverProviders(),
971
967
  MenuKeyboardService,
@@ -987,7 +983,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
987
983
  }]
988
984
  }], ctorParameters: () => [{ type: NestedItemService, decorators: [{
989
985
  type: Optional
990
- }] }, { type: NestedListKeyboardService }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: NestedListStateService }, { type: i4.ContentDensityObserver }], propDecorators: { textOnly: [{
986
+ }] }, { type: NestedListKeyboardService }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: NestedListStateService }, { type: i5.Observable, decorators: [{
987
+ type: Inject,
988
+ args: [FD_LANGUAGE]
989
+ }] }, { type: i4.ContentDensityObserver }], propDecorators: { textOnly: [{
991
990
  type: Input
992
991
  }, {
993
992
  type: HostBinding,
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-core-nested-list.mjs","sources":["../../../../libs/core/nested-list/nested-item/nested-item.service.ts","../../../../libs/core/nested-list/nested-list-directives.ts","../../../../libs/core/nested-list/nested-link/nested-link.directive.ts","../../../../libs/core/nested-list/nested-content/nested-list-content.directive.ts","../../../../libs/core/nested-list/nested-list-keyboard.service.ts","../../../../libs/core/nested-list/nested-list-state.service.ts","../../../../libs/core/nested-list/nested-item/nested-item.directive.ts","../../../../libs/core/nested-list/nested-list-popover/nested-list-popover.component.ts","../../../../libs/core/nested-list/nested-list-popover/nested-list-popover.component.html","../../../../libs/core/nested-list/nested-list/nested-list.directive.ts","../../../../libs/core/nested-list/prepared-nested-list/prepared-nested-list.component.ts","../../../../libs/core/nested-list/prepared-nested-list/prepared-nested-list.component.html","../../../../libs/core/nested-list/nested-list.module.ts","../../../../libs/core/nested-list/fundamental-ngx-core-nested-list.ts"],"sourcesContent":["import { Subject } from 'rxjs';\nimport { NestedListPopoverInterface } from '../nested-list-popover/nested-list-popover.interface';\nimport { NestedListInterface } from '../nested-list/nested-list.interface';\n\n/** Contains references to popover or list nested components, that are placed as direct children of item component */\nexport class NestedItemService {\n /** @hidden */\n list: NestedListInterface;\n /** @hidden */\n popover?: NestedListPopoverInterface;\n\n /** Subject fired when expand icon is clicked */\n toggle: Subject<boolean> = new Subject<boolean>();\n\n /** Subject fired, when child elements are focused */\n focus: Subject<void> = new Subject<void>();\n\n /** Subject fired, when content or link is clicked */\n click: Subject<void> = new Subject<void>();\n\n /** KeyDown handler, it is triggered from link, content and item elements */\n keyDown: Subject<KeyboardEvent> = new Subject<KeyboardEvent>();\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n Directive,\n ElementRef,\n inject,\n Input,\n signal,\n ViewEncapsulation\n} from '@angular/core';\nimport { RtlService } from '@fundamental-ngx/cdk/utils';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { NestedItemService } from './nested-item/nested-item.service';\n\nlet uniqueId = 0;\n\n@Directive({\n selector: '[fdNestedDirectivesHeader], [fd-nested-list-header]',\n host: {\n class: 'fd-nested-list__group-header',\n '[attr.id]': 'id'\n }\n})\nexport class NestedListHeaderDirective {\n /** Id of the element. */\n @Input()\n id: string | null = `fd-nested-list-group-header-${++uniqueId}`;\n\n /** @hidden */\n private readonly _elementRef = inject(ElementRef);\n\n /** Get the header title */\n get title(): string {\n return this._elementRef.nativeElement.textContent;\n }\n}\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fdNestedDirectivesIcon], [fd-nested-list-icon]',\n template: `<ng-content></ng-content>`,\n host: {\n class: 'fd-nested-list__icon',\n '[attr.role]': 'role'\n }\n})\nexport class NestedListIconComponent extends IconComponent {\n /** Role attribute */\n @Input()\n role = 'presentation';\n}\n\n@Directive({\n selector: '[fdNestedDirectivesTitle], [fd-nested-list-title]',\n host: {\n class: 'fd-nested-list__title'\n }\n})\nexport class NestedListTitleDirective {\n /** @hidden */\n private readonly _elementRef = inject(ElementRef);\n\n /** Returns element's InnerText */\n getInnerText(): string {\n return this._elementRef?.nativeElement.textContent;\n }\n}\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fdNestedListExpandIcon], [fd-nested-list-expand-icon]',\n template: `\n <ng-content></ng-content>\n <fd-icon [glyph]=\"expandIcon()\"></fd-icon>\n `,\n host: {\n 'aria-haspopup': 'true',\n tabindex: '-1',\n class: 'fd-nested-list__button fd-button',\n '[class.is-expanded]': 'expanded()',\n '[attr.aria-expanded]': 'expanded()',\n '[attr.aria-hidden]': 'true',\n '(click)': 'onClick($event)',\n '(focus)': 'onFocus()'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [IconComponent]\n})\nexport class NestedListExpandIconComponent {\n /**\n * @hidden\n * Attribute controlled by the parent `NestedItemDirective`\n */\n readonly expanded = signal(false);\n\n /** @hidden */\n readonly expandIcon = computed(() => {\n if (this.expanded()) {\n return 'navigation-down-arrow';\n }\n return this._rtlService?.rtl() ? 'navigation-left-arrow' : 'navigation-right-arrow';\n });\n\n /** @hidden */\n private readonly _itemService = inject(NestedItemService);\n\n /** @hidden */\n private readonly _rtlService = inject(RtlService, { optional: true });\n\n /** Mouse event handler */\n onClick(event: MouseEvent): void {\n this.expanded.update((v) => !v);\n this._itemService.toggle.next(this.expanded());\n event.stopPropagation();\n }\n\n /** Handler for focus events */\n onFocus(): void {\n this._itemService.focus.next();\n }\n\n /** @hidden */\n changeExpandedState(expanded: boolean): void {\n this.expanded.set(expanded);\n }\n}\n","import {\n ChangeDetectorRef,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n Output\n} from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { NestedItemLink } from '../nested-item/nested-item.interface';\nimport { NestedItemService } from '../nested-item/nested-item.service';\nimport { NestedListTitleDirective } from '../nested-list-directives';\n\n@Directive({\n selector: '[fdNestedLink], [fd-nested-list-link]',\n standalone: true\n})\nexport class NestedLinkDirective implements NestedItemLink {\n /** Function that is called on click event dispatch on this element. */\n @Input()\n onClickCallback: () => void;\n\n /** Whether this element is selected*/\n @Input()\n @HostBinding('class.is-selected')\n selected = false;\n\n /** @hidden */\n @HostBinding('attr.aria-label')\n _ariaLabel: string;\n\n /** @hidden */\n @Input()\n @HostBinding('attr.aria-describedby')\n ariaDescribedby: Nullable<string | number>;\n\n /** Event thrown, when selected state is changed */\n @Output()\n selectedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** @hidden */\n @HostBinding('class.fd-nested-list__link')\n fdNestedListItemClass = true;\n\n /** @hidden */\n @HostBinding('attr.tabindex')\n tabIndex = 0;\n\n /** @hidden */\n @HostBinding('attr.role')\n role = 'treeitem';\n\n /**\n * @hidden\n * Reference to title element, it is used, to get title for condensed mode.\n */\n @ContentChild(NestedListTitleDirective)\n title: NestedListTitleDirective;\n\n /** @hidden */\n constructor(\n public changeDetRef: ChangeDetectorRef,\n private _elementRef: ElementRef,\n private _itemService: NestedItemService\n ) {}\n\n /** Handler for keyboard events */\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent): void {\n this._itemService.keyDown.next(event);\n }\n\n /** Handler for mouse events */\n @HostListener('click')\n onClick(): void {\n this._itemService.click.next();\n if (this.onClickCallback) {\n this.onClickCallback();\n }\n }\n\n /** Handler for focus events */\n @HostListener('focus')\n onFocus(): void {\n this._itemService.focus.next();\n }\n\n /** Method to trigger selected state change */\n changeSelected(selected: boolean): void {\n this.selected = selected;\n this.selectedChange.emit(selected);\n }\n\n /** Set focus on the element. */\n focus(): void {\n this._elementRef.nativeElement.focus();\n }\n\n /** Dispatches the click event on the element */\n click(): void {\n this._elementRef.nativeElement.click();\n }\n\n /** Returns the title value of the title directive */\n getTitle(): string {\n return this.title && this.title.getInnerText();\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectorRef,\n ContentChild,\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n Output,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NestedItemService } from '../nested-item/nested-item.service';\nimport { NestedLinkDirective } from '../nested-link/nested-link.directive';\nimport { NestedListExpandIconComponent } from '../nested-list-directives';\n\n@Directive({\n selector: '[fdNestedListContent], [fd-nested-list-content]',\n host: {\n tabindex: '0'\n },\n standalone: true\n})\nexport class NestedListContentDirective implements AfterContentInit {\n /** Whether this element is selected*/\n @Input()\n @HostBinding('class.is-selected')\n selected = false;\n\n /** @hidden */\n @HostBinding('attr.role')\n role = 'treeitem';\n\n /** @hidden */\n @HostBinding('attr.aria-expanded')\n ariaExpanded = false;\n\n /** Event thrown, when selected state is changed */\n @Output()\n selectedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** Event that is thrown, when any keyboard event is dispatched on this element */\n @Output()\n readonly keyboardTriggered: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n\n /** Event that is thrown, when this element is clicked */\n @Output()\n readonly clicked: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /** @hidden */\n @HostBinding('class.fd-nested-list__content')\n fdNestedListContentClass = true;\n\n /**\n * @hidden\n * Attribute controlled by the parent `NestedItemDirective`\n */\n @HostBinding('class.has-child')\n hasChildren = false;\n\n /** @hidden */\n @ContentChild(NestedLinkDirective)\n nestedLink: NestedLinkDirective;\n\n /** @hidden */\n @ContentChild(NestedListExpandIconComponent)\n nestedExpandIcon: NestedListExpandIconComponent;\n\n /** An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing) */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n constructor(\n public changeDetRef: ChangeDetectorRef,\n private _elementRef: ElementRef,\n private _itemService: NestedItemService\n ) {}\n\n /** Keyboard Event Handler */\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent): void {\n this.keyboardTriggered.emit(event);\n this._itemService.keyDown.next(event);\n }\n\n /** Handler for mouse events */\n @HostListener('click')\n onClick(): void {\n this._itemService.click.next();\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._makeLinkUnFocusable();\n this._setFocusSubscription();\n }\n\n /** Method to trigger selected state change */\n changeSelected(selected: boolean): void {\n this.selected = selected;\n this.selectedChange.emit(selected);\n }\n\n /** Expanded state change propagation method */\n changeExpandedState(expanded: boolean): void {\n if (this.nestedExpandIcon) {\n this.nestedExpandIcon.changeExpandedState(expanded);\n }\n }\n\n /** Set focus on the element. */\n focus(): void {\n this._elementRef.nativeElement.focus();\n }\n\n /** Dispatches the click event on the element */\n click(): void {\n this.focus();\n if (this.nestedLink) {\n this.nestedLink.click();\n }\n }\n\n /** Add subscription for child focusing */\n private _setFocusSubscription(): void {\n this._itemService.focus.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => this.focus());\n }\n\n /** Hide link child element from tab key */\n private _makeLinkUnFocusable(): void {\n if (this.nestedLink) {\n this.nestedLink.tabIndex = -1;\n this.changeDetRef.detectChanges();\n }\n }\n}\n","import { ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE } from '@angular/cdk/keycodes';\nimport { DestroyRef, Inject, Injectable, inject } from '@angular/core';\nimport { KeyUtil, destroyObservable } from '@fundamental-ngx/cdk/utils';\nimport { MenuKeyboardService } from '@fundamental-ngx/core/menu';\nimport { Subject, merge } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { NestedItemInterface } from './nested-item/nested-item.interface';\nimport { NestedListInterface } from './nested-list/nested-list.interface';\n\n/**\n * Nested list keyboard service, which uses MenuKeyboardService, to deal with ArrowUp, ArrowDown, Space, Enter.\n * Also has own handling of ArrowLeft and ArrowRight, to open/close the menu if it has any children.\n */\n@Injectable()\nexport class NestedListKeyboardService {\n /**\n * Event, that is thrown always, when the open/close i being called on item components.\n * Also triggers changing of elements, to remove closed/hidden elements\n */\n readonly refresh$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n constructor(@Inject(MenuKeyboardService) private keyboardService: MenuKeyboardService) {}\n\n /**\n * Function called after refresh$ event is triggered.\n * Refresh the list of NestedItems, that the keyboard support should be provided for\n */\n refreshItems(lists: NestedListInterface[]): void {\n const items: NestedItemInterface[] = [];\n\n /** Gathering all of the items */\n lists.forEach((list) => items.push(...this._getAllListItems(list)));\n /** Putting the keyboard support function to each of the items */\n items.forEach((item, index) => {\n item.keyboardTriggered\n .pipe(takeUntil(merge(this.refresh$, destroyObservable(this._destroyRef))))\n .subscribe((keyboardEvent: KeyboardEvent) => this._handleKeyDown(keyboardEvent, index, items));\n });\n }\n\n /** Recursive function to get all of the NestedItem elements in correct order. */\n private _getItems(item: NestedItemInterface): NestedItemInterface[] {\n const childrenItems = item.expanded ? item.allChildrenItems : [];\n return childrenItems.reduce(\n (actualArray: NestedItemInterface[], nextItem: NestedItemInterface) => [\n ...actualArray,\n ...this._getItems(nextItem)\n ],\n [item]\n );\n }\n\n /** Method that calls the recursive function, getItems() and gathers all of the items in the NestedList */\n private _getAllListItems(list: NestedListInterface): NestedItemInterface[] {\n const _items: NestedItemInterface[] = [];\n if (list && list.nestedItems && list.nestedItems.length > 0) {\n list.nestedItems.forEach((item) => {\n _items.push(...this._getItems(item));\n });\n }\n\n return _items;\n }\n\n /**\n * Keyboard handle function. Uses keyboard support service from MenuComponent, to deal with ArrowUp, ArrowDown, Space, Enter.\n * For ArrowRight, if item is not expanded and has children (list or popup), the open function is triggered.\n * Otherwise it follows ArrowDown functionality.\n * For ArrowLeft, if item is expanded and has children (list or popup), the close function is triggered.\n * Otherwise it follows ArrowUp functionality\n */\n private _handleKeyDown(keyboardEvent: KeyboardEvent, index: number, items: NestedItemInterface[]): void {\n const item: NestedItemInterface = items[index];\n\n if (KeyUtil.isKeyCode(keyboardEvent, RIGHT_ARROW)) {\n if (!item.expanded && item.hasChildren) {\n item.triggerOpen();\n }\n keyboardEvent.preventDefault();\n }\n\n if (KeyUtil.isKeyCode(keyboardEvent, LEFT_ARROW)) {\n if (item.expanded && item.hasChildren) {\n item.triggerClose();\n }\n keyboardEvent.preventDefault();\n }\n\n if (KeyUtil.isKeyCode(keyboardEvent, [ENTER, SPACE])) {\n if (item.hasChildren) {\n items[index].click();\n }\n keyboardEvent.preventDefault();\n }\n\n this.keyboardService.keyDownHandler(keyboardEvent, index, items);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class NestedListStateService {\n /**\n * @hidden\n * The condensed state is modified by the parent and read by nested lists.\n */\n condensed = false;\n\n /**\n * @hidden\n */\n selectable = true;\n\n /** @hidden */\n onSelected: Subject<string> = new Subject<string>();\n}\n","import {\n AfterContentInit,\n ContentChild,\n DestroyRef,\n Directive,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n inject\n} from '@angular/core';\nimport { filter } from 'rxjs/operators';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { NestedListContentDirective } from '../nested-content/nested-list-content.directive';\nimport { NestedLinkDirective } from '../nested-link/nested-link.directive';\nimport { NestedListKeyboardService } from '../nested-list-keyboard.service';\nimport { NestedListStateService } from '../nested-list-state.service';\nimport { NestedItemInterface } from './nested-item.interface';\nimport { NestedItemService } from './nested-item.service';\n\nlet sideNavigationItemUniqueId = 0;\n\n@Directive({\n selector: '[fdNestedItem], [fd-nested-list-item]',\n providers: [NestedItemService],\n host: {\n role: 'treeitem'\n },\n standalone: true\n})\nexport class NestedItemDirective implements AfterContentInit, NestedItemInterface {\n /** Whether item should be expanded */\n @Input() set expanded(expanded: boolean) {\n if (expanded !== this._expanded) {\n this.propagateOpenChange(expanded);\n }\n }\n\n /** @hidden */\n get expanded(): boolean {\n return this._expanded;\n }\n\n /** Event thrown, when expanded state is changed */\n @Output()\n readonly expandedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** Event thrown, when any keyboard event is dispatched on this, or link element */\n @Output()\n readonly keyboardTriggered: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n\n /** @hidden */\n @HostBinding('class.fd-nested-list__item')\n fdNestedListItemClass = true;\n\n /**\n * @hidden\n * Reference to the link directive, to allow manipulating the properties of this element.\n */\n @ContentChild(NestedLinkDirective)\n linkItem: NestedLinkDirective;\n\n /**\n * @hidden\n * Mostly used, when this item has list\n * Reference to the content directive, to allow manipulating the properties of this element.\n */\n @ContentChild(NestedListContentDirective)\n contentItem: NestedListContentDirective;\n\n /** @hidden */\n @HostBinding('attr.aria-level')\n _ariaLevel: Nullable<number> = null;\n\n /** @hidden */\n @HostBinding('attr.title')\n _title: string;\n\n /** @hidden */\n @HostBinding('attr.role')\n protected _role: string;\n\n /** @hidden */\n @HostBinding('attr.aria-expanded')\n protected _ariaExpanded: Nullable<boolean> = null;\n\n /** @hidden */\n @HostBinding('attr.aria-selected')\n protected _ariaSelected: Nullable<boolean> = null;\n\n /** @hidden */\n @HostBinding('attr.aria-disabled')\n protected _ariaDisabled = false;\n\n /** @hidden */\n @HostBinding('attr.aria-label')\n protected _ariaLabel: string;\n\n /** @hidden */\n @HostBinding('attr.aria-hidden')\n protected _ariaHidden = true;\n\n /** @hidden */\n private _expanded = false;\n\n /** An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing) */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** Unique element ID */\n private readonly _elementId: string = 'fdNestedItem' + sideNavigationItemUniqueId++;\n\n /** @hidden */\n constructor(\n private _itemService: NestedItemService,\n private _keyboardService: NestedListKeyboardService,\n private _stateService: NestedListStateService\n ) {}\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._setUpSubscriptions();\n this._propagateHasChildrenProperty();\n this._passItemReferences();\n /** Propagate initial open state to children */\n this.propagateOpenChange(this._expanded);\n\n if (this.linkItem) {\n this._ariaSelected = this.linkItem.selected;\n this._ariaDisabled = !this._stateService.selectable && !this.linkItem.selected;\n this._title = this.linkItem.getTitle();\n }\n }\n\n /** Check if the item element has any child */\n get hasChildren(): boolean {\n return !!this._itemService?.list;\n }\n\n /** Get all of the children item elements */\n get allChildrenItems(): NestedItemInterface[] {\n if (this._itemService?.list) {\n return this._itemService.list.nestedItems.toArray();\n }\n\n return [];\n }\n\n /** Method that expand the item and propagate it to children */\n triggerOpen(): void {\n if (!this.expanded) {\n /** Propagate initial open state to children */\n this.propagateOpenChange(true);\n }\n }\n\n /** Method that close the item and propagate it to children */\n triggerClose(): void {\n if (this.expanded) {\n /** Propagate initial open state to children */\n this.propagateOpenChange(false);\n }\n }\n\n /** Method that toggle the item and propagate it to children */\n toggle(): void {\n /** Propagate initial open state to children */\n this.propagateOpenChange(!this._expanded);\n }\n\n /** Method that dispatches `click` event on link item*/\n click(): void {\n if (this.contentItem) {\n this.contentItem.click();\n } else if (this.linkItem) {\n this.linkItem.click();\n }\n }\n\n /** Method that focuses link item*/\n focus(): void {\n if (this.contentItem) {\n this.contentItem.focus();\n } else if (this.linkItem) {\n this.linkItem.focus();\n }\n }\n\n /** Method that provides information if element, or children of this element has passed id */\n containsId(id: string): boolean {\n if (this._elementId === id) {\n return true;\n }\n\n if (this._itemService.list) {\n return !!this._itemService.list.nestedItems.find((item) => item.containsId(id));\n }\n\n return false;\n }\n\n /**\n * @hidden\n * Propagate open state to all of the children\n */\n private propagateOpenChange(open: boolean): void {\n this._expanded = open;\n\n if (this.hasChildren) {\n this._ariaExpanded = this._expanded;\n }\n\n /**\n * Propagate to child content directive, which contains icon and link\n */\n if (this.contentItem) {\n this.contentItem.changeExpandedState(open);\n this.contentItem.ariaExpanded = this._expanded;\n }\n\n /** Propagate hidden flag to list component, that is passed from child */\n if (this._itemService.list) {\n this._itemService.list.hidden = !open;\n this._itemService.list.detectChanges();\n }\n\n /** Propagate open flag to popover list component, that is passed from child */\n if (this._itemService.popover) {\n this._itemService.popover.open = open;\n }\n\n /**\n * If there are any list below\n * Trigger event to provide keyboard support to new list of opened item element.\n * */\n if (this._shouldRefreshKeyboardService()) {\n this._keyboardService.refresh$.next();\n }\n\n this.expandedChange.emit(open);\n }\n\n /** @hidden */\n private _shouldRefreshKeyboardService(): boolean {\n return !!(this._itemService.popover || this._itemService.list || this.contentItem);\n }\n\n /** @hidden */\n private _setUpSubscriptions(): void {\n if (this._stateService.condensed) {\n this._role = 'menuitemradio';\n }\n\n /** Subscribe to mouse click event, thrown by link item */\n this._itemService.toggle.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => this.toggle());\n\n /** Subscribe to mouse click event, thrown by link item */\n this._itemService.click\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => this._stateService.onSelected.next(this._elementId));\n\n /** Subscribe to keyboard event and throw it farther */\n this._itemService.keyDown\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((keyboardEvent) => this.keyboardTriggered.emit(keyboardEvent));\n\n /** Subscribe to selected state change, it's not triggered, when selectable flag is disabled*/\n this._stateService.onSelected\n .pipe(\n takeUntilDestroyed(this._destroyRef),\n filter(() => this._stateService.selectable)\n )\n .subscribe((id) => this._selectedChange(id));\n }\n\n /** @hidden */\n private _propagateHasChildrenProperty(): void {\n if (this.contentItem && this.hasChildren) {\n this._ariaExpanded = false;\n this.contentItem.hasChildren = true;\n this.contentItem.changeDetRef.detectChanges();\n }\n }\n\n /** Pass this element to popover child item, to allow control `expanded` value */\n private _passItemReferences(): void {\n if (this._itemService.popover) {\n this._itemService.popover.parentItemElement = this;\n }\n }\n\n /** Change of selected state of content or link, if there is any children with I */\n private _selectedChange(id: string): void {\n const selected = this.containsId(id);\n this._ariaSelected = selected;\n\n if (this.contentItem) {\n this.contentItem.changeSelected(selected);\n } else if (this.linkItem) {\n this.linkItem.changeSelected(selected);\n }\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n ContentChild,\n inject,\n Input,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { RtlService } from '@fundamental-ngx/cdk/utils';\nimport { PopoverBodyComponent, PopoverComponent, PopoverControlComponent } from '@fundamental-ngx/core/popover';\nimport { Placement } from '@fundamental-ngx/core/shared';\nimport { NestedListContentDirective } from '../nested-content/nested-list-content.directive';\nimport { NestedItemInterface } from '../nested-item/nested-item.interface';\nimport { NestedItemService } from '../nested-item/nested-item.service';\nimport { NestedLinkDirective } from '../nested-link/nested-link.directive';\nimport { NestedListTitleDirective } from '../nested-list-directives';\nimport { NestedListKeyboardService } from '../nested-list-keyboard.service';\nimport { NestedListPopoverInterface } from './nested-list-popover.interface';\n\n@Component({\n selector: 'fd-nested-list-popover',\n templateUrl: './nested-list-popover.component.html',\n styleUrl: './nested-list-popover.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'fd-nested-list__popover'\n },\n imports: [\n PopoverComponent,\n PopoverControlComponent,\n PopoverBodyComponent,\n NestedLinkDirective,\n NestedListTitleDirective\n ]\n})\nexport class NestedListPopoverComponent implements NestedListPopoverInterface, AfterContentInit {\n /** @hidden\n * For Internal Usage - Gets information about title, which should be displayed inside popover\n */\n @Input()\n title = '';\n\n /** @hidden */\n @ViewChild(PopoverComponent)\n popoverComponent: PopoverComponent;\n\n /** @hidden */\n @ContentChild(NestedLinkDirective)\n linkDirective: NestedLinkDirective;\n\n /** @hidden */\n @ContentChild(NestedListContentDirective)\n contentDirective: NestedListContentDirective;\n\n /**\n * @hidden\n * Reference to parent item, to propagate open and close change from popover.\n */\n parentItemElement: NestedItemInterface;\n\n /** @hidden */\n open = false;\n\n /** @hidden */\n protected readonly placement = computed<Placement>(() => (this._rtlService?.rtl() ? 'left-start' : 'right-start'));\n\n /** @hidden */\n private readonly _keyboardNestService = inject(NestedListKeyboardService);\n\n /** @hidden */\n private readonly _itemService = inject(NestedItemService, { optional: true });\n\n /** @hidden */\n private readonly _rtlService = inject(RtlService, { optional: true });\n\n /** @hidden */\n constructor() {\n this._listenOnKeyboardRefresh();\n if (this._itemService) {\n this._itemService.popover = this;\n }\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n if (!this.title) {\n this.title = this._getTitle();\n }\n }\n\n /**\n * Method called, when open state is changed, from popover component (escape key, outside click).\n */\n handleOpenChange(open: boolean): void {\n this.open = open;\n if (this.parentItemElement) {\n if (open) {\n this.parentItemElement.triggerOpen();\n } else {\n this.parentItemElement.triggerClose();\n }\n }\n }\n\n /** Returns title of nested link element inside content directive */\n private _getTitle(): string {\n if (this.contentDirective && this.contentDirective.nestedLink) {\n return this.contentDirective.nestedLink.getTitle();\n } else {\n return '';\n }\n }\n\n /** @hidden */\n private _listenOnKeyboardRefresh(): void {\n this._keyboardNestService.refresh$.subscribe(() => {\n /** Update popover position, on list of hidden items change */\n if (this.popoverComponent) {\n this.popoverComponent.refreshPosition();\n }\n });\n }\n}\n","<fd-popover\n [placement]=\"placement()\"\n [triggers]=\"['click']\"\n [noArrow]=\"false\"\n [isOpen]=\"open\"\n (isOpenChange)=\"handleOpenChange($event)\"\n>\n <fd-popover-control>\n <ng-content select=\"[fd-nested-list-link]\"></ng-content>\n <ng-content select=\"[fd-nested-list-content]\"></ng-content>\n </fd-popover-control>\n <fd-popover-body class=\"fd-nested-list--text-only\">\n <a fd-nested-list-link class=\"fd-nested-list__popover-header\">\n <span fd-nested-list-title>{{ title }}</span>\n </a>\n <ng-content select=\"[fd-nested-list]\"></ng-content>\n <ng-content select=\"fd-prepared-nested-list\"></ng-content>\n </fd-popover-body>\n</fd-popover>\n","import {\n AfterContentInit,\n ChangeDetectorRef,\n ContentChild,\n ContentChildren,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n forwardRef,\n HostBinding,\n inject,\n Injector,\n Input,\n Optional,\n Provider,\n QueryList\n} from '@angular/core';\nimport { startWith } from 'rxjs';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { MenuKeyboardService } from '@fundamental-ngx/core/menu';\nimport { FD_LANGUAGE_SIGNAL, FdLanguage, TranslationResolver } from '@fundamental-ngx/i18n';\nimport { NestedItemDirective } from '../nested-item/nested-item.directive';\nimport { NestedItemService } from '../nested-item/nested-item.service';\nimport { NestedListHeaderDirective } from '../nested-list-directives';\nimport { NestedListKeyboardService } from '../nested-list-keyboard.service';\nimport { NestedListStateService } from '../nested-list-state.service';\nimport { NestedListInterface } from './nested-list.interface';\n\nfunction provideNestedListStateService(): Provider {\n // Nested list can be nested, and that will cause on each individual instance of NestedListStateService.\n return {\n provide: NestedListStateService,\n useFactory: () =>\n inject(NestedListStateService, { skipSelf: true, optional: true }) ?? new NestedListStateService()\n };\n}\n\n/**\n * <div fd-nested-list>\n * <div fd-nested-list>\n * </div>\n * </div>\n */\n\n@Directive({\n selector: '[fdNestedList], [fd-nested-list]',\n providers: [\n contentDensityObserverProviders(),\n MenuKeyboardService,\n NestedListKeyboardService,\n provideNestedListStateService()\n ],\n standalone: true\n})\nexport class NestedListDirective implements AfterContentInit, NestedListInterface {\n /** In case the user wants to no use icons for items in this list */\n @Input()\n @HostBinding('class.fd-nested-list--text-only')\n textOnly = false;\n\n /** Aria defines role description for the Nested List Tree. */\n @Input()\n ariaRoledescriptionTree = 'Navigation List Tree';\n\n /** Aria defines role description for the Nested List MenuBar. */\n @Input()\n ariaRoledescriptionMenuBar = 'Navigation List Menu Bar';\n\n /** Aria defines aria label for the selected item when the list with disabled selection. */\n @Input()\n ariaLabelSelected = 'Selected';\n\n /** @hidden */\n @HostBinding('class.fd-nested-list')\n fdNestedListItemClass = true;\n\n /** @hidden */\n @HostBinding('attr.aria-hidden')\n hidden = false;\n\n /**\n * @hidden\n * This variable is mostly to keep track of this list's children. There is not usage of it inside this directive,\n * but it's used by services and NestedItemDirective by itself,\n */\n @ContentChildren(forwardRef(() => NestedItemDirective))\n nestedItems: QueryList<NestedItemDirective>;\n\n /** @hidden */\n @ContentChild(NestedListHeaderDirective)\n protected _nestedListHeader: NestedListHeaderDirective;\n\n /** @hidden */\n @HostBinding('attr.role')\n protected _role = 'tree';\n\n /** @hidden */\n @HostBinding('attr.aria-roledescription')\n protected _ariaRoledescription: Nullable<string> = this.ariaRoledescriptionTree;\n\n /** @hidden */\n @HostBinding('attr.aria-haspopup')\n protected _ariaHaspopup: Nullable<string> = null;\n\n /** @hidden */\n @HostBinding('attr.tabindex')\n protected _tabindex = '-1';\n\n /** @hidden */\n private readonly _translationResolver = new TranslationResolver();\n\n /** @hidden */\n private readonly _langSignal = inject(FD_LANGUAGE_SIGNAL);\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private readonly _injector = inject(Injector);\n\n /** @hidden */\n constructor(\n @Optional() private _nestedItemService: NestedItemService,\n private _nestedListKeyboardService: NestedListKeyboardService,\n private _elementRef: ElementRef,\n private _changeDetectionRef: ChangeDetectorRef,\n private readonly _nestedListStateService: NestedListStateService,\n _contentDensityObserver: ContentDensityObserver\n ) {\n if (this._nestedItemService) {\n this._nestedItemService.list = this;\n }\n _contentDensityObserver.subscribe();\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n let nestedLevel: number = this._getNestedLevel();\n /** If there is condensed mode, maximum 2nd level class of nest can be added */\n if (this._nestedListStateService.condensed) {\n nestedLevel = Math.min(...[nestedLevel, 2]);\n }\n\n this._setAccessibilityProperties(nestedLevel);\n\n // Register effect with explicit injector context\n effect(\n () => {\n const lang = this._langSignal();\n this._nestedListKeyboardService.refresh$.next();\n this._setAriaAttributes(nestedLevel, lang);\n },\n { injector: this._injector }\n );\n\n // React to nested items changes\n this.nestedItems.changes.pipe(startWith(undefined), takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n const lang = this._langSignal();\n this._nestedListKeyboardService.refresh$.next();\n this._setAriaAttributes(nestedLevel, lang);\n });\n\n this._handleNestedLevel(nestedLevel);\n }\n\n /** @hidden */\n detectChanges(): void {\n this._changeDetectionRef.markForCheck();\n }\n\n /** @hidden */\n private _handleNestedLevel(level: number): void {\n /** Adding class with the nested level */\n this._elementRef.nativeElement.classList.add('level-' + level);\n }\n\n /**\n * @hidden\n * Method, that checks how deep is the list element\n */\n private _getNestedLevel(): number {\n let element = this._elementRef.nativeElement;\n const parentElements: Element[] = [];\n\n /** Method that gathers all of the parentNode elements of current NestedListDirective element */\n while (element.parentNode) {\n parentElements.unshift(element);\n element = element.parentNode;\n }\n\n /** Filter only elements, that has `fd-nested-list` directive attribute */\n const filteredParentElements = parentElements.filter((_element) => _element.hasAttribute('fd-nested-list'));\n return filteredParentElements.length;\n }\n\n /** @hidden */\n private _setAriaAttributes(level: number, lang: FdLanguage): void {\n this.nestedItems.forEach((item, i) => {\n item._ariaLevel = level;\n if (!item.linkItem) {\n return;\n } else {\n item.linkItem.ariaDescribedby = this._nestedListHeader?.id || null;\n item.linkItem._ariaLabel = this._translationResolver.resolve(lang, 'coreNestedList.linkItemAriaLabel', {\n itemDetails: item.linkItem.getTitle(),\n index: i + 1, // TODO: this property has been deprecated and will be removed from translations\n total: this.nestedItems.length, // TODO: this property has been deprecated and will be removed from translations\n selectedDescription:\n !this._nestedListStateService.selectable && item.linkItem.selected\n ? ', ' + this.ariaLabelSelected\n : ''\n });\n }\n });\n\n this._changeDetectionRef.detectChanges();\n }\n\n /** @hidden */\n private _setAccessibilityProperties(level: number): void {\n if (this._nestedListStateService.condensed && level === 1) {\n this._ariaRoledescription = this.ariaRoledescriptionMenuBar;\n }\n\n if (level > 1 || (this._nestedItemService?.popover && !this._nestedListStateService.condensed)) {\n this._role = 'group';\n this._ariaRoledescription = null;\n }\n\n if (this._nestedItemService?.popover) {\n this._ariaHaspopup = 'tree';\n }\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, ViewChild, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { NestedListContentDirective } from '../nested-content/nested-list-content.directive';\nimport { NestedItemDirective } from '../nested-item/nested-item.directive';\nimport { NestedLinkDirective } from '../nested-link/nested-link.directive';\nimport {\n NestedListExpandIconComponent,\n NestedListHeaderDirective,\n NestedListIconComponent,\n NestedListTitleDirective\n} from '../nested-list-directives';\nimport { NestedListItem, NestedListModel } from '../nested-list-model';\nimport { NestedListPopoverComponent } from '../nested-list-popover/nested-list-popover.component';\nimport { NestedListDirective } from '../nested-list/nested-list.directive';\n\n/**\n * Component for internal usage, allows to generate the nested list from defined object.\n */\n@Component({\n selector: 'fd-prepared-nested-list',\n templateUrl: './prepared-nested-list.component.html',\n styleUrl: './prepared-nested-list.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NestedListDirective,\n NestedListHeaderDirective,\n NestedItemDirective,\n NestedListPopoverComponent,\n NestedListContentDirective,\n NgTemplateOutlet,\n NestedListExpandIconComponent,\n forwardRef(() => PreparedNestedListComponent),\n NestedLinkDirective,\n RouterLink,\n NestedListIconComponent,\n NestedListTitleDirective\n ]\n})\nexport class PreparedNestedListComponent {\n /**\n * @hidden\n * For internal usage.\n * Defines if the component is first\n */\n @Input()\n first = true;\n\n /** Defines if list should be displayed in condensed mode */\n @Input()\n condensed = false;\n\n /** List configuration*/\n @Input()\n list: Nullable<NestedListModel>;\n\n /**\n * @hidden\n */\n @ViewChild(forwardRef(() => NestedListDirective))\n _nestedListDirective: NestedListDirective;\n\n /**\n * In prepared nested list, nested items should be taken as reference of View, not Content.\n * There is direct reference to these directives here.\n */\n get nestedListDirective(): NestedListDirective {\n return this._nestedListDirective;\n }\n\n /** @hidden */\n _expandedChange(expanded: boolean, item: NestedListItem): void {\n item.expanded = expanded;\n }\n}\n","<ul fd-nested-list [textOnly]=\"!!list?.textOnly\">\n @for (item of list?.items; track item) {\n @if (item.headerTitle) {\n <li fd-nested-list-header>\n {{ item.headerTitle }}\n </li>\n } @else {\n <li fd-nested-list-item [expanded]=\"!!item.expanded\" (expandedChange)=\"_expandedChange($event, item)\">\n @if (condensed && first && item.list) {\n <fd-nested-list-popover [title]=\"item.link?.title || ''\">\n <div fd-nested-list-content [selected]=\"!!item.link?.selected\">\n <ng-template\n [ngTemplateOutlet]=\"link\"\n [ngTemplateOutletContext]=\"{ item: item }\"\n ></ng-template>\n <button fd-nested-list-expand-icon></button>\n </div>\n @if (item.list) {\n <fd-prepared-nested-list [first]=\"false\" [list]=\"item.list\"></fd-prepared-nested-list>\n }\n </fd-nested-list-popover>\n }\n @if (!item.list) {\n <ng-template [ngTemplateOutlet]=\"link\" [ngTemplateOutletContext]=\"{ item: item }\"></ng-template>\n }\n @if ((!condensed || !first) && item.list) {\n <div fd-nested-list-content>\n <ng-template [ngTemplateOutlet]=\"link\" [ngTemplateOutletContext]=\"{ item: item }\"></ng-template>\n <button fd-nested-list-expand-icon></button>\n </div>\n @if (item.list) {\n <fd-prepared-nested-list [first]=\"false\" [list]=\"item.list\"></fd-prepared-nested-list>\n }\n }\n <ng-template let-item=\"item\" #link>\n @if (item.link) {\n <a\n fd-nested-list-link\n [onClickCallback]=\"item.link.callback\"\n [selected]=\"!item.list && item.link.selected\"\n [attr.href]=\"item.link.href ? item.link.href : null\"\n [routerLink]=\"item.link.routerLink ? item.link.routerLink : []\"\n >\n @if (item.link.icon) {\n <span fd-nested-list-icon [glyph]=\"item.link.icon\"></span>\n }\n <span fd-nested-list-title>{{ item.link.title }}</span>\n </a>\n }\n </ng-template>\n </li>\n }\n }\n</ul>\n","import { NgModule } from '@angular/core';\nimport { MenuKeyboardService } from '@fundamental-ngx/core/menu';\nimport { NestedListContentDirective } from './nested-content/nested-list-content.directive';\nimport { NestedItemDirective } from './nested-item/nested-item.directive';\nimport { NestedLinkDirective } from './nested-link/nested-link.directive';\nimport {\n NestedListExpandIconComponent,\n NestedListHeaderDirective,\n NestedListIconComponent,\n NestedListTitleDirective\n} from './nested-list-directives';\nimport { NestedListKeyboardService } from './nested-list-keyboard.service';\nimport { NestedListPopoverComponent } from './nested-list-popover/nested-list-popover.component';\nimport { NestedListStateService } from './nested-list-state.service';\nimport { NestedListDirective } from './nested-list/nested-list.directive';\nimport { PreparedNestedListComponent } from './prepared-nested-list/prepared-nested-list.component';\n\nconst components = [\n NestedListDirective,\n NestedLinkDirective,\n NestedItemDirective,\n NestedListIconComponent,\n NestedListTitleDirective,\n NestedListHeaderDirective,\n NestedListPopoverComponent,\n PreparedNestedListComponent,\n NestedListExpandIconComponent,\n NestedListContentDirective\n];\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [...components],\n exports: [...components],\n providers: [MenuKeyboardService, NestedListKeyboardService, NestedListStateService]\n})\nexport class NestedListModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.NestedItemService","i2.NestedListKeyboardService","i3.NestedListStateService"],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-core-nested-list.mjs","sources":["../../../../libs/core/nested-list/nested-item/nested-item.service.ts","../../../../libs/core/nested-list/nested-list-directives.ts","../../../../libs/core/nested-list/nested-link/nested-link.directive.ts","../../../../libs/core/nested-list/nested-content/nested-list-content.directive.ts","../../../../libs/core/nested-list/nested-list-keyboard.service.ts","../../../../libs/core/nested-list/nested-list-state.service.ts","../../../../libs/core/nested-list/nested-item/nested-item.directive.ts","../../../../libs/core/nested-list/nested-list-popover/nested-list-popover.component.ts","../../../../libs/core/nested-list/nested-list-popover/nested-list-popover.component.html","../../../../libs/core/nested-list/nested-list/nested-list.directive.ts","../../../../libs/core/nested-list/prepared-nested-list/prepared-nested-list.component.ts","../../../../libs/core/nested-list/prepared-nested-list/prepared-nested-list.component.html","../../../../libs/core/nested-list/nested-list.module.ts","../../../../libs/core/nested-list/fundamental-ngx-core-nested-list.ts"],"sourcesContent":["import { Subject } from 'rxjs';\nimport { NestedListPopoverInterface } from '../nested-list-popover/nested-list-popover.interface';\nimport { NestedListInterface } from '../nested-list/nested-list.interface';\n\n/** Contains references to popover or list nested components, that are placed as direct children of item component */\nexport class NestedItemService {\n /** @hidden */\n list: NestedListInterface;\n /** @hidden */\n popover?: NestedListPopoverInterface;\n\n /** Subject fired when expand icon is clicked */\n toggle: Subject<boolean> = new Subject<boolean>();\n\n /** Subject fired, when child elements are focused */\n focus: Subject<void> = new Subject<void>();\n\n /** Subject fired, when content or link is clicked */\n click: Subject<void> = new Subject<void>();\n\n /** KeyDown handler, it is triggered from link, content and item elements */\n keyDown: Subject<KeyboardEvent> = new Subject<KeyboardEvent>();\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n Directive,\n ElementRef,\n inject,\n Input,\n signal,\n ViewEncapsulation\n} from '@angular/core';\nimport { RtlService } from '@fundamental-ngx/cdk/utils';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { NestedItemService } from './nested-item/nested-item.service';\n\nlet uniqueId = 0;\n\n@Directive({\n selector: '[fdNestedDirectivesHeader], [fd-nested-list-header]',\n host: {\n class: 'fd-nested-list__group-header',\n '[attr.id]': 'id'\n }\n})\nexport class NestedListHeaderDirective {\n /** Id of the element. */\n @Input()\n id: string | null = `fd-nested-list-group-header-${++uniqueId}`;\n\n /** @hidden */\n private readonly _elementRef = inject(ElementRef);\n\n /** Get the header title */\n get title(): string {\n return this._elementRef.nativeElement.textContent;\n }\n}\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fdNestedDirectivesIcon], [fd-nested-list-icon]',\n template: `<ng-content></ng-content>`,\n host: {\n class: 'fd-nested-list__icon',\n '[attr.role]': 'role'\n }\n})\nexport class NestedListIconComponent extends IconComponent {\n /** Role attribute */\n @Input()\n role = 'presentation';\n}\n\n@Directive({\n selector: '[fdNestedDirectivesTitle], [fd-nested-list-title]',\n host: {\n class: 'fd-nested-list__title'\n }\n})\nexport class NestedListTitleDirective {\n /** @hidden */\n private readonly _elementRef = inject(ElementRef);\n\n /** Returns element's InnerText */\n getInnerText(): string {\n return this._elementRef?.nativeElement.textContent;\n }\n}\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fdNestedListExpandIcon], [fd-nested-list-expand-icon]',\n template: `\n <ng-content></ng-content>\n <fd-icon [glyph]=\"expandIcon()\"></fd-icon>\n `,\n host: {\n 'aria-haspopup': 'true',\n tabindex: '-1',\n class: 'fd-nested-list__button fd-button',\n '[class.is-expanded]': 'expanded()',\n '[attr.aria-expanded]': 'expanded()',\n '[attr.aria-hidden]': 'true',\n '(click)': 'onClick($event)',\n '(focus)': 'onFocus()'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [IconComponent]\n})\nexport class NestedListExpandIconComponent {\n /**\n * @hidden\n * Attribute controlled by the parent `NestedItemDirective`\n */\n readonly expanded = signal(false);\n\n /** @hidden */\n readonly expandIcon = computed(() => {\n if (this.expanded()) {\n return 'navigation-down-arrow';\n }\n return this._rtlService?.rtl() ? 'navigation-left-arrow' : 'navigation-right-arrow';\n });\n\n /** @hidden */\n private readonly _itemService = inject(NestedItemService);\n\n /** @hidden */\n private readonly _rtlService = inject(RtlService, { optional: true });\n\n /** Mouse event handler */\n onClick(event: MouseEvent): void {\n this.expanded.update((v) => !v);\n this._itemService.toggle.next(this.expanded());\n event.stopPropagation();\n }\n\n /** Handler for focus events */\n onFocus(): void {\n this._itemService.focus.next();\n }\n\n /** @hidden */\n changeExpandedState(expanded: boolean): void {\n this.expanded.set(expanded);\n }\n}\n","import {\n ChangeDetectorRef,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n Output\n} from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { NestedItemLink } from '../nested-item/nested-item.interface';\nimport { NestedItemService } from '../nested-item/nested-item.service';\nimport { NestedListTitleDirective } from '../nested-list-directives';\n\n@Directive({\n selector: '[fdNestedLink], [fd-nested-list-link]',\n standalone: true\n})\nexport class NestedLinkDirective implements NestedItemLink {\n /** Function that is called on click event dispatch on this element. */\n @Input()\n onClickCallback: () => void;\n\n /** Whether this element is selected*/\n @Input()\n @HostBinding('class.is-selected')\n selected = false;\n\n /** @hidden */\n @HostBinding('attr.aria-label')\n _ariaLabel: string;\n\n /** @hidden */\n @Input()\n @HostBinding('attr.aria-describedby')\n ariaDescribedby: Nullable<string | number>;\n\n /** Event thrown, when selected state is changed */\n @Output()\n selectedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** @hidden */\n @HostBinding('class.fd-nested-list__link')\n fdNestedListItemClass = true;\n\n /** @hidden */\n @HostBinding('attr.tabindex')\n tabIndex = 0;\n\n /** @hidden */\n @HostBinding('attr.role')\n role = 'treeitem';\n\n /**\n * @hidden\n * Reference to title element, it is used, to get title for condensed mode.\n */\n @ContentChild(NestedListTitleDirective)\n title: NestedListTitleDirective;\n\n /** @hidden */\n constructor(\n public changeDetRef: ChangeDetectorRef,\n private _elementRef: ElementRef,\n private _itemService: NestedItemService\n ) {}\n\n /** Handler for keyboard events */\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent): void {\n this._itemService.keyDown.next(event);\n }\n\n /** Handler for mouse events */\n @HostListener('click')\n onClick(): void {\n this._itemService.click.next();\n if (this.onClickCallback) {\n this.onClickCallback();\n }\n }\n\n /** Handler for focus events */\n @HostListener('focus')\n onFocus(): void {\n this._itemService.focus.next();\n }\n\n /** Method to trigger selected state change */\n changeSelected(selected: boolean): void {\n this.selected = selected;\n this.selectedChange.emit(selected);\n }\n\n /** Set focus on the element. */\n focus(): void {\n this._elementRef.nativeElement.focus();\n }\n\n /** Dispatches the click event on the element */\n click(): void {\n this._elementRef.nativeElement.click();\n }\n\n /** Returns the title value of the title directive */\n getTitle(): string {\n return this.title && this.title.getInnerText();\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectorRef,\n ContentChild,\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n Output,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NestedItemService } from '../nested-item/nested-item.service';\nimport { NestedLinkDirective } from '../nested-link/nested-link.directive';\nimport { NestedListExpandIconComponent } from '../nested-list-directives';\n\n@Directive({\n selector: '[fdNestedListContent], [fd-nested-list-content]',\n host: {\n tabindex: '0'\n },\n standalone: true\n})\nexport class NestedListContentDirective implements AfterContentInit {\n /** Whether this element is selected*/\n @Input()\n @HostBinding('class.is-selected')\n selected = false;\n\n /** @hidden */\n @HostBinding('attr.role')\n role = 'treeitem';\n\n /** @hidden */\n @HostBinding('attr.aria-expanded')\n ariaExpanded = false;\n\n /** Event thrown, when selected state is changed */\n @Output()\n selectedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** Event that is thrown, when any keyboard event is dispatched on this element */\n @Output()\n readonly keyboardTriggered: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n\n /** Event that is thrown, when this element is clicked */\n @Output()\n readonly clicked: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /** @hidden */\n @HostBinding('class.fd-nested-list__content')\n fdNestedListContentClass = true;\n\n /**\n * @hidden\n * Attribute controlled by the parent `NestedItemDirective`\n */\n @HostBinding('class.has-child')\n hasChildren = false;\n\n /** @hidden */\n @ContentChild(NestedLinkDirective)\n nestedLink: NestedLinkDirective;\n\n /** @hidden */\n @ContentChild(NestedListExpandIconComponent)\n nestedExpandIcon: NestedListExpandIconComponent;\n\n /** An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing) */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n constructor(\n public changeDetRef: ChangeDetectorRef,\n private _elementRef: ElementRef,\n private _itemService: NestedItemService\n ) {}\n\n /** Keyboard Event Handler */\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent): void {\n this.keyboardTriggered.emit(event);\n this._itemService.keyDown.next(event);\n }\n\n /** Handler for mouse events */\n @HostListener('click')\n onClick(): void {\n this._itemService.click.next();\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._makeLinkUnFocusable();\n this._setFocusSubscription();\n }\n\n /** Method to trigger selected state change */\n changeSelected(selected: boolean): void {\n this.selected = selected;\n this.selectedChange.emit(selected);\n }\n\n /** Expanded state change propagation method */\n changeExpandedState(expanded: boolean): void {\n if (this.nestedExpandIcon) {\n this.nestedExpandIcon.changeExpandedState(expanded);\n }\n }\n\n /** Set focus on the element. */\n focus(): void {\n this._elementRef.nativeElement.focus();\n }\n\n /** Dispatches the click event on the element */\n click(): void {\n this.focus();\n if (this.nestedLink) {\n this.nestedLink.click();\n }\n }\n\n /** Add subscription for child focusing */\n private _setFocusSubscription(): void {\n this._itemService.focus.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => this.focus());\n }\n\n /** Hide link child element from tab key */\n private _makeLinkUnFocusable(): void {\n if (this.nestedLink) {\n this.nestedLink.tabIndex = -1;\n this.changeDetRef.detectChanges();\n }\n }\n}\n","import { ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE } from '@angular/cdk/keycodes';\nimport { DestroyRef, Inject, Injectable, inject } from '@angular/core';\nimport { KeyUtil, destroyObservable } from '@fundamental-ngx/cdk/utils';\nimport { MenuKeyboardService } from '@fundamental-ngx/core/menu';\nimport { Subject, merge } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { NestedItemInterface } from './nested-item/nested-item.interface';\nimport { NestedListInterface } from './nested-list/nested-list.interface';\n\n/**\n * Nested list keyboard service, which uses MenuKeyboardService, to deal with ArrowUp, ArrowDown, Space, Enter.\n * Also has own handling of ArrowLeft and ArrowRight, to open/close the menu if it has any children.\n */\n@Injectable()\nexport class NestedListKeyboardService {\n /**\n * Event, that is thrown always, when the open/close i being called on item components.\n * Also triggers changing of elements, to remove closed/hidden elements\n */\n readonly refresh$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n constructor(@Inject(MenuKeyboardService) private keyboardService: MenuKeyboardService) {}\n\n /**\n * Function called after refresh$ event is triggered.\n * Refresh the list of NestedItems, that the keyboard support should be provided for\n */\n refreshItems(lists: NestedListInterface[]): void {\n const items: NestedItemInterface[] = [];\n\n /** Gathering all of the items */\n lists.forEach((list) => items.push(...this._getAllListItems(list)));\n /** Putting the keyboard support function to each of the items */\n items.forEach((item, index) => {\n item.keyboardTriggered\n .pipe(takeUntil(merge(this.refresh$, destroyObservable(this._destroyRef))))\n .subscribe((keyboardEvent: KeyboardEvent) => this._handleKeyDown(keyboardEvent, index, items));\n });\n }\n\n /** Recursive function to get all of the NestedItem elements in correct order. */\n private _getItems(item: NestedItemInterface): NestedItemInterface[] {\n const childrenItems = item.expanded ? item.allChildrenItems : [];\n return childrenItems.reduce(\n (actualArray: NestedItemInterface[], nextItem: NestedItemInterface) => [\n ...actualArray,\n ...this._getItems(nextItem)\n ],\n [item]\n );\n }\n\n /** Method that calls the recursive function, getItems() and gathers all of the items in the NestedList */\n private _getAllListItems(list: NestedListInterface): NestedItemInterface[] {\n const _items: NestedItemInterface[] = [];\n if (list && list.nestedItems && list.nestedItems.length > 0) {\n list.nestedItems.forEach((item) => {\n _items.push(...this._getItems(item));\n });\n }\n\n return _items;\n }\n\n /**\n * Keyboard handle function. Uses keyboard support service from MenuComponent, to deal with ArrowUp, ArrowDown, Space, Enter.\n * For ArrowRight, if item is not expanded and has children (list or popup), the open function is triggered.\n * Otherwise it follows ArrowDown functionality.\n * For ArrowLeft, if item is expanded and has children (list or popup), the close function is triggered.\n * Otherwise it follows ArrowUp functionality\n */\n private _handleKeyDown(keyboardEvent: KeyboardEvent, index: number, items: NestedItemInterface[]): void {\n const item: NestedItemInterface = items[index];\n\n if (KeyUtil.isKeyCode(keyboardEvent, RIGHT_ARROW)) {\n if (!item.expanded && item.hasChildren) {\n item.triggerOpen();\n }\n keyboardEvent.preventDefault();\n }\n\n if (KeyUtil.isKeyCode(keyboardEvent, LEFT_ARROW)) {\n if (item.expanded && item.hasChildren) {\n item.triggerClose();\n }\n keyboardEvent.preventDefault();\n }\n\n if (KeyUtil.isKeyCode(keyboardEvent, [ENTER, SPACE])) {\n if (item.hasChildren) {\n items[index].click();\n }\n keyboardEvent.preventDefault();\n }\n\n this.keyboardService.keyDownHandler(keyboardEvent, index, items);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class NestedListStateService {\n /**\n * @hidden\n * The condensed state is modified by the parent and read by nested lists.\n */\n condensed = false;\n\n /**\n * @hidden\n */\n selectable = true;\n\n /** @hidden */\n onSelected: Subject<string> = new Subject<string>();\n}\n","import {\n AfterContentInit,\n ContentChild,\n DestroyRef,\n Directive,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n inject\n} from '@angular/core';\nimport { filter } from 'rxjs/operators';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { NestedListContentDirective } from '../nested-content/nested-list-content.directive';\nimport { NestedLinkDirective } from '../nested-link/nested-link.directive';\nimport { NestedListKeyboardService } from '../nested-list-keyboard.service';\nimport { NestedListStateService } from '../nested-list-state.service';\nimport { NestedItemInterface } from './nested-item.interface';\nimport { NestedItemService } from './nested-item.service';\n\nlet sideNavigationItemUniqueId = 0;\n\n@Directive({\n selector: '[fdNestedItem], [fd-nested-list-item]',\n providers: [NestedItemService],\n host: {\n role: 'treeitem'\n },\n standalone: true\n})\nexport class NestedItemDirective implements AfterContentInit, NestedItemInterface {\n /** Whether item should be expanded */\n @Input() set expanded(expanded: boolean) {\n if (expanded !== this._expanded) {\n this.propagateOpenChange(expanded);\n }\n }\n\n /** @hidden */\n get expanded(): boolean {\n return this._expanded;\n }\n\n /** Event thrown, when expanded state is changed */\n @Output()\n readonly expandedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** Event thrown, when any keyboard event is dispatched on this, or link element */\n @Output()\n readonly keyboardTriggered: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n\n /** @hidden */\n @HostBinding('class.fd-nested-list__item')\n fdNestedListItemClass = true;\n\n /**\n * @hidden\n * Reference to the link directive, to allow manipulating the properties of this element.\n */\n @ContentChild(NestedLinkDirective)\n linkItem: NestedLinkDirective;\n\n /**\n * @hidden\n * Mostly used, when this item has list\n * Reference to the content directive, to allow manipulating the properties of this element.\n */\n @ContentChild(NestedListContentDirective)\n contentItem: NestedListContentDirective;\n\n /** @hidden */\n @HostBinding('attr.aria-level')\n _ariaLevel: Nullable<number> = null;\n\n /** @hidden */\n @HostBinding('attr.title')\n _title: string;\n\n /** @hidden */\n @HostBinding('attr.role')\n protected _role: string;\n\n /** @hidden */\n @HostBinding('attr.aria-expanded')\n protected _ariaExpanded: Nullable<boolean> = null;\n\n /** @hidden */\n @HostBinding('attr.aria-selected')\n protected _ariaSelected: Nullable<boolean> = null;\n\n /** @hidden */\n @HostBinding('attr.aria-disabled')\n protected _ariaDisabled = false;\n\n /** @hidden */\n @HostBinding('attr.aria-label')\n protected _ariaLabel: string;\n\n /** @hidden */\n @HostBinding('attr.aria-hidden')\n protected _ariaHidden = true;\n\n /** @hidden */\n private _expanded = false;\n\n /** An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing) */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** Unique element ID */\n private readonly _elementId: string = 'fdNestedItem' + sideNavigationItemUniqueId++;\n\n /** @hidden */\n constructor(\n private _itemService: NestedItemService,\n private _keyboardService: NestedListKeyboardService,\n private _stateService: NestedListStateService\n ) {}\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._setUpSubscriptions();\n this._propagateHasChildrenProperty();\n this._passItemReferences();\n /** Propagate initial open state to children */\n this.propagateOpenChange(this._expanded);\n\n if (this.linkItem) {\n this._ariaSelected = this.linkItem.selected;\n this._ariaDisabled = !this._stateService.selectable && !this.linkItem.selected;\n this._title = this.linkItem.getTitle();\n }\n }\n\n /** Check if the item element has any child */\n get hasChildren(): boolean {\n return !!this._itemService?.list;\n }\n\n /** Get all of the children item elements */\n get allChildrenItems(): NestedItemInterface[] {\n if (this._itemService?.list) {\n return this._itemService.list.nestedItems.toArray();\n }\n\n return [];\n }\n\n /** Method that expand the item and propagate it to children */\n triggerOpen(): void {\n if (!this.expanded) {\n /** Propagate initial open state to children */\n this.propagateOpenChange(true);\n }\n }\n\n /** Method that close the item and propagate it to children */\n triggerClose(): void {\n if (this.expanded) {\n /** Propagate initial open state to children */\n this.propagateOpenChange(false);\n }\n }\n\n /** Method that toggle the item and propagate it to children */\n toggle(): void {\n /** Propagate initial open state to children */\n this.propagateOpenChange(!this._expanded);\n }\n\n /** Method that dispatches `click` event on link item*/\n click(): void {\n if (this.contentItem) {\n this.contentItem.click();\n } else if (this.linkItem) {\n this.linkItem.click();\n }\n }\n\n /** Method that focuses link item*/\n focus(): void {\n if (this.contentItem) {\n this.contentItem.focus();\n } else if (this.linkItem) {\n this.linkItem.focus();\n }\n }\n\n /** Method that provides information if element, or children of this element has passed id */\n containsId(id: string): boolean {\n if (this._elementId === id) {\n return true;\n }\n\n if (this._itemService.list) {\n return !!this._itemService.list.nestedItems.find((item) => item.containsId(id));\n }\n\n return false;\n }\n\n /**\n * @hidden\n * Propagate open state to all of the children\n */\n private propagateOpenChange(open: boolean): void {\n this._expanded = open;\n\n if (this.hasChildren) {\n this._ariaExpanded = this._expanded;\n }\n\n /**\n * Propagate to child content directive, which contains icon and link\n */\n if (this.contentItem) {\n this.contentItem.changeExpandedState(open);\n this.contentItem.ariaExpanded = this._expanded;\n }\n\n /** Propagate hidden flag to list component, that is passed from child */\n if (this._itemService.list) {\n this._itemService.list.hidden = !open;\n this._itemService.list.detectChanges();\n }\n\n /** Propagate open flag to popover list component, that is passed from child */\n if (this._itemService.popover) {\n this._itemService.popover.open = open;\n }\n\n /**\n * If there are any list below\n * Trigger event to provide keyboard support to new list of opened item element.\n * */\n if (this._shouldRefreshKeyboardService()) {\n this._keyboardService.refresh$.next();\n }\n\n this.expandedChange.emit(open);\n }\n\n /** @hidden */\n private _shouldRefreshKeyboardService(): boolean {\n return !!(this._itemService.popover || this._itemService.list || this.contentItem);\n }\n\n /** @hidden */\n private _setUpSubscriptions(): void {\n if (this._stateService.condensed) {\n this._role = 'menuitemradio';\n }\n\n /** Subscribe to mouse click event, thrown by link item */\n this._itemService.toggle.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => this.toggle());\n\n /** Subscribe to mouse click event, thrown by link item */\n this._itemService.click\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => this._stateService.onSelected.next(this._elementId));\n\n /** Subscribe to keyboard event and throw it farther */\n this._itemService.keyDown\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((keyboardEvent) => this.keyboardTriggered.emit(keyboardEvent));\n\n /** Subscribe to selected state change, it's not triggered, when selectable flag is disabled*/\n this._stateService.onSelected\n .pipe(\n takeUntilDestroyed(this._destroyRef),\n filter(() => this._stateService.selectable)\n )\n .subscribe((id) => this._selectedChange(id));\n }\n\n /** @hidden */\n private _propagateHasChildrenProperty(): void {\n if (this.contentItem && this.hasChildren) {\n this._ariaExpanded = false;\n this.contentItem.hasChildren = true;\n this.contentItem.changeDetRef.detectChanges();\n }\n }\n\n /** Pass this element to popover child item, to allow control `expanded` value */\n private _passItemReferences(): void {\n if (this._itemService.popover) {\n this._itemService.popover.parentItemElement = this;\n }\n }\n\n /** Change of selected state of content or link, if there is any children with I */\n private _selectedChange(id: string): void {\n const selected = this.containsId(id);\n this._ariaSelected = selected;\n\n if (this.contentItem) {\n this.contentItem.changeSelected(selected);\n } else if (this.linkItem) {\n this.linkItem.changeSelected(selected);\n }\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n ContentChild,\n inject,\n Input,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { RtlService } from '@fundamental-ngx/cdk/utils';\nimport { PopoverBodyComponent, PopoverComponent, PopoverControlComponent } from '@fundamental-ngx/core/popover';\nimport { Placement } from '@fundamental-ngx/core/shared';\nimport { NestedListContentDirective } from '../nested-content/nested-list-content.directive';\nimport { NestedItemInterface } from '../nested-item/nested-item.interface';\nimport { NestedItemService } from '../nested-item/nested-item.service';\nimport { NestedLinkDirective } from '../nested-link/nested-link.directive';\nimport { NestedListTitleDirective } from '../nested-list-directives';\nimport { NestedListKeyboardService } from '../nested-list-keyboard.service';\nimport { NestedListPopoverInterface } from './nested-list-popover.interface';\n\n@Component({\n selector: 'fd-nested-list-popover',\n templateUrl: './nested-list-popover.component.html',\n styleUrl: './nested-list-popover.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'fd-nested-list__popover'\n },\n imports: [\n PopoverComponent,\n PopoverControlComponent,\n PopoverBodyComponent,\n NestedLinkDirective,\n NestedListTitleDirective\n ]\n})\nexport class NestedListPopoverComponent implements NestedListPopoverInterface, AfterContentInit {\n /** @hidden\n * For Internal Usage - Gets information about title, which should be displayed inside popover\n */\n @Input()\n title = '';\n\n /** @hidden */\n @ViewChild(PopoverComponent)\n popoverComponent: PopoverComponent;\n\n /** @hidden */\n @ContentChild(NestedLinkDirective)\n linkDirective: NestedLinkDirective;\n\n /** @hidden */\n @ContentChild(NestedListContentDirective)\n contentDirective: NestedListContentDirective;\n\n /**\n * @hidden\n * Reference to parent item, to propagate open and close change from popover.\n */\n parentItemElement: NestedItemInterface;\n\n /** @hidden */\n open = false;\n\n /** @hidden */\n protected readonly placement = computed<Placement>(() => (this._rtlService?.rtl() ? 'left-start' : 'right-start'));\n\n /** @hidden */\n private readonly _keyboardNestService = inject(NestedListKeyboardService);\n\n /** @hidden */\n private readonly _itemService = inject(NestedItemService, { optional: true });\n\n /** @hidden */\n private readonly _rtlService = inject(RtlService, { optional: true });\n\n /** @hidden */\n constructor() {\n this._listenOnKeyboardRefresh();\n if (this._itemService) {\n this._itemService.popover = this;\n }\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n if (!this.title) {\n this.title = this._getTitle();\n }\n }\n\n /**\n * Method called, when open state is changed, from popover component (escape key, outside click).\n */\n handleOpenChange(open: boolean): void {\n this.open = open;\n if (this.parentItemElement) {\n if (open) {\n this.parentItemElement.triggerOpen();\n } else {\n this.parentItemElement.triggerClose();\n }\n }\n }\n\n /** Returns title of nested link element inside content directive */\n private _getTitle(): string {\n if (this.contentDirective && this.contentDirective.nestedLink) {\n return this.contentDirective.nestedLink.getTitle();\n } else {\n return '';\n }\n }\n\n /** @hidden */\n private _listenOnKeyboardRefresh(): void {\n this._keyboardNestService.refresh$.subscribe(() => {\n /** Update popover position, on list of hidden items change */\n if (this.popoverComponent) {\n this.popoverComponent.refreshPosition();\n }\n });\n }\n}\n","<fd-popover\n [placement]=\"placement()\"\n [triggers]=\"['click']\"\n [noArrow]=\"false\"\n [isOpen]=\"open\"\n (isOpenChange)=\"handleOpenChange($event)\"\n>\n <fd-popover-control>\n <ng-content select=\"[fd-nested-list-link]\"></ng-content>\n <ng-content select=\"[fd-nested-list-content]\"></ng-content>\n </fd-popover-control>\n <fd-popover-body class=\"fd-nested-list--text-only\">\n <a fd-nested-list-link class=\"fd-nested-list__popover-header\">\n <span fd-nested-list-title>{{ title }}</span>\n </a>\n <ng-content select=\"[fd-nested-list]\"></ng-content>\n <ng-content select=\"fd-prepared-nested-list\"></ng-content>\n </fd-popover-body>\n</fd-popover>\n","import {\n AfterContentInit,\n ChangeDetectorRef,\n ContentChild,\n ContentChildren,\n Directive,\n ElementRef,\n forwardRef,\n HostBinding,\n Inject,\n INJECTOR,\n Injector,\n Input,\n OnDestroy,\n Optional,\n Provider,\n QueryList\n} from '@angular/core';\nimport { combineLatest, Observable, startWith, Subscription } from 'rxjs';\n\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { MenuKeyboardService } from '@fundamental-ngx/core/menu';\nimport { FD_LANGUAGE, FdLanguage, TranslationResolver } from '@fundamental-ngx/i18n';\nimport { NestedItemDirective } from '../nested-item/nested-item.directive';\nimport { NestedItemService } from '../nested-item/nested-item.service';\nimport { NestedListHeaderDirective } from '../nested-list-directives';\nimport { NestedListKeyboardService } from '../nested-list-keyboard.service';\nimport { NestedListStateService } from '../nested-list-state.service';\nimport { NestedListInterface } from './nested-list.interface';\n\nfunction provideNestedListStateService(): Provider {\n // Nested list can be nested, and that will cause on each individual instance of NestedListStateService.\n return {\n provide: NestedListStateService,\n useFactory: (injector: Injector) =>\n injector.get(NestedListStateService, new NestedListStateService(), { skipSelf: true }),\n deps: [INJECTOR]\n };\n}\n\n/**\n * <div fd-nested-list>\n * <div fd-nested-list>\n * </div>\n * </div>\n */\n\n@Directive({\n selector: '[fdNestedList], [fd-nested-list]',\n providers: [\n contentDensityObserverProviders(),\n MenuKeyboardService,\n NestedListKeyboardService,\n provideNestedListStateService()\n ],\n standalone: true\n})\nexport class NestedListDirective implements AfterContentInit, NestedListInterface, OnDestroy {\n /** In case the user wants to no use icons for items in this list */\n @Input()\n @HostBinding('class.fd-nested-list--text-only')\n textOnly = false;\n\n /** Aria defines role description for the Nested List Tree. */\n @Input()\n ariaRoledescriptionTree = 'Navigation List Tree';\n\n /** Aria defines role description for the Nested List MenuBar. */\n @Input()\n ariaRoledescriptionMenuBar = 'Navigation List Menu Bar';\n\n /** Aria defines aria label for the selected item when the list with disabled selection. */\n @Input()\n ariaLabelSelected = 'Selected';\n\n /** @hidden */\n @HostBinding('class.fd-nested-list')\n fdNestedListItemClass = true;\n\n /** @hidden */\n @HostBinding('attr.aria-hidden')\n hidden = false;\n\n /**\n * @hidden\n * This variable is mostly to keep track of this list's children. There is not usage of it inside this directive,\n * but it's used by services and NestedItemDirective by itself,\n */\n @ContentChildren(forwardRef(() => NestedItemDirective))\n nestedItems: QueryList<NestedItemDirective>;\n\n /** @hidden */\n @ContentChild(NestedListHeaderDirective)\n protected _nestedListHeader: NestedListHeaderDirective;\n\n /** @hidden */\n @HostBinding('attr.role')\n protected _role = 'tree';\n\n /** @hidden */\n @HostBinding('attr.aria-roledescription')\n protected _ariaRoledescription: Nullable<string> = this.ariaRoledescriptionTree;\n\n /** @hidden */\n @HostBinding('attr.aria-haspopup')\n protected _ariaHaspopup: Nullable<string> = null;\n\n /** @hidden */\n @HostBinding('attr.tabindex')\n protected _tabindex = '-1';\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n private readonly _translationResolver = new TranslationResolver();\n\n /** @hidden */\n constructor(\n @Optional() private _nestedItemService: NestedItemService,\n private _nestedListKeyboardService: NestedListKeyboardService,\n private _elementRef: ElementRef,\n private _changeDetectionRef: ChangeDetectorRef,\n private readonly _nestedListStateService: NestedListStateService,\n @Inject(FD_LANGUAGE) private _language$: Observable<FdLanguage>,\n _contentDensityObserver: ContentDensityObserver\n ) {\n if (this._nestedItemService) {\n this._nestedItemService.list = this;\n }\n _contentDensityObserver.subscribe();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n let nestedLevel: number = this._getNestedLevel();\n /** If there is condensed mode, maximum 2nd level class of nest can be added */\n if (this._nestedListStateService.condensed) {\n nestedLevel = Math.min(...[nestedLevel, 2]);\n }\n\n this._setAccessibilityProperties(nestedLevel);\n\n const sub = combineLatest([this._language$, this.nestedItems.changes.pipe(startWith(undefined))]).subscribe(\n ([lang]) => {\n this._nestedListKeyboardService.refresh$.next();\n this._setAriaAttributes(nestedLevel, lang);\n }\n );\n\n this._subscriptions.add(sub);\n\n this._handleNestedLevel(nestedLevel);\n }\n\n /** @hidden */\n detectChanges(): void {\n this._changeDetectionRef.markForCheck();\n }\n\n /** @hidden */\n private _handleNestedLevel(level: number): void {\n /** Adding class with the nested level */\n this._elementRef.nativeElement.classList.add('level-' + level);\n }\n\n /**\n * @hidden\n * Method, that checks how deep is the list element\n */\n private _getNestedLevel(): number {\n let element = this._elementRef.nativeElement;\n const parentElements: Element[] = [];\n\n /** Method that gathers all of the parentNode elements of current NestedListDirective element */\n while (element.parentNode) {\n parentElements.unshift(element);\n element = element.parentNode;\n }\n\n /** Filter only elements, that has `fd-nested-list` directive attribute */\n const filteredParentElements = parentElements.filter((_element) => _element.hasAttribute('fd-nested-list'));\n return filteredParentElements.length;\n }\n\n /** @hidden */\n private _setAriaAttributes(level: number, lang: FdLanguage): void {\n this.nestedItems.forEach((item, i) => {\n item._ariaLevel = level;\n if (!item.linkItem) {\n return;\n } else {\n item.linkItem.ariaDescribedby = this._nestedListHeader?.id || null;\n item.linkItem._ariaLabel = this._translationResolver.resolve(lang, 'coreNestedList.linkItemAriaLabel', {\n itemDetails: item.linkItem.getTitle(),\n index: i + 1, // TODO: this property has been deprecated and will be removed from translations\n total: this.nestedItems.length, // TODO: this property has been deprecated and will be removed from translations\n selectedDescription:\n !this._nestedListStateService.selectable && item.linkItem.selected\n ? ', ' + this.ariaLabelSelected\n : ''\n });\n }\n });\n\n this._changeDetectionRef.detectChanges();\n }\n\n /** @hidden */\n private _setAccessibilityProperties(level: number): void {\n if (this._nestedListStateService.condensed && level === 1) {\n this._ariaRoledescription = this.ariaRoledescriptionMenuBar;\n }\n\n if (level > 1 || (this._nestedItemService?.popover && !this._nestedListStateService.condensed)) {\n this._role = 'group';\n this._ariaRoledescription = null;\n }\n\n if (this._nestedItemService?.popover) {\n this._ariaHaspopup = 'tree';\n }\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, ViewChild, ViewEncapsulation, forwardRef } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { NestedListContentDirective } from '../nested-content/nested-list-content.directive';\nimport { NestedItemDirective } from '../nested-item/nested-item.directive';\nimport { NestedLinkDirective } from '../nested-link/nested-link.directive';\nimport {\n NestedListExpandIconComponent,\n NestedListHeaderDirective,\n NestedListIconComponent,\n NestedListTitleDirective\n} from '../nested-list-directives';\nimport { NestedListItem, NestedListModel } from '../nested-list-model';\nimport { NestedListPopoverComponent } from '../nested-list-popover/nested-list-popover.component';\nimport { NestedListDirective } from '../nested-list/nested-list.directive';\n\n/**\n * Component for internal usage, allows to generate the nested list from defined object.\n */\n@Component({\n selector: 'fd-prepared-nested-list',\n templateUrl: './prepared-nested-list.component.html',\n styleUrl: './prepared-nested-list.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NestedListDirective,\n NestedListHeaderDirective,\n NestedItemDirective,\n NestedListPopoverComponent,\n NestedListContentDirective,\n NgTemplateOutlet,\n NestedListExpandIconComponent,\n forwardRef(() => PreparedNestedListComponent),\n NestedLinkDirective,\n RouterLink,\n NestedListIconComponent,\n NestedListTitleDirective\n ]\n})\nexport class PreparedNestedListComponent {\n /**\n * @hidden\n * For internal usage.\n * Defines if the component is first\n */\n @Input()\n first = true;\n\n /** Defines if list should be displayed in condensed mode */\n @Input()\n condensed = false;\n\n /** List configuration*/\n @Input()\n list: Nullable<NestedListModel>;\n\n /**\n * @hidden\n */\n @ViewChild(forwardRef(() => NestedListDirective))\n _nestedListDirective: NestedListDirective;\n\n /**\n * In prepared nested list, nested items should be taken as reference of View, not Content.\n * There is direct reference to these directives here.\n */\n get nestedListDirective(): NestedListDirective {\n return this._nestedListDirective;\n }\n\n /** @hidden */\n _expandedChange(expanded: boolean, item: NestedListItem): void {\n item.expanded = expanded;\n }\n}\n","<ul fd-nested-list [textOnly]=\"!!list?.textOnly\">\n @for (item of list?.items; track item) {\n @if (item.headerTitle) {\n <li fd-nested-list-header>\n {{ item.headerTitle }}\n </li>\n } @else {\n <li fd-nested-list-item [expanded]=\"!!item.expanded\" (expandedChange)=\"_expandedChange($event, item)\">\n @if (condensed && first && item.list) {\n <fd-nested-list-popover [title]=\"item.link?.title || ''\">\n <div fd-nested-list-content [selected]=\"!!item.link?.selected\">\n <ng-template\n [ngTemplateOutlet]=\"link\"\n [ngTemplateOutletContext]=\"{ item: item }\"\n ></ng-template>\n <button fd-nested-list-expand-icon></button>\n </div>\n @if (item.list) {\n <fd-prepared-nested-list [first]=\"false\" [list]=\"item.list\"></fd-prepared-nested-list>\n }\n </fd-nested-list-popover>\n }\n @if (!item.list) {\n <ng-template [ngTemplateOutlet]=\"link\" [ngTemplateOutletContext]=\"{ item: item }\"></ng-template>\n }\n @if ((!condensed || !first) && item.list) {\n <div fd-nested-list-content>\n <ng-template [ngTemplateOutlet]=\"link\" [ngTemplateOutletContext]=\"{ item: item }\"></ng-template>\n <button fd-nested-list-expand-icon></button>\n </div>\n @if (item.list) {\n <fd-prepared-nested-list [first]=\"false\" [list]=\"item.list\"></fd-prepared-nested-list>\n }\n }\n <ng-template let-item=\"item\" #link>\n @if (item.link) {\n <a\n fd-nested-list-link\n [onClickCallback]=\"item.link.callback\"\n [selected]=\"!item.list && item.link.selected\"\n [attr.href]=\"item.link.href ? item.link.href : null\"\n [routerLink]=\"item.link.routerLink ? item.link.routerLink : []\"\n >\n @if (item.link.icon) {\n <span fd-nested-list-icon [glyph]=\"item.link.icon\"></span>\n }\n <span fd-nested-list-title>{{ item.link.title }}</span>\n </a>\n }\n </ng-template>\n </li>\n }\n }\n</ul>\n","import { NgModule } from '@angular/core';\nimport { MenuKeyboardService } from '@fundamental-ngx/core/menu';\nimport { NestedListContentDirective } from './nested-content/nested-list-content.directive';\nimport { NestedItemDirective } from './nested-item/nested-item.directive';\nimport { NestedLinkDirective } from './nested-link/nested-link.directive';\nimport {\n NestedListExpandIconComponent,\n NestedListHeaderDirective,\n NestedListIconComponent,\n NestedListTitleDirective\n} from './nested-list-directives';\nimport { NestedListKeyboardService } from './nested-list-keyboard.service';\nimport { NestedListPopoverComponent } from './nested-list-popover/nested-list-popover.component';\nimport { NestedListStateService } from './nested-list-state.service';\nimport { NestedListDirective } from './nested-list/nested-list.directive';\nimport { PreparedNestedListComponent } from './prepared-nested-list/prepared-nested-list.component';\n\nconst components = [\n NestedListDirective,\n NestedLinkDirective,\n NestedItemDirective,\n NestedListIconComponent,\n NestedListTitleDirective,\n NestedListHeaderDirective,\n NestedListPopoverComponent,\n PreparedNestedListComponent,\n NestedListExpandIconComponent,\n NestedListContentDirective\n];\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [...components],\n exports: [...components],\n providers: [MenuKeyboardService, NestedListKeyboardService, NestedListStateService]\n})\nexport class NestedListModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.NestedItemService","i2.NestedListKeyboardService","i3.NestedListStateService"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Directive, InjectionToken, input, inject, ElementRef, ContentChildren, ChangeDetectionStrategy, ViewEncapsulation, Component, contentChildren, DestroyRef, Renderer2, Injector, afterNextRender, model, signal, computed, effect, contentChild, viewChild, ViewContainerRef, ChangeDetectorRef, ComponentFactoryResolver, Type, TemplateRef, DOCUMENT, Inject, Optional, Injectable, NgModule } from '@angular/core';
3
3
  import { FD_BUTTON_COMPONENT } from '@fundamental-ngx/core/button';
4
- import { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
4
+ import { takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';
5
5
  import { merge, NEVER, Subject, BehaviorSubject, fromEvent } from 'rxjs';
6
6
  import { auditTime, filter, startWith, switchMap, take, debounceTime } from 'rxjs/operators';
7
- import { resolveTranslationSignal, FD_LANGUAGE_SIGNAL, TranslationResolver } from '@fundamental-ngx/i18n';
7
+ import { resolveTranslationSignal, FD_LANGUAGE, TranslationResolver } from '@fundamental-ngx/i18n';
8
8
  import { ENTER, SPACE, ESCAPE } from '@angular/cdk/keycodes';
9
9
  import * as i1 from '@fundamental-ngx/cdk/utils';
10
10
  import { RtlService, KeyUtil, AbstractFdNgxClass, DynamicComponentService } from '@fundamental-ngx/cdk/utils';
@@ -583,12 +583,12 @@ class NotificationGroupHeaderComponent extends NotificationGroupBaseDirective {
583
583
  /** @hidden */
584
584
  this._rtlService = inject(RtlService, { optional: true });
585
585
  /** @hidden */
586
- this._langSignal = inject(FD_LANGUAGE_SIGNAL);
586
+ this._lang = toSignal(inject(FD_LANGUAGE));
587
587
  /** @hidden */
588
588
  this._translationResolver = new TranslationResolver();
589
589
  // Set up translation for title - only sets default if title is empty
590
590
  effect(() => {
591
- const lang = this._langSignal();
591
+ const lang = this._lang();
592
592
  // Only set from i18n if title hasn't been set externally
593
593
  if (lang && !this.title()) {
594
594
  this.title.set(this._translationResolver.resolve(lang, 'coreNotification.groupHeaderTitle'));
@@ -710,7 +710,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
710
710
  }], propDecorators: { ariaLabelledBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabelledBy", required: false }] }], id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], notifications: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => FD_NOTIFICATION), { isSignal: true }] }] } });
711
711
 
712
712
  class NotificationGroupComponent {
713
- /** @hidden */
714
713
  constructor() {
715
714
  /**
716
715
  * Whether the group is expanded
@@ -741,21 +740,25 @@ class NotificationGroupComponent {
741
740
  /** @hidden */
742
741
  this._collapsedString = signal('', ...(ngDevMode ? [{ debugName: "_collapsedString" }] : []));
743
742
  /** @hidden */
744
- this._langSignal = inject(FD_LANGUAGE_SIGNAL);
743
+ this._destroyRef = inject(DestroyRef);
744
+ /** @hidden */
745
+ this._lang$ = inject(FD_LANGUAGE);
745
746
  /** @hidden */
746
747
  this._translationResolver = new TranslationResolver();
747
- effect(() => {
748
- const lang = this._langSignal();
749
- this._expandedString.set(this._translationResolver.resolve(lang, 'coreNotification.groupAriaDescriptionExpanded'));
750
- this._collapsedString.set(this._translationResolver.resolve(lang, 'coreNotification.groupAriaDescriptionCollapsed'));
751
- this._descriptionString.set(this._translationResolver.resolve(lang, 'coreNotification.groupAriaDescription'));
752
- });
753
748
  }
754
749
  /** @hidden */
755
750
  ngAfterViewInit() {
756
751
  this.groupHeader()?.ariaControls.set(this.groupList()?.id() ?? null);
757
752
  this.groupHeader()?.expanded.set(this.expanded());
758
753
  }
754
+ /** @hidden */
755
+ ngOnInit() {
756
+ this._lang$.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((lang) => {
757
+ this._expandedString.set(this._translationResolver.resolve(lang, 'coreNotification.groupAriaDescriptionExpanded'));
758
+ this._collapsedString.set(this._translationResolver.resolve(lang, 'coreNotification.groupAriaDescriptionCollapsed'));
759
+ this._descriptionString.set(this._translationResolver.resolve(lang, 'coreNotification.groupAriaDescription'));
760
+ });
761
+ }
759
762
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NotificationGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
760
763
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: NotificationGroupComponent, isStandalone: true, selector: "fd-notification-group", inputs: { expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "listitem" }, properties: { "tabindex": "-1", "attr.aria-level": "1", "attr.aria-label": "ariaLabel()", "attr.aria-labelledby": "ariaLabelledBy()", "attr.aria-description": "ariaDescription()" }, classAttribute: "fd-notification-group" }, queries: [{ propertyName: "groupHeader", first: true, predicate: FD_NOTIFICATION_GROUP_HEADER, descendants: true, isSignal: true }, { propertyName: "groupTitle", first: true, predicate: FD_NOTIFICATION_GROUP_HEADER_TITLE, descendants: true, isSignal: true }, { propertyName: "groupList", first: true, predicate: FD_NOTIFICATION_GROUP_LIST, descendants: true, isSignal: true }], ngImport: i0, template: `<div class="fd-notification-group__wrapper">
761
764
  <ng-content select="fd-notification-group-header"></ng-content>
@@ -787,7 +790,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
787
790
  '[attr.aria-description]': 'ariaDescription()'
788
791
  }
789
792
  }]
790
- }], ctorParameters: () => [], propDecorators: { expanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "expanded", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], groupHeader: [{ type: i0.ContentChild, args: [i0.forwardRef(() => FD_NOTIFICATION_GROUP_HEADER), { isSignal: true }] }], groupTitle: [{ type: i0.ContentChild, args: [i0.forwardRef(() => FD_NOTIFICATION_GROUP_HEADER_TITLE), { isSignal: true }] }], groupList: [{ type: i0.ContentChild, args: [i0.forwardRef(() => FD_NOTIFICATION_GROUP_LIST), { isSignal: true }] }] } });
793
+ }], propDecorators: { expanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "expanded", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], groupHeader: [{ type: i0.ContentChild, args: [i0.forwardRef(() => FD_NOTIFICATION_GROUP_HEADER), { isSignal: true }] }], groupTitle: [{ type: i0.ContentChild, args: [i0.forwardRef(() => FD_NOTIFICATION_GROUP_HEADER_TITLE), { isSignal: true }] }], groupList: [{ type: i0.ContentChild, args: [i0.forwardRef(() => FD_NOTIFICATION_GROUP_LIST), { isSignal: true }] }] } });
791
794
 
792
795
  class NotificationLinkComponent {
793
796
  constructor() {