@eui/ecl 21.0.0-alpha.31 → 21.0.0-alpha.33

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 (518) hide show
  1. package/components/ecl-accordion/package.json +2 -1
  2. package/components/ecl-app/package.json +2 -1
  3. package/components/ecl-banner/package.json +2 -1
  4. package/components/ecl-blockquote/package.json +2 -1
  5. package/components/ecl-breadcrumb/package.json +2 -1
  6. package/components/ecl-button/package.json +2 -1
  7. package/components/ecl-card/package.json +2 -1
  8. package/components/ecl-carousel/package.json +2 -1
  9. package/components/ecl-category-filter/package.json +2 -1
  10. package/components/ecl-checkbox/package.json +2 -1
  11. package/components/ecl-content-block/package.json +2 -1
  12. package/components/ecl-content-item/package.json +2 -1
  13. package/components/ecl-date-block/package.json +2 -1
  14. package/components/ecl-date-picker/package.json +2 -1
  15. package/components/ecl-divider/package.json +4 -0
  16. package/components/ecl-expandable/package.json +2 -1
  17. package/components/ecl-fact-figures/package.json +2 -1
  18. package/components/ecl-featured/package.json +2 -1
  19. package/components/ecl-feedback-message/package.json +2 -1
  20. package/components/ecl-file/package.json +2 -1
  21. package/components/ecl-file-upload/package.json +2 -1
  22. package/components/ecl-form-group/package.json +2 -1
  23. package/components/ecl-form-label/package.json +2 -1
  24. package/components/ecl-gallery/package.json +2 -1
  25. package/components/ecl-help-block/package.json +2 -1
  26. package/components/ecl-icon/package.json +2 -1
  27. package/components/ecl-inpage-navigation/package.json +2 -1
  28. package/components/ecl-label/package.json +2 -1
  29. package/components/ecl-link/package.json +2 -1
  30. package/components/ecl-list/package.json +2 -1
  31. package/components/ecl-list-illustration/package.json +2 -1
  32. package/components/ecl-loading-indicator/package.json +2 -1
  33. package/components/ecl-media-container/package.json +2 -1
  34. package/components/ecl-mega-menu/package.json +2 -1
  35. package/components/ecl-menu/package.json +2 -1
  36. package/components/ecl-modal/package.json +2 -1
  37. package/components/ecl-multiselect/package.json +2 -1
  38. package/components/ecl-navigation-list/package.json +2 -1
  39. package/components/ecl-news-ticker/package.json +2 -1
  40. package/components/ecl-notification/package.json +2 -1
  41. package/components/ecl-page-header/package.json +2 -1
  42. package/components/ecl-pagination/package.json +2 -1
  43. package/components/ecl-popover/package.json +2 -1
  44. package/components/ecl-radio/package.json +2 -1
  45. package/components/ecl-range/package.json +2 -1
  46. package/components/ecl-rating-field/package.json +2 -1
  47. package/components/ecl-search-form/package.json +2 -1
  48. package/components/ecl-select/package.json +2 -1
  49. package/components/ecl-site-footer/package.json +2 -1
  50. package/components/ecl-site-header/package.json +2 -1
  51. package/components/ecl-social-media-follow/package.json +2 -1
  52. package/components/ecl-splash-page/package.json +2 -1
  53. package/components/ecl-sticky-container/package.json +2 -1
  54. package/components/ecl-table/package.json +2 -1
  55. package/components/ecl-tabs/package.json +2 -1
  56. package/components/ecl-tag/package.json +2 -1
  57. package/components/ecl-text-area/package.json +2 -1
  58. package/components/ecl-text-input/package.json +2 -1
  59. package/components/ecl-timeline/package.json +2 -1
  60. package/core/package.json +2 -1
  61. package/docs/changelog.html +258 -0
  62. package/docs/components/EclAccordionComponent.html +43 -2
  63. package/docs/components/EclAccordionItemComponent.html +2 -2
  64. package/docs/components/EclAppComponent.html +2 -2
  65. package/docs/components/EclBannerComponent.html +2 -2
  66. package/docs/components/EclBlockquoteComponent.html +2 -2
  67. package/docs/components/EclBreadcrumbComponent.html +2 -2
  68. package/docs/components/EclBreadcrumbSegmentComponent.html +2 -2
  69. package/docs/components/EclButtonComponent.html +2 -2
  70. package/docs/components/EclCardBodyComponent.html +2 -2
  71. package/docs/components/EclCardComponent.html +2 -2
  72. package/docs/components/EclCarouselComponent.html +2 -2
  73. package/docs/components/EclCarouselItemComponent.html +2 -2
  74. package/docs/components/EclCategoryFilterComponent.html +2 -2
  75. package/docs/components/EclCategoryFilterItemComponent.html +2 -2
  76. package/docs/components/EclCategoryFilterListComponent.html +2 -2
  77. package/docs/components/EclCheckboxHelpComponent.html +2 -2
  78. package/docs/components/EclCheckboxLabelComponent.html +3 -3
  79. package/docs/components/EclContentBlockComponent.html +2 -2
  80. package/docs/components/EclContentItemComponent.html +2 -2
  81. package/docs/components/EclDateBlockComponent.html +2 -2
  82. package/docs/components/EclDescriptionListDefinitionComponent.html +2 -2
  83. package/docs/components/EclExpandableComponent.html +2 -2
  84. package/docs/components/EclFactFiguresComponent.html +2 -2
  85. package/docs/components/EclFactFiguresDescriptionComponent.html +2 -2
  86. package/docs/components/EclFactFiguresItemComponent.html +2 -2
  87. package/docs/components/EclFactFiguresTitleComponent.html +2 -2
  88. package/docs/components/EclFactFiguresValueComponent.html +2 -2
  89. package/docs/components/EclFactFiguresViewAllComponent.html +2 -2
  90. package/docs/components/EclFeaturedComponent.html +33 -15
  91. package/docs/components/EclFeaturedItemComponent.html +27 -3
  92. package/docs/components/EclFeaturedItemDescriptionComponent.html +2 -2
  93. package/docs/components/EclFileComponent.html +2 -2
  94. package/docs/components/EclFileItemComponent.html +2 -2
  95. package/docs/components/EclFileItemsComponent.html +2 -2
  96. package/docs/components/EclFileTaxonomyComponent.html +2 -2
  97. package/docs/components/EclFormGroupComponent.html +2 -2
  98. package/docs/components/EclFormLabelComponent.html +3 -3
  99. package/docs/components/EclGalleryComponent.html +3 -3
  100. package/docs/components/EclGalleryFooterComponent.html +2 -2
  101. package/docs/components/EclGalleryItemComponent.html +3 -3
  102. package/docs/components/EclIconComponent.html +2 -2
  103. package/docs/components/EclInpageNavigationComponent.html +2 -2
  104. package/docs/components/EclInpageNavigationItemComponent.html +2 -2
  105. package/docs/components/EclListIllustrationComponent.html +2 -2
  106. package/docs/components/EclListIllustrationItemComponent.html +2 -2
  107. package/docs/components/EclLoadingIndicatorComponent.html +2 -2
  108. package/docs/components/EclMediaContainerComponent.html +2 -2
  109. package/docs/components/EclMegaMenuComponent.html +75 -2
  110. package/docs/components/EclMegaMenuFeaturedComponent.html +83 -7
  111. package/docs/components/EclMegaMenuInfoComponent.html +2 -2
  112. package/docs/components/EclMegaMenuItemComponent.html +106 -43
  113. package/docs/components/EclMegaMenuSubitemComponent.html +25 -43
  114. package/docs/components/EclMenuComponent.html +46 -2
  115. package/docs/components/EclMenuItemComponent.html +3 -3
  116. package/docs/components/EclMenuMegaComponent.html +2 -2
  117. package/docs/components/EclMenuMegaItemComponent.html +2 -2
  118. package/docs/components/EclModalBodyComponent.html +2 -2
  119. package/docs/components/EclModalComponent.html +2 -2
  120. package/docs/components/EclModalFooterComponent.html +2 -2
  121. package/docs/components/EclModalHeaderComponent.html +2 -2
  122. package/docs/components/EclMultiselectComponent.html +2 -2
  123. package/docs/components/EclMultiselectDropdownComponent.html +2 -2
  124. package/docs/components/EclMultiselectInputComponent.html +2 -2
  125. package/docs/components/EclMultiselectOptgroupComponent.html +2 -2
  126. package/docs/components/EclMultiselectOptionComponent.html +2 -2
  127. package/docs/components/EclNavigationListComponent.html +2 -2
  128. package/docs/components/EclNavigationListItemComponent.html +2 -2
  129. package/docs/components/EclNewsTickerComponent.html +2 -2
  130. package/docs/components/EclNewsTickerItemComponent.html +2 -2
  131. package/docs/components/EclNotificationComponent.html +3 -3
  132. package/docs/components/EclPageHeaderComponent.html +2 -2
  133. package/docs/components/EclPaginationComponent.html +2 -2
  134. package/docs/components/EclPaginationItemComponent.html +2 -2
  135. package/docs/components/EclPopoverComponent.html +96 -27
  136. package/docs/components/EclRadioHelpComponent.html +2 -2
  137. package/docs/components/EclRadioLabelComponent.html +2 -2
  138. package/docs/components/EclRangeBubbleComponent.html +2 -2
  139. package/docs/components/EclRangeValueComponent.html +2 -2
  140. package/docs/components/EclRatingFieldComponent.html +2 -2
  141. package/docs/components/EclSearchFormComponent.html +3 -3
  142. package/docs/components/EclSelectContainerComponent.html +2 -2
  143. package/docs/components/EclSiteFooterComponent.html +2 -2
  144. package/docs/components/EclSiteFooterCoreComponent.html +2 -2
  145. package/docs/components/EclSiteFooterFixedContentEUComponent.html +2 -2
  146. package/docs/components/EclSiteFooterRowCommonComponent.html +2 -2
  147. package/docs/components/EclSiteHeaderActionComponent.html +2 -2
  148. package/docs/components/EclSiteHeaderBannerTopComponent.html +2 -2
  149. package/docs/components/EclSiteHeaderComponent.html +33 -3
  150. package/docs/components/EclSiteHeaderCustomActionComponent.html +2 -2
  151. package/docs/components/EclSiteHeaderEnvironmentComponent.html +2 -2
  152. package/docs/components/EclSiteHeaderLanguageComponent.html +3 -3
  153. package/docs/components/EclSiteHeaderLanguagePopoverComponent.html +3 -3
  154. package/docs/components/EclSiteHeaderLoginComponent.html +3 -3
  155. package/docs/components/EclSiteHeaderNotificationComponent.html +2 -2
  156. package/docs/components/EclSiteHeaderSearchComponent.html +2 -2
  157. package/docs/components/EclSocialMediaFollowComponent.html +2 -2
  158. package/docs/components/EclSocialMediaFollowItemComponent.html +2 -2
  159. package/docs/components/EclSplashPageComponent.html +2 -2
  160. package/docs/components/EclSplashPageLanguageCategoryComponent.html +2 -2
  161. package/docs/components/EclSplashPageLanguageContainerComponent.html +2 -2
  162. package/docs/components/EclSplashPageLanguageLinkComponent.html +2 -2
  163. package/docs/components/EclStickyContainerComponent.html +2 -2
  164. package/docs/components/EclTabComponent.html +2 -2
  165. package/docs/components/EclTabLabelComponent.html +2 -2
  166. package/docs/components/EclTabMoreComponent.html +2 -2
  167. package/docs/components/EclTableSortButtonComponent.html +2 -2
  168. package/docs/components/EclTabsComponent.html +2 -2
  169. package/docs/components/EclTagComponent.html +2 -2
  170. package/docs/components/EclTimelineComponent.html +2 -2
  171. package/docs/components/EclTimelineItemComponent.html +2 -2
  172. package/docs/components/EclTimelineItemTogglerComponent.html +2 -2
  173. package/docs/directives/EclBannerDescriptionLinkDirective.html +65 -1
  174. package/docs/directives/EclBannerTitleLinkDirective.html +64 -1
  175. package/docs/directives/{EclSeparatorDirective.html → EclDividerDirective.html} +4 -4
  176. package/docs/directives/{EclSocialMediaShareLinkDirective.html → EclMegaMenuFeaturedListItemDescriptionDirective.html} +20 -58
  177. package/docs/directives/EclMegaMenuFeaturedListItemDirective.html +48 -0
  178. package/docs/directives/EclMegaMenuSpacerDirective.html +1 -1
  179. package/docs/directives/EclMegaMenuSublistDirective.html +67 -0
  180. package/docs/directives/{EclFeaturedItemFooterLinkDirective.html → EclSiteFooterDescriptionNameDirective.html} +14 -14
  181. package/docs/directives/EclSiteFooterSectionDirective.html +32 -367
  182. package/docs/interfaces/EclMegaMenuItem.html +45 -0
  183. package/docs/js/menu-wc.js +45 -115
  184. package/docs/js/menu-wc_es5.js +1 -1
  185. package/docs/js/search/search_index.js +2 -2
  186. package/docs/miscellaneous/variables.html +33 -98
  187. package/docs/modules/{EclSeparatorModule.html → EclDividerModule.html} +6 -6
  188. package/docs/modules.html +12 -24
  189. package/docs/overview.html +4 -4
  190. package/docs/properties.html +1 -1
  191. package/fesm2022/eui-ecl-components-ecl-accordion.mjs +68 -50
  192. package/fesm2022/eui-ecl-components-ecl-accordion.mjs.map +1 -1
  193. package/fesm2022/eui-ecl-components-ecl-app.mjs +9 -9
  194. package/fesm2022/eui-ecl-components-ecl-app.mjs.map +1 -1
  195. package/fesm2022/eui-ecl-components-ecl-banner.mjs +46 -37
  196. package/fesm2022/eui-ecl-components-ecl-banner.mjs.map +1 -1
  197. package/fesm2022/eui-ecl-components-ecl-blockquote.mjs +13 -13
  198. package/fesm2022/eui-ecl-components-ecl-blockquote.mjs.map +1 -1
  199. package/fesm2022/eui-ecl-components-ecl-breadcrumb.mjs +13 -13
  200. package/fesm2022/eui-ecl-components-ecl-breadcrumb.mjs.map +1 -1
  201. package/fesm2022/eui-ecl-components-ecl-button.mjs +16 -16
  202. package/fesm2022/eui-ecl-components-ecl-button.mjs.map +1 -1
  203. package/fesm2022/eui-ecl-components-ecl-card.mjs +16 -16
  204. package/fesm2022/eui-ecl-components-ecl-card.mjs.map +1 -1
  205. package/fesm2022/eui-ecl-components-ecl-carousel.mjs +10 -10
  206. package/fesm2022/eui-ecl-components-ecl-carousel.mjs.map +1 -1
  207. package/fesm2022/eui-ecl-components-ecl-category-filter.mjs +13 -13
  208. package/fesm2022/eui-ecl-components-ecl-category-filter.mjs.map +1 -1
  209. package/fesm2022/eui-ecl-components-ecl-checkbox.mjs +17 -17
  210. package/fesm2022/eui-ecl-components-ecl-checkbox.mjs.map +1 -1
  211. package/fesm2022/eui-ecl-components-ecl-content-block.mjs +58 -58
  212. package/fesm2022/eui-ecl-components-ecl-content-block.mjs.map +1 -1
  213. package/fesm2022/eui-ecl-components-ecl-content-item.mjs +13 -13
  214. package/fesm2022/eui-ecl-components-ecl-content-item.mjs.map +1 -1
  215. package/fesm2022/eui-ecl-components-ecl-date-block.mjs +7 -7
  216. package/fesm2022/eui-ecl-components-ecl-date-block.mjs.map +1 -1
  217. package/fesm2022/eui-ecl-components-ecl-date-picker.mjs +7 -7
  218. package/fesm2022/eui-ecl-components-ecl-date-picker.mjs.map +1 -1
  219. package/fesm2022/eui-ecl-components-ecl-divider.mjs +57 -0
  220. package/fesm2022/eui-ecl-components-ecl-divider.mjs.map +1 -0
  221. package/fesm2022/eui-ecl-components-ecl-expandable.mjs +7 -7
  222. package/fesm2022/eui-ecl-components-ecl-expandable.mjs.map +1 -1
  223. package/fesm2022/eui-ecl-components-ecl-fact-figures.mjs +22 -22
  224. package/fesm2022/eui-ecl-components-ecl-fact-figures.mjs.map +1 -1
  225. package/fesm2022/eui-ecl-components-ecl-featured.mjs +35 -97
  226. package/fesm2022/eui-ecl-components-ecl-featured.mjs.map +1 -1
  227. package/fesm2022/eui-ecl-components-ecl-feedback-message.mjs +8 -7
  228. package/fesm2022/eui-ecl-components-ecl-feedback-message.mjs.map +1 -1
  229. package/fesm2022/eui-ecl-components-ecl-file-upload.mjs +7 -7
  230. package/fesm2022/eui-ecl-components-ecl-file-upload.mjs.map +1 -1
  231. package/fesm2022/eui-ecl-components-ecl-file.mjs +34 -34
  232. package/fesm2022/eui-ecl-components-ecl-file.mjs.map +1 -1
  233. package/fesm2022/eui-ecl-components-ecl-form-group.mjs +7 -7
  234. package/fesm2022/eui-ecl-components-ecl-form-group.mjs.map +1 -1
  235. package/fesm2022/eui-ecl-components-ecl-form-label.mjs +11 -11
  236. package/fesm2022/eui-ecl-components-ecl-form-label.mjs.map +1 -1
  237. package/fesm2022/eui-ecl-components-ecl-gallery.mjs +24 -24
  238. package/fesm2022/eui-ecl-components-ecl-gallery.mjs.map +1 -1
  239. package/fesm2022/eui-ecl-components-ecl-help-block.mjs +7 -7
  240. package/fesm2022/eui-ecl-components-ecl-help-block.mjs.map +1 -1
  241. package/fesm2022/eui-ecl-components-ecl-icon.mjs +7 -7
  242. package/fesm2022/eui-ecl-components-ecl-icon.mjs.map +1 -1
  243. package/fesm2022/eui-ecl-components-ecl-inpage-navigation.mjs +17 -17
  244. package/fesm2022/eui-ecl-components-ecl-inpage-navigation.mjs.map +1 -1
  245. package/fesm2022/eui-ecl-components-ecl-label.mjs +7 -7
  246. package/fesm2022/eui-ecl-components-ecl-label.mjs.map +1 -1
  247. package/fesm2022/eui-ecl-components-ecl-link.mjs +16 -16
  248. package/fesm2022/eui-ecl-components-ecl-link.mjs.map +1 -1
  249. package/fesm2022/eui-ecl-components-ecl-list-illustration.mjs +19 -19
  250. package/fesm2022/eui-ecl-components-ecl-list-illustration.mjs.map +1 -1
  251. package/fesm2022/eui-ecl-components-ecl-list.mjs +31 -31
  252. package/fesm2022/eui-ecl-components-ecl-list.mjs.map +1 -1
  253. package/fesm2022/eui-ecl-components-ecl-loading-indicator.mjs +13 -13
  254. package/fesm2022/eui-ecl-components-ecl-loading-indicator.mjs.map +1 -1
  255. package/fesm2022/eui-ecl-components-ecl-media-container.mjs +19 -19
  256. package/fesm2022/eui-ecl-components-ecl-media-container.mjs.map +1 -1
  257. package/fesm2022/eui-ecl-components-ecl-mega-menu.mjs +211 -93
  258. package/fesm2022/eui-ecl-components-ecl-mega-menu.mjs.map +1 -1
  259. package/fesm2022/eui-ecl-components-ecl-menu.mjs +49 -30
  260. package/fesm2022/eui-ecl-components-ecl-menu.mjs.map +1 -1
  261. package/fesm2022/eui-ecl-components-ecl-modal.mjs +25 -25
  262. package/fesm2022/eui-ecl-components-ecl-modal.mjs.map +1 -1
  263. package/fesm2022/eui-ecl-components-ecl-multiselect.mjs +45 -25
  264. package/fesm2022/eui-ecl-components-ecl-multiselect.mjs.map +1 -1
  265. package/fesm2022/eui-ecl-components-ecl-navigation-list.mjs +16 -16
  266. package/fesm2022/eui-ecl-components-ecl-navigation-list.mjs.map +1 -1
  267. package/fesm2022/eui-ecl-components-ecl-news-ticker.mjs +13 -13
  268. package/fesm2022/eui-ecl-components-ecl-news-ticker.mjs.map +1 -1
  269. package/fesm2022/eui-ecl-components-ecl-notification.mjs +11 -11
  270. package/fesm2022/eui-ecl-components-ecl-notification.mjs.map +1 -1
  271. package/fesm2022/eui-ecl-components-ecl-page-header.mjs +37 -37
  272. package/fesm2022/eui-ecl-components-ecl-page-header.mjs.map +1 -1
  273. package/fesm2022/eui-ecl-components-ecl-pagination.mjs +13 -13
  274. package/fesm2022/eui-ecl-components-ecl-pagination.mjs.map +1 -1
  275. package/fesm2022/eui-ecl-components-ecl-popover.mjs +182 -111
  276. package/fesm2022/eui-ecl-components-ecl-popover.mjs.map +1 -1
  277. package/fesm2022/eui-ecl-components-ecl-radio.mjs +16 -16
  278. package/fesm2022/eui-ecl-components-ecl-radio.mjs.map +1 -1
  279. package/fesm2022/eui-ecl-components-ecl-range.mjs +13 -13
  280. package/fesm2022/eui-ecl-components-ecl-range.mjs.map +1 -1
  281. package/fesm2022/eui-ecl-components-ecl-rating-field.mjs +7 -7
  282. package/fesm2022/eui-ecl-components-ecl-rating-field.mjs.map +1 -1
  283. package/fesm2022/eui-ecl-components-ecl-search-form.mjs +8 -8
  284. package/fesm2022/eui-ecl-components-ecl-search-form.mjs.map +1 -1
  285. package/fesm2022/eui-ecl-components-ecl-select.mjs +10 -10
  286. package/fesm2022/eui-ecl-components-ecl-select.mjs.map +1 -1
  287. package/fesm2022/eui-ecl-components-ecl-site-footer.mjs +97 -89
  288. package/fesm2022/eui-ecl-components-ecl-site-footer.mjs.map +1 -1
  289. package/fesm2022/eui-ecl-components-ecl-site-header.mjs +80 -73
  290. package/fesm2022/eui-ecl-components-ecl-site-header.mjs.map +1 -1
  291. package/fesm2022/eui-ecl-components-ecl-social-media-follow.mjs +14 -13
  292. package/fesm2022/eui-ecl-components-ecl-social-media-follow.mjs.map +1 -1
  293. package/fesm2022/eui-ecl-components-ecl-splash-page.mjs +31 -31
  294. package/fesm2022/eui-ecl-components-ecl-splash-page.mjs.map +1 -1
  295. package/fesm2022/eui-ecl-components-ecl-sticky-container.mjs +7 -7
  296. package/fesm2022/eui-ecl-components-ecl-sticky-container.mjs.map +1 -1
  297. package/fesm2022/eui-ecl-components-ecl-table.mjs +34 -34
  298. package/fesm2022/eui-ecl-components-ecl-table.mjs.map +1 -1
  299. package/fesm2022/eui-ecl-components-ecl-tabs.mjs +16 -16
  300. package/fesm2022/eui-ecl-components-ecl-tabs.mjs.map +1 -1
  301. package/fesm2022/eui-ecl-components-ecl-tag.mjs +16 -16
  302. package/fesm2022/eui-ecl-components-ecl-tag.mjs.map +1 -1
  303. package/fesm2022/eui-ecl-components-ecl-text-area.mjs +7 -7
  304. package/fesm2022/eui-ecl-components-ecl-text-area.mjs.map +1 -1
  305. package/fesm2022/eui-ecl-components-ecl-text-input.mjs +7 -7
  306. package/fesm2022/eui-ecl-components-ecl-text-input.mjs.map +1 -1
  307. package/fesm2022/eui-ecl-components-ecl-timeline.mjs +19 -19
  308. package/fesm2022/eui-ecl-components-ecl-timeline.mjs.map +1 -1
  309. package/fesm2022/eui-ecl-core.mjs +25 -25
  310. package/fesm2022/eui-ecl-core.mjs.map +1 -1
  311. package/fesm2022/eui-ecl-shared.mjs +3 -3
  312. package/fesm2022/eui-ecl-shared.mjs.map +1 -1
  313. package/fesm2022/eui-ecl.mjs +48 -51
  314. package/fesm2022/eui-ecl.mjs.map +1 -1
  315. package/package.json +82 -86
  316. package/shared/package.json +2 -1
  317. package/{components/ecl-accordion/index.d.ts → types/eui-ecl-components-ecl-accordion.d.ts} +9 -5
  318. package/types/eui-ecl-components-ecl-accordion.d.ts.map +1 -0
  319. package/{components/ecl-app/index.d.ts → types/eui-ecl-components-ecl-app.d.ts} +1 -1
  320. package/types/eui-ecl-components-ecl-app.d.ts.map +1 -0
  321. package/{components/ecl-banner/index.d.ts → types/eui-ecl-components-ecl-banner.d.ts} +5 -2
  322. package/types/eui-ecl-components-ecl-banner.d.ts.map +1 -0
  323. package/{components/ecl-blockquote/index.d.ts → types/eui-ecl-components-ecl-blockquote.d.ts} +1 -1
  324. package/types/eui-ecl-components-ecl-blockquote.d.ts.map +1 -0
  325. package/{components/ecl-breadcrumb/index.d.ts → types/eui-ecl-components-ecl-breadcrumb.d.ts} +1 -1
  326. package/types/eui-ecl-components-ecl-breadcrumb.d.ts.map +1 -0
  327. package/{components/ecl-button/index.d.ts → types/eui-ecl-components-ecl-button.d.ts} +1 -1
  328. package/types/eui-ecl-components-ecl-button.d.ts.map +1 -0
  329. package/{components/ecl-card/index.d.ts → types/eui-ecl-components-ecl-card.d.ts} +1 -1
  330. package/types/eui-ecl-components-ecl-card.d.ts.map +1 -0
  331. package/{components/ecl-carousel/index.d.ts → types/eui-ecl-components-ecl-carousel.d.ts} +1 -1
  332. package/types/eui-ecl-components-ecl-carousel.d.ts.map +1 -0
  333. package/{components/ecl-category-filter/index.d.ts → types/eui-ecl-components-ecl-category-filter.d.ts} +1 -1
  334. package/types/eui-ecl-components-ecl-category-filter.d.ts.map +1 -0
  335. package/{components/ecl-checkbox/index.d.ts → types/eui-ecl-components-ecl-checkbox.d.ts} +1 -1
  336. package/types/eui-ecl-components-ecl-checkbox.d.ts.map +1 -0
  337. package/{components/ecl-content-block/index.d.ts → types/eui-ecl-components-ecl-content-block.d.ts} +1 -1
  338. package/types/eui-ecl-components-ecl-content-block.d.ts.map +1 -0
  339. package/{components/ecl-content-item/index.d.ts → types/eui-ecl-components-ecl-content-item.d.ts} +1 -1
  340. package/types/eui-ecl-components-ecl-content-item.d.ts.map +1 -0
  341. package/{components/ecl-date-block/index.d.ts → types/eui-ecl-components-ecl-date-block.d.ts} +1 -1
  342. package/types/eui-ecl-components-ecl-date-block.d.ts.map +1 -0
  343. package/{components/ecl-date-picker/index.d.ts → types/eui-ecl-components-ecl-date-picker.d.ts} +1 -1
  344. package/types/eui-ecl-components-ecl-date-picker.d.ts.map +1 -0
  345. package/types/eui-ecl-components-ecl-divider.d.ts +31 -0
  346. package/types/eui-ecl-components-ecl-divider.d.ts.map +1 -0
  347. package/{components/ecl-expandable/index.d.ts → types/eui-ecl-components-ecl-expandable.d.ts} +1 -1
  348. package/types/eui-ecl-components-ecl-expandable.d.ts.map +1 -0
  349. package/{components/ecl-fact-figures/index.d.ts → types/eui-ecl-components-ecl-fact-figures.d.ts} +1 -1
  350. package/types/eui-ecl-components-ecl-fact-figures.d.ts.map +1 -0
  351. package/{components/ecl-featured/index.d.ts → types/eui-ecl-components-ecl-featured.d.ts} +14 -36
  352. package/types/eui-ecl-components-ecl-featured.d.ts.map +1 -0
  353. package/{components/ecl-feedback-message/index.d.ts → types/eui-ecl-components-ecl-feedback-message.d.ts} +1 -1
  354. package/types/eui-ecl-components-ecl-feedback-message.d.ts.map +1 -0
  355. package/{components/ecl-file-upload/index.d.ts → types/eui-ecl-components-ecl-file-upload.d.ts} +1 -1
  356. package/types/eui-ecl-components-ecl-file-upload.d.ts.map +1 -0
  357. package/{components/ecl-file/index.d.ts → types/eui-ecl-components-ecl-file.d.ts} +1 -1
  358. package/types/eui-ecl-components-ecl-file.d.ts.map +1 -0
  359. package/{components/ecl-form-group/index.d.ts → types/eui-ecl-components-ecl-form-group.d.ts} +1 -1
  360. package/types/eui-ecl-components-ecl-form-group.d.ts.map +1 -0
  361. package/{components/ecl-form-label/index.d.ts → types/eui-ecl-components-ecl-form-label.d.ts} +1 -1
  362. package/types/eui-ecl-components-ecl-form-label.d.ts.map +1 -0
  363. package/{components/ecl-gallery/index.d.ts → types/eui-ecl-components-ecl-gallery.d.ts} +1 -1
  364. package/types/eui-ecl-components-ecl-gallery.d.ts.map +1 -0
  365. package/{components/ecl-help-block/index.d.ts → types/eui-ecl-components-ecl-help-block.d.ts} +1 -1
  366. package/types/eui-ecl-components-ecl-help-block.d.ts.map +1 -0
  367. package/{components/ecl-icon/index.d.ts → types/eui-ecl-components-ecl-icon.d.ts} +1 -1
  368. package/types/eui-ecl-components-ecl-icon.d.ts.map +1 -0
  369. package/{components/ecl-inpage-navigation/index.d.ts → types/eui-ecl-components-ecl-inpage-navigation.d.ts} +1 -1
  370. package/types/eui-ecl-components-ecl-inpage-navigation.d.ts.map +1 -0
  371. package/{components/ecl-label/index.d.ts → types/eui-ecl-components-ecl-label.d.ts} +1 -1
  372. package/types/eui-ecl-components-ecl-label.d.ts.map +1 -0
  373. package/{components/ecl-link/index.d.ts → types/eui-ecl-components-ecl-link.d.ts} +1 -1
  374. package/types/eui-ecl-components-ecl-link.d.ts.map +1 -0
  375. package/{components/ecl-list-illustration/index.d.ts → types/eui-ecl-components-ecl-list-illustration.d.ts} +1 -1
  376. package/types/eui-ecl-components-ecl-list-illustration.d.ts.map +1 -0
  377. package/{components/ecl-list/index.d.ts → types/eui-ecl-components-ecl-list.d.ts} +1 -1
  378. package/types/eui-ecl-components-ecl-list.d.ts.map +1 -0
  379. package/{components/ecl-loading-indicator/index.d.ts → types/eui-ecl-components-ecl-loading-indicator.d.ts} +1 -1
  380. package/types/eui-ecl-components-ecl-loading-indicator.d.ts.map +1 -0
  381. package/{components/ecl-media-container/index.d.ts → types/eui-ecl-components-ecl-media-container.d.ts} +1 -1
  382. package/types/eui-ecl-components-ecl-media-container.d.ts.map +1 -0
  383. package/{components/ecl-mega-menu/index.d.ts → types/eui-ecl-components-ecl-mega-menu.d.ts} +45 -20
  384. package/types/eui-ecl-components-ecl-mega-menu.d.ts.map +1 -0
  385. package/{components/ecl-menu/index.d.ts → types/eui-ecl-components-ecl-menu.d.ts} +7 -4
  386. package/types/eui-ecl-components-ecl-menu.d.ts.map +1 -0
  387. package/{components/ecl-modal/index.d.ts → types/eui-ecl-components-ecl-modal.d.ts} +1 -1
  388. package/types/eui-ecl-components-ecl-modal.d.ts.map +1 -0
  389. package/{components/ecl-multiselect/index.d.ts → types/eui-ecl-components-ecl-multiselect.d.ts} +2 -1
  390. package/types/eui-ecl-components-ecl-multiselect.d.ts.map +1 -0
  391. package/{components/ecl-navigation-list/index.d.ts → types/eui-ecl-components-ecl-navigation-list.d.ts} +1 -1
  392. package/types/eui-ecl-components-ecl-navigation-list.d.ts.map +1 -0
  393. package/{components/ecl-news-ticker/index.d.ts → types/eui-ecl-components-ecl-news-ticker.d.ts} +1 -1
  394. package/types/eui-ecl-components-ecl-news-ticker.d.ts.map +1 -0
  395. package/{components/ecl-notification/index.d.ts → types/eui-ecl-components-ecl-notification.d.ts} +1 -1
  396. package/types/eui-ecl-components-ecl-notification.d.ts.map +1 -0
  397. package/{components/ecl-page-header/index.d.ts → types/eui-ecl-components-ecl-page-header.d.ts} +1 -1
  398. package/types/eui-ecl-components-ecl-page-header.d.ts.map +1 -0
  399. package/{components/ecl-pagination/index.d.ts → types/eui-ecl-components-ecl-pagination.d.ts} +1 -1
  400. package/types/eui-ecl-components-ecl-pagination.d.ts.map +1 -0
  401. package/{components/ecl-popover/index.d.ts → types/eui-ecl-components-ecl-popover.d.ts} +18 -13
  402. package/types/eui-ecl-components-ecl-popover.d.ts.map +1 -0
  403. package/{components/ecl-radio/index.d.ts → types/eui-ecl-components-ecl-radio.d.ts} +1 -1
  404. package/types/eui-ecl-components-ecl-radio.d.ts.map +1 -0
  405. package/{components/ecl-range/index.d.ts → types/eui-ecl-components-ecl-range.d.ts} +1 -1
  406. package/types/eui-ecl-components-ecl-range.d.ts.map +1 -0
  407. package/{components/ecl-rating-field/index.d.ts → types/eui-ecl-components-ecl-rating-field.d.ts} +1 -1
  408. package/types/eui-ecl-components-ecl-rating-field.d.ts.map +1 -0
  409. package/{components/ecl-search-form/index.d.ts → types/eui-ecl-components-ecl-search-form.d.ts} +1 -1
  410. package/types/eui-ecl-components-ecl-search-form.d.ts.map +1 -0
  411. package/{components/ecl-select/index.d.ts → types/eui-ecl-components-ecl-select.d.ts} +1 -1
  412. package/types/eui-ecl-components-ecl-select.d.ts.map +1 -0
  413. package/{components/ecl-site-footer/index.d.ts → types/eui-ecl-components-ecl-site-footer.d.ts} +15 -11
  414. package/types/eui-ecl-components-ecl-site-footer.d.ts.map +1 -0
  415. package/{components/ecl-site-header/index.d.ts → types/eui-ecl-components-ecl-site-header.d.ts} +7 -2
  416. package/types/eui-ecl-components-ecl-site-header.d.ts.map +1 -0
  417. package/{components/ecl-social-media-follow/index.d.ts → types/eui-ecl-components-ecl-social-media-follow.d.ts} +1 -1
  418. package/types/eui-ecl-components-ecl-social-media-follow.d.ts.map +1 -0
  419. package/{components/ecl-splash-page/index.d.ts → types/eui-ecl-components-ecl-splash-page.d.ts} +1 -1
  420. package/types/eui-ecl-components-ecl-splash-page.d.ts.map +1 -0
  421. package/{components/ecl-sticky-container/index.d.ts → types/eui-ecl-components-ecl-sticky-container.d.ts} +1 -1
  422. package/types/eui-ecl-components-ecl-sticky-container.d.ts.map +1 -0
  423. package/{components/ecl-table/index.d.ts → types/eui-ecl-components-ecl-table.d.ts} +1 -1
  424. package/types/eui-ecl-components-ecl-table.d.ts.map +1 -0
  425. package/{components/ecl-tabs/index.d.ts → types/eui-ecl-components-ecl-tabs.d.ts} +1 -1
  426. package/types/eui-ecl-components-ecl-tabs.d.ts.map +1 -0
  427. package/{components/ecl-tag/index.d.ts → types/eui-ecl-components-ecl-tag.d.ts} +1 -1
  428. package/types/eui-ecl-components-ecl-tag.d.ts.map +1 -0
  429. package/{components/ecl-text-area/index.d.ts → types/eui-ecl-components-ecl-text-area.d.ts} +1 -1
  430. package/types/eui-ecl-components-ecl-text-area.d.ts.map +1 -0
  431. package/{components/ecl-text-input/index.d.ts → types/eui-ecl-components-ecl-text-input.d.ts} +1 -1
  432. package/types/eui-ecl-components-ecl-text-input.d.ts.map +1 -0
  433. package/{components/ecl-timeline/index.d.ts → types/eui-ecl-components-ecl-timeline.d.ts} +1 -1
  434. package/types/eui-ecl-components-ecl-timeline.d.ts.map +1 -0
  435. package/{core/index.d.ts → types/eui-ecl-core.d.ts} +1 -1
  436. package/types/eui-ecl-core.d.ts.map +1 -0
  437. package/{shared/index.d.ts → types/eui-ecl-shared.d.ts} +1 -1
  438. package/types/eui-ecl-shared.d.ts.map +1 -0
  439. package/types/eui-ecl.d.ts +70 -0
  440. package/types/eui-ecl.d.ts.map +1 -0
  441. package/components/ecl-accordion/index.d.ts.map +0 -1
  442. package/components/ecl-app/index.d.ts.map +0 -1
  443. package/components/ecl-banner/index.d.ts.map +0 -1
  444. package/components/ecl-blockquote/index.d.ts.map +0 -1
  445. package/components/ecl-breadcrumb/index.d.ts.map +0 -1
  446. package/components/ecl-button/index.d.ts.map +0 -1
  447. package/components/ecl-card/index.d.ts.map +0 -1
  448. package/components/ecl-carousel/index.d.ts.map +0 -1
  449. package/components/ecl-category-filter/index.d.ts.map +0 -1
  450. package/components/ecl-checkbox/index.d.ts.map +0 -1
  451. package/components/ecl-content-block/index.d.ts.map +0 -1
  452. package/components/ecl-content-item/index.d.ts.map +0 -1
  453. package/components/ecl-date-block/index.d.ts.map +0 -1
  454. package/components/ecl-date-picker/index.d.ts.map +0 -1
  455. package/components/ecl-expandable/index.d.ts.map +0 -1
  456. package/components/ecl-fact-figures/index.d.ts.map +0 -1
  457. package/components/ecl-featured/index.d.ts.map +0 -1
  458. package/components/ecl-feedback-message/index.d.ts.map +0 -1
  459. package/components/ecl-file/index.d.ts.map +0 -1
  460. package/components/ecl-file-upload/index.d.ts.map +0 -1
  461. package/components/ecl-form-group/index.d.ts.map +0 -1
  462. package/components/ecl-form-label/index.d.ts.map +0 -1
  463. package/components/ecl-gallery/index.d.ts.map +0 -1
  464. package/components/ecl-help-block/index.d.ts.map +0 -1
  465. package/components/ecl-icon/index.d.ts.map +0 -1
  466. package/components/ecl-inpage-navigation/index.d.ts.map +0 -1
  467. package/components/ecl-label/index.d.ts.map +0 -1
  468. package/components/ecl-link/index.d.ts.map +0 -1
  469. package/components/ecl-list/index.d.ts.map +0 -1
  470. package/components/ecl-list-illustration/index.d.ts.map +0 -1
  471. package/components/ecl-loading-indicator/index.d.ts.map +0 -1
  472. package/components/ecl-media-container/index.d.ts.map +0 -1
  473. package/components/ecl-mega-menu/index.d.ts.map +0 -1
  474. package/components/ecl-menu/index.d.ts.map +0 -1
  475. package/components/ecl-modal/index.d.ts.map +0 -1
  476. package/components/ecl-multiselect/index.d.ts.map +0 -1
  477. package/components/ecl-navigation-list/index.d.ts.map +0 -1
  478. package/components/ecl-news-ticker/index.d.ts.map +0 -1
  479. package/components/ecl-notification/index.d.ts.map +0 -1
  480. package/components/ecl-page-header/index.d.ts.map +0 -1
  481. package/components/ecl-pagination/index.d.ts.map +0 -1
  482. package/components/ecl-popover/index.d.ts.map +0 -1
  483. package/components/ecl-radio/index.d.ts.map +0 -1
  484. package/components/ecl-range/index.d.ts.map +0 -1
  485. package/components/ecl-rating-field/index.d.ts.map +0 -1
  486. package/components/ecl-search-form/index.d.ts.map +0 -1
  487. package/components/ecl-select/index.d.ts.map +0 -1
  488. package/components/ecl-separator/index.d.ts +0 -31
  489. package/components/ecl-separator/index.d.ts.map +0 -1
  490. package/components/ecl-separator/package.json +0 -3
  491. package/components/ecl-site-footer/index.d.ts.map +0 -1
  492. package/components/ecl-site-header/index.d.ts.map +0 -1
  493. package/components/ecl-social-media-follow/index.d.ts.map +0 -1
  494. package/components/ecl-social-media-share/index.d.ts +0 -54
  495. package/components/ecl-social-media-share/index.d.ts.map +0 -1
  496. package/components/ecl-social-media-share/package.json +0 -3
  497. package/components/ecl-splash-page/index.d.ts.map +0 -1
  498. package/components/ecl-sticky-container/index.d.ts.map +0 -1
  499. package/components/ecl-table/index.d.ts.map +0 -1
  500. package/components/ecl-tabs/index.d.ts.map +0 -1
  501. package/components/ecl-tag/index.d.ts.map +0 -1
  502. package/components/ecl-text-area/index.d.ts.map +0 -1
  503. package/components/ecl-text-input/index.d.ts.map +0 -1
  504. package/components/ecl-timeline/index.d.ts.map +0 -1
  505. package/core/index.d.ts.map +0 -1
  506. package/docs/classes/EclSocialMediaShareItemClickEvent.html +0 -304
  507. package/docs/components/EclFeaturedItemFooterComponent.html +0 -560
  508. package/docs/components/EclSocialMediaShareComponent.html +0 -584
  509. package/docs/components/EclSocialMediaShareItemComponent.html +0 -829
  510. package/docs/directives/EclFeaturedItemFooterPictureDirective.html +0 -502
  511. package/docs/modules/EclSocialMediaShareModule.html +0 -321
  512. package/fesm2022/eui-ecl-components-ecl-separator.mjs +0 -57
  513. package/fesm2022/eui-ecl-components-ecl-separator.mjs.map +0 -1
  514. package/fesm2022/eui-ecl-components-ecl-social-media-share.mjs +0 -136
  515. package/fesm2022/eui-ecl-components-ecl-social-media-share.mjs.map +0 -1
  516. package/index.d.ts +0 -71
  517. package/index.d.ts.map +0 -1
  518. package/shared/index.d.ts.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, ElementRef, EventEmitter, HostListener, HostBinding, Output, Directive, Renderer2, ContentChild, ViewChild, Component, NgModule } from '@angular/core';
2
+ import { inject, ElementRef, EventEmitter, HostListener, HostBinding, Output, Directive, output, Renderer2, ContentChild, ViewChild, Component, NgModule } from '@angular/core';
3
3
  import { Subject, takeUntil } from 'rxjs';
4
4
  import * as i1 from '@eui/ecl/core';
5
5
  import { ECLBaseDirective, ECLClickOutsideDirective } from '@eui/ecl/core';
@@ -51,10 +51,10 @@ class EclPopoverToggleDirective extends ECLBaseDirective {
51
51
  getHostElement() {
52
52
  return this.hostElementRef.nativeElement;
53
53
  }
54
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-next.5", ngImport: i0, type: EclPopoverToggleDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
55
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.0-next.5", type: EclPopoverToggleDirective, isStandalone: true, selector: "[eclPopoverToggle]", outputs: { click: "click" }, host: { listeners: { "mouseup": "onClick($event)" }, properties: { "attr.aria-expanded": "this.isExpanded", "class": "this.cssClasses" } }, usesInheritance: true, ngImport: i0 }); }
54
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-rc.0", ngImport: i0, type: EclPopoverToggleDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
55
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.0-rc.0", type: EclPopoverToggleDirective, isStandalone: true, selector: "[eclPopoverToggle]", outputs: { click: "click" }, host: { listeners: { "mouseup": "onClick($event)" }, properties: { "attr.aria-expanded": "this.isExpanded", "class": "this.cssClasses" } }, usesInheritance: true, ngImport: i0 }); }
56
56
  }
57
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.5", ngImport: i0, type: EclPopoverToggleDirective, decorators: [{
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-rc.0", ngImport: i0, type: EclPopoverToggleDirective, decorators: [{
58
58
  type: Directive,
59
59
  args: [{
60
60
  selector: '[eclPopoverToggle]',
@@ -80,6 +80,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.5",
80
80
  class EclPopoverComponent extends ECLBaseDirective {
81
81
  constructor() {
82
82
  super(...arguments);
83
+ this.onOpen = output();
84
+ this.onClose = output();
83
85
  /**
84
86
  * Controls visibility of the popover. `true` means hidden.
85
87
  */
@@ -93,6 +95,8 @@ class EclPopoverComponent extends ECLBaseDirective {
93
95
  this.pushBottomClass = 'ecl-popover--push-bottom';
94
96
  this.pushLeftClass = 'ecl-popover--push-left';
95
97
  this.pushRightClass = 'ecl-popover--push-right';
98
+ this.toggleRect = null;
99
+ this.scrollableParent = null;
96
100
  this.el = inject(ElementRef);
97
101
  this.renderer = inject(Renderer2);
98
102
  }
@@ -108,9 +112,15 @@ class EclPopoverComponent extends ECLBaseDirective {
108
112
  */
109
113
  ngAfterContentInit() {
110
114
  this.eclPopoverToggle?.click.pipe(takeUntil(this.destroy$)).subscribe(() => {
111
- this.isHidden = !this.isHidden;
115
+ if (this.isHidden) {
116
+ this.doOpen();
117
+ }
118
+ else {
119
+ this.doClose();
120
+ }
112
121
  this.checkPosition(); // TODO: wrap on a platformBrowser check as it calls window and document
113
122
  });
123
+ this.scrollableParent = this.getClosestScrollableParent(this.eclPopoverToggle.hostElementRef.nativeElement);
114
124
  }
115
125
  /**
116
126
  * Lifecycle hook that cleans up subscriptions on destroy.
@@ -132,14 +142,14 @@ class EclPopoverComponent extends ECLBaseDirective {
132
142
  */
133
143
  onClickOutsidePopover() {
134
144
  if (!this.isHidden) {
135
- this.onClose();
145
+ this.doClose();
136
146
  }
137
147
  }
138
148
  /**
139
149
  * Closes the popover when the Escape key is pressed.
140
150
  */
141
151
  onEscapeKeydownHandler() {
142
- this.isHidden = true;
152
+ this.doClose();
143
153
  }
144
154
  /**
145
155
  * Recalculates popover position when the window is resized.
@@ -154,11 +164,70 @@ class EclPopoverComponent extends ECLBaseDirective {
154
164
  this.checkPosition();
155
165
  }
156
166
  /**
157
- * Public method used to close the popover and reset related styles.
167
+ * Protected method used to close the popover and reset related styles.
158
168
  */
159
- onClose() {
169
+ doClose() {
160
170
  this.isHidden = true;
161
- this.resetStyless();
171
+ this.resetStyles();
172
+ this.onClose.emit();
173
+ }
174
+ doOpen() {
175
+ this.isHidden = false;
176
+ this.onOpen.emit();
177
+ }
178
+ getClosestScrollableParent(element) {
179
+ let parent = element.parentElement;
180
+ while (parent) {
181
+ const { overflowY, overflowX } = getComputedStyle(parent);
182
+ const isScrollableY = (overflowY === 'auto' || overflowY === 'scroll') &&
183
+ parent.scrollHeight > parent.clientHeight;
184
+ const isScrollableX = (overflowX === 'auto' || overflowX === 'scroll') &&
185
+ parent.scrollWidth > parent.clientWidth;
186
+ if (isScrollableY || isScrollableX) {
187
+ return parent; // Found the closest scrollable parent
188
+ }
189
+ parent = parent.parentElement;
190
+ }
191
+ return document.body;
192
+ }
193
+ calculateAvailableSpace(toggleElement, scrollableParent = null) {
194
+ // Get the bounding rect for the toggle element
195
+ this.toggleRect = toggleElement.getBoundingClientRect();
196
+ // If no scrollable parent is provided, use the viewport
197
+ const containerRect = scrollableParent
198
+ ? scrollableParent.getBoundingClientRect()
199
+ : {
200
+ top: 0,
201
+ left: 0,
202
+ right: window.innerWidth,
203
+ bottom: window.innerHeight,
204
+ };
205
+ const containerWidth = containerRect.right - containerRect.left;
206
+ const containerHeight = containerRect.bottom - containerRect.top;
207
+ // Calculate the space available in the four directions
208
+ const containerBottom = Math.max(0, window.innerHeight - containerRect.bottom);
209
+ const toggleBottom = Math.max(0, window.innerHeight - this.toggleRect.bottom);
210
+ const spaceBottom = Math.max(0, toggleBottom - containerBottom);
211
+ // Top Space (from toggle's top to container's top)
212
+ const containerTop = Math.max(0, containerRect.top);
213
+ const toggleTop = Math.max(0, this.toggleRect.top);
214
+ const spaceTop = Math.max(0, toggleTop - containerTop);
215
+ // Right Space (from toggle's right to container's right)
216
+ const containerRight = Math.max(0, window.innerWidth - containerRect.right);
217
+ const toggleRight = Math.max(0, window.innerWidth - this.toggleRect.right);
218
+ const spaceRight = Math.max(0, toggleRight - containerRight);
219
+ // Left Space (from toggle's left to container's left)
220
+ const containerLeft = Math.max(0, containerRect.left);
221
+ const toggleLeft = Math.max(0, this.toggleRect.left);
222
+ const spaceLeft = Math.max(0, toggleLeft - containerLeft);
223
+ return {
224
+ containerWidth,
225
+ containerHeight,
226
+ spaceTop,
227
+ spaceBottom,
228
+ spaceLeft,
229
+ spaceRight,
230
+ };
162
231
  }
163
232
  checkPosition() {
164
233
  setTimeout(() => {
@@ -168,69 +237,58 @@ class EclPopoverComponent extends ECLBaseDirective {
168
237
  });
169
238
  }
170
239
  positionPopover() {
171
- this.resetStyless();
172
- const toggleElement = this.eclPopoverToggle.getHostElement();
173
- const toggleRect = toggleElement.getBoundingClientRect();
174
- const screenHeight = window.innerHeight;
175
- const screenWidth = window.innerWidth;
176
- // Calculate available space in each direction
177
- const spaceTop = toggleRect.top;
178
- const spaceBottom = screenHeight - toggleRect.bottom;
179
- const spaceLeft = toggleRect.left;
180
- const spaceRight = screenWidth - toggleRect.right;
240
+ this.resetStyles();
241
+ const { containerWidth, spaceTop, spaceBottom, spaceLeft, spaceRight } = this.calculateAvailableSpace(this.eclPopoverToggle.getHostElement(), this.scrollableParent);
181
242
  // Find the direction with the most available space
182
- if ((spaceTop > spaceBottom) && (spaceTop > spaceLeft) && (spaceTop > spaceRight)) {
183
- this.renderer.addClass(this.el.nativeElement, this.topClass);
243
+ const positioningClass = 'ecl-popover--';
244
+ let direction = '';
245
+ if (spaceTop > spaceBottom &&
246
+ spaceTop > spaceLeft &&
247
+ spaceTop > spaceRight) {
248
+ direction = 'top';
184
249
  }
185
- else if ((spaceBottom > spaceLeft) && (spaceBottom > spaceRight)) {
186
- this.renderer.addClass(this.el.nativeElement, this.bottomClass);
250
+ else if (spaceBottom > spaceLeft && spaceBottom > spaceRight) {
251
+ direction = 'bottom';
187
252
  }
188
253
  else if (spaceLeft > spaceRight) {
189
- this.isLeft = true;
190
- this.renderer.addClass(this.el.nativeElement, this.leftClass);
254
+ direction = 'left';
191
255
  }
192
256
  else {
193
- this.isRight = true;
194
- this.renderer.addClass(this.el.nativeElement, this.rightClass);
257
+ direction = 'right';
195
258
  }
196
- this.handleScrollableWidth(spaceLeft, spaceRight, screenWidth);
197
- this.handlePushClass(screenWidth, screenHeight);
198
- }
199
- handleScrollableWidth(spaceLeft, spaceRight, screenWidth) {
259
+ this.renderer.addClass(this.el.nativeElement, `${positioningClass}${direction}`);
200
260
  // Try to use as much of the available width, respecting the max-width set.
201
- const scrollable = this.eclPopoverScrollableElement.nativeElement;
202
- const styles = getComputedStyle(scrollable);
261
+ const styles = window.getComputedStyle(this.eclPopoverScrollableElement.nativeElement);
203
262
  const maxWidth = parseInt(styles.getPropertyValue('max-width'), 10);
204
263
  const minWidth = parseInt(styles.getPropertyValue('min-width'), 10);
205
264
  const padding = parseInt(styles.getPropertyValue('padding-left'), 10) * 2;
206
- const toggleElement = this.eclPopoverToggle.getHostElement();
207
- const toggleRect = toggleElement.getBoundingClientRect();
208
- let availableSpace = 0;
209
- if (this.isLeft || this.isRight) {
210
- availableSpace = (this.isLeft ? spaceLeft : spaceRight) * 0.9;
211
- }
212
- else {
213
- const centerPosition = (toggleRect.right - toggleRect.left) / 2;
214
- availableSpace = (screenWidth - centerPosition + this.eclPopoverContainerElement.nativeElement.offsetWidth / 2) * 0.9;
265
+ // We consider 90% of the biggest space available
266
+ const horizontalSpace = Math.max(spaceLeft, spaceRight) * 0.9;
267
+ let targetWidth;
268
+ // If the available space is larger than maxWidth (plus padding), set to maxWidth
269
+ if (maxWidth + padding < horizontalSpace ||
270
+ (direction !== 'left' &&
271
+ direction !== 'right' &&
272
+ containerWidth > maxWidth)) {
273
+ targetWidth = maxWidth;
215
274
  }
216
- if (maxWidth + padding < availableSpace) {
217
- this.renderer.setStyle(scrollable, 'width', `${maxWidth}px`);
275
+ // If the available space is smaller than minWidth (plus padding), set to minWidth
276
+ else if (horizontalSpace < minWidth + padding) {
277
+ targetWidth = minWidth;
218
278
  }
219
- else if (availableSpace < minWidth + padding) {
220
- this.renderer.setStyle(scrollable, 'width', `${minWidth}px`);
279
+ // Otherwise, set the width to the available space minus the padding
280
+ else if (direction === 'left' || direction === 'right') {
281
+ targetWidth = horizontalSpace - padding;
221
282
  }
222
283
  else {
223
- this.renderer.setStyle(scrollable, 'width', `${availableSpace - padding}px`);
284
+ targetWidth = (horizontalSpace - padding) * 2;
224
285
  }
286
+ // Ensure the width does not exceed available space
287
+ this.renderer.setStyle(this.eclPopoverScrollableElement.nativeElement, 'width', `${targetWidth}px`);
288
+ this.handlePushClass(direction);
225
289
  }
226
- resetStyless() {
290
+ resetStyles() {
227
291
  const popoverContainer = this.eclPopoverContainerElement.nativeElement;
228
- this.isPushLeft = false;
229
- this.isPushRight = false;
230
- this.isPushTop = false;
231
- this.isPushBottom = false;
232
- this.isLeft = false;
233
- this.isRight = false;
234
292
  this.popoverPosition = null;
235
293
  this.renderer.removeClass(this.el.nativeElement, this.topClass);
236
294
  this.renderer.removeClass(this.el.nativeElement, this.bottomClass);
@@ -240,6 +298,7 @@ class EclPopoverComponent extends ECLBaseDirective {
240
298
  this.renderer.removeClass(this.el.nativeElement, this.pushBottomClass);
241
299
  this.renderer.removeClass(this.el.nativeElement, this.pushLeftClass);
242
300
  this.renderer.removeClass(this.el.nativeElement, this.pushRightClass);
301
+ this.renderer.removeStyle(popoverContainer, '--ecl-popover-position');
243
302
  this.renderer.removeStyle(popoverContainer, 'top');
244
303
  this.renderer.removeStyle(popoverContainer, 'right');
245
304
  this.renderer.removeStyle(popoverContainer, 'left');
@@ -247,66 +306,78 @@ class EclPopoverComponent extends ECLBaseDirective {
247
306
  this.renderer.removeStyle(popoverContainer, 'transform');
248
307
  this.renderer.removeStyle(this.eclPopoverScrollableElement.nativeElement, 'width');
249
308
  }
250
- handlePushClass(screenWidth, screenHeight) {
251
- const toggleElement = this.eclPopoverToggle.getHostElement();
252
- const toggleRect = toggleElement.getBoundingClientRect();
253
- const popoverRect = this.eclPopoverContainerElement.nativeElement.getBoundingClientRect();
254
- const popoverContainer = this.eclPopoverContainerElement.nativeElement;
255
- if (this.isLeft || this.isRight) {
256
- if (popoverRect.top < 0) {
257
- this.renderer.addClass(this.el.nativeElement, this.pushTopClass);
258
- this.renderer.setStyle(popoverContainer, 'top', `-${Math.round(toggleRect.top)}px`);
259
- this.isPushTop = true;
260
- }
261
- else if (popoverRect.bottom > screenHeight) {
262
- this.renderer.addClass(this.el.nativeElement, this.pushBottomClass);
263
- this.renderer.setStyle(popoverContainer, 'bottom', `-${Math.round(screenHeight - (toggleRect.bottom + 8))}px`);
264
- this.isPushBottom = true;
265
- }
266
- }
267
- else {
268
- if (popoverRect.left < 0) {
269
- this.renderer.addClass(this.el.nativeElement, this.pushLeftClass);
270
- this.renderer.setStyle(popoverContainer, 'left', `-${toggleRect.left}px`);
271
- this.renderer.setStyle(popoverContainer, 'right', 'auto');
272
- this.renderer.setStyle(popoverContainer, 'transform', 'none');
273
- this.isPushLeft = true;
309
+ /**
310
+ * Check whether the popover is going out of its scrollable container and apply the needed repositioning.
311
+ *
312
+ * @param {string} direction
313
+ */
314
+ handlePushClass(direction) {
315
+ requestAnimationFrame(() => {
316
+ const popoverRect = this.eclPopoverContainerElement.nativeElement.getBoundingClientRect();
317
+ const scrollableRect = this.scrollableParent.getBoundingClientRect();
318
+ const containerBottom = scrollableRect.bottom > window.innerHeight ? 0 : window.innerHeight - scrollableRect.bottom;
319
+ const containerTop = scrollableRect.top > window.innerHeight ? 0 : scrollableRect.top;
320
+ const leftOverflow = scrollableRect.left > popoverRect.left;
321
+ const rightOverflow = scrollableRect.right < popoverRect.right;
322
+ const topOverflow = popoverRect.top < containerTop;
323
+ const bottomOverflow = containerBottom > window.innerHeight - popoverRect.bottom;
324
+ if (direction === 'left' || direction === 'right') {
325
+ if (topOverflow) {
326
+ this.renderer.addClass(this.el.nativeElement, this.pushTopClass);
327
+ // Push the popover to the top edge of the container
328
+ this.renderer.setStyle(this.eclPopoverContainerElement.nativeElement, 'top', `-${Math.round(this.toggleRect.top)}px`);
329
+ this.renderer.setStyle(this.eclPopoverContainerElement.nativeElement, 'bottom', '');
330
+ this.renderer.setStyle(this.eclPopoverContainerElement.nativeElement, 'transform', '');
331
+ }
332
+ if (bottomOverflow) {
333
+ this.renderer.addClass(this.el.nativeElement, this.pushBottomClass);
334
+ // Push the popover to the bottom edge of the container
335
+ this.renderer.setStyle(this.eclPopoverContainerElement.nativeElement, 'bottom', `-${window.innerHeight - this.toggleRect.bottom - containerBottom}px`);
336
+ this.renderer.setStyle(this.eclPopoverContainerElement.nativeElement, 'top', '');
337
+ this.renderer.setStyle(this.eclPopoverContainerElement.nativeElement, 'transform', '');
338
+ }
274
339
  }
275
- if (popoverRect.right > screenWidth) {
276
- this.renderer.addClass(this.el.nativeElement, this.pushRightClass);
277
- this.renderer.setStyle(popoverContainer, 'left', `-${screenWidth - toggleRect.right}px`);
278
- this.renderer.setStyle(popoverContainer, 'right', 'auto');
279
- this.renderer.setStyle(popoverContainer, 'transform', 'none');
280
- this.isPushRight = true;
340
+ else {
341
+ if (leftOverflow) {
342
+ this.renderer.addClass(this.el.nativeElement, this.pushLeftClass);
343
+ // Push the popover 8px to the left edge of the container
344
+ this.renderer.setStyle(this.eclPopoverContainerElement.nativeElement, 'left', `-${this.toggleRect.left - scrollableRect.left - 8}px`);
345
+ this.renderer.setStyle(this.eclPopoverContainerElement.nativeElement, 'right', 'auto');
346
+ }
347
+ if (rightOverflow) {
348
+ this.renderer.addClass(this.el.nativeElement, this.pushRightClass);
349
+ // Push the popover 8px to the right edge of the container
350
+ this.renderer.setStyle(this.eclPopoverContainerElement.nativeElement, 'right', `-${scrollableRect.right - this.toggleRect.right - 8}px`);
351
+ this.renderer.setStyle(this.eclPopoverContainerElement.nativeElement, 'left', 'auto');
352
+ }
281
353
  }
282
- }
283
- this.handleArrowPosition();
354
+ this.handleArrowPosition(direction);
355
+ });
284
356
  }
285
- handleArrowPosition() {
286
- const toggleElement = this.eclPopoverToggle.getHostElement();
287
- const toggleRect = toggleElement.getBoundingClientRect();
357
+ handleArrowPosition(direction) {
288
358
  const popoverRect = this.eclPopoverContainerElement.nativeElement.getBoundingClientRect();
289
- if (this.isLeft || this.isRight) {
290
- if (this.isPushBottom) {
291
- this.popoverPosition = `${Math.round(toggleRect.top - popoverRect.top + toggleRect.height / 2)}px`;
359
+ if (direction === 'left' || direction === 'right') {
360
+ if (this.el.nativeElement.classList.contains(this.pushBottomClass)) {
361
+ this.renderer.setStyle(this.eclPopoverContainerElement.nativeElement, '--ecl-popover-position', `${Math.round(this.toggleRect.top - popoverRect.top + this.toggleRect.height / 2)}px`);
292
362
  }
293
- else if (this.isPushTop) {
294
- this.popoverPosition = `${Math.round(popoverRect.top + toggleRect.top + toggleRect.height / 2)}px`;
363
+ else if (this.el.nativeElement.classList.contains(this.pushTopClass)) {
364
+ this.renderer.setStyle(this.eclPopoverContainerElement.nativeElement, '--ecl-popover-position', `${Math.round(popoverRect.top + this.toggleRect.top + this.toggleRect.height / 2)}px`);
295
365
  }
296
366
  }
297
367
  else {
298
- if (this.isPushRight) {
299
- this.popoverPosition = `${Math.round(popoverRect.right - (toggleRect.right - toggleRect.width / 2))}px`;
368
+ // eslint-disable-next-line no-lonely-if
369
+ if (this.el.nativeElement.classList.contains(this.pushRightClass)) {
370
+ this.renderer.setStyle(this.eclPopoverContainerElement.nativeElement, '--ecl-popover-position', `${Math.round(popoverRect.right - (this.toggleRect.right - this.toggleRect.width / 2))}px`);
300
371
  }
301
- else if (this.isPushLeft) {
302
- this.popoverPosition = `${Math.round(popoverRect.left + toggleRect.left + toggleRect.width / 2)}px`;
372
+ else if (this.el.nativeElement.classList.contains(this.pushLeftClass)) {
373
+ this.renderer.setStyle(this.eclPopoverContainerElement.nativeElement, '--ecl-popover-position', `${Math.round(this.toggleRect.left - popoverRect.left + this.toggleRect.width / 2)}px`);
303
374
  }
304
375
  }
305
376
  }
306
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-next.5", ngImport: i0, type: EclPopoverComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
307
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.0-next.5", type: EclPopoverComponent, isStandalone: true, selector: "ecl-popover", host: { listeners: { "eclClickOutside": "onClickOutsidePopover()", "document:keydown.escape": "onEscapeKeydownHandler()", "window:resize": "onWindowResize()", "document:scroll": "onDocumentScroll()" }, properties: { "class": "this.cssClasses" } }, queries: [{ propertyName: "eclPopoverToggle", first: true, predicate: EclPopoverToggleDirective, descendants: true }], viewQueries: [{ propertyName: "eclPopoverContainerElement", first: true, predicate: ["container"], descendants: true }, { propertyName: "eclPopoverScrollableElement", first: true, predicate: ["scrollable"], descendants: true }], usesInheritance: true, hostDirectives: [{ directive: i1.ECLClickOutsideDirective, outputs: ["eclClickOutside", "eclClickOutside"] }], ngImport: i0, template: "<ng-content select=\"[eclPopoverToggle]\"></ng-content>\n\n<div #container class=\"ecl-popover__container\" [style.--ecl-popover-position]=\"popoverPosition\" [hidden]=\"isHidden\" [attr.id]=\"popoverToggleAriaControls\">\n <div #scrollable class=\"ecl-popover__scrollable\">\n <button eclButton variant=\"tertiary\" (click)=\"onClose()\" class=\"ecl-popover__close\" isIconOnly>\n <span eclButtonLabel>Close</span>\n <ecl-icon icon=\"close\" size=\"m\"></ecl-icon>\n </button>\n <ng-content select=\"[eclPopoverContent]\"></ng-content>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i2.EclButtonComponent, selector: "button[eclButton], button[ecl-button], a[eclButton]", inputs: ["isIconOnly", "variant", "containerStyleClass"] }, { kind: "directive", type: i2.EclButtonLabelDirective, selector: "[eclButtonLabel]" }, { kind: "component", type: i3.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "title", "ariaHidden", "focusable", "isFlipHorizontal"] }] }); }
377
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-rc.0", ngImport: i0, type: EclPopoverComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
378
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.0-rc.0", type: EclPopoverComponent, isStandalone: true, selector: "ecl-popover", outputs: { onOpen: "onOpen", onClose: "onClose" }, host: { listeners: { "eclClickOutside": "onClickOutsidePopover()", "document:keydown.escape": "onEscapeKeydownHandler()", "window:resize": "onWindowResize()", "document:scroll": "onDocumentScroll()" }, properties: { "class": "this.cssClasses" } }, queries: [{ propertyName: "eclPopoverToggle", first: true, predicate: EclPopoverToggleDirective, descendants: true }], viewQueries: [{ propertyName: "eclPopoverContainerElement", first: true, predicate: ["container"], descendants: true }, { propertyName: "eclPopoverScrollableElement", first: true, predicate: ["scrollable"], descendants: true }], usesInheritance: true, hostDirectives: [{ directive: i1.ECLClickOutsideDirective, outputs: ["eclClickOutside", "eclClickOutside"] }], ngImport: i0, template: "<ng-content select=\"[eclPopoverToggle]\"></ng-content>\n\n<div #container class=\"ecl-popover__container\" [style.--ecl-popover-position]=\"popoverPosition\" [hidden]=\"isHidden\"\n [attr.id]=\"popoverToggleAriaControls\">\n <div #scrollable class=\"ecl-popover__scrollable\">\n <button eclButton variant=\"tertiary\" (click)=\"doClose()\" class=\"ecl-popover__close\" isIconOnly>\n <span eclButtonLabel>Close</span>\n <ecl-icon icon=\"close\" size=\"m\"></ecl-icon>\n </button>\n <ng-content select=\"[eclPopoverContent]\"></ng-content>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i2.EclButtonComponent, selector: "button[eclButton], button[ecl-button], a[eclButton]", inputs: ["isIconOnly", "variant", "containerStyleClass"] }, { kind: "directive", type: i2.EclButtonLabelDirective, selector: "[eclButtonLabel]" }, { kind: "component", type: i3.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "title", "ariaHidden", "focusable", "isFlipHorizontal"] }] }); }
308
379
  }
309
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.5", ngImport: i0, type: EclPopoverComponent, decorators: [{
380
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-rc.0", ngImport: i0, type: EclPopoverComponent, decorators: [{
310
381
  type: Component,
311
382
  args: [{ selector: 'ecl-popover', hostDirectives: [
312
383
  {
@@ -317,7 +388,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.5",
317
388
  ], imports: [
318
389
  ...EUI_ECL_BUTTON,
319
390
  ...EUI_ECL_ICON,
320
- ], template: "<ng-content select=\"[eclPopoverToggle]\"></ng-content>\n\n<div #container class=\"ecl-popover__container\" [style.--ecl-popover-position]=\"popoverPosition\" [hidden]=\"isHidden\" [attr.id]=\"popoverToggleAriaControls\">\n <div #scrollable class=\"ecl-popover__scrollable\">\n <button eclButton variant=\"tertiary\" (click)=\"onClose()\" class=\"ecl-popover__close\" isIconOnly>\n <span eclButtonLabel>Close</span>\n <ecl-icon icon=\"close\" size=\"m\"></ecl-icon>\n </button>\n <ng-content select=\"[eclPopoverContent]\"></ng-content>\n </div>\n</div>\n" }]
391
+ ], template: "<ng-content select=\"[eclPopoverToggle]\"></ng-content>\n\n<div #container class=\"ecl-popover__container\" [style.--ecl-popover-position]=\"popoverPosition\" [hidden]=\"isHidden\"\n [attr.id]=\"popoverToggleAriaControls\">\n <div #scrollable class=\"ecl-popover__scrollable\">\n <button eclButton variant=\"tertiary\" (click)=\"doClose()\" class=\"ecl-popover__close\" isIconOnly>\n <span eclButtonLabel>Close</span>\n <ecl-icon icon=\"close\" size=\"m\"></ecl-icon>\n </button>\n <ng-content select=\"[eclPopoverContent]\"></ng-content>\n </div>\n</div>\n" }]
321
392
  }], propDecorators: { eclPopoverContainerElement: [{
322
393
  type: ViewChild,
323
394
  args: ['container']
@@ -327,7 +398,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.5",
327
398
  }], eclPopoverToggle: [{
328
399
  type: ContentChild,
329
400
  args: [EclPopoverToggleDirective]
330
- }], cssClasses: [{
401
+ }], onOpen: [{ type: i0.Output, args: ["onOpen"] }], onClose: [{ type: i0.Output, args: ["onClose"] }], cssClasses: [{
331
402
  type: HostBinding,
332
403
  args: ['class']
333
404
  }], onClickOutsidePopover: [{
@@ -356,10 +427,10 @@ class EclPopoverContentDirective extends ECLBaseDirective {
356
427
  get cssClasses() {
357
428
  return [super.getCssClasses('ecl-popover__content')].join(' ').trim();
358
429
  }
359
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-next.5", ngImport: i0, type: EclPopoverContentDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
360
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.0-next.5", type: EclPopoverContentDirective, isStandalone: true, selector: "[eclPopoverContent]", host: { properties: { "class": "this.cssClasses" } }, usesInheritance: true, ngImport: i0 }); }
430
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-rc.0", ngImport: i0, type: EclPopoverContentDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
431
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.0-rc.0", type: EclPopoverContentDirective, isStandalone: true, selector: "[eclPopoverContent]", host: { properties: { "class": "this.cssClasses" } }, usesInheritance: true, ngImport: i0 }); }
361
432
  }
362
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.5", ngImport: i0, type: EclPopoverContentDirective, decorators: [{
433
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-rc.0", ngImport: i0, type: EclPopoverContentDirective, decorators: [{
363
434
  type: Directive,
364
435
  args: [{
365
436
  selector: '[eclPopoverContent]',
@@ -381,15 +452,15 @@ const COMPONENTS = [
381
452
  * @deprecated Use {@link EUI_ECL_POPOVER} instead.
382
453
  */
383
454
  class EclPopoverModule {
384
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-next.5", ngImport: i0, type: EclPopoverModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
385
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.0-next.5", ngImport: i0, type: EclPopoverModule, imports: [EclPopoverComponent,
455
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0-rc.0", ngImport: i0, type: EclPopoverModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
456
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.0-rc.0", ngImport: i0, type: EclPopoverModule, imports: [EclPopoverComponent,
386
457
  EclPopoverContentDirective,
387
458
  EclPopoverToggleDirective], exports: [EclPopoverComponent,
388
459
  EclPopoverContentDirective,
389
460
  EclPopoverToggleDirective] }); }
390
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.0-next.5", ngImport: i0, type: EclPopoverModule, imports: [EclPopoverComponent] }); }
461
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.0-rc.0", ngImport: i0, type: EclPopoverModule, imports: [EclPopoverComponent] }); }
391
462
  }
392
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-next.5", ngImport: i0, type: EclPopoverModule, decorators: [{
463
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0-rc.0", ngImport: i0, type: EclPopoverModule, decorators: [{
393
464
  type: NgModule,
394
465
  args: [{
395
466
  imports: [...COMPONENTS],
@@ -1 +1 @@
1
- {"version":3,"file":"eui-ecl-components-ecl-popover.mjs","sources":["../../components/ecl-popover/ecl-popover-toggle.directive.ts","../../components/ecl-popover/ecl-popover.component.ts","../../components/ecl-popover/ecl-popover.component.html","../../components/ecl-popover/ecl-popover-content.directive.ts","../../components/ecl-popover/ecl-popover.module.ts","../../components/ecl-popover/index.ts","../../components/ecl-popover/eui-ecl-components-ecl-popover.ts"],"sourcesContent":["import { Directive, ElementRef, EventEmitter, HostBinding, HostListener, Output, inject } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive used to toggle the visibility of an `ecl-popover` component.\n *\n * This directive emits a custom click event and manages accessibility attributes.\n */\n@Directive({\n selector: '[eclPopoverToggle]',\n})\nexport class EclPopoverToggleDirective extends ECLBaseDirective {\n hostElementRef = inject(ElementRef);\n\n /**\n * Sets the `aria-expanded` attribute to reflect the popover's open state.\n * This should be updated by the parent popover component.\n */\n @HostBinding('attr.aria-expanded') isExpanded = false;\n\n /**\n * Event emitted when the toggle element is clicked with the left mouse button.\n */\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() click = new EventEmitter();\n\n /**\n * Host binding that applies the appropriate CSS class to the toggle element.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-popover__toggle')].join(' ').trim();\n }\n\n /**\n * Emits the `click` event only for left mouse button clicks.\n * Used by the popover component to toggle visibility.\n */\n @HostListener('mouseup', ['$event'])\n onClick(evt: MouseEvent): void {\n const LEFT_BUTTON = 0;\n\n if (evt.button === LEFT_BUTTON) {\n this.click.next(null);\n }\n }\n\n /**\n * Returns the native HTML element of the directive.\n * Used internally by the popover to query attributes.\n */\n public getHostElement(): HTMLElement {\n return this.hostElementRef.nativeElement;\n }\n}\n","import { AfterContentInit, Component, ContentChild, ElementRef, HostBinding, HostListener, OnDestroy, Renderer2, ViewChild, inject } from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { ECLClickOutsideDirective } from '@eui/ecl/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclPopoverToggleDirective } from './ecl-popover-toggle.directive';\nimport { EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\n\n/**\n * Component representing an ECL Popover.\n *\n * It handles toggling visibility, positioning, and closing behavior of the popover.\n */\n@Component({\n selector: 'ecl-popover',\n templateUrl: './ecl-popover.component.html',\n hostDirectives: [\n {\n directive: ECLClickOutsideDirective,\n // eslint-disable-next-line @angular-eslint/no-outputs-metadata-property\n outputs: ['eclClickOutside'],\n },\n ],\n imports: [\n ...EUI_ECL_BUTTON,\n ...EUI_ECL_ICON,\n ],\n})\nexport class EclPopoverComponent extends ECLBaseDirective implements AfterContentInit, OnDestroy {\n /**\n * Reference to the popover container element.\n */\n @ViewChild('container') eclPopoverContainerElement: ElementRef;\n\n /**\n * Reference to the scrollable content element inside the popover.\n */\n @ViewChild('scrollable') eclPopoverScrollableElement: ElementRef;\n\n /**\n * Reference to the toggle element used to open/close the popover.\n */\n @ContentChild(EclPopoverToggleDirective) eclPopoverToggle: EclPopoverToggleDirective;\n\n /**\n * Current calculated position class of the popover.\n */\n popoverPosition: string;\n\n /**\n * Controls visibility of the popover. `true` means hidden.\n */\n isHidden = true;\n\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private isLeft: boolean;\n private isRight: boolean;\n private isPushLeft: boolean;\n private isPushRight: boolean;\n private isPushTop: boolean;\n private isPushBottom: boolean;\n\n private readonly topClass = 'ecl-popover--top';\n private readonly bottomClass = 'ecl-popover--bottom';\n private readonly leftClass = 'ecl-popover--left';\n private readonly rightClass = 'ecl-popover--right';\n private readonly pushTopClass = 'ecl-popover--push-top';\n private readonly pushBottomClass = 'ecl-popover--push-bottom';\n private readonly pushLeftClass = 'ecl-popover--push-left';\n private readonly pushRightClass = 'ecl-popover--push-right';\n private el = inject(ElementRef);\n private renderer = inject(Renderer2);\n\n @HostBinding('class')\n get cssClasses(): string {\n return [\n super.getCssClasses('ecl-popover'),\n ]\n .join(' ')\n .trim();\n }\n\n /**\n * Initializes event subscriptions for toggle button.\n */\n ngAfterContentInit(): void {\n this.eclPopoverToggle?.click.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.isHidden = !this.isHidden;\n this.checkPosition(); // TODO: wrap on a platformBrowser check as it calls window and document\n });\n }\n\n /**\n * Lifecycle hook that cleans up subscriptions on destroy.\n */\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Returns the value of the `aria-controls` attribute from the toggle element,\n * if available. Used for accessibility linking.\n */\n get popoverToggleAriaControls(): string | null {\n return this.eclPopoverToggle?.hostElementRef.nativeElement.getAttribute('aria-controls');\n }\n\n /**\n * Handler triggered when a click outside the popover is detected.\n * Closes the popover if it is open.\n */\n @HostListener('eclClickOutside')\n onClickOutsidePopover(): void {\n if (!this.isHidden) {\n this.onClose();\n }\n }\n\n /**\n * Closes the popover when the Escape key is pressed.\n */\n @HostListener('document:keydown.escape')\n onEscapeKeydownHandler(): void {\n this.isHidden = true;\n }\n\n /**\n * Recalculates popover position when the window is resized.\n */\n @HostListener('window:resize')\n onWindowResize(): void {\n this.checkPosition();\n }\n\n /**\n * Recalculates popover position when the document is scrolled.\n */\n @HostListener('document:scroll')\n onDocumentScroll(): void {\n this.checkPosition();\n }\n\n /**\n * Public method used to close the popover and reset related styles.\n */\n onClose(): void {\n this.isHidden = true;\n this.resetStyless();\n }\n\n private checkPosition(): void {\n setTimeout(() => {\n if (!this.isHidden) {\n this.positionPopover();\n }\n });\n }\n\n private positionPopover(): void {\n this.resetStyless();\n const toggleElement = this.eclPopoverToggle.getHostElement();\n const toggleRect = toggleElement.getBoundingClientRect();\n const screenHeight = window.innerHeight;\n const screenWidth = window.innerWidth;\n\n // Calculate available space in each direction\n const spaceTop = toggleRect.top;\n const spaceBottom = screenHeight - toggleRect.bottom;\n const spaceLeft = toggleRect.left;\n const spaceRight = screenWidth - toggleRect.right;\n\n // Find the direction with the most available space\n if ((spaceTop > spaceBottom) && (spaceTop > spaceLeft) && (spaceTop > spaceRight)) {\n this.renderer.addClass(this.el.nativeElement, this.topClass);\n } else if ((spaceBottom > spaceLeft) && (spaceBottom > spaceRight)) {\n this.renderer.addClass(this.el.nativeElement, this.bottomClass);\n } else if (spaceLeft > spaceRight) {\n this.isLeft = true;\n this.renderer.addClass(this.el.nativeElement, this.leftClass);\n } else {\n this.isRight = true;\n this.renderer.addClass(this.el.nativeElement, this.rightClass);\n }\n this.handleScrollableWidth(spaceLeft, spaceRight, screenWidth);\n this.handlePushClass(screenWidth, screenHeight);\n }\n\n private handleScrollableWidth(spaceLeft: number, spaceRight: number, screenWidth: number): void {\n // Try to use as much of the available width, respecting the max-width set.\n const scrollable = this.eclPopoverScrollableElement.nativeElement;\n const styles = getComputedStyle(scrollable);\n const maxWidth = parseInt(styles.getPropertyValue('max-width'), 10);\n const minWidth = parseInt(styles.getPropertyValue('min-width'), 10);\n const padding = parseInt(styles.getPropertyValue('padding-left'), 10) * 2;\n const toggleElement = this.eclPopoverToggle.getHostElement();\n const toggleRect = toggleElement.getBoundingClientRect();\n let availableSpace = 0;\n\n if (this.isLeft || this.isRight) {\n availableSpace = (this.isLeft ? spaceLeft : spaceRight) * 0.9;\n } else {\n const centerPosition = (toggleRect.right - toggleRect.left) / 2;\n availableSpace = (screenWidth - centerPosition + this.eclPopoverContainerElement.nativeElement.offsetWidth / 2) * 0.9;\n }\n if (maxWidth + padding < availableSpace) {\n this.renderer.setStyle(scrollable, 'width', `${maxWidth}px`);\n } else if (availableSpace < minWidth + padding) {\n this.renderer.setStyle(scrollable, 'width', `${minWidth}px`);\n } else {\n this.renderer.setStyle(scrollable, 'width', `${availableSpace - padding}px`);\n }\n }\n\n private resetStyless(): void {\n const popoverContainer = this.eclPopoverContainerElement.nativeElement;\n this.isPushLeft = false;\n this.isPushRight = false;\n this.isPushTop = false;\n this.isPushBottom = false;\n this.isLeft = false;\n this.isRight = false;\n this.popoverPosition = null;\n this.renderer.removeClass(this.el.nativeElement, this.topClass);\n this.renderer.removeClass(this.el.nativeElement, this.bottomClass);\n this.renderer.removeClass(this.el.nativeElement, this.leftClass);\n this.renderer.removeClass(this.el.nativeElement, this.rightClass);\n this.renderer.removeClass(this.el.nativeElement, this.pushTopClass);\n this.renderer.removeClass(this.el.nativeElement, this.pushBottomClass);\n this.renderer.removeClass(this.el.nativeElement, this.pushLeftClass);\n this.renderer.removeClass(this.el.nativeElement, this.pushRightClass);\n this.renderer.removeStyle(popoverContainer, 'top');\n this.renderer.removeStyle(popoverContainer, 'right');\n this.renderer.removeStyle(popoverContainer, 'left');\n this.renderer.removeStyle(popoverContainer, 'bottom');\n this.renderer.removeStyle(popoverContainer, 'transform');\n this.renderer.removeStyle(this.eclPopoverScrollableElement.nativeElement, 'width');\n }\n\n private handlePushClass(screenWidth: number, screenHeight: number): void {\n const toggleElement = this.eclPopoverToggle.getHostElement();\n const toggleRect = toggleElement.getBoundingClientRect();\n const popoverRect = this.eclPopoverContainerElement.nativeElement.getBoundingClientRect();\n const popoverContainer = this.eclPopoverContainerElement.nativeElement;\n\n if (this.isLeft || this.isRight) {\n if (popoverRect.top < 0) {\n this.renderer.addClass(this.el.nativeElement, this.pushTopClass);\n this.renderer.setStyle(popoverContainer, 'top', `-${Math.round(toggleRect.top)}px`);\n this.isPushTop = true;\n } else if (popoverRect.bottom > screenHeight) {\n this.renderer.addClass(this.el.nativeElement, this.pushBottomClass);\n this.renderer.setStyle(popoverContainer, 'bottom', `-${Math.round(screenHeight - (toggleRect.bottom + 8))}px`);\n this.isPushBottom = true;\n }\n } else {\n if (popoverRect.left < 0) {\n this.renderer.addClass(this.el.nativeElement, this.pushLeftClass);\n this.renderer.setStyle(popoverContainer, 'left', `-${toggleRect.left}px`);\n this.renderer.setStyle(popoverContainer, 'right', 'auto');\n this.renderer.setStyle(popoverContainer, 'transform', 'none');\n this.isPushLeft = true;\n }\n if (popoverRect.right > screenWidth) {\n this.renderer.addClass(this.el.nativeElement, this.pushRightClass);\n this.renderer.setStyle(popoverContainer, 'left', `-${screenWidth - toggleRect.right}px`);\n this.renderer.setStyle(popoverContainer, 'right', 'auto');\n this.renderer.setStyle(popoverContainer, 'transform', 'none');\n this.isPushRight = true;\n }\n }\n\n this.handleArrowPosition();\n }\n\n private handleArrowPosition(): void {\n const toggleElement = this.eclPopoverToggle.getHostElement();\n const toggleRect = toggleElement.getBoundingClientRect();\n const popoverRect = this.eclPopoverContainerElement.nativeElement.getBoundingClientRect();\n\n if (this.isLeft || this.isRight) {\n if (this.isPushBottom) {\n this.popoverPosition = `${Math.round(toggleRect.top - popoverRect.top + toggleRect.height / 2)}px`;\n } else if (this.isPushTop) {\n this.popoverPosition = `${Math.round(popoverRect.top + toggleRect.top + toggleRect.height / 2)}px`;\n }\n } else {\n if (this.isPushRight) {\n this.popoverPosition = `${Math.round(popoverRect.right - (toggleRect.right - toggleRect.width / 2))}px`;\n } else if (this.isPushLeft) {\n this.popoverPosition = `${Math.round(popoverRect.left + toggleRect.left + toggleRect.width / 2)}px`;\n }\n }\n }\n}\n","<ng-content select=\"[eclPopoverToggle]\"></ng-content>\n\n<div #container class=\"ecl-popover__container\" [style.--ecl-popover-position]=\"popoverPosition\" [hidden]=\"isHidden\" [attr.id]=\"popoverToggleAriaControls\">\n <div #scrollable class=\"ecl-popover__scrollable\">\n <button eclButton variant=\"tertiary\" (click)=\"onClose()\" class=\"ecl-popover__close\" isIconOnly>\n <span eclButtonLabel>Close</span>\n <ecl-icon icon=\"close\" size=\"m\"></ecl-icon>\n </button>\n <ng-content select=\"[eclPopoverContent]\"></ng-content>\n </div>\n</div>\n","import { Directive, HostBinding } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive applied to the content section of an `ecl-popover` component.\n *\n * Responsible for applying the appropriate CSS class to the popover content container.\n */\n@Directive({\n selector: '[eclPopoverContent]',\n})\nexport class EclPopoverContentDirective extends ECLBaseDirective {\n /**\n * Host binding that applies the CSS class to style the popover content.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-popover__content')].join(' ').trim();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { EclPopoverComponent } from './ecl-popover.component';\nimport { EclPopoverContentDirective } from './ecl-popover-content.directive';\nimport { EclPopoverToggleDirective } from './ecl-popover-toggle.directive';\n\nconst COMPONENTS = [\n EclPopoverComponent,\n EclPopoverContentDirective,\n EclPopoverToggleDirective,\n];\n\n/**\n * @description\n * Module that provides the EclPopover component and its dependencies.\n *\n * @deprecated Use {@link EUI_ECL_POPOVER} instead.\n */\n@NgModule({\n imports: [...COMPONENTS],\n exports: [...COMPONENTS],\n})\nexport class EclPopoverModule {}\n","import { EclPopoverComponent } from './ecl-popover.component';\nimport { EclPopoverContentDirective } from './ecl-popover-content.directive';\nimport { EclPopoverToggleDirective } from './ecl-popover-toggle.directive';\n\nexport * from './ecl-popover.module';\nexport * from './ecl-popover.component';\nexport * from './ecl-popover-content.directive';\nexport * from './ecl-popover-toggle.directive';\n\nexport const EUI_ECL_POPOVER = [\n EclPopoverComponent,\n EclPopoverContentDirective,\n EclPopoverToggleDirective,\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-popover.mjs","sources":["../../components/ecl-popover/ecl-popover-toggle.directive.ts","../../components/ecl-popover/ecl-popover.component.ts","../../components/ecl-popover/ecl-popover.component.html","../../components/ecl-popover/ecl-popover-content.directive.ts","../../components/ecl-popover/ecl-popover.module.ts","../../components/ecl-popover/index.ts","../../components/ecl-popover/eui-ecl-components-ecl-popover.ts"],"sourcesContent":["import { Directive, ElementRef, EventEmitter, HostBinding, HostListener, Output, inject } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive used to toggle the visibility of an `ecl-popover` component.\n *\n * This directive emits a custom click event and manages accessibility attributes.\n */\n@Directive({\n selector: '[eclPopoverToggle]',\n})\nexport class EclPopoverToggleDirective extends ECLBaseDirective {\n hostElementRef = inject(ElementRef);\n\n /**\n * Sets the `aria-expanded` attribute to reflect the popover's open state.\n * This should be updated by the parent popover component.\n */\n @HostBinding('attr.aria-expanded') isExpanded = false;\n\n /**\n * Event emitted when the toggle element is clicked with the left mouse button.\n */\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() click = new EventEmitter();\n\n /**\n * Host binding that applies the appropriate CSS class to the toggle element.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-popover__toggle')].join(' ').trim();\n }\n\n /**\n * Emits the `click` event only for left mouse button clicks.\n * Used by the popover component to toggle visibility.\n */\n @HostListener('mouseup', ['$event'])\n onClick(evt: MouseEvent): void {\n const LEFT_BUTTON = 0;\n\n if (evt.button === LEFT_BUTTON) {\n this.click.next(null);\n }\n }\n\n /**\n * Returns the native HTML element of the directive.\n * Used internally by the popover to query attributes.\n */\n public getHostElement(): HTMLElement {\n return this.hostElementRef.nativeElement;\n }\n}\n","import { AfterContentInit, Component, ContentChild, ElementRef, HostBinding, HostListener, OnDestroy, Renderer2, ViewChild, inject, output } from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { ECLClickOutsideDirective } from '@eui/ecl/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclPopoverToggleDirective } from './ecl-popover-toggle.directive';\nimport { EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\n\n/**\n * Component representing an ECL Popover.\n *\n * It handles toggling visibility, positioning, and closing behavior of the popover.\n */\n@Component({\n selector: 'ecl-popover',\n templateUrl: './ecl-popover.component.html',\n hostDirectives: [\n {\n directive: ECLClickOutsideDirective,\n // eslint-disable-next-line @angular-eslint/no-outputs-metadata-property\n outputs: ['eclClickOutside'],\n },\n ],\n imports: [\n ...EUI_ECL_BUTTON,\n ...EUI_ECL_ICON,\n ],\n})\nexport class EclPopoverComponent extends ECLBaseDirective implements AfterContentInit, OnDestroy {\n /**\n * Reference to the popover container element.\n */\n @ViewChild('container') eclPopoverContainerElement: ElementRef;\n\n /**\n * Reference to the scrollable content element inside the popover.\n */\n @ViewChild('scrollable') eclPopoverScrollableElement: ElementRef;\n\n /**\n * Reference to the toggle element used to open/close the popover.\n */\n @ContentChild(EclPopoverToggleDirective) eclPopoverToggle: EclPopoverToggleDirective;\n\n onOpen = output();\n onClose = output();\n\n /**\n * Current calculated position class of the popover.\n */\n popoverPosition: string;\n\n /**\n * Controls visibility of the popover. `true` means hidden.\n */\n isHidden = true;\n\n private destroy$: Subject<boolean> = new Subject<boolean>();\n\n private readonly topClass = 'ecl-popover--top';\n private readonly bottomClass = 'ecl-popover--bottom';\n private readonly leftClass = 'ecl-popover--left';\n private readonly rightClass = 'ecl-popover--right';\n private readonly pushTopClass = 'ecl-popover--push-top';\n private readonly pushBottomClass = 'ecl-popover--push-bottom';\n private readonly pushLeftClass = 'ecl-popover--push-left';\n private readonly pushRightClass = 'ecl-popover--push-right';\n private toggleRect = null;\n private scrollableParent = null;\n private el = inject(ElementRef);\n private renderer = inject(Renderer2);\n\n @HostBinding('class')\n get cssClasses(): string {\n return [\n super.getCssClasses('ecl-popover'),\n ]\n .join(' ')\n .trim();\n }\n\n /**\n * Initializes event subscriptions for toggle button.\n */\n ngAfterContentInit(): void {\n this.eclPopoverToggle?.click.pipe(takeUntil(this.destroy$)).subscribe(() => {\n if (this.isHidden) {\n this.doOpen();\n } else {\n this.doClose();\n }\n this.checkPosition(); // TODO: wrap on a platformBrowser check as it calls window and document\n });\n\n this.scrollableParent = this.getClosestScrollableParent(this.eclPopoverToggle.hostElementRef.nativeElement);\n }\n\n /**\n * Lifecycle hook that cleans up subscriptions on destroy.\n */\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Returns the value of the `aria-controls` attribute from the toggle element,\n * if available. Used for accessibility linking.\n */\n get popoverToggleAriaControls(): string | null {\n return this.eclPopoverToggle?.hostElementRef.nativeElement.getAttribute('aria-controls');\n }\n\n /**\n * Handler triggered when a click outside the popover is detected.\n * Closes the popover if it is open.\n */\n @HostListener('eclClickOutside')\n onClickOutsidePopover(): void {\n if (!this.isHidden) {\n this.doClose();\n }\n }\n\n /**\n * Closes the popover when the Escape key is pressed.\n */\n @HostListener('document:keydown.escape')\n onEscapeKeydownHandler(): void {\n this.doClose();\n }\n\n /**\n * Recalculates popover position when the window is resized.\n */\n @HostListener('window:resize')\n onWindowResize(): void {\n this.checkPosition();\n }\n\n /**\n * Recalculates popover position when the document is scrolled.\n */\n @HostListener('document:scroll')\n onDocumentScroll(): void {\n this.checkPosition();\n }\n\n /**\n * Protected method used to close the popover and reset related styles.\n */\n protected doClose(): void { // TODO: breaking change v21 (was onClose, but now its an output, and is protected but not public)\n this.isHidden = true;\n this.resetStyles();\n this.onClose.emit();\n }\n\n private doOpen(): void {\n this.isHidden = false;\n this.onOpen.emit();\n }\n\n private getClosestScrollableParent(element: HTMLElement): HTMLElement {\n let parent = element.parentElement;\n\n while (parent) {\n const { overflowY, overflowX } = getComputedStyle(parent);\n const isScrollableY =\n (overflowY === 'auto' || overflowY === 'scroll') &&\n parent.scrollHeight > parent.clientHeight;\n const isScrollableX =\n (overflowX === 'auto' || overflowX === 'scroll') &&\n parent.scrollWidth > parent.clientWidth;\n\n if (isScrollableY || isScrollableX) {\n return parent; // Found the closest scrollable parent\n }\n\n parent = parent.parentElement;\n }\n\n return document.body;\n }\n\n private calculateAvailableSpace(toggleElement, scrollableParent = null) {\n // Get the bounding rect for the toggle element\n this.toggleRect = toggleElement.getBoundingClientRect();\n\n // If no scrollable parent is provided, use the viewport\n const containerRect = scrollableParent\n ? scrollableParent.getBoundingClientRect()\n : {\n top: 0,\n left: 0,\n right: window.innerWidth,\n bottom: window.innerHeight,\n };\n const containerWidth = containerRect.right - containerRect.left;\n const containerHeight = containerRect.bottom - containerRect.top;\n // Calculate the space available in the four directions\n const containerBottom = Math.max(\n 0,\n window.innerHeight - containerRect.bottom,\n );\n const toggleBottom = Math.max(\n 0,\n window.innerHeight - this.toggleRect.bottom,\n );\n const spaceBottom = Math.max(0, toggleBottom - containerBottom);\n\n // Top Space (from toggle's top to container's top)\n const containerTop = Math.max(0, containerRect.top);\n const toggleTop = Math.max(0, this.toggleRect.top);\n const spaceTop = Math.max(0, toggleTop - containerTop);\n\n // Right Space (from toggle's right to container's right)\n const containerRight = Math.max(0, window.innerWidth - containerRect.right);\n const toggleRight = Math.max(0, window.innerWidth - this.toggleRect.right);\n const spaceRight = Math.max(0, toggleRight - containerRight);\n\n // Left Space (from toggle's left to container's left)\n const containerLeft = Math.max(0, containerRect.left);\n const toggleLeft = Math.max(0, this.toggleRect.left);\n const spaceLeft = Math.max(0, toggleLeft - containerLeft);\n\n return {\n containerWidth,\n containerHeight,\n spaceTop,\n spaceBottom,\n spaceLeft,\n spaceRight,\n };\n }\n\n private checkPosition(): void {\n setTimeout(() => {\n if (!this.isHidden) {\n this.positionPopover();\n }\n });\n }\n\n private positionPopover(): void {\n this.resetStyles();\n\n const { containerWidth, spaceTop, spaceBottom, spaceLeft, spaceRight } =\n this.calculateAvailableSpace(this.eclPopoverToggle.getHostElement(), this.scrollableParent);\n\n // Find the direction with the most available space\n const positioningClass = 'ecl-popover--';\n let direction = '';\n\n if (\n spaceTop > spaceBottom &&\n spaceTop > spaceLeft &&\n spaceTop > spaceRight\n ) {\n direction = 'top';\n } else if (spaceBottom > spaceLeft && spaceBottom > spaceRight) {\n direction = 'bottom';\n } else if (spaceLeft > spaceRight) {\n direction = 'left';\n } else {\n direction = 'right';\n }\n\n this.renderer.addClass(this.el.nativeElement, `${positioningClass}${direction}`);\n\n // Try to use as much of the available width, respecting the max-width set.\n const styles = window.getComputedStyle(this.eclPopoverScrollableElement.nativeElement);\n const maxWidth = parseInt(styles.getPropertyValue('max-width'), 10);\n const minWidth = parseInt(styles.getPropertyValue('min-width'), 10);\n const padding = parseInt(styles.getPropertyValue('padding-left'), 10) * 2;\n\n // We consider 90% of the biggest space available\n const horizontalSpace = Math.max(spaceLeft, spaceRight) * 0.9;\n let targetWidth;\n\n // If the available space is larger than maxWidth (plus padding), set to maxWidth\n if (\n maxWidth + padding < horizontalSpace ||\n (direction !== 'left' &&\n direction !== 'right' &&\n containerWidth > maxWidth)\n ) {\n targetWidth = maxWidth;\n }\n // If the available space is smaller than minWidth (plus padding), set to minWidth\n else if (horizontalSpace < minWidth + padding) {\n targetWidth = minWidth;\n }\n // Otherwise, set the width to the available space minus the padding\n else if (direction === 'left' || direction === 'right') {\n targetWidth = horizontalSpace - padding;\n } else {\n targetWidth = (horizontalSpace - padding) * 2;\n }\n\n // Ensure the width does not exceed available space\n this.renderer.setStyle(this.eclPopoverScrollableElement.nativeElement, 'width', `${targetWidth}px`);\n\n this.handlePushClass(direction);\n }\n\n private resetStyles(): void {\n const popoverContainer = this.eclPopoverContainerElement.nativeElement;\n this.popoverPosition = null;\n this.renderer.removeClass(this.el.nativeElement, this.topClass);\n this.renderer.removeClass(this.el.nativeElement, this.bottomClass);\n this.renderer.removeClass(this.el.nativeElement, this.leftClass);\n this.renderer.removeClass(this.el.nativeElement, this.rightClass);\n this.renderer.removeClass(this.el.nativeElement, this.pushTopClass);\n this.renderer.removeClass(this.el.nativeElement, this.pushBottomClass);\n this.renderer.removeClass(this.el.nativeElement, this.pushLeftClass);\n this.renderer.removeClass(this.el.nativeElement, this.pushRightClass);\n this.renderer.removeStyle(popoverContainer, '--ecl-popover-position');\n this.renderer.removeStyle(popoverContainer, 'top');\n this.renderer.removeStyle(popoverContainer, 'right');\n this.renderer.removeStyle(popoverContainer, 'left');\n this.renderer.removeStyle(popoverContainer, 'bottom');\n this.renderer.removeStyle(popoverContainer, 'transform');\n this.renderer.removeStyle(this.eclPopoverScrollableElement.nativeElement, 'width');\n }\n\n\n /**\n * Check whether the popover is going out of its scrollable container and apply the needed repositioning.\n *\n * @param {string} direction\n */\n handlePushClass(direction: string): void {\n requestAnimationFrame(() => {\n const popoverRect = this.eclPopoverContainerElement.nativeElement.getBoundingClientRect();\n const scrollableRect = this.scrollableParent.getBoundingClientRect();\n const containerBottom =\n scrollableRect.bottom > window.innerHeight ? 0 : window.innerHeight - scrollableRect.bottom;\n const containerTop =\n scrollableRect.top > window.innerHeight ? 0 : scrollableRect.top;\n const leftOverflow = scrollableRect.left > popoverRect.left;\n const rightOverflow = scrollableRect.right < popoverRect.right;\n const topOverflow = popoverRect.top < containerTop;\n const bottomOverflow =\n containerBottom > window.innerHeight - popoverRect.bottom;\n\n if (direction === 'left' || direction === 'right') {\n if (topOverflow) {\n this.renderer.addClass(this.el.nativeElement, this.pushTopClass);\n // Push the popover to the top edge of the container\n this.renderer.setStyle(this.eclPopoverContainerElement.nativeElement, 'top', `-${Math.round(this.toggleRect.top)}px`);\n this.renderer.setStyle(this.eclPopoverContainerElement.nativeElement, 'bottom', '');\n this.renderer.setStyle(this.eclPopoverContainerElement.nativeElement, 'transform', '');\n }\n if (bottomOverflow) {\n this.renderer.addClass(this.el.nativeElement, this.pushBottomClass);\n // Push the popover to the bottom edge of the container\n this.renderer.setStyle(this.eclPopoverContainerElement.nativeElement, 'bottom', `-${window.innerHeight - this.toggleRect.bottom - containerBottom}px`);\n this.renderer.setStyle(this.eclPopoverContainerElement.nativeElement, 'top', '');\n this.renderer.setStyle(this.eclPopoverContainerElement.nativeElement, 'transform', '');\n }\n } else {\n if (leftOverflow) {\n this.renderer.addClass(this.el.nativeElement, this.pushLeftClass);\n // Push the popover 8px to the left edge of the container\n this.renderer.setStyle(this.eclPopoverContainerElement.nativeElement, 'left', `-${this.toggleRect.left - scrollableRect.left - 8}px`);\n this.renderer.setStyle(this.eclPopoverContainerElement.nativeElement, 'right', 'auto');\n }\n if (rightOverflow) {\n this.renderer.addClass(this.el.nativeElement, this.pushRightClass);\n // Push the popover 8px to the right edge of the container\n this.renderer.setStyle(this.eclPopoverContainerElement.nativeElement, 'right', `-${scrollableRect.right - this.toggleRect.right - 8}px`);\n this.renderer.setStyle(this.eclPopoverContainerElement.nativeElement, 'left', 'auto');\n }\n }\n\n this.handleArrowPosition(direction);\n });\n }\n\n private handleArrowPosition(direction: string): void {\n const popoverRect = this.eclPopoverContainerElement.nativeElement.getBoundingClientRect();\n\n if (direction === 'left' || direction === 'right') {\n if (this.el.nativeElement.classList.contains(this.pushBottomClass)) {\n this.renderer.setStyle(this.eclPopoverContainerElement.nativeElement, '--ecl-popover-position',\n `${Math.round(this.toggleRect.top - popoverRect.top + this.toggleRect.height / 2)}px`);\n } else if (this.el.nativeElement.classList.contains(this.pushTopClass)) {\n this.renderer.setStyle(this.eclPopoverContainerElement.nativeElement, '--ecl-popover-position',\n `${Math.round(popoverRect.top + this.toggleRect.top + this.toggleRect.height / 2)}px`);\n }\n } else {\n // eslint-disable-next-line no-lonely-if\n if (this.el.nativeElement.classList.contains(this.pushRightClass)) {\n this.renderer.setStyle(this.eclPopoverContainerElement.nativeElement, '--ecl-popover-position',\n `${Math.round(popoverRect.right - (this.toggleRect.right - this.toggleRect.width / 2))}px`);\n } else if (this.el.nativeElement.classList.contains(this.pushLeftClass)) {\n this.renderer.setStyle(this.eclPopoverContainerElement.nativeElement, '--ecl-popover-position',\n `${Math.round(this.toggleRect.left - popoverRect.left + this.toggleRect.width / 2)}px`);\n }\n }\n }\n}\n","<ng-content select=\"[eclPopoverToggle]\"></ng-content>\n\n<div #container class=\"ecl-popover__container\" [style.--ecl-popover-position]=\"popoverPosition\" [hidden]=\"isHidden\"\n [attr.id]=\"popoverToggleAriaControls\">\n <div #scrollable class=\"ecl-popover__scrollable\">\n <button eclButton variant=\"tertiary\" (click)=\"doClose()\" class=\"ecl-popover__close\" isIconOnly>\n <span eclButtonLabel>Close</span>\n <ecl-icon icon=\"close\" size=\"m\"></ecl-icon>\n </button>\n <ng-content select=\"[eclPopoverContent]\"></ng-content>\n </div>\n</div>\n","import { Directive, HostBinding } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive applied to the content section of an `ecl-popover` component.\n *\n * Responsible for applying the appropriate CSS class to the popover content container.\n */\n@Directive({\n selector: '[eclPopoverContent]',\n})\nexport class EclPopoverContentDirective extends ECLBaseDirective {\n /**\n * Host binding that applies the CSS class to style the popover content.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-popover__content')].join(' ').trim();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { EclPopoverComponent } from './ecl-popover.component';\nimport { EclPopoverContentDirective } from './ecl-popover-content.directive';\nimport { EclPopoverToggleDirective } from './ecl-popover-toggle.directive';\n\nconst COMPONENTS = [\n EclPopoverComponent,\n EclPopoverContentDirective,\n EclPopoverToggleDirective,\n];\n\n/**\n * @description\n * Module that provides the EclPopover component and its dependencies.\n *\n * @deprecated Use {@link EUI_ECL_POPOVER} instead.\n */\n@NgModule({\n imports: [...COMPONENTS],\n exports: [...COMPONENTS],\n})\nexport class EclPopoverModule {}\n","import { EclPopoverComponent } from './ecl-popover.component';\nimport { EclPopoverContentDirective } from './ecl-popover-content.directive';\nimport { EclPopoverToggleDirective } from './ecl-popover-toggle.directive';\n\nexport * from './ecl-popover.module';\nexport * from './ecl-popover.component';\nexport * from './ecl-popover-content.directive';\nexport * from './ecl-popover-toggle.directive';\n\nexport const EUI_ECL_POPOVER = [\n EclPopoverComponent,\n EclPopoverContentDirective,\n EclPopoverToggleDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}