@eui/ecl 22.0.0-alpha.45 → 22.0.0-alpha.46

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 (159) hide show
  1. package/docs/changelog.html +38 -0
  2. package/docs/components/EclMenuItemComponent.html +203 -161
  3. package/docs/components/EclMenuMegaItemComponent.html +3 -3
  4. package/docs/interfaces/EclMenuItem.html +4 -4
  5. package/docs/js/search/search_index.js +2 -2
  6. package/docs/json/documentation.json +152 -124
  7. package/docs/llms.txt +13 -7
  8. package/docs/properties.html +1 -1
  9. package/fesm2022/eui-ecl-components-ecl-accordion.mjs.map +1 -1
  10. package/fesm2022/eui-ecl-components-ecl-add-to-calendar.mjs.map +1 -1
  11. package/fesm2022/eui-ecl-components-ecl-animated-numbers.mjs.map +1 -1
  12. package/fesm2022/eui-ecl-components-ecl-app.mjs.map +1 -1
  13. package/fesm2022/eui-ecl-components-ecl-banner.mjs.map +1 -1
  14. package/fesm2022/eui-ecl-components-ecl-blockquote.mjs.map +1 -1
  15. package/fesm2022/eui-ecl-components-ecl-breadcrumb.mjs.map +1 -1
  16. package/fesm2022/eui-ecl-components-ecl-button.mjs.map +1 -1
  17. package/fesm2022/eui-ecl-components-ecl-card.mjs.map +1 -1
  18. package/fesm2022/eui-ecl-components-ecl-carousel.mjs.map +1 -1
  19. package/fesm2022/eui-ecl-components-ecl-category-filter.mjs.map +1 -1
  20. package/fesm2022/eui-ecl-components-ecl-checkbox.mjs.map +1 -1
  21. package/fesm2022/eui-ecl-components-ecl-content-block.mjs.map +1 -1
  22. package/fesm2022/eui-ecl-components-ecl-content-item.mjs.map +1 -1
  23. package/fesm2022/eui-ecl-components-ecl-date-block.mjs.map +1 -1
  24. package/fesm2022/eui-ecl-components-ecl-date-picker.mjs.map +1 -1
  25. package/fesm2022/eui-ecl-components-ecl-divider.mjs.map +1 -1
  26. package/fesm2022/eui-ecl-components-ecl-expandable.mjs.map +1 -1
  27. package/fesm2022/eui-ecl-components-ecl-fact-figures.mjs.map +1 -1
  28. package/fesm2022/eui-ecl-components-ecl-featured.mjs.map +1 -1
  29. package/fesm2022/eui-ecl-components-ecl-feedback-message.mjs.map +1 -1
  30. package/fesm2022/eui-ecl-components-ecl-file-upload.mjs.map +1 -1
  31. package/fesm2022/eui-ecl-components-ecl-file.mjs.map +1 -1
  32. package/fesm2022/eui-ecl-components-ecl-form-group.mjs.map +1 -1
  33. package/fesm2022/eui-ecl-components-ecl-form-label.mjs.map +1 -1
  34. package/fesm2022/eui-ecl-components-ecl-gallery.mjs.map +1 -1
  35. package/fesm2022/eui-ecl-components-ecl-help-block.mjs.map +1 -1
  36. package/fesm2022/eui-ecl-components-ecl-highlight-box.mjs.map +1 -1
  37. package/fesm2022/eui-ecl-components-ecl-highlighted-search.mjs.map +1 -1
  38. package/fesm2022/eui-ecl-components-ecl-icon.mjs.map +1 -1
  39. package/fesm2022/eui-ecl-components-ecl-inpage-navigation.mjs.map +1 -1
  40. package/fesm2022/eui-ecl-components-ecl-label.mjs.map +1 -1
  41. package/fesm2022/eui-ecl-components-ecl-layout-wrapper.mjs.map +1 -1
  42. package/fesm2022/eui-ecl-components-ecl-link.mjs.map +1 -1
  43. package/fesm2022/eui-ecl-components-ecl-list-illustration.mjs.map +1 -1
  44. package/fesm2022/eui-ecl-components-ecl-list.mjs.map +1 -1
  45. package/fesm2022/eui-ecl-components-ecl-loading-indicator.mjs.map +1 -1
  46. package/fesm2022/eui-ecl-components-ecl-media-container.mjs.map +1 -1
  47. package/fesm2022/eui-ecl-components-ecl-mega-menu.mjs.map +1 -1
  48. package/fesm2022/eui-ecl-components-ecl-menu.mjs +67 -49
  49. package/fesm2022/eui-ecl-components-ecl-menu.mjs.map +1 -1
  50. package/fesm2022/eui-ecl-components-ecl-modal.mjs.map +1 -1
  51. package/fesm2022/eui-ecl-components-ecl-multiselect.mjs.map +1 -1
  52. package/fesm2022/eui-ecl-components-ecl-navigation-list.mjs.map +1 -1
  53. package/fesm2022/eui-ecl-components-ecl-news-ticker.mjs.map +1 -1
  54. package/fesm2022/eui-ecl-components-ecl-notification.mjs.map +1 -1
  55. package/fesm2022/eui-ecl-components-ecl-page-header.mjs.map +1 -1
  56. package/fesm2022/eui-ecl-components-ecl-page-information.mjs.map +1 -1
  57. package/fesm2022/eui-ecl-components-ecl-page-summary.mjs.map +1 -1
  58. package/fesm2022/eui-ecl-components-ecl-pagination.mjs.map +1 -1
  59. package/fesm2022/eui-ecl-components-ecl-popover.mjs.map +1 -1
  60. package/fesm2022/eui-ecl-components-ecl-quiz.mjs.map +1 -1
  61. package/fesm2022/eui-ecl-components-ecl-radio.mjs.map +1 -1
  62. package/fesm2022/eui-ecl-components-ecl-range.mjs.map +1 -1
  63. package/fesm2022/eui-ecl-components-ecl-rating-field.mjs.map +1 -1
  64. package/fesm2022/eui-ecl-components-ecl-search-form.mjs.map +1 -1
  65. package/fesm2022/eui-ecl-components-ecl-select.mjs.map +1 -1
  66. package/fesm2022/eui-ecl-components-ecl-site-footer.mjs.map +1 -1
  67. package/fesm2022/eui-ecl-components-ecl-site-header.mjs.map +1 -1
  68. package/fesm2022/eui-ecl-components-ecl-slogan-ticker.mjs.map +1 -1
  69. package/fesm2022/eui-ecl-components-ecl-social-media-follow.mjs.map +1 -1
  70. package/fesm2022/eui-ecl-components-ecl-splash-page.mjs.map +1 -1
  71. package/fesm2022/eui-ecl-components-ecl-spotlight.mjs.map +1 -1
  72. package/fesm2022/eui-ecl-components-ecl-sticky-container.mjs.map +1 -1
  73. package/fesm2022/eui-ecl-components-ecl-story-card.mjs.map +1 -1
  74. package/fesm2022/eui-ecl-components-ecl-table.mjs.map +1 -1
  75. package/fesm2022/eui-ecl-components-ecl-tabs.mjs.map +1 -1
  76. package/fesm2022/eui-ecl-components-ecl-tag.mjs.map +1 -1
  77. package/fesm2022/eui-ecl-components-ecl-text-area.mjs.map +1 -1
  78. package/fesm2022/eui-ecl-components-ecl-text-input.mjs.map +1 -1
  79. package/fesm2022/eui-ecl-components-ecl-text-media.mjs.map +1 -1
  80. package/fesm2022/eui-ecl-components-ecl-timeline.mjs.map +1 -1
  81. package/fesm2022/eui-ecl-components-ecl-tooltip.mjs.map +1 -1
  82. package/fesm2022/eui-ecl-core.mjs.map +1 -1
  83. package/fesm2022/eui-ecl-shared.mjs.map +1 -1
  84. package/package.json +1 -1
  85. package/types/eui-ecl-components-ecl-accordion.d.ts.map +1 -1
  86. package/types/eui-ecl-components-ecl-add-to-calendar.d.ts.map +1 -1
  87. package/types/eui-ecl-components-ecl-animated-numbers.d.ts.map +1 -1
  88. package/types/eui-ecl-components-ecl-app.d.ts.map +1 -1
  89. package/types/eui-ecl-components-ecl-banner.d.ts.map +1 -1
  90. package/types/eui-ecl-components-ecl-blockquote.d.ts.map +1 -1
  91. package/types/eui-ecl-components-ecl-breadcrumb.d.ts.map +1 -1
  92. package/types/eui-ecl-components-ecl-button.d.ts.map +1 -1
  93. package/types/eui-ecl-components-ecl-card.d.ts.map +1 -1
  94. package/types/eui-ecl-components-ecl-carousel.d.ts.map +1 -1
  95. package/types/eui-ecl-components-ecl-category-filter.d.ts.map +1 -1
  96. package/types/eui-ecl-components-ecl-checkbox.d.ts.map +1 -1
  97. package/types/eui-ecl-components-ecl-content-block.d.ts.map +1 -1
  98. package/types/eui-ecl-components-ecl-content-item.d.ts.map +1 -1
  99. package/types/eui-ecl-components-ecl-date-block.d.ts.map +1 -1
  100. package/types/eui-ecl-components-ecl-date-picker.d.ts.map +1 -1
  101. package/types/eui-ecl-components-ecl-divider.d.ts.map +1 -1
  102. package/types/eui-ecl-components-ecl-expandable.d.ts.map +1 -1
  103. package/types/eui-ecl-components-ecl-fact-figures.d.ts.map +1 -1
  104. package/types/eui-ecl-components-ecl-featured.d.ts.map +1 -1
  105. package/types/eui-ecl-components-ecl-feedback-message.d.ts.map +1 -1
  106. package/types/eui-ecl-components-ecl-file-upload.d.ts.map +1 -1
  107. package/types/eui-ecl-components-ecl-file.d.ts.map +1 -1
  108. package/types/eui-ecl-components-ecl-form-group.d.ts.map +1 -1
  109. package/types/eui-ecl-components-ecl-form-label.d.ts.map +1 -1
  110. package/types/eui-ecl-components-ecl-gallery.d.ts.map +1 -1
  111. package/types/eui-ecl-components-ecl-help-block.d.ts.map +1 -1
  112. package/types/eui-ecl-components-ecl-highlight-box.d.ts.map +1 -1
  113. package/types/eui-ecl-components-ecl-highlighted-search.d.ts.map +1 -1
  114. package/types/eui-ecl-components-ecl-icon.d.ts.map +1 -1
  115. package/types/eui-ecl-components-ecl-inpage-navigation.d.ts.map +1 -1
  116. package/types/eui-ecl-components-ecl-label.d.ts.map +1 -1
  117. package/types/eui-ecl-components-ecl-layout-wrapper.d.ts.map +1 -1
  118. package/types/eui-ecl-components-ecl-link.d.ts.map +1 -1
  119. package/types/eui-ecl-components-ecl-list-illustration.d.ts.map +1 -1
  120. package/types/eui-ecl-components-ecl-list.d.ts.map +1 -1
  121. package/types/eui-ecl-components-ecl-loading-indicator.d.ts.map +1 -1
  122. package/types/eui-ecl-components-ecl-media-container.d.ts.map +1 -1
  123. package/types/eui-ecl-components-ecl-mega-menu.d.ts.map +1 -1
  124. package/types/eui-ecl-components-ecl-menu.d.ts +16 -11
  125. package/types/eui-ecl-components-ecl-menu.d.ts.map +1 -1
  126. package/types/eui-ecl-components-ecl-modal.d.ts.map +1 -1
  127. package/types/eui-ecl-components-ecl-multiselect.d.ts.map +1 -1
  128. package/types/eui-ecl-components-ecl-navigation-list.d.ts.map +1 -1
  129. package/types/eui-ecl-components-ecl-news-ticker.d.ts.map +1 -1
  130. package/types/eui-ecl-components-ecl-notification.d.ts.map +1 -1
  131. package/types/eui-ecl-components-ecl-page-header.d.ts.map +1 -1
  132. package/types/eui-ecl-components-ecl-page-information.d.ts.map +1 -1
  133. package/types/eui-ecl-components-ecl-page-summary.d.ts.map +1 -1
  134. package/types/eui-ecl-components-ecl-pagination.d.ts.map +1 -1
  135. package/types/eui-ecl-components-ecl-popover.d.ts.map +1 -1
  136. package/types/eui-ecl-components-ecl-quiz.d.ts.map +1 -1
  137. package/types/eui-ecl-components-ecl-radio.d.ts.map +1 -1
  138. package/types/eui-ecl-components-ecl-range.d.ts.map +1 -1
  139. package/types/eui-ecl-components-ecl-rating-field.d.ts.map +1 -1
  140. package/types/eui-ecl-components-ecl-search-form.d.ts.map +1 -1
  141. package/types/eui-ecl-components-ecl-select.d.ts.map +1 -1
  142. package/types/eui-ecl-components-ecl-site-footer.d.ts.map +1 -1
  143. package/types/eui-ecl-components-ecl-site-header.d.ts.map +1 -1
  144. package/types/eui-ecl-components-ecl-slogan-ticker.d.ts.map +1 -1
  145. package/types/eui-ecl-components-ecl-social-media-follow.d.ts.map +1 -1
  146. package/types/eui-ecl-components-ecl-splash-page.d.ts.map +1 -1
  147. package/types/eui-ecl-components-ecl-spotlight.d.ts.map +1 -1
  148. package/types/eui-ecl-components-ecl-sticky-container.d.ts.map +1 -1
  149. package/types/eui-ecl-components-ecl-story-card.d.ts.map +1 -1
  150. package/types/eui-ecl-components-ecl-table.d.ts.map +1 -1
  151. package/types/eui-ecl-components-ecl-tabs.d.ts.map +1 -1
  152. package/types/eui-ecl-components-ecl-tag.d.ts.map +1 -1
  153. package/types/eui-ecl-components-ecl-text-area.d.ts.map +1 -1
  154. package/types/eui-ecl-components-ecl-text-input.d.ts.map +1 -1
  155. package/types/eui-ecl-components-ecl-text-media.d.ts.map +1 -1
  156. package/types/eui-ecl-components-ecl-timeline.d.ts.map +1 -1
  157. package/types/eui-ecl-components-ecl-tooltip.d.ts.map +1 -1
  158. package/types/eui-ecl-core.d.ts.map +1 -1
  159. package/types/eui-ecl-shared.d.ts.map +1 -1
@@ -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 } 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 host: {\n class: 'ecl-breadcrumb__container',\n },\n})\nexport class EclBreadcrumbContainerDirective extends ECLBaseDirective {\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 computed,\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 '[class]': 'cssClasses()',\n '[attr.aria-current]': 'ariaCurrent',\n '[attr.aria-hidden]': 'ariaHidden',\n '[attr.tabindex]': 'tabIndex',\n },\n})\nexport class EclBreadcrumbSegmentComponent extends ECLBaseDirective {\n el = inject(ElementRef);\n\n /**\n * Defines the tabindex attribute for accessibility.\n */\n protected 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 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 protected readonly cssClasses = computed<string>(() =>\n [\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 * 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 protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-breadcrumb'));\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 } 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 host: {\n class: 'ecl-breadcrumb__container',\n },\n})\nexport class EclBreadcrumbContainerDirective extends ECLBaseDirective {\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 computed,\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 '[class]': 'cssClasses()',\n '[attr.aria-current]': 'ariaCurrent',\n '[attr.aria-hidden]': 'ariaHidden',\n '[attr.tabindex]': 'tabIndex',\n },\n})\nexport class EclBreadcrumbSegmentComponent extends ECLBaseDirective {\n el = inject(ElementRef);\n\n /**\n * Defines the tabindex attribute for accessibility.\n */\n protected 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 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 protected readonly cssClasses = computed<string>(() =>\n [\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 * 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 protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-breadcrumb'));\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 +1 @@
1
- {"version":3,"file":"eui-ecl-components-ecl-button.mjs","sources":["../../components/ecl-button/ecl-indicator/ecl-indicator.component.ts","../../components/ecl-button/ecl-indicator/ecl-indicator.component.html","../../components/ecl-button/ecl-button.component.ts","../../components/ecl-button/ecl-button.component.html","../../components/ecl-button/ecl-button-label.directive.ts","../../components/ecl-button/ecl-indicator/ecl-indicator.directive.ts","../../components/ecl-button/index.ts","../../components/ecl-button/eui-ecl-components-ecl-button.ts"],"sourcesContent":["import { Component } from \"@angular/core\";\n\n/**\n * Component for indicating special content inside the ECL Button.\n * Automatically applies the `ecl-indicator` CSS class.\n */\n@Component({\n selector: '[eclIndicator]',\n templateUrl: './ecl-indicator.component.html',\n host: {\n class: 'ecl-indicator',\n },\n})\nexport class EclIndicatorComponent {\n}\n","<span class=\"ecl-indicator__value\"><ng-content></ng-content></span>\n<ng-content select=\"[eclIndicatorLabel]\"></ng-content>","import {\n AfterViewInit,\n booleanAttribute,\n Component,\n computed,\n contentChild,\n contentChildren,\n ElementRef,\n forwardRef,\n inject,\n PLATFORM_ID,\n input\n} from '@angular/core';\nimport { EclIconComponent, EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\nimport { isPlatformBrowser, NgTemplateOutlet } from '@angular/common';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclIndicatorComponent } from './ecl-indicator/ecl-indicator.component';\n\n/**\n * Button component based on ECL design system.\n * Can render as a `<button>` or `<a>` element depending on usage.\n * Supports multiple visual variants and optional icon/indicator content.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'button[eclButton], button[ecl-button], a[eclButton]',\n templateUrl: './ecl-button.component.html',\n imports: [\n NgTemplateOutlet,\n ...EUI_ECL_ICON,\n ],\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclButtonComponent extends ECLBaseDirective implements AfterViewInit {\n el = inject(ElementRef);\n\n /**\n * Whether the button should be styled as icon-only.\n * When true, the `ecl-button--icon-only` class is applied.\n */\n isIconOnly = input(false, { transform: booleanAttribute });\n\n /**\n * Visual variant of the button.\n * Can be 'primary', 'secondary', 'tertiary', 'cta', 'ghost', or 'ghost-inverted'.\n * Defaults to 'primary'.\n */\n variant = input<'primary' | 'secondary' | 'tertiary'>('primary');\n\n eclStyle = input<'highlight' | 'inverted' | 'neutral' | 'default' | 'highlight-inverted'>('default');\n\n size = input<'s' | 'm' | 'l'>('l');\n\n /**\n * Optional additional class to apply to the button container.\n */\n containerStyleClass = input<string>();\n\n /**\n * List of projected icon components inside the button.\n * Used internally to detect presence of icons.\n */\n iconComponents = contentChildren<EclIconComponent>(forwardRef(() => EclIconComponent));\n\n /**\n * Projected indicator element inside the button (e.g., for loading or notification).\n * Used internally to detect its presence.\n */\n indicator = contentChild(forwardRef(() => EclIndicatorComponent));\n\n /**\n * Computes the full set of CSS classes to apply to the button element.\n */\n protected readonly cssClasses = computed<string>(() =>\n [super.getCssClasses('ecl-button'), `ecl-button--${this.variant()}`,\n this.isIconOnly() ? 'ecl-button--icon-only' : '',\n this.eclStyle() !== 'default' ? `ecl-button--${this.eclStyle()}` : '',\n this.size() !== 'l' ? `ecl-button--${this.size()}` : '',\n ].join(' ').trim());\n\n private platformId = inject(PLATFORM_ID);\n\n /**\n * Indicates whether the button contains an icon.\n * Used internally for styling logic.\n */\n hasIcon = computed(() => this.iconComponents().length > 0);\n\n /**\n * Indicates whether the button contains an indicator element.\n * Used internally for styling logic.\n */\n hasIndicator = computed(() => !!this.indicator());\n\n /**\n * Lifecycle hook triggered after content is projected.\n * Assigns a button-specific class to projected icon components.\n */\n ngAfterViewInit(): void {\n if (!isPlatformBrowser(this.platformId)) return;\n if (this.iconComponents()?.length > 0) {\n setTimeout(() => {\n this.iconComponents().forEach((icn) => {\n icn.addExtraClass('ecl-button__icon');\n });\n });\n }\n }\n\n /**\n * Manually focuses the button element.\n */\n onFocus(): void {\n this.el.nativeElement.focus();\n }\n}\n","@if (hasIcon()) {\n<span class=\"ecl-button__container {{ containerStyleClass() }}\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</span>\n}\n@else {\n<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n}\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>","import { Directive, computed } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive for labeling content inside the ECL Button.\n * Automatically applies the `ecl-button__label` CSS class.\n */\n@Directive({\n selector: '[eclButtonLabel]',\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclButtonLabelDirective extends ECLBaseDirective {\n /**\n * Returns the CSS classes to apply for the button label.\n */\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-button__label'));\n}\n\n/**\n * Directive for the icon container inside the ECL Button.\n * Automatically applies the `ecl-button__icon-container` CSS class.\n */\n@Directive({\n selector: '[eclButtonIconContainer]',\n host: {\n class: 'ecl-button__icon-container',\n },\n})\nexport class EclButtonIconContainerDirective {\n}\n","import { Directive } from \"@angular/core\";\n\n/**\n * Directive for indicating special content inside the ECL Button.\n * Automatically applies the `ecl-indicator__label` CSS class.\n */\n@Directive({\n selector: '[eclIndicatorLabel]',\n host: {\n class: 'ecl-indicator__label',\n },\n})\nexport class EclIndicatorLabelDirective {\n}\n","import { EclButtonComponent } from './ecl-button.component';\nimport { EclButtonLabelDirective, EclButtonIconContainerDirective } from './ecl-button-label.directive';\nimport { EclIndicatorLabelDirective } from './ecl-indicator/ecl-indicator.directive';\nimport { EclIndicatorComponent } from './ecl-indicator/ecl-indicator.component';\n\nexport * from './ecl-button.component';\nexport * from './ecl-button-label.directive';\nexport * from './ecl-indicator/ecl-indicator.component';\nexport * from './ecl-indicator/ecl-indicator.directive';\n\nexport const EUI_ECL_BUTTON = [\n EclButtonComponent,\n EclButtonLabelDirective,\n EclIndicatorLabelDirective,\n EclIndicatorComponent,\n EclButtonIconContainerDirective,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eui-ecl-components-ecl-button.mjs","sources":["../../components/ecl-button/ecl-indicator/ecl-indicator.component.ts","../../components/ecl-button/ecl-indicator/ecl-indicator.component.html","../../components/ecl-button/ecl-button.component.ts","../../components/ecl-button/ecl-button.component.html","../../components/ecl-button/ecl-button-label.directive.ts","../../components/ecl-button/ecl-indicator/ecl-indicator.directive.ts","../../components/ecl-button/index.ts","../../components/ecl-button/eui-ecl-components-ecl-button.ts"],"sourcesContent":["import { Component } from \"@angular/core\";\n\n/**\n * Component for indicating special content inside the ECL Button.\n * Automatically applies the `ecl-indicator` CSS class.\n */\n@Component({\n selector: '[eclIndicator]',\n templateUrl: './ecl-indicator.component.html',\n host: {\n class: 'ecl-indicator',\n },\n})\nexport class EclIndicatorComponent {\n}\n","<span class=\"ecl-indicator__value\"><ng-content></ng-content></span>\n<ng-content select=\"[eclIndicatorLabel]\"></ng-content>","import {\n AfterViewInit,\n booleanAttribute,\n Component,\n computed,\n contentChild,\n contentChildren,\n ElementRef,\n forwardRef,\n inject,\n PLATFORM_ID,\n input\n} from '@angular/core';\nimport { EclIconComponent, EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\nimport { isPlatformBrowser, NgTemplateOutlet } from '@angular/common';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclIndicatorComponent } from './ecl-indicator/ecl-indicator.component';\n\n/**\n * Button component based on ECL design system.\n * Can render as a `<button>` or `<a>` element depending on usage.\n * Supports multiple visual variants and optional icon/indicator content.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'button[eclButton], button[ecl-button], a[eclButton]',\n templateUrl: './ecl-button.component.html',\n imports: [\n NgTemplateOutlet,\n ...EUI_ECL_ICON,\n ],\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclButtonComponent extends ECLBaseDirective implements AfterViewInit {\n el = inject(ElementRef);\n\n /**\n * Whether the button should be styled as icon-only.\n * When true, the `ecl-button--icon-only` class is applied.\n */\n isIconOnly = input(false, { transform: booleanAttribute });\n\n /**\n * Visual variant of the button.\n * Can be 'primary', 'secondary', 'tertiary', 'cta', 'ghost', or 'ghost-inverted'.\n * Defaults to 'primary'.\n */\n variant = input<'primary' | 'secondary' | 'tertiary'>('primary');\n\n eclStyle = input<'highlight' | 'inverted' | 'neutral' | 'default' | 'highlight-inverted'>('default');\n\n size = input<'s' | 'm' | 'l'>('l');\n\n /**\n * Optional additional class to apply to the button container.\n */\n containerStyleClass = input<string>();\n\n /**\n * List of projected icon components inside the button.\n * Used internally to detect presence of icons.\n */\n iconComponents = contentChildren<EclIconComponent>(forwardRef(() => EclIconComponent));\n\n /**\n * Projected indicator element inside the button (e.g., for loading or notification).\n * Used internally to detect its presence.\n */\n indicator = contentChild(forwardRef(() => EclIndicatorComponent));\n\n /**\n * Computes the full set of CSS classes to apply to the button element.\n */\n protected readonly cssClasses = computed<string>(() =>\n [super.getCssClasses('ecl-button'), `ecl-button--${this.variant()}`,\n this.isIconOnly() ? 'ecl-button--icon-only' : '',\n this.eclStyle() !== 'default' ? `ecl-button--${this.eclStyle()}` : '',\n this.size() !== 'l' ? `ecl-button--${this.size()}` : '',\n ].join(' ').trim());\n\n private platformId = inject(PLATFORM_ID);\n\n /**\n * Indicates whether the button contains an icon.\n * Used internally for styling logic.\n */\n hasIcon = computed(() => this.iconComponents().length > 0);\n\n /**\n * Indicates whether the button contains an indicator element.\n * Used internally for styling logic.\n */\n hasIndicator = computed(() => !!this.indicator());\n\n /**\n * Lifecycle hook triggered after content is projected.\n * Assigns a button-specific class to projected icon components.\n */\n ngAfterViewInit(): void {\n if (!isPlatformBrowser(this.platformId)) return;\n if (this.iconComponents()?.length > 0) {\n setTimeout(() => {\n this.iconComponents().forEach((icn) => {\n icn.addExtraClass('ecl-button__icon');\n });\n });\n }\n }\n\n /**\n * Manually focuses the button element.\n */\n onFocus(): void {\n this.el.nativeElement.focus();\n }\n}\n","@if (hasIcon()) {\n<span class=\"ecl-button__container {{ containerStyleClass() }}\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</span>\n}\n@else {\n<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n}\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>","import { Directive, computed } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive for labeling content inside the ECL Button.\n * Automatically applies the `ecl-button__label` CSS class.\n */\n@Directive({\n selector: '[eclButtonLabel]',\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclButtonLabelDirective extends ECLBaseDirective {\n /**\n * Returns the CSS classes to apply for the button label.\n */\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-button__label'));\n}\n\n/**\n * Directive for the icon container inside the ECL Button.\n * Automatically applies the `ecl-button__icon-container` CSS class.\n */\n@Directive({\n selector: '[eclButtonIconContainer]',\n host: {\n class: 'ecl-button__icon-container',\n },\n})\nexport class EclButtonIconContainerDirective {\n}\n","import { Directive } from \"@angular/core\";\n\n/**\n * Directive for indicating special content inside the ECL Button.\n * Automatically applies the `ecl-indicator__label` CSS class.\n */\n@Directive({\n selector: '[eclIndicatorLabel]',\n host: {\n class: 'ecl-indicator__label',\n },\n})\nexport class EclIndicatorLabelDirective {\n}\n","import { EclButtonComponent } from './ecl-button.component';\nimport { EclButtonLabelDirective, EclButtonIconContainerDirective } from './ecl-button-label.directive';\nimport { EclIndicatorLabelDirective } from './ecl-indicator/ecl-indicator.directive';\nimport { EclIndicatorComponent } from './ecl-indicator/ecl-indicator.component';\n\nexport * from './ecl-button.component';\nexport * from './ecl-button-label.directive';\nexport * from './ecl-indicator/ecl-indicator.component';\nexport * from './ecl-indicator/ecl-indicator.directive';\n\nexport const EUI_ECL_BUTTON = [\n EclButtonComponent,\n EclButtonLabelDirective,\n EclIndicatorLabelDirective,\n EclIndicatorComponent,\n EclButtonIconContainerDirective,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"eui-ecl-components-ecl-card.mjs","sources":["../../components/ecl-card/ecl-card-picture.directive.ts","../../components/ecl-card/ecl-card.component.ts","../../components/ecl-card/ecl-card.component.html","../../components/ecl-card/ecl-card-body.component.ts","../../components/ecl-card/ecl-card-body.component.html","../../components/ecl-card/index.ts","../../components/ecl-card/eui-ecl-components-ecl-card.ts"],"sourcesContent":["import { Directive, ElementRef, booleanAttribute, computed, inject, input } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive for the picture element used in ECL Card.\n * Applies required ECL CSS classes and optionally enables zoom effect.\n */\n@Directive({\n selector: 'picture[eclCardPicture]',\n host: {\n '[class]': 'cssClasses()',\n '[class.ecl-picture--zoom]': 'hasZoom()',\n },\n})\nexport class EclCardPictureDirective extends ECLBaseDirective {\n /**\n * When true, adds the `ecl-picture--zoom` class to enable zoom styling.\n */\n readonly hasZoom = input(false, { transform: booleanAttribute });\n\n /**\n * Returns the set of CSS classes to apply to the picture element.\n */\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-picture ecl-card__picture'));\n}\n\n/**\n * Directive for the image element used in ECL Card.\n * Applies the ECL-specific image class for card usage.\n */\n@Directive({\n selector: 'img[eclCardImage]',\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclCardImageDirective extends ECLBaseDirective {\n el = inject(ElementRef);\n\n /**\n * Returns the CSS classes to apply to the image element.\n */\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-card__image'));\n}\n","import { AfterViewInit, Component, ElementRef, forwardRef, inject, OnDestroy, PLATFORM_ID, Renderer2, contentChild } from '@angular/core';\nimport {\n EclContentBlockComponent,\n EclContentBlockTitleDirective,\n} from '@eui/ecl/components/ecl-content-block';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclCardImageDirective } from './ecl-card-picture.directive';\nimport { isPlatformBrowser } from '@angular/common';\n\n/**\n * Card component based on the ECL design system.\n * Combines image, title, and content block areas into a unified card layout.\n */\n@Component({\n selector: 'ecl-card, article[eclCard]',\n templateUrl: './ecl-card.component.html',\n host: {\n 'class': 'ecl-card',\n '[attr.role]': 'isLegacySelector ? \"article\" : null',\n '[style.display]': 'isLegacySelector ? \"block\" : null',\n },\n})\nexport class EclCardComponent extends ECLBaseDirective implements AfterViewInit, OnDestroy {\n private readonly el = inject(ElementRef);\n private readonly platformId = inject(PLATFORM_ID);\n\n /** Whether the component is used via the `<ecl-card>` element selector. */\n readonly isLegacySelector = this.el.nativeElement?.tagName?.toLowerCase() === 'ecl-card';\n\n /**\n * Projected ECL content block inside the card.\n */\n readonly eclContentBlock = contentChild(forwardRef(() => EclContentBlockComponent));\n\n /**\n * Projected content block title directive inside the card.\n */\n readonly eclContentBlockTitle = contentChild(forwardRef(() => EclContentBlockTitleDirective));\n\n /**\n * Projected image directive inside the card.\n */\n readonly eclCardImage = contentChild(forwardRef(() => EclCardImageDirective));\n private renderer = inject(Renderer2);\n private unlistenImageClick?: () => void;\n\n /**\n * Lifecycle hook triggered after view initialization.\n * Applies additional styling and attaches interaction between image and title link.\n */\n ngAfterViewInit(): void {\n if (!isPlatformBrowser(this.platformId)) return;\n\n this.attachClickEventToImage();\n\n const hostEl = this.eclContentBlock()?.el?.nativeElement;\n if (hostEl) {\n this.renderer.addClass(hostEl, 'ecl-card__content-block');\n }\n }\n\n ngOnDestroy(): void {\n this.unlistenImageClick?.();\n this.unlistenImageClick = undefined;\n }\n\n /**\n * Adds a click listener to the projected image element.\n * When clicked, triggers the title link click handler if available.\n */\n private attachClickEventToImage(): void {\n const link = this.eclContentBlockTitle()?.eclLink();\n const imgEl = this.eclCardImage()?.el?.nativeElement;\n\n if (!link || !imgEl) return;\n\n this.renderer.setStyle(imgEl, 'cursor', 'pointer');\n\n this.unlistenImageClick?.(); // avoid duplicates\n this.unlistenImageClick = this.renderer.listen(imgEl, 'click', () => {\n link.onClick();\n });\n }\n}\n","<ng-content></ng-content>\n","import { Component, computed } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Card body component based on the ECL design system.\n * Provides a wrapper for the main content area of the card.\n */\n@Component({\n selector: 'ecl-card-body',\n templateUrl: './ecl-card-body.component.html',\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclCardBodyComponent extends ECLBaseDirective {\n /**\n * Computes and returns the CSS class string for the card body element.\n */\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-card__body'));\n}\n","<ng-content></ng-content>\n","import { EclCardComponent } from './ecl-card.component';\nimport { EclCardBodyComponent } from './ecl-card-body.component';\nimport { EclCardImageDirective, EclCardPictureDirective } from './ecl-card-picture.directive';\n\nexport * from './ecl-card.component';\nexport * from './ecl-card-body.component';\nexport * from './ecl-card-picture.directive';\n\nexport const EUI_ECL_CARD = [\n EclCardComponent,\n EclCardBodyComponent,\n EclCardImageDirective,\n EclCardPictureDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eui-ecl-components-ecl-card.mjs","sources":["../../components/ecl-card/ecl-card-picture.directive.ts","../../components/ecl-card/ecl-card.component.ts","../../components/ecl-card/ecl-card.component.html","../../components/ecl-card/ecl-card-body.component.ts","../../components/ecl-card/ecl-card-body.component.html","../../components/ecl-card/index.ts","../../components/ecl-card/eui-ecl-components-ecl-card.ts"],"sourcesContent":["import { Directive, ElementRef, booleanAttribute, computed, inject, input } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive for the picture element used in ECL Card.\n * Applies required ECL CSS classes and optionally enables zoom effect.\n */\n@Directive({\n selector: 'picture[eclCardPicture]',\n host: {\n '[class]': 'cssClasses()',\n '[class.ecl-picture--zoom]': 'hasZoom()',\n },\n})\nexport class EclCardPictureDirective extends ECLBaseDirective {\n /**\n * When true, adds the `ecl-picture--zoom` class to enable zoom styling.\n */\n readonly hasZoom = input(false, { transform: booleanAttribute });\n\n /**\n * Returns the set of CSS classes to apply to the picture element.\n */\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-picture ecl-card__picture'));\n}\n\n/**\n * Directive for the image element used in ECL Card.\n * Applies the ECL-specific image class for card usage.\n */\n@Directive({\n selector: 'img[eclCardImage]',\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclCardImageDirective extends ECLBaseDirective {\n el = inject(ElementRef);\n\n /**\n * Returns the CSS classes to apply to the image element.\n */\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-card__image'));\n}\n","import { AfterViewInit, Component, ElementRef, forwardRef, inject, OnDestroy, PLATFORM_ID, Renderer2, contentChild } from '@angular/core';\nimport {\n EclContentBlockComponent,\n EclContentBlockTitleDirective,\n} from '@eui/ecl/components/ecl-content-block';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclCardImageDirective } from './ecl-card-picture.directive';\nimport { isPlatformBrowser } from '@angular/common';\n\n/**\n * Card component based on the ECL design system.\n * Combines image, title, and content block areas into a unified card layout.\n */\n@Component({\n selector: 'ecl-card, article[eclCard]',\n templateUrl: './ecl-card.component.html',\n host: {\n 'class': 'ecl-card',\n '[attr.role]': 'isLegacySelector ? \"article\" : null',\n '[style.display]': 'isLegacySelector ? \"block\" : null',\n },\n})\nexport class EclCardComponent extends ECLBaseDirective implements AfterViewInit, OnDestroy {\n private readonly el = inject(ElementRef);\n private readonly platformId = inject(PLATFORM_ID);\n\n /** Whether the component is used via the `<ecl-card>` element selector. */\n readonly isLegacySelector = this.el.nativeElement?.tagName?.toLowerCase() === 'ecl-card';\n\n /**\n * Projected ECL content block inside the card.\n */\n readonly eclContentBlock = contentChild(forwardRef(() => EclContentBlockComponent));\n\n /**\n * Projected content block title directive inside the card.\n */\n readonly eclContentBlockTitle = contentChild(forwardRef(() => EclContentBlockTitleDirective));\n\n /**\n * Projected image directive inside the card.\n */\n readonly eclCardImage = contentChild(forwardRef(() => EclCardImageDirective));\n private renderer = inject(Renderer2);\n private unlistenImageClick?: () => void;\n\n /**\n * Lifecycle hook triggered after view initialization.\n * Applies additional styling and attaches interaction between image and title link.\n */\n ngAfterViewInit(): void {\n if (!isPlatformBrowser(this.platformId)) return;\n\n this.attachClickEventToImage();\n\n const hostEl = this.eclContentBlock()?.el?.nativeElement;\n if (hostEl) {\n this.renderer.addClass(hostEl, 'ecl-card__content-block');\n }\n }\n\n ngOnDestroy(): void {\n this.unlistenImageClick?.();\n this.unlistenImageClick = undefined;\n }\n\n /**\n * Adds a click listener to the projected image element.\n * When clicked, triggers the title link click handler if available.\n */\n private attachClickEventToImage(): void {\n const link = this.eclContentBlockTitle()?.eclLink();\n const imgEl = this.eclCardImage()?.el?.nativeElement;\n\n if (!link || !imgEl) return;\n\n this.renderer.setStyle(imgEl, 'cursor', 'pointer');\n\n this.unlistenImageClick?.(); // avoid duplicates\n this.unlistenImageClick = this.renderer.listen(imgEl, 'click', () => {\n link.onClick();\n });\n }\n}\n","<ng-content></ng-content>\n","import { Component, computed } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Card body component based on the ECL design system.\n * Provides a wrapper for the main content area of the card.\n */\n@Component({\n selector: 'ecl-card-body',\n templateUrl: './ecl-card-body.component.html',\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclCardBodyComponent extends ECLBaseDirective {\n /**\n * Computes and returns the CSS class string for the card body element.\n */\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-card__body'));\n}\n","<ng-content></ng-content>\n","import { EclCardComponent } from './ecl-card.component';\nimport { EclCardBodyComponent } from './ecl-card-body.component';\nimport { EclCardImageDirective, EclCardPictureDirective } from './ecl-card-picture.directive';\n\nexport * from './ecl-card.component';\nexport * from './ecl-card-body.component';\nexport * from './ecl-card-picture.directive';\n\nexport const EUI_ECL_CARD = [\n EclCardComponent,\n EclCardBodyComponent,\n EclCardImageDirective,\n EclCardPictureDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"eui-ecl-components-ecl-carousel.mjs","sources":["../../components/ecl-carousel/events/ecl-slide.event.ts","../../components/ecl-carousel/ecl-carousel-item.component.ts","../../components/ecl-carousel/ecl-carousel-item.component.html","../../components/ecl-carousel/ecl-carousel.component.ts","../../components/ecl-carousel/ecl-carousel.component.html","../../components/ecl-carousel/index.ts","../../components/ecl-carousel/eui-ecl-components-ecl-carousel.ts"],"sourcesContent":["import { EclBaseEvent } from '@eui/ecl/core';\nimport { EclCarouselItem } from '../models/ecl-carousel-item.model';\n\nexport class EclSlideEvent extends EclBaseEvent {\n constructor(public item: EclCarouselItem) {\n super();\n }\n}","import {\n Component,\n ElementRef,\n booleanAttribute,\n computed,\n forwardRef,\n inject,\n input,\n linkedSignal,\n output,\n signal,\n contentChild,\n} from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclBannerComponent } from '@eui/ecl/components/ecl-banner';\nimport { EclSlideEvent } from './events/ecl-slide.event';\nimport { EclCarouselItem } from './models/ecl-carousel-item.model';\n\n/**\n * Represents a single item (slide) within the ECL Carousel.\n * Each slide can optionally include an EclBannerComponent and supports click events.\n */\n@Component({\n selector: 'ecl-carousel-item',\n templateUrl: './ecl-carousel-item.component.html',\n host: {\n role: 'tabpanel',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-roledescription]': '\"slide\"',\n '[attr.inert]': '!isCurrent() || undefined',\n '[class]': 'cssClasses()',\n '(click)': 'onSlideClick()',\n },\n styles: [\n `\n /* TODO: remove by implementing full ECL specs */\n :host:before {\n left: 0 !important;\n display: none;\n }\n `,\n ],\n})\nexport class EclCarouselItemComponent extends ECLBaseDirective implements EclCarouselItem {\n el = inject(ElementRef);\n\n /**\n * The aria-label for the slide, assigned dynamically by the carousel.\n */\n readonly ariaLabel = signal<string | undefined>(undefined);\n\n /**\n * The unique identifier of the slide.\n */\n readonly id = input<string>();\n\n /**\n * Input controlling whether this slide starts as the active/visible one.\n * Automatically coerced to a boolean value.\n */\n readonly isCurrentInput = input(false, { alias: 'isCurrent', transform: booleanAttribute });\n\n /**\n * Indicates whether this slide is currently active/visible.\n * Seeded from the `isCurrent` input but can be updated imperatively by the\n * parent carousel as the user navigates between slides.\n */\n readonly isCurrent = linkedSignal(() => this.isCurrentInput());\n\n /**\n * Emits an event when the slide is clicked.\n */\n readonly slideClick = output<EclSlideEvent>();\n\n /**\n * Optionally captures a banner component projected into the slide.\n */\n readonly banner = contentChild(forwardRef(() => EclBannerComponent));\n\n /**\n * Internal slide index, assigned dynamically by the carousel.\n */\n readonly index = signal<number | undefined>(undefined);\n\n /**\n * Computes the slide's CSS class.\n */\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-carousel__slide'));\n\n /**\n * Handles click events on the slide and emits a slideClick event.\n */\n onSlideClick(): void {\n this.slideClick.emit(new EclSlideEvent(this));\n }\n}\n","<ng-content></ng-content>\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport {\n AfterContentInit,\n ChangeDetectorRef,\n Component,\n computed,\n DOCUMENT,\n ElementRef,\n OnDestroy,\n OnInit,\n Renderer2,\n afterNextRender,\n booleanAttribute,\n forwardRef,\n inject,\n numberAttribute,\n output,\n input,\n viewChild,\n contentChildren,\n viewChildren,\n} from '@angular/core';\nimport { EclIconComponent } from '@eui/ecl/components/ecl-icon';\nimport { ECLBaseDirective, EclRtlService, KeyCode } from '@eui/ecl/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Subject, auditTime, fromEvent, interval, switchMap, takeUntil } from 'rxjs';\nimport { EclCarouselItemComponent } from './ecl-carousel-item.component';\nimport { EclSlideEvent } from './events/ecl-slide.event';\n\n/**\n * Component responsible for rendering a carousel (slideshow) with autoplay, keyboard navigation,\n * and support for RTL layouts. Extends the ECLBaseDirective for consistent styling and behavior.\n */\n@Component({\n selector: 'ecl-carousel',\n templateUrl: './ecl-carousel.component.html',\n imports: [\n TranslatePipe,\n EclIconComponent,\n EclCarouselItemComponent,\n ],\n host: {\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-roledescription]': '\"carousel\"',\n '[class]': 'cssClasses()',\n },\n styles: [\n `\n .ecl-carousel__slides {\n transition-duration: 0.4s;\n }\n `,\n ],\n})\nexport class EclCarouselComponent extends ECLBaseDirective implements OnInit, OnDestroy, AfterContentInit {\n /**\n * Aria-label for screen readers to describe the carousel.\n */\n readonly ariaLabel = input<string | null>('Carousel description here', { alias: 'aria-label' });\n\n /**\n * Determines whether the carousel should autoplay.\n */\n readonly isAutoplay = input<boolean, unknown>(undefined, { transform: booleanAttribute });\n\n /**\n * Interval in milliseconds between automatic slide transitions.\n */\n readonly playInterval = input(5000, { transform: numberAttribute });\n\n /**\n * Event emitted when a slide change occurs.\n */\n readonly slide = output<EclSlideEvent>();\n\n /**\n * Reference to the main carousel container element.\n */\n readonly carouselContainerElement = viewChild<ElementRef>('carouselContainer');\n\n /**\n * Collection of slide components rendered inside the carousel.\n */\n readonly slides = contentChildren(forwardRef(() => EclCarouselItemComponent));\n\n /**\n * References to the navigation buttons corresponding to each slide.\n */\n readonly navigationButtons = viewChildren<ElementRef>('currButton');\n\n /**\n * Reference to the play button element.\n */\n readonly playButton = viewChild<ElementRef>('playButton');\n\n /**\n * Reference to the pause button element.\n */\n readonly pauseButton = viewChild<ElementRef>('pauseButton');\n\n /**\n * Reference to the first hidden slide item (used for focus management).\n */\n readonly firstHiddenItem = viewChild<EclCarouselItemComponent>('firstHiddenItem');\n\n /**\n * Reference to the last hidden slide item (used for focus management).\n */\n readonly lastHiddenItem = viewChild<EclCarouselItemComponent>('lastHiddenItem');\n\n /**\n * Reference to the slides container element.\n */\n readonly slidesContainer = viewChild<ElementRef>('slidesContainer');\n\n /**\n * Indicates whether autoplay is currently active.\n */\n public isPlaying = false;\n\n /**\n * Indicates whether autoplay was manually paused.\n */\n public isPausedForced = false;\n\n /**\n * Indicates whether the layout is currently in RTL mode.\n */\n public isRtl = false;\n\n /**\n * Duration of the slide transition animation (in seconds).\n */\n transitionDuration = 0.4;\n\n private isMobileBreakpoint = false;\n private isSmallTabletBreakpoint = false;\n private isTabletBreakpoint = false;\n private isDesktopBreakpoint = false;\n private isLargeBreakpoint = false;\n private playSubject = new Subject<void>();\n private stopSubject = new Subject<void>();\n\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private unsubscribeListener: () => void;\n\n /**\n * Debounce interval (ms) used internally for timing and transitions.\n */\n private readonly TIMEOUT_INTERVAL = 400;\n private cdkBreakpointObserver = inject(BreakpointObserver);\n private cd = inject(ChangeDetectorRef);\n private renderer2 = inject(Renderer2);\n private eclRtlService = inject(EclRtlService);\n private readonly document = inject<Document>(DOCUMENT);\n private readonly window = this.document.defaultView; // Window | null\n\n constructor() {\n super();\n afterNextRender(() => {\n this.observeElementSizeChanges();\n this.cd.detectChanges();\n this.observeBreakpointChanges();\n\n fromEvent(this.window, 'resize').pipe(\n auditTime(50),\n takeUntil(this.destroy$)).subscribe(() => {\n this.transitionDuration = 0;\n this.cd.detectChanges();\n // Restore transition after layout settles\n setTimeout(() => {\n this.transitionDuration = 0.4;\n this.cd.detectChanges();\n });\n this.observeElementSizeChanges();\n });\n });\n }\n\n /**\n * Returns the computed CSS class list for the component.\n */\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-carousel'));\n\n /**\n * Angular lifecycle hook: initializes autoplay and RTL detection.\n */\n ngOnInit(): void {\n this.initAutoplay();\n this.handleRtlChangeState();\n }\n\n /**\n * Angular lifecycle hook: called after content (slides) is initialized.\n */\n ngAfterContentInit(): void {\n setTimeout(() => {\n this.initializeSlider();\n });\n }\n\n /**\n * Angular lifecycle hook: cleans up subscriptions and event listeners.\n */\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n if (this.unsubscribeListener) {\n this.unsubscribeListener();\n }\n }\n\n /**\n * Starts autoplay and focuses the pause button.\n */\n onPlayClick(): void {\n this.startPlaying();\n this.focusOnButton(this.pauseButton());\n }\n\n /**\n * Stops autoplay and focuses the play button.\n */\n onPauseClick(): void {\n this.stopPlaying();\n this.focusOnButton(this.playButton());\n }\n\n /**\n * Handles key press on the first carousel element to stop autoplay if TAB is pressed.\n */\n onFirstCarouselElementPress(e): void {\n if (e.key === KeyCode.TAB) {\n if (this.isPlaying) {\n this.stopPlaying();\n }\n }\n }\n\n /**\n * Handles keyboard interaction on the play button.\n */\n onPlayKeyboardPress(e): void {\n if (e.key === KeyCode.TAB && e.shiftKey) {\n return;\n }\n if ([KeyCode.TAB].includes(e.key)) {\n if (this.isPlaying) {\n this.focusOnButton(this.navigationButtons().at(this.getCurrentSlideIndex()));\n this.stopPlaying();\n } else {\n this.focusOnButton(this.navigationButtons().at(this.getCurrentSlideIndex()));\n }\n e.preventDefault();\n } else if (!this.isPlaying && [KeyCode.ARROW_RIGHT].includes(e.key)) {\n this.focusOnButton(this.navigationButtons().at(this.getCurrentSlideIndex()));\n }\n }\n\n /**\n * Handles keyboard navigation for the navigation buttons.\n */\n onNavBtnKeyboardPress(e: KeyboardEvent, index: number): void {\n if (e.key === KeyCode.ARROW_RIGHT) {\n this.onNavigationButtonArrowRight(e);\n } else if (e.key === KeyCode.ARROW_LEFT) {\n this.onNavigationButtonArrowLeft(e, index);\n }\n return;\n }\n\n /**\n * Checks whether a given button is currently visible (not hidden via style).\n */\n isButtonVisible(button: ElementRef): boolean {\n if (!button) {\n return false;\n }\n return button.nativeElement.style.display === '';\n }\n\n /**\n * Sets focus on the specified button.\n */\n focusOnButton(button: ElementRef): void {\n if (!button) {\n return;\n }\n button.nativeElement.focus();\n }\n\n /**\n * Handles user interaction with a slide control button.\n */\n onSlideControlClick(slide: EclCarouselItemComponent): void {\n this.stopPlaying();\n this.activateSlide(slide, true);\n }\n\n /**\n * Navigates to the next slide and stops autoplay.\n */\n onNextSlideClick(): void {\n this.stopPlaying();\n this.goToNextSlide(true);\n }\n\n /**\n * Navigates to the previous slide and stops autoplay.\n */\n onPreviousSlideClick(): void {\n this.stopPlaying();\n this.goToPreviousSlide(true);\n }\n\n /**\n * Pauses autoplay on mouse hover.\n */\n onSlideHover(): void {\n this.pausePlaying();\n }\n\n /**\n * Resumes autoplay on mouse leave, if not manually paused.\n */\n onSlideHoverout(): void {\n if (!this.isStopButtonPressed()) {\n this.resumePlaying();\n }\n }\n\n /**\n * Returns whether the stop button (pause) has been pressed by the user.\n */\n public isStopButtonPressed(): boolean {\n return this.isPausedForced;\n }\n\n /**\n * Returns whether the carousel has padding applied (e.g., on desktop breakpoint).\n */\n public isPadded(): boolean {\n return this.isDesktopBreakpoint;\n }\n\n /**\n * Checks whether there are enough slides to render controls.\n */\n public hasControls(): boolean {\n return this.getSlidesCount() > 1;\n }\n\n /**\n * Retrieves the current active slide index.\n * Corrects index for internal structure with hidden buffer slides.\n */\n public getCurrentSlideIndex(): number {\n let currentIndex: number;\n\n this.getAllSlidesArray().forEach((item, idx) => {\n if (item && item.isCurrent()) {\n currentIndex = idx;\n }\n });\n if (currentIndex === this.getAllSlidesCount() - 1) {\n return 0;\n } else if (currentIndex === 0) {\n return this.getSlidesCount() - 1;\n }\n return currentIndex - 1;\n }\n\n /**\n * Computes the left offset to shift the slides container.\n */\n public getCarouselSlidesOffsetLeft(): number {\n return -1 * this.carouselContainerElement()?.nativeElement.offsetWidth * this.getCurrentItemIndex();\n }\n\n /**\n * Computes the right offset to shift the slides container (same logic as left in RTL).\n */\n public getCarouselSlidesOffsetRight(): number {\n return -1 * this.carouselContainerElement()?.nativeElement.offsetWidth * this.getCurrentItemIndex();\n }\n\n /**\n * Subscribes to RTL layout state changes to adapt carousel behavior.\n */\n private handleRtlChangeState(): void {\n this.eclRtlService.currentRtlState$.pipe(takeUntil(this.destroy$)).subscribe((rtlState) => {\n this.isRtl = rtlState;\n });\n }\n\n /**\n * Initializes autoplay logic using RxJS intervals and subject triggers.\n */\n private initAutoplay(): void {\n const start$ = this.playSubject.asObservable();\n const stop$ = this.stopSubject.asObservable();\n\n start$\n .pipe(\n switchMap(() => interval(this.playInterval()).pipe(takeUntil(stop$))),\n takeUntil(this.destroy$),\n )\n .subscribe(() => {\n this.goToNextSlide(true);\n });\n }\n\n /**\n * Returns the index of the currently active slide item.\n */\n private getCurrentItemIndex(): number {\n let result = 0;\n this.getAllSlidesArray().forEach((item, index) => {\n if (item && item.isCurrent()) {\n result = index;\n }\n });\n return result;\n }\n\n /**\n * Initializes slides, hidden buffer items, and sets default active slide.\n */\n private initializeSlider(): void {\n this.slides().forEach((item, idx) => {\n this.initSlide(item, idx);\n });\n\n if (this.hasControls()) {\n this.initHiddenItems();\n if (this.isNoSlideSelected()) {\n this.activateSlide(this.slides().at(0)!, false);\n }\n }\n }\n\n /**\n * Initializes hidden first and last slide clones used for infinite scroll illusion.\n */\n private initHiddenItems(): void {\n this.firstHiddenItem().el.nativeElement.innerHTML = this.getLastContentChild();\n this.firstHiddenItem().isCurrent.set(false);\n this.lastHiddenItem().el.nativeElement.innerHTML = this.getFirstContentChild();\n this.lastHiddenItem().isCurrent.set(false);\n this.unsubscribeListener = this.renderer2.listen(this.slidesContainer().nativeElement, 'transitionend', () => this.checkIndex());\n }\n\n /**\n * Verifies current index and resets to actual slide if hidden clone is reached.\n */\n private checkIndex(): void {\n if (this.getCurrentItemIndex() === this.getAllSlidesCount() - 1) {\n const item = this.slides().at(0)!;\n this.activateSlide(item, false);\n } else if (this.getCurrentItemIndex() === 0) {\n const item = this.slides().at(-1)!;\n this.activateSlide(item, false);\n }\n }\n\n /**\n * Returns the inner HTML of the last real slide (used for buffer item).\n */\n private getLastContentChild(): string {\n return this.getSlidesCount() > 0 ? this.slides().at(this.getSlidesCount() - 1).el.nativeElement.innerHTML : '';\n }\n\n /**\n * Returns the inner HTML of the first real slide (used for buffer item).\n */\n private getFirstContentChild(): string {\n return this.getSlidesCount() > 0 ? this.slides().at(0).el.nativeElement.innerHTML : '';\n }\n\n /**\n * Sets up a slide with index and ARIA label.\n */\n private initSlide(item: EclCarouselItemComponent, idx: number): void {\n item.index.set(idx);\n item.ariaLabel.set(`slide ${idx + 1} of ${this.getSlidesCount()}`);\n const banner = item.banner();\n if (banner) {\n banner.skipHeightManagement = true;\n }\n }\n\n /**\n * Activates the next slide, with option to loop.\n */\n private goToNextSlide(isLoop: boolean): void {\n this.activateSlide(this.getNextSlide(isLoop), true);\n }\n\n /**\n * Activates the previous slide, with option to loop.\n */\n private goToPreviousSlide(isLoop: boolean): void {\n this.activateSlide(this.getPreviousSlide(isLoop), true);\n }\n\n /**\n * Activates a specific slide and triggers slide change event if needed.\n */\n private activateSlide(slideItem: EclCarouselItemComponent, withTransition: boolean): void {\n if (withTransition) {\n this.transitionDuration = 0.4;\n } else {\n this.transitionDuration = 0;\n }\n if (slideItem) {\n this.getAllSlidesArray().forEach((item) => {\n item.isCurrent.set(false);\n });\n slideItem.isCurrent.set(true);\n }\n this.cd.detectChanges();\n if (withTransition) {\n this.slide.emit(new EclSlideEvent(this.slides().at(this.getCurrentSlideIndex())));\n }\n }\n\n /**\n * Checks if the currently focused button is the last in the list.\n */\n private isLastButton(index): boolean {\n const buttonsList = this.navigationButtons();\n return index + 1 >= buttonsList.length;\n }\n\n /**\n * Checks if the currently focused button is the first in the list.\n */\n private isFirstButton(index): boolean {\n return index <= 0;\n }\n\n /**\n * Starts autoplay mode and updates state.\n */\n private startPlaying(): void {\n this.isPlaying = true;\n this.cd.detectChanges();\n this.isPausedForced = false;\n this.playSubject.next();\n }\n\n /**\n * Stops autoplay mode and updates state.\n */\n private stopPlaying(): void {\n this.isPlaying = false;\n this.cd.detectChanges();\n this.isPausedForced = true;\n this.stopSubject.next();\n }\n\n /**\n * Temporarily pauses autoplay (e.g. on mouse hover).\n */\n private pausePlaying(): void {\n this.isPlaying = false;\n this.cd.detectChanges();\n this.stopSubject.next();\n }\n\n /**\n * Resumes autoplay after being paused.\n */\n private resumePlaying(): void {\n this.isPlaying = true;\n this.cd.detectChanges();\n this.playSubject.next();\n }\n\n /**\n * Retrieves the next slide based on the current index and loop setting.\n */\n private getNextSlide(isLoop: boolean): EclCarouselItemComponent {\n const slidesCount = this.getSlidesCount();\n const currentIndex = this.getCurrentSlideIndex();\n\n if (currentIndex >= slidesCount - 1) {\n if (isLoop) {\n return this.getAllSlidesArray()[this.getAllSlidesCount() - 1];\n } else {\n return this.slides().at(-1)!;\n }\n } else {\n return this.slides().at(currentIndex + 1);\n }\n }\n\n /**\n * Returns all slides, including the hidden buffer items.\n */\n private getAllSlidesArray(): EclCarouselItemComponent[] {\n return [...[this.firstHiddenItem()], ...this.slides(), ...[this.lastHiddenItem()]];\n }\n\n /**\n * Retrieves the previous slide based on the current index and loop setting.\n */\n private getPreviousSlide(isLoop: boolean): EclCarouselItemComponent {\n const currentIndex = this.getCurrentSlideIndex();\n\n if (currentIndex <= 0) {\n if (isLoop) {\n return this.getAllSlidesArray()[0];\n } else {\n return this.slides().at(0)!;\n }\n } else {\n return this.slides().at(currentIndex - 1);\n }\n }\n\n /**\n * Returns the number of actual visible slides (excluding hidden buffer).\n */\n private getSlidesCount(): number {\n return this.slides().length;\n }\n\n /**\n * Returns total number of slides, including buffer (hidden) items.\n */\n private getAllSlidesCount(): number {\n if (this.hasControls()) {\n return this.slides().length + 2;\n } else {\n return this.slides().length;\n }\n }\n\n /**\n * Determines whether no slide is currently marked as active.\n */\n private isNoSlideSelected(): boolean {\n return !this.slides().some((item) => item.isCurrent());\n }\n\n /**\n * Handles right arrow key navigation for buttons.\n */\n private onNavigationButtonArrowRight(e: KeyboardEvent): void {\n setTimeout(() => {\n this.goToNextSlide(false);\n const button: ElementRef = this.navigationButtons().at(this.getCurrentSlideIndex());\n this.focusOnButton(button);\n }, this.TIMEOUT_INTERVAL);\n e.preventDefault();\n }\n\n /**\n * Handles left arrow key navigation for buttons.\n */\n private onNavigationButtonArrowLeft(e: KeyboardEvent, index: number): void {\n if (this.isFirstButton(index)) {\n const playButton = this.playButton();\n if (playButton) {\n this.focusOnButton(playButton);\n }\n const pauseButton = this.pauseButton();\n if (pauseButton) {\n this.focusOnButton(pauseButton);\n }\n } else {\n setTimeout(() => {\n this.goToPreviousSlide(false);\n const button: ElementRef = this.navigationButtons().at(this.getCurrentSlideIndex());\n this.focusOnButton(button);\n }, this.TIMEOUT_INTERVAL);\n e.preventDefault();\n }\n }\n\n /**\n * Observes screen breakpoint changes to adjust autoplay and layout behavior.\n */\n private observeBreakpointChanges(): void {\n this.cdkBreakpointObserver\n .observe([\n '(max-width: 768px)',\n '(max-width: 997px)',\n '(min-width: 998px)',\n '(min-width: 1140px)',\n '(min-width: 1140px) and (max-width: 1260px)',\n ])\n .pipe(takeUntil(this.destroy$))\n .subscribe((result) => {\n this.isMobileBreakpoint = result.breakpoints['(max-width: 768px)'];\n this.isSmallTabletBreakpoint = result.breakpoints['(max-width: 997px)'];\n this.isTabletBreakpoint = result.breakpoints['(min-width: 998px)'];\n this.isLargeBreakpoint = result.breakpoints['(min-width: 1140px)'];\n this.isDesktopBreakpoint = result.breakpoints['(min-width: 1140px) and (max-width: 1260px)'];\n const isAutoplay = this.isAutoplay();\n if (this.isMobileBreakpoint && !isAutoplay) {\n this.stopPlaying();\n }\n\n if (this.isTabletBreakpoint) {\n if (isAutoplay || isAutoplay === undefined) {\n this.startPlaying();\n }\n }\n });\n }\n\n /**\n * Observes changes to the carousel's container element size using ResizeObserver.\n */\n private observeElementSizeChanges(): void {\n setTimeout(() => {\n if (this.isLargeBreakpoint) {\n this.checkBannerHeights();\n } else {\n this.resetHeight();\n }\n }, this.TIMEOUT_INTERVAL);\n }\n\n /**\n * Normalizes the height of all banners to match the tallest banner.\n */\n private checkBannerHeights(): void {\n // First, let each banner calculate its own height (like ECL's bannerInstance.setHeight(ratio))\n this.slides().forEach((slide) => {\n const banner = slide.banner();\n if (banner) {\n banner.calculateHeight();\n }\n });\n\n const heightValues = this.slides().map((slide) => {\n const el = slide.banner()?.el.nativeElement;\n if (!el) return undefined;\n\n const styleHeight = el.style.height;\n\n if (styleHeight === 'auto' || styleHeight === '') {\n return el.offsetHeight;\n }\n\n const height = parseInt(styleHeight, 10);\n if (Number.isNaN(height) || height === 100) {\n return 1;\n }\n\n return height;\n });\n\n const elementHeights = heightValues.filter((h) => h !== undefined) as number[];\n const tallestElementHeight = Math.max(...elementHeights);\n\n const slides = this.slides();\n if (tallestElementHeight > 1 && elementHeights.length === slides.length) {\n slides.forEach((slide) => {\n const banner = slide.banner();\n if (!banner) return;\n\n const el = banner.el.nativeElement;\n const bannerImage = banner.eclBannerImage();\n const bannerVideo = banner.eclBannerVideo();\n\n this.renderer2.setStyle(el, 'height', `${tallestElementHeight}px`);\n this.renderer2.setStyle(el, 'aspect-ratio', 'auto');\n\n if (bannerImage) {\n this.renderer2.setStyle(bannerImage.el.nativeElement, 'aspect-ratio', 'auto');\n }\n if (bannerVideo) {\n this.renderer2.setStyle(bannerVideo.el.nativeElement, 'aspect-ratio', 'auto');\n }\n });\n this.resetHiddenItems();\n }\n }\n\n /**\n * Clears all explicit banner height and aspect ratio styling for smaller breakpoints.\n */\n private resetHeight(): void {\n this.slides().forEach((slide) => {\n const banner = slide.banner();\n if (banner) {\n const bannerImage = banner.eclBannerImage();\n const bannerVideo = banner.eclBannerVideo();\n this.renderer2.removeStyle(banner.el.nativeElement, 'height');\n this.renderer2.removeStyle(banner.el.nativeElement, 'aspect-ratio');\n if (bannerImage) {\n this.renderer2.removeStyle(bannerImage.el.nativeElement, 'aspect-ratio');\n }\n if (bannerVideo) {\n this.renderer2.removeStyle(bannerVideo.el.nativeElement, 'aspect-ratio');\n }\n }\n });\n this.resetHiddenItems();\n }\n\n /**\n * Re-renders the content of hidden buffer items after style reset.\n */\n private resetHiddenItems(): void {\n if (this.hasControls()) {\n this.firstHiddenItem().el.nativeElement.innerHTML = this.getLastContentChild();\n this.lastHiddenItem().el.nativeElement.innerHTML = this.getFirstContentChild();\n }\n }\n}\n","@if(hasControls()){\n<div class=\"ecl-carousel__controls\">\n <div class=\"ecl-container\">\n <div class=\"ecl-carousel__autoplay\">\n <button #playButton class=\"ecl-button ecl-button--tertiary ecl-button--neutral ecl-carousel__play ecl-button--icon-only\"\n type=\"button\" [style.display]=\"isPlaying ? 'none' : 'flex'\" (keydown)=\"onPlayKeyboardPress($event)\"\n (click)=\"onPlayClick()\">\n <span class=\"ecl-button__container\">\n <span class=\"ecl-button__label\">\n {{ 'ecl.carousel.PLAY' | translate }}\n </span>\n <ecl-icon icon=\"play-outline\" size=\"m\" class=\"ecl-button__icon ecl-carousel__icon-default\">\n </ecl-icon>\n </span>\n </button>\n\n <button #pauseButton class=\"ecl-button ecl-button--tertiary ecl-button--neutral ecl-carousel__pause ecl-button--icon-only\"\n type=\"button\" [style.display]=\"isPlaying ? 'flex' : 'none'\" (keydown)=\"onPlayKeyboardPress($event)\"\n (click)=\"onPauseClick()\">\n <span class=\"ecl-button__container\">\n <span class=\"ecl-button__label\">\n {{ 'ecl.carousel.PAUSE' | translate }}\n </span>\n <ecl-icon icon=\"pause-outline\" size=\"m\" class=\"ecl-button__icon ecl-carousel__icon-default\"> </ecl-icon>\n </span>\n\n </button>\n </div>\n\n <div class=\"ecl-carousel__navigation\" role=\"tablist\" >\n @for (slide of slides(); let i = $index; track slide) {\n <button #currButton [attr.aria-current]=\"i === getCurrentSlideIndex()\" [attr.tabindex]=\"i === getCurrentSlideIndex() ? null: -1\"\n class=\"ecl-button ecl-button--tertiary ecl-button--neutral ecl-carousel__navigation-item\" role=\"tab\" (click)=\"onSlideControlClick(slide)\"\n (keydown)=\"onNavBtnKeyboardPress($event, i)\">\n {{ i + 1 }}\n </button>\n }\n </div>\n </div>\n</div>\n}\n<div #carouselContainer class=\"ecl-carousel__container\" [class.ecl-carousel-container--padded]=\"isPadded()\">\n <div #slidesContainer (keyup)=\"onFirstCarouselElementPress($event)\" class=\"ecl-carousel__slides\"\n [style.left.px]=\"!isRtl ? getCarouselSlidesOffsetLeft() : null\"\n [style.right.px]=\"isRtl ? getCarouselSlidesOffsetRight() : null\"\n [style.transition-duration.s]=\"transitionDuration\" (mouseover)=\"onSlideHover()\" (mouseout)=\"onSlideHoverout()\">\n\n @if(hasControls()){\n <ecl-carousel-item #firstHiddenItem></ecl-carousel-item>\n }\n <ng-content></ng-content>\n\n @if(hasControls()){\n <ecl-carousel-item #lastHiddenItem></ecl-carousel-item>\n }\n </div>\n</div>\n","import { EclCarouselComponent } from './ecl-carousel.component';\nimport { EclCarouselItemComponent } from './ecl-carousel-item.component';\n\nexport * from './ecl-carousel.component';\nexport * from './ecl-carousel-item.component';\nexport * from './events/ecl-slide.event';\nexport * from './models/ecl-carousel-item.model';\n\nexport const EUI_ECL_CAROUSEL = [\n EclCarouselComponent,\n EclCarouselItemComponent,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eui-ecl-components-ecl-carousel.mjs","sources":["../../components/ecl-carousel/events/ecl-slide.event.ts","../../components/ecl-carousel/ecl-carousel-item.component.ts","../../components/ecl-carousel/ecl-carousel-item.component.html","../../components/ecl-carousel/ecl-carousel.component.ts","../../components/ecl-carousel/ecl-carousel.component.html","../../components/ecl-carousel/index.ts","../../components/ecl-carousel/eui-ecl-components-ecl-carousel.ts"],"sourcesContent":["import { EclBaseEvent } from '@eui/ecl/core';\nimport { EclCarouselItem } from '../models/ecl-carousel-item.model';\n\nexport class EclSlideEvent extends EclBaseEvent {\n constructor(public item: EclCarouselItem) {\n super();\n }\n}","import {\n Component,\n ElementRef,\n booleanAttribute,\n computed,\n forwardRef,\n inject,\n input,\n linkedSignal,\n output,\n signal,\n contentChild,\n} from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclBannerComponent } from '@eui/ecl/components/ecl-banner';\nimport { EclSlideEvent } from './events/ecl-slide.event';\nimport { EclCarouselItem } from './models/ecl-carousel-item.model';\n\n/**\n * Represents a single item (slide) within the ECL Carousel.\n * Each slide can optionally include an EclBannerComponent and supports click events.\n */\n@Component({\n selector: 'ecl-carousel-item',\n templateUrl: './ecl-carousel-item.component.html',\n host: {\n role: 'tabpanel',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-roledescription]': '\"slide\"',\n '[attr.inert]': '!isCurrent() || undefined',\n '[class]': 'cssClasses()',\n '(click)': 'onSlideClick()',\n },\n styles: [\n `\n /* TODO: remove by implementing full ECL specs */\n :host:before {\n left: 0 !important;\n display: none;\n }\n `,\n ],\n})\nexport class EclCarouselItemComponent extends ECLBaseDirective implements EclCarouselItem {\n el = inject(ElementRef);\n\n /**\n * The aria-label for the slide, assigned dynamically by the carousel.\n */\n readonly ariaLabel = signal<string | undefined>(undefined);\n\n /**\n * The unique identifier of the slide.\n */\n readonly id = input<string>();\n\n /**\n * Input controlling whether this slide starts as the active/visible one.\n * Automatically coerced to a boolean value.\n */\n readonly isCurrentInput = input(false, { alias: 'isCurrent', transform: booleanAttribute });\n\n /**\n * Indicates whether this slide is currently active/visible.\n * Seeded from the `isCurrent` input but can be updated imperatively by the\n * parent carousel as the user navigates between slides.\n */\n readonly isCurrent = linkedSignal(() => this.isCurrentInput());\n\n /**\n * Emits an event when the slide is clicked.\n */\n readonly slideClick = output<EclSlideEvent>();\n\n /**\n * Optionally captures a banner component projected into the slide.\n */\n readonly banner = contentChild(forwardRef(() => EclBannerComponent));\n\n /**\n * Internal slide index, assigned dynamically by the carousel.\n */\n readonly index = signal<number | undefined>(undefined);\n\n /**\n * Computes the slide's CSS class.\n */\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-carousel__slide'));\n\n /**\n * Handles click events on the slide and emits a slideClick event.\n */\n onSlideClick(): void {\n this.slideClick.emit(new EclSlideEvent(this));\n }\n}\n","<ng-content></ng-content>\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport {\n AfterContentInit,\n ChangeDetectorRef,\n Component,\n computed,\n DOCUMENT,\n ElementRef,\n OnDestroy,\n OnInit,\n Renderer2,\n afterNextRender,\n booleanAttribute,\n forwardRef,\n inject,\n numberAttribute,\n output,\n input,\n viewChild,\n contentChildren,\n viewChildren,\n} from '@angular/core';\nimport { EclIconComponent } from '@eui/ecl/components/ecl-icon';\nimport { ECLBaseDirective, EclRtlService, KeyCode } from '@eui/ecl/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Subject, auditTime, fromEvent, interval, switchMap, takeUntil } from 'rxjs';\nimport { EclCarouselItemComponent } from './ecl-carousel-item.component';\nimport { EclSlideEvent } from './events/ecl-slide.event';\n\n/**\n * Component responsible for rendering a carousel (slideshow) with autoplay, keyboard navigation,\n * and support for RTL layouts. Extends the ECLBaseDirective for consistent styling and behavior.\n */\n@Component({\n selector: 'ecl-carousel',\n templateUrl: './ecl-carousel.component.html',\n imports: [\n TranslatePipe,\n EclIconComponent,\n EclCarouselItemComponent,\n ],\n host: {\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-roledescription]': '\"carousel\"',\n '[class]': 'cssClasses()',\n },\n styles: [\n `\n .ecl-carousel__slides {\n transition-duration: 0.4s;\n }\n `,\n ],\n})\nexport class EclCarouselComponent extends ECLBaseDirective implements OnInit, OnDestroy, AfterContentInit {\n /**\n * Aria-label for screen readers to describe the carousel.\n */\n readonly ariaLabel = input<string | null>('Carousel description here', { alias: 'aria-label' });\n\n /**\n * Determines whether the carousel should autoplay.\n */\n readonly isAutoplay = input<boolean, unknown>(undefined, { transform: booleanAttribute });\n\n /**\n * Interval in milliseconds between automatic slide transitions.\n */\n readonly playInterval = input(5000, { transform: numberAttribute });\n\n /**\n * Event emitted when a slide change occurs.\n */\n readonly slide = output<EclSlideEvent>();\n\n /**\n * Reference to the main carousel container element.\n */\n readonly carouselContainerElement = viewChild<ElementRef>('carouselContainer');\n\n /**\n * Collection of slide components rendered inside the carousel.\n */\n readonly slides = contentChildren(forwardRef(() => EclCarouselItemComponent));\n\n /**\n * References to the navigation buttons corresponding to each slide.\n */\n readonly navigationButtons = viewChildren<ElementRef>('currButton');\n\n /**\n * Reference to the play button element.\n */\n readonly playButton = viewChild<ElementRef>('playButton');\n\n /**\n * Reference to the pause button element.\n */\n readonly pauseButton = viewChild<ElementRef>('pauseButton');\n\n /**\n * Reference to the first hidden slide item (used for focus management).\n */\n readonly firstHiddenItem = viewChild<EclCarouselItemComponent>('firstHiddenItem');\n\n /**\n * Reference to the last hidden slide item (used for focus management).\n */\n readonly lastHiddenItem = viewChild<EclCarouselItemComponent>('lastHiddenItem');\n\n /**\n * Reference to the slides container element.\n */\n readonly slidesContainer = viewChild<ElementRef>('slidesContainer');\n\n /**\n * Indicates whether autoplay is currently active.\n */\n public isPlaying = false;\n\n /**\n * Indicates whether autoplay was manually paused.\n */\n public isPausedForced = false;\n\n /**\n * Indicates whether the layout is currently in RTL mode.\n */\n public isRtl = false;\n\n /**\n * Duration of the slide transition animation (in seconds).\n */\n transitionDuration = 0.4;\n\n private isMobileBreakpoint = false;\n private isSmallTabletBreakpoint = false;\n private isTabletBreakpoint = false;\n private isDesktopBreakpoint = false;\n private isLargeBreakpoint = false;\n private playSubject = new Subject<void>();\n private stopSubject = new Subject<void>();\n\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private unsubscribeListener: () => void;\n\n /**\n * Debounce interval (ms) used internally for timing and transitions.\n */\n private readonly TIMEOUT_INTERVAL = 400;\n private cdkBreakpointObserver = inject(BreakpointObserver);\n private cd = inject(ChangeDetectorRef);\n private renderer2 = inject(Renderer2);\n private eclRtlService = inject(EclRtlService);\n private readonly document = inject<Document>(DOCUMENT);\n private readonly window = this.document.defaultView; // Window | null\n\n constructor() {\n super();\n afterNextRender(() => {\n this.observeElementSizeChanges();\n this.cd.detectChanges();\n this.observeBreakpointChanges();\n\n fromEvent(this.window, 'resize').pipe(\n auditTime(50),\n takeUntil(this.destroy$)).subscribe(() => {\n this.transitionDuration = 0;\n this.cd.detectChanges();\n // Restore transition after layout settles\n setTimeout(() => {\n this.transitionDuration = 0.4;\n this.cd.detectChanges();\n });\n this.observeElementSizeChanges();\n });\n });\n }\n\n /**\n * Returns the computed CSS class list for the component.\n */\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-carousel'));\n\n /**\n * Angular lifecycle hook: initializes autoplay and RTL detection.\n */\n ngOnInit(): void {\n this.initAutoplay();\n this.handleRtlChangeState();\n }\n\n /**\n * Angular lifecycle hook: called after content (slides) is initialized.\n */\n ngAfterContentInit(): void {\n setTimeout(() => {\n this.initializeSlider();\n });\n }\n\n /**\n * Angular lifecycle hook: cleans up subscriptions and event listeners.\n */\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n if (this.unsubscribeListener) {\n this.unsubscribeListener();\n }\n }\n\n /**\n * Starts autoplay and focuses the pause button.\n */\n onPlayClick(): void {\n this.startPlaying();\n this.focusOnButton(this.pauseButton());\n }\n\n /**\n * Stops autoplay and focuses the play button.\n */\n onPauseClick(): void {\n this.stopPlaying();\n this.focusOnButton(this.playButton());\n }\n\n /**\n * Handles key press on the first carousel element to stop autoplay if TAB is pressed.\n */\n onFirstCarouselElementPress(e): void {\n if (e.key === KeyCode.TAB) {\n if (this.isPlaying) {\n this.stopPlaying();\n }\n }\n }\n\n /**\n * Handles keyboard interaction on the play button.\n */\n onPlayKeyboardPress(e): void {\n if (e.key === KeyCode.TAB && e.shiftKey) {\n return;\n }\n if ([KeyCode.TAB].includes(e.key)) {\n if (this.isPlaying) {\n this.focusOnButton(this.navigationButtons().at(this.getCurrentSlideIndex()));\n this.stopPlaying();\n } else {\n this.focusOnButton(this.navigationButtons().at(this.getCurrentSlideIndex()));\n }\n e.preventDefault();\n } else if (!this.isPlaying && [KeyCode.ARROW_RIGHT].includes(e.key)) {\n this.focusOnButton(this.navigationButtons().at(this.getCurrentSlideIndex()));\n }\n }\n\n /**\n * Handles keyboard navigation for the navigation buttons.\n */\n onNavBtnKeyboardPress(e: KeyboardEvent, index: number): void {\n if (e.key === KeyCode.ARROW_RIGHT) {\n this.onNavigationButtonArrowRight(e);\n } else if (e.key === KeyCode.ARROW_LEFT) {\n this.onNavigationButtonArrowLeft(e, index);\n }\n return;\n }\n\n /**\n * Checks whether a given button is currently visible (not hidden via style).\n */\n isButtonVisible(button: ElementRef): boolean {\n if (!button) {\n return false;\n }\n return button.nativeElement.style.display === '';\n }\n\n /**\n * Sets focus on the specified button.\n */\n focusOnButton(button: ElementRef): void {\n if (!button) {\n return;\n }\n button.nativeElement.focus();\n }\n\n /**\n * Handles user interaction with a slide control button.\n */\n onSlideControlClick(slide: EclCarouselItemComponent): void {\n this.stopPlaying();\n this.activateSlide(slide, true);\n }\n\n /**\n * Navigates to the next slide and stops autoplay.\n */\n onNextSlideClick(): void {\n this.stopPlaying();\n this.goToNextSlide(true);\n }\n\n /**\n * Navigates to the previous slide and stops autoplay.\n */\n onPreviousSlideClick(): void {\n this.stopPlaying();\n this.goToPreviousSlide(true);\n }\n\n /**\n * Pauses autoplay on mouse hover.\n */\n onSlideHover(): void {\n this.pausePlaying();\n }\n\n /**\n * Resumes autoplay on mouse leave, if not manually paused.\n */\n onSlideHoverout(): void {\n if (!this.isStopButtonPressed()) {\n this.resumePlaying();\n }\n }\n\n /**\n * Returns whether the stop button (pause) has been pressed by the user.\n */\n public isStopButtonPressed(): boolean {\n return this.isPausedForced;\n }\n\n /**\n * Returns whether the carousel has padding applied (e.g., on desktop breakpoint).\n */\n public isPadded(): boolean {\n return this.isDesktopBreakpoint;\n }\n\n /**\n * Checks whether there are enough slides to render controls.\n */\n public hasControls(): boolean {\n return this.getSlidesCount() > 1;\n }\n\n /**\n * Retrieves the current active slide index.\n * Corrects index for internal structure with hidden buffer slides.\n */\n public getCurrentSlideIndex(): number {\n let currentIndex: number;\n\n this.getAllSlidesArray().forEach((item, idx) => {\n if (item && item.isCurrent()) {\n currentIndex = idx;\n }\n });\n if (currentIndex === this.getAllSlidesCount() - 1) {\n return 0;\n } else if (currentIndex === 0) {\n return this.getSlidesCount() - 1;\n }\n return currentIndex - 1;\n }\n\n /**\n * Computes the left offset to shift the slides container.\n */\n public getCarouselSlidesOffsetLeft(): number {\n return -1 * this.carouselContainerElement()?.nativeElement.offsetWidth * this.getCurrentItemIndex();\n }\n\n /**\n * Computes the right offset to shift the slides container (same logic as left in RTL).\n */\n public getCarouselSlidesOffsetRight(): number {\n return -1 * this.carouselContainerElement()?.nativeElement.offsetWidth * this.getCurrentItemIndex();\n }\n\n /**\n * Subscribes to RTL layout state changes to adapt carousel behavior.\n */\n private handleRtlChangeState(): void {\n this.eclRtlService.currentRtlState$.pipe(takeUntil(this.destroy$)).subscribe((rtlState) => {\n this.isRtl = rtlState;\n });\n }\n\n /**\n * Initializes autoplay logic using RxJS intervals and subject triggers.\n */\n private initAutoplay(): void {\n const start$ = this.playSubject.asObservable();\n const stop$ = this.stopSubject.asObservable();\n\n start$\n .pipe(\n switchMap(() => interval(this.playInterval()).pipe(takeUntil(stop$))),\n takeUntil(this.destroy$),\n )\n .subscribe(() => {\n this.goToNextSlide(true);\n });\n }\n\n /**\n * Returns the index of the currently active slide item.\n */\n private getCurrentItemIndex(): number {\n let result = 0;\n this.getAllSlidesArray().forEach((item, index) => {\n if (item && item.isCurrent()) {\n result = index;\n }\n });\n return result;\n }\n\n /**\n * Initializes slides, hidden buffer items, and sets default active slide.\n */\n private initializeSlider(): void {\n this.slides().forEach((item, idx) => {\n this.initSlide(item, idx);\n });\n\n if (this.hasControls()) {\n this.initHiddenItems();\n if (this.isNoSlideSelected()) {\n this.activateSlide(this.slides().at(0)!, false);\n }\n }\n }\n\n /**\n * Initializes hidden first and last slide clones used for infinite scroll illusion.\n */\n private initHiddenItems(): void {\n this.firstHiddenItem().el.nativeElement.innerHTML = this.getLastContentChild();\n this.firstHiddenItem().isCurrent.set(false);\n this.lastHiddenItem().el.nativeElement.innerHTML = this.getFirstContentChild();\n this.lastHiddenItem().isCurrent.set(false);\n this.unsubscribeListener = this.renderer2.listen(this.slidesContainer().nativeElement, 'transitionend', () => this.checkIndex());\n }\n\n /**\n * Verifies current index and resets to actual slide if hidden clone is reached.\n */\n private checkIndex(): void {\n if (this.getCurrentItemIndex() === this.getAllSlidesCount() - 1) {\n const item = this.slides().at(0)!;\n this.activateSlide(item, false);\n } else if (this.getCurrentItemIndex() === 0) {\n const item = this.slides().at(-1)!;\n this.activateSlide(item, false);\n }\n }\n\n /**\n * Returns the inner HTML of the last real slide (used for buffer item).\n */\n private getLastContentChild(): string {\n return this.getSlidesCount() > 0 ? this.slides().at(this.getSlidesCount() - 1).el.nativeElement.innerHTML : '';\n }\n\n /**\n * Returns the inner HTML of the first real slide (used for buffer item).\n */\n private getFirstContentChild(): string {\n return this.getSlidesCount() > 0 ? this.slides().at(0).el.nativeElement.innerHTML : '';\n }\n\n /**\n * Sets up a slide with index and ARIA label.\n */\n private initSlide(item: EclCarouselItemComponent, idx: number): void {\n item.index.set(idx);\n item.ariaLabel.set(`slide ${idx + 1} of ${this.getSlidesCount()}`);\n const banner = item.banner();\n if (banner) {\n banner.skipHeightManagement = true;\n }\n }\n\n /**\n * Activates the next slide, with option to loop.\n */\n private goToNextSlide(isLoop: boolean): void {\n this.activateSlide(this.getNextSlide(isLoop), true);\n }\n\n /**\n * Activates the previous slide, with option to loop.\n */\n private goToPreviousSlide(isLoop: boolean): void {\n this.activateSlide(this.getPreviousSlide(isLoop), true);\n }\n\n /**\n * Activates a specific slide and triggers slide change event if needed.\n */\n private activateSlide(slideItem: EclCarouselItemComponent, withTransition: boolean): void {\n if (withTransition) {\n this.transitionDuration = 0.4;\n } else {\n this.transitionDuration = 0;\n }\n if (slideItem) {\n this.getAllSlidesArray().forEach((item) => {\n item.isCurrent.set(false);\n });\n slideItem.isCurrent.set(true);\n }\n this.cd.detectChanges();\n if (withTransition) {\n this.slide.emit(new EclSlideEvent(this.slides().at(this.getCurrentSlideIndex())));\n }\n }\n\n /**\n * Checks if the currently focused button is the last in the list.\n */\n private isLastButton(index): boolean {\n const buttonsList = this.navigationButtons();\n return index + 1 >= buttonsList.length;\n }\n\n /**\n * Checks if the currently focused button is the first in the list.\n */\n private isFirstButton(index): boolean {\n return index <= 0;\n }\n\n /**\n * Starts autoplay mode and updates state.\n */\n private startPlaying(): void {\n this.isPlaying = true;\n this.cd.detectChanges();\n this.isPausedForced = false;\n this.playSubject.next();\n }\n\n /**\n * Stops autoplay mode and updates state.\n */\n private stopPlaying(): void {\n this.isPlaying = false;\n this.cd.detectChanges();\n this.isPausedForced = true;\n this.stopSubject.next();\n }\n\n /**\n * Temporarily pauses autoplay (e.g. on mouse hover).\n */\n private pausePlaying(): void {\n this.isPlaying = false;\n this.cd.detectChanges();\n this.stopSubject.next();\n }\n\n /**\n * Resumes autoplay after being paused.\n */\n private resumePlaying(): void {\n this.isPlaying = true;\n this.cd.detectChanges();\n this.playSubject.next();\n }\n\n /**\n * Retrieves the next slide based on the current index and loop setting.\n */\n private getNextSlide(isLoop: boolean): EclCarouselItemComponent {\n const slidesCount = this.getSlidesCount();\n const currentIndex = this.getCurrentSlideIndex();\n\n if (currentIndex >= slidesCount - 1) {\n if (isLoop) {\n return this.getAllSlidesArray()[this.getAllSlidesCount() - 1];\n } else {\n return this.slides().at(-1)!;\n }\n } else {\n return this.slides().at(currentIndex + 1);\n }\n }\n\n /**\n * Returns all slides, including the hidden buffer items.\n */\n private getAllSlidesArray(): EclCarouselItemComponent[] {\n return [...[this.firstHiddenItem()], ...this.slides(), ...[this.lastHiddenItem()]];\n }\n\n /**\n * Retrieves the previous slide based on the current index and loop setting.\n */\n private getPreviousSlide(isLoop: boolean): EclCarouselItemComponent {\n const currentIndex = this.getCurrentSlideIndex();\n\n if (currentIndex <= 0) {\n if (isLoop) {\n return this.getAllSlidesArray()[0];\n } else {\n return this.slides().at(0)!;\n }\n } else {\n return this.slides().at(currentIndex - 1);\n }\n }\n\n /**\n * Returns the number of actual visible slides (excluding hidden buffer).\n */\n private getSlidesCount(): number {\n return this.slides().length;\n }\n\n /**\n * Returns total number of slides, including buffer (hidden) items.\n */\n private getAllSlidesCount(): number {\n if (this.hasControls()) {\n return this.slides().length + 2;\n } else {\n return this.slides().length;\n }\n }\n\n /**\n * Determines whether no slide is currently marked as active.\n */\n private isNoSlideSelected(): boolean {\n return !this.slides().some((item) => item.isCurrent());\n }\n\n /**\n * Handles right arrow key navigation for buttons.\n */\n private onNavigationButtonArrowRight(e: KeyboardEvent): void {\n setTimeout(() => {\n this.goToNextSlide(false);\n const button: ElementRef = this.navigationButtons().at(this.getCurrentSlideIndex());\n this.focusOnButton(button);\n }, this.TIMEOUT_INTERVAL);\n e.preventDefault();\n }\n\n /**\n * Handles left arrow key navigation for buttons.\n */\n private onNavigationButtonArrowLeft(e: KeyboardEvent, index: number): void {\n if (this.isFirstButton(index)) {\n const playButton = this.playButton();\n if (playButton) {\n this.focusOnButton(playButton);\n }\n const pauseButton = this.pauseButton();\n if (pauseButton) {\n this.focusOnButton(pauseButton);\n }\n } else {\n setTimeout(() => {\n this.goToPreviousSlide(false);\n const button: ElementRef = this.navigationButtons().at(this.getCurrentSlideIndex());\n this.focusOnButton(button);\n }, this.TIMEOUT_INTERVAL);\n e.preventDefault();\n }\n }\n\n /**\n * Observes screen breakpoint changes to adjust autoplay and layout behavior.\n */\n private observeBreakpointChanges(): void {\n this.cdkBreakpointObserver\n .observe([\n '(max-width: 768px)',\n '(max-width: 997px)',\n '(min-width: 998px)',\n '(min-width: 1140px)',\n '(min-width: 1140px) and (max-width: 1260px)',\n ])\n .pipe(takeUntil(this.destroy$))\n .subscribe((result) => {\n this.isMobileBreakpoint = result.breakpoints['(max-width: 768px)'];\n this.isSmallTabletBreakpoint = result.breakpoints['(max-width: 997px)'];\n this.isTabletBreakpoint = result.breakpoints['(min-width: 998px)'];\n this.isLargeBreakpoint = result.breakpoints['(min-width: 1140px)'];\n this.isDesktopBreakpoint = result.breakpoints['(min-width: 1140px) and (max-width: 1260px)'];\n const isAutoplay = this.isAutoplay();\n if (this.isMobileBreakpoint && !isAutoplay) {\n this.stopPlaying();\n }\n\n if (this.isTabletBreakpoint) {\n if (isAutoplay || isAutoplay === undefined) {\n this.startPlaying();\n }\n }\n });\n }\n\n /**\n * Observes changes to the carousel's container element size using ResizeObserver.\n */\n private observeElementSizeChanges(): void {\n setTimeout(() => {\n if (this.isLargeBreakpoint) {\n this.checkBannerHeights();\n } else {\n this.resetHeight();\n }\n }, this.TIMEOUT_INTERVAL);\n }\n\n /**\n * Normalizes the height of all banners to match the tallest banner.\n */\n private checkBannerHeights(): void {\n // First, let each banner calculate its own height (like ECL's bannerInstance.setHeight(ratio))\n this.slides().forEach((slide) => {\n const banner = slide.banner();\n if (banner) {\n banner.calculateHeight();\n }\n });\n\n const heightValues = this.slides().map((slide) => {\n const el = slide.banner()?.el.nativeElement;\n if (!el) return undefined;\n\n const styleHeight = el.style.height;\n\n if (styleHeight === 'auto' || styleHeight === '') {\n return el.offsetHeight;\n }\n\n const height = parseInt(styleHeight, 10);\n if (Number.isNaN(height) || height === 100) {\n return 1;\n }\n\n return height;\n });\n\n const elementHeights = heightValues.filter((h) => h !== undefined) as number[];\n const tallestElementHeight = Math.max(...elementHeights);\n\n const slides = this.slides();\n if (tallestElementHeight > 1 && elementHeights.length === slides.length) {\n slides.forEach((slide) => {\n const banner = slide.banner();\n if (!banner) return;\n\n const el = banner.el.nativeElement;\n const bannerImage = banner.eclBannerImage();\n const bannerVideo = banner.eclBannerVideo();\n\n this.renderer2.setStyle(el, 'height', `${tallestElementHeight}px`);\n this.renderer2.setStyle(el, 'aspect-ratio', 'auto');\n\n if (bannerImage) {\n this.renderer2.setStyle(bannerImage.el.nativeElement, 'aspect-ratio', 'auto');\n }\n if (bannerVideo) {\n this.renderer2.setStyle(bannerVideo.el.nativeElement, 'aspect-ratio', 'auto');\n }\n });\n this.resetHiddenItems();\n }\n }\n\n /**\n * Clears all explicit banner height and aspect ratio styling for smaller breakpoints.\n */\n private resetHeight(): void {\n this.slides().forEach((slide) => {\n const banner = slide.banner();\n if (banner) {\n const bannerImage = banner.eclBannerImage();\n const bannerVideo = banner.eclBannerVideo();\n this.renderer2.removeStyle(banner.el.nativeElement, 'height');\n this.renderer2.removeStyle(banner.el.nativeElement, 'aspect-ratio');\n if (bannerImage) {\n this.renderer2.removeStyle(bannerImage.el.nativeElement, 'aspect-ratio');\n }\n if (bannerVideo) {\n this.renderer2.removeStyle(bannerVideo.el.nativeElement, 'aspect-ratio');\n }\n }\n });\n this.resetHiddenItems();\n }\n\n /**\n * Re-renders the content of hidden buffer items after style reset.\n */\n private resetHiddenItems(): void {\n if (this.hasControls()) {\n this.firstHiddenItem().el.nativeElement.innerHTML = this.getLastContentChild();\n this.lastHiddenItem().el.nativeElement.innerHTML = this.getFirstContentChild();\n }\n }\n}\n","@if(hasControls()){\n<div class=\"ecl-carousel__controls\">\n <div class=\"ecl-container\">\n <div class=\"ecl-carousel__autoplay\">\n <button #playButton class=\"ecl-button ecl-button--tertiary ecl-button--neutral ecl-carousel__play ecl-button--icon-only\"\n type=\"button\" [style.display]=\"isPlaying ? 'none' : 'flex'\" (keydown)=\"onPlayKeyboardPress($event)\"\n (click)=\"onPlayClick()\">\n <span class=\"ecl-button__container\">\n <span class=\"ecl-button__label\">\n {{ 'ecl.carousel.PLAY' | translate }}\n </span>\n <ecl-icon icon=\"play-outline\" size=\"m\" class=\"ecl-button__icon ecl-carousel__icon-default\">\n </ecl-icon>\n </span>\n </button>\n\n <button #pauseButton class=\"ecl-button ecl-button--tertiary ecl-button--neutral ecl-carousel__pause ecl-button--icon-only\"\n type=\"button\" [style.display]=\"isPlaying ? 'flex' : 'none'\" (keydown)=\"onPlayKeyboardPress($event)\"\n (click)=\"onPauseClick()\">\n <span class=\"ecl-button__container\">\n <span class=\"ecl-button__label\">\n {{ 'ecl.carousel.PAUSE' | translate }}\n </span>\n <ecl-icon icon=\"pause-outline\" size=\"m\" class=\"ecl-button__icon ecl-carousel__icon-default\"> </ecl-icon>\n </span>\n\n </button>\n </div>\n\n <div class=\"ecl-carousel__navigation\" role=\"tablist\" >\n @for (slide of slides(); let i = $index; track slide) {\n <button #currButton [attr.aria-current]=\"i === getCurrentSlideIndex()\" [attr.tabindex]=\"i === getCurrentSlideIndex() ? null: -1\"\n class=\"ecl-button ecl-button--tertiary ecl-button--neutral ecl-carousel__navigation-item\" role=\"tab\" (click)=\"onSlideControlClick(slide)\"\n (keydown)=\"onNavBtnKeyboardPress($event, i)\">\n {{ i + 1 }}\n </button>\n }\n </div>\n </div>\n</div>\n}\n<div #carouselContainer class=\"ecl-carousel__container\" [class.ecl-carousel-container--padded]=\"isPadded()\">\n <div #slidesContainer (keyup)=\"onFirstCarouselElementPress($event)\" class=\"ecl-carousel__slides\"\n [style.left.px]=\"!isRtl ? getCarouselSlidesOffsetLeft() : null\"\n [style.right.px]=\"isRtl ? getCarouselSlidesOffsetRight() : null\"\n [style.transition-duration.s]=\"transitionDuration\" (mouseover)=\"onSlideHover()\" (mouseout)=\"onSlideHoverout()\">\n\n @if(hasControls()){\n <ecl-carousel-item #firstHiddenItem></ecl-carousel-item>\n }\n <ng-content></ng-content>\n\n @if(hasControls()){\n <ecl-carousel-item #lastHiddenItem></ecl-carousel-item>\n }\n </div>\n</div>\n","import { EclCarouselComponent } from './ecl-carousel.component';\nimport { EclCarouselItemComponent } from './ecl-carousel-item.component';\n\nexport * from './ecl-carousel.component';\nexport * from './ecl-carousel-item.component';\nexport * from './events/ecl-slide.event';\nexport * from './models/ecl-carousel-item.model';\n\nexport const EUI_ECL_CAROUSEL = [\n EclCarouselComponent,\n EclCarouselItemComponent,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}