@eui/ecl 22.0.0-alpha.45 → 22.0.0-alpha.46

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 (159) hide show
  1. package/docs/changelog.html +38 -0
  2. package/docs/components/EclMenuItemComponent.html +203 -161
  3. package/docs/components/EclMenuMegaItemComponent.html +3 -3
  4. package/docs/interfaces/EclMenuItem.html +4 -4
  5. package/docs/js/search/search_index.js +2 -2
  6. package/docs/json/documentation.json +152 -124
  7. package/docs/llms.txt +13 -7
  8. package/docs/properties.html +1 -1
  9. package/fesm2022/eui-ecl-components-ecl-accordion.mjs.map +1 -1
  10. package/fesm2022/eui-ecl-components-ecl-add-to-calendar.mjs.map +1 -1
  11. package/fesm2022/eui-ecl-components-ecl-animated-numbers.mjs.map +1 -1
  12. package/fesm2022/eui-ecl-components-ecl-app.mjs.map +1 -1
  13. package/fesm2022/eui-ecl-components-ecl-banner.mjs.map +1 -1
  14. package/fesm2022/eui-ecl-components-ecl-blockquote.mjs.map +1 -1
  15. package/fesm2022/eui-ecl-components-ecl-breadcrumb.mjs.map +1 -1
  16. package/fesm2022/eui-ecl-components-ecl-button.mjs.map +1 -1
  17. package/fesm2022/eui-ecl-components-ecl-card.mjs.map +1 -1
  18. package/fesm2022/eui-ecl-components-ecl-carousel.mjs.map +1 -1
  19. package/fesm2022/eui-ecl-components-ecl-category-filter.mjs.map +1 -1
  20. package/fesm2022/eui-ecl-components-ecl-checkbox.mjs.map +1 -1
  21. package/fesm2022/eui-ecl-components-ecl-content-block.mjs.map +1 -1
  22. package/fesm2022/eui-ecl-components-ecl-content-item.mjs.map +1 -1
  23. package/fesm2022/eui-ecl-components-ecl-date-block.mjs.map +1 -1
  24. package/fesm2022/eui-ecl-components-ecl-date-picker.mjs.map +1 -1
  25. package/fesm2022/eui-ecl-components-ecl-divider.mjs.map +1 -1
  26. package/fesm2022/eui-ecl-components-ecl-expandable.mjs.map +1 -1
  27. package/fesm2022/eui-ecl-components-ecl-fact-figures.mjs.map +1 -1
  28. package/fesm2022/eui-ecl-components-ecl-featured.mjs.map +1 -1
  29. package/fesm2022/eui-ecl-components-ecl-feedback-message.mjs.map +1 -1
  30. package/fesm2022/eui-ecl-components-ecl-file-upload.mjs.map +1 -1
  31. package/fesm2022/eui-ecl-components-ecl-file.mjs.map +1 -1
  32. package/fesm2022/eui-ecl-components-ecl-form-group.mjs.map +1 -1
  33. package/fesm2022/eui-ecl-components-ecl-form-label.mjs.map +1 -1
  34. package/fesm2022/eui-ecl-components-ecl-gallery.mjs.map +1 -1
  35. package/fesm2022/eui-ecl-components-ecl-help-block.mjs.map +1 -1
  36. package/fesm2022/eui-ecl-components-ecl-highlight-box.mjs.map +1 -1
  37. package/fesm2022/eui-ecl-components-ecl-highlighted-search.mjs.map +1 -1
  38. package/fesm2022/eui-ecl-components-ecl-icon.mjs.map +1 -1
  39. package/fesm2022/eui-ecl-components-ecl-inpage-navigation.mjs.map +1 -1
  40. package/fesm2022/eui-ecl-components-ecl-label.mjs.map +1 -1
  41. package/fesm2022/eui-ecl-components-ecl-layout-wrapper.mjs.map +1 -1
  42. package/fesm2022/eui-ecl-components-ecl-link.mjs.map +1 -1
  43. package/fesm2022/eui-ecl-components-ecl-list-illustration.mjs.map +1 -1
  44. package/fesm2022/eui-ecl-components-ecl-list.mjs.map +1 -1
  45. package/fesm2022/eui-ecl-components-ecl-loading-indicator.mjs.map +1 -1
  46. package/fesm2022/eui-ecl-components-ecl-media-container.mjs.map +1 -1
  47. package/fesm2022/eui-ecl-components-ecl-mega-menu.mjs.map +1 -1
  48. package/fesm2022/eui-ecl-components-ecl-menu.mjs +67 -49
  49. package/fesm2022/eui-ecl-components-ecl-menu.mjs.map +1 -1
  50. package/fesm2022/eui-ecl-components-ecl-modal.mjs.map +1 -1
  51. package/fesm2022/eui-ecl-components-ecl-multiselect.mjs.map +1 -1
  52. package/fesm2022/eui-ecl-components-ecl-navigation-list.mjs.map +1 -1
  53. package/fesm2022/eui-ecl-components-ecl-news-ticker.mjs.map +1 -1
  54. package/fesm2022/eui-ecl-components-ecl-notification.mjs.map +1 -1
  55. package/fesm2022/eui-ecl-components-ecl-page-header.mjs.map +1 -1
  56. package/fesm2022/eui-ecl-components-ecl-page-information.mjs.map +1 -1
  57. package/fesm2022/eui-ecl-components-ecl-page-summary.mjs.map +1 -1
  58. package/fesm2022/eui-ecl-components-ecl-pagination.mjs.map +1 -1
  59. package/fesm2022/eui-ecl-components-ecl-popover.mjs.map +1 -1
  60. package/fesm2022/eui-ecl-components-ecl-quiz.mjs.map +1 -1
  61. package/fesm2022/eui-ecl-components-ecl-radio.mjs.map +1 -1
  62. package/fesm2022/eui-ecl-components-ecl-range.mjs.map +1 -1
  63. package/fesm2022/eui-ecl-components-ecl-rating-field.mjs.map +1 -1
  64. package/fesm2022/eui-ecl-components-ecl-search-form.mjs.map +1 -1
  65. package/fesm2022/eui-ecl-components-ecl-select.mjs.map +1 -1
  66. package/fesm2022/eui-ecl-components-ecl-site-footer.mjs.map +1 -1
  67. package/fesm2022/eui-ecl-components-ecl-site-header.mjs.map +1 -1
  68. package/fesm2022/eui-ecl-components-ecl-slogan-ticker.mjs.map +1 -1
  69. package/fesm2022/eui-ecl-components-ecl-social-media-follow.mjs.map +1 -1
  70. package/fesm2022/eui-ecl-components-ecl-splash-page.mjs.map +1 -1
  71. package/fesm2022/eui-ecl-components-ecl-spotlight.mjs.map +1 -1
  72. package/fesm2022/eui-ecl-components-ecl-sticky-container.mjs.map +1 -1
  73. package/fesm2022/eui-ecl-components-ecl-story-card.mjs.map +1 -1
  74. package/fesm2022/eui-ecl-components-ecl-table.mjs.map +1 -1
  75. package/fesm2022/eui-ecl-components-ecl-tabs.mjs.map +1 -1
  76. package/fesm2022/eui-ecl-components-ecl-tag.mjs.map +1 -1
  77. package/fesm2022/eui-ecl-components-ecl-text-area.mjs.map +1 -1
  78. package/fesm2022/eui-ecl-components-ecl-text-input.mjs.map +1 -1
  79. package/fesm2022/eui-ecl-components-ecl-text-media.mjs.map +1 -1
  80. package/fesm2022/eui-ecl-components-ecl-timeline.mjs.map +1 -1
  81. package/fesm2022/eui-ecl-components-ecl-tooltip.mjs.map +1 -1
  82. package/fesm2022/eui-ecl-core.mjs.map +1 -1
  83. package/fesm2022/eui-ecl-shared.mjs.map +1 -1
  84. package/package.json +1 -1
  85. package/types/eui-ecl-components-ecl-accordion.d.ts.map +1 -1
  86. package/types/eui-ecl-components-ecl-add-to-calendar.d.ts.map +1 -1
  87. package/types/eui-ecl-components-ecl-animated-numbers.d.ts.map +1 -1
  88. package/types/eui-ecl-components-ecl-app.d.ts.map +1 -1
  89. package/types/eui-ecl-components-ecl-banner.d.ts.map +1 -1
  90. package/types/eui-ecl-components-ecl-blockquote.d.ts.map +1 -1
  91. package/types/eui-ecl-components-ecl-breadcrumb.d.ts.map +1 -1
  92. package/types/eui-ecl-components-ecl-button.d.ts.map +1 -1
  93. package/types/eui-ecl-components-ecl-card.d.ts.map +1 -1
  94. package/types/eui-ecl-components-ecl-carousel.d.ts.map +1 -1
  95. package/types/eui-ecl-components-ecl-category-filter.d.ts.map +1 -1
  96. package/types/eui-ecl-components-ecl-checkbox.d.ts.map +1 -1
  97. package/types/eui-ecl-components-ecl-content-block.d.ts.map +1 -1
  98. package/types/eui-ecl-components-ecl-content-item.d.ts.map +1 -1
  99. package/types/eui-ecl-components-ecl-date-block.d.ts.map +1 -1
  100. package/types/eui-ecl-components-ecl-date-picker.d.ts.map +1 -1
  101. package/types/eui-ecl-components-ecl-divider.d.ts.map +1 -1
  102. package/types/eui-ecl-components-ecl-expandable.d.ts.map +1 -1
  103. package/types/eui-ecl-components-ecl-fact-figures.d.ts.map +1 -1
  104. package/types/eui-ecl-components-ecl-featured.d.ts.map +1 -1
  105. package/types/eui-ecl-components-ecl-feedback-message.d.ts.map +1 -1
  106. package/types/eui-ecl-components-ecl-file-upload.d.ts.map +1 -1
  107. package/types/eui-ecl-components-ecl-file.d.ts.map +1 -1
  108. package/types/eui-ecl-components-ecl-form-group.d.ts.map +1 -1
  109. package/types/eui-ecl-components-ecl-form-label.d.ts.map +1 -1
  110. package/types/eui-ecl-components-ecl-gallery.d.ts.map +1 -1
  111. package/types/eui-ecl-components-ecl-help-block.d.ts.map +1 -1
  112. package/types/eui-ecl-components-ecl-highlight-box.d.ts.map +1 -1
  113. package/types/eui-ecl-components-ecl-highlighted-search.d.ts.map +1 -1
  114. package/types/eui-ecl-components-ecl-icon.d.ts.map +1 -1
  115. package/types/eui-ecl-components-ecl-inpage-navigation.d.ts.map +1 -1
  116. package/types/eui-ecl-components-ecl-label.d.ts.map +1 -1
  117. package/types/eui-ecl-components-ecl-layout-wrapper.d.ts.map +1 -1
  118. package/types/eui-ecl-components-ecl-link.d.ts.map +1 -1
  119. package/types/eui-ecl-components-ecl-list-illustration.d.ts.map +1 -1
  120. package/types/eui-ecl-components-ecl-list.d.ts.map +1 -1
  121. package/types/eui-ecl-components-ecl-loading-indicator.d.ts.map +1 -1
  122. package/types/eui-ecl-components-ecl-media-container.d.ts.map +1 -1
  123. package/types/eui-ecl-components-ecl-mega-menu.d.ts.map +1 -1
  124. package/types/eui-ecl-components-ecl-menu.d.ts +16 -11
  125. package/types/eui-ecl-components-ecl-menu.d.ts.map +1 -1
  126. package/types/eui-ecl-components-ecl-modal.d.ts.map +1 -1
  127. package/types/eui-ecl-components-ecl-multiselect.d.ts.map +1 -1
  128. package/types/eui-ecl-components-ecl-navigation-list.d.ts.map +1 -1
  129. package/types/eui-ecl-components-ecl-news-ticker.d.ts.map +1 -1
  130. package/types/eui-ecl-components-ecl-notification.d.ts.map +1 -1
  131. package/types/eui-ecl-components-ecl-page-header.d.ts.map +1 -1
  132. package/types/eui-ecl-components-ecl-page-information.d.ts.map +1 -1
  133. package/types/eui-ecl-components-ecl-page-summary.d.ts.map +1 -1
  134. package/types/eui-ecl-components-ecl-pagination.d.ts.map +1 -1
  135. package/types/eui-ecl-components-ecl-popover.d.ts.map +1 -1
  136. package/types/eui-ecl-components-ecl-quiz.d.ts.map +1 -1
  137. package/types/eui-ecl-components-ecl-radio.d.ts.map +1 -1
  138. package/types/eui-ecl-components-ecl-range.d.ts.map +1 -1
  139. package/types/eui-ecl-components-ecl-rating-field.d.ts.map +1 -1
  140. package/types/eui-ecl-components-ecl-search-form.d.ts.map +1 -1
  141. package/types/eui-ecl-components-ecl-select.d.ts.map +1 -1
  142. package/types/eui-ecl-components-ecl-site-footer.d.ts.map +1 -1
  143. package/types/eui-ecl-components-ecl-site-header.d.ts.map +1 -1
  144. package/types/eui-ecl-components-ecl-slogan-ticker.d.ts.map +1 -1
  145. package/types/eui-ecl-components-ecl-social-media-follow.d.ts.map +1 -1
  146. package/types/eui-ecl-components-ecl-splash-page.d.ts.map +1 -1
  147. package/types/eui-ecl-components-ecl-spotlight.d.ts.map +1 -1
  148. package/types/eui-ecl-components-ecl-sticky-container.d.ts.map +1 -1
  149. package/types/eui-ecl-components-ecl-story-card.d.ts.map +1 -1
  150. package/types/eui-ecl-components-ecl-table.d.ts.map +1 -1
  151. package/types/eui-ecl-components-ecl-tabs.d.ts.map +1 -1
  152. package/types/eui-ecl-components-ecl-tag.d.ts.map +1 -1
  153. package/types/eui-ecl-components-ecl-text-area.d.ts.map +1 -1
  154. package/types/eui-ecl-components-ecl-text-input.d.ts.map +1 -1
  155. package/types/eui-ecl-components-ecl-text-media.d.ts.map +1 -1
  156. package/types/eui-ecl-components-ecl-timeline.d.ts.map +1 -1
  157. package/types/eui-ecl-components-ecl-tooltip.d.ts.map +1 -1
  158. package/types/eui-ecl-core.d.ts.map +1 -1
  159. package/types/eui-ecl-shared.d.ts.map +1 -1
package/docs/llms.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  # eui documentation
2
2
 
3
- > Generated by compodoc 2.0.0 at 2026-10-13T09:08:12.158Z, llm-md export.
3
+ > Generated by compodoc 2.0.0 at 2026-10-14T13:38:31.477Z, llm-md export.
4
4
 
5
5
  ## Modules
6
6
 
@@ -1576,10 +1576,16 @@ Outputs:
1576
1576
  - `class: string = ''`
1577
1577
 
1578
1578
  Properties:
1579
+ - `ariaCurrent: unknown = computed<string | null>(() => this.isCurrent() && !this.hasCurrentChild() ? 'page' : null)` — 'aria-current' is set to 'page' only when this item itself is the current page, and not when it is marked current merely because one of its children is the active item (in that case the child link carries 'aria-current="page"'). Derived from live state so it stays correct whether 'isCurrent' is set at render time or updated on selection.
1580
+ - `children: unknown = computed<EclMenuItem[]>(() => this.hasChildren() ? this.submenu().eclMenuMegaItems() : [])`
1579
1581
  - `el: unknown = inject(ElementRef)`
1582
+ - `hasChildren: unknown = computed<boolean>(() => !!this.submenu())`
1583
+ - `hasCurrentChild: unknown = computed<boolean>(() => this.children().some((child) => child.isCurrent()))` — Whether any child (sub-item) is the current item.
1584
+ - `hasEclChildrenDataAttribute: unknown = computed<boolean | undefined>(() => this.hasChildren() || undefined)`
1580
1585
  - `isCurrent: unknown = linkedSignal(() => this.isCurrentInput())`
1586
+ - `isDataExpanded: unknown = computed<boolean | null>(() => this.hasChildren() ? this.isHovered() : null)`
1581
1587
  - `isExpanded: unknown = signal(false)`
1582
- - `isFull: unknown = computed<boolean>(() => this.hasChildren && this.submenu().eclMenuMegaItems().length >= ColTrigger.COL3_TRIGGER)` — Set to 'true', when item has more than 13 chidren and the overlay needs to use the full available space.
1588
+ - `isFull: unknown = computed<boolean>(() => this.hasChildren() && this.submenu().eclMenuMegaItems().length >= ColTrigger.COL3_TRIGGER)` — Set to 'true', when item has more than 13 chidren and the overlay needs to use the full available space.
1583
1589
  - `isHovered: unknown = signal(false)`
1584
1590
  - `isMobileBreakpoint: unknown = signal(false)`
1585
1591
  - `isVisible: unknown = signal(true)` — Used when menu has overlay, to show if the item is currently displayed.
@@ -1591,7 +1597,7 @@ Methods:
1591
1597
  - `onFocusFromNext(): void` — Manages the state when the item is focused, when navigating with keyboard and the navigation is coming from the next root menu item.
1592
1598
  - `onFocusFromPrev(): void` — Manages the state when the item is focused, when navigating with keyboard and the navigation is coming from the previous root menu item.
1593
1599
  - `onFocusFromSubmenu(): void` — Manages the state when the item is focused, when navigating with keyboard and the navigation is coming from the submenu.
1594
- - `onItemCaretClick(evt: MouseEvent): void` — When clicking the caret button, to expand item's children. Used in mobile view.
1600
+ - `onItemCaretClick(evt: MouseEvent): void` — When clicking the caret button, to expand/collapse item's children. Used on both desktop (click-to-open/close affordance) and mobile view. The caret is a toggle control, not a navigation control: prevent its default action and stop propagation so that, when the item also has an href/routerLink, clicking the caret toggles the submenu instead of navigating the link.
1595
1601
  - `onItemClick(evt: Event): void`
1596
1602
  - `onItemFocus(evt: FocusEvent): void`
1597
1603
  - `onItemMouseEnter(evt: MouseEvent): void`
@@ -1656,8 +1662,8 @@ Outputs:
1656
1662
  - `class: string = ''`
1657
1663
 
1658
1664
  Properties:
1659
- - `children: EclMenuItem[] = []`
1660
- - `hasChildren: unknown = false`
1665
+ - `children: unknown = signal<EclMenuItem[]>([])`
1666
+ - `hasChildren: unknown = signal(false)`
1661
1667
  - `isCurrent: unknown = linkedSignal(() => this.isCurrentInput())`
1662
1668
  - `isExpanded: unknown = signal(true)`
1663
1669
 
@@ -7788,8 +7794,8 @@ Properties:
7788
7794
  File: `packages/ecl/components/ecl-menu/models/ecl-menu-item.model.ts`
7789
7795
 
7790
7796
  Properties:
7791
- - `children?: EclMenuItem[]`
7792
- - `hasChildren?: boolean`
7797
+ - `children?: Signal<EclMenuItem[]>`
7798
+ - `hasChildren?: Signal<boolean>`
7793
7799
  - `id?: Signal<string>`
7794
7800
  - `isCurrent?: WritableSignal<boolean>`
7795
7801
  - `isExpanded?: WritableSignal<boolean>`
@@ -128,7 +128,7 @@
128
128
  </ol>
129
129
  <ul class="properties-list">
130
130
  <li>
131
- <b>Version</b> : 22.0.0-alpha.45</li>
131
+ <b>Version</b> : 22.0.0-alpha.46</li>
132
132
  </ul>
133
133
 
134
134
 
@@ -1 +1 @@
1
- {"version":3,"file":"eui-ecl-components-ecl-accordion.mjs","sources":["../../components/ecl-accordion/ecl-accordion-item-new.directive.ts","../../components/ecl-accordion/ecl-accordion.directive.ts","../../components/ecl-accordion/ecl-accordion-summary.component.ts","../../components/ecl-accordion/ecl-accordion-summary.component.html","../../components/ecl-accordion/events/ecl-accordion-toggle.event.ts","../../components/ecl-accordion/index.ts","../../components/ecl-accordion/eui-ecl-components-ecl-accordion.ts"],"sourcesContent":["import { Directive } from \"@angular/core\";\n\n@Directive({\n selector: 'details[eclAccordionItem]',\n host: {\n class: 'ecl-accordion__item',\n },\n})\nexport class EclAccordionItemDirective {}\n\n@Directive({\n selector: 'div[eclAccordionContent]',\n host: {\n class: 'ecl-accordion__content',\n },\n})\nexport class EclAccordionContentDirective {}","import {\n afterNextRender,\n afterRenderEffect,\n booleanAttribute,\n computed,\n contentChildren,\n Directive,\n ElementRef,\n inject,\n input,\n Renderer2,\n OnDestroy,\n} from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EuiAppShellService } from '@eui/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { EclAccordionItemDirective } from './ecl-accordion-item-new.directive';\n\n/**\n * Accordion component that manages the expansion and collapsing state of accordion items.\n * Uses the `ECLBaseDirective` to apply appropriate CSS classes and manage the visual styling.\n *\n * @description\n * This is the main component for the accordion container, responsible for managing the expansion\n * of individual items within the accordion. It provides the functionality to group and organize content\n * in expandable sections.\n *\n * @property {string} cssClasses - Returns a string of CSS classes applied to the host element.\n * The main class is `ecl-accordion`, which can be extended with additional classes.\n *\n */\n@Directive({\n selector: 'div[eclAccordion]',\n hostDirectives: [\n {\n directive: ECLBaseDirective,\n },\n ],\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclAccordionDirective implements OnDestroy {\n baseDirective = inject(ECLBaseDirective);\n isSidebar = input(false, { transform: booleanAttribute });\n\n /**\n * Configurable breakpoint (in pixels) for the sidebar variant.\n * When the viewport width is at or above this value, sidebar items are opened;\n * below it, they are collapsed. Defaults to 996 (the 'lg' breakpoint).\n *\n * Matches the ECL pattern: data-ecl-accordion-sidebar-media-query=\"(min-width: 768px)\"\n *\n * @example\n * <div eclAccordion isSidebar [sidebarBreakpoint]=\"768\">\n */\n sidebarBreakpoint = input<480 | 768 | 996 | 1140 | 1440 | 1920 | 2560 | 3840>(996);\n\n private items = contentChildren(EclAccordionItemDirective, { read: ElementRef });\n private renderer = inject(Renderer2);\n private euiAppShellService = inject(EuiAppShellService);\n private destroy$: Subject<boolean> = new Subject<boolean>();\n\n /**\n * @description\n * Retrieves and returns the CSS classes for the component based on its current state.\n * Uses `baseDirective` to fetch the appropriate CSS classes.\n *\n * @returns {string} - A string of CSS class names.\n */\n protected readonly cssClasses = computed<string>(() =>\n [this.baseDirective.getCssClasses('ecl-accordion'),\n this.isSidebar() ? 'ecl-accordion--sidebar' : '',\n ].join(' ').trim());\n\n constructor() {\n afterRenderEffect(() => {\n this.setFirstAndLastClasses();\n });\n\n afterNextRender(() => {\n if (this.isSidebar()) {\n this.subscribeToBreakpoints();\n }\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Subscribes to the app shell state's windowWidth and toggles the open state\n * of all accordion items when in sidebar mode. Items are opened when the viewport\n * is at or above the configured sidebarBreakpoint (in px), and collapsed below it.\n */\n private subscribeToBreakpoints(): void {\n this.euiAppShellService.getState<number>('windowWidth')\n .pipe(takeUntil(this.destroy$))\n .subscribe((windowWidth: number) => {\n if (windowWidth == null) return;\n const isDesktop = windowWidth >= this.sidebarBreakpoint();\n\n this.items().forEach(item => {\n item.nativeElement.open = isDesktop;\n });\n });\n }\n\n private setFirstAndLastClasses(): void {\n const elements = this.items();\n\n if (elements.length === 0) return;\n\n elements.forEach((item) => {\n this.renderer.removeClass(item.nativeElement, 'is-first');\n this.renderer.removeClass(item.nativeElement, 'is-last');\n });\n\n this.renderer.addClass(elements[0].nativeElement, 'is-first');\n if (elements.length > 1) {\n this.renderer.addClass(elements[elements.length - 1].nativeElement, 'is-last');\n }\n }\n}\n\n/**\n * Marks an icon element as the accordion toggle icon.\n * Applies the `ecl-accordion__toggle-icon` positioning class.\n *\n * @example\n * ```html\n * <ecl-icon eclAccordionToggleIcon icon=\"chevron-down\" size=\"s\"></ecl-icon>\n * ```\n */\n@Directive({\n selector: '[eclAccordionToggleIcon]',\n host: {\n class: 'ecl-accordion__toggle-icon',\n },\n})\nexport class EclAccordionToggleIconDirective {}\n","import {\n Component,\n computed,\n contentChildren,\n} from '@angular/core';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\nimport { EclAccordionToggleIconDirective } from './ecl-accordion.directive';\n\n/**\n * Represents the toggle (summary) element within an ECL Accordion item.\n * Renders default +/- icons unless custom toggle icons are projected.\n */\n@Component({\n selector: 'summary[eclAccordionToggle]',\n templateUrl: './ecl-accordion-summary.component.html',\n imports: [...EUI_ECL_ICON],\n host: {\n class: 'ecl-accordion__toggle',\n },\n})\nexport class EclAccordionSummaryComponent {\n private customIcons = contentChildren(EclAccordionToggleIconDirective, { descendants: true });\n\n /** Whether to show the default +/- icons. Hidden when custom toggle icons are projected. */\n protected showDefaultIcons = computed(() => this.customIcons().length === 0);\n}\n","<ng-content></ng-content>\n@if (showDefaultIcons()) {\n <ecl-icon icon=\"plus\" size=\"s\" class=\"ecl-accordion__toggle-icon\" ariaHidden=\"true\">\n </ecl-icon>\n <ecl-icon icon=\"minus\" size=\"s\" class=\"ecl-accordion__toggle-icon\" ariaHidden=\"true\">\n </ecl-icon>\n}","import { EclBaseEvent } from '@eui/ecl/core';\n\nexport class EclAccordionToggleEvent extends EclBaseEvent {\n\tconstructor(public isExpanded: boolean) {\n\t\tsuper();\n\t}\n}","\nimport { EclAccordionContentDirective, EclAccordionItemDirective } from './ecl-accordion-item-new.directive';\nimport { EclAccordionSummaryComponent } from './ecl-accordion-summary.component';\nimport { EclAccordionDirective, EclAccordionToggleIconDirective } from './ecl-accordion.directive';\n\nexport * from './ecl-accordion-item-new.directive';\nexport * from './ecl-accordion-summary.component';\nexport * from './ecl-accordion.directive';\nexport * from './events/ecl-accordion-toggle.event';\n\nexport const EUI_ECL_ACCORDION = [\n EclAccordionContentDirective,\n EclAccordionItemDirective,\n EclAccordionSummaryComponent,\n EclAccordionDirective,\n EclAccordionToggleIconDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":";;;;;;;;;MAQa,yBAAyB,CAAA;8GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,qBAAqB;AAC7B,qBAAA;AACF,iBAAA;;MASY,4BAA4B,CAAA;8GAA5B,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBANxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,wBAAwB;AAChC,qBAAA;AACF,iBAAA;;;ACGD;;;;;;;;;;;;AAYG;MAYU,qBAAqB,CAAA;AAiC9B,IAAA,WAAA,GAAA;AAhCA,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;QACxC,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,iFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAEzD;;;;;;;;;AASG;QACH,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAqD,GAAG;8FAAC;QAE1E,IAAA,CAAA,KAAK,GAAG,eAAe,CAAC,yBAAyB,6EAAI,IAAI,EAAE,UAAU,EAAA,CAAG;AACxE,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC/C,QAAA,IAAA,CAAA,QAAQ,GAAqB,IAAI,OAAO,EAAW;AAE3D;;;;;;AAMG;AACgB,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAS,MAC7C,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,eAAe,CAAC;YAClD,IAAI,CAAC,SAAS,EAAE,GAAG,wBAAwB,GAAG,EAAE;AAC/C,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;uFAAC;QAGnB,iBAAiB,CAAC,MAAK;YACnB,IAAI,CAAC,sBAAsB,EAAE;AACjC,QAAA,CAAC,CAAC;QAEF,eAAe,CAAC,MAAK;AACjB,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;gBAClB,IAAI,CAAC,sBAAsB,EAAE;YACjC;AACJ,QAAA,CAAC,CAAC;IACN;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;IAC/B;AAEA;;;;AAIG;IACK,sBAAsB,GAAA;AAC1B,QAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAS,aAAa;AACjD,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,aAAA,SAAS,CAAC,CAAC,WAAmB,KAAI;YAC/B,IAAI,WAAW,IAAI,IAAI;gBAAE;YACzB,MAAM,SAAS,GAAG,WAAW,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAEzD,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,IAAI,IAAG;AACxB,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,SAAS;AACvC,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;IACV;IAEQ,sBAAsB,GAAA;AAC1B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE;AAE7B,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE;AAE3B,QAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YACtB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC;YACzD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC;AAC5D,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,UAAU,CAAC;AAC7D,QAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,SAAS,CAAC;QAClF;IACJ;8GAlFS,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,cAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAgBE,yBAAyB,EAAA,IAAA,EAAU,UAAU,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAhBpE,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAXjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,cAAc,EAAE;AACZ,wBAAA;AACI,4BAAA,SAAS,EAAE,gBAAgB;AAC9B,yBAAA;AACJ,qBAAA;AACD,oBAAA,IAAI,EAAE;AACF,wBAAA,SAAS,EAAE,cAAc;AAC5B,qBAAA;AACJ,iBAAA;AAiBmC,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,yBAAyB,CAAA,EAAA,EAAA,GAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;AAqEnF;;;;;;;;AAQG;MAOU,+BAA+B,CAAA;8GAA/B,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA/B,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,4BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA/B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAN3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,4BAA4B;AACtC,qBAAA;AACJ,iBAAA;;;ACrID;;;AAGG;MASU,4BAA4B,CAAA;AARzC,IAAA,WAAA,GAAA;QASY,IAAA,CAAA,WAAW,GAAG,eAAe,CAAC,+BAA+B,mFAAI,WAAW,EAAE,IAAI,EAAA,CAAG;;AAGnF,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,KAAK,CAAC;6FAAC;AAC/E,IAAA;8GALY,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EACC,+BAA+B,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrBzE,iSAMC,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,WAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDcY,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBARxC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6BAA6B,EAAA,OAAA,EAE9B,CAAC,GAAG,YAAY,CAAC,EAAA,IAAA,EACpB;AACF,wBAAA,KAAK,EAAE,uBAAuB;AACjC,qBAAA,EAAA,QAAA,EAAA,iSAAA,EAAA;AAGqC,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,+BAA+B,CAAA,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEnB1F,MAAO,uBAAwB,SAAQ,YAAY,CAAA;AACxD,IAAA,WAAA,CAAmB,UAAmB,EAAA;AACrC,QAAA,KAAK,EAAE;QADW,IAAA,CAAA,UAAU,GAAV,UAAU;IAE7B;AACA;;ACIM,MAAM,iBAAiB,GAAG;IAC/B,4BAA4B;IAC5B,yBAAyB;IACzB,4BAA4B;IAC5B,qBAAqB;IACrB,+BAA+B;;;ACfjC;;AAEG;;;;"}
1
+ {"version":3,"file":"eui-ecl-components-ecl-accordion.mjs","sources":["../../components/ecl-accordion/ecl-accordion-item-new.directive.ts","../../components/ecl-accordion/ecl-accordion.directive.ts","../../components/ecl-accordion/ecl-accordion-summary.component.ts","../../components/ecl-accordion/ecl-accordion-summary.component.html","../../components/ecl-accordion/events/ecl-accordion-toggle.event.ts","../../components/ecl-accordion/index.ts","../../components/ecl-accordion/eui-ecl-components-ecl-accordion.ts"],"sourcesContent":["import { Directive } from \"@angular/core\";\n\n@Directive({\n selector: 'details[eclAccordionItem]',\n host: {\n class: 'ecl-accordion__item',\n },\n})\nexport class EclAccordionItemDirective {}\n\n@Directive({\n selector: 'div[eclAccordionContent]',\n host: {\n class: 'ecl-accordion__content',\n },\n})\nexport class EclAccordionContentDirective {}","import {\n afterNextRender,\n afterRenderEffect,\n booleanAttribute,\n computed,\n contentChildren,\n Directive,\n ElementRef,\n inject,\n input,\n Renderer2,\n OnDestroy,\n} from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EuiAppShellService } from '@eui/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { EclAccordionItemDirective } from './ecl-accordion-item-new.directive';\n\n/**\n * Accordion component that manages the expansion and collapsing state of accordion items.\n * Uses the `ECLBaseDirective` to apply appropriate CSS classes and manage the visual styling.\n *\n * @description\n * This is the main component for the accordion container, responsible for managing the expansion\n * of individual items within the accordion. It provides the functionality to group and organize content\n * in expandable sections.\n *\n * @property {string} cssClasses - Returns a string of CSS classes applied to the host element.\n * The main class is `ecl-accordion`, which can be extended with additional classes.\n *\n */\n@Directive({\n selector: 'div[eclAccordion]',\n hostDirectives: [\n {\n directive: ECLBaseDirective,\n },\n ],\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclAccordionDirective implements OnDestroy {\n baseDirective = inject(ECLBaseDirective);\n isSidebar = input(false, { transform: booleanAttribute });\n\n /**\n * Configurable breakpoint (in pixels) for the sidebar variant.\n * When the viewport width is at or above this value, sidebar items are opened;\n * below it, they are collapsed. Defaults to 996 (the 'lg' breakpoint).\n *\n * Matches the ECL pattern: data-ecl-accordion-sidebar-media-query=\"(min-width: 768px)\"\n *\n * @example\n * <div eclAccordion isSidebar [sidebarBreakpoint]=\"768\">\n */\n sidebarBreakpoint = input<480 | 768 | 996 | 1140 | 1440 | 1920 | 2560 | 3840>(996);\n\n private items = contentChildren(EclAccordionItemDirective, { read: ElementRef });\n private renderer = inject(Renderer2);\n private euiAppShellService = inject(EuiAppShellService);\n private destroy$: Subject<boolean> = new Subject<boolean>();\n\n /**\n * @description\n * Retrieves and returns the CSS classes for the component based on its current state.\n * Uses `baseDirective` to fetch the appropriate CSS classes.\n *\n * @returns {string} - A string of CSS class names.\n */\n protected readonly cssClasses = computed<string>(() =>\n [this.baseDirective.getCssClasses('ecl-accordion'),\n this.isSidebar() ? 'ecl-accordion--sidebar' : '',\n ].join(' ').trim());\n\n constructor() {\n afterRenderEffect(() => {\n this.setFirstAndLastClasses();\n });\n\n afterNextRender(() => {\n if (this.isSidebar()) {\n this.subscribeToBreakpoints();\n }\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Subscribes to the app shell state's windowWidth and toggles the open state\n * of all accordion items when in sidebar mode. Items are opened when the viewport\n * is at or above the configured sidebarBreakpoint (in px), and collapsed below it.\n */\n private subscribeToBreakpoints(): void {\n this.euiAppShellService.getState<number>('windowWidth')\n .pipe(takeUntil(this.destroy$))\n .subscribe((windowWidth: number) => {\n if (windowWidth == null) return;\n const isDesktop = windowWidth >= this.sidebarBreakpoint();\n\n this.items().forEach(item => {\n item.nativeElement.open = isDesktop;\n });\n });\n }\n\n private setFirstAndLastClasses(): void {\n const elements = this.items();\n\n if (elements.length === 0) return;\n\n elements.forEach((item) => {\n this.renderer.removeClass(item.nativeElement, 'is-first');\n this.renderer.removeClass(item.nativeElement, 'is-last');\n });\n\n this.renderer.addClass(elements[0].nativeElement, 'is-first');\n if (elements.length > 1) {\n this.renderer.addClass(elements[elements.length - 1].nativeElement, 'is-last');\n }\n }\n}\n\n/**\n * Marks an icon element as the accordion toggle icon.\n * Applies the `ecl-accordion__toggle-icon` positioning class.\n *\n * @example\n * ```html\n * <ecl-icon eclAccordionToggleIcon icon=\"chevron-down\" size=\"s\"></ecl-icon>\n * ```\n */\n@Directive({\n selector: '[eclAccordionToggleIcon]',\n host: {\n class: 'ecl-accordion__toggle-icon',\n },\n})\nexport class EclAccordionToggleIconDirective {}\n","import {\n Component,\n computed,\n contentChildren,\n} from '@angular/core';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\nimport { EclAccordionToggleIconDirective } from './ecl-accordion.directive';\n\n/**\n * Represents the toggle (summary) element within an ECL Accordion item.\n * Renders default +/- icons unless custom toggle icons are projected.\n */\n@Component({\n selector: 'summary[eclAccordionToggle]',\n templateUrl: './ecl-accordion-summary.component.html',\n imports: [...EUI_ECL_ICON],\n host: {\n class: 'ecl-accordion__toggle',\n },\n})\nexport class EclAccordionSummaryComponent {\n private customIcons = contentChildren(EclAccordionToggleIconDirective, { descendants: true });\n\n /** Whether to show the default +/- icons. Hidden when custom toggle icons are projected. */\n protected showDefaultIcons = computed(() => this.customIcons().length === 0);\n}\n","<ng-content></ng-content>\n@if (showDefaultIcons()) {\n <ecl-icon icon=\"plus\" size=\"s\" class=\"ecl-accordion__toggle-icon\" ariaHidden=\"true\">\n </ecl-icon>\n <ecl-icon icon=\"minus\" size=\"s\" class=\"ecl-accordion__toggle-icon\" ariaHidden=\"true\">\n </ecl-icon>\n}","import { EclBaseEvent } from '@eui/ecl/core';\n\nexport class EclAccordionToggleEvent extends EclBaseEvent {\n\tconstructor(public isExpanded: boolean) {\n\t\tsuper();\n\t}\n}","\nimport { EclAccordionContentDirective, EclAccordionItemDirective } from './ecl-accordion-item-new.directive';\nimport { EclAccordionSummaryComponent } from './ecl-accordion-summary.component';\nimport { EclAccordionDirective, EclAccordionToggleIconDirective } from './ecl-accordion.directive';\n\nexport * from './ecl-accordion-item-new.directive';\nexport * from './ecl-accordion-summary.component';\nexport * from './ecl-accordion.directive';\nexport * from './events/ecl-accordion-toggle.event';\n\nexport const EUI_ECL_ACCORDION = [\n EclAccordionContentDirective,\n EclAccordionItemDirective,\n EclAccordionSummaryComponent,\n EclAccordionDirective,\n EclAccordionToggleIconDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"eui-ecl-components-ecl-add-to-calendar.mjs","sources":["../../components/ecl-add-to-calendar/ecl-add-to-calendar-action.directive.ts","../../components/ecl-add-to-calendar/ecl-add-to-calendar.component.ts","../../components/ecl-add-to-calendar/ecl-add-to-calendar.component.html","../../components/ecl-add-to-calendar/index.ts","../../components/ecl-add-to-calendar/eui-ecl-components-ecl-add-to-calendar.ts"],"sourcesContent":["import { Directive } from \"@angular/core\";\n\n@Directive({\n selector: 'div[eclAddToCalendarAction]',\n host: {\n class: 'ecl-add-to-calendar__action',\n },\n})\nexport class EclAddToCalendarActionDirective {}","import { booleanAttribute, Component, input } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\n\n/**\n * ECL Add to Calendar component.\n * Displays event information with optional date, time, and location metadata.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'div[eclAddToCalendar]',\n templateUrl: './ecl-add-to-calendar.component.html',\n imports: [...EUI_ECL_ICON],\n host: {\n class: 'ecl-add-to-calendar',\n '[class.ecl-add-to-calendar--full-width]': 'isFullWidth()',\n },\n})\nexport class EclAddToCalendarComponent extends ECLBaseDirective {\n\n /**\n * Indicates whether the component should span the full width of its container.\n */\n isFullWidth = input(false, { transform: booleanAttribute });\n\n /**\n * Title displayed in the component.\n */\n eclTitle = input<string>();\n\n /**\n * Date(s) of the event (e.g. \"March 15-17, 2026\").\n */\n calendarDates = input<string>();\n\n /**\n * Time of the event (e.g. \"2:00 PM - 4:00 PM\").\n */\n calendarTime = input<string>();\n\n /**\n * Location of the event (e.g. \"San Francisco, CA\").\n */\n calendarLocation = input<string>();\n}\n","<div class=\"ecl-add-to-calendar__info\" [class.ecl-container]=\"isFullWidth()\">\n <div class=\"ecl-add-to-calendar__info-content\">\n @if (eclTitle()) {\n <div class=\"ecl-add-to-calendar__title\">{{ eclTitle() }}</div>\n }\n @if (calendarDates() || calendarTime() || calendarLocation()) {\n <ul class=\"ecl-add-to-calendar__meta-list\">\n @if (calendarDates()) {\n <li class=\"ecl-add-to-calendar__meta-item\">\n <ecl-icon icon=\"calendar\" size=\"s\" class=\"ecl-add-to-calendar__meta-icon\" aria-hidden=\"true\"></ecl-icon>\n <span class=\"ecl-add-to-calendar__meta-label\">{{ calendarDates() }}</span>\n </li>\n }\n @if (calendarTime()) {\n <li class=\"ecl-add-to-calendar__meta-item\">\n <ecl-icon icon=\"clock\" size=\"s\" class=\"ecl-add-to-calendar__meta-icon\" aria-hidden=\"true\"></ecl-icon>\n <span class=\"ecl-add-to-calendar__meta-label\">{{ calendarTime() }}</span>\n </li>\n }\n @if (calendarLocation()) {\n <li class=\"ecl-add-to-calendar__meta-item\">\n <ecl-icon icon=\"location\" size=\"s\" class=\"ecl-add-to-calendar__meta-icon\" aria-hidden=\"true\"></ecl-icon>\n <span class=\"ecl-add-to-calendar__meta-label\">{{ calendarLocation() }}</span>\n </li>\n }\n </ul>\n }\n </div>\n \n <ng-content select=\"div[eclAddToCalendarAction]\"></ng-content>\n</div>","import { EclAddToCalendarActionDirective } from './ecl-add-to-calendar-action.directive';\nimport { EclAddToCalendarComponent } from './ecl-add-to-calendar.component';\n\nexport * from './ecl-add-to-calendar.component';\nexport * from './ecl-add-to-calendar-action.directive';\n\nexport const EUI_ECL_ADD_TO_CALENDAR = [\n EclAddToCalendarComponent,\n EclAddToCalendarActionDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MAQa,+BAA+B,CAAA;8GAA/B,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA/B,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,6BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA/B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAN3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,6BAA6B;AACrC,qBAAA;AACF,iBAAA;;;ACHD;;;AAGG;AAWG,MAAO,yBAA0B,SAAQ,gBAAgB,CAAA;AAV/D,IAAA,WAAA,GAAA;;AAYI;;AAEG;QACH,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,KAAK,mFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE3D;;AAEG;AACH,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK;gGAAU;AAE1B;;AAEG;AACH,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK;qGAAU;AAE/B;;AAEG;AACH,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK;oGAAU;AAE9B;;AAEG;AACH,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK;wGAAU;AACrC,IAAA;8GA1BY,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,g7BClBtC,4hDA8BM,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,WAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDZO,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAVrC,SAAS;AAEI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAAA,OAAA,EAExB,CAAC,GAAG,YAAY,CAAC,EAAA,IAAA,EACpB;AACF,wBAAA,KAAK,EAAE,qBAAqB;AAC5B,wBAAA,yCAAyC,EAAE,eAAe;AAC7D,qBAAA,EAAA,QAAA,EAAA,4hDAAA,EAAA;;;AEVE,MAAM,uBAAuB,GAAG;IACnC,yBAAyB;IACzB,+BAA+B;;;ACRnC;;AAEG;;;;"}
1
+ {"version":3,"file":"eui-ecl-components-ecl-add-to-calendar.mjs","sources":["../../components/ecl-add-to-calendar/ecl-add-to-calendar-action.directive.ts","../../components/ecl-add-to-calendar/ecl-add-to-calendar.component.ts","../../components/ecl-add-to-calendar/ecl-add-to-calendar.component.html","../../components/ecl-add-to-calendar/index.ts","../../components/ecl-add-to-calendar/eui-ecl-components-ecl-add-to-calendar.ts"],"sourcesContent":["import { Directive } from \"@angular/core\";\n\n@Directive({\n selector: 'div[eclAddToCalendarAction]',\n host: {\n class: 'ecl-add-to-calendar__action',\n },\n})\nexport class EclAddToCalendarActionDirective {}","import { booleanAttribute, Component, input } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\n\n/**\n * ECL Add to Calendar component.\n * Displays event information with optional date, time, and location metadata.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'div[eclAddToCalendar]',\n templateUrl: './ecl-add-to-calendar.component.html',\n imports: [...EUI_ECL_ICON],\n host: {\n class: 'ecl-add-to-calendar',\n '[class.ecl-add-to-calendar--full-width]': 'isFullWidth()',\n },\n})\nexport class EclAddToCalendarComponent extends ECLBaseDirective {\n\n /**\n * Indicates whether the component should span the full width of its container.\n */\n isFullWidth = input(false, { transform: booleanAttribute });\n\n /**\n * Title displayed in the component.\n */\n eclTitle = input<string>();\n\n /**\n * Date(s) of the event (e.g. \"March 15-17, 2026\").\n */\n calendarDates = input<string>();\n\n /**\n * Time of the event (e.g. \"2:00 PM - 4:00 PM\").\n */\n calendarTime = input<string>();\n\n /**\n * Location of the event (e.g. \"San Francisco, CA\").\n */\n calendarLocation = input<string>();\n}\n","<div class=\"ecl-add-to-calendar__info\" [class.ecl-container]=\"isFullWidth()\">\n <div class=\"ecl-add-to-calendar__info-content\">\n @if (eclTitle()) {\n <div class=\"ecl-add-to-calendar__title\">{{ eclTitle() }}</div>\n }\n @if (calendarDates() || calendarTime() || calendarLocation()) {\n <ul class=\"ecl-add-to-calendar__meta-list\">\n @if (calendarDates()) {\n <li class=\"ecl-add-to-calendar__meta-item\">\n <ecl-icon icon=\"calendar\" size=\"s\" class=\"ecl-add-to-calendar__meta-icon\" aria-hidden=\"true\"></ecl-icon>\n <span class=\"ecl-add-to-calendar__meta-label\">{{ calendarDates() }}</span>\n </li>\n }\n @if (calendarTime()) {\n <li class=\"ecl-add-to-calendar__meta-item\">\n <ecl-icon icon=\"clock\" size=\"s\" class=\"ecl-add-to-calendar__meta-icon\" aria-hidden=\"true\"></ecl-icon>\n <span class=\"ecl-add-to-calendar__meta-label\">{{ calendarTime() }}</span>\n </li>\n }\n @if (calendarLocation()) {\n <li class=\"ecl-add-to-calendar__meta-item\">\n <ecl-icon icon=\"location\" size=\"s\" class=\"ecl-add-to-calendar__meta-icon\" aria-hidden=\"true\"></ecl-icon>\n <span class=\"ecl-add-to-calendar__meta-label\">{{ calendarLocation() }}</span>\n </li>\n }\n </ul>\n }\n </div>\n \n <ng-content select=\"div[eclAddToCalendarAction]\"></ng-content>\n</div>","import { EclAddToCalendarActionDirective } from './ecl-add-to-calendar-action.directive';\nimport { EclAddToCalendarComponent } from './ecl-add-to-calendar.component';\n\nexport * from './ecl-add-to-calendar.component';\nexport * from './ecl-add-to-calendar-action.directive';\n\nexport const EUI_ECL_ADD_TO_CALENDAR = [\n EclAddToCalendarComponent,\n EclAddToCalendarActionDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MAQa,+BAA+B,CAAA;8GAA/B,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA/B,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,6BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA/B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAN3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,6BAA6B;AACrC,qBAAA;AACF,iBAAA;;;ACHD;;;AAGG;AAWG,MAAO,yBAA0B,SAAQ,gBAAgB,CAAA;AAV/D,IAAA,WAAA,GAAA;;AAYI;;AAEG;QACH,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,KAAK,mFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE3D;;AAEG;AACH,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK;gGAAU;AAE1B;;AAEG;AACH,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK;qGAAU;AAE/B;;AAEG;AACH,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK;oGAAU;AAE9B;;AAEG;AACH,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK;wGAAU;AACrC,IAAA;8GA1BY,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,g7BClBtC,4hDA8BM,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,WAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDZO,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAVrC,SAAS;AAEI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAAA,OAAA,EAExB,CAAC,GAAG,YAAY,CAAC,EAAA,IAAA,EACpB;AACF,wBAAA,KAAK,EAAE,qBAAqB;AAC5B,wBAAA,yCAAyC,EAAE,eAAe;AAC7D,qBAAA,EAAA,QAAA,EAAA,4hDAAA,EAAA;;;AEVE,MAAM,uBAAuB,GAAG;IACnC,yBAAyB;IACzB,+BAA+B;;;ACRnC;;AAEG;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"eui-ecl-components-ecl-animated-numbers.mjs","sources":["../../components/ecl-animated-numbers/ecl-animated-numbers.component.ts","../../components/ecl-animated-numbers/ecl-animated-numbers.component.html","../../components/ecl-animated-numbers/ecl-animated-numbers-list.directive.ts","../../components/ecl-animated-numbers/ecl-animated-numers-item/ecl-animated-numbers-item.component.ts","../../components/ecl-animated-numbers/ecl-animated-numers-item/ecl-animated-numbers-item.component.html","../../components/ecl-animated-numbers/ecl-animated-numers-item/ecl-animated-numbers-icon.directive.ts","../../components/ecl-animated-numbers/index.ts","../../components/ecl-animated-numbers/eui-ecl-components-ecl-animated-numbers.ts"],"sourcesContent":["import { booleanAttribute, ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Container component for the ECL Animated Numbers pattern.\n * Wraps animated number items and an optional sources footer.\n *\n * @example\n * ```html\n * <div eclAnimatedNumbers [sourcesLabel]=\"'Sources:'\">\n * <div eclAnimatedNumbersItems>\n * <div eclAnimatedNumbersItem [eclValue]=\"'213'\" [category]=\"'Revenue'\">\n * <ecl-icon eclAnimatedNumbersIcon icon=\"users\" iconSet=\"phosphor\"></ecl-icon>\n * </div>\n * </div>\n * <ul eclAnimatedNumbersSourcesList>\n * <li eclAnimatedNumbersSourcesItem>\n * <a eclLink eclAnimatedNumbersSource href=\"/example\">Eurostat</a>\n * </li>\n * </ul>\n * </div>\n * ```\n */\n@Component({\n selector: 'div[eclAnimatedNumbers]',\n templateUrl: './ecl-animated-numbers.component.html',\n host: {\n '[class]': 'cssClasses()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EclAnimatedNumbersComponent extends ECLBaseDirective {\n\n /** Applies a dark background to the component. */\n hasDarkBackground = input(false, { transform: booleanAttribute });\n\n /** Adds a left border to the animated number items. */\n hasLeftBorder = input(false, { transform: booleanAttribute });\n\n /** Applies a colour to the counter values. */\n hasContentColor = input(false, { transform: booleanAttribute });\n\n isFullWidth = input(false, { transform: booleanAttribute });\n\n /** Label displayed before the sources list. */\n sourcesLabel = input<string>('Sources:');\n\n protected readonly cssClasses = computed<string>(() =>\n [super.getCssClasses('ecl-animated-numbers'),\n this.hasDarkBackground() ? 'ecl-animated-numbers--with-background' : '',\n this.hasLeftBorder() ? 'ecl-animated-numbers--border' : '',\n this.hasContentColor() && !this.hasDarkBackground() ? 'ecl-animated-numbers--counter-color' : '',\n this.isFullWidth() ? 'ecl-animated-numbers--full-width' : '',\n ].filter(Boolean).join(' '));\n}\n","<article class=\"ecl-animated-numbers__wrapper\">\n <ng-content select=\"[eclAnimatedNumbersItems]\"></ng-content>\n <footer class=\"ecl-animated-numbers__sources\">\n <span class=\"ecl-animated-numbers__sources-label\">{{ sourcesLabel() }}</span>\n <ng-content select=\"[eclAnimatedNumbersSourcesList]\"></ng-content>\n </footer>\n</article>","import { computed, Directive, inject } from \"@angular/core\";\nimport { EclAnimatedNumbersComponent } from \"./ecl-animated-numbers.component\";\n\n/**\n * Wraps the grid of animated number items.\n * Applies the `ecl-animated-numbers__items` layout class.\n *\n * @example\n * ```html\n * <div eclAnimatedNumbersItems>\n * <div eclAnimatedNumbersItem ...></div>\n * </div>\n * ```\n */\n@Directive({\n selector: 'ul[eclAnimatedNumbersItems]',\n host: {\n class: 'ecl-animated-numbers__items',\n },\n})\nexport class EclAnimatedNumbersItemsDirective {}\n\n/**\n * Wraps the list of source links.\n * Applies the `ecl-animated-numbers__sources-list` class.\n *\n * @example\n * ```html\n * <ul eclAnimatedNumbersSourcesList>\n * <li eclAnimatedNumbersSourcesItem>...</li>\n * </ul>\n * ```\n */\n@Directive({\n selector: 'ul[eclAnimatedNumbersSourcesList]',\n host: {\n class: 'ecl-animated-numbers__sources-list',\n },\n})\nexport class EclAnimatedNumbersSourcesListDirective {}\n\n/**\n * Marks a list item as a source entry.\n * Applies the `ecl-animated-numbers__sources-item` class.\n *\n * @example\n * ```html\n * <li eclAnimatedNumbersSourcesItem>\n * <a eclLink eclAnimatedNumbersSource href=\"/example\">Eurostat</a>\n * </li>\n * ```\n */\n@Directive({\n selector: 'li[eclAnimatedNumbersSourcesItem]',\n host: {\n class: 'ecl-animated-numbers__sources-item',\n },\n})\nexport class EclAnimatedNumbersSourcesItemDirective {}\n\n/**\n * Marks a link as a source reference within the animated numbers component.\n * Applies the `ecl-animated-numbers__source` styling class.\n * Automatically adds `ecl-link--inverted` when the parent has a dark background.\n *\n * @example\n * ```html\n * <a eclLink eclAnimatedNumbersSource href=\"/example\">Eurostat</a>\n * ```\n */\n@Directive({\n selector: 'a[eclAnimatedNumbersSource]',\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class EclAnimatedNumbersSourceDirective {\n private animatedNumbers = inject(EclAnimatedNumbersComponent);\n\n hostClasses = computed(() => {\n const baseClasses = 'ecl-animated-numbers__source ecl-link';\n return this.animatedNumbers.hasDarkBackground() ? `${baseClasses} ecl-link--inverted` : baseClasses;\n });\n}\n","import {\n Component,\n computed,\n ElementRef,\n NgZone,\n OnDestroy,\n afterNextRender,\n effect,\n inject,\n input,\n viewChild,\n} from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Represents an individual animated number item.\n * Displays a numeric value that animates from 0 to the target when scrolled into view.\n * Uses an IntersectionObserver to trigger animation on viewport visibility and\n * requestAnimationFrame for smooth count-up with cubic ease-out.\n *\n * @example\n * ```html\n * <li eclAnimatedNumbersItem\n * [eclValue]=\"'1250'\"\n * [category]=\"'Revenue'\"\n * [prefix]=\"'€'\"\n * [suffix]=\"'billions'\"\n * [description]=\"'Annual revenue growth'\">\n * <ecl-icon eclAnimatedNumbersIcon icon=\"trend-up\" iconSet=\"phosphor\"></ecl-icon>\n * </li>\n * ```\n */\n@Component({\n selector: 'li[eclAnimatedNumbersItem]',\n templateUrl: './ecl-animated-numbers-item.component.html',\n host: {\n class: 'ecl-animated-number',\n },\n})\nexport class EclAnimatedNumbersItemComponent extends ECLBaseDirective implements OnDestroy {\n\n /** Category label displayed in the item header. */\n category = input<string>();\n\n /** Descriptive text displayed below the number. */\n description = input<string>();\n\n /** The target numeric value to animate to. Accepts strings with non-numeric characters (they are stripped). */\n eclValue = input<string>();\n\n /** Text displayed after the animated number (e.g. '€', 'billions'). */\n suffix = input<string>();\n /** Accessible label for the suffix symbol, used for screen readers (e.g. '%' -> 'percent'). */ \n suffixLabel = input<string>();\n\n /** Text displayed before the animated number (e.g. '€', 'billion'). */\n prefix = input<string>();\n /** Accessible label for the prefix symbol, used for screen readers (e.g. 'M' -> 'million') */\n prefixLabel = input<string>();\n\n protected animationDuration = 1000;\n protected animationStyle: 'linear' | 'random' = 'linear';\n protected animateOnVisible = true;\n\n /** Parsed numeric target from the eclValue input. */\n private targetValue = computed(() => {\n const raw = this.eclValue();\n if (!raw) return 0;\n const cleaned = raw.replace(/[^\\d.-]/g, '');\n return cleaned ? parseFloat(cleaned) : 0;\n });\n\n private valueEl = viewChild<ElementRef<HTMLElement>>('valueEl');\n private elementRef = inject(ElementRef);\n private ngZone = inject(NgZone);\n\n private animationId: number | null = null;\n private observer: IntersectionObserver | null = null;\n private hasBeenVisible = false;\n private isRendered = false;\n\n constructor() {\n super();\n\n afterNextRender(() => {\n this.isRendered = true;\n // Set initial display to 0\n const el = this.valueEl()?.nativeElement;\n if (el) {\n el.textContent = '0';\n }\n\n if (this.animateOnVisible) {\n this.setupIntersectionObserver();\n } else {\n this.startAnimation(this.targetValue());\n }\n });\n\n // React to eclValue changes — only re-animate if already visible and rendered\n effect(() => {\n const target = this.targetValue();\n if (this.hasBeenVisible && this.isRendered) {\n queueMicrotask(() => this.startAnimation(target));\n }\n });\n }\n\n ngOnDestroy(): void {\n this.cleanup();\n }\n\n private setupIntersectionObserver(): void {\n this.observer = new IntersectionObserver(\n (entries) => {\n const entry = entries[0];\n if (entry.isIntersecting) {\n this.hasBeenVisible = true;\n this.startAnimation(this.targetValue());\n } else if (this.hasBeenVisible) {\n // Reset to 0 when scrolled out of view\n if (this.animationId !== null) {\n cancelAnimationFrame(this.animationId);\n this.animationId = null;\n }\n const el = this.valueEl()?.nativeElement;\n if (el) {\n el.textContent = '0';\n el.style.width = '';\n }\n }\n },\n { threshold: 0.1 },\n );\n this.observer.observe(this.elementRef.nativeElement);\n }\n\n private startAnimation(to: number): void {\n if (this.animationId !== null) {\n cancelAnimationFrame(this.animationId);\n this.animationId = null;\n }\n\n const valueElement = this.valueEl()?.nativeElement;\n if (!valueElement) return;\n\n // Lock width to prevent layout shift during animation\n valueElement.textContent = to.toString();\n const finalWidth = valueElement.offsetWidth;\n valueElement.textContent = '0';\n valueElement.style.width = `${finalWidth}px`;\n\n this.ngZone.runOutsideAngular(() => {\n const duration = this.animationDuration;\n let startTime: number | null = null;\n let lastUpdateTime = 0;\n let lastValue: number | null = null;\n\n const tick = (now: number) => {\n if (startTime === null) {\n startTime = now;\n }\n\n const elapsed = now - startTime;\n const progress = Math.min(elapsed / duration, 1);\n\n // Throttle updates (~50ms)\n if (now - lastUpdateTime < 50 && progress < 1) {\n this.animationId = requestAnimationFrame(tick);\n return;\n }\n lastUpdateTime = now;\n\n let value: number;\n if (this.animationStyle === 'random') {\n value = Math.floor(Math.random() * (to + 1));\n } else {\n // Cubic ease-out\n const eased = 1 - Math.pow(1 - progress, 3);\n value = eased * to;\n }\n\n const rounded = Math.floor(value);\n\n if (rounded !== lastValue) {\n valueElement.textContent = rounded.toString();\n lastValue = rounded;\n }\n\n if (progress < 1) {\n this.animationId = requestAnimationFrame(tick);\n } else {\n valueElement.textContent = to.toString();\n valueElement.style.width = '';\n this.animationId = null;\n }\n };\n\n this.animationId = requestAnimationFrame(tick);\n });\n }\n\n private cleanup(): void {\n if (this.animationId !== null) {\n cancelAnimationFrame(this.animationId);\n this.animationId = null;\n }\n if (this.observer) {\n this.observer.disconnect();\n this.observer = null;\n }\n }\n}\n","<div class=\"ecl-animated-number__header\">\n <div class=\"ecl-animated-number__category\">{{ category() }}</div>\n <ng-content select=\"[eclAnimatedNumbersIcon]\"></ng-content>\n</div>\n<div class=\"ecl-animated-number__content\">\n <span class=\"ecl-animated-number__number\">\n @if (prefix()) {\n <span class=\"ecl-animated-number__prefix\">\n @if (prefixLabel()) {\n <span class=\"ecl-animated-number__prefix-label\">{{ prefixLabel() }}</span>\n }\n {{ prefix() }}\n </span>\n }\n <span class=\"ecl-animated-number__value\" #valueEl></span>\n @if (suffix()) {\n <span class=\"ecl-animated-number__suffix\">\n @if (suffixLabel()) {\n <span class=\"ecl-animated-number__suffix-label\">{{ suffixLabel() }}</span>\n }\n {{ suffix() }}\n </span>\n }\n </span>\n</div>\n<div class=\"ecl-animated-number__description\">{{ description() }}</div>","import { Directive } from '@angular/core';\n\n/**\n * Marks an icon element as the animated number item's icon.\n * Applies the `ecl-animated-number__icon` positioning class.\n *\n * @example\n * ```html\n * <ecl-icon eclAnimatedNumbersIcon icon=\"users\" iconSet=\"phosphor\"></ecl-icon>\n * ```\n */\n@Directive({\n selector: '[eclAnimatedNumbersIcon]',\n host: {\n class: 'ecl-animated-number__icon',\n },\n})\nexport class EclAnimatedNumbersIconDirective {}\n","import { EclAnimatedNumbersComponent } from './ecl-animated-numbers.component';\nimport { EclAnimatedNumbersItemsDirective, EclAnimatedNumbersSourcesListDirective, EclAnimatedNumbersSourcesItemDirective, EclAnimatedNumbersSourceDirective } from './ecl-animated-numbers-list.directive';\nimport { EclAnimatedNumbersItemComponent } from './ecl-animated-numers-item/ecl-animated-numbers-item.component';\nimport { EclAnimatedNumbersIconDirective } from './ecl-animated-numers-item/ecl-animated-numbers-icon.directive';\n\nexport * from './ecl-animated-numbers.component';\nexport * from './ecl-animated-numbers-list.directive';\nexport * from './ecl-animated-numers-item/ecl-animated-numbers-item.component';\nexport * from './ecl-animated-numers-item/ecl-animated-numbers-icon.directive';\n\nexport const EUI_ECL_ANIMATED_NUMBERS = [\n EclAnimatedNumbersComponent,\n EclAnimatedNumbersItemsDirective,\n EclAnimatedNumbersSourcesListDirective,\n EclAnimatedNumbersSourcesItemDirective,\n EclAnimatedNumbersSourceDirective,\n EclAnimatedNumbersItemComponent,\n EclAnimatedNumbersIconDirective,\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-animated-numbers.mjs","sources":["../../components/ecl-animated-numbers/ecl-animated-numbers.component.ts","../../components/ecl-animated-numbers/ecl-animated-numbers.component.html","../../components/ecl-animated-numbers/ecl-animated-numbers-list.directive.ts","../../components/ecl-animated-numbers/ecl-animated-numers-item/ecl-animated-numbers-item.component.ts","../../components/ecl-animated-numbers/ecl-animated-numers-item/ecl-animated-numbers-item.component.html","../../components/ecl-animated-numbers/ecl-animated-numers-item/ecl-animated-numbers-icon.directive.ts","../../components/ecl-animated-numbers/index.ts","../../components/ecl-animated-numbers/eui-ecl-components-ecl-animated-numbers.ts"],"sourcesContent":["import { booleanAttribute, ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Container component for the ECL Animated Numbers pattern.\n * Wraps animated number items and an optional sources footer.\n *\n * @example\n * ```html\n * <div eclAnimatedNumbers [sourcesLabel]=\"'Sources:'\">\n * <div eclAnimatedNumbersItems>\n * <div eclAnimatedNumbersItem [eclValue]=\"'213'\" [category]=\"'Revenue'\">\n * <ecl-icon eclAnimatedNumbersIcon icon=\"users\" iconSet=\"phosphor\"></ecl-icon>\n * </div>\n * </div>\n * <ul eclAnimatedNumbersSourcesList>\n * <li eclAnimatedNumbersSourcesItem>\n * <a eclLink eclAnimatedNumbersSource href=\"/example\">Eurostat</a>\n * </li>\n * </ul>\n * </div>\n * ```\n */\n@Component({\n selector: 'div[eclAnimatedNumbers]',\n templateUrl: './ecl-animated-numbers.component.html',\n host: {\n '[class]': 'cssClasses()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EclAnimatedNumbersComponent extends ECLBaseDirective {\n\n /** Applies a dark background to the component. */\n hasDarkBackground = input(false, { transform: booleanAttribute });\n\n /** Adds a left border to the animated number items. */\n hasLeftBorder = input(false, { transform: booleanAttribute });\n\n /** Applies a colour to the counter values. */\n hasContentColor = input(false, { transform: booleanAttribute });\n\n isFullWidth = input(false, { transform: booleanAttribute });\n\n /** Label displayed before the sources list. */\n sourcesLabel = input<string>('Sources:');\n\n protected readonly cssClasses = computed<string>(() =>\n [super.getCssClasses('ecl-animated-numbers'),\n this.hasDarkBackground() ? 'ecl-animated-numbers--with-background' : '',\n this.hasLeftBorder() ? 'ecl-animated-numbers--border' : '',\n this.hasContentColor() && !this.hasDarkBackground() ? 'ecl-animated-numbers--counter-color' : '',\n this.isFullWidth() ? 'ecl-animated-numbers--full-width' : '',\n ].filter(Boolean).join(' '));\n}\n","<article class=\"ecl-animated-numbers__wrapper\">\n <ng-content select=\"[eclAnimatedNumbersItems]\"></ng-content>\n <footer class=\"ecl-animated-numbers__sources\">\n <span class=\"ecl-animated-numbers__sources-label\">{{ sourcesLabel() }}</span>\n <ng-content select=\"[eclAnimatedNumbersSourcesList]\"></ng-content>\n </footer>\n</article>","import { computed, Directive, inject } from \"@angular/core\";\nimport { EclAnimatedNumbersComponent } from \"./ecl-animated-numbers.component\";\n\n/**\n * Wraps the grid of animated number items.\n * Applies the `ecl-animated-numbers__items` layout class.\n *\n * @example\n * ```html\n * <div eclAnimatedNumbersItems>\n * <div eclAnimatedNumbersItem ...></div>\n * </div>\n * ```\n */\n@Directive({\n selector: 'ul[eclAnimatedNumbersItems]',\n host: {\n class: 'ecl-animated-numbers__items',\n },\n})\nexport class EclAnimatedNumbersItemsDirective {}\n\n/**\n * Wraps the list of source links.\n * Applies the `ecl-animated-numbers__sources-list` class.\n *\n * @example\n * ```html\n * <ul eclAnimatedNumbersSourcesList>\n * <li eclAnimatedNumbersSourcesItem>...</li>\n * </ul>\n * ```\n */\n@Directive({\n selector: 'ul[eclAnimatedNumbersSourcesList]',\n host: {\n class: 'ecl-animated-numbers__sources-list',\n },\n})\nexport class EclAnimatedNumbersSourcesListDirective {}\n\n/**\n * Marks a list item as a source entry.\n * Applies the `ecl-animated-numbers__sources-item` class.\n *\n * @example\n * ```html\n * <li eclAnimatedNumbersSourcesItem>\n * <a eclLink eclAnimatedNumbersSource href=\"/example\">Eurostat</a>\n * </li>\n * ```\n */\n@Directive({\n selector: 'li[eclAnimatedNumbersSourcesItem]',\n host: {\n class: 'ecl-animated-numbers__sources-item',\n },\n})\nexport class EclAnimatedNumbersSourcesItemDirective {}\n\n/**\n * Marks a link as a source reference within the animated numbers component.\n * Applies the `ecl-animated-numbers__source` styling class.\n * Automatically adds `ecl-link--inverted` when the parent has a dark background.\n *\n * @example\n * ```html\n * <a eclLink eclAnimatedNumbersSource href=\"/example\">Eurostat</a>\n * ```\n */\n@Directive({\n selector: 'a[eclAnimatedNumbersSource]',\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class EclAnimatedNumbersSourceDirective {\n private animatedNumbers = inject(EclAnimatedNumbersComponent);\n\n hostClasses = computed(() => {\n const baseClasses = 'ecl-animated-numbers__source ecl-link';\n return this.animatedNumbers.hasDarkBackground() ? `${baseClasses} ecl-link--inverted` : baseClasses;\n });\n}\n","import {\n Component,\n computed,\n ElementRef,\n NgZone,\n OnDestroy,\n afterNextRender,\n effect,\n inject,\n input,\n viewChild,\n} from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Represents an individual animated number item.\n * Displays a numeric value that animates from 0 to the target when scrolled into view.\n * Uses an IntersectionObserver to trigger animation on viewport visibility and\n * requestAnimationFrame for smooth count-up with cubic ease-out.\n *\n * @example\n * ```html\n * <li eclAnimatedNumbersItem\n * [eclValue]=\"'1250'\"\n * [category]=\"'Revenue'\"\n * [prefix]=\"'€'\"\n * [suffix]=\"'billions'\"\n * [description]=\"'Annual revenue growth'\">\n * <ecl-icon eclAnimatedNumbersIcon icon=\"trend-up\" iconSet=\"phosphor\"></ecl-icon>\n * </li>\n * ```\n */\n@Component({\n selector: 'li[eclAnimatedNumbersItem]',\n templateUrl: './ecl-animated-numbers-item.component.html',\n host: {\n class: 'ecl-animated-number',\n },\n})\nexport class EclAnimatedNumbersItemComponent extends ECLBaseDirective implements OnDestroy {\n\n /** Category label displayed in the item header. */\n category = input<string>();\n\n /** Descriptive text displayed below the number. */\n description = input<string>();\n\n /** The target numeric value to animate to. Accepts strings with non-numeric characters (they are stripped). */\n eclValue = input<string>();\n\n /** Text displayed after the animated number (e.g. '€', 'billions'). */\n suffix = input<string>();\n /** Accessible label for the suffix symbol, used for screen readers (e.g. '%' -> 'percent'). */ \n suffixLabel = input<string>();\n\n /** Text displayed before the animated number (e.g. '€', 'billion'). */\n prefix = input<string>();\n /** Accessible label for the prefix symbol, used for screen readers (e.g. 'M' -> 'million') */\n prefixLabel = input<string>();\n\n protected animationDuration = 1000;\n protected animationStyle: 'linear' | 'random' = 'linear';\n protected animateOnVisible = true;\n\n /** Parsed numeric target from the eclValue input. */\n private targetValue = computed(() => {\n const raw = this.eclValue();\n if (!raw) return 0;\n const cleaned = raw.replace(/[^\\d.-]/g, '');\n return cleaned ? parseFloat(cleaned) : 0;\n });\n\n private valueEl = viewChild<ElementRef<HTMLElement>>('valueEl');\n private elementRef = inject(ElementRef);\n private ngZone = inject(NgZone);\n\n private animationId: number | null = null;\n private observer: IntersectionObserver | null = null;\n private hasBeenVisible = false;\n private isRendered = false;\n\n constructor() {\n super();\n\n afterNextRender(() => {\n this.isRendered = true;\n // Set initial display to 0\n const el = this.valueEl()?.nativeElement;\n if (el) {\n el.textContent = '0';\n }\n\n if (this.animateOnVisible) {\n this.setupIntersectionObserver();\n } else {\n this.startAnimation(this.targetValue());\n }\n });\n\n // React to eclValue changes — only re-animate if already visible and rendered\n effect(() => {\n const target = this.targetValue();\n if (this.hasBeenVisible && this.isRendered) {\n queueMicrotask(() => this.startAnimation(target));\n }\n });\n }\n\n ngOnDestroy(): void {\n this.cleanup();\n }\n\n private setupIntersectionObserver(): void {\n this.observer = new IntersectionObserver(\n (entries) => {\n const entry = entries[0];\n if (entry.isIntersecting) {\n this.hasBeenVisible = true;\n this.startAnimation(this.targetValue());\n } else if (this.hasBeenVisible) {\n // Reset to 0 when scrolled out of view\n if (this.animationId !== null) {\n cancelAnimationFrame(this.animationId);\n this.animationId = null;\n }\n const el = this.valueEl()?.nativeElement;\n if (el) {\n el.textContent = '0';\n el.style.width = '';\n }\n }\n },\n { threshold: 0.1 },\n );\n this.observer.observe(this.elementRef.nativeElement);\n }\n\n private startAnimation(to: number): void {\n if (this.animationId !== null) {\n cancelAnimationFrame(this.animationId);\n this.animationId = null;\n }\n\n const valueElement = this.valueEl()?.nativeElement;\n if (!valueElement) return;\n\n // Lock width to prevent layout shift during animation\n valueElement.textContent = to.toString();\n const finalWidth = valueElement.offsetWidth;\n valueElement.textContent = '0';\n valueElement.style.width = `${finalWidth}px`;\n\n this.ngZone.runOutsideAngular(() => {\n const duration = this.animationDuration;\n let startTime: number | null = null;\n let lastUpdateTime = 0;\n let lastValue: number | null = null;\n\n const tick = (now: number) => {\n if (startTime === null) {\n startTime = now;\n }\n\n const elapsed = now - startTime;\n const progress = Math.min(elapsed / duration, 1);\n\n // Throttle updates (~50ms)\n if (now - lastUpdateTime < 50 && progress < 1) {\n this.animationId = requestAnimationFrame(tick);\n return;\n }\n lastUpdateTime = now;\n\n let value: number;\n if (this.animationStyle === 'random') {\n value = Math.floor(Math.random() * (to + 1));\n } else {\n // Cubic ease-out\n const eased = 1 - Math.pow(1 - progress, 3);\n value = eased * to;\n }\n\n const rounded = Math.floor(value);\n\n if (rounded !== lastValue) {\n valueElement.textContent = rounded.toString();\n lastValue = rounded;\n }\n\n if (progress < 1) {\n this.animationId = requestAnimationFrame(tick);\n } else {\n valueElement.textContent = to.toString();\n valueElement.style.width = '';\n this.animationId = null;\n }\n };\n\n this.animationId = requestAnimationFrame(tick);\n });\n }\n\n private cleanup(): void {\n if (this.animationId !== null) {\n cancelAnimationFrame(this.animationId);\n this.animationId = null;\n }\n if (this.observer) {\n this.observer.disconnect();\n this.observer = null;\n }\n }\n}\n","<div class=\"ecl-animated-number__header\">\n <div class=\"ecl-animated-number__category\">{{ category() }}</div>\n <ng-content select=\"[eclAnimatedNumbersIcon]\"></ng-content>\n</div>\n<div class=\"ecl-animated-number__content\">\n <span class=\"ecl-animated-number__number\">\n @if (prefix()) {\n <span class=\"ecl-animated-number__prefix\">\n @if (prefixLabel()) {\n <span class=\"ecl-animated-number__prefix-label\">{{ prefixLabel() }}</span>\n }\n {{ prefix() }}\n </span>\n }\n <span class=\"ecl-animated-number__value\" #valueEl></span>\n @if (suffix()) {\n <span class=\"ecl-animated-number__suffix\">\n @if (suffixLabel()) {\n <span class=\"ecl-animated-number__suffix-label\">{{ suffixLabel() }}</span>\n }\n {{ suffix() }}\n </span>\n }\n </span>\n</div>\n<div class=\"ecl-animated-number__description\">{{ description() }}</div>","import { Directive } from '@angular/core';\n\n/**\n * Marks an icon element as the animated number item's icon.\n * Applies the `ecl-animated-number__icon` positioning class.\n *\n * @example\n * ```html\n * <ecl-icon eclAnimatedNumbersIcon icon=\"users\" iconSet=\"phosphor\"></ecl-icon>\n * ```\n */\n@Directive({\n selector: '[eclAnimatedNumbersIcon]',\n host: {\n class: 'ecl-animated-number__icon',\n },\n})\nexport class EclAnimatedNumbersIconDirective {}\n","import { EclAnimatedNumbersComponent } from './ecl-animated-numbers.component';\nimport { EclAnimatedNumbersItemsDirective, EclAnimatedNumbersSourcesListDirective, EclAnimatedNumbersSourcesItemDirective, EclAnimatedNumbersSourceDirective } from './ecl-animated-numbers-list.directive';\nimport { EclAnimatedNumbersItemComponent } from './ecl-animated-numers-item/ecl-animated-numbers-item.component';\nimport { EclAnimatedNumbersIconDirective } from './ecl-animated-numers-item/ecl-animated-numbers-icon.directive';\n\nexport * from './ecl-animated-numbers.component';\nexport * from './ecl-animated-numbers-list.directive';\nexport * from './ecl-animated-numers-item/ecl-animated-numbers-item.component';\nexport * from './ecl-animated-numers-item/ecl-animated-numbers-icon.directive';\n\nexport const EUI_ECL_ANIMATED_NUMBERS = [\n EclAnimatedNumbersComponent,\n EclAnimatedNumbersItemsDirective,\n EclAnimatedNumbersSourcesListDirective,\n EclAnimatedNumbersSourcesItemDirective,\n EclAnimatedNumbersSourceDirective,\n EclAnimatedNumbersItemComponent,\n EclAnimatedNumbersIconDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"eui-ecl-components-ecl-app.mjs","sources":["../../components/ecl-app/ecl-app.component.ts","../../components/ecl-app/ecl-app.component.html","../../components/ecl-app/index.ts","../../components/ecl-app/eui-ecl-components-ecl-app.ts"],"sourcesContent":["import { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { AfterViewInit, Component, contentChild, OnDestroy, OnInit, PLATFORM_ID, inject, output, signal } from '@angular/core';\nimport { outputToObservable } from '@angular/core/rxjs-interop';\nimport { CssUtils, EuiAppShellService } from '@eui/core';\nimport { EuiLanguage } from '@eui/base';\nimport { EclSiteHeaderLanguageComponent, EclSiteHeaderLanguageSelectedEvent } from '@eui/ecl/components/ecl-site-header';\nimport { ECLBaseDirective, EclBaseEvent, EclRtlService } from '@eui/ecl/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\n\n/**\n * The wrapper component for an ecl application. Has some important global properties.\n */\nexport class EclAppLanguageDismissEvent extends EclBaseEvent {\n constructor(public language?: EuiLanguage) {\n super();\n }\n}\n\n@Component({\n selector: 'ecl-app',\n templateUrl: './ecl-app.component.html',\n host: {\n '[attr.dir]': 'textDirection()',\n },\n})\nexport class EclAppComponent extends ECLBaseDirective implements OnInit, AfterViewInit, OnDestroy {\n /**\n * Text direction, by default is 'ltr' - left-to-write. Can also be 'rtl' - right-to-left, which will\n * make all components within <ecl-app> to lign to the right, and apply some special styling and functionality.\n */\n readonly textDirection = signal('ltr');\n\n readonly eclSiteHeaderLanguage = contentChild(EclSiteHeaderLanguageComponent);\n\n readonly languageDismiss = output<EclAppLanguageDismissEvent>();\n\n protected destroy$: Subject<boolean> = new Subject<boolean>();\n private readonly eclRtlService = inject(EclRtlService);\n private readonly document = inject<Document>(DOCUMENT);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly appShellService = inject(EuiAppShellService);\n\n ngOnInit(): void {\n\n // Only initialize CSS vars if no parent app shell is already active\n const isNestedInAppShell = this.appShellService.state.hasHeader || this.appShellService.state.hasSidebar || this.appShellService.state.hasToolbar;\n if (!isNestedInAppShell) {\n CssUtils.initCssVars(this.document, this.platformId);\n }\n if (isPlatformBrowser(this.platformId)) {\n const browserAgent = window.navigator.userAgent.toLowerCase();\n\n this.appShellService.setState({\n ...this.appShellService.state,\n windowHeight: window.innerHeight,\n windowWidth: window.innerWidth,\n deviceInfo: {\n isChrome: browserAgent.indexOf('chrome') > -1,\n isIE: browserAgent.indexOf('trident') > -1,\n isFF: browserAgent.indexOf('firefox') > -1,\n },\n appBaseFontSize: this.appShellService.getBaseFontSize(),\n });\n }\n\n if (isPlatformBrowser(this.platformId)) {\n fromEvent(window, 'resize')\n .pipe(debounceTime(50), takeUntil(this.destroy$))\n .subscribe(() => {\n this.appShellService?.setState({\n ...this.appShellService.state,\n windowHeight: window.innerHeight,\n windowWidth: window.innerWidth,\n });\n CssUtils.setAppViewportCssVars(this.platformId);\n });\n }\n }\n\n ngAfterViewInit(): void {\n // Adds global class, which is used to apply the correct styling for eui-21.\n CssUtils.setHtmlClass('eui-21', this.document);\n this.handleRtlChangeState();\n this.handleUIEvents();\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Changes the text direction from 'ltr' to 'rtl' and vice versa.\n */\n private handleRtlChangeState(): void {\n this.eclRtlService.currentRtlState$.pipe(takeUntil(this.destroy$)).subscribe((rtlState) => {\n if (rtlState) {\n this.textDirection.set('rtl');\n } else {\n this.textDirection.set('ltr');\n }\n });\n }\n\n private handleUIEvents(): void {\n const eclSiteHeaderLanguage = this.eclSiteHeaderLanguage();\n if (!eclSiteHeaderLanguage) return;\n\n outputToObservable(eclSiteHeaderLanguage.languageSelected)\n .pipe(takeUntil(this.destroy$))\n .subscribe((evt: EclSiteHeaderLanguageSelectedEvent) => {\n this.languageDismiss.emit(new EclAppLanguageDismissEvent(evt.language));\n });\n }\n}\n","<ng-content></ng-content>\n","import { EclAppComponent } from './ecl-app.component';\n\nexport * from './ecl-app.component';\n\nexport const EUI_ECL_APP = [\n EclAppComponent,\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-app.mjs","sources":["../../components/ecl-app/ecl-app.component.ts","../../components/ecl-app/ecl-app.component.html","../../components/ecl-app/index.ts","../../components/ecl-app/eui-ecl-components-ecl-app.ts"],"sourcesContent":["import { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { AfterViewInit, Component, contentChild, OnDestroy, OnInit, PLATFORM_ID, inject, output, signal } from '@angular/core';\nimport { outputToObservable } from '@angular/core/rxjs-interop';\nimport { CssUtils, EuiAppShellService } from '@eui/core';\nimport { EuiLanguage } from '@eui/base';\nimport { EclSiteHeaderLanguageComponent, EclSiteHeaderLanguageSelectedEvent } from '@eui/ecl/components/ecl-site-header';\nimport { ECLBaseDirective, EclBaseEvent, EclRtlService } from '@eui/ecl/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\n\n/**\n * The wrapper component for an ecl application. Has some important global properties.\n */\nexport class EclAppLanguageDismissEvent extends EclBaseEvent {\n constructor(public language?: EuiLanguage) {\n super();\n }\n}\n\n@Component({\n selector: 'ecl-app',\n templateUrl: './ecl-app.component.html',\n host: {\n '[attr.dir]': 'textDirection()',\n },\n})\nexport class EclAppComponent extends ECLBaseDirective implements OnInit, AfterViewInit, OnDestroy {\n /**\n * Text direction, by default is 'ltr' - left-to-write. Can also be 'rtl' - right-to-left, which will\n * make all components within <ecl-app> to lign to the right, and apply some special styling and functionality.\n */\n readonly textDirection = signal('ltr');\n\n readonly eclSiteHeaderLanguage = contentChild(EclSiteHeaderLanguageComponent);\n\n readonly languageDismiss = output<EclAppLanguageDismissEvent>();\n\n protected destroy$: Subject<boolean> = new Subject<boolean>();\n private readonly eclRtlService = inject(EclRtlService);\n private readonly document = inject<Document>(DOCUMENT);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly appShellService = inject(EuiAppShellService);\n\n ngOnInit(): void {\n\n // Only initialize CSS vars if no parent app shell is already active\n const isNestedInAppShell = this.appShellService.state.hasHeader || this.appShellService.state.hasSidebar || this.appShellService.state.hasToolbar;\n if (!isNestedInAppShell) {\n CssUtils.initCssVars(this.document, this.platformId);\n }\n if (isPlatformBrowser(this.platformId)) {\n const browserAgent = window.navigator.userAgent.toLowerCase();\n\n this.appShellService.setState({\n ...this.appShellService.state,\n windowHeight: window.innerHeight,\n windowWidth: window.innerWidth,\n deviceInfo: {\n isChrome: browserAgent.indexOf('chrome') > -1,\n isIE: browserAgent.indexOf('trident') > -1,\n isFF: browserAgent.indexOf('firefox') > -1,\n },\n appBaseFontSize: this.appShellService.getBaseFontSize(),\n });\n }\n\n if (isPlatformBrowser(this.platformId)) {\n fromEvent(window, 'resize')\n .pipe(debounceTime(50), takeUntil(this.destroy$))\n .subscribe(() => {\n this.appShellService?.setState({\n ...this.appShellService.state,\n windowHeight: window.innerHeight,\n windowWidth: window.innerWidth,\n });\n CssUtils.setAppViewportCssVars(this.platformId);\n });\n }\n }\n\n ngAfterViewInit(): void {\n // Adds global class, which is used to apply the correct styling for eui-21.\n CssUtils.setHtmlClass('eui-21', this.document);\n this.handleRtlChangeState();\n this.handleUIEvents();\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Changes the text direction from 'ltr' to 'rtl' and vice versa.\n */\n private handleRtlChangeState(): void {\n this.eclRtlService.currentRtlState$.pipe(takeUntil(this.destroy$)).subscribe((rtlState) => {\n if (rtlState) {\n this.textDirection.set('rtl');\n } else {\n this.textDirection.set('ltr');\n }\n });\n }\n\n private handleUIEvents(): void {\n const eclSiteHeaderLanguage = this.eclSiteHeaderLanguage();\n if (!eclSiteHeaderLanguage) return;\n\n outputToObservable(eclSiteHeaderLanguage.languageSelected)\n .pipe(takeUntil(this.destroy$))\n .subscribe((evt: EclSiteHeaderLanguageSelectedEvent) => {\n this.languageDismiss.emit(new EclAppLanguageDismissEvent(evt.language));\n });\n }\n}\n","<ng-content></ng-content>\n","import { EclAppComponent } from './ecl-app.component';\n\nexport * from './ecl-app.component';\n\nexport const EUI_ECL_APP = [\n EclAppComponent,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"eui-ecl-components-ecl-banner.mjs","sources":["../../components/ecl-banner/ecl-banner-picture.directive.ts","../../components/ecl-banner/ecl-banner-video.directive.ts","../../components/ecl-banner/ecl-banner.component.ts","../../components/ecl-banner/ecl-banner.component.html","../../components/ecl-banner/ecl-banner-title.directive.ts","../../components/ecl-banner/ecl-banner-description.directive.ts","../../components/ecl-banner/index.ts","../../components/ecl-banner/eui-ecl-components-ecl-banner.ts"],"sourcesContent":["import { Directive, ElementRef, inject, input, computed } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive applied to the <picture> element within the banner.\n * Adds the appropriate classes for styling the banner picture.\n */\n@Directive({\n selector: 'picture[eclBannerPicture]',\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclBannerPictureDirective extends ECLBaseDirective {\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-picture ecl-banner__picture'));\n}\n\n/**\n * Directive applied to the <img> element inside the banner.\n * Enables class binding and exposes the element reference.\n *\n * Use the `eclImageAnchor` input to set the CSS custom property `--ecl-image-anchor`\n * which controls the focal point of the image.\n *\n * @example\n * <img eclBannerImage eclImageAnchor=\"center\" />\n */\n@Directive({\n selector: 'img[eclBannerImage]',\n host: {\n class: 'ecl-banner__image',\n '[style.--ecl-image-anchor]': 'cssAnchor()',\n },\n})\nexport class EclBannerImageDirective extends ECLBaseDirective {\n el = inject(ElementRef);\n\n /**\n * Sets the image anchor point via the `--ecl-image-anchor` CSS custom property.\n * Accepts values 'center', 'top left', 'bottom right', '20% 20%'.\n */\n eclImageAnchor = input<'center' | 'top left' | 'bottom right' | '20% 20%'>();\n\n readonly cssAnchor = computed(() => {\n const value = this.eclImageAnchor();\n return value || null;\n });\n}\n","import { Directive, ElementRef, inject } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive applied to the video element used in the banner.\n * Adds appropriate styling classes to the host element.\n */\n@Directive({\n selector: 'video[eclBannerVideo]',\n host: {\n class: 'ecl-video ecl-banner__video',\n },\n})\nexport class EclBannerVideoDirective extends ECLBaseDirective {\n el = inject(ElementRef);\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterContentInit,\n Component,\n DOCUMENT,\n ElementRef,\n OnDestroy,\n Renderer2,\n afterNextRender,\n booleanAttribute,\n computed,\n forwardRef,\n inject,\n input,\n signal,\n contentChildren,\n contentChild,\n viewChild,\n} from '@angular/core';\nimport { EuiAppShellService } from '@eui/core';\nimport { EUI_ECL_BUTTON, EclButtonComponent } from '@eui/ecl/components/ecl-button';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\nimport { EclLinkDirective } from '@eui/ecl/components/ecl-link';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { Subject, debounceTime, delay, distinctUntilChanged, fromEvent, map, takeUntil } from 'rxjs';\nimport { EclBannerImageDirective } from './ecl-banner-picture.directive';\nimport { EclBannerVideoDirective } from './ecl-banner-video.directive';\n\nconst enum DefaultRatio {\n XS = '6/1',\n S = '5/1',\n M = '4/1',\n L = '3/1',\n}\n\n/**\n * Component representing a banner, which can contain image, video and call-to-action (CTA) links.\n * Allows customization of layout, alignment, and appearance through inputs.\n */\n@Component({\n selector: 'ecl-banner',\n templateUrl: './ecl-banner.component.html',\n imports: [\n ...EUI_ECL_ICON,\n ...EUI_ECL_BUTTON,\n NgTemplateOutlet,\n ],\n host: {\n '[class]': 'cssClasses()',\n '[style.--banner-footer-height.px]': 'bannerFooterHeight()',\n },\n})\nexport class EclBannerComponent extends ECLBaseDirective implements AfterContentInit, OnDestroy {\n el = inject(ElementRef);\n /**\n * Defines the size of the banner. Affects its height-to-width aspect ratio.\n * Allowed values: 'xs' | 's' | 'm' | 'l'.\n * Default: 'm'.\n */\n readonly eclSize = input<'xs' | 's' | 'm' | 'l' | string>('m');\n\n /**\n * Defines the color of the font inside the banner content box.\n * Allowed values: 'light' | 'dark'.\n * Default: 'dark'.\n */\n readonly fontColor = input<'light' | 'dark' | string>('dark');\n\n /**\n * Defines the font size inside the banner content box.\n * Allowed values: 'm' | 'l'.\n * Default: 'm'.\n */\n readonly fontSize = input<'s' | 'm' | 'l' | string>('m');\n\n fontWeight = input<'light' | 'bold'>('light');\n\n /**\n * Defines the background color of the banner content box.\n * Allowed values: 'none' | 'light' | 'dark'.\n * Default: 'light'.\n */\n readonly boxBackground = input<'none' | 'light' | 'dark' | string>('light');\n\n /**\n * Sets the horizontal alignment of the content inside the banner.\n * Allowed values: 'left' | 'center' | 'right'.\n * Default: 'left'.\n */\n readonly horizontalAlignment = input<'right' | 'left' | 'center' | string>('left');\n\n /**\n * Sets the vertical alignment of the content inside the banner.\n * Allowed values: 'top' | 'center' | 'bottom'.\n * Default: 'center'.\n */\n readonly verticalAlignment = input<'top' | 'center' | 'bottom' | string>('center');\n\n /**\n * Sets the copyright text displayed in the banner.\n */\n readonly copyright = input('');\n\n /**\n * When true, the banner stretches to full width of its container.\n * Default: false.\n */\n readonly isFullWidth = input(false, { transform: booleanAttribute });\n\n hasOverlay = input(false, { transform: booleanAttribute });\n\n readonly eclLinkComponents = contentChildren(forwardRef(() => EclLinkDirective));\n readonly eclBannerImage = contentChild(EclBannerImageDirective);\n readonly eclBannerVideo = contentChild(EclBannerVideoDirective);\n\n readonly bannerFooter = viewChild<ElementRef>('bannerFooter');\n readonly bannerContainer = viewChild<ElementRef>('bannerContainer');\n readonly playBtn = viewChild<EclButtonComponent>('playBtn');\n readonly pauseBtn = viewChild<EclButtonComponent>('pauseBtn');\n\n readonly bannerFooterHeight = signal<number | null>(null);\n\n protected readonly cssClasses = computed<string>(() =>\n [\n super.getCssClasses('ecl-banner'),\n `ecl-banner--${this.eclSize()}`,\n `ecl-banner--font-${this.fontSize()}`,\n `ecl-banner--box-bg-${this.boxBackground()}`,\n `ecl-banner--h-${this.horizontalAlignment()}`,\n `ecl-banner--v-${this.verticalAlignment()}`,\n `ecl-banner--color-${this.fontColor()}`,\n `ecl-banner--font-weight-${this.fontWeight()}`,\n this.isFullWidth() ? 'ecl-banner--full-width' : '',\n !this.hasMedia ? 'ecl-banner--no-media' : '',\n this.hasOverlay() ? 'ecl-banner--overlay' : '',\n ]\n .join(' ')\n .trim());\n\n /**\n * When true, the banner's own height management is disabled.\n * Used by the carousel to prevent height conflicts.\n */\n skipHeightManagement = false;\n isPlaying = signal(true);\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private breakpoint = 996;\n private bannerVPadding = 8;\n private readonly TIMEOUT_INTERVAL = 200;\n private renderer = inject(Renderer2);\n private appShell = inject(EuiAppShellService);\n private maxIterations = 10;\n private readonly document = inject<Document>(DOCUMENT);\n private readonly window = this.document.defaultView; // Window | null\n\n constructor() {\n super();\n afterNextRender(() => {\n this.observeBreakpointChanges();\n this.checkViewport();\n fromEvent(this.window, 'resize').pipe(\n debounceTime(this.TIMEOUT_INTERVAL),\n takeUntil(this.destroy$)).subscribe(() => {\n this.checkViewport();\n });\n });\n }\n\n ngAfterContentInit(): void {\n const eclLinkComponents = this.eclLinkComponents();\n if (eclLinkComponents) {\n eclLinkComponents.forEach((link) => {\n link.class.set('ecl-banner__link-cta');\n });\n }\n\n if (this.hasVideo) {\n const videoEl : HTMLVideoElement = this.eclBannerVideo().el.nativeElement;\n videoEl.addEventListener('play', () => {\n this.isPlaying.set(true);\n });\n videoEl.addEventListener('pause', () => {\n this.isPlaying.set(false);\n });\n this.renderer.setProperty(videoEl, 'muted', true);\n this.renderer.setProperty(videoEl, 'loop', true);\n this.renderer.setProperty(videoEl, 'autoplay', true);\n this.renderer.removeAttribute(videoEl, 'controls');\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Indicates whether the banner contains at least one call-to-action link.\n */\n get hasCtaLink(): boolean {\n return this.eclLinkComponents().length > 0;\n }\n\n /**\n * Indicates whether the banner contains an image.\n */\n get hasImage(): boolean {\n return !!this.eclBannerImage();\n }\n\n /**\n * Indicates whether the banner contains a video.\n */\n get hasVideo(): boolean {\n return !!this.eclBannerVideo();\n }\n\n /**\n * Indicates whether the banner contains any media (image or video).\n */\n get hasMedia(): boolean {\n return this.hasImage || this.hasVideo;\n }\n\n /**\n * Handles keyboard activation (Enter key) to play video.\n * Moves focus to pause button after playing starts.\n */\n onKeydownEnterPlay(): void {\n this.onVideoPlay();\n setTimeout(() => this.pauseBtn().onFocus());\n }\n\n /**\n * Handles keyboard activation (Enter key) to pause video.\n * Moves focus to play button after pausing.\n */\n onKeydownEnterPause(): void {\n this.onVideoPause();\n setTimeout(() => this.playBtn().onFocus());\n }\n\n /**\n * Plays the embedded banner video.\n * Triggered via interaction (e.g., button).\n */\n onVideoPlay(): void {\n const videoEl : HTMLVideoElement = this.eclBannerVideo().el.nativeElement;\n videoEl.play();\n }\n\n /**\n * Pauses the embedded banner video.\n * Triggered via interaction (e.g., button).\n */\n onVideoPause(): void {\n const videoEl : HTMLVideoElement = this.eclBannerVideo().el.nativeElement;\n videoEl.pause();\n }\n\n /**\n * Triggers the banner's height calculation.\n * Used by the carousel to force height recalculation before measuring.\n */\n public calculateHeight(): void {\n if (window.innerWidth > this.breakpoint) {\n this.setBannerHeight();\n } else {\n this.resetBannerHeight();\n }\n }\n\n private checkViewport() {\n if (this.skipHeightManagement) return;\n this.calculateHeight();\n }\n\n private waitForAspectRatioToBeDefined(attemptCounter: number) {\n attemptCounter = attemptCounter + 1;\n const aspectRatio = window.getComputedStyle(this.el.nativeElement).getPropertyValue('--css-aspect-ratio');\n\n if (\n (typeof aspectRatio === 'undefined' || aspectRatio === '') &&\n this.maxIterations > attemptCounter\n ) {\n setTimeout(() => this.waitForAspectRatioToBeDefined(attemptCounter), 100);\n } else {\n this.setHeight(aspectRatio || this.getDefaultRatio());\n }\n }\n\n private setBannerHeight(): void {\n if (this.hasMedia) {\n const aspectRatio = window.getComputedStyle(this.el.nativeElement).getPropertyValue('--css-aspect-ratio');\n if (aspectRatio) {\n this.setHeight(aspectRatio);\n } else {\n this.waitForAspectRatioToBeDefined(0);\n }\n } else {\n this.setHeight(this.getDefaultRatio());\n }\n }\n\n private setHeight(ratio: string) {\n const bannerContainer = this.bannerContainer();\n if (bannerContainer) {\n const bannerHeight = bannerContainer.nativeElement.offsetHeight + 2*this.bannerVPadding;\n const bannerWidth = parseInt(window.getComputedStyle(this.el.nativeElement).getPropertyValue('width'), 10);\n const [denominator, numerator] = ratio.split('/').map(Number);\n const currentHeight = (bannerWidth * numerator) / denominator;\n if (bannerHeight > currentHeight) {\n this.renderer.setStyle(this.el.nativeElement, 'aspect-ratio', 'auto');\n this.renderer.setStyle(this.el.nativeElement, 'height', `${bannerHeight}px`);\n } else {\n this.resetBannerHeight();\n }\n }\n\n // Add margin to the banner container when there is a footer\n // This is needed to keep the vertical alignment\n const bannerFooter = this.bannerFooter();\n if (bannerFooter) {\n this.bannerFooterHeight.set(bannerFooter.nativeElement.offsetHeight);\n }\n }\n\n private resetBannerHeight(): void {\n // remove aspect-ratio\n this.renderer.removeStyle(this.el.nativeElement, 'aspect-ratio');\n\n // set height to auto\n this.renderer.setStyle(this.el.nativeElement, 'height', 'auto');\n\n // update footer height if bannerFooter exists\n const bannerFooter = this.bannerFooter();\n if (bannerFooter) {\n this.bannerFooterHeight.set(bannerFooter.nativeElement.offsetHeight);\n }\n }\n\n private getDefaultRatio(): string {\n switch(this.eclSize()) {\n case 'xs': {\n return DefaultRatio.XS;\n }\n case 's': {\n return DefaultRatio.S;\n }\n case 'l': {\n return DefaultRatio.L;\n }\n default: {\n return DefaultRatio.M;\n }\n }\n }\n\n private observeBreakpointChanges(): void {\n this.appShell.getState<any>('breakpoints')\n .pipe(\n map(bp => !!(bp?.isMobile || bp?.isTablet)), // xs/sm/md (< 996px)\n distinctUntilChanged(),\n delay(this.TIMEOUT_INTERVAL),\n takeUntil(this.destroy$),\n )\n .subscribe((isBelowLg) => {\n if (!isBelowLg && !this.skipHeightManagement) {\n this.setBannerHeight();\n }\n });\n }\n}\n","@if(hasImage) {\n<figure class=\"ecl-banner__picture-container\">\n <ng-content select=\"[eclBannerPicture]\"></ng-content>\n @if(copyright()) {\n <ng-container *ngTemplateOutlet=\"bannerFooterTemplate\"></ng-container>\n }\n</figure>\n}\n\n@if(hasVideo) {\n<div class=\"ecl-banner__video-container\">\n <ng-content select=\"[eclBannerVideo]\"></ng-content>\n @if(copyright()) {\n <ng-container *ngTemplateOutlet=\"bannerFooterTemplate\"></ng-container>\n }\n <button #playBtn eclButton variant=\"tertiary\" isIconOnly class=\"ecl-banner__play\" (click)=\"onVideoPlay()\"\n [style.display]=\"isPlaying() ? 'none' : 'flex'\" (keydown.enter)=\"onKeydownEnterPlay()\">\n <span eclButtonLabel>Play video</span>\n <ecl-icon icon=\"play-outline\" size=\"m\"></ecl-icon>\n </button>\n <button #pauseBtn eclButton variant=\"tertiary\" isIconOnly class=\"ecl-banner__pause\" (click)=\"onVideoPause()\"\n [style.display]=\"isPlaying() ? 'flex' : 'none'\" (keydown.enter)=\"onKeydownEnterPause()\">\n <span eclButtonLabel>Pause video</span>\n <ecl-icon icon=\"pause-outline\" size=\"m\"></ecl-icon>\n </button>\n</div>\n}\n<div class=\"ecl-container ecl-banner__info\">\n <div #bannerContainer class=\"ecl-banner__container \">\n <div class=\"ecl-banner__content\">\n <ng-content select=\"[eclBannerTitle]\"></ng-content>\n <ng-content select=\"[eclBannerDescription]\"></ng-content>\n @if (hasCtaLink) {\n <div class=\"ecl-banner__cta\">\n <ng-content select=\"[eclLink]\"></ng-content>\n </div>\n }\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n\n<ng-template #bannerFooterTemplate>\n <footer #bannerFooter class=\"ecl-banner__credit\"><div class=\"ecl-container\">© {{copyright()}}</div></footer>\n</ng-template>","import { Directive } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive applied to the banner title container element.\n * Adds appropriate styling class to the host element.\n */\n@Directive({\n selector: '[eclBannerTitle]',\n host: {\n class: 'ecl-banner__title',\n },\n})\nexport class EclBannerTitleDirective extends ECLBaseDirective {\n}\n\n/**\n * Directive applied to the text element within the banner title.\n * Adds appropriate styling class to the host element.\n */\n@Directive({\n selector: '[eclBannerTitleText]',\n host: {\n class: 'ecl-banner__title-text',\n },\n})\nexport class EclBannerTitleTextDirective extends ECLBaseDirective {\n}\n\n/**\n * Directive applied to the link element within the banner title.\n * Adds link classes and marks the link as standalone.\n */\n@Directive({\n selector: '[eclBannerTitleLink]',\n host: {\n class: 'ecl-link ecl-banner__title-link',\n },\n})\nexport class EclBannerTitleLinkDirective extends ECLBaseDirective {\n}\n","import { Directive } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive for the main banner description container.\n */\n@Directive({\n selector: '[eclBannerDescription]',\n host: {\n class: 'ecl-banner__description',\n },\n})\nexport class EclBannerDescriptionDirective extends ECLBaseDirective {\n}\n\n/**\n * Directive for the textual content inside the banner description.\n */\n@Directive({\n selector: '[eclBannerDescriptionText]',\n host: {\n class: 'ecl-banner__description-text',\n },\n})\nexport class EclBannerDescriptionTextDirective extends ECLBaseDirective {\n}\n\n/**\n * Directive for a link inside the banner description.\n * Adds link classes and marks the link as standalone.\n */\n@Directive({\n selector: '[eclBannerDescriptionLink]',\n host: {\n class: 'ecl-link ecl-banner__description-link',\n },\n})\nexport class EclBannerDescriptionLinkDirective extends ECLBaseDirective {\n}\n","import { EclBannerComponent } from './ecl-banner.component';\nimport { EclBannerTitleDirective, EclBannerTitleTextDirective, EclBannerTitleLinkDirective } from './ecl-banner-title.directive';\nimport { EclBannerDescriptionDirective, EclBannerDescriptionTextDirective, EclBannerDescriptionLinkDirective } from './ecl-banner-description.directive';\nimport { EclBannerImageDirective, EclBannerPictureDirective } from './ecl-banner-picture.directive';\nimport { EclBannerVideoDirective } from './ecl-banner-video.directive';\n\nexport * from './ecl-banner.component';\nexport * from './ecl-banner-title.directive';\nexport * from './ecl-banner-description.directive';\nexport * from './ecl-banner-picture.directive';\nexport * from './ecl-banner-video.directive';\n\nexport const EUI_ECL_BANNER = [\n EclBannerComponent,\n EclBannerTitleDirective,\n EclBannerTitleTextDirective,\n EclBannerTitleLinkDirective,\n EclBannerDescriptionDirective,\n EclBannerDescriptionTextDirective,\n EclBannerDescriptionLinkDirective,\n EclBannerPictureDirective,\n EclBannerImageDirective,\n EclBannerVideoDirective,\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-banner.mjs","sources":["../../components/ecl-banner/ecl-banner-picture.directive.ts","../../components/ecl-banner/ecl-banner-video.directive.ts","../../components/ecl-banner/ecl-banner.component.ts","../../components/ecl-banner/ecl-banner.component.html","../../components/ecl-banner/ecl-banner-title.directive.ts","../../components/ecl-banner/ecl-banner-description.directive.ts","../../components/ecl-banner/index.ts","../../components/ecl-banner/eui-ecl-components-ecl-banner.ts"],"sourcesContent":["import { Directive, ElementRef, inject, input, computed } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive applied to the <picture> element within the banner.\n * Adds the appropriate classes for styling the banner picture.\n */\n@Directive({\n selector: 'picture[eclBannerPicture]',\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclBannerPictureDirective extends ECLBaseDirective {\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-picture ecl-banner__picture'));\n}\n\n/**\n * Directive applied to the <img> element inside the banner.\n * Enables class binding and exposes the element reference.\n *\n * Use the `eclImageAnchor` input to set the CSS custom property `--ecl-image-anchor`\n * which controls the focal point of the image.\n *\n * @example\n * <img eclBannerImage eclImageAnchor=\"center\" />\n */\n@Directive({\n selector: 'img[eclBannerImage]',\n host: {\n class: 'ecl-banner__image',\n '[style.--ecl-image-anchor]': 'cssAnchor()',\n },\n})\nexport class EclBannerImageDirective extends ECLBaseDirective {\n el = inject(ElementRef);\n\n /**\n * Sets the image anchor point via the `--ecl-image-anchor` CSS custom property.\n * Accepts values 'center', 'top left', 'bottom right', '20% 20%'.\n */\n eclImageAnchor = input<'center' | 'top left' | 'bottom right' | '20% 20%'>();\n\n readonly cssAnchor = computed(() => {\n const value = this.eclImageAnchor();\n return value || null;\n });\n}\n","import { Directive, ElementRef, inject } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive applied to the video element used in the banner.\n * Adds appropriate styling classes to the host element.\n */\n@Directive({\n selector: 'video[eclBannerVideo]',\n host: {\n class: 'ecl-video ecl-banner__video',\n },\n})\nexport class EclBannerVideoDirective extends ECLBaseDirective {\n el = inject(ElementRef);\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterContentInit,\n Component,\n DOCUMENT,\n ElementRef,\n OnDestroy,\n Renderer2,\n afterNextRender,\n booleanAttribute,\n computed,\n forwardRef,\n inject,\n input,\n signal,\n contentChildren,\n contentChild,\n viewChild,\n} from '@angular/core';\nimport { EuiAppShellService } from '@eui/core';\nimport { EUI_ECL_BUTTON, EclButtonComponent } from '@eui/ecl/components/ecl-button';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\nimport { EclLinkDirective } from '@eui/ecl/components/ecl-link';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { Subject, debounceTime, delay, distinctUntilChanged, fromEvent, map, takeUntil } from 'rxjs';\nimport { EclBannerImageDirective } from './ecl-banner-picture.directive';\nimport { EclBannerVideoDirective } from './ecl-banner-video.directive';\n\nconst enum DefaultRatio {\n XS = '6/1',\n S = '5/1',\n M = '4/1',\n L = '3/1',\n}\n\n/**\n * Component representing a banner, which can contain image, video and call-to-action (CTA) links.\n * Allows customization of layout, alignment, and appearance through inputs.\n */\n@Component({\n selector: 'ecl-banner',\n templateUrl: './ecl-banner.component.html',\n imports: [\n ...EUI_ECL_ICON,\n ...EUI_ECL_BUTTON,\n NgTemplateOutlet,\n ],\n host: {\n '[class]': 'cssClasses()',\n '[style.--banner-footer-height.px]': 'bannerFooterHeight()',\n },\n})\nexport class EclBannerComponent extends ECLBaseDirective implements AfterContentInit, OnDestroy {\n el = inject(ElementRef);\n /**\n * Defines the size of the banner. Affects its height-to-width aspect ratio.\n * Allowed values: 'xs' | 's' | 'm' | 'l'.\n * Default: 'm'.\n */\n readonly eclSize = input<'xs' | 's' | 'm' | 'l' | string>('m');\n\n /**\n * Defines the color of the font inside the banner content box.\n * Allowed values: 'light' | 'dark'.\n * Default: 'dark'.\n */\n readonly fontColor = input<'light' | 'dark' | string>('dark');\n\n /**\n * Defines the font size inside the banner content box.\n * Allowed values: 'm' | 'l'.\n * Default: 'm'.\n */\n readonly fontSize = input<'s' | 'm' | 'l' | string>('m');\n\n fontWeight = input<'light' | 'bold'>('light');\n\n /**\n * Defines the background color of the banner content box.\n * Allowed values: 'none' | 'light' | 'dark'.\n * Default: 'light'.\n */\n readonly boxBackground = input<'none' | 'light' | 'dark' | string>('light');\n\n /**\n * Sets the horizontal alignment of the content inside the banner.\n * Allowed values: 'left' | 'center' | 'right'.\n * Default: 'left'.\n */\n readonly horizontalAlignment = input<'right' | 'left' | 'center' | string>('left');\n\n /**\n * Sets the vertical alignment of the content inside the banner.\n * Allowed values: 'top' | 'center' | 'bottom'.\n * Default: 'center'.\n */\n readonly verticalAlignment = input<'top' | 'center' | 'bottom' | string>('center');\n\n /**\n * Sets the copyright text displayed in the banner.\n */\n readonly copyright = input('');\n\n /**\n * When true, the banner stretches to full width of its container.\n * Default: false.\n */\n readonly isFullWidth = input(false, { transform: booleanAttribute });\n\n hasOverlay = input(false, { transform: booleanAttribute });\n\n readonly eclLinkComponents = contentChildren(forwardRef(() => EclLinkDirective));\n readonly eclBannerImage = contentChild(EclBannerImageDirective);\n readonly eclBannerVideo = contentChild(EclBannerVideoDirective);\n\n readonly bannerFooter = viewChild<ElementRef>('bannerFooter');\n readonly bannerContainer = viewChild<ElementRef>('bannerContainer');\n readonly playBtn = viewChild<EclButtonComponent>('playBtn');\n readonly pauseBtn = viewChild<EclButtonComponent>('pauseBtn');\n\n readonly bannerFooterHeight = signal<number | null>(null);\n\n protected readonly cssClasses = computed<string>(() =>\n [\n super.getCssClasses('ecl-banner'),\n `ecl-banner--${this.eclSize()}`,\n `ecl-banner--font-${this.fontSize()}`,\n `ecl-banner--box-bg-${this.boxBackground()}`,\n `ecl-banner--h-${this.horizontalAlignment()}`,\n `ecl-banner--v-${this.verticalAlignment()}`,\n `ecl-banner--color-${this.fontColor()}`,\n `ecl-banner--font-weight-${this.fontWeight()}`,\n this.isFullWidth() ? 'ecl-banner--full-width' : '',\n !this.hasMedia ? 'ecl-banner--no-media' : '',\n this.hasOverlay() ? 'ecl-banner--overlay' : '',\n ]\n .join(' ')\n .trim());\n\n /**\n * When true, the banner's own height management is disabled.\n * Used by the carousel to prevent height conflicts.\n */\n skipHeightManagement = false;\n isPlaying = signal(true);\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private breakpoint = 996;\n private bannerVPadding = 8;\n private readonly TIMEOUT_INTERVAL = 200;\n private renderer = inject(Renderer2);\n private appShell = inject(EuiAppShellService);\n private maxIterations = 10;\n private readonly document = inject<Document>(DOCUMENT);\n private readonly window = this.document.defaultView; // Window | null\n\n constructor() {\n super();\n afterNextRender(() => {\n this.observeBreakpointChanges();\n this.checkViewport();\n fromEvent(this.window, 'resize').pipe(\n debounceTime(this.TIMEOUT_INTERVAL),\n takeUntil(this.destroy$)).subscribe(() => {\n this.checkViewport();\n });\n });\n }\n\n ngAfterContentInit(): void {\n const eclLinkComponents = this.eclLinkComponents();\n if (eclLinkComponents) {\n eclLinkComponents.forEach((link) => {\n link.class.set('ecl-banner__link-cta');\n });\n }\n\n if (this.hasVideo) {\n const videoEl : HTMLVideoElement = this.eclBannerVideo().el.nativeElement;\n videoEl.addEventListener('play', () => {\n this.isPlaying.set(true);\n });\n videoEl.addEventListener('pause', () => {\n this.isPlaying.set(false);\n });\n this.renderer.setProperty(videoEl, 'muted', true);\n this.renderer.setProperty(videoEl, 'loop', true);\n this.renderer.setProperty(videoEl, 'autoplay', true);\n this.renderer.removeAttribute(videoEl, 'controls');\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Indicates whether the banner contains at least one call-to-action link.\n */\n get hasCtaLink(): boolean {\n return this.eclLinkComponents().length > 0;\n }\n\n /**\n * Indicates whether the banner contains an image.\n */\n get hasImage(): boolean {\n return !!this.eclBannerImage();\n }\n\n /**\n * Indicates whether the banner contains a video.\n */\n get hasVideo(): boolean {\n return !!this.eclBannerVideo();\n }\n\n /**\n * Indicates whether the banner contains any media (image or video).\n */\n get hasMedia(): boolean {\n return this.hasImage || this.hasVideo;\n }\n\n /**\n * Handles keyboard activation (Enter key) to play video.\n * Moves focus to pause button after playing starts.\n */\n onKeydownEnterPlay(): void {\n this.onVideoPlay();\n setTimeout(() => this.pauseBtn().onFocus());\n }\n\n /**\n * Handles keyboard activation (Enter key) to pause video.\n * Moves focus to play button after pausing.\n */\n onKeydownEnterPause(): void {\n this.onVideoPause();\n setTimeout(() => this.playBtn().onFocus());\n }\n\n /**\n * Plays the embedded banner video.\n * Triggered via interaction (e.g., button).\n */\n onVideoPlay(): void {\n const videoEl : HTMLVideoElement = this.eclBannerVideo().el.nativeElement;\n videoEl.play();\n }\n\n /**\n * Pauses the embedded banner video.\n * Triggered via interaction (e.g., button).\n */\n onVideoPause(): void {\n const videoEl : HTMLVideoElement = this.eclBannerVideo().el.nativeElement;\n videoEl.pause();\n }\n\n /**\n * Triggers the banner's height calculation.\n * Used by the carousel to force height recalculation before measuring.\n */\n public calculateHeight(): void {\n if (window.innerWidth > this.breakpoint) {\n this.setBannerHeight();\n } else {\n this.resetBannerHeight();\n }\n }\n\n private checkViewport() {\n if (this.skipHeightManagement) return;\n this.calculateHeight();\n }\n\n private waitForAspectRatioToBeDefined(attemptCounter: number) {\n attemptCounter = attemptCounter + 1;\n const aspectRatio = window.getComputedStyle(this.el.nativeElement).getPropertyValue('--css-aspect-ratio');\n\n if (\n (typeof aspectRatio === 'undefined' || aspectRatio === '') &&\n this.maxIterations > attemptCounter\n ) {\n setTimeout(() => this.waitForAspectRatioToBeDefined(attemptCounter), 100);\n } else {\n this.setHeight(aspectRatio || this.getDefaultRatio());\n }\n }\n\n private setBannerHeight(): void {\n if (this.hasMedia) {\n const aspectRatio = window.getComputedStyle(this.el.nativeElement).getPropertyValue('--css-aspect-ratio');\n if (aspectRatio) {\n this.setHeight(aspectRatio);\n } else {\n this.waitForAspectRatioToBeDefined(0);\n }\n } else {\n this.setHeight(this.getDefaultRatio());\n }\n }\n\n private setHeight(ratio: string) {\n const bannerContainer = this.bannerContainer();\n if (bannerContainer) {\n const bannerHeight = bannerContainer.nativeElement.offsetHeight + 2*this.bannerVPadding;\n const bannerWidth = parseInt(window.getComputedStyle(this.el.nativeElement).getPropertyValue('width'), 10);\n const [denominator, numerator] = ratio.split('/').map(Number);\n const currentHeight = (bannerWidth * numerator) / denominator;\n if (bannerHeight > currentHeight) {\n this.renderer.setStyle(this.el.nativeElement, 'aspect-ratio', 'auto');\n this.renderer.setStyle(this.el.nativeElement, 'height', `${bannerHeight}px`);\n } else {\n this.resetBannerHeight();\n }\n }\n\n // Add margin to the banner container when there is a footer\n // This is needed to keep the vertical alignment\n const bannerFooter = this.bannerFooter();\n if (bannerFooter) {\n this.bannerFooterHeight.set(bannerFooter.nativeElement.offsetHeight);\n }\n }\n\n private resetBannerHeight(): void {\n // remove aspect-ratio\n this.renderer.removeStyle(this.el.nativeElement, 'aspect-ratio');\n\n // set height to auto\n this.renderer.setStyle(this.el.nativeElement, 'height', 'auto');\n\n // update footer height if bannerFooter exists\n const bannerFooter = this.bannerFooter();\n if (bannerFooter) {\n this.bannerFooterHeight.set(bannerFooter.nativeElement.offsetHeight);\n }\n }\n\n private getDefaultRatio(): string {\n switch(this.eclSize()) {\n case 'xs': {\n return DefaultRatio.XS;\n }\n case 's': {\n return DefaultRatio.S;\n }\n case 'l': {\n return DefaultRatio.L;\n }\n default: {\n return DefaultRatio.M;\n }\n }\n }\n\n private observeBreakpointChanges(): void {\n this.appShell.getState<any>('breakpoints')\n .pipe(\n map(bp => !!(bp?.isMobile || bp?.isTablet)), // xs/sm/md (< 996px)\n distinctUntilChanged(),\n delay(this.TIMEOUT_INTERVAL),\n takeUntil(this.destroy$),\n )\n .subscribe((isBelowLg) => {\n if (!isBelowLg && !this.skipHeightManagement) {\n this.setBannerHeight();\n }\n });\n }\n}\n","@if(hasImage) {\n<figure class=\"ecl-banner__picture-container\">\n <ng-content select=\"[eclBannerPicture]\"></ng-content>\n @if(copyright()) {\n <ng-container *ngTemplateOutlet=\"bannerFooterTemplate\"></ng-container>\n }\n</figure>\n}\n\n@if(hasVideo) {\n<div class=\"ecl-banner__video-container\">\n <ng-content select=\"[eclBannerVideo]\"></ng-content>\n @if(copyright()) {\n <ng-container *ngTemplateOutlet=\"bannerFooterTemplate\"></ng-container>\n }\n <button #playBtn eclButton variant=\"tertiary\" isIconOnly class=\"ecl-banner__play\" (click)=\"onVideoPlay()\"\n [style.display]=\"isPlaying() ? 'none' : 'flex'\" (keydown.enter)=\"onKeydownEnterPlay()\">\n <span eclButtonLabel>Play video</span>\n <ecl-icon icon=\"play-outline\" size=\"m\"></ecl-icon>\n </button>\n <button #pauseBtn eclButton variant=\"tertiary\" isIconOnly class=\"ecl-banner__pause\" (click)=\"onVideoPause()\"\n [style.display]=\"isPlaying() ? 'flex' : 'none'\" (keydown.enter)=\"onKeydownEnterPause()\">\n <span eclButtonLabel>Pause video</span>\n <ecl-icon icon=\"pause-outline\" size=\"m\"></ecl-icon>\n </button>\n</div>\n}\n<div class=\"ecl-container ecl-banner__info\">\n <div #bannerContainer class=\"ecl-banner__container \">\n <div class=\"ecl-banner__content\">\n <ng-content select=\"[eclBannerTitle]\"></ng-content>\n <ng-content select=\"[eclBannerDescription]\"></ng-content>\n @if (hasCtaLink) {\n <div class=\"ecl-banner__cta\">\n <ng-content select=\"[eclLink]\"></ng-content>\n </div>\n }\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n\n<ng-template #bannerFooterTemplate>\n <footer #bannerFooter class=\"ecl-banner__credit\"><div class=\"ecl-container\">© {{copyright()}}</div></footer>\n</ng-template>","import { Directive } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive applied to the banner title container element.\n * Adds appropriate styling class to the host element.\n */\n@Directive({\n selector: '[eclBannerTitle]',\n host: {\n class: 'ecl-banner__title',\n },\n})\nexport class EclBannerTitleDirective extends ECLBaseDirective {\n}\n\n/**\n * Directive applied to the text element within the banner title.\n * Adds appropriate styling class to the host element.\n */\n@Directive({\n selector: '[eclBannerTitleText]',\n host: {\n class: 'ecl-banner__title-text',\n },\n})\nexport class EclBannerTitleTextDirective extends ECLBaseDirective {\n}\n\n/**\n * Directive applied to the link element within the banner title.\n * Adds link classes and marks the link as standalone.\n */\n@Directive({\n selector: '[eclBannerTitleLink]',\n host: {\n class: 'ecl-link ecl-banner__title-link',\n },\n})\nexport class EclBannerTitleLinkDirective extends ECLBaseDirective {\n}\n","import { Directive } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive for the main banner description container.\n */\n@Directive({\n selector: '[eclBannerDescription]',\n host: {\n class: 'ecl-banner__description',\n },\n})\nexport class EclBannerDescriptionDirective extends ECLBaseDirective {\n}\n\n/**\n * Directive for the textual content inside the banner description.\n */\n@Directive({\n selector: '[eclBannerDescriptionText]',\n host: {\n class: 'ecl-banner__description-text',\n },\n})\nexport class EclBannerDescriptionTextDirective extends ECLBaseDirective {\n}\n\n/**\n * Directive for a link inside the banner description.\n * Adds link classes and marks the link as standalone.\n */\n@Directive({\n selector: '[eclBannerDescriptionLink]',\n host: {\n class: 'ecl-link ecl-banner__description-link',\n },\n})\nexport class EclBannerDescriptionLinkDirective extends ECLBaseDirective {\n}\n","import { EclBannerComponent } from './ecl-banner.component';\nimport { EclBannerTitleDirective, EclBannerTitleTextDirective, EclBannerTitleLinkDirective } from './ecl-banner-title.directive';\nimport { EclBannerDescriptionDirective, EclBannerDescriptionTextDirective, EclBannerDescriptionLinkDirective } from './ecl-banner-description.directive';\nimport { EclBannerImageDirective, EclBannerPictureDirective } from './ecl-banner-picture.directive';\nimport { EclBannerVideoDirective } from './ecl-banner-video.directive';\n\nexport * from './ecl-banner.component';\nexport * from './ecl-banner-title.directive';\nexport * from './ecl-banner-description.directive';\nexport * from './ecl-banner-picture.directive';\nexport * from './ecl-banner-video.directive';\n\nexport const EUI_ECL_BANNER = [\n EclBannerComponent,\n EclBannerTitleDirective,\n EclBannerTitleTextDirective,\n EclBannerTitleLinkDirective,\n EclBannerDescriptionDirective,\n EclBannerDescriptionTextDirective,\n EclBannerDescriptionLinkDirective,\n EclBannerPictureDirective,\n EclBannerImageDirective,\n EclBannerVideoDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"eui-ecl-components-ecl-blockquote.mjs","sources":["../../components/ecl-blockquote/ecl-blockquote.component.ts","../../components/ecl-blockquote/ecl-blockquote.component.html","../../components/ecl-blockquote/ecl-blockquote-picture.directive.ts","../../components/ecl-blockquote/index.ts","../../components/ecl-blockquote/eui-ecl-components-ecl-blockquote.ts"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n OnInit,\n OnDestroy,\n ChangeDetectorRef,\n computed,\n inject,\n input,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { I18nService } from '@eui/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Blockquote component based on the ECL design system.\n * Displays quoted text with an optional author.\n * Supports language awareness through the I18n service.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[eclBlockquote]',\n templateUrl: './ecl-blockquote.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclBlockquoteComponent extends ECLBaseDirective implements OnInit, OnDestroy {\n /**\n * Author name associated with the quoted content.\n * If provided, it will be displayed below the blockquote.\n */\n readonly author = input<string>(undefined);\n /**\n * Current active language code, retrieved from the I18n service.\n */\n languageCode = 'en';\n protected i18nService = inject(I18nService);\n private cd = inject(ChangeDetectorRef);\n\n /**\n * Applies the CSS classes for the blockquote element.\n */\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-blockquote'));\n\n private destroy$: Subject<boolean> = new Subject<boolean>();\n\n /**\n * Angular lifecycle hook.\n * Subscribes to language change events on component initialization.\n */\n ngOnInit(): void {\n this.handleLanguageChangeState();\n }\n\n /**\n * Angular lifecycle hook.\n * Cleans up subscriptions on component destruction.\n */\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Checks if an author is provided.\n */\n get hasAuthor(): boolean {\n return this.author() !== null;\n }\n\n /**\n * Handles updates to the language code when the I18n service state changes.\n */\n private handleLanguageChangeState(): void {\n this.i18nService.getState().pipe(takeUntil(this.destroy$)).subscribe((lang) => {\n this.languageCode = lang.activeLang;\n this.cd.detectChanges();\n });\n }\n}\n","<ng-content select=\"picture[eclBlockquotePicture]\"></ng-content>\n<div class=\"ecl-blockquote__body\">\n <blockquote class=\"ecl-blockquote__quote\">\n <p class=\"ecl-blockquote__citation\" [attr.lang]=\"languageCode\">\n <ng-content></ng-content>\n </p>\n @if (hasAuthor) {\n <footer class=\"ecl-blockquote__attribution\">\n <cite class=\"ecl-blockquote__author\">{{ author() }}</cite>\n </footer>\n }\n </blockquote>\n</div>\n","import { Directive, computed } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive for the picture element inside the ECL Blockquote.\n * Automatically applies the `ecl-picture` and `ecl-blockquote__picture` CSS classes.\n */\n@Directive({\n selector: 'picture[eclBlockquotePicture]',\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclBlockquotePictureDirective extends ECLBaseDirective {\n /**\n * Returns the CSS classes to apply for the blockquote picture element.\n */\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-picture ecl-blockquote__picture'));\n}\n\n/**\n * Directive for the image inside the ECL Blockquote.\n * Automatically applies the `ecl-blockquote__image` CSS class.\n */\n@Directive({\n selector: 'img[eclBlockquoteImage]',\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclBlockquoteImageDirective extends ECLBaseDirective {\n /**\n * Returns the CSS classes to apply for the blockquote image element.\n */\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-blockquote__image'));\n}\n","import { EclBlockquoteComponent } from './ecl-blockquote.component';\nimport { EclBlockquoteImageDirective } from './ecl-blockquote-picture.directive';\nimport { EclBlockquotePictureDirective } from './ecl-blockquote-picture.directive';\n\nexport * from './ecl-blockquote.component';\nexport * from './ecl-blockquote-picture.directive';\n\nexport const EUI_ECL_BLOCKQUOTE = [\n EclBlockquoteComponent,\n EclBlockquoteImageDirective,\n EclBlockquotePictureDirective,\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-blockquote.mjs","sources":["../../components/ecl-blockquote/ecl-blockquote.component.ts","../../components/ecl-blockquote/ecl-blockquote.component.html","../../components/ecl-blockquote/ecl-blockquote-picture.directive.ts","../../components/ecl-blockquote/index.ts","../../components/ecl-blockquote/eui-ecl-components-ecl-blockquote.ts"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n OnInit,\n OnDestroy,\n ChangeDetectorRef,\n computed,\n inject,\n input,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { I18nService } from '@eui/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Blockquote component based on the ECL design system.\n * Displays quoted text with an optional author.\n * Supports language awareness through the I18n service.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[eclBlockquote]',\n templateUrl: './ecl-blockquote.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclBlockquoteComponent extends ECLBaseDirective implements OnInit, OnDestroy {\n /**\n * Author name associated with the quoted content.\n * If provided, it will be displayed below the blockquote.\n */\n readonly author = input<string>(undefined);\n /**\n * Current active language code, retrieved from the I18n service.\n */\n languageCode = 'en';\n protected i18nService = inject(I18nService);\n private cd = inject(ChangeDetectorRef);\n\n /**\n * Applies the CSS classes for the blockquote element.\n */\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-blockquote'));\n\n private destroy$: Subject<boolean> = new Subject<boolean>();\n\n /**\n * Angular lifecycle hook.\n * Subscribes to language change events on component initialization.\n */\n ngOnInit(): void {\n this.handleLanguageChangeState();\n }\n\n /**\n * Angular lifecycle hook.\n * Cleans up subscriptions on component destruction.\n */\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Checks if an author is provided.\n */\n get hasAuthor(): boolean {\n return this.author() !== null;\n }\n\n /**\n * Handles updates to the language code when the I18n service state changes.\n */\n private handleLanguageChangeState(): void {\n this.i18nService.getState().pipe(takeUntil(this.destroy$)).subscribe((lang) => {\n this.languageCode = lang.activeLang;\n this.cd.detectChanges();\n });\n }\n}\n","<ng-content select=\"picture[eclBlockquotePicture]\"></ng-content>\n<div class=\"ecl-blockquote__body\">\n <blockquote class=\"ecl-blockquote__quote\">\n <p class=\"ecl-blockquote__citation\" [attr.lang]=\"languageCode\">\n <ng-content></ng-content>\n </p>\n @if (hasAuthor) {\n <footer class=\"ecl-blockquote__attribution\">\n <cite class=\"ecl-blockquote__author\">{{ author() }}</cite>\n </footer>\n }\n </blockquote>\n</div>\n","import { Directive, computed } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive for the picture element inside the ECL Blockquote.\n * Automatically applies the `ecl-picture` and `ecl-blockquote__picture` CSS classes.\n */\n@Directive({\n selector: 'picture[eclBlockquotePicture]',\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclBlockquotePictureDirective extends ECLBaseDirective {\n /**\n * Returns the CSS classes to apply for the blockquote picture element.\n */\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-picture ecl-blockquote__picture'));\n}\n\n/**\n * Directive for the image inside the ECL Blockquote.\n * Automatically applies the `ecl-blockquote__image` CSS class.\n */\n@Directive({\n selector: 'img[eclBlockquoteImage]',\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclBlockquoteImageDirective extends ECLBaseDirective {\n /**\n * Returns the CSS classes to apply for the blockquote image element.\n */\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-blockquote__image'));\n}\n","import { EclBlockquoteComponent } from './ecl-blockquote.component';\nimport { EclBlockquoteImageDirective } from './ecl-blockquote-picture.directive';\nimport { EclBlockquotePictureDirective } from './ecl-blockquote-picture.directive';\n\nexport * from './ecl-blockquote.component';\nexport * from './ecl-blockquote-picture.directive';\n\nexport const EUI_ECL_BLOCKQUOTE = [\n EclBlockquoteComponent,\n EclBlockquoteImageDirective,\n EclBlockquotePictureDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}