@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.
- package/docs/changelog.html +38 -0
- package/docs/components/EclMenuItemComponent.html +203 -161
- package/docs/components/EclMenuMegaItemComponent.html +3 -3
- package/docs/interfaces/EclMenuItem.html +4 -4
- package/docs/js/search/search_index.js +2 -2
- package/docs/json/documentation.json +152 -124
- package/docs/llms.txt +13 -7
- package/docs/properties.html +1 -1
- package/fesm2022/eui-ecl-components-ecl-accordion.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-add-to-calendar.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-animated-numbers.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-app.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-banner.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-blockquote.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-breadcrumb.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-button.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-card.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-carousel.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-category-filter.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-checkbox.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-content-block.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-content-item.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-date-block.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-date-picker.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-divider.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-expandable.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-fact-figures.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-featured.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-feedback-message.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-file-upload.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-file.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-form-group.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-form-label.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-gallery.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-help-block.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-highlight-box.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-highlighted-search.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-icon.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-inpage-navigation.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-label.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-layout-wrapper.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-link.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-list-illustration.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-list.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-loading-indicator.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-media-container.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-mega-menu.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-menu.mjs +67 -49
- package/fesm2022/eui-ecl-components-ecl-menu.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-modal.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-multiselect.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-navigation-list.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-news-ticker.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-notification.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-page-header.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-page-information.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-page-summary.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-pagination.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-popover.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-quiz.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-radio.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-range.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-rating-field.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-search-form.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-select.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-site-footer.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-site-header.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-slogan-ticker.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-social-media-follow.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-splash-page.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-spotlight.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-sticky-container.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-story-card.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-table.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-tabs.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-tag.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-text-area.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-text-input.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-text-media.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-timeline.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-tooltip.mjs.map +1 -1
- package/fesm2022/eui-ecl-core.mjs.map +1 -1
- package/fesm2022/eui-ecl-shared.mjs.map +1 -1
- package/package.json +1 -1
- package/types/eui-ecl-components-ecl-accordion.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-add-to-calendar.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-animated-numbers.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-app.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-banner.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-blockquote.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-breadcrumb.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-button.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-card.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-carousel.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-category-filter.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-checkbox.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-content-block.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-content-item.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-date-block.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-date-picker.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-divider.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-expandable.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-fact-figures.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-featured.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-feedback-message.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-file-upload.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-file.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-form-group.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-form-label.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-gallery.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-help-block.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-highlight-box.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-highlighted-search.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-icon.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-inpage-navigation.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-label.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-layout-wrapper.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-link.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-list-illustration.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-list.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-loading-indicator.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-media-container.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-mega-menu.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-menu.d.ts +16 -11
- package/types/eui-ecl-components-ecl-menu.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-modal.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-multiselect.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-navigation-list.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-news-ticker.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-notification.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-page-header.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-page-information.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-page-summary.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-pagination.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-popover.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-quiz.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-radio.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-range.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-rating-field.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-search-form.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-select.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-site-footer.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-site-header.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-slogan-ticker.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-social-media-follow.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-splash-page.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-spotlight.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-sticky-container.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-story-card.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-table.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-tabs.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-tag.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-text-area.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-text-input.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-text-media.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-timeline.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-tooltip.d.ts.map +1 -1
- package/types/eui-ecl-core.d.ts.map +1 -1
- package/types/eui-ecl-shared.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-ecl-components-ecl-menu.mjs","sources":["../../components/ecl-menu/events/ecl-menu-item.event.ts","../../components/ecl-menu/ecl-menu-mega/ecl-menu-mega-item.component.ts","../../components/ecl-menu/ecl-menu-mega/ecl-menu-mega-item.component.html","../../components/ecl-menu/ecl-menu-mega/ecl-menu-mega.component.ts","../../components/ecl-menu/ecl-menu-mega/ecl-menu-mega.component.html","../../components/ecl-menu/ecl-menu/ecl-menu-item.component.ts","../../components/ecl-menu/ecl-menu/ecl-menu-item.component.html","../../components/ecl-menu/ecl-menu/ecl-menu.component.ts","../../components/ecl-menu/ecl-menu/ecl-menu.component.html","../../components/ecl-menu/index.ts","../../components/ecl-menu/eui-ecl-components-ecl-menu.ts"],"sourcesContent":["import { EclDomEvent } from '@eui/ecl/core';\nimport { EclMenuItem } from '../models/ecl-menu-item.model';\n\nexport class EclMenuItemSelectEvent extends EclDomEvent<Event> {\n constructor(\n public menuItem: EclMenuItem,\n public domEvent: Event = null,\n ) {\n super(domEvent);\n }\n}\n\nexport class EclMenuItemHoverEvent extends EclDomEvent<MouseEvent> {\n constructor(\n public menuItem: EclMenuItem,\n public domEvent: MouseEvent = null,\n ) {\n super(domEvent);\n }\n}\n\nexport class EclMenuItemHoverOutEvent extends EclDomEvent<MouseEvent> {\n constructor(\n public menuItem: EclMenuItem,\n public domEvent: MouseEvent = null,\n ) {\n super(domEvent);\n }\n}\n\nexport class EclMenuItemFocusEvent extends EclDomEvent<FocusEvent> {\n constructor(\n public menuItem: EclMenuItem,\n public domEvent: FocusEvent = null,\n ) {\n super(domEvent);\n }\n}\n\nexport class EclMenuItemCaretEvent extends EclDomEvent<MouseEvent> {\n constructor(\n public menuItem: EclMenuItem,\n public domEvent: MouseEvent = null,\n ) {\n super(domEvent);\n }\n}\n\nexport class EclMenuItemKeydownEvent extends EclDomEvent<KeyboardEvent> {\n constructor(\n public menuItem: EclMenuItem,\n public domEvent: KeyboardEvent = null,\n ) {\n super(domEvent);\n }\n}\n\nexport class EclMenuItemParentFocusEvent {\n constructor(\n public menuItem: EclMenuItem) {}\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n Renderer2,\n booleanAttribute,\n forwardRef,\n inject,\n input,\n linkedSignal,\n output,\n signal,\n contentChildren,\n viewChild,\n} from '@angular/core';\nimport { Params, QueryParamsHandling, RouterLink } from '@angular/router';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { KeyCode } from '@eui/ecl/core';\nimport { EclLinkDirective } from '@eui/ecl/components/ecl-link';\nimport { EclIconComponent } from '@eui/ecl/components/ecl-icon';\nimport { EclMenuItem } from '../models/ecl-menu-item.model';\nimport { EclMenuItemKeydownEvent, EclMenuItemSelectEvent } from '../events/ecl-menu-item.event';\n\n/**\n * This component represents a sub-menu item, that is on the second level of the ecl-menu.\n * Adds some custom styling and functionality.\n */\n@Component({\n selector: 'ecl-menu-mega-item',\n templateUrl: './ecl-menu-mega-item.component.html',\n imports: [NgTemplateOutlet, RouterLink],\n styles: [\n `\n :host {\n display: list-item;\n }\n `,\n ],\n host: {\n 'class': 'ecl-menu__subitem',\n role: 'listitem',\n '[class.ecl-menu__subitem--current]': 'isCurrent()',\n '[class.ecl-menu__see-all]': 'isSeeAll()',\n '(click)': 'onHostClick($event)',\n },\n})\nexport class EclMenuMegaItemComponent extends ECLBaseDirective implements EclMenuItem, AfterViewInit {\n\n readonly id = input<string>(undefined);\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 readonly isCurrentInput = input(false, { alias: 'isCurrent', transform: booleanAttribute });\n readonly isCurrent = linkedSignal(() => this.isCurrentInput());\n /**\n * An additional item, that represents a link.\n */\n readonly isSeeAll = input(false, { transform: booleanAttribute });\n readonly linkExtraAttributes = input<Record<string, string>>(undefined);\n\n readonly menuItemSelect = output<EclMenuItemSelectEvent>();\n readonly menuItemKeydown = output<EclMenuItemKeydownEvent>();\n\n readonly hasChildren = false;\n readonly isExpanded = signal(true);\n readonly children: EclMenuItem[] = [];\n\n /**\n * The actual link of the menu item.\n */\n protected readonly megaMenuLink = viewChild<ElementRef>('megaMenuLink');\n /**\n * If menu item includes any icon, added by the user (for example for 'external' link).\n */\n protected readonly iconComponents = contentChildren(forwardRef(() => EclIconComponent));\n /**\n * If menu item includes any links, added by the user.\n */\n protected readonly links = contentChildren(forwardRef(() => EclLinkDirective));\n\n private renderer = inject(Renderer2);\n\n ngAfterViewInit(): void {\n this.manageContentChildren();\n this.setExtraAttributesForLink(this.megaMenuLink()?.nativeElement, this.linkExtraAttributes());\n }\n\n /**\n * When the item is the current active item, the 'aria-current' attribute is set to 'page'.\n */\n get ariaCurrent(): string | null {\n return this.isCurrent() ? 'page' : null;\n }\n\n /**\n *\n * @param evt This event is emited, when the menu item is clicked.\n */\n onItemClick(evt: Event): void {\n this.menuItemSelect.emit(new EclMenuItemSelectEvent(this, evt as MouseEvent));\n\n if (!this.href()) {\n evt.preventDefault();\n }\n }\n\n /**\n * Focus should be set on the underlying <a> element.\n */\n onFocus(): void {\n this.megaMenuLink().nativeElement.focus();\n }\n\n onKeydown(evt: Event): void {\n if ((evt as KeyboardEvent).key === KeyCode.ENTER) {\n this.onItemClick(evt);\n }\n this.menuItemKeydown.emit(new EclMenuItemKeydownEvent(this, evt as KeyboardEvent));\n }\n\n protected onHostClick(evt: MouseEvent): void {\n evt.stopPropagation();\n }\n\n /**\n * Adds specific classes to content children (icons or links).\n */\n private manageContentChildren(): void {\n if (this.iconComponents()) {\n setTimeout(() => {\n this.iconComponents().forEach((icn) => {\n icn.baseDirective.class.set('ecl-menu__sublink-icon');\n });\n });\n }\n\n if (this.links()) {\n setTimeout(() => {\n this.links().forEach((icn) => {\n icn.class.set(icn.class() ? icn.class() + ' ecl-menu__sublink' : 'ecl-menu__sublink');\n });\n });\n }\n }\n\n private 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}\n","@if (!isSeeAll()) {\n @if (href()) {\n <a #megaMenuLink\n [href]=\"href()\"\n [target]=\"target()\"\n class=\"ecl-link ecl-link--standalone ecl-menu__sublink\"\n [class.ecl-menu__sublink--current]=\"isCurrent()\"\n [attr.aria-current]=\"ariaCurrent\"\n (click)=\"onItemClick($event)\"\n (keydown)=\"onKeydown($event)\">\n {{ label() }}\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n } @else {\n <a #megaMenuLink\n tabindex=\"0\"\n [routerLink]=\"routerLink()\"\n [queryParams]=\"queryParams()\"\n [queryParamsHandling]=\"queryParamsHandling()\"\n class=\"ecl-link ecl-link--standalone ecl-menu__sublink\"\n [class.ecl-menu__sublink--current]=\"isCurrent()\"\n [attr.aria-current]=\"ariaCurrent\"\n (click)=\"onItemClick($event)\"\n (keydown)=\"onKeydown($event)\">\n {{ label() }}\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n }\n} @else {\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n}\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n","import { Component, OnDestroy, IterableDiffer, IterableChanges, IterableDiffers, ElementRef, computed, effect, inject, output, signal, contentChildren } from '@angular/core';\nimport { outputToObservable } from '@angular/core/rxjs-interop';\nimport { EclMenuMegaItemComponent } from './ecl-menu-mega-item.component';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { KeyCode } from '@eui/ecl/core';\nimport { EclMenuItem } from '../models/ecl-menu-item.model';\nimport { EclMenuItemKeydownEvent, EclMenuItemSelectEvent } from '../events';\n\n/**\n * This component acts as a wrapper for the second level of menu items, that are children of one root item.\n * Provides functionality for some common events like keyboard navigation and manages relations between sub items.\n */\n@Component({\n selector: 'ecl-menu-mega',\n templateUrl: './ecl-menu-mega.component.html',\n host: {\n '[class]': 'cssClasses()',\n '[class.ecl-menu__mega--rtl]': 'isRtlDisplay()',\n '[style.left.px]': 'offsetLeft()',\n '[style.right.px]': 'offsetRight()',\n },\n})\nexport class EclMenuMegaComponent extends ECLBaseDirective implements OnDestroy {\n el = inject(ElementRef);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly isRtlDisplay = signal<boolean | any>(false);\n readonly offsetLeft = signal<number | null>(null);\n readonly offsetRight = signal<number | null>(null);\n\n /**\n * List of the sub items.\n */\n readonly eclMenuMegaItems = contentChildren(EclMenuMegaItemComponent);\n\n readonly menuItemSelect = output<EclMenuItemSelectEvent>();\n /**\n * Used in keyboard navigation, when focus has to be moved to the parent item.\n */\n readonly menuMegaItemParentFocus = output<EclMenuItemSelectEvent>();\n /**\n * Used when kyboard navigation with TAB reaches the last sub item.\n */\n readonly menuMegaLastItemTab = output<void>();\n\n protected readonly cssClasses = computed<string>(() => [super.getCssClasses('ecl-menu__mega')].join(' '));\n\n private differ: IterableDiffer<EclMenuMegaItemComponent>;\n private diff: IterableChanges<EclMenuMegaItemComponent>;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private differs = inject(IterableDiffers);\n\n constructor() {\n super();\n this.differ = this.differs.find([]).create();\n // Subscribe to the events of each new added item whenever the content children change.\n effect(() => {\n this.eclMenuMegaItems();\n this.onMenuItemChanges();\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n selectFirstSubItem(): void {\n const items = this.eclMenuMegaItems();\n if (items.length > 0) {\n items[0].onFocus();\n }\n }\n\n private onMenuItemChanges(): void {\n const items = this.eclMenuMegaItems();\n this.diff = this.differ.diff(items);\n\n if (!this.diff) {\n items.forEach((rootItem) => {\n this.connectMenuItemEvents(rootItem);\n });\n } else {\n this.diff.forEachAddedItem((change) => {\n this.connectMenuItemEvents(change.item);\n });\n }\n }\n\n private connectMenuItemEvents(item: EclMenuMegaItemComponent): void {\n outputToObservable(item.menuItemSelect).pipe(takeUntil(this.destroy$)).subscribe((evt: EclMenuItemSelectEvent) => {\n this.onMenuItemSelected(item, evt);\n });\n outputToObservable(item.menuItemKeydown).pipe(takeUntil(this.destroy$)).subscribe((evt: EclMenuItemKeydownEvent) => {\n this.onMenuItemKeydown(item, evt);\n });\n }\n\n private onMenuItemKeydown(item: EclMenuMegaItemComponent, evt: EclMenuItemKeydownEvent): void {\n switch (evt.domEvent.key) {\n case KeyCode.ARROW_DOWN: {\n evt.preventDefault();\n this.onNextMenuItemFocus(item);\n break;\n }\n case KeyCode.ARROW_UP: {\n evt.preventDefault();\n this.onPrevMenuItemFocus(item);\n break;\n }\n case KeyCode.ESCAPE: {\n evt.preventDefault();\n this.menuMegaItemParentFocus.emit(new EclMenuItemSelectEvent(item));\n break;\n }\n case KeyCode.TAB: {\n if (this.isLastItem(item)) {\n evt.preventDefault();\n this.menuMegaLastItemTab.emit();\n }\n break;\n }\n default: {\n break;\n }\n }\n }\n\n private isLastItem(item: EclMenuMegaItemComponent): boolean {\n const items = this.eclMenuMegaItems();\n return items[items.length - 1] === item;\n }\n\n private onPrevMenuItemFocus(item: EclMenuMegaItemComponent): void {\n const items = this.eclMenuMegaItems();\n const index = items.findIndex(el => item === el);\n if (index !== 0) {\n items[index - 1].onFocus();\n } else {\n this.menuMegaItemParentFocus.emit(new EclMenuItemSelectEvent(item));\n }\n }\n\n private onNextMenuItemFocus(item: EclMenuMegaItemComponent): void {\n const items = this.eclMenuMegaItems();\n const index = items.findIndex(el => item === el);\n if (index !== items.length - 1) {\n items[index + 1].onFocus();\n }\n }\n\n private onMenuItemSelected(item: EclMenuItem, evt: EclMenuItemSelectEvent): void {\n this.deselectAllMenuItems(this.eclMenuMegaItems());\n this.selectMenuItem(item);\n this.sendMenuItemSelectEvent(evt);\n }\n\n private selectMenuItem(item: EclMenuItem): void {\n item.isCurrent.set(true);\n }\n\n private deselectAllMenuItems(items: ReadonlyArray<EclMenuItem>): void {\n items.forEach((it) => {\n it.isCurrent.set(false);\n });\n }\n\n private sendMenuItemSelectEvent(evt: EclMenuItemSelectEvent): void {\n this.menuItemSelect.emit(new EclMenuItemSelectEvent(evt.menuItem, evt.domEvent));\n }\n}\n","<ul class=\"ecl-menu__sublist\">\n <ng-content></ng-content>\n</ul>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterContentInit,\n afterNextRender,\n Component,\n ElementRef,\n forwardRef,\n inject,\n OnDestroy,\n Renderer2,\n ViewEncapsulation,\n DOCUMENT,\n booleanAttribute,\n computed,\n input,\n linkedSignal,\n output,\n signal,\n contentChild,\n viewChild,\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 { EUI_ECL_LINK } from '@eui/ecl/components/ecl-link';\nimport { ECLBaseDirective, KeyCode } from '@eui/ecl/core';\nimport { Subject } from 'rxjs';\nimport { distinctUntilChanged, map, takeUntil } from 'rxjs/operators';\nimport { EclMenuMegaComponent } from '../ecl-menu-mega';\nimport {\n EclMenuItemCaretEvent,\n EclMenuItemFocusEvent,\n EclMenuItemHoverEvent,\n EclMenuItemHoverOutEvent,\n EclMenuItemKeydownEvent,\n EclMenuItemSelectEvent,\n} from '../events';\nimport { EclMenuItem } from '../models/ecl-menu-item.model';\n\nconst enum ColTrigger {\n COL1_TRIGGER = 5,\n COL2_TRIGGER = 9,\n COL3_TRIGGER = 13,\n}\n\n/**\n * This component represents a root menu item. Adds styling and functionality to menu item.\n */\n@Component({\n selector: 'ecl-menu-item',\n templateUrl: './ecl-menu-item.component.html',\n imports: [NgTemplateOutlet, RouterLink, RouterLinkWithHref, ...EUI_ECL_BUTTON, ...EUI_ECL_ICON, ...EUI_ECL_LINK],\n encapsulation: ViewEncapsulation.None,\n host: {\n role: 'listitem',\n '[class]': 'cssClasses()',\n '[class.ecl-menu__item--has-children]': 'hasEclChildrenDataAttribute',\n '[attr.aria-haspopup]': 'hasEclChildrenDataAttribute',\n '[attr.data-expanded]': 'isDataExpanded',\n '(mouseenter)': 'onItemMouseEnter($event)',\n '(mouseleave)': 'onItemMouseLeave($event)',\n },\n})\nexport class EclMenuItemComponent extends ECLBaseDirective implements EclMenuItem, AfterContentInit, OnDestroy {\n el = inject(ElementRef);\n\n readonly id = input<string>(undefined);\n readonly label = input<string>(undefined);\n /**\n * When in mobile view, use this property to set aria-label for the toggle items button (to expand item's children).\n */\n readonly toggleAriaLabel = 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 readonly isCurrentInput = input(false, { alias: 'isCurrent', transform: booleanAttribute });\n readonly isCurrent = linkedSignal(() => this.isCurrentInput());\n /**\n * Custom attributes, to be added to the <a> tag of the menu item.\n */\n readonly linkExtraAttributes = input<Record<string, string>>(undefined);\n\n readonly menuItemSelect = output<EclMenuItemSelectEvent>();\n readonly menuItemCaret = output<EclMenuItemCaretEvent>();\n /**\n * Event that is emited on clicking the caret button to expand item's children in mobile mode.\n */\n readonly menuItemHover = output<EclMenuItemHoverEvent>();\n readonly menuItemHoverOut = output<EclMenuItemHoverOutEvent>();\n readonly menuMegaItemSelect = output<EclMenuItemSelectEvent>();\n readonly menuItemFocus = output<EclMenuItemFocusEvent>();\n readonly menuItemKeydown = output<EclMenuItemKeydownEvent>();\n /**\n * This event is emited when the keyboard nav reaches the last item in mobile view.\n * Then the next focused element should be the 'close' btn.\n */\n readonly menuMegaLastItemTab = output<void>();\n\n readonly isExpanded = signal(false);\n readonly isHovered = signal(false);\n /**\n * Used when menu has overlay, to show if the item is currently displayed.\n */\n readonly isVisible = signal(true);\n readonly isMobileBreakpoint = signal(false);\n\n readonly submenu = contentChild(forwardRef(() => EclMenuMegaComponent));\n\n /**\n * Set to 'true', when item has more than 13 chidren and the overlay needs to use the full available space.\n */\n readonly isFull = computed<boolean>(() => this.hasChildren && this.submenu().eclMenuMegaItems().length >= ColTrigger.COL3_TRIGGER);\n\n /**\n * The default role of the item is 'listitem' and should not be changed.\n */\n protected readonly cssClasses = computed<string>(() =>\n [\n super.getCssClasses('ecl-menu__item'),\n this.isCurrent() ? 'ecl-menu__item--current' : '',\n this.isExpanded() ? 'ecl-menu__item--expanded' : '',\n this.getClassDependingChildrenCnt(),\n ]\n .join(' ')\n .trim());\n\n /**\n * The <a> element of the menu item, when there are no children.\n */\n protected readonly menuLink = viewChild<ElementRef<HTMLAnchorElement>>('menuLink');\n /**\n * The <button> element of the menu item, when item has children.\n */\n protected readonly menuButton = viewChild(EclButtonComponent);\n\n private readonly doc = inject(DOCUMENT);\n private readonly window = this.doc.defaultView; // Window | null\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private renderer = inject(Renderer2);\n private appShell = inject(EuiAppShellService);\n\n constructor() {\n super();\n afterNextRender(() => {\n this.observeBreakpointChanges();\n this.setExtraAttributesForLink(this.menuLink()?.nativeElement, this.linkExtraAttributes());\n });\n }\n\n get hasEclChildrenDataAttribute(): boolean {\n return this.hasChildren || undefined;\n }\n\n get isDataExpanded(): boolean {\n return this.hasChildren ? this.isHovered() : null;\n }\n\n /**\n * 'aria-current' is set to 'page' only when this item itself is the current page, and not when it is\n * marked current merely because one of its children is the active item (in that case the child link\n * carries 'aria-current=\"page\"'). Derived from live state so it stays correct whether 'isCurrent' is set\n * at render time or updated on selection.\n */\n get ariaCurrent(): string | null {\n return this.isCurrent() && !this.hasCurrentChild ? 'page' : null;\n }\n\n /**\n * Whether any child (sub-item) is the current item.\n */\n get hasCurrentChild(): boolean {\n return this.children.some((child) => child.isCurrent());\n }\n\n get hasChildren(): boolean {\n return !!this.submenu();\n }\n\n get children(): EclMenuItem[] {\n return this.hasChildren ? this.submenu().eclMenuMegaItems() : [];\n }\n\n ngAfterContentInit(): void {\n // Subscibe to submenu component events.\n const submenu = this.submenu();\n if (submenu) {\n outputToObservable(submenu.menuItemSelect).pipe(takeUntil(this.destroy$)).subscribe((it: EclMenuItemSelectEvent) => {\n this.menuMegaItemSelect.emit(new EclMenuItemSelectEvent(it.menuItem, it.domEvent));\n });\n outputToObservable(submenu.menuMegaItemParentFocus).pipe(takeUntil(this.destroy$)).subscribe(() => {\n if (!this.isMobileBreakpoint()) {\n this.onFocusFromSubmenu();\n }\n });\n outputToObservable(submenu.menuMegaLastItemTab).pipe(takeUntil(this.destroy$)).subscribe(() => {\n if (this.isMobileBreakpoint()) {\n this.menuMegaLastItemTab.emit();\n }\n });\n\n if (this.hasSubmenuAnySelections()) {\n this.isCurrent.set(true);\n }\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n onItemMouseEnter(evt: MouseEvent): void {\n if (this.isMobileBreakpoint()) return;\n this.menuItemHover.emit(new EclMenuItemHoverEvent(this, evt));\n }\n\n onItemMouseLeave(evt: MouseEvent): void {\n if (this.isMobileBreakpoint()) return;\n this.menuItemHoverOut.emit(new EclMenuItemHoverOutEvent(this, evt));\n }\n\n onItemFocus(evt: FocusEvent): void {\n this.menuItemFocus.emit(new EclMenuItemFocusEvent(this, evt));\n }\n\n onItemClick(evt: Event): void {\n this.menuItemSelect.emit(new EclMenuItemSelectEvent(this, evt));\n\n if (!this.href()) {\n evt.stopPropagation();\n }\n }\n\n /**\n * When clicking the caret button, to expand item's children. Used in mobile view.\n * @param evt\n */\n onItemCaretClick(evt: MouseEvent): void {\n this.menuItemCaret.emit(new EclMenuItemCaretEvent(this, evt));\n }\n\n /**\n * Manages the state when the item is focused, when navigating with keyboard and the navigation is coming from the submenu.\n */\n onFocusFromSubmenu(): void {\n this.onButtonFocus();\n this.isHovered.set(false);\n this.isExpanded.set(false);\n }\n\n /**\n * Manages the state when the item is focused, when navigating with keyboard and the navigation is coming from\n * the next root menu item.\n */\n onFocusFromNext(): void {\n if (this.menuButton()) {\n this.onButtonFocus();\n } else {\n this.onLinkFocus();\n }\n }\n\n /**\n * Manages the state when the item is focused, when navigating with keyboard and the navigation is coming from\n * the previous root menu item.\n */\n onFocusFromPrev(): void {\n this.onLinkFocus();\n }\n\n /**\n * Manages the keyboard navigation when the current element is the button of the menu item.\n * @param evt\n */\n onButtonKeydown(evt: Event): void {\n switch ((evt as KeyboardEvent).key) {\n case KeyCode.ARROW_DOWN: {\n evt.preventDefault();\n if (this.isHovered()) {\n this.selectFirstMegaMenuItem();\n } else {\n this.menuItemKeydown.emit(new EclMenuItemKeydownEvent(this, evt as KeyboardEvent));\n }\n break;\n }\n case KeyCode.ARROW_UP: {\n evt.preventDefault();\n this.onLinkFocus();\n break;\n }\n case KeyCode.ARROW_RIGHT: {\n evt.preventDefault();\n this.menuItemKeydown.emit(new EclMenuItemKeydownEvent(this, evt as KeyboardEvent));\n break;\n }\n case KeyCode.ARROW_LEFT: {\n evt.preventDefault();\n this.onLinkFocus();\n break;\n }\n case KeyCode.TAB: {\n this.menuItemKeydown.emit(new EclMenuItemKeydownEvent(this, evt as KeyboardEvent));\n break;\n }\n case KeyCode.ENTER: {\n evt.preventDefault();\n this.menuItemKeydown.emit(new EclMenuItemKeydownEvent(this, evt as KeyboardEvent));\n break;\n }\n case KeyCode.ESCAPE: {\n evt.preventDefault();\n this.menuItemKeydown.emit(new EclMenuItemKeydownEvent(this, evt as KeyboardEvent));\n break;\n }\n default: {\n break;\n }\n }\n }\n\n /**\n * Manages the keyboard navigation when the current element is the <a> tag of the menu item.\n * @param evt\n */\n onLinkKeydown(evt: Event): void {\n switch ((evt as KeyboardEvent).key) {\n case KeyCode.ARROW_DOWN: {\n evt.preventDefault();\n this.onLinkNextFocus(evt);\n break;\n }\n case KeyCode.ARROW_UP: {\n evt.preventDefault();\n this.menuItemKeydown.emit(new EclMenuItemKeydownEvent(this, evt as KeyboardEvent));\n break;\n }\n case KeyCode.ARROW_RIGHT: {\n evt.preventDefault();\n this.onLinkNextFocus(evt);\n break;\n }\n case KeyCode.ARROW_LEFT: {\n evt.preventDefault();\n this.menuItemKeydown.emit(new EclMenuItemKeydownEvent(this, evt as KeyboardEvent));\n break;\n }\n case KeyCode.ENTER: {\n this.onItemClick(evt);\n break;\n }\n case KeyCode.ESCAPE: {\n evt.preventDefault();\n this.onLinkEscape(evt);\n break;\n }\n default: {\n break;\n }\n }\n }\n\n /**\n * This method calculates height and width of an item, depending the maximum of lines(rows) allowed.\n * Depends on the 'maxLines' property of the parent menu component.\n * @param maxLines - property that sets the maximum possible lines in a menu item.\n * @param isMobileBreakpoint\n * @returns\n */\n checkMenuItem(maxLines: number, isMobileBreakpoint: boolean): void {\n if (maxLines < 1) return;\n\n const currentItem = this.el.nativeElement;\n const currentLink = this.menuLink().nativeElement;\n if (isMobileBreakpoint) {\n this.renderer.setStyle(currentLink, 'width', '100%');\n return;\n }\n this.renderer.setStyle(currentItem, 'alignItems', 'flex-start');\n const linkStyle = this.window.getComputedStyle(currentLink);\n\n const maxHeight = this.getMenuItemLinkMaxHeight(linkStyle, maxLines);\n\n if (currentLink.offsetHeight > maxHeight) {\n this.changeMenuItemLinkWidth(currentLink, maxLines, linkStyle);\n }\n this.renderer.removeStyle(currentItem, 'alignItems');\n }\n\n private onLinkEscape(evt: Event): void {\n const menuButton = this.menuButton();\n if (menuButton) {\n menuButton.el.nativeElement.focus();\n evt.stopPropagation();\n } else {\n this.menuLink().nativeElement.blur();\n }\n }\n\n private selectFirstMegaMenuItem(): void {\n this.submenu().selectFirstSubItem();\n }\n\n private onLinkFocus(): void {\n this.menuLink().nativeElement.focus();\n }\n\n private onLinkNextFocus(evt: Event): void {\n if (this.menuButton()) {\n this.onButtonFocus();\n } else {\n this.menuItemKeydown.emit(new EclMenuItemKeydownEvent(this, evt as KeyboardEvent));\n }\n }\n\n private onButtonFocus(): void {\n this.menuButton().el.nativeElement.focus();\n }\n\n private getMenuItemLinkMaxHeight(linkStyle: CSSStyleDeclaration, maxLines: number): number {\n return parseInt(linkStyle.lineHeight, 10) * maxLines + parseInt(linkStyle.paddingTop, 10) + parseInt(linkStyle.paddingBottom, 10);\n }\n\n /**\n * Calculates width of a menu item, depending on maximum lines of text allowed.\n * @param currentLink\n * @param maxLines\n * @param linkStyle\n * @returns\n */\n private changeMenuItemLinkWidth(currentLink: HTMLAnchorElement, maxLines: number, linkStyle: CSSStyleDeclaration): void {\n this.renderer.setStyle(currentLink, 'white-space', 'nowrap');\n const linkWidth = currentLink.offsetWidth;\n if (maxLines === 1) {\n this.renderer.setStyle(currentLink, 'width', `${linkWidth + parseInt(linkStyle.paddingLeft, 10) + parseInt(linkStyle.paddingRight, 10)}px`);\n this.renderer.removeStyle(currentLink, 'white-space');\n return;\n }\n const textSize = currentLink.text.length;\n const letterWidth = Math.ceil(linkWidth / textSize);\n const wordsArray = currentLink.text.trim().split(' ');\n const goalWidth = Math.ceil(linkWidth / maxLines);\n const firstWord = wordsArray[0];\n let cnt = 1;\n let wordWidth = Math.ceil((firstWord.length + 1) * letterWidth);\n while (wordWidth < goalWidth) {\n wordWidth += Math.ceil((wordsArray[cnt].length + 1) * letterWidth);\n cnt++;\n }\n this.renderer.setStyle(currentLink, 'width', `${wordWidth + parseInt(linkStyle.paddingLeft, 10) + parseInt(linkStyle.paddingRight, 10)}px`);\n this.renderer.removeStyle(currentLink, 'white-space');\n }\n\n private getClassDependingChildrenCnt(): string {\n if (this.hasChildren) {\n if (this.submenu().eclMenuMegaItems().length < ColTrigger.COL1_TRIGGER) {\n return 'ecl-menu__item--col1';\n } else if (this.submenu().eclMenuMegaItems().length < ColTrigger.COL2_TRIGGER) {\n return 'ecl-menu__item--col2';\n } else if (this.submenu().eclMenuMegaItems().length < ColTrigger.COL3_TRIGGER) {\n return 'ecl-menu__item--col3';\n } else {\n return 'ecl-menu__item--full';\n }\n }\n return '';\n }\n\n private hasSubmenuAnySelections(): boolean {\n const submenu = this.submenu();\n return submenu && !!submenu.eclMenuMegaItems().find((it) => it.isCurrent());\n }\n\n private 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\n private observeBreakpointChanges(): void {\n this.appShell.getState<any>('breakpoints')\n .pipe(\n map(bp => !!(bp?.isMobile || bp?.isTablet || bp?.isLtLargeTablet)), // xs/sm/md/lg (< 1140px)\n distinctUntilChanged(),\n takeUntil(this.destroy$),\n )\n .subscribe((isMobile) => {\n this.isMobileBreakpoint.set(isMobile);\n });\n }\n}\n","@if (href()) {\n <a eclLink\n #menuLink\n variant=\"standalone\"\n [href]=\"href()\"\n [target]=\"target()\"\n class=\"ecl-menu__link\"\n [class.ecl-menu__link--current]=\"isCurrent()\"\n [attr.aria-current]=\"ariaCurrent\"\n (focus)=\"onItemFocus($event)\"\n (click)=\"onItemClick($event)\"\n (keydown)=\"onLinkKeydown($event)\">\n {{ label() }}\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n} @else {\n <a eclLink\n #menuLink\n variant=\"standalone\"\n [attr.tabindex]=\"tabindex || 0\"\n [routerLink]=\"routerLink()\"\n [queryParams]=\"queryParams()\"\n [queryParamsHandling]=\"queryParamsHandling()\"\n class=\"ecl-menu__link\"\n [class.ecl-menu__link--current]=\"isCurrent()\"\n [attr.aria-current]=\"ariaCurrent\"\n (focus)=\"onItemFocus($event)\"\n (click)=\"onItemClick($event)\"\n (keydown)=\"onLinkKeydown($event)\">\n {{ label() }}\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n}\n\n@if (hasChildren) {\n @if (isMobileBreakpoint()) {\n <button\n eclButton\n variant=\"tertiary\"\n class=\"ecl-menu__button-caret ecl-button--neutral\"\n type=\"button\"\n [attr.aria-label]=\"toggleAriaLabel() || 'Access item children'\"\n (click)=\"onItemCaretClick($event)\"\n (keydown)=\"onButtonKeydown($event)\">\n <ecl-icon icon=\"corner-arrow\" size=\"m\" transform=\"rotate-180\" class=\"ecl-button__icon\"></ecl-icon>\n </button>\n } @else {\n <button\n eclButton\n variant=\"tertiary\"\n class=\"ecl-menu__button-caret ecl-button--neutral\"\n type=\"button\"\n [attr.aria-label]=\"toggleAriaLabel() || 'Access item children'\"\n [attr.data-expanded]=\"isDataExpanded\"\n (keydown)=\"onButtonKeydown($event)\">\n <ecl-icon icon=\"corner-arrow\" size=\"m\" transform=\"rotate-180\" class=\"ecl-button__icon\"></ecl-icon>\n </button>\n }\n}\n\n<ng-content select=\"ecl-menu-mega\"></ng-content>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n","import { isPlatformBrowser } from '@angular/common';\nimport { AfterContentInit, ChangeDetectorRef, Component, DOCUMENT, ElementRef, OnDestroy, OnInit, PLATFORM_ID, afterNextRender, computed, effect, inject, numberAttribute, output, input, signal, contentChildren, viewChild } from '@angular/core';\nimport { outputToObservable } from '@angular/core/rxjs-interop';\nimport { EuiAppShellService } from '@eui/core';\nimport { EUI_ECL_BUTTON, EclButtonComponent } from '@eui/ecl/components/ecl-button';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\nimport { ECLBaseDirective, EclRtlService, KeyCode } from '@eui/ecl/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport type Hammer from 'hammerjs';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { EclMenuItemCaretEvent, EclMenuItemHoverEvent, EclMenuItemKeydownEvent, EclMenuItemSelectEvent } from '../events';\nimport { EclMenuItem } from '../models/ecl-menu-item.model';\nimport { EclMenuItemComponent } from './ecl-menu-item.component';\n\n/**\n * The horizontal menu is used as a primary navigation and it can display up to 2 levels.\n * It directs users to the pages where they need to visit.\n */\n@Component({\n selector: 'ecl-menu',\n templateUrl: './ecl-menu.component.html',\n imports: [TranslatePipe, ...EUI_ECL_BUTTON, ...EUI_ECL_ICON],\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n host: {\n role: 'navigation',\n '[class]': 'cssClasses()',\n '[class.ecl-menu--forced-mobile]': 'isTablet()',\n '[class.ecl-menu--forced-close]': 'isMenuHidden()',\n '[attr.data-expanded]': 'isHamburgerMenuOpened() ? \"\" : null',\n '(document:click)': 'onDocumentClick($event)',\n '(keydown.escape)': 'onEscapePress($event)',\n },\n})\nexport class EclMenuComponent extends ECLBaseDirective implements OnInit, AfterContentInit, OnDestroy {\n\n /**\n * Adds some additional styling for the menu items' labels.\n * Depending on that value, the labels can drop on 2-3 lines, if they are longer.\n */\n readonly maxLines = input(0, { transform: numberAttribute });\n\n readonly menuItemSelect = output<EclMenuItemSelectEvent>();\n readonly openHamburgerMenu = output();\n readonly closeHamburgerMenu = output();\n\n readonly isHamburgerMenuOpened = signal(false);\n readonly isMobileBreakpoint = signal(false);\n readonly isTablet = signal(false);\n readonly isMenuHidden = signal(false);\n readonly hasOverflow = signal(false);\n /** Controls the delayed application of CSS transition class (prevents Chrome flash on load) */\n readonly hasTransition = signal(false);\n /**\n * Show/hide the specific class for the 'previous' and 'next' buttons.\n */\n readonly isPrevBtnCurrentClass = signal(false);\n readonly menuListStyleRight = signal('auto');\n readonly menuListStyleLeft = signal('auto');\n readonly overlayStyleTop = signal<number | null>(null);\n readonly innerStyleTop = signal<number | null>(null);\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 /**\n * The main items of the menu.\n */\n protected readonly eclRootMenuItems = contentChildren(EclMenuItemComponent);\n /**\n * The element, that wraps the main menu items and the back and forth button.\n */\n protected readonly innerSection = viewChild<ElementRef>('innerSection');\n /**\n * The element that wraps the main menu items.\n */\n protected readonly itemsList = viewChild<ElementRef>('itemsList');\n /**\n * When there is an overflow of the menu, the 'previous' button to navigate back to first hidden items.\n */\n protected readonly btnPrevious = viewChild<EclButtonComponent>('btnPrevious');\n /**\n * When there is an overflow of the menu, the 'next' button to navigate to next hidden items.\n */\n protected readonly btnNext = viewChild<EclButtonComponent>('btnNext');\n /**\n * The button to open/close menu in mobile mode.\n */\n protected readonly openCloseButton = viewChild<EclButtonComponent>('openCloseButton');\n\n protected readonly isShowPrevBtn = signal(false);\n protected readonly isShowNextBtn = signal(false);\n\n protected readonly cssClasses = computed<string>(() =>\n [\n super.getCssClasses('ecl-menu'),\n this.hasTransition() ? 'ecl-menu--transition' : '',\n this.isRtl() ? 'ecl-menu--rtl' : '',\n ].join(' '));\n\n /** Controls whether hover events should be processed (suppressed briefly after touch interactions) */\n private ignoreHover = false;\n private readonly isRtl = signal(false);\n private currentItem: EclMenuItem;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private connectedItems = new WeakSet<EclMenuItemComponent>();\n private totalItemsWidth = 0;\n private offsetLeft = 0;\n private lastVisibleItem: EclMenuItemComponent;\n private hammertime: Hammer;\n private resizeTimer: ReturnType<typeof setTimeout>;\n private TIMEOUT_INTERVAL = 150;\n private el = inject(ElementRef);\n private eclRtlService = inject(EclRtlService);\n private euiAppShellService = inject(EuiAppShellService);\n private platformId = inject(PLATFORM_ID);\n private document = inject<Document>(DOCUMENT);\n private cdr = inject(ChangeDetectorRef);\n\n constructor() {\n super();\n // Subscribe to each projected root menu item's events as the set of items changes.\n effect(() => {\n this.eclRootMenuItems().forEach((rootItem) => this.connectMenuItemEvents(rootItem));\n });\n afterNextRender(() => {\n clearTimeout(this.resizeTimer);\n this.observeElementSizeChanges();\n this.resizeTimer = setTimeout(() => {\n this.checkMenuItemsWidth();\n this.checkMenuOverflow();\n }, this.TIMEOUT_INTERVAL);\n this.subscribeToAppShellBreakpoints();\n\n // Delay transition class to prevent CSS transitions from playing on page load (Chrome fix)\n setTimeout(() => {\n this.hasTransition.set(true);\n }, 500);\n });\n }\n\n /**\n * On outside click - close/hide any open menus.\n * @param event\n */\n onDocumentClick(event: MouseEvent): void {\n if (!this.isHamburgerMenuOpened()) return;\n\n const target = event.target as HTMLElement;\n if (!this.el.nativeElement.contains(target) ||\n target.classList.contains('ecl-menu__overlay')) {\n this.closeRootMenu();\n this.onCloseHamburgerMenu();\n }\n }\n\n /**\n * On 'esc' key clicked - close/hide any open menus.\n * @param event\n */\n onEscapePress(event: Event): void {\n if (!this.isHamburgerMenuOpened()) return;\n\n this.closeRootMenu();\n this.onCloseHamburgerMenu();\n }\n\n ngOnInit(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.handleRtlChangeState();\n this.observeSwipeGestures();\n }\n }\n\n ngAfterContentInit(): void {\n // Event wiring for projected items is handled by an effect set up in the constructor.\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n\n this.hammertime?.off('swipeleft');\n this.hammertime?.off('swiperight');\n }\n\n /**\n * Swipe left gesture handling\n */\n onSwipeLeft(): void {\n if (this.isMobileBreakpoint() || this.isTablet()) {\n this.onOpenHamburgerMenu();\n }\n }\n\n /**\n * Swipe right gesture handling\n */\n onSwipeRight(): void {\n if (this.isMobileBreakpoint() || this.isTablet()) {\n this.onCloseHamburgerMenu();\n }\n }\n\n /**\n * Manages state on open/close button click, used in mobile view.\n */\n onMenuOpenCloseClick(evt: MouseEvent): void {\n if (this.isHamburgerMenuOpened()) {\n this.onCloseHamburgerMenu();\n } else {\n this.onOpenHamburgerMenu();\n }\n evt.preventDefault();\n }\n\n /**\n * Manages state on close button click, used in mobile view, in EU theme.\n */\n onMenuCloseClick(evt: MouseEvent): void {\n this.onCloseHamburgerMenu();\n this.closeRootMenu();\n evt.preventDefault();\n }\n\n /**\n * Manages state on back button click, used in mobile view.\n */\n onMenuBackClick(evt: MouseEvent): void {\n this.closeRootMenu();\n evt.preventDefault();\n }\n\n /**\n * Manages state on 'previous' button click. Used in desktop view. Slides the items and shows the previous hidden items.\n */\n onPrevBtnClick(): void {\n this.slideMenuInitialState();\n this.refreshDisplay();\n }\n\n /**\n * Manages state on 'next' button click. Used in desktop view. Slides the items and shows the next hidden items.\n */\n onNextBtnClick(): void {\n this.isShowPrevBtn.set(true);\n this.isShowNextBtn.set(false);\n\n if (this.isRtl()) {\n this.showNextSlideRtl();\n } else {\n this.showNextSlideLtr();\n }\n\n this.refreshDisplay();\n }\n\n /**\n * Postions overlay, depending on parent header position.\n * This method is called from parent header, which uses the menu for navigation.\n * @param bottomSpaceY\n */\n positionMenuOverlay(bottomSpaceY: number): void {\n if ((this.isMobileBreakpoint() || this.isTablet()) && bottomSpaceY) {\n this.overlayStyleTop.set(bottomSpaceY);\n this.innerStyleTop.set(bottomSpaceY);\n } else {\n this.overlayStyleTop.set(null);\n this.innerStyleTop.set(null);\n }\n }\n\n private observeElementSizeChanges(): void {\n new ResizeObserver(() => {\n clearTimeout(this.resizeTimer);\n this.resizeTimer = setTimeout(() => {\n // Scroll to top when menu is open during resize (e.g. orientation change)\n if (this.isHamburgerMenuOpened()) {\n this.document.documentElement.scrollTop = 0;\n this.document.body.scrollTop = 0;\n }\n\n this.totalItemsWidth = 0;\n this.checkMenuItemsWidth();\n this.checkMenuOverflow();\n this.cdr.detectChanges();\n\n // Re-enable hover after resize completes\n this.ignoreHover = false;\n }, this.TIMEOUT_INTERVAL);\n }).observe(this.innerSection().nativeElement);\n }\n\n private slideMenuInitialState(): void {\n this.offsetLeft = 0;\n if (this.isRtl()) {\n this.menuListStyleRight.set('0px');\n this.menuListStyleLeft.set('auto');\n } else {\n this.menuListStyleLeft.set('0px');\n this.menuListStyleRight.set('auto');\n }\n\n this.isShowPrevBtn.set(false);\n this.isShowNextBtn.set(true);\n }\n\n private showNextSlideLtr(): void {\n const btnOffsetWidth = this.btnNext().el.nativeElement.offsetWidth;\n this.offsetLeft =\n this.lastVisibleItem.el.nativeElement.getBoundingClientRect().left -\n this.itemsList().nativeElement.getBoundingClientRect().left -\n btnOffsetWidth;\n\n this.menuListStyleLeft.set(`-${this.offsetLeft}px`);\n this.menuListStyleRight.set('auto');\n }\n\n private showNextSlideRtl(): void {\n const btnOffsetWidth = this.btnNext().el.nativeElement.offsetWidth;\n this.offsetLeft =\n this.itemsList().nativeElement.getBoundingClientRect().right -\n this.lastVisibleItem.el.nativeElement.getBoundingClientRect().right -\n btnOffsetWidth;\n\n this.menuListStyleRight.set(`-${this.offsetLeft}px`);\n this.menuListStyleLeft.set('auto');\n }\n\n private refreshDisplay(): void {\n this.eclRootMenuItems().forEach((item) => {\n item.checkMenuItem(this.maxLines(), this.isMobileBreakpoint());\n item.isVisible.set(!item.isVisible());\n });\n }\n\n private checkMenuOverflow(): void {\n this.hasOverflow.set(this.totalItemsWidth > this.innerSection().nativeElement.offsetWidth + 16);\n if (!this.hasOverflow() || this.isMobileBreakpoint() || this.isTablet()) {\n this.resetOverflowValues();\n return;\n }\n\n this.setClassForPrevNextButtons();\n this.resetVisibilityIndicator();\n\n if (this.offsetLeft === 0) {\n this.manageOverflowEnd();\n } else {\n this.manageOverflowBeginning();\n }\n }\n\n /**\n * Manage items visibility when using overlfow. For both rtl and ltr cases.\n */\n private manageOverflowBeginning(): void {\n if (this.isRtl()) {\n this.eclRootMenuItems()\n .filter(\n (item) =>\n item.el.nativeElement.getBoundingClientRect().right <=\n this.innerSection().nativeElement.getBoundingClientRect().right,\n )\n .forEach((el) => el.isVisible.set(true));\n } else {\n this.eclRootMenuItems()\n .filter(\n (item) =>\n item.el.nativeElement.getBoundingClientRect().left >= this.innerSection().nativeElement.getBoundingClientRect().left,\n )\n .forEach((el) => el.isVisible.set(true));\n }\n }\n\n /**\n * Manage items visibility when using overlfow, with the 'next' button. For both rtl and ltr cases.\n */\n private manageOverflowEnd(): void {\n this.isShowNextBtn.set(true);\n this.menuListStyleLeft.set('0px');\n this.menuListStyleRight.set('auto');\n if (this.isRtl()) {\n for (const item of this.eclRootMenuItems()) {\n if (item.el.nativeElement.getBoundingClientRect().left < this.itemsList().nativeElement.getBoundingClientRect().left) {\n this.lastVisibleItem = item;\n break;\n }\n item.isVisible.set(true);\n }\n } else {\n for (const item of this.eclRootMenuItems()) {\n if (item.el.nativeElement.getBoundingClientRect().right > this.itemsList().nativeElement.getBoundingClientRect().right) {\n this.lastVisibleItem = item;\n break;\n }\n item.isVisible.set(true);\n }\n }\n }\n\n private resetVisibilityIndicator(): void {\n this.eclRootMenuItems().forEach((item) => item.isVisible.set(false));\n }\n\n private resetOverflowValues(): void {\n this.isShowPrevBtn.set(false);\n this.isShowNextBtn.set(false);\n this.hasOverflow.set(false);\n this.menuListStyleLeft.set('0px');\n this.offsetLeft = 0;\n this.totalItemsWidth = 0;\n this.lastVisibleItem = null;\n }\n\n private setClassForPrevNextButtons(): void {\n this.currentItem = this.eclRootMenuItems().find((item) => item.isCurrent());\n if (this.currentItem) {\n if ((this.currentItem as EclMenuItemComponent).isVisible()) {\n this.isPrevBtnCurrentClass.set(true);\n } else {\n this.isPrevBtnCurrentClass.set(false);\n }\n }\n }\n\n private checkMenuItemsWidth(): void {\n this.eclRootMenuItems().forEach((item) => {\n item.checkMenuItem(this.maxLines(), this.isMobileBreakpoint());\n this.totalItemsWidth += item.el.nativeElement.offsetWidth;\n });\n }\n\n public get isMenuExpandedInMobile(): boolean {\n return (this.isMobileBreakpoint() || this.isTablet()) && this.isAnyRootMenuItemExpanded();\n }\n\n private isAnyRootMenuItemExpanded(): boolean {\n return this.eclRootMenuItems().some((item) => item.isExpanded());\n }\n\n private connectMenuItemEvents(item: EclMenuItemComponent): void {\n if (this.connectedItems.has(item)) {\n return;\n }\n this.connectedItems.add(item);\n outputToObservable(item.menuItemSelect).pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.onRootMenuItemSelected(evt);\n });\n outputToObservable(item.menuItemHover).pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.onRootMenuItemHovered(evt);\n });\n outputToObservable(item.menuItemHoverOut).pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.onRootMenuItemHoveredOut(evt);\n });\n outputToObservable(item.menuItemCaret).pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.onRootMenuItemCaret(evt);\n });\n outputToObservable(item.menuMegaItemSelect).pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.onMenuMegaItemSelected(item, evt);\n });\n outputToObservable(item.menuItemFocus).pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.onRootMenuItemFocused(item);\n });\n outputToObservable(item.menuItemKeydown).pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.onRootMenuItemKeydown(item, evt);\n });\n outputToObservable(item.menuMegaLastItemTab).pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.openCloseButton().onFocus();\n });\n }\n\n private onRootMenuItemFocused(item: EclMenuItem): void {\n const index = this.findIndexInArray(item);\n if (!this.isMobileBreakpoint() && !this.isTablet()) {\n this.closeRootMenu();\n }\n if (this.isMovePrevOverflow(index)){\n this.onPrevBtnClick();\n } else if (this.isMoveNextOverflow(index)){\n this.onNextBtnClick();\n }\n }\n\n private onRootMenuItemKeydown(item: EclMenuItemComponent, evt: EclMenuItemKeydownEvent): void {\n switch (evt.domEvent.key) {\n case KeyCode.ARROW_DOWN: {\n this.onRootMenuItemEnter(item);\n break;\n }\n case KeyCode.ARROW_RIGHT: {\n this.onNextMenuItemFocus(item);\n break;\n }\n case KeyCode.ARROW_UP: {\n this.onPrevMenuItemFocus(item);\n break;\n }\n case KeyCode.ARROW_LEFT: {\n this.onPrevMenuItemFocus(item);\n break;\n }\n case KeyCode.ENTER: {\n this.onRootMenuItemEnter(item);\n break;\n }\n case KeyCode.ESCAPE: {\n this.onRootMenuItemEscape(item, evt.domEvent);\n break;\n }\n case KeyCode.TAB: {\n if ((this.isMobileBreakpoint() || this.isTablet()) && this.isLastItem(item)) {\n evt.preventDefault();\n this.openCloseButton().onFocus();\n }\n break;\n }\n default: {\n break;\n }\n }\n }\n\n private isLastItem(item: EclMenuItemComponent): boolean {\n const items = this.eclRootMenuItems();\n return items[items.length - 1] === item;\n }\n\n private onRootMenuItemEscape(item: EclMenuItem, evt: Event): void {\n if (item.isHovered()) {\n this.closeRootMenu();\n }\n evt.stopPropagation();\n }\n\n private onPrevMenuItemFocus(item: EclMenuItem): void {\n const index = this.findIndexInArray(item);\n if (index !== 0) {\n this.getRootMenuItemsArray()[index - 1].onFocusFromNext();\n }\n }\n\n private onNextMenuItemFocus(item: EclMenuItem): void {\n const index = this.findIndexInArray(item);\n if (index !== this.getRootMenuItemsArray().length - 1) {\n this.getRootMenuItemsArray()[index + 1].onFocusFromPrev();\n }\n }\n\n private findIndexInArray(item: EclMenuItem): number {\n return this.getRootMenuItemsArray().findIndex(el => item === el);\n }\n\n private isMoveNextOverflow(index: number): boolean {\n return !this.getRootMenuItemsArray()[index].isVisible() && this.isShowNextBtn();\n }\n\n private isMovePrevOverflow(index: number): boolean {\n return !this.getRootMenuItemsArray()[index].isVisible() && this.isShowPrevBtn();\n }\n\n private onRootMenuItemSelected(evt: EclMenuItemSelectEvent): void {\n const requestedRootMenuItem: EclMenuItem = evt.menuItem;\n\n this.closeRootMenu();\n this.deselectAllRootMenuItems();\n this.deselectAllSubmenusItems();\n this.selectMenuItem(requestedRootMenuItem);\n this.onCloseHamburgerMenu();\n if (this.hasOverflow) {\n this.managePrevNextButtonsClassOnItemSelected();\n }\n this.sendMenuItemSelectEvent(evt);\n }\n\n private managePrevNextButtonsClassOnItemSelected(): void {\n if (this.isShowNextBtn()) {\n this.isPrevBtnCurrentClass.set(true);\n } else {\n this.isPrevBtnCurrentClass.set(false);\n }\n }\n\n private onRootMenuItemHovered(evt: EclMenuItemHoverEvent): void {\n if (this.ignoreHover) return;\n this.openSubmenu(evt.menuItem);\n }\n\n private onRootMenuItemEnter(item: EclMenuItem): void {\n if (this.isMobileBreakpoint() || this.isTablet()) {\n this.closeRootMenuButOneItem(item);\n this.toggleExpandedForMenuItem(item);\n } else {\n if (!item.isHovered()) {\n this.openSubmenu(item);\n } else {\n this.closeRootMenu();\n }\n }\n }\n\n private openSubmenu(item: EclMenuItem): void {\n if (item.isVisible()) {\n if (!this.isMobileBreakpoint() && !this.isTablet() && (item as EclMenuItemComponent).submenu()) {\n this.checkMegaMenu(item as EclMenuItemComponent);\n }\n item.isHovered.set(true);\n this.closeRootMenuButOneItem(item);\n this.showMenu();\n }\n }\n\n private getRootMenuItemsArray(): readonly EclMenuItemComponent[] {\n return this.eclRootMenuItems();\n }\n\n private checkMegaMenu(menuItem: EclMenuItemComponent): void {\n if (menuItem.isFull()) {\n if (this.isRtl()) {\n menuItem.submenu().offsetRight.set(this.offsetLeft);\n } else {\n menuItem.submenu().offsetLeft.set(this.offsetLeft);\n }\n return;\n }\n this.checkEnoughSpaceForMegaMenu(menuItem);\n }\n\n private checkEnoughSpaceForMegaMenu(menuItem: EclMenuItemComponent): void {\n const megaBounding = menuItem.submenu().el.nativeElement.getBoundingClientRect();\n const containerBounding = this.innerSection().nativeElement.getBoundingClientRect();\n const menuItemBounding = menuItem.el.nativeElement.getBoundingClientRect();\n\n const megaWidth = megaBounding.width;\n const containerWidth = containerBounding.width;\n const menuItemPosition = menuItemBounding.left - containerBounding.left;\n\n if (menuItemPosition + megaWidth > containerWidth) {\n menuItem.submenu().isRtlDisplay.set(true);\n } else {\n menuItem.submenu().isRtlDisplay.set(false);\n }\n }\n\n private onRootMenuItemHoveredOut(evt: EclMenuItemHoverEvent): void {\n if (this.ignoreHover) return;\n if (!this.isMobileBreakpoint()) {\n this.closeRootMenu();\n }\n }\n\n private onRootMenuItemCaret(evt: EclMenuItemCaretEvent): void {\n const requestedRootMenuItem: EclMenuItem = evt.menuItem;\n\n // Suppress hover events briefly after touch/caret interaction (prevents double-trigger on hybrid devices)\n this.ignoreHover = true;\n\n this.closeRootMenuButOneItem(requestedRootMenuItem);\n this.toggleExpandedForMenuItem(requestedRootMenuItem);\n }\n\n private onMenuMegaItemSelected(rootMenuItem: EclMenuItem, evt: EclMenuItemSelectEvent): void {\n const requestedSubmenuItem = evt.menuItem;\n\n this.closeRootMenu();\n this.deselectAllRootMenuItems();\n this.deselectAllSubmenusItems();\n this.selectMenuItem(rootMenuItem);\n this.selectMenuItem(requestedSubmenuItem);\n this.onCloseHamburgerMenu();\n if (this.hasOverflow()) {\n this.managePrevNextButtonsClassOnItemSelected();\n }\n this.sendMenuItemSelectEvent(evt);\n\n this.hideMenu();\n }\n\n private deselectAllRootMenuItems(): void {\n this.deselectMenuItems(this.eclRootMenuItems());\n }\n\n private deselectAllSubmenusItems(): void {\n this.eclRootMenuItems().forEach((rootItem) => {\n this.deselectMenuItems(rootItem.children);\n });\n }\n\n private deselectMenuItems(items: ReadonlyArray<EclMenuItem>): void {\n items.forEach((it) => {\n it.isCurrent.set(false);\n });\n }\n\n private selectMenuItem(item: EclMenuItem): void {\n item.isCurrent.set(true);\n this.currentItem = item;\n }\n\n private hideMenu(): void {\n this.isMenuHidden.set(true);\n }\n\n private showMenu(): void {\n this.isMenuHidden.set(false);\n }\n\n private closeRootMenu(): void {\n this.eclRootMenuItems().forEach((it) => {\n it.isExpanded.set(false);\n it.isHovered.set(false);\n });\n }\n\n private closeRootMenuButOneItem(item: EclMenuItem): void {\n this.eclRootMenuItems()\n .filter((it) => it !== item)\n .forEach((it) => {\n it.isExpanded.set(false);\n it.isHovered.set(false);\n });\n }\n\n private handleRtlChangeState(): void {\n this.eclRtlService.currentRtlState$.pipe(takeUntil(this.destroy$)).subscribe((rtlState) => {\n if (rtlState !== undefined && this.isRtl() !== rtlState) {\n this.isRtl.set(rtlState);\n if (this.hasOverflow()) {\n this.slideMenuInitialState();\n setTimeout(() => this.checkMenuOverflow());\n }\n }\n });\n }\n\n private toggleExpandedForMenuItem(item: EclMenuItem): void {\n item.isExpanded.set(!item.isExpanded());\n }\n\n private onOpenHamburgerMenu(): void {\n this.disableScroll();\n this.isHamburgerMenuOpened.set(true);\n this.openHamburgerMenu.emit();\n this.focusOnFirstItem();\n }\n\n private onCloseHamburgerMenu(): void {\n this.isHamburgerMenuOpened.set(false);\n this.enableScroll();\n this.closeHamburgerMenu.emit();\n }\n\n private disableScroll(): void {\n this.document.body.classList.add('no-scroll');\n }\n\n private enableScroll(): void {\n this.document.body.classList.remove('no-scroll');\n }\n\n private focusOnFirstItem(): void {\n this.eclRootMenuItems()[0]?.onFocusFromPrev();\n }\n\n private sendMenuItemSelectEvent(evt: EclMenuItemSelectEvent): void {\n this.menuItemSelect.emit(new EclMenuItemSelectEvent(evt.menuItem, evt.domEvent));\n }\n\n private observeSwipeGestures(): void {\n // load hammerjs only on browser\n if(isPlatformBrowser(this.platformId)) {\n import('hammerjs').then((Hammer: Hammer) => {\n this.hammertime = new Hammer.default(this.document, { inputClass: Hammer.TouchInput });\n this.hammertime.on('swipeleft', this.onSwipeLeft.bind(this));\n this.hammertime.on('swiperight', this.onSwipeRight.bind(this));\n }).catch((error) => {\n console.error('Error loading HammerJS', error);\n });\n }\n }\n\n private subscribeToAppShellBreakpoints(): void {\n this.euiAppShellService.breakpoints$\n .pipe(takeUntil(this.destroy$))\n .subscribe((bkps: any) => {\n if (!bkps) return;\n\n this.breakpointsValue = bkps;\n this.isMobileBreakpoint.set(!!bkps.isMobile);\n this.isTablet.set(!!bkps.isTablet || !!bkps.isLtLargeTablet);\n this.cdr.detectChanges();\n\n if (!this.isMobileBreakpoint() && !this.isTablet()) {\n this.overlayStyleTop.set(null);\n this.innerStyleTop.set(null);\n\n // Ensure hamburger menu is closed when switching to desktop\n if (this.isHamburgerMenuOpened()) {\n this.onCloseHamburgerMenu();\n this.closeRootMenu();\n }\n }\n });\n }\n}\n","<div class=\"ecl-menu__overlay\" [style.top.px]=\"overlayStyleTop()\"></div>\n<div class=\"ecl-container ecl-menu__container\">\n <button #openCloseButton eclButton isIconOnly variant=\"tertiary\" eclStyle=\"neutral\" type=\"button\" class=\"ecl-menu__open\"\n (click)=\"onMenuOpenCloseClick($event)\" [attr.aria-expanded]=\"isHamburgerMenuOpened()\">\n <ecl-icon icon=\"hamburger\" size=\"m\"></ecl-icon>\n <ecl-icon icon=\"close\" size=\"m\"></ecl-icon>\n @if (isHamburgerMenuOpened()) {\n <span eclButtonLabel>{{ 'ecl.common.CLOSE' | translate }}</span>\n } @else {\n <span eclButtonLabel>{{ 'ecl.menu.MENU' | translate }}</span>\n }\n </button>\n\n <section\n class=\"ecl-menu__inner\"\n #innerSection\n [class.ecl-menu__inner--expanded]=\"isMenuExpandedInMobile\"\n [class.ecl-menu__inner--has-overflow]=\"hasOverflow()\"\n aria-label=\"Menu\" [style.top.px]=\"innerStyleTop()\">\n <header class=\"ecl-menu__inner-header\">\n <button\n eclButton\n variant=\"tertiary\"\n class=\"ecl-menu__close\"\n containerStyleClass=\"ecl-menu__close-container\"\n (click)=\"onMenuCloseClick($event)\">\n <span eclButtonLabel>{{ 'ecl.common.CLOSE' | translate }}</span>\n <ecl-icon icon=\"close\" size=\"s\"></ecl-icon>\n </button>\n\n <div class=\"ecl-menu__title\">{{ 'ecl.menu.MENU' | translate }}</div>\n\n <button eclButton variant=\"tertiary\" class=\"ecl-menu__back\" (click)=\"onMenuBackClick($event)\">\n <ecl-icon icon=\"corner-arrow\" size=\"s\" transform=\"rotate-270\"></ecl-icon>\n <span eclButtonLabel>{{ 'ecl.common.BACK' | translate }}</span>\n </button>\n </header>\n <button\n eclButton\n #btnPrevious\n tabindex=\"-1\"\n variant=\"tertiary\"\n isIconOnly\n class=\"ecl-menu__item ecl-menu__items-previous\"\n [class.ecl-menu__item--current]=\"isPrevBtnCurrentClass()\"\n [style.display]=\"isShowPrevBtn() ? 'flex' : 'none'\"\n (click)=\"onPrevBtnClick()\">\n <ecl-icon icon=\"corner-arrow\" size=\"s\" transform=\"rotate-270\"></ecl-icon>\n <span eclButtonLabel class=\"ecl-u-sr-only\">{{ 'ecl.common.PREVIOUS' | translate }}</span>\n </button>\n <button\n eclButton\n #btnNext\n variant=\"tertiary\"\n tabindex=\"-1\"\n isIconOnly\n class=\"ecl-menu__item ecl-menu__items-next\"\n [class.ecl-menu__item--current]=\"!isPrevBtnCurrentClass()\"\n [style.display]=\"isShowNextBtn() ? 'flex' : 'none'\"\n (click)=\"onNextBtnClick()\">\n <ecl-icon icon=\"corner-arrow\" size=\"s\" transform=\"rotate-90\"></ecl-icon>\n <span eclButtonLabel class=\"ecl-u-sr-only\">{{ 'ecl.common.NEXT' | translate }}</span>\n </button>\n <ul class=\"ecl-menu__list\" #itemsList [style.right]=\"menuListStyleRight()\" [style.left]=\"menuListStyleLeft()\">\n <ng-content></ng-content>\n </ul>\n </section>\n</div>\n","import { EclMenuComponent, EclMenuItemComponent } from './ecl-menu';\nimport { EclMenuMegaComponent, EclMenuMegaItemComponent } from './ecl-menu-mega';\n\nexport * from './ecl-menu/index';\nexport * from './ecl-menu-mega/index';\nexport * from './events/index';\nexport * from './models/ecl-menu-item.model';\n\nexport const EUI_ECL_MENU = [\n EclMenuComponent, EclMenuItemComponent, EclMenuMegaComponent, EclMenuMegaItemComponent,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eui-ecl-components-ecl-menu.mjs","sources":["../../components/ecl-menu/events/ecl-menu-item.event.ts","../../components/ecl-menu/ecl-menu-mega/ecl-menu-mega-item.component.ts","../../components/ecl-menu/ecl-menu-mega/ecl-menu-mega-item.component.html","../../components/ecl-menu/ecl-menu-mega/ecl-menu-mega.component.ts","../../components/ecl-menu/ecl-menu-mega/ecl-menu-mega.component.html","../../components/ecl-menu/ecl-menu/ecl-menu-item.component.ts","../../components/ecl-menu/ecl-menu/ecl-menu-item.component.html","../../components/ecl-menu/ecl-menu/ecl-menu.component.ts","../../components/ecl-menu/ecl-menu/ecl-menu.component.html","../../components/ecl-menu/index.ts","../../components/ecl-menu/eui-ecl-components-ecl-menu.ts"],"sourcesContent":["import { EclDomEvent } from '@eui/ecl/core';\nimport { EclMenuItem } from '../models/ecl-menu-item.model';\n\nexport class EclMenuItemSelectEvent extends EclDomEvent<Event> {\n constructor(\n public menuItem: EclMenuItem,\n public domEvent: Event = null,\n ) {\n super(domEvent);\n }\n}\n\nexport class EclMenuItemHoverEvent extends EclDomEvent<MouseEvent> {\n constructor(\n public menuItem: EclMenuItem,\n public domEvent: MouseEvent = null,\n ) {\n super(domEvent);\n }\n}\n\nexport class EclMenuItemHoverOutEvent extends EclDomEvent<MouseEvent> {\n constructor(\n public menuItem: EclMenuItem,\n public domEvent: MouseEvent = null,\n ) {\n super(domEvent);\n }\n}\n\nexport class EclMenuItemFocusEvent extends EclDomEvent<FocusEvent> {\n constructor(\n public menuItem: EclMenuItem,\n public domEvent: FocusEvent = null,\n ) {\n super(domEvent);\n }\n}\n\nexport class EclMenuItemCaretEvent extends EclDomEvent<MouseEvent> {\n constructor(\n public menuItem: EclMenuItem,\n public domEvent: MouseEvent = null,\n ) {\n super(domEvent);\n }\n}\n\nexport class EclMenuItemKeydownEvent extends EclDomEvent<KeyboardEvent> {\n constructor(\n public menuItem: EclMenuItem,\n public domEvent: KeyboardEvent = null,\n ) {\n super(domEvent);\n }\n}\n\nexport class EclMenuItemParentFocusEvent {\n constructor(\n public menuItem: EclMenuItem) {}\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n Renderer2,\n booleanAttribute,\n forwardRef,\n inject,\n input,\n linkedSignal,\n output,\n signal,\n contentChildren,\n viewChild,\n} from '@angular/core';\nimport { Params, QueryParamsHandling, RouterLink } from '@angular/router';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { KeyCode } from '@eui/ecl/core';\nimport { EclLinkDirective } from '@eui/ecl/components/ecl-link';\nimport { EclIconComponent } from '@eui/ecl/components/ecl-icon';\nimport { EclMenuItem } from '../models/ecl-menu-item.model';\nimport { EclMenuItemKeydownEvent, EclMenuItemSelectEvent } from '../events/ecl-menu-item.event';\n\n/**\n * This component represents a sub-menu item, that is on the second level of the ecl-menu.\n * Adds some custom styling and functionality.\n */\n@Component({\n selector: 'ecl-menu-mega-item',\n templateUrl: './ecl-menu-mega-item.component.html',\n imports: [NgTemplateOutlet, RouterLink],\n styles: [\n `\n :host {\n display: list-item;\n }\n `,\n ],\n host: {\n 'class': 'ecl-menu__subitem',\n role: 'listitem',\n '[class.ecl-menu__subitem--current]': 'isCurrent()',\n '[class.ecl-menu__see-all]': 'isSeeAll()',\n '(click)': 'onHostClick($event)',\n },\n})\nexport class EclMenuMegaItemComponent extends ECLBaseDirective implements EclMenuItem, AfterViewInit {\n\n readonly id = input<string>(undefined);\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 readonly isCurrentInput = input(false, { alias: 'isCurrent', transform: booleanAttribute });\n readonly isCurrent = linkedSignal(() => this.isCurrentInput());\n /**\n * An additional item, that represents a link.\n */\n readonly isSeeAll = input(false, { transform: booleanAttribute });\n readonly linkExtraAttributes = input<Record<string, string>>(undefined);\n\n readonly menuItemSelect = output<EclMenuItemSelectEvent>();\n readonly menuItemKeydown = output<EclMenuItemKeydownEvent>();\n\n readonly hasChildren = signal(false);\n readonly isExpanded = signal(true);\n readonly children = signal<EclMenuItem[]>([]);\n\n /**\n * The actual link of the menu item.\n */\n protected readonly megaMenuLink = viewChild<ElementRef>('megaMenuLink');\n /**\n * If menu item includes any icon, added by the user (for example for 'external' link).\n */\n protected readonly iconComponents = contentChildren(forwardRef(() => EclIconComponent));\n /**\n * If menu item includes any links, added by the user.\n */\n protected readonly links = contentChildren(forwardRef(() => EclLinkDirective));\n\n private renderer = inject(Renderer2);\n\n ngAfterViewInit(): void {\n this.manageContentChildren();\n this.setExtraAttributesForLink(this.megaMenuLink()?.nativeElement, this.linkExtraAttributes());\n }\n\n /**\n * When the item is the current active item, the 'aria-current' attribute is set to 'page'.\n */\n get ariaCurrent(): string | null {\n return this.isCurrent() ? 'page' : null;\n }\n\n /**\n *\n * @param evt This event is emited, when the menu item is clicked.\n */\n onItemClick(evt: Event): void {\n this.menuItemSelect.emit(new EclMenuItemSelectEvent(this, evt as MouseEvent));\n\n if (!this.href()) {\n evt.preventDefault();\n }\n }\n\n /**\n * Focus should be set on the underlying <a> element.\n */\n onFocus(): void {\n this.megaMenuLink().nativeElement.focus();\n }\n\n onKeydown(evt: Event): void {\n if ((evt as KeyboardEvent).key === KeyCode.ENTER) {\n this.onItemClick(evt);\n }\n this.menuItemKeydown.emit(new EclMenuItemKeydownEvent(this, evt as KeyboardEvent));\n }\n\n protected onHostClick(evt: MouseEvent): void {\n evt.stopPropagation();\n }\n\n /**\n * Adds specific classes to content children (icons or links).\n */\n private manageContentChildren(): void {\n if (this.iconComponents()) {\n setTimeout(() => {\n this.iconComponents().forEach((icn) => {\n icn.baseDirective.class.set('ecl-menu__sublink-icon');\n });\n });\n }\n\n if (this.links()) {\n setTimeout(() => {\n this.links().forEach((icn) => {\n icn.class.set(icn.class() ? icn.class() + ' ecl-menu__sublink' : 'ecl-menu__sublink');\n });\n });\n }\n }\n\n private 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}\n","@if (!isSeeAll()) {\n @if (href()) {\n <a #megaMenuLink\n [href]=\"href()\"\n [target]=\"target()\"\n class=\"ecl-link ecl-link--standalone ecl-menu__sublink\"\n [class.ecl-menu__sublink--current]=\"isCurrent()\"\n [attr.aria-current]=\"ariaCurrent\"\n (click)=\"onItemClick($event)\"\n (keydown)=\"onKeydown($event)\">\n {{ label() }}\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n } @else {\n <a #megaMenuLink\n tabindex=\"0\"\n [routerLink]=\"routerLink()\"\n [queryParams]=\"queryParams()\"\n [queryParamsHandling]=\"queryParamsHandling()\"\n class=\"ecl-link ecl-link--standalone ecl-menu__sublink\"\n [class.ecl-menu__sublink--current]=\"isCurrent()\"\n [attr.aria-current]=\"ariaCurrent\"\n (click)=\"onItemClick($event)\"\n (keydown)=\"onKeydown($event)\">\n {{ label() }}\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n }\n} @else {\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n}\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n","import { Component, OnDestroy, IterableDiffer, IterableChanges, IterableDiffers, ElementRef, computed, effect, inject, output, signal, contentChildren } from '@angular/core';\nimport { outputToObservable } from '@angular/core/rxjs-interop';\nimport { EclMenuMegaItemComponent } from './ecl-menu-mega-item.component';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { KeyCode } from '@eui/ecl/core';\nimport { EclMenuItem } from '../models/ecl-menu-item.model';\nimport { EclMenuItemKeydownEvent, EclMenuItemSelectEvent } from '../events';\n\n/**\n * This component acts as a wrapper for the second level of menu items, that are children of one root item.\n * Provides functionality for some common events like keyboard navigation and manages relations between sub items.\n */\n@Component({\n selector: 'ecl-menu-mega',\n templateUrl: './ecl-menu-mega.component.html',\n host: {\n '[class]': 'cssClasses()',\n '[class.ecl-menu__mega--rtl]': 'isRtlDisplay()',\n '[style.left.px]': 'offsetLeft()',\n '[style.right.px]': 'offsetRight()',\n },\n})\nexport class EclMenuMegaComponent extends ECLBaseDirective implements OnDestroy {\n el = inject(ElementRef);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly isRtlDisplay = signal<boolean | any>(false);\n readonly offsetLeft = signal<number | null>(null);\n readonly offsetRight = signal<number | null>(null);\n\n /**\n * List of the sub items.\n */\n readonly eclMenuMegaItems = contentChildren(EclMenuMegaItemComponent);\n\n readonly menuItemSelect = output<EclMenuItemSelectEvent>();\n /**\n * Used in keyboard navigation, when focus has to be moved to the parent item.\n */\n readonly menuMegaItemParentFocus = output<EclMenuItemSelectEvent>();\n /**\n * Used when kyboard navigation with TAB reaches the last sub item.\n */\n readonly menuMegaLastItemTab = output<void>();\n\n protected readonly cssClasses = computed<string>(() => [super.getCssClasses('ecl-menu__mega')].join(' '));\n\n private differ: IterableDiffer<EclMenuMegaItemComponent>;\n private diff: IterableChanges<EclMenuMegaItemComponent>;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private differs = inject(IterableDiffers);\n\n constructor() {\n super();\n this.differ = this.differs.find([]).create();\n // Subscribe to the events of each new added item whenever the content children change.\n effect(() => {\n this.eclMenuMegaItems();\n this.onMenuItemChanges();\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n selectFirstSubItem(): void {\n const items = this.eclMenuMegaItems();\n if (items.length > 0) {\n items[0].onFocus();\n }\n }\n\n private onMenuItemChanges(): void {\n const items = this.eclMenuMegaItems();\n this.diff = this.differ.diff(items);\n\n if (!this.diff) {\n items.forEach((rootItem) => {\n this.connectMenuItemEvents(rootItem);\n });\n } else {\n this.diff.forEachAddedItem((change) => {\n this.connectMenuItemEvents(change.item);\n });\n }\n }\n\n private connectMenuItemEvents(item: EclMenuMegaItemComponent): void {\n outputToObservable(item.menuItemSelect).pipe(takeUntil(this.destroy$)).subscribe((evt: EclMenuItemSelectEvent) => {\n this.onMenuItemSelected(item, evt);\n });\n outputToObservable(item.menuItemKeydown).pipe(takeUntil(this.destroy$)).subscribe((evt: EclMenuItemKeydownEvent) => {\n this.onMenuItemKeydown(item, evt);\n });\n }\n\n private onMenuItemKeydown(item: EclMenuMegaItemComponent, evt: EclMenuItemKeydownEvent): void {\n switch (evt.domEvent.key) {\n case KeyCode.ARROW_DOWN: {\n evt.preventDefault();\n this.onNextMenuItemFocus(item);\n break;\n }\n case KeyCode.ARROW_UP: {\n evt.preventDefault();\n this.onPrevMenuItemFocus(item);\n break;\n }\n case KeyCode.ESCAPE: {\n evt.preventDefault();\n this.menuMegaItemParentFocus.emit(new EclMenuItemSelectEvent(item));\n break;\n }\n case KeyCode.TAB: {\n if (this.isLastItem(item)) {\n evt.preventDefault();\n this.menuMegaLastItemTab.emit();\n }\n break;\n }\n default: {\n break;\n }\n }\n }\n\n private isLastItem(item: EclMenuMegaItemComponent): boolean {\n const items = this.eclMenuMegaItems();\n return items[items.length - 1] === item;\n }\n\n private onPrevMenuItemFocus(item: EclMenuMegaItemComponent): void {\n const items = this.eclMenuMegaItems();\n const index = items.findIndex(el => item === el);\n if (index !== 0) {\n items[index - 1].onFocus();\n } else {\n this.menuMegaItemParentFocus.emit(new EclMenuItemSelectEvent(item));\n }\n }\n\n private onNextMenuItemFocus(item: EclMenuMegaItemComponent): void {\n const items = this.eclMenuMegaItems();\n const index = items.findIndex(el => item === el);\n if (index !== items.length - 1) {\n items[index + 1].onFocus();\n }\n }\n\n private onMenuItemSelected(item: EclMenuItem, evt: EclMenuItemSelectEvent): void {\n this.deselectAllMenuItems(this.eclMenuMegaItems());\n this.selectMenuItem(item);\n this.sendMenuItemSelectEvent(evt);\n }\n\n private selectMenuItem(item: EclMenuItem): void {\n item.isCurrent.set(true);\n }\n\n private deselectAllMenuItems(items: ReadonlyArray<EclMenuItem>): void {\n items.forEach((it) => {\n it.isCurrent.set(false);\n });\n }\n\n private sendMenuItemSelectEvent(evt: EclMenuItemSelectEvent): void {\n this.menuItemSelect.emit(new EclMenuItemSelectEvent(evt.menuItem, evt.domEvent));\n }\n}\n","<ul class=\"ecl-menu__sublist\">\n <ng-content></ng-content>\n</ul>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterContentInit,\n afterNextRender,\n Component,\n ElementRef,\n forwardRef,\n inject,\n OnDestroy,\n Renderer2,\n ViewEncapsulation,\n DOCUMENT,\n booleanAttribute,\n computed,\n input,\n linkedSignal,\n output,\n signal,\n contentChild,\n viewChild,\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 { EUI_ECL_LINK } from '@eui/ecl/components/ecl-link';\nimport { ECLBaseDirective, KeyCode } from '@eui/ecl/core';\nimport { Subject } from 'rxjs';\nimport { distinctUntilChanged, map, takeUntil } from 'rxjs/operators';\nimport { EclMenuMegaComponent } from '../ecl-menu-mega';\nimport {\n EclMenuItemCaretEvent,\n EclMenuItemFocusEvent,\n EclMenuItemHoverEvent,\n EclMenuItemHoverOutEvent,\n EclMenuItemKeydownEvent,\n EclMenuItemSelectEvent,\n} from '../events';\nimport { EclMenuItem } from '../models/ecl-menu-item.model';\n\nconst enum ColTrigger {\n COL1_TRIGGER = 5,\n COL2_TRIGGER = 9,\n COL3_TRIGGER = 13,\n}\n\n/**\n * This component represents a root menu item. Adds styling and functionality to menu item.\n */\n@Component({\n selector: 'ecl-menu-item',\n templateUrl: './ecl-menu-item.component.html',\n imports: [NgTemplateOutlet, RouterLink, RouterLinkWithHref, ...EUI_ECL_BUTTON, ...EUI_ECL_ICON, ...EUI_ECL_LINK],\n encapsulation: ViewEncapsulation.None,\n host: {\n role: 'listitem',\n '[class]': 'cssClasses()',\n '[class.ecl-menu__item--has-children]': 'hasEclChildrenDataAttribute()',\n '[attr.aria-haspopup]': 'hasEclChildrenDataAttribute()',\n '[attr.data-expanded]': 'isDataExpanded()',\n '(mouseenter)': 'onItemMouseEnter($event)',\n '(mouseleave)': 'onItemMouseLeave($event)',\n },\n})\nexport class EclMenuItemComponent extends ECLBaseDirective implements EclMenuItem, AfterContentInit, OnDestroy {\n el = inject(ElementRef);\n\n readonly id = input<string>(undefined);\n readonly label = input<string>(undefined);\n /**\n * When in mobile view, use this property to set aria-label for the toggle items button (to expand item's children).\n */\n readonly toggleAriaLabel = 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 readonly isCurrentInput = input(false, { alias: 'isCurrent', transform: booleanAttribute });\n readonly isCurrent = linkedSignal(() => this.isCurrentInput());\n /**\n * Custom attributes, to be added to the <a> tag of the menu item.\n */\n readonly linkExtraAttributes = input<Record<string, string>>(undefined);\n\n readonly menuItemSelect = output<EclMenuItemSelectEvent>();\n readonly menuItemCaret = output<EclMenuItemCaretEvent>();\n /**\n * Event that is emited on clicking the caret button to expand item's children in mobile mode.\n */\n readonly menuItemHover = output<EclMenuItemHoverEvent>();\n readonly menuItemHoverOut = output<EclMenuItemHoverOutEvent>();\n readonly menuMegaItemSelect = output<EclMenuItemSelectEvent>();\n readonly menuItemFocus = output<EclMenuItemFocusEvent>();\n readonly menuItemKeydown = output<EclMenuItemKeydownEvent>();\n /**\n * This event is emited when the keyboard nav reaches the last item in mobile view.\n * Then the next focused element should be the 'close' btn.\n */\n readonly menuMegaLastItemTab = output<void>();\n\n readonly isExpanded = signal(false);\n readonly isHovered = signal(false);\n /**\n * Used when menu has overlay, to show if the item is currently displayed.\n */\n readonly isVisible = signal(true);\n readonly isMobileBreakpoint = signal(false);\n\n readonly submenu = contentChild(forwardRef(() => EclMenuMegaComponent));\n\n /**\n * Set to 'true', when item has more than 13 chidren and the overlay needs to use the full available space.\n */\n readonly isFull = computed<boolean>(() => this.hasChildren() && this.submenu().eclMenuMegaItems().length >= ColTrigger.COL3_TRIGGER);\n\n /**\n * The default role of the item is 'listitem' and should not be changed.\n */\n protected readonly cssClasses = computed<string>(() =>\n [\n super.getCssClasses('ecl-menu__item'),\n this.isCurrent() ? 'ecl-menu__item--current' : '',\n this.isExpanded() ? 'ecl-menu__item--expanded' : '',\n this.getClassDependingChildrenCnt(),\n ]\n .join(' ')\n .trim());\n\n /**\n * The <a> element of the menu item, when there are no children.\n */\n protected readonly menuLink = viewChild<ElementRef<HTMLAnchorElement>>('menuLink');\n /**\n * The <button> element of the menu item, when item has children.\n */\n protected readonly menuButton = viewChild(EclButtonComponent);\n\n private readonly doc = inject(DOCUMENT);\n private readonly window = this.doc.defaultView; // Window | null\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private renderer = inject(Renderer2);\n private appShell = inject(EuiAppShellService);\n\n constructor() {\n super();\n afterNextRender(() => {\n this.observeBreakpointChanges();\n this.setExtraAttributesForLink(this.menuLink()?.nativeElement, this.linkExtraAttributes());\n });\n }\n\n readonly hasEclChildrenDataAttribute = computed<boolean | undefined>(() => this.hasChildren() || undefined);\n\n readonly isDataExpanded = computed<boolean | null>(() => this.hasChildren() ? this.isHovered() : null);\n\n /**\n * 'aria-current' is set to 'page' only when this item itself is the current page, and not when it is\n * marked current merely because one of its children is the active item (in that case the child link\n * carries 'aria-current=\"page\"'). Derived from live state so it stays correct whether 'isCurrent' is set\n * at render time or updated on selection.\n */\n readonly ariaCurrent = computed<string | null>(() => this.isCurrent() && !this.hasCurrentChild() ? 'page' : null);\n\n /**\n * Whether any child (sub-item) is the current item.\n */\n readonly hasCurrentChild = computed<boolean>(() => this.children().some((child) => child.isCurrent()));\n\n readonly hasChildren = computed<boolean>(() => !!this.submenu());\n\n readonly children = computed<EclMenuItem[]>(() => this.hasChildren() ? this.submenu().eclMenuMegaItems() : []);\n\n ngAfterContentInit(): void {\n // Subscibe to submenu component events.\n const submenu = this.submenu();\n if (submenu) {\n outputToObservable(submenu.menuItemSelect).pipe(takeUntil(this.destroy$)).subscribe((it: EclMenuItemSelectEvent) => {\n this.menuMegaItemSelect.emit(new EclMenuItemSelectEvent(it.menuItem, it.domEvent));\n });\n outputToObservable(submenu.menuMegaItemParentFocus).pipe(takeUntil(this.destroy$)).subscribe(() => {\n if (!this.isMobileBreakpoint()) {\n this.onFocusFromSubmenu();\n }\n });\n outputToObservable(submenu.menuMegaLastItemTab).pipe(takeUntil(this.destroy$)).subscribe(() => {\n if (this.isMobileBreakpoint()) {\n this.menuMegaLastItemTab.emit();\n }\n });\n\n if (this.hasSubmenuAnySelections()) {\n this.isCurrent.set(true);\n }\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n onItemMouseEnter(evt: MouseEvent): void {\n if (this.isMobileBreakpoint()) return;\n this.menuItemHover.emit(new EclMenuItemHoverEvent(this, evt));\n }\n\n onItemMouseLeave(evt: MouseEvent): void {\n if (this.isMobileBreakpoint()) return;\n this.menuItemHoverOut.emit(new EclMenuItemHoverOutEvent(this, evt));\n }\n\n onItemFocus(evt: FocusEvent): void {\n this.menuItemFocus.emit(new EclMenuItemFocusEvent(this, evt));\n }\n\n onItemClick(evt: Event): void {\n this.menuItemSelect.emit(new EclMenuItemSelectEvent(this, evt));\n\n if (!this.href()) {\n evt.stopPropagation();\n }\n }\n\n /**\n * When clicking the caret button, to expand/collapse item's children.\n * Used on both desktop (click-to-open/close affordance) and mobile view.\n *\n * The caret is a toggle control, not a navigation control: prevent its default\n * action and stop propagation so that, when the item also has an href/routerLink,\n * clicking the caret toggles the submenu instead of navigating the link.\n * @param evt\n */\n onItemCaretClick(evt: MouseEvent): void {\n evt.preventDefault();\n evt.stopPropagation();\n this.menuItemCaret.emit(new EclMenuItemCaretEvent(this, evt));\n }\n\n /**\n * Manages the state when the item is focused, when navigating with keyboard and the navigation is coming from the submenu.\n */\n onFocusFromSubmenu(): void {\n this.onButtonFocus();\n this.isHovered.set(false);\n this.isExpanded.set(false);\n }\n\n /**\n * Manages the state when the item is focused, when navigating with keyboard and the navigation is coming from\n * the next root menu item.\n */\n onFocusFromNext(): void {\n if (this.menuButton()) {\n this.onButtonFocus();\n } else {\n this.onLinkFocus();\n }\n }\n\n /**\n * Manages the state when the item is focused, when navigating with keyboard and the navigation is coming from\n * the previous root menu item.\n */\n onFocusFromPrev(): void {\n this.onLinkFocus();\n }\n\n /**\n * Manages the keyboard navigation when the current element is the button of the menu item.\n * @param evt\n */\n onButtonKeydown(evt: Event): void {\n switch ((evt as KeyboardEvent).key) {\n case KeyCode.ARROW_DOWN: {\n evt.preventDefault();\n if (this.isHovered()) {\n this.selectFirstMegaMenuItem();\n } else {\n this.menuItemKeydown.emit(new EclMenuItemKeydownEvent(this, evt as KeyboardEvent));\n }\n break;\n }\n case KeyCode.ARROW_UP: {\n evt.preventDefault();\n this.onLinkFocus();\n break;\n }\n case KeyCode.ARROW_RIGHT: {\n evt.preventDefault();\n this.menuItemKeydown.emit(new EclMenuItemKeydownEvent(this, evt as KeyboardEvent));\n break;\n }\n case KeyCode.ARROW_LEFT: {\n evt.preventDefault();\n this.onLinkFocus();\n break;\n }\n case KeyCode.TAB: {\n this.menuItemKeydown.emit(new EclMenuItemKeydownEvent(this, evt as KeyboardEvent));\n break;\n }\n case KeyCode.ENTER:\n case KeyCode.SPACE: {\n // Space must behave like Enter: activate the caret/submenu toggle.\n // preventDefault stops the page from scrolling on Space.\n evt.preventDefault();\n this.menuItemKeydown.emit(new EclMenuItemKeydownEvent(this, evt as KeyboardEvent));\n break;\n }\n case KeyCode.ESCAPE: {\n evt.preventDefault();\n this.menuItemKeydown.emit(new EclMenuItemKeydownEvent(this, evt as KeyboardEvent));\n break;\n }\n default: {\n break;\n }\n }\n }\n\n /**\n * Manages the keyboard navigation when the current element is the <a> tag of the menu item.\n * @param evt\n */\n onLinkKeydown(evt: Event): void {\n switch ((evt as KeyboardEvent).key) {\n case KeyCode.ARROW_DOWN: {\n evt.preventDefault();\n this.onLinkNextFocus(evt);\n break;\n }\n case KeyCode.ARROW_UP: {\n evt.preventDefault();\n this.menuItemKeydown.emit(new EclMenuItemKeydownEvent(this, evt as KeyboardEvent));\n break;\n }\n case KeyCode.ARROW_RIGHT: {\n evt.preventDefault();\n this.onLinkNextFocus(evt);\n break;\n }\n case KeyCode.ARROW_LEFT: {\n evt.preventDefault();\n this.menuItemKeydown.emit(new EclMenuItemKeydownEvent(this, evt as KeyboardEvent));\n break;\n }\n case KeyCode.ENTER: {\n this.onItemClick(evt);\n break;\n }\n case KeyCode.ESCAPE: {\n evt.preventDefault();\n this.onLinkEscape(evt);\n break;\n }\n default: {\n break;\n }\n }\n }\n\n /**\n * This method calculates height and width of an item, depending the maximum of lines(rows) allowed.\n * Depends on the 'maxLines' property of the parent menu component.\n * @param maxLines - property that sets the maximum possible lines in a menu item.\n * @param isMobileBreakpoint\n * @returns\n */\n checkMenuItem(maxLines: number, isMobileBreakpoint: boolean): void {\n if (maxLines < 1) return;\n\n const currentItem = this.el.nativeElement;\n const currentLink = this.menuLink().nativeElement;\n if (isMobileBreakpoint) {\n this.renderer.setStyle(currentLink, 'width', '100%');\n return;\n }\n this.renderer.setStyle(currentItem, 'alignItems', 'flex-start');\n const linkStyle = this.window.getComputedStyle(currentLink);\n\n const maxHeight = this.getMenuItemLinkMaxHeight(linkStyle, maxLines);\n\n if (currentLink.offsetHeight > maxHeight) {\n this.changeMenuItemLinkWidth(currentLink, maxLines, linkStyle);\n }\n this.renderer.removeStyle(currentItem, 'alignItems');\n }\n\n private onLinkEscape(evt: Event): void {\n const menuButton = this.menuButton();\n if (menuButton) {\n menuButton.el.nativeElement.focus();\n evt.stopPropagation();\n } else {\n this.menuLink().nativeElement.blur();\n }\n }\n\n private selectFirstMegaMenuItem(): void {\n this.submenu().selectFirstSubItem();\n }\n\n private onLinkFocus(): void {\n this.menuLink().nativeElement.focus();\n }\n\n private onLinkNextFocus(evt: Event): void {\n if (this.menuButton()) {\n this.onButtonFocus();\n } else {\n this.menuItemKeydown.emit(new EclMenuItemKeydownEvent(this, evt as KeyboardEvent));\n }\n }\n\n private onButtonFocus(): void {\n this.menuButton().el.nativeElement.focus();\n }\n\n private getMenuItemLinkMaxHeight(linkStyle: CSSStyleDeclaration, maxLines: number): number {\n return parseInt(linkStyle.lineHeight, 10) * maxLines + parseInt(linkStyle.paddingTop, 10) + parseInt(linkStyle.paddingBottom, 10);\n }\n\n /**\n * Calculates width of a menu item, depending on maximum lines of text allowed.\n * @param currentLink\n * @param maxLines\n * @param linkStyle\n * @returns\n */\n private changeMenuItemLinkWidth(currentLink: HTMLAnchorElement, maxLines: number, linkStyle: CSSStyleDeclaration): void {\n this.renderer.setStyle(currentLink, 'white-space', 'nowrap');\n const linkWidth = currentLink.offsetWidth;\n if (maxLines === 1) {\n this.renderer.setStyle(currentLink, 'width', `${linkWidth + parseInt(linkStyle.paddingLeft, 10) + parseInt(linkStyle.paddingRight, 10)}px`);\n this.renderer.removeStyle(currentLink, 'white-space');\n return;\n }\n const textSize = currentLink.text.length;\n const letterWidth = Math.ceil(linkWidth / textSize);\n const wordsArray = currentLink.text.trim().split(' ');\n const goalWidth = Math.ceil(linkWidth / maxLines);\n const firstWord = wordsArray[0];\n let cnt = 1;\n let wordWidth = Math.ceil((firstWord.length + 1) * letterWidth);\n while (wordWidth < goalWidth) {\n wordWidth += Math.ceil((wordsArray[cnt].length + 1) * letterWidth);\n cnt++;\n }\n this.renderer.setStyle(currentLink, 'width', `${wordWidth + parseInt(linkStyle.paddingLeft, 10) + parseInt(linkStyle.paddingRight, 10)}px`);\n this.renderer.removeStyle(currentLink, 'white-space');\n }\n\n private getClassDependingChildrenCnt(): string {\n if (this.hasChildren()) {\n if (this.submenu().eclMenuMegaItems().length < ColTrigger.COL1_TRIGGER) {\n return 'ecl-menu__item--col1';\n } else if (this.submenu().eclMenuMegaItems().length < ColTrigger.COL2_TRIGGER) {\n return 'ecl-menu__item--col2';\n } else if (this.submenu().eclMenuMegaItems().length < ColTrigger.COL3_TRIGGER) {\n return 'ecl-menu__item--col3';\n } else {\n return 'ecl-menu__item--full';\n }\n }\n return '';\n }\n\n private hasSubmenuAnySelections(): boolean {\n const submenu = this.submenu();\n return submenu && !!submenu.eclMenuMegaItems().find((it) => it.isCurrent());\n }\n\n private 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\n private observeBreakpointChanges(): void {\n this.appShell.getState<any>('breakpoints')\n .pipe(\n map(bp => !!(bp?.isMobile || bp?.isTablet || bp?.isLtLargeTablet)), // xs/sm/md/lg (< 1140px)\n distinctUntilChanged(),\n takeUntil(this.destroy$),\n )\n .subscribe((isMobile) => {\n this.isMobileBreakpoint.set(isMobile);\n });\n }\n}\n","@if (href()) {\n <a eclLink\n #menuLink\n variant=\"standalone\"\n [href]=\"href()\"\n [target]=\"target()\"\n class=\"ecl-menu__link\"\n [class.ecl-menu__link--current]=\"isCurrent()\"\n [attr.aria-current]=\"ariaCurrent()\"\n (focus)=\"onItemFocus($event)\"\n (click)=\"onItemClick($event)\"\n (keydown)=\"onLinkKeydown($event)\">\n {{ label() }}\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n} @else {\n <a eclLink\n #menuLink\n variant=\"standalone\"\n [attr.tabindex]=\"tabindex || 0\"\n [routerLink]=\"routerLink()\"\n [queryParams]=\"queryParams()\"\n [queryParamsHandling]=\"queryParamsHandling()\"\n class=\"ecl-menu__link\"\n [class.ecl-menu__link--current]=\"isCurrent()\"\n [attr.aria-current]=\"ariaCurrent()\"\n (focus)=\"onItemFocus($event)\"\n (click)=\"onItemClick($event)\"\n (keydown)=\"onLinkKeydown($event)\">\n {{ label() }}\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n}\n\n@if (hasChildren()) {\n @if (isMobileBreakpoint()) {\n <button\n eclButton\n variant=\"tertiary\"\n class=\"ecl-menu__button-caret ecl-button--neutral\"\n type=\"button\"\n [attr.aria-label]=\"toggleAriaLabel() || 'Access item children'\"\n (click)=\"onItemCaretClick($event)\"\n (keydown)=\"onButtonKeydown($event)\">\n <ecl-icon icon=\"corner-arrow\" size=\"m\" transform=\"rotate-180\" class=\"ecl-button__icon\"></ecl-icon>\n </button>\n } @else {\n <button\n eclButton\n variant=\"tertiary\"\n class=\"ecl-menu__button-caret ecl-button--neutral\"\n type=\"button\"\n [attr.aria-label]=\"toggleAriaLabel() || 'Access item children'\"\n [attr.aria-expanded]=\"isDataExpanded()\"\n (click)=\"onItemCaretClick($event)\"\n (keydown)=\"onButtonKeydown($event)\">\n <ecl-icon icon=\"corner-arrow\" size=\"m\" transform=\"rotate-180\" class=\"ecl-button__icon\"></ecl-icon>\n </button>\n }\n}\n\n<ng-content select=\"ecl-menu-mega\"></ng-content>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n","import { isPlatformBrowser } from '@angular/common';\nimport { AfterContentInit, ChangeDetectorRef, Component, DOCUMENT, ElementRef, OnDestroy, OnInit, PLATFORM_ID, afterNextRender, computed, effect, inject, numberAttribute, output, input, signal, contentChildren, viewChild } from '@angular/core';\nimport { outputToObservable } from '@angular/core/rxjs-interop';\nimport { EuiAppShellService } from '@eui/core';\nimport { EUI_ECL_BUTTON, EclButtonComponent } from '@eui/ecl/components/ecl-button';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\nimport { ECLBaseDirective, EclRtlService, KeyCode } from '@eui/ecl/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport type Hammer from 'hammerjs';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { EclMenuItemCaretEvent, EclMenuItemHoverEvent, EclMenuItemKeydownEvent, EclMenuItemSelectEvent } from '../events';\nimport { EclMenuItem } from '../models/ecl-menu-item.model';\nimport { EclMenuItemComponent } from './ecl-menu-item.component';\n\n/**\n * The horizontal menu is used as a primary navigation and it can display up to 2 levels.\n * It directs users to the pages where they need to visit.\n */\n@Component({\n selector: 'ecl-menu',\n templateUrl: './ecl-menu.component.html',\n imports: [TranslatePipe, ...EUI_ECL_BUTTON, ...EUI_ECL_ICON],\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n host: {\n role: 'navigation',\n '[class]': 'cssClasses()',\n '[class.ecl-menu--forced-mobile]': 'isTablet()',\n '[class.ecl-menu--forced-close]': 'isMenuHidden()',\n '[attr.data-expanded]': 'isHamburgerMenuOpened() ? \"\" : null',\n '(document:click)': 'onDocumentClick($event)',\n '(keydown.escape)': 'onEscapePress($event)',\n },\n})\nexport class EclMenuComponent extends ECLBaseDirective implements OnInit, AfterContentInit, OnDestroy {\n\n /**\n * Adds some additional styling for the menu items' labels.\n * Depending on that value, the labels can drop on 2-3 lines, if they are longer.\n */\n readonly maxLines = input(0, { transform: numberAttribute });\n\n readonly menuItemSelect = output<EclMenuItemSelectEvent>();\n readonly openHamburgerMenu = output();\n readonly closeHamburgerMenu = output();\n\n readonly isHamburgerMenuOpened = signal(false);\n readonly isMobileBreakpoint = signal(false);\n readonly isTablet = signal(false);\n readonly isMenuHidden = signal(false);\n readonly hasOverflow = signal(false);\n /** Controls the delayed application of CSS transition class (prevents Chrome flash on load) */\n readonly hasTransition = signal(false);\n /**\n * Show/hide the specific class for the 'previous' and 'next' buttons.\n */\n readonly isPrevBtnCurrentClass = signal(false);\n readonly menuListStyleRight = signal('auto');\n readonly menuListStyleLeft = signal('auto');\n readonly overlayStyleTop = signal<number | null>(null);\n readonly innerStyleTop = signal<number | null>(null);\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 /**\n * The main items of the menu.\n */\n protected readonly eclRootMenuItems = contentChildren(EclMenuItemComponent);\n /**\n * The element, that wraps the main menu items and the back and forth button.\n */\n protected readonly innerSection = viewChild<ElementRef>('innerSection');\n /**\n * The element that wraps the main menu items.\n */\n protected readonly itemsList = viewChild<ElementRef>('itemsList');\n /**\n * When there is an overflow of the menu, the 'previous' button to navigate back to first hidden items.\n */\n protected readonly btnPrevious = viewChild<EclButtonComponent>('btnPrevious');\n /**\n * When there is an overflow of the menu, the 'next' button to navigate to next hidden items.\n */\n protected readonly btnNext = viewChild<EclButtonComponent>('btnNext');\n /**\n * The button to open/close menu in mobile mode.\n */\n protected readonly openCloseButton = viewChild<EclButtonComponent>('openCloseButton');\n\n protected readonly isShowPrevBtn = signal(false);\n protected readonly isShowNextBtn = signal(false);\n\n protected readonly cssClasses = computed<string>(() =>\n [\n super.getCssClasses('ecl-menu'),\n this.hasTransition() ? 'ecl-menu--transition' : '',\n this.isRtl() ? 'ecl-menu--rtl' : '',\n ].join(' '));\n\n /** Controls whether hover events should be processed (suppressed briefly after touch interactions) */\n private ignoreHover = false;\n private readonly isRtl = signal(false);\n private currentItem: EclMenuItem;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private connectedItems = new WeakSet<EclMenuItemComponent>();\n private totalItemsWidth = 0;\n private offsetLeft = 0;\n private lastVisibleItem: EclMenuItemComponent;\n private hammertime: Hammer;\n private resizeTimer: ReturnType<typeof setTimeout>;\n private TIMEOUT_INTERVAL = 150;\n private el = inject(ElementRef);\n private eclRtlService = inject(EclRtlService);\n private euiAppShellService = inject(EuiAppShellService);\n private platformId = inject(PLATFORM_ID);\n private document = inject<Document>(DOCUMENT);\n private cdr = inject(ChangeDetectorRef);\n\n constructor() {\n super();\n // Subscribe to each projected root menu item's events as the set of items changes.\n effect(() => {\n this.eclRootMenuItems().forEach((rootItem) => this.connectMenuItemEvents(rootItem));\n });\n afterNextRender(() => {\n clearTimeout(this.resizeTimer);\n this.observeElementSizeChanges();\n this.resizeTimer = setTimeout(() => {\n this.checkMenuItemsWidth();\n this.checkMenuOverflow();\n }, this.TIMEOUT_INTERVAL);\n this.subscribeToAppShellBreakpoints();\n\n // Delay transition class to prevent CSS transitions from playing on page load (Chrome fix)\n setTimeout(() => {\n this.hasTransition.set(true);\n }, 500);\n });\n }\n\n /**\n * On outside click - close/hide any open menus.\n * @param event\n */\n onDocumentClick(event: MouseEvent): void {\n if (!this.isHamburgerMenuOpened()) return;\n\n const target = event.target as HTMLElement;\n if (!this.el.nativeElement.contains(target) ||\n target.classList.contains('ecl-menu__overlay')) {\n this.closeRootMenu();\n this.onCloseHamburgerMenu();\n }\n }\n\n /**\n * On 'esc' key clicked - close/hide any open menus.\n * @param event\n */\n onEscapePress(event: Event): void {\n if (!this.isHamburgerMenuOpened()) return;\n\n this.closeRootMenu();\n this.onCloseHamburgerMenu();\n }\n\n ngOnInit(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.handleRtlChangeState();\n this.observeSwipeGestures();\n }\n }\n\n ngAfterContentInit(): void {\n // Event wiring for projected items is handled by an effect set up in the constructor.\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n\n this.hammertime?.off('swipeleft');\n this.hammertime?.off('swiperight');\n }\n\n /**\n * Swipe left gesture handling\n */\n onSwipeLeft(): void {\n if (this.isMobileBreakpoint() || this.isTablet()) {\n this.onOpenHamburgerMenu();\n }\n }\n\n /**\n * Swipe right gesture handling\n */\n onSwipeRight(): void {\n if (this.isMobileBreakpoint() || this.isTablet()) {\n this.onCloseHamburgerMenu();\n }\n }\n\n /**\n * Manages state on open/close button click, used in mobile view.\n */\n onMenuOpenCloseClick(evt: MouseEvent): void {\n if (this.isHamburgerMenuOpened()) {\n this.onCloseHamburgerMenu();\n } else {\n this.onOpenHamburgerMenu();\n }\n evt.preventDefault();\n }\n\n /**\n * Manages state on close button click, used in mobile view, in EU theme.\n */\n onMenuCloseClick(evt: MouseEvent): void {\n this.onCloseHamburgerMenu();\n this.closeRootMenu();\n evt.preventDefault();\n }\n\n /**\n * Manages state on back button click, used in mobile view.\n */\n onMenuBackClick(evt: MouseEvent): void {\n this.closeRootMenu();\n evt.preventDefault();\n }\n\n /**\n * Manages state on 'previous' button click. Used in desktop view. Slides the items and shows the previous hidden items.\n */\n onPrevBtnClick(): void {\n this.slideMenuInitialState();\n this.refreshDisplay();\n }\n\n /**\n * Manages state on 'next' button click. Used in desktop view. Slides the items and shows the next hidden items.\n */\n onNextBtnClick(): void {\n this.isShowPrevBtn.set(true);\n this.isShowNextBtn.set(false);\n\n if (this.isRtl()) {\n this.showNextSlideRtl();\n } else {\n this.showNextSlideLtr();\n }\n\n this.refreshDisplay();\n }\n\n /**\n * Postions overlay, depending on parent header position.\n * This method is called from parent header, which uses the menu for navigation.\n * @param bottomSpaceY\n */\n positionMenuOverlay(bottomSpaceY: number): void {\n if ((this.isMobileBreakpoint() || this.isTablet()) && bottomSpaceY) {\n this.overlayStyleTop.set(bottomSpaceY);\n this.innerStyleTop.set(bottomSpaceY);\n } else {\n this.overlayStyleTop.set(null);\n this.innerStyleTop.set(null);\n }\n }\n\n private observeElementSizeChanges(): void {\n new ResizeObserver(() => {\n clearTimeout(this.resizeTimer);\n this.resizeTimer = setTimeout(() => {\n // Scroll to top when menu is open during resize (e.g. orientation change)\n if (this.isHamburgerMenuOpened()) {\n this.document.documentElement.scrollTop = 0;\n this.document.body.scrollTop = 0;\n }\n\n this.totalItemsWidth = 0;\n this.checkMenuItemsWidth();\n this.checkMenuOverflow();\n this.cdr.detectChanges();\n\n // Re-enable hover after resize completes\n this.ignoreHover = false;\n }, this.TIMEOUT_INTERVAL);\n }).observe(this.innerSection().nativeElement);\n }\n\n private slideMenuInitialState(): void {\n this.offsetLeft = 0;\n if (this.isRtl()) {\n this.menuListStyleRight.set('0px');\n this.menuListStyleLeft.set('auto');\n } else {\n this.menuListStyleLeft.set('0px');\n this.menuListStyleRight.set('auto');\n }\n\n this.isShowPrevBtn.set(false);\n this.isShowNextBtn.set(true);\n }\n\n private showNextSlideLtr(): void {\n const btnOffsetWidth = this.btnNext().el.nativeElement.offsetWidth;\n this.offsetLeft =\n this.lastVisibleItem.el.nativeElement.getBoundingClientRect().left -\n this.itemsList().nativeElement.getBoundingClientRect().left -\n btnOffsetWidth;\n\n this.menuListStyleLeft.set(`-${this.offsetLeft}px`);\n this.menuListStyleRight.set('auto');\n }\n\n private showNextSlideRtl(): void {\n const btnOffsetWidth = this.btnNext().el.nativeElement.offsetWidth;\n this.offsetLeft =\n this.itemsList().nativeElement.getBoundingClientRect().right -\n this.lastVisibleItem.el.nativeElement.getBoundingClientRect().right -\n btnOffsetWidth;\n\n this.menuListStyleRight.set(`-${this.offsetLeft}px`);\n this.menuListStyleLeft.set('auto');\n }\n\n private refreshDisplay(): void {\n this.eclRootMenuItems().forEach((item) => {\n item.checkMenuItem(this.maxLines(), this.isMobileBreakpoint());\n item.isVisible.set(!item.isVisible());\n });\n }\n\n private checkMenuOverflow(): void {\n this.hasOverflow.set(this.totalItemsWidth > this.innerSection().nativeElement.offsetWidth + 16);\n if (!this.hasOverflow() || this.isMobileBreakpoint() || this.isTablet()) {\n this.resetOverflowValues();\n return;\n }\n\n this.setClassForPrevNextButtons();\n this.resetVisibilityIndicator();\n\n if (this.offsetLeft === 0) {\n this.manageOverflowEnd();\n } else {\n this.manageOverflowBeginning();\n }\n }\n\n /**\n * Manage items visibility when using overlfow. For both rtl and ltr cases.\n */\n private manageOverflowBeginning(): void {\n if (this.isRtl()) {\n this.eclRootMenuItems()\n .filter(\n (item) =>\n item.el.nativeElement.getBoundingClientRect().right <=\n this.innerSection().nativeElement.getBoundingClientRect().right,\n )\n .forEach((el) => el.isVisible.set(true));\n } else {\n this.eclRootMenuItems()\n .filter(\n (item) =>\n item.el.nativeElement.getBoundingClientRect().left >= this.innerSection().nativeElement.getBoundingClientRect().left,\n )\n .forEach((el) => el.isVisible.set(true));\n }\n }\n\n /**\n * Manage items visibility when using overlfow, with the 'next' button. For both rtl and ltr cases.\n */\n private manageOverflowEnd(): void {\n this.isShowNextBtn.set(true);\n this.menuListStyleLeft.set('0px');\n this.menuListStyleRight.set('auto');\n if (this.isRtl()) {\n for (const item of this.eclRootMenuItems()) {\n if (item.el.nativeElement.getBoundingClientRect().left < this.itemsList().nativeElement.getBoundingClientRect().left) {\n this.lastVisibleItem = item;\n break;\n }\n item.isVisible.set(true);\n }\n } else {\n for (const item of this.eclRootMenuItems()) {\n if (item.el.nativeElement.getBoundingClientRect().right > this.itemsList().nativeElement.getBoundingClientRect().right) {\n this.lastVisibleItem = item;\n break;\n }\n item.isVisible.set(true);\n }\n }\n }\n\n private resetVisibilityIndicator(): void {\n this.eclRootMenuItems().forEach((item) => item.isVisible.set(false));\n }\n\n private resetOverflowValues(): void {\n this.isShowPrevBtn.set(false);\n this.isShowNextBtn.set(false);\n this.hasOverflow.set(false);\n this.menuListStyleLeft.set('0px');\n this.offsetLeft = 0;\n this.totalItemsWidth = 0;\n this.lastVisibleItem = null;\n }\n\n private setClassForPrevNextButtons(): void {\n this.currentItem = this.eclRootMenuItems().find((item) => item.isCurrent());\n if (this.currentItem) {\n if ((this.currentItem as EclMenuItemComponent).isVisible()) {\n this.isPrevBtnCurrentClass.set(true);\n } else {\n this.isPrevBtnCurrentClass.set(false);\n }\n }\n }\n\n private checkMenuItemsWidth(): void {\n this.eclRootMenuItems().forEach((item) => {\n item.checkMenuItem(this.maxLines(), this.isMobileBreakpoint());\n this.totalItemsWidth += item.el.nativeElement.offsetWidth;\n });\n }\n\n public get isMenuExpandedInMobile(): boolean {\n return (this.isMobileBreakpoint() || this.isTablet()) && this.isAnyRootMenuItemExpanded();\n }\n\n private isAnyRootMenuItemExpanded(): boolean {\n return this.eclRootMenuItems().some((item) => item.isExpanded());\n }\n\n private connectMenuItemEvents(item: EclMenuItemComponent): void {\n if (this.connectedItems.has(item)) {\n return;\n }\n this.connectedItems.add(item);\n outputToObservable(item.menuItemSelect).pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.onRootMenuItemSelected(evt);\n });\n outputToObservable(item.menuItemHover).pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.onRootMenuItemHovered(evt);\n });\n outputToObservable(item.menuItemHoverOut).pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.onRootMenuItemHoveredOut(evt);\n });\n outputToObservable(item.menuItemCaret).pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.onRootMenuItemCaret(evt);\n });\n outputToObservable(item.menuMegaItemSelect).pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.onMenuMegaItemSelected(item, evt);\n });\n outputToObservable(item.menuItemFocus).pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.onRootMenuItemFocused(item);\n });\n outputToObservable(item.menuItemKeydown).pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.onRootMenuItemKeydown(item, evt);\n });\n outputToObservable(item.menuMegaLastItemTab).pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.openCloseButton().onFocus();\n });\n }\n\n private onRootMenuItemFocused(item: EclMenuItem): void {\n const index = this.findIndexInArray(item);\n if (!this.isMobileBreakpoint() && !this.isTablet()) {\n this.closeRootMenu();\n }\n if (this.isMovePrevOverflow(index)){\n this.onPrevBtnClick();\n } else if (this.isMoveNextOverflow(index)){\n this.onNextBtnClick();\n }\n }\n\n private onRootMenuItemKeydown(item: EclMenuItemComponent, evt: EclMenuItemKeydownEvent): void {\n switch (evt.domEvent.key) {\n // At the first-level row, arrows navigate through the items (ECL parity):\n // ArrowRight/ArrowDown move forward, ArrowLeft/ArrowUp move backward.\n // Opening a submenu via ArrowDown is handled on the caret button itself\n // (onButtonKeydown), not here.\n case KeyCode.ARROW_RIGHT:\n case KeyCode.ARROW_DOWN: {\n this.onNextMenuItemFocus(item);\n break;\n }\n case KeyCode.ARROW_UP:\n case KeyCode.ARROW_LEFT: {\n this.onPrevMenuItemFocus(item);\n break;\n }\n case KeyCode.SPACE:\n case KeyCode.ENTER: {\n this.onRootMenuItemEnter(item);\n break;\n }\n case KeyCode.ESCAPE: {\n this.onRootMenuItemEscape(item, evt.domEvent);\n break;\n }\n case KeyCode.TAB: {\n if ((this.isMobileBreakpoint() || this.isTablet()) && this.isLastItem(item)) {\n evt.preventDefault();\n this.openCloseButton().onFocus();\n }\n break;\n }\n default: {\n break;\n }\n }\n }\n\n private isLastItem(item: EclMenuItemComponent): boolean {\n const items = this.eclRootMenuItems();\n return items[items.length - 1] === item;\n }\n\n private onRootMenuItemEscape(item: EclMenuItem, evt: Event): void {\n if (item.isHovered()) {\n this.closeRootMenu();\n }\n evt.stopPropagation();\n }\n\n private onPrevMenuItemFocus(item: EclMenuItem): void {\n const index = this.findIndexInArray(item);\n if (index !== 0) {\n this.getRootMenuItemsArray()[index - 1].onFocusFromNext();\n }\n }\n\n private onNextMenuItemFocus(item: EclMenuItem): void {\n const index = this.findIndexInArray(item);\n if (index !== this.getRootMenuItemsArray().length - 1) {\n this.getRootMenuItemsArray()[index + 1].onFocusFromPrev();\n }\n }\n\n private findIndexInArray(item: EclMenuItem): number {\n return this.getRootMenuItemsArray().findIndex(el => item === el);\n }\n\n private isMoveNextOverflow(index: number): boolean {\n return !this.getRootMenuItemsArray()[index].isVisible() && this.isShowNextBtn();\n }\n\n private isMovePrevOverflow(index: number): boolean {\n return !this.getRootMenuItemsArray()[index].isVisible() && this.isShowPrevBtn();\n }\n\n private onRootMenuItemSelected(evt: EclMenuItemSelectEvent): void {\n const requestedRootMenuItem: EclMenuItem = evt.menuItem;\n\n this.closeRootMenu();\n this.deselectAllRootMenuItems();\n this.deselectAllSubmenusItems();\n this.selectMenuItem(requestedRootMenuItem);\n this.onCloseHamburgerMenu();\n if (this.hasOverflow()) {\n this.managePrevNextButtonsClassOnItemSelected();\n }\n this.sendMenuItemSelectEvent(evt);\n }\n\n private managePrevNextButtonsClassOnItemSelected(): void {\n if (this.isShowNextBtn()) {\n this.isPrevBtnCurrentClass.set(true);\n } else {\n this.isPrevBtnCurrentClass.set(false);\n }\n }\n\n private onRootMenuItemHovered(evt: EclMenuItemHoverEvent): void {\n if (this.ignoreHover) return;\n this.openSubmenu(evt.menuItem);\n }\n\n private onRootMenuItemEnter(item: EclMenuItem): void {\n if (this.isMobileBreakpoint() || this.isTablet()) {\n this.closeRootMenuButOneItem(item);\n this.toggleExpandedForMenuItem(item);\n } else {\n if (!item.isHovered()) {\n this.openSubmenu(item);\n } else {\n this.closeRootMenu();\n }\n }\n }\n\n private openSubmenu(item: EclMenuItem): void {\n if (item.isVisible()) {\n if (!this.isMobileBreakpoint() && !this.isTablet() && (item as EclMenuItemComponent).submenu()) {\n this.checkMegaMenu(item as EclMenuItemComponent);\n }\n item.isHovered.set(true);\n this.closeRootMenuButOneItem(item);\n this.showMenu();\n }\n }\n\n private getRootMenuItemsArray(): readonly EclMenuItemComponent[] {\n return this.eclRootMenuItems();\n }\n\n private checkMegaMenu(menuItem: EclMenuItemComponent): void {\n if (menuItem.isFull()) {\n if (this.isRtl()) {\n menuItem.submenu().offsetRight.set(this.offsetLeft);\n } else {\n menuItem.submenu().offsetLeft.set(this.offsetLeft);\n }\n return;\n }\n this.checkEnoughSpaceForMegaMenu(menuItem);\n }\n\n private checkEnoughSpaceForMegaMenu(menuItem: EclMenuItemComponent): void {\n const megaBounding = menuItem.submenu().el.nativeElement.getBoundingClientRect();\n const containerBounding = this.innerSection().nativeElement.getBoundingClientRect();\n const menuItemBounding = menuItem.el.nativeElement.getBoundingClientRect();\n\n const megaWidth = megaBounding.width;\n const containerWidth = containerBounding.width;\n const menuItemPosition = menuItemBounding.left - containerBounding.left;\n\n if (menuItemPosition + megaWidth > containerWidth) {\n menuItem.submenu().isRtlDisplay.set(true);\n } else {\n menuItem.submenu().isRtlDisplay.set(false);\n }\n }\n\n private onRootMenuItemHoveredOut(evt: EclMenuItemHoverEvent): void {\n if (this.ignoreHover) return;\n if (!this.isMobileBreakpoint()) {\n this.closeRootMenu();\n }\n }\n\n private onRootMenuItemCaret(evt: EclMenuItemCaretEvent): void {\n const requestedRootMenuItem: EclMenuItem = evt.menuItem;\n // Desktop: the caret click is a click-to-open/close affordance (ECL parity with\n // handleClickOnCaret). Toggle the submenu the same way Enter/Space does on desktop,\n // without touching the mobile accordion state or suppressing hover.\n if (!this.isMobileBreakpoint() && !this.isTablet()) {\n if (!requestedRootMenuItem.isHovered()) {\n this.openSubmenu(requestedRootMenuItem);\n } else {\n this.closeRootMenu();\n }\n return;\n }\n\n // Mobile/tablet: suppress hover events briefly after touch/caret interaction\n // (prevents double-trigger on hybrid devices), then toggle the accordion.\n this.ignoreHover = true;\n\n this.closeRootMenuButOneItem(requestedRootMenuItem);\n this.toggleExpandedForMenuItem(requestedRootMenuItem);\n }\n\n private onMenuMegaItemSelected(rootMenuItem: EclMenuItem, evt: EclMenuItemSelectEvent): void {\n const requestedSubmenuItem = evt.menuItem;\n\n this.closeRootMenu();\n this.deselectAllRootMenuItems();\n this.deselectAllSubmenusItems();\n this.selectMenuItem(rootMenuItem);\n this.selectMenuItem(requestedSubmenuItem);\n this.onCloseHamburgerMenu();\n if (this.hasOverflow()) {\n this.managePrevNextButtonsClassOnItemSelected();\n }\n this.sendMenuItemSelectEvent(evt);\n\n this.hideMenu();\n }\n\n private deselectAllRootMenuItems(): void {\n this.deselectMenuItems(this.eclRootMenuItems());\n }\n\n private deselectAllSubmenusItems(): void {\n this.eclRootMenuItems().forEach((rootItem) => {\n this.deselectMenuItems(rootItem.children());\n });\n }\n\n private deselectMenuItems(items: ReadonlyArray<EclMenuItem>): void {\n items.forEach((it) => {\n it.isCurrent.set(false);\n });\n }\n\n private selectMenuItem(item: EclMenuItem): void {\n item.isCurrent.set(true);\n this.currentItem = item;\n }\n\n private hideMenu(): void {\n this.isMenuHidden.set(true);\n }\n\n private showMenu(): void {\n this.isMenuHidden.set(false);\n }\n\n private closeRootMenu(): void {\n this.eclRootMenuItems().forEach((it) => {\n it.isExpanded.set(false);\n it.isHovered.set(false);\n });\n }\n\n private closeRootMenuButOneItem(item: EclMenuItem): void {\n this.eclRootMenuItems()\n .filter((it) => it !== item)\n .forEach((it) => {\n it.isExpanded.set(false);\n it.isHovered.set(false);\n });\n }\n\n private handleRtlChangeState(): void {\n this.eclRtlService.currentRtlState$.pipe(takeUntil(this.destroy$)).subscribe((rtlState) => {\n if (rtlState !== undefined && this.isRtl() !== rtlState) {\n this.isRtl.set(rtlState);\n if (this.hasOverflow()) {\n this.slideMenuInitialState();\n setTimeout(() => this.checkMenuOverflow());\n }\n }\n });\n }\n\n private toggleExpandedForMenuItem(item: EclMenuItem): void {\n item.isExpanded.set(!item.isExpanded());\n }\n\n private onOpenHamburgerMenu(): void {\n this.disableScroll();\n this.isHamburgerMenuOpened.set(true);\n this.openHamburgerMenu.emit();\n this.focusOnFirstItem();\n }\n\n private onCloseHamburgerMenu(): void {\n this.isHamburgerMenuOpened.set(false);\n this.enableScroll();\n this.closeHamburgerMenu.emit();\n }\n\n private disableScroll(): void {\n this.document.body.classList.add('no-scroll');\n }\n\n private enableScroll(): void {\n this.document.body.classList.remove('no-scroll');\n }\n\n private focusOnFirstItem(): void {\n this.eclRootMenuItems()[0]?.onFocusFromPrev();\n }\n\n private sendMenuItemSelectEvent(evt: EclMenuItemSelectEvent): void {\n this.menuItemSelect.emit(new EclMenuItemSelectEvent(evt.menuItem, evt.domEvent));\n }\n\n private observeSwipeGestures(): void {\n // load hammerjs only on browser\n if(isPlatformBrowser(this.platformId)) {\n import('hammerjs').then((Hammer: Hammer) => {\n this.hammertime = new Hammer.default(this.document, { inputClass: Hammer.TouchInput });\n this.hammertime.on('swipeleft', this.onSwipeLeft.bind(this));\n this.hammertime.on('swiperight', this.onSwipeRight.bind(this));\n }).catch((error) => {\n console.error('Error loading HammerJS', error);\n });\n }\n }\n\n private subscribeToAppShellBreakpoints(): void {\n this.euiAppShellService.breakpoints$\n .pipe(takeUntil(this.destroy$))\n .subscribe((bkps: any) => {\n if (!bkps) return;\n\n this.breakpointsValue = bkps;\n this.isMobileBreakpoint.set(!!bkps.isMobile);\n this.isTablet.set(!!bkps.isTablet || !!bkps.isLtLargeTablet);\n this.cdr.detectChanges();\n\n if (!this.isMobileBreakpoint() && !this.isTablet()) {\n this.overlayStyleTop.set(null);\n this.innerStyleTop.set(null);\n\n // Ensure hamburger menu is closed when switching to desktop\n if (this.isHamburgerMenuOpened()) {\n this.onCloseHamburgerMenu();\n this.closeRootMenu();\n }\n }\n });\n }\n}\n","<div class=\"ecl-menu__overlay\" [style.top.px]=\"overlayStyleTop()\"></div>\n<div class=\"ecl-container ecl-menu__container\">\n <button #openCloseButton eclButton isIconOnly variant=\"tertiary\" eclStyle=\"neutral\" type=\"button\" class=\"ecl-menu__open\"\n (click)=\"onMenuOpenCloseClick($event)\" [attr.aria-expanded]=\"isHamburgerMenuOpened()\">\n <ecl-icon icon=\"hamburger\" size=\"m\"></ecl-icon>\n <ecl-icon icon=\"close\" size=\"m\"></ecl-icon>\n @if (isHamburgerMenuOpened()) {\n <span eclButtonLabel>{{ 'ecl.common.CLOSE' | translate }}</span>\n } @else {\n <span eclButtonLabel>{{ 'ecl.menu.MENU' | translate }}</span>\n }\n </button>\n\n <section\n class=\"ecl-menu__inner\"\n #innerSection\n [class.ecl-menu__inner--expanded]=\"isMenuExpandedInMobile\"\n [class.ecl-menu__inner--has-overflow]=\"hasOverflow()\"\n aria-label=\"Menu\" [style.top.px]=\"innerStyleTop()\">\n <header class=\"ecl-menu__inner-header\">\n <button\n eclButton\n variant=\"tertiary\"\n class=\"ecl-menu__close\"\n containerStyleClass=\"ecl-menu__close-container\"\n (click)=\"onMenuCloseClick($event)\">\n <span eclButtonLabel>{{ 'ecl.common.CLOSE' | translate }}</span>\n <ecl-icon icon=\"close\" size=\"s\"></ecl-icon>\n </button>\n\n <div class=\"ecl-menu__title\">{{ 'ecl.menu.MENU' | translate }}</div>\n\n <button eclButton variant=\"tertiary\" class=\"ecl-menu__back\" (click)=\"onMenuBackClick($event)\">\n <ecl-icon icon=\"corner-arrow\" size=\"s\" transform=\"rotate-270\"></ecl-icon>\n <span eclButtonLabel>{{ 'ecl.common.BACK' | translate }}</span>\n </button>\n </header>\n <button\n eclButton\n #btnPrevious\n tabindex=\"-1\"\n variant=\"tertiary\"\n isIconOnly\n class=\"ecl-menu__item ecl-menu__items-previous\"\n [class.ecl-menu__item--current]=\"isPrevBtnCurrentClass()\"\n [style.display]=\"isShowPrevBtn() ? 'flex' : 'none'\"\n (click)=\"onPrevBtnClick()\">\n <ecl-icon icon=\"corner-arrow\" size=\"s\" transform=\"rotate-270\"></ecl-icon>\n <span eclButtonLabel class=\"ecl-u-sr-only\">{{ 'ecl.common.PREVIOUS' | translate }}</span>\n </button>\n <button\n eclButton\n #btnNext\n variant=\"tertiary\"\n tabindex=\"-1\"\n isIconOnly\n class=\"ecl-menu__item ecl-menu__items-next\"\n [class.ecl-menu__item--current]=\"!isPrevBtnCurrentClass()\"\n [style.display]=\"isShowNextBtn() ? 'flex' : 'none'\"\n (click)=\"onNextBtnClick()\">\n <ecl-icon icon=\"corner-arrow\" size=\"s\" transform=\"rotate-90\"></ecl-icon>\n <span eclButtonLabel class=\"ecl-u-sr-only\">{{ 'ecl.common.NEXT' | translate }}</span>\n </button>\n <ul class=\"ecl-menu__list\" #itemsList [style.right]=\"menuListStyleRight()\" [style.left]=\"menuListStyleLeft()\">\n <ng-content></ng-content>\n </ul>\n </section>\n</div>\n","import { EclMenuComponent, EclMenuItemComponent } from './ecl-menu';\nimport { EclMenuMegaComponent, EclMenuMegaItemComponent } from './ecl-menu-mega';\n\nexport * from './ecl-menu/index';\nexport * from './ecl-menu-mega/index';\nexport * from './events/index';\nexport * from './models/ecl-menu-item.model';\n\nexport const EUI_ECL_MENU = [\n EclMenuComponent, EclMenuItemComponent, EclMenuMegaComponent, EclMenuMegaItemComponent,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|