@fundamental-ngx/core 0.61.2 → 0.62.0-rc.1

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 (137) hide show
  1. package/fesm2022/fundamental-ngx-core-action-sheet.mjs +3 -2
  2. package/fesm2022/fundamental-ngx-core-action-sheet.mjs.map +1 -1
  3. package/fesm2022/fundamental-ngx-core-avatar-group.mjs +6 -4
  4. package/fesm2022/fundamental-ngx-core-avatar-group.mjs.map +1 -1
  5. package/fesm2022/fundamental-ngx-core-bar.mjs +36 -11
  6. package/fesm2022/fundamental-ngx-core-bar.mjs.map +1 -1
  7. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs +11 -13
  8. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  9. package/fesm2022/fundamental-ngx-core-busy-indicator.mjs +5 -7
  10. package/fesm2022/fundamental-ngx-core-busy-indicator.mjs.map +1 -1
  11. package/fesm2022/fundamental-ngx-core-calendar.mjs +35 -31
  12. package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
  13. package/fesm2022/fundamental-ngx-core-carousel.mjs +2 -2
  14. package/fesm2022/fundamental-ngx-core-carousel.mjs.map +1 -1
  15. package/fesm2022/fundamental-ngx-core-combobox.mjs +6 -4
  16. package/fesm2022/fundamental-ngx-core-combobox.mjs.map +1 -1
  17. package/fesm2022/fundamental-ngx-core-date-picker.mjs +3 -3
  18. package/fesm2022/fundamental-ngx-core-date-picker.mjs.map +1 -1
  19. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs +3 -3
  20. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
  21. package/fesm2022/fundamental-ngx-core-datetime.mjs +7 -13
  22. package/fesm2022/fundamental-ngx-core-datetime.mjs.map +1 -1
  23. package/fesm2022/fundamental-ngx-core-dialog.mjs +19 -22
  24. package/fesm2022/fundamental-ngx-core-dialog.mjs.map +1 -1
  25. package/fesm2022/fundamental-ngx-core-dynamic-page.mjs +13 -13
  26. package/fesm2022/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
  27. package/fesm2022/fundamental-ngx-core-facets.mjs +1 -1
  28. package/fesm2022/fundamental-ngx-core-facets.mjs.map +1 -1
  29. package/fesm2022/fundamental-ngx-core-feed-list-item.mjs +2 -2
  30. package/fesm2022/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
  31. package/fesm2022/fundamental-ngx-core-grid-list.mjs +4 -4
  32. package/fesm2022/fundamental-ngx-core-grid-list.mjs.map +1 -1
  33. package/fesm2022/fundamental-ngx-core-info-label.mjs +2 -2
  34. package/fesm2022/fundamental-ngx-core-info-label.mjs.map +1 -1
  35. package/fesm2022/fundamental-ngx-core-link.mjs +2 -2
  36. package/fesm2022/fundamental-ngx-core-link.mjs.map +1 -1
  37. package/fesm2022/fundamental-ngx-core-list.mjs +47 -12
  38. package/fesm2022/fundamental-ngx-core-list.mjs.map +1 -1
  39. package/fesm2022/fundamental-ngx-core-menu.mjs +5 -5
  40. package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
  41. package/fesm2022/fundamental-ngx-core-message-box.mjs +10 -10
  42. package/fesm2022/fundamental-ngx-core-message-box.mjs.map +1 -1
  43. package/fesm2022/fundamental-ngx-core-message-strip.mjs +44 -49
  44. package/fesm2022/fundamental-ngx-core-message-strip.mjs.map +1 -1
  45. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +25 -23
  46. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
  47. package/fesm2022/fundamental-ngx-core-multi-input.mjs +6 -8
  48. package/fesm2022/fundamental-ngx-core-multi-input.mjs.map +1 -1
  49. package/fesm2022/fundamental-ngx-core-nested-list.mjs +22 -21
  50. package/fesm2022/fundamental-ngx-core-nested-list.mjs.map +1 -1
  51. package/fesm2022/fundamental-ngx-core-notification.mjs +13 -16
  52. package/fesm2022/fundamental-ngx-core-notification.mjs.map +1 -1
  53. package/fesm2022/fundamental-ngx-core-object-identifier.mjs +2 -2
  54. package/fesm2022/fundamental-ngx-core-object-identifier.mjs.map +1 -1
  55. package/fesm2022/fundamental-ngx-core-object-number.mjs +2 -2
  56. package/fesm2022/fundamental-ngx-core-object-number.mjs.map +1 -1
  57. package/fesm2022/fundamental-ngx-core-object-status.mjs +2 -2
  58. package/fesm2022/fundamental-ngx-core-object-status.mjs.map +1 -1
  59. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs +2 -2
  60. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  61. package/fesm2022/fundamental-ngx-core-pagination.mjs +11 -14
  62. package/fesm2022/fundamental-ngx-core-pagination.mjs.map +1 -1
  63. package/fesm2022/fundamental-ngx-core-popover.mjs +5 -5
  64. package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
  65. package/fesm2022/fundamental-ngx-core-product-switch.mjs +8 -4
  66. package/fesm2022/fundamental-ngx-core-product-switch.mjs.map +1 -1
  67. package/fesm2022/fundamental-ngx-core-quick-view.mjs +3 -3
  68. package/fesm2022/fundamental-ngx-core-quick-view.mjs.map +1 -1
  69. package/fesm2022/fundamental-ngx-core-rating-indicator.mjs +4 -7
  70. package/fesm2022/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
  71. package/fesm2022/fundamental-ngx-core-segmented-button.mjs +10 -11
  72. package/fesm2022/fundamental-ngx-core-segmented-button.mjs.map +1 -1
  73. package/fesm2022/fundamental-ngx-core-select.mjs +15 -8
  74. package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
  75. package/fesm2022/fundamental-ngx-core-settings.mjs +1 -1
  76. package/fesm2022/fundamental-ngx-core-settings.mjs.map +1 -1
  77. package/fesm2022/fundamental-ngx-core-shellbar.mjs +44 -27
  78. package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
  79. package/fesm2022/fundamental-ngx-core-slider.mjs +6 -6
  80. package/fesm2022/fundamental-ngx-core-slider.mjs.map +1 -1
  81. package/fesm2022/fundamental-ngx-core-split-button.mjs +2 -2
  82. package/fesm2022/fundamental-ngx-core-split-button.mjs.map +1 -1
  83. package/fesm2022/fundamental-ngx-core-step-input.mjs +2 -2
  84. package/fesm2022/fundamental-ngx-core-step-input.mjs.map +1 -1
  85. package/fesm2022/fundamental-ngx-core-switch.mjs +2 -2
  86. package/fesm2022/fundamental-ngx-core-switch.mjs.map +1 -1
  87. package/fesm2022/fundamental-ngx-core-tabs.mjs +2 -2
  88. package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
  89. package/fesm2022/fundamental-ngx-core-text.mjs +6 -4
  90. package/fesm2022/fundamental-ngx-core-text.mjs.map +1 -1
  91. package/fesm2022/fundamental-ngx-core-time-picker.mjs +4 -29
  92. package/fesm2022/fundamental-ngx-core-time-picker.mjs.map +1 -1
  93. package/fesm2022/fundamental-ngx-core-time.mjs +4 -4
  94. package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
  95. package/fesm2022/fundamental-ngx-core-timeline.mjs +1 -1
  96. package/fesm2022/fundamental-ngx-core-timeline.mjs.map +1 -1
  97. package/fesm2022/fundamental-ngx-core-title.mjs +7 -4
  98. package/fesm2022/fundamental-ngx-core-title.mjs.map +1 -1
  99. package/fesm2022/fundamental-ngx-core-token.mjs +12 -15
  100. package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
  101. package/fesm2022/fundamental-ngx-core-toolbar.mjs +5 -3
  102. package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
  103. package/fesm2022/fundamental-ngx-core-tree.mjs +4 -4
  104. package/fesm2022/fundamental-ngx-core-tree.mjs.map +1 -1
  105. package/fesm2022/fundamental-ngx-core-upload-collection.mjs +5 -5
  106. package/fesm2022/fundamental-ngx-core-upload-collection.mjs.map +1 -1
  107. package/fesm2022/fundamental-ngx-core-user-menu.mjs +6 -4
  108. package/fesm2022/fundamental-ngx-core-user-menu.mjs.map +1 -1
  109. package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs +3 -3
  110. package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs.map +1 -1
  111. package/package.json +3 -3
  112. package/types/fundamental-ngx-core-bar.d.ts +14 -4
  113. package/types/fundamental-ngx-core-breadcrumb.d.ts +5 -5
  114. package/types/fundamental-ngx-core-busy-indicator.d.ts +3 -3
  115. package/types/fundamental-ngx-core-combobox.d.ts +4 -2
  116. package/types/fundamental-ngx-core-datetime.d.ts +1 -5
  117. package/types/fundamental-ngx-core-dialog.d.ts +4 -2
  118. package/types/fundamental-ngx-core-dynamic-page.d.ts +1 -2
  119. package/types/fundamental-ngx-core-list.d.ts +24 -5
  120. package/types/fundamental-ngx-core-menu.d.ts +2 -0
  121. package/types/fundamental-ngx-core-message-box.d.ts +1 -1
  122. package/types/fundamental-ngx-core-message-strip.d.ts +3 -12
  123. package/types/fundamental-ngx-core-multi-combobox.d.ts +1 -1
  124. package/types/fundamental-ngx-core-nested-list.d.ts +10 -10
  125. package/types/fundamental-ngx-core-notification.d.ts +5 -7
  126. package/types/fundamental-ngx-core-pagination.d.ts +3 -4
  127. package/types/fundamental-ngx-core-product-switch.d.ts +3 -0
  128. package/types/fundamental-ngx-core-rating-indicator.d.ts +3 -2
  129. package/types/fundamental-ngx-core-segmented-button.d.ts +3 -5
  130. package/types/fundamental-ngx-core-select.d.ts +5 -1
  131. package/types/fundamental-ngx-core-shared.d.ts +21 -20
  132. package/types/fundamental-ngx-core-shellbar.d.ts +7 -1
  133. package/types/fundamental-ngx-core-slider.d.ts +1 -1
  134. package/types/fundamental-ngx-core-text.d.ts +3 -1
  135. package/types/fundamental-ngx-core-time-picker.d.ts +1 -17
  136. package/types/fundamental-ngx-core-title.d.ts +3 -1
  137. package/types/fundamental-ngx-core-token.d.ts +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-core-tree.mjs","sources":["../../../../libs/core/tree/data-source/tree-data-source.ts","../../../../libs/core/tree/data-source/tree-data-source-parser.ts","../../../../libs/core/tree/directives/tree-item-def.directive.ts","../../../../libs/core/tree/directives/tree-item.directive.ts","../../../../libs/core/tree/models/base-tree-item.class.ts","../../../../libs/core/tree/tree.service.ts","../../../../libs/core/tree/tree.component.ts","../../../../libs/core/tree/tree.component.html","../../../../libs/core/tree/components/tree-item/tree-item.component.ts","../../../../libs/core/tree/components/tree-item/tree-item.component.html","../../../../libs/core/tree/directives/tree-item-button.directive.ts","../../../../libs/core/tree/directives/tree-item-icon.directive.ts","../../../../libs/core/tree/tree.module.ts","../../../../libs/core/tree/tokens.ts","../../../../libs/core/tree/fundamental-ngx-core-tree.ts"],"sourcesContent":["import { AbstractDataProvider, BaseDataSource, DataProvider } from '@fundamental-ngx/cdk/data-source';\nimport { Observable } from 'rxjs';\n\nexport class FdTreeDataSource<T> extends BaseDataSource<T> {\n /** @hidden */\n limitless = true;\n /** @hidden */\n constructor(public dataProvider: AbstractDataProvider<T>) {\n super(dataProvider);\n }\n}\n\nexport class ArrayTreeDataSource<T> extends FdTreeDataSource<T> {\n /** @hidden */\n constructor(data: T[]) {\n super(new DataProvider(data));\n }\n}\n\nexport class ObservableTreeDataSource<T> extends FdTreeDataSource<T> {\n /** @hidden */\n constructor(data: Observable<T[]>) {\n super(new DataProvider(data));\n }\n}\n\n/**\n * Type of acceptable objects as a datasource for the Multi-Combo Box component.\n */\nexport type FdTreeAcceptableDataSource<T = any> = FdTreeDataSource<T> | Observable<T[]> | T[];\nexport type FdTreeItemType<Type extends FdTreeAcceptableDataSource> =\n Type extends BaseDataSource<infer X>\n ? X\n : Type extends Array<infer X>\n ? X\n : Type extends Observable<infer X>\n ? X extends Array<infer V>\n ? V\n : X\n : Type;\n","import { DataSourceParser, isDataSource } from '@fundamental-ngx/cdk/data-source';\nimport { isObservable } from 'rxjs';\nimport {\n ArrayTreeDataSource,\n FdTreeAcceptableDataSource,\n FdTreeDataSource,\n ObservableTreeDataSource\n} from './tree-data-source';\n\nexport class TreeDataSourceParser<T> implements DataSourceParser<T, FdTreeDataSource<T>> {\n /**\n * Transforms plain array or observable into DataSource class.\n * @param source\n */\n parse(source: FdTreeAcceptableDataSource<T>): FdTreeDataSource<T> | undefined {\n if (isDataSource(source)) {\n return source as FdTreeDataSource<T>;\n }\n\n if (Array.isArray(source)) {\n return new ArrayTreeDataSource<T>(source);\n }\n\n if (isObservable(source)) {\n return new ObservableTreeDataSource<T>(source);\n }\n\n return undefined;\n }\n}\n","import { Directive, Input, TemplateRef, inject } from '@angular/core';\nimport { TreeItem } from '../models/tree-item';\nimport { TreeItemDefContext } from '../models/tree-item-def-context';\n\n@Directive({\n selector: '[fdTreeItemDef]',\n standalone: true\n})\nexport class TreeItemDefDirective<T extends TreeItem = TreeItem> {\n /**\n * @hidden\n * Used for type support.\n */\n @Input()\n fdTreeItemDefAs: T;\n /** Template reference. */\n readonly templateRef = inject<TemplateRef<TreeItemDefContext<T>>>(TemplateRef);\n /** @hidden */\n static ngTemplateContextGuard(dir: TreeItemDefDirective, ctx: TreeItemDefContext): ctx is TreeItemDefContext {\n return true;\n }\n}\n","import { Directive, Injector, OnDestroy } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { BaseTreeItem } from '../models/base-tree-item.class';\nimport { TreeItem } from '../models/tree-item';\n\n@Directive({\n selector: '[fdTreeItem]',\n exportAs: 'fdTreeItem',\n standalone: true\n})\nexport class TreeItemDirective<T extends TreeItem, P> implements OnDestroy {\n /** Tree item component instance. */\n treeItem: Nullable<BaseTreeItem<T, P>>;\n\n /** Injector to be used in a tree item component, to resolve a tree item directive. */\n readonly injector: Injector;\n\n /** @hidden */\n constructor(injector: Injector) {\n this.injector = Injector.create({ providers: [], parent: injector });\n }\n\n /** Sets tree item. */\n setTreeItem(item: Nullable<BaseTreeItem<T, P>>): void {\n this.treeItem = item;\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this.treeItem = null;\n }\n}\n","import { Directive, ElementRef } from '@angular/core';\nimport { Nullable, SelectableItemToken } from '@fundamental-ngx/cdk/utils';\nimport { FdTreeAcceptableDataSource } from '../data-source/tree-data-source';\nimport { TreeItem, TreeItemState } from './tree-item';\n\n/**\n * Abstract base class for tree item components.\n * Defines the contract for tree item implementations with navigation, selection, and hierarchy support.\n * @template T - The tree item type extending TreeItem\n * @template P - The value type of the tree item (defaults to any)\n */\n@Directive()\nexport abstract class BaseTreeItem<T extends TreeItem = TreeItem, P = any>\n implements Partial<SelectableItemToken<HTMLElement, P>>\n{\n /**\n * The data value associated with this tree item.\n */\n abstract value: P;\n\n /**\n * Unique identifier for the tree item.\n */\n abstract id: string;\n\n /**\n * ID of the parent tree item, or null if this is a root item.\n */\n abstract parentId: Nullable<string>;\n\n /**\n * Whether the tree item can be navigated to via keyboard or mouse interaction.\n */\n abstract navigatable: boolean;\n\n /**\n * Current state of the tree item (e.g., loading, error, success).\n */\n abstract state: Nullable<TreeItemState>;\n\n /**\n * Data source for child nodes, can be an array or DataSource instance.\n */\n abstract childNodes: FdTreeAcceptableDataSource<T>;\n\n /**\n * Whether the content text should wrap to multiple lines.\n */\n abstract wrapContent: boolean;\n\n /**\n * Whether the tree item is currently expanded to show its children.\n */\n abstract expanded: boolean;\n\n /**\n * The hierarchical level of this item in the tree (root level is 1).\n */\n abstract level: number;\n\n /**\n * Array of child tree items.\n */\n abstract children: T[];\n\n /**\n * Whether the tree item has children defined via content projection.\n */\n abstract hasProjectedChildren: boolean;\n\n /**\n * Whether the tree item has any children (projected or from data source).\n */\n abstract hasChildren: boolean;\n\n /**\n * Reference to the focusable container element of the tree item.\n */\n abstract itemContainer: Nullable<ElementRef>;\n\n /**\n * Whether the tree item can receive keyboard focus for navigation.\n */\n abstract keyboardAccessible: boolean;\n\n /**\n * Reference to the selectable item directive for selection management.\n */\n abstract selectableListItem: SelectableItemToken;\n\n /**\n * Whether the tree item has children provided by a DataSource.\n */\n abstract hasDsChildren: boolean;\n\n /**\n * Whether children from DataSource have finished loading.\n */\n abstract childrenLoaded: boolean;\n\n /**\n * Reference to the host element of the tree item.\n */\n abstract elementRef: ElementRef;\n\n /**\n * Sets focus on the tree item.\n */\n abstract focus(): void;\n\n /**\n * Updates the ARIA position information for the item.\n * @param totalItemsCount - Total number of items in the set\n * @param currentIndex - Current position index (0-based)\n */\n abstract setPosition(totalItemsCount: number, currentIndex: number): void;\n\n /**\n * Sets the tabindex value for the item's container element.\n * @param value - The tabindex value (typically 0 for focusable, -1 for not focusable)\n */\n abstract setContainerTabIndex(value: number): void;\n}\n","import { Injectable, Signal, TemplateRef, signal } from '@angular/core';\nimport { Nullable, uuidv4 } from '@fundamental-ngx/cdk/utils';\nimport { Subject } from 'rxjs';\nimport { BaseTreeItem } from './models/base-tree-item.class';\nimport { SelectionPlacement, SelectionType } from './models/selection-type';\nimport { TreeItem, TreeItemGeneric } from './models/tree-item';\nimport { TreeItemDefContext } from './models/tree-item-def-context';\n\nexport interface SelectionModeModel {\n mode: SelectionType;\n placement: SelectionPlacement;\n}\n\n@Injectable()\nexport class TreeService {\n /** Tree item template ref. */\n treeItemTemplateRef: Nullable<TemplateRef<TreeItemDefContext>>;\n\n /** Currently focused tree item. */\n focusedTreeItem: Nullable<BaseTreeItem>;\n\n /** Current expanded level. */\n get expandedLevel(): Signal<number | undefined> {\n return this._expandedLevel.asReadonly();\n }\n\n /** Tree selection mode. */\n get selectionMode(): Signal<SelectionModeModel> {\n return this._selectionMode$.asReadonly();\n }\n\n /** Whether to show navigation indicator. */\n get navigationIndicator(): Signal<boolean> {\n return this._navigationIndicator$.asReadonly();\n }\n\n /**\n * @hidden\n */\n readonly detectChanges = new Subject<void>();\n\n /** @hidden */\n private readonly _expandableItems = new Map<number, { [key: string]: boolean }>();\n\n /** @hidden */\n private readonly _selectionMode$ = signal<SelectionModeModel>({ mode: 'none', placement: 'none' });\n\n /** @hidden */\n private readonly _expandedLevel = signal<number | undefined>(undefined);\n\n /** @hidden */\n private readonly _navigationIndicator$ = signal(false);\n\n /** Sets whether the navigation indicator should be visible. */\n setNavigationIndicator(value: boolean): void {\n this._navigationIndicator$.set(value);\n }\n\n /** @hidden */\n normalizeTreeItems<T extends TreeItem = TreeItem>(\n items: Nullable<T[]>,\n parentId: string | null = null,\n level = 1\n ): TreeItem<TreeItemGeneric<T>>[] {\n if (!items) {\n return [];\n }\n return [...items].map((item: T) => ({\n ...item,\n ...{\n level,\n parentId,\n renderer: this.treeItemTemplateRef,\n id: item.id || uuidv4()\n }\n }));\n }\n\n /**\n * Adds expandable item to the object of expandable items.\n * @param id\n * @param level\n */\n addExpandableItem(id: string, level: number, expanded: boolean): void {\n const levelCollection = this._expandableItems.get(level) || {};\n levelCollection[id] = expanded;\n this._expandableItems.set(level, levelCollection);\n this._emitNewExpandedLevel();\n }\n\n /**\n * Removes expandable item from the object of expandable items.\n * @param id\n * @param level\n */\n removeExpandableItem(id: string, level: number): void {\n const levelCollection = this._expandableItems.get(level) || {};\n delete levelCollection[id];\n this._expandableItems.set(level, levelCollection);\n this._emitNewExpandedLevel();\n }\n\n /**\n * Sets selection mode and it's placement.\n * @param mode Selection mode.\n * @param placement Selection control placement.\n */\n setSelectionMode(mode: SelectionType, placement: SelectionPlacement): void {\n this._selectionMode$.set({ mode, placement });\n }\n\n /** @hidden */\n private _emitNewExpandedLevel(): void {\n // We need to go from level 1 to deeper level since level 4 may be expanded, yet level 2 not.\n const levels = Array.from(this._expandableItems.keys()).sort();\n let lastLevel: number | undefined;\n\n for (const level of levels) {\n const levelExpandableItems = this._expandableItems.get(level)!;\n\n if (Object.values(levelExpandableItems).every((v) => !v)) {\n break;\n }\n\n lastLevel = level;\n }\n\n this._expandedLevel.set(lastLevel);\n }\n}\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n DestroyRef,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n ViewChildren,\n ViewEncapsulation,\n effect,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DataSourceDirective, FD_DATA_SOURCE_TRANSFORMER } from '@fundamental-ngx/cdk/data-source';\nimport { CvaDirective } from '@fundamental-ngx/cdk/forms';\nimport {\n CssClassBuilder,\n KeyUtil,\n Nullable,\n RtlService,\n SelectComponentRootToken,\n SelectableItemDirective,\n SelectableListValueType,\n SelectionService,\n applyCssClass,\n range\n} from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { SkeletonComponent } from '@fundamental-ngx/core/skeleton';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { Subscription, filter, fromEvent, startWith, switchMap } from 'rxjs';\nimport { FdTreeAcceptableDataSource, FdTreeDataSource, FdTreeItemType } from './data-source/tree-data-source';\nimport { TreeDataSourceParser } from './data-source/tree-data-source-parser';\nimport { TreeItemDefDirective } from './directives/tree-item-def.directive';\nimport { TreeItemDirective } from './directives/tree-item.directive';\nimport { BaseTreeItem } from './models/base-tree-item.class';\nimport { SelectionPlacement, SelectionType } from './models/selection-type';\nimport { TreeItem, TreeItemGeneric } from './models/tree-item';\nimport { TreeService } from './tree.service';\n\n@Component({\n selector: 'fd-tree',\n templateUrl: './tree.component.html',\n encapsulation: ViewEncapsulation.None,\n styleUrl: './tree.component.scss',\n hostDirectives: [\n {\n directive: DataSourceDirective,\n inputs: ['dataSource'],\n outputs: ['dataChanged']\n },\n {\n directive: CvaDirective,\n inputs: ['name', 'id', 'state', 'stateMessage', 'disabled', 'readonly']\n }\n ],\n host: {\n role: 'tree'\n },\n providers: [\n contentDensityObserverProviders(),\n TreeService,\n SelectionService,\n {\n provide: FD_DATA_SOURCE_TRANSFORMER,\n useClass: TreeDataSourceParser\n }\n ],\n imports: [NgTemplateOutlet, SkeletonComponent, TreeItemDirective, SelectableItemDirective, FdTranslatePipe]\n})\nexport class TreeComponent<P extends FdTreeAcceptableDataSource, T extends TreeItem = FdTreeItemType<P>>\n implements CssClassBuilder, OnInit, OnChanges, AfterViewInit, SelectComponentRootToken, OnDestroy\n{\n /** @hidden */\n @Input()\n class: string;\n\n /**\n * Whether the tree should be borderless.\n */\n @Input()\n noBorder = false;\n\n /** Type of tree items selection. */\n @Input()\n selection: SelectionType = 'none';\n\n /** Placement of the selection control. */\n @Input()\n selectionPlacement: SelectionPlacement = 'none';\n\n /**\n * Whether the sections should be dependent for selection mode.\n * If true, selection control will shift, according to the level.\n * If false, selection control will stay on the same place ignoring the item level.\n */\n @Input()\n independentSections = false;\n\n /**\n * Whether the Tree component has navigation indicators.\n */\n @Input()\n set navigationIndicator(value: boolean) {\n if (value === this._navigationIndicator) {\n return;\n }\n this._navigationIndicator = value;\n this._treeService.setNavigationIndicator(value);\n }\n\n get navigationIndicator(): boolean {\n return this._navigationIndicator;\n }\n\n /** Event emitted when data loading is started. */\n @Output()\n dataRequested = new EventEmitter<boolean>();\n\n /** Event emitted when data loading is finished. */\n @Output()\n dataReceived = new EventEmitter<boolean>();\n\n /** Event emitted when selected state changed. */\n @Output()\n selectedChange = new EventEmitter<any>();\n\n /** Tree item template definition. */\n @ContentChild(TreeItemDefDirective)\n set treeItemDef(value: Nullable<TreeItemDefDirective>) {\n this._treeItemDef = value;\n // Set new renderer\n this._treeService.treeItemTemplateRef = value?.templateRef;\n this._items = this._treeService.normalizeTreeItems(this._items);\n }\n\n get treeItemDef(): Nullable<TreeItemDefDirective> {\n return this._treeItemDef;\n }\n\n /** @hidden */\n @ViewChildren(TreeItemDirective)\n _treeItemDirectives: QueryList<TreeItemDirective<TreeItem, any>>;\n\n /** @hidden */\n @ContentChildren(BaseTreeItem, { descendants: true })\n readonly _projectedTreeItems: QueryList<BaseTreeItem>;\n\n /** @hidden */\n _items: TreeItem<TreeItemGeneric<T>>[] = [];\n\n /** @hidden */\n get multiple(): boolean {\n return this.selection === 'multiple';\n }\n\n /** @hidden */\n get toggle(): boolean {\n return true;\n }\n\n /**\n * @hidden\n * Used for skeleton to appear before first meaningful data being loaded.\n */\n _initialDataLoaded = false;\n\n /** @hidden */\n readonly loadingRange = range(5);\n\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n\n /** @hidden */\n readonly _treeService = inject(TreeService);\n\n /** @hidden */\n private _navigationIndicator = false;\n\n /** @hidden */\n private _treeItemDef: Nullable<TreeItemDefDirective>;\n\n /** @hidden */\n private readonly _contentDensityObserver = inject(ContentDensityObserver);\n\n /** @hidden */\n private readonly _dataSourceDirective = inject<DataSourceDirective<T, FdTreeDataSource<T>>>(DataSourceDirective);\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private readonly _selectionService = inject(SelectionService);\n\n /** @hidden */\n private readonly _rtlService = inject(RtlService, {\n optional: true\n });\n\n /** @hidden */\n private readonly _cvaDirective = inject(CvaDirective);\n\n /** @hidden */\n private readonly _cdr = inject(ChangeDetectorRef);\n\n /** @hidden */\n private _dsSubscription: Subscription | null = null;\n\n /** @hidden */\n private _expandedLevel: number | undefined;\n\n /** @hidden */\n private _focusKeyManager: FocusKeyManager<BaseTreeItem>;\n\n /**\n * @hidden\n * Sorted tree item components.\n */\n private _sortedTreeItems: BaseTreeItem[] = [];\n\n /**\n * @hidden\n * All tree item components.\n */\n private _allItems: BaseTreeItem[] = [];\n\n /** @hidden */\n private _eventSub: Subscription;\n\n /** @hidden */\n private _selectionSub: Subscription | undefined;\n\n /** @hidden */\n constructor() {\n this._selectionService.registerRootComponent(this);\n this._contentDensityObserver.subscribe();\n\n effect(() => {\n this._expandedLevel = this._treeService.expandedLevel();\n this.buildComponentCssClass();\n });\n }\n\n /** @hidden */\n @applyCssClass\n buildComponentCssClass(): string[] {\n return [\n this.class,\n this._expandedLevel ? `expanded-level-${this._expandedLevel}` : '',\n this.noBorder ? 'fd-tree--no-border' : '',\n this._items.length === 0 && this._initialDataLoaded ? 'fd-tree--no-data' : '',\n this.independentSections ? 'fd-tree--independent-multi-selection' : '',\n 'fd-tree'\n ];\n }\n\n /**\n * @hidden\n * Keyboard navigation\n * @param event Keyboard event.\n */\n @HostListener('keydown', ['$event'])\n protected _onKeyUp(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW])) {\n if (event.defaultPrevented) {\n return;\n }\n event.preventDefault();\n this._focusKeyManager?.onKeydown(event);\n }\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._openDataStream();\n this.buildComponentCssClass();\n\n this._treeService.detectChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._cdr.detectChanges();\n });\n\n if (this.selection !== 'none') {\n this._selectionService.setValue(this._cvaDirective.value);\n\n this._cvaDirective.ngControl?.valueChanges?.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._selectionService.setValue(this._cvaDirective.value);\n });\n }\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n this.buildComponentCssClass();\n\n if ('selection' in changes || 'selectionPlacement' in changes) {\n this._treeService.setSelectionMode(this.selection, this.selectionPlacement);\n this._setSelectionListener();\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._listenToTreeItemsChanges();\n this._listenToTreeItemDirectiveChanges();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._dsSubscription?.unsubscribe();\n this._eventSub?.unsubscribe();\n this._selectionSub?.unsubscribe();\n }\n\n /** @hidden */\n _onItemFocused(treeItem: BaseTreeItem): void {\n let focusedIndex = -1;\n this._sortedTreeItems.forEach((item, index) => {\n const isFocused = treeItem === item;\n item.setContainerTabIndex(isFocused ? 0 : -1);\n if (isFocused) {\n focusedIndex = index;\n }\n });\n\n if (focusedIndex === -1) {\n return;\n }\n\n this._focusKeyManager.setActiveItem(focusedIndex);\n }\n\n /** @hidden */\n _onItemKeyDown(event: KeyboardEvent, treeItem: Nullable<BaseTreeItem>): void {\n if (!treeItem) {\n return;\n }\n\n const isRtl = this._rtlService?.rtl() ?? false;\n const expandKey = isRtl ? LEFT_ARROW : RIGHT_ARROW;\n const collapseKey = isRtl ? RIGHT_ARROW : LEFT_ARROW;\n\n if (KeyUtil.isKeyCode(event, expandKey) && (treeItem.hasDsChildren || treeItem.hasProjectedChildren)) {\n if (event.defaultPrevented) {\n return;\n }\n event.preventDefault();\n\n this._expandTreeSection(treeItem);\n return;\n }\n\n if (KeyUtil.isKeyCode(event, collapseKey)) {\n if (event.defaultPrevented) {\n return;\n }\n event.preventDefault();\n\n this._collapseTreeSection(treeItem);\n return;\n }\n }\n\n /** @hidden */\n _trackFn(index: number, item: TreeItem<TreeItemGeneric<T>>): string {\n return item.id;\n }\n\n /**\n * @hidden\n * Select list interface method implementation.\n * Sets value for control value accessor and emits it.\n * @param value value of the selection.\n */\n onChange(value: SelectableListValueType<any>): void {\n this._cvaDirective.setValue(value, true);\n }\n\n /** @hidden */\n private _expandTreeSection(treeItem: BaseTreeItem): void {\n if (treeItem.expanded) {\n // Shift focus on the first child item\n const itemIndex = this._sortedTreeItems.findIndex((item) => item.id === treeItem.id);\n const nextItem = this._sortedTreeItems[itemIndex + 1];\n if (nextItem?.parentId === treeItem.id) {\n this._focusKeyManager.setActiveItem(itemIndex + 1);\n }\n\n return;\n }\n\n treeItem.expanded = true;\n this._cdr.detectChanges();\n }\n\n /** @hidden */\n private _collapseTreeSection(treeItem: BaseTreeItem): void {\n if (!treeItem.expanded && treeItem.parentId) {\n const parentItemIndex = this._sortedTreeItems.findIndex((item) => item.id === treeItem.parentId);\n\n if (parentItemIndex > -1) {\n this._focusKeyManager.setActiveItem(parentItemIndex);\n return;\n }\n }\n treeItem.expanded = false;\n this._cdr.detectChanges();\n }\n\n /** @hidden */\n private _openDataStream(): void {\n this._dsSubscription?.unsubscribe();\n this._dsSubscription = new Subscription();\n this._dsSubscription.add(\n this._dataSourceDirective.dataSourceProvider?.dataRequested.subscribe(this.dataRequested)\n );\n this._dsSubscription.add(\n this._dataSourceDirective.dataSourceProvider?.dataReceived.subscribe(this.dataReceived)\n );\n\n this._dsSubscription.add(\n this._dataSourceDirective.dataSourceProvider?.dataReceived\n .pipe(\n filter((received) => received),\n switchMap(() => this._dataSourceDirective.dataChanged$)\n )\n .subscribe((data) => {\n this._initialDataLoaded = true;\n this._items = this._treeService.normalizeTreeItems(data);\n this.buildComponentCssClass();\n\n this._cdr.markForCheck();\n })\n );\n\n this._dataSourceDirective.dataSourceProvider?.match();\n }\n\n /** @hidden */\n private _setupEventListeners(): void {\n this._eventSub?.unsubscribe();\n this._eventSub = new Subscription();\n\n this._sortedTreeItems.forEach((item) => {\n this._eventSub.add(\n fromEvent<KeyboardEvent>(item.elementRef.nativeElement, 'keydown').subscribe((event) => {\n this._onItemKeyDown(event, item);\n })\n );\n this._eventSub.add(\n fromEvent(item.itemContainer?.nativeElement, 'focus').subscribe(() => {\n this._onItemFocused(item);\n })\n );\n });\n }\n\n /** @hidden */\n private _sortTreeItems(items: BaseTreeItem[]): BaseTreeItem[] {\n const components: BaseTreeItem[] = [];\n const rootItems = items.filter((item) => item.level === 1);\n\n rootItems.forEach((treeItem, index) => {\n treeItem.setPosition(rootItems.length, index + 1);\n });\n\n items.forEach((item) => {\n if (!item || components.includes(item)) {\n return;\n }\n\n components.push(item);\n\n if (item.children.length === 0) {\n return;\n }\n\n const childItems = this._sortTreeItems(this._allItems.filter((i) => i.parentId === item.id));\n\n childItems.forEach((treeItem, index) => {\n treeItem.setPosition(childItems.length, index + 1);\n });\n\n components.push(...childItems);\n });\n\n return components;\n }\n\n /** @hidden */\n private _setSelectionListener(): void {\n this._selectionSub?.unsubscribe();\n if (this.selection !== 'none') {\n this._selectionService.setValue(this._cvaDirective.value);\n\n this._selectionSub = this._cvaDirective.ngControl?.valueChanges\n ?.pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n this._selectionService.setValue(this._cvaDirective.value);\n });\n }\n }\n\n /** @hidden */\n private _listenToTreeItemDirectiveChanges(): void {\n this._treeItemDirectives.changes\n .pipe(\n startWith(null),\n filter(() => this.treeItemDef !== undefined),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe(() => {\n this._allItems = this._treeItemDirectives.toArray().map((item) => item.treeItem!);\n const flattenedItems = this._sortTreeItems(this._allItems);\n this._setFlattenedItems(flattenedItems);\n });\n }\n\n /** @hidden */\n private _listenToTreeItemsChanges(): void {\n this._projectedTreeItems.changes\n .pipe(\n startWith(null),\n filter(() => !this.treeItemDef),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe(() => {\n this._allItems = this._projectedTreeItems.toArray();\n const flattenedItems = this._sortTreeItems(this._allItems);\n this._setFlattenedItems(flattenedItems);\n });\n }\n\n /** @hidden */\n private _setFlattenedItems(items: BaseTreeItem[]): void {\n this._sortedTreeItems = items;\n\n const activeItem = this._focusKeyManager?.activeItem;\n const newActiveItemIndex = items.findIndex((item) => item === activeItem);\n this._focusKeyManager?.destroy();\n\n this._focusKeyManager = new FocusKeyManager(items)\n .withVerticalOrientation(true)\n .skipPredicate((item) => !item.keyboardAccessible);\n\n if (newActiveItemIndex > -1) {\n this._focusKeyManager.setActiveItem(newActiveItemIndex);\n }\n\n this._selectionService.initialize(this._sortedTreeItems.map((item) => item.selectableListItem));\n\n this._setupEventListeners();\n }\n}\n","<ng-template #dataSourceRenderer>\n <ng-template\n [ngTemplateOutlet]=\"!_initialDataLoaded ? loadingRenderer : dataLoadedTpl\"\n [ngTemplateOutletContext]=\"{ $implicit: 1 }\"\n ></ng-template>\n <ng-template #loadingRenderer let-level>\n @for (_ of loadingRange; track $index) {\n <div role=\"treeitem\" [attr.aria-level]=\"level\" class=\"fd-tree__item\">\n <div class=\"fd-tree__item-container\">\n <div class=\"fd-tree__content\">\n <span class=\"fd-tree__text\">\n <fd-skeleton type=\"text\" width=\"100px\" textLines=\"1\"></fd-skeleton>\n </span>\n </div>\n </div>\n </div>\n }\n </ng-template>\n <ng-template #dataLoadedTpl>\n @if (_items.length > 0 && treeItemDef) {\n @for (item of _items; track _trackFn($index, item)) {\n <ng-template\n [ngTemplateOutlet]=\"renderer\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n }\n } @else {\n <div role=\"treeitem\" aria-level=\"1\" class=\"fd-tree__item\">\n <div class=\"fd-tree__item-container\">\n <div class=\"fd-tree__content\">\n <span class=\"fd-tree__text\">{{ 'coreTree.noData' | fdTranslate }}</span>\n </div>\n </div>\n </div>\n }\n </ng-template>\n <ng-template #renderer let-item>\n <ng-container fdTreeItem fdkSelectableItem #treeItemDirective=\"fdTreeItem\">\n <ng-template\n [ngTemplateOutlet]=\"item.renderer\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n [ngTemplateOutletInjector]=\"treeItemDirective.injector\"\n ></ng-template>\n </ng-container>\n @if (\n treeItemDirective.treeItem?.hasDsChildren &&\n !!treeItemDirective.treeItem?.expanded &&\n !treeItemDirective.treeItem?.childrenLoaded\n ) {\n <ng-template\n [ngTemplateOutlet]=\"loadingRenderer\"\n [ngTemplateOutletContext]=\"{ $implicit: item.level + 1 }\"\n ></ng-template>\n }\n @if (treeItemDirective.treeItem?.children; as childItems) {\n @if (childItems && childItems.length > 0 && !!treeItemDirective?.treeItem?.expanded) {\n <div class=\"fd-tree\">\n @for (child of childItems; track _trackFn($index, child)) {\n <ng-template\n [ngTemplateOutlet]=\"renderer\"\n [ngTemplateOutletContext]=\"{ $implicit: child }\"\n ></ng-template>\n }\n </div>\n }\n }\n </ng-template>\n</ng-template>\n<ng-template #projectedContentRenderer>\n <ng-content select=\"fd-tree-item\"></ng-content>\n</ng-template>\n<ng-template [ngTemplateOutlet]=\"treeItemDef ? dataSourceRenderer : projectedContentRenderer\"></ng-template>\n","import { NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n DestroyRef,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n inject,\n input\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { DataSource, DataSourceDirective } from '@fundamental-ngx/cdk/data-source';\nimport {\n ClickedDirective,\n FDK_SELECTABLE_ITEM_PROVIDER,\n HasElementRef,\n Nullable,\n SelectableItemDirective,\n SelectableItemToken,\n uuidv4\n} from '@fundamental-ngx/cdk/utils';\nimport { CheckboxComponent } from '@fundamental-ngx/core/checkbox';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { RadioButtonComponent } from '@fundamental-ngx/core/radio';\nimport { SkeletonComponent } from '@fundamental-ngx/core/skeleton';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { Observable, Subject, distinctUntilChanged, filter, startWith, switchMap } from 'rxjs';\nimport { FdTreeAcceptableDataSource, FdTreeDataSource } from '../../data-source/tree-data-source';\nimport { TreeItemDirective } from '../../directives/tree-item.directive';\nimport { BaseTreeItem } from '../../models/base-tree-item.class';\nimport { TreeItem, TreeItemState } from '../../models/tree-item';\nimport { TreeService } from '../../tree.service';\n\n@Component({\n selector: 'fd-tree-item',\n templateUrl: './tree-item.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [DataSourceDirective],\n host: {\n class: 'fd-tree__item',\n role: 'presentation'\n },\n providers: [\n {\n provide: FDK_SELECTABLE_ITEM_PROVIDER,\n useExisting: TreeItemComponent\n },\n {\n provide: BaseTreeItem,\n useExisting: TreeItemComponent\n }\n ],\n imports: [\n SelectableItemDirective,\n NgClass,\n NgStyle,\n ClickedDirective,\n NgTemplateOutlet,\n IconComponent,\n SkeletonComponent,\n CheckboxComponent,\n FormsModule,\n RadioButtonComponent,\n FdTranslatePipe\n ]\n})\nexport class TreeItemComponent<T extends TreeItem = TreeItem, P = any>\n extends BaseTreeItem<T, P>\n implements Partial<SelectableItemToken<HTMLElement, P>>, OnInit, AfterViewInit, OnDestroy, HasElementRef\n{\n /**\n * Tree item value.\n */\n @Input()\n value: P;\n /**\n * Tree item ID.\n */\n @Input()\n id = uuidv4();\n\n /**\n * Tree item aria label.\n */\n @HostBinding('attr.aria-label')\n @Input()\n ariaLabel: string;\n\n /**\n * Tree item parent ID.\n */\n @Input()\n set parentId(value: Nullable<string>) {\n this._parentId = value;\n }\n\n get parentId(): Nullable<string> {\n return this._parentId || this._parentTreeItem?.id;\n }\n\n /**\n * Whether the tree item is navigatable.\n */\n @Input()\n navigatable = false;\n\n /**\n * Tree item state.\n */\n @Input()\n state: Nullable<TreeItemState>;\n\n /**\n * Tree item child nodes data source.\n */\n @Input()\n childNodes: FdTreeAcceptableDataSource<T> = [];\n\n /**\n * Whether to wrap content.\n */\n @Input()\n wrapContent = false;\n\n /**\n * Tree item level.\n */\n @Input()\n @HostBinding('attr.aria-level')\n set level(value: number) {\n this._level = value;\n }\n\n get level(): number {\n return this._level || (this._parentTreeItem !== null ? this._parentTreeItem.level + 1 : 1);\n }\n\n /**\n * Whether the tree item is expanded.\n */\n @Input()\n set expanded(value: boolean) {\n if (value === this._expanded) {\n return;\n }\n this._treeService.addExpandableItem(this.id, this.level, value);\n this._expanded = value;\n\n if (value) {\n setTimeout(() => {\n this._treeService.detectChanges.next();\n this._dataSourceDirective.dataSourceProvider?.match();\n });\n } else {\n this.children = [];\n this.childrenLoaded = false;\n this._treeService.detectChanges.next();\n }\n\n this._cdr.detectChanges();\n }\n\n get expanded(): boolean {\n return this._expanded;\n }\n\n /**\n * Event emitted when user clicks on tree item.\n */\n @Output()\n readonly treeItemClick = new EventEmitter<MouseEvent | KeyboardEvent>();\n\n /**\n * Event emitted when `expanded` state changes.\n */\n @Output()\n expandedChange = new EventEmitter<boolean>();\n\n /** Tree item focusable container. */\n @ViewChild('itemContainer', { read: ElementRef })\n itemContainer: Nullable<ElementRef<HTMLElement>>;\n\n /** Selectable item. */\n @ViewChild(SelectableItemDirective)\n selectableListItem: SelectableItemToken;\n\n /** @hidden */\n @ContentChildren(BaseTreeItem)\n _projectedTreeItems: QueryList<BaseTreeItem>;\n\n /**\n * @hidden\n * Selection state.\n */\n _selectionState = false;\n\n /** @hidden */\n children: T[] = [];\n\n /** @hidden */\n childrenLoaded = false;\n\n /** @Hidden */\n _containerTabIndex = 0;\n\n /** @hidden */\n _setSize: number;\n /** @hidden */\n _currentPosition: number;\n\n /** @hidden */\n _totalChildrenLoaded = false;\n\n /** Clicked behavior implementation. */\n clicked: Observable<MouseEvent | KeyboardEvent>;\n\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n\n /** @hidden */\n readonly _treeService = inject(TreeService);\n\n /** Whether the tree item has any type of child nodes. */\n get hasChildren(): boolean {\n return !!this.childNodes || this.hasProjectedChildren;\n }\n\n /** Whether the tree item has content-projected child nodes. */\n get hasProjectedChildren(): boolean {\n return this._projectedTreeItems && this._projectedTreeItems.length > 0;\n }\n\n /** Whether the tree item has data source children. */\n get hasDsChildren(): boolean {\n return this._dsChildrenNumber > 0;\n }\n /** Whether the item is accessible via keyboard. */\n get keyboardAccessible(): boolean {\n return this._parentTreeItem === null\n ? true\n : this._parentTreeItem.keyboardAccessible && this._parentTreeItem.expanded;\n }\n\n /**\n * Custom background color\n */\n backgroundColor = input<string>();\n\n /**\n * Custom styles\n */\n customStyles = input<object>();\n\n /** @hidden */\n private _parentId: Nullable<string>;\n\n /** @hidden */\n private _level: number;\n\n /** @hidden */\n private _expanded = false;\n /** @hidden */\n private _dsChildrenNumber = 0;\n\n /** @hidden */\n private readonly _clicked$ = new Subject<MouseEvent | KeyboardEvent>();\n\n /** @hidden */\n private readonly _treeItemDir = inject<TreeItemDirective<T, P>>(TreeItemDirective, {\n optional: true\n });\n\n /** @hidden */\n private readonly _dataSourceDirective = inject<DataSourceDirective<T, FdTreeDataSource<T>>>(DataSourceDirective);\n\n /** @hidden */\n private readonly _cdr = inject(ChangeDetectorRef);\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private readonly _parentTreeItem = inject(TreeItemComponent, {\n optional: true,\n skipSelf: true\n });\n\n /** @hidden */\n constructor() {\n super();\n this._treeItemDir?.setTreeItem(this);\n this.clicked = this._clicked$.asObservable();\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._dataSourceDirective.dataSource = this.childNodes as DataSource<T, FdTreeDataSource<T>>;\n this._treeService.addExpandableItem(this.id, this.level, this.expanded);\n\n this._dataSourceDirective.dataSourceProvider\n ?.getTotalItems()\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((totalItems) => {\n this._dsChildrenNumber = totalItems;\n this._totalChildrenLoaded = true;\n this._cdr.detectChanges();\n });\n\n this._dataSourceDirective.dataSourceProvider?.dataReceived\n .pipe(\n filter((received) => received),\n switchMap(() => this._dataSourceDirective.dataChanged$),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((data) => {\n this.children = this._treeService.normalizeTreeItems(data, this.id, this.level + 1) as T[];\n this.childrenLoaded = true;\n setTimeout(() => {\n this._treeService.detectChanges.next();\n this._cdr.detectChanges();\n });\n });\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._projectedTreeItems.changes\n .pipe(startWith(null), distinctUntilChanged(), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n this._cdr.detectChanges();\n this._projectedTreeItems.forEach((treeItem, index) => {\n treeItem.setPosition(this._projectedTreeItems.length, index + 1);\n });\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._treeService.removeExpandableItem(this.id, this.level!);\n }\n\n /**\n * Sets position of the current item in the set.\n * @param totalItems Total items amount in the set.\n * @param currentIndex Current item position in the set.\n */\n setPosition(totalItems: number, currentIndex: number): void {\n this._setSize = totalItems;\n this._currentPosition = currentIndex;\n }\n\n /** Method to focus on the tree item. */\n focus(): void {\n this.itemContainer?.nativeElement.focus();\n }\n\n /** Method for setting the focusable tabindex. */\n setContainerTabIndex(value: number): void {\n this._containerTabIndex = value;\n this._cdr.markForCheck();\n }\n\n /** @hidden */\n _toggleExpandState(event: MouseEvent): void {\n // Do not bubble up to selection change event.\n event.stopImmediatePropagation();\n this.expanded = !this.expanded;\n this.expandedChange.emit(this.expanded);\n this.focus();\n }\n\n /** @hidden */\n _onClick(event: MouseEvent | KeyboardEvent): void {\n event.stopImmediatePropagation();\n\n this._clicked$.next(event);\n this.treeItemClick.emit(event);\n }\n\n /** @hidden */\n _setSelected(selected: boolean): void {\n this._selectionState = selected;\n }\n}\n","<div\n class=\"fd-tree__item-container\"\n [attr.tabindex]=\"_containerTabIndex\"\n (fdkClicked)=\"_onClick($event)\"\n fdkSelectableItem\n (selected)=\"_setSelected($event)\"\n [value]=\"value\"\n [attr.aria-haspopup]=\"children.length > 0 || hasProjectedChildren\"\n [attr.aria-expanded]=\"expanded\"\n [attr.aria-setsize]=\"_setSize\"\n [attr.aria-posinset]=\"_currentPosition\"\n role=\"treeitem\"\n [attr.aria-level]=\"level\"\n [style.background-color]=\"backgroundColor()\"\n [ngStyle]=\"customStyles()\"\n #itemContainer\n [ngClass]=\"[\n state ? 'has-highlight-indicator has-highlight-indicator--' + state : '',\n navigatable ? 'fd-tree__item-container--active' : '',\n wrapContent ? 'fd-tree__content--wrap' : ''\n ]\"\n>\n @if (_treeService.selectionMode().placement === 'left') {\n <ng-template [ngTemplateOutlet]=\"selection\"></ng-template>\n }\n @if (hasChildren) {\n @if (hasDsChildren || hasProjectedChildren) {\n <span\n (click)=\"_toggleExpandState($event)\"\n class=\"fd-tree__expander\"\n aria-hidden=\"true\"\n role=\"presentation\"\n [attr.aria-label]=\"(expanded ? 'coreTree.collapse' : 'coreTree.expand') | fdTranslate\"\n [class.is-expanded]=\"expanded\"\n >\n <fd-icon\n class=\"fd-tree__icon\"\n [glyph]=\"expanded ? 'navigation-down-arrow' : 'navigation-right-arrow'\"\n ></fd-icon>\n </span>\n }\n @if (!_totalChildrenLoaded) {\n <div class=\"fd-tree__expander fd-tree__expander--loading\">\n <fd-skeleton type=\"rectangle\" width=\"1rem\" height=\"1rem\"></fd-skeleton>\n </div>\n }\n @if (_treeService.selectionMode().placement === 'afterExpand') {\n <ng-template [ngTemplateOutlet]=\"selection\"></ng-template>\n }\n }\n <div class=\"fd-tree__content\">\n <ng-content select=\"[fdTreeItemIcon]\"></ng-content>\n <ng-content select=\"[fdTreeItemText]\"></ng-content>\n </div>\n <ng-content select=\"[fdTreeItemButton]\"></ng-content>\n @if (_treeService.selectionMode().placement === 'right') {\n <ng-template [ngTemplateOutlet]=\"selection\"></ng-template>\n }\n @if (navigatable && _treeService.navigationIndicator()) {\n <fd-icon glyph=\"slim-arrow-right\" class=\"fd-tree__icon fd-tree__icon--navigation\"></fd-icon>\n }\n</div>\n@if (hasProjectedChildren && expanded) {\n <div class=\"fd-tree\">\n <ng-content select=\"fd-tree-item\"></ng-content>\n </div>\n}\n<ng-template #selection>\n <div class=\"fd-form-item\">\n @if (_treeService.selectionMode().mode === 'multiple') {\n <fd-checkbox\n [(ngModel)]=\"_selectionState\"\n [ngModelOptions]=\"{ standalone: true }\"\n [standalone]=\"true\"\n tabIndexValue=\"-1\"\n ></fd-checkbox>\n }\n @if (_treeService.selectionMode().mode === 'single') {\n <fd-radio-button\n [(ngModel)]=\"_selectionState\"\n [ngModelOptions]=\"{ standalone: true }\"\n [selectedValue]=\"_selectionState\"\n [value]=\"true\"\n tabIndex=\"-1\"\n [standalone]=\"true\"\n tabIndexValue=\"-1\"\n ></fd-radio-button>\n }\n </div>\n</ng-template>\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[fdTreeItemButton]',\n host: {\n class: 'fd-tree__button'\n },\n standalone: true\n})\nexport class TreeItemButtonDirective {}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[fdTreeItemIcon]',\n host: {\n class: 'fd-tree__icon'\n },\n standalone: true\n})\nexport class TreeItemIconDirective {\n /** @hidden */\n @HostBinding('attr.role')\n protected readonly _role = 'presentation';\n\n /** @hidden */\n @HostBinding('attr.aria-hidden')\n protected readonly _ariaHidden = true;\n}\n\n@Directive({\n selector: '[fdTreeItemText]',\n host: {\n class: 'fd-tree__text'\n },\n standalone: true\n})\nexport class TreeItemTextDirective {}\n","import { NgModule } from '@angular/core';\nimport { TreeItemComponent } from './components/tree-item/tree-item.component';\nimport { TreeItemButtonDirective } from './directives/tree-item-button.directive';\nimport { TreeItemDefDirective } from './directives/tree-item-def.directive';\nimport { TreeItemIconDirective, TreeItemTextDirective } from './directives/tree-item-icon.directive';\nimport { TreeItemDirective } from './directives/tree-item.directive';\nimport { TreeComponent } from './tree.component';\n\nconst components = [\n TreeComponent,\n TreeItemComponent,\n TreeItemDefDirective,\n TreeItemDirective,\n TreeItemIconDirective,\n TreeItemTextDirective,\n TreeItemButtonDirective\n];\n\n/**\n * @deprecated\n *\n * Use direct imports of `TreeComponent`,\n `TreeItemComponent`,\n `TreeItemDefDirective`,\n `TreeItemDirective`,\n `TreeItemIconDirective`,\n `TreeItemTextDirective`,\n `TreeItemButtonDirective`\n */\n@NgModule({\n imports: [...components],\n exports: [...components]\n})\nexport class TreeModule {}\n","import { InjectionToken } from '@angular/core';\n\nexport const FD_TREE_ITEM = new InjectionToken('FdTreeItem');\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2"],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-core-tree.mjs","sources":["../../../../libs/core/tree/data-source/tree-data-source.ts","../../../../libs/core/tree/data-source/tree-data-source-parser.ts","../../../../libs/core/tree/directives/tree-item-def.directive.ts","../../../../libs/core/tree/directives/tree-item.directive.ts","../../../../libs/core/tree/models/base-tree-item.class.ts","../../../../libs/core/tree/tree.service.ts","../../../../libs/core/tree/tree.component.ts","../../../../libs/core/tree/tree.component.html","../../../../libs/core/tree/components/tree-item/tree-item.component.ts","../../../../libs/core/tree/components/tree-item/tree-item.component.html","../../../../libs/core/tree/directives/tree-item-button.directive.ts","../../../../libs/core/tree/directives/tree-item-icon.directive.ts","../../../../libs/core/tree/tree.module.ts","../../../../libs/core/tree/tokens.ts","../../../../libs/core/tree/fundamental-ngx-core-tree.ts"],"sourcesContent":["import { AbstractDataProvider, BaseDataSource, DataProvider } from '@fundamental-ngx/cdk/data-source';\nimport { Observable } from 'rxjs';\n\nexport class FdTreeDataSource<T> extends BaseDataSource<T> {\n /** @hidden */\n limitless = true;\n /** @hidden */\n constructor(public dataProvider: AbstractDataProvider<T>) {\n super(dataProvider);\n }\n}\n\nexport class ArrayTreeDataSource<T> extends FdTreeDataSource<T> {\n /** @hidden */\n constructor(data: T[]) {\n super(new DataProvider(data));\n }\n}\n\nexport class ObservableTreeDataSource<T> extends FdTreeDataSource<T> {\n /** @hidden */\n constructor(data: Observable<T[]>) {\n super(new DataProvider(data));\n }\n}\n\n/**\n * Type of acceptable objects as a datasource for the Multi-Combo Box component.\n */\nexport type FdTreeAcceptableDataSource<T = any> = FdTreeDataSource<T> | Observable<T[]> | T[];\nexport type FdTreeItemType<Type extends FdTreeAcceptableDataSource> =\n Type extends BaseDataSource<infer X>\n ? X\n : Type extends Array<infer X>\n ? X\n : Type extends Observable<infer X>\n ? X extends Array<infer V>\n ? V\n : X\n : Type;\n","import { DataSourceParser, isDataSource } from '@fundamental-ngx/cdk/data-source';\nimport { isObservable } from 'rxjs';\nimport {\n ArrayTreeDataSource,\n FdTreeAcceptableDataSource,\n FdTreeDataSource,\n ObservableTreeDataSource\n} from './tree-data-source';\n\nexport class TreeDataSourceParser<T> implements DataSourceParser<T, FdTreeDataSource<T>> {\n /**\n * Transforms plain array or observable into DataSource class.\n * @param source\n */\n parse(source: FdTreeAcceptableDataSource<T>): FdTreeDataSource<T> | undefined {\n if (isDataSource(source)) {\n return source as FdTreeDataSource<T>;\n }\n\n if (Array.isArray(source)) {\n return new ArrayTreeDataSource<T>(source);\n }\n\n if (isObservable(source)) {\n return new ObservableTreeDataSource<T>(source);\n }\n\n return undefined;\n }\n}\n","import { Directive, Input, TemplateRef, inject } from '@angular/core';\nimport { TreeItem } from '../models/tree-item';\nimport { TreeItemDefContext } from '../models/tree-item-def-context';\n\n@Directive({\n selector: '[fdTreeItemDef]',\n standalone: true\n})\nexport class TreeItemDefDirective<T extends TreeItem = TreeItem> {\n /**\n * @hidden\n * Used for type support.\n */\n @Input()\n fdTreeItemDefAs: T;\n /** Template reference. */\n readonly templateRef = inject<TemplateRef<TreeItemDefContext<T>>>(TemplateRef);\n /** @hidden */\n static ngTemplateContextGuard(dir: TreeItemDefDirective, ctx: TreeItemDefContext): ctx is TreeItemDefContext {\n return true;\n }\n}\n","import { Directive, Injector, OnDestroy } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { BaseTreeItem } from '../models/base-tree-item.class';\nimport { TreeItem } from '../models/tree-item';\n\n@Directive({\n selector: '[fdTreeItem]',\n exportAs: 'fdTreeItem',\n standalone: true\n})\nexport class TreeItemDirective<T extends TreeItem, P> implements OnDestroy {\n /** Tree item component instance. */\n treeItem: Nullable<BaseTreeItem<T, P>>;\n\n /** Injector to be used in a tree item component, to resolve a tree item directive. */\n readonly injector: Injector;\n\n /** @hidden */\n constructor(injector: Injector) {\n this.injector = Injector.create({ providers: [], parent: injector });\n }\n\n /** Sets tree item. */\n setTreeItem(item: Nullable<BaseTreeItem<T, P>>): void {\n this.treeItem = item;\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this.treeItem = null;\n }\n}\n","import { Directive, ElementRef } from '@angular/core';\nimport { Nullable, SelectableItemToken } from '@fundamental-ngx/cdk/utils';\nimport { FdTreeAcceptableDataSource } from '../data-source/tree-data-source';\nimport { TreeItem, TreeItemState } from './tree-item';\n\n/**\n * Abstract base class for tree item components.\n * Defines the contract for tree item implementations with navigation, selection, and hierarchy support.\n * @template T - The tree item type extending TreeItem\n * @template P - The value type of the tree item (defaults to any)\n */\n@Directive()\nexport abstract class BaseTreeItem<T extends TreeItem = TreeItem, P = any>\n implements Partial<SelectableItemToken<HTMLElement, P>>\n{\n /**\n * The data value associated with this tree item.\n */\n abstract value: P;\n\n /**\n * Unique identifier for the tree item.\n */\n abstract id: string;\n\n /**\n * ID of the parent tree item, or null if this is a root item.\n */\n abstract parentId: Nullable<string>;\n\n /**\n * Whether the tree item can be navigated to via keyboard or mouse interaction.\n */\n abstract navigatable: boolean;\n\n /**\n * Current state of the tree item (e.g., loading, error, success).\n */\n abstract state: Nullable<TreeItemState>;\n\n /**\n * Data source for child nodes, can be an array or DataSource instance.\n */\n abstract childNodes: FdTreeAcceptableDataSource<T>;\n\n /**\n * Whether the content text should wrap to multiple lines.\n */\n abstract wrapContent: boolean;\n\n /**\n * Whether the tree item is currently expanded to show its children.\n */\n abstract expanded: boolean;\n\n /**\n * The hierarchical level of this item in the tree (root level is 1).\n */\n abstract level: number;\n\n /**\n * Array of child tree items.\n */\n abstract children: T[];\n\n /**\n * Whether the tree item has children defined via content projection.\n */\n abstract hasProjectedChildren: boolean;\n\n /**\n * Whether the tree item has any children (projected or from data source).\n */\n abstract hasChildren: boolean;\n\n /**\n * Reference to the focusable container element of the tree item.\n */\n abstract itemContainer: Nullable<ElementRef>;\n\n /**\n * Whether the tree item can receive keyboard focus for navigation.\n */\n abstract keyboardAccessible: boolean;\n\n /**\n * Reference to the selectable item directive for selection management.\n */\n abstract selectableListItem: SelectableItemToken;\n\n /**\n * Whether the tree item has children provided by a DataSource.\n */\n abstract hasDsChildren: boolean;\n\n /**\n * Whether children from DataSource have finished loading.\n */\n abstract childrenLoaded: boolean;\n\n /**\n * Reference to the host element of the tree item.\n */\n abstract elementRef: ElementRef;\n\n /**\n * Sets focus on the tree item.\n */\n abstract focus(): void;\n\n /**\n * Updates the ARIA position information for the item.\n * @param totalItemsCount - Total number of items in the set\n * @param currentIndex - Current position index (0-based)\n */\n abstract setPosition(totalItemsCount: number, currentIndex: number): void;\n\n /**\n * Sets the tabindex value for the item's container element.\n * @param value - The tabindex value (typically 0 for focusable, -1 for not focusable)\n */\n abstract setContainerTabIndex(value: number): void;\n}\n","import { Injectable, Signal, TemplateRef, signal } from '@angular/core';\nimport { Nullable, uuidv4 } from '@fundamental-ngx/cdk/utils';\nimport { Subject } from 'rxjs';\nimport { BaseTreeItem } from './models/base-tree-item.class';\nimport { SelectionPlacement, SelectionType } from './models/selection-type';\nimport { TreeItem, TreeItemGeneric } from './models/tree-item';\nimport { TreeItemDefContext } from './models/tree-item-def-context';\n\nexport interface SelectionModeModel {\n mode: SelectionType;\n placement: SelectionPlacement;\n}\n\n@Injectable()\nexport class TreeService {\n /** Tree item template ref. */\n treeItemTemplateRef: Nullable<TemplateRef<TreeItemDefContext>>;\n\n /** Currently focused tree item. */\n focusedTreeItem: Nullable<BaseTreeItem>;\n\n /** Current expanded level. */\n get expandedLevel(): Signal<number | undefined> {\n return this._expandedLevel.asReadonly();\n }\n\n /** Tree selection mode. */\n get selectionMode(): Signal<SelectionModeModel> {\n return this._selectionMode$.asReadonly();\n }\n\n /** Whether to show navigation indicator. */\n get navigationIndicator(): Signal<boolean> {\n return this._navigationIndicator$.asReadonly();\n }\n\n /**\n * @hidden\n */\n readonly detectChanges = new Subject<void>();\n\n /** @hidden */\n private readonly _expandableItems = new Map<number, { [key: string]: boolean }>();\n\n /** @hidden */\n private readonly _selectionMode$ = signal<SelectionModeModel>({ mode: 'none', placement: 'none' });\n\n /** @hidden */\n private readonly _expandedLevel = signal<number | undefined>(undefined);\n\n /** @hidden */\n private readonly _navigationIndicator$ = signal(false);\n\n /** Sets whether the navigation indicator should be visible. */\n setNavigationIndicator(value: boolean): void {\n this._navigationIndicator$.set(value);\n }\n\n /** @hidden */\n normalizeTreeItems<T extends TreeItem = TreeItem>(\n items: Nullable<T[]>,\n parentId: string | null = null,\n level = 1\n ): TreeItem<TreeItemGeneric<T>>[] {\n if (!items) {\n return [];\n }\n return [...items].map((item: T) => ({\n ...item,\n ...{\n level,\n parentId,\n renderer: this.treeItemTemplateRef,\n id: item.id || uuidv4()\n }\n }));\n }\n\n /**\n * Adds expandable item to the object of expandable items.\n * @param id\n * @param level\n */\n addExpandableItem(id: string, level: number, expanded: boolean): void {\n const levelCollection = this._expandableItems.get(level) || {};\n levelCollection[id] = expanded;\n this._expandableItems.set(level, levelCollection);\n this._emitNewExpandedLevel();\n }\n\n /**\n * Removes expandable item from the object of expandable items.\n * @param id\n * @param level\n */\n removeExpandableItem(id: string, level: number): void {\n const levelCollection = this._expandableItems.get(level) || {};\n delete levelCollection[id];\n this._expandableItems.set(level, levelCollection);\n this._emitNewExpandedLevel();\n }\n\n /**\n * Sets selection mode and it's placement.\n * @param mode Selection mode.\n * @param placement Selection control placement.\n */\n setSelectionMode(mode: SelectionType, placement: SelectionPlacement): void {\n this._selectionMode$.set({ mode, placement });\n }\n\n /** @hidden */\n private _emitNewExpandedLevel(): void {\n // We need to go from level 1 to deeper level since level 4 may be expanded, yet level 2 not.\n const levels = Array.from(this._expandableItems.keys()).sort();\n let lastLevel: number | undefined;\n\n for (const level of levels) {\n const levelExpandableItems = this._expandableItems.get(level)!;\n\n if (Object.values(levelExpandableItems).every((v) => !v)) {\n break;\n }\n\n lastLevel = level;\n }\n\n this._expandedLevel.set(lastLevel);\n }\n}\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n DestroyRef,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n ViewChildren,\n ViewEncapsulation,\n effect,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DataSourceDirective, FD_DATA_SOURCE_TRANSFORMER } from '@fundamental-ngx/cdk/data-source';\nimport { CvaDirective } from '@fundamental-ngx/cdk/forms';\nimport {\n CssClassBuilder,\n KeyUtil,\n Nullable,\n RtlService,\n SelectComponentRootToken,\n SelectableItemDirective,\n SelectableListValueType,\n SelectionService,\n applyCssClass,\n range\n} from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { SkeletonComponent } from '@fundamental-ngx/core/skeleton';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { Subscription, filter, fromEvent, startWith, switchMap } from 'rxjs';\nimport { FdTreeAcceptableDataSource, FdTreeDataSource, FdTreeItemType } from './data-source/tree-data-source';\nimport { TreeDataSourceParser } from './data-source/tree-data-source-parser';\nimport { TreeItemDefDirective } from './directives/tree-item-def.directive';\nimport { TreeItemDirective } from './directives/tree-item.directive';\nimport { BaseTreeItem } from './models/base-tree-item.class';\nimport { SelectionPlacement, SelectionType } from './models/selection-type';\nimport { TreeItem, TreeItemGeneric } from './models/tree-item';\nimport { TreeService } from './tree.service';\n\n@Component({\n selector: 'fd-tree',\n templateUrl: './tree.component.html',\n encapsulation: ViewEncapsulation.None,\n styleUrl: './tree.component.scss',\n hostDirectives: [\n {\n directive: DataSourceDirective,\n inputs: ['dataSource'],\n outputs: ['dataChanged']\n },\n {\n directive: CvaDirective,\n inputs: ['name', 'id', 'state', 'stateMessage', 'disabled', 'readonly']\n }\n ],\n host: {\n role: 'tree'\n },\n providers: [\n contentDensityObserverProviders(),\n TreeService,\n SelectionService,\n {\n provide: FD_DATA_SOURCE_TRANSFORMER,\n useClass: TreeDataSourceParser\n }\n ],\n imports: [NgTemplateOutlet, SkeletonComponent, TreeItemDirective, SelectableItemDirective, FdTranslatePipe]\n})\nexport class TreeComponent<P extends FdTreeAcceptableDataSource, T extends TreeItem = FdTreeItemType<P>>\n implements CssClassBuilder, OnInit, OnChanges, AfterViewInit, SelectComponentRootToken, OnDestroy\n{\n /** @hidden */\n @Input()\n class: string;\n\n /**\n * Whether the tree should be borderless.\n */\n @Input()\n noBorder = false;\n\n /** Type of tree items selection. */\n @Input()\n selection: SelectionType = 'none';\n\n /** Placement of the selection control. */\n @Input()\n selectionPlacement: SelectionPlacement = 'none';\n\n /**\n * Whether the sections should be dependent for selection mode.\n * If true, selection control will shift, according to the level.\n * If false, selection control will stay on the same place ignoring the item level.\n */\n @Input()\n independentSections = false;\n\n /**\n * Whether the Tree component has navigation indicators.\n */\n @Input()\n set navigationIndicator(value: boolean) {\n if (value === this._navigationIndicator) {\n return;\n }\n this._navigationIndicator = value;\n this._treeService.setNavigationIndicator(value);\n }\n\n get navigationIndicator(): boolean {\n return this._navigationIndicator;\n }\n\n /** Event emitted when data loading is started. */\n @Output()\n dataRequested = new EventEmitter<boolean>();\n\n /** Event emitted when data loading is finished. */\n @Output()\n dataReceived = new EventEmitter<boolean>();\n\n /** Event emitted when selected state changed. */\n @Output()\n selectedChange = new EventEmitter<any>();\n\n /** Tree item template definition. */\n @ContentChild(TreeItemDefDirective)\n set treeItemDef(value: Nullable<TreeItemDefDirective>) {\n this._treeItemDef = value;\n // Set new renderer\n this._treeService.treeItemTemplateRef = value?.templateRef;\n this._items = this._treeService.normalizeTreeItems(this._items);\n }\n\n get treeItemDef(): Nullable<TreeItemDefDirective> {\n return this._treeItemDef;\n }\n\n /** @hidden */\n @ViewChildren(TreeItemDirective)\n _treeItemDirectives: QueryList<TreeItemDirective<TreeItem, any>>;\n\n /** @hidden */\n @ContentChildren(BaseTreeItem, { descendants: true })\n readonly _projectedTreeItems: QueryList<BaseTreeItem>;\n\n /** @hidden */\n _items: TreeItem<TreeItemGeneric<T>>[] = [];\n\n /** @hidden */\n get multiple(): boolean {\n return this.selection === 'multiple';\n }\n\n /** @hidden */\n get toggle(): boolean {\n return true;\n }\n\n /**\n * @hidden\n * Used for skeleton to appear before first meaningful data being loaded.\n */\n _initialDataLoaded = false;\n\n /** @hidden */\n readonly loadingRange = range(5);\n\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n\n /** @hidden */\n readonly _treeService = inject(TreeService);\n\n /** @hidden */\n private _navigationIndicator = false;\n\n /** @hidden */\n private _treeItemDef: Nullable<TreeItemDefDirective>;\n\n /** @hidden */\n private readonly _contentDensityObserver = inject(ContentDensityObserver);\n\n /** @hidden */\n private readonly _dataSourceDirective = inject<DataSourceDirective<T, FdTreeDataSource<T>>>(DataSourceDirective);\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private readonly _selectionService = inject(SelectionService);\n\n /** @hidden */\n private readonly _rtlService = inject(RtlService, {\n optional: true\n });\n\n /** @hidden */\n private readonly _cvaDirective = inject(CvaDirective);\n\n /** @hidden */\n private readonly _cdr = inject(ChangeDetectorRef);\n\n /** @hidden */\n private _dsSubscription: Subscription | null = null;\n\n /** @hidden */\n private _expandedLevel: number | undefined;\n\n /** @hidden */\n private _focusKeyManager: FocusKeyManager<BaseTreeItem>;\n\n /**\n * @hidden\n * Sorted tree item components.\n */\n private _sortedTreeItems: BaseTreeItem[] = [];\n\n /**\n * @hidden\n * All tree item components.\n */\n private _allItems: BaseTreeItem[] = [];\n\n /** @hidden */\n private _eventSub: Subscription;\n\n /** @hidden */\n private _selectionSub: Subscription | undefined;\n\n /** @hidden */\n constructor() {\n this._selectionService.registerRootComponent(this);\n this._contentDensityObserver.subscribe();\n\n effect(() => {\n this._expandedLevel = this._treeService.expandedLevel();\n this.buildComponentCssClass();\n });\n }\n\n /** @hidden */\n @applyCssClass\n buildComponentCssClass(): string[] {\n return [\n this.class,\n this._expandedLevel ? `expanded-level-${this._expandedLevel}` : '',\n this.noBorder ? 'fd-tree--no-border' : '',\n this._items.length === 0 && this._initialDataLoaded ? 'fd-tree--no-data' : '',\n this.independentSections ? 'fd-tree--independent-multi-selection' : '',\n 'fd-tree'\n ];\n }\n\n /**\n * @hidden\n * Keyboard navigation\n * @param event Keyboard event.\n */\n @HostListener('keydown', ['$event'])\n protected _onKeyUp(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW])) {\n if (event.defaultPrevented) {\n return;\n }\n event.preventDefault();\n this._focusKeyManager?.onKeydown(event);\n }\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._openDataStream();\n this.buildComponentCssClass();\n\n this._treeService.detectChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._cdr.detectChanges();\n });\n\n if (this.selection !== 'none') {\n this._selectionService.setValue(this._cvaDirective.value);\n\n this._cvaDirective.ngControl?.valueChanges?.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._selectionService.setValue(this._cvaDirective.value);\n });\n }\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n this.buildComponentCssClass();\n\n if ('selection' in changes || 'selectionPlacement' in changes) {\n this._treeService.setSelectionMode(this.selection, this.selectionPlacement);\n this._setSelectionListener();\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._listenToTreeItemsChanges();\n this._listenToTreeItemDirectiveChanges();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._dsSubscription?.unsubscribe();\n this._eventSub?.unsubscribe();\n this._selectionSub?.unsubscribe();\n }\n\n /** @hidden */\n _onItemFocused(treeItem: BaseTreeItem): void {\n let focusedIndex = -1;\n this._sortedTreeItems.forEach((item, index) => {\n const isFocused = treeItem === item;\n item.setContainerTabIndex(isFocused ? 0 : -1);\n if (isFocused) {\n focusedIndex = index;\n }\n });\n\n if (focusedIndex === -1) {\n return;\n }\n\n this._focusKeyManager.setActiveItem(focusedIndex);\n }\n\n /** @hidden */\n _onItemKeyDown(event: KeyboardEvent, treeItem: Nullable<BaseTreeItem>): void {\n if (!treeItem) {\n return;\n }\n\n const isRtl = this._rtlService?.rtl() ?? false;\n const expandKey = isRtl ? LEFT_ARROW : RIGHT_ARROW;\n const collapseKey = isRtl ? RIGHT_ARROW : LEFT_ARROW;\n\n if (KeyUtil.isKeyCode(event, expandKey) && (treeItem.hasDsChildren || treeItem.hasProjectedChildren)) {\n if (event.defaultPrevented) {\n return;\n }\n event.preventDefault();\n\n this._expandTreeSection(treeItem);\n return;\n }\n\n if (KeyUtil.isKeyCode(event, collapseKey)) {\n if (event.defaultPrevented) {\n return;\n }\n event.preventDefault();\n\n this._collapseTreeSection(treeItem);\n return;\n }\n }\n\n /** @hidden */\n _trackFn(index: number, item: TreeItem<TreeItemGeneric<T>>): string {\n return item.id;\n }\n\n /**\n * @hidden\n * Select list interface method implementation.\n * Sets value for control value accessor and emits it.\n * @param value value of the selection.\n */\n onChange(value: SelectableListValueType<any>): void {\n this._cvaDirective.setValue(value, true);\n }\n\n /** @hidden */\n private _expandTreeSection(treeItem: BaseTreeItem): void {\n if (treeItem.expanded) {\n // Shift focus on the first child item\n const itemIndex = this._sortedTreeItems.findIndex((item) => item.id === treeItem.id);\n const nextItem = this._sortedTreeItems[itemIndex + 1];\n if (nextItem?.parentId === treeItem.id) {\n this._focusKeyManager.setActiveItem(itemIndex + 1);\n }\n\n return;\n }\n\n treeItem.expanded = true;\n this._cdr.detectChanges();\n }\n\n /** @hidden */\n private _collapseTreeSection(treeItem: BaseTreeItem): void {\n if (!treeItem.expanded && treeItem.parentId) {\n const parentItemIndex = this._sortedTreeItems.findIndex((item) => item.id === treeItem.parentId);\n\n if (parentItemIndex > -1) {\n this._focusKeyManager.setActiveItem(parentItemIndex);\n return;\n }\n }\n treeItem.expanded = false;\n this._cdr.detectChanges();\n }\n\n /** @hidden */\n private _openDataStream(): void {\n this._dsSubscription?.unsubscribe();\n this._dsSubscription = new Subscription();\n this._dsSubscription.add(\n this._dataSourceDirective.dataSourceProvider?.dataRequested.subscribe(this.dataRequested)\n );\n this._dsSubscription.add(\n this._dataSourceDirective.dataSourceProvider?.dataReceived.subscribe(this.dataReceived)\n );\n\n this._dsSubscription.add(\n this._dataSourceDirective.dataSourceProvider?.dataReceived\n .pipe(\n filter((received) => received),\n switchMap(() => this._dataSourceDirective.dataChanged$)\n )\n .subscribe((data) => {\n this._initialDataLoaded = true;\n this._items = this._treeService.normalizeTreeItems(data);\n this.buildComponentCssClass();\n\n this._cdr.markForCheck();\n })\n );\n\n this._dataSourceDirective.dataSourceProvider?.match();\n }\n\n /** @hidden */\n private _setupEventListeners(): void {\n this._eventSub?.unsubscribe();\n this._eventSub = new Subscription();\n\n this._sortedTreeItems.forEach((item) => {\n this._eventSub.add(\n fromEvent<KeyboardEvent>(item.elementRef.nativeElement, 'keydown').subscribe((event) => {\n this._onItemKeyDown(event, item);\n })\n );\n this._eventSub.add(\n fromEvent(item.itemContainer?.nativeElement, 'focus').subscribe(() => {\n this._onItemFocused(item);\n })\n );\n });\n }\n\n /** @hidden */\n private _sortTreeItems(items: BaseTreeItem[]): BaseTreeItem[] {\n const components: BaseTreeItem[] = [];\n const rootItems = items.filter((item) => item.level === 1);\n\n rootItems.forEach((treeItem, index) => {\n treeItem.setPosition(rootItems.length, index + 1);\n });\n\n items.forEach((item) => {\n if (!item || components.includes(item)) {\n return;\n }\n\n components.push(item);\n\n if (item.children.length === 0) {\n return;\n }\n\n const childItems = this._sortTreeItems(this._allItems.filter((i) => i.parentId === item.id));\n\n childItems.forEach((treeItem, index) => {\n treeItem.setPosition(childItems.length, index + 1);\n });\n\n components.push(...childItems);\n });\n\n return components;\n }\n\n /** @hidden */\n private _setSelectionListener(): void {\n this._selectionSub?.unsubscribe();\n if (this.selection !== 'none') {\n this._selectionService.setValue(this._cvaDirective.value);\n\n this._selectionSub = this._cvaDirective.ngControl?.valueChanges\n ?.pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n this._selectionService.setValue(this._cvaDirective.value);\n });\n }\n }\n\n /** @hidden */\n private _listenToTreeItemDirectiveChanges(): void {\n this._treeItemDirectives.changes\n .pipe(\n startWith(null),\n filter(() => this.treeItemDef !== undefined),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe(() => {\n this._allItems = this._treeItemDirectives.toArray().map((item) => item.treeItem!);\n const flattenedItems = this._sortTreeItems(this._allItems);\n this._setFlattenedItems(flattenedItems);\n });\n }\n\n /** @hidden */\n private _listenToTreeItemsChanges(): void {\n this._projectedTreeItems.changes\n .pipe(\n startWith(null),\n filter(() => !this.treeItemDef),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe(() => {\n this._allItems = this._projectedTreeItems.toArray();\n const flattenedItems = this._sortTreeItems(this._allItems);\n this._setFlattenedItems(flattenedItems);\n });\n }\n\n /** @hidden */\n private _setFlattenedItems(items: BaseTreeItem[]): void {\n this._sortedTreeItems = items;\n\n const activeItem = this._focusKeyManager?.activeItem;\n const newActiveItemIndex = items.findIndex((item) => item === activeItem);\n this._focusKeyManager?.destroy();\n\n this._focusKeyManager = new FocusKeyManager(items)\n .withVerticalOrientation(true)\n .skipPredicate((item) => !item.keyboardAccessible);\n\n if (newActiveItemIndex > -1) {\n this._focusKeyManager.setActiveItem(newActiveItemIndex);\n }\n\n this._selectionService.initialize(this._sortedTreeItems.map((item) => item.selectableListItem));\n\n this._setupEventListeners();\n }\n}\n","<ng-template #dataSourceRenderer>\n <ng-template\n [ngTemplateOutlet]=\"!_initialDataLoaded ? loadingRenderer : dataLoadedTpl\"\n [ngTemplateOutletContext]=\"{ $implicit: 1 }\"\n ></ng-template>\n <ng-template #loadingRenderer let-level>\n @for (_ of loadingRange; track $index) {\n <div role=\"treeitem\" [attr.aria-level]=\"level\" class=\"fd-tree__item\">\n <div class=\"fd-tree__item-container\">\n <div class=\"fd-tree__content\">\n <span class=\"fd-tree__text\">\n <fd-skeleton type=\"text\" width=\"100px\" textLines=\"1\"></fd-skeleton>\n </span>\n </div>\n </div>\n </div>\n }\n </ng-template>\n <ng-template #dataLoadedTpl>\n @if (_items.length > 0 && treeItemDef) {\n @for (item of _items; track _trackFn($index, item)) {\n <ng-template\n [ngTemplateOutlet]=\"renderer\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n }\n } @else {\n <div role=\"treeitem\" aria-level=\"1\" class=\"fd-tree__item\">\n <div class=\"fd-tree__item-container\">\n <div class=\"fd-tree__content\">\n <span class=\"fd-tree__text\">{{ ('coreTree.noData' | fdTranslate)() }}</span>\n </div>\n </div>\n </div>\n }\n </ng-template>\n <ng-template #renderer let-item>\n <ng-container fdTreeItem fdkSelectableItem #treeItemDirective=\"fdTreeItem\">\n <ng-template\n [ngTemplateOutlet]=\"item.renderer\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n [ngTemplateOutletInjector]=\"treeItemDirective.injector\"\n ></ng-template>\n </ng-container>\n @if (\n treeItemDirective.treeItem?.hasDsChildren &&\n !!treeItemDirective.treeItem?.expanded &&\n !treeItemDirective.treeItem?.childrenLoaded\n ) {\n <ng-template\n [ngTemplateOutlet]=\"loadingRenderer\"\n [ngTemplateOutletContext]=\"{ $implicit: item.level + 1 }\"\n ></ng-template>\n }\n @if (treeItemDirective.treeItem?.children; as childItems) {\n @if (childItems && childItems.length > 0 && !!treeItemDirective?.treeItem?.expanded) {\n <div class=\"fd-tree\">\n @for (child of childItems; track _trackFn($index, child)) {\n <ng-template\n [ngTemplateOutlet]=\"renderer\"\n [ngTemplateOutletContext]=\"{ $implicit: child }\"\n ></ng-template>\n }\n </div>\n }\n }\n </ng-template>\n</ng-template>\n<ng-template #projectedContentRenderer>\n <ng-content select=\"fd-tree-item\"></ng-content>\n</ng-template>\n<ng-template [ngTemplateOutlet]=\"treeItemDef ? dataSourceRenderer : projectedContentRenderer\"></ng-template>\n","import { NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n DestroyRef,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n inject,\n input\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { DataSource, DataSourceDirective } from '@fundamental-ngx/cdk/data-source';\nimport {\n ClickedDirective,\n FDK_SELECTABLE_ITEM_PROVIDER,\n HasElementRef,\n Nullable,\n SelectableItemDirective,\n SelectableItemToken,\n uuidv4\n} from '@fundamental-ngx/cdk/utils';\nimport { CheckboxComponent } from '@fundamental-ngx/core/checkbox';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { RadioButtonComponent } from '@fundamental-ngx/core/radio';\nimport { SkeletonComponent } from '@fundamental-ngx/core/skeleton';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { Observable, Subject, distinctUntilChanged, filter, startWith, switchMap } from 'rxjs';\nimport { FdTreeAcceptableDataSource, FdTreeDataSource } from '../../data-source/tree-data-source';\nimport { TreeItemDirective } from '../../directives/tree-item.directive';\nimport { BaseTreeItem } from '../../models/base-tree-item.class';\nimport { TreeItem, TreeItemState } from '../../models/tree-item';\nimport { TreeService } from '../../tree.service';\n\n@Component({\n selector: 'fd-tree-item',\n templateUrl: './tree-item.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [DataSourceDirective],\n host: {\n class: 'fd-tree__item',\n role: 'presentation'\n },\n providers: [\n {\n provide: FDK_SELECTABLE_ITEM_PROVIDER,\n useExisting: TreeItemComponent\n },\n {\n provide: BaseTreeItem,\n useExisting: TreeItemComponent\n }\n ],\n imports: [\n SelectableItemDirective,\n NgClass,\n NgStyle,\n ClickedDirective,\n NgTemplateOutlet,\n IconComponent,\n SkeletonComponent,\n CheckboxComponent,\n FormsModule,\n RadioButtonComponent,\n FdTranslatePipe\n ]\n})\nexport class TreeItemComponent<T extends TreeItem = TreeItem, P = any>\n extends BaseTreeItem<T, P>\n implements Partial<SelectableItemToken<HTMLElement, P>>, OnInit, AfterViewInit, OnDestroy, HasElementRef\n{\n /**\n * Tree item value.\n */\n @Input()\n value: P;\n /**\n * Tree item ID.\n */\n @Input()\n id = uuidv4();\n\n /**\n * Tree item aria label.\n */\n @HostBinding('attr.aria-label')\n @Input()\n ariaLabel: string;\n\n /**\n * Tree item parent ID.\n */\n @Input()\n set parentId(value: Nullable<string>) {\n this._parentId = value;\n }\n\n get parentId(): Nullable<string> {\n return this._parentId || this._parentTreeItem?.id;\n }\n\n /**\n * Whether the tree item is navigatable.\n */\n @Input()\n navigatable = false;\n\n /**\n * Tree item state.\n */\n @Input()\n state: Nullable<TreeItemState>;\n\n /**\n * Tree item child nodes data source.\n */\n @Input()\n childNodes: FdTreeAcceptableDataSource<T> = [];\n\n /**\n * Whether to wrap content.\n */\n @Input()\n wrapContent = false;\n\n /**\n * Tree item level.\n */\n @Input()\n @HostBinding('attr.aria-level')\n set level(value: number) {\n this._level = value;\n }\n\n get level(): number {\n return this._level || (this._parentTreeItem !== null ? this._parentTreeItem.level + 1 : 1);\n }\n\n /**\n * Whether the tree item is expanded.\n */\n @Input()\n set expanded(value: boolean) {\n if (value === this._expanded) {\n return;\n }\n this._treeService.addExpandableItem(this.id, this.level, value);\n this._expanded = value;\n\n if (value) {\n setTimeout(() => {\n this._treeService.detectChanges.next();\n this._dataSourceDirective.dataSourceProvider?.match();\n });\n } else {\n this.children = [];\n this.childrenLoaded = false;\n this._treeService.detectChanges.next();\n }\n\n this._cdr.detectChanges();\n }\n\n get expanded(): boolean {\n return this._expanded;\n }\n\n /**\n * Event emitted when user clicks on tree item.\n */\n @Output()\n readonly treeItemClick = new EventEmitter<MouseEvent | KeyboardEvent>();\n\n /**\n * Event emitted when `expanded` state changes.\n */\n @Output()\n expandedChange = new EventEmitter<boolean>();\n\n /** Tree item focusable container. */\n @ViewChild('itemContainer', { read: ElementRef })\n itemContainer: Nullable<ElementRef<HTMLElement>>;\n\n /** Selectable item. */\n @ViewChild(SelectableItemDirective)\n selectableListItem: SelectableItemToken;\n\n /** @hidden */\n @ContentChildren(BaseTreeItem)\n _projectedTreeItems: QueryList<BaseTreeItem>;\n\n /**\n * @hidden\n * Selection state.\n */\n _selectionState = false;\n\n /** @hidden */\n children: T[] = [];\n\n /** @hidden */\n childrenLoaded = false;\n\n /** @Hidden */\n _containerTabIndex = 0;\n\n /** @hidden */\n _setSize: number;\n /** @hidden */\n _currentPosition: number;\n\n /** @hidden */\n _totalChildrenLoaded = false;\n\n /** Clicked behavior implementation. */\n clicked: Observable<MouseEvent | KeyboardEvent>;\n\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n\n /** @hidden */\n readonly _treeService = inject(TreeService);\n\n /** Whether the tree item has any type of child nodes. */\n get hasChildren(): boolean {\n return !!this.childNodes || this.hasProjectedChildren;\n }\n\n /** Whether the tree item has content-projected child nodes. */\n get hasProjectedChildren(): boolean {\n return this._projectedTreeItems && this._projectedTreeItems.length > 0;\n }\n\n /** Whether the tree item has data source children. */\n get hasDsChildren(): boolean {\n return this._dsChildrenNumber > 0;\n }\n /** Whether the item is accessible via keyboard. */\n get keyboardAccessible(): boolean {\n return this._parentTreeItem === null\n ? true\n : this._parentTreeItem.keyboardAccessible && this._parentTreeItem.expanded;\n }\n\n /**\n * Custom background color\n */\n backgroundColor = input<string>();\n\n /**\n * Custom styles\n */\n customStyles = input<object>();\n\n /** @hidden */\n private _parentId: Nullable<string>;\n\n /** @hidden */\n private _level: number;\n\n /** @hidden */\n private _expanded = false;\n /** @hidden */\n private _dsChildrenNumber = 0;\n\n /** @hidden */\n private readonly _clicked$ = new Subject<MouseEvent | KeyboardEvent>();\n\n /** @hidden */\n private readonly _treeItemDir = inject<TreeItemDirective<T, P>>(TreeItemDirective, {\n optional: true\n });\n\n /** @hidden */\n private readonly _dataSourceDirective = inject<DataSourceDirective<T, FdTreeDataSource<T>>>(DataSourceDirective);\n\n /** @hidden */\n private readonly _cdr = inject(ChangeDetectorRef);\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private readonly _parentTreeItem = inject(TreeItemComponent, {\n optional: true,\n skipSelf: true\n });\n\n /** @hidden */\n constructor() {\n super();\n this._treeItemDir?.setTreeItem(this);\n this.clicked = this._clicked$.asObservable();\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._dataSourceDirective.dataSource = this.childNodes as DataSource<T, FdTreeDataSource<T>>;\n this._treeService.addExpandableItem(this.id, this.level, this.expanded);\n\n this._dataSourceDirective.dataSourceProvider\n ?.getTotalItems()\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((totalItems) => {\n this._dsChildrenNumber = totalItems;\n this._totalChildrenLoaded = true;\n this._cdr.detectChanges();\n });\n\n this._dataSourceDirective.dataSourceProvider?.dataReceived\n .pipe(\n filter((received) => received),\n switchMap(() => this._dataSourceDirective.dataChanged$),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((data) => {\n this.children = this._treeService.normalizeTreeItems(data, this.id, this.level + 1) as T[];\n this.childrenLoaded = true;\n setTimeout(() => {\n this._treeService.detectChanges.next();\n this._cdr.detectChanges();\n });\n });\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._projectedTreeItems.changes\n .pipe(startWith(null), distinctUntilChanged(), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n this._cdr.detectChanges();\n this._projectedTreeItems.forEach((treeItem, index) => {\n treeItem.setPosition(this._projectedTreeItems.length, index + 1);\n });\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._treeService.removeExpandableItem(this.id, this.level!);\n }\n\n /**\n * Sets position of the current item in the set.\n * @param totalItems Total items amount in the set.\n * @param currentIndex Current item position in the set.\n */\n setPosition(totalItems: number, currentIndex: number): void {\n this._setSize = totalItems;\n this._currentPosition = currentIndex;\n }\n\n /** Method to focus on the tree item. */\n focus(): void {\n this.itemContainer?.nativeElement.focus();\n }\n\n /** Method for setting the focusable tabindex. */\n setContainerTabIndex(value: number): void {\n this._containerTabIndex = value;\n this._cdr.markForCheck();\n }\n\n /** @hidden */\n _toggleExpandState(event: MouseEvent): void {\n // Do not bubble up to selection change event.\n event.stopImmediatePropagation();\n this.expanded = !this.expanded;\n this.expandedChange.emit(this.expanded);\n this.focus();\n }\n\n /** @hidden */\n _onClick(event: MouseEvent | KeyboardEvent): void {\n event.stopImmediatePropagation();\n\n this._clicked$.next(event);\n this.treeItemClick.emit(event);\n }\n\n /** @hidden */\n _setSelected(selected: boolean): void {\n this._selectionState = selected;\n }\n}\n","<div\n class=\"fd-tree__item-container\"\n [attr.tabindex]=\"_containerTabIndex\"\n (fdkClicked)=\"_onClick($event)\"\n fdkSelectableItem\n (selected)=\"_setSelected($event)\"\n [value]=\"value\"\n [attr.aria-haspopup]=\"children.length > 0 || hasProjectedChildren\"\n [attr.aria-expanded]=\"expanded\"\n [attr.aria-setsize]=\"_setSize\"\n [attr.aria-posinset]=\"_currentPosition\"\n role=\"treeitem\"\n [attr.aria-level]=\"level\"\n [style.background-color]=\"backgroundColor()\"\n [ngStyle]=\"customStyles()\"\n #itemContainer\n [ngClass]=\"[\n state ? 'has-highlight-indicator has-highlight-indicator--' + state : '',\n navigatable ? 'fd-tree__item-container--active' : '',\n wrapContent ? 'fd-tree__content--wrap' : ''\n ]\"\n>\n @if (_treeService.selectionMode().placement === 'left') {\n <ng-template [ngTemplateOutlet]=\"selection\"></ng-template>\n }\n @if (hasChildren) {\n @if (hasDsChildren || hasProjectedChildren) {\n <span\n (click)=\"_toggleExpandState($event)\"\n class=\"fd-tree__expander\"\n aria-hidden=\"true\"\n role=\"presentation\"\n [attr.aria-label]=\"((expanded ? 'coreTree.collapse' : 'coreTree.expand') | fdTranslate)()\"\n [class.is-expanded]=\"expanded\"\n >\n <fd-icon\n class=\"fd-tree__icon\"\n [glyph]=\"expanded ? 'navigation-down-arrow' : 'navigation-right-arrow'\"\n ></fd-icon>\n </span>\n }\n @if (!_totalChildrenLoaded) {\n <div class=\"fd-tree__expander fd-tree__expander--loading\">\n <fd-skeleton type=\"rectangle\" width=\"1rem\" height=\"1rem\"></fd-skeleton>\n </div>\n }\n @if (_treeService.selectionMode().placement === 'afterExpand') {\n <ng-template [ngTemplateOutlet]=\"selection\"></ng-template>\n }\n }\n <div class=\"fd-tree__content\">\n <ng-content select=\"[fdTreeItemIcon]\"></ng-content>\n <ng-content select=\"[fdTreeItemText]\"></ng-content>\n </div>\n <ng-content select=\"[fdTreeItemButton]\"></ng-content>\n @if (_treeService.selectionMode().placement === 'right') {\n <ng-template [ngTemplateOutlet]=\"selection\"></ng-template>\n }\n @if (navigatable && _treeService.navigationIndicator()) {\n <fd-icon glyph=\"slim-arrow-right\" class=\"fd-tree__icon fd-tree__icon--navigation\"></fd-icon>\n }\n</div>\n@if (hasProjectedChildren && expanded) {\n <div class=\"fd-tree\">\n <ng-content select=\"fd-tree-item\"></ng-content>\n </div>\n}\n<ng-template #selection>\n <div class=\"fd-form-item\">\n @if (_treeService.selectionMode().mode === 'multiple') {\n <fd-checkbox\n [(ngModel)]=\"_selectionState\"\n [ngModelOptions]=\"{ standalone: true }\"\n [standalone]=\"true\"\n tabIndexValue=\"-1\"\n ></fd-checkbox>\n }\n @if (_treeService.selectionMode().mode === 'single') {\n <fd-radio-button\n [(ngModel)]=\"_selectionState\"\n [ngModelOptions]=\"{ standalone: true }\"\n [selectedValue]=\"_selectionState\"\n [value]=\"true\"\n tabIndex=\"-1\"\n [standalone]=\"true\"\n tabIndexValue=\"-1\"\n ></fd-radio-button>\n }\n </div>\n</ng-template>\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[fdTreeItemButton]',\n host: {\n class: 'fd-tree__button'\n },\n standalone: true\n})\nexport class TreeItemButtonDirective {}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[fdTreeItemIcon]',\n host: {\n class: 'fd-tree__icon'\n },\n standalone: true\n})\nexport class TreeItemIconDirective {\n /** @hidden */\n @HostBinding('attr.role')\n protected readonly _role = 'presentation';\n\n /** @hidden */\n @HostBinding('attr.aria-hidden')\n protected readonly _ariaHidden = true;\n}\n\n@Directive({\n selector: '[fdTreeItemText]',\n host: {\n class: 'fd-tree__text'\n },\n standalone: true\n})\nexport class TreeItemTextDirective {}\n","import { NgModule } from '@angular/core';\nimport { TreeItemComponent } from './components/tree-item/tree-item.component';\nimport { TreeItemButtonDirective } from './directives/tree-item-button.directive';\nimport { TreeItemDefDirective } from './directives/tree-item-def.directive';\nimport { TreeItemIconDirective, TreeItemTextDirective } from './directives/tree-item-icon.directive';\nimport { TreeItemDirective } from './directives/tree-item.directive';\nimport { TreeComponent } from './tree.component';\n\nconst components = [\n TreeComponent,\n TreeItemComponent,\n TreeItemDefDirective,\n TreeItemDirective,\n TreeItemIconDirective,\n TreeItemTextDirective,\n TreeItemButtonDirective\n];\n\n/**\n * @deprecated\n *\n * Use direct imports of `TreeComponent`,\n `TreeItemComponent`,\n `TreeItemDefDirective`,\n `TreeItemDirective`,\n `TreeItemIconDirective`,\n `TreeItemTextDirective`,\n `TreeItemButtonDirective`\n */\n@NgModule({\n imports: [...components],\n exports: [...components]\n})\nexport class TreeModule {}\n","import { InjectionToken } from '@angular/core';\n\nexport const FD_TREE_ITEM = new InjectionToken('FdTreeItem');\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2"],"mappings":"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"}
@@ -62,11 +62,11 @@ class UploadCollectionButtonGroupComponent {
62
62
  this._editMode = false;
63
63
  }
64
64
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: UploadCollectionButtonGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
65
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: UploadCollectionButtonGroupComponent, isStandalone: true, selector: "fd-upload-collection-button-group", inputs: { allowFileNameEdit: "allowFileNameEdit", allowFileDeletion: "allowFileDeletion", disableFileNameEdit: "disableFileNameEdit", disableFileDeletion: "disableFileDeletion" }, outputs: { editClicked: "editClicked", okClicked: "okClicked", deleteClicked: "deleteClicked" }, host: { classAttribute: "fd-upload-collection__button-group" }, viewQueries: [{ propertyName: "_okButton", first: true, predicate: ["okButton"], descendants: true }], ngImport: i0, template: "@if (!_editMode && allowFileNameEdit) {\n <button\n [disabled]=\"disableFileNameEdit\"\n (click)=\"_editButtonClicked($event)\"\n fd-button\n fdType=\"transparent\"\n glyph=\"edit\"\n [ariaLabel]=\"'coreUploadCollection.menuEditAriaLabel' | fdTranslate\"\n ></button>\n}\n@if (!_editMode && allowFileDeletion) {\n <button\n [disabled]=\"disableFileDeletion\"\n (click)=\"_deleteButtonClicked($event)\"\n fd-button\n fdType=\"transparent\"\n glyph=\"decline\"\n [ariaLabel]=\"'coreUploadCollection.menuDeleteAriaLabel' | fdTranslate\"\n ></button>\n}\n<button\n #okButton\n [style.display]=\"_editMode ? 'inline-flex' : 'none'\"\n (click)=\"_okButtonClicked($event)\"\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"'coreUploadCollection.menuOkAriaLabel' | fdTranslate\"\n>\n {{ 'coreUploadCollection.menuOkText' | fdTranslate }}\n</button>\n@if (_editMode) {\n <button\n (click)=\"_cancelButtonClicked($event)\"\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"'coreUploadCollection.menuCancelAriaLabel' | fdTranslate\"\n >\n {{ 'coreUploadCollection.menuCancelText' | fdTranslate }}\n </button>\n}\n", dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["id"], exportAs: ["fd-button"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
65
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: UploadCollectionButtonGroupComponent, isStandalone: true, selector: "fd-upload-collection-button-group", inputs: { allowFileNameEdit: "allowFileNameEdit", allowFileDeletion: "allowFileDeletion", disableFileNameEdit: "disableFileNameEdit", disableFileDeletion: "disableFileDeletion" }, outputs: { editClicked: "editClicked", okClicked: "okClicked", deleteClicked: "deleteClicked" }, host: { classAttribute: "fd-upload-collection__button-group" }, viewQueries: [{ propertyName: "_okButton", first: true, predicate: ["okButton"], descendants: true }], ngImport: i0, template: "@if (!_editMode && allowFileNameEdit) {\n <button\n [disabled]=\"disableFileNameEdit\"\n (click)=\"_editButtonClicked($event)\"\n fd-button\n fdType=\"transparent\"\n glyph=\"edit\"\n [ariaLabel]=\"('coreUploadCollection.menuEditAriaLabel' | fdTranslate)()\"\n ></button>\n}\n@if (!_editMode && allowFileDeletion) {\n <button\n [disabled]=\"disableFileDeletion\"\n (click)=\"_deleteButtonClicked($event)\"\n fd-button\n fdType=\"transparent\"\n glyph=\"decline\"\n [ariaLabel]=\"('coreUploadCollection.menuDeleteAriaLabel' | fdTranslate)()\"\n ></button>\n}\n<button\n #okButton\n [style.display]=\"_editMode ? 'inline-flex' : 'none'\"\n (click)=\"_okButtonClicked($event)\"\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"('coreUploadCollection.menuOkAriaLabel' | fdTranslate)()\"\n>\n {{ ('coreUploadCollection.menuOkText' | fdTranslate)() }}\n</button>\n@if (_editMode) {\n <button\n (click)=\"_cancelButtonClicked($event)\"\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"('coreUploadCollection.menuCancelAriaLabel' | fdTranslate)()\"\n >\n {{ ('coreUploadCollection.menuCancelText' | fdTranslate)() }}\n </button>\n}\n", dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["id"], exportAs: ["fd-button"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
66
66
  }
67
67
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: UploadCollectionButtonGroupComponent, decorators: [{
68
68
  type: Component,
69
- args: [{ selector: 'fd-upload-collection-button-group', host: { class: 'fd-upload-collection__button-group' }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [ButtonComponent, FdTranslatePipe], template: "@if (!_editMode && allowFileNameEdit) {\n <button\n [disabled]=\"disableFileNameEdit\"\n (click)=\"_editButtonClicked($event)\"\n fd-button\n fdType=\"transparent\"\n glyph=\"edit\"\n [ariaLabel]=\"'coreUploadCollection.menuEditAriaLabel' | fdTranslate\"\n ></button>\n}\n@if (!_editMode && allowFileDeletion) {\n <button\n [disabled]=\"disableFileDeletion\"\n (click)=\"_deleteButtonClicked($event)\"\n fd-button\n fdType=\"transparent\"\n glyph=\"decline\"\n [ariaLabel]=\"'coreUploadCollection.menuDeleteAriaLabel' | fdTranslate\"\n ></button>\n}\n<button\n #okButton\n [style.display]=\"_editMode ? 'inline-flex' : 'none'\"\n (click)=\"_okButtonClicked($event)\"\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"'coreUploadCollection.menuOkAriaLabel' | fdTranslate\"\n>\n {{ 'coreUploadCollection.menuOkText' | fdTranslate }}\n</button>\n@if (_editMode) {\n <button\n (click)=\"_cancelButtonClicked($event)\"\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"'coreUploadCollection.menuCancelAriaLabel' | fdTranslate\"\n >\n {{ 'coreUploadCollection.menuCancelText' | fdTranslate }}\n </button>\n}\n" }]
69
+ args: [{ selector: 'fd-upload-collection-button-group', host: { class: 'fd-upload-collection__button-group' }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [ButtonComponent, FdTranslatePipe], template: "@if (!_editMode && allowFileNameEdit) {\n <button\n [disabled]=\"disableFileNameEdit\"\n (click)=\"_editButtonClicked($event)\"\n fd-button\n fdType=\"transparent\"\n glyph=\"edit\"\n [ariaLabel]=\"('coreUploadCollection.menuEditAriaLabel' | fdTranslate)()\"\n ></button>\n}\n@if (!_editMode && allowFileDeletion) {\n <button\n [disabled]=\"disableFileDeletion\"\n (click)=\"_deleteButtonClicked($event)\"\n fd-button\n fdType=\"transparent\"\n glyph=\"decline\"\n [ariaLabel]=\"('coreUploadCollection.menuDeleteAriaLabel' | fdTranslate)()\"\n ></button>\n}\n<button\n #okButton\n [style.display]=\"_editMode ? 'inline-flex' : 'none'\"\n (click)=\"_okButtonClicked($event)\"\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"('coreUploadCollection.menuOkAriaLabel' | fdTranslate)()\"\n>\n {{ ('coreUploadCollection.menuOkText' | fdTranslate)() }}\n</button>\n@if (_editMode) {\n <button\n (click)=\"_cancelButtonClicked($event)\"\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"('coreUploadCollection.menuCancelAriaLabel' | fdTranslate)()\"\n >\n {{ ('coreUploadCollection.menuCancelText' | fdTranslate)() }}\n </button>\n}\n" }]
70
70
  }], propDecorators: { editClicked: [{
71
71
  type: Output
72
72
  }], okClicked: [{
@@ -120,11 +120,11 @@ class UploadCollectionFormItemComponent {
120
120
  this.onTouched = fn;
121
121
  }
122
122
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: UploadCollectionFormItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
123
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: UploadCollectionFormItemComponent, isStandalone: true, selector: "fd-upload-collection-form-item", inputs: { _editMode: "_editMode" }, outputs: { fileNameChanged: "fileNameChanged" }, host: { classAttribute: "fd-upload-collection__form-item" }, ngImport: i0, template: "@if (_editMode) {\n <input\n fd-form-control\n required\n [style.pointer-events]=\"'all'\"\n class=\"fd-input\"\n type=\"text\"\n [attr.placeholder]=\"'coreUploadCollection.formItemPlaceholder' | fdTranslate\"\n [(ngModel)]=\"fileName\"\n [state]=\"!fileName ? 'error' : null\"\n (click)=\"$event.stopPropagation()\"\n />\n}\n@if (_editMode) {\n <span class=\"fd-upload-collection__extension\">.{{ _extension }}</span>\n}\n", dependencies: [{ kind: "component", type: FormControlComponent, selector: "input[fd-form-control], textarea[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], encapsulation: i0.ViewEncapsulation.None }); }
123
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: UploadCollectionFormItemComponent, isStandalone: true, selector: "fd-upload-collection-form-item", inputs: { _editMode: "_editMode" }, outputs: { fileNameChanged: "fileNameChanged" }, host: { classAttribute: "fd-upload-collection__form-item" }, ngImport: i0, template: "@if (_editMode) {\n <input\n fd-form-control\n required\n [style.pointer-events]=\"'all'\"\n class=\"fd-input\"\n type=\"text\"\n [attr.placeholder]=\"('coreUploadCollection.formItemPlaceholder' | fdTranslate)()\"\n [(ngModel)]=\"fileName\"\n [state]=\"!fileName ? 'error' : null\"\n (click)=\"$event.stopPropagation()\"\n />\n}\n@if (_editMode) {\n <span class=\"fd-upload-collection__extension\">.{{ _extension }}</span>\n}\n", dependencies: [{ kind: "component", type: FormControlComponent, selector: "input[fd-form-control], textarea[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], encapsulation: i0.ViewEncapsulation.None }); }
124
124
  }
125
125
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: UploadCollectionFormItemComponent, decorators: [{
126
126
  type: Component,
127
- args: [{ selector: 'fd-upload-collection-form-item', host: { class: 'fd-upload-collection__form-item' }, encapsulation: ViewEncapsulation.None, imports: [FormControlComponent, FormsModule, FdTranslatePipe], template: "@if (_editMode) {\n <input\n fd-form-control\n required\n [style.pointer-events]=\"'all'\"\n class=\"fd-input\"\n type=\"text\"\n [attr.placeholder]=\"'coreUploadCollection.formItemPlaceholder' | fdTranslate\"\n [(ngModel)]=\"fileName\"\n [state]=\"!fileName ? 'error' : null\"\n (click)=\"$event.stopPropagation()\"\n />\n}\n@if (_editMode) {\n <span class=\"fd-upload-collection__extension\">.{{ _extension }}</span>\n}\n" }]
127
+ args: [{ selector: 'fd-upload-collection-form-item', host: { class: 'fd-upload-collection__form-item' }, encapsulation: ViewEncapsulation.None, imports: [FormControlComponent, FormsModule, FdTranslatePipe], template: "@if (_editMode) {\n <input\n fd-form-control\n required\n [style.pointer-events]=\"'all'\"\n class=\"fd-input\"\n type=\"text\"\n [attr.placeholder]=\"('coreUploadCollection.formItemPlaceholder' | fdTranslate)()\"\n [(ngModel)]=\"fileName\"\n [state]=\"!fileName ? 'error' : null\"\n (click)=\"$event.stopPropagation()\"\n />\n}\n@if (_editMode) {\n <span class=\"fd-upload-collection__extension\">.{{ _extension }}</span>\n}\n" }]
128
128
  }], propDecorators: { _editMode: [{
129
129
  type: Input
130
130
  }], fileNameChanged: [{
@@ -438,7 +438,7 @@ class UploadCollectionComponent {
438
438
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: UploadCollectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
439
439
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.0", type: UploadCollectionComponent, isStandalone: true, selector: "fd-upload-collection", inputs: { small: "small", selection: "selection" }, host: { properties: { "class.fd-upload-collection--sm": "this.small" }, classAttribute: "fd-upload-collection" }, ngImport: i0, template: `<ul fd-list [byline]="true" [selection]="selection">
440
440
  <ng-content></ng-content>
441
- </ul>`, isInline: true, styles: ["@charset \"UTF-8\";:root{--fdList_Item_Background_Color:var(--sapList_Background);--fdList_Item_Text_Color:var(--sapList_TextColor);--fdList_Item_Border_Color:var(--sapList_BorderColor);--fdList_Item_Text_Font_Size:var(--sapFontLargeSize);--fdList_Item_Icon_Font_Size:1.125rem;--fdList_Item_Height:var(--sapElement_LineHeight);--fdList_Status_Text_Color:var(--sapNeutralTextColor);--fdList_Message_Background_Color:var(--sapNeutralBackground)}.fd-list--byline .fd-list__item{height:auto;min-height:5rem;padding-block:.9375rem;padding-inline:1rem;width:100%;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.fd-list--byline .fd-list__item.is-focus,.fd-list--byline .fd-list__item:focus{pointer-events:all;z-index:5}.fd-list--byline .fd-list__item .fd-list__item-counter{-ms-flex-align:center;-ms-flex-item-align:center;align-self:center;-webkit-box-pack:end;-ms-flex-pack:end;height:100%;justify-content:flex-end;min-width:2rem}.fd-list--byline .fd-list__item .fd-list__item-counter,.fd-list--byline .fd-list__thumbnail{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;align-items:center}.fd-list--byline .fd-list__thumbnail{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;pointer-events:none;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;-webkit-margin-end:.75rem;border-radius:.25rem;color:var(--sapContent_NonInteractiveIconColor);font-size:2rem;height:3rem;margin-inline-end:.75rem;max-height:3rem;max-width:3rem;min-height:3rem;min-width:3rem;width:3rem}.fd-list--byline .fd-list__thumbnail:after,.fd-list--byline .fd-list__thumbnail:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-list--byline .fd-list__thumbnail [class*=sap-icon],.fd-list--byline .fd-list__thumbnail[class*=sap-icon]{background:inherit;border-radius:inherit;color:inherit;font-size:inherit;line-height:1}.fd-list--byline .fd-list__thumbnail>svg{height:100%}.fd-list--byline .fd-list__notification{color:var(--sapAccentColor6);font-size:.375rem;left:1rem;position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.fd-list--byline .fd-list__notification[dir=rtl],[dir=rtl] .fd-list--byline .fd-list__notification{left:auto;right:1rem}.fd-list--byline .fd-list__notification+.fd-list__link .fd-list__content .fd-list__title,.fd-list--byline .fd-list__notification~.fd-list__content .fd-list__title{font-weight:700}.fd-list--byline .fd-list__content{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;pointer-events:none;-ms-flex-line-pack:justify;align-content:space-between;height:100%;min-height:3rem;min-width:3rem;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding-block:.125rem;padding-inline:0}.fd-list--byline .fd-list__content:after,.fd-list--byline .fd-list__content:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-list--byline .fd-list__title{font-size:var(--sapFontLargeSize);min-height:1rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fd-list--byline .fd-list__byline{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;line-height:1rem;margin-block:0;margin-inline:0;overflow:hidden;padding-block:0;padding-inline:0;text-overflow:ellipsis;white-space:nowrap;-webkit-padding-before:.5rem;padding-block-start:.5rem}.fd-list--byline .fd-list__byline:after,.fd-list--byline .fd-list__byline:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-list--byline .fd-list__byline--2-col{display:-webkit-box;display:-ms-flexbox;display:flex;pointer-events:all}.fd-list--byline .fd-list__byline--wrap .fd-list__byline-left,.fd-list--byline .fd-list__byline--wrap .fd-list__byline-right{display:inline;padding-block:0;padding-inline:0;white-space:normal;width:100%}.fd-list--byline .fd-list__byline--wrap .fd-list__byline-right{float:right;width:auto}.fd-list--byline .fd-list__link--more{pointer-events:all;text-transform:capitalize}.fd-list--byline .fd-list__byline--wrap,.fd-list--byline .fd-list__title--wrap{white-space:normal}.fd-list--byline .fd-list__byline-left{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;line-height:1rem;margin-block:0;margin-inline:0;overflow:hidden;padding-block:0;padding-inline:0;text-overflow:ellipsis;white-space:nowrap;width:60%;-ms-flex-item-align:end;align-self:flex-end;-webkit-padding-end:.5rem;padding-inline-end:.5rem}.fd-list--byline .fd-list__byline-left:after,.fd-list--byline .fd-list__byline-left:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-list--byline .fd-list__byline-right{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;line-height:1rem;margin-block:0;margin-inline:0;overflow:hidden;padding-block:0;padding-inline:0;text-align:right;text-overflow:ellipsis;white-space:nowrap;width:40%;-ms-flex-item-align:end;align-self:flex-end;-webkit-padding-start:.5rem;padding-inline-start:.5rem}.fd-list--byline .fd-list__byline-right:after,.fd-list--byline .fd-list__byline-right:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-list--byline .fd-list__byline-right[dir=rtl],[dir=rtl] .fd-list--byline .fd-list__byline-right{text-align:left}.fd-list--byline .fd-list__byline-right--neutral{color:var(--sapNeutralTextColor)}.fd-list--byline .fd-list__byline-right--positive{color:var(--sapPositiveTextColor)}.fd-list--byline .fd-list__byline-right--critical{color:var(--sapCriticalTextColor)}.fd-list--byline .fd-list__byline-right--negative{color:var(--sapNegativeTextColor)}.fd-list--byline .fd-list__byline-right--informative{color:var(--sapInformativeTextColor)}.fd-list--byline .fd-list__group-header{height:var(--sapElement_LineHeight);max-height:var(--sapElement_LineHeight);min-height:var(--sapElement_LineHeight)}.fd-list--byline.fd-list--unread-indicator .fd-list__item{padding-inline:2.125rem 1rem}.fd-list--byline[class*=-compact] .fd-list__title,.fd-list--byline[class*=-condensed] .fd-list__title,[class*=-compact] .fd-list--byline:not([class*=-cozy]) .fd-list__title,[class*=-condensed] .fd-list--byline:not([class*=-cozy]) .fd-list__title{font-size:var(--sapFontSize)}.fd-list--byline.fd-list--no-border .fd-list__item{height:100%;max-height:5rem;padding-block:.5rem}.fd-list--byline.fd-list--no-border .fd-list__item:first-child{-webkit-padding-before:.9375rem;padding-block-start:.9375rem}.fd-list--byline.fd-list--no-border .fd-list__item:last-child{-webkit-padding-after:.9375rem;padding-block-end:.9375rem}.fd-upload-collection .fd-upload-collection__item{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.fd-upload-collection .fd-upload-collection__item--interactive .fd-upload-collection__thumbnail{color:var(--sapContent_IconColor)}.fd-upload-collection__thumbnail{-ms-flex-item-align:start;align-self:flex-start}.fd-upload-collection__button-group{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-margin-start:1rem;margin-inline-start:1rem}.fd-upload-collection__button-group:after,.fd-upload-collection__button-group:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-upload-collection__button-group button{-webkit-margin-start:.125rem;margin-inline-start:.125rem}.fd-upload-collection__title-container{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.fd-upload-collection__title-container:after,.fd-upload-collection__title-container:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-upload-collection__title-container .fd-upload-collection__title{-webkit-box-flex:0;-ms-flex:none;flex:none;-ms-flex-negative:1;flex-shrink:1}.fd-upload-collection .fd-upload-collection__title-container .fd-upload-collection__title{-webkit-margin-end:.5rem;margin-inline-end:.5rem}.fd-upload-collection__description,.fd-upload-collection__extension,.fd-upload-collection__status-group{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;line-height:1rem;margin-block:0;margin-inline:0;overflow:hidden;padding-block:0;padding-inline:0;text-overflow:ellipsis;white-space:nowrap}.fd-upload-collection__description:after,.fd-upload-collection__description:before,.fd-upload-collection__extension:after,.fd-upload-collection__extension:before,.fd-upload-collection__status-group:after,.fd-upload-collection__status-group:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-upload-collection__description{-webkit-padding-before:.625rem;padding-block-start:.625rem}.fd-upload-collection .fd-upload-collection__status-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;margin-top:.375rem}.fd-upload-collection .fd-upload-collection__status-group-item{margin-inline:.25rem;-ms-flex-negative:1;flex-shrink:1;min-width:0}.fd-upload-collection .fd-upload-collection__status-group-item:first-child{margin-inline:0 .25rem}.fd-upload-collection .fd-upload-collection__status-group-item-text{line-height:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fd-upload-collection__extension{-webkit-margin-start:.375rem;display:inline-block;margin-inline-start:.375rem}.fd-upload-collection__text-separator:before{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);content:\"\\2022\";font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;line-height:1;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-upload-collection__text-separator:before:after,.fd-upload-collection__text-separator:before:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-upload-collection__form-item{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-upload-collection__form-item:after,.fd-upload-collection__form-item:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-upload-collection__form-item input{width:60%}.fd-upload-collection--sm .fd-upload-collection__item{-ms-flex-wrap:wrap;flex-wrap:wrap}.fd-upload-collection--sm .fd-upload-collection__button-group{margin-inline:0;-ms-flex-preferred-size:100%;flex-basis:100%;margin-top:.75rem}.fd-upload-collection--sm .fd-upload-collection__button-group button:not(:first-child){-webkit-margin-start:.5rem;margin-inline-start:.5rem}.fd-upload-collection--sm .fd-upload-collection__form-item input{width:75%}\n/*! Bundled license information:\n\nfundamental-styles/dist/upload-collection.css:\n (*!\n * Fundamental Library Styles v0.40.1\n * Copyright (c) 2025 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *)\n*/\n"], dependencies: [{ kind: "component", type: ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "subline", "theme", "unreadIndicator", "role", "settingsList", "settingsListFooter"], outputs: ["focusEscapeList"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
441
+ </ul>`, isInline: true, styles: ["@charset \"UTF-8\";:root{--fdList_Item_Background_Color:var(--sapList_Background);--fdList_Item_Text_Color:var(--sapList_TextColor);--fdList_Item_Border_Color:var(--sapList_BorderColor);--fdList_Item_Text_Font_Size:var(--sapFontLargeSize);--fdList_Item_Icon_Font_Size:1.125rem;--fdList_Item_Height:var(--sapElement_LineHeight);--fdList_Status_Text_Color:var(--sapNeutralTextColor);--fdList_Message_Background_Color:var(--sapNeutralBackground)}.fd-list--byline .fd-list__item{height:auto;min-height:5rem;padding-block:.9375rem;padding-inline:1rem;width:100%;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.fd-list--byline .fd-list__item.is-focus,.fd-list--byline .fd-list__item:focus{pointer-events:all;z-index:5}.fd-list--byline .fd-list__item .fd-list__item-counter{-ms-flex-align:center;-ms-flex-item-align:center;align-self:center;-webkit-box-pack:end;-ms-flex-pack:end;height:100%;justify-content:flex-end;min-width:2rem}.fd-list--byline .fd-list__item .fd-list__item-counter,.fd-list--byline .fd-list__thumbnail{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;align-items:center}.fd-list--byline .fd-list__thumbnail{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;pointer-events:none;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;-webkit-margin-end:.75rem;border-radius:.25rem;color:var(--sapContent_NonInteractiveIconColor);font-size:2rem;height:3rem;margin-inline-end:.75rem;max-height:3rem;max-width:3rem;min-height:3rem;min-width:3rem;width:3rem}.fd-list--byline .fd-list__thumbnail:after,.fd-list--byline .fd-list__thumbnail:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-list--byline .fd-list__thumbnail [class*=sap-icon],.fd-list--byline .fd-list__thumbnail[class*=sap-icon]{background:inherit;border-radius:inherit;color:inherit;font-size:inherit;line-height:1}.fd-list--byline .fd-list__thumbnail>svg{height:100%}.fd-list--byline .fd-list__notification{color:var(--sapAccentColor6);font-size:.375rem;left:1rem;position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.fd-list--byline .fd-list__notification[dir=rtl],[dir=rtl] .fd-list--byline .fd-list__notification{left:auto;right:1rem}.fd-list--byline .fd-list__notification+.fd-list__link .fd-list__content .fd-list__title,.fd-list--byline .fd-list__notification~.fd-list__content .fd-list__title{font-weight:700}.fd-list--byline .fd-list__content{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;pointer-events:none;-ms-flex-line-pack:justify;align-content:space-between;height:100%;min-height:3rem;min-width:3rem;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding-block:.125rem;padding-inline:0}.fd-list--byline .fd-list__content:after,.fd-list--byline .fd-list__content:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-list--byline .fd-list__title{font-size:var(--sapFontLargeSize);min-height:1rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fd-list--byline .fd-list__byline{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;line-height:1rem;margin-block:0;margin-inline:0;overflow:hidden;padding-block:0;padding-inline:0;text-overflow:ellipsis;white-space:nowrap;-webkit-padding-before:.5rem;padding-block-start:.5rem}.fd-list--byline .fd-list__byline:after,.fd-list--byline .fd-list__byline:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-list--byline .fd-list__byline--2-col{display:-webkit-box;display:-ms-flexbox;display:flex;pointer-events:all}.fd-list--byline .fd-list__byline--wrap .fd-list__byline-left,.fd-list--byline .fd-list__byline--wrap .fd-list__byline-right{display:inline;padding-block:0;padding-inline:0;white-space:normal;width:100%}.fd-list--byline .fd-list__byline--wrap .fd-list__byline-right{float:right;width:auto}.fd-list--byline .fd-list__link--more{pointer-events:all;text-transform:capitalize}.fd-list--byline .fd-list__byline--wrap,.fd-list--byline .fd-list__title--wrap{white-space:normal}.fd-list--byline .fd-list__byline-left{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;line-height:1rem;margin-block:0;margin-inline:0;overflow:hidden;padding-block:0;padding-inline:0;text-overflow:ellipsis;white-space:nowrap;width:60%;-ms-flex-item-align:end;align-self:flex-end;-webkit-padding-end:.5rem;padding-inline-end:.5rem}.fd-list--byline .fd-list__byline-left:after,.fd-list--byline .fd-list__byline-left:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-list--byline .fd-list__byline-right{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;line-height:1rem;margin-block:0;margin-inline:0;overflow:hidden;padding-block:0;padding-inline:0;text-align:right;text-overflow:ellipsis;white-space:nowrap;width:40%;-ms-flex-item-align:end;align-self:flex-end;-webkit-padding-start:.5rem;padding-inline-start:.5rem}.fd-list--byline .fd-list__byline-right:after,.fd-list--byline .fd-list__byline-right:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-list--byline .fd-list__byline-right[dir=rtl],[dir=rtl] .fd-list--byline .fd-list__byline-right{text-align:left}.fd-list--byline .fd-list__byline-right--neutral{color:var(--sapNeutralTextColor)}.fd-list--byline .fd-list__byline-right--positive{color:var(--sapPositiveTextColor)}.fd-list--byline .fd-list__byline-right--critical{color:var(--sapCriticalTextColor)}.fd-list--byline .fd-list__byline-right--negative{color:var(--sapNegativeTextColor)}.fd-list--byline .fd-list__byline-right--informative{color:var(--sapInformativeTextColor)}.fd-list--byline .fd-list__group-header{height:var(--sapElement_LineHeight);max-height:var(--sapElement_LineHeight);min-height:var(--sapElement_LineHeight)}.fd-list--byline.fd-list--unread-indicator .fd-list__item{padding-inline:2.125rem 1rem}.fd-list--byline[class*=-compact] .fd-list__title,.fd-list--byline[class*=-condensed] .fd-list__title,[class*=-compact] .fd-list--byline:not([class*=-cozy]) .fd-list__title,[class*=-condensed] .fd-list--byline:not([class*=-cozy]) .fd-list__title{font-size:var(--sapFontSize)}.fd-list--byline.fd-list--no-border .fd-list__item{height:100%;max-height:5rem;padding-block:.5rem}.fd-list--byline.fd-list--no-border .fd-list__item:first-child{-webkit-padding-before:.9375rem;padding-block-start:.9375rem}.fd-list--byline.fd-list--no-border .fd-list__item:last-child{-webkit-padding-after:.9375rem;padding-block-end:.9375rem}.fd-upload-collection .fd-upload-collection__item{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.fd-upload-collection .fd-upload-collection__item--interactive .fd-upload-collection__thumbnail{color:var(--sapContent_IconColor)}.fd-upload-collection__thumbnail{-ms-flex-item-align:start;align-self:flex-start}.fd-upload-collection__button-group{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-margin-start:1rem;margin-inline-start:1rem}.fd-upload-collection__button-group:after,.fd-upload-collection__button-group:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-upload-collection__button-group button{-webkit-margin-start:.125rem;margin-inline-start:.125rem}.fd-upload-collection__title-container{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.fd-upload-collection__title-container:after,.fd-upload-collection__title-container:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-upload-collection__title-container .fd-upload-collection__title{-webkit-box-flex:0;-ms-flex:none;flex:none;-ms-flex-negative:1;flex-shrink:1}.fd-upload-collection .fd-upload-collection__title-container .fd-upload-collection__title{-webkit-margin-end:.5rem;margin-inline-end:.5rem}.fd-upload-collection__description,.fd-upload-collection__extension,.fd-upload-collection__status-group{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;line-height:1rem;margin-block:0;margin-inline:0;overflow:hidden;padding-block:0;padding-inline:0;text-overflow:ellipsis;white-space:nowrap}.fd-upload-collection__description:after,.fd-upload-collection__description:before,.fd-upload-collection__extension:after,.fd-upload-collection__extension:before,.fd-upload-collection__status-group:after,.fd-upload-collection__status-group:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-upload-collection__description{-webkit-padding-before:.625rem;padding-block-start:.625rem}.fd-upload-collection .fd-upload-collection__status-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;margin-top:.375rem}.fd-upload-collection .fd-upload-collection__status-group-item{margin-inline:.25rem;-ms-flex-negative:1;flex-shrink:1;min-width:0}.fd-upload-collection .fd-upload-collection__status-group-item:first-child{margin-inline:0 .25rem}.fd-upload-collection .fd-upload-collection__status-group-item-text{line-height:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fd-upload-collection__extension{-webkit-margin-start:.375rem;display:inline-block;margin-inline-start:.375rem}.fd-upload-collection__text-separator:before{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);content:\"\\2022\";font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;line-height:1;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-upload-collection__text-separator:before:after,.fd-upload-collection__text-separator:before:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-upload-collection__form-item{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-upload-collection__form-item:after,.fd-upload-collection__form-item:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-upload-collection__form-item input{width:60%}.fd-upload-collection--sm .fd-upload-collection__item{-ms-flex-wrap:wrap;flex-wrap:wrap}.fd-upload-collection--sm .fd-upload-collection__button-group{margin-inline:0;-ms-flex-preferred-size:100%;flex-basis:100%;margin-top:.75rem}.fd-upload-collection--sm .fd-upload-collection__button-group button:not(:first-child){-webkit-margin-start:.5rem;margin-inline-start:.5rem}.fd-upload-collection--sm .fd-upload-collection__form-item input{width:75%}\n/*! Bundled license information:\n\nfundamental-styles/dist/upload-collection.css:\n (*!\n * Fundamental Library Styles v0.40.1\n * Copyright (c) 2025 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *)\n*/\n"], dependencies: [{ kind: "component", type: ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "subline", "theme", "unreadIndicator", "role", "settingsList", "settingsListFooter", "searchResultsList"], outputs: ["focusEscapeList"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
442
442
  }
443
443
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: UploadCollectionComponent, decorators: [{
444
444
  type: Component,