@eui/ecl 23.0.0-alpha.10 → 23.0.0-alpha.11

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 (231) hide show
  1. package/assets/i18n-ecl/bg.json +13 -2
  2. package/assets/i18n-ecl/cs.json +13 -2
  3. package/assets/i18n-ecl/da.json +13 -2
  4. package/assets/i18n-ecl/de.json +13 -2
  5. package/assets/i18n-ecl/el.json +13 -2
  6. package/assets/i18n-ecl/en.json +13 -2
  7. package/assets/i18n-ecl/es.json +13 -2
  8. package/assets/i18n-ecl/et.json +13 -2
  9. package/assets/i18n-ecl/fi.json +13 -2
  10. package/assets/i18n-ecl/fr.json +13 -2
  11. package/assets/i18n-ecl/ga.json +13 -2
  12. package/assets/i18n-ecl/hr.json +13 -2
  13. package/assets/i18n-ecl/hu.json +13 -2
  14. package/assets/i18n-ecl/it.json +13 -2
  15. package/assets/i18n-ecl/lt.json +13 -2
  16. package/assets/i18n-ecl/lv.json +13 -2
  17. package/assets/i18n-ecl/mt.json +13 -2
  18. package/assets/i18n-ecl/nl.json +13 -2
  19. package/assets/i18n-ecl/pl.json +13 -2
  20. package/assets/i18n-ecl/pt.json +13 -2
  21. package/assets/i18n-ecl/ro.json +13 -2
  22. package/assets/i18n-ecl/sk.json +13 -2
  23. package/assets/i18n-ecl/sl.json +13 -2
  24. package/assets/i18n-ecl/sv.json +13 -2
  25. package/components/ecl-highlighted-search/package.json +4 -0
  26. package/components/ecl-story-card/package.json +4 -0
  27. package/docs/changelog.html +10 -0
  28. package/docs/classes/EclBaseEvent.html +3 -0
  29. package/docs/classes/EclHighlightedSearchEvent.html +443 -0
  30. package/docs/components/EclAccordionSummaryComponent.html +2 -79
  31. package/docs/components/EclAddToCalendarComponent.html +2 -2
  32. package/docs/components/EclAnimatedNumbersComponent.html +2 -2
  33. package/docs/components/EclAnimatedNumbersItemComponent.html +2 -2
  34. package/docs/components/EclAppComponent.html +2 -2
  35. package/docs/components/EclBannerComponent.html +2 -2
  36. package/docs/components/EclBlockquoteComponent.html +2 -2
  37. package/docs/components/EclBreadcrumbComponent.html +2 -2
  38. package/docs/components/EclBreadcrumbSegmentComponent.html +2 -2
  39. package/docs/components/EclButtonComponent.html +2 -2
  40. package/docs/components/EclCardBodyComponent.html +2 -2
  41. package/docs/components/EclCardComponent.html +2 -2
  42. package/docs/components/EclCarouselComponent.html +2 -2
  43. package/docs/components/EclCarouselItemComponent.html +2 -2
  44. package/docs/components/EclCategoryFilterComponent.html +2 -2
  45. package/docs/components/EclCategoryFilterItemComponent.html +2 -2
  46. package/docs/components/EclCategoryFilterListComponent.html +2 -2
  47. package/docs/components/EclCheckboxHelpComponent.html +2 -2
  48. package/docs/components/EclCheckboxLabelComponent.html +2 -2
  49. package/docs/components/EclContentBlockComponent.html +2 -2
  50. package/docs/components/EclContentItemComponent.html +2 -2
  51. package/docs/components/EclDateBlockComponent.html +2 -2
  52. package/docs/components/EclDescriptionListDefinitionComponent.html +2 -2
  53. package/docs/components/EclExpandableComponent.html +2 -2
  54. package/docs/components/EclFactFiguresComponent.html +2 -2
  55. package/docs/components/EclFactFiguresItemComponent.html +2 -2
  56. package/docs/components/EclFactFiguresViewAllComponent.html +2 -2
  57. package/docs/components/EclFeaturedComponent.html +2 -2
  58. package/docs/components/EclFeaturedItemComponent.html +2 -2
  59. package/docs/components/EclFeaturedItemDescriptionComponent.html +2 -2
  60. package/docs/components/EclFileComponent.html +234 -110
  61. package/docs/components/EclFileItemComponent.html +13 -250
  62. package/docs/components/EclFileItemsComponent.html +34 -313
  63. package/docs/components/{EclFileTaxonomyComponent.html → EclFileListsComponent.html} +16 -107
  64. package/docs/components/EclFormGroupComponent.html +2 -2
  65. package/docs/components/EclFormLabelComponent.html +2 -2
  66. package/docs/components/EclGalleryComponent.html +2 -2
  67. package/docs/components/EclGalleryFooterComponent.html +2 -2
  68. package/docs/components/EclGalleryItemComponent.html +3 -3
  69. package/docs/components/EclHighlightBoxComponent.html +2 -2
  70. package/docs/components/EclHighlightedSearchComponent.html +1042 -0
  71. package/docs/components/EclIconComponent.html +5 -2
  72. package/docs/components/EclIndicatorComponent-1.html +2 -2
  73. package/docs/components/EclIndicatorComponent.html +2 -2
  74. package/docs/components/EclInpageNavigationComponent.html +2 -2
  75. package/docs/components/EclInpageNavigationItemComponent.html +2 -2
  76. package/docs/components/EclLayoutWrapperComponent.html +6 -109
  77. package/docs/components/EclListIllustrationComponent.html +2 -2
  78. package/docs/components/EclListIllustrationItemComponent.html +2 -2
  79. package/docs/components/EclLoadingIndicatorComponent.html +2 -2
  80. package/docs/components/EclMediaContainerComponent.html +2 -2
  81. package/docs/components/EclMegaMenuComponent.html +2 -2
  82. package/docs/components/EclMegaMenuFeaturedComponent.html +2 -2
  83. package/docs/components/EclMegaMenuInfoComponent.html +2 -2
  84. package/docs/components/EclMegaMenuItemComponent.html +2 -2
  85. package/docs/components/EclMegaMenuSubitemComponent.html +2 -2
  86. package/docs/components/EclMenuComponent.html +2 -2
  87. package/docs/components/EclMenuItemComponent.html +2 -2
  88. package/docs/components/EclMenuMegaComponent.html +2 -2
  89. package/docs/components/EclMenuMegaItemComponent.html +2 -2
  90. package/docs/components/EclModalBodyComponent.html +2 -2
  91. package/docs/components/EclModalComponent.html +2 -2
  92. package/docs/components/EclModalFooterComponent.html +2 -2
  93. package/docs/components/EclModalHeaderComponent.html +2 -2
  94. package/docs/components/EclMultiselectComponent.html +2 -2
  95. package/docs/components/EclMultiselectDropdownComponent.html +13 -98
  96. package/docs/components/EclMultiselectInputComponent.html +2 -2
  97. package/docs/components/EclMultiselectOptgroupComponent.html +2 -2
  98. package/docs/components/EclMultiselectOptionComponent.html +2 -2
  99. package/docs/components/EclNavigationListComponent.html +2 -2
  100. package/docs/components/EclNavigationListItemComponent.html +2 -2
  101. package/docs/components/EclNewsTickerComponent.html +2 -2
  102. package/docs/components/EclNewsTickerItemComponent.html +2 -2
  103. package/docs/components/EclNotificationComponent.html +2 -2
  104. package/docs/components/EclPageHeaderComponent.html +2 -2
  105. package/docs/components/EclPageHeaderDescriptionContainerComponent.html +2 -2
  106. package/docs/components/EclPageHeaderExpandableComponent.html +2 -2
  107. package/docs/components/EclPageHeaderNextComponent.html +2 -2
  108. package/docs/components/EclPageHeaderSectionComponent.html +2 -2
  109. package/docs/components/EclPageHeaderSectionInfoComponent.html +2 -2
  110. package/docs/components/EclPageSummaryComponent.html +2 -2
  111. package/docs/components/EclPaginationComponent.html +2 -2
  112. package/docs/components/EclPaginationItemComponent.html +2 -2
  113. package/docs/components/EclPopoverComponent.html +2 -2
  114. package/docs/components/EclQuizCardComponent.html +2 -2
  115. package/docs/components/EclQuizComponent.html +3 -3
  116. package/docs/components/EclRadioHelpComponent.html +2 -2
  117. package/docs/components/EclRadioLabelComponent.html +2 -2
  118. package/docs/components/EclRangeBubbleComponent.html +2 -2
  119. package/docs/components/EclRangeValueComponent.html +2 -2
  120. package/docs/components/EclRatingFieldComponent.html +2 -2
  121. package/docs/components/EclSearchFormComponent.html +2 -2
  122. package/docs/components/EclSelectContainerComponent.html +2 -2
  123. package/docs/components/EclSiteFooterComponent.html +2 -2
  124. package/docs/components/EclSiteFooterCoownerComponent.html +2 -2
  125. package/docs/components/EclSiteFooterCoreComponent.html +2 -2
  126. package/docs/components/EclSiteFooterFeedbackComponent.html +2 -2
  127. package/docs/components/EclSiteFooterFixedContentEUComponent.html +2 -2
  128. package/docs/components/EclSiteFooterRowCommonComponent.html +2 -2
  129. package/docs/components/EclSiteHeaderActionComponent.html +2 -2
  130. package/docs/components/EclSiteHeaderBannerTopComponent.html +2 -2
  131. package/docs/components/EclSiteHeaderComponent.html +2 -2
  132. package/docs/components/EclSiteHeaderCustomActionComponent.html +2 -2
  133. package/docs/components/EclSiteHeaderEnvironmentComponent.html +2 -2
  134. package/docs/components/EclSiteHeaderLanguageComponent.html +2 -2
  135. package/docs/components/EclSiteHeaderLanguagePopoverComponent.html +2 -2
  136. package/docs/components/EclSiteHeaderLoginComponent.html +2 -2
  137. package/docs/components/EclSiteHeaderNotificationComponent.html +2 -2
  138. package/docs/components/EclSiteHeaderSearchComponent.html +2 -2
  139. package/docs/components/EclSloganTickerComponent.html +2 -2
  140. package/docs/components/EclSocialMediaFollowComponent.html +2 -2
  141. package/docs/components/EclSocialMediaFollowItemComponent.html +2 -2
  142. package/docs/components/EclSplashPageComponent.html +2 -2
  143. package/docs/components/EclSplashPageLanguageCategoryComponent.html +2 -2
  144. package/docs/components/EclSplashPageLanguageContainerComponent.html +2 -2
  145. package/docs/components/EclSplashPageLanguageLinkComponent.html +2 -2
  146. package/docs/components/EclSpotlightComponent.html +2 -2
  147. package/docs/components/EclSpotlightLinkComponent.html +2 -2
  148. package/docs/components/EclStickyContainerComponent.html +2 -2
  149. package/docs/components/EclStoryCardComponent.html +908 -0
  150. package/docs/components/EclStoryCardGridDetailsComponent.html +946 -0
  151. package/docs/components/EclStoryCardItemComponent.html +916 -0
  152. package/docs/components/EclTabComponent.html +2 -2
  153. package/docs/components/EclTabLabelComponent.html +2 -2
  154. package/docs/components/EclTableSortButtonComponent.html +2 -2
  155. package/docs/components/EclTabsComponent.html +2 -2
  156. package/docs/components/EclTagComponent.html +2 -2
  157. package/docs/components/EclTextMediaComponent.html +2 -2
  158. package/docs/components/EclTimelineComponent.html +2 -2
  159. package/docs/components/EclTimelineItemComponent.html +2 -2
  160. package/docs/components/EclTimelineItemTogglerComponent.html +2 -2
  161. package/docs/directives/ECLBaseDirective.html +4 -4
  162. package/docs/directives/EclAccordionDirective.html +33 -36
  163. package/docs/directives/EclFileDownloadDirective.html +0 -116
  164. package/docs/directives/EclFileImageDirective.html +0 -116
  165. package/docs/directives/EclFileMetaDirective.html +488 -0
  166. package/docs/directives/EclFilePictureDirective.html +0 -95
  167. package/docs/directives/EclFilePreviewDirective.html +1 -199
  168. package/docs/directives/EclFileTitleDirective.html +0 -146
  169. package/docs/directives/EclFileTranslationDownloadDirective.html +0 -116
  170. package/docs/directives/EclHighlightedSearchSuggestionsDirective.html +394 -0
  171. package/docs/directives/EclLayoutItemDirective.html +0 -32
  172. package/docs/directives/EclStoryCardLinkDirective.html +491 -0
  173. package/docs/directives/EclStoryCardListDirective.html +491 -0
  174. package/docs/directives/EclStoryCardPictureDirective.html +497 -0
  175. package/docs/interfaces/EclStoryCardSelectionEvent.html +317 -0
  176. package/docs/js/menu-wc.js +34 -1
  177. package/docs/js/search/search_index.js +2 -2
  178. package/docs/json/EclAccordionDirective.md +1 -0
  179. package/docs/json/EclFileComponent.md +43 -7
  180. package/docs/json/EclFileItemComponent.md +6 -6
  181. package/docs/json/EclFileItemsComponent.md +6 -6
  182. package/docs/json/EclFileListsComponent.md +15 -0
  183. package/docs/json/EclFileMetaDirective.md +16 -0
  184. package/docs/json/EclFilePreviewDirective.md +1 -1
  185. package/docs/json/EclFileTitleDirective.md +0 -1
  186. package/docs/json/EclHighlightedSearchComponent.md +46 -0
  187. package/docs/json/EclHighlightedSearchSuggestionsDirective.md +13 -0
  188. package/docs/json/EclLayoutWrapperComponent.md +2 -2
  189. package/docs/json/EclStoryCardComponent.md +43 -0
  190. package/docs/json/EclStoryCardGridDetailsComponent.md +39 -0
  191. package/docs/json/EclStoryCardItemComponent.md +35 -0
  192. package/docs/json/EclStoryCardLinkDirective.md +19 -0
  193. package/docs/json/EclStoryCardListDirective.md +19 -0
  194. package/docs/json/EclStoryCardPictureDirective.md +22 -0
  195. package/docs/json/documentation.json +5287 -2643
  196. package/docs/llms.txt +242 -60
  197. package/docs/miscellaneous/variables.html +112 -1
  198. package/docs/overview.html +4 -4
  199. package/docs/properties.html +1 -1
  200. package/fesm2022/eui-ecl-components-ecl-accordion.mjs +46 -15
  201. package/fesm2022/eui-ecl-components-ecl-accordion.mjs.map +1 -1
  202. package/fesm2022/eui-ecl-components-ecl-file.mjs +284 -275
  203. package/fesm2022/eui-ecl-components-ecl-file.mjs.map +1 -1
  204. package/fesm2022/eui-ecl-components-ecl-gallery.mjs +2 -2
  205. package/fesm2022/eui-ecl-components-ecl-gallery.mjs.map +1 -1
  206. package/fesm2022/eui-ecl-components-ecl-highlighted-search.mjs +193 -0
  207. package/fesm2022/eui-ecl-components-ecl-highlighted-search.mjs.map +1 -0
  208. package/fesm2022/eui-ecl-components-ecl-layout-wrapper.mjs +10 -11
  209. package/fesm2022/eui-ecl-components-ecl-layout-wrapper.mjs.map +1 -1
  210. package/fesm2022/eui-ecl-components-ecl-multiselect.mjs +26 -36
  211. package/fesm2022/eui-ecl-components-ecl-multiselect.mjs.map +1 -1
  212. package/fesm2022/eui-ecl-components-ecl-quiz.mjs +36 -2
  213. package/fesm2022/eui-ecl-components-ecl-quiz.mjs.map +1 -1
  214. package/fesm2022/eui-ecl-components-ecl-story-card.mjs +505 -0
  215. package/fesm2022/eui-ecl-components-ecl-story-card.mjs.map +1 -0
  216. package/package.json +9 -1
  217. package/types/eui-ecl-components-ecl-accordion.d.ts +23 -5
  218. package/types/eui-ecl-components-ecl-accordion.d.ts.map +1 -1
  219. package/types/eui-ecl-components-ecl-file.d.ts +131 -116
  220. package/types/eui-ecl-components-ecl-file.d.ts.map +1 -1
  221. package/types/eui-ecl-components-ecl-highlighted-search.d.ts +104 -0
  222. package/types/eui-ecl-components-ecl-highlighted-search.d.ts.map +1 -0
  223. package/types/eui-ecl-components-ecl-layout-wrapper.d.ts +6 -8
  224. package/types/eui-ecl-components-ecl-layout-wrapper.d.ts.map +1 -1
  225. package/types/eui-ecl-components-ecl-multiselect.d.ts +2 -1
  226. package/types/eui-ecl-components-ecl-multiselect.d.ts.map +1 -1
  227. package/types/eui-ecl-components-ecl-quiz.d.ts +11 -0
  228. package/types/eui-ecl-components-ecl-quiz.d.ts.map +1 -1
  229. package/types/eui-ecl-components-ecl-story-card.d.ts +256 -0
  230. package/types/eui-ecl-components-ecl-story-card.d.ts.map +1 -0
  231. package/docs/json/EclFileTaxonomyComponent.md +0 -15
@@ -1,12 +1,11 @@
1
1
  import * as i0 from '@angular/core';
2
- import { HostBinding, Directive, input, inject, contentChild, Component, booleanAttribute, model, output, contentChildren } from '@angular/core';
3
- import { ECLBaseDirective, EclThemeService, EclBaseEvent } from '@eui/ecl/core';
2
+ import { Directive, input, booleanAttribute, Component, model, inject, signal, output, contentChild, computed, effect } from '@angular/core';
3
+ import { ECLBaseDirective, EclBaseEvent, EclThemeService } from '@eui/ecl/core';
4
4
  import * as i1 from '@eui/ecl/components/ecl-icon';
5
5
  import { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';
6
6
  import * as i2 from '@eui/ecl/components/ecl-label';
7
7
  import { EUI_ECL_LABEL } from '@eui/ecl/components/ecl-label';
8
- import { TranslatePipe } from '@ngx-translate/core';
9
- import * as i1$1 from '@eui/ecl/components/ecl-button';
8
+ import * as i3 from '@eui/ecl/components/ecl-button';
10
9
  import { EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';
11
10
 
12
11
  /**
@@ -14,166 +13,279 @@ import { EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';
14
13
  * inside a file component.
15
14
  */
16
15
  class EclFileTranslationDownloadDirective extends ECLBaseDirective {
17
- constructor() {
18
- super(...arguments);
19
- /**
20
- * Applies the ECL translation download class to the host element.
21
- */
22
- this.className = true;
23
- }
24
16
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclFileTranslationDownloadDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
25
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.5", type: EclFileTranslationDownloadDirective, isStandalone: true, selector: "[eclFileTranslationDownload]", host: { properties: { "class.ecl-file__translation-download": "this.className" } }, usesInheritance: true, ngImport: i0 }); }
17
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.5", type: EclFileTranslationDownloadDirective, isStandalone: true, selector: "[eclFileTranslationDownload]", host: { classAttribute: "ecl-file__translation-download" }, usesInheritance: true, ngImport: i0 }); }
26
18
  }
27
19
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclFileTranslationDownloadDirective, decorators: [{
28
20
  type: Directive,
29
21
  args: [{
30
22
  selector: '[eclFileTranslationDownload]',
23
+ host: {
24
+ class: 'ecl-file__translation-download',
25
+ },
31
26
  }]
32
- }], propDecorators: { className: [{
33
- type: HostBinding,
34
- args: ['class.ecl-file__translation-download']
35
- }] } });
27
+ }] });
36
28
  /**
37
29
  * Directive to apply the correct styling class for a standard file download link.
38
30
  */
39
31
  class EclFileDownloadDirective extends ECLBaseDirective {
40
- constructor() {
41
- super(...arguments);
42
- /**
43
- * Applies the ECL download class to the host element.
44
- */
45
- this.className = true;
46
- }
47
32
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclFileDownloadDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
48
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.5", type: EclFileDownloadDirective, isStandalone: true, selector: "[eclFileDownload]", host: { properties: { "class.ecl-file__download": "this.className" } }, usesInheritance: true, ngImport: i0 }); }
33
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.5", type: EclFileDownloadDirective, isStandalone: true, selector: "[eclFileDownload]", host: { classAttribute: "ecl-file__download" }, usesInheritance: true, ngImport: i0 }); }
49
34
  }
50
35
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclFileDownloadDirective, decorators: [{
51
36
  type: Directive,
52
37
  args: [{
53
38
  selector: '[eclFileDownload]',
39
+ host: {
40
+ class: 'ecl-file__download',
41
+ },
54
42
  }]
55
- }], propDecorators: { className: [{
56
- type: HostBinding,
57
- args: ['class.ecl-file__download']
58
- }] } });
43
+ }] });
59
44
  /**
60
45
  * Directive to style a file preview link.
61
- * Adds spacing and ECL link classes for standalone appearance.
46
+ * Adds ECL link classes for standalone branded appearance.
62
47
  */
63
48
  class EclFilePreviewDirective extends ECLBaseDirective {
49
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclFilePreviewDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
50
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.5", type: EclFilePreviewDirective, isStandalone: true, selector: "[eclFilePreview]", usesInheritance: true, ngImport: i0 }); }
51
+ }
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclFilePreviewDirective, decorators: [{
53
+ type: Directive,
54
+ args: [{
55
+ selector: '[eclFilePreview]',
56
+ }]
57
+ }] });
58
+ /**
59
+ * Directive to style the file meta element (e.g. file size and format)
60
+ * inside the download link label.
61
+ */
62
+ class EclFileMetaDirective extends ECLBaseDirective {
63
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclFileMetaDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
64
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.5", type: EclFileMetaDirective, isStandalone: true, selector: "[eclFileMeta]", host: { classAttribute: "ecl-file__meta" }, usesInheritance: true, ngImport: i0 }); }
65
+ }
66
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclFileMetaDirective, decorators: [{
67
+ type: Directive,
68
+ args: [{
69
+ selector: '[eclFileMeta]',
70
+ host: {
71
+ class: 'ecl-file__meta',
72
+ },
73
+ }]
74
+ }] });
75
+
76
+ /**
77
+ * Component representing a single file translation item
78
+ * inside the ecl-file-items translation list.
79
+ */
80
+ class EclFileItemComponent extends ECLBaseDirective {
64
81
  constructor() {
65
82
  super(...arguments);
66
83
  /**
67
- * Applies ECL link class to the host element.
84
+ * @deprecated No longer used in v5.1.0. Kept for backward compatibility.
68
85
  */
69
- this.hasClass = true;
86
+ this.isDescription = input(false, { ...(ngDevMode ? { debugName: "isDescription" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
70
87
  /**
71
- * Applies the standalone variant of the ECL link class to the host element.
88
+ * Title text of the file item (language name, e.g. "български").
72
89
  */
73
- this.hasClassStandalone = true;
90
+ this.eclTitle = input(/* @ts-ignore */
91
+ ...(ngDevMode ? [undefined, { debugName: "eclTitle" }] : /* istanbul ignore next */ []));
92
+ /**
93
+ * ID applied to the title element for accessibility.
94
+ */
95
+ this.titleId = input(/* @ts-ignore */
96
+ ...(ngDevMode ? [undefined, { debugName: "titleId" }] : /* istanbul ignore next */ []));
97
+ /**
98
+ * ID applied to the meta element for accessibility.
99
+ */
100
+ this.metaId = input(/* @ts-ignore */
101
+ ...(ngDevMode ? [undefined, { debugName: "metaId" }] : /* istanbul ignore next */ []));
102
+ /**
103
+ * Additional metadata for the item (e.g., file size, type).
104
+ */
105
+ this.meta = input(/* @ts-ignore */
106
+ ...(ngDevMode ? [undefined, { debugName: "meta" }] : /* istanbul ignore next */ []));
107
+ /**
108
+ * @deprecated No longer used in v5.1.0. Kept for backward compatibility.
109
+ */
110
+ this.label = input(/* @ts-ignore */
111
+ ...(ngDevMode ? [undefined, { debugName: "label" }] : /* istanbul ignore next */ []));
112
+ /**
113
+ * Language code (e.g. "bg", "fr") applied as the `lang` attribute on the title element.
114
+ */
115
+ this.langDetail = input(/* @ts-ignore */
116
+ ...(ngDevMode ? [undefined, { debugName: "langDetail" }] : /* istanbul ignore next */ []));
74
117
  }
75
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclFilePreviewDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
76
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.5", type: EclFilePreviewDirective, isStandalone: true, selector: "[eclFilePreview]", host: { properties: { "style.margin-inline-end.px": "24", "class.ecl-link": "this.hasClass", "class.ecl-link--standalone": "this.hasClassStandalone" } }, usesInheritance: true, ngImport: i0 }); }
118
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclFileItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
119
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: EclFileItemComponent, isStandalone: true, selector: "ecl-file-item", inputs: { isDescription: { classPropertyName: "isDescription", publicName: "isDescription", isSignal: true, isRequired: false, transformFunction: null }, eclTitle: { classPropertyName: "eclTitle", publicName: "eclTitle", isSignal: true, isRequired: false, transformFunction: null }, titleId: { classPropertyName: "titleId", publicName: "titleId", isSignal: true, isRequired: false, transformFunction: null }, metaId: { classPropertyName: "metaId", publicName: "metaId", isSignal: true, isRequired: false, transformFunction: null }, meta: { classPropertyName: "meta", publicName: "meta", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, langDetail: { classPropertyName: "langDetail", publicName: "langDetail", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "listitem" }, classAttribute: "ecl-file__translation-item" }, usesInheritance: true, ngImport: i0, template: "<div class=\"ecl-file__translation-info\">\n @if (eclTitle()) {\n <div class=\"ecl-file__translation-title\" [id]=\"titleId()\" [attr.lang]=\"langDetail()\">{{ eclTitle() }}</div>\n }\n @if (meta()) {\n <div class=\"ecl-file__translation-meta\" [id]=\"metaId()\">{{ meta() }}</div>\n }\n</div>\n<div class=\"ecl-file__translation-action\">\n <ng-content select=\"[eclFilePreview]\"></ng-content>\n <ng-content select=\"[eclFileTranslationDownload]\"></ng-content>\n</div>\n" }); }
77
120
  }
78
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclFilePreviewDirective, decorators: [{
79
- type: Directive,
121
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclFileItemComponent, decorators: [{
122
+ type: Component,
123
+ args: [{ selector: 'ecl-file-item', host: {
124
+ class: 'ecl-file__translation-item',
125
+ role: 'listitem',
126
+ }, template: "<div class=\"ecl-file__translation-info\">\n @if (eclTitle()) {\n <div class=\"ecl-file__translation-title\" [id]=\"titleId()\" [attr.lang]=\"langDetail()\">{{ eclTitle() }}</div>\n }\n @if (meta()) {\n <div class=\"ecl-file__translation-meta\" [id]=\"metaId()\">{{ meta() }}</div>\n }\n</div>\n<div class=\"ecl-file__translation-action\">\n <ng-content select=\"[eclFilePreview]\"></ng-content>\n <ng-content select=\"[eclFileTranslationDownload]\"></ng-content>\n</div>\n" }]
127
+ }], propDecorators: { isDescription: [{ type: i0.Input, args: [{ isSignal: true, alias: "isDescription", required: false }] }], eclTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "eclTitle", required: false }] }], titleId: [{ type: i0.Input, args: [{ isSignal: true, alias: "titleId", required: false }] }], metaId: [{ type: i0.Input, args: [{ isSignal: true, alias: "metaId", required: false }] }], meta: [{ type: i0.Input, args: [{ isSignal: true, alias: "meta", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], langDetail: [{ type: i0.Input, args: [{ isSignal: true, alias: "langDetail", required: false }] }] } });
128
+
129
+ /**
130
+ * Component representing the translation list within an ECL File component.
131
+ * The host element IS the list. The toggle button is rendered by the parent ecl-file.
132
+ */
133
+ class EclFileItemsComponent extends ECLBaseDirective {
134
+ constructor() {
135
+ super(...arguments);
136
+ /**
137
+ * ID for the list, used by the toggle button's aria-controls.
138
+ */
139
+ this.id = model(/* @ts-ignore */
140
+ ...(ngDevMode ? [undefined, { debugName: "id" }] : /* istanbul ignore next */ []));
141
+ /**
142
+ * Whether the list is expanded. Managed by the parent ecl-file component.
143
+ */
144
+ this.isExpanded = model(false, /* @ts-ignore */
145
+ ...(ngDevMode ? [{ debugName: "isExpanded" }] : /* istanbul ignore next */ []));
146
+ }
147
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclFileItemsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
148
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.5", type: EclFileItemsComponent, isStandalone: true, selector: "ecl-file-items", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, isExpanded: { classPropertyName: "isExpanded", publicName: "isExpanded", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { id: "idChange", isExpanded: "isExpandedChange" }, host: { attributes: { "role": "list" }, properties: { "attr.id": "id()", "style.display": "isExpanded() ? \"block\" : \"none\"" }, classAttribute: "ecl-file__translation-list" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
149
+ }
150
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclFileItemsComponent, decorators: [{
151
+ type: Component,
80
152
  args: [{
81
- selector: '[eclFilePreview]',
153
+ selector: 'ecl-file-items',
154
+ template: '<ng-content></ng-content>',
82
155
  host: {
83
- '[style.margin-inline-end.px]': '24',
156
+ class: 'ecl-file__translation-list',
157
+ role: 'list',
158
+ '[attr.id]': 'id()',
159
+ '[style.display]': 'isExpanded() ? "block" : "none"',
84
160
  },
85
161
  }]
86
- }], propDecorators: { hasClass: [{
87
- type: HostBinding,
88
- args: ['class.ecl-link']
89
- }], hasClassStandalone: [{
90
- type: HostBinding,
91
- args: ['class.ecl-link--standalone']
92
- }] } });
162
+ }], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }, { type: i0.Output, args: ["idChange"] }], isExpanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "isExpanded", required: false }] }, { type: i0.Output, args: ["isExpandedChange"] }] } });
93
163
 
94
164
  /**
95
165
  * Directive to style a <picture> element used in an ECL file component.
96
166
  * Adds ECL-specific picture and file picture classes.
97
167
  */
98
168
  class EclFilePictureDirective extends ECLBaseDirective {
99
- /**
100
- * Applies ECL picture styling classes to the host element.
101
- */
102
- get cssClasses() {
103
- return [super.getCssClasses('ecl-picture ecl-file__picture')].join(' ').trim();
104
- }
105
169
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclFilePictureDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
106
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.5", type: EclFilePictureDirective, isStandalone: true, selector: "picture[eclFilePicture]", host: { properties: { "class": "this.cssClasses" } }, usesInheritance: true, ngImport: i0 }); }
170
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.5", type: EclFilePictureDirective, isStandalone: true, selector: "picture[eclFilePicture]", host: { classAttribute: "ecl-picture ecl-file__picture" }, usesInheritance: true, ngImport: i0 }); }
107
171
  }
108
172
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclFilePictureDirective, decorators: [{
109
173
  type: Directive,
110
174
  args: [{
111
175
  selector: 'picture[eclFilePicture]',
176
+ host: {
177
+ class: 'ecl-picture ecl-file__picture',
178
+ },
112
179
  }]
113
- }], propDecorators: { cssClasses: [{
114
- type: HostBinding,
115
- args: ['class']
116
- }] } });
180
+ }] });
117
181
  /**
118
182
  * Directive to style an <img> element inside an ECL file component.
119
183
  * Adds the ECL-specific image class.
120
184
  */
121
185
  class EclFileImageDirective extends ECLBaseDirective {
122
- constructor() {
123
- super(...arguments);
124
- /**
125
- * Applies the ECL image class to the host element.
126
- */
127
- this.className = true;
128
- }
129
186
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclFileImageDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
130
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.5", type: EclFileImageDirective, isStandalone: true, selector: "img[eclFileImage]", host: { properties: { "class.ecl-file__image": "this.className" } }, usesInheritance: true, ngImport: i0 }); }
187
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.5", type: EclFileImageDirective, isStandalone: true, selector: "img[eclFileImage]", host: { classAttribute: "ecl-file__image" }, usesInheritance: true, ngImport: i0 }); }
131
188
  }
132
189
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclFileImageDirective, decorators: [{
133
190
  type: Directive,
134
191
  args: [{
135
192
  selector: 'img[eclFileImage]',
193
+ host: {
194
+ class: 'ecl-file__image',
195
+ },
136
196
  }]
137
- }], propDecorators: { className: [{
138
- type: HostBinding,
139
- args: ['class.ecl-file__image']
140
- }] } });
197
+ }] });
141
198
  /**
142
199
  * Directive to style a title element in an ECL file component.
143
200
  */
144
201
  class EclFileTitleDirective extends ECLBaseDirective {
145
- constructor() {
146
- super(...arguments);
147
- /**
148
- * Applies the ECL file title class to the host element.
149
- */
150
- this.className = true;
151
- /**
152
- * ID attribute for the title element.
153
- */
154
- this.id = input(undefined, /* @ts-ignore */
155
- ...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
156
- }
157
202
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclFileTitleDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
158
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.5", type: EclFileTitleDirective, isStandalone: true, selector: "[eclFileTitle]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.ecl-file__title": "this.className" } }, usesInheritance: true, ngImport: i0 }); }
203
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.5", type: EclFileTitleDirective, isStandalone: true, selector: "[eclFileTitle]", host: { classAttribute: "ecl-file__title" }, usesInheritance: true, ngImport: i0 }); }
159
204
  }
160
205
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclFileTitleDirective, decorators: [{
161
206
  type: Directive,
162
207
  args: [{
163
208
  selector: '[eclFileTitle]',
209
+ host: {
210
+ class: 'ecl-file__title',
211
+ },
164
212
  }]
165
- }], propDecorators: { className: [{
166
- type: HostBinding,
167
- args: ['class.ecl-file__title']
168
- }], id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }] } });
213
+ }] });
169
214
 
170
215
  /**
171
- * Component representing a file item with optional metadata, description,
172
- * and image (thumbnail) support.
216
+ * Component representing the lists section of a file in the ECL File component.
217
+ */
218
+ class EclFileListsComponent extends ECLBaseDirective {
219
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclFileListsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
220
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: EclFileListsComponent, isStandalone: true, selector: "ecl-file-lists, ecl-file-taxonomy", host: { styleAttribute: "display: block", classAttribute: "ecl-file__lists" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
221
+ }
222
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclFileListsComponent, decorators: [{
223
+ type: Component,
224
+ args: [{
225
+ selector: 'ecl-file-lists, ecl-file-taxonomy',
226
+ template: '<ng-content></ng-content>',
227
+ host: {
228
+ class: 'ecl-file__lists',
229
+ style: 'display: block',
230
+ },
231
+ }]
232
+ }] });
233
+
234
+ class EclFileItemsToggleEvent extends EclBaseEvent {
235
+ constructor(isExpanded) {
236
+ super();
237
+ this.isExpanded = isExpanded;
238
+ }
239
+ }
240
+
241
+ /**
242
+ * ECL File component.
243
+ * Displays downloadable file information with an icon or picture,
244
+ * metadata, and an optional expandable translations panel.
245
+ *
246
+ * @example
247
+ * ```html
248
+ * <ecl-file id="my-file" language="English" langId="my-file-lang"
249
+ * [primaryMeta]="['Meta info', 'DD Month YYYY']"
250
+ * labelInfo="Highlight" description="File description"
251
+ * fileIcon="pdf"
252
+ * toggleAriaLabel="Translations"
253
+ * (translationsToggle)="onToggle($event)">
254
+ *
255
+ * <div eclFileTitle id="my-file-title">State of the Union 2018 brochure</div>
256
+ *
257
+ * <a eclFileDownload eclLink variant="standalone" isBranded href="/path/to/file">
258
+ * <span eclLinkLabel>
259
+ * <span>Download</span>
260
+ * <span eclFileMeta>(16.2 MB - PDF)</span>
261
+ * </span>
262
+ * <ecl-icon icon="download-simple" iconSet="phosphor" size="fluid"></ecl-icon>
263
+ * </a>
264
+ *
265
+ * <ecl-file-items>
266
+ * <ecl-file-item eclTitle="български" meta="(15.7 MB - PDF)" langDetail="bg"
267
+ * titleId="my-file-0-title" metaId="my-file-0-meta">
268
+ * <a eclFileTranslationDownload eclLink variant="standalone" href="/example#bg" hreflang="bg">
269
+ * <span eclLinkLabel>Download</span>
270
+ * <ecl-icon icon="download-simple" iconSet="phosphor" size="fluid"></ecl-icon>
271
+ * </a>
272
+ * </ecl-file-item>
273
+ * </ecl-file-items>
274
+ * </ecl-file>
275
+ * ```
173
276
  */
174
277
  class EclFileComponent extends ECLBaseDirective {
278
+ /**
279
+ * Host element CSS classes.
280
+ */
281
+ get cssClasses() {
282
+ return [
283
+ super.getCssClasses('ecl-file'),
284
+ this.isTranslationsExpanded() ? 'ecl-file--open' : '',
285
+ ].join(' ').trim();
286
+ }
175
287
  constructor() {
176
- super(...arguments);
288
+ super();
177
289
  this.eclThemeService = inject(EclThemeService);
178
290
  /**
179
291
  * Optional description displayed under the file title.
@@ -181,9 +293,10 @@ class EclFileComponent extends ECLBaseDirective {
181
293
  this.description = input(/* @ts-ignore */
182
294
  ...(ngDevMode ? [undefined, { debugName: "description" }] : /* istanbul ignore next */ []));
183
295
  /**
184
- * Optional ID for the file component, useful for accessibility or referencing.
296
+ * Unique ID for the file component. Auto-generated if not provided.
297
+ * Used to derive accessibility IDs for child elements.
185
298
  */
186
- this.id = input(undefined, /* @ts-ignore */
299
+ this.id = input(`ecl-file-${crypto.randomUUID()}`, /* @ts-ignore */
187
300
  ...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
188
301
  /**
189
302
  * Optional language ID (e.g., for translation or accessibility attributes).
@@ -196,249 +309,145 @@ class EclFileComponent extends ECLBaseDirective {
196
309
  this.labelInfo = input(/* @ts-ignore */
197
310
  ...(ngDevMode ? [undefined, { debugName: "labelInfo" }] : /* istanbul ignore next */ []));
198
311
  /**
199
- * Language indicator string (e.g. "EN", "FR") used in the label.
312
+ * Language indicator string (e.g. "English", "French") used in the footer.
313
+ * When translations are present, this becomes the toggle button label.
200
314
  */
201
315
  this.language = input(/* @ts-ignore */
202
316
  ...(ngDevMode ? [undefined, { debugName: "language" }] : /* istanbul ignore next */ []));
203
317
  /**
204
- * Additional details displayed in the file component (e.g. file size, date).
318
+ * Primary metadata array (e.g. ['Meta info', 'DD Month YYYY']).
319
+ * Rendered as a list below the title/description.
320
+ */
321
+ this.primaryMeta = input(/* @ts-ignore */
322
+ ...(ngDevMode ? [undefined, { debugName: "primaryMeta" }] : /* istanbul ignore next */ []));
323
+ /**
324
+ * @deprecated Use `primaryMeta` instead. Kept for backward compatibility.
205
325
  */
206
326
  this.detailMeta = input(/* @ts-ignore */
207
327
  ...(ngDevMode ? [undefined, { debugName: "detailMeta" }] : /* istanbul ignore next */ []));
208
328
  /**
209
- * Main metadata displayed for the file (e.g. format, license).
329
+ * @deprecated Meta is now rendered inside the download link by the consumer.
330
+ * Kept for backward compatibility — no longer rendered in the template.
210
331
  */
211
332
  this.meta = input(/* @ts-ignore */
212
333
  ...(ngDevMode ? [undefined, { debugName: "meta" }] : /* istanbul ignore next */ []));
213
334
  /**
214
- * ID applied to the meta element for accessibility.
335
+ * @deprecated Meta ID is now managed by the consumer inside the download link.
336
+ * Kept for backward compatibility — no longer rendered in the template.
215
337
  */
216
338
  this.metaId = input(/* @ts-ignore */
217
339
  ...(ngDevMode ? [undefined, { debugName: "metaId" }] : /* istanbul ignore next */ []));
218
340
  /**
219
- * Optional image directive projected via content slot, used for thumbnails.
220
- */
221
- this.eclPictureContent = contentChild(EclFilePictureDirective, /* @ts-ignore */
222
- ...(ngDevMode ? [{ debugName: "eclPictureContent" }] : /* istanbul ignore next */ []));
223
- }
224
- /**
225
- * Host element CSS classes based on theme and content.
226
- */
227
- get cssClasses() {
228
- return [super.getCssClasses('ecl-file'), this.isThumbnail ? 'ecl-file--thumbnail' : ''].join(' ').trim();
229
- }
230
- /**
231
- * Determines whether the file has an associated thumbnail.
232
- * Returns true if an `EclFilePictureDirective` is present in projected content.
233
- */
234
- get isThumbnail() {
235
- return !!this.eclPictureContent();
236
- }
237
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclFileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
238
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: EclFileComponent, isStandalone: true, selector: "ecl-file", inputs: { description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, langId: { classPropertyName: "langId", publicName: "langId", isSignal: true, isRequired: false, transformFunction: null }, labelInfo: { classPropertyName: "labelInfo", publicName: "labelInfo", isSignal: true, isRequired: false, transformFunction: null }, language: { classPropertyName: "language", publicName: "language", isSignal: true, isRequired: false, transformFunction: null }, detailMeta: { classPropertyName: "detailMeta", publicName: "detailMeta", isSignal: true, isRequired: false, transformFunction: null }, meta: { classPropertyName: "meta", publicName: "meta", isSignal: true, isRequired: false, transformFunction: null }, metaId: { classPropertyName: "metaId", publicName: "metaId", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "this.cssClasses" } }, queries: [{ propertyName: "eclPictureContent", first: true, predicate: EclFilePictureDirective, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ecl-file__container\">\n @if(!isThumbnail) {\n @if(eclThemeService.isECTheme()) {\n <ecl-icon icon=\"file\" class=\"ecl-file__icon\" size=\"2xl\"></ecl-icon>\n } @else {\n <ecl-icon icon=\"file\" class=\"ecl-file__icon\" size=\"m\"></ecl-icon>\n }\n } @else {\n <ng-content select=\"[eclFilePicture]\"></ng-content>\n }\n <div class=\"ecl-file__info\">\n @if(labelInfo()) {\n <div class=\"ecl-file__label\">\n <span eclLabel variant=\"highlight\">{{ labelInfo() }}</span>\n </div>\n }\n @if(detailMeta()) {\n <ul class=\"ecl-file__detail-meta\">\n @for (el of detailMeta(); track el) {\n <li class=\"ecl-file__detail-meta-item\" >{{ el }}</li>\n }\n </ul>\n }\n <ng-content select=\"[eclFileTitle]\"></ng-content>\n @if(description()) {\n <div class=\"ecl-file__description\">{{ description() }}</div>\n }\n <ng-content select=\"ecl-file-taxonomy\"></ng-content>\n </div>\n\n </div>\n <div class=\"ecl-file__footer\">\n <div class=\"ecl-file__language\" [id]=\"langId()\">{{ language() }}</div>\n <div class=\"ecl-file__meta\" [id]=\"metaId()\">{{ meta() }}</div>\n <div class=\"ecl-file__action\">\n <ng-content select=\"[eclFilePreview]\"></ng-content>\n <ng-content select=\"[eclFileDownload]\"></ng-content>\n </div>\n </div>\n<ng-content></ng-content>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "component", type: i1.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "title", "ariaHidden", "focusable", "isFlipHorizontal"] }, { kind: "directive", type: i2.EclLabelDirective, selector: "[eclLabel]", inputs: ["variant"] }] }); }
239
- }
240
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclFileComponent, decorators: [{
241
- type: Component,
242
- args: [{ selector: 'ecl-file', imports: [
243
- ...EUI_ECL_ICON,
244
- ...EUI_ECL_LABEL,
245
- ], template: "<div class=\"ecl-file__container\">\n @if(!isThumbnail) {\n @if(eclThemeService.isECTheme()) {\n <ecl-icon icon=\"file\" class=\"ecl-file__icon\" size=\"2xl\"></ecl-icon>\n } @else {\n <ecl-icon icon=\"file\" class=\"ecl-file__icon\" size=\"m\"></ecl-icon>\n }\n } @else {\n <ng-content select=\"[eclFilePicture]\"></ng-content>\n }\n <div class=\"ecl-file__info\">\n @if(labelInfo()) {\n <div class=\"ecl-file__label\">\n <span eclLabel variant=\"highlight\">{{ labelInfo() }}</span>\n </div>\n }\n @if(detailMeta()) {\n <ul class=\"ecl-file__detail-meta\">\n @for (el of detailMeta(); track el) {\n <li class=\"ecl-file__detail-meta-item\" >{{ el }}</li>\n }\n </ul>\n }\n <ng-content select=\"[eclFileTitle]\"></ng-content>\n @if(description()) {\n <div class=\"ecl-file__description\">{{ description() }}</div>\n }\n <ng-content select=\"ecl-file-taxonomy\"></ng-content>\n </div>\n\n </div>\n <div class=\"ecl-file__footer\">\n <div class=\"ecl-file__language\" [id]=\"langId()\">{{ language() }}</div>\n <div class=\"ecl-file__meta\" [id]=\"metaId()\">{{ meta() }}</div>\n <div class=\"ecl-file__action\">\n <ng-content select=\"[eclFilePreview]\"></ng-content>\n <ng-content select=\"[eclFileDownload]\"></ng-content>\n </div>\n </div>\n<ng-content></ng-content>\n", styles: [":host{display:block}\n"] }]
246
- }], propDecorators: { cssClasses: [{
247
- type: HostBinding,
248
- args: ['class']
249
- }], description: [{ type: i0.Input, args: [{ isSignal: true, alias: "description", required: false }] }], id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], langId: [{ type: i0.Input, args: [{ isSignal: true, alias: "langId", required: false }] }], labelInfo: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelInfo", required: false }] }], language: [{ type: i0.Input, args: [{ isSignal: true, alias: "language", required: false }] }], detailMeta: [{ type: i0.Input, args: [{ isSignal: true, alias: "detailMeta", required: false }] }], meta: [{ type: i0.Input, args: [{ isSignal: true, alias: "meta", required: false }] }], metaId: [{ type: i0.Input, args: [{ isSignal: true, alias: "metaId", required: false }] }], eclPictureContent: [{ type: i0.ContentChild, args: [i0.forwardRef(() => EclFilePictureDirective), { isSignal: true }] }] } });
250
-
251
- /**
252
- * Component representing a single file translation or descriptive item
253
- * inside the main ECL File component.
254
- */
255
- class EclFileItemComponent extends ECLBaseDirective {
256
- constructor() {
257
- super(...arguments);
258
- /**
259
- * Indicates whether the item is a description block rather than a translation.
260
- * Adds the `ecl-file__translation-description` class when true.
341
+ * Accessible label for the translation toggle button.
342
+ * Defaults to the `language` value if not provided.
261
343
  */
262
- this.isDescription = input(false, { ...(ngDevMode ? { debugName: "isDescription" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
344
+ this.toggleAriaLabel = input(/* @ts-ignore */
345
+ ...(ngDevMode ? [undefined, { debugName: "toggleAriaLabel" }] : /* istanbul ignore next */ []));
263
346
  /**
264
- * Title text of the file item.
347
+ * File type icon to display. Renders a phosphor icon internally.
348
+ * Options: 'file' (default), 'pdf', 'doc', 'xls', 'txt', 'zip'.
349
+ * Ignored when a picture is projected.
265
350
  */
266
- this.eclTitle = input(/* @ts-ignore */
267
- ...(ngDevMode ? [undefined, { debugName: "eclTitle" }] : /* istanbul ignore next */ []));
351
+ this.fileIcon = input('file', /* @ts-ignore */
352
+ ...(ngDevMode ? [{ debugName: "fileIcon" }] : /* istanbul ignore next */ []));
268
353
  /**
269
- * ID applied to the title element for accessibility.
354
+ * Whether the translation list is currently expanded.
270
355
  */
271
- this.titleId = input(/* @ts-ignore */
272
- ...(ngDevMode ? [undefined, { debugName: "titleId" }] : /* istanbul ignore next */ []));
273
- /**
274
- * ID applied to the meta element for accessibility.
275
- */
276
- this.metaId = input(/* @ts-ignore */
277
- ...(ngDevMode ? [undefined, { debugName: "metaId" }] : /* istanbul ignore next */ []));
356
+ this.isTranslationsExpanded = signal(false, /* @ts-ignore */
357
+ ...(ngDevMode ? [{ debugName: "isTranslationsExpanded" }] : /* istanbul ignore next */ []));
278
358
  /**
279
- * Additional metadata for the item (e.g., file size, type).
280
- */
281
- this.meta = input(/* @ts-ignore */
282
- ...(ngDevMode ? [undefined, { debugName: "meta" }] : /* istanbul ignore next */ []));
283
- /**
284
- * Language label displayed next to the title (e.g., "FR", "EN").
359
+ * Emits when the translation toggle is clicked.
360
+ * Consumers can call `preventDefault()` on the event to cancel the toggle.
285
361
  */
286
- this.label = input(/* @ts-ignore */
287
- ...(ngDevMode ? [undefined, { debugName: "label" }] : /* istanbul ignore next */ []));
362
+ this.translationsToggle = output();
288
363
  /**
289
- * Supplementary language detail displayed below the language label.
364
+ * Optional image directive projected via content slot, used for pictures.
290
365
  */
291
- this.langDetail = input(/* @ts-ignore */
292
- ...(ngDevMode ? [undefined, { debugName: "langDetail" }] : /* istanbul ignore next */ []));
366
+ this.eclPictureContent = contentChild(EclFilePictureDirective, /* @ts-ignore */
367
+ ...(ngDevMode ? [{ debugName: "eclPictureContent" }] : /* istanbul ignore next */ []));
293
368
  /**
294
- * ARIA role attribute set to 'listitem' for accessibility.
369
+ * Projected translation list component.
295
370
  */
296
- this.role = 'listitem';
297
- this.eclFileComponent = inject(EclFileComponent);
298
- }
299
- /**
300
- * Host CSS classes for the item, based on the content and state.
301
- */
302
- get cssClasses() {
303
- return [
304
- super.getCssClasses('ecl-file__translation-item'),
305
- this.isDescription() ? 'ecl-file__translation-description' : '',
306
- ].join(' ').trim();
307
- }
308
- /**
309
- * Indicates whether the parent `EclFileComponent` has a thumbnail image.
310
- */
311
- get isThumbnail() {
312
- return this.eclFileComponent && this.eclFileComponent.isThumbnail;
313
- }
314
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclFileItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
315
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: EclFileItemComponent, isStandalone: true, selector: "ecl-file-item", inputs: { isDescription: { classPropertyName: "isDescription", publicName: "isDescription", isSignal: true, isRequired: false, transformFunction: null }, eclTitle: { classPropertyName: "eclTitle", publicName: "eclTitle", isSignal: true, isRequired: false, transformFunction: null }, titleId: { classPropertyName: "titleId", publicName: "titleId", isSignal: true, isRequired: false, transformFunction: null }, metaId: { classPropertyName: "metaId", publicName: "metaId", isSignal: true, isRequired: false, transformFunction: null }, meta: { classPropertyName: "meta", publicName: "meta", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, langDetail: { classPropertyName: "langDetail", publicName: "langDetail", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "this.cssClasses", "attr.role": "this.role" } }, usesInheritance: true, ngImport: i0, template: "@if (isDescription()) {\n <ng-content></ng-content>\n} @else {\n <div class=\"ecl-file__translation-info\">\n <div class=\"ecl-file__translation-title\" [id]=\"titleId()\" [attr.lang]=\"langDetail()\">{{ eclTitle() }}</div>\n <div class=\"ecl-file__translation-meta\" [id]=\"metaId()\">{{ meta() }}</div>\n </div>\n <div class=\"ecl-file__translation-action\">\n <ng-content select=\"[eclFilePreview]\"></ng-content>\n <ng-content select=\"[eclFileTranslationDownload]\"></ng-content>\n </div>\n}\n" }); }
316
- }
317
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclFileItemComponent, decorators: [{
318
- type: Component,
319
- args: [{ selector: 'ecl-file-item', template: "@if (isDescription()) {\n <ng-content></ng-content>\n} @else {\n <div class=\"ecl-file__translation-info\">\n <div class=\"ecl-file__translation-title\" [id]=\"titleId()\" [attr.lang]=\"langDetail()\">{{ eclTitle() }}</div>\n <div class=\"ecl-file__translation-meta\" [id]=\"metaId()\">{{ meta() }}</div>\n </div>\n <div class=\"ecl-file__translation-action\">\n <ng-content select=\"[eclFilePreview]\"></ng-content>\n <ng-content select=\"[eclFileTranslationDownload]\"></ng-content>\n </div>\n}\n" }]
320
- }], propDecorators: { isDescription: [{ type: i0.Input, args: [{ isSignal: true, alias: "isDescription", required: false }] }], eclTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "eclTitle", required: false }] }], titleId: [{ type: i0.Input, args: [{ isSignal: true, alias: "titleId", required: false }] }], metaId: [{ type: i0.Input, args: [{ isSignal: true, alias: "metaId", required: false }] }], meta: [{ type: i0.Input, args: [{ isSignal: true, alias: "meta", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], langDetail: [{ type: i0.Input, args: [{ isSignal: true, alias: "langDetail", required: false }] }], cssClasses: [{
321
- type: HostBinding,
322
- args: ['class']
323
- }], role: [{
324
- type: HostBinding,
325
- args: ['attr.role']
326
- }] } });
327
-
328
- class EclFileItemsToggleEvent extends EclBaseEvent {
329
- constructor(isExpanded) {
330
- super();
331
- this.isExpanded = isExpanded;
332
- }
333
- }
334
-
335
- /**
336
- * Component representing a container for file item translations within an ECL File component.
337
- * It can be expanded or collapsed, and emits an event when toggled.
338
- */
339
- class EclFileItemsComponent extends ECLBaseDirective {
340
- constructor() {
341
- super(...arguments);
371
+ this.eclFileItems = contentChild(EclFileItemsComponent, /* @ts-ignore */
372
+ ...(ngDevMode ? [{ debugName: "eclFileItems" }] : /* istanbul ignore next */ []));
342
373
  /**
343
- * Label displayed above the translations list.
374
+ * Whether this file has a picture projected.
344
375
  */
345
- this.label = input(undefined, /* @ts-ignore */
346
- ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
376
+ this.hasPicture = computed(() => !!this.eclPictureContent(), /* @ts-ignore */
377
+ ...(ngDevMode ? [{ debugName: "hasPicture" }] : /* istanbul ignore next */ []));
347
378
  /**
348
- * Whether the list is initially expanded.
379
+ * Resolved phosphor icon name based on the fileIcon input.
349
380
  */
350
- this.isExpanded = model(false, /* @ts-ignore */
351
- ...(ngDevMode ? [{ debugName: "isExpanded" }] : /* istanbul ignore next */ []));
381
+ this.resolvedIconName = computed(() => {
382
+ const icon = this.fileIcon();
383
+ return icon === 'file' ? 'file' : `file-${icon}`;
384
+ }, /* @ts-ignore */
385
+ ...(ngDevMode ? [{ debugName: "resolvedIconName" }] : /* istanbul ignore next */ []));
352
386
  /**
353
- * Emits a toggle event when the translations list is expanded or collapsed.
354
- *
355
- * @remarks
356
- * Consumers can call `preventDefault()` on the event to cancel the toggle.
387
+ * Whether translations are present.
357
388
  */
358
- // eslint-disable-next-line
359
- this.toggle = output();
389
+ this.hasTranslations = computed(() => !!this.eclFileItems(), /* @ts-ignore */
390
+ ...(ngDevMode ? [{ debugName: "hasTranslations" }] : /* istanbul ignore next */ []));
360
391
  /**
361
- * Content-projected list of translation items (excluding description blocks).
392
+ * Resolved primary meta uses primaryMeta if available, falls back to deprecated detailMeta.
362
393
  */
363
- this.items = contentChildren(EclFileItemComponent, /* @ts-ignore */
364
- ...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
394
+ this.resolvedPrimaryMeta = computed(() => this.primaryMeta() ?? this.detailMeta(), /* @ts-ignore */
395
+ ...(ngDevMode ? [{ debugName: "resolvedPrimaryMeta" }] : /* istanbul ignore next */ []));
396
+ // When eclFileItems becomes available, assign ID if not set
397
+ effect(() => {
398
+ const items = this.eclFileItems();
399
+ if (items && !items.id()) {
400
+ items.id.set(`${this.id()}-translations`);
401
+ }
402
+ });
365
403
  }
366
404
  /**
367
- * CSS classes applied to the host element.
405
+ * Handles the translation toggle button click.
368
406
  */
369
- get cssClasses() {
370
- return [super.getCssClasses('ecl-file__translation-container')].join(' ').trim();
371
- }
372
- /**
373
- * Returns the number of translation items excluding description entries.
374
- */
375
- getItemsCount() {
376
- return this.items().filter((item) => !item.isDescription()).length;
377
- }
378
- /**
379
- * Toggles the expansion state of the translation list.
380
- * Emits `toggle` event and updates `isExpanded` if not prevented.
381
- */
382
- onToggleClick(evt) {
383
- const nextExpandedState = !this.isExpanded();
384
- const event = new EclFileItemsToggleEvent(nextExpandedState);
385
- this.toggle.emit(event);
407
+ onTranslationToggleClick() {
408
+ const nextState = !this.isTranslationsExpanded();
409
+ const event = new EclFileItemsToggleEvent(nextState);
410
+ this.translationsToggle.emit(event);
386
411
  if (!event.defaultPrevented) {
387
- this.isExpanded.set(nextExpandedState);
412
+ this.isTranslationsExpanded.set(nextState);
413
+ const items = this.eclFileItems();
414
+ if (items) {
415
+ items.isExpanded.set(nextState);
416
+ }
388
417
  }
389
418
  }
390
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclFileItemsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
391
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.5", type: EclFileItemsComponent, isStandalone: true, selector: "ecl-file-items", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, isExpanded: { classPropertyName: "isExpanded", publicName: "isExpanded", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isExpanded: "isExpandedChange", toggle: "toggle" }, host: { properties: { "class": "this.cssClasses" } }, queries: [{ propertyName: "items", predicate: EclFileItemComponent, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<button eclButton variant=\"tertiary\" class=\"ecl-file__translation-toggle\" [attr.aria-expanded]=\"isExpanded()\" (click)=\"onToggleClick($event)\">\n <span eclButtonLabel>\n {{ label() || 'ecl.file.OTHER-LANGUAGES' | translate: { count: getItemsCount() } }}\n </span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-180\"></ecl-icon>\n</button>\n<ul class=\"ecl-file__translation-list\">\n <ng-content></ng-content>\n</ul>\n", dependencies: [{ kind: "component", type: i1$1.EclButtonComponent, selector: "button[eclButton], button[ecl-button], a[eclButton]", inputs: ["isIconOnly", "variant", "eclStyle", "size", "containerStyleClass"] }, { kind: "directive", type: i1$1.EclButtonLabelDirective, selector: "[eclButtonLabel]" }, { kind: "component", type: i1.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "title", "ariaHidden", "focusable", "isFlipHorizontal"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
419
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclFileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
420
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: EclFileComponent, isStandalone: true, selector: "ecl-file", inputs: { description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, langId: { classPropertyName: "langId", publicName: "langId", isSignal: true, isRequired: false, transformFunction: null }, labelInfo: { classPropertyName: "labelInfo", publicName: "labelInfo", isSignal: true, isRequired: false, transformFunction: null }, language: { classPropertyName: "language", publicName: "language", isSignal: true, isRequired: false, transformFunction: null }, primaryMeta: { classPropertyName: "primaryMeta", publicName: "primaryMeta", isSignal: true, isRequired: false, transformFunction: null }, detailMeta: { classPropertyName: "detailMeta", publicName: "detailMeta", isSignal: true, isRequired: false, transformFunction: null }, meta: { classPropertyName: "meta", publicName: "meta", isSignal: true, isRequired: false, transformFunction: null }, metaId: { classPropertyName: "metaId", publicName: "metaId", isSignal: true, isRequired: false, transformFunction: null }, toggleAriaLabel: { classPropertyName: "toggleAriaLabel", publicName: "toggleAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, fileIcon: { classPropertyName: "fileIcon", publicName: "fileIcon", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { translationsToggle: "translationsToggle" }, host: { properties: { "class": "cssClasses", "attr.id": "id()" } }, queries: [{ propertyName: "eclPictureContent", first: true, predicate: EclFilePictureDirective, descendants: true, isSignal: true }, { propertyName: "eclFileItems", first: true, predicate: EclFileItemsComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<article class=\"ecl-file__container\">\n <div class=\"ecl-file__info\">\n @if (hasPicture()) {\n <ng-content select=\"[eclFilePicture]\"></ng-content>\n } @else {\n <div class=\"ecl-file__icon-box\">\n <ecl-icon [icon]=\"resolvedIconName()\" iconSet=\"phosphor\" size=\"l\" class=\"ecl-file__icon\" [title]=\"fileIcon()\"></ecl-icon>\n </div>\n }\n\n <div class=\"ecl-file__content\">\n @if (labelInfo()) {\n <div class=\"ecl-file__labels\">\n <div class=\"ecl-file__label\">\n <span eclLabel variant=\"highlight\">{{ labelInfo() }}</span>\n </div>\n </div>\n }\n\n <ng-content select=\"[eclFileTitle]\"></ng-content>\n\n @if (description()) {\n <div class=\"ecl-file__description\">{{ description() }}</div>\n }\n\n @if (resolvedPrimaryMeta()) {\n <ul class=\"ecl-file__primary-meta\">\n @for (item of resolvedPrimaryMeta(); track item) {\n <li class=\"ecl-file__primary-meta-item\">{{ item }}</li>\n }\n </ul>\n }\n\n <ng-content select=\"ecl-file-lists, ecl-file-taxonomy\"></ng-content>\n </div>\n </div>\n\n <footer class=\"ecl-file__footer\">\n @if (language()) {\n @if (hasTranslations()) {\n <button eclButton variant=\"tertiary\" eclStyle=\"neutral\"\n class=\"ecl-file__translation-toggle\"\n type=\"button\"\n [attr.aria-expanded]=\"isTranslationsExpanded()\"\n [attr.aria-controls]=\"eclFileItems()?.id()\"\n [attr.aria-label]=\"toggleAriaLabel() || language()\"\n (click)=\"onTranslationToggleClick()\">\n <span eclButtonLabel>\n <span class=\"ecl-file__language\" [id]=\"langId()\">{{ language() }}</span>\n </span>\n <ecl-icon icon=\"caret-down\" iconSet=\"phosphor\" size=\"fluid\"></ecl-icon>\n </button>\n } @else {\n <span class=\"ecl-file__language ecl-file__language--no-toggle\" [id]=\"langId()\">{{ language() }}</span>\n }\n }\n\n <div class=\"ecl-file__action\">\n <ng-content select=\"[eclFilePreview]\"></ng-content>\n <ng-content select=\"[eclFileDownload]\"></ng-content>\n </div>\n </footer>\n</article>\n\n<ng-content select=\"ecl-file-items\"></ng-content>\n<ng-content></ng-content>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "component", type: i1.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "title", "ariaHidden", "focusable", "isFlipHorizontal"] }, { kind: "directive", type: i2.EclLabelDirective, selector: "[eclLabel]", inputs: ["variant"] }, { kind: "component", type: i3.EclButtonComponent, selector: "button[eclButton], button[ecl-button], a[eclButton]", inputs: ["isIconOnly", "variant", "eclStyle", "size", "containerStyleClass"] }, { kind: "directive", type: i3.EclButtonLabelDirective, selector: "[eclButtonLabel]" }] }); }
392
421
  }
393
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclFileItemsComponent, decorators: [{
422
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclFileComponent, decorators: [{
394
423
  type: Component,
395
- args: [{ selector: 'ecl-file-items', imports: [
396
- ...EUI_ECL_BUTTON,
424
+ args: [{ selector: 'ecl-file', imports: [
397
425
  ...EUI_ECL_ICON,
398
- TranslatePipe,
399
- ], template: "<button eclButton variant=\"tertiary\" class=\"ecl-file__translation-toggle\" [attr.aria-expanded]=\"isExpanded()\" (click)=\"onToggleClick($event)\">\n <span eclButtonLabel>\n {{ label() || 'ecl.file.OTHER-LANGUAGES' | translate: { count: getItemsCount() } }}\n </span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-180\"></ecl-icon>\n</button>\n<ul class=\"ecl-file__translation-list\">\n <ng-content></ng-content>\n</ul>\n" }]
400
- }], propDecorators: { cssClasses: [{
401
- type: HostBinding,
402
- args: ['class']
403
- }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], isExpanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "isExpanded", required: false }] }, { type: i0.Output, args: ["isExpandedChange"] }], toggle: [{ type: i0.Output, args: ["toggle"] }], items: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => EclFileItemComponent), { isSignal: true }] }] } });
404
-
405
- /**
406
- * Component representing the taxonomy section of a file in the ECL File component.
407
- */
408
- class EclFileTaxonomyComponent extends ECLBaseDirective {
409
- /**
410
- * CSS classes applied to the host element.
411
- */
412
- get cssClasses() {
413
- return [super.getCssClasses('ecl-file__taxonomy')].join(' ').trim();
414
- }
415
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclFileTaxonomyComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
416
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: EclFileTaxonomyComponent, isStandalone: true, selector: "ecl-file-taxonomy", host: { properties: { "class": "this.cssClasses" } }, usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n" }); }
417
- }
418
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclFileTaxonomyComponent, decorators: [{
419
- type: Component,
420
- args: [{ selector: 'ecl-file-taxonomy', template: "<ng-content></ng-content>\n" }]
421
- }], propDecorators: { cssClasses: [{
422
- type: HostBinding,
423
- args: ['class']
424
- }] } });
426
+ ...EUI_ECL_LABEL,
427
+ ...EUI_ECL_BUTTON,
428
+ ], host: {
429
+ '[class]': 'cssClasses',
430
+ '[attr.id]': 'id()',
431
+ }, template: "<article class=\"ecl-file__container\">\n <div class=\"ecl-file__info\">\n @if (hasPicture()) {\n <ng-content select=\"[eclFilePicture]\"></ng-content>\n } @else {\n <div class=\"ecl-file__icon-box\">\n <ecl-icon [icon]=\"resolvedIconName()\" iconSet=\"phosphor\" size=\"l\" class=\"ecl-file__icon\" [title]=\"fileIcon()\"></ecl-icon>\n </div>\n }\n\n <div class=\"ecl-file__content\">\n @if (labelInfo()) {\n <div class=\"ecl-file__labels\">\n <div class=\"ecl-file__label\">\n <span eclLabel variant=\"highlight\">{{ labelInfo() }}</span>\n </div>\n </div>\n }\n\n <ng-content select=\"[eclFileTitle]\"></ng-content>\n\n @if (description()) {\n <div class=\"ecl-file__description\">{{ description() }}</div>\n }\n\n @if (resolvedPrimaryMeta()) {\n <ul class=\"ecl-file__primary-meta\">\n @for (item of resolvedPrimaryMeta(); track item) {\n <li class=\"ecl-file__primary-meta-item\">{{ item }}</li>\n }\n </ul>\n }\n\n <ng-content select=\"ecl-file-lists, ecl-file-taxonomy\"></ng-content>\n </div>\n </div>\n\n <footer class=\"ecl-file__footer\">\n @if (language()) {\n @if (hasTranslations()) {\n <button eclButton variant=\"tertiary\" eclStyle=\"neutral\"\n class=\"ecl-file__translation-toggle\"\n type=\"button\"\n [attr.aria-expanded]=\"isTranslationsExpanded()\"\n [attr.aria-controls]=\"eclFileItems()?.id()\"\n [attr.aria-label]=\"toggleAriaLabel() || language()\"\n (click)=\"onTranslationToggleClick()\">\n <span eclButtonLabel>\n <span class=\"ecl-file__language\" [id]=\"langId()\">{{ language() }}</span>\n </span>\n <ecl-icon icon=\"caret-down\" iconSet=\"phosphor\" size=\"fluid\"></ecl-icon>\n </button>\n } @else {\n <span class=\"ecl-file__language ecl-file__language--no-toggle\" [id]=\"langId()\">{{ language() }}</span>\n }\n }\n\n <div class=\"ecl-file__action\">\n <ng-content select=\"[eclFilePreview]\"></ng-content>\n <ng-content select=\"[eclFileDownload]\"></ng-content>\n </div>\n </footer>\n</article>\n\n<ng-content select=\"ecl-file-items\"></ng-content>\n<ng-content></ng-content>\n", styles: [":host{display:block}\n"] }]
432
+ }], ctorParameters: () => [], propDecorators: { description: [{ type: i0.Input, args: [{ isSignal: true, alias: "description", required: false }] }], id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], langId: [{ type: i0.Input, args: [{ isSignal: true, alias: "langId", required: false }] }], labelInfo: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelInfo", required: false }] }], language: [{ type: i0.Input, args: [{ isSignal: true, alias: "language", required: false }] }], primaryMeta: [{ type: i0.Input, args: [{ isSignal: true, alias: "primaryMeta", required: false }] }], detailMeta: [{ type: i0.Input, args: [{ isSignal: true, alias: "detailMeta", required: false }] }], meta: [{ type: i0.Input, args: [{ isSignal: true, alias: "meta", required: false }] }], metaId: [{ type: i0.Input, args: [{ isSignal: true, alias: "metaId", required: false }] }], toggleAriaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "toggleAriaLabel", required: false }] }], fileIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "fileIcon", required: false }] }], translationsToggle: [{ type: i0.Output, args: ["translationsToggle"] }], eclPictureContent: [{ type: i0.ContentChild, args: [i0.forwardRef(() => EclFilePictureDirective), { isSignal: true }] }], eclFileItems: [{ type: i0.ContentChild, args: [i0.forwardRef(() => EclFileItemsComponent), { isSignal: true }] }] } });
425
433
 
426
434
  const EUI_ECL_FILE = [
427
435
  EclFileComponent,
428
436
  EclFileDownloadDirective,
429
437
  EclFileItemsComponent,
430
438
  EclFileItemComponent,
431
- EclFileTaxonomyComponent,
439
+ EclFileListsComponent,
432
440
  EclFileTitleDirective,
433
441
  EclFileTranslationDownloadDirective,
434
442
  EclFilePictureDirective,
435
443
  EclFileImageDirective,
436
444
  EclFilePreviewDirective,
445
+ EclFileMetaDirective,
437
446
  ];
438
447
 
439
448
  /**
440
449
  * Generated bundle index. Do not edit.
441
450
  */
442
451
 
443
- export { EUI_ECL_FILE, EclFileComponent, EclFileDownloadDirective, EclFileImageDirective, EclFileItemComponent, EclFileItemsComponent, EclFileItemsToggleEvent, EclFilePictureDirective, EclFilePreviewDirective, EclFileTaxonomyComponent, EclFileTitleDirective, EclFileTranslationDownloadDirective };
452
+ export { EUI_ECL_FILE, EclFileComponent, EclFileDownloadDirective, EclFileImageDirective, EclFileItemComponent, EclFileItemsComponent, EclFileItemsToggleEvent, EclFileListsComponent, EclFileMetaDirective, EclFilePictureDirective, EclFilePreviewDirective, EclFileTitleDirective, EclFileTranslationDownloadDirective };
444
453
  //# sourceMappingURL=eui-ecl-components-ecl-file.mjs.map