@eui/ecl 22.0.0-alpha.40 → 22.0.0-alpha.42

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 (215) hide show
  1. package/docs/changelog.html +140 -0
  2. package/docs/components/EclAccordionSummaryComponent.html +1 -1
  3. package/docs/components/EclAddToCalendarComponent.html +1 -1
  4. package/docs/components/EclAnimatedNumbersComponent.html +1 -1
  5. package/docs/components/EclAnimatedNumbersItemComponent.html +1 -1
  6. package/docs/components/EclAppComponent.html +1 -1
  7. package/docs/components/EclBannerComponent.html +1 -1
  8. package/docs/components/EclBlockquoteComponent.html +1 -1
  9. package/docs/components/EclBreadcrumbComponent.html +1 -1
  10. package/docs/components/EclBreadcrumbSegmentComponent.html +1 -14
  11. package/docs/components/EclButtonComponent.html +1 -1
  12. package/docs/components/EclCardBodyComponent.html +1 -1
  13. package/docs/components/EclCardComponent.html +1 -1
  14. package/docs/components/EclCarouselComponent.html +1 -1
  15. package/docs/components/EclCarouselItemComponent.html +59 -64
  16. package/docs/components/EclCategoryFilterComponent.html +1 -1
  17. package/docs/components/EclCategoryFilterItemComponent.html +179 -135
  18. package/docs/components/EclCategoryFilterListComponent.html +9 -2
  19. package/docs/components/EclCheckboxHelpComponent.html +90 -84
  20. package/docs/components/EclCheckboxLabelComponent.html +127 -143
  21. package/docs/components/EclContentBlockComponent.html +1 -1
  22. package/docs/components/EclContentItemComponent.html +1 -1
  23. package/docs/components/EclDateBlockComponent.html +68 -132
  24. package/docs/components/EclDescriptionListDefinitionComponent.html +1 -1
  25. package/docs/components/EclExpandableComponent.html +1 -1
  26. package/docs/components/EclFactFiguresComponent.html +1 -1
  27. package/docs/components/EclFactFiguresItemComponent.html +1 -1
  28. package/docs/components/EclFactFiguresViewAllComponent.html +1 -1
  29. package/docs/components/EclFeaturedComponent.html +24 -142
  30. package/docs/components/EclFeaturedItemComponent.html +5 -86
  31. package/docs/components/EclFeaturedItemDescriptionComponent.html +5 -105
  32. package/docs/components/EclFileComponent.html +1 -1
  33. package/docs/components/EclFileItemComponent.html +1 -1
  34. package/docs/components/EclFileItemsComponent.html +1 -1
  35. package/docs/components/EclFileListsComponent.html +1 -1
  36. package/docs/components/EclFormGroupComponent.html +1 -1
  37. package/docs/components/EclFormLabelComponent.html +1 -1
  38. package/docs/components/EclGalleryComponent.html +1 -1
  39. package/docs/components/EclGalleryFooterComponent.html +1 -1
  40. package/docs/components/EclGalleryItemComponent.html +1 -1
  41. package/docs/components/EclHighlightBoxComponent.html +1 -1
  42. package/docs/components/EclHighlightedSearchComponent.html +1 -1
  43. package/docs/components/EclIconComponent.html +1 -1
  44. package/docs/components/EclIndicatorComponent.html +1 -1
  45. package/docs/components/EclInpageNavigationComponent.html +1 -1
  46. package/docs/components/EclInpageNavigationItemComponent.html +1 -1
  47. package/docs/components/EclLayoutWrapperComponent.html +3 -3
  48. package/docs/components/EclListIllustrationComponent.html +1 -1
  49. package/docs/components/EclListIllustrationItemComponent.html +1 -1
  50. package/docs/components/EclLoadingIndicatorComponent.html +1 -1
  51. package/docs/components/EclMediaContainerComponent.html +1 -1
  52. package/docs/components/EclMegaMenuComponent.html +1 -1
  53. package/docs/components/EclMegaMenuFeaturedComponent.html +1 -1
  54. package/docs/components/EclMegaMenuInfoComponent.html +1 -1
  55. package/docs/components/EclMegaMenuItemComponent.html +1 -1
  56. package/docs/components/EclMegaMenuSubitemComponent.html +1 -1
  57. package/docs/components/EclMenuComponent.html +1 -1
  58. package/docs/components/EclMenuItemComponent.html +1 -1
  59. package/docs/components/EclMenuMegaComponent.html +1 -1
  60. package/docs/components/EclMenuMegaItemComponent.html +1 -1
  61. package/docs/components/EclModalBodyComponent.html +1 -1
  62. package/docs/components/EclModalComponent.html +1 -1
  63. package/docs/components/EclModalFooterComponent.html +1 -1
  64. package/docs/components/EclModalHeaderComponent.html +1 -1
  65. package/docs/components/EclMultiselectComponent.html +1 -1
  66. package/docs/components/EclMultiselectDropdownComponent.html +1 -1
  67. package/docs/components/EclMultiselectInputComponent.html +1 -1
  68. package/docs/components/EclMultiselectOptgroupComponent.html +1 -1
  69. package/docs/components/EclMultiselectOptionComponent.html +1 -1
  70. package/docs/components/EclNavigationListComponent.html +1 -1
  71. package/docs/components/EclNavigationListItemComponent.html +1 -1
  72. package/docs/components/EclNewsTickerComponent.html +1 -1
  73. package/docs/components/EclNewsTickerItemComponent.html +1 -1
  74. package/docs/components/EclNotificationComponent.html +1 -1
  75. package/docs/components/EclPageHeaderComponent.html +1 -1
  76. package/docs/components/EclPageHeaderDescriptionContainerComponent.html +1 -1
  77. package/docs/components/EclPageHeaderExpandableComponent.html +1 -1
  78. package/docs/components/EclPageHeaderSectionComponent.html +1 -1
  79. package/docs/components/EclPageHeaderSectionInfoComponent.html +1 -1
  80. package/docs/components/EclPageSummaryComponent.html +1 -1
  81. package/docs/components/EclPaginationComponent.html +1 -1
  82. package/docs/components/EclPaginationItemComponent.html +1 -1
  83. package/docs/components/EclPopoverComponent.html +1 -1
  84. package/docs/components/EclQuizCardComponent.html +1 -1
  85. package/docs/components/EclQuizComponent.html +1 -1
  86. package/docs/components/EclRadioHelpComponent.html +1 -1
  87. package/docs/components/EclRadioLabelComponent.html +1 -1
  88. package/docs/components/EclRangeBubbleComponent.html +1 -1
  89. package/docs/components/EclRangeValueComponent.html +1 -1
  90. package/docs/components/EclRatingFieldComponent.html +1 -1
  91. package/docs/components/EclSearchFormComponent.html +1 -1
  92. package/docs/components/EclSelectContainerComponent.html +1 -1
  93. package/docs/components/EclSiteFooterComponent.html +1 -1
  94. package/docs/components/EclSiteFooterCoownerComponent.html +1 -1
  95. package/docs/components/EclSiteFooterCoreComponent.html +1 -1
  96. package/docs/components/EclSiteFooterFeedbackComponent.html +1 -1
  97. package/docs/components/EclSiteFooterFixedContentEUComponent.html +1 -1
  98. package/docs/components/EclSiteFooterRowCommonComponent.html +1 -1
  99. package/docs/components/EclSiteHeaderActionComponent.html +1 -1
  100. package/docs/components/EclSiteHeaderBannerTopComponent.html +1 -1
  101. package/docs/components/EclSiteHeaderComponent.html +1 -1
  102. package/docs/components/EclSiteHeaderCustomActionComponent.html +1 -1
  103. package/docs/components/EclSiteHeaderEnvironmentComponent.html +1 -1
  104. package/docs/components/EclSiteHeaderLanguageComponent.html +1 -1
  105. package/docs/components/EclSiteHeaderLanguagePopoverComponent.html +1 -1
  106. package/docs/components/EclSiteHeaderLoginComponent.html +1 -1
  107. package/docs/components/EclSiteHeaderNotificationComponent.html +1 -1
  108. package/docs/components/EclSiteHeaderSearchComponent.html +1 -1
  109. package/docs/components/EclSloganTickerComponent.html +1 -1
  110. package/docs/components/EclSocialMediaFollowComponent.html +1 -1
  111. package/docs/components/EclSocialMediaFollowItemComponent.html +1 -1
  112. package/docs/components/EclSplashPageComponent.html +1 -1
  113. package/docs/components/EclSplashPageLanguageCategoryComponent.html +1 -1
  114. package/docs/components/EclSplashPageLanguageContainerComponent.html +1 -1
  115. package/docs/components/EclSplashPageLanguageLinkComponent.html +1 -1
  116. package/docs/components/EclSpotlightComponent.html +1 -1
  117. package/docs/components/EclSpotlightLinkComponent.html +1 -1
  118. package/docs/components/EclStickyContainerComponent.html +1 -1
  119. package/docs/components/EclStoryCardComponent.html +1 -1
  120. package/docs/components/EclStoryCardGridDetailsComponent.html +1 -1
  121. package/docs/components/EclStoryCardItemComponent.html +1 -1
  122. package/docs/components/EclTabComponent.html +1 -1
  123. package/docs/components/EclTabLabelComponent.html +1 -1
  124. package/docs/components/EclTableSortButtonComponent.html +1 -1
  125. package/docs/components/EclTabsComponent.html +1 -1
  126. package/docs/components/EclTagComponent.html +47 -107
  127. package/docs/components/EclTextMediaComponent.html +45 -30
  128. package/docs/components/EclTimelineComponent.html +2 -221
  129. package/docs/components/EclTimelineItemComponent.html +41 -443
  130. package/docs/components/EclTimelineItemTogglerComponent.html +7 -97
  131. package/docs/directives/ECLBaseDirective.html +0 -4
  132. package/docs/directives/EclCheckboxDirective.html +119 -94
  133. package/docs/directives/EclCheckboxInputDirective.html +33 -90
  134. package/docs/directives/EclFeaturedItemLinkDirective.html +14 -153
  135. package/docs/directives/EclLayoutWrapperViewAllDirective.html +2 -2
  136. package/docs/directives/EclTextAreaDirective.html +53 -100
  137. package/docs/directives/EclTextInputDirective.html +47 -144
  138. package/docs/directives/EclTimelineItemLabelDirective.html +0 -46
  139. package/docs/directives/EclTimelineItemTitleDirective.html +0 -46
  140. package/docs/directives/EclTimelineSetDirective.html +0 -104
  141. package/docs/directives/EclTooltipDirective.html +4 -157
  142. package/docs/interfaces/EclCarouselItem.html +6 -6
  143. package/docs/interfaces/EclCategoryFilterItem.html +6 -6
  144. package/docs/js/search/search_index.js +2 -2
  145. package/docs/json/EclCarouselItemComponent.md +1 -1
  146. package/docs/json/EclCategoryFilterItemComponent.md +2 -2
  147. package/docs/json/EclCheckboxDirective.md +2 -2
  148. package/docs/json/EclCheckboxHelpComponent.md +1 -1
  149. package/docs/json/EclCheckboxLabelComponent.md +0 -2
  150. package/docs/json/EclDateBlockComponent.md +1 -1
  151. package/docs/json/EclFeaturedItemLinkDirective.md +0 -1
  152. package/docs/json/EclLayoutWrapperComponent.md +1 -1
  153. package/docs/json/EclLayoutWrapperViewAllDirective.md +1 -1
  154. package/docs/json/EclTimelineComponent.md +1 -1
  155. package/docs/json/EclTimelineItemComponent.md +4 -4
  156. package/docs/json/EclTimelineItemTogglerComponent.md +2 -2
  157. package/docs/json/documentation.json +2468 -3078
  158. package/docs/llms.txt +60 -52
  159. package/docs/properties.html +1 -1
  160. package/fesm2022/eui-ecl-components-ecl-breadcrumb.mjs +7 -11
  161. package/fesm2022/eui-ecl-components-ecl-breadcrumb.mjs.map +1 -1
  162. package/fesm2022/eui-ecl-components-ecl-carousel.mjs +39 -24
  163. package/fesm2022/eui-ecl-components-ecl-carousel.mjs.map +1 -1
  164. package/fesm2022/eui-ecl-components-ecl-category-filter.mjs +68 -59
  165. package/fesm2022/eui-ecl-components-ecl-category-filter.mjs.map +1 -1
  166. package/fesm2022/eui-ecl-components-ecl-checkbox.mjs +92 -96
  167. package/fesm2022/eui-ecl-components-ecl-checkbox.mjs.map +1 -1
  168. package/fesm2022/eui-ecl-components-ecl-date-block.mjs +18 -26
  169. package/fesm2022/eui-ecl-components-ecl-date-block.mjs.map +1 -1
  170. package/fesm2022/eui-ecl-components-ecl-featured.mjs +42 -59
  171. package/fesm2022/eui-ecl-components-ecl-featured.mjs.map +1 -1
  172. package/fesm2022/eui-ecl-components-ecl-layout-wrapper.mjs +2 -2
  173. package/fesm2022/eui-ecl-components-ecl-layout-wrapper.mjs.map +1 -1
  174. package/fesm2022/eui-ecl-components-ecl-multiselect.mjs +2 -2
  175. package/fesm2022/eui-ecl-components-ecl-multiselect.mjs.map +1 -1
  176. package/fesm2022/eui-ecl-components-ecl-tag.mjs +19 -22
  177. package/fesm2022/eui-ecl-components-ecl-tag.mjs.map +1 -1
  178. package/fesm2022/eui-ecl-components-ecl-text-area.mjs +16 -17
  179. package/fesm2022/eui-ecl-components-ecl-text-area.mjs.map +1 -1
  180. package/fesm2022/eui-ecl-components-ecl-text-input.mjs +14 -17
  181. package/fesm2022/eui-ecl-components-ecl-text-input.mjs.map +1 -1
  182. package/fesm2022/eui-ecl-components-ecl-text-media.mjs +10 -9
  183. package/fesm2022/eui-ecl-components-ecl-text-media.mjs.map +1 -1
  184. package/fesm2022/eui-ecl-components-ecl-timeline.mjs +132 -133
  185. package/fesm2022/eui-ecl-components-ecl-timeline.mjs.map +1 -1
  186. package/fesm2022/eui-ecl-components-ecl-tooltip.mjs +8 -14
  187. package/fesm2022/eui-ecl-components-ecl-tooltip.mjs.map +1 -1
  188. package/fesm2022/eui-ecl-core.mjs +0 -1
  189. package/fesm2022/eui-ecl-core.mjs.map +1 -1
  190. package/package.json +1 -1
  191. package/types/eui-ecl-components-ecl-breadcrumb.d.ts +0 -1
  192. package/types/eui-ecl-components-ecl-breadcrumb.d.ts.map +1 -1
  193. package/types/eui-ecl-components-ecl-carousel.d.ts +16 -11
  194. package/types/eui-ecl-components-ecl-carousel.d.ts.map +1 -1
  195. package/types/eui-ecl-components-ecl-category-filter.d.ts +28 -18
  196. package/types/eui-ecl-components-ecl-category-filter.d.ts.map +1 -1
  197. package/types/eui-ecl-components-ecl-checkbox.d.ts +49 -34
  198. package/types/eui-ecl-components-ecl-checkbox.d.ts.map +1 -1
  199. package/types/eui-ecl-components-ecl-date-block.d.ts +9 -7
  200. package/types/eui-ecl-components-ecl-date-block.d.ts.map +1 -1
  201. package/types/eui-ecl-components-ecl-featured.d.ts +7 -9
  202. package/types/eui-ecl-components-ecl-featured.d.ts.map +1 -1
  203. package/types/eui-ecl-components-ecl-layout-wrapper.d.ts +2 -2
  204. package/types/eui-ecl-components-ecl-tag.d.ts +2 -3
  205. package/types/eui-ecl-components-ecl-tag.d.ts.map +1 -1
  206. package/types/eui-ecl-components-ecl-text-area.d.ts +2 -2
  207. package/types/eui-ecl-components-ecl-text-area.d.ts.map +1 -1
  208. package/types/eui-ecl-components-ecl-text-input.d.ts +3 -3
  209. package/types/eui-ecl-components-ecl-text-input.d.ts.map +1 -1
  210. package/types/eui-ecl-components-ecl-text-media.d.ts +1 -1
  211. package/types/eui-ecl-components-ecl-text-media.d.ts.map +1 -1
  212. package/types/eui-ecl-components-ecl-timeline.d.ts +65 -50
  213. package/types/eui-ecl-components-ecl-timeline.d.ts.map +1 -1
  214. package/types/eui-ecl-components-ecl-tooltip.d.ts.map +1 -1
  215. package/types/eui-ecl-core.d.ts.map +1 -1
package/docs/llms.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  # eui documentation
2
2
 
3
- > Generated by compodoc 2.0.0 at 2026-10-06T17:13:34.755Z, llm-md export.
3
+ > Generated by compodoc 2.0.0 at 2026-10-08T20:04:09.221Z, llm-md export.
4
4
 
5
5
  ## Modules
6
6
 
@@ -377,7 +377,7 @@ Description: Represents a single item (slide) within the ECL Carousel. Each slid
377
377
 
378
378
  Inputs:
379
379
  - `id: string` — The unique identifier of the slide.
380
- - `isCurrent: boolean = false` — Indicates whether this slide is currently active/visible. Automatically coerced to a boolean value.
380
+ - `isCurrent: boolean = false` — Input controlling whether this slide starts as the active/visible one. Automatically coerced to a boolean value.
381
381
  - `class: string = ''`
382
382
  - `e2eAttr: string`
383
383
  - `tabindex = undefined`
@@ -387,10 +387,11 @@ Outputs:
387
387
  - `class: string = ''`
388
388
 
389
389
  Properties:
390
- - `ariaLabel: string` — The aria-label for the slide, assigned dynamically by the carousel.
390
+ - `ariaLabel: unknown = signal<string | undefined>(undefined)` — The aria-label for the slide, assigned dynamically by the carousel.
391
391
  - `banner: unknown = contentChild(forwardRef(() => EclBannerComponent))` — Optionally captures a banner component projected into the slide.
392
392
  - `el: unknown = inject(ElementRef)`
393
- - `index: number` — Internal slide index, assigned dynamically by the carousel.
393
+ - `index: unknown = signal<number | undefined>(undefined)` — Internal slide index, assigned dynamically by the carousel.
394
+ - `isCurrent: unknown = linkedSignal(() => this.isCurrentInput())` — Indicates whether this slide is currently active/visible. Seeded from the isCurrent input but can be updated imperatively by the parent carousel as the user navigates between slides.
394
395
 
395
396
  Methods:
396
397
  - `onSlideClick(): void` — Handles click events on the slide and emits a slideClick event.
@@ -424,21 +425,25 @@ File: `packages/ecl/components/ecl-category-filter/ecl-category-filter-list/ecl-
424
425
  Selector: `ecl-category-filter-item`
425
426
 
426
427
  Inputs:
427
- - `id: string` — Unique identifier for the item. Used to manage selection state.
428
428
  - `href: string = undefined` — Link URL associated with this category filter item. If not provided, the item acts as a toggle only.
429
+ - `id: string = undefined` — Input for the unique identifier of the item. When omitted, the parent assigns a generated fallback id.
429
430
  - `class: string = ''`
430
431
  - `e2eAttr: string`
431
432
  - `tabindex = undefined`
432
433
 
433
434
  Outputs:
434
- - `itemSelect: EventEmitter = new EventEmitter<EclCategoryFilterItemSelectEvent>()` — Emits when the item is selected by the user (clicked).
435
+ - `itemSelect: EclCategoryFilterItemSelectEvent` — Emits when the item is selected by the user (clicked).
435
436
  - `class: string = ''`
436
437
 
437
438
  Properties:
438
439
  - `eclCategoryList: unknown = contentChild(forwardRef(() => EclCategoryFilterListComponent))` — Child list component if the item has nested children.
440
+ - `id: unknown = computed(() => this.idInput() ?? this.fallbackId())` — Unique identifier for the item. Used to manage selection state. Resolves to the id input when provided, otherwise the parent-assigned fallback.
441
+ - `isCurrent: unknown = signal(false)` — Whether the item is currently selected. Writable so that the parent can update selection as the user navigates.
442
+ - `isExpanded: unknown = signal(false)` — Whether the item is currently expanded (open). Writable so that the parent can toggle it as the tree state changes.
439
443
 
440
444
  Methods:
441
445
  - `onItemClick(evt: MouseEvent): void` — Handles user click interaction, updates state and emits selection event. Prevents navigation if no href is defined.
446
+ - `setFallbackId(id: string): void` — Assigns a fallback id. Used by the parent category filter when no id input was provided.
442
447
  - `getCssClasses(rootClass: string): string`
443
448
 
444
449
  ### EclCategoryFilterListComponent
@@ -456,7 +461,7 @@ Outputs:
456
461
 
457
462
  Properties:
458
463
  - `eclCategoryFilterItems: unknown = contentChildren<EclCategoryFilterItemComponent>(forwardRef(() => EclCategoryFilterItemComponent))` — List of all category filter items projected inside this list.
459
- - `id: string` — ID of this list element, referenced by the parent item's aria-controls.
464
+ - `id: unknown = signal<string | undefined>(undefined)` — ID of this list element, referenced by the parent item's aria-controls.
460
465
 
461
466
  Methods:
462
467
  - `updateChildrenItemsLevel(value: number): void` — Propagates the current level to all direct children items.
@@ -470,7 +475,7 @@ Selector: `[eclCheckboxHelp]`
470
475
  Description: Displays help text associated with a checkbox.
471
476
 
472
477
  Inputs:
473
- - `isDisabled: boolean = false` — Indicates whether the help text is disabled (e.g. visually muted).
478
+ - `isDisabled: boolean = false` — Input controlling whether the help text starts in a disabled (visually muted) state.
474
479
  - `class: string = ''`
475
480
  - `e2eAttr: string`
476
481
  - `tabindex = undefined`
@@ -478,6 +483,10 @@ Inputs:
478
483
  Outputs:
479
484
  - `class: string = ''`
480
485
 
486
+ Properties:
487
+ - `cssClasses: unknown = computed(() => super.getCssClasses('ecl-checkbox__help'))` — Applies base CSS classes for checkbox help.
488
+ - `isDisabled: unknown = linkedSignal(() => this.isDisabledInput())` — Indicates whether the help text is disabled (e.g. visually muted). Seeded from the isDisabled input but can be updated imperatively by the parent checkbox directive.
489
+
481
490
  Methods:
482
491
  - `getCssClasses(rootClass: string): string`
483
492
 
@@ -489,8 +498,6 @@ Selector: `label[eclCheckboxLabel]`
489
498
  Description: Label component for a checkbox, supporting state styles.
490
499
 
491
500
  Inputs:
492
- - `isDisabled: boolean = false` — Indicates whether the checkbox is disabled.
493
- - `isInvalid: boolean = false` — Indicates whether the checkbox is in an invalid state.
494
501
  - `isRequired: boolean = false` — Indicates whether the checkbox is required.
495
502
  - `class: string = ''`
496
503
  - `e2eAttr: string`
@@ -499,6 +506,11 @@ Inputs:
499
506
  Outputs:
500
507
  - `class: string = ''`
501
508
 
509
+ Properties:
510
+ - `cssClasses: unknown = computed(() => super.getCssClasses('ecl-checkbox__label'))` — Applies base CSS classes for checkbox label.
511
+ - `isDisabled: unknown = signal(false)` — Indicates whether the checkbox is disabled. Set imperatively by the parent checkbox directive.
512
+ - `isInvalid: unknown = signal(false)` — Indicates whether the checkbox is in an invalid state. Set imperatively by the parent checkbox directive.
513
+
502
514
  Methods:
503
515
  - `getCssClasses(rootClass: string): string`
504
516
 
@@ -556,9 +568,9 @@ Selector: `time[eclDateBlock]`
556
568
  Description: Component used to display a formatted date in a styled time element. Designed for use within content components such as content blocks or items.
557
569
 
558
570
  Inputs:
559
- - `datetime: string` — Sets the datetime attribute of the \<time\> element. If not provided, it is derived from date and dateFormat .
560
571
  - `date: Date = undefined` — The date to be displayed. If not null, it's used to generate the datetime attribute and visual output.
561
572
  - `dateFormat: string = 'dd/M/yyyy'` — The format to be used when rendering the date string (Angular DatePipe format). Default is 'dd/M/yyyy' .
573
+ - `datetime: string = undefined` — Explicit value for the datetime attribute of the \<time\> element (optional). If not provided, it is derived from date and dateFormat .
562
574
  - `day: string = undefined` — Explicit string for day part of the date (optional). Used when date is not set or overridden manually.
563
575
  - `month: string = undefined` — Explicit string for month part of the date (optional). Used when date is not set or overridden manually.
564
576
  - `monthTitle: string = undefined` — Explicit string used as an accessible or verbose label for the month (optional).
@@ -572,6 +584,7 @@ Outputs:
572
584
  - `class: string = ''`
573
585
 
574
586
  Properties:
587
+ - `datetime: unknown = computed(() => this.datetimeInput() || this.getFormattedDate(this.date(), this.dateFormat()))` — The resolved datetime attribute value. Uses the explicit datetime input when provided, otherwise derives it from date and dateFormat .
575
588
  - `locale: string = 'en'`
576
589
 
577
590
  Methods:
@@ -718,7 +731,7 @@ Outputs:
718
731
  - `class: string = ''`
719
732
 
720
733
  Properties:
721
- - `role: string = 'article'`
734
+ - ``cssClasses: unknown = computed(() => { const variant = this.variant(); return [ super.getCssClasses('ecl-featured-item'), variant ? `ecl-featured-item--${variant}`: '', this.horizont…`` — Adds specific classes to the component.
722
735
 
723
736
  Methods:
724
737
  - `getCssClasses(rootClass: string): string`
@@ -742,7 +755,6 @@ Outputs:
742
755
  - `class: string = ''`
743
756
 
744
757
  Properties:
745
- - `className: unknown = true`
746
758
  - `links: unknown = contentChildren(EclFeaturedItemLinkDirective, { descendants: true })`
747
759
  - `mediaContainer: unknown = contentChild(EclMediaContainerComponent)`
748
760
 
@@ -764,9 +776,6 @@ Inputs:
764
776
  Outputs:
765
777
  - `class: string = ''`
766
778
 
767
- Properties:
768
- - `className: unknown = true`
769
-
770
779
  Methods:
771
780
  - `getCssClasses(rootClass: string): string`
772
781
 
@@ -1200,7 +1209,7 @@ Methods:
1200
1209
  File: `packages/ecl/components/ecl-layout-wrapper/ecl-layout-wrapper.component.ts`
1201
1210
  Selector: `div[eclLayoutWrapper]`
1202
1211
 
1203
- Description: ECL Layout Wrapper component. Arranges projected content into a responsive grid layout with configurable columns. Includes optional title, description, and "view all" link areas. Example : \<div eclLayoutWrapper \[columns\]="3" direction="horizontal"\> \<h2 eclLayoutWrapperTitle\>Heading\</h2\> \<div eclLayoutWrapperDescription\>Description text\</div\> \_\_\_COMPODOC\_EMPTY\_LINE\_\_\_ \<div eclLayoutItem\>\<article eclCard\>...\</article\>\</div\> \<div eclLayoutItem\>\<article eclCard\>...\</article\>\</div\> \<div eclLayoutItem\>\<article eclCard\>...\</article\>\</div\> \_\_\_COMPODOC\_EMPTY\_LINE\_\_\_ \<a eclLayoutWrapperViewAll eclLink \[standalone\]="true" icon="arrow-left"\>View all\</a\> \</div\>
1212
+ Description: ECL Layout Wrapper component. Arranges projected content into a responsive grid layout with configurable columns. Includes optional title, description, and "view all" link areas. Example : \<div eclLayoutWrapper \[columns\]="3" direction="horizontal"\> \<h2 eclLayoutWrapperTitle\>Heading\</h2\> \<div eclLayoutWrapperDescription\>Description text\</div\> \_\_\_COMPODOC\_EMPTY\_LINE\_\_\_ \<div eclLayoutItem\>\<article eclCard\>...\</article\>\</div\> \<div eclLayoutItem\>\<article eclCard\>...\</article\>\</div\> \<div eclLayoutItem\>\<article eclCard\>...\</article\>\</div\> \_\_\_COMPODOC\_EMPTY\_LINE\_\_\_ \<a eclLayoutWrapperViewAll eclLink icon="arrow-left"\>View all\</a\> \</div\>
1204
1213
 
1205
1214
  Inputs:
1206
1215
  - `columns: number = 3` — Number of columns for the grid layout. Accepts 2, 3, or 4. Defaults to 3.
@@ -3359,7 +3368,8 @@ Outputs:
3359
3368
  - `class: string = ''`
3360
3369
 
3361
3370
  Properties:
3362
- - `isVisible: unknown = true`
3371
+ - ``cssClasses: unknown = computed(() => { const variant = this.variant(); return [ super.getCssClasses('ecl-tag'), variant ? `ecl-tag--${variant}` : '', this.isWrapped() ? '' : 'ecl-tag…``
3372
+ - `isVisible: unknown = signal(true)`
3363
3373
  - `title: string = 'dismiss'`
3364
3374
 
3365
3375
  Methods:
@@ -3383,13 +3393,16 @@ Inputs:
3383
3393
  Outputs:
3384
3394
  - `class: string = ''`
3385
3395
 
3396
+ Properties:
3397
+ - `cssClasses: unknown = computed(() => { return [super.getCssClasses('ecl-text-media'), this.variant() === 'primary' ? 'ecl-text-media--primary' : '', this.mediaPosition() === 'left' ?…`
3398
+
3386
3399
  Methods:
3387
3400
  - `getCssClasses(rootClass: string): string`
3388
3401
 
3389
3402
  ### EclTimelineComponent
3390
3403
 
3391
3404
  File: `packages/ecl/components/ecl-timeline/ecl-timeline.component.ts`
3392
- Selector: `ecl-timeline, ol[eclTimeline]`
3405
+ Selector: `ol[eclTimeline]`
3393
3406
 
3394
3407
  Inputs:
3395
3408
  - `class: string = ''`
@@ -3399,25 +3412,20 @@ Inputs:
3399
3412
  Outputs:
3400
3413
  - `class: string = ''`
3401
3414
 
3402
- Properties:
3403
- - `isExpanded: boolean | null = null`
3404
- - `timelineItems: unknown = contentChildren(forwardRef(() => EclTimelineItemComponent))` — List of projected EclTimelineItemComponent instances. Collected using @ContentChildren .
3405
-
3406
3415
  Methods:
3407
- - `onFocusFirstExpandedLink(item: EclTimelineItemComponent): void` — Focuses the first link in the expanded timeline item, ensuring it's only done once per toggle group interaction.
3408
3416
  - `getCssClasses(rootClass: string): string`
3409
3417
 
3410
3418
  ### EclTimelineItemComponent
3411
3419
 
3412
3420
  File: `packages/ecl/components/ecl-timeline/ecl-timeline-item.component.ts`
3413
- Selector: `ecl-timeline-item, li[eclTimelineItem]`
3421
+ Selector: `li[eclTimelineItem]`
3414
3422
 
3415
3423
  Inputs:
3416
3424
  - `collapseLabel: string = 'Collapse'` — Text label shown when the item is expanded and can be collapsed. Defaults to 'Collapse' .
3417
3425
  - `expandLabel: string = 'Expand'` — Text label shown when the item is collapsed and can be expanded. Defaults to 'Expand' .
3418
- - `isCollapsed: boolean = false` — Whether the item is collapsed. Adds the ecl-timeline\_\_item--collapsed CSS class when true.
3426
+ - `isCollapsed: boolean = false` — Whether the item is initially collapsed. Applies the ecl-timeline\_\_item--collapsed CSS class when true.
3419
3427
  - `isHeadline: boolean = false`
3420
- - `isToggler: boolean = false` — Whether the item is a toggler (e.g. expands/collapses related items). Adds the ecl-timeline\_\_item--toggle CSS class when true.
3428
+ - `isToggler: boolean = false` — Whether the item is a toggler (e.g. expands/collapses related items). Applies the ecl-timeline\_\_item--toggle CSS class when true.
3421
3429
  - `isTogglerExpanded: boolean = false` — Indicates whether the toggler is initially expanded. Used for toggler-type items.
3422
3430
  - `toggleGroup: string = undefined` — Name of the toggle group that this item belongs to. Used to coordinate collapsing/expanding related items.
3423
3431
  - `class: string = ''`
@@ -3425,25 +3433,21 @@ Inputs:
3425
3433
  - `tabindex = undefined`
3426
3434
 
3427
3435
  Outputs:
3428
- - `toggle: EventEmitter = new EventEmitter<EclTimelineItemToggleEvent>()` — Event emitted when the toggler is clicked. Consumers can call preventDefault() on the event to cancel toggle behavior.
3429
3436
  - `isTogglerExpanded: boolean = false` — Indicates whether the toggler is initially expanded. Used for toggler-type items.
3437
+ - `toggle: EclTimelineItemToggleEvent` — Event emitted when the toggler is clicked. Consumers can call preventDefault() on the event to cancel toggle behavior.
3430
3438
  - `class: string = ''`
3431
3439
 
3432
3440
  Properties:
3433
- - `eclLink: unknown = contentChild(forwardRef(() => EclLinkDirective))` — Reference to a projected ECL link, used for setting focus after toggle.
3434
- - `eclTimelineItemLabel: unknown = contentChild(forwardRef(() => EclTimelineItemLabelDirective), { read: ElementRef })` — Reference to a projected label for the item. Used to set height, when item has no content and title.
3435
- - `timelineItemToggler: unknown = contentChild(forwardRef(() => EclTimelineItemTogglerComponent))` — Reference to a projected custom toggler component.
3436
- - `timelineTitle: unknown = contentChild(forwardRef(() => EclTimelineItemTitleDirective))`
3441
+ - `eclLink: unknown = contentChild(forwardRef(() => EclLinkDirective))` — Reference to a projected ECL link, used for setting focus after toggle. Read by the parent EclTimelineComponent to move focus after a toggle.
3442
+ - `isCollapsedState: unknown = linkedSignal(() => this.isCollapsed())` — Live collapsed state of the item. Seeded from the isCollapsed input but writable at runtime, so the parent EclTimelineComponent can expand or collapse grouped items in response to a toggler interaction. Resets to the input value if the input changes.
3437
3443
 
3438
3444
  Methods:
3439
- - `hasDefaultToggler(): boolean` — Checks whether the default toggler UI should be used. Returns true if this is a toggler and no custom toggler component is projected.
3440
- - `onTogglerClick(evt: MouseEvent): void` — Handles click events from the default toggler element.
3441
3445
  - `getCssClasses(rootClass: string): string`
3442
3446
 
3443
3447
  ### EclTimelineItemTogglerComponent
3444
3448
 
3445
3449
  File: `packages/ecl/components/ecl-timeline/ecl-timeline-item-toggler.component.ts`
3446
- Selector: `ecl-timeline-item-toggler, li[eclTimelineItemToggler]`
3450
+ Selector: `li[eclTimelineItemToggler]`
3447
3451
 
3448
3452
  Description: Component representing a toggler inside a timeline item. Emits a toggle event when clicked.
3449
3453
 
@@ -3453,11 +3457,10 @@ Inputs:
3453
3457
  - `tabindex = undefined`
3454
3458
 
3455
3459
  Outputs:
3456
- - `toggle: EventEmitter<void> = new EventEmitter()` — Event emitted when the toggler is activated (clicked). Used to trigger expand/collapse behavior in the parent timeline item.
3460
+ - `toggle: void` — Event emitted when the toggler is activated (clicked). Used to trigger expand/collapse behavior in the parent timeline item.
3457
3461
  - `class: string = ''`
3458
3462
 
3459
3463
  Methods:
3460
- - `onTogglerClick(): void` — Handles click events on the toggler element and emits the toggle event.
3461
3464
  - `getCssClasses(rootClass: string): string`
3462
3465
 
3463
3466
  ## Directives
@@ -3729,7 +3732,6 @@ Methods:
3729
3732
 
3730
3733
  File: `packages/ecl/core/ecl-base.directive.ts`
3731
3734
  Selector: `[eclBase]`
3732
- Standalone: yes
3733
3735
 
3734
3736
  Inputs:
3735
3737
  - `class: string = ''`
@@ -3875,8 +3877,8 @@ Selector: `[eclCheckbox]`
3875
3877
  Description: Directive that applies ECL styles and manages state for checkbox groups or standalone checkboxes.
3876
3878
 
3877
3879
  Inputs:
3878
- - `isDisabled: boolean = false` — Indicates whether the checkbox is disabled.
3879
- - `isInvalid: boolean = false` — Indicates whether the checkbox is in an invalid state.
3880
+ - `isDisabled: boolean = false` — Input controlling whether the checkbox starts disabled. Automatically coerced to a boolean value.
3881
+ - `isInvalid: boolean = false` — Input controlling whether the checkbox starts in an invalid state. Automatically coerced to a boolean value.
3880
3882
  - `isSingle: boolean = false` — Indicates whether the checkbox is rendered as a single (standalone) item.
3881
3883
  - `class: string = ''`
3882
3884
  - `e2eAttr: string`
@@ -3886,10 +3888,13 @@ Outputs:
3886
3888
  - `class: string = ''`
3887
3889
 
3888
3890
  Properties:
3891
+ - `cssClasses: unknown = computed(() => super.getCssClasses('ecl-checkbox'))` — Applies base CSS classes for the checkbox container.
3889
3892
  - `eclCheckboxHelpComponent: unknown = contentChild(forwardRef(() => EclCheckboxHelpComponent))` — Child help component projected into the checkbox.
3890
3893
  - `eclCheckboxLabelComponent: unknown = contentChild(forwardRef(() => EclCheckboxLabelComponent))` — Child label component projected into the checkbox.
3891
3894
  - `eclFormLabelDirective: unknown = contentChild(forwardRef(() => EclFormLabelComponent))` — Optional form label component projected into the checkbox.
3892
3895
  - `eclHelpBlockDirective: unknown = contentChild(forwardRef(() => EclHelpBlockDirective))` — Optional help block directive projected into the checkbox.
3896
+ - `isDisabled: unknown = linkedSignal(() => this.isDisabledInput())` — Indicates whether the checkbox is disabled. Seeded from the isDisabled input but can be updated imperatively by the checkbox input directive as the associated control's state changes.
3897
+ - `isInvalid: unknown = linkedSignal(() => this.isInvalidInput())` — Indicates whether the checkbox is in an invalid state. Seeded from the isInvalid input but can be updated imperatively by the checkbox input directive as the associated control's validity changes.
3893
3898
 
3894
3899
  Methods:
3895
3900
  - `getCssClasses(rootClass: string): string`
@@ -3910,6 +3915,7 @@ Outputs:
3910
3915
  - `class: string = ''`
3911
3916
 
3912
3917
  Properties:
3918
+ - `cssClasses: unknown = computed(() => super.getCssClasses('ecl-checkbox__input'))` — Applies base CSS classes for checkbox input.
3913
3919
  - `eclCheckbox: unknown = inject(EclCheckboxDirective)`
3914
3920
 
3915
3921
  Methods:
@@ -4500,7 +4506,6 @@ Selector: `[eclFeaturedItemLink]`
4500
4506
  Description: Applies specific additional class for the eclLink directive, used in construction.
4501
4507
 
4502
4508
  Inputs:
4503
- - `ariaDescribedBy: string | null`
4504
4509
  - `class: string = ''`
4505
4510
  - `e2eAttr: string`
4506
4511
  - `tabindex = undefined`
@@ -4509,7 +4514,7 @@ Outputs:
4509
4514
  - `class: string = ''`
4510
4515
 
4511
4516
  Properties:
4512
- - `className: unknown = true`
4517
+ - `ariaDescribedBy: unknown = signal<string | null>(null)` — The id of the element describing this link. Set imperatively by the parent featured item once the title id is known.
4513
4518
 
4514
4519
  Methods:
4515
4520
  - `getCssClasses(rootClass: string): string`
@@ -4964,7 +4969,7 @@ Description: Directive for the layout wrapper title. Applies the ecl-layout-wrap
4964
4969
  File: `packages/ecl/components/ecl-layout-wrapper/ecl-layout-wrapper.directives.ts`
4965
4970
  Selector: `[eclLayoutWrapperViewAll]`
4966
4971
 
4967
- Description: Directive for the layout wrapper "view all" link. Applies the ecl-layout-wrapper\_\_view-all-link class to the link element. Example : \<a eclLayoutWrapperViewAll eclLink \[standalone\]="true" icon="arrow-left"\>View all\</a\>
4972
+ Description: Directive for the layout wrapper "view all" link. Applies the ecl-layout-wrapper\_\_view-all-link class to the link element. Example : \<a eclLayoutWrapperViewAll eclLink icon="arrow-left"\>View all\</a\>
4968
4973
 
4969
4974
  ### EclLinkDirective
4970
4975
 
@@ -6909,6 +6914,9 @@ Inputs:
6909
6914
  Outputs:
6910
6915
  - `class: string = ''`
6911
6916
 
6917
+ Properties:
6918
+ - ``cssClasses: unknown = computed(() => { const eclSize = this.eclSize(); return [super.getCssClasses('ecl-text-area'), eclSize ? `ecl-text-area--${eclSize}` : ''].join(' ').trim(); })`` — Adds specific classes for the component.
6919
+
6912
6920
  Methods:
6913
6921
  - `getCssClasses(rootClass: string): string`
6914
6922
 
@@ -6930,6 +6938,9 @@ Inputs:
6930
6938
  Outputs:
6931
6939
  - `class: string = ''`
6932
6940
 
6941
+ Properties:
6942
+ - ``cssClasses: unknown = computed(() => { const eclSize = this.eclSize(); return [super.getCssClasses('ecl-text-input'), eclSize ? `ecl-text-input--${eclSize}` : ''].join(' ').trim(); }…`` — Adds ECL classes for the component.
6943
+
6933
6944
  Methods:
6934
6945
  - `getCssClasses(rootClass: string): string`
6935
6946
 
@@ -7029,9 +7040,6 @@ Inputs:
7029
7040
  Outputs:
7030
7041
  - `class: string = ''`
7031
7042
 
7032
- Properties:
7033
- - `hasClass: unknown = true`
7034
-
7035
7043
  Methods:
7036
7044
  - `getCssClasses(rootClass: string): string`
7037
7045
 
@@ -7876,18 +7884,18 @@ Properties:
7876
7884
  File: `packages/ecl/components/ecl-carousel/models/ecl-carousel-item.model.ts`
7877
7885
 
7878
7886
  Properties:
7879
- - `id?: string`
7880
- - `index: number`
7881
- - `isCurrent: boolean`
7887
+ - `id?: Signal<string | undefined>`
7888
+ - `index: WritableSignal<number | undefined>`
7889
+ - `isCurrent: WritableSignal<boolean>`
7882
7890
 
7883
7891
  ### EclCategoryFilterItem
7884
7892
 
7885
7893
  File: `packages/ecl/components/ecl-category-filter/models/ecl-category-filter-item.model.ts`
7886
7894
 
7887
7895
  Properties:
7888
- - `id?: string`
7889
- - `isCurrent?: boolean`
7890
- - `isExpanded?: boolean`
7896
+ - `id?: Signal<string | undefined>`
7897
+ - `isCurrent?: Signal<boolean>`
7898
+ - `isExpanded?: Signal<boolean>`
7891
7899
  - `isRootItem?: boolean`
7892
7900
 
7893
7901
  ### EclFileUpload
@@ -128,7 +128,7 @@
128
128
  </ol>
129
129
  <ul class="properties-list">
130
130
  <li>
131
- <b>Version</b> : 22.0.0-alpha.40</li>
131
+ <b>Version</b> : 22.0.0-alpha.42</li>
132
132
  </ul>
133
133
 
134
134
 
@@ -46,12 +46,8 @@ class EclBreadcrumbSegmentClickEvent extends EclBaseEvent {
46
46
  * Displays a single breadcrumb segment with optional navigation or ellipsis.
47
47
  */
48
48
  class EclBreadcrumbSegmentComponent extends ECLBaseDirective {
49
- get ariaHidden() {
50
- return this.isHidden();
51
- }
52
- get ariaCurrent() { return this.isCurrentPage() ? 'page' : null; }
53
49
  constructor() {
54
- super();
50
+ super(...arguments);
55
51
  this.el = inject(ElementRef);
56
52
  /**
57
53
  * Defines the tabindex attribute for accessibility.
@@ -95,11 +91,11 @@ class EclBreadcrumbSegmentComponent extends ECLBaseDirective {
95
91
  * Emits when the segment is clicked.
96
92
  */
97
93
  this.segmentClick = output();
98
- const el = this.el;
99
- if (el.nativeElement.tagName.toLowerCase() === 'ecl-breadcrumb-segment') {
100
- console.warn('"ecl-breadcrumb-segment" selector is deprecated; use "li[eclBreadcrumbSegment]" instead.');
101
- }
102
94
  }
95
+ get ariaHidden() {
96
+ return this.isHidden();
97
+ }
98
+ get ariaCurrent() { return this.isCurrentPage() ? 'page' : null; }
103
99
  /**
104
100
  * Computes the CSS classes applied to the segment.
105
101
  */
@@ -119,7 +115,7 @@ class EclBreadcrumbSegmentComponent extends ECLBaseDirective {
119
115
  evt.stopPropagation();
120
116
  }
121
117
  }
122
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EclBreadcrumbSegmentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
118
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EclBreadcrumbSegmentComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
123
119
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.2", type: EclBreadcrumbSegmentComponent, isStandalone: true, selector: "li[eclBreadcrumbSegment]", inputs: { routerLink: { classPropertyName: "routerLink", publicName: "routerLink", isSignal: true, isRequired: false, transformFunction: null }, queryParams: { classPropertyName: "queryParams", publicName: "queryParams", isSignal: true, isRequired: false, transformFunction: null }, href: { classPropertyName: "href", publicName: "href", isSignal: true, isRequired: false, transformFunction: null }, queryParamsHandling: { classPropertyName: "queryParamsHandling", publicName: "queryParamsHandling", isSignal: true, isRequired: false, transformFunction: null }, isEllipsis: { classPropertyName: "isEllipsis", publicName: "isEllipsis", isSignal: true, isRequired: false, transformFunction: null }, isCurrentPage: { classPropertyName: "isCurrentPage", publicName: "isCurrentPage", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { segmentClick: "segmentClick" }, host: { properties: { "attr.aria-current": "ariaCurrent", "attr.tabindex": "this.tabIndex", "attr.aria-hidden": "this.ariaHidden", "class": "this.cssClasses" } }, usesInheritance: true, ngImport: i0, template: "@if (!isEllipsis()) {\n@if (!isCurrentPage() && href()) {\n<a [href]=\"href()\" (click)=\"onSegmentClick($event)\" class=\"ecl-breadcrumb__link ecl-link\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n}\n@if (!isCurrentPage() && !href()) {\n<a [routerLink]=\"routerLink()\" [queryParams]=\"queryParams()\" [queryParamsHandling]=\"queryParamsHandling()\"\n tabindex=\"0\" (click)=\"onSegmentClick($event)\" class=\"ecl-breadcrumb__link ecl-link\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n}\n} @else {\n<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n}\n\n@if (isCurrentPage()) {\n<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n} @else {\n<ecl-icon role=\"presentation\" icon=\"corner-arrow\" ariaHidden=\"true\" focusable=\"false\" size=\"fluid\"\n class=\"ecl-breadcrumb__icon\">\n</ecl-icon>\n}\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "component", type: i1.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "title", "ariaHidden", "focusable", "isFlipHorizontal"] }], encapsulation: i0.ViewEncapsulation.None }); }
124
120
  }
125
121
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EclBreadcrumbSegmentComponent, decorators: [{
@@ -127,7 +123,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImpor
127
123
  args: [{ selector: 'li[eclBreadcrumbSegment]', imports: [NgTemplateOutlet, RouterLink, RouterLinkWithHref, ...EUI_ECL_ICON, ...EUI_ECL_LINK], encapsulation: ViewEncapsulation.None, host: {
128
124
  '[attr.aria-current]': 'ariaCurrent'
129
125
  }, template: "@if (!isEllipsis()) {\n@if (!isCurrentPage() && href()) {\n<a [href]=\"href()\" (click)=\"onSegmentClick($event)\" class=\"ecl-breadcrumb__link ecl-link\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n}\n@if (!isCurrentPage() && !href()) {\n<a [routerLink]=\"routerLink()\" [queryParams]=\"queryParams()\" [queryParamsHandling]=\"queryParamsHandling()\"\n tabindex=\"0\" (click)=\"onSegmentClick($event)\" class=\"ecl-breadcrumb__link ecl-link\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n}\n} @else {\n<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n}\n\n@if (isCurrentPage()) {\n<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n} @else {\n<ecl-icon role=\"presentation\" icon=\"corner-arrow\" ariaHidden=\"true\" focusable=\"false\" size=\"fluid\"\n class=\"ecl-breadcrumb__icon\">\n</ecl-icon>\n}\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>" }]
130
- }], ctorParameters: () => [], propDecorators: { tabIndex: [{
126
+ }], propDecorators: { tabIndex: [{
131
127
  type: HostBinding,
132
128
  args: ['attr.tabindex']
133
129
  }], routerLink: [{ type: i0.Input, args: [{ isSignal: true, alias: "routerLink", required: false }] }], queryParams: [{ type: i0.Input, args: [{ isSignal: true, alias: "queryParams", required: false }] }], href: [{ type: i0.Input, args: [{ isSignal: true, alias: "href", required: false }] }], queryParamsHandling: [{ type: i0.Input, args: [{ isSignal: true, alias: "queryParamsHandling", required: false }] }], isEllipsis: [{ type: i0.Input, args: [{ isSignal: true, alias: "isEllipsis", required: false }] }], isCurrentPage: [{ type: i0.Input, args: [{ isSignal: true, alias: "isCurrentPage", required: false }] }], ariaHidden: [{
@@ -1 +1 @@
1
- {"version":3,"file":"eui-ecl-components-ecl-breadcrumb.mjs","sources":["../../components/ecl-breadcrumb/ecl-breadcrumb-container.directive.ts","../../components/ecl-breadcrumb/events/ecl-breadcrumb-segment-click.event.ts","../../components/ecl-breadcrumb/ecl-breadcrumb-segment.component.ts","../../components/ecl-breadcrumb/ecl-breadcrumb-segment.component.html","../../components/ecl-breadcrumb/ecl-breadcrumb.component.ts","../../components/ecl-breadcrumb/ecl-breadcrumb.component.html","../../components/ecl-breadcrumb/index.ts","../../components/ecl-breadcrumb/eui-ecl-components-ecl-breadcrumb.ts"],"sourcesContent":["import { Directive, HostBinding } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Used to wrap breadcrumb segments inside the breadcrumb component.\n */\n@Directive({\n selector: '[eclBreadcrumbContainer]',\n})\nexport class EclBreadcrumbContainerDirective extends ECLBaseDirective {\n\n /**\n * Adds breadcrumb container CSS class to the host element.\n */\n @HostBinding('class.ecl-breadcrumb__container') hasClass = true;\n}\n","import { EclBaseEvent } from '@eui/ecl/core';\n\n/**\n * Event emitted when a breadcrumb segment is clicked.\n */\nexport class EclBreadcrumbSegmentClickEvent extends EclBaseEvent {}\n","import {\n Component,\n ElementRef,\n HostBinding,\n input,\n output,\n ViewEncapsulation,\n booleanAttribute,\n inject,\n signal,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { Params, QueryParamsHandling, RouterLink, RouterLinkWithHref } from '@angular/router';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclBreadcrumbSegmentClickEvent } from './events/ecl-breadcrumb-segment-click.event';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\nimport { EUI_ECL_LINK } from '@eui/ecl/components/ecl-link';\n\n/**\n * Displays a single breadcrumb segment with optional navigation or ellipsis.\n */\n@Component({\n selector: 'li[eclBreadcrumbSegment]',\n templateUrl: './ecl-breadcrumb-segment.component.html',\n imports: [NgTemplateOutlet, RouterLink, RouterLinkWithHref, ...EUI_ECL_ICON, ...EUI_ECL_LINK],\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.aria-current]': 'ariaCurrent'\n }\n})\nexport class EclBreadcrumbSegmentComponent extends ECLBaseDirective {\n el = inject(ElementRef);\n\n /**\n * Defines the tabindex attribute for accessibility.\n */\n @HostBinding('attr.tabindex') tabIndex = '-1';\n\n /**\n * Router link for navigation.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n routerLink = input<string | any[] | null>(null);\n\n /**\n * Query parameters used with routerLink.\n */\n queryParams = input<Params | null>(null);\n\n /**\n * Href used for standard navigation.\n */\n href = input('');\n\n /**\n * Strategy for handling existing query parameters during navigation.\n */\n queryParamsHandling = input<QueryParamsHandling>(null);\n\n /**\n * Displays the segment as an ellipsis instead of a link.\n */\n isEllipsis = input(false, { transform: booleanAttribute });\n\n /**\n * Highlights the segment as the current page.\n */\n isCurrentPage = input(false, { transform: booleanAttribute });\n\n /**\n * Hides the segment visually and from assistive technologies.\n */\n isHidden = signal(false);\n\n @HostBinding('attr.aria-hidden')\n get ariaHidden() {\n return this.isHidden();\n }\n\n /**\n * Emits when the segment is clicked.\n */\n segmentClick = output<EclBreadcrumbSegmentClickEvent>();\n\n get ariaCurrent() { return this.isCurrentPage() ? 'page' : null; }\n\n constructor() {\n super();\n const el = this.el;\n\n if (el.nativeElement.tagName.toLowerCase() === 'ecl-breadcrumb-segment') {\n console.warn('\"ecl-breadcrumb-segment\" selector is deprecated; use \"li[eclBreadcrumbSegment]\" instead.');\n }\n }\n\n /**\n * Computes the CSS classes applied to the segment.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [\n super.getCssClasses('ecl-breadcrumb__segment'),\n this.isCurrentPage() ? 'ecl-breadcrumb__current-page' : '',\n this.isEllipsis() ? 'ecl-breadcrumb__segment--ellipsis' : '',\n ].join(' ').trim();\n }\n\n /**\n * Handles the click event on the segment.\n */\n onSegmentClick(evt: MouseEvent): void {\n this.segmentClick.emit(new EclBreadcrumbSegmentClickEvent());\n if (!this.href()) {\n evt.stopPropagation();\n }\n }\n}\n","@if (!isEllipsis()) {\n@if (!isCurrentPage() && href()) {\n<a [href]=\"href()\" (click)=\"onSegmentClick($event)\" class=\"ecl-breadcrumb__link ecl-link\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n}\n@if (!isCurrentPage() && !href()) {\n<a [routerLink]=\"routerLink()\" [queryParams]=\"queryParams()\" [queryParamsHandling]=\"queryParamsHandling()\"\n tabindex=\"0\" (click)=\"onSegmentClick($event)\" class=\"ecl-breadcrumb__link ecl-link\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n}\n} @else {\n<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n}\n\n@if (isCurrentPage()) {\n<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n} @else {\n<ecl-icon role=\"presentation\" icon=\"corner-arrow\" ariaHidden=\"true\" focusable=\"false\" size=\"fluid\"\n class=\"ecl-breadcrumb__icon\">\n</ecl-icon>\n}\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>","import { isPlatformBrowser } from '@angular/common';\nimport {\n AfterViewInit,\n booleanAttribute,\n Component,\n computed,\n contentChild,\n contentChildren,\n DOCUMENT,\n effect,\n ElementRef,\n forwardRef,\n inject,\n input,\n OnDestroy,\n PLATFORM_ID,\n Renderer2,\n signal,\n viewChild,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { TranslatePipe, TranslateService } from '@ngx-translate/core';\nimport { animationFrameScheduler, auditTime, fromEvent, observeOn, Subject, takeUntil } from 'rxjs';\nimport { EclBreadcrumbContainerDirective } from './ecl-breadcrumb-container.directive';\nimport { EclBreadcrumbSegmentComponent } from './ecl-breadcrumb-segment.component';\n\ninterface VisibilityMap {\n mode: string;\n isItemVisible: boolean[];\n}\n\n/**\n * Displays navigation segments and handles overflow with ellipsis.\n */\n@Component({\n selector: 'nav[eclBreadcrumb]',\n templateUrl: './ecl-breadcrumb.component.html',\n imports: [TranslatePipe, ...EUI_ECL_BUTTON, EclBreadcrumbSegmentComponent],\n host: {\n '[attr.aria-label]': 'ariaLabel()',\n '[class]': 'cssClasses',\n },\n})\nexport class EclBreadcrumbComponent extends ECLBaseDirective implements AfterViewInit, OnDestroy {\n /**\n * Expands all breadcrumb segments instead of collapsing them.\n */\n isExpanded = input(false, { transform: booleanAttribute });\n \n /**\n * Visible label for the ellipsis button. Defaults to the ellipsis character.\n */\n ellipsisLabel = input<string>('…');\n\n /**\n * Accessible label for the ellipsis button. When not provided, falls back to the\n * translated value of `ecl.breadcrumb.SHOW-MORE-ITEMS`.\n */\n ellipsisAriaLabel = input<string | undefined>(undefined);\n\n /**\n * ARIA label describing the breadcrumb purpose.\n */\n ariaLabel = toSignal(inject(TranslateService).stream('ecl.breadcrumb.YOU-ARE-HERE'));\n\n /**\n * Reference to the ellipsis segment element.\n */\n eclEllipsisSegment = viewChild<EclBreadcrumbSegmentComponent>('ellipsisSegment');\n\n /**\n * Reference to the breadcrumb container directive inside this component.\n */\n eclBreadcrumbContainer = contentChild(EclBreadcrumbContainerDirective, { read: ElementRef });\n\n /**\n * List of breadcrumb segment components.\n */\n eclSegments = contentChildren(forwardRef(() => EclBreadcrumbSegmentComponent), { descendants: true });\n\n private el = inject(ElementRef);\n private renderer = inject(Renderer2);\n private isExpandedState = signal(false);\n private staticItems = computed(() => {\n const items = this.realSegments();\n return items.filter((_, index) =>\n index === 0 || index === items.length - 2 || index === items.length - 1\n );\n });\n\n private expandableItems = computed(() => {\n const items = this.realSegments();\n return items.filter((_, index) =>\n index !== 0 && index !== items.length - 2 && index !== items.length - 1\n );\n });\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private readonly window = inject<Document>(DOCUMENT).defaultView; // Window | null\n private platformId = inject(PLATFORM_ID);\n private readonly breakpoint = 995;\n private readonly wrapperWidth = signal(0);\n private readonly windowWidth = signal(0);\n private readonly allItemsWidth = signal(0);\n private readonly incompressibleWidth = signal(0);\n private readonly expandableWidths = signal<number[]>([]);\n\n private readonly realSegments = computed(() => {\n const ellipsis = this.eclEllipsisSegment();\n return this.eclSegments()?.filter((segment) => segment !== ellipsis);\n });\n\n protected readonly visibilityMap = computed<VisibilityMap>(() => {\n const manuallyExpanded = this.isExpandedState();\n const wrapperWidth = this.wrapperWidth();\n const windowWidth = this.windowWidth();\n const allItemsWidth = this.allItemsWidth();\n const incompressibleWidth = this.incompressibleWidth();\n const expandableWidths = this.expandableWidths();\n\n if (manuallyExpanded) {\n return {\n mode: 'full',\n isItemVisible: expandableWidths.map(() => true),\n };\n }\n if (!wrapperWidth) {\n return {\n mode: 'full',\n isItemVisible: expandableWidths.map(() => true),\n };\n }\n\n if (!expandableWidths.length) {\n return {\n mode: 'full',\n isItemVisible: [],\n };\n }\n\n // Mobile mode: window is small, ECL CSS handles layout\n if (windowWidth <= this.breakpoint) {\n return {\n mode: 'compact',\n isItemVisible: expandableWidths.map(() => false),\n };\n }\n\n // Everything fits\n if (allItemsWidth * 1.1 <= wrapperWidth) {\n return {\n mode: 'full',\n isItemVisible: expandableWidths.map(() => true),\n };\n }\n\n // Even static + ellipsis do not fit\n if (incompressibleWidth >= wrapperWidth) {\n return {\n mode: 'collapsed',\n isItemVisible: expandableWidths.map(() => false),\n };\n }\n\n // Fit expandable items from right to left\n let usedWidth = 0;\n let canStillFit = true;\n\n const isItemVisible = [...expandableWidths]\n .reverse()\n .map((width) => {\n if (!canStillFit) {\n return false;\n }\n\n usedWidth += width;\n const fits = usedWidth + incompressibleWidth <= wrapperWidth;\n\n if (!fits) {\n canStillFit = false;\n }\n\n return fits;\n })\n .reverse();\n\n return {\n mode: 'collapsed',\n isItemVisible,\n };\n });\n\n\n /**\n * CSS classes applied to the breadcrumb element.\n */\n get cssClasses(): string {\n return [\n super.getCssClasses('ecl-breadcrumb'),\n ].join(' ').trim();\n }\n\n constructor() {\n super();\n effect(() => {\n if (!isPlatformBrowser(this.platformId)) return;\n\n const mode = this.visibilityMap().mode;\n const host = this.el?.nativeElement;\n if (!host) return;\n\n this.renderer.removeClass(host, 'ecl-breadcrumb--wrap');\n this.renderer.removeClass(host, 'ecl-breadcrumb--collapsed');\n\n if (mode === 'collapsed') {\n this.renderer.addClass(host, 'ecl-breadcrumb--collapsed');\n } else {\n this.renderer.addClass(host, 'ecl-breadcrumb--wrap');\n }\n });\n\n effect(() => {\n const expandableItems = this.expandableItems();\n const map = this.visibilityMap();\n const manuallyExpanded = this.isExpandedState();\n \n if (map.mode === 'full') {\n this.eclEllipsisSegment()?.isHidden.set(true);\n expandableItems.forEach((segment) => {\n segment.isHidden.set(false);\n });\n return;\n }\n if (map.mode === 'compact') {\n this.eclEllipsisSegment()?.isHidden.set(true);\n expandableItems.forEach((segment) => {\n segment.isHidden.set(true);\n });\n return;\n }\n // collapsed mode: show ellipsis, selectively show expandable items\n this.eclEllipsisSegment()?.isHidden.set(false);\n expandableItems.forEach((segment, index) => {\n const isVisible = map.isItemVisible[index] ?? false;\n segment.isHidden.set(!isVisible);\n });\n });\n }\n\n /**\n * Handles window resize and recalculates overflown segments.\n */\n ngAfterViewInit() {\n if (!isPlatformBrowser(this.platformId)) return;\n // Initial setup + first measurement after layout is ready\n animationFrameScheduler.schedule(() => {\n this.insertEllipsisSegmentIntoPosition();\n this.measureAll();\n });\n\n // Re-measure on resize after layout\n fromEvent(this.window, 'resize').pipe(\n auditTime(50), observeOn(animationFrameScheduler),\n takeUntil(this.destroy$)).subscribe(() => {\n this.measureAll();\n });\n }\n\n /**\n * Cleans up subscriptions on destroy.\n */\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Returns true if breadcrumb container directive exists.\n */\n hasContainer = computed(() => !!this.eclBreadcrumbContainer());\n\n /**\n * Expands hidden breadcrumb segments after clicking ellipsis.\n */\n onEllipsisSegmentClick(): void {\n this.eclEllipsisSegment().isHidden.set(true);\n this.isExpandedState.set(true);\n }\n\n private measureAll(): void {\n const host = this.el?.nativeElement;\n const ellipsis = this.eclEllipsisSegment()?.el.nativeElement;\n const staticItems = this.staticItems().map((x) => x.el.nativeElement);\n const expandableItems = this.expandableItems().map((x) => x.el.nativeElement);\n\n if (!host) return;\n\n const wrapperWidth = Math.floor(host.getBoundingClientRect().width);\n const windowWidth = this.window?.innerWidth ?? 0;\n const ellipsisWidth = ellipsis ? this.measureWidth(ellipsis) : 0;\n const staticWidths = staticItems.map((el) => this.measureWidth(el));\n const expandableWidths = expandableItems.map((el) => this.measureWidth(el));\n\n const allItemsWidth =\n ellipsisWidth +\n staticWidths.reduce((sum, w) => sum + w, 0) +\n expandableWidths.reduce((sum, w) => sum + w, 0);\n\n const incompressibleWidth =\n ellipsisWidth + staticWidths.reduce((sum, w) => sum + w, 0);\n\n this.windowWidth.set(windowWidth);\n this.wrapperWidth.set(wrapperWidth);\n this.expandableWidths.set(expandableWidths);\n this.allItemsWidth.set(allItemsWidth);\n this.incompressibleWidth.set(incompressibleWidth);\n }\n\n private measureWidth(el: HTMLElement): number {\n let width = el.getBoundingClientRect().width;\n\n if (width !== 0) {\n return width;\n }\n\n const previousCssText = el.style.cssText;\n const previousDisplay = el.style.display;\n\n el.style.display = 'inline-flex';\n width = el.getBoundingClientRect().width;\n\n el.style.cssText = previousCssText;\n if (!previousCssText) {\n el.style.display = previousDisplay;\n }\n\n return width;\n }\n\n private insertEllipsisSegmentIntoPosition(): void {\n if (this.hasEnoughSegments()) {\n const segments = this.realSegments();\n const secondEclSegmentEl: HTMLElement = segments[1].el.nativeElement;\n const ellipsisSegmentEl: HTMLElement = this.eclEllipsisSegment().el.nativeElement;\n if (this.hasContainer()) {\n this.renderer.insertBefore(this.eclBreadcrumbContainer()!.nativeElement, ellipsisSegmentEl, secondEclSegmentEl);\n }\n } else {\n // remove ellipsis\n this.renderer.removeChild(this.el.nativeElement, this.eclEllipsisSegment().el.nativeElement);\n }\n }\n\n private hasEnoughSegments(): boolean {\n return this.realSegments().length > 3;\n }\n}\n","<li eclBreadcrumbSegment #ellipsisSegment>\n <button tabindex=\"0\" eclButton variant=\"tertiary\" size=\"m\" eclStyle=\"neutral\" class=\"ecl-breadcrumb__ellipsis\"\n [attr.aria-label]=\"ellipsisAriaLabel() ?? ('ecl.breadcrumb.SHOW-MORE-ITEMS' | translate)\" (click)=\"onEllipsisSegmentClick()\">\n {{ ellipsisLabel() }}\n </button>\n</li>\n<ng-content></ng-content>\n","import { EclBreadcrumbComponent } from './ecl-breadcrumb.component';\nimport { EclBreadcrumbSegmentComponent } from './ecl-breadcrumb-segment.component';\nimport { EclBreadcrumbContainerDirective } from './ecl-breadcrumb-container.directive';\n\nexport * from './ecl-breadcrumb.component';\nexport * from './ecl-breadcrumb-segment.component';\nexport * from './models/ecl-breadcrumb.model';\nexport * from './events/ecl-breadcrumb-segment-click.event';\nexport * from './ecl-breadcrumb-container.directive';\n\nexport const EUI_ECL_BREADCRUMB = [\n EclBreadcrumbComponent, EclBreadcrumbSegmentComponent, EclBreadcrumbContainerDirective,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"eui-ecl-components-ecl-breadcrumb.mjs","sources":["../../components/ecl-breadcrumb/ecl-breadcrumb-container.directive.ts","../../components/ecl-breadcrumb/events/ecl-breadcrumb-segment-click.event.ts","../../components/ecl-breadcrumb/ecl-breadcrumb-segment.component.ts","../../components/ecl-breadcrumb/ecl-breadcrumb-segment.component.html","../../components/ecl-breadcrumb/ecl-breadcrumb.component.ts","../../components/ecl-breadcrumb/ecl-breadcrumb.component.html","../../components/ecl-breadcrumb/index.ts","../../components/ecl-breadcrumb/eui-ecl-components-ecl-breadcrumb.ts"],"sourcesContent":["import { Directive, HostBinding } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Used to wrap breadcrumb segments inside the breadcrumb component.\n */\n@Directive({\n selector: '[eclBreadcrumbContainer]',\n})\nexport class EclBreadcrumbContainerDirective extends ECLBaseDirective {\n\n /**\n * Adds breadcrumb container CSS class to the host element.\n */\n @HostBinding('class.ecl-breadcrumb__container') hasClass = true;\n}\n","import { EclBaseEvent } from '@eui/ecl/core';\n\n/**\n * Event emitted when a breadcrumb segment is clicked.\n */\nexport class EclBreadcrumbSegmentClickEvent extends EclBaseEvent {}\n","import {\n Component,\n ElementRef,\n HostBinding,\n input,\n output,\n ViewEncapsulation,\n booleanAttribute,\n inject,\n signal,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { Params, QueryParamsHandling, RouterLink, RouterLinkWithHref } from '@angular/router';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclBreadcrumbSegmentClickEvent } from './events/ecl-breadcrumb-segment-click.event';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\nimport { EUI_ECL_LINK } from '@eui/ecl/components/ecl-link';\n\n/**\n * Displays a single breadcrumb segment with optional navigation or ellipsis.\n */\n@Component({\n selector: 'li[eclBreadcrumbSegment]',\n templateUrl: './ecl-breadcrumb-segment.component.html',\n imports: [NgTemplateOutlet, RouterLink, RouterLinkWithHref, ...EUI_ECL_ICON, ...EUI_ECL_LINK],\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.aria-current]': 'ariaCurrent'\n }\n})\nexport class EclBreadcrumbSegmentComponent extends ECLBaseDirective {\n el = inject(ElementRef);\n\n /**\n * Defines the tabindex attribute for accessibility.\n */\n @HostBinding('attr.tabindex') tabIndex = '-1';\n\n /**\n * Router link for navigation.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n routerLink = input<string | any[] | null>(null);\n\n /**\n * Query parameters used with routerLink.\n */\n queryParams = input<Params | null>(null);\n\n /**\n * Href used for standard navigation.\n */\n href = input('');\n\n /**\n * Strategy for handling existing query parameters during navigation.\n */\n queryParamsHandling = input<QueryParamsHandling>(null);\n\n /**\n * Displays the segment as an ellipsis instead of a link.\n */\n isEllipsis = input(false, { transform: booleanAttribute });\n\n /**\n * Highlights the segment as the current page.\n */\n isCurrentPage = input(false, { transform: booleanAttribute });\n\n /**\n * Hides the segment visually and from assistive technologies.\n */\n isHidden = signal(false);\n\n @HostBinding('attr.aria-hidden')\n get ariaHidden() {\n return this.isHidden();\n }\n\n /**\n * Emits when the segment is clicked.\n */\n segmentClick = output<EclBreadcrumbSegmentClickEvent>();\n\n get ariaCurrent() { return this.isCurrentPage() ? 'page' : null; }\n\n /**\n * Computes the CSS classes applied to the segment.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [\n super.getCssClasses('ecl-breadcrumb__segment'),\n this.isCurrentPage() ? 'ecl-breadcrumb__current-page' : '',\n this.isEllipsis() ? 'ecl-breadcrumb__segment--ellipsis' : '',\n ].join(' ').trim();\n }\n\n /**\n * Handles the click event on the segment.\n */\n onSegmentClick(evt: MouseEvent): void {\n this.segmentClick.emit(new EclBreadcrumbSegmentClickEvent());\n if (!this.href()) {\n evt.stopPropagation();\n }\n }\n}\n","@if (!isEllipsis()) {\n@if (!isCurrentPage() && href()) {\n<a [href]=\"href()\" (click)=\"onSegmentClick($event)\" class=\"ecl-breadcrumb__link ecl-link\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n}\n@if (!isCurrentPage() && !href()) {\n<a [routerLink]=\"routerLink()\" [queryParams]=\"queryParams()\" [queryParamsHandling]=\"queryParamsHandling()\"\n tabindex=\"0\" (click)=\"onSegmentClick($event)\" class=\"ecl-breadcrumb__link ecl-link\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n}\n} @else {\n<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n}\n\n@if (isCurrentPage()) {\n<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n} @else {\n<ecl-icon role=\"presentation\" icon=\"corner-arrow\" ariaHidden=\"true\" focusable=\"false\" size=\"fluid\"\n class=\"ecl-breadcrumb__icon\">\n</ecl-icon>\n}\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>","import { isPlatformBrowser } from '@angular/common';\nimport {\n AfterViewInit,\n booleanAttribute,\n Component,\n computed,\n contentChild,\n contentChildren,\n DOCUMENT,\n effect,\n ElementRef,\n forwardRef,\n inject,\n input,\n OnDestroy,\n PLATFORM_ID,\n Renderer2,\n signal,\n viewChild,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { TranslatePipe, TranslateService } from '@ngx-translate/core';\nimport { animationFrameScheduler, auditTime, fromEvent, observeOn, Subject, takeUntil } from 'rxjs';\nimport { EclBreadcrumbContainerDirective } from './ecl-breadcrumb-container.directive';\nimport { EclBreadcrumbSegmentComponent } from './ecl-breadcrumb-segment.component';\n\ninterface VisibilityMap {\n mode: string;\n isItemVisible: boolean[];\n}\n\n/**\n * Displays navigation segments and handles overflow with ellipsis.\n */\n@Component({\n selector: 'nav[eclBreadcrumb]',\n templateUrl: './ecl-breadcrumb.component.html',\n imports: [TranslatePipe, ...EUI_ECL_BUTTON, EclBreadcrumbSegmentComponent],\n host: {\n '[attr.aria-label]': 'ariaLabel()',\n '[class]': 'cssClasses',\n },\n})\nexport class EclBreadcrumbComponent extends ECLBaseDirective implements AfterViewInit, OnDestroy {\n /**\n * Expands all breadcrumb segments instead of collapsing them.\n */\n isExpanded = input(false, { transform: booleanAttribute });\n \n /**\n * Visible label for the ellipsis button. Defaults to the ellipsis character.\n */\n ellipsisLabel = input<string>('…');\n\n /**\n * Accessible label for the ellipsis button. When not provided, falls back to the\n * translated value of `ecl.breadcrumb.SHOW-MORE-ITEMS`.\n */\n ellipsisAriaLabel = input<string | undefined>(undefined);\n\n /**\n * ARIA label describing the breadcrumb purpose.\n */\n ariaLabel = toSignal(inject(TranslateService).stream('ecl.breadcrumb.YOU-ARE-HERE'));\n\n /**\n * Reference to the ellipsis segment element.\n */\n eclEllipsisSegment = viewChild<EclBreadcrumbSegmentComponent>('ellipsisSegment');\n\n /**\n * Reference to the breadcrumb container directive inside this component.\n */\n eclBreadcrumbContainer = contentChild(EclBreadcrumbContainerDirective, { read: ElementRef });\n\n /**\n * List of breadcrumb segment components.\n */\n eclSegments = contentChildren(forwardRef(() => EclBreadcrumbSegmentComponent), { descendants: true });\n\n private el = inject(ElementRef);\n private renderer = inject(Renderer2);\n private isExpandedState = signal(false);\n private staticItems = computed(() => {\n const items = this.realSegments();\n return items.filter((_, index) =>\n index === 0 || index === items.length - 2 || index === items.length - 1\n );\n });\n\n private expandableItems = computed(() => {\n const items = this.realSegments();\n return items.filter((_, index) =>\n index !== 0 && index !== items.length - 2 && index !== items.length - 1\n );\n });\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private readonly window = inject<Document>(DOCUMENT).defaultView; // Window | null\n private platformId = inject(PLATFORM_ID);\n private readonly breakpoint = 995;\n private readonly wrapperWidth = signal(0);\n private readonly windowWidth = signal(0);\n private readonly allItemsWidth = signal(0);\n private readonly incompressibleWidth = signal(0);\n private readonly expandableWidths = signal<number[]>([]);\n\n private readonly realSegments = computed(() => {\n const ellipsis = this.eclEllipsisSegment();\n return this.eclSegments()?.filter((segment) => segment !== ellipsis);\n });\n\n protected readonly visibilityMap = computed<VisibilityMap>(() => {\n const manuallyExpanded = this.isExpandedState();\n const wrapperWidth = this.wrapperWidth();\n const windowWidth = this.windowWidth();\n const allItemsWidth = this.allItemsWidth();\n const incompressibleWidth = this.incompressibleWidth();\n const expandableWidths = this.expandableWidths();\n\n if (manuallyExpanded) {\n return {\n mode: 'full',\n isItemVisible: expandableWidths.map(() => true),\n };\n }\n if (!wrapperWidth) {\n return {\n mode: 'full',\n isItemVisible: expandableWidths.map(() => true),\n };\n }\n\n if (!expandableWidths.length) {\n return {\n mode: 'full',\n isItemVisible: [],\n };\n }\n\n // Mobile mode: window is small, ECL CSS handles layout\n if (windowWidth <= this.breakpoint) {\n return {\n mode: 'compact',\n isItemVisible: expandableWidths.map(() => false),\n };\n }\n\n // Everything fits\n if (allItemsWidth * 1.1 <= wrapperWidth) {\n return {\n mode: 'full',\n isItemVisible: expandableWidths.map(() => true),\n };\n }\n\n // Even static + ellipsis do not fit\n if (incompressibleWidth >= wrapperWidth) {\n return {\n mode: 'collapsed',\n isItemVisible: expandableWidths.map(() => false),\n };\n }\n\n // Fit expandable items from right to left\n let usedWidth = 0;\n let canStillFit = true;\n\n const isItemVisible = [...expandableWidths]\n .reverse()\n .map((width) => {\n if (!canStillFit) {\n return false;\n }\n\n usedWidth += width;\n const fits = usedWidth + incompressibleWidth <= wrapperWidth;\n\n if (!fits) {\n canStillFit = false;\n }\n\n return fits;\n })\n .reverse();\n\n return {\n mode: 'collapsed',\n isItemVisible,\n };\n });\n\n\n /**\n * CSS classes applied to the breadcrumb element.\n */\n get cssClasses(): string {\n return [\n super.getCssClasses('ecl-breadcrumb'),\n ].join(' ').trim();\n }\n\n constructor() {\n super();\n effect(() => {\n if (!isPlatformBrowser(this.platformId)) return;\n\n const mode = this.visibilityMap().mode;\n const host = this.el?.nativeElement;\n if (!host) return;\n\n this.renderer.removeClass(host, 'ecl-breadcrumb--wrap');\n this.renderer.removeClass(host, 'ecl-breadcrumb--collapsed');\n\n if (mode === 'collapsed') {\n this.renderer.addClass(host, 'ecl-breadcrumb--collapsed');\n } else {\n this.renderer.addClass(host, 'ecl-breadcrumb--wrap');\n }\n });\n\n effect(() => {\n const expandableItems = this.expandableItems();\n const map = this.visibilityMap();\n const manuallyExpanded = this.isExpandedState();\n \n if (map.mode === 'full') {\n this.eclEllipsisSegment()?.isHidden.set(true);\n expandableItems.forEach((segment) => {\n segment.isHidden.set(false);\n });\n return;\n }\n if (map.mode === 'compact') {\n this.eclEllipsisSegment()?.isHidden.set(true);\n expandableItems.forEach((segment) => {\n segment.isHidden.set(true);\n });\n return;\n }\n // collapsed mode: show ellipsis, selectively show expandable items\n this.eclEllipsisSegment()?.isHidden.set(false);\n expandableItems.forEach((segment, index) => {\n const isVisible = map.isItemVisible[index] ?? false;\n segment.isHidden.set(!isVisible);\n });\n });\n }\n\n /**\n * Handles window resize and recalculates overflown segments.\n */\n ngAfterViewInit() {\n if (!isPlatformBrowser(this.platformId)) return;\n // Initial setup + first measurement after layout is ready\n animationFrameScheduler.schedule(() => {\n this.insertEllipsisSegmentIntoPosition();\n this.measureAll();\n });\n\n // Re-measure on resize after layout\n fromEvent(this.window, 'resize').pipe(\n auditTime(50), observeOn(animationFrameScheduler),\n takeUntil(this.destroy$)).subscribe(() => {\n this.measureAll();\n });\n }\n\n /**\n * Cleans up subscriptions on destroy.\n */\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Returns true if breadcrumb container directive exists.\n */\n hasContainer = computed(() => !!this.eclBreadcrumbContainer());\n\n /**\n * Expands hidden breadcrumb segments after clicking ellipsis.\n */\n onEllipsisSegmentClick(): void {\n this.eclEllipsisSegment().isHidden.set(true);\n this.isExpandedState.set(true);\n }\n\n private measureAll(): void {\n const host = this.el?.nativeElement;\n const ellipsis = this.eclEllipsisSegment()?.el.nativeElement;\n const staticItems = this.staticItems().map((x) => x.el.nativeElement);\n const expandableItems = this.expandableItems().map((x) => x.el.nativeElement);\n\n if (!host) return;\n\n const wrapperWidth = Math.floor(host.getBoundingClientRect().width);\n const windowWidth = this.window?.innerWidth ?? 0;\n const ellipsisWidth = ellipsis ? this.measureWidth(ellipsis) : 0;\n const staticWidths = staticItems.map((el) => this.measureWidth(el));\n const expandableWidths = expandableItems.map((el) => this.measureWidth(el));\n\n const allItemsWidth =\n ellipsisWidth +\n staticWidths.reduce((sum, w) => sum + w, 0) +\n expandableWidths.reduce((sum, w) => sum + w, 0);\n\n const incompressibleWidth =\n ellipsisWidth + staticWidths.reduce((sum, w) => sum + w, 0);\n\n this.windowWidth.set(windowWidth);\n this.wrapperWidth.set(wrapperWidth);\n this.expandableWidths.set(expandableWidths);\n this.allItemsWidth.set(allItemsWidth);\n this.incompressibleWidth.set(incompressibleWidth);\n }\n\n private measureWidth(el: HTMLElement): number {\n let width = el.getBoundingClientRect().width;\n\n if (width !== 0) {\n return width;\n }\n\n const previousCssText = el.style.cssText;\n const previousDisplay = el.style.display;\n\n el.style.display = 'inline-flex';\n width = el.getBoundingClientRect().width;\n\n el.style.cssText = previousCssText;\n if (!previousCssText) {\n el.style.display = previousDisplay;\n }\n\n return width;\n }\n\n private insertEllipsisSegmentIntoPosition(): void {\n if (this.hasEnoughSegments()) {\n const segments = this.realSegments();\n const secondEclSegmentEl: HTMLElement = segments[1].el.nativeElement;\n const ellipsisSegmentEl: HTMLElement = this.eclEllipsisSegment().el.nativeElement;\n if (this.hasContainer()) {\n this.renderer.insertBefore(this.eclBreadcrumbContainer()!.nativeElement, ellipsisSegmentEl, secondEclSegmentEl);\n }\n } else {\n // remove ellipsis\n this.renderer.removeChild(this.el.nativeElement, this.eclEllipsisSegment().el.nativeElement);\n }\n }\n\n private hasEnoughSegments(): boolean {\n return this.realSegments().length > 3;\n }\n}\n","<li eclBreadcrumbSegment #ellipsisSegment>\n <button tabindex=\"0\" eclButton variant=\"tertiary\" size=\"m\" eclStyle=\"neutral\" class=\"ecl-breadcrumb__ellipsis\"\n [attr.aria-label]=\"ellipsisAriaLabel() ?? ('ecl.breadcrumb.SHOW-MORE-ITEMS' | translate)\" (click)=\"onEllipsisSegmentClick()\">\n {{ ellipsisLabel() }}\n </button>\n</li>\n<ng-content></ng-content>\n","import { EclBreadcrumbComponent } from './ecl-breadcrumb.component';\nimport { EclBreadcrumbSegmentComponent } from './ecl-breadcrumb-segment.component';\nimport { EclBreadcrumbContainerDirective } from './ecl-breadcrumb-container.directive';\n\nexport * from './ecl-breadcrumb.component';\nexport * from './ecl-breadcrumb-segment.component';\nexport * from './models/ecl-breadcrumb.model';\nexport * from './events/ecl-breadcrumb-segment-click.event';\nexport * from './ecl-breadcrumb-container.directive';\n\nexport const EUI_ECL_BREADCRUMB = [\n EclBreadcrumbComponent, EclBreadcrumbSegmentComponent, EclBreadcrumbContainerDirective,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}