@eui/ecl 23.0.0-alpha.3 → 23.0.0-alpha.5

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 (312) hide show
  1. package/docs/changelog.html +77 -0
  2. package/docs/components/EclAddToCalendarComponent.html +7 -62
  3. package/docs/components/EclAnimatedNumbersComponent.html +0 -39
  4. package/docs/components/EclAppComponent.html +12 -72
  5. package/docs/components/EclBannerComponent.html +46 -46
  6. package/docs/components/EclBlockquoteComponent.html +6 -1
  7. package/docs/components/EclCarouselComponent.html +5 -0
  8. package/docs/components/EclCategoryFilterComponent.html +5 -0
  9. package/docs/components/EclCategoryFilterItemComponent.html +15 -10
  10. package/docs/components/EclCheckboxLabelComponent.html +1 -1
  11. package/docs/components/EclContentItemComponent.html +4 -0
  12. package/docs/components/EclDateBlockComponent.html +43 -18
  13. package/docs/components/EclExpandableComponent.html +63 -1
  14. package/docs/components/EclFeaturedComponent.html +46 -37
  15. package/docs/components/EclFileComponent.html +19 -14
  16. package/docs/components/EclFileItemsComponent.html +31 -1
  17. package/docs/components/EclFormLabelComponent.html +1 -1
  18. package/docs/components/EclGalleryComponent.html +29 -29
  19. package/docs/components/EclGalleryItemComponent.html +47 -47
  20. package/docs/components/EclIconComponent.html +158 -48
  21. package/docs/components/EclInpageNavigationComponent.html +21 -1
  22. package/docs/components/EclInpageNavigationItemComponent.html +39 -1
  23. package/docs/components/EclListIllustrationComponent.html +47 -47
  24. package/docs/components/EclListIllustrationItemComponent.html +1 -1
  25. package/docs/components/EclMediaContainerComponent.html +20 -20
  26. package/docs/components/EclMegaMenuFeaturedComponent.html +6 -1
  27. package/docs/components/EclMegaMenuInfoComponent.html +11 -1
  28. package/docs/components/EclMegaMenuItemComponent.html +44 -34
  29. package/docs/components/EclMegaMenuSubitemComponent.html +46 -31
  30. package/docs/components/EclMenuItemComponent.html +12 -2
  31. package/docs/components/EclMenuMegaItemComponent.html +8 -3
  32. package/docs/components/EclMultiselectComponent.html +56 -56
  33. package/docs/components/EclMultiselectDropdownComponent.html +1 -1
  34. package/docs/components/EclMultiselectOptgroupComponent.html +6 -1
  35. package/docs/components/EclNavigationListItemComponent.html +1 -1
  36. package/docs/components/EclNotificationComponent.html +32 -1
  37. package/docs/components/EclPaginationItemComponent.html +84 -59
  38. package/docs/components/EclRatingFieldComponent.html +98 -2
  39. package/docs/components/EclSearchFormComponent.html +41 -1
  40. package/docs/components/EclSelectContainerComponent.html +116 -1
  41. package/docs/components/EclSiteFooterComponent.html +1 -1
  42. package/docs/components/EclSiteFooterCoreComponent.html +6 -1
  43. package/docs/components/EclSiteFooterFixedContentEUComponent.html +16 -1
  44. package/docs/components/EclSiteFooterRowCommonComponent.html +6 -1
  45. package/docs/components/EclSiteHeaderComponent.html +27 -27
  46. package/docs/components/EclSiteHeaderLanguagePopoverComponent.html +96 -86
  47. package/docs/components/EclSiteHeaderLoginComponent.html +1 -1
  48. package/docs/components/EclSiteHeaderSearchComponent.html +20 -10
  49. package/docs/components/EclSocialMediaFollowComponent.html +7 -2
  50. package/docs/components/EclSocialMediaFollowItemComponent.html +40 -25
  51. package/docs/components/EclSplashPageLanguageCategoryComponent.html +6 -1
  52. package/docs/components/EclSplashPageLanguageContainerComponent.html +6 -1
  53. package/docs/components/EclSplashPageLanguageLinkComponent.html +6 -1
  54. package/docs/components/EclTabComponent.html +50 -20
  55. package/docs/components/EclTabsComponent.html +1 -1
  56. package/docs/components/EclTagComponent.html +6 -1
  57. package/docs/components/EclTimelineComponent.html +4 -169
  58. package/docs/components/EclTimelineItemComponent.html +104 -1
  59. package/docs/directives/EclAccordionDirective.html +9 -99
  60. package/docs/directives/EclFileTitleDirective.html +5 -0
  61. package/docs/directives/EclFileUploadDirective.html +120 -0
  62. package/docs/directives/EclGalleryMediaDirective.html +5 -0
  63. package/docs/directives/EclMediaContainerIframeDirective.html +9 -11
  64. package/docs/directives/EclMediaContainerItemDirective.html +5 -0
  65. package/docs/directives/EclMultiselectOptionDirective.html +20 -10
  66. package/docs/directives/EclRadioDirective.html +18 -13
  67. package/docs/directives/EclSelectDirective.html +40 -0
  68. package/docs/directives/EclSiteFooterListDirective.html +5 -104
  69. package/docs/directives/EclSiteFooterSectionDirective.html +1 -1
  70. package/docs/directives/EclSiteFooterTitleDirective.html +29 -0
  71. package/docs/directives/EclTableHeaderDirective.html +5 -0
  72. package/docs/directives/EclTextMediaMediaAnchorDirective.html +1 -1
  73. package/docs/js/search/search_index.js +2 -2
  74. package/docs/json/EclAddToCalendarComponent.md +1 -1
  75. package/docs/json/EclBannerComponent.md +7 -7
  76. package/docs/json/EclCategoryFilterItemComponent.md +1 -1
  77. package/docs/json/EclDateBlockComponent.md +1 -1
  78. package/docs/json/EclExpandableComponent.md +2 -0
  79. package/docs/json/EclFeaturedComponent.md +3 -3
  80. package/docs/json/EclFileComponent.md +1 -1
  81. package/docs/json/EclFileItemsComponent.md +1 -0
  82. package/docs/json/EclGalleryComponent.md +4 -4
  83. package/docs/json/EclGalleryItemComponent.md +2 -2
  84. package/docs/json/EclIconComponent.md +4 -4
  85. package/docs/json/EclInpageNavigationItemComponent.md +1 -0
  86. package/docs/json/EclListIllustrationComponent.md +3 -3
  87. package/docs/json/EclMediaContainerComponent.md +1 -1
  88. package/docs/json/EclMediaContainerIframeDirective.md +2 -2
  89. package/docs/json/EclMegaMenuItemComponent.md +2 -2
  90. package/docs/json/EclMegaMenuSubitemComponent.md +3 -3
  91. package/docs/json/EclMenuItemComponent.md +1 -1
  92. package/docs/json/EclMenuMegaItemComponent.md +1 -1
  93. package/docs/json/EclMultiselectComponent.md +3 -3
  94. package/docs/json/EclMultiselectOptionDirective.md +1 -1
  95. package/docs/json/EclNavigationListItemComponent.md +1 -1
  96. package/docs/json/EclNotificationComponent.md +1 -0
  97. package/docs/json/EclPaginationItemComponent.md +3 -3
  98. package/docs/json/EclRadioDirective.md +1 -1
  99. package/docs/json/EclRatingFieldComponent.md +1 -0
  100. package/docs/json/EclSearchFormComponent.md +1 -0
  101. package/docs/json/EclSelectContainerComponent.md +6 -0
  102. package/docs/json/EclSiteFooterSectionDirective.md +1 -1
  103. package/docs/json/EclSiteHeaderComponent.md +2 -2
  104. package/docs/json/EclSiteHeaderLanguagePopoverComponent.md +6 -6
  105. package/docs/json/EclSiteHeaderSearchComponent.md +1 -1
  106. package/docs/json/EclSocialMediaFollowComponent.md +1 -1
  107. package/docs/json/EclSocialMediaFollowItemComponent.md +4 -4
  108. package/docs/json/EclTabComponent.md +2 -1
  109. package/docs/json/EclTagComponent.md +1 -1
  110. package/docs/json/EclTextMediaMediaAnchorDirective.md +1 -1
  111. package/docs/json/EclTimelineItemComponent.md +1 -0
  112. package/docs/json/documentation.json +4188 -2895
  113. package/docs/llms.txt +152 -136
  114. package/docs/properties.html +1 -1
  115. package/fesm2022/eui-ecl-components-ecl-accordion.mjs +5 -15
  116. package/fesm2022/eui-ecl-components-ecl-accordion.mjs.map +1 -1
  117. package/fesm2022/eui-ecl-components-ecl-add-to-calendar.mjs +9 -7
  118. package/fesm2022/eui-ecl-components-ecl-add-to-calendar.mjs.map +1 -1
  119. package/fesm2022/eui-ecl-components-ecl-animated-numbers.mjs +2 -2
  120. package/fesm2022/eui-ecl-components-ecl-animated-numbers.mjs.map +1 -1
  121. package/fesm2022/eui-ecl-components-ecl-app.mjs +13 -14
  122. package/fesm2022/eui-ecl-components-ecl-app.mjs.map +1 -1
  123. package/fesm2022/eui-ecl-components-ecl-banner.mjs +27 -37
  124. package/fesm2022/eui-ecl-components-ecl-banner.mjs.map +1 -1
  125. package/fesm2022/eui-ecl-components-ecl-blockquote.mjs +11 -7
  126. package/fesm2022/eui-ecl-components-ecl-blockquote.mjs.map +1 -1
  127. package/fesm2022/eui-ecl-components-ecl-card.mjs +7 -10
  128. package/fesm2022/eui-ecl-components-ecl-card.mjs.map +1 -1
  129. package/fesm2022/eui-ecl-components-ecl-carousel.mjs +14 -18
  130. package/fesm2022/eui-ecl-components-ecl-carousel.mjs.map +1 -1
  131. package/fesm2022/eui-ecl-components-ecl-category-filter.mjs +21 -13
  132. package/fesm2022/eui-ecl-components-ecl-category-filter.mjs.map +1 -1
  133. package/fesm2022/eui-ecl-components-ecl-checkbox.mjs +5 -8
  134. package/fesm2022/eui-ecl-components-ecl-checkbox.mjs.map +1 -1
  135. package/fesm2022/eui-ecl-components-ecl-content-item.mjs +18 -26
  136. package/fesm2022/eui-ecl-components-ecl-content-item.mjs.map +1 -1
  137. package/fesm2022/eui-ecl-components-ecl-date-block.mjs +39 -22
  138. package/fesm2022/eui-ecl-components-ecl-date-block.mjs.map +1 -1
  139. package/fesm2022/eui-ecl-components-ecl-expandable.mjs +21 -16
  140. package/fesm2022/eui-ecl-components-ecl-expandable.mjs.map +1 -1
  141. package/fesm2022/eui-ecl-components-ecl-featured.mjs +17 -18
  142. package/fesm2022/eui-ecl-components-ecl-featured.mjs.map +1 -1
  143. package/fesm2022/eui-ecl-components-ecl-file-upload.mjs +25 -23
  144. package/fesm2022/eui-ecl-components-ecl-file-upload.mjs.map +1 -1
  145. package/fesm2022/eui-ecl-components-ecl-file.mjs +27 -20
  146. package/fesm2022/eui-ecl-components-ecl-file.mjs.map +1 -1
  147. package/fesm2022/eui-ecl-components-ecl-form-label.mjs +6 -12
  148. package/fesm2022/eui-ecl-components-ecl-form-label.mjs.map +1 -1
  149. package/fesm2022/eui-ecl-components-ecl-gallery.mjs +44 -71
  150. package/fesm2022/eui-ecl-components-ecl-gallery.mjs.map +1 -1
  151. package/fesm2022/eui-ecl-components-ecl-help-block.mjs +5 -8
  152. package/fesm2022/eui-ecl-components-ecl-help-block.mjs.map +1 -1
  153. package/fesm2022/eui-ecl-components-ecl-icon.mjs +50 -39
  154. package/fesm2022/eui-ecl-components-ecl-icon.mjs.map +1 -1
  155. package/fesm2022/eui-ecl-components-ecl-inpage-navigation.mjs +38 -32
  156. package/fesm2022/eui-ecl-components-ecl-inpage-navigation.mjs.map +1 -1
  157. package/fesm2022/eui-ecl-components-ecl-label.mjs +6 -7
  158. package/fesm2022/eui-ecl-components-ecl-label.mjs.map +1 -1
  159. package/fesm2022/eui-ecl-components-ecl-list-illustration.mjs +37 -57
  160. package/fesm2022/eui-ecl-components-ecl-list-illustration.mjs.map +1 -1
  161. package/fesm2022/eui-ecl-components-ecl-loading-indicator.mjs +13 -21
  162. package/fesm2022/eui-ecl-components-ecl-loading-indicator.mjs.map +1 -1
  163. package/fesm2022/eui-ecl-components-ecl-media-container.mjs +22 -27
  164. package/fesm2022/eui-ecl-components-ecl-media-container.mjs.map +1 -1
  165. package/fesm2022/eui-ecl-components-ecl-mega-menu.mjs +67 -73
  166. package/fesm2022/eui-ecl-components-ecl-mega-menu.mjs.map +1 -1
  167. package/fesm2022/eui-ecl-components-ecl-menu.mjs +46 -51
  168. package/fesm2022/eui-ecl-components-ecl-menu.mjs.map +1 -1
  169. package/fesm2022/eui-ecl-components-ecl-multiselect.mjs +52 -43
  170. package/fesm2022/eui-ecl-components-ecl-multiselect.mjs.map +1 -1
  171. package/fesm2022/eui-ecl-components-ecl-navigation-list.mjs +13 -19
  172. package/fesm2022/eui-ecl-components-ecl-navigation-list.mjs.map +1 -1
  173. package/fesm2022/eui-ecl-components-ecl-news-ticker.mjs +6 -9
  174. package/fesm2022/eui-ecl-components-ecl-news-ticker.mjs.map +1 -1
  175. package/fesm2022/eui-ecl-components-ecl-notification.mjs +19 -21
  176. package/fesm2022/eui-ecl-components-ecl-notification.mjs.map +1 -1
  177. package/fesm2022/eui-ecl-components-ecl-page-header.mjs +5 -8
  178. package/fesm2022/eui-ecl-components-ecl-page-header.mjs.map +1 -1
  179. package/fesm2022/eui-ecl-components-ecl-pagination.mjs +57 -64
  180. package/fesm2022/eui-ecl-components-ecl-pagination.mjs.map +1 -1
  181. package/fesm2022/eui-ecl-components-ecl-radio.mjs +8 -7
  182. package/fesm2022/eui-ecl-components-ecl-radio.mjs.map +1 -1
  183. package/fesm2022/eui-ecl-components-ecl-rating-field.mjs +35 -27
  184. package/fesm2022/eui-ecl-components-ecl-rating-field.mjs.map +1 -1
  185. package/fesm2022/eui-ecl-components-ecl-search-form.mjs +23 -23
  186. package/fesm2022/eui-ecl-components-ecl-search-form.mjs.map +1 -1
  187. package/fesm2022/eui-ecl-components-ecl-select.mjs +31 -40
  188. package/fesm2022/eui-ecl-components-ecl-select.mjs.map +1 -1
  189. package/fesm2022/eui-ecl-components-ecl-site-footer.mjs +71 -70
  190. package/fesm2022/eui-ecl-components-ecl-site-footer.mjs.map +1 -1
  191. package/fesm2022/eui-ecl-components-ecl-site-header.mjs +44 -55
  192. package/fesm2022/eui-ecl-components-ecl-site-header.mjs.map +1 -1
  193. package/fesm2022/eui-ecl-components-ecl-social-media-follow.mjs +27 -36
  194. package/fesm2022/eui-ecl-components-ecl-social-media-follow.mjs.map +1 -1
  195. package/fesm2022/eui-ecl-components-ecl-splash-page.mjs +38 -18
  196. package/fesm2022/eui-ecl-components-ecl-splash-page.mjs.map +1 -1
  197. package/fesm2022/eui-ecl-components-ecl-sticky-container.mjs +11 -16
  198. package/fesm2022/eui-ecl-components-ecl-sticky-container.mjs.map +1 -1
  199. package/fesm2022/eui-ecl-components-ecl-table.mjs +16 -15
  200. package/fesm2022/eui-ecl-components-ecl-table.mjs.map +1 -1
  201. package/fesm2022/eui-ecl-components-ecl-tabs.mjs +32 -34
  202. package/fesm2022/eui-ecl-components-ecl-tabs.mjs.map +1 -1
  203. package/fesm2022/eui-ecl-components-ecl-tag.mjs +14 -12
  204. package/fesm2022/eui-ecl-components-ecl-tag.mjs.map +1 -1
  205. package/fesm2022/eui-ecl-components-ecl-text-area.mjs +9 -12
  206. package/fesm2022/eui-ecl-components-ecl-text-area.mjs.map +1 -1
  207. package/fesm2022/eui-ecl-components-ecl-text-input.mjs +15 -19
  208. package/fesm2022/eui-ecl-components-ecl-text-input.mjs.map +1 -1
  209. package/fesm2022/eui-ecl-components-ecl-text-media.mjs +5 -8
  210. package/fesm2022/eui-ecl-components-ecl-text-media.mjs.map +1 -1
  211. package/fesm2022/eui-ecl-components-ecl-timeline.mjs +40 -59
  212. package/fesm2022/eui-ecl-components-ecl-timeline.mjs.map +1 -1
  213. package/fesm2022/eui-ecl-core.mjs.map +1 -1
  214. package/package.json +8 -3
  215. package/types/eui-ecl-components-ecl-accordion.d.ts +2 -10
  216. package/types/eui-ecl-components-ecl-accordion.d.ts.map +1 -1
  217. package/types/eui-ecl-components-ecl-add-to-calendar.d.ts +4 -1
  218. package/types/eui-ecl-components-ecl-add-to-calendar.d.ts.map +1 -1
  219. package/types/eui-ecl-components-ecl-animated-numbers.d.ts +1 -1
  220. package/types/eui-ecl-components-ecl-animated-numbers.d.ts.map +1 -1
  221. package/types/eui-ecl-components-ecl-app.d.ts +6 -6
  222. package/types/eui-ecl-components-ecl-app.d.ts.map +1 -1
  223. package/types/eui-ecl-components-ecl-banner.d.ts +9 -10
  224. package/types/eui-ecl-components-ecl-banner.d.ts.map +1 -1
  225. package/types/eui-ecl-components-ecl-blockquote.d.ts +2 -2
  226. package/types/eui-ecl-components-ecl-blockquote.d.ts.map +1 -1
  227. package/types/eui-ecl-components-ecl-card.d.ts +2 -3
  228. package/types/eui-ecl-components-ecl-card.d.ts.map +1 -1
  229. package/types/eui-ecl-components-ecl-carousel.d.ts +10 -12
  230. package/types/eui-ecl-components-ecl-carousel.d.ts.map +1 -1
  231. package/types/eui-ecl-components-ecl-category-filter.d.ts +4 -4
  232. package/types/eui-ecl-components-ecl-category-filter.d.ts.map +1 -1
  233. package/types/eui-ecl-components-ecl-checkbox.d.ts +2 -3
  234. package/types/eui-ecl-components-ecl-checkbox.d.ts.map +1 -1
  235. package/types/eui-ecl-components-ecl-content-item.d.ts +8 -10
  236. package/types/eui-ecl-components-ecl-content-item.d.ts.map +1 -1
  237. package/types/eui-ecl-components-ecl-date-block.d.ts +10 -10
  238. package/types/eui-ecl-components-ecl-date-block.d.ts.map +1 -1
  239. package/types/eui-ecl-components-ecl-expandable.d.ts +7 -8
  240. package/types/eui-ecl-components-ecl-expandable.d.ts.map +1 -1
  241. package/types/eui-ecl-components-ecl-featured.d.ts +4 -5
  242. package/types/eui-ecl-components-ecl-featured.d.ts.map +1 -1
  243. package/types/eui-ecl-components-ecl-file-upload.d.ts +9 -11
  244. package/types/eui-ecl-components-ecl-file-upload.d.ts.map +1 -1
  245. package/types/eui-ecl-components-ecl-file.d.ts +7 -8
  246. package/types/eui-ecl-components-ecl-file.d.ts.map +1 -1
  247. package/types/eui-ecl-components-ecl-form-label.d.ts +3 -5
  248. package/types/eui-ecl-components-ecl-form-label.d.ts.map +1 -1
  249. package/types/eui-ecl-components-ecl-gallery.d.ts +32 -41
  250. package/types/eui-ecl-components-ecl-gallery.d.ts.map +1 -1
  251. package/types/eui-ecl-components-ecl-help-block.d.ts +3 -4
  252. package/types/eui-ecl-components-ecl-help-block.d.ts.map +1 -1
  253. package/types/eui-ecl-components-ecl-icon.d.ts +17 -12
  254. package/types/eui-ecl-components-ecl-icon.d.ts.map +1 -1
  255. package/types/eui-ecl-components-ecl-inpage-navigation.d.ts +18 -19
  256. package/types/eui-ecl-components-ecl-inpage-navigation.d.ts.map +1 -1
  257. package/types/eui-ecl-components-ecl-label.d.ts +3 -3
  258. package/types/eui-ecl-components-ecl-label.d.ts.map +1 -1
  259. package/types/eui-ecl-components-ecl-list-illustration.d.ts +25 -30
  260. package/types/eui-ecl-components-ecl-list-illustration.d.ts.map +1 -1
  261. package/types/eui-ecl-components-ecl-loading-indicator.d.ts +6 -8
  262. package/types/eui-ecl-components-ecl-loading-indicator.d.ts.map +1 -1
  263. package/types/eui-ecl-components-ecl-media-container.d.ts +9 -11
  264. package/types/eui-ecl-components-ecl-media-container.d.ts.map +1 -1
  265. package/types/eui-ecl-components-ecl-mega-menu.d.ts +25 -28
  266. package/types/eui-ecl-components-ecl-mega-menu.d.ts.map +1 -1
  267. package/types/eui-ecl-components-ecl-menu.d.ts +26 -31
  268. package/types/eui-ecl-components-ecl-menu.d.ts.map +1 -1
  269. package/types/eui-ecl-components-ecl-multiselect.d.ts +13 -13
  270. package/types/eui-ecl-components-ecl-multiselect.d.ts.map +1 -1
  271. package/types/eui-ecl-components-ecl-navigation-list.d.ts +5 -7
  272. package/types/eui-ecl-components-ecl-navigation-list.d.ts.map +1 -1
  273. package/types/eui-ecl-components-ecl-news-ticker.d.ts +2 -3
  274. package/types/eui-ecl-components-ecl-news-ticker.d.ts.map +1 -1
  275. package/types/eui-ecl-components-ecl-notification.d.ts +17 -19
  276. package/types/eui-ecl-components-ecl-notification.d.ts.map +1 -1
  277. package/types/eui-ecl-components-ecl-page-header.d.ts +2 -3
  278. package/types/eui-ecl-components-ecl-page-header.d.ts.map +1 -1
  279. package/types/eui-ecl-components-ecl-pagination.d.ts +22 -29
  280. package/types/eui-ecl-components-ecl-pagination.d.ts.map +1 -1
  281. package/types/eui-ecl-components-ecl-radio.d.ts +2 -3
  282. package/types/eui-ecl-components-ecl-radio.d.ts.map +1 -1
  283. package/types/eui-ecl-components-ecl-rating-field.d.ts +12 -12
  284. package/types/eui-ecl-components-ecl-rating-field.d.ts.map +1 -1
  285. package/types/eui-ecl-components-ecl-search-form.d.ts +10 -10
  286. package/types/eui-ecl-components-ecl-search-form.d.ts.map +1 -1
  287. package/types/eui-ecl-components-ecl-select.d.ts +13 -17
  288. package/types/eui-ecl-components-ecl-select.d.ts.map +1 -1
  289. package/types/eui-ecl-components-ecl-site-footer.d.ts +22 -27
  290. package/types/eui-ecl-components-ecl-site-footer.d.ts.map +1 -1
  291. package/types/eui-ecl-components-ecl-site-header.d.ts +16 -18
  292. package/types/eui-ecl-components-ecl-site-header.d.ts.map +1 -1
  293. package/types/eui-ecl-components-ecl-social-media-follow.d.ts +21 -23
  294. package/types/eui-ecl-components-ecl-social-media-follow.d.ts.map +1 -1
  295. package/types/eui-ecl-components-ecl-splash-page.d.ts +6 -6
  296. package/types/eui-ecl-components-ecl-splash-page.d.ts.map +1 -1
  297. package/types/eui-ecl-components-ecl-sticky-container.d.ts +6 -7
  298. package/types/eui-ecl-components-ecl-sticky-container.d.ts.map +1 -1
  299. package/types/eui-ecl-components-ecl-table.d.ts +4 -5
  300. package/types/eui-ecl-components-ecl-table.d.ts.map +1 -1
  301. package/types/eui-ecl-components-ecl-tabs.d.ts +5 -6
  302. package/types/eui-ecl-components-ecl-tabs.d.ts.map +1 -1
  303. package/types/eui-ecl-components-ecl-tag.d.ts +3 -4
  304. package/types/eui-ecl-components-ecl-tag.d.ts.map +1 -1
  305. package/types/eui-ecl-components-ecl-text-area.d.ts +5 -6
  306. package/types/eui-ecl-components-ecl-text-area.d.ts.map +1 -1
  307. package/types/eui-ecl-components-ecl-text-input.d.ts +6 -7
  308. package/types/eui-ecl-components-ecl-text-input.d.ts.map +1 -1
  309. package/types/eui-ecl-components-ecl-text-media.d.ts +2 -2
  310. package/types/eui-ecl-components-ecl-text-media.d.ts.map +1 -1
  311. package/types/eui-ecl-components-ecl-timeline.d.ts +8 -17
  312. package/types/eui-ecl-components-ecl-timeline.d.ts.map +1 -1
@@ -1,6 +1,6 @@
1
1
  import { BreakpointObserver } from '@angular/cdk/layout';
2
2
  import * as i0 from '@angular/core';
3
- import { inject, ElementRef, output, booleanAttribute, HostListener, ContentChild, forwardRef, Input, Component, ChangeDetectorRef, Renderer2, DOCUMENT, afterNextRender, numberAttribute, ViewChild, ViewChildren, ContentChildren } from '@angular/core';
3
+ import { inject, ElementRef, output, booleanAttribute, HostListener, ContentChild, forwardRef, Input, Component, input, numberAttribute, ChangeDetectorRef, Renderer2, DOCUMENT, afterNextRender, ViewChild, ViewChildren, ContentChildren } from '@angular/core';
4
4
  import { EclIconComponent } from '@eui/ecl/components/ecl-icon';
5
5
  import { EclBaseEvent, ECLBaseDirective, EclRtlService, KeyCode } from '@eui/ecl/core';
6
6
  import { TranslatePipe } from '@ngx-translate/core';
@@ -79,11 +79,15 @@ class EclCarouselComponent extends ECLBaseDirective {
79
79
  /**
80
80
  * Aria-label for screen readers to describe the carousel.
81
81
  */
82
- this.ariaLabel = 'Carousel description here';
82
+ this.ariaLabel = input('Carousel description here', { ...(ngDevMode ? { debugName: "ariaLabel" } : /* istanbul ignore next */ {}), alias: 'aria-label' });
83
+ /**
84
+ * Determines whether the carousel should autoplay.
85
+ */
86
+ this.isAutoplay = input(undefined, { ...(ngDevMode ? { debugName: "isAutoplay" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
83
87
  /**
84
88
  * Interval in milliseconds between automatic slide transitions.
85
89
  */
86
- this.playInterval = 5000;
90
+ this.playInterval = input(5000, { ...(ngDevMode ? { debugName: "playInterval" } : /* istanbul ignore next */ {}), transform: numberAttribute });
87
91
  /**
88
92
  * Event emitted when a slide change occurs.
89
93
  */
@@ -343,7 +347,7 @@ class EclCarouselComponent extends ECLBaseDirective {
343
347
  const start$ = this.playSubject.asObservable();
344
348
  const stop$ = this.stopSubject.asObservable();
345
349
  start$
346
- .pipe(switchMap(() => interval(this.playInterval).pipe(takeUntil(stop$))), takeUntil(this.destroy$))
350
+ .pipe(switchMap(() => interval(this.playInterval()).pipe(takeUntil(stop$))), takeUntil(this.destroy$))
347
351
  .subscribe(() => {
348
352
  this.goToNextSlide(true);
349
353
  });
@@ -614,11 +618,12 @@ class EclCarouselComponent extends ECLBaseDirective {
614
618
  this.isTabletBreakpoint = result.breakpoints['(min-width: 998px)'];
615
619
  this.isLargeBreakpoint = result.breakpoints['(min-width: 1140px)'];
616
620
  this.isDesktopBreakpoint = result.breakpoints['(min-width: 1140px) and (max-width: 1260px)'];
617
- if (this.isMobileBreakpoint && !this.isAutoplay) {
621
+ const isAutoplay = this.isAutoplay();
622
+ if (this.isMobileBreakpoint && !isAutoplay) {
618
623
  this.stopPlaying();
619
624
  }
620
625
  if (this.isTabletBreakpoint) {
621
- if (this.isAutoplay || this.isAutoplay === undefined) {
626
+ if (isAutoplay || isAutoplay === undefined) {
622
627
  this.startPlaying();
623
628
  }
624
629
  }
@@ -714,7 +719,7 @@ class EclCarouselComponent extends ECLBaseDirective {
714
719
  }
715
720
  }
716
721
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclCarouselComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
717
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: EclCarouselComponent, isStandalone: true, selector: "ecl-carousel", inputs: { ariaLabel: ["aria-label", "ariaLabel"], isAutoplay: ["isAutoplay", "isAutoplay", booleanAttribute], playInterval: ["playInterval", "playInterval", numberAttribute] }, outputs: { slide: "slide" }, host: { properties: { "attr.aria-label": "ariaLabel", "attr.aria-roledescription": "\"carousel\"", "class": "cssClasses" } }, queries: [{ propertyName: "slides", predicate: i0.forwardRef(() => EclCarouselItemComponent) }], viewQueries: [{ propertyName: "carouselContainerElement", first: true, predicate: ["carouselContainer"], descendants: true }, { propertyName: "playButton", first: true, predicate: ["playButton"], descendants: true }, { propertyName: "pauseButton", first: true, predicate: ["pauseButton"], descendants: true }, { propertyName: "firstHiddenItem", first: true, predicate: ["firstHiddenItem"], descendants: true }, { propertyName: "lastHiddenItem", first: true, predicate: ["lastHiddenItem"], descendants: true }, { propertyName: "slidesContainer", first: true, predicate: ["slidesContainer"], descendants: true }, { propertyName: "navigationButtons", predicate: ["currButton"], descendants: true }], usesInheritance: true, ngImport: i0, template: "@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", styles: [".ecl-carousel__slides{transition-duration:.4s}\n"], dependencies: [{ kind: "component", type: EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "title", "ariaHidden", "focusable", "isFlipHorizontal"] }, { kind: "component", type: EclCarouselItemComponent, selector: "ecl-carousel-item", inputs: ["id", "isCurrent"], outputs: ["slideClick"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
722
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: EclCarouselComponent, isStandalone: true, selector: "ecl-carousel", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, isAutoplay: { classPropertyName: "isAutoplay", publicName: "isAutoplay", isSignal: true, isRequired: false, transformFunction: null }, playInterval: { classPropertyName: "playInterval", publicName: "playInterval", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { slide: "slide" }, host: { properties: { "attr.aria-label": "ariaLabel()", "attr.aria-roledescription": "\"carousel\"", "class": "cssClasses" } }, queries: [{ propertyName: "slides", predicate: i0.forwardRef(() => EclCarouselItemComponent) }], viewQueries: [{ propertyName: "carouselContainerElement", first: true, predicate: ["carouselContainer"], descendants: true }, { propertyName: "playButton", first: true, predicate: ["playButton"], descendants: true }, { propertyName: "pauseButton", first: true, predicate: ["pauseButton"], descendants: true }, { propertyName: "firstHiddenItem", first: true, predicate: ["firstHiddenItem"], descendants: true }, { propertyName: "lastHiddenItem", first: true, predicate: ["lastHiddenItem"], descendants: true }, { propertyName: "slidesContainer", first: true, predicate: ["slidesContainer"], descendants: true }, { propertyName: "navigationButtons", predicate: ["currButton"], descendants: true }], usesInheritance: true, ngImport: i0, template: "@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", styles: [".ecl-carousel__slides{transition-duration:.4s}\n"], dependencies: [{ kind: "component", type: EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "title", "ariaHidden", "focusable", "isFlipHorizontal"] }, { kind: "component", type: EclCarouselItemComponent, selector: "ecl-carousel-item", inputs: ["id", "isCurrent"], outputs: ["slideClick"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
718
723
  }
719
724
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclCarouselComponent, decorators: [{
720
725
  type: Component,
@@ -723,20 +728,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
723
728
  EclIconComponent,
724
729
  EclCarouselItemComponent,
725
730
  ], host: {
726
- '[attr.aria-label]': 'ariaLabel',
731
+ '[attr.aria-label]': 'ariaLabel()',
727
732
  '[attr.aria-roledescription]': '"carousel"',
728
733
  '[class]': 'cssClasses',
729
734
  }, template: "@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", styles: [".ecl-carousel__slides{transition-duration:.4s}\n"] }]
730
- }], ctorParameters: () => [], propDecorators: { ariaLabel: [{
731
- type: Input,
732
- args: ['aria-label']
733
- }], isAutoplay: [{
734
- type: Input,
735
- args: [{ transform: booleanAttribute }]
736
- }], playInterval: [{
737
- type: Input,
738
- args: [{ transform: numberAttribute }]
739
- }], slide: [{ type: i0.Output, args: ["slide"] }], carouselContainerElement: [{
735
+ }], ctorParameters: () => [], propDecorators: { ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], isAutoplay: [{ type: i0.Input, args: [{ isSignal: true, alias: "isAutoplay", required: false }] }], playInterval: [{ type: i0.Input, args: [{ isSignal: true, alias: "playInterval", required: false }] }], slide: [{ type: i0.Output, args: ["slide"] }], carouselContainerElement: [{
740
736
  type: ViewChild,
741
737
  args: ['carouselContainer']
742
738
  }], slides: [{
@@ -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 HostListener,\n Input,\n booleanAttribute,\n ContentChild,\n forwardRef,\n inject,\n output,\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 },\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 ariaLabel: string;\n\n /**\n * The unique identifier of the slide.\n */\n @Input() id: string;\n\n /**\n * Indicates whether this slide is currently active/visible.\n * Automatically coerced to a boolean value.\n */\n @Input({ transform: booleanAttribute }) isCurrent = false;\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 @ContentChild(forwardRef(() => EclBannerComponent)) banner: EclBannerComponent;\n\n /**\n * Internal slide index, assigned dynamically by the carousel.\n */\n public index: number;\n\n /**\n * Computes the slide's CSS class.\n */\n get cssClasses(): string {\n return [super.getCssClasses('ecl-carousel__slide')].join(' ').trim();\n }\n\n /**\n * Handles click events on the slide and emits a slideClick event.\n */\n @HostListener('click')\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 ContentChildren,\n DOCUMENT,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n QueryList,\n Renderer2,\n ViewChild,\n ViewChildren,\n afterNextRender,\n booleanAttribute,\n forwardRef,\n inject,\n numberAttribute,\n output,\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 @Input('aria-label') ariaLabel: string | null = 'Carousel description here';\n\n /**\n * Determines whether the carousel should autoplay.\n */\n @Input({ transform: booleanAttribute }) isAutoplay: boolean;\n\n /**\n * Interval in milliseconds between automatic slide transitions.\n */\n @Input({ transform: numberAttribute }) playInterval = 5000;\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 @ViewChild('carouselContainer') carouselContainerElement: ElementRef;\n\n /**\n * Collection of slide components rendered inside the carousel.\n */\n @ContentChildren(forwardRef(() => EclCarouselItemComponent)) slides: QueryList<EclCarouselItemComponent>;\n\n /**\n * References to the navigation buttons corresponding to each slide.\n */\n @ViewChildren('currButton') navigationButtons: QueryList<ElementRef>;\n\n /**\n * Reference to the play button element.\n */\n @ViewChild('playButton') playButton: ElementRef;\n\n /**\n * Reference to the pause button element.\n */\n @ViewChild('pauseButton') pauseButton: ElementRef;\n\n /**\n * Reference to the first hidden slide item (used for focus management).\n */\n @ViewChild('firstHiddenItem') firstHiddenItem: EclCarouselItemComponent;\n\n /**\n * Reference to the last hidden slide item (used for focus management).\n */\n @ViewChild('lastHiddenItem') lastHiddenItem: EclCarouselItemComponent;\n\n /**\n * Reference to the slides container element.\n */\n @ViewChild('slidesContainer') slidesContainer: ElementRef;\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 get cssClasses(): string {\n return [super.getCssClasses('ecl-carousel')].join(' ').trim();\n }\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.get(this.getCurrentSlideIndex()));\n this.stopPlaying();\n } else {\n this.focusOnButton(this.navigationButtons.get(this.getCurrentSlideIndex()));\n }\n e.preventDefault();\n } else if (!this.isPlaying && [KeyCode.ARROW_RIGHT].includes(e.key)) {\n this.focusOnButton(this.navigationButtons.get(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.first, 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 = false;\n this.lastHiddenItem.el.nativeElement.innerHTML = this.getFirstContentChild();\n this.lastHiddenItem.isCurrent = 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.first;\n this.activateSlide(item, false);\n } else if (this.getCurrentItemIndex() === 0) {\n const item = this.slides.last;\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.get(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.get(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 = idx;\n item.ariaLabel = `slide ${idx + 1} of ${this.getSlidesCount()}`;\n if (item.banner) {\n item.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 = false;\n });\n slideItem.isCurrent = true;\n }\n this.cd.detectChanges();\n if (withTransition) {\n this.slide.emit(new EclSlideEvent(this.slides.get(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.last;\n }\n } else {\n return this.slides.get(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.toArray(), ...[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.first;\n }\n } else {\n return this.slides.get(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.get(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 if (this.playButton) {\n this.focusOnButton(this.playButton);\n }\n if (this.pauseButton) {\n this.focusOnButton(this.pauseButton);\n }\n } else {\n setTimeout(() => {\n this.goToPreviousSlide(false);\n const button: ElementRef = this.navigationButtons.get(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 if (this.isMobileBreakpoint && !this.isAutoplay) {\n this.stopPlaying();\n }\n\n if (this.isTabletBreakpoint) {\n if (this.isAutoplay || this.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 if (slide.banner) {\n slide.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 if (tallestElementHeight > 1 && elementHeights.length === this.slides.length) {\n this.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 HostListener,\n Input,\n booleanAttribute,\n ContentChild,\n forwardRef,\n inject,\n output,\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 },\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 ariaLabel: string;\n\n /**\n * The unique identifier of the slide.\n */\n @Input() id: string;\n\n /**\n * Indicates whether this slide is currently active/visible.\n * Automatically coerced to a boolean value.\n */\n @Input({ transform: booleanAttribute }) isCurrent = false;\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 @ContentChild(forwardRef(() => EclBannerComponent)) banner: EclBannerComponent;\n\n /**\n * Internal slide index, assigned dynamically by the carousel.\n */\n public index: number;\n\n /**\n * Computes the slide's CSS class.\n */\n get cssClasses(): string {\n return [super.getCssClasses('ecl-carousel__slide')].join(' ').trim();\n }\n\n /**\n * Handles click events on the slide and emits a slideClick event.\n */\n @HostListener('click')\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 ContentChildren,\n DOCUMENT,\n ElementRef,\n OnDestroy,\n OnInit,\n QueryList,\n Renderer2,\n ViewChild,\n ViewChildren,\n afterNextRender,\n booleanAttribute,\n forwardRef,\n inject,\n numberAttribute,\n output,\n input,\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 @ViewChild('carouselContainer') carouselContainerElement: ElementRef;\n\n /**\n * Collection of slide components rendered inside the carousel.\n */\n @ContentChildren(forwardRef(() => EclCarouselItemComponent)) slides: QueryList<EclCarouselItemComponent>;\n\n /**\n * References to the navigation buttons corresponding to each slide.\n */\n @ViewChildren('currButton') navigationButtons: QueryList<ElementRef>;\n\n /**\n * Reference to the play button element.\n */\n @ViewChild('playButton') playButton: ElementRef;\n\n /**\n * Reference to the pause button element.\n */\n @ViewChild('pauseButton') pauseButton: ElementRef;\n\n /**\n * Reference to the first hidden slide item (used for focus management).\n */\n @ViewChild('firstHiddenItem') firstHiddenItem: EclCarouselItemComponent;\n\n /**\n * Reference to the last hidden slide item (used for focus management).\n */\n @ViewChild('lastHiddenItem') lastHiddenItem: EclCarouselItemComponent;\n\n /**\n * Reference to the slides container element.\n */\n @ViewChild('slidesContainer') slidesContainer: ElementRef;\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 get cssClasses(): string {\n return [super.getCssClasses('ecl-carousel')].join(' ').trim();\n }\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.get(this.getCurrentSlideIndex()));\n this.stopPlaying();\n } else {\n this.focusOnButton(this.navigationButtons.get(this.getCurrentSlideIndex()));\n }\n e.preventDefault();\n } else if (!this.isPlaying && [KeyCode.ARROW_RIGHT].includes(e.key)) {\n this.focusOnButton(this.navigationButtons.get(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.first, 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 = false;\n this.lastHiddenItem.el.nativeElement.innerHTML = this.getFirstContentChild();\n this.lastHiddenItem.isCurrent = 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.first;\n this.activateSlide(item, false);\n } else if (this.getCurrentItemIndex() === 0) {\n const item = this.slides.last;\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.get(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.get(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 = idx;\n item.ariaLabel = `slide ${idx + 1} of ${this.getSlidesCount()}`;\n if (item.banner) {\n item.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 = false;\n });\n slideItem.isCurrent = true;\n }\n this.cd.detectChanges();\n if (withTransition) {\n this.slide.emit(new EclSlideEvent(this.slides.get(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.last;\n }\n } else {\n return this.slides.get(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.toArray(), ...[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.first;\n }\n } else {\n return this.slides.get(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.get(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 if (this.playButton) {\n this.focusOnButton(this.playButton);\n }\n if (this.pauseButton) {\n this.focusOnButton(this.pauseButton);\n }\n } else {\n setTimeout(() => {\n this.goToPreviousSlide(false);\n const button: ElementRef = this.navigationButtons.get(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 if (slide.banner) {\n slide.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 if (tallestElementHeight > 1 && elementHeights.length === this.slides.length) {\n this.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,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { EventEmitter, ContentChild, forwardRef, HostBinding, Output, Input, Component, ContentChildren, inject, ChangeDetectorRef, Injector, afterNextRender } from '@angular/core';
2
+ import { input, EventEmitter, ContentChild, forwardRef, HostBinding, Output, Input, Component, ContentChildren, inject, ChangeDetectorRef, Injector, afterNextRender } from '@angular/core';
3
3
  import { Subject, startWith, takeUntil } from 'rxjs';
4
4
  import { EclBaseEvent, ECLBaseDirective } from '@eui/ecl/core';
5
5
  import * as i1 from '@eui/ecl/components/ecl-icon';
@@ -23,6 +23,12 @@ class EclCategoryFilterItemSelectEvent extends EclBaseEvent {
23
23
  class EclCategoryFilterItemComponent extends ECLBaseDirective {
24
24
  constructor() {
25
25
  super(...arguments);
26
+ /**
27
+ * Link URL associated with this category filter item.
28
+ * If not provided, the item acts as a toggle only.
29
+ */
30
+ this.href = input(undefined, /* @ts-ignore */
31
+ ...(ngDevMode ? [{ debugName: "href" }] : /* istanbul ignore next */ []));
26
32
  /**
27
33
  * Emits when the item is selected by the user (clicked).
28
34
  */
@@ -107,7 +113,7 @@ class EclCategoryFilterItemComponent extends ECLBaseDirective {
107
113
  this.toggleExpanded();
108
114
  this.isCurrent = true;
109
115
  this.itemSelect.next(new EclCategoryFilterItemSelectEvent(this));
110
- if (!this.href) {
116
+ if (!this.href()) {
111
117
  evt.preventDefault();
112
118
  }
113
119
  evt.stopPropagation();
@@ -121,17 +127,15 @@ class EclCategoryFilterItemComponent extends ECLBaseDirective {
121
127
  }
122
128
  }
123
129
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclCategoryFilterItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
124
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: EclCategoryFilterItemComponent, isStandalone: true, selector: "ecl-category-filter-item", inputs: { href: "href", id: "id" }, outputs: { itemSelect: "itemSelect" }, host: { properties: { "class.ecl-category-filter__list-item": "this.className", "attr.role": "this.role", "class.ecl-category-filter__list-item--open": "this.isAriaExpanded" } }, queries: [{ propertyName: "eclCategoryList", first: true, predicate: i0.forwardRef(() => EclCategoryFilterListComponent), descendants: true }], usesInheritance: true, ngImport: i0, template: "@if (hasChildren) {\n <button\n class=\"ecl-category-filter__item {{ levelClass }}\"\n [class.ecl-category-filter__item--has-children]=\"hasChildren\"\n [class.ecl-category-filter__item--current]=\"isCurrent\"\n [attr.aria-current]=\"isCurrent ? true : null\"\n [attr.aria-expanded] = \"isExpanded\"\n [attr.aria-controls]=\"id\"\n (click)=\"onItemClick($event)\">\n @if(isChildItemWithChildren) {\n <ecl-icon icon=\"solid-arrow\" size=\"xs\" transform=\"rotate-90\" class=\"ecl-category-filter__item-icon\"> </ecl-icon>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n }\n @if(isRootItemWithChildren) {\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-180\" class=\"ecl-category-filter__item-icon\"> </ecl-icon>\n }\n </button>\n} @else {\n <a\n [href]=\"href\"\n class=\"ecl-category-filter__item {{ levelClass }}\"\n [class.ecl-category-filter__item--has-children]=\"hasChildren\"\n [attr.aria-current]=\"isCurrent ? true : null\"\n (click)=\"onItemClick($event)\">\n @if(isChildItemWithChildren) {\n <ecl-icon icon=\"solid-arrow\" size=\"xs\" transform=\"rotate-90\" class=\"ecl-category-filter__item-icon\"> </ecl-icon>\n }\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n @if(isRootItemWithChildren) {\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-180\" class=\"ecl-category-filter__item-icon\"> </ecl-icon>\n }\n </a>\n}\n<ng-content select=\"ecl-category-filter-list\"></ng-content>\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "title", "ariaHidden", "focusable", "isFlipHorizontal"] }] }); }
130
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: EclCategoryFilterItemComponent, isStandalone: true, selector: "ecl-category-filter-item", inputs: { href: { classPropertyName: "href", publicName: "href", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { itemSelect: "itemSelect" }, host: { properties: { "class.ecl-category-filter__list-item": "this.className", "attr.role": "this.role", "class.ecl-category-filter__list-item--open": "this.isAriaExpanded" } }, queries: [{ propertyName: "eclCategoryList", first: true, predicate: i0.forwardRef(() => EclCategoryFilterListComponent), descendants: true }], usesInheritance: true, ngImport: i0, template: "@if (hasChildren) {\n <button\n class=\"ecl-category-filter__item {{ levelClass }}\"\n [class.ecl-category-filter__item--has-children]=\"hasChildren\"\n [class.ecl-category-filter__item--current]=\"isCurrent\"\n [attr.aria-current]=\"isCurrent ? true : null\"\n [attr.aria-expanded] = \"isExpanded\"\n [attr.aria-controls]=\"id\"\n (click)=\"onItemClick($event)\">\n @if(isChildItemWithChildren) {\n <ecl-icon icon=\"solid-arrow\" size=\"xs\" transform=\"rotate-90\" class=\"ecl-category-filter__item-icon\"> </ecl-icon>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n }\n @if(isRootItemWithChildren) {\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-180\" class=\"ecl-category-filter__item-icon\"> </ecl-icon>\n }\n </button>\n} @else {\n <a\n [href]=\"href()\"\n class=\"ecl-category-filter__item {{ levelClass }}\"\n [class.ecl-category-filter__item--has-children]=\"hasChildren\"\n [attr.aria-current]=\"isCurrent ? true : null\"\n (click)=\"onItemClick($event)\">\n @if(isChildItemWithChildren) {\n <ecl-icon icon=\"solid-arrow\" size=\"xs\" transform=\"rotate-90\" class=\"ecl-category-filter__item-icon\"> </ecl-icon>\n }\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n @if(isRootItemWithChildren) {\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-180\" class=\"ecl-category-filter__item-icon\"> </ecl-icon>\n }\n </a>\n}\n<ng-content select=\"ecl-category-filter-list\"></ng-content>\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "title", "ariaHidden", "focusable", "isFlipHorizontal"] }] }); }
125
131
  }
126
132
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclCategoryFilterItemComponent, decorators: [{
127
133
  type: Component,
128
134
  args: [{ selector: 'ecl-category-filter-item', imports: [
129
135
  NgTemplateOutlet,
130
136
  ...EUI_ECL_ICON,
131
- ], template: "@if (hasChildren) {\n <button\n class=\"ecl-category-filter__item {{ levelClass }}\"\n [class.ecl-category-filter__item--has-children]=\"hasChildren\"\n [class.ecl-category-filter__item--current]=\"isCurrent\"\n [attr.aria-current]=\"isCurrent ? true : null\"\n [attr.aria-expanded] = \"isExpanded\"\n [attr.aria-controls]=\"id\"\n (click)=\"onItemClick($event)\">\n @if(isChildItemWithChildren) {\n <ecl-icon icon=\"solid-arrow\" size=\"xs\" transform=\"rotate-90\" class=\"ecl-category-filter__item-icon\"> </ecl-icon>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n }\n @if(isRootItemWithChildren) {\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-180\" class=\"ecl-category-filter__item-icon\"> </ecl-icon>\n }\n </button>\n} @else {\n <a\n [href]=\"href\"\n class=\"ecl-category-filter__item {{ levelClass }}\"\n [class.ecl-category-filter__item--has-children]=\"hasChildren\"\n [attr.aria-current]=\"isCurrent ? true : null\"\n (click)=\"onItemClick($event)\">\n @if(isChildItemWithChildren) {\n <ecl-icon icon=\"solid-arrow\" size=\"xs\" transform=\"rotate-90\" class=\"ecl-category-filter__item-icon\"> </ecl-icon>\n }\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n @if(isRootItemWithChildren) {\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-180\" class=\"ecl-category-filter__item-icon\"> </ecl-icon>\n }\n </a>\n}\n<ng-content select=\"ecl-category-filter-list\"></ng-content>\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n" }]
132
- }], propDecorators: { href: [{
133
- type: Input
134
- }], id: [{
137
+ ], template: "@if (hasChildren) {\n <button\n class=\"ecl-category-filter__item {{ levelClass }}\"\n [class.ecl-category-filter__item--has-children]=\"hasChildren\"\n [class.ecl-category-filter__item--current]=\"isCurrent\"\n [attr.aria-current]=\"isCurrent ? true : null\"\n [attr.aria-expanded] = \"isExpanded\"\n [attr.aria-controls]=\"id\"\n (click)=\"onItemClick($event)\">\n @if(isChildItemWithChildren) {\n <ecl-icon icon=\"solid-arrow\" size=\"xs\" transform=\"rotate-90\" class=\"ecl-category-filter__item-icon\"> </ecl-icon>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n }\n @if(isRootItemWithChildren) {\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-180\" class=\"ecl-category-filter__item-icon\"> </ecl-icon>\n }\n </button>\n} @else {\n <a\n [href]=\"href()\"\n class=\"ecl-category-filter__item {{ levelClass }}\"\n [class.ecl-category-filter__item--has-children]=\"hasChildren\"\n [attr.aria-current]=\"isCurrent ? true : null\"\n (click)=\"onItemClick($event)\">\n @if(isChildItemWithChildren) {\n <ecl-icon icon=\"solid-arrow\" size=\"xs\" transform=\"rotate-90\" class=\"ecl-category-filter__item-icon\"> </ecl-icon>\n }\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n @if(isRootItemWithChildren) {\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-180\" class=\"ecl-category-filter__item-icon\"> </ecl-icon>\n }\n </a>\n}\n<ng-content select=\"ecl-category-filter-list\"></ng-content>\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n" }]
138
+ }], propDecorators: { href: [{ type: i0.Input, args: [{ isSignal: true, alias: "href", required: false }] }], id: [{
135
139
  type: Input
136
140
  }], itemSelect: [{
137
141
  type: Output
@@ -218,6 +222,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
218
222
  class EclCategoryFilterComponent extends ECLBaseDirective {
219
223
  constructor() {
220
224
  super(...arguments);
225
+ /**
226
+ * ID of the currently selected item. When provided, the item with the matching ID
227
+ * will be marked as current and automatically expanded on initialization.
228
+ */
229
+ this.currentItemId = input(undefined, /* @ts-ignore */
230
+ ...(ngDevMode ? [{ debugName: "currentItemId" }] : /* istanbul ignore next */ []));
221
231
  /**
222
232
  * Static class applied to the host element for styling.
223
233
  * Always returns true to include the `ecl-category-filter` class.
@@ -260,7 +270,7 @@ class EclCategoryFilterComponent extends ECLBaseDirective {
260
270
  scheduleLevelUpdate() {
261
271
  afterNextRender(() => {
262
272
  this.eclCategoryList.updateChildrenItemsLevel(0);
263
- if (this.currentItemId !== undefined) {
273
+ if (this.currentItemId() !== undefined) {
264
274
  this.setPreselectedCurrentItem();
265
275
  }
266
276
  this.cdr.markForCheck();
@@ -293,7 +303,7 @@ class EclCategoryFilterComponent extends ECLBaseDirective {
293
303
  }
294
304
  }
295
305
  setPreselectedCurrentItem() {
296
- const currItem = this.eclCategoryFilterItemsAll.toArray().find((item) => item.id === this.currentItemId);
306
+ const currItem = this.eclCategoryFilterItemsAll.toArray().find((item) => item.id === this.currentItemId());
297
307
  if (currItem) {
298
308
  currItem.isCurrent = true;
299
309
  if (currItem.hasChildren) {
@@ -328,14 +338,12 @@ class EclCategoryFilterComponent extends ECLBaseDirective {
328
338
  });
329
339
  }
330
340
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclCategoryFilterComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
331
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: EclCategoryFilterComponent, isStandalone: true, selector: "ecl-category-filter", inputs: { currentItemId: "currentItemId", ariaLabel: ["aria-label", "ariaLabel"] }, host: { properties: { "class.ecl-category-filter": "this.className", "attr.role": "this.role", "attr.aria-label": "this.ariaLabel" } }, queries: [{ propertyName: "eclCategoryList", first: true, predicate: i0.forwardRef(() => EclCategoryFilterListComponent), descendants: true }, { propertyName: "eclCategoryFilterItemsAll", predicate: i0.forwardRef(() => EclCategoryFilterItemComponent), descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{display:block}\n"] }); }
341
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.5", type: EclCategoryFilterComponent, isStandalone: true, selector: "ecl-category-filter", inputs: { currentItemId: { classPropertyName: "currentItemId", publicName: "currentItemId", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: false, isRequired: false, transformFunction: null } }, host: { properties: { "class.ecl-category-filter": "this.className", "attr.role": "this.role", "attr.aria-label": "this.ariaLabel" } }, queries: [{ propertyName: "eclCategoryList", first: true, predicate: i0.forwardRef(() => EclCategoryFilterListComponent), descendants: true }, { propertyName: "eclCategoryFilterItemsAll", predicate: i0.forwardRef(() => EclCategoryFilterItemComponent), descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{display:block}\n"] }); }
332
342
  }
333
343
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclCategoryFilterComponent, decorators: [{
334
344
  type: Component,
335
345
  args: [{ selector: 'ecl-category-filter', template: "<ng-content></ng-content>\n", styles: [":host{display:block}\n"] }]
336
- }], propDecorators: { currentItemId: [{
337
- type: Input
338
- }], className: [{
346
+ }], propDecorators: { currentItemId: [{ type: i0.Input, args: [{ isSignal: true, alias: "currentItemId", required: false }] }], className: [{
339
347
  type: HostBinding,
340
348
  args: ['class.ecl-category-filter']
341
349
  }], role: [{