@eui/ecl 22.0.0-alpha.21 → 22.0.0-alpha.22

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 (185) hide show
  1. package/docs/changelog.html +10 -0
  2. package/docs/components/EclAccordionSummaryComponent.html +1 -1
  3. package/docs/components/EclAddToCalendarComponent.html +1 -1
  4. package/docs/components/EclAnimatedNumbersComponent.html +1 -1
  5. package/docs/components/EclAnimatedNumbersItemComponent.html +1 -1
  6. package/docs/components/EclAppComponent.html +1 -1
  7. package/docs/components/EclBannerComponent.html +1 -1
  8. package/docs/components/EclBlockquoteComponent.html +1 -1
  9. package/docs/components/EclBreadcrumbComponent.html +1 -1
  10. package/docs/components/EclBreadcrumbSegmentComponent.html +1 -1
  11. package/docs/components/EclButtonComponent.html +1 -1
  12. package/docs/components/EclCardBodyComponent.html +1 -1
  13. package/docs/components/EclCardComponent.html +1 -1
  14. package/docs/components/EclCarouselComponent.html +1 -1
  15. package/docs/components/EclCarouselItemComponent.html +1 -1
  16. package/docs/components/EclCategoryFilterComponent.html +1 -1
  17. package/docs/components/EclCategoryFilterItemComponent.html +1 -1
  18. package/docs/components/EclCategoryFilterListComponent.html +1 -1
  19. package/docs/components/EclCheckboxHelpComponent.html +1 -1
  20. package/docs/components/EclCheckboxLabelComponent.html +1 -1
  21. package/docs/components/EclContentBlockComponent.html +1 -1
  22. package/docs/components/EclContentItemComponent.html +1 -1
  23. package/docs/components/EclDateBlockComponent.html +1 -1
  24. package/docs/components/EclDescriptionListDefinitionComponent.html +1 -1
  25. package/docs/components/EclExpandableComponent.html +1 -1
  26. package/docs/components/EclFactFiguresComponent.html +1 -1
  27. package/docs/components/EclFactFiguresItemComponent.html +1 -1
  28. package/docs/components/EclFactFiguresViewAllComponent.html +1 -1
  29. package/docs/components/EclFeaturedComponent.html +1 -1
  30. package/docs/components/EclFeaturedItemComponent.html +1 -1
  31. package/docs/components/EclFeaturedItemDescriptionComponent.html +1 -1
  32. package/docs/components/EclFileComponent.html +1 -1
  33. package/docs/components/EclFileItemComponent.html +1 -1
  34. package/docs/components/EclFileItemsComponent.html +1 -1
  35. package/docs/components/EclFileListsComponent.html +1 -1
  36. package/docs/components/EclFormGroupComponent.html +1 -1
  37. package/docs/components/EclFormLabelComponent.html +1 -1
  38. package/docs/components/EclGalleryComponent.html +1 -1
  39. package/docs/components/EclGalleryFooterComponent.html +1 -1
  40. package/docs/components/EclGalleryItemComponent.html +1 -1
  41. package/docs/components/EclHighlightBoxComponent.html +1 -1
  42. package/docs/components/EclHighlightedSearchComponent.html +1 -1
  43. package/docs/components/EclIconComponent.html +1 -1
  44. package/docs/components/EclIndicatorComponent-1.html +1 -1
  45. package/docs/components/EclIndicatorComponent.html +1 -1
  46. package/docs/components/EclInpageNavigationComponent.html +1 -1
  47. package/docs/components/EclInpageNavigationItemComponent.html +1 -1
  48. package/docs/components/EclLayoutWrapperComponent.html +1 -1
  49. package/docs/components/EclListIllustrationComponent.html +1 -1
  50. package/docs/components/EclListIllustrationItemComponent.html +1 -1
  51. package/docs/components/EclLoadingIndicatorComponent.html +1 -1
  52. package/docs/components/EclMediaContainerComponent.html +1 -1
  53. package/docs/components/EclMegaMenuComponent.html +1 -1
  54. package/docs/components/EclMegaMenuFeaturedComponent.html +1 -1
  55. package/docs/components/EclMegaMenuInfoComponent.html +1 -1
  56. package/docs/components/EclMegaMenuItemComponent.html +1 -1
  57. package/docs/components/EclMegaMenuSubitemComponent.html +1 -1
  58. package/docs/components/EclMenuComponent.html +1 -1
  59. package/docs/components/EclMenuItemComponent.html +1 -1
  60. package/docs/components/EclMenuMegaComponent.html +1 -1
  61. package/docs/components/EclMenuMegaItemComponent.html +1 -1
  62. package/docs/components/EclModalBodyComponent.html +1 -1
  63. package/docs/components/EclModalComponent.html +1 -1
  64. package/docs/components/EclModalFooterComponent.html +1 -1
  65. package/docs/components/EclModalHeaderComponent.html +1 -1
  66. package/docs/components/EclMultiselectComponent.html +1 -1
  67. package/docs/components/EclMultiselectDropdownComponent.html +4 -4
  68. package/docs/components/EclMultiselectInputComponent.html +1 -1
  69. package/docs/components/EclMultiselectOptgroupComponent.html +1 -1
  70. package/docs/components/EclMultiselectOptionComponent.html +1 -1
  71. package/docs/components/EclNavigationListComponent.html +5 -106
  72. package/docs/components/EclNavigationListItemComponent.html +15 -87
  73. package/docs/components/EclNewsTickerComponent.html +5 -40
  74. package/docs/components/EclNewsTickerItemComponent.html +6 -153
  75. package/docs/components/EclNotificationComponent.html +5 -122
  76. package/docs/components/EclPageHeaderComponent.html +5 -48
  77. package/docs/components/EclPageHeaderDescriptionContainerComponent.html +1 -1
  78. package/docs/components/EclPageHeaderExpandableComponent.html +5 -46
  79. package/docs/components/EclPageHeaderNextComponent.html +5 -48
  80. package/docs/components/EclPageHeaderSectionComponent.html +5 -117
  81. package/docs/components/EclPageHeaderSectionInfoComponent.html +5 -117
  82. package/docs/components/EclPageSummaryComponent.html +2 -15
  83. package/docs/components/EclPaginationComponent.html +5 -180
  84. package/docs/components/EclPaginationItemComponent.html +67 -184
  85. package/docs/components/EclPopoverComponent.html +1 -1
  86. package/docs/components/EclQuizCardComponent.html +1 -1
  87. package/docs/components/EclQuizComponent.html +1 -1
  88. package/docs/components/EclRadioHelpComponent.html +1 -1
  89. package/docs/components/EclRadioLabelComponent.html +1 -1
  90. package/docs/components/EclRangeBubbleComponent.html +1 -1
  91. package/docs/components/EclRangeValueComponent.html +1 -1
  92. package/docs/components/EclRatingFieldComponent.html +1 -1
  93. package/docs/components/EclSearchFormComponent.html +1 -1
  94. package/docs/components/EclSelectContainerComponent.html +1 -1
  95. package/docs/components/EclSiteFooterComponent.html +1 -1
  96. package/docs/components/EclSiteFooterCoownerComponent.html +1 -1
  97. package/docs/components/EclSiteFooterCoreComponent.html +1 -1
  98. package/docs/components/EclSiteFooterFeedbackComponent.html +1 -1
  99. package/docs/components/EclSiteFooterFixedContentEUComponent.html +1 -1
  100. package/docs/components/EclSiteFooterRowCommonComponent.html +1 -1
  101. package/docs/components/EclSiteHeaderActionComponent.html +1 -1
  102. package/docs/components/EclSiteHeaderBannerTopComponent.html +1 -1
  103. package/docs/components/EclSiteHeaderComponent.html +1 -1
  104. package/docs/components/EclSiteHeaderCustomActionComponent.html +1 -1
  105. package/docs/components/EclSiteHeaderEnvironmentComponent.html +1 -1
  106. package/docs/components/EclSiteHeaderLanguageComponent.html +1 -1
  107. package/docs/components/EclSiteHeaderLanguagePopoverComponent.html +1 -1
  108. package/docs/components/EclSiteHeaderLoginComponent.html +1 -1
  109. package/docs/components/EclSiteHeaderNotificationComponent.html +1 -1
  110. package/docs/components/EclSiteHeaderSearchComponent.html +1 -1
  111. package/docs/components/EclSloganTickerComponent.html +1 -1
  112. package/docs/components/EclSocialMediaFollowComponent.html +1 -1
  113. package/docs/components/EclSocialMediaFollowItemComponent.html +1 -1
  114. package/docs/components/EclSplashPageComponent.html +1 -1
  115. package/docs/components/EclSplashPageLanguageCategoryComponent.html +1 -1
  116. package/docs/components/EclSplashPageLanguageContainerComponent.html +1 -1
  117. package/docs/components/EclSplashPageLanguageLinkComponent.html +1 -1
  118. package/docs/components/EclSpotlightComponent.html +1 -1
  119. package/docs/components/EclSpotlightLinkComponent.html +1 -1
  120. package/docs/components/EclStickyContainerComponent.html +1 -1
  121. package/docs/components/EclStoryCardComponent.html +1 -1
  122. package/docs/components/EclStoryCardGridDetailsComponent.html +1 -1
  123. package/docs/components/EclStoryCardItemComponent.html +1 -1
  124. package/docs/components/EclTabComponent.html +1 -1
  125. package/docs/components/EclTabLabelComponent.html +1 -1
  126. package/docs/components/EclTableSortButtonComponent.html +1 -1
  127. package/docs/components/EclTabsComponent.html +1 -1
  128. package/docs/components/EclTagComponent.html +1 -1
  129. package/docs/components/EclTextMediaComponent.html +1 -1
  130. package/docs/components/EclTimelineComponent.html +1 -1
  131. package/docs/components/EclTimelineItemComponent.html +1 -1
  132. package/docs/components/EclTimelineItemTogglerComponent.html +1 -1
  133. package/docs/directives/EclContainerDirective.html +0 -118
  134. package/docs/directives/EclNavigationListImageDirective.html +0 -39
  135. package/docs/directives/EclNavigationListPictureDirective.html +0 -39
  136. package/docs/directives/EclNewsTickerIconDirective.html +0 -116
  137. package/docs/directives/EclNotificationIconDirective.html +0 -61
  138. package/docs/directives/EclNotificationLinkDirective.html +0 -61
  139. package/docs/directives/EclNotificationTitleDirective.html +0 -45
  140. package/docs/directives/EclPageHeaderBackgroundImageDirective.html +0 -118
  141. package/docs/directives/EclPageHeaderBackgroundPictureDirective.html +0 -118
  142. package/docs/directives/EclPageHeaderContainerDirective.html +0 -118
  143. package/docs/directives/EclPageHeaderDescriptionDirective.html +0 -118
  144. package/docs/directives/EclPageHeaderDescriptionPictureDirective.html +0 -118
  145. package/docs/directives/EclPageHeaderDescriptionThumbnailDirective.html +0 -118
  146. package/docs/directives/EclPageHeaderExpandableHeaderDirective.html +0 -45
  147. package/docs/directives/EclPageHeaderInfoDirective.html +0 -118
  148. package/docs/directives/EclPageHeaderMetaDirective.html +0 -118
  149. package/docs/directives/EclPageHeaderMetaItemDirective.html +0 -99
  150. package/docs/directives/EclPageHeaderTitleDirective.html +0 -47
  151. package/docs/directives/EclPaginationListDirective.html +0 -116
  152. package/docs/js/search/search_index.js +2 -2
  153. package/docs/json/EclPageSummaryComponent.md +1 -1
  154. package/docs/json/EclPaginationItemComponent.md +3 -3
  155. package/docs/json/documentation.json +631 -2084
  156. package/docs/llms.txt +7 -53
  157. package/docs/properties.html +1 -1
  158. package/fesm2022/eui-ecl-components-ecl-multiselect.mjs +27 -17
  159. package/fesm2022/eui-ecl-components-ecl-multiselect.mjs.map +1 -1
  160. package/fesm2022/eui-ecl-components-ecl-navigation-list.mjs +54 -65
  161. package/fesm2022/eui-ecl-components-ecl-navigation-list.mjs.map +1 -1
  162. package/fesm2022/eui-ecl-components-ecl-news-ticker.mjs +19 -34
  163. package/fesm2022/eui-ecl-components-ecl-news-ticker.mjs.map +1 -1
  164. package/fesm2022/eui-ecl-components-ecl-notification.mjs +23 -28
  165. package/fesm2022/eui-ecl-components-ecl-notification.mjs.map +1 -1
  166. package/fesm2022/eui-ecl-components-ecl-page-header.mjs +90 -200
  167. package/fesm2022/eui-ecl-components-ecl-page-header.mjs.map +1 -1
  168. package/fesm2022/eui-ecl-components-ecl-page-summary.mjs +3 -8
  169. package/fesm2022/eui-ecl-components-ecl-page-summary.mjs.map +1 -1
  170. package/fesm2022/eui-ecl-components-ecl-pagination.mjs +28 -56
  171. package/fesm2022/eui-ecl-components-ecl-pagination.mjs.map +1 -1
  172. package/package.json +1 -1
  173. package/types/eui-ecl-components-ecl-multiselect.d.ts +2 -1
  174. package/types/eui-ecl-components-ecl-multiselect.d.ts.map +1 -1
  175. package/types/eui-ecl-components-ecl-navigation-list.d.ts +10 -10
  176. package/types/eui-ecl-components-ecl-navigation-list.d.ts.map +1 -1
  177. package/types/eui-ecl-components-ecl-news-ticker.d.ts +4 -8
  178. package/types/eui-ecl-components-ecl-news-ticker.d.ts.map +1 -1
  179. package/types/eui-ecl-components-ecl-notification.d.ts.map +1 -1
  180. package/types/eui-ecl-components-ecl-page-header.d.ts +0 -68
  181. package/types/eui-ecl-components-ecl-page-header.d.ts.map +1 -1
  182. package/types/eui-ecl-components-ecl-page-summary.d.ts +1 -2
  183. package/types/eui-ecl-components-ecl-page-summary.d.ts.map +1 -1
  184. package/types/eui-ecl-components-ecl-pagination.d.ts +4 -21
  185. package/types/eui-ecl-components-ecl-pagination.d.ts.map +1 -1
@@ -1,8 +1,37 @@
1
1
  import * as i0 from '@angular/core';
2
- import { input, contentChild, forwardRef, HostBinding, Component, Directive, numberAttribute, booleanAttribute, contentChildren } from '@angular/core';
2
+ import { input, numberAttribute, booleanAttribute, Component, computed, contentChild, forwardRef, inject, Directive } from '@angular/core';
3
3
  import { ECLBaseDirective } from '@eui/ecl/core';
4
4
  import { EclContentBlockComponent } from '@eui/ecl/components/ecl-content-block';
5
5
 
6
+ /**
7
+ * Navigation lists provide users with a quick way to scan through items and access the information they are looking for.
8
+ * It can offer a quick description of the parent page and/or display child pages that belong to it.
9
+ */
10
+ class EclNavigationListComponent extends ECLBaseDirective {
11
+ constructor() {
12
+ super(...arguments);
13
+ /**
14
+ * Property that describes how many columns the navigation list has. Default value is 2.
15
+ */
16
+ this.columns = input(2, { ...(ngDevMode ? { debugName: "columns" } : /* istanbul ignore next */ {}), transform: numberAttribute });
17
+ /**
18
+ * Property that describes if each item will have a border. Default is 'true'.
19
+ */
20
+ this.hasBorders = input(true, { ...(ngDevMode ? { debugName: "hasBorders" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
21
+ }
22
+ get cssClasses() {
23
+ return [super.getCssClasses('ecl-navigation-list'), this.columns() > 1 ? `ecl-navigation-list--col-${this.columns()}` : ''].join(' ').trim();
24
+ }
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EclNavigationListComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
26
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.2", type: EclNavigationListComponent, isStandalone: true, selector: "ecl-navigation-list", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, hasBorders: { classPropertyName: "hasBorders", publicName: "hasBorders", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "cssClasses" } }, usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n" }); }
27
+ }
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EclNavigationListComponent, decorators: [{
29
+ type: Component,
30
+ args: [{ selector: 'ecl-navigation-list', host: {
31
+ '[class]': 'cssClasses',
32
+ }, template: "<ng-content></ng-content>\n" }]
33
+ }], propDecorators: { columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: false }] }], hasBorders: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasBorders", required: false }] }] } });
34
+
6
35
  /**
7
36
  * Component that represents one navigation list item, has title and image and/or list of links/secondary links.
8
37
  */
@@ -18,15 +47,21 @@ class EclNavigationListItemComponent extends ECLBaseDirective {
18
47
  */
19
48
  this.variant = input('', /* @ts-ignore */
20
49
  ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
50
+ /**
51
+ * Whether this item renders a border. Derived from the parent navigation list's
52
+ * 'hasBorders' input; defaults to 'true' when the item is used without a parent.
53
+ */
54
+ this.hasBorder = computed(() => this.parent?.hasBorders() ?? true, /* @ts-ignore */
55
+ ...(ngDevMode ? [{ debugName: "hasBorder" }] : /* istanbul ignore next */ []));
21
56
  this.eclContentBlock = contentChild(forwardRef(() => EclContentBlockComponent), /* @ts-ignore */
22
57
  ...(ngDevMode ? [{ debugName: "eclContentBlock" }] : /* istanbul ignore next */ []));
23
- this.hasBorder = true;
58
+ this.parent = inject(EclNavigationListComponent, { optional: true });
24
59
  }
25
60
  get cssClasses() {
26
61
  const variant = this.variant();
27
62
  return [
28
63
  super.getCssClasses('ecl-navigation-list__item'),
29
- this.hasBorder ? '' : 'ecl-navigation-list__item--no-border',
64
+ this.hasBorder() ? '' : 'ecl-navigation-list__item--no-border',
30
65
  variant !== '' ? `ecl-navigation-list__item--${variant}` : '',
31
66
  ].join(' ').trim();
32
67
  }
@@ -38,18 +73,15 @@ class EclNavigationListItemComponent extends ECLBaseDirective {
38
73
  }
39
74
  }
40
75
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EclNavigationListItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
41
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.1.2", type: EclNavigationListItemComponent, isStandalone: true, selector: "ecl-navigation-list-item", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.role": "this.role", "class": "this.cssClasses" } }, queries: [{ propertyName: "eclContentBlock", first: true, predicate: i0.forwardRef(() => EclContentBlockComponent), descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n" }); }
76
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.1.2", type: EclNavigationListItemComponent, isStandalone: true, selector: "ecl-navigation-list-item", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.role": "role", "class": "cssClasses" } }, queries: [{ propertyName: "eclContentBlock", first: true, predicate: i0.forwardRef(() => EclContentBlockComponent), descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n" }); }
42
77
  }
43
78
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EclNavigationListItemComponent, decorators: [{
44
79
  type: Component,
45
- args: [{ selector: 'ecl-navigation-list-item', template: "<ng-content></ng-content>\n" }]
46
- }], propDecorators: { role: [{
47
- type: HostBinding,
48
- args: ['attr.role']
49
- }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], cssClasses: [{
50
- type: HostBinding,
51
- args: ['class']
52
- }], eclContentBlock: [{ type: i0.ContentChild, args: [forwardRef(() => EclContentBlockComponent), { isSignal: true }] }] } });
80
+ args: [{ selector: 'ecl-navigation-list-item', host: {
81
+ '[attr.role]': 'role',
82
+ '[class]': 'cssClasses',
83
+ }, template: "<ng-content></ng-content>\n" }]
84
+ }], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], eclContentBlock: [{ type: i0.ContentChild, args: [forwardRef(() => EclContentBlockComponent), { isSignal: true }] }] } });
53
85
 
54
86
  /**
55
87
  * This directive adds specific class to the picture element, used in 'ecl-navigation-list-item'.
@@ -59,17 +91,17 @@ class EclNavigationListPictureDirective extends ECLBaseDirective {
59
91
  return [super.getCssClasses('ecl-picture ecl-navigation-list__picture')].join(' ').trim();
60
92
  }
61
93
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EclNavigationListPictureDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
62
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.2", type: EclNavigationListPictureDirective, isStandalone: true, selector: "picture[eclNavigationListPicture]", host: { properties: { "class": "this.cssClasses" } }, usesInheritance: true, ngImport: i0 }); }
94
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.2", type: EclNavigationListPictureDirective, isStandalone: true, selector: "picture[eclNavigationListPicture]", host: { properties: { "class": "cssClasses" } }, usesInheritance: true, ngImport: i0 }); }
63
95
  }
64
96
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EclNavigationListPictureDirective, decorators: [{
65
97
  type: Directive,
66
98
  args: [{
67
99
  selector: 'picture[eclNavigationListPicture]',
100
+ host: {
101
+ '[class]': 'cssClasses',
102
+ },
68
103
  }]
69
- }], propDecorators: { cssClasses: [{
70
- type: HostBinding,
71
- args: ['class']
72
- }] } });
104
+ }] });
73
105
  /**
74
106
  * This directive adds specific class to the image element, used in 'ecl-navigation-list-item'.
75
107
  */
@@ -78,60 +110,17 @@ class EclNavigationListImageDirective extends ECLBaseDirective {
78
110
  return [super.getCssClasses('ecl-navigation-list__image')].join(' ').trim();
79
111
  }
80
112
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EclNavigationListImageDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
81
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.2", type: EclNavigationListImageDirective, isStandalone: true, selector: "img[eclNavigationListImage]", host: { properties: { "class": "this.cssClasses" } }, usesInheritance: true, ngImport: i0 }); }
113
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.2", type: EclNavigationListImageDirective, isStandalone: true, selector: "img[eclNavigationListImage]", host: { properties: { "class": "cssClasses" } }, usesInheritance: true, ngImport: i0 }); }
82
114
  }
83
115
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EclNavigationListImageDirective, decorators: [{
84
116
  type: Directive,
85
117
  args: [{
86
118
  selector: 'img[eclNavigationListImage]',
119
+ host: {
120
+ '[class]': 'cssClasses',
121
+ },
87
122
  }]
88
- }], propDecorators: { cssClasses: [{
89
- type: HostBinding,
90
- args: ['class']
91
- }] } });
92
-
93
- /**
94
- * Navigation lists provide users with a quick way to scan through items and access the information they are looking for.
95
- * It can offer a quick description of the parent page and/or display child pages that belong to it.
96
- */
97
- class EclNavigationListComponent extends ECLBaseDirective {
98
- constructor() {
99
- super(...arguments);
100
- /**
101
- * Property that describes how many columns the navigation list has. Default value is 2.
102
- */
103
- this.columns = input(2, { ...(ngDevMode ? { debugName: "columns" } : /* istanbul ignore next */ {}), transform: numberAttribute });
104
- /**
105
- * Property that describes if each item will have a border. Default is 'true'.
106
- */
107
- this.hasBorders = input(true, { ...(ngDevMode ? { debugName: "hasBorders" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
108
- /**
109
- * The list of navigation list items.
110
- */
111
- this.listItems = contentChildren(forwardRef(() => EclNavigationListItemComponent), /* @ts-ignore */
112
- ...(ngDevMode ? [{ debugName: "listItems" }] : /* istanbul ignore next */ []));
113
- }
114
- get cssClasses() {
115
- return [super.getCssClasses('ecl-navigation-list'), this.columns() > 1 ? `ecl-navigation-list--col-${this.columns()}` : ''].join(' ').trim();
116
- }
117
- ngAfterContentInit() {
118
- // Propagate 'hasBorders' property to navigation list items.
119
- setTimeout(() => {
120
- if (!this.hasBorders()) {
121
- this.listItems().forEach(item => item.hasBorder = false);
122
- }
123
- });
124
- }
125
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EclNavigationListComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
126
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.1.2", type: EclNavigationListComponent, isStandalone: true, selector: "ecl-navigation-list", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, hasBorders: { classPropertyName: "hasBorders", publicName: "hasBorders", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "this.cssClasses" } }, queries: [{ propertyName: "listItems", predicate: i0.forwardRef(() => EclNavigationListItemComponent), isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n" }); }
127
- }
128
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EclNavigationListComponent, decorators: [{
129
- type: Component,
130
- args: [{ selector: 'ecl-navigation-list', template: "<ng-content></ng-content>\n" }]
131
- }], propDecorators: { cssClasses: [{
132
- type: HostBinding,
133
- args: ['class']
134
- }], columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: false }] }], hasBorders: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasBorders", required: false }] }], listItems: [{ type: i0.ContentChildren, args: [forwardRef(() => EclNavigationListItemComponent), { isSignal: true }] }] } });
123
+ }] });
135
124
 
136
125
  const EUI_ECL_NAVIGATION_LIST = [
137
126
  EclNavigationListComponent,
@@ -1 +1 @@
1
- {"version":3,"file":"eui-ecl-components-ecl-navigation-list.mjs","sources":["../../components/ecl-navigation-list/ecl-navigation-list-item.component.ts","../../components/ecl-navigation-list/ecl-navigation-list-item.component.html","../../components/ecl-navigation-list/ecl-navigation-list-picture.directive.ts","../../components/ecl-navigation-list/ecl-navigation-list.component.ts","../../components/ecl-navigation-list/ecl-navigation-list.component.html","../../components/ecl-navigation-list/index.ts","../../components/ecl-navigation-list/eui-ecl-components-ecl-navigation-list.ts"],"sourcesContent":["import { AfterContentInit, Component, forwardRef, HostBinding, input, contentChild } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclContentBlockComponent } from '@eui/ecl/components/ecl-content-block';\n\n/**\n * Component that represents one navigation list item, has title and image and/or list of links/secondary links.\n */\n@Component({\n selector: 'ecl-navigation-list-item',\n templateUrl: 'ecl-navigation-list-item.component.html',\n})\nexport class EclNavigationListItemComponent extends ECLBaseDirective implements AfterContentInit {\n\n /**\n * The role of the underlying HTML element is 'article', should not be changed.\n */\n @HostBinding('attr.role') role = 'article';\n /**\n * Different variants, that add styling for different type of displaing the picture, used in the list item.\n */\n readonly variant = input<'illustration' | 'image-as-illustration' | ''>('');\n @HostBinding('class')\n get cssClasses(): string {\n const variant = this.variant();\n return [\n super.getCssClasses('ecl-navigation-list__item'),\n this.hasBorder ? '' : 'ecl-navigation-list__item--no-border',\n variant !== '' ? `ecl-navigation-list__item--${variant}` : '',\n ].join(' ').trim();\n }\n\n readonly eclContentBlock = contentChild(forwardRef(() => EclContentBlockComponent));\n\n hasBorder = true;\n\n ngAfterContentInit(): void {\n // Adds specific class to the conten-block content child, if it exists. \n const eclContentBlock = this.eclContentBlock();\n if (eclContentBlock) {\n eclContentBlock.class = 'ecl-navigation-list__content-block';\n }\n }\n}\n","<ng-content></ng-content>\n","import { Directive, HostBinding } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * This directive adds specific class to the picture element, used in 'ecl-navigation-list-item'.\n */\n@Directive({\n selector: 'picture[eclNavigationListPicture]',\n})\nexport class EclNavigationListPictureDirective extends ECLBaseDirective {\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-picture ecl-navigation-list__picture')].join(' ').trim();\n }\n}\n\n/**\n * This directive adds specific class to the image element, used in 'ecl-navigation-list-item'.\n */\n@Directive({\n selector: 'img[eclNavigationListImage]',\n})\nexport class EclNavigationListImageDirective extends ECLBaseDirective {\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-navigation-list__image')].join(' ').trim();\n }\n}\n","import { AfterContentInit, Component, HostBinding, booleanAttribute, forwardRef, numberAttribute, input, contentChildren } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclNavigationListItemComponent } from './ecl-navigation-list-item.component';\n\n/**\n * Navigation lists provide users with a quick way to scan through items and access the information they are looking for.\n * It can offer a quick description of the parent page and/or display child pages that belong to it.\n */\n@Component({\n selector: 'ecl-navigation-list',\n templateUrl: 'ecl-navigation-list.component.html',\n})\nexport class EclNavigationListComponent extends ECLBaseDirective implements AfterContentInit {\n\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-navigation-list'), this.columns() > 1 ? `ecl-navigation-list--col-${this.columns()}` : ''].join(' ').trim();\n }\n\n /**\n * Property that describes how many columns the navigation list has. Default value is 2.\n */\n readonly columns = input(2, { transform: numberAttribute });\n /**\n * Property that describes if each item will have a border. Default is 'true'.\n */\n readonly hasBorders = input(true, { transform: booleanAttribute });\n\n /**\n * The list of navigation list items.\n */\n readonly listItems = contentChildren(forwardRef(() => EclNavigationListItemComponent));\n\n ngAfterContentInit(): void {\n // Propagate 'hasBorders' property to navigation list items.\n setTimeout(() => {\n if (!this.hasBorders()) {\n this.listItems().forEach(item => item.hasBorder = false);\n }\n });\n }\n}\n","<ng-content></ng-content>\n","import { EclNavigationListItemComponent } from './ecl-navigation-list-item.component';\nimport { EclNavigationListImageDirective, EclNavigationListPictureDirective } from './ecl-navigation-list-picture.directive';\nimport { EclNavigationListComponent } from './ecl-navigation-list.component';\n\nexport * from './ecl-navigation-list.component';\nexport * from './ecl-navigation-list-item.component';\nexport * from './ecl-navigation-list-picture.directive';\n\nexport const EUI_ECL_NAVIGATION_LIST = [\n EclNavigationListComponent,\n EclNavigationListItemComponent,\n EclNavigationListImageDirective,\n EclNavigationListPictureDirective,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eui-ecl-components-ecl-navigation-list.mjs","sources":["../../components/ecl-navigation-list/ecl-navigation-list.component.ts","../../components/ecl-navigation-list/ecl-navigation-list.component.html","../../components/ecl-navigation-list/ecl-navigation-list-item.component.ts","../../components/ecl-navigation-list/ecl-navigation-list-item.component.html","../../components/ecl-navigation-list/ecl-navigation-list-picture.directive.ts","../../components/ecl-navigation-list/index.ts","../../components/ecl-navigation-list/eui-ecl-components-ecl-navigation-list.ts"],"sourcesContent":["import { Component, booleanAttribute, numberAttribute, input } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Navigation lists provide users with a quick way to scan through items and access the information they are looking for.\n * It can offer a quick description of the parent page and/or display child pages that belong to it.\n */\n@Component({\n selector: 'ecl-navigation-list',\n templateUrl: 'ecl-navigation-list.component.html',\n host: {\n '[class]': 'cssClasses',\n },\n})\nexport class EclNavigationListComponent extends ECLBaseDirective {\n\n /**\n * Property that describes how many columns the navigation list has. Default value is 2.\n */\n readonly columns = input(2, { transform: numberAttribute });\n /**\n * Property that describes if each item will have a border. Default is 'true'.\n */\n readonly hasBorders = input(true, { transform: booleanAttribute });\n\n get cssClasses(): string {\n return [super.getCssClasses('ecl-navigation-list'), this.columns() > 1 ? `ecl-navigation-list--col-${this.columns()}` : ''].join(' ').trim();\n }\n}\n","<ng-content></ng-content>\n","import { AfterContentInit, Component, computed, forwardRef, inject, input, contentChild } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclContentBlockComponent } from '@eui/ecl/components/ecl-content-block';\nimport { EclNavigationListComponent } from './ecl-navigation-list.component';\n\n/**\n * Component that represents one navigation list item, has title and image and/or list of links/secondary links.\n */\n@Component({\n selector: 'ecl-navigation-list-item',\n templateUrl: 'ecl-navigation-list-item.component.html',\n host: {\n '[attr.role]': 'role',\n '[class]': 'cssClasses',\n },\n})\nexport class EclNavigationListItemComponent extends ECLBaseDirective implements AfterContentInit {\n\n /**\n * The role of the underlying HTML element is 'article', should not be changed.\n */\n role = 'article';\n /**\n * Different variants, that add styling for different type of displaing the picture, used in the list item.\n */\n readonly variant = input<'illustration' | 'image-as-illustration' | ''>('');\n\n /**\n * Whether this item renders a border. Derived from the parent navigation list's\n * 'hasBorders' input; defaults to 'true' when the item is used without a parent.\n */\n readonly hasBorder = computed(() => this.parent?.hasBorders() ?? true);\n\n readonly eclContentBlock = contentChild(forwardRef(() => EclContentBlockComponent));\n\n get cssClasses(): string {\n const variant = this.variant();\n return [\n super.getCssClasses('ecl-navigation-list__item'),\n this.hasBorder() ? '' : 'ecl-navigation-list__item--no-border',\n variant !== '' ? `ecl-navigation-list__item--${variant}` : '',\n ].join(' ').trim();\n }\n\n private readonly parent = inject(EclNavigationListComponent, { optional: true });\n\n ngAfterContentInit(): void {\n // Adds specific class to the conten-block content child, if it exists. \n const eclContentBlock = this.eclContentBlock();\n if (eclContentBlock) {\n eclContentBlock.class = 'ecl-navigation-list__content-block';\n }\n }\n}\n","<ng-content></ng-content>\n","import { Directive } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * This directive adds specific class to the picture element, used in 'ecl-navigation-list-item'.\n */\n@Directive({\n selector: 'picture[eclNavigationListPicture]',\n host: {\n '[class]': 'cssClasses',\n },\n})\nexport class EclNavigationListPictureDirective extends ECLBaseDirective {\n get cssClasses(): string {\n return [super.getCssClasses('ecl-picture ecl-navigation-list__picture')].join(' ').trim();\n }\n}\n\n/**\n * This directive adds specific class to the image element, used in 'ecl-navigation-list-item'.\n */\n@Directive({\n selector: 'img[eclNavigationListImage]',\n host: {\n '[class]': 'cssClasses',\n },\n})\nexport class EclNavigationListImageDirective extends ECLBaseDirective {\n get cssClasses(): string {\n return [super.getCssClasses('ecl-navigation-list__image')].join(' ').trim();\n }\n}\n","import { EclNavigationListItemComponent } from './ecl-navigation-list-item.component';\nimport { EclNavigationListImageDirective, EclNavigationListPictureDirective } from './ecl-navigation-list-picture.directive';\nimport { EclNavigationListComponent } from './ecl-navigation-list.component';\n\nexport * from './ecl-navigation-list.component';\nexport * from './ecl-navigation-list-item.component';\nexport * from './ecl-navigation-list-picture.directive';\n\nexport const EUI_ECL_NAVIGATION_LIST = [\n EclNavigationListComponent,\n EclNavigationListItemComponent,\n EclNavigationListImageDirective,\n EclNavigationListPictureDirective,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, ElementRef, contentChild, EventEmitter, HostBinding, Output, Component, input, booleanAttribute, output, contentChildren, viewChild, Renderer2, ChangeDetectorRef, DOCUMENT, afterNextRender, Directive } from '@angular/core';
2
+ import { inject, ElementRef, contentChild, EventEmitter, Output, Component, input, booleanAttribute, output, contentChildren, viewChild, Renderer2, ChangeDetectorRef, DOCUMENT, afterNextRender, Directive } from '@angular/core';
3
3
  import { Subject, fromEvent, takeUntil, auditTime } from 'rxjs';
4
4
  import { ECLBaseDirective, EclBaseEvent } from '@eui/ecl/core';
5
5
  import { EclLinkDirective } from '@eui/ecl/components/ecl-link';
@@ -30,7 +30,7 @@ class EclNewsTickerItemComponent extends ECLBaseDirective {
30
30
  this.destroy$ = new Subject();
31
31
  }
32
32
  /**
33
- * HostBinding to set the component’s CSS classes.
33
+ * Sets the component’s CSS classes.
34
34
  */
35
35
  get cssClasses() {
36
36
  return [super.getCssClasses('ecl-news-ticker__slide')].join(' ').trim();
@@ -91,25 +91,18 @@ class EclNewsTickerItemComponent extends ECLBaseDirective {
91
91
  }
92
92
  }
93
93
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EclNewsTickerItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
94
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.1.2", type: EclNewsTickerItemComponent, isStandalone: true, selector: "ecl-news-ticker-item", outputs: { itemFocused: "itemFocused" }, host: { properties: { "class": "this.cssClasses", "attr.role": "this.role", "attr.aria-hidden": "this.isAriahidden", "attr.inert": "this.isInert" } }, queries: [{ propertyName: "eclLink", first: true, predicate: EclLinkDirective, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n" }); }
94
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.1.2", type: EclNewsTickerItemComponent, isStandalone: true, selector: "ecl-news-ticker-item", outputs: { itemFocused: "itemFocused" }, host: { properties: { "class": "cssClasses", "attr.role": "role", "attr.aria-hidden": "isAriahidden", "attr.inert": "isInert" } }, queries: [{ propertyName: "eclLink", first: true, predicate: EclLinkDirective, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n" }); }
95
95
  }
96
96
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EclNewsTickerItemComponent, decorators: [{
97
97
  type: Component,
98
- args: [{ selector: 'ecl-news-ticker-item', template: "<ng-content></ng-content>\n" }]
98
+ args: [{ selector: 'ecl-news-ticker-item', host: {
99
+ '[class]': 'cssClasses',
100
+ '[attr.role]': 'role',
101
+ '[attr.aria-hidden]': 'isAriahidden',
102
+ '[attr.inert]': 'isInert',
103
+ }, template: "<ng-content></ng-content>\n" }]
99
104
  }], propDecorators: { eclLink: [{ type: i0.ContentChild, args: [i0.forwardRef(() => EclLinkDirective), { isSignal: true }] }], itemFocused: [{
100
105
  type: Output
101
- }], cssClasses: [{
102
- type: HostBinding,
103
- args: ['class']
104
- }], role: [{
105
- type: HostBinding,
106
- args: ['attr.role']
107
- }], isAriahidden: [{
108
- type: HostBinding,
109
- args: ['attr.aria-hidden']
110
- }], isInert: [{
111
- type: HostBinding,
112
- args: ['attr.inert']
113
106
  }] } });
114
107
 
115
108
  class EclNewsTickerItemEvent extends EclBaseEvent {
@@ -416,7 +409,7 @@ class EclNewsTickerComponent extends ECLBaseDirective {
416
409
  });
417
410
  }
418
411
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EclNewsTickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
419
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.2", type: EclNewsTickerComponent, isStandalone: true, selector: "ecl-news-ticker", inputs: { isAutoplay: { classPropertyName: "isAutoplay", publicName: "isAutoplay", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemSwitch: "itemSwitch" }, host: { properties: { "class": "this.cssClasses" } }, queries: [{ propertyName: "newsTickerItems", predicate: EclNewsTickerItemComponent, isSignal: true }], viewQueries: [{ propertyName: "firstHiddenItem", first: true, predicate: ["firstHiddenItem"], descendants: true, isSignal: true }, { propertyName: "lastHiddenItem", first: true, predicate: ["lastHiddenItem"], descendants: true, isSignal: true }, { propertyName: "slidesContainer", first: true, predicate: ["slidesContainer"], descendants: true, isSignal: true }, { propertyName: "playBtn", first: true, predicate: ["playBtn"], descendants: true, isSignal: true }, { propertyName: "pauseBtn", first: true, predicate: ["pauseBtn"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ecl-news-ticker__container\">\n <div class=\"ecl-news-ticker__content\" [style.height.px]=\"contentHeight\">\n <ul class=\"ecl-news-ticker__slides\" [style.transition-duration.s]=\"transitionDuration\"\n [style.transform]=\"slidesTransform\" (mouseover)=\"onNewsTickerItemMouseOver()\"\n (mouseout)=\"onNewsTickerItemMouseOut()\" #slidesContainer>\n @if(isShowControls) {\n <ecl-news-ticker-item #firstHiddenItem></ecl-news-ticker-item>\n }\n <ng-content></ng-content>\n @if(isShowControls) {\n <ecl-news-ticker-item #lastHiddenItem></ecl-news-ticker-item>\n }\n </ul>\n </div>\n</div>\n\n@if(isShowControls) {\n<div class=\"ecl-news-ticker__controls\">\n <div class=\"ecl-news-ticker__actions\">\n <button eclButton class=\"ecl-news-ticker__prev\" variant=\"tertiary\" eclStyle=\"neutral\" isIconOnly (click)=\"onPrevious()\">\n <span eclButtonLabel>\n {{ 'ecl.news-ticker.PREV-ITEM' | translate }}\n </span>\n <ecl-icon isInverted icon=\"corner-arrow\" size=\"l\" transform=\"rotate-270\"\n class=\"ecl-news-ticker__icon-default\"></ecl-icon>\n </button>\n <button #playBtn eclButton class=\"ecl-news-ticker__play\" variant=\"tertiary\" eclStyle=\"neutral\" isIconOnly [class.ecl-u-d-none]=\"playing\"\n (click)=\"startAutoplay()\" (keydown.enter)=\"onPlayBtnEnter($event)\">\n <span class=\"ecl-u-sr-only\">\n {{ 'ecl.news-ticker.AUTO-PLAY' | translate }}\n </span>\n <ecl-icon isInverted icon=\"play-outline\" size=\"l\" class=\"ecl-news-ticker__icon-default\"></ecl-icon>\n </button>\n <button #pauseBtn eclButton class=\"ecl-news-ticker__pause\" variant=\"tertiary\" eclStyle=\"neutral\" isIconOnly [class.ecl-u-d-none]=\"!playing\"\n (click)=\"cancelAutoplay()\" (keydown.enter)=\"onPauseBtnEnter($event)\">\n <span class=\"ecl-u-sr-only\">\n {{ 'ecl.news-ticker.PAUSE' | translate }}\n </span>\n <ecl-icon isInverted icon=\"pause-outline\" size=\"l\" class=\"ecl-news-ticker__icon-default\"></ecl-icon>\n </button>\n <button eclButton class=\"ecl-news-ticker__next\" variant=\"tertiary\" eclStyle=\"neutral\" isIconOnly (click)=\"onNext()\">\n <span eclButtonLabel>\n {{ 'ecl.news-ticker.NEXT-ITEM' | translate }}\n </span>\n <ecl-icon isInverted icon=\"corner-arrow\" size=\"l\" transform=\"rotate-90\"\n class=\"ecl-news-ticker__icon-default\"></ecl-icon>\n </button>\n </div>\n <div class=\"ecl-news-ticker__counter\">\n <span class=\"ecl-news-ticker__counter--current\"> {{ itemIndex }}</span>\n {{ 'ecl.common.OF' | translate }}\n <span class=\"ecl-news-ticker__counter--max\">{{ itemsCount }}</span>\n </div>\n</div>\n}", dependencies: [{ kind: "component", type: i1.EclButtonComponent, selector: "button[eclButton], button[ecl-button], a[eclButton]", inputs: ["isIconOnly", "variant", "eclStyle", "size", "containerStyleClass"] }, { kind: "directive", type: i1.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: EclNewsTickerItemComponent, selector: "ecl-news-ticker-item", outputs: ["itemFocused"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
412
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.2", type: EclNewsTickerComponent, isStandalone: true, selector: "ecl-news-ticker", inputs: { isAutoplay: { classPropertyName: "isAutoplay", publicName: "isAutoplay", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemSwitch: "itemSwitch" }, host: { properties: { "class": "cssClasses" } }, queries: [{ propertyName: "newsTickerItems", predicate: EclNewsTickerItemComponent, isSignal: true }], viewQueries: [{ propertyName: "firstHiddenItem", first: true, predicate: ["firstHiddenItem"], descendants: true, isSignal: true }, { propertyName: "lastHiddenItem", first: true, predicate: ["lastHiddenItem"], descendants: true, isSignal: true }, { propertyName: "slidesContainer", first: true, predicate: ["slidesContainer"], descendants: true, isSignal: true }, { propertyName: "playBtn", first: true, predicate: ["playBtn"], descendants: true, isSignal: true }, { propertyName: "pauseBtn", first: true, predicate: ["pauseBtn"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ecl-news-ticker__container\">\n <div class=\"ecl-news-ticker__content\" [style.height.px]=\"contentHeight\">\n <ul class=\"ecl-news-ticker__slides\" [style.transition-duration.s]=\"transitionDuration\"\n [style.transform]=\"slidesTransform\" (mouseover)=\"onNewsTickerItemMouseOver()\"\n (mouseout)=\"onNewsTickerItemMouseOut()\" #slidesContainer>\n @if(isShowControls) {\n <ecl-news-ticker-item #firstHiddenItem></ecl-news-ticker-item>\n }\n <ng-content></ng-content>\n @if(isShowControls) {\n <ecl-news-ticker-item #lastHiddenItem></ecl-news-ticker-item>\n }\n </ul>\n </div>\n</div>\n\n@if(isShowControls) {\n<div class=\"ecl-news-ticker__controls\">\n <div class=\"ecl-news-ticker__actions\">\n <button eclButton class=\"ecl-news-ticker__prev\" variant=\"tertiary\" eclStyle=\"neutral\" isIconOnly (click)=\"onPrevious()\">\n <span eclButtonLabel>\n {{ 'ecl.news-ticker.PREV-ITEM' | translate }}\n </span>\n <ecl-icon isInverted icon=\"corner-arrow\" size=\"l\" transform=\"rotate-270\"\n class=\"ecl-news-ticker__icon-default\"></ecl-icon>\n </button>\n <button #playBtn eclButton class=\"ecl-news-ticker__play\" variant=\"tertiary\" eclStyle=\"neutral\" isIconOnly [class.ecl-u-d-none]=\"playing\"\n (click)=\"startAutoplay()\" (keydown.enter)=\"onPlayBtnEnter($event)\">\n <span class=\"ecl-u-sr-only\">\n {{ 'ecl.news-ticker.AUTO-PLAY' | translate }}\n </span>\n <ecl-icon isInverted icon=\"play-outline\" size=\"l\" class=\"ecl-news-ticker__icon-default\"></ecl-icon>\n </button>\n <button #pauseBtn eclButton class=\"ecl-news-ticker__pause\" variant=\"tertiary\" eclStyle=\"neutral\" isIconOnly [class.ecl-u-d-none]=\"!playing\"\n (click)=\"cancelAutoplay()\" (keydown.enter)=\"onPauseBtnEnter($event)\">\n <span class=\"ecl-u-sr-only\">\n {{ 'ecl.news-ticker.PAUSE' | translate }}\n </span>\n <ecl-icon isInverted icon=\"pause-outline\" size=\"l\" class=\"ecl-news-ticker__icon-default\"></ecl-icon>\n </button>\n <button eclButton class=\"ecl-news-ticker__next\" variant=\"tertiary\" eclStyle=\"neutral\" isIconOnly (click)=\"onNext()\">\n <span eclButtonLabel>\n {{ 'ecl.news-ticker.NEXT-ITEM' | translate }}\n </span>\n <ecl-icon isInverted icon=\"corner-arrow\" size=\"l\" transform=\"rotate-90\"\n class=\"ecl-news-ticker__icon-default\"></ecl-icon>\n </button>\n </div>\n <div class=\"ecl-news-ticker__counter\">\n <span class=\"ecl-news-ticker__counter--current\"> {{ itemIndex }}</span>\n {{ 'ecl.common.OF' | translate }}\n <span class=\"ecl-news-ticker__counter--max\">{{ itemsCount }}</span>\n </div>\n</div>\n}", dependencies: [{ kind: "component", type: i1.EclButtonComponent, selector: "button[eclButton], button[ecl-button], a[eclButton]", inputs: ["isIconOnly", "variant", "eclStyle", "size", "containerStyleClass"] }, { kind: "directive", type: i1.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: EclNewsTickerItemComponent, selector: "ecl-news-ticker-item", outputs: ["itemFocused"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
420
413
  }
421
414
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EclNewsTickerComponent, decorators: [{
422
415
  type: Component,
@@ -425,35 +418,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImpor
425
418
  ...EUI_ECL_ICON,
426
419
  EclNewsTickerItemComponent,
427
420
  TranslatePipe,
428
- ], template: "<div class=\"ecl-news-ticker__container\">\n <div class=\"ecl-news-ticker__content\" [style.height.px]=\"contentHeight\">\n <ul class=\"ecl-news-ticker__slides\" [style.transition-duration.s]=\"transitionDuration\"\n [style.transform]=\"slidesTransform\" (mouseover)=\"onNewsTickerItemMouseOver()\"\n (mouseout)=\"onNewsTickerItemMouseOut()\" #slidesContainer>\n @if(isShowControls) {\n <ecl-news-ticker-item #firstHiddenItem></ecl-news-ticker-item>\n }\n <ng-content></ng-content>\n @if(isShowControls) {\n <ecl-news-ticker-item #lastHiddenItem></ecl-news-ticker-item>\n }\n </ul>\n </div>\n</div>\n\n@if(isShowControls) {\n<div class=\"ecl-news-ticker__controls\">\n <div class=\"ecl-news-ticker__actions\">\n <button eclButton class=\"ecl-news-ticker__prev\" variant=\"tertiary\" eclStyle=\"neutral\" isIconOnly (click)=\"onPrevious()\">\n <span eclButtonLabel>\n {{ 'ecl.news-ticker.PREV-ITEM' | translate }}\n </span>\n <ecl-icon isInverted icon=\"corner-arrow\" size=\"l\" transform=\"rotate-270\"\n class=\"ecl-news-ticker__icon-default\"></ecl-icon>\n </button>\n <button #playBtn eclButton class=\"ecl-news-ticker__play\" variant=\"tertiary\" eclStyle=\"neutral\" isIconOnly [class.ecl-u-d-none]=\"playing\"\n (click)=\"startAutoplay()\" (keydown.enter)=\"onPlayBtnEnter($event)\">\n <span class=\"ecl-u-sr-only\">\n {{ 'ecl.news-ticker.AUTO-PLAY' | translate }}\n </span>\n <ecl-icon isInverted icon=\"play-outline\" size=\"l\" class=\"ecl-news-ticker__icon-default\"></ecl-icon>\n </button>\n <button #pauseBtn eclButton class=\"ecl-news-ticker__pause\" variant=\"tertiary\" eclStyle=\"neutral\" isIconOnly [class.ecl-u-d-none]=\"!playing\"\n (click)=\"cancelAutoplay()\" (keydown.enter)=\"onPauseBtnEnter($event)\">\n <span class=\"ecl-u-sr-only\">\n {{ 'ecl.news-ticker.PAUSE' | translate }}\n </span>\n <ecl-icon isInverted icon=\"pause-outline\" size=\"l\" class=\"ecl-news-ticker__icon-default\"></ecl-icon>\n </button>\n <button eclButton class=\"ecl-news-ticker__next\" variant=\"tertiary\" eclStyle=\"neutral\" isIconOnly (click)=\"onNext()\">\n <span eclButtonLabel>\n {{ 'ecl.news-ticker.NEXT-ITEM' | translate }}\n </span>\n <ecl-icon isInverted icon=\"corner-arrow\" size=\"l\" transform=\"rotate-90\"\n class=\"ecl-news-ticker__icon-default\"></ecl-icon>\n </button>\n </div>\n <div class=\"ecl-news-ticker__counter\">\n <span class=\"ecl-news-ticker__counter--current\"> {{ itemIndex }}</span>\n {{ 'ecl.common.OF' | translate }}\n <span class=\"ecl-news-ticker__counter--max\">{{ itemsCount }}</span>\n </div>\n</div>\n}" }]
429
- }], ctorParameters: () => [], propDecorators: { isAutoplay: [{ type: i0.Input, args: [{ isSignal: true, alias: "isAutoplay", required: false }] }], itemSwitch: [{ type: i0.Output, args: ["itemSwitch"] }], newsTickerItems: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => EclNewsTickerItemComponent), { isSignal: true }] }], firstHiddenItem: [{ type: i0.ViewChild, args: ['firstHiddenItem', { isSignal: true }] }], lastHiddenItem: [{ type: i0.ViewChild, args: ['lastHiddenItem', { isSignal: true }] }], slidesContainer: [{ type: i0.ViewChild, args: ['slidesContainer', { isSignal: true }] }], playBtn: [{ type: i0.ViewChild, args: ['playBtn', { isSignal: true }] }], pauseBtn: [{ type: i0.ViewChild, args: ['pauseBtn', { isSignal: true }] }], cssClasses: [{
430
- type: HostBinding,
431
- args: ['class']
432
- }] } });
421
+ ], host: {
422
+ '[class]': 'cssClasses',
423
+ }, template: "<div class=\"ecl-news-ticker__container\">\n <div class=\"ecl-news-ticker__content\" [style.height.px]=\"contentHeight\">\n <ul class=\"ecl-news-ticker__slides\" [style.transition-duration.s]=\"transitionDuration\"\n [style.transform]=\"slidesTransform\" (mouseover)=\"onNewsTickerItemMouseOver()\"\n (mouseout)=\"onNewsTickerItemMouseOut()\" #slidesContainer>\n @if(isShowControls) {\n <ecl-news-ticker-item #firstHiddenItem></ecl-news-ticker-item>\n }\n <ng-content></ng-content>\n @if(isShowControls) {\n <ecl-news-ticker-item #lastHiddenItem></ecl-news-ticker-item>\n }\n </ul>\n </div>\n</div>\n\n@if(isShowControls) {\n<div class=\"ecl-news-ticker__controls\">\n <div class=\"ecl-news-ticker__actions\">\n <button eclButton class=\"ecl-news-ticker__prev\" variant=\"tertiary\" eclStyle=\"neutral\" isIconOnly (click)=\"onPrevious()\">\n <span eclButtonLabel>\n {{ 'ecl.news-ticker.PREV-ITEM' | translate }}\n </span>\n <ecl-icon isInverted icon=\"corner-arrow\" size=\"l\" transform=\"rotate-270\"\n class=\"ecl-news-ticker__icon-default\"></ecl-icon>\n </button>\n <button #playBtn eclButton class=\"ecl-news-ticker__play\" variant=\"tertiary\" eclStyle=\"neutral\" isIconOnly [class.ecl-u-d-none]=\"playing\"\n (click)=\"startAutoplay()\" (keydown.enter)=\"onPlayBtnEnter($event)\">\n <span class=\"ecl-u-sr-only\">\n {{ 'ecl.news-ticker.AUTO-PLAY' | translate }}\n </span>\n <ecl-icon isInverted icon=\"play-outline\" size=\"l\" class=\"ecl-news-ticker__icon-default\"></ecl-icon>\n </button>\n <button #pauseBtn eclButton class=\"ecl-news-ticker__pause\" variant=\"tertiary\" eclStyle=\"neutral\" isIconOnly [class.ecl-u-d-none]=\"!playing\"\n (click)=\"cancelAutoplay()\" (keydown.enter)=\"onPauseBtnEnter($event)\">\n <span class=\"ecl-u-sr-only\">\n {{ 'ecl.news-ticker.PAUSE' | translate }}\n </span>\n <ecl-icon isInverted icon=\"pause-outline\" size=\"l\" class=\"ecl-news-ticker__icon-default\"></ecl-icon>\n </button>\n <button eclButton class=\"ecl-news-ticker__next\" variant=\"tertiary\" eclStyle=\"neutral\" isIconOnly (click)=\"onNext()\">\n <span eclButtonLabel>\n {{ 'ecl.news-ticker.NEXT-ITEM' | translate }}\n </span>\n <ecl-icon isInverted icon=\"corner-arrow\" size=\"l\" transform=\"rotate-90\"\n class=\"ecl-news-ticker__icon-default\"></ecl-icon>\n </button>\n </div>\n <div class=\"ecl-news-ticker__counter\">\n <span class=\"ecl-news-ticker__counter--current\"> {{ itemIndex }}</span>\n {{ 'ecl.common.OF' | translate }}\n <span class=\"ecl-news-ticker__counter--max\">{{ itemsCount }}</span>\n </div>\n</div>\n}" }]
424
+ }], ctorParameters: () => [], propDecorators: { isAutoplay: [{ type: i0.Input, args: [{ isSignal: true, alias: "isAutoplay", required: false }] }], itemSwitch: [{ type: i0.Output, args: ["itemSwitch"] }], newsTickerItems: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => EclNewsTickerItemComponent), { isSignal: true }] }], firstHiddenItem: [{ type: i0.ViewChild, args: ['firstHiddenItem', { isSignal: true }] }], lastHiddenItem: [{ type: i0.ViewChild, args: ['lastHiddenItem', { isSignal: true }] }], slidesContainer: [{ type: i0.ViewChild, args: ['slidesContainer', { isSignal: true }] }], playBtn: [{ type: i0.ViewChild, args: ['playBtn', { isSignal: true }] }], pauseBtn: [{ type: i0.ViewChild, args: ['pauseBtn', { isSignal: true }] }] } });
433
425
 
434
426
  /**
435
427
  * Directive to mark and style the icon inside a news ticker item.
436
428
  */
437
429
  class EclNewsTickerIconDirective extends ECLBaseDirective {
438
- constructor() {
439
- super(...arguments);
440
- /**
441
- * Adds the `ecl-news-ticker__icon` class to the host element.
442
- */
443
- this.hasClass = true;
444
- }
445
430
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EclNewsTickerIconDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
446
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.2", type: EclNewsTickerIconDirective, isStandalone: true, selector: "[eclNewsTickerIcon]", host: { properties: { "class.ecl-news-ticker__icon": "this.hasClass" } }, usesInheritance: true, ngImport: i0 }); }
431
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.2", type: EclNewsTickerIconDirective, isStandalone: true, selector: "[eclNewsTickerIcon]", host: { classAttribute: "ecl-news-ticker__icon" }, usesInheritance: true, ngImport: i0 }); }
447
432
  }
448
433
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EclNewsTickerIconDirective, decorators: [{
449
434
  type: Directive,
450
435
  args: [{
451
436
  selector: '[eclNewsTickerIcon]',
437
+ host: {
438
+ 'class': 'ecl-news-ticker__icon',
439
+ },
452
440
  }]
453
- }], propDecorators: { hasClass: [{
454
- type: HostBinding,
455
- args: ['class.ecl-news-ticker__icon']
456
- }] } });
441
+ }] });
457
442
 
458
443
  const EUI_ECL_NEWS_TICKER = [
459
444
  EclNewsTickerComponent,
@@ -1 +1 @@
1
- {"version":3,"file":"eui-ecl-components-ecl-news-ticker.mjs","sources":["../../components/ecl-news-ticker/ecl-news-ticker-item.component.ts","../../components/ecl-news-ticker/ecl-news-ticker-item.component.html","../../components/ecl-news-ticker/events/ecl-news-ticker-item.event.ts","../../components/ecl-news-ticker/ecl-news-ticker.component.ts","../../components/ecl-news-ticker/ecl-news-ticker.component.html","../../components/ecl-news-ticker/ecl-news-ticker-icon.directive.ts","../../components/ecl-news-ticker/index.ts","../../components/ecl-news-ticker/eui-ecl-components-ecl-news-ticker.ts"],"sourcesContent":["import { AfterContentInit, Component, ElementRef, EventEmitter, HostBinding, OnDestroy, Output, inject, Renderer2, contentChild } from '@angular/core';\nimport { fromEvent, Subject, takeUntil } from 'rxjs';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclLinkDirective } from '@eui/ecl/components/ecl-link';\n\n@Component({\n selector: 'ecl-news-ticker-item',\n templateUrl: './ecl-news-ticker-item.component.html',\n})\nexport class EclNewsTickerItemComponent extends ECLBaseDirective implements AfterContentInit, OnDestroy {\n el = inject(ElementRef);\n\n /**\n\t * Optional projected `ecl-link` element within the news ticker item.\n\t */\n readonly eclLink = contentChild(EclLinkDirective);\n\n /**\n\t * Emitted when the internal link receives focus (used to cancel autoplay).\n\t */\n @Output() itemFocused = new EventEmitter<null>();\n\n /**\n\t * HostBinding to set the component’s CSS classes.\n\t */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-news-ticker__slide')].join(' ').trim();\n }\n\n /**\n\t * Declares ARIA role as list item for accessibility.\n\t */\n @HostBinding('attr.role') role = 'listitem';\n\n /**\n\t * Whether this slide is currently visible.\n\t */\n get isCurrent(): boolean {\n return this._isCurrent;\n }\n set isCurrent(value: boolean) {\n this._isCurrent = value;\n if (this.eclLink()) {\n this.setLinkTabindex();\n }\n }\n private _isCurrent = false;\n\n /**\n\t * Sets `aria-hidden` based on current slide visibility.\n\t */\n @HostBinding('attr.aria-hidden')\n get isAriahidden(): boolean {\n return !this.isCurrent || undefined;\n }\n\n /**\n\t * Sets `inert` attribute when the item is not current (prevents interaction).\n\t */\n @HostBinding('attr.inert')\n get isInert(): boolean {\n return !this.isCurrent || undefined;\n }\n\n private destroy$: Subject<boolean> = new Subject<boolean>();\n\n /**\n\t * Lifecycle hook that sets up the internal link class and focus listener.\n\t */\n ngAfterContentInit(): void {\n const eclLink = this.eclLink();\n if (eclLink) {\n eclLink.class = 'ecl-news-ticker__slide-text';\n }\n\n if (eclLink) {\n fromEvent(eclLink.el.nativeElement, 'focus')\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.itemFocused.emit();\n });\n }\n }\n\n /**\n\t * Cleanup on destroy: unsubscribe from observables.\n\t */\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n private setLinkTabindex(): void {\n if (this._isCurrent) {\n this.eclLink().tabindex = null;\n } else {\n this.eclLink().tabindex = -1;\n }\n }\n}\n","<ng-content></ng-content>\n","import { EclBaseEvent } from '@eui/ecl/core';\n\nexport class EclNewsTickerItemEvent extends EclBaseEvent {\n constructor(public itemIndex: number) {\n super();\n }\n}","import { ChangeDetectorRef, Component, DOCUMENT, ElementRef, HostBinding, HostListener, OnDestroy, Renderer2, afterNextRender, booleanAttribute, inject, output, input, contentChildren, viewChild, OnInit } from '@angular/core';\nimport { auditTime, fromEvent, Subject, takeUntil } from 'rxjs';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclButtonComponent } from '@eui/ecl/components/ecl-button';\nimport { EclNewsTickerItemComponent } from './ecl-news-ticker-item.component';\nimport { EclNewsTickerItemEvent } from './events/ecl-news-ticker-item.event';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\n\n@Component({\n selector: 'ecl-news-ticker',\n templateUrl: './ecl-news-ticker.component.html',\n imports: [\n ...EUI_ECL_BUTTON,\n ...EUI_ECL_ICON,\n EclNewsTickerItemComponent,\n TranslatePipe,\n ],\n})\nexport class EclNewsTickerComponent extends ECLBaseDirective implements OnDestroy, OnInit {\n /**\n\t * Enables or disables automatic cycling through ticker items.\n\t * Defaults to `true`.\n\t */\n readonly isAutoplay = input(true, { transform: booleanAttribute });\n\n /**\n\t * Emits when the visible news ticker item changes.\n\t * The payload is an instance of `EclNewsTickerItemEvent`.\n\t */\n readonly itemSwitch = output<EclNewsTickerItemEvent>();\n\n /**\n\t * Query list of all `EclNewsTickerItemComponent` children projected into this component.\n\t */\n readonly newsTickerItems = contentChildren(EclNewsTickerItemComponent);\n\n /**\n\t * Reference to the hidden first item used for looping.\n\t */\n readonly firstHiddenItem = viewChild<EclNewsTickerItemComponent>('firstHiddenItem');\n\n /**\n\t * Reference to the hidden last item used for looping.\n\t */\n readonly lastHiddenItem = viewChild<EclNewsTickerItemComponent>('lastHiddenItem');\n\n /**\n\t * Reference to the container element that holds the slides.\n\t */\n readonly slidesContainer = viewChild<ElementRef>('slidesContainer');\n\n /**\n\t * Reference to the play button used to start autoplay.\n\t */\n readonly playBtn = viewChild<EclButtonComponent>('playBtn');\n\n /**\n\t * Reference to the pause button used to stop autoplay.\n\t */\n readonly pauseBtn = viewChild<EclButtonComponent>('pauseBtn');\n\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-news-ticker')].join(' ').trim();\n }\n\n itemIndex = 1;\n playing = false;\n slidesTransform = '';\n transitionDuration: number;\n private intervalId: any;\n private PLAY_INTERVAL = 5000;\n private INIT_DELAY = 300;\n private _contentHeight: number;\n private pausePlay = false;\n private unsubscribeListener: () => void;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private renderer2 = inject(Renderer2);\n private cd = inject(ChangeDetectorRef);\n private readonly document = inject<Document>(DOCUMENT);\n private readonly window = this.document.defaultView; // Window | null\n\n constructor() {\n super();\n afterNextRender(() => {\n setTimeout(() => {\n this.initContainer();\n }, this.INIT_DELAY);\n this.newsTickerItems().forEach((item) => {\n item.itemFocused.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.cancelAutoplay();\n });\n });\n this.observeResizeWindow();\n });\n }\n\n /**\n\t * Initializes the autoplay state based on the input configuration.\n\t */\n ngOnInit(): void {\n this.playing = this.isAutoplay();\n }\n\n /**\n\t * Returns the height of the currently visible ticker item.\n\t */\n get contentHeight(): number {\n return this._contentHeight;\n }\n\n /**\n\t * Returns the number of ticker items.\n\t */\n get itemsCount(): number {\n return this.newsTickerItems().length;\n }\n\n /**\n\t * Indicates whether navigation controls should be shown.\n\t */\n get isShowControls(): boolean {\n return this.newsTickerItems().length > 1;\n }\n\n /**\n\t * Lifecycle hook that clears intervals and subscriptions.\n\t */\n ngOnDestroy(): void {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n }\n if (this.unsubscribeListener) {\n this.unsubscribeListener();\n }\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n\t * Handles \"previous\" button click.\n\t * Navigates to the previous slide and stops autoplay.\n\t */\n onPrevious(): void {\n this.cancelAutoplay();\n this.previousSlide();\n }\n\n /**\n\t * Moves to the previous slide and emits `itemSwitch` event.\n\t */\n previousSlide(): void {\n this.itemIndex = this.getPrevIndex();\n if (this.itemIndex === this.itemsCount) {\n this.moveSlides(this.getFirstItem(this.getAllItemsArray()), true);\n } else {\n this.moveSlides(this.getCurrentItem(), true);\n }\n this.itemSwitch.emit(new EclNewsTickerItemEvent(this.itemIndex));\n }\n\n /**\n\t * Handles \"next\" button click.\n\t * Navigates to the next slide and stops autoplay.\n\t */\n onNext(): void {\n this.cancelAutoplay();\n this.nextSlide();\n }\n\n /**\n\t * Moves to the next slide and emits `itemSwitch` event.\n\t */\n nextSlide(): void {\n this.itemIndex = this.getNextIndex();\n if (this.itemIndex === 1) {\n this.moveSlides(this.getLastItem(this.getAllItemsArray()), true);\n } else {\n this.moveSlides(this.getCurrentItem(), true);\n }\n this.itemSwitch.emit(new EclNewsTickerItemEvent(this.itemIndex));\n }\n\n /**\n\t * Starts automatic cycling of the ticker items.\n\t */\n startAutoplay(): void {\n if (!this.playing) {\n this.playing = true;\n }\n if (this.intervalId) {\n clearInterval(this.intervalId);\n }\n this.intervalId = setInterval(() => this.nextSlide(), this.PLAY_INTERVAL);\n }\n\n /**\n\t * Cancels the automatic cycling of the ticker items.\n\t */\n cancelAutoplay(): void {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n }\n this.playing = false;\n }\n\n /**\n\t * Handles mouse over event on a ticker item.\n\t * Temporarily pauses autoplay.\n\t */\n onNewsTickerItemMouseOver(): void {\n if (this.playing) {\n this.pausePlay = true;\n this.cancelAutoplay();\n }\n }\n\n /**\n\t * Handles mouse out event from a ticker item.\n\t * Resumes autoplay if it was paused due to hover.\n\t */\n onNewsTickerItemMouseOut(): void {\n if (this.pausePlay) {\n this.pausePlay = false;\n this.startAutoplay();\n }\n }\n\n /**\n\t * Handles focus event on the \"Play\" button.\n\t * Starts autoplay and shifts focus to the \"Pause\" button.\n\t */\n onPlayBtnEnter(evt: Event): void {\n evt.preventDefault();\n this.startAutoplay();\n this.cd.detectChanges();\n this.pauseBtn().el.nativeElement.focus();\n }\n\n /**\n\t * Handles focus event on the \"Pause\" button.\n\t * Stops autoplay and shifts focus to the \"Play\" button.\n\t */\n onPauseBtnEnter(evt: Event): void {\n evt.preventDefault();\n this.cancelAutoplay();\n this.cd.detectChanges();\n this.playBtn().el.nativeElement.focus();\n }\n\n /**\n\t * Handles window resize and recalculates the layout.\n\t */\n private observeResizeWindow(): void {\n fromEvent(this.window, 'resize').pipe(\n auditTime(50),\n takeUntil(this.destroy$)).subscribe(() => {\n setTimeout(() => {\n this.resizeTicker();\n this.moveSlides(this.getCurrentItem(), false);\n });\n });\n\n }\n\n private moveSlides(item: EclNewsTickerItemComponent, withTransition: boolean): void {\n if (item) {\n const newOffset = item.el.nativeElement.offsetTop;\n const newHeight = Math.floor(item.el.nativeElement.getBoundingClientRect().height,\n );\n this._contentHeight = newHeight;\n this.transitionDuration = withTransition ? 0.4 : 0;\n this.slidesTransform = `translate3d(0px, -${newOffset}px, 0px)`;\n this.cd.detectChanges();\n this.setCurrentSlide(item);\n }\n }\n\n private initContainer(): void {\n const newsTickerItems = this.newsTickerItems();\n if (newsTickerItems.length === 1) {\n this.resizeTicker();\n this.moveSlides(this.getFirstItem(Array.from(newsTickerItems)), false);\n return;\n }\n this.firstHiddenItem().el.nativeElement.innerHTML = this.getLastContentChild();\n this.lastHiddenItem().el.nativeElement.innerHTML = this.getFirstContentChild();\n this.unsubscribeListener = this.renderer2.listen(this.slidesContainer().nativeElement, 'transitionend', () => this.checkIndex());\n this.resizeTicker();\n this.moveSlides(this.getFirstItem(Array.from(newsTickerItems)), false);\n if (this.isAutoplay()) {\n this.startAutoplay();\n }\n }\n\n private checkIndex(): void {\n if (this.itemIndex === 1) {\n const item = this.getFirstItem(Array.from(this.newsTickerItems()));\n this.moveSlides(item, false);\n } else if (this.itemIndex === this.itemsCount) {\n const item = this.getLastItem(Array.from(this.newsTickerItems()));\n this.moveSlides(item, false);\n }\n }\n\n private resizeTicker(): void {\n let highestSlide = 0;\n this.newsTickerItems().forEach((slide) => {\n const slideHeight = slide.el.nativeElement.offsetHeight;\n highestSlide = highestSlide < slideHeight ? slideHeight : highestSlide;\n });\n }\n\n private getNextIndex(): number {\n return this.itemIndex === this.itemsCount ? 1 : ++this.itemIndex;\n }\n\n private getCurrentItem(): EclNewsTickerItemComponent {\n return this.getAllItemsArray()[this.itemIndex];\n }\n\n private getPrevIndex(): number {\n return this.itemIndex === 1 ? this.itemsCount : --this.itemIndex;\n }\n\n private getFirstItem(items: EclNewsTickerItemComponent[]): EclNewsTickerItemComponent {\n return items.length > 0 ? items[0] : null;\n }\n\n private getLastItem(items: EclNewsTickerItemComponent[]): EclNewsTickerItemComponent {\n return items[items.length - 1];\n }\n\n private getLastContentChild(): string {\n return this.newsTickerItems().length > 0 ? this.newsTickerItems().at(this.itemsCount - 1).el.nativeElement.innerHTML : '';\n }\n\n private getFirstContentChild(): string {\n return this.newsTickerItems().length > 0 ? this.newsTickerItems().at(0).el.nativeElement.innerHTML : '';\n }\n\n private getAllItemsArray(): EclNewsTickerItemComponent[] {\n return [...[this.firstHiddenItem()], ...this.newsTickerItems(), ...[this.lastHiddenItem()]];\n }\n\n private setCurrentSlide(currentItem: EclNewsTickerItemComponent): void {\n this.newsTickerItems().forEach((item) => {\n item.isCurrent = false;\n if (item === currentItem) {\n item.isCurrent = true;\n }\n });\n }\n}\n","<div class=\"ecl-news-ticker__container\">\n <div class=\"ecl-news-ticker__content\" [style.height.px]=\"contentHeight\">\n <ul class=\"ecl-news-ticker__slides\" [style.transition-duration.s]=\"transitionDuration\"\n [style.transform]=\"slidesTransform\" (mouseover)=\"onNewsTickerItemMouseOver()\"\n (mouseout)=\"onNewsTickerItemMouseOut()\" #slidesContainer>\n @if(isShowControls) {\n <ecl-news-ticker-item #firstHiddenItem></ecl-news-ticker-item>\n }\n <ng-content></ng-content>\n @if(isShowControls) {\n <ecl-news-ticker-item #lastHiddenItem></ecl-news-ticker-item>\n }\n </ul>\n </div>\n</div>\n\n@if(isShowControls) {\n<div class=\"ecl-news-ticker__controls\">\n <div class=\"ecl-news-ticker__actions\">\n <button eclButton class=\"ecl-news-ticker__prev\" variant=\"tertiary\" eclStyle=\"neutral\" isIconOnly (click)=\"onPrevious()\">\n <span eclButtonLabel>\n {{ 'ecl.news-ticker.PREV-ITEM' | translate }}\n </span>\n <ecl-icon isInverted icon=\"corner-arrow\" size=\"l\" transform=\"rotate-270\"\n class=\"ecl-news-ticker__icon-default\"></ecl-icon>\n </button>\n <button #playBtn eclButton class=\"ecl-news-ticker__play\" variant=\"tertiary\" eclStyle=\"neutral\" isIconOnly [class.ecl-u-d-none]=\"playing\"\n (click)=\"startAutoplay()\" (keydown.enter)=\"onPlayBtnEnter($event)\">\n <span class=\"ecl-u-sr-only\">\n {{ 'ecl.news-ticker.AUTO-PLAY' | translate }}\n </span>\n <ecl-icon isInverted icon=\"play-outline\" size=\"l\" class=\"ecl-news-ticker__icon-default\"></ecl-icon>\n </button>\n <button #pauseBtn eclButton class=\"ecl-news-ticker__pause\" variant=\"tertiary\" eclStyle=\"neutral\" isIconOnly [class.ecl-u-d-none]=\"!playing\"\n (click)=\"cancelAutoplay()\" (keydown.enter)=\"onPauseBtnEnter($event)\">\n <span class=\"ecl-u-sr-only\">\n {{ 'ecl.news-ticker.PAUSE' | translate }}\n </span>\n <ecl-icon isInverted icon=\"pause-outline\" size=\"l\" class=\"ecl-news-ticker__icon-default\"></ecl-icon>\n </button>\n <button eclButton class=\"ecl-news-ticker__next\" variant=\"tertiary\" eclStyle=\"neutral\" isIconOnly (click)=\"onNext()\">\n <span eclButtonLabel>\n {{ 'ecl.news-ticker.NEXT-ITEM' | translate }}\n </span>\n <ecl-icon isInverted icon=\"corner-arrow\" size=\"l\" transform=\"rotate-90\"\n class=\"ecl-news-ticker__icon-default\"></ecl-icon>\n </button>\n </div>\n <div class=\"ecl-news-ticker__counter\">\n <span class=\"ecl-news-ticker__counter--current\"> {{ itemIndex }}</span>\n {{ 'ecl.common.OF' | translate }}\n <span class=\"ecl-news-ticker__counter--max\">{{ itemsCount }}</span>\n </div>\n</div>\n}","import { Directive, HostBinding } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive to mark and style the icon inside a news ticker item.\n */\n@Directive({\n selector: '[eclNewsTickerIcon]',\n})\nexport class EclNewsTickerIconDirective extends ECLBaseDirective {\n /**\n\t * Adds the `ecl-news-ticker__icon` class to the host element.\n\t */\n @HostBinding('class.ecl-news-ticker__icon') hasClass = true;\n}\n","import { EclNewsTickerComponent } from './ecl-news-ticker.component';\nimport { EclNewsTickerItemComponent } from './ecl-news-ticker-item.component';\nimport { EclNewsTickerIconDirective } from './ecl-news-ticker-icon.directive';\n\nexport * from './ecl-news-ticker.component';\nexport * from './ecl-news-ticker-item.component';\nexport * from './ecl-news-ticker-icon.directive';\nexport * from './events/ecl-news-ticker-item.event';\n\nexport const EUI_ECL_NEWS_TICKER = [\n EclNewsTickerComponent,\n EclNewsTickerItemComponent,\n EclNewsTickerIconDirective,\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-news-ticker.mjs","sources":["../../components/ecl-news-ticker/ecl-news-ticker-item.component.ts","../../components/ecl-news-ticker/ecl-news-ticker-item.component.html","../../components/ecl-news-ticker/events/ecl-news-ticker-item.event.ts","../../components/ecl-news-ticker/ecl-news-ticker.component.ts","../../components/ecl-news-ticker/ecl-news-ticker.component.html","../../components/ecl-news-ticker/ecl-news-ticker-icon.directive.ts","../../components/ecl-news-ticker/index.ts","../../components/ecl-news-ticker/eui-ecl-components-ecl-news-ticker.ts"],"sourcesContent":["import { AfterContentInit, Component, ElementRef, EventEmitter, OnDestroy, Output, inject, contentChild } from '@angular/core';\nimport { fromEvent, Subject, takeUntil } from 'rxjs';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclLinkDirective } from '@eui/ecl/components/ecl-link';\n\n@Component({\n selector: 'ecl-news-ticker-item',\n templateUrl: './ecl-news-ticker-item.component.html',\n host: {\n '[class]': 'cssClasses',\n '[attr.role]': 'role',\n '[attr.aria-hidden]': 'isAriahidden',\n '[attr.inert]': 'isInert',\n },\n})\nexport class EclNewsTickerItemComponent extends ECLBaseDirective implements AfterContentInit, OnDestroy {\n el = inject(ElementRef);\n\n /**\n\t * Optional projected `ecl-link` element within the news ticker item.\n\t */\n readonly eclLink = contentChild(EclLinkDirective);\n\n /**\n\t * Emitted when the internal link receives focus (used to cancel autoplay).\n\t */\n @Output() itemFocused = new EventEmitter<null>();\n\n /**\n\t * Declares ARIA role as list item for accessibility.\n\t */\n role = 'listitem';\n\n /**\n\t * Sets the component’s CSS classes.\n\t */\n get cssClasses(): string {\n return [super.getCssClasses('ecl-news-ticker__slide')].join(' ').trim();\n }\n\n /**\n\t * Whether this slide is currently visible.\n\t */\n get isCurrent(): boolean {\n return this._isCurrent;\n }\n set isCurrent(value: boolean) {\n this._isCurrent = value;\n if (this.eclLink()) {\n this.setLinkTabindex();\n }\n }\n private _isCurrent = false;\n\n /**\n\t * Sets `aria-hidden` based on current slide visibility.\n\t */\n get isAriahidden(): boolean {\n return !this.isCurrent || undefined;\n }\n\n /**\n\t * Sets `inert` attribute when the item is not current (prevents interaction).\n\t */\n get isInert(): boolean {\n return !this.isCurrent || undefined;\n }\n\n private destroy$: Subject<boolean> = new Subject<boolean>();\n\n /**\n\t * Lifecycle hook that sets up the internal link class and focus listener.\n\t */\n ngAfterContentInit(): void {\n const eclLink = this.eclLink();\n if (eclLink) {\n eclLink.class = 'ecl-news-ticker__slide-text';\n }\n\n if (eclLink) {\n fromEvent(eclLink.el.nativeElement, 'focus')\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.itemFocused.emit();\n });\n }\n }\n\n /**\n\t * Cleanup on destroy: unsubscribe from observables.\n\t */\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n private setLinkTabindex(): void {\n if (this._isCurrent) {\n this.eclLink().tabindex = null;\n } else {\n this.eclLink().tabindex = -1;\n }\n }\n}\n","<ng-content></ng-content>\n","import { EclBaseEvent } from '@eui/ecl/core';\n\nexport class EclNewsTickerItemEvent extends EclBaseEvent {\n constructor(public itemIndex: number) {\n super();\n }\n}","import { ChangeDetectorRef, Component, DOCUMENT, ElementRef, OnDestroy, Renderer2, afterNextRender, booleanAttribute, inject, output, input, contentChildren, viewChild, OnInit } from '@angular/core';\nimport { auditTime, fromEvent, Subject, takeUntil } from 'rxjs';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclButtonComponent } from '@eui/ecl/components/ecl-button';\nimport { EclNewsTickerItemComponent } from './ecl-news-ticker-item.component';\nimport { EclNewsTickerItemEvent } from './events/ecl-news-ticker-item.event';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\n\n@Component({\n selector: 'ecl-news-ticker',\n templateUrl: './ecl-news-ticker.component.html',\n imports: [\n ...EUI_ECL_BUTTON,\n ...EUI_ECL_ICON,\n EclNewsTickerItemComponent,\n TranslatePipe,\n ],\n host: {\n '[class]': 'cssClasses',\n },\n})\nexport class EclNewsTickerComponent extends ECLBaseDirective implements OnDestroy, OnInit {\n /**\n\t * Enables or disables automatic cycling through ticker items.\n\t * Defaults to `true`.\n\t */\n readonly isAutoplay = input(true, { transform: booleanAttribute });\n\n /**\n\t * Emits when the visible news ticker item changes.\n\t * The payload is an instance of `EclNewsTickerItemEvent`.\n\t */\n readonly itemSwitch = output<EclNewsTickerItemEvent>();\n\n /**\n\t * Query list of all `EclNewsTickerItemComponent` children projected into this component.\n\t */\n readonly newsTickerItems = contentChildren(EclNewsTickerItemComponent);\n\n /**\n\t * Reference to the hidden first item used for looping.\n\t */\n readonly firstHiddenItem = viewChild<EclNewsTickerItemComponent>('firstHiddenItem');\n\n /**\n\t * Reference to the hidden last item used for looping.\n\t */\n readonly lastHiddenItem = viewChild<EclNewsTickerItemComponent>('lastHiddenItem');\n\n /**\n\t * Reference to the container element that holds the slides.\n\t */\n readonly slidesContainer = viewChild<ElementRef>('slidesContainer');\n\n /**\n\t * Reference to the play button used to start autoplay.\n\t */\n readonly playBtn = viewChild<EclButtonComponent>('playBtn');\n\n /**\n\t * Reference to the pause button used to stop autoplay.\n\t */\n readonly pauseBtn = viewChild<EclButtonComponent>('pauseBtn');\n\n get cssClasses(): string {\n return [super.getCssClasses('ecl-news-ticker')].join(' ').trim();\n }\n\n itemIndex = 1;\n playing = false;\n slidesTransform = '';\n transitionDuration: number;\n private intervalId: any;\n private PLAY_INTERVAL = 5000;\n private INIT_DELAY = 300;\n private _contentHeight: number;\n private pausePlay = false;\n private unsubscribeListener: () => void;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private renderer2 = inject(Renderer2);\n private cd = inject(ChangeDetectorRef);\n private readonly document = inject<Document>(DOCUMENT);\n private readonly window = this.document.defaultView; // Window | null\n\n constructor() {\n super();\n afterNextRender(() => {\n setTimeout(() => {\n this.initContainer();\n }, this.INIT_DELAY);\n this.newsTickerItems().forEach((item) => {\n item.itemFocused.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.cancelAutoplay();\n });\n });\n this.observeResizeWindow();\n });\n }\n\n /**\n\t * Initializes the autoplay state based on the input configuration.\n\t */\n ngOnInit(): void {\n this.playing = this.isAutoplay();\n }\n\n /**\n\t * Returns the height of the currently visible ticker item.\n\t */\n get contentHeight(): number {\n return this._contentHeight;\n }\n\n /**\n\t * Returns the number of ticker items.\n\t */\n get itemsCount(): number {\n return this.newsTickerItems().length;\n }\n\n /**\n\t * Indicates whether navigation controls should be shown.\n\t */\n get isShowControls(): boolean {\n return this.newsTickerItems().length > 1;\n }\n\n /**\n\t * Lifecycle hook that clears intervals and subscriptions.\n\t */\n ngOnDestroy(): void {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n }\n if (this.unsubscribeListener) {\n this.unsubscribeListener();\n }\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n\t * Handles \"previous\" button click.\n\t * Navigates to the previous slide and stops autoplay.\n\t */\n onPrevious(): void {\n this.cancelAutoplay();\n this.previousSlide();\n }\n\n /**\n\t * Moves to the previous slide and emits `itemSwitch` event.\n\t */\n previousSlide(): void {\n this.itemIndex = this.getPrevIndex();\n if (this.itemIndex === this.itemsCount) {\n this.moveSlides(this.getFirstItem(this.getAllItemsArray()), true);\n } else {\n this.moveSlides(this.getCurrentItem(), true);\n }\n this.itemSwitch.emit(new EclNewsTickerItemEvent(this.itemIndex));\n }\n\n /**\n\t * Handles \"next\" button click.\n\t * Navigates to the next slide and stops autoplay.\n\t */\n onNext(): void {\n this.cancelAutoplay();\n this.nextSlide();\n }\n\n /**\n\t * Moves to the next slide and emits `itemSwitch` event.\n\t */\n nextSlide(): void {\n this.itemIndex = this.getNextIndex();\n if (this.itemIndex === 1) {\n this.moveSlides(this.getLastItem(this.getAllItemsArray()), true);\n } else {\n this.moveSlides(this.getCurrentItem(), true);\n }\n this.itemSwitch.emit(new EclNewsTickerItemEvent(this.itemIndex));\n }\n\n /**\n\t * Starts automatic cycling of the ticker items.\n\t */\n startAutoplay(): void {\n if (!this.playing) {\n this.playing = true;\n }\n if (this.intervalId) {\n clearInterval(this.intervalId);\n }\n this.intervalId = setInterval(() => this.nextSlide(), this.PLAY_INTERVAL);\n }\n\n /**\n\t * Cancels the automatic cycling of the ticker items.\n\t */\n cancelAutoplay(): void {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n }\n this.playing = false;\n }\n\n /**\n\t * Handles mouse over event on a ticker item.\n\t * Temporarily pauses autoplay.\n\t */\n onNewsTickerItemMouseOver(): void {\n if (this.playing) {\n this.pausePlay = true;\n this.cancelAutoplay();\n }\n }\n\n /**\n\t * Handles mouse out event from a ticker item.\n\t * Resumes autoplay if it was paused due to hover.\n\t */\n onNewsTickerItemMouseOut(): void {\n if (this.pausePlay) {\n this.pausePlay = false;\n this.startAutoplay();\n }\n }\n\n /**\n\t * Handles focus event on the \"Play\" button.\n\t * Starts autoplay and shifts focus to the \"Pause\" button.\n\t */\n onPlayBtnEnter(evt: Event): void {\n evt.preventDefault();\n this.startAutoplay();\n this.cd.detectChanges();\n this.pauseBtn().el.nativeElement.focus();\n }\n\n /**\n\t * Handles focus event on the \"Pause\" button.\n\t * Stops autoplay and shifts focus to the \"Play\" button.\n\t */\n onPauseBtnEnter(evt: Event): void {\n evt.preventDefault();\n this.cancelAutoplay();\n this.cd.detectChanges();\n this.playBtn().el.nativeElement.focus();\n }\n\n /**\n\t * Handles window resize and recalculates the layout.\n\t */\n private observeResizeWindow(): void {\n fromEvent(this.window, 'resize').pipe(\n auditTime(50),\n takeUntil(this.destroy$)).subscribe(() => {\n setTimeout(() => {\n this.resizeTicker();\n this.moveSlides(this.getCurrentItem(), false);\n });\n });\n\n }\n\n private moveSlides(item: EclNewsTickerItemComponent, withTransition: boolean): void {\n if (item) {\n const newOffset = item.el.nativeElement.offsetTop;\n const newHeight = Math.floor(item.el.nativeElement.getBoundingClientRect().height,\n );\n this._contentHeight = newHeight;\n this.transitionDuration = withTransition ? 0.4 : 0;\n this.slidesTransform = `translate3d(0px, -${newOffset}px, 0px)`;\n this.cd.detectChanges();\n this.setCurrentSlide(item);\n }\n }\n\n private initContainer(): void {\n const newsTickerItems = this.newsTickerItems();\n if (newsTickerItems.length === 1) {\n this.resizeTicker();\n this.moveSlides(this.getFirstItem(Array.from(newsTickerItems)), false);\n return;\n }\n this.firstHiddenItem().el.nativeElement.innerHTML = this.getLastContentChild();\n this.lastHiddenItem().el.nativeElement.innerHTML = this.getFirstContentChild();\n this.unsubscribeListener = this.renderer2.listen(this.slidesContainer().nativeElement, 'transitionend', () => this.checkIndex());\n this.resizeTicker();\n this.moveSlides(this.getFirstItem(Array.from(newsTickerItems)), false);\n if (this.isAutoplay()) {\n this.startAutoplay();\n }\n }\n\n private checkIndex(): void {\n if (this.itemIndex === 1) {\n const item = this.getFirstItem(Array.from(this.newsTickerItems()));\n this.moveSlides(item, false);\n } else if (this.itemIndex === this.itemsCount) {\n const item = this.getLastItem(Array.from(this.newsTickerItems()));\n this.moveSlides(item, false);\n }\n }\n\n private resizeTicker(): void {\n let highestSlide = 0;\n this.newsTickerItems().forEach((slide) => {\n const slideHeight = slide.el.nativeElement.offsetHeight;\n highestSlide = highestSlide < slideHeight ? slideHeight : highestSlide;\n });\n }\n\n private getNextIndex(): number {\n return this.itemIndex === this.itemsCount ? 1 : ++this.itemIndex;\n }\n\n private getCurrentItem(): EclNewsTickerItemComponent {\n return this.getAllItemsArray()[this.itemIndex];\n }\n\n private getPrevIndex(): number {\n return this.itemIndex === 1 ? this.itemsCount : --this.itemIndex;\n }\n\n private getFirstItem(items: EclNewsTickerItemComponent[]): EclNewsTickerItemComponent {\n return items.length > 0 ? items[0] : null;\n }\n\n private getLastItem(items: EclNewsTickerItemComponent[]): EclNewsTickerItemComponent {\n return items[items.length - 1];\n }\n\n private getLastContentChild(): string {\n return this.newsTickerItems().length > 0 ? this.newsTickerItems().at(this.itemsCount - 1).el.nativeElement.innerHTML : '';\n }\n\n private getFirstContentChild(): string {\n return this.newsTickerItems().length > 0 ? this.newsTickerItems().at(0).el.nativeElement.innerHTML : '';\n }\n\n private getAllItemsArray(): EclNewsTickerItemComponent[] {\n return [...[this.firstHiddenItem()], ...this.newsTickerItems(), ...[this.lastHiddenItem()]];\n }\n\n private setCurrentSlide(currentItem: EclNewsTickerItemComponent): void {\n this.newsTickerItems().forEach((item) => {\n item.isCurrent = false;\n if (item === currentItem) {\n item.isCurrent = true;\n }\n });\n }\n}\n","<div class=\"ecl-news-ticker__container\">\n <div class=\"ecl-news-ticker__content\" [style.height.px]=\"contentHeight\">\n <ul class=\"ecl-news-ticker__slides\" [style.transition-duration.s]=\"transitionDuration\"\n [style.transform]=\"slidesTransform\" (mouseover)=\"onNewsTickerItemMouseOver()\"\n (mouseout)=\"onNewsTickerItemMouseOut()\" #slidesContainer>\n @if(isShowControls) {\n <ecl-news-ticker-item #firstHiddenItem></ecl-news-ticker-item>\n }\n <ng-content></ng-content>\n @if(isShowControls) {\n <ecl-news-ticker-item #lastHiddenItem></ecl-news-ticker-item>\n }\n </ul>\n </div>\n</div>\n\n@if(isShowControls) {\n<div class=\"ecl-news-ticker__controls\">\n <div class=\"ecl-news-ticker__actions\">\n <button eclButton class=\"ecl-news-ticker__prev\" variant=\"tertiary\" eclStyle=\"neutral\" isIconOnly (click)=\"onPrevious()\">\n <span eclButtonLabel>\n {{ 'ecl.news-ticker.PREV-ITEM' | translate }}\n </span>\n <ecl-icon isInverted icon=\"corner-arrow\" size=\"l\" transform=\"rotate-270\"\n class=\"ecl-news-ticker__icon-default\"></ecl-icon>\n </button>\n <button #playBtn eclButton class=\"ecl-news-ticker__play\" variant=\"tertiary\" eclStyle=\"neutral\" isIconOnly [class.ecl-u-d-none]=\"playing\"\n (click)=\"startAutoplay()\" (keydown.enter)=\"onPlayBtnEnter($event)\">\n <span class=\"ecl-u-sr-only\">\n {{ 'ecl.news-ticker.AUTO-PLAY' | translate }}\n </span>\n <ecl-icon isInverted icon=\"play-outline\" size=\"l\" class=\"ecl-news-ticker__icon-default\"></ecl-icon>\n </button>\n <button #pauseBtn eclButton class=\"ecl-news-ticker__pause\" variant=\"tertiary\" eclStyle=\"neutral\" isIconOnly [class.ecl-u-d-none]=\"!playing\"\n (click)=\"cancelAutoplay()\" (keydown.enter)=\"onPauseBtnEnter($event)\">\n <span class=\"ecl-u-sr-only\">\n {{ 'ecl.news-ticker.PAUSE' | translate }}\n </span>\n <ecl-icon isInverted icon=\"pause-outline\" size=\"l\" class=\"ecl-news-ticker__icon-default\"></ecl-icon>\n </button>\n <button eclButton class=\"ecl-news-ticker__next\" variant=\"tertiary\" eclStyle=\"neutral\" isIconOnly (click)=\"onNext()\">\n <span eclButtonLabel>\n {{ 'ecl.news-ticker.NEXT-ITEM' | translate }}\n </span>\n <ecl-icon isInverted icon=\"corner-arrow\" size=\"l\" transform=\"rotate-90\"\n class=\"ecl-news-ticker__icon-default\"></ecl-icon>\n </button>\n </div>\n <div class=\"ecl-news-ticker__counter\">\n <span class=\"ecl-news-ticker__counter--current\"> {{ itemIndex }}</span>\n {{ 'ecl.common.OF' | translate }}\n <span class=\"ecl-news-ticker__counter--max\">{{ itemsCount }}</span>\n </div>\n</div>\n}","import { Directive } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive to mark and style the icon inside a news ticker item.\n */\n@Directive({\n selector: '[eclNewsTickerIcon]',\n host: {\n 'class': 'ecl-news-ticker__icon',\n },\n})\nexport class EclNewsTickerIconDirective extends ECLBaseDirective {\n}\n","import { EclNewsTickerComponent } from './ecl-news-ticker.component';\nimport { EclNewsTickerItemComponent } from './ecl-news-ticker-item.component';\nimport { EclNewsTickerIconDirective } from './ecl-news-ticker-icon.directive';\n\nexport * from './ecl-news-ticker.component';\nexport * from './ecl-news-ticker-item.component';\nexport * from './ecl-news-ticker-icon.directive';\nexport * from './events/ecl-news-ticker-item.event';\n\nexport const EUI_ECL_NEWS_TICKER = [\n EclNewsTickerComponent,\n EclNewsTickerItemComponent,\n EclNewsTickerIconDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}