@eui/ecl 23.0.0-alpha.6 → 23.0.0-alpha.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (215) hide show
  1. package/docs/changelog.html +86 -0
  2. package/docs/classes/EclLanguageService.html +8 -8
  3. package/docs/components/EclBannerComponent.html +28 -56
  4. package/docs/components/EclCardComponent.html +12 -24
  5. package/docs/components/EclCarouselComponent.html +33 -65
  6. package/docs/components/EclCarouselItemComponent.html +4 -8
  7. package/docs/components/EclCategoryFilterComponent.html +4 -8
  8. package/docs/components/EclCategoryFilterItemComponent.html +5 -9
  9. package/docs/components/EclCategoryFilterListComponent.html +5 -9
  10. package/docs/components/EclContentItemComponent.html +20 -40
  11. package/docs/components/EclFactFiguresItemComponent.html +4 -8
  12. package/docs/components/EclFactFiguresViewAllComponent.html +4 -8
  13. package/docs/components/EclFeaturedItemComponent.html +4 -10
  14. package/docs/components/EclFileComponent.html +4 -8
  15. package/docs/components/EclFileItemsComponent.html +4 -8
  16. package/docs/components/EclFormGroupComponent.html +4 -8
  17. package/docs/components/EclGalleryComponent.html +21 -41
  18. package/docs/components/EclGalleryItemComponent.html +8 -16
  19. package/docs/components/EclIconComponent.html +4 -8
  20. package/docs/components/EclInpageNavigationComponent.html +20 -40
  21. package/docs/components/EclInpageNavigationItemComponent.html +4 -8
  22. package/docs/components/EclListIllustrationComponent.html +4 -8
  23. package/docs/components/EclListIllustrationItemComponent.html +9 -17
  24. package/docs/components/EclMediaContainerComponent.html +21 -41
  25. package/docs/components/EclMegaMenuComponent.html +4 -8
  26. package/docs/components/EclMegaMenuFeaturedComponent.html +12 -24
  27. package/docs/components/EclMegaMenuInfoComponent.html +4 -8
  28. package/docs/components/EclMegaMenuItemComponent.html +37 -73
  29. package/docs/components/EclMegaMenuSubitemComponent.html +21 -43
  30. package/docs/components/EclMenuComponent.html +20 -40
  31. package/docs/components/EclMenuItemComponent.html +12 -24
  32. package/docs/components/EclMenuMegaItemComponent.html +12 -24
  33. package/docs/components/EclModalComponent.html +1 -1
  34. package/docs/components/EclMultiselectComponent.html +4 -8
  35. package/docs/components/EclMultiselectDropdownComponent.html +21 -41
  36. package/docs/components/EclMultiselectInputComponent.html +4 -8
  37. package/docs/components/EclMultiselectOptionComponent.html +4 -8
  38. package/docs/components/EclNavigationListComponent.html +4 -8
  39. package/docs/components/EclNavigationListItemComponent.html +4 -8
  40. package/docs/components/EclNewsTickerComponent.html +28 -48
  41. package/docs/components/EclNewsTickerItemComponent.html +4 -8
  42. package/docs/components/EclPageHeaderComponent.html +8 -16
  43. package/docs/components/EclPaginationComponent.html +4 -8
  44. package/docs/components/EclPopoverComponent.html +12 -24
  45. package/docs/components/EclSiteHeaderComponent.html +44 -88
  46. package/docs/components/EclSiteHeaderCustomActionComponent.html +8 -16
  47. package/docs/components/EclSiteHeaderLanguageComponent.html +10 -18
  48. package/docs/components/EclSiteHeaderLanguagePopoverComponent.html +6 -10
  49. package/docs/components/EclSiteHeaderLoginComponent.html +4 -8
  50. package/docs/components/EclSiteHeaderSearchComponent.html +4 -8
  51. package/docs/components/EclTabComponent.html +12 -24
  52. package/docs/components/EclTabsComponent.html +29 -57
  53. package/docs/components/EclTimelineComponent.html +4 -8
  54. package/docs/components/EclTimelineItemComponent.html +16 -32
  55. package/docs/directives/EclCheckboxDirective.html +16 -32
  56. package/docs/directives/EclDescriptionListDirective.html +4 -8
  57. package/docs/directives/EclGalleryMediaDirective.html +2 -2
  58. package/docs/directives/EclGalleryPictureDirective.html +1 -1
  59. package/docs/directives/EclListIllustrationPictureDirective.html +4 -8
  60. package/docs/directives/EclMediaContainerItemDirective.html +4 -8
  61. package/docs/directives/EclMegaMenuSublistDirective.html +8 -16
  62. package/docs/directives/EclMultiselectOptionDirective.html +4 -8
  63. package/docs/directives/EclPageHeaderMetaItemDirective.html +9 -0
  64. package/docs/directives/EclRadioDirective.html +8 -16
  65. package/docs/directives/EclSocialMediaFollowLinkDirective.html +4 -8
  66. package/docs/directives/EclTableDirective.html +4 -8
  67. package/docs/directives/EclTableHeadDirective.html +4 -8
  68. package/docs/injectables/EclDefaultLanguageService.html +7 -7
  69. package/docs/injectables/EclMegaMenuService.html +2 -2
  70. package/docs/interfaces/EclMegaMenuItem.html +2 -2
  71. package/docs/interfaces/EclMenuItem.html +2 -2
  72. package/docs/js/search/search_index.js +2 -2
  73. package/docs/json/EclMegaMenuItemComponent.md +1 -1
  74. package/docs/json/EclMegaMenuSubitemComponent.md +1 -1
  75. package/docs/json/EclSiteHeaderLanguagePopoverComponent.md +2 -2
  76. package/docs/json/documentation.json +1365 -2133
  77. package/docs/llms.txt +182 -182
  78. package/docs/miscellaneous/variables.html +16 -16
  79. package/docs/properties.html +1 -1
  80. package/fesm2022/eui-ecl-components-ecl-banner.mjs +37 -40
  81. package/fesm2022/eui-ecl-components-ecl-banner.mjs.map +1 -1
  82. package/fesm2022/eui-ecl-components-ecl-card.mjs +23 -17
  83. package/fesm2022/eui-ecl-components-ecl-card.mjs.map +1 -1
  84. package/fesm2022/eui-ecl-components-ecl-carousel.mjs +105 -82
  85. package/fesm2022/eui-ecl-components-ecl-carousel.mjs.map +1 -1
  86. package/fesm2022/eui-ecl-components-ecl-category-filter.mjs +36 -29
  87. package/fesm2022/eui-ecl-components-ecl-category-filter.mjs.map +1 -1
  88. package/fesm2022/eui-ecl-components-ecl-checkbox.mjs +30 -20
  89. package/fesm2022/eui-ecl-components-ecl-checkbox.mjs.map +1 -1
  90. package/fesm2022/eui-ecl-components-ecl-content-item.mjs +46 -27
  91. package/fesm2022/eui-ecl-components-ecl-content-item.mjs.map +1 -1
  92. package/fesm2022/eui-ecl-components-ecl-date-picker.mjs.map +1 -1
  93. package/fesm2022/eui-ecl-components-ecl-fact-figures.mjs +25 -15
  94. package/fesm2022/eui-ecl-components-ecl-fact-figures.mjs.map +1 -1
  95. package/fesm2022/eui-ecl-components-ecl-featured.mjs +10 -9
  96. package/fesm2022/eui-ecl-components-ecl-featured.mjs.map +1 -1
  97. package/fesm2022/eui-ecl-components-ecl-file.mjs +17 -13
  98. package/fesm2022/eui-ecl-components-ecl-file.mjs.map +1 -1
  99. package/fesm2022/eui-ecl-components-ecl-form-group.mjs +12 -7
  100. package/fesm2022/eui-ecl-components-ecl-form-group.mjs.map +1 -1
  101. package/fesm2022/eui-ecl-components-ecl-gallery.mjs +44 -49
  102. package/fesm2022/eui-ecl-components-ecl-gallery.mjs.map +1 -1
  103. package/fesm2022/eui-ecl-components-ecl-icon.mjs +7 -8
  104. package/fesm2022/eui-ecl-components-ecl-icon.mjs.map +1 -1
  105. package/fesm2022/eui-ecl-components-ecl-inpage-navigation.mjs +48 -50
  106. package/fesm2022/eui-ecl-components-ecl-inpage-navigation.mjs.map +1 -1
  107. package/fesm2022/eui-ecl-components-ecl-link.mjs.map +1 -1
  108. package/fesm2022/eui-ecl-components-ecl-list-illustration.mjs +19 -24
  109. package/fesm2022/eui-ecl-components-ecl-list-illustration.mjs.map +1 -1
  110. package/fesm2022/eui-ecl-components-ecl-list.mjs +6 -7
  111. package/fesm2022/eui-ecl-components-ecl-list.mjs.map +1 -1
  112. package/fesm2022/eui-ecl-components-ecl-loading-indicator.mjs.map +1 -1
  113. package/fesm2022/eui-ecl-components-ecl-media-container.mjs +31 -34
  114. package/fesm2022/eui-ecl-components-ecl-media-container.mjs.map +1 -1
  115. package/fesm2022/eui-ecl-components-ecl-mega-menu.mjs +237 -197
  116. package/fesm2022/eui-ecl-components-ecl-mega-menu.mjs.map +1 -1
  117. package/fesm2022/eui-ecl-components-ecl-menu.mjs +108 -86
  118. package/fesm2022/eui-ecl-components-ecl-menu.mjs.map +1 -1
  119. package/fesm2022/eui-ecl-components-ecl-modal.mjs +0 -1
  120. package/fesm2022/eui-ecl-components-ecl-modal.mjs.map +1 -1
  121. package/fesm2022/eui-ecl-components-ecl-multiselect.mjs +70 -67
  122. package/fesm2022/eui-ecl-components-ecl-multiselect.mjs.map +1 -1
  123. package/fesm2022/eui-ecl-components-ecl-navigation-list.mjs +16 -14
  124. package/fesm2022/eui-ecl-components-ecl-navigation-list.mjs.map +1 -1
  125. package/fesm2022/eui-ecl-components-ecl-news-ticker.mjs +67 -51
  126. package/fesm2022/eui-ecl-components-ecl-news-ticker.mjs.map +1 -1
  127. package/fesm2022/eui-ecl-components-ecl-page-header.mjs +17 -12
  128. package/fesm2022/eui-ecl-components-ecl-page-header.mjs.map +1 -1
  129. package/fesm2022/eui-ecl-components-ecl-pagination.mjs +9 -7
  130. package/fesm2022/eui-ecl-components-ecl-pagination.mjs.map +1 -1
  131. package/fesm2022/eui-ecl-components-ecl-popover.mjs +44 -38
  132. package/fesm2022/eui-ecl-components-ecl-popover.mjs.map +1 -1
  133. package/fesm2022/eui-ecl-components-ecl-radio.mjs +22 -14
  134. package/fesm2022/eui-ecl-components-ecl-radio.mjs.map +1 -1
  135. package/fesm2022/eui-ecl-components-ecl-site-footer.mjs +1 -1
  136. package/fesm2022/eui-ecl-components-ecl-site-footer.mjs.map +1 -1
  137. package/fesm2022/eui-ecl-components-ecl-site-header.mjs +123 -118
  138. package/fesm2022/eui-ecl-components-ecl-site-header.mjs.map +1 -1
  139. package/fesm2022/eui-ecl-components-ecl-slogan-ticker.mjs +2 -2
  140. package/fesm2022/eui-ecl-components-ecl-slogan-ticker.mjs.map +1 -1
  141. package/fesm2022/eui-ecl-components-ecl-social-media-follow.mjs +10 -8
  142. package/fesm2022/eui-ecl-components-ecl-social-media-follow.mjs.map +1 -1
  143. package/fesm2022/eui-ecl-components-ecl-table.mjs +17 -15
  144. package/fesm2022/eui-ecl-components-ecl-table.mjs.map +1 -1
  145. package/fesm2022/eui-ecl-components-ecl-tabs.mjs +101 -81
  146. package/fesm2022/eui-ecl-components-ecl-tabs.mjs.map +1 -1
  147. package/fesm2022/eui-ecl-components-ecl-timeline.mjs +47 -37
  148. package/fesm2022/eui-ecl-components-ecl-timeline.mjs.map +1 -1
  149. package/fesm2022/eui-ecl-components-ecl-tooltip.mjs.map +1 -1
  150. package/fesm2022/eui-ecl-core.mjs +1 -1
  151. package/fesm2022/eui-ecl-core.mjs.map +1 -1
  152. package/package.json +1 -1
  153. package/types/eui-ecl-components-ecl-banner.d.ts +42 -43
  154. package/types/eui-ecl-components-ecl-banner.d.ts.map +1 -1
  155. package/types/eui-ecl-components-ecl-card.d.ts +34 -35
  156. package/types/eui-ecl-components-ecl-card.d.ts.map +1 -1
  157. package/types/eui-ecl-components-ecl-carousel.d.ts +10 -11
  158. package/types/eui-ecl-components-ecl-carousel.d.ts.map +1 -1
  159. package/types/eui-ecl-components-ecl-category-filter.d.ts +6 -6
  160. package/types/eui-ecl-components-ecl-category-filter.d.ts.map +1 -1
  161. package/types/eui-ecl-components-ecl-checkbox.d.ts +47 -49
  162. package/types/eui-ecl-components-ecl-checkbox.d.ts.map +1 -1
  163. package/types/eui-ecl-components-ecl-content-item.d.ts +16 -18
  164. package/types/eui-ecl-components-ecl-content-item.d.ts.map +1 -1
  165. package/types/eui-ecl-components-ecl-fact-figures.d.ts +3 -3
  166. package/types/eui-ecl-components-ecl-fact-figures.d.ts.map +1 -1
  167. package/types/eui-ecl-components-ecl-featured.d.ts +2 -2
  168. package/types/eui-ecl-components-ecl-featured.d.ts.map +1 -1
  169. package/types/eui-ecl-components-ecl-file.d.ts +42 -43
  170. package/types/eui-ecl-components-ecl-file.d.ts.map +1 -1
  171. package/types/eui-ecl-components-ecl-form-group.d.ts +1 -3
  172. package/types/eui-ecl-components-ecl-form-group.d.ts.map +1 -1
  173. package/types/eui-ecl-components-ecl-gallery.d.ts +12 -12
  174. package/types/eui-ecl-components-ecl-gallery.d.ts.map +1 -1
  175. package/types/eui-ecl-components-ecl-icon.d.ts +1 -1
  176. package/types/eui-ecl-components-ecl-icon.d.ts.map +1 -1
  177. package/types/eui-ecl-components-ecl-inpage-navigation.d.ts +8 -8
  178. package/types/eui-ecl-components-ecl-inpage-navigation.d.ts.map +1 -1
  179. package/types/eui-ecl-components-ecl-list-illustration.d.ts +44 -44
  180. package/types/eui-ecl-components-ecl-list-illustration.d.ts.map +1 -1
  181. package/types/eui-ecl-components-ecl-list.d.ts +2 -2
  182. package/types/eui-ecl-components-ecl-list.d.ts.map +1 -1
  183. package/types/eui-ecl-components-ecl-media-container.d.ts +33 -33
  184. package/types/eui-ecl-components-ecl-media-container.d.ts.map +1 -1
  185. package/types/eui-ecl-components-ecl-mega-menu.d.ts +185 -191
  186. package/types/eui-ecl-components-ecl-mega-menu.d.ts.map +1 -1
  187. package/types/eui-ecl-components-ecl-menu.d.ts +126 -128
  188. package/types/eui-ecl-components-ecl-menu.d.ts.map +1 -1
  189. package/types/eui-ecl-components-ecl-modal.d.ts.map +1 -1
  190. package/types/eui-ecl-components-ecl-multiselect.d.ts +10 -10
  191. package/types/eui-ecl-components-ecl-multiselect.d.ts.map +1 -1
  192. package/types/eui-ecl-components-ecl-navigation-list.d.ts +3 -4
  193. package/types/eui-ecl-components-ecl-navigation-list.d.ts.map +1 -1
  194. package/types/eui-ecl-components-ecl-news-ticker.d.ts +18 -18
  195. package/types/eui-ecl-components-ecl-news-ticker.d.ts.map +1 -1
  196. package/types/eui-ecl-components-ecl-page-header.d.ts +3 -3
  197. package/types/eui-ecl-components-ecl-page-header.d.ts.map +1 -1
  198. package/types/eui-ecl-components-ecl-pagination.d.ts +1 -1
  199. package/types/eui-ecl-components-ecl-pagination.d.ts.map +1 -1
  200. package/types/eui-ecl-components-ecl-popover.d.ts +3 -3
  201. package/types/eui-ecl-components-ecl-popover.d.ts.map +1 -1
  202. package/types/eui-ecl-components-ecl-radio.d.ts +28 -28
  203. package/types/eui-ecl-components-ecl-radio.d.ts.map +1 -1
  204. package/types/eui-ecl-components-ecl-site-header.d.ts +48 -48
  205. package/types/eui-ecl-components-ecl-site-header.d.ts.map +1 -1
  206. package/types/eui-ecl-components-ecl-social-media-follow.d.ts +1 -1
  207. package/types/eui-ecl-components-ecl-social-media-follow.d.ts.map +1 -1
  208. package/types/eui-ecl-components-ecl-table.d.ts +3 -3
  209. package/types/eui-ecl-components-ecl-table.d.ts.map +1 -1
  210. package/types/eui-ecl-components-ecl-tabs.d.ts +12 -12
  211. package/types/eui-ecl-components-ecl-tabs.d.ts.map +1 -1
  212. package/types/eui-ecl-components-ecl-timeline.d.ts +27 -28
  213. package/types/eui-ecl-components-ecl-timeline.d.ts.map +1 -1
  214. package/types/eui-ecl-core.d.ts +11 -11
  215. package/types/eui-ecl-core.d.ts.map +1 -1
@@ -1,13 +1,14 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, ElementRef, Component, input, model, booleanAttribute, signal, EventEmitter, computed, effect, HostBinding, ContentChild, ViewChild, Output, output, IterableDiffers, ChangeDetectorRef, PLATFORM_ID, afterNextRender, HostListener, ContentChildren, forwardRef, ViewEncapsulation } from '@angular/core';
2
+ import { inject, ElementRef, Component, input, model, booleanAttribute, signal, EventEmitter, viewChild, contentChild, computed, effect, HostBinding, Output, output, contentChildren, forwardRef, IterableDiffers, ChangeDetectorRef, PLATFORM_ID, afterNextRender, HostListener, ViewEncapsulation } from '@angular/core';
3
3
  import { ECLBaseDirective, EclBaseEvent, EclRtlService, KeyCode } from '@eui/ecl/core';
4
4
  import * as i1 from '@eui/ecl/components/ecl-link';
5
5
  import { EclLinkDirective, EUI_ECL_LINK } from '@eui/ecl/components/ecl-link';
6
6
  import { BreakpointObserver } from '@angular/cdk/layout';
7
7
  import { isPlatformBrowser, NgTemplateOutlet } from '@angular/common';
8
+ import { toObservable } from '@angular/core/rxjs-interop';
8
9
  import { TranslatePipe } from '@ngx-translate/core';
9
- import { Subject, of } from 'rxjs';
10
- import { takeUntil, mergeWith } from 'rxjs/operators';
10
+ import { Subject } from 'rxjs';
11
+ import { takeUntil } from 'rxjs/operators';
11
12
  import * as i1$1 from '@eui/ecl/components/ecl-button';
12
13
  import { EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';
13
14
  import * as i2 from '@eui/ecl/components/ecl-icon';
@@ -81,6 +82,22 @@ class EclTabComponent extends ECLBaseDirective {
81
82
  * Emits when a keydown event occurs on the tab.
82
83
  */
83
84
  this.keydownTab = new EventEmitter();
85
+ /**
86
+ * Reference to the tab content template.
87
+ */
88
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
89
+ this.contentTemplate = viewChild('content', /* @ts-ignore */
90
+ ...(ngDevMode ? [{ debugName: "contentTemplate" }] : /* istanbul ignore next */ []));
91
+ /**
92
+ * Reference to the internal link directive used in the tab.
93
+ */
94
+ this.link = viewChild(EclLinkDirective, /* @ts-ignore */
95
+ ...(ngDevMode ? [{ debugName: "link" }] : /* istanbul ignore next */ []));
96
+ /**
97
+ * Reference to the projected tab label component.
98
+ */
99
+ this.label = contentChild(EclTabLabelComponent, /* @ts-ignore */
100
+ ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
84
101
  /**
85
102
  * Contains the inner HTML of the tab label.
86
103
  */
@@ -127,7 +144,7 @@ class EclTabComponent extends ECLBaseDirective {
127
144
  return false;
128
145
  }
129
146
  ngAfterViewInit() {
130
- this.tabLabel = this.label.el.nativeElement.innerHTML;
147
+ this.tabLabel = this.label().el.nativeElement.innerHTML;
131
148
  // this._isActive.set(this.isActive());
132
149
  }
133
150
  /**
@@ -140,7 +157,7 @@ class EclTabComponent extends ECLBaseDirective {
140
157
  * Returns the inner HTML content of the tab label.
141
158
  */
142
159
  getTabLabel() {
143
- return this.label.el.nativeElement.innerHTML;
160
+ return this.label().el.nativeElement.innerHTML;
144
161
  }
145
162
  /**
146
163
  * Returns the width of the tab element in pixels.
@@ -169,16 +186,16 @@ class EclTabComponent extends ECLBaseDirective {
169
186
  * Calls the focus method on the inner link directive.
170
187
  */
171
188
  onFocus() {
172
- this.link.onFocus();
189
+ this.link().onFocus();
173
190
  }
174
191
  /**
175
192
  * Calls the blur method on the inner link directive.
176
193
  */
177
194
  onBlur() {
178
- this.link.onBlur();
195
+ this.link().onBlur();
179
196
  }
180
197
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclTabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
181
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.5", type: EclTabComponent, isStandalone: true, selector: "div[eclTab]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, anchorExtraClasses: { classPropertyName: "anchorExtraClasses", publicName: "anchorExtraClasses", isSignal: true, isRequired: false, transformFunction: null }, isHidden: { classPropertyName: "isHidden", publicName: "isHidden", isSignal: true, isRequired: false, transformFunction: null }, isActive: { classPropertyName: "isActive", publicName: "isActive", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isHidden: "isHiddenChange", selectTab: "selectTab", keydownTab: "keydownTab" }, host: { properties: { "attr.id": "id()", "class.ecl-tabs__item--hidden": "isHidden()", "class": "this.cssClasses" } }, queries: [{ propertyName: "label", first: true, predicate: EclTabLabelComponent, descendants: true }], viewQueries: [{ propertyName: "contentTemplate", first: true, predicate: ["content"], descendants: true }, { propertyName: "link", first: true, predicate: EclLinkDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: "<a\n eclLink\n role=\"tab\"\n class=\"ecl-tabs__link eui-ecl-u-cursor-pointer {{anchorExtraClasses()}}\"\n [class.ecl-tabs__link--active]=\"_isActive()\"\n [attr.aria-selected]=\"_isActive()\"\n [tabindex]=\"hrefTabindex()\"\n (keydown)=\"onKeydown($event)\"\n (click)=\"onTabClick()\"\n [id]=\"linkId()\"\n [attr.aria-controls]=\"ariaControls()\">\n <ng-content select=\"ecl-tab-label\"></ng-content>\n</a>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.EclLinkDirective, selector: "[eclLink]", inputs: ["extraAttributes", "isInverted", "isIconOnly", "isHighlight", "isNoVisited", "isBranded", "variant"] }] }); }
198
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.5", type: EclTabComponent, isStandalone: true, selector: "div[eclTab]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, anchorExtraClasses: { classPropertyName: "anchorExtraClasses", publicName: "anchorExtraClasses", isSignal: true, isRequired: false, transformFunction: null }, isHidden: { classPropertyName: "isHidden", publicName: "isHidden", isSignal: true, isRequired: false, transformFunction: null }, isActive: { classPropertyName: "isActive", publicName: "isActive", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isHidden: "isHiddenChange", selectTab: "selectTab", keydownTab: "keydownTab" }, host: { properties: { "attr.id": "id()", "class.ecl-tabs__item--hidden": "isHidden()", "class": "this.cssClasses" } }, queries: [{ propertyName: "label", first: true, predicate: EclTabLabelComponent, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "contentTemplate", first: true, predicate: ["content"], descendants: true, isSignal: true }, { propertyName: "link", first: true, predicate: EclLinkDirective, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<a\n eclLink\n role=\"tab\"\n class=\"ecl-tabs__link eui-ecl-u-cursor-pointer {{anchorExtraClasses()}}\"\n [class.ecl-tabs__link--active]=\"_isActive()\"\n [attr.aria-selected]=\"_isActive()\"\n [tabindex]=\"hrefTabindex()\"\n (keydown)=\"onKeydown($event)\"\n (click)=\"onTabClick()\"\n [id]=\"linkId()\"\n [attr.aria-controls]=\"ariaControls()\">\n <ng-content select=\"ecl-tab-label\"></ng-content>\n</a>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.EclLinkDirective, selector: "[eclLink]", inputs: ["extraAttributes", "isInverted", "isIconOnly", "isHighlight", "isNoVisited", "isBranded", "variant"] }] }); }
182
199
  }
183
200
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclTabComponent, decorators: [{
184
201
  type: Component,
@@ -190,16 +207,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
190
207
  type: Output
191
208
  }], keydownTab: [{
192
209
  type: Output
193
- }], contentTemplate: [{
194
- type: ViewChild,
195
- args: ['content']
196
- }], link: [{
197
- type: ViewChild,
198
- args: [EclLinkDirective]
199
- }], label: [{
200
- type: ContentChild,
201
- args: [EclTabLabelComponent]
202
- }], cssClasses: [{
210
+ }], contentTemplate: [{ type: i0.ViewChild, args: ['content', { isSignal: true }] }], link: [{ type: i0.ViewChild, args: [i0.forwardRef(() => EclLinkDirective), { isSignal: true }] }], label: [{ type: i0.ContentChild, args: [i0.forwardRef(() => EclTabLabelComponent), { isSignal: true }] }], cssClasses: [{
203
211
  type: HostBinding,
204
212
  args: ['class']
205
213
  }] } });
@@ -232,6 +240,41 @@ class EclTabsComponent extends ECLBaseDirective {
232
240
  * Emits an event when a tab is selected.
233
241
  */
234
242
  this.tabSelect = output();
243
+ /**
244
+ * All projected tabs inside the component.
245
+ */
246
+ this.tabs = contentChildren(forwardRef(() => EclTabComponent), /* @ts-ignore */
247
+ ...(ngDevMode ? [{ debugName: "tabs" }] : /* istanbul ignore next */ []));
248
+ /**
249
+ * Reference to the visible tab list container.
250
+ */
251
+ this.tabsList = viewChild('tabsList', /* @ts-ignore */
252
+ ...(ngDevMode ? [{ debugName: "tabsList" }] : /* istanbul ignore next */ []));
253
+ /**
254
+ * Reference to the "more" button.
255
+ */
256
+ this.moreButton = viewChild('moreButton', /* @ts-ignore */
257
+ ...(ngDevMode ? [{ debugName: "moreButton" }] : /* istanbul ignore next */ []));
258
+ /**
259
+ * Reference to the scroll previous button.
260
+ */
261
+ this.btnPrev = viewChild('btnPrev', /* @ts-ignore */
262
+ ...(ngDevMode ? [{ debugName: "btnPrev" }] : /* istanbul ignore next */ []));
263
+ /**
264
+ * Reference to the scroll next button.
265
+ */
266
+ this.btnNext = viewChild('btnNext', /* @ts-ignore */
267
+ ...(ngDevMode ? [{ debugName: "btnNext" }] : /* istanbul ignore next */ []));
268
+ /**
269
+ * Reference to the dropdown list containing overflowed tabs.
270
+ */
271
+ this.dropdownList = viewChild('dropdownList', /* @ts-ignore */
272
+ ...(ngDevMode ? [{ debugName: "dropdownList" }] : /* istanbul ignore next */ []));
273
+ /**
274
+ * Reference to the "more" item container in the tab list.
275
+ */
276
+ this.moreItem = viewChild('moreItem', /* @ts-ignore */
277
+ ...(ngDevMode ? [{ debugName: "moreItem" }] : /* istanbul ignore next */ []));
235
278
  /**
236
279
  * Tabs displayed in the visible list.
237
280
  */
@@ -270,6 +313,7 @@ class EclTabsComponent extends ECLBaseDirective {
270
313
  this.eclRtlService = inject(EclRtlService);
271
314
  this.platformId = inject(PLATFORM_ID);
272
315
  this.destroy$ = new Subject();
316
+ this.tabsChanges$ = toObservable(this.tabs);
273
317
  this.isRtl = false;
274
318
  this.TIMEOUT_INTERVAL = 0;
275
319
  if (this.isUsingOldSelector) {
@@ -293,7 +337,7 @@ class EclTabsComponent extends ECLBaseDirective {
293
337
  this.destroy$.unsubscribe();
294
338
  }
295
339
  onClick(target) {
296
- if (!this.moreButton.el.nativeElement.contains(target) && !this.dropdownList.nativeElement.contains(target)) {
340
+ if (!this.moreButton().el.nativeElement.contains(target) && !this.dropdownList().nativeElement.contains(target)) {
297
341
  this.closeDropdown();
298
342
  }
299
343
  }
@@ -352,7 +396,7 @@ class EclTabsComponent extends ECLBaseDirective {
352
396
  * Returns the number of tabs hidden in dropdown.
353
397
  */
354
398
  getHiddenTabsCount() {
355
- return this.tabs.filter((item) => item.isHidden()).length;
399
+ return this.tabs().filter((item) => item.isHidden()).length;
356
400
  }
357
401
  /**
358
402
  * Returns the label of the tab at the specified index.
@@ -374,7 +418,7 @@ class EclTabsComponent extends ECLBaseDirective {
374
418
  * @param tab Tab to activate.
375
419
  */
376
420
  onTabSelect(tab) {
377
- this.deactivateAllTabs(this.tabs.toArray(), this.listTabs);
421
+ this.deactivateAllTabs(Array.from(this.tabs()), this.listTabs);
378
422
  this.activateTab(tab);
379
423
  this.sendTabSelectEvent(tab);
380
424
  }
@@ -476,7 +520,7 @@ class EclTabsComponent extends ECLBaseDirective {
476
520
  if (index < 0)
477
521
  return;
478
522
  this.openDropdown();
479
- this.moreButton.el.nativeElement.blur();
523
+ this.moreButton().el.nativeElement.blur();
480
524
  this.focusOnDropdownTab(index);
481
525
  }
482
526
  onTabTab() {
@@ -490,10 +534,10 @@ class EclTabsComponent extends ECLBaseDirective {
490
534
  this.index = this.getShifIndex(dir, this.index);
491
535
  this.isScrollPrevBtnShow.set(this.index >= 1);
492
536
  this.isScrollNextBtnShow.set(this.index < this.getTabsCount() - 1);
493
- const leftMargin = this.index === 0 ? 0 : this.btnPrev.el.nativeElement.getBoundingClientRect().width + 13;
537
+ const leftMargin = this.index === 0 ? 0 : this.btnPrev().el.nativeElement.getBoundingClientRect().width + 13;
494
538
  let newOffset = 0;
495
539
  if (this.isRtl) {
496
- newOffset = Math.ceil(this.tabsList.nativeElement.offsetWidth -
540
+ newOffset = Math.ceil(this.tabsList().nativeElement.offsetWidth -
497
541
  this.getTabsAsArray()[this.index].hostElement.offsetLeft -
498
542
  this.getTabsAsArray()[this.index].hostElement.offsetWidth -
499
543
  leftMargin);
@@ -533,7 +577,7 @@ class EclTabsComponent extends ECLBaseDirective {
533
577
  }
534
578
  createSecondListForDropdown() {
535
579
  this.listTabs = [];
536
- this.tabs.forEach((tab) => {
580
+ this.tabs().forEach((tab) => {
537
581
  const newTab = Object.assign({}, tab);
538
582
  newTab.isHidden.set(true);
539
583
  newTab._isActive.set(tab.isActive());
@@ -541,10 +585,10 @@ class EclTabsComponent extends ECLBaseDirective {
541
585
  });
542
586
  }
543
587
  getTabsAsArray() {
544
- return this.tabs.toArray();
588
+ return Array.from(this.tabs());
545
589
  }
546
590
  getTabsCount() {
547
- return this.tabs.toArray().length;
591
+ return this.tabs().length;
548
592
  }
549
593
  closeDropdown() {
550
594
  this.isDropdownExpanded.set(false);
@@ -553,15 +597,12 @@ class EclTabsComponent extends ECLBaseDirective {
553
597
  this.isDropdownExpanded.set(true);
554
598
  }
555
599
  observeTabsChanges() {
556
- this.createTabsChangesObservable(this.tabs).pipe(takeUntil(this.destroy$)).subscribe(this.onTabsChanges.bind(this));
557
- }
558
- createTabsChangesObservable(tabs) {
559
- return of(tabs).pipe(mergeWith(tabs.changes), takeUntil(this.destroy$));
600
+ this.tabsChanges$.pipe(takeUntil(this.destroy$)).subscribe(this.onTabsChanges.bind(this));
560
601
  }
561
602
  onTabsChanges() {
562
- this.diff = this.differ.diff(this.tabs);
603
+ this.diff = this.differ.diff(this.tabs());
563
604
  if (!this.diff) {
564
- this.tabs.forEach((tab) => {
605
+ this.tabs().forEach((tab) => {
565
606
  this.connectTabEvents(tab);
566
607
  });
567
608
  }
@@ -616,7 +657,7 @@ class EclTabsComponent extends ECLBaseDirective {
616
657
  }
617
658
  }
618
659
  focusOnDropdownTab(index) {
619
- this.dropdownList.nativeElement.children[index].firstChild.focus();
660
+ this.dropdownList().nativeElement.children[index].firstChild.focus();
620
661
  }
621
662
  getLastTabFromArray() {
622
663
  return this.getTabsAsArray()[this.getTabsAsArray().length - 1];
@@ -662,33 +703,33 @@ class EclTabsComponent extends ECLBaseDirective {
662
703
  this.isScrollNextBtnShow.set(false);
663
704
  this.isScrollPrevBtnShow.set(false);
664
705
  // Reset list width to auto for measurement (direct DOM, same as ECL)
665
- this.tabsList.nativeElement.style.width = 'auto';
706
+ this.tabsList().nativeElement.style.width = 'auto';
666
707
  // Temporarily show the more button to get its actual width
667
- this.moreItem.nativeElement.classList.remove('ecl-tabs__item--hidden');
668
- this.moreButton.el.nativeElement.classList.remove('ecl-tabs__toggle--hidden');
669
- const moreButtonWidth = this.moreButton.el.nativeElement.getBoundingClientRect().width;
670
- this.moreItem.nativeElement.classList.add('ecl-tabs__item--hidden');
671
- this.moreButton.el.nativeElement.classList.add('ecl-tabs__toggle--hidden');
708
+ this.moreItem().nativeElement.classList.remove('ecl-tabs__item--hidden');
709
+ this.moreButton().el.nativeElement.classList.remove('ecl-tabs__toggle--hidden');
710
+ const moreButtonWidth = this.moreButton().el.nativeElement.getBoundingClientRect().width;
711
+ this.moreItem().nativeElement.classList.add('ecl-tabs__item--hidden');
712
+ this.moreButton().el.nativeElement.classList.add('ecl-tabs__toggle--hidden');
672
713
  const hiddenItems = [];
673
714
  const listWidth = this.getTabsListWidth();
674
715
  // Measure all items first to check if they fit without the button
675
- this.tabs.forEach((item) => {
716
+ this.tabs().forEach((item) => {
676
717
  item.isHidden.set(false);
677
718
  item.hostElement.classList.remove('ecl-tabs__item--hidden');
678
719
  });
679
- const itemWidths = this.tabs.toArray().map((item) => {
720
+ const itemWidths = this.tabs().map((item) => {
680
721
  const itemMargin = parseFloat(getComputedStyle(item.hostElement).marginInlineEnd) || 0;
681
722
  return item.hostElement.getBoundingClientRect().width + itemMargin;
682
723
  });
683
724
  const totalWidth = itemWidths.reduce((sum, w) => sum + w, 0);
684
725
  if (totalWidth > listWidth) {
685
726
  // Reserve space for the more button and hide items that don't fit
686
- this.tabs.forEach((item) => {
727
+ this.tabs().forEach((item) => {
687
728
  item.isHidden.set(true);
688
729
  item.hostElement.classList.add('ecl-tabs__item--hidden');
689
730
  });
690
731
  let stopWidth = moreButtonWidth;
691
- this.tabs.forEach((item, i) => {
732
+ this.tabs().forEach((item, i) => {
692
733
  item.isHidden.set(false);
693
734
  item.hostElement.classList.remove('ecl-tabs__item--hidden');
694
735
  if (listWidth >= stopWidth + itemWidths[i] && !hiddenItems.includes(i - 1)) {
@@ -706,14 +747,14 @@ class EclTabsComponent extends ECLBaseDirective {
706
747
  }
707
748
  // Toggle the visibility of More button and items in dropdown
708
749
  if (!hiddenItems.length) {
709
- this.moreItem.nativeElement.classList.add('ecl-tabs__item--hidden');
710
- this.moreButton.el.nativeElement.classList.add('ecl-tabs__toggle--hidden');
750
+ this.moreItem().nativeElement.classList.add('ecl-tabs__item--hidden');
751
+ this.moreButton().el.nativeElement.classList.add('ecl-tabs__toggle--hidden');
711
752
  this.setActiveItemForMainTabs();
712
753
  this.hideAllDropdownTabs();
713
754
  }
714
755
  else {
715
- this.moreItem.nativeElement.classList.remove('ecl-tabs__item--hidden');
716
- this.moreButton.el.nativeElement.classList.remove('ecl-tabs__toggle--hidden');
756
+ this.moreItem().nativeElement.classList.remove('ecl-tabs__item--hidden');
757
+ this.moreButton().el.nativeElement.classList.remove('ecl-tabs__toggle--hidden');
717
758
  this.setHiddenItemsForDropdownTabs(hiddenItems);
718
759
  }
719
760
  this.cd.markForCheck();
@@ -724,13 +765,13 @@ class EclTabsComponent extends ECLBaseDirective {
724
765
  setActiveItemForMainTabs() {
725
766
  this.listTabs.forEach((item, index) => {
726
767
  if (item._isActive()) {
727
- setTimeout(() => this.tabs.toArray()[index]._isActive.set(true));
768
+ setTimeout(() => this.tabs()[index]._isActive.set(true));
728
769
  }
729
770
  });
730
771
  this.cd.markForCheck();
731
772
  }
732
773
  getTabsListWidth() {
733
- return this.tabsList.nativeElement.getBoundingClientRect().width;
774
+ return this.tabsList().nativeElement.getBoundingClientRect().width;
734
775
  }
735
776
  setHiddenItemsForDropdownTabs(hiddenItems) {
736
777
  this.listTabs.forEach((item, index) => {
@@ -747,19 +788,19 @@ class EclTabsComponent extends ECLBaseDirective {
747
788
  this.isScrollNextBtnShow.set(true);
748
789
  this.setAllTabsVisible();
749
790
  // Hide the more item and button (direct DOM, same as ECL)
750
- this.moreItem.nativeElement.classList.add('ecl-tabs__item--hidden');
751
- this.moreButton.el.nativeElement.classList.add('ecl-tabs__toggle--hidden');
791
+ this.moreItem().nativeElement.classList.add('ecl-tabs__item--hidden');
792
+ this.moreButton().el.nativeElement.classList.add('ecl-tabs__toggle--hidden');
752
793
  // Reset to auto so scrollWidth reflects the natural content width
753
- this.tabsList.nativeElement.style.width = 'auto';
794
+ this.tabsList().nativeElement.style.width = 'auto';
754
795
  // Remove hidden class directly from DOM elements
755
- this.tabs.forEach((item) => {
796
+ this.tabs().forEach((item) => {
756
797
  item.hostElement.classList.remove('ecl-tabs__item--hidden');
757
798
  });
758
799
  // Use scrollWidth to also include item margins
759
- this.tabsList.nativeElement.style.width = `${this.tabsList.nativeElement.scrollWidth}px`;
800
+ this.tabsList().nativeElement.style.width = `${this.tabsList().nativeElement.scrollWidth}px`;
760
801
  }
761
802
  setAllTabsVisible() {
762
- this.tabs.forEach((item) => {
803
+ this.tabs().forEach((item) => {
763
804
  item.isHidden.set(false);
764
805
  });
765
806
  }
@@ -787,42 +828,21 @@ class EclTabsComponent extends ECLBaseDirective {
787
828
  setTimeout(() => {
788
829
  this.handleResize();
789
830
  }, this.TIMEOUT_INTERVAL);
790
- }).observe(this.tabsList.nativeElement);
831
+ }).observe(this.tabsList().nativeElement);
791
832
  }
792
833
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
793
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: EclTabsComponent, isStandalone: true, selector: "div[eclTabs]", inputs: { bodyClass: { classPropertyName: "bodyClass", publicName: "bodyClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { tabSelect: "tabSelect" }, host: { listeners: { "document:click": "onClick($event.target)" }, properties: { "class.ecl-tabs": "this.hasClass", "attr.data-ecl-auto-initialized": "this.autoInitialized" } }, queries: [{ propertyName: "tabs", predicate: i0.forwardRef(() => EclTabComponent) }], viewQueries: [{ propertyName: "tabsList", first: true, predicate: ["tabsList"], descendants: true }, { propertyName: "moreButton", first: true, predicate: ["moreButton"], descendants: true }, { propertyName: "btnPrev", first: true, predicate: ["btnPrev"], descendants: true }, { propertyName: "btnNext", first: true, predicate: ["btnNext"], descendants: true }, { propertyName: "dropdownList", first: true, predicate: ["dropdownList"], descendants: true }, { propertyName: "moreItem", first: true, predicate: ["moreItem"], descendants: true }], usesInheritance: true, ngImport: i0, template: "@if (isUsingOldSelector) {\n<div class=\"ecl-tabs\">\n <ng-container *ngTemplateOutlet=\"eclTabsTemplate\"></ng-container>\n</div>\n} @else {\n<ng-container *ngTemplateOutlet=\"eclTabsTemplate\"></ng-container>\n}\n\n<ng-template #eclTabsTemplate>\n <div class=\"ecl-tabs__container\" [class.ecl-tabs__container--right]=\"isScrollNextBtnShow()\"\n [class.ecl-tabs__container--left]=\"isScrollPrevBtnShow()\">\n <div class=\"ecl-tabs__list\" role=\"tablist\" #tabsList\n [style.transform]=\"styleTransform\" [style.transition-duration]=\"getTransitionDuration()\">\n <ng-content select=\"ecl-tab, [eclTab]\"></ng-content>\n <div class=\"ecl-tabs__item ecl-tabs__item--more\" #moreItem>\n @if (listTabs.length > 0) {\n <div class=\"ecl-tabs__dropdown\" [class.ecl-tabs__dropdown--show]=\"isDropdownExpanded()\">\n <div class=\"ecl-tabs__dropdown-list\" #dropdownList>\n @for (tab of listTabs; track tab.id; let i = $index) {\n <div eclTab [isActive]=\"tab._isActive()\" [isHidden]=\"tab.isHidden()\" (click)=\"onTabSelect(tab)\"\n (keydown)=\"onTabKeydown($event, tab)\">\n <ecl-tab-label>{{ getTabLabel(i) }}</ecl-tab-label>\n </div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n <button #moreButton eclButton class=\"ecl-tabs__toggle\" variant=\"tertiary\" [tabindex]=\"customTabIndex\"\n [attr.aria-expanded]=\"isDropdownExpanded()\" [class.ecl-tabs__toggle--active]=\"isMoreButtonActive\"\n (click)=\"onDropdownToggle()\" (focus)=\"onMoreButtonFocus()\">\n <span eclButtonLabel>\n {{ 'ecl.common.MORE' | translate }}\n ({{ getHiddenTabsCount() }})\n </span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-180\" size=\"fluid\"></ecl-icon>\n </button>\n </div>\n\n <div class=\"ecl-tabs__controls\">\n <button #btnPrev eclButton variant=\"tertiary\" isIconOnly class=\"ecl-tabs__prev\"\n [style.display]=\"isScrollPrevBtnShow() ? 'flex' : 'none'\" (click)=\"onScrollPrev()\">\n <span eclButtonLabel>{{ 'ecl.common.PREVIOUS' | translate }}</span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-270\" size=\"s\" class=\"\"> </ecl-icon>\n </button>\n <button #btnNext eclButton variant=\"tertiary\" isIconOnly class=\"ecl-tabs__next\"\n [style.display]=\"isScrollNextBtnShow() ? 'flex' : 'none'\" (click)=\"onScrollNext()\">\n <span eclButtonLabel>{{ 'ecl.common.NEXT' | translate }}</span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-90\" size=\"s\" class=\"\"> </ecl-icon>\n </button>\n </div>\n</ng-template>\n\n@for (tab of tabs.toArray(); track tab.tabLabel) {\n@if (tab._isActive()) {\n<div id=\"{{tab.finalId()}}-tabpanel\" role=\"tabpanel\" aria-labelledby=\"{{tab.finalId()}}-link\" class=\"{{ bodyClass() }}\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplate\"></ng-container>\n</div>\n}\n}\n@for (tab of listTabs; track tab.tabLabel) {\n@if (tab._isActive()) {\n<div id=\"{{tab.finalId()}}-tabpanel\" role=\"tabpanel\" aria-labelledby=\"{{tab.finalId()}}-link\" class=\"{{ bodyClass() }}\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplate\"></ng-container>\n</div>\n}\n}", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1$1.EclButtonComponent, selector: "button[eclButton], button[ecl-button], a[eclButton]", inputs: ["isIconOnly", "variant", "eclStyle", "size", "containerStyleClass"] }, { kind: "directive", type: i1$1.EclButtonLabelDirective, selector: "[eclButtonLabel]" }, { kind: "component", type: i2.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "title", "ariaHidden", "focusable", "isFlipHorizontal"] }, { kind: "component", type: EclTabComponent, selector: "div[eclTab]", inputs: ["id", "anchorExtraClasses", "isHidden", "isActive"], outputs: ["isHiddenChange", "selectTab", "keydownTab"] }, { kind: "component", type: EclTabLabelComponent, selector: "ecl-tab-label" }, { kind: "pipe", type: TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
834
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: EclTabsComponent, isStandalone: true, selector: "div[eclTabs]", inputs: { bodyClass: { classPropertyName: "bodyClass", publicName: "bodyClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { tabSelect: "tabSelect" }, host: { listeners: { "document:click": "onClick($event.target)" }, properties: { "class.ecl-tabs": "this.hasClass", "attr.data-ecl-auto-initialized": "this.autoInitialized" } }, queries: [{ propertyName: "tabs", predicate: i0.forwardRef(() => EclTabComponent), isSignal: true }], viewQueries: [{ propertyName: "tabsList", first: true, predicate: ["tabsList"], descendants: true, isSignal: true }, { propertyName: "moreButton", first: true, predicate: ["moreButton"], descendants: true, isSignal: true }, { propertyName: "btnPrev", first: true, predicate: ["btnPrev"], descendants: true, isSignal: true }, { propertyName: "btnNext", first: true, predicate: ["btnNext"], descendants: true, isSignal: true }, { propertyName: "dropdownList", first: true, predicate: ["dropdownList"], descendants: true, isSignal: true }, { propertyName: "moreItem", first: true, predicate: ["moreItem"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@if (isUsingOldSelector) {\n<div class=\"ecl-tabs\">\n <ng-container *ngTemplateOutlet=\"eclTabsTemplate\"></ng-container>\n</div>\n} @else {\n<ng-container *ngTemplateOutlet=\"eclTabsTemplate\"></ng-container>\n}\n\n<ng-template #eclTabsTemplate>\n <div class=\"ecl-tabs__container\" [class.ecl-tabs__container--right]=\"isScrollNextBtnShow()\"\n [class.ecl-tabs__container--left]=\"isScrollPrevBtnShow()\">\n <div class=\"ecl-tabs__list\" role=\"tablist\" #tabsList\n [style.transform]=\"styleTransform\" [style.transition-duration]=\"getTransitionDuration()\">\n <ng-content select=\"ecl-tab, [eclTab]\"></ng-content>\n <div class=\"ecl-tabs__item ecl-tabs__item--more\" #moreItem>\n @if (listTabs.length > 0) {\n <div class=\"ecl-tabs__dropdown\" [class.ecl-tabs__dropdown--show]=\"isDropdownExpanded()\">\n <div class=\"ecl-tabs__dropdown-list\" #dropdownList>\n @for (tab of listTabs; track tab.id; let i = $index) {\n <div eclTab [isActive]=\"tab._isActive()\" [isHidden]=\"tab.isHidden()\" (click)=\"onTabSelect(tab)\"\n (keydown)=\"onTabKeydown($event, tab)\">\n <ecl-tab-label>{{ getTabLabel(i) }}</ecl-tab-label>\n </div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n <button #moreButton eclButton class=\"ecl-tabs__toggle\" variant=\"tertiary\" [tabindex]=\"customTabIndex\"\n [attr.aria-expanded]=\"isDropdownExpanded()\" [class.ecl-tabs__toggle--active]=\"isMoreButtonActive\"\n (click)=\"onDropdownToggle()\" (focus)=\"onMoreButtonFocus()\">\n <span eclButtonLabel>\n {{ 'ecl.common.MORE' | translate }}\n ({{ getHiddenTabsCount() }})\n </span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-180\" size=\"fluid\"></ecl-icon>\n </button>\n </div>\n\n <div class=\"ecl-tabs__controls\">\n <button #btnPrev eclButton variant=\"tertiary\" isIconOnly class=\"ecl-tabs__prev\"\n [style.display]=\"isScrollPrevBtnShow() ? 'flex' : 'none'\" (click)=\"onScrollPrev()\">\n <span eclButtonLabel>{{ 'ecl.common.PREVIOUS' | translate }}</span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-270\" size=\"s\" class=\"\"> </ecl-icon>\n </button>\n <button #btnNext eclButton variant=\"tertiary\" isIconOnly class=\"ecl-tabs__next\"\n [style.display]=\"isScrollNextBtnShow() ? 'flex' : 'none'\" (click)=\"onScrollNext()\">\n <span eclButtonLabel>{{ 'ecl.common.NEXT' | translate }}</span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-90\" size=\"s\" class=\"\"> </ecl-icon>\n </button>\n </div>\n</ng-template>\n\n@for (tab of tabs(); track tab.tabLabel) {\n@if (tab._isActive()) {\n<div id=\"{{tab.finalId()}}-tabpanel\" role=\"tabpanel\" aria-labelledby=\"{{tab.finalId()}}-link\" class=\"{{ bodyClass() }}\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplate()\"></ng-container>\n</div>\n}\n}\n@for (tab of listTabs; track tab.tabLabel) {\n@if (tab._isActive()) {\n<div id=\"{{tab.finalId()}}-tabpanel\" role=\"tabpanel\" aria-labelledby=\"{{tab.finalId()}}-link\" class=\"{{ bodyClass() }}\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplate()\"></ng-container>\n</div>\n}\n}", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1$1.EclButtonComponent, selector: "button[eclButton], button[ecl-button], a[eclButton]", inputs: ["isIconOnly", "variant", "eclStyle", "size", "containerStyleClass"] }, { kind: "directive", type: i1$1.EclButtonLabelDirective, selector: "[eclButtonLabel]" }, { kind: "component", type: i2.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "title", "ariaHidden", "focusable", "isFlipHorizontal"] }, { kind: "component", type: EclTabComponent, selector: "div[eclTab]", inputs: ["id", "anchorExtraClasses", "isHidden", "isActive"], outputs: ["isHiddenChange", "selectTab", "keydownTab"] }, { kind: "component", type: EclTabLabelComponent, selector: "ecl-tab-label" }, { kind: "pipe", type: TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
794
835
  }
795
836
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclTabsComponent, decorators: [{
796
837
  type: Component,
797
- args: [{ selector: 'div[eclTabs]', imports: [TranslatePipe, NgTemplateOutlet, ...EUI_ECL_BUTTON, ...EUI_ECL_ICON, EclTabComponent, EclTabLabelComponent], encapsulation: ViewEncapsulation.None, template: "@if (isUsingOldSelector) {\n<div class=\"ecl-tabs\">\n <ng-container *ngTemplateOutlet=\"eclTabsTemplate\"></ng-container>\n</div>\n} @else {\n<ng-container *ngTemplateOutlet=\"eclTabsTemplate\"></ng-container>\n}\n\n<ng-template #eclTabsTemplate>\n <div class=\"ecl-tabs__container\" [class.ecl-tabs__container--right]=\"isScrollNextBtnShow()\"\n [class.ecl-tabs__container--left]=\"isScrollPrevBtnShow()\">\n <div class=\"ecl-tabs__list\" role=\"tablist\" #tabsList\n [style.transform]=\"styleTransform\" [style.transition-duration]=\"getTransitionDuration()\">\n <ng-content select=\"ecl-tab, [eclTab]\"></ng-content>\n <div class=\"ecl-tabs__item ecl-tabs__item--more\" #moreItem>\n @if (listTabs.length > 0) {\n <div class=\"ecl-tabs__dropdown\" [class.ecl-tabs__dropdown--show]=\"isDropdownExpanded()\">\n <div class=\"ecl-tabs__dropdown-list\" #dropdownList>\n @for (tab of listTabs; track tab.id; let i = $index) {\n <div eclTab [isActive]=\"tab._isActive()\" [isHidden]=\"tab.isHidden()\" (click)=\"onTabSelect(tab)\"\n (keydown)=\"onTabKeydown($event, tab)\">\n <ecl-tab-label>{{ getTabLabel(i) }}</ecl-tab-label>\n </div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n <button #moreButton eclButton class=\"ecl-tabs__toggle\" variant=\"tertiary\" [tabindex]=\"customTabIndex\"\n [attr.aria-expanded]=\"isDropdownExpanded()\" [class.ecl-tabs__toggle--active]=\"isMoreButtonActive\"\n (click)=\"onDropdownToggle()\" (focus)=\"onMoreButtonFocus()\">\n <span eclButtonLabel>\n {{ 'ecl.common.MORE' | translate }}\n ({{ getHiddenTabsCount() }})\n </span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-180\" size=\"fluid\"></ecl-icon>\n </button>\n </div>\n\n <div class=\"ecl-tabs__controls\">\n <button #btnPrev eclButton variant=\"tertiary\" isIconOnly class=\"ecl-tabs__prev\"\n [style.display]=\"isScrollPrevBtnShow() ? 'flex' : 'none'\" (click)=\"onScrollPrev()\">\n <span eclButtonLabel>{{ 'ecl.common.PREVIOUS' | translate }}</span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-270\" size=\"s\" class=\"\"> </ecl-icon>\n </button>\n <button #btnNext eclButton variant=\"tertiary\" isIconOnly class=\"ecl-tabs__next\"\n [style.display]=\"isScrollNextBtnShow() ? 'flex' : 'none'\" (click)=\"onScrollNext()\">\n <span eclButtonLabel>{{ 'ecl.common.NEXT' | translate }}</span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-90\" size=\"s\" class=\"\"> </ecl-icon>\n </button>\n </div>\n</ng-template>\n\n@for (tab of tabs.toArray(); track tab.tabLabel) {\n@if (tab._isActive()) {\n<div id=\"{{tab.finalId()}}-tabpanel\" role=\"tabpanel\" aria-labelledby=\"{{tab.finalId()}}-link\" class=\"{{ bodyClass() }}\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplate\"></ng-container>\n</div>\n}\n}\n@for (tab of listTabs; track tab.tabLabel) {\n@if (tab._isActive()) {\n<div id=\"{{tab.finalId()}}-tabpanel\" role=\"tabpanel\" aria-labelledby=\"{{tab.finalId()}}-link\" class=\"{{ bodyClass() }}\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplate\"></ng-container>\n</div>\n}\n}" }]
838
+ args: [{ selector: 'div[eclTabs]', imports: [TranslatePipe, NgTemplateOutlet, ...EUI_ECL_BUTTON, ...EUI_ECL_ICON, EclTabComponent, EclTabLabelComponent], encapsulation: ViewEncapsulation.None, template: "@if (isUsingOldSelector) {\n<div class=\"ecl-tabs\">\n <ng-container *ngTemplateOutlet=\"eclTabsTemplate\"></ng-container>\n</div>\n} @else {\n<ng-container *ngTemplateOutlet=\"eclTabsTemplate\"></ng-container>\n}\n\n<ng-template #eclTabsTemplate>\n <div class=\"ecl-tabs__container\" [class.ecl-tabs__container--right]=\"isScrollNextBtnShow()\"\n [class.ecl-tabs__container--left]=\"isScrollPrevBtnShow()\">\n <div class=\"ecl-tabs__list\" role=\"tablist\" #tabsList\n [style.transform]=\"styleTransform\" [style.transition-duration]=\"getTransitionDuration()\">\n <ng-content select=\"ecl-tab, [eclTab]\"></ng-content>\n <div class=\"ecl-tabs__item ecl-tabs__item--more\" #moreItem>\n @if (listTabs.length > 0) {\n <div class=\"ecl-tabs__dropdown\" [class.ecl-tabs__dropdown--show]=\"isDropdownExpanded()\">\n <div class=\"ecl-tabs__dropdown-list\" #dropdownList>\n @for (tab of listTabs; track tab.id; let i = $index) {\n <div eclTab [isActive]=\"tab._isActive()\" [isHidden]=\"tab.isHidden()\" (click)=\"onTabSelect(tab)\"\n (keydown)=\"onTabKeydown($event, tab)\">\n <ecl-tab-label>{{ getTabLabel(i) }}</ecl-tab-label>\n </div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n <button #moreButton eclButton class=\"ecl-tabs__toggle\" variant=\"tertiary\" [tabindex]=\"customTabIndex\"\n [attr.aria-expanded]=\"isDropdownExpanded()\" [class.ecl-tabs__toggle--active]=\"isMoreButtonActive\"\n (click)=\"onDropdownToggle()\" (focus)=\"onMoreButtonFocus()\">\n <span eclButtonLabel>\n {{ 'ecl.common.MORE' | translate }}\n ({{ getHiddenTabsCount() }})\n </span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-180\" size=\"fluid\"></ecl-icon>\n </button>\n </div>\n\n <div class=\"ecl-tabs__controls\">\n <button #btnPrev eclButton variant=\"tertiary\" isIconOnly class=\"ecl-tabs__prev\"\n [style.display]=\"isScrollPrevBtnShow() ? 'flex' : 'none'\" (click)=\"onScrollPrev()\">\n <span eclButtonLabel>{{ 'ecl.common.PREVIOUS' | translate }}</span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-270\" size=\"s\" class=\"\"> </ecl-icon>\n </button>\n <button #btnNext eclButton variant=\"tertiary\" isIconOnly class=\"ecl-tabs__next\"\n [style.display]=\"isScrollNextBtnShow() ? 'flex' : 'none'\" (click)=\"onScrollNext()\">\n <span eclButtonLabel>{{ 'ecl.common.NEXT' | translate }}</span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-90\" size=\"s\" class=\"\"> </ecl-icon>\n </button>\n </div>\n</ng-template>\n\n@for (tab of tabs(); track tab.tabLabel) {\n@if (tab._isActive()) {\n<div id=\"{{tab.finalId()}}-tabpanel\" role=\"tabpanel\" aria-labelledby=\"{{tab.finalId()}}-link\" class=\"{{ bodyClass() }}\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplate()\"></ng-container>\n</div>\n}\n}\n@for (tab of listTabs; track tab.tabLabel) {\n@if (tab._isActive()) {\n<div id=\"{{tab.finalId()}}-tabpanel\" role=\"tabpanel\" aria-labelledby=\"{{tab.finalId()}}-link\" class=\"{{ bodyClass() }}\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplate()\"></ng-container>\n</div>\n}\n}" }]
798
839
  }], ctorParameters: () => [], propDecorators: { hasClass: [{
799
840
  type: HostBinding,
800
841
  args: ['class.ecl-tabs']
801
842
  }], autoInitialized: [{
802
843
  type: HostBinding,
803
844
  args: ['attr.data-ecl-auto-initialized']
804
- }], bodyClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "bodyClass", required: false }] }], tabSelect: [{ type: i0.Output, args: ["tabSelect"] }], tabs: [{
805
- type: ContentChildren,
806
- args: [forwardRef(() => EclTabComponent)]
807
- }], tabsList: [{
808
- type: ViewChild,
809
- args: ['tabsList']
810
- }], moreButton: [{
811
- type: ViewChild,
812
- args: ['moreButton']
813
- }], btnPrev: [{
814
- type: ViewChild,
815
- args: ['btnPrev']
816
- }], btnNext: [{
817
- type: ViewChild,
818
- args: ['btnNext']
819
- }], dropdownList: [{
820
- type: ViewChild,
821
- args: ['dropdownList']
822
- }], moreItem: [{
823
- type: ViewChild,
824
- args: ['moreItem']
825
- }], onClick: [{
845
+ }], bodyClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "bodyClass", required: false }] }], tabSelect: [{ type: i0.Output, args: ["tabSelect"] }], tabs: [{ type: i0.ContentChildren, args: [forwardRef(() => EclTabComponent), { isSignal: true }] }], tabsList: [{ type: i0.ViewChild, args: ['tabsList', { isSignal: true }] }], moreButton: [{ type: i0.ViewChild, args: ['moreButton', { isSignal: true }] }], btnPrev: [{ type: i0.ViewChild, args: ['btnPrev', { isSignal: true }] }], btnNext: [{ type: i0.ViewChild, args: ['btnNext', { isSignal: true }] }], dropdownList: [{ type: i0.ViewChild, args: ['dropdownList', { isSignal: true }] }], moreItem: [{ type: i0.ViewChild, args: ['moreItem', { isSignal: true }] }], onClick: [{
826
846
  type: HostListener,
827
847
  args: ['document:click', ['$event.target']]
828
848
  }] } });