@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
@@ -1 +1 @@
1
- {"version":3,"file":"eui-ecl-components-ecl-mega-menu.mjs","sources":["../../components/ecl-mega-menu/directives/ecl-mega-menu-container.directive.ts","../../components/ecl-mega-menu/directives/ecl-mega-menu-featured-list.directive.ts","../../components/ecl-mega-menu/directives/ecl-mega-menu-featured-picture.directive.ts","../../components/ecl-mega-menu/ecl-mega-menu-featured/ecl-mega-menu-featured.component.ts","../../components/ecl-mega-menu/ecl-mega-menu-featured/ecl-mega-menu-featured.component.html","../../components/ecl-mega-menu/services/ecl-mega-menu-data.service.ts","../../components/ecl-mega-menu/services/ecl-mega-menu.service.ts","../../components/ecl-mega-menu/ecl-mega-menu-subitem/ecl-mega-menu-subitem.component.ts","../../components/ecl-mega-menu/ecl-mega-menu-subitem/ecl-mega-menu-subitem.component.html","../../components/ecl-mega-menu/directives/ecl-mega-menu-list.directive.ts","../../components/ecl-mega-menu/ecl-mega-menu-info/ecl-mega-menu-info.component.ts","../../components/ecl-mega-menu/ecl-mega-menu-info/ecl-mega-menu-info.component.html","../../components/ecl-mega-menu/ecl-mega-menu-item/ecl-mega-menu-item.component.ts","../../components/ecl-mega-menu/ecl-mega-menu-item/ecl-mega-menu-item.component.html","../../components/ecl-mega-menu/ecl-mega-menu.component.ts","../../components/ecl-mega-menu/ecl-mega-menu.component.html","../../components/ecl-mega-menu/index.ts","../../components/ecl-mega-menu/eui-ecl-components-ecl-mega-menu.ts"],"sourcesContent":["import { Directive } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive that adds specific class to the mega-menu container.\n */\n@Directive({\n selector: 'div[eclMegaMenuContainer]',\n host: {\n class: 'ecl',\n },\n})\n\nexport class EclMegaMenuContainerDirective extends ECLBaseDirective {\n}\n","import { Directive, ElementRef, inject, input, booleanAttribute } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive that adds specific class to the mega-menu featured list.\n */\n@Directive({\n selector: '[eclMegaMenuFeaturedList]',\n host: {\n class: 'ecl-mega-menu__featured-list',\n },\n})\nexport class EclMegaMenuFeaturedListDirective extends ECLBaseDirective {\n}\n\n/**\n * Directive that adds specific class to a mega-menu featured list item.\n * Also has method that returns item height.\n */\n@Directive({\n selector: '[eclMegaMenuFeaturedListItem]',\n host: {\n class: 'ecl-mega-menu__featured-list__item',\n '[class.ecl-mega-menu__featured-list__item--image-only]': 'isImageOnly()',\n '[class.ecl-mega-menu__featured-list__item--combo]': 'isCombo()',\n },\n})\nexport class EclMegaMenuFeaturedListItemDirective extends ECLBaseDirective {\n readonly isImageOnly = input(false, { transform: booleanAttribute });\n\n readonly isCombo = input(false, { transform: booleanAttribute });\n\n private el = inject(ElementRef);\n\n getEclMegaMenuFeaturedItemHeight(): number {\n const computedStyle = window.getComputedStyle(this.el.nativeElement);\n return this.el.nativeElement.scrollHeight + parseFloat(computedStyle.marginBottom) + parseFloat(computedStyle.marginTop);\n }\n}\n\n@Directive({\n selector: '[eclMegaMenuFeaturedListItemDescription]',\n host: {\n class: 'ecl-mega-menu__featured-list__item-description',\n },\n})\nexport class EclMegaMenuFeaturedListItemDescriptionDirective extends ECLBaseDirective {\n}\n","import { Directive, computed } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive that adds specific class to the mega-menu featured picture.\n */\n@Directive({\n selector: '[eclMegaMenuFeaturedPicture]',\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclMegaMenuFeaturedPictureDirective extends ECLBaseDirective {\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-picture ecl-mega-menu__featured-picture'));\n}\n\n/**\n * Directive that adds specific class to the mega-menu featured image.\n */\n@Directive({\n selector: '[eclMegaMenuFeaturedImage]',\n host: {\n class: 'ecl-mega-menu__featured-image',\n },\n})\nexport class EclMegaMenuFeaturedImageDirective extends ECLBaseDirective {\n}\n","import { Component, ElementRef, forwardRef, AfterContentInit, input, signal, viewChild, contentChildren } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclLinkDirective } from '@eui/ecl/components/ecl-link';\nimport { EclMegaMenuFeaturedListItemDirective } from '../directives/ecl-mega-menu-featured-list.directive';\n\n/**\n * This component represents the featured items panel.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'div[eclMegaMenuFeatured]',\n templateUrl: './ecl-mega-menu-featured.component.html',\n host: {\n class: 'ecl-mega-menu__featured',\n '[style.height.px]': 'eclMegaMenuFeaturedStyleHeight()',\n },\n})\n\nexport class EclMegaMenuFeaturedComponent extends ECLBaseDirective implements AfterContentInit {\n\n readonly megaMenuFeaturedScrollable = viewChild<ElementRef>('megaMenuFeaturedScrollable');\n readonly eclMegaMenuFeaturedStyleHeight = signal<number | null>(null);\n readonly title = input<string>(undefined);\n readonly titleId = input<string>(undefined);\n readonly links = contentChildren(forwardRef(() => EclLinkDirective), { descendants: true });\n readonly featuredItems = contentChildren(forwardRef(() => EclMegaMenuFeaturedListItemDirective), { descendants: true });\n ngAfterContentInit(): void {\n this.links()?.forEach(link => link.class.set('ecl-mega-menu__featured-link'));\n }\n /**\n * Calculates and returns the height of the component. The total height of all the list items.\n * @returns the height of the component\n */\n getEclMegaMenuFeaturedHeight(): number {\n let result = 0;\n this.featuredItems()?.forEach(el => result += el.getEclMegaMenuFeaturedItemHeight());\n return result;\n }\n}\n","<div class=\"ecl-mega-menu__featured-scrollable\" #megaMenuFeaturedScrollable>\n <ng-content select=\"[eclMegaMenuFeaturedPicture]\"></ng-content>\n @if(title()) {\n <span class=\"ecl-mega-menu__featured-title\" id=\"{{titleId()}}\">{{ title() }}</span>\n }\n <ng-content select=\"[eclMegaMenuFeaturedList]\"></ng-content>\n</div>","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { EclMegaMenuItem } from '../models/ecl-mega-menu-item.model';\n\n@Injectable({ providedIn: 'root' })\nexport class EclMegaMenuDataService {\n\n public eclMegaMenuInfoBottomYSubject$: Observable<number>;\n public eclSubItemExpanded$: Observable<boolean>;\n public eclSubItemClicked$: Observable<EclMegaMenuItem>;\n public eclSubItemEscape$: Observable<boolean>;\n\n private eclMegaMenuInfoBottomYSubject: Subject<number> = new Subject<number>();\n private eclSubItemExpanded: Subject<boolean> = new Subject<boolean>();\n private eclSubItemClicked: Subject<EclMegaMenuItem> = new Subject<EclMegaMenuItem>();\n private eclSubItemEscape: Subject<boolean> = new Subject<boolean>();\n\n constructor() {\n this.eclMegaMenuInfoBottomYSubject$ = this.eclMegaMenuInfoBottomYSubject.asObservable();\n this.eclSubItemExpanded$ = this.eclSubItemExpanded.asObservable();\n this.eclSubItemClicked$ = this.eclSubItemClicked.asObservable();\n this.eclSubItemEscape$ = this.eclSubItemEscape.asObservable();\n }\n\n /**\n\t * Used to synchronize size of the info panel and sublist.\n\t */\n updateEclMegaMenuInfoSize(value: number): void {\n this.eclMegaMenuInfoBottomYSubject.next(value);\n }\n\n eclSubItemToggle(isExpanded: boolean): void {\n this.eclSubItemExpanded.next(isExpanded);\n }\n\n eclSubItemClick(item: EclMegaMenuItem): void {\n this.eclSubItemClicked.next(item);\n }\n\n eclSubItemEscapeEvent(value: boolean): void {\n this.eclSubItemEscape.next(value);\n }\n}","import { Injectable, Renderer2, RendererFactory2, inject } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class EclMegaMenuService {\n private renderer: Renderer2;\n\n constructor() {\n const rendererFactory = inject(RendererFactory2);\n\n this.renderer = rendererFactory.createRenderer(null, null);\n }\n setExtraAttributesForLink(link: HTMLElement, linkExtraAttributes: Record<string, string>): void {\n if (linkExtraAttributes) {\n Object.keys(linkExtraAttributes).forEach((key) => {\n if (key !== 'href' && key !== 'routerLink') {\n this.renderer.setAttribute(link, key, linkExtraAttributes[key]);\n }\n });\n }\n }\n}","import { NgTemplateOutlet } from '@angular/common';\nimport { afterNextRender, booleanAttribute, Component, DOCUMENT, ElementRef, forwardRef, inject, computed, input, output, signal, viewChild, contentChild } from '@angular/core';\nimport { Params, QueryParamsHandling, RouterLink, RouterLinkWithHref } from '@angular/router';\nimport { EuiAppShellService } from '@eui/core';\nimport { EclButtonComponent, EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\nimport { EclLinkDirective, EUI_ECL_LINK } from '@eui/ecl/components/ecl-link';\nimport { ECLBaseDirective, KeyCode } from '@eui/ecl/core';\nimport { distinctUntilChanged, map, Subject, takeUntil } from 'rxjs';\nimport { EclMegaMenuSublistDirective } from '../directives/ecl-mega-menu-list.directive';\nimport { EclMegaMenuFeaturedComponent } from '../ecl-mega-menu-featured/ecl-mega-menu-featured.component';\nimport { EclMegaMenuItem } from '../models/ecl-mega-menu-item.model';\nimport { EclMegaMenuDataService } from '../services/ecl-mega-menu-data.service';\nimport { EclMegaMenuService } from '../services/ecl-mega-menu.service';\n\n/**\n * This component represents a sub-item in the mega-menu component. Applies styling and functionality.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'li[eclMegaMenuSubitem]',\n templateUrl: './ecl-mega-menu-subitem.component.html',\n imports: [NgTemplateOutlet, RouterLink, RouterLinkWithHref, ...EUI_ECL_BUTTON, ...EUI_ECL_ICON, ...EUI_ECL_LINK],\n host: {\n '[class]': 'cssClasses()',\n '[style.display]': 'display()',\n },\n})\n\nexport class EclMegaMenuSubitemComponent extends ECLBaseDirective implements EclMegaMenuItem {\n\n /**\n * Sets id for the button element.\n */\n readonly buttonId = input<string>(undefined);\n readonly label = input('');\n /**\n * If the link redirects to external page. Adds an 'external' icon.\n */\n readonly isExternal = input(false, { transform: booleanAttribute });\n /**\n * If the link is external, this will be the title of the external icon.\n */\n readonly externalIconTitle = input<string>(undefined);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly routerLink = input<string | any[]>(null);\n readonly queryParams = input<Params | null>(null);\n readonly queryParamsHandling = input<QueryParamsHandling>(null);\n readonly href = input('');\n readonly target = input('');\n /**\n * Used for the 'View all' link.\n */\n readonly isSeeAll = input(false, { transform: booleanAttribute });\n /**\n * Adds custom attributes to an anchor element.\n */\n readonly linkExtraAttributes = input<Record<string, string>>(undefined);\n\n readonly megaMenuSubItemClicked = output();\n readonly megaMenuSubItemKeydown = output<KeyboardEvent>();\n\n /**\n * Wrapper div element of the second level sub-items.\n */\n readonly megaMenuLevel2 = viewChild<ElementRef>('megaMenuLevel2');\n /**\n * The directive of the submenu lits.\n */\n readonly submenu = contentChild(forwardRef(() => EclMegaMenuSublistDirective));\n /**\n * The component for the featured items.\n */\n readonly eclMegaMenuFeatured = contentChild(forwardRef(() => EclMegaMenuFeaturedComponent));\n\n readonly isCurrent = signal(false);\n readonly isExpanded = signal(false);\n /**\n * Used to set the height of the second level subitems container.\n */\n readonly level2StyleHeight = signal<number | null>(null);\n\n /**\n * The link element, if it exists. Item can have either link or button.\n */\n protected readonly subMenuItemLink = viewChild(EclLinkDirective);\n /**\n * The button element, if it exists. Item can have either link or button.\n */\n protected readonly subMenuItemBtn = viewChild<EclButtonComponent>('subMenuItemBtn');\n\n protected readonly cssClasses = computed<string>(() =>\n [\n super.getCssClasses('ecl-mega-menu__subitem'),\n this.isCurrent() ? 'ecl-mega-menu__subitem--current' : '',\n this.isExpanded() ? 'ecl-mega-menu__subitem--expanded' : '',\n this.isSeeAll() ? 'ecl-mega-menu__see-all' : '',\n this.isParentLink() ? 'ecl-mega-menu__parent-link' : '',\n ]\n .join(' ')\n .trim());\n\n protected readonly display = signal('');\n\n private readonly isParentLink = signal(false);\n private isMobileBreakpoint = false;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private eclMegaMenuDataService = inject(EclMegaMenuDataService);\n private el = inject(ElementRef);\n private eclMegaMenuService = inject(EclMegaMenuService);\n private readonly doc = inject(DOCUMENT);\n private readonly window = this.doc.defaultView; // Window | null\n private appShell = inject(EuiAppShellService);\n\n constructor() {\n super();\n const eclMegaMenuService = this.eclMegaMenuService;\n\n afterNextRender(() => {\n const subMenuItemLink = this.subMenuItemLink();\n if (subMenuItemLink) {\n eclMegaMenuService.setExtraAttributesForLink(subMenuItemLink.el.nativeElement, this.linkExtraAttributes());\n }\n this.observeBreakpointChanges();\n });\n }\n\n get hasChildren(): boolean {\n return !!this.submenu();\n }\n\n get hasFeatured(): boolean {\n return !!this.eclMegaMenuFeatured();\n }\n\n /**\n * Sets focus on either link or button element.\n */\n onFocus(): void{\n const subMenuItemLink = this.subMenuItemLink();\n const subMenuItemBtn = this.subMenuItemBtn();\n if (subMenuItemLink) {\n subMenuItemLink.onFocus();\n } else if (subMenuItemBtn) {\n subMenuItemBtn.onFocus();\n }\n }\n\n onHide(): void {\n this.display.set('none');\n }\n\n onShow(): void {\n this.display.set('');\n }\n\n getMegaMenuSubItemHeight(): number {\n return this.el.nativeElement.getBoundingClientRect().height;\n }\n\n onSubMenuItemCollapse(): void {\n if (this.isExpanded()) {\n this.eclMegaMenuDataService.eclSubItemToggle(false);\n this.isCurrent.set(false);\n this.isExpanded.set(false);\n this.isParentLink.set(false);\n }\n }\n\n onSubMenuItemExpand(): void {\n this.isCurrent.set(true);\n this.isExpanded.set(true);\n this.eclMegaMenuDataService.eclSubItemToggle(this.isExpanded());\n }\n\n /**\n * Show or hide the subitems.\n */\n protected onButtonClick(): void {\n this.isCurrent.set(!this.isCurrent());\n this.isExpanded.set(!this.isExpanded());\n this.eclMegaMenuDataService.eclSubItemToggle(this.isExpanded());\n this.eclMegaMenuDataService.eclSubItemClick(this);\n this.megaMenuSubItemClicked.emit();\n }\n\n /**\n * If link is clicked -> emit event and close all opened menus and submenus.\n */\n protected onLinkClick(): void {\n this.eclMegaMenuDataService.eclSubItemClick(this);\n this.megaMenuSubItemClicked.emit();\n }\n\n protected onKeydown(evt: Event): void {\n if (evt instanceof KeyboardEvent) {\n if (!((evt as KeyboardEvent).key === KeyCode.TAB)) {\n if ((evt as KeyboardEvent).key === KeyCode.ESCAPE) {\n this.eclMegaMenuDataService.eclSubItemEscapeEvent(true);\n } else {\n this.megaMenuSubItemKeydown.emit(evt as KeyboardEvent);\n }\n }\n }\n }\n\n private observeBreakpointChanges(): void {\n this.appShell.getState<any>('breakpoints')\n .pipe(\n // ECL uses breakpointDesktop = 1140px. isLtLargeTablet covers xs/sm/md/lg (< 1140px).\n map(bp => !!(bp?.isLtLargeTablet)),\n distinctUntilChanged(),\n takeUntil(this.destroy$),\n )\n .subscribe((isMobile) => {\n const wasMobile = this.isMobileBreakpoint;\n this.isMobileBreakpoint = isMobile;\n\n // Reset computed heights when switching breakpoints\n if (wasMobile !== isMobile) {\n this.level2StyleHeight.set(null);\n const eclMegaMenuFeatured = this.eclMegaMenuFeatured();\n if (eclMegaMenuFeatured) {\n eclMegaMenuFeatured.eclMegaMenuFeaturedStyleHeight.set(null);\n }\n }\n });\n }\n}\n","@if (!isSeeAll()) {\n@if (hasChildren) {\n<button eclButton #subMenuItemBtn variant=\"primary\" class=\"ecl-mega-menu__sublink\" [attr.aria-expanded]=\"isExpanded()\"\n (click)=\"onButtonClick()\" (keydown)=\"onKeydown($event)\" id=\"{{buttonId()}}\">\n <span eclButtonLabel>{{label()}}</span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-90\" size=\"2xs\"></ecl-icon>\n</button>\n} @else if (href()) {\n<a eclLink variant=\"standalone\" [href]=\"href()\" [target]=\"target()\" class=\"ecl-mega-menu__sublink\"\n (keydown)=\"onKeydown($event)\" (click)=\"onLinkClick()\">\n <span eclLinkLabel>{{label()}}</span>\n <ng-container *ngTemplateOutlet=\"eclIcon\"></ng-container>\n</a>\n} @else {\n<a eclLink variant=\"standalone\" [attr.tabindex]=\"tabindex || 0\" [routerLink]=\"routerLink()\"\n [queryParams]=\"queryParams()\" [queryParamsHandling]=\"queryParamsHandling()\" class=\"ecl-mega-menu__sublink\"\n (keydown)=\"onKeydown($event)\" (click)=\"onLinkClick()\">\n <span eclLinkLabel>{{label()}}</span>\n <ng-container *ngTemplateOutlet=\"eclIcon\"></ng-container>\n</a>\n}\n\n@if (hasChildren) {\n<div class=\"ecl-mega-menu__mega ecl-mega-menu__mega--level-2\" #megaMenuLevel2\n [style.height.px]=\"level2StyleHeight()\">\n <ng-content select=\"[eclMegaMenuSublist]\"></ng-content>\n <ng-content select=\"[eclMegaMenuFeatured]\"></ng-content>\n</div>\n}\n} @else {\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n}\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n\n<ng-template #eclIcon>\n @if (isExternal()) {\n <ecl-icon icon=\"external\" size=\"2xs\" ariaHidden=\"false\" role=\"img\">\n <title>Links to an external domain</title>\n </ecl-icon>\n }\n <!-- <ng-content select=\"ecl-icon\"></ng-content> -->\n</ng-template>","import { Directive, DoCheck, ElementRef, IterableDiffer, IterableDiffers, OnDestroy, afterNextRender, forwardRef, inject, output, signal, contentChildren, contentChild } from '@angular/core';\nimport { outputToObservable } from '@angular/core/rxjs-interop';\nimport { EuiAppShellService } from '@eui/core';\nimport { ECLBaseDirective, KeyCode } from '@eui/ecl/core';\nimport { distinctUntilChanged, map, Subject, takeUntil } from 'rxjs';\nimport { EclMegaMenuSubitemComponent } from '../ecl-mega-menu-subitem/ecl-mega-menu-subitem.component';\n\n/**\n * Directive that adds specific class to the mega-menu list.\n */\n@Directive({\n selector: 'ul[eclMegaMenuList]',\n host: {\n class: 'ecl-mega-menu__list',\n },\n})\nexport class EclMegaMenuListDirective extends ECLBaseDirective {\n}\n\n/**\n * Directive that adds specific class to the mega-menu spacer.\n */\n@Directive({\n selector: 'li[eclMegaMenuSpacer]',\n host: {\n class: 'ecl-mega-menu__spacer',\n },\n})\nexport class EclMegaMenuSpacerDirective extends ECLBaseDirective {\n}\n\n/**\n * Directive that adds specific classes and functionality to the mega-menu sublist.\n */\n@Directive({\n selector: 'ul[eclMegaMenuSublist]',\n host: {\n class: 'ecl-mega-menu__sublist',\n '[class.ecl-mega-menu__sublist--scrollable]': 'isScrollable()',\n '[style.top.px]': 'styleTop()',\n '[style.height.px]': 'styleHeight()',\n },\n})\nexport class EclMegaMenuSublistDirective extends ECLBaseDirective implements OnDestroy, DoCheck {\n el = inject(ElementRef);\n\n readonly isScrollable = signal(false);\n readonly styleTop = signal<number | null>(null);\n readonly styleHeight = signal<number | null>(null);\n\n readonly submenuItems = contentChildren(forwardRef(() => EclMegaMenuSubitemComponent));\n readonly spacer = contentChild(forwardRef(() => EclMegaMenuSpacerDirective));\n readonly megaMenuSubItemClicked = output();\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private differ: IterableDiffer<EclMegaMenuSubitemComponent>;\n private isMobileBreakpoint = false;\n private differs = inject(IterableDiffers);\n private appShell = inject(EuiAppShellService);\n\n constructor() {\n super();\n this.differ = this.differs.find([]).create();\n afterNextRender(() => {\n this.observeBreakpointChanges();\n });\n }\n\n ngDoCheck(): void {\n // When a new item is added -> subscribe to item's events.\n const diff = this.differ.diff(this.submenuItems());\n if (diff) {\n diff.forEachItem((item) => {\n this.connectMegaMenuItemEvents(item.item);\n });\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * When parent mega-menu item is clicked.\n * @param isExpanded - 'true', if parent item is expanded, 'false' if item is collapsed.\n */\n onParentMegaMenuItemClick(isExpanded: boolean): void {\n if (!isExpanded) {\n this.submenuItems().forEach(item => {\n if (item.isExpanded()) {\n item.onSubMenuItemCollapse();\n }\n });\n }\n }\n\n private connectMegaMenuItemEvents(item: EclMegaMenuSubitemComponent): void {\n outputToObservable(item.megaMenuSubItemClicked).pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.onMegaMenuSubItemClicked(item);\n });\n\n outputToObservable(item.megaMenuSubItemKeydown).pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.onMegaMenuSubItemKeydown(item, evt as KeyboardEvent);\n });\n }\n\n private onMegaMenuSubItemClicked(item: EclMegaMenuSubitemComponent): void {\n this.submenuItems().filter(subItem => subItem !== item).forEach(el => {\n el.onSubMenuItemCollapse();\n if (this.isMobileBreakpoint && item.hasChildren) {\n el.onHide();\n }\n });\n this.megaMenuSubItemClicked.emit();\n }\n\n private onMegaMenuSubItemKeydown(item: EclMegaMenuSubitemComponent, evt: KeyboardEvent): void {\n\n const itemIndex = this.submenuItems().findIndex(elem => elem === item);\n switch (evt.key) {\n case KeyCode.ARROW_DOWN: {\n evt.preventDefault();\n this.focusOnNextSibling(itemIndex);\n break;\n }\n case KeyCode.ARROW_UP: {\n evt.preventDefault();\n this.focusOnPrevSibling(itemIndex);\n break;\n }\n default: {\n break;\n }\n }\n }\n\n private focusOnPrevSibling(index: number): void {\n if (index > 0) {\n this.submenuItems().at(index - 1).onFocus();\n }\n }\n\n private focusOnNextSibling(index: number): void {\n if (index < this.submenuItems().length - 1) {\n this.submenuItems().at(index + 1).onFocus();\n }\n }\n\n private observeBreakpointChanges(): void {\n this.appShell.getState<any>('breakpoints')\n .pipe(\n map(bp => !!bp?.isLtLargeTablet), // xs/sm/md/lg => <= 996px boundary\n distinctUntilChanged(),\n takeUntil(this.destroy$),\n )\n .subscribe((isMobile) => {\n const wasMobile = this.isMobileBreakpoint;\n this.isMobileBreakpoint = isMobile;\n\n // Reset height/position values when switching between breakpoints\n // to avoid stale pixel values from the previous layout mode\n if (wasMobile !== isMobile) {\n this.styleHeight.set(null);\n this.styleTop.set(null);\n this.isScrollable.set(false);\n }\n });\n }\n}\n","import { AfterViewInit, Component, ElementRef, OnDestroy, PLATFORM_ID, computed, forwardRef, inject, signal, input, contentChild } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclLinkDirective } from '@eui/ecl/components/ecl-link';\nimport { EclMegaMenuDataService } from '../services/ecl-mega-menu-data.service';\nimport { isPlatformBrowser, DOCUMENT } from '@angular/common';\nimport { Subject, fromEvent, auditTime, takeUntil } from 'rxjs';\n\n/**\n * Component for displaying some custom information for the current menu item.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'div[eclMegaMenuInfo]',\n templateUrl: './ecl-mega-menu-info.component.html',\n host: {\n '[class]': 'cssClasses()',\n '[style.height.px]': 'eclMegaMenuInfoStyleHeight()',\n '[style.opacity]': 'eclMegaMenuInfoStyleOpacity()',\n },\n})\n\nexport class EclMegaMenuInfoComponent extends ECLBaseDirective implements AfterViewInit, OnDestroy {\n el = inject(ElementRef);\n\n /**\n * Applies custom styles for info component.\n */\n protected readonly cssClasses = computed<string>(() =>\n [\n super.getCssClasses('ecl-mega-menu__info'),\n this.linkItem() ? 'ecl-mega-menu__info--has-link' : '',\n ]\n .join(' ')\n .trim());\n /**\n * Sets the height of the component.\n */\n readonly eclMegaMenuInfoStyleHeight = signal<number | null>(null);\n /**\n * Sets the opacity of the component.\n */\n eclMegaMenuInfoStyleOpacity = signal<number | null>(null);\n\n readonly title = input<string>(undefined); \n readonly titleId = input<string>(undefined);\n\n private platformId = inject(PLATFORM_ID);\n private readonly doc = inject(DOCUMENT);\n private readonly window = this.doc.defaultView;\n private destroy$ = new Subject<void>();\n\n /**\n * When the info panel contains link.\n */\n readonly linkItem = contentChild(forwardRef(() => EclLinkDirective));\n private eclMegaMenuDataService = inject(EclMegaMenuDataService);\n\n ngAfterViewInit(): void {\n if (isPlatformBrowser(this.platformId)) {\n // Sets class of the sub link, if any.\n if (this.linkItem()) {\n setTimeout(() => this.linkItem().class.set('ecl-mega-menu__info-link'));\n }\n // Emits the bottom value of the element. Needed to calculate the size of the sublist. (for the same parent menu item)\n this.publishSize();\n this.observeResize();\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n /**\n * Used to calculate the height of the parent element.\n * @returns the height of the component.\n */\n getInfoPanelScrollHeight() : number {\n return this.el.nativeElement.scrollHeight;\n }\n\n /**\n * Used to calulate the size of the info panel.\n */\n private publishSize(): void {\n const bottomY = this.el.nativeElement.getBoundingClientRect().bottom;\n this.eclMegaMenuDataService.updateEclMegaMenuInfoSize(bottomY);\n }\n\n /**\n * Re-publishes the info panel size on window resize so that dependent\n * components (e.g. sublist positioning) recalculate with current dimensions.\n */\n private observeResize(): void {\n if (this.window) {\n fromEvent(this.window, 'resize').pipe(\n auditTime(100),\n takeUntil(this.destroy$),\n ).subscribe(() => {\n this.publishSize();\n });\n }\n }\n}\n","<span class=\"ecl-mega-menu__info-title\" [attr.id]=\"titleId() || null\">{{ title() }}</span>\n<div class=\"ecl-mega-menu__info-scrollable\">\n <div class=\"ecl-mega-menu__info-content\"><ng-content></ng-content>\n </div>\n</div>","import {\n AfterContentInit,\n afterNextRender, booleanAttribute,\n Component,\n ElementRef,\n forwardRef,\n inject,\n OnDestroy,\n DOCUMENT,\n Renderer2,\n computed,\n input,\n output,\n signal,\n viewChild,\n contentChild,\n contentChildren,\n} from '@angular/core';\nimport { outputToObservable } from '@angular/core/rxjs-interop';\nimport { Params, QueryParamsHandling, RouterLink, RouterLinkWithHref } from '@angular/router';\nimport { EuiAppShellService } from '@eui/core';\nimport { EclButtonComponent, EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\nimport { EclLinkDirective, EUI_ECL_LINK } from '@eui/ecl/components/ecl-link';\nimport { ECLBaseDirective, KeyCode } from '@eui/ecl/core';\nimport { EclHeaderMenuComunicationService } from '@eui/ecl/shared';\nimport { distinctUntilChanged, map, Subject, auditTime, fromEvent, takeUntil } from 'rxjs';\nimport { EclMegaMenuContainerDirective } from '../directives/ecl-mega-menu-container.directive';\nimport { EclMegaMenuSublistDirective } from '../directives/ecl-mega-menu-list.directive';\nimport { EclMegaMenuFeaturedComponent } from '../ecl-mega-menu-featured/ecl-mega-menu-featured.component';\nimport { EclMegaMenuInfoComponent } from '../ecl-mega-menu-info/ecl-mega-menu-info.component';\nimport { EclMegaMenuDataService } from '../services/ecl-mega-menu-data.service';\nimport { EclMegaMenuService } from '../services/ecl-mega-menu.service';\n\n/**\n * This component represents a mega menu item. Adds functionality and styling, according to ECL standards.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'li[eclMegaMenuItem]',\n templateUrl: './ecl-mega-menu-item.component.html',\n imports: [RouterLink, RouterLinkWithHref, ...EUI_ECL_BUTTON, ...EUI_ECL_ICON, ...EUI_ECL_LINK],\n host: {\n '[class]': 'cssClasses()',\n '[attr.aria-haspopup]': 'hasPopup',\n },\n})\n\nexport class EclMegaMenuItemComponent extends ECLBaseDirective implements AfterContentInit, OnDestroy {\n readonly isPromotional = input(false, { transform: booleanAttribute });\n readonly label = input<string>(undefined);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly routerLink = input<string | any[]>(null);\n readonly queryParams = input<Params | null>(null);\n readonly queryParamsHandling = input<QueryParamsHandling>(null);\n readonly href = input('');\n readonly target = input('');\n /**\n * This property should be used, when user wants the menu sub-items to use the maximum space available.\n * For example, if we have 10 sub-items, normally they will appear in one column only. If isOneLevelOnly is used, the sub-items\n * will take 2, 3, 4 columns, depending on presence of other sub-components.\n */\n readonly isOneLevelOnly = input(false, { transform: booleanAttribute });\n /**\n * Used in case user wants to set some custom attributes for the anchr tag.\n */\n readonly linkExtraAttributes = input<Record<string, string>>(undefined);\n\n readonly megaMenuItemClicked = output();\n readonly megaMenuItemKeydown = output<KeyboardEvent>();\n\n readonly isExpanded = signal(false);\n readonly isCurrent = signal(false);\n /**\n * Element, that holds the sub items of the current menu items.\n */\n readonly eclMegaMenuSublist = contentChild(forwardRef(() => EclMegaMenuSublistDirective));\n readonly eclMegaMenuFeatured = contentChild(forwardRef(() => EclMegaMenuFeaturedComponent), { descendants: false });\n\n readonly megaMenuMegaStyleHeight = signal<number | null>(null);\n readonly megaMenuMegaStyleOpacity = signal<number | null>(null);\n readonly containerStyleHeight = signal<number | null>(null);\n readonly wrapperStyleHeight = signal<number | null>(null);\n readonly wrapperStyleTop = signal<number | null>(null);\n\n /**\n * The wrapper around the subitems, if any.\n */\n protected readonly eclMegaMenuMega = viewChild<ElementRef>('eclMegaMenuMega');\n /**\n * This elemend hold some extra content, different from subitems. For example just some text or some custom links, etc.\n */\n protected readonly mainPanel = viewChild<ElementRef>('mainPanel');\n /**\n * Actual link of the menu item. If the menu has no children, but redirects/loads another page.\n */\n protected readonly menuLink = viewChild(EclLinkDirective);\n /**\n * Element, tat is rendered if the menu item has children.\n */\n protected readonly menuBtn = viewChild<EclButtonComponent>('menuBtn');\n /**\n * Element, that would contain some info about the current item or it's children. First in the container.\n */\n protected readonly eclMegaMenuInfo = contentChild(forwardRef(() => EclMegaMenuInfoComponent));\n // Get all the sublists including childrens's sublist, to detect if it's only one level submenu.\n protected readonly eclMegaMenuSublists = contentChildren(forwardRef(() => EclMegaMenuSublistDirective), { descendants: true });\n /**\n * Component, that consist of some custom info, text or whatever. When the menu item has no children, but still some\n * sub container is displayed.\n */\n protected readonly eclMegaMenuContainer = contentChild(forwardRef(() => EclMegaMenuContainerDirective));\n\n /**\n * Returns current menu item classes, depending on item's state (it's properties' values).\n */\n protected readonly cssClasses = computed<string>(() =>\n [\n super.getCssClasses('ecl-mega-menu__item'),\n this.eclMegaMenuSublist() ? 'ecl-mega-menu__item--has-children' : '',\n this.eclMegaMenuContainer() ? 'ecl-mega-menu__item--has-container' : '',\n this.isCurrent() ? 'ecl-mega-menu__item--current' : '',\n this.isExpanded() ? 'ecl-mega-menu__item--expanded' : '',\n this.isPromotional() ? 'ecl-mega-menu__item--promotional' : '',\n this.isOneLevelOnly() ? 'ecl-mega-menu__item--one-level-only' : '',\n ]\n .join(' ')\n .trim());\n\n private isMobileBreakpoint = false;\n private isLarge = false;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private el = inject(ElementRef);\n private renderer = inject(Renderer2);\n private eclMegaMenuDataService = inject(EclMegaMenuDataService);\n private eclHeaderMenuComunicationService = inject(EclHeaderMenuComunicationService);\n private eclMegaMenuService = inject(EclMegaMenuService);\n private readonly doc = inject(DOCUMENT);\n private readonly window = this.doc.defaultView; // Window | null\n private appShellService = inject(EuiAppShellService);\n\n constructor() {\n super();\n\n afterNextRender(() => {\n this.eclMegaMenuDataService.eclMegaMenuInfoBottomYSubject$.pipe(takeUntil(this.destroy$)).subscribe(value => {\n this.calculateSublistStyle(value);\n });\n const menuLink = this.menuLink();\n if (menuLink) {\n this.eclMegaMenuService.setExtraAttributesForLink(menuLink.el.nativeElement, this.linkExtraAttributes());\n }\n this.observeBreakpointChanges();\n this.observeResizeWindow();\n });\n }\n\n ngAfterContentInit(): void {\n const sublist = this.eclMegaMenuSublist();\n if (sublist) {\n outputToObservable(sublist.megaMenuSubItemClicked).pipe(takeUntil(this.destroy$)).subscribe(() => {\n if (!this.isExpanded()) {\n return;\n }\n if (!this.isMobileBreakpoint) {\n // Only hide/show the level-2 panel when switching sub-items\n const expandedSubItem = this.eclMegaMenuSublist().submenuItems().find(\n item => item.hasChildren && item.isExpanded()\n );\n const megaMenuLevel2 = expandedSubItem?.megaMenuLevel2();\n if (expandedSubItem && megaMenuLevel2) {\n megaMenuLevel2.nativeElement.style.opacity = '0';\n }\n }\n setTimeout(() => this.checkDropdownHeight(false), 100);\n });\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Reflects whether this item has a submenu/container. Evaluated lazily during\n * change detection (not at construction) so the content-query signals are\n * resolved before it is read.\n */\n get hasPopup(): true | null {\n return this.hasChildren ? true : null;\n }\n\n get hasNoInfo(): boolean {\n return !this.eclMegaMenuInfo();\n }\n\n get hasChildren(): boolean {\n return !!this.eclMegaMenuSublist() || !!this.eclMegaMenuContainer();\n }\n\n get hasSublist(): boolean {\n return !!this.eclMegaMenuSublist();\n }\n\n get hasFeatured(): boolean {\n return !!this.eclMegaMenuFeatured();\n }\n\n get hasContainer(): boolean {\n return !!this.eclMegaMenuContainer();\n }\n\n /**\n * Set the focus on the sub element - link or button.\n */\n onFocus(): void {\n const menuLink = this.menuLink();\n const menuBtn = this.menuBtn();\n if (menuLink) {\n menuLink.onFocus();\n } else if (menuBtn) {\n menuBtn.onFocus();\n }\n }\n\n /**\n * Manage styling and functionality for children and siblings, when item is clicked.\n */\n onMegaMenuItemClick(): void {\n if (this.hasChildren) {\n this.isCurrent.set(!this.isCurrent());\n this.isExpanded.set(!this.isExpanded());\n const eclMegaMenuSublist = this.eclMegaMenuSublist();\n if (eclMegaMenuSublist) {\n eclMegaMenuSublist.onParentMegaMenuItemClick(this.isExpanded());\n }\n if (this.isExpanded()) {\n this.eclHeaderMenuComunicationService.updateExpanded(this.isExpanded());\n this.hidePanels();\n setTimeout(() => {\n this.checkDropdownHeight();\n this.calculateWrapperStyle();\n }, 100);\n } else {\n this.eclHeaderMenuComunicationService.updateExpanded(this.isExpanded());\n this.resetComputedHeights();\n }\n } else {\n this.eclHeaderMenuComunicationService.updateExpanded(this.isExpanded());\n }\n this.megaMenuItemClicked.emit();\n }\n\n /**\n * Manage styling and functionality when item is collapsed.\n */\n onMegaMenuItemCollapse(): void {\n this.isCurrent.set(false);\n this.isExpanded.set(false);\n const eclMegaMenuSublist = this.eclMegaMenuSublist();\n if (eclMegaMenuSublist) {\n eclMegaMenuSublist.onParentMegaMenuItemClick(this.isExpanded());\n }\n this.resetComputedHeights();\n }\n\n onKeydown(evt: Event): void {\n if (evt instanceof KeyboardEvent) {\n if ((evt as KeyboardEvent).key === KeyCode.TAB && !(evt as KeyboardEvent).shiftKey) {\n // if menu is open, navigate to children\n } else {\n this.megaMenuItemKeydown.emit(evt as KeyboardEvent);\n }\n }\n }\n\n /**\n * On resize - calculate the size of the dropdown and wrapper (if item is expanded).\n */\n private observeResizeWindow(): void {\n if (this.window) {\n fromEvent(this.window, 'resize').pipe(\n auditTime(50),\n takeUntil(this.destroy$)).subscribe(() => {\n setTimeout(() => {\n if (this.isExpanded()) {\n this.checkDropdownHeight();\n this.calculateWrapperStyle();\n } else {\n // Even when not expanded, reset computed heights on resize\n // so stale desktop values don't persist into tablet/mobile layout\n this.resetComputedHeights();\n }\n });\n });\n }\n }\n\n private calculateSublistStyle(bottomInfo: number): void {\n const eclMegaMenuSublist = this.eclMegaMenuSublist();\n if (this.isMobileBreakpoint && eclMegaMenuSublist) {\n const availableHeight = this.window.innerHeight - bottomInfo - 16;\n eclMegaMenuSublist.styleTop.set(availableHeight);\n }\n }\n\n private calculateWrapperStyle(): void {\n if (!this.isMobileBreakpoint) {\n const height = this.el.nativeElement.getBoundingClientRect().height;\n this.wrapperStyleTop.set(height);\n }\n }\n\n private resetWrapperStyle(): void {\n if (this.isMobileBreakpoint) {\n this.wrapperStyleHeight.set(null);\n this.wrapperStyleTop.set(null);\n }\n }\n\n /**\n * Resets all computed pixel heights on the info panel, mega panel, and wrapper.\n * Called when the viewport changes breakpoint so that stale desktop values\n * (e.g. info height of 227px) don't persist into tablet/mobile layout where\n * the elements should flow naturally.\n */\n private resetComputedHeights(): void {\n const eclMegaMenuInfo = this.eclMegaMenuInfo();\n if (eclMegaMenuInfo) {\n eclMegaMenuInfo.eclMegaMenuInfoStyleHeight.set(null);\n eclMegaMenuInfo.eclMegaMenuInfoStyleOpacity.set(null);\n }\n this.megaMenuMegaStyleHeight.set(null);\n this.megaMenuMegaStyleOpacity.set(null);\n this.wrapperStyleHeight.set(null);\n this.wrapperStyleTop.set(null);\n this.containerStyleHeight.set(null);\n\n // Reset featured panel height\n const eclMegaMenuFeatured = this.eclMegaMenuFeatured();\n if (eclMegaMenuFeatured) {\n eclMegaMenuFeatured.eclMegaMenuFeaturedStyleHeight.set(null);\n }\n\n // Reset sublist and sub-items heights\n const eclMegaMenuSublist = this.eclMegaMenuSublist();\n if (eclMegaMenuSublist) {\n eclMegaMenuSublist.styleHeight.set(null);\n eclMegaMenuSublist.styleTop.set(null);\n eclMegaMenuSublist.isScrollable.set(false);\n\n // Reset level-2 heights on each subitem\n eclMegaMenuSublist.submenuItems()?.forEach(subItem => {\n subItem.level2StyleHeight.set(null);\n const eclMegaMenuFeatured = subItem.eclMegaMenuFeatured();\n if (eclMegaMenuFeatured) {\n eclMegaMenuFeatured.eclMegaMenuFeaturedStyleHeight.set(null);\n }\n });\n }\n }\n\n private hidePanels(): void {\n if (this.isMobileBreakpoint) {\n return;\n }\n if (this.eclMegaMenuMega()) {\n this.megaMenuMegaStyleOpacity.set(0);\n }\n const eclMegaMenuInfo = this.eclMegaMenuInfo();\n if (eclMegaMenuInfo) {\n eclMegaMenuInfo.eclMegaMenuInfoStyleOpacity.set(0);\n }\n }\n\n /**\n * On mobile, calculate the height of the mega panel (level 1).\n * - If the item has a featured panel: set height on the mega div (.ecl-mega-menu__mega--has-featured)\n * - If no featured, panel 1: height is set on the sublist\n * - If no featured, panel 2: height is set on the level-2 div\n */\n private calculateMobileHeight(): void {\n const eclMegaMenuMega = this.eclMegaMenuMega();\n if (!this.isMobileBreakpoint || !eclMegaMenuMega) {\n return;\n }\n const eclMegaMenuSublistValue = this.eclMegaMenuSublist();\n if (this.hasFeatured) {\n // Has featured → set height on the mega div, no scrollable on sublist\n const megaRect = eclMegaMenuMega.nativeElement.getBoundingClientRect();\n const megaTop = megaRect.top;\n this.megaMenuMegaStyleHeight.set(this.window.innerHeight - megaTop);\n const eclMegaMenuSublist = this.eclMegaMenuSublist();\n if (eclMegaMenuSublist) {\n eclMegaMenuSublist.isScrollable.set(false);\n eclMegaMenuSublist.styleHeight.set(null);\n }\n } else if (eclMegaMenuSublistValue) {\n this.megaMenuMegaStyleHeight.set(null);\n\n // Check if a sub-item with children is expanded (panel 2)\n const expandedSubItem = eclMegaMenuSublistValue.submenuItems().find(\n item => item.hasChildren && item.isExpanded()\n );\n\n const megaMenuLevel2 = expandedSubItem?.megaMenuLevel2();\n if (expandedSubItem && megaMenuLevel2) {\n // No featured, panel 2 → set height on the level-2 div\n const subMegaRect = megaMenuLevel2.nativeElement.getBoundingClientRect();\n const subMegaTop = subMegaRect.top;\n expandedSubItem.level2StyleHeight.set(this.window.innerHeight - subMegaTop);\n // Clear sublist height and scrollable since panel 2 is now showing\n eclMegaMenuSublistValue.isScrollable.set(false);\n eclMegaMenuSublistValue.styleHeight.set(null);\n } else {\n // No featured, panel 1 → set height on the sublist\n const sublistRect = eclMegaMenuSublistValue.el.nativeElement.getBoundingClientRect();\n const sublistTop = sublistRect.top;\n eclMegaMenuSublistValue.styleHeight.set(this.window.innerHeight - sublistTop);\n eclMegaMenuSublistValue.isScrollable.set(true);\n }\n } else {\n this.megaMenuMegaStyleHeight.set(null);\n }\n }\n\n private checkDropdownHeight(hide = true): void {\n if (this.isMobileBreakpoint) {\n this.calculateMobileHeight();\n return;\n }\n\n if (hide) {\n this.hidePanels();\n }\n let infoPanelHeight = 0;\n const eclMegaMenuInfo = this.eclMegaMenuInfo();\n if (eclMegaMenuInfo) {\n eclMegaMenuInfo.eclMegaMenuInfoStyleHeight.set(null);\n }\n\n const heights = [];\n let height = 0;\n let itemsHeight = 0;\n let subItemsHeight = 0;\n let featuredHeight = 0;\n let featuredHeight2 = 0;\n\n if (this.hasContainer) {\n const viewportHeight = this.window.innerHeight;\n const mainTop = this.mainPanel().nativeElement.getBoundingClientRect().top;\n this.containerStyleHeight.set(viewportHeight - mainTop);\n } else {\n if (eclMegaMenuInfo) {\n infoPanelHeight = eclMegaMenuInfo.getInfoPanelScrollHeight() + 16;\n if (this.isLarge) {\n heights.push(infoPanelHeight);\n } else {\n subItemsHeight = infoPanelHeight;\n featuredHeight = infoPanelHeight;\n }\n eclMegaMenuInfo.eclMegaMenuInfoStyleOpacity.set(1);\n }\n\n const eclMegaMenuMega = this.eclMegaMenuMega();\n if (eclMegaMenuMega) {\n const eclMegaMenuSublist = this.eclMegaMenuSublist();\n if (eclMegaMenuSublist && eclMegaMenuSublist.submenuItems().length > 0) {\n if (this.isOneLevelOnly()) {\n itemsHeight = eclMegaMenuSublist.el.nativeElement.offsetHeight;\n } else {\n eclMegaMenuSublist.submenuItems().forEach((item) => {\n itemsHeight += item.getMegaMenuSubItemHeight();\n });\n if (eclMegaMenuSublist.spacer()) {\n itemsHeight += 25;\n }\n }\n heights.push(itemsHeight);\n }\n const expandedSubItem = eclMegaMenuSublist.submenuItems().find(item => item.hasChildren && item.isExpanded());\n if (expandedSubItem !== undefined) {\n const eclMegaMenuFeatured = expandedSubItem.eclMegaMenuFeatured();\n expandedSubItem.submenu().submenuItems().forEach(item => {\n subItemsHeight += item.getMegaMenuSubItemHeight();\n });\n heights.push(subItemsHeight);\n if (eclMegaMenuFeatured) {\n featuredHeight += eclMegaMenuFeatured.getEclMegaMenuFeaturedHeight();\n featuredHeight += 5;\n heights.push(featuredHeight);\n }\n }\n\n const eclMegaMenuFeaturedValue = this.eclMegaMenuFeatured();\n if (eclMegaMenuFeaturedValue) {\n featuredHeight2 = eclMegaMenuFeaturedValue.getEclMegaMenuFeaturedHeight();\n heights.push(featuredHeight2);\n }\n const maxHeight = Math.max(...heights);\n const containerBounding = this.el.nativeElement.getBoundingClientRect();\n const containerBottom = containerBounding.bottom;\n // By requirements, limit the height to the 70% of the available space.\n const availableHeight = (this.window.innerHeight - containerBottom) * 0.9;\n if (maxHeight > availableHeight) {\n height = availableHeight;\n } else {\n height = maxHeight;\n }\n\n let wrapperStyleHeight = eclMegaMenuMega && eclMegaMenuInfo && !this.isLarge ?\n height + infoPanelHeight : height;\n if (wrapperStyleHeight > availableHeight) wrapperStyleHeight = availableHeight;\n this.wrapperStyleHeight.set(wrapperStyleHeight);\n if (eclMegaMenuMega && this.isLarge) {\n this.megaMenuMegaStyleHeight.set(height);\n } else if (eclMegaMenuMega && eclMegaMenuInfo) {\n this.megaMenuMegaStyleHeight.set(wrapperStyleHeight - infoPanelHeight);\n }\n if (eclMegaMenuInfo && this.isLarge) {\n eclMegaMenuInfo.eclMegaMenuInfoStyleHeight.set(height);\n }\n\n if (expandedSubItem !== undefined) {\n if (this.isLarge) {\n expandedSubItem.level2StyleHeight.set(height);\n } else {\n expandedSubItem.level2StyleHeight.set(height - infoPanelHeight);\n }\n\n const megaMenuLevel2 = expandedSubItem.megaMenuLevel2();\n if (megaMenuLevel2) {\n megaMenuLevel2.nativeElement.style.opacity = '1';\n }\n\n const expandedSubItemFeatured = expandedSubItem.eclMegaMenuFeatured();\n if (expandedSubItemFeatured) {\n if (this.isLarge) {\n expandedSubItemFeatured.eclMegaMenuFeaturedStyleHeight.set(height);\n } else {\n expandedSubItemFeatured.eclMegaMenuFeaturedStyleHeight.set(height - infoPanelHeight);\n }\n }\n }\n if (eclMegaMenuFeaturedValue) {\n if (this.isLarge) {\n eclMegaMenuFeaturedValue.eclMegaMenuFeaturedStyleHeight.set(height);\n } else {\n eclMegaMenuFeaturedValue.eclMegaMenuFeaturedStyleHeight.set(wrapperStyleHeight - infoPanelHeight);\n }\n }\n this.megaMenuMegaStyleOpacity.set(1);\n }\n }\n }\n\n private observeBreakpointChanges(): void {\n this.appShellService.state$\n .pipe(\n map((state) => {\n const w = state.windowWidth ?? 0;\n const bp = state.breakpoints;\n return {\n // ECL uses breakpointDesktop = 1140px. Everything below that\n // (xs/sm/md/lg) must use mobile behavior. isLtLargeTablet covers this range.\n isMobile: !!(bp?.isLtLargeTablet),\n isLarge: w >= 1368,\n };\n }),\n distinctUntilChanged(\n (a, b) => a.isMobile === b.isMobile && a.isLarge === b.isLarge\n ),\n takeUntil(this.destroy$),\n )\n .subscribe(({ isMobile, isLarge }) => {\n const wasMobile = this.isMobileBreakpoint;\n const wasLarge = this.isLarge;\n this.isMobileBreakpoint = isMobile;\n this.isLarge = isLarge;\n this.resetWrapperStyle();\n\n // When breakpoint changes, reset all computed heights so they don't\n // carry over stale pixel values from the previous layout mode.\n if (wasMobile !== isMobile || wasLarge !== isLarge) {\n this.resetComputedHeights();\n\n // If transitioning between mobile/desktop while expanded,\n // recalculate with new layout dimensions\n if (this.isExpanded()) {\n setTimeout(() => {\n this.checkDropdownHeight();\n this.calculateWrapperStyle();\n }, 100);\n }\n }\n });\n }\n}\n","@if (hasChildren) {\n<button #menuBtn eclButton variant=\"primary\" class=\"ecl-mega-menu__link\" (click)=\"onMegaMenuItemClick()\"\n (keydown)=\"onKeydown($event)\">\n <span eclButtonLabel>{{label()}}</span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-90\" size=\"2xs\"></ecl-icon>\n <ecl-icon icon=\"arrow-left\" transform=\"flip-horizontal\" size=\"s\"></ecl-icon>\n</button>\n} @else if (href()) {\n<a eclLink #menuLink variant=\"standalone\" [href]=\"href()\" [target]=\"target()\" class=\"ecl-mega-menu__link\"\n (keydown)=\"onKeydown($event)\" (click)=\"onMegaMenuItemClick()\">\n <span eclLinkLabel>{{label()}}</span>\n</a>\n} @else {\n<a eclLink #menuLink variant=\"standalone\" [attr.tabindex]=\"tabindex || 0\" [routerLink]=\"routerLink()\"\n [queryParams]=\"queryParams()\" [queryParamsHandling]=\"queryParamsHandling()\" class=\"ecl-mega-menu__link\"\n (keydown)=\"onKeydown($event)\" (click)=\"onMegaMenuItemClick()\">\n <span eclLinkLabel>{{label()}}</span>\n</a>\n}\n\n@if (hasSublist) {\n<div class=\"ecl-mega-menu__wrapper\" [style.height.px]=\"wrapperStyleHeight()\" [style.top.px]=\"wrapperStyleTop()\">\n <div class=\"ecl-container\">\n <ng-content select=\"[eclMegaMenuInfo]\"></ng-content>\n <div #eclMegaMenuMega class=\"ecl-mega-menu__mega\" [class.ecl-mega-menu__mega--no-info]=\"hasNoInfo\"\n [class.ecl-mega-menu__mega--has-featured]=\"hasFeatured\" [style.height.px]=\"megaMenuMegaStyleHeight()\"\n [style.opacity]=\"megaMenuMegaStyleOpacity()\">\n <ng-content select=\"[eclMegaMenuSublist]\"></ng-content>\n <ng-content select=\"[eclMegaMenuFeatured]\"></ng-content>\n </div>\n </div>\n</div>\n}\n\n@if (hasContainer) {\n<div #mainPanel class=\"ecl-mega-menu__mega ecl-mega-menu__mega-container\">\n <div class=\"ecl-container\" [style.height.px]=\"containerStyleHeight()\">\n <div class=\"ecl-mega-menu__mega-container-scrollable\">\n <ng-content select=\"[eclMegaMenuContainer]\"></ng-content>\n </div>\n </div>\n</div>\n}","import { Component, DOCUMENT, DoCheck, ElementRef, IterableDiffer, IterableDiffers, OnDestroy, Renderer2, afterNextRender, computed, forwardRef, inject, output, signal, contentChildren } from '@angular/core';\nimport { outputToObservable } from '@angular/core/rxjs-interop';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { auditTime, fromEvent, Subject, takeUntil } from 'rxjs';\nimport { ECLClickOutsideDirective, EclRtlService } from '@eui/ecl/core';\nimport { EuiAppShellService } from '@eui/core';\nimport { KeyCode } from '@eui/ecl/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclMegaMenuItem } from './models/ecl-mega-menu-item.model';\nimport { EclMegaMenuDataService } from './services/ecl-mega-menu-data.service';\nimport { EclMegaMenuItemComponent } from './ecl-mega-menu-item/ecl-mega-menu-item.component';\nimport { EclHeaderMenuComunicationService } from '@eui/ecl/shared';\nimport { EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\n\n/**\n * The 'eclMegaMenu' is an advanced navigation component designed for complex sites with deep hierarchies.\n * It can provide descriptive text for first level items, accommodate up to three levels of navigation,\n * and additionally allows a featured column that can be used to either promote parent-page specific or site-wide pages,\n * hidden deep into the lower levels of the hierarchy.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'nav[eclMegaMenu]',\n templateUrl: './ecl-mega-menu.component.html',\n imports: [TranslatePipe, ...EUI_ECL_BUTTON, ...EUI_ECL_ICON],\n host: {\n role: 'navigation',\n '[class]': 'cssClasses()',\n '[attr.data-expanded]': 'expandedAttr()',\n '(eclClickOutside)': 'onClickOutsideMegaMenu()',\n },\n hostDirectives: [\n {\n directive: ECLBaseDirective,\n },\n {\n directive: ECLClickOutsideDirective,\n\n outputs: ['eclClickOutside'],\n },\n ],\n})\n\nexport class EclMegaMenuComponent extends ECLBaseDirective implements DoCheck, OnDestroy {\n\n /**\n * The event that is emitted, when a menu item is selected.\n */\n readonly megaMenuItemSelect = output<EclMegaMenuItem>();\n\n readonly isExpanded = signal(false);\n /**\n * If the menu is in mobile mode.\n */\n readonly isMobileBreakpoint = signal(false);\n /**\n * If the menu is expanded in mobile mode.\n */\n readonly isMobileExpanded = signal(false);\n /**\n * When a menu item is expanded and has only one panel (one sub-level).\n */\n readonly isOnePanel = signal(false);\n /**\n * If the menu is open, when in mobile mode.\n */\n readonly isOpenMobile = signal(false); // used for mobile only\n /**\n * Used in mobile mode - when the start panel is open (i.e. the hamburger button is clicked).\n */\n readonly isStartPanel = signal(false);\n /**\n * If a menu item is expanded and has two panels/levels displayed.\n */\n readonly isTwoPanels = signal(false);\n /**\n * Used to position the overlay, when a menu item is expanded.\n */\n readonly overlayStyleTop = signal<number | null>(null);\n readonly innerStyleTop = signal<number | null>(null);\n\n /** Adds the relative class to the component, when a submenu is opened and this submenu has a featured component child */\n readonly hasSecondaryFeatured = signal(false);\n\n /**\n * Represents the current viewport breakpoint states.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n breakpointsValue: any = {\n isMobile: false,\n isTablet: false,\n isLtDesktop: false,\n isDesktop: false,\n isXL: false,\n isXXL: false,\n };\n\n protected readonly menuItems = contentChildren(forwardRef(() => EclMegaMenuItemComponent), { descendants: true });\n\n protected readonly cssClasses = computed<string>(() =>\n [\n super.getCssClasses('ecl-mega-menu'),\n this.isTwoPanels() ? 'ecl-mega-menu--two-panels' : '',\n this.isOnePanel() ? 'ecl-mega-menu--one-panel' : '',\n this.isRtl() ? 'ecl-mega-menu--rtl' : '',\n this.isTablet() ? 'ecl-mega-menu--forced-mobile' : '',\n this.isStartPanel() ? 'ecl-mega-menu--start-panel' : '',\n this.hasSecondaryFeatured() ? 'ecl-mega-menu--has-secondary-featured' : '',\n ].join(' '));\n\n protected readonly expandedAttr = computed<'true' | null>(() => this.isExpanded() ? 'true' : null);\n\n private readonly isRtl = signal(false);\n private readonly isTablet = signal(false);\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private differ: IterableDiffer<EclMegaMenuItemComponent>;\n private parentHeaderBottomSpaceY: number;\n private differs = inject(IterableDiffers);\n private eclRtlService = inject(EclRtlService);\n private euiAppShellService = inject(EuiAppShellService);\n private eclHeaderMenuComunicationService = inject(EclHeaderMenuComunicationService);\n private eclMegaMenuDataService = inject(EclMegaMenuDataService);\n private el = inject(ElementRef);\n private renderer = inject(Renderer2);\n private readonly document = inject<Document>(DOCUMENT);\n private readonly window = this.document.defaultView;\n\n constructor() {\n super();\n this.differ = this.differs.find([]).create();\n afterNextRender(() => {\n this.subscribeToAppShellBreakpoints();\n this.handleRtlChangeState();\n this.subscribeToEvents();\n this.observeResizeWindow();\n });\n }\n\n ngDoCheck(): void {\n // For each added menu item - subscribe to item events.\n const diff = this.differ.diff(this.menuItems());\n if (diff) {\n diff.forEachItem((item) => {\n this.connectMegaMenuItemEvents(item.item);\n });\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Returns true when the viewport is below the ECL desktop breakpoint (1140px).\n * This covers both mobile (xs/sm) and tablet (md/lg) ranges where the menu\n * should behave in mobile/hamburger mode, matching ECL's breakpointDesktop = 1140.\n */\n get isMobileOrTablet(): boolean {\n return this.isMobileBreakpoint() || this.isTablet();\n }\n\n /**\n * When clicking outside the menu - close any expanded item.\n */\n onClickOutsideMegaMenu(): void {\n if (this.isExpanded()) {\n this.closeMenuAndAnyOpenSubMenu();\n }\n }\n\n onMegaMenuMobileOpen(): void {\n if (this.isOpenMobile()) {\n this.onMegaMenuMobileClose();\n } else {\n this.disableScroll();\n this.isExpanded.set(true);\n this.isOnePanel.set(false);\n this.isTwoPanels.set(false);\n\n if (this.isMobileOrTablet) {\n this.isStartPanel.set(true);\n this.isMobileExpanded.set(true);\n }\n this.isOpenMobile.set(true);\n\n this.eclHeaderMenuComunicationService.updateOpen(true);\n\n // Focus first element\n if (this.menuItems().length > 0) {\n this.menuItems().at(0)!.onFocus();\n }\n }\n }\n\n onMegaMenuMobileClose(): void {\n this.enableScroll();\n\n // Collapse any expanded menu item (and its sub-items) so that\n // reopening the menu always shows the top-level list cleanly.\n const expandedItem = this.menuItems()?.find(item => item.isExpanded());\n if (expandedItem) {\n expandedItem.onMegaMenuItemCollapse();\n }\n\n this.hasSecondaryFeatured.set(false);\n this.collapseMenu();\n\n if (this.isMobileOrTablet) {\n this.isStartPanel.set(false);\n this.isMobileExpanded.set(false);\n }\n this.isOpenMobile.set(false);\n }\n\n /**\n * Used for mobile menu - when user clicks on 'Back' button. Returns to the previous state.\n */\n onMegaMenuBack(): void {\n if (this.isOnePanel()) {\n this.onMegaMenuBackToStartPanel();\n } else if (this.isTwoPanels()) {\n this.onMegaMenuBackToOnePanel();\n }\n }\n\n positionMenuOverlay(parentHeaderBottomSpaceY): void {\n this.parentHeaderBottomSpaceY = parentHeaderBottomSpaceY;\n if (this.isMobileOrTablet && parentHeaderBottomSpaceY) {\n this.overlayStyleTop.set(parentHeaderBottomSpaceY);\n this.innerStyleTop.set(parentHeaderBottomSpaceY);\n } else {\n if (this.parentHeaderBottomSpaceY) {\n this.overlayStyleTop.set(parentHeaderBottomSpaceY);\n } else {\n const menuBottomY = this.el.nativeElement.getBoundingClientRect().bottom;\n this.overlayStyleTop.set(menuBottomY);\n }\n }\n }\n\n private onMegaMenuBackToOnePanel(): void {\n\n this.isStartPanel.set(false);\n this.isTwoPanels.set(false);\n this.isOnePanel.set(true);\n const currentItem = this.menuItems().find(item => item.isExpanded());\n const currentSubItem = currentItem.eclMegaMenuSublist().submenuItems().find(item => item.isExpanded());\n this.hasSecondaryFeatured.set(false);\n if (this.isMobileOrTablet) {\n currentItem.eclMegaMenuSublist().submenuItems().filter(item => !item.isExpanded()).forEach(el => {\n el.onShow();\n });\n }\n currentSubItem.isCurrent.set(false);\n currentSubItem.isExpanded.set(false);\n }\n\n private onMegaMenuBackToStartPanel(): void {\n this.isOnePanel.set(false);\n this.isStartPanel.set(true);\n const currentItem = this.menuItems().find(item => item.isExpanded());\n currentItem.isCurrent.set(false);\n currentItem.isExpanded.set(false);\n this.eclHeaderMenuComunicationService.updateExpanded(false);\n }\n\n private subscribeToEvents(): void {\n\n this.eclMegaMenuDataService.eclSubItemExpanded$.pipe(takeUntil(this.destroy$)).subscribe(isExpanded => {\n this.isTwoPanels.set(isExpanded);\n this.isOnePanel.set(!isExpanded);\n this.isStartPanel.set(false);\n });\n\n this.eclMegaMenuDataService.eclSubItemClicked$.pipe(takeUntil(this.destroy$)).subscribe(item => {\n this.onSubMenuItemClicked(item);\n this.megaMenuItemSelect.emit(item);\n });\n\n this.eclMegaMenuDataService.eclSubItemEscape$.pipe(takeUntil(this.destroy$)).subscribe(item => {\n this.closeMenuAndAnyOpenSubMenu();\n });\n }\n\n private connectMegaMenuItemEvents(item: EclMegaMenuItemComponent): void {\n outputToObservable(item.megaMenuItemClicked).pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.onMegaMenuItemClicked(item);\n });\n\n outputToObservable(item.megaMenuItemKeydown).pipe(takeUntil(this.destroy$)).subscribe((evt: KeyboardEvent) => {\n this.onMegaMenuItemKeydown(item, evt);\n });\n }\n\n private onMegaMenuItemClicked(item: EclMegaMenuItemComponent): void {\n this.hasSecondaryFeatured.set(false);\n this.menuItems().filter(megaItem => megaItem !== item).forEach(item => item.onMegaMenuItemCollapse());\n if (item.hasChildren) {\n if (item.isExpanded()) {\n if (this.isMobileOrTablet) {\n this.isOnePanel.set(true);\n this.isTwoPanels.set(false);\n this.isStartPanel.set(false);\n } else {\n if (item.eclMegaMenuSublist()?.submenuItems().at(0)!.hasChildren) {\n this.isOnePanel.set(false);\n this.isTwoPanels.set(true);\n } else {\n this.isOnePanel.set(true);\n this.isTwoPanels.set(false);\n }\n }\n this.positionMenuOverlay(this.parentHeaderBottomSpaceY);\n this.isExpanded.set(true);\n this.disableScroll();\n } else {\n this.collapseMenu();\n }\n } else {\n this.collapseMenu();\n }\n this.megaMenuItemSelect.emit(item as unknown as EclMegaMenuItem);\n }\n\n private onMegaMenuItemKeydown(item: EclMegaMenuItemComponent, evt: KeyboardEvent): void {\n\n const itemIndex = this.menuItems().findIndex(elem => elem === item);\n switch (evt.key) {\n case KeyCode.ARROW_DOWN: {\n evt.preventDefault();\n this.focusOnNextSibling(itemIndex);\n break;\n }\n case KeyCode.ARROW_UP: {\n evt.preventDefault();\n this.focusOnPrevSibling(itemIndex);\n break;\n }\n case KeyCode.ARROW_LEFT: {\n evt.preventDefault();\n this.focusOnPrevSibling(itemIndex);\n break;\n }\n case KeyCode.ARROW_RIGHT: {\n evt.preventDefault();\n this.focusOnNextSibling(itemIndex);\n break;\n }\n case KeyCode.ESCAPE: {\n this.closeMenuAndAnyOpenSubMenu();\n break;\n }\n default: {\n break;\n }\n }\n }\n\n private onSubMenuItemClicked(item: EclMegaMenuItem): void {\n if (item.isExpanded() && item.hasFeatured) {\n this.hasSecondaryFeatured.set(true);\n } else {\n this.hasSecondaryFeatured.set(false);\n }\n if (!item.hasChildren) {\n this.closeMenuAndAnyOpenSubMenu();\n }\n }\n\n private closeMenuAndAnyOpenSubMenu(): void {\n if (this.isExpanded()) {\n const expandedItem = this.menuItems().find(item => item.isExpanded());\n if (expandedItem !== undefined) {\n expandedItem.onMegaMenuItemCollapse();\n }\n this.collapseMenu();\n }\n }\n\n private collapseMenu(): void {\n this.isExpanded.set(false);\n this.isTwoPanels.set(false);\n this.isOnePanel.set(false);\n this.enableScroll();\n this.eclHeaderMenuComunicationService.updateExpanded(false);\n }\n\n private focusOnPrevSibling(index: number): void {\n if (index > 0) {\n this.menuItems().at(index-1).onFocus();\n }\n }\n\n private focusOnNextSibling(index: number): void {\n if (index < this.menuItems().length - 1) {\n this.menuItems().at(index+1).onFocus();\n }\n }\n\n private subscribeToAppShellBreakpoints(): void {\n this.euiAppShellService.breakpoints$\n .pipe(takeUntil(this.destroy$))\n .subscribe((bkps: any) => {\n this.breakpointsValue = bkps ?? this.breakpointsValue;\n\n if (typeof bkps?.isMobile !== 'undefined' || typeof bkps?.isTablet !== 'undefined') {\n this.isMobileBreakpoint.set(!!bkps.isMobile);\n // ECL uses breakpointDesktop = 1140px. Everything below that threshold\n // (md: 768-995px AND lg: 996-1139px) must use mobile/hamburger behavior.\n // isLtLargeTablet covers xs/sm/md/lg (i.e. < 1140px).\n this.isTablet.set(!!(bkps.isLtLargeTablet && !bkps.isMobile));\n return;\n }\n\n if (typeof bkps?.width === 'number') {\n const w = bkps.width;\n this.isMobileBreakpoint.set(w <= 415);\n this.isTablet.set(w > 415 && w < 1140);\n return;\n }\n\n if (bkps && typeof bkps === 'object') {\n this.isMobileBreakpoint.set(!!(bkps.Handset || bkps.Small || bkps.mobile));\n this.isTablet.set(!!(bkps.Tablet || bkps.tablet));\n return;\n }\n });\n }\n\n private handleRtlChangeState(): void {\n this.eclRtlService.currentRtlState$.pipe(takeUntil(this.destroy$)).subscribe((rtlState) => {\n if (rtlState !== undefined) {\n this.isRtl.set(rtlState);\n }\n });\n }\n\n private disableScroll(): void {\n this.renderer.addClass(this.document.body, 'ecl-mega-menu-prevent-scroll');\n }\n\n private enableScroll(): void {\n this.renderer.removeClass(this.document.body, 'ecl-mega-menu-prevent-scroll');\n }\n\n /**\n * On resize - reposition the overlay and recalculate inner top when the menu is expanded.\n * Mirrors ECL's handleResize behavior that calls positionMenuOverlay() on every resize.\n */\n private observeResizeWindow(): void {\n if (this.window) {\n fromEvent(this.window, 'resize').pipe(\n auditTime(200),\n takeUntil(this.destroy$),\n ).subscribe(() => {\n if (this.isExpanded()) {\n this.positionMenuOverlay(this.parentHeaderBottomSpaceY);\n }\n });\n }\n }\n}\n","<div class=\"ecl-mega-menu__overlay\" [style.top.px]=\"overlayStyleTop()\"></div>\n<div class=\"ecl-container ecl-mega-menu__container\">\n <button class=\"ecl-button ecl-button--tertiary ecl-mega-menu__open ecl-button--icon-only\"\n type=\"button\" [attr.aria-expanded]=\"isMobileExpanded()\" (click)=\"onMegaMenuMobileOpen()\">\n <ecl-icon icon=\"hamburger\" size=\"m\"></ecl-icon>\n <ecl-icon icon=\"close\" size=\"m\"></ecl-icon>\n <span class=\"ecl-button__label\">{{ (isOpenMobile() ? 'ecl.common.CLOSE' : 'ecl.menu.MENU') | translate }}</span>\n </button>\n <section class=\"ecl-mega-menu__inner\" [class.ecl-mega-menu__inner--expanded]=\"!isStartPanel() && isExpanded()\"\n aria-label=\"ecl mega menu\" [style.top.px]=\"innerStyleTop()\">\n <header class=\"ecl-mega-menu__inner-header\">\n <button eclButton variant=\"tertiary\" eclStyle=\"neutral\" class=\"ecl-mega-menu__back\" type=\"submit\" (click)=\"onMegaMenuBack()\">\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-270\"></ecl-icon>\n <span eclButtonLabel>Back</span>\n </button>\n </header>\n <ng-content></ng-content>\n </section>\n</div>","import { EclMegaMenuContainerDirective } from './directives/ecl-mega-menu-container.directive';\nimport { EclMegaMenuFeaturedListDirective, EclMegaMenuFeaturedListItemDescriptionDirective, EclMegaMenuFeaturedListItemDirective } from './directives/ecl-mega-menu-featured-list.directive';\nimport { EclMegaMenuFeaturedImageDirective, EclMegaMenuFeaturedPictureDirective } from './directives/ecl-mega-menu-featured-picture.directive';\nimport { EclMegaMenuListDirective, EclMegaMenuSpacerDirective, EclMegaMenuSublistDirective } from './directives/ecl-mega-menu-list.directive';\nimport { EclMegaMenuFeaturedComponent } from './ecl-mega-menu-featured/ecl-mega-menu-featured.component';\nimport { EclMegaMenuInfoComponent } from './ecl-mega-menu-info/ecl-mega-menu-info.component';\nimport { EclMegaMenuItemComponent } from './ecl-mega-menu-item/ecl-mega-menu-item.component';\nimport { EclMegaMenuSubitemComponent } from './ecl-mega-menu-subitem/ecl-mega-menu-subitem.component';\nimport { EclMegaMenuComponent } from './ecl-mega-menu.component';\n\nexport * from './directives/ecl-mega-menu-container.directive';\nexport * from './directives/ecl-mega-menu-featured-list.directive';\nexport * from './directives/ecl-mega-menu-featured-picture.directive';\nexport * from './directives/ecl-mega-menu-list.directive';\nexport * from './ecl-mega-menu-featured/ecl-mega-menu-featured.component';\nexport * from './ecl-mega-menu-info/ecl-mega-menu-info.component';\nexport * from './ecl-mega-menu-item/ecl-mega-menu-item.component';\nexport * from './ecl-mega-menu-subitem/ecl-mega-menu-subitem.component';\nexport * from './ecl-mega-menu.component';\nexport * from './models/ecl-mega-menu-item.model';\nexport * from './services/index';\n\nexport const EUI_ECL_MEGA_MENU = [\n EclMegaMenuComponent,\n EclMegaMenuItemComponent,\n EclMegaMenuSubitemComponent,\n EclMegaMenuInfoComponent,\n EclMegaMenuFeaturedComponent,\n EclMegaMenuFeaturedPictureDirective,\n EclMegaMenuFeaturedImageDirective,\n EclMegaMenuFeaturedListDirective,\n EclMegaMenuFeaturedListItemDirective,\n EclMegaMenuFeaturedListItemDescriptionDirective,\n EclMegaMenuListDirective,\n EclMegaMenuSublistDirective,\n EclMegaMenuContainerDirective,\n EclMegaMenuSpacerDirective,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["DOCUMENT","i1"],"mappings":"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"}
1
+ {"version":3,"file":"eui-ecl-components-ecl-mega-menu.mjs","sources":["../../components/ecl-mega-menu/directives/ecl-mega-menu-container.directive.ts","../../components/ecl-mega-menu/directives/ecl-mega-menu-featured-list.directive.ts","../../components/ecl-mega-menu/directives/ecl-mega-menu-featured-picture.directive.ts","../../components/ecl-mega-menu/ecl-mega-menu-featured/ecl-mega-menu-featured.component.ts","../../components/ecl-mega-menu/ecl-mega-menu-featured/ecl-mega-menu-featured.component.html","../../components/ecl-mega-menu/services/ecl-mega-menu-data.service.ts","../../components/ecl-mega-menu/services/ecl-mega-menu.service.ts","../../components/ecl-mega-menu/ecl-mega-menu-subitem/ecl-mega-menu-subitem.component.ts","../../components/ecl-mega-menu/ecl-mega-menu-subitem/ecl-mega-menu-subitem.component.html","../../components/ecl-mega-menu/directives/ecl-mega-menu-list.directive.ts","../../components/ecl-mega-menu/ecl-mega-menu-info/ecl-mega-menu-info.component.ts","../../components/ecl-mega-menu/ecl-mega-menu-info/ecl-mega-menu-info.component.html","../../components/ecl-mega-menu/ecl-mega-menu-item/ecl-mega-menu-item.component.ts","../../components/ecl-mega-menu/ecl-mega-menu-item/ecl-mega-menu-item.component.html","../../components/ecl-mega-menu/ecl-mega-menu.component.ts","../../components/ecl-mega-menu/ecl-mega-menu.component.html","../../components/ecl-mega-menu/index.ts","../../components/ecl-mega-menu/eui-ecl-components-ecl-mega-menu.ts"],"sourcesContent":["import { Directive } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive that adds specific class to the mega-menu container.\n */\n@Directive({\n selector: 'div[eclMegaMenuContainer]',\n host: {\n class: 'ecl',\n },\n})\n\nexport class EclMegaMenuContainerDirective extends ECLBaseDirective {\n}\n","import { Directive, ElementRef, inject, input, booleanAttribute } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive that adds specific class to the mega-menu featured list.\n */\n@Directive({\n selector: '[eclMegaMenuFeaturedList]',\n host: {\n class: 'ecl-mega-menu__featured-list',\n },\n})\nexport class EclMegaMenuFeaturedListDirective extends ECLBaseDirective {\n}\n\n/**\n * Directive that adds specific class to a mega-menu featured list item.\n * Also has method that returns item height.\n */\n@Directive({\n selector: '[eclMegaMenuFeaturedListItem]',\n host: {\n class: 'ecl-mega-menu__featured-list__item',\n '[class.ecl-mega-menu__featured-list__item--image-only]': 'isImageOnly()',\n '[class.ecl-mega-menu__featured-list__item--combo]': 'isCombo()',\n },\n})\nexport class EclMegaMenuFeaturedListItemDirective extends ECLBaseDirective {\n readonly isImageOnly = input(false, { transform: booleanAttribute });\n\n readonly isCombo = input(false, { transform: booleanAttribute });\n\n private el = inject(ElementRef);\n\n getEclMegaMenuFeaturedItemHeight(): number {\n const computedStyle = window.getComputedStyle(this.el.nativeElement);\n return this.el.nativeElement.scrollHeight + parseFloat(computedStyle.marginBottom) + parseFloat(computedStyle.marginTop);\n }\n}\n\n@Directive({\n selector: '[eclMegaMenuFeaturedListItemDescription]',\n host: {\n class: 'ecl-mega-menu__featured-list__item-description',\n },\n})\nexport class EclMegaMenuFeaturedListItemDescriptionDirective extends ECLBaseDirective {\n}\n","import { Directive, computed } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive that adds specific class to the mega-menu featured picture.\n */\n@Directive({\n selector: '[eclMegaMenuFeaturedPicture]',\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclMegaMenuFeaturedPictureDirective extends ECLBaseDirective {\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-picture ecl-mega-menu__featured-picture'));\n}\n\n/**\n * Directive that adds specific class to the mega-menu featured image.\n */\n@Directive({\n selector: '[eclMegaMenuFeaturedImage]',\n host: {\n class: 'ecl-mega-menu__featured-image',\n },\n})\nexport class EclMegaMenuFeaturedImageDirective extends ECLBaseDirective {\n}\n","import { Component, ElementRef, forwardRef, AfterContentInit, input, signal, viewChild, contentChildren } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclLinkDirective } from '@eui/ecl/components/ecl-link';\nimport { EclMegaMenuFeaturedListItemDirective } from '../directives/ecl-mega-menu-featured-list.directive';\n\n/**\n * This component represents the featured items panel.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'div[eclMegaMenuFeatured]',\n templateUrl: './ecl-mega-menu-featured.component.html',\n host: {\n class: 'ecl-mega-menu__featured',\n '[style.height.px]': 'eclMegaMenuFeaturedStyleHeight()',\n },\n})\n\nexport class EclMegaMenuFeaturedComponent extends ECLBaseDirective implements AfterContentInit {\n\n readonly megaMenuFeaturedScrollable = viewChild<ElementRef>('megaMenuFeaturedScrollable');\n readonly eclMegaMenuFeaturedStyleHeight = signal<number | null>(null);\n readonly title = input<string>(undefined);\n readonly titleId = input<string>(undefined);\n readonly links = contentChildren(forwardRef(() => EclLinkDirective), { descendants: true });\n readonly featuredItems = contentChildren(forwardRef(() => EclMegaMenuFeaturedListItemDirective), { descendants: true });\n ngAfterContentInit(): void {\n this.links()?.forEach(link => link.class.set('ecl-mega-menu__featured-link'));\n }\n /**\n * Calculates and returns the height of the component. The total height of all the list items.\n * @returns the height of the component\n */\n getEclMegaMenuFeaturedHeight(): number {\n let result = 0;\n this.featuredItems()?.forEach(el => result += el.getEclMegaMenuFeaturedItemHeight());\n return result;\n }\n}\n","<div class=\"ecl-mega-menu__featured-scrollable\" #megaMenuFeaturedScrollable>\n <ng-content select=\"[eclMegaMenuFeaturedPicture]\"></ng-content>\n @if(title()) {\n <span class=\"ecl-mega-menu__featured-title\" id=\"{{titleId()}}\">{{ title() }}</span>\n }\n <ng-content select=\"[eclMegaMenuFeaturedList]\"></ng-content>\n</div>","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { EclMegaMenuItem } from '../models/ecl-mega-menu-item.model';\n\n@Injectable({ providedIn: 'root' })\nexport class EclMegaMenuDataService {\n\n public eclMegaMenuInfoBottomYSubject$: Observable<number>;\n public eclSubItemExpanded$: Observable<boolean>;\n public eclSubItemClicked$: Observable<EclMegaMenuItem>;\n public eclSubItemEscape$: Observable<boolean>;\n\n private eclMegaMenuInfoBottomYSubject: Subject<number> = new Subject<number>();\n private eclSubItemExpanded: Subject<boolean> = new Subject<boolean>();\n private eclSubItemClicked: Subject<EclMegaMenuItem> = new Subject<EclMegaMenuItem>();\n private eclSubItemEscape: Subject<boolean> = new Subject<boolean>();\n\n constructor() {\n this.eclMegaMenuInfoBottomYSubject$ = this.eclMegaMenuInfoBottomYSubject.asObservable();\n this.eclSubItemExpanded$ = this.eclSubItemExpanded.asObservable();\n this.eclSubItemClicked$ = this.eclSubItemClicked.asObservable();\n this.eclSubItemEscape$ = this.eclSubItemEscape.asObservable();\n }\n\n /**\n\t * Used to synchronize size of the info panel and sublist.\n\t */\n updateEclMegaMenuInfoSize(value: number): void {\n this.eclMegaMenuInfoBottomYSubject.next(value);\n }\n\n eclSubItemToggle(isExpanded: boolean): void {\n this.eclSubItemExpanded.next(isExpanded);\n }\n\n eclSubItemClick(item: EclMegaMenuItem): void {\n this.eclSubItemClicked.next(item);\n }\n\n eclSubItemEscapeEvent(value: boolean): void {\n this.eclSubItemEscape.next(value);\n }\n}","import { Injectable, Renderer2, RendererFactory2, inject } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class EclMegaMenuService {\n private renderer: Renderer2;\n\n constructor() {\n const rendererFactory = inject(RendererFactory2);\n\n this.renderer = rendererFactory.createRenderer(null, null);\n }\n setExtraAttributesForLink(link: HTMLElement, linkExtraAttributes: Record<string, string>): void {\n if (linkExtraAttributes) {\n Object.keys(linkExtraAttributes).forEach((key) => {\n if (key !== 'href' && key !== 'routerLink') {\n this.renderer.setAttribute(link, key, linkExtraAttributes[key]);\n }\n });\n }\n }\n}","import { NgTemplateOutlet } from '@angular/common';\nimport { afterNextRender, booleanAttribute, Component, DOCUMENT, ElementRef, forwardRef, inject, computed, input, output, signal, viewChild, contentChild } from '@angular/core';\nimport { Params, QueryParamsHandling, RouterLink, RouterLinkWithHref } from '@angular/router';\nimport { EuiAppShellService } from '@eui/core';\nimport { EclButtonComponent, EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\nimport { EclLinkDirective, EUI_ECL_LINK } from '@eui/ecl/components/ecl-link';\nimport { ECLBaseDirective, KeyCode } from '@eui/ecl/core';\nimport { distinctUntilChanged, map, Subject, takeUntil } from 'rxjs';\nimport { EclMegaMenuSublistDirective } from '../directives/ecl-mega-menu-list.directive';\nimport { EclMegaMenuFeaturedComponent } from '../ecl-mega-menu-featured/ecl-mega-menu-featured.component';\nimport { EclMegaMenuItem } from '../models/ecl-mega-menu-item.model';\nimport { EclMegaMenuDataService } from '../services/ecl-mega-menu-data.service';\nimport { EclMegaMenuService } from '../services/ecl-mega-menu.service';\n\n/**\n * This component represents a sub-item in the mega-menu component. Applies styling and functionality.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'li[eclMegaMenuSubitem]',\n templateUrl: './ecl-mega-menu-subitem.component.html',\n imports: [NgTemplateOutlet, RouterLink, RouterLinkWithHref, ...EUI_ECL_BUTTON, ...EUI_ECL_ICON, ...EUI_ECL_LINK],\n host: {\n '[class]': 'cssClasses()',\n '[style.display]': 'display()',\n },\n})\n\nexport class EclMegaMenuSubitemComponent extends ECLBaseDirective implements EclMegaMenuItem {\n\n /**\n * Sets id for the button element.\n */\n readonly buttonId = input<string>(undefined);\n readonly label = input('');\n /**\n * If the link redirects to external page. Adds an 'external' icon.\n */\n readonly isExternal = input(false, { transform: booleanAttribute });\n /**\n * If the link is external, this will be the title of the external icon.\n */\n readonly externalIconTitle = input<string>(undefined);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly routerLink = input<string | any[]>(null);\n readonly queryParams = input<Params | null>(null);\n readonly queryParamsHandling = input<QueryParamsHandling>(null);\n readonly href = input('');\n readonly target = input('');\n /**\n * Used for the 'View all' link.\n */\n readonly isSeeAll = input(false, { transform: booleanAttribute });\n /**\n * Adds custom attributes to an anchor element.\n */\n readonly linkExtraAttributes = input<Record<string, string>>(undefined);\n\n readonly megaMenuSubItemClicked = output();\n readonly megaMenuSubItemKeydown = output<KeyboardEvent>();\n\n /**\n * Wrapper div element of the second level sub-items.\n */\n readonly megaMenuLevel2 = viewChild<ElementRef>('megaMenuLevel2');\n /**\n * The directive of the submenu lits.\n */\n readonly submenu = contentChild(forwardRef(() => EclMegaMenuSublistDirective));\n /**\n * The component for the featured items.\n */\n readonly eclMegaMenuFeatured = contentChild(forwardRef(() => EclMegaMenuFeaturedComponent));\n\n readonly isCurrent = signal(false);\n readonly isExpanded = signal(false);\n /**\n * Used to set the height of the second level subitems container.\n */\n readonly level2StyleHeight = signal<number | null>(null);\n\n /**\n * The link element, if it exists. Item can have either link or button.\n */\n protected readonly subMenuItemLink = viewChild(EclLinkDirective);\n /**\n * The button element, if it exists. Item can have either link or button.\n */\n protected readonly subMenuItemBtn = viewChild<EclButtonComponent>('subMenuItemBtn');\n\n protected readonly cssClasses = computed<string>(() =>\n [\n super.getCssClasses('ecl-mega-menu__subitem'),\n this.isCurrent() ? 'ecl-mega-menu__subitem--current' : '',\n this.isExpanded() ? 'ecl-mega-menu__subitem--expanded' : '',\n this.isSeeAll() ? 'ecl-mega-menu__see-all' : '',\n this.isParentLink() ? 'ecl-mega-menu__parent-link' : '',\n ]\n .join(' ')\n .trim());\n\n protected readonly display = signal('');\n\n private readonly isParentLink = signal(false);\n private isMobileBreakpoint = false;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private eclMegaMenuDataService = inject(EclMegaMenuDataService);\n private el = inject(ElementRef);\n private eclMegaMenuService = inject(EclMegaMenuService);\n private readonly doc = inject(DOCUMENT);\n private readonly window = this.doc.defaultView; // Window | null\n private appShell = inject(EuiAppShellService);\n\n constructor() {\n super();\n const eclMegaMenuService = this.eclMegaMenuService;\n\n afterNextRender(() => {\n const subMenuItemLink = this.subMenuItemLink();\n if (subMenuItemLink) {\n eclMegaMenuService.setExtraAttributesForLink(subMenuItemLink.el.nativeElement, this.linkExtraAttributes());\n }\n this.observeBreakpointChanges();\n });\n }\n\n get hasChildren(): boolean {\n return !!this.submenu();\n }\n\n get hasFeatured(): boolean {\n return !!this.eclMegaMenuFeatured();\n }\n\n /**\n * Sets focus on either link or button element.\n */\n onFocus(): void{\n const subMenuItemLink = this.subMenuItemLink();\n const subMenuItemBtn = this.subMenuItemBtn();\n if (subMenuItemLink) {\n subMenuItemLink.onFocus();\n } else if (subMenuItemBtn) {\n subMenuItemBtn.onFocus();\n }\n }\n\n onHide(): void {\n this.display.set('none');\n }\n\n onShow(): void {\n this.display.set('');\n }\n\n getMegaMenuSubItemHeight(): number {\n return this.el.nativeElement.getBoundingClientRect().height;\n }\n\n onSubMenuItemCollapse(): void {\n if (this.isExpanded()) {\n this.eclMegaMenuDataService.eclSubItemToggle(false);\n this.isCurrent.set(false);\n this.isExpanded.set(false);\n this.isParentLink.set(false);\n }\n }\n\n onSubMenuItemExpand(): void {\n this.isCurrent.set(true);\n this.isExpanded.set(true);\n this.eclMegaMenuDataService.eclSubItemToggle(this.isExpanded());\n }\n\n /**\n * Show or hide the subitems.\n */\n protected onButtonClick(): void {\n this.isCurrent.set(!this.isCurrent());\n this.isExpanded.set(!this.isExpanded());\n this.eclMegaMenuDataService.eclSubItemToggle(this.isExpanded());\n this.eclMegaMenuDataService.eclSubItemClick(this);\n this.megaMenuSubItemClicked.emit();\n }\n\n /**\n * If link is clicked -> emit event and close all opened menus and submenus.\n */\n protected onLinkClick(): void {\n this.eclMegaMenuDataService.eclSubItemClick(this);\n this.megaMenuSubItemClicked.emit();\n }\n\n protected onKeydown(evt: Event): void {\n if (evt instanceof KeyboardEvent) {\n if (!((evt as KeyboardEvent).key === KeyCode.TAB)) {\n if ((evt as KeyboardEvent).key === KeyCode.ESCAPE) {\n this.eclMegaMenuDataService.eclSubItemEscapeEvent(true);\n } else {\n this.megaMenuSubItemKeydown.emit(evt as KeyboardEvent);\n }\n }\n }\n }\n\n private observeBreakpointChanges(): void {\n this.appShell.getState<any>('breakpoints')\n .pipe(\n // ECL uses breakpointDesktop = 1140px. isLtLargeTablet covers xs/sm/md/lg (< 1140px).\n map(bp => !!(bp?.isLtLargeTablet)),\n distinctUntilChanged(),\n takeUntil(this.destroy$),\n )\n .subscribe((isMobile) => {\n const wasMobile = this.isMobileBreakpoint;\n this.isMobileBreakpoint = isMobile;\n\n // Reset computed heights when switching breakpoints\n if (wasMobile !== isMobile) {\n this.level2StyleHeight.set(null);\n const eclMegaMenuFeatured = this.eclMegaMenuFeatured();\n if (eclMegaMenuFeatured) {\n eclMegaMenuFeatured.eclMegaMenuFeaturedStyleHeight.set(null);\n }\n }\n });\n }\n}\n","@if (!isSeeAll()) {\n@if (hasChildren) {\n<button eclButton #subMenuItemBtn variant=\"primary\" class=\"ecl-mega-menu__sublink\" [attr.aria-expanded]=\"isExpanded()\"\n (click)=\"onButtonClick()\" (keydown)=\"onKeydown($event)\" id=\"{{buttonId()}}\">\n <span eclButtonLabel>{{label()}}</span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-90\" size=\"2xs\"></ecl-icon>\n</button>\n} @else if (href()) {\n<a eclLink variant=\"standalone\" [href]=\"href()\" [target]=\"target()\" class=\"ecl-mega-menu__sublink\"\n (keydown)=\"onKeydown($event)\" (click)=\"onLinkClick()\">\n <span eclLinkLabel>{{label()}}</span>\n <ng-container *ngTemplateOutlet=\"eclIcon\"></ng-container>\n</a>\n} @else {\n<a eclLink variant=\"standalone\" [attr.tabindex]=\"tabindex || 0\" [routerLink]=\"routerLink()\"\n [queryParams]=\"queryParams()\" [queryParamsHandling]=\"queryParamsHandling()\" class=\"ecl-mega-menu__sublink\"\n (keydown)=\"onKeydown($event)\" (click)=\"onLinkClick()\">\n <span eclLinkLabel>{{label()}}</span>\n <ng-container *ngTemplateOutlet=\"eclIcon\"></ng-container>\n</a>\n}\n\n@if (hasChildren) {\n<div class=\"ecl-mega-menu__mega ecl-mega-menu__mega--level-2\" #megaMenuLevel2\n [style.height.px]=\"level2StyleHeight()\">\n <ng-content select=\"[eclMegaMenuSublist]\"></ng-content>\n <ng-content select=\"[eclMegaMenuFeatured]\"></ng-content>\n</div>\n}\n} @else {\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n}\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n\n<ng-template #eclIcon>\n @if (isExternal()) {\n <ecl-icon icon=\"external\" size=\"2xs\" ariaHidden=\"false\" role=\"img\">\n <title>Links to an external domain</title>\n </ecl-icon>\n }\n <!-- <ng-content select=\"ecl-icon\"></ng-content> -->\n</ng-template>","import { Directive, DoCheck, ElementRef, IterableDiffer, IterableDiffers, OnDestroy, afterNextRender, forwardRef, inject, output, signal, contentChildren, contentChild } from '@angular/core';\nimport { outputToObservable } from '@angular/core/rxjs-interop';\nimport { EuiAppShellService } from '@eui/core';\nimport { ECLBaseDirective, KeyCode } from '@eui/ecl/core';\nimport { distinctUntilChanged, map, Subject, takeUntil } from 'rxjs';\nimport { EclMegaMenuSubitemComponent } from '../ecl-mega-menu-subitem/ecl-mega-menu-subitem.component';\n\n/**\n * Directive that adds specific class to the mega-menu list.\n */\n@Directive({\n selector: 'ul[eclMegaMenuList]',\n host: {\n class: 'ecl-mega-menu__list',\n },\n})\nexport class EclMegaMenuListDirective extends ECLBaseDirective {\n}\n\n/**\n * Directive that adds specific class to the mega-menu spacer.\n */\n@Directive({\n selector: 'li[eclMegaMenuSpacer]',\n host: {\n class: 'ecl-mega-menu__spacer',\n },\n})\nexport class EclMegaMenuSpacerDirective extends ECLBaseDirective {\n}\n\n/**\n * Directive that adds specific classes and functionality to the mega-menu sublist.\n */\n@Directive({\n selector: 'ul[eclMegaMenuSublist]',\n host: {\n class: 'ecl-mega-menu__sublist',\n '[class.ecl-mega-menu__sublist--scrollable]': 'isScrollable()',\n '[style.top.px]': 'styleTop()',\n '[style.height.px]': 'styleHeight()',\n },\n})\nexport class EclMegaMenuSublistDirective extends ECLBaseDirective implements OnDestroy, DoCheck {\n el = inject(ElementRef);\n\n readonly isScrollable = signal(false);\n readonly styleTop = signal<number | null>(null);\n readonly styleHeight = signal<number | null>(null);\n\n readonly submenuItems = contentChildren(forwardRef(() => EclMegaMenuSubitemComponent));\n readonly spacer = contentChild(forwardRef(() => EclMegaMenuSpacerDirective));\n readonly megaMenuSubItemClicked = output();\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private differ: IterableDiffer<EclMegaMenuSubitemComponent>;\n private isMobileBreakpoint = false;\n private differs = inject(IterableDiffers);\n private appShell = inject(EuiAppShellService);\n\n constructor() {\n super();\n this.differ = this.differs.find([]).create();\n afterNextRender(() => {\n this.observeBreakpointChanges();\n });\n }\n\n ngDoCheck(): void {\n // When a new item is added -> subscribe to item's events.\n const diff = this.differ.diff(this.submenuItems());\n if (diff) {\n diff.forEachItem((item) => {\n this.connectMegaMenuItemEvents(item.item);\n });\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * When parent mega-menu item is clicked.\n * @param isExpanded - 'true', if parent item is expanded, 'false' if item is collapsed.\n */\n onParentMegaMenuItemClick(isExpanded: boolean): void {\n if (!isExpanded) {\n this.submenuItems().forEach(item => {\n if (item.isExpanded()) {\n item.onSubMenuItemCollapse();\n }\n });\n }\n }\n\n private connectMegaMenuItemEvents(item: EclMegaMenuSubitemComponent): void {\n outputToObservable(item.megaMenuSubItemClicked).pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.onMegaMenuSubItemClicked(item);\n });\n\n outputToObservable(item.megaMenuSubItemKeydown).pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.onMegaMenuSubItemKeydown(item, evt as KeyboardEvent);\n });\n }\n\n private onMegaMenuSubItemClicked(item: EclMegaMenuSubitemComponent): void {\n this.submenuItems().filter(subItem => subItem !== item).forEach(el => {\n el.onSubMenuItemCollapse();\n if (this.isMobileBreakpoint && item.hasChildren) {\n el.onHide();\n }\n });\n this.megaMenuSubItemClicked.emit();\n }\n\n private onMegaMenuSubItemKeydown(item: EclMegaMenuSubitemComponent, evt: KeyboardEvent): void {\n\n const itemIndex = this.submenuItems().findIndex(elem => elem === item);\n switch (evt.key) {\n case KeyCode.ARROW_DOWN: {\n evt.preventDefault();\n this.focusOnNextSibling(itemIndex);\n break;\n }\n case KeyCode.ARROW_UP: {\n evt.preventDefault();\n this.focusOnPrevSibling(itemIndex);\n break;\n }\n default: {\n break;\n }\n }\n }\n\n private focusOnPrevSibling(index: number): void {\n if (index > 0) {\n this.submenuItems().at(index - 1).onFocus();\n }\n }\n\n private focusOnNextSibling(index: number): void {\n if (index < this.submenuItems().length - 1) {\n this.submenuItems().at(index + 1).onFocus();\n }\n }\n\n private observeBreakpointChanges(): void {\n this.appShell.getState<any>('breakpoints')\n .pipe(\n map(bp => !!bp?.isLtLargeTablet), // xs/sm/md/lg => <= 996px boundary\n distinctUntilChanged(),\n takeUntil(this.destroy$),\n )\n .subscribe((isMobile) => {\n const wasMobile = this.isMobileBreakpoint;\n this.isMobileBreakpoint = isMobile;\n\n // Reset height/position values when switching between breakpoints\n // to avoid stale pixel values from the previous layout mode\n if (wasMobile !== isMobile) {\n this.styleHeight.set(null);\n this.styleTop.set(null);\n this.isScrollable.set(false);\n }\n });\n }\n}\n","import { AfterViewInit, Component, ElementRef, OnDestroy, PLATFORM_ID, computed, forwardRef, inject, signal, input, contentChild } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclLinkDirective } from '@eui/ecl/components/ecl-link';\nimport { EclMegaMenuDataService } from '../services/ecl-mega-menu-data.service';\nimport { isPlatformBrowser, DOCUMENT } from '@angular/common';\nimport { Subject, fromEvent, auditTime, takeUntil } from 'rxjs';\n\n/**\n * Component for displaying some custom information for the current menu item.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'div[eclMegaMenuInfo]',\n templateUrl: './ecl-mega-menu-info.component.html',\n host: {\n '[class]': 'cssClasses()',\n '[style.height.px]': 'eclMegaMenuInfoStyleHeight()',\n '[style.opacity]': 'eclMegaMenuInfoStyleOpacity()',\n },\n})\n\nexport class EclMegaMenuInfoComponent extends ECLBaseDirective implements AfterViewInit, OnDestroy {\n el = inject(ElementRef);\n\n /**\n * Applies custom styles for info component.\n */\n protected readonly cssClasses = computed<string>(() =>\n [\n super.getCssClasses('ecl-mega-menu__info'),\n this.linkItem() ? 'ecl-mega-menu__info--has-link' : '',\n ]\n .join(' ')\n .trim());\n /**\n * Sets the height of the component.\n */\n readonly eclMegaMenuInfoStyleHeight = signal<number | null>(null);\n /**\n * Sets the opacity of the component.\n */\n eclMegaMenuInfoStyleOpacity = signal<number | null>(null);\n\n readonly title = input<string>(undefined); \n readonly titleId = input<string>(undefined);\n\n private platformId = inject(PLATFORM_ID);\n private readonly doc = inject(DOCUMENT);\n private readonly window = this.doc.defaultView;\n private destroy$ = new Subject<void>();\n\n /**\n * When the info panel contains link.\n */\n readonly linkItem = contentChild(forwardRef(() => EclLinkDirective));\n private eclMegaMenuDataService = inject(EclMegaMenuDataService);\n\n ngAfterViewInit(): void {\n if (isPlatformBrowser(this.platformId)) {\n // Sets class of the sub link, if any.\n if (this.linkItem()) {\n setTimeout(() => this.linkItem().class.set('ecl-mega-menu__info-link'));\n }\n // Emits the bottom value of the element. Needed to calculate the size of the sublist. (for the same parent menu item)\n this.publishSize();\n this.observeResize();\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n /**\n * Used to calculate the height of the parent element.\n * @returns the height of the component.\n */\n getInfoPanelScrollHeight() : number {\n return this.el.nativeElement.scrollHeight;\n }\n\n /**\n * Used to calulate the size of the info panel.\n */\n private publishSize(): void {\n const bottomY = this.el.nativeElement.getBoundingClientRect().bottom;\n this.eclMegaMenuDataService.updateEclMegaMenuInfoSize(bottomY);\n }\n\n /**\n * Re-publishes the info panel size on window resize so that dependent\n * components (e.g. sublist positioning) recalculate with current dimensions.\n */\n private observeResize(): void {\n if (this.window) {\n fromEvent(this.window, 'resize').pipe(\n auditTime(100),\n takeUntil(this.destroy$),\n ).subscribe(() => {\n this.publishSize();\n });\n }\n }\n}\n","<span class=\"ecl-mega-menu__info-title\" [attr.id]=\"titleId() || null\">{{ title() }}</span>\n<div class=\"ecl-mega-menu__info-scrollable\">\n <div class=\"ecl-mega-menu__info-content\"><ng-content></ng-content>\n </div>\n</div>","import {\n AfterContentInit,\n afterNextRender, booleanAttribute,\n Component,\n ElementRef,\n forwardRef,\n inject,\n OnDestroy,\n DOCUMENT,\n Renderer2,\n computed,\n input,\n output,\n signal,\n viewChild,\n contentChild,\n contentChildren,\n} from '@angular/core';\nimport { outputToObservable } from '@angular/core/rxjs-interop';\nimport { Params, QueryParamsHandling, RouterLink, RouterLinkWithHref } from '@angular/router';\nimport { EuiAppShellService } from '@eui/core';\nimport { EclButtonComponent, EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\nimport { EclLinkDirective, EUI_ECL_LINK } from '@eui/ecl/components/ecl-link';\nimport { ECLBaseDirective, KeyCode } from '@eui/ecl/core';\nimport { EclHeaderMenuComunicationService } from '@eui/ecl/shared';\nimport { distinctUntilChanged, map, Subject, auditTime, fromEvent, takeUntil } from 'rxjs';\nimport { EclMegaMenuContainerDirective } from '../directives/ecl-mega-menu-container.directive';\nimport { EclMegaMenuSublistDirective } from '../directives/ecl-mega-menu-list.directive';\nimport { EclMegaMenuFeaturedComponent } from '../ecl-mega-menu-featured/ecl-mega-menu-featured.component';\nimport { EclMegaMenuInfoComponent } from '../ecl-mega-menu-info/ecl-mega-menu-info.component';\nimport { EclMegaMenuDataService } from '../services/ecl-mega-menu-data.service';\nimport { EclMegaMenuService } from '../services/ecl-mega-menu.service';\n\n/**\n * This component represents a mega menu item. Adds functionality and styling, according to ECL standards.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'li[eclMegaMenuItem]',\n templateUrl: './ecl-mega-menu-item.component.html',\n imports: [RouterLink, RouterLinkWithHref, ...EUI_ECL_BUTTON, ...EUI_ECL_ICON, ...EUI_ECL_LINK],\n host: {\n '[class]': 'cssClasses()',\n '[attr.aria-haspopup]': 'hasPopup',\n },\n})\n\nexport class EclMegaMenuItemComponent extends ECLBaseDirective implements AfterContentInit, OnDestroy {\n readonly isPromotional = input(false, { transform: booleanAttribute });\n readonly label = input<string>(undefined);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly routerLink = input<string | any[]>(null);\n readonly queryParams = input<Params | null>(null);\n readonly queryParamsHandling = input<QueryParamsHandling>(null);\n readonly href = input('');\n readonly target = input('');\n /**\n * This property should be used, when user wants the menu sub-items to use the maximum space available.\n * For example, if we have 10 sub-items, normally they will appear in one column only. If isOneLevelOnly is used, the sub-items\n * will take 2, 3, 4 columns, depending on presence of other sub-components.\n */\n readonly isOneLevelOnly = input(false, { transform: booleanAttribute });\n /**\n * Used in case user wants to set some custom attributes for the anchr tag.\n */\n readonly linkExtraAttributes = input<Record<string, string>>(undefined);\n\n readonly megaMenuItemClicked = output();\n readonly megaMenuItemKeydown = output<KeyboardEvent>();\n\n readonly isExpanded = signal(false);\n readonly isCurrent = signal(false);\n /**\n * Element, that holds the sub items of the current menu items.\n */\n readonly eclMegaMenuSublist = contentChild(forwardRef(() => EclMegaMenuSublistDirective));\n readonly eclMegaMenuFeatured = contentChild(forwardRef(() => EclMegaMenuFeaturedComponent), { descendants: false });\n\n readonly megaMenuMegaStyleHeight = signal<number | null>(null);\n readonly megaMenuMegaStyleOpacity = signal<number | null>(null);\n readonly containerStyleHeight = signal<number | null>(null);\n readonly wrapperStyleHeight = signal<number | null>(null);\n readonly wrapperStyleTop = signal<number | null>(null);\n\n /**\n * The wrapper around the subitems, if any.\n */\n protected readonly eclMegaMenuMega = viewChild<ElementRef>('eclMegaMenuMega');\n /**\n * This elemend hold some extra content, different from subitems. For example just some text or some custom links, etc.\n */\n protected readonly mainPanel = viewChild<ElementRef>('mainPanel');\n /**\n * Actual link of the menu item. If the menu has no children, but redirects/loads another page.\n */\n protected readonly menuLink = viewChild(EclLinkDirective);\n /**\n * Element, tat is rendered if the menu item has children.\n */\n protected readonly menuBtn = viewChild<EclButtonComponent>('menuBtn');\n /**\n * Element, that would contain some info about the current item or it's children. First in the container.\n */\n protected readonly eclMegaMenuInfo = contentChild(forwardRef(() => EclMegaMenuInfoComponent));\n // Get all the sublists including childrens's sublist, to detect if it's only one level submenu.\n protected readonly eclMegaMenuSublists = contentChildren(forwardRef(() => EclMegaMenuSublistDirective), { descendants: true });\n /**\n * Component, that consist of some custom info, text or whatever. When the menu item has no children, but still some\n * sub container is displayed.\n */\n protected readonly eclMegaMenuContainer = contentChild(forwardRef(() => EclMegaMenuContainerDirective));\n\n /**\n * Returns current menu item classes, depending on item's state (it's properties' values).\n */\n protected readonly cssClasses = computed<string>(() =>\n [\n super.getCssClasses('ecl-mega-menu__item'),\n this.eclMegaMenuSublist() ? 'ecl-mega-menu__item--has-children' : '',\n this.eclMegaMenuContainer() ? 'ecl-mega-menu__item--has-container' : '',\n this.isCurrent() ? 'ecl-mega-menu__item--current' : '',\n this.isExpanded() ? 'ecl-mega-menu__item--expanded' : '',\n this.isPromotional() ? 'ecl-mega-menu__item--promotional' : '',\n this.isOneLevelOnly() ? 'ecl-mega-menu__item--one-level-only' : '',\n ]\n .join(' ')\n .trim());\n\n private isMobileBreakpoint = false;\n private isLarge = false;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private el = inject(ElementRef);\n private renderer = inject(Renderer2);\n private eclMegaMenuDataService = inject(EclMegaMenuDataService);\n private eclHeaderMenuComunicationService = inject(EclHeaderMenuComunicationService);\n private eclMegaMenuService = inject(EclMegaMenuService);\n private readonly doc = inject(DOCUMENT);\n private readonly window = this.doc.defaultView; // Window | null\n private appShellService = inject(EuiAppShellService);\n\n constructor() {\n super();\n\n afterNextRender(() => {\n this.eclMegaMenuDataService.eclMegaMenuInfoBottomYSubject$.pipe(takeUntil(this.destroy$)).subscribe(value => {\n this.calculateSublistStyle(value);\n });\n const menuLink = this.menuLink();\n if (menuLink) {\n this.eclMegaMenuService.setExtraAttributesForLink(menuLink.el.nativeElement, this.linkExtraAttributes());\n }\n this.observeBreakpointChanges();\n this.observeResizeWindow();\n });\n }\n\n ngAfterContentInit(): void {\n const sublist = this.eclMegaMenuSublist();\n if (sublist) {\n outputToObservable(sublist.megaMenuSubItemClicked).pipe(takeUntil(this.destroy$)).subscribe(() => {\n if (!this.isExpanded()) {\n return;\n }\n if (!this.isMobileBreakpoint) {\n // Only hide/show the level-2 panel when switching sub-items\n const expandedSubItem = this.eclMegaMenuSublist().submenuItems().find(\n item => item.hasChildren && item.isExpanded()\n );\n const megaMenuLevel2 = expandedSubItem?.megaMenuLevel2();\n if (expandedSubItem && megaMenuLevel2) {\n megaMenuLevel2.nativeElement.style.opacity = '0';\n }\n }\n setTimeout(() => this.checkDropdownHeight(false), 100);\n });\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Reflects whether this item has a submenu/container. Evaluated lazily during\n * change detection (not at construction) so the content-query signals are\n * resolved before it is read.\n */\n get hasPopup(): true | null {\n return this.hasChildren ? true : null;\n }\n\n get hasNoInfo(): boolean {\n return !this.eclMegaMenuInfo();\n }\n\n get hasChildren(): boolean {\n return !!this.eclMegaMenuSublist() || !!this.eclMegaMenuContainer();\n }\n\n get hasSublist(): boolean {\n return !!this.eclMegaMenuSublist();\n }\n\n get hasFeatured(): boolean {\n return !!this.eclMegaMenuFeatured();\n }\n\n get hasContainer(): boolean {\n return !!this.eclMegaMenuContainer();\n }\n\n /**\n * Set the focus on the sub element - link or button.\n */\n onFocus(): void {\n const menuLink = this.menuLink();\n const menuBtn = this.menuBtn();\n if (menuLink) {\n menuLink.onFocus();\n } else if (menuBtn) {\n menuBtn.onFocus();\n }\n }\n\n /**\n * Manage styling and functionality for children and siblings, when item is clicked.\n */\n onMegaMenuItemClick(): void {\n if (this.hasChildren) {\n this.isCurrent.set(!this.isCurrent());\n this.isExpanded.set(!this.isExpanded());\n const eclMegaMenuSublist = this.eclMegaMenuSublist();\n if (eclMegaMenuSublist) {\n eclMegaMenuSublist.onParentMegaMenuItemClick(this.isExpanded());\n }\n if (this.isExpanded()) {\n this.eclHeaderMenuComunicationService.updateExpanded(this.isExpanded());\n this.hidePanels();\n setTimeout(() => {\n this.checkDropdownHeight();\n this.calculateWrapperStyle();\n }, 100);\n } else {\n this.eclHeaderMenuComunicationService.updateExpanded(this.isExpanded());\n this.resetComputedHeights();\n }\n } else {\n this.eclHeaderMenuComunicationService.updateExpanded(this.isExpanded());\n }\n this.megaMenuItemClicked.emit();\n }\n\n /**\n * Manage styling and functionality when item is collapsed.\n */\n onMegaMenuItemCollapse(): void {\n this.isCurrent.set(false);\n this.isExpanded.set(false);\n const eclMegaMenuSublist = this.eclMegaMenuSublist();\n if (eclMegaMenuSublist) {\n eclMegaMenuSublist.onParentMegaMenuItemClick(this.isExpanded());\n }\n this.resetComputedHeights();\n }\n\n onKeydown(evt: Event): void {\n if (evt instanceof KeyboardEvent) {\n if ((evt as KeyboardEvent).key === KeyCode.TAB && !(evt as KeyboardEvent).shiftKey) {\n // if menu is open, navigate to children\n } else {\n this.megaMenuItemKeydown.emit(evt as KeyboardEvent);\n }\n }\n }\n\n /**\n * On resize - calculate the size of the dropdown and wrapper (if item is expanded).\n */\n private observeResizeWindow(): void {\n if (this.window) {\n fromEvent(this.window, 'resize').pipe(\n auditTime(50),\n takeUntil(this.destroy$)).subscribe(() => {\n setTimeout(() => {\n if (this.isExpanded()) {\n this.checkDropdownHeight();\n this.calculateWrapperStyle();\n } else {\n // Even when not expanded, reset computed heights on resize\n // so stale desktop values don't persist into tablet/mobile layout\n this.resetComputedHeights();\n }\n });\n });\n }\n }\n\n private calculateSublistStyle(bottomInfo: number): void {\n const eclMegaMenuSublist = this.eclMegaMenuSublist();\n if (this.isMobileBreakpoint && eclMegaMenuSublist) {\n const availableHeight = this.window.innerHeight - bottomInfo - 16;\n eclMegaMenuSublist.styleTop.set(availableHeight);\n }\n }\n\n private calculateWrapperStyle(): void {\n if (!this.isMobileBreakpoint) {\n const height = this.el.nativeElement.getBoundingClientRect().height;\n this.wrapperStyleTop.set(height);\n }\n }\n\n private resetWrapperStyle(): void {\n if (this.isMobileBreakpoint) {\n this.wrapperStyleHeight.set(null);\n this.wrapperStyleTop.set(null);\n }\n }\n\n /**\n * Resets all computed pixel heights on the info panel, mega panel, and wrapper.\n * Called when the viewport changes breakpoint so that stale desktop values\n * (e.g. info height of 227px) don't persist into tablet/mobile layout where\n * the elements should flow naturally.\n */\n private resetComputedHeights(): void {\n const eclMegaMenuInfo = this.eclMegaMenuInfo();\n if (eclMegaMenuInfo) {\n eclMegaMenuInfo.eclMegaMenuInfoStyleHeight.set(null);\n eclMegaMenuInfo.eclMegaMenuInfoStyleOpacity.set(null);\n }\n this.megaMenuMegaStyleHeight.set(null);\n this.megaMenuMegaStyleOpacity.set(null);\n this.wrapperStyleHeight.set(null);\n this.wrapperStyleTop.set(null);\n this.containerStyleHeight.set(null);\n\n // Reset featured panel height\n const eclMegaMenuFeatured = this.eclMegaMenuFeatured();\n if (eclMegaMenuFeatured) {\n eclMegaMenuFeatured.eclMegaMenuFeaturedStyleHeight.set(null);\n }\n\n // Reset sublist and sub-items heights\n const eclMegaMenuSublist = this.eclMegaMenuSublist();\n if (eclMegaMenuSublist) {\n eclMegaMenuSublist.styleHeight.set(null);\n eclMegaMenuSublist.styleTop.set(null);\n eclMegaMenuSublist.isScrollable.set(false);\n\n // Reset level-2 heights on each subitem\n eclMegaMenuSublist.submenuItems()?.forEach(subItem => {\n subItem.level2StyleHeight.set(null);\n const eclMegaMenuFeatured = subItem.eclMegaMenuFeatured();\n if (eclMegaMenuFeatured) {\n eclMegaMenuFeatured.eclMegaMenuFeaturedStyleHeight.set(null);\n }\n });\n }\n }\n\n private hidePanels(): void {\n if (this.isMobileBreakpoint) {\n return;\n }\n if (this.eclMegaMenuMega()) {\n this.megaMenuMegaStyleOpacity.set(0);\n }\n const eclMegaMenuInfo = this.eclMegaMenuInfo();\n if (eclMegaMenuInfo) {\n eclMegaMenuInfo.eclMegaMenuInfoStyleOpacity.set(0);\n }\n }\n\n /**\n * On mobile, calculate the height of the mega panel (level 1).\n * - If the item has a featured panel: set height on the mega div (.ecl-mega-menu__mega--has-featured)\n * - If no featured, panel 1: height is set on the sublist\n * - If no featured, panel 2: height is set on the level-2 div\n */\n private calculateMobileHeight(): void {\n const eclMegaMenuMega = this.eclMegaMenuMega();\n if (!this.isMobileBreakpoint || !eclMegaMenuMega) {\n return;\n }\n const eclMegaMenuSublistValue = this.eclMegaMenuSublist();\n if (this.hasFeatured) {\n // Has featured → set height on the mega div, no scrollable on sublist\n const megaRect = eclMegaMenuMega.nativeElement.getBoundingClientRect();\n const megaTop = megaRect.top;\n this.megaMenuMegaStyleHeight.set(this.window.innerHeight - megaTop);\n const eclMegaMenuSublist = this.eclMegaMenuSublist();\n if (eclMegaMenuSublist) {\n eclMegaMenuSublist.isScrollable.set(false);\n eclMegaMenuSublist.styleHeight.set(null);\n }\n } else if (eclMegaMenuSublistValue) {\n this.megaMenuMegaStyleHeight.set(null);\n\n // Check if a sub-item with children is expanded (panel 2)\n const expandedSubItem = eclMegaMenuSublistValue.submenuItems().find(\n item => item.hasChildren && item.isExpanded()\n );\n\n const megaMenuLevel2 = expandedSubItem?.megaMenuLevel2();\n if (expandedSubItem && megaMenuLevel2) {\n // No featured, panel 2 → set height on the level-2 div\n const subMegaRect = megaMenuLevel2.nativeElement.getBoundingClientRect();\n const subMegaTop = subMegaRect.top;\n expandedSubItem.level2StyleHeight.set(this.window.innerHeight - subMegaTop);\n // Clear sublist height and scrollable since panel 2 is now showing\n eclMegaMenuSublistValue.isScrollable.set(false);\n eclMegaMenuSublistValue.styleHeight.set(null);\n } else {\n // No featured, panel 1 → set height on the sublist\n const sublistRect = eclMegaMenuSublistValue.el.nativeElement.getBoundingClientRect();\n const sublistTop = sublistRect.top;\n eclMegaMenuSublistValue.styleHeight.set(this.window.innerHeight - sublistTop);\n eclMegaMenuSublistValue.isScrollable.set(true);\n }\n } else {\n this.megaMenuMegaStyleHeight.set(null);\n }\n }\n\n private checkDropdownHeight(hide = true): void {\n if (this.isMobileBreakpoint) {\n this.calculateMobileHeight();\n return;\n }\n\n if (hide) {\n this.hidePanels();\n }\n let infoPanelHeight = 0;\n const eclMegaMenuInfo = this.eclMegaMenuInfo();\n if (eclMegaMenuInfo) {\n eclMegaMenuInfo.eclMegaMenuInfoStyleHeight.set(null);\n }\n\n const heights = [];\n let height = 0;\n let itemsHeight = 0;\n let subItemsHeight = 0;\n let featuredHeight = 0;\n let featuredHeight2 = 0;\n\n if (this.hasContainer) {\n const viewportHeight = this.window.innerHeight;\n const mainTop = this.mainPanel().nativeElement.getBoundingClientRect().top;\n this.containerStyleHeight.set(viewportHeight - mainTop);\n } else {\n if (eclMegaMenuInfo) {\n infoPanelHeight = eclMegaMenuInfo.getInfoPanelScrollHeight() + 16;\n if (this.isLarge) {\n heights.push(infoPanelHeight);\n } else {\n subItemsHeight = infoPanelHeight;\n featuredHeight = infoPanelHeight;\n }\n eclMegaMenuInfo.eclMegaMenuInfoStyleOpacity.set(1);\n }\n\n const eclMegaMenuMega = this.eclMegaMenuMega();\n if (eclMegaMenuMega) {\n const eclMegaMenuSublist = this.eclMegaMenuSublist();\n if (eclMegaMenuSublist && eclMegaMenuSublist.submenuItems().length > 0) {\n if (this.isOneLevelOnly()) {\n itemsHeight = eclMegaMenuSublist.el.nativeElement.offsetHeight;\n } else {\n eclMegaMenuSublist.submenuItems().forEach((item) => {\n itemsHeight += item.getMegaMenuSubItemHeight();\n });\n if (eclMegaMenuSublist.spacer()) {\n itemsHeight += 25;\n }\n }\n heights.push(itemsHeight);\n }\n const expandedSubItem = eclMegaMenuSublist.submenuItems().find(item => item.hasChildren && item.isExpanded());\n if (expandedSubItem !== undefined) {\n const eclMegaMenuFeatured = expandedSubItem.eclMegaMenuFeatured();\n expandedSubItem.submenu().submenuItems().forEach(item => {\n subItemsHeight += item.getMegaMenuSubItemHeight();\n });\n heights.push(subItemsHeight);\n if (eclMegaMenuFeatured) {\n featuredHeight += eclMegaMenuFeatured.getEclMegaMenuFeaturedHeight();\n featuredHeight += 5;\n heights.push(featuredHeight);\n }\n }\n\n const eclMegaMenuFeaturedValue = this.eclMegaMenuFeatured();\n if (eclMegaMenuFeaturedValue) {\n featuredHeight2 = eclMegaMenuFeaturedValue.getEclMegaMenuFeaturedHeight();\n heights.push(featuredHeight2);\n }\n const maxHeight = Math.max(...heights);\n const containerBounding = this.el.nativeElement.getBoundingClientRect();\n const containerBottom = containerBounding.bottom;\n // By requirements, limit the height to the 70% of the available space.\n const availableHeight = (this.window.innerHeight - containerBottom) * 0.9;\n if (maxHeight > availableHeight) {\n height = availableHeight;\n } else {\n height = maxHeight;\n }\n\n let wrapperStyleHeight = eclMegaMenuMega && eclMegaMenuInfo && !this.isLarge ?\n height + infoPanelHeight : height;\n if (wrapperStyleHeight > availableHeight) wrapperStyleHeight = availableHeight;\n this.wrapperStyleHeight.set(wrapperStyleHeight);\n if (eclMegaMenuMega && this.isLarge) {\n this.megaMenuMegaStyleHeight.set(height);\n } else if (eclMegaMenuMega && eclMegaMenuInfo) {\n this.megaMenuMegaStyleHeight.set(wrapperStyleHeight - infoPanelHeight);\n }\n if (eclMegaMenuInfo && this.isLarge) {\n eclMegaMenuInfo.eclMegaMenuInfoStyleHeight.set(height);\n }\n\n if (expandedSubItem !== undefined) {\n if (this.isLarge) {\n expandedSubItem.level2StyleHeight.set(height);\n } else {\n expandedSubItem.level2StyleHeight.set(height - infoPanelHeight);\n }\n\n const megaMenuLevel2 = expandedSubItem.megaMenuLevel2();\n if (megaMenuLevel2) {\n megaMenuLevel2.nativeElement.style.opacity = '1';\n }\n\n const expandedSubItemFeatured = expandedSubItem.eclMegaMenuFeatured();\n if (expandedSubItemFeatured) {\n if (this.isLarge) {\n expandedSubItemFeatured.eclMegaMenuFeaturedStyleHeight.set(height);\n } else {\n expandedSubItemFeatured.eclMegaMenuFeaturedStyleHeight.set(height - infoPanelHeight);\n }\n }\n }\n if (eclMegaMenuFeaturedValue) {\n if (this.isLarge) {\n eclMegaMenuFeaturedValue.eclMegaMenuFeaturedStyleHeight.set(height);\n } else {\n eclMegaMenuFeaturedValue.eclMegaMenuFeaturedStyleHeight.set(wrapperStyleHeight - infoPanelHeight);\n }\n }\n this.megaMenuMegaStyleOpacity.set(1);\n }\n }\n }\n\n private observeBreakpointChanges(): void {\n this.appShellService.state$\n .pipe(\n map((state) => {\n const w = state.windowWidth ?? 0;\n const bp = state.breakpoints;\n return {\n // ECL uses breakpointDesktop = 1140px. Everything below that\n // (xs/sm/md/lg) must use mobile behavior. isLtLargeTablet covers this range.\n isMobile: !!(bp?.isLtLargeTablet),\n isLarge: w >= 1368,\n };\n }),\n distinctUntilChanged(\n (a, b) => a.isMobile === b.isMobile && a.isLarge === b.isLarge\n ),\n takeUntil(this.destroy$),\n )\n .subscribe(({ isMobile, isLarge }) => {\n const wasMobile = this.isMobileBreakpoint;\n const wasLarge = this.isLarge;\n this.isMobileBreakpoint = isMobile;\n this.isLarge = isLarge;\n this.resetWrapperStyle();\n\n // When breakpoint changes, reset all computed heights so they don't\n // carry over stale pixel values from the previous layout mode.\n if (wasMobile !== isMobile || wasLarge !== isLarge) {\n this.resetComputedHeights();\n\n // If transitioning between mobile/desktop while expanded,\n // recalculate with new layout dimensions\n if (this.isExpanded()) {\n setTimeout(() => {\n this.checkDropdownHeight();\n this.calculateWrapperStyle();\n }, 100);\n }\n }\n });\n }\n}\n","@if (hasChildren) {\n<button #menuBtn eclButton variant=\"primary\" class=\"ecl-mega-menu__link\" (click)=\"onMegaMenuItemClick()\"\n (keydown)=\"onKeydown($event)\">\n <span eclButtonLabel>{{label()}}</span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-90\" size=\"2xs\"></ecl-icon>\n <ecl-icon icon=\"arrow-left\" transform=\"flip-horizontal\" size=\"s\"></ecl-icon>\n</button>\n} @else if (href()) {\n<a eclLink #menuLink variant=\"standalone\" [href]=\"href()\" [target]=\"target()\" class=\"ecl-mega-menu__link\"\n (keydown)=\"onKeydown($event)\" (click)=\"onMegaMenuItemClick()\">\n <span eclLinkLabel>{{label()}}</span>\n</a>\n} @else {\n<a eclLink #menuLink variant=\"standalone\" [attr.tabindex]=\"tabindex || 0\" [routerLink]=\"routerLink()\"\n [queryParams]=\"queryParams()\" [queryParamsHandling]=\"queryParamsHandling()\" class=\"ecl-mega-menu__link\"\n (keydown)=\"onKeydown($event)\" (click)=\"onMegaMenuItemClick()\">\n <span eclLinkLabel>{{label()}}</span>\n</a>\n}\n\n@if (hasSublist) {\n<div class=\"ecl-mega-menu__wrapper\" [style.height.px]=\"wrapperStyleHeight()\" [style.top.px]=\"wrapperStyleTop()\">\n <div class=\"ecl-container\">\n <ng-content select=\"[eclMegaMenuInfo]\"></ng-content>\n <div #eclMegaMenuMega class=\"ecl-mega-menu__mega\" [class.ecl-mega-menu__mega--no-info]=\"hasNoInfo\"\n [class.ecl-mega-menu__mega--has-featured]=\"hasFeatured\" [style.height.px]=\"megaMenuMegaStyleHeight()\"\n [style.opacity]=\"megaMenuMegaStyleOpacity()\">\n <ng-content select=\"[eclMegaMenuSublist]\"></ng-content>\n <ng-content select=\"[eclMegaMenuFeatured]\"></ng-content>\n </div>\n </div>\n</div>\n}\n\n@if (hasContainer) {\n<div #mainPanel class=\"ecl-mega-menu__mega ecl-mega-menu__mega-container\">\n <div class=\"ecl-container\" [style.height.px]=\"containerStyleHeight()\">\n <div class=\"ecl-mega-menu__mega-container-scrollable\">\n <ng-content select=\"[eclMegaMenuContainer]\"></ng-content>\n </div>\n </div>\n</div>\n}","import { Component, DOCUMENT, DoCheck, ElementRef, IterableDiffer, IterableDiffers, OnDestroy, Renderer2, afterNextRender, computed, forwardRef, inject, output, signal, contentChildren } from '@angular/core';\nimport { outputToObservable } from '@angular/core/rxjs-interop';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { auditTime, fromEvent, Subject, takeUntil } from 'rxjs';\nimport { ECLClickOutsideDirective, EclRtlService } from '@eui/ecl/core';\nimport { EuiAppShellService } from '@eui/core';\nimport { KeyCode } from '@eui/ecl/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclMegaMenuItem } from './models/ecl-mega-menu-item.model';\nimport { EclMegaMenuDataService } from './services/ecl-mega-menu-data.service';\nimport { EclMegaMenuItemComponent } from './ecl-mega-menu-item/ecl-mega-menu-item.component';\nimport { EclHeaderMenuComunicationService } from '@eui/ecl/shared';\nimport { EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\n\n/**\n * The 'eclMegaMenu' is an advanced navigation component designed for complex sites with deep hierarchies.\n * It can provide descriptive text for first level items, accommodate up to three levels of navigation,\n * and additionally allows a featured column that can be used to either promote parent-page specific or site-wide pages,\n * hidden deep into the lower levels of the hierarchy.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'nav[eclMegaMenu]',\n templateUrl: './ecl-mega-menu.component.html',\n imports: [TranslatePipe, ...EUI_ECL_BUTTON, ...EUI_ECL_ICON],\n host: {\n role: 'navigation',\n '[class]': 'cssClasses()',\n '[attr.data-expanded]': 'expandedAttr()',\n '(eclClickOutside)': 'onClickOutsideMegaMenu()',\n },\n hostDirectives: [\n {\n directive: ECLBaseDirective,\n },\n {\n directive: ECLClickOutsideDirective,\n\n outputs: ['eclClickOutside'],\n },\n ],\n})\n\nexport class EclMegaMenuComponent extends ECLBaseDirective implements DoCheck, OnDestroy {\n\n /**\n * The event that is emitted, when a menu item is selected.\n */\n readonly megaMenuItemSelect = output<EclMegaMenuItem>();\n\n readonly isExpanded = signal(false);\n /**\n * If the menu is in mobile mode.\n */\n readonly isMobileBreakpoint = signal(false);\n /**\n * If the menu is expanded in mobile mode.\n */\n readonly isMobileExpanded = signal(false);\n /**\n * When a menu item is expanded and has only one panel (one sub-level).\n */\n readonly isOnePanel = signal(false);\n /**\n * If the menu is open, when in mobile mode.\n */\n readonly isOpenMobile = signal(false); // used for mobile only\n /**\n * Used in mobile mode - when the start panel is open (i.e. the hamburger button is clicked).\n */\n readonly isStartPanel = signal(false);\n /**\n * If a menu item is expanded and has two panels/levels displayed.\n */\n readonly isTwoPanels = signal(false);\n /**\n * Used to position the overlay, when a menu item is expanded.\n */\n readonly overlayStyleTop = signal<number | null>(null);\n readonly innerStyleTop = signal<number | null>(null);\n\n /** Adds the relative class to the component, when a submenu is opened and this submenu has a featured component child */\n readonly hasSecondaryFeatured = signal(false);\n\n /**\n * Represents the current viewport breakpoint states.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n breakpointsValue: any = {\n isMobile: false,\n isTablet: false,\n isLtDesktop: false,\n isDesktop: false,\n isXL: false,\n isXXL: false,\n };\n\n protected readonly menuItems = contentChildren(forwardRef(() => EclMegaMenuItemComponent), { descendants: true });\n\n protected readonly cssClasses = computed<string>(() =>\n [\n super.getCssClasses('ecl-mega-menu'),\n this.isTwoPanels() ? 'ecl-mega-menu--two-panels' : '',\n this.isOnePanel() ? 'ecl-mega-menu--one-panel' : '',\n this.isRtl() ? 'ecl-mega-menu--rtl' : '',\n this.isTablet() ? 'ecl-mega-menu--forced-mobile' : '',\n this.isStartPanel() ? 'ecl-mega-menu--start-panel' : '',\n this.hasSecondaryFeatured() ? 'ecl-mega-menu--has-secondary-featured' : '',\n ].join(' '));\n\n protected readonly expandedAttr = computed<'true' | null>(() => this.isExpanded() ? 'true' : null);\n\n private readonly isRtl = signal(false);\n private readonly isTablet = signal(false);\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private differ: IterableDiffer<EclMegaMenuItemComponent>;\n private parentHeaderBottomSpaceY: number;\n private differs = inject(IterableDiffers);\n private eclRtlService = inject(EclRtlService);\n private euiAppShellService = inject(EuiAppShellService);\n private eclHeaderMenuComunicationService = inject(EclHeaderMenuComunicationService);\n private eclMegaMenuDataService = inject(EclMegaMenuDataService);\n private el = inject(ElementRef);\n private renderer = inject(Renderer2);\n private readonly document = inject<Document>(DOCUMENT);\n private readonly window = this.document.defaultView;\n\n constructor() {\n super();\n this.differ = this.differs.find([]).create();\n afterNextRender(() => {\n this.subscribeToAppShellBreakpoints();\n this.handleRtlChangeState();\n this.subscribeToEvents();\n this.observeResizeWindow();\n });\n }\n\n ngDoCheck(): void {\n // For each added menu item - subscribe to item events.\n const diff = this.differ.diff(this.menuItems());\n if (diff) {\n diff.forEachItem((item) => {\n this.connectMegaMenuItemEvents(item.item);\n });\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Returns true when the viewport is below the ECL desktop breakpoint (1140px).\n * This covers both mobile (xs/sm) and tablet (md/lg) ranges where the menu\n * should behave in mobile/hamburger mode, matching ECL's breakpointDesktop = 1140.\n */\n get isMobileOrTablet(): boolean {\n return this.isMobileBreakpoint() || this.isTablet();\n }\n\n /**\n * When clicking outside the menu - close any expanded item.\n */\n onClickOutsideMegaMenu(): void {\n if (this.isExpanded()) {\n this.closeMenuAndAnyOpenSubMenu();\n }\n }\n\n onMegaMenuMobileOpen(): void {\n if (this.isOpenMobile()) {\n this.onMegaMenuMobileClose();\n } else {\n this.disableScroll();\n this.isExpanded.set(true);\n this.isOnePanel.set(false);\n this.isTwoPanels.set(false);\n\n if (this.isMobileOrTablet) {\n this.isStartPanel.set(true);\n this.isMobileExpanded.set(true);\n }\n this.isOpenMobile.set(true);\n\n this.eclHeaderMenuComunicationService.updateOpen(true);\n\n // Focus first element\n if (this.menuItems().length > 0) {\n this.menuItems().at(0)!.onFocus();\n }\n }\n }\n\n onMegaMenuMobileClose(): void {\n this.enableScroll();\n\n // Collapse any expanded menu item (and its sub-items) so that\n // reopening the menu always shows the top-level list cleanly.\n const expandedItem = this.menuItems()?.find(item => item.isExpanded());\n if (expandedItem) {\n expandedItem.onMegaMenuItemCollapse();\n }\n\n this.hasSecondaryFeatured.set(false);\n this.collapseMenu();\n\n if (this.isMobileOrTablet) {\n this.isStartPanel.set(false);\n this.isMobileExpanded.set(false);\n }\n this.isOpenMobile.set(false);\n }\n\n /**\n * Used for mobile menu - when user clicks on 'Back' button. Returns to the previous state.\n */\n onMegaMenuBack(): void {\n if (this.isOnePanel()) {\n this.onMegaMenuBackToStartPanel();\n } else if (this.isTwoPanels()) {\n this.onMegaMenuBackToOnePanel();\n }\n }\n\n positionMenuOverlay(parentHeaderBottomSpaceY): void {\n this.parentHeaderBottomSpaceY = parentHeaderBottomSpaceY;\n if (this.isMobileOrTablet && parentHeaderBottomSpaceY) {\n this.overlayStyleTop.set(parentHeaderBottomSpaceY);\n this.innerStyleTop.set(parentHeaderBottomSpaceY);\n } else {\n if (this.parentHeaderBottomSpaceY) {\n this.overlayStyleTop.set(parentHeaderBottomSpaceY);\n } else {\n const menuBottomY = this.el.nativeElement.getBoundingClientRect().bottom;\n this.overlayStyleTop.set(menuBottomY);\n }\n }\n }\n\n private onMegaMenuBackToOnePanel(): void {\n\n this.isStartPanel.set(false);\n this.isTwoPanels.set(false);\n this.isOnePanel.set(true);\n const currentItem = this.menuItems().find(item => item.isExpanded());\n const currentSubItem = currentItem.eclMegaMenuSublist().submenuItems().find(item => item.isExpanded());\n this.hasSecondaryFeatured.set(false);\n if (this.isMobileOrTablet) {\n currentItem.eclMegaMenuSublist().submenuItems().filter(item => !item.isExpanded()).forEach(el => {\n el.onShow();\n });\n }\n currentSubItem.isCurrent.set(false);\n currentSubItem.isExpanded.set(false);\n }\n\n private onMegaMenuBackToStartPanel(): void {\n this.isOnePanel.set(false);\n this.isStartPanel.set(true);\n const currentItem = this.menuItems().find(item => item.isExpanded());\n currentItem.isCurrent.set(false);\n currentItem.isExpanded.set(false);\n this.eclHeaderMenuComunicationService.updateExpanded(false);\n }\n\n private subscribeToEvents(): void {\n\n this.eclMegaMenuDataService.eclSubItemExpanded$.pipe(takeUntil(this.destroy$)).subscribe(isExpanded => {\n this.isTwoPanels.set(isExpanded);\n this.isOnePanel.set(!isExpanded);\n this.isStartPanel.set(false);\n });\n\n this.eclMegaMenuDataService.eclSubItemClicked$.pipe(takeUntil(this.destroy$)).subscribe(item => {\n this.onSubMenuItemClicked(item);\n this.megaMenuItemSelect.emit(item);\n });\n\n this.eclMegaMenuDataService.eclSubItemEscape$.pipe(takeUntil(this.destroy$)).subscribe(item => {\n this.closeMenuAndAnyOpenSubMenu();\n });\n }\n\n private connectMegaMenuItemEvents(item: EclMegaMenuItemComponent): void {\n outputToObservable(item.megaMenuItemClicked).pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.onMegaMenuItemClicked(item);\n });\n\n outputToObservable(item.megaMenuItemKeydown).pipe(takeUntil(this.destroy$)).subscribe((evt: KeyboardEvent) => {\n this.onMegaMenuItemKeydown(item, evt);\n });\n }\n\n private onMegaMenuItemClicked(item: EclMegaMenuItemComponent): void {\n this.hasSecondaryFeatured.set(false);\n this.menuItems().filter(megaItem => megaItem !== item).forEach(item => item.onMegaMenuItemCollapse());\n if (item.hasChildren) {\n if (item.isExpanded()) {\n if (this.isMobileOrTablet) {\n this.isOnePanel.set(true);\n this.isTwoPanels.set(false);\n this.isStartPanel.set(false);\n } else {\n if (item.eclMegaMenuSublist()?.submenuItems().at(0)!.hasChildren) {\n this.isOnePanel.set(false);\n this.isTwoPanels.set(true);\n } else {\n this.isOnePanel.set(true);\n this.isTwoPanels.set(false);\n }\n }\n this.positionMenuOverlay(this.parentHeaderBottomSpaceY);\n this.isExpanded.set(true);\n this.disableScroll();\n } else {\n this.collapseMenu();\n }\n } else {\n this.collapseMenu();\n }\n this.megaMenuItemSelect.emit(item as unknown as EclMegaMenuItem);\n }\n\n private onMegaMenuItemKeydown(item: EclMegaMenuItemComponent, evt: KeyboardEvent): void {\n\n const itemIndex = this.menuItems().findIndex(elem => elem === item);\n switch (evt.key) {\n case KeyCode.ARROW_DOWN: {\n evt.preventDefault();\n this.focusOnNextSibling(itemIndex);\n break;\n }\n case KeyCode.ARROW_UP: {\n evt.preventDefault();\n this.focusOnPrevSibling(itemIndex);\n break;\n }\n case KeyCode.ARROW_LEFT: {\n evt.preventDefault();\n this.focusOnPrevSibling(itemIndex);\n break;\n }\n case KeyCode.ARROW_RIGHT: {\n evt.preventDefault();\n this.focusOnNextSibling(itemIndex);\n break;\n }\n case KeyCode.ESCAPE: {\n this.closeMenuAndAnyOpenSubMenu();\n break;\n }\n default: {\n break;\n }\n }\n }\n\n private onSubMenuItemClicked(item: EclMegaMenuItem): void {\n if (item.isExpanded() && item.hasFeatured) {\n this.hasSecondaryFeatured.set(true);\n } else {\n this.hasSecondaryFeatured.set(false);\n }\n if (!item.hasChildren) {\n this.closeMenuAndAnyOpenSubMenu();\n }\n }\n\n private closeMenuAndAnyOpenSubMenu(): void {\n if (this.isExpanded()) {\n const expandedItem = this.menuItems().find(item => item.isExpanded());\n if (expandedItem !== undefined) {\n expandedItem.onMegaMenuItemCollapse();\n }\n this.collapseMenu();\n }\n }\n\n private collapseMenu(): void {\n this.isExpanded.set(false);\n this.isTwoPanels.set(false);\n this.isOnePanel.set(false);\n this.enableScroll();\n this.eclHeaderMenuComunicationService.updateExpanded(false);\n }\n\n private focusOnPrevSibling(index: number): void {\n if (index > 0) {\n this.menuItems().at(index-1).onFocus();\n }\n }\n\n private focusOnNextSibling(index: number): void {\n if (index < this.menuItems().length - 1) {\n this.menuItems().at(index+1).onFocus();\n }\n }\n\n private subscribeToAppShellBreakpoints(): void {\n this.euiAppShellService.breakpoints$\n .pipe(takeUntil(this.destroy$))\n .subscribe((bkps: any) => {\n this.breakpointsValue = bkps ?? this.breakpointsValue;\n\n if (typeof bkps?.isMobile !== 'undefined' || typeof bkps?.isTablet !== 'undefined') {\n this.isMobileBreakpoint.set(!!bkps.isMobile);\n // ECL uses breakpointDesktop = 1140px. Everything below that threshold\n // (md: 768-995px AND lg: 996-1139px) must use mobile/hamburger behavior.\n // isLtLargeTablet covers xs/sm/md/lg (i.e. < 1140px).\n this.isTablet.set(!!(bkps.isLtLargeTablet && !bkps.isMobile));\n return;\n }\n\n if (typeof bkps?.width === 'number') {\n const w = bkps.width;\n this.isMobileBreakpoint.set(w <= 415);\n this.isTablet.set(w > 415 && w < 1140);\n return;\n }\n\n if (bkps && typeof bkps === 'object') {\n this.isMobileBreakpoint.set(!!(bkps.Handset || bkps.Small || bkps.mobile));\n this.isTablet.set(!!(bkps.Tablet || bkps.tablet));\n return;\n }\n });\n }\n\n private handleRtlChangeState(): void {\n this.eclRtlService.currentRtlState$.pipe(takeUntil(this.destroy$)).subscribe((rtlState) => {\n if (rtlState !== undefined) {\n this.isRtl.set(rtlState);\n }\n });\n }\n\n private disableScroll(): void {\n this.renderer.addClass(this.document.body, 'ecl-mega-menu-prevent-scroll');\n }\n\n private enableScroll(): void {\n this.renderer.removeClass(this.document.body, 'ecl-mega-menu-prevent-scroll');\n }\n\n /**\n * On resize - reposition the overlay and recalculate inner top when the menu is expanded.\n * Mirrors ECL's handleResize behavior that calls positionMenuOverlay() on every resize.\n */\n private observeResizeWindow(): void {\n if (this.window) {\n fromEvent(this.window, 'resize').pipe(\n auditTime(200),\n takeUntil(this.destroy$),\n ).subscribe(() => {\n if (this.isExpanded()) {\n this.positionMenuOverlay(this.parentHeaderBottomSpaceY);\n }\n });\n }\n }\n}\n","<div class=\"ecl-mega-menu__overlay\" [style.top.px]=\"overlayStyleTop()\"></div>\n<div class=\"ecl-container ecl-mega-menu__container\">\n <button class=\"ecl-button ecl-button--tertiary ecl-mega-menu__open ecl-button--icon-only\"\n type=\"button\" [attr.aria-expanded]=\"isMobileExpanded()\" (click)=\"onMegaMenuMobileOpen()\">\n <ecl-icon icon=\"hamburger\" size=\"m\"></ecl-icon>\n <ecl-icon icon=\"close\" size=\"m\"></ecl-icon>\n <span class=\"ecl-button__label\">{{ (isOpenMobile() ? 'ecl.common.CLOSE' : 'ecl.menu.MENU') | translate }}</span>\n </button>\n <section class=\"ecl-mega-menu__inner\" [class.ecl-mega-menu__inner--expanded]=\"!isStartPanel() && isExpanded()\"\n aria-label=\"ecl mega menu\" [style.top.px]=\"innerStyleTop()\">\n <header class=\"ecl-mega-menu__inner-header\">\n <button eclButton variant=\"tertiary\" eclStyle=\"neutral\" class=\"ecl-mega-menu__back\" type=\"submit\" (click)=\"onMegaMenuBack()\">\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-270\"></ecl-icon>\n <span eclButtonLabel>Back</span>\n </button>\n </header>\n <ng-content></ng-content>\n </section>\n</div>","import { EclMegaMenuContainerDirective } from './directives/ecl-mega-menu-container.directive';\nimport { EclMegaMenuFeaturedListDirective, EclMegaMenuFeaturedListItemDescriptionDirective, EclMegaMenuFeaturedListItemDirective } from './directives/ecl-mega-menu-featured-list.directive';\nimport { EclMegaMenuFeaturedImageDirective, EclMegaMenuFeaturedPictureDirective } from './directives/ecl-mega-menu-featured-picture.directive';\nimport { EclMegaMenuListDirective, EclMegaMenuSpacerDirective, EclMegaMenuSublistDirective } from './directives/ecl-mega-menu-list.directive';\nimport { EclMegaMenuFeaturedComponent } from './ecl-mega-menu-featured/ecl-mega-menu-featured.component';\nimport { EclMegaMenuInfoComponent } from './ecl-mega-menu-info/ecl-mega-menu-info.component';\nimport { EclMegaMenuItemComponent } from './ecl-mega-menu-item/ecl-mega-menu-item.component';\nimport { EclMegaMenuSubitemComponent } from './ecl-mega-menu-subitem/ecl-mega-menu-subitem.component';\nimport { EclMegaMenuComponent } from './ecl-mega-menu.component';\n\nexport * from './directives/ecl-mega-menu-container.directive';\nexport * from './directives/ecl-mega-menu-featured-list.directive';\nexport * from './directives/ecl-mega-menu-featured-picture.directive';\nexport * from './directives/ecl-mega-menu-list.directive';\nexport * from './ecl-mega-menu-featured/ecl-mega-menu-featured.component';\nexport * from './ecl-mega-menu-info/ecl-mega-menu-info.component';\nexport * from './ecl-mega-menu-item/ecl-mega-menu-item.component';\nexport * from './ecl-mega-menu-subitem/ecl-mega-menu-subitem.component';\nexport * from './ecl-mega-menu.component';\nexport * from './models/ecl-mega-menu-item.model';\nexport * from './services/index';\n\nexport const EUI_ECL_MEGA_MENU = [\n EclMegaMenuComponent,\n EclMegaMenuItemComponent,\n EclMegaMenuSubitemComponent,\n EclMegaMenuInfoComponent,\n EclMegaMenuFeaturedComponent,\n EclMegaMenuFeaturedPictureDirective,\n EclMegaMenuFeaturedImageDirective,\n EclMegaMenuFeaturedListDirective,\n EclMegaMenuFeaturedListItemDirective,\n EclMegaMenuFeaturedListItemDescriptionDirective,\n EclMegaMenuListDirective,\n EclMegaMenuSublistDirective,\n EclMegaMenuContainerDirective,\n EclMegaMenuSpacerDirective,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["DOCUMENT","i1"],"mappings":"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"}