@eui/ecl 22.0.0-alpha.51 → 22.0.0-alpha.53

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 (189) hide show
  1. package/assets/i18n-ecl/bg.json +6 -2
  2. package/assets/i18n-ecl/cs.json +6 -2
  3. package/assets/i18n-ecl/da.json +6 -2
  4. package/assets/i18n-ecl/de.json +6 -2
  5. package/assets/i18n-ecl/el.json +6 -2
  6. package/assets/i18n-ecl/en.json +6 -2
  7. package/assets/i18n-ecl/es.json +6 -2
  8. package/assets/i18n-ecl/et.json +6 -2
  9. package/assets/i18n-ecl/fi.json +6 -2
  10. package/assets/i18n-ecl/fr.json +6 -2
  11. package/assets/i18n-ecl/ga.json +6 -2
  12. package/assets/i18n-ecl/hr.json +6 -2
  13. package/assets/i18n-ecl/hu.json +6 -2
  14. package/assets/i18n-ecl/it.json +6 -2
  15. package/assets/i18n-ecl/lt.json +6 -2
  16. package/assets/i18n-ecl/lv.json +6 -2
  17. package/assets/i18n-ecl/mt.json +6 -2
  18. package/assets/i18n-ecl/nl.json +6 -2
  19. package/assets/i18n-ecl/pl.json +6 -2
  20. package/assets/i18n-ecl/pt.json +6 -2
  21. package/assets/i18n-ecl/ro.json +6 -2
  22. package/assets/i18n-ecl/sk.json +6 -2
  23. package/assets/i18n-ecl/sl.json +6 -2
  24. package/assets/i18n-ecl/sv.json +6 -2
  25. package/components/ecl-slider/package.json +4 -0
  26. package/docs/changelog.html +29 -0
  27. package/docs/components/EclAccordionSummaryComponent.html +1 -1
  28. package/docs/components/EclAddToCalendarComponent.html +1 -1
  29. package/docs/components/EclAnimatedNumbersComponent.html +1 -1
  30. package/docs/components/EclAnimatedNumbersItemComponent.html +1 -1
  31. package/docs/components/EclAppComponent.html +1 -1
  32. package/docs/components/EclBannerComponent.html +1 -1
  33. package/docs/components/EclBlockquoteComponent.html +1 -1
  34. package/docs/components/EclBreadcrumbComponent.html +1 -1
  35. package/docs/components/EclBreadcrumbSegmentComponent.html +1 -1
  36. package/docs/components/EclButtonComponent.html +1 -1
  37. package/docs/components/EclCardBodyComponent.html +1 -1
  38. package/docs/components/EclCardComponent.html +1 -1
  39. package/docs/components/EclCarouselComponent.html +182 -898
  40. package/docs/components/EclCarouselItemComponent.html +32 -1
  41. package/docs/components/EclCategoryFilterComponent.html +1 -1
  42. package/docs/components/EclCategoryFilterItemComponent.html +1 -1
  43. package/docs/components/EclCategoryFilterListComponent.html +1 -1
  44. package/docs/components/EclCheckboxHelpComponent.html +1 -1
  45. package/docs/components/EclCheckboxLabelComponent.html +1 -1
  46. package/docs/components/EclContentBlockComponent.html +1 -1
  47. package/docs/components/EclContentItemComponent.html +1 -1
  48. package/docs/components/EclDateBlockComponent.html +1 -1
  49. package/docs/components/EclDescriptionListDefinitionComponent.html +1 -1
  50. package/docs/components/EclExpandableComponent.html +1 -1
  51. package/docs/components/EclFactFiguresComponent.html +1 -1
  52. package/docs/components/EclFactFiguresItemComponent.html +1 -1
  53. package/docs/components/EclFactFiguresViewAllComponent.html +1 -1
  54. package/docs/components/EclFeaturedComponent.html +1 -1
  55. package/docs/components/EclFeaturedItemComponent.html +1 -1
  56. package/docs/components/EclFeaturedItemDescriptionComponent.html +1 -1
  57. package/docs/components/EclFileComponent.html +1 -1
  58. package/docs/components/EclFileItemComponent.html +1 -1
  59. package/docs/components/EclFileItemsComponent.html +1 -1
  60. package/docs/components/EclFileListsComponent.html +1 -1
  61. package/docs/components/EclFormGroupComponent.html +1 -1
  62. package/docs/components/EclFormLabelComponent.html +1 -1
  63. package/docs/components/EclGalleryComponent.html +1 -1
  64. package/docs/components/EclGalleryFooterComponent.html +1 -1
  65. package/docs/components/EclGalleryItemComponent.html +1 -1
  66. package/docs/components/EclHighlightBoxComponent.html +1 -1
  67. package/docs/components/EclHighlightedSearchComponent.html +1 -1
  68. package/docs/components/EclIconComponent.html +1 -10
  69. package/docs/components/EclIndicatorComponent.html +1 -1
  70. package/docs/components/EclInpageNavigationComponent.html +1 -1
  71. package/docs/components/EclInpageNavigationItemComponent.html +1 -1
  72. package/docs/components/EclLayoutWrapperComponent.html +1 -1
  73. package/docs/components/EclListIllustrationComponent.html +1 -1
  74. package/docs/components/EclListIllustrationItemComponent.html +1 -1
  75. package/docs/components/EclLoadingIndicatorComponent.html +1 -1
  76. package/docs/components/EclMediaContainerComponent.html +1 -1
  77. package/docs/components/EclMegaMenuComponent.html +1 -1
  78. package/docs/components/EclMegaMenuFeaturedComponent.html +1 -1
  79. package/docs/components/EclMegaMenuInfoComponent.html +1 -1
  80. package/docs/components/EclMegaMenuItemComponent.html +1 -1
  81. package/docs/components/EclMegaMenuSubitemComponent.html +1 -1
  82. package/docs/components/EclMenuComponent.html +1 -1
  83. package/docs/components/EclMenuItemComponent.html +1 -1
  84. package/docs/components/EclMenuMegaComponent.html +1 -1
  85. package/docs/components/EclMenuMegaItemComponent.html +1 -1
  86. package/docs/components/EclModalBodyComponent.html +1 -1
  87. package/docs/components/EclModalComponent.html +1 -1
  88. package/docs/components/EclModalFooterComponent.html +1 -1
  89. package/docs/components/EclModalHeaderComponent.html +1 -1
  90. package/docs/components/EclMultiselectComponent.html +1 -1
  91. package/docs/components/EclMultiselectDropdownComponent.html +1 -1
  92. package/docs/components/EclMultiselectInputComponent.html +1 -1
  93. package/docs/components/EclMultiselectOptgroupComponent.html +1 -1
  94. package/docs/components/EclMultiselectOptionComponent.html +1 -1
  95. package/docs/components/EclNavigationListComponent.html +1 -1
  96. package/docs/components/EclNavigationListItemComponent.html +1 -1
  97. package/docs/components/EclNewsTickerComponent.html +1 -1
  98. package/docs/components/EclNewsTickerItemComponent.html +1 -1
  99. package/docs/components/EclNotificationComponent.html +1 -1
  100. package/docs/components/EclPageHeaderComponent.html +1 -1
  101. package/docs/components/EclPageHeaderDescriptionContainerComponent.html +1 -1
  102. package/docs/components/EclPageHeaderExpandableComponent.html +1 -1
  103. package/docs/components/EclPageHeaderSectionComponent.html +1 -1
  104. package/docs/components/EclPageHeaderSectionInfoComponent.html +1 -1
  105. package/docs/components/EclPageSummaryComponent.html +1 -1
  106. package/docs/components/EclPaginationComponent.html +1 -1
  107. package/docs/components/EclPaginationItemComponent.html +1 -1
  108. package/docs/components/EclPopoverComponent.html +1 -1
  109. package/docs/components/EclQuizCardComponent.html +113 -44
  110. package/docs/components/EclQuizComponent.html +4 -9
  111. package/docs/components/EclRadioLabelComponent.html +1 -1
  112. package/docs/components/EclRangeBubbleComponent.html +1 -1
  113. package/docs/components/EclRangeValueComponent.html +1 -1
  114. package/docs/components/EclRatingFieldComponent.html +1 -1
  115. package/docs/components/EclSearchFormComponent.html +1 -1
  116. package/docs/components/EclSelectContainerComponent.html +1 -1
  117. package/docs/components/EclSiteFooterComponent.html +1 -1
  118. package/docs/components/EclSiteFooterCoownerComponent.html +1 -1
  119. package/docs/components/EclSiteFooterCoreComponent.html +1 -1
  120. package/docs/components/EclSiteFooterFeedbackComponent.html +1 -1
  121. package/docs/components/EclSiteFooterFixedContentEUComponent.html +1 -1
  122. package/docs/components/EclSiteFooterRowCommonComponent.html +1 -1
  123. package/docs/components/EclSiteHeaderActionComponent.html +1 -1
  124. package/docs/components/EclSiteHeaderBannerTopComponent.html +1 -1
  125. package/docs/components/EclSiteHeaderComponent.html +1 -1
  126. package/docs/components/EclSiteHeaderCustomActionComponent.html +1 -1
  127. package/docs/components/EclSiteHeaderEnvironmentComponent.html +1 -1
  128. package/docs/components/EclSiteHeaderLanguageComponent.html +1 -1
  129. package/docs/components/EclSiteHeaderLanguagePopoverComponent.html +1 -1
  130. package/docs/components/EclSiteHeaderLoginComponent.html +1 -1
  131. package/docs/components/EclSiteHeaderNotificationComponent.html +1 -1
  132. package/docs/components/EclSiteHeaderSearchComponent.html +1 -1
  133. package/docs/components/EclSliderPagerComponent.html +1159 -0
  134. package/docs/components/EclSloganTickerComponent.html +1 -1
  135. package/docs/components/EclSocialMediaFollowComponent.html +1 -1
  136. package/docs/components/EclSocialMediaFollowItemComponent.html +1 -1
  137. package/docs/components/EclSplashPageComponent.html +1 -1
  138. package/docs/components/EclSplashPageLanguageCategoryComponent.html +1 -1
  139. package/docs/components/EclSplashPageLanguageContainerComponent.html +1 -1
  140. package/docs/components/EclSplashPageLanguageLinkComponent.html +1 -1
  141. package/docs/components/EclSpotlightComponent.html +1 -1
  142. package/docs/components/EclSpotlightLinkComponent.html +1 -1
  143. package/docs/components/EclStickyContainerComponent.html +1 -1
  144. package/docs/components/EclStoryCardComponent.html +4 -4
  145. package/docs/components/EclStoryCardGridDetailsComponent.html +57 -2
  146. package/docs/components/EclStoryCardItemComponent.html +77 -2
  147. package/docs/components/EclTabComponent.html +1 -1
  148. package/docs/components/EclTabLabelComponent.html +1 -1
  149. package/docs/components/EclTableSortButtonComponent.html +1 -1
  150. package/docs/components/EclTabsComponent.html +1 -1
  151. package/docs/components/EclTagComponent.html +1 -1
  152. package/docs/components/EclTextMediaComponent.html +1 -1
  153. package/docs/components/EclTimelineComponent.html +1 -1
  154. package/docs/components/EclTimelineItemComponent.html +1 -1
  155. package/docs/components/EclTimelineItemTogglerComponent.html +1 -1
  156. package/docs/js/menu-wc.js +3 -0
  157. package/docs/js/search/search_index.js +2 -2
  158. package/docs/json/EclCarouselComponent.md +8 -4
  159. package/docs/json/EclCarouselItemComponent.md +1 -0
  160. package/docs/json/EclQuizCardComponent.md +6 -3
  161. package/docs/json/EclSliderPagerComponent.md +55 -0
  162. package/docs/json/EclStoryCardGridDetailsComponent.md +1 -0
  163. package/docs/json/EclStoryCardItemComponent.md +1 -0
  164. package/docs/json/documentation.json +1889 -565
  165. package/docs/llms.txt +67 -32
  166. package/docs/miscellaneous/variables.html +112 -0
  167. package/docs/overview.html +1 -1
  168. package/docs/properties.html +1 -1
  169. package/fesm2022/eui-ecl-components-ecl-carousel.mjs +405 -407
  170. package/fesm2022/eui-ecl-components-ecl-carousel.mjs.map +1 -1
  171. package/fesm2022/eui-ecl-components-ecl-menu.mjs +15 -15
  172. package/fesm2022/eui-ecl-components-ecl-menu.mjs.map +1 -1
  173. package/fesm2022/eui-ecl-components-ecl-quiz.mjs +93 -55
  174. package/fesm2022/eui-ecl-components-ecl-quiz.mjs.map +1 -1
  175. package/fesm2022/eui-ecl-components-ecl-slider.mjs +187 -0
  176. package/fesm2022/eui-ecl-components-ecl-slider.mjs.map +1 -0
  177. package/fesm2022/eui-ecl-components-ecl-story-card.mjs +96 -18
  178. package/fesm2022/eui-ecl-components-ecl-story-card.mjs.map +1 -1
  179. package/package.json +18 -12
  180. package/types/eui-ecl-components-ecl-carousel.d.ts +234 -202
  181. package/types/eui-ecl-components-ecl-carousel.d.ts.map +1 -1
  182. package/types/eui-ecl-components-ecl-menu.d.ts +0 -2
  183. package/types/eui-ecl-components-ecl-menu.d.ts.map +1 -1
  184. package/types/eui-ecl-components-ecl-quiz.d.ts +94 -57
  185. package/types/eui-ecl-components-ecl-quiz.d.ts.map +1 -1
  186. package/types/eui-ecl-components-ecl-slider.d.ts +118 -0
  187. package/types/eui-ecl-components-ecl-slider.d.ts.map +1 -0
  188. package/types/eui-ecl-components-ecl-story-card.d.ts +78 -48
  189. package/types/eui-ecl-components-ecl-story-card.d.ts.map +1 -1
@@ -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\n/**\n * Event emitted by `EclCarouselComponent` when the active slide changes, and by\n * `EclCarouselItemComponent` when a slide is clicked.\n * Carries the `EclCarouselItem` that became active or was clicked.\n */\nexport class EclSlideEvent extends EclBaseEvent {\n /**\n * @param item The carousel item that was activated or clicked.\n */\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 * Single slide item for use inside an `EclCarouselComponent`.\n * Renders a `role=\"tabpanel\"` element with an `aria-roledescription=\"slide\"` and handles\n * the `inert` attribute so only the active slide is interactive.\n *\n * - Selector: `ecl-carousel-item`.\n * - `id` — optional unique identifier; used by the carousel for navigation buttons.\n * - `isCurrent` (input alias) — initial active state; kept as a `linkedSignal` so the parent\n * carousel can update it imperatively as the user navigates.\n * - `slideClick` — emits `EclSlideEvent` when the slide is clicked.\n * - `index` / `ariaLabel` — writable signals assigned by the parent carousel.\n * - Project an optional `EclBannerComponent` inside the slide for banner-style slides.\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 * Carousel (slideshow) component following the ECL design system.\n * Renders a sequence of `EclCarouselItemComponent` slides with autoplay, keyboard navigation,\n * responsive breakpoint awareness, and RTL layout support.\n *\n * - Selector: `ecl-carousel`.\n * - Project `ecl-carousel-item` elements as slides (also via `contentChildren`).\n * - `ariaLabel` — ARIA label for the carousel landmark; aliased as `aria-label`; default `'Carousel description here'`.\n * - `isAutoplay` — enables automatic slide advancement; boolean attribute.\n * - `playInterval` — milliseconds between automatic transitions; default `5000`.\n * - `slide` — emits `EclSlideEvent` when the active slide changes.\n * - `isPlaying` / `isPausedForced` — public flags reflecting playback state.\n * - `isRtl` — public flag reflecting RTL mode.\n * - Navigation controls and play/pause buttons are rendered internally.\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\n/**\n * Event emitted by `EclCarouselComponent` when the active slide changes, and by\n * `EclCarouselItemComponent` when a slide is clicked.\n * Carries the `EclCarouselItem` that became active or was clicked.\n */\nexport class EclSlideEvent extends EclBaseEvent {\n /**\n * @param item The carousel item that was activated or clicked.\n */\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 * Single slide item for use inside an `EclCarouselComponent`.\n * Renders a `role=\"tabpanel\"` element with an `aria-roledescription=\"slide\"` and handles\n * the `inert` attribute so only the active slide is interactive.\n *\n * - Selector: `ecl-carousel-item`.\n * - `id` — optional unique identifier; used by the carousel for navigation buttons.\n * - `isCurrent` (input alias) — initial active state; kept as a `linkedSignal` so the parent\n * carousel can update it imperatively as the user navigates.\n * - `slideClick` — emits `EclSlideEvent` when the slide is clicked.\n * - `index` / `ariaLabel` — writable signals assigned by the parent carousel.\n * - Project an optional `EclBannerComponent` inside the slide for banner-style slides.\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 * Text shown in the carousel teaser (navigation) button for this slide.\n * Optional; when empty, no teaser label is rendered for the slide.\n */\n readonly teaserText = input<string>('');\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 contentChildren,\n forwardRef,\n inject,\n input,\n numberAttribute,\n output,\n signal,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { EUI_ECL_SLIDER } from '@eui/ecl/components/ecl-slider';\nimport { ECLBaseDirective, EclRtlService, KeyCode } from '@eui/ecl/core';\nimport { TranslatePipe, TranslateService } from '@ngx-translate/core';\nimport { EmblaCarouselDirective } from 'embla-carousel-angular';\nimport {\n EmblaEventType,\n EmblaOptionsType,\n EmblaPluginType,\n} from 'embla-carousel';\nimport Autoplay from 'embla-carousel-autoplay';\nimport { Subject, auditTime, fromEvent, takeUntil } from 'rxjs';\nimport { EclCarouselItemComponent } from './ecl-carousel-item.component';\nimport { EclSlideEvent } from './events/ecl-slide.event';\n\n/**\n * Number of teaser buttons visible at once on the desktop breakpoint.\n */\nconst VISIBLE_TEASERS = 4;\n\n/**\n * Carousel (slideshow) component following the ECL design system.\n * Renders a sequence of `EclCarouselItemComponent` slides with autoplay, keyboard navigation,\n * responsive breakpoint awareness, and RTL layout support.\n *\n * The slide engine is powered by Embla (via `embla-carousel-angular`), matching the upstream\n * ECL implementation: an infinite `loop`, the `Autoplay` plugin driving the teaser loading bars,\n * and a slider pager with previous/next/play/pause controls, a counter, and a tablist of teaser\n * buttons (one per slide).\n *\n * - Selector: `ecl-carousel`.\n * - Project `ecl-carousel-item` elements as slides (also via `contentChildren`).\n * - `ariaLabel` — ARIA label for the carousel landmark; aliased as `aria-label`.\n * - `isAutoplay` — enables automatic slide advancement; boolean attribute.\n * - `playInterval` — milliseconds between automatic transitions; default `5000`.\n * - `counterLabel` — separator label used by the counter, defaults to `ecl.common.OF`.\n * - `slide` — emits `EclSlideEvent` when the active slide changes.\n */\n@Component({\n selector: 'ecl-carousel',\n templateUrl: './ecl-carousel.component.html',\n imports: [\n TranslatePipe,\n EclCarouselItemComponent,\n EmblaCarouselDirective,\n ...EUI_ECL_SLIDER,\n ],\n host: {\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-roledescription]': '\"carousel\"',\n '[class]': 'cssClasses()',\n // Drives the teaser loading-bar animation duration (see @eui/styles).\n // It has no CSS fallback, so without it the progress animation never\n // runs; it must match the autoplay delay.\n '[style.--ecl-carousel-slide-duration]': 'playInterval() + \"ms\"',\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 * Separator label used by the counter, e.g. the \"of\" in \"1 of 5\".\n * Defaults to the translated `ecl.common.OF` key.\n */\n readonly counterLabel = input<string>('');\n\n /**\n * Event emitted when a slide change occurs.\n */\n readonly slide = output<EclSlideEvent>();\n\n /**\n * Reference to the main carousel viewport element (the Embla root).\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 * Indicates whether autoplay is currently active.\n */\n readonly isPlaying = signal(false);\n\n /**\n * Indicates whether autoplay was manually paused (via the pause button or\n * on mobile). When paused this way the loading bar is cleared.\n */\n readonly isPausedForced = signal(false);\n\n /**\n * Indicates whether the layout is currently in RTL mode.\n */\n isRtl = false;\n\n /**\n * Zero-based index of the currently active slide (mirrors Embla's selected snap).\n */\n private activeIndex = 0;\n\n /**\n * Start index of the currently visible teaser window (desktop only).\n */\n private teaserWindowStart = 0;\n\n /**\n * Indicates whether autoplay is temporarily paused by hover/focus. Unlike a\n * manual pause, the loading bar stays visible and frozen at its current\n * progress (matching ECL), resuming when the pointer/focus leaves.\n */\n protected readonly isHoverPaused = signal(false);\n\n /**\n * Whether the current viewport is at the mobile breakpoint. A signal so the\n * template can react (the pager drops play/pause on mobile, matching ECL,\n * where play/pause is a desktop-only control).\n */\n protected readonly isMobileBreakpoint = signal(false);\n\n /**\n * Whether the viewport is at or above the ECL desktop breakpoint (1140px).\n * This is the boundary the ECL CSS uses to show the play/pause controls and\n * the teaser tablist (and to hide the mobile dots). A signal so the pager\n * variant can react: play/pause only renders at/above this width, matching\n * the CSS so the pause button never leaks onto narrower viewports.\n */\n protected readonly isDesktopBreakpointActive = signal(false);\n\n /**\n * Embla options, mirroring the upstream ECL configuration.\n */\n protected emblaOptions: EmblaOptionsType = {\n loop: true,\n align: 'start',\n duration: 20,\n };\n\n /**\n * Embla plugins. Built once so the Embla directive does not needlessly re-init.\n */\n protected emblaPlugins: EmblaPluginType[] = [];\n\n /**\n * Embla events the component reacts to.\n */\n protected readonly emblaEvents: EmblaEventType[] = [\n 'select',\n 'reInit',\n 'autoplay:timerset',\n ];\n\n /**\n * Reference to the Embla directive driving the slide engine.\n */\n private readonly embla = viewChild<EmblaCarouselDirective>('embla');\n\n /**\n * References to the teaser navigation buttons corresponding to each slide.\n */\n private readonly teaserButtons = viewChildren<ElementRef>('teaserButton');\n\n /**\n * References to the teaser loading-bar completion elements (one per slide),\n * used to restart the progress animation when the active slide changes.\n */\n private readonly loadingBars = viewChildren<ElementRef>('loadingBar');\n\n private isTabletBreakpoint = false;\n private isLargeBreakpoint = false;\n private isDesktopBreakpoint = false;\n\n private destroy$: Subject<boolean> = new Subject<boolean>();\n\n /**\n * Debounce interval (ms) used internally for timing and transitions.\n */\n private readonly TIMEOUT_INTERVAL = 400;\n private readonly cdkBreakpointObserver = inject(BreakpointObserver);\n private readonly cd = inject(ChangeDetectorRef);\n private readonly renderer2 = inject(Renderer2);\n private readonly eclRtlService = inject(EclRtlService);\n private readonly translate = inject(TranslateService);\n private readonly document = inject<Document>(DOCUMENT);\n private readonly window = this.document.defaultView;\n /**\n * Host element, used to locate the slider pager's play/pause buttons by their\n * ECL classes for focus management after a play/pause toggle.\n */\n private readonly hostEl = inject<ElementRef<HTMLElement>>(ElementRef);\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 constructor() {\n super();\n afterNextRender(() => {\n this.observeElementSizeChanges();\n this.observeBreakpointChanges();\n this.syncFromEmbla();\n\n if (this.window) {\n fromEvent(this.window, 'resize')\n .pipe(auditTime(50), takeUntil(this.destroy$))\n .subscribe(() => this.observeElementSizeChanges());\n }\n });\n }\n\n /**\n * Angular lifecycle hook: initializes RTL detection and the Embla plugins.\n */\n ngOnInit(): void {\n this.emblaOptions = {\n ...this.emblaOptions,\n direction: this.isRtl ? 'rtl' : 'ltr',\n };\n const autoplayDesired = this.isAutoplayDesired();\n // Reflect the initial play state so the current slide's loading bar is\n // shown on load (the plugin self-starts via playOnInit).\n this.isPlaying.set(autoplayDesired);\n this.emblaPlugins = [\n Autoplay({\n delay: this.playInterval(),\n // Autoplay is on by default (matching ECL) unless explicitly\n // disabled via [isAutoplay]=\"false\". Letting the plugin start\n // itself avoids a race with Embla's own initialization.\n playOnInit: autoplayDesired,\n stopOnInteraction: false,\n stopOnMouseEnter: true,\n stopOnFocusIn: true,\n }),\n ];\n this.handleRtlChangeState();\n }\n\n /**\n * Angular lifecycle hook: called after content (slides) is initialized.\n */\n ngAfterContentInit(): void {\n setTimeout(() => {\n this.initSlides();\n });\n }\n\n /**\n * Angular lifecycle hook: cleans up subscriptions.\n */\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Returns whether the carousel has padding applied (e.g., on desktop breakpoint).\n */\n isPadded(): boolean {\n return this.isDesktopBreakpoint;\n }\n\n /**\n * Checks whether there are enough slides to render controls.\n */\n hasControls(): boolean {\n return this.getSlidesCount() > 1;\n }\n\n /**\n * Retrieves the current active slide index (zero-based).\n */\n getCurrentSlideIndex(): number {\n return this.activeIndex;\n }\n\n /**\n * Returns the 1-based position of the active slide (for the counter).\n */\n getCounterCurrent(): number {\n return this.activeIndex + 1;\n }\n\n /**\n * Returns the total number of slides (for the counter).\n */\n getCounterTotal(): number {\n return this.getSlidesCount();\n }\n\n /**\n * Dot indices for the mobile slider pager (one dot per slide). The dots are\n * hidden on desktop via the ECL CSS (`.ecl-carousel__dots { display: none }`)\n * and shown at the mobile breakpoint.\n */\n getDotIndices(): number[] {\n return Array.from({ length: this.getSlidesCount() }, (_unused, dotIndex) => dotIndex);\n }\n\n /**\n * Pre-translated accessible label for each pager dot. Translated here since\n * the shared `ecl-slider-pager` receives plain strings.\n */\n getDotAriaLabels(): string[] {\n const total = this.getSlidesCount();\n return Array.from({ length: total }, (_unused, dotIndex) =>\n this.translate.instant('ecl.carousel.GO-TO-SLIDE', {\n current: dotIndex + 1,\n total,\n }),\n );\n }\n\n /**\n * Returns whether a teaser button should be visible in the current window.\n */\n isTeaserVisible(index: number): boolean {\n const count = this.getSlidesCount();\n if (count <= VISIBLE_TEASERS) {\n return true;\n }\n const position = ((index - this.teaserWindowStart) % count + count) % count;\n return position < VISIBLE_TEASERS;\n }\n\n /**\n * Returns the flex order of a teaser button within the visible window.\n */\n getTeaserOrder(index: number): number {\n const count = this.getSlidesCount();\n return ((index - this.teaserWindowStart) % count + count) % count;\n }\n\n /**\n * Whether the pager should show the \"pause\" control (i.e. autoplay is\n * actively running). While the pointer/focus hover-pauses the carousel the\n * timer is suspended, so the pager must show \"play\" even though a manual\n * pause was not triggered. Mirrors upstream ECL, where hovering flips the\n * control to play.\n */\n protected isPagerPlaying(): boolean {\n return this.isPlaying() && !this.isHoverPaused();\n }\n\n /**\n * Pager variant by breakpoint. Below the ECL desktop breakpoint (1140px)\n * the carousel shows only the dots navigation (prev / dots / next);\n * play/pause is a desktop-only control in ECL. Rendering `'dots'` there\n * avoids the pager's inline play/pause `display` style (which would\n * otherwise beat the ECL CSS and leave the pause button visible on narrower\n * viewports). At/above 1140px the dots are hidden by CSS, so\n * `'play-pause-dots'` yields play/pause + prev/next + teasers.\n *\n * The 1140px boundary mirrors the media query the ECL CSS uses to toggle\n * `.ecl-carousel__play/__pause` and `.ecl-carousel__teasers`.\n */\n protected pagerVariant(): 'dots' | 'play-pause-dots' {\n return this.isDesktopBreakpointActive() ? 'play-pause-dots' : 'dots';\n }\n\n /**\n * Handles the throttled Embla events the component subscribed to.\n */\n protected onEmblaEvent(event: EmblaEventType): void {\n switch (event) {\n case 'select':\n case 'reInit':\n this.syncFromEmbla();\n break;\n case 'autoplay:timerset':\n // Fired each time the autoplay timer (re)starts for the current\n // slide; replay the loading-bar fill animation from zero.\n this.restartActiveLoadingBar();\n break;\n default:\n break;\n }\n }\n\n /**\n * Starts autoplay.\n *\n * @param moveFocus when true (a user clicked play) focus moves to the pause\n * button. Auto-starts (e.g. on breakpoint changes) pass false so the\n * page is not scrolled to the carousel on load.\n */\n protected onPlayClick(moveFocus = true): void {\n this.getAutoplay()?.play();\n this.isPlaying.set(true);\n this.isPausedForced.set(false);\n this.isHoverPaused.set(false);\n this.cd.detectChanges();\n if (moveFocus) {\n this.focusPagerButton('.ecl-carousel__pause');\n }\n }\n\n /**\n * Stops autoplay and focuses the play button.\n */\n protected onPauseClick(): void {\n // Pause (not full stop): halt the autoplay timer but keep the active\n // teaser loading bar visible, frozen at its current progress (matching\n // upstream ECL's `handleAutoPlay(false, true)`). The installed\n // embla-carousel-autoplay exposes no `pause()`, so we call `stop()`\n // WITHOUT `reset()` — the frozen bar is driven by our `is-paused` CSS\n // class, not the plugin. A full stop+reset (which clears the bar) only\n // happens on prev/next/teaser navigation via `stopAutoplay()`.\n this.getAutoplay()?.stop();\n this.isPlaying.set(false);\n this.isPausedForced.set(true);\n this.isHoverPaused.set(false);\n this.cd.detectChanges();\n this.focusPagerButton('.ecl-carousel__play');\n }\n\n /**\n * Navigates to the next slide and stops autoplay.\n */\n protected onNextSlideClick(): void {\n this.stopAutoplay();\n this.embla()?.scrollNext();\n }\n\n /**\n * Navigates to the previous slide and stops autoplay.\n */\n protected onPreviousSlideClick(): void {\n this.stopAutoplay();\n this.embla()?.scrollPrev();\n }\n\n /**\n * Handles user interaction with a teaser button: activates the matching slide.\n */\n protected onTeaserClick(index: number): void {\n this.stopAutoplay();\n this.embla()?.scrollTo(index);\n }\n\n /**\n * Handles a dot activation from the mobile slider pager: scrolls to the\n * matching slide and stops autoplay (same behavior as a teaser click).\n */\n protected onDotClick(index: number): void {\n this.stopAutoplay();\n this.embla()?.scrollTo(index);\n }\n\n /**\n * Handles keyboard navigation (ArrowLeft/ArrowRight) across teaser buttons.\n */\n protected onTeaserKeyboardPress(event: KeyboardEvent, index: number): void {\n if (event.key !== KeyCode.ARROW_RIGHT && event.key !== KeyCode.ARROW_LEFT) {\n return;\n }\n event.preventDefault();\n const direction = event.key === KeyCode.ARROW_RIGHT ? 1 : -1;\n const count = this.getSlidesCount();\n const nextIndex = (index + direction + count) % count;\n this.stopAutoplay();\n this.embla()?.scrollTo(nextIndex);\n this.focusOnButton(this.teaserButtons()[nextIndex]);\n }\n\n /**\n * Freezes the loading bar while the pointer/focus is over the carousel.\n * The Embla autoplay plugin pauses the timer itself (stopOnMouseEnter /\n * stopOnFocusIn); this only mirrors that as a visible paused state.\n */\n protected onViewportPause(): void {\n if (this.isPlaying() && !this.isPausedForced()) {\n this.isHoverPaused.set(true);\n this.cd.detectChanges();\n }\n }\n\n /**\n * Resumes the loading bar once the pointer/focus leaves the carousel.\n */\n protected onViewportResume(): void {\n if (this.isHoverPaused()) {\n this.isHoverPaused.set(false);\n this.cd.detectChanges();\n }\n }\n\n /**\n * Sets focus on the specified button.\n */\n private focusOnButton(button: ElementRef): void {\n if (!button) {\n return;\n }\n button.nativeElement.focus();\n }\n\n /**\n * Focuses the slider pager button matching the given ECL class selector\n * (e.g. `.ecl-carousel__play`). Used after a play/pause toggle so focus\n * follows the now-visible control, since the pager swaps play/pause\n * visibility via CSS. No-op if the button is not rendered (e.g. mobile).\n */\n private focusPagerButton(selector: string): void {\n const button = this.hostEl.nativeElement.querySelector<HTMLElement>(selector);\n button?.focus();\n }\n\n /**\n * Returns the Embla autoplay plugin instance, but only when the carousel\n * actually has more than one scroll snap.\n *\n * The `embla-carousel-autoplay` plugin skips its own initialization when\n * `scrollSnapList().length <= 1` (see the plugin's `init`), which leaves its\n * internal `delay` lookup table undefined. Calling `play()` in that state\n * throws (`delay[selectedScrollSnap()]` -> reading `0` of undefined). This\n * happens whenever Embla cannot lay out multiple snaps — notably in a jsdom\n * test or during SSR. Gating on the same `> 1` condition the plugin uses\n * keeps autoplay a safe no-op until the carousel is genuinely slideable.\n */\n private getAutoplay() {\n const api = this.embla()?.emblaApi;\n if (!api || api.scrollSnapList().length <= 1) {\n return undefined;\n }\n return api.plugins()?.autoplay;\n }\n\n /**\n * Whether autoplay should run. On by default (matching ECL); only disabled\n * when the consumer explicitly sets `[isAutoplay]=\"false\"`.\n */\n private isAutoplayDesired(): boolean {\n const isAutoplay = this.isAutoplay();\n return isAutoplay || isAutoplay === undefined;\n }\n\n /**\n * Stops autoplay and resets it (mirrors ECL's `handleAutoPlay(true)`),\n * clearing the loading-bar state.\n */\n private stopAutoplay(): void {\n const autoplay = this.getAutoplay();\n autoplay?.stop();\n autoplay?.reset();\n this.isPlaying.set(false);\n this.isPausedForced.set(false);\n this.isHoverPaused.set(false);\n this.cd.detectChanges();\n }\n\n /**\n * Synchronizes component state from Embla's current selected snap:\n * active index, slide `isCurrent` flags, teaser window and the slide event.\n */\n private syncFromEmbla(): void {\n const api = this.embla()?.emblaApi;\n if (!api) {\n return;\n }\n const selected = api.selectedScrollSnap();\n this.setActiveIndex(selected);\n this.updateTeaserWindow();\n this.slide.emit(new EclSlideEvent(this.slides().at(this.activeIndex)));\n this.cd.detectChanges();\n }\n\n /**\n * Subscribes to RTL layout state changes to adapt carousel direction.\n */\n private handleRtlChangeState(): void {\n this.eclRtlService.currentRtlState$.pipe(takeUntil(this.destroy$)).subscribe((rtlState) => {\n const changed = this.isRtl !== rtlState;\n this.isRtl = rtlState;\n if (changed) {\n this.emblaOptions = {\n ...this.emblaOptions,\n direction: this.isRtl ? 'rtl' : 'ltr',\n };\n this.cd.detectChanges();\n }\n });\n }\n\n /**\n * Initializes slides (index, ARIA label, banner height management).\n */\n private initSlides(): void {\n const slides = this.slides();\n slides.forEach((item, idx) => {\n item.index.set(idx);\n item.ariaLabel.set(`slide ${idx + 1} of ${slides.length}`);\n item.isCurrent.set(idx === 0);\n const banner = item.banner();\n if (banner) {\n banner.skipHeightManagement = true;\n }\n });\n this.cd.detectChanges();\n }\n\n /**\n * Updates the active index and synchronizes slide active/inert state.\n */\n private setActiveIndex(index: number): void {\n this.activeIndex = index;\n this.slides().forEach((item, idx) => {\n item.isCurrent.set(idx === index);\n });\n }\n\n /**\n * Restarts the CSS progress animation on the active slide's loading bar.\n * The animation uses `forwards`, so re-applying the `is-active` class alone\n * will not replay it; the animation must be reset explicitly.\n */\n private restartActiveLoadingBar(): void {\n if (!this.getAutoplay()?.isPlaying()) {\n return;\n }\n const bar = this.loadingBars()[this.activeIndex]?.nativeElement as HTMLElement | undefined;\n if (!bar) {\n return;\n }\n bar.style.animation = 'none';\n // Force reflow so the browser registers the reset before re-enabling.\n void bar.offsetWidth;\n bar.style.animation = '';\n }\n\n /**\n * Advances the visible teaser window when the active slide moves out of it.\n */\n private updateTeaserWindow(): void {\n const count = this.getSlidesCount();\n if (count <= VISIBLE_TEASERS) {\n this.teaserWindowStart = 0;\n return;\n }\n const firstHiddenIndex = (this.teaserWindowStart + VISIBLE_TEASERS) % count;\n if (this.activeIndex === firstHiddenIndex) {\n this.teaserWindowStart = firstHiddenIndex;\n }\n }\n\n /**\n * Returns the number of actual visible slides.\n */\n private getSlidesCount(): number {\n return this.slides()?.length ?? 0;\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 '(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.set(result.breakpoints['(max-width: 768px)']);\n this.isTabletBreakpoint = result.breakpoints['(min-width: 998px)'];\n this.isLargeBreakpoint = result.breakpoints['(min-width: 1140px)'];\n this.isDesktopBreakpointActive.set(result.breakpoints['(min-width: 1140px)']);\n this.isDesktopBreakpoint = result.breakpoints['(min-width: 1140px) and (max-width: 1260px)'];\n\n // Deactivate autoplay on mobile; (re)activate it on larger\n // screens if autoplay is desired. Focus is never moved here so\n // the page is not scrolled to the carousel on load/resize.\n if (this.isMobileBreakpoint()) {\n this.stopAutoplay();\n return;\n }\n\n if (this.isTabletBreakpoint && this.isAutoplayDesired() && !this.isPausedForced()) {\n this.onPlayClick(false);\n }\n });\n }\n\n /**\n * Observes changes to the carousel's viewport element size using a timeout debounce.\n */\n private observeElementSizeChanges(): void {\n setTimeout(() => {\n if (this.isLargeBreakpoint) {\n this.checkBannerHeights();\n } else {\n this.resetHeight();\n }\n this.embla()?.reInit();\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 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 }\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 }\n}\n","@if (hasControls()) {\n<div class=\"ecl-carousel__controls\">\n <div class=\"ecl-container\">\n <div class=\"ecl-carousel__navigation\">\n <div class=\"ecl-carousel__pager-container\">\n <ecl-slider-pager\n class=\"ecl-carousel__pager\"\n [variant]=\"pagerVariant()\"\n size=\"m\"\n [isPlaying]=\"isPagerPlaying()\"\n [activeIndex]=\"getCurrentSlideIndex()\"\n [dotIndices]=\"getDotIndices()\"\n [dotAriaLabels]=\"getDotAriaLabels()\"\n prevExtraClasses=\"ecl-carousel__prev\"\n nextExtraClasses=\"ecl-carousel__next\"\n dotsExtraClasses=\"ecl-carousel__dots\"\n dotExtraClasses=\"ecl-carousel__dot\"\n playExtraClasses=\"ecl-carousel__play\"\n pauseExtraClasses=\"ecl-carousel__pause\"\n (play)=\"onPlayClick()\"\n (pause)=\"onPauseClick()\"\n (prev)=\"onPreviousSlideClick()\"\n (next)=\"onNextSlideClick()\"\n (goTo)=\"onDotClick($event)\">\n </ecl-slider-pager>\n <div class=\"ecl-carousel__counter\" dir=\"ltr\">\n {{ getCounterCurrent() }} {{ counterLabel() || ('ecl.common.OF' | translate) }} {{ getCounterTotal() }}\n </div>\n </div>\n\n <div class=\"ecl-carousel__teasers\" role=\"tablist\">\n @for (slide of slides(); let i = $index; track slide) {\n <button #teaserButton type=\"button\" class=\"ecl-carousel__teaser-button\" role=\"tab\"\n [attr.data-ecl-carousel-slide-index]=\"i\"\n [attr.aria-current]=\"i === getCurrentSlideIndex() ? true : null\"\n [attr.tabindex]=\"i === getCurrentSlideIndex() ? null : -1\"\n [style.display]=\"isTeaserVisible(i) ? null : 'none'\"\n [style.pointer-events]=\"isTeaserVisible(i) ? null : 'none'\"\n [style.order]=\"getTeaserOrder(i)\" (click)=\"onTeaserClick(i)\"\n (keydown)=\"onTeaserKeyboardPress($event, i)\">\n <span class=\"ecl-carousel__teaser-loading-bar\" aria-hidden=\"true\"\n [class.is-active]=\"(isPlaying() || isHoverPaused() || isPausedForced()) && i === getCurrentSlideIndex()\"\n [class.is-paused]=\"(isHoverPaused() || isPausedForced()) && i === getCurrentSlideIndex()\">\n <span #loadingBar class=\"ecl-carousel__teaser-loading-bar-completion\"></span>\n </span>\n <span class=\"ecl-carousel__teaser-content\">\n @if (slide.teaserText()) {\n <span class=\"ecl-carousel__teaser-title\">{{ slide.teaserText() }}</span>\n }\n </span>\n </button>\n }\n </div>\n </div>\n </div>\n</div>\n}\n<div #carouselContainer class=\"ecl-carousel__viewport\" [class.ecl-carousel-container--padded]=\"isPadded()\"\n emblaCarousel #embla=\"emblaCarousel\" [options]=\"emblaOptions\" [plugins]=\"emblaPlugins\"\n [subscribeToEvents]=\"emblaEvents\" (emblaChange)=\"onEmblaEvent($event)\"\n (mouseenter)=\"onViewportPause()\" (mouseleave)=\"onViewportResume()\"\n (focusin)=\"onViewportPause()\" (focusout)=\"onViewportResume()\">\n <div class=\"ecl-carousel__slides\">\n <ng-content></ng-content>\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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"}
@@ -1004,7 +1004,7 @@ class EclMenuComponent extends ECLBaseDirective {
1004
1004
  ngOnInit() {
1005
1005
  if (isPlatformBrowser(this.platformId)) {
1006
1006
  this.handleRtlChangeState();
1007
- this.observeSwipeGestures();
1007
+ // this.observeSwipeGestures();
1008
1008
  }
1009
1009
  }
1010
1010
  ngAfterContentInit() {
@@ -1013,8 +1013,8 @@ class EclMenuComponent extends ECLBaseDirective {
1013
1013
  ngOnDestroy() {
1014
1014
  this.destroy$.next(true);
1015
1015
  this.destroy$.unsubscribe();
1016
- this.hammertime?.off('swipeleft');
1017
- this.hammertime?.off('swiperight');
1016
+ // this.hammertime?.off('swipeleft');
1017
+ // this.hammertime?.off('swiperight');
1018
1018
  }
1019
1019
  /**
1020
1020
  * Swipe left gesture handling
@@ -1545,18 +1545,18 @@ class EclMenuComponent extends ECLBaseDirective {
1545
1545
  sendMenuItemSelectEvent(evt) {
1546
1546
  this.menuItemSelect.emit(new EclMenuItemSelectEvent(evt.menuItem, evt.domEvent));
1547
1547
  }
1548
- observeSwipeGestures() {
1549
- // load hammerjs only on browser
1550
- if (isPlatformBrowser(this.platformId)) {
1551
- import('hammerjs').then((Hammer) => {
1552
- this.hammertime = new Hammer.default(this.document, { inputClass: Hammer.TouchInput });
1553
- this.hammertime.on('swipeleft', this.onSwipeLeft.bind(this));
1554
- this.hammertime.on('swiperight', this.onSwipeRight.bind(this));
1555
- }).catch((error) => {
1556
- console.error('Error loading HammerJS', error);
1557
- });
1558
- }
1559
- }
1548
+ // private observeSwipeGestures(): void {
1549
+ // // load hammerjs only on browser
1550
+ // if(isPlatformBrowser(this.platformId)) {
1551
+ // import('hammerjs').then((Hammer: Hammer) => {
1552
+ // this.hammertime = new Hammer.default(this.document, { inputClass: Hammer.TouchInput });
1553
+ // this.hammertime.on('swipeleft', this.onSwipeLeft.bind(this));
1554
+ // this.hammertime.on('swiperight', this.onSwipeRight.bind(this));
1555
+ // }).catch((error) => {
1556
+ // console.error('Error loading HammerJS', error);
1557
+ // });
1558
+ // }
1559
+ // }
1560
1560
  subscribeToAppShellBreakpoints() {
1561
1561
  this.euiAppShellService.breakpoints$
1562
1562
  .pipe(takeUntil(this.destroy$))