@eui/components 19.2.2-snapshot-1746647149114 → 19.2.2-snapshot-1746687278530

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.
@@ -1 +1 @@
1
- {"version":3,"file":"eui-components-eui-menu.mjs","sources":["../../eui-menu/eui-menu-item.component.ts","../../eui-menu/eui-menu-item.component.html","../../eui-menu/eui-menu.component.ts","../../eui-menu/eui-menu.component.html","../../eui-menu/eui-menu.module.ts","../../eui-menu/index.ts","../../eui-menu/eui-components-eui-menu.ts"],"sourcesContent":["import {\n Component,\n HostBinding,\n ViewEncapsulation,\n Input,\n Output,\n EventEmitter,\n HostListener,\n OnInit,\n OnChanges,\n SimpleChanges,\n booleanAttribute,\n ElementRef,\n} from '@angular/core';\nimport { FocusableOption } from '@angular/cdk/a11y';\n\nimport { consumeEvent } from '@eui/core';\nimport { EuiMenuItem } from './models/eui-menu-item.model';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { EUI_ICON } from '@eui/components/eui-icon';\nimport { EUI_BADGE } from '@eui/components/eui-badge';\nimport { EUI_ICON_BUTTON } from '@eui/components/eui-icon-button';\nimport { EUI_BUTTON } from '@eui/components/eui-button';\nimport { EuiTooltipDirective } from '@eui/components/directives';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\n\n@Component({\n selector: 'eui-menu-item',\n templateUrl: './eui-menu-item.component.html',\n styleUrls: ['./styles/_index.scss'],\n encapsulation: ViewEncapsulation.None,\n imports: [\n RouterLink,\n RouterLinkActive,\n NgTemplateOutlet,\n ...EUI_ICON,\n ...EUI_BADGE,\n ...EUI_ICON_BUTTON,\n ...EUI_BUTTON,\n EuiTooltipDirective,\n ],\n})\nexport class EuiMenuItemComponent implements OnInit, OnChanges, FocusableOption {\n\n @HostBinding('attr.role') role = 'menuitem';\n @HostBinding('attr.aria-label') ariaLabel = '';\n\n @HostBinding('class')\n public get cssClasses(): string {\n return this.getCssClasses();\n }\n @HostBinding('attr.tabindex') tabindex = '-1';\n @HostBinding('attr.aria-haspopup')\n get ariaHasPopup(): boolean {\n return this.item?.children?.length > 0 ? true : undefined;\n }\n @HostBinding('attr.aria-expanded')\n get ariaExpanded(): boolean {\n return this.item.children ? coerceBooleanProperty(this.item.expanded) : undefined;\n }\n @HostBinding('attr.aria-disabled')\n get ariaDisabled(): boolean {\n return this.item.disabled\n }\n\n @Input() item: EuiMenuItem;\n @Input() parent: EuiMenuItem;\n @Input() hasExpandIcon = true;\n @Output() expandToggle = new EventEmitter<EuiMenuItem>();\n @Output() itemClick = new EventEmitter<EuiMenuItem>();\n\n expandMenuLabel = 'Expand';\n collapseMenuLabel = 'Collapse';\n\n isUrlItem = false;\n isLinkItem = false;\n isLabelItem = false;\n isActionIconFocused = false;\n\n @Input({ transform: booleanAttribute }) hasIcon: boolean;\n @Input({ transform: booleanAttribute }) hasTooltip: boolean;\n @Input({ transform: booleanAttribute }) hasTooltipOnExpanded: boolean;\n @Input({ transform: booleanAttribute }) isCollapsed: boolean;\n @Input({ transform: booleanAttribute }) hasCollapsedInitials: boolean;\n @Input({ transform: booleanAttribute }) hasBoldRootLevel: boolean;\n\n constructor(private elementRef: ElementRef) {}\n\n ngOnInit(): void {\n this.isUrlItem = (this.item.url || this.item.urlExternal || this.item.children || this.item.command) && !this.item.link;\n this.isLabelItem = !this.item.url && !this.item.urlExternal && !this.item.command && !this.item.children && !this.item.link;\n\n this.isLinkItem = !this.isUrlItem && !this.isLabelItem;\n this.ariaLabel = this.getAriaLabel();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.item && changes.item.isFirstChange()) {\n this.item = changes.item.currentValue;\n if(!this.item.urlExternalTarget) {\n this.item.urlExternalTarget = '_blank';\n }\n\n this.item.filtered = typeof this.item.filtered == 'boolean' ? this.item.filtered : true;\n this.item.visible = typeof this.item.visible == 'boolean' ? this.item.visible : true;\n }\n }\n\n @HostListener('click', ['$event'])\n public stopPropagation(event: MouseEvent): void {\n this.itemClick.emit(this.item);\n consumeEvent(event);\n }\n\n get menuItemTooltip(): string {\n if ((this.hasTooltip && this.isCollapsed) || (this.hasTooltipOnExpanded && !this.isCollapsed)) {\n return this.item.tooltip || this.getTooltipFromItem(this.item);\n }\n return null;\n }\n\n public onClick(event: MouseEvent | KeyboardEvent): void {\n this.itemClick.emit(this.item);\n this.focus();\n consumeEvent(event);\n }\n\n public onExpandToggle(event: Event): void {\n this.expandToggle.emit(this.item);\n consumeEvent(event);\n }\n\n public onActionIconClick(event: MouseEvent): void {\n this.item.actionIcon?.action(event);\n consumeEvent(event);\n }\n\n public onActionIconKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Enter') {\n this.item.actionIcon?.action(event);\n consumeEvent(event);\n }\n }\n\n public focusActionIcon(): void {\n this.elementRef.nativeElement.querySelector('.eui-menu-item__link-action-icon').focus();\n this.isActionIconFocused = true;\n }\n\n onActionIconFocusOut(): void {\n this.isActionIconFocused = false;\n }\n\n public focus(): void {\n this.elementRef.nativeElement.focus();\n }\n\n /**\n * Check if an element is visible in the viewport\n * @param partiallyVisible\n */\n elementIsVisibleInViewport(partiallyVisible = false): boolean {\n const { top, left, bottom, right } = this.elementRef.nativeElement.getBoundingClientRect();\n const { innerHeight, innerWidth } = window as Window;\n return partiallyVisible\n ? ((top > 0 && top < innerHeight) ||\n (bottom > 0 && bottom < innerHeight)) &&\n ((left > 0 && left < innerWidth) || (right > 0 && right < innerWidth))\n : top >= 0 && left >= 0 && bottom <= innerHeight && right <= innerWidth;\n }\n\n /**\n * Scroll the element into view\n * @param properties\n */\n scrollIntoView(properties: unknown): void {\n this.elementRef.nativeElement.scrollIntoView(properties);\n }\n\n private getTooltipFromItem(item: EuiMenuItem): string {\n return item.label && item.tagLabel ? `${item.label} (${item.tagLabel})` : item.label ||\n item.tagLabel ||\n null;\n }\n\n private getAriaLabel(): string {\n return this.item.label ||\n this.item.tagLabel ||\n (this.item.actionIcon && this.item.actionIcon.label) ||\n this.item.iconLabel ||\n 'Eui menu item';\n }\n\n /**\n * Returns the default eui-menu-item class on the HostBinding function\n * @private\n */\n private getCssClasses(): string {\n return [\n 'eui-menu-item',\n !this.parent && this.hasBoldRootLevel ? 'eui-menu-item--bold' : '',\n ].join(' ').trim();\n }\n}\n","@if (item.visible && item.filtered) {\n @if (isLabelItem) {\n <li\n role=\"none\"\n id=\"{{item.id}}\"\n class=\"eui-menu-item__content\"\n [attr.data-e2e]=\"item.e2eAttr\"\n [class.eui-menu-item--disabled]=\"item.disabled\"\n [attr.aria-disabled]=\"item.disabled\"\n [euiTooltip]=\"menuItemTooltip\"\n tabindex=\"-1\"\n position=\"after\">\n\n <a\n (click)=\"onClick($event)\"\n tabindex=\"-1\"\n class=\"eui-menu-item__link eui-menu-item__link-category\"\n [class.eui-menu-item__link--disabled]=\"item.disabled\"\n [class.eui-menu-item__link--active]=\"item.active\"\n [class.eui-menu-item__link--has-sub]=\"item.children?.length > 0\"\n href=\"javascript:void(0)\"\n [euiTooltip]=\"menuItemTooltip\"\n position=\"after\">\n\n <div class=\"eui-menu-item__link-start-block\">\n <ng-template *ngTemplateOutlet=\"itemIconContent\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n\n <div class=\"eui-menu-item__link-content-block\">\n <div class=\"eui-menu-item__link-label-container\">\n <span class=\"eui-menu-item__link-label-category\">{{ item.label }}</span>\n </div>\n </div>\n\n <div class=\"eui-menu-item__link-end-block\">\n <ng-template *ngTemplateOutlet=\"itemEndContent\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n </a>\n </li>\n }\n\n @if (isUrlItem) {\n <li\n role=\"none\"\n id=\"{{item.id}}\"\n [attr.data-e2e]=\"item.e2eAttr\"\n class=\"eui-menu-item__content\"\n [class.eui-menu-item--disabled]=\"item.disabled\"\n [class.eui-menu-item--expanded]=\"item.expanded || item.filtered\"\n [attr.aria-disabled]=\"item.disabled\">\n <a\n (click)=\"onClick($event)\"\n class=\"eui-menu-item__link\"\n [class.eui-menu-item__link--disabled]=\"item.disabled\"\n [class.eui-menu-item__link--active]=\"item.active\"\n [class.eui-menu-item__link--has-sub]=\"item.children?.length > 0\"\n [routerLink]=\"item.url ? item.url : null\"\n [queryParams]=\"item.queryParams\"\n [routerLinkActive]=\"item.url ? 'eui-menu-item__link--active' : ''\"\n [euiTooltip]=\"menuItemTooltip\"\n position=\"after\"\n tabindex=\"-1\">\n <ng-template *ngTemplateOutlet=\"linkContent\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </a>\n\n <ng-template *ngTemplateOutlet=\"content\"></ng-template>\n </li>\n }\n\n @if (isLinkItem) {\n <li\n role=\"none\"\n id=\"{{item.id}}\"\n [attr.data-e2e]=\"item.e2eAttr\"\n class=\"eui-menu-item__content\"\n [class.eui-menu-item--disabled]=\"item.disabled\"\n [class.eui-menu-item--expanded]=\"item.expanded || item.filtered\"\n [attr.aria-disabled]=\"item.disabled\">\n <a\n (click)=\"onClick($event)\"\n tabindex=\"-1\"\n class=\"eui-menu-item__link\"\n [class.eui-menu-item__link--disabled]=\"item.disabled\"\n [class.eui-menu-item__link--active]=\"item.active\"\n [class.eui-menu-item__link--has-sub]=\"item.children?.length > 0\"\n href=\"javascript:void(0)\"\n [euiTooltip]=\"menuItemTooltip\"\n position=\"after\">\n <ng-template *ngTemplateOutlet=\"linkContent\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </a>\n\n <ng-template *ngTemplateOutlet=\"content\"></ng-template>\n </li>\n }\n}\n\n<ng-template #linkContent>\n <div class=\"eui-menu-item__link-start-block\">\n <ng-template *ngTemplateOutlet=\"itemIconContent\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n\n <div class=\"eui-menu-item__link-content-block\">\n <div class=\"eui-menu-item__link-label-container\">\n <span class=\"eui-menu-item__link-label\">{{ item.label }}</span>\n @if (item.urlExternal && item.urlExternalTarget === '_blank') {\n <eui-icon-svg\n class=\"eui-menu-item__label-external\"\n icon=\"eui-ecl-external\"\n size=\"2xs\"\n aria-label=\"external link icon\"\n euiEnd>\n </eui-icon-svg>\n }\n </div>\n </div>\n\n <div class=\"eui-menu-item__link-end-block\">\n <ng-template *ngTemplateOutlet=\"itemEndContent\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n</ng-template>\n\n<!-- PROJECTED CONTENT BLOCK -->\n<ng-template #content>\n <ng-content />\n</ng-template>\n\n<!-- PROJECTED START BLOCK -->\n<ng-template #itemIconContent>\n @if (!isCollapsed) {\n @if (hasIcon) {\n @if (item.iconSvgName) {\n <!-- SVG -->\n <eui-icon-svg\n class=\"eui-menu-item__link-icon\"\n icon=\"{{ item.iconSvgName }}\"\n fillColor=\"{{ item.iconTypeClass }}\" />\n } @else if (item.iconSvgUrl) {\n <eui-icon-svg\n class=\"eui-menu-item__link-icon\"\n iconUrl=\"{{ item.iconSvgUrl }}\"\n fillColor=\"{{ item.iconTypeClass }}\" />\n } @else if (item.hasMarker) {\n <!-- MARKER -->\n <eui-icon-svg\n class=\"eui-menu-item__link-marker\"\n fillColor=\"{{ item?.markerTypeClass }}\"\n icon=\"ellipse:sharp\"\n size=\"2xs\"\n [aria-label]=\"item.markerTypeClass + ' ' + 'marker'\" />\n }\n @else if (!isLabelItem) {\n <!-- DEFAULT for non category items -->\n <eui-icon-svg\n class=\"eui-menu-item__link-icon\"\n icon=\"ellipse:sharp\"\n fillColor=\"neutral-light\"\n size=\"2xs\" />\n }\n } @else if (item.hasMarker) {\n <eui-icon-svg\n class=\"eui-menu-item__link-marker\"\n fillColor=\"{{ item?.markerTypeClass }}\"\n icon=\"ellipse:sharp\"\n size=\"2xs\"\n [aria-label]=\"item.markerTypeClass + ' ' + 'marker'\" />\n }\n\n } @else {\n @if (hasCollapsedInitials) {\n <span class=\"eui-menu-item__link-initials eui-u-c-bg-{{item.iconTypeClass}}\">\n {{ item.initials }}\n </span>\n } @else {\n @if (hasIcon) {\n @if (item.iconSvgName) {\n <!-- SVG -->\n <eui-icon-svg\n class=\"eui-menu-item__link-icon\"\n icon=\"{{ item.iconSvgName }}\"\n fillColor=\"{{ item.iconTypeClass }}\" />\n\n } @else if (item.iconSvgUrl) {\n <eui-icon-svg\n class=\"eui-menu-item__link-icon\"\n iconUrl=\"{{ item.iconSvgUrl }}\"\n fillColor=\"{{ item.iconTypeClass }}\" />\n\n } @else if (item.hasMarker) {\n <!-- MARKER -->\n <eui-icon-svg\n class=\"eui-menu-item__link-marker\"\n fillColor=\"{{ item?.markerTypeClass }}\"\n icon=\"ellipse:sharp\"\n size=\"2xs\"\n [aria-label]=\"item.markerTypeClass + ' ' + 'marker'\" />\n } @else {\n <!-- DEFAULT -->\n <eui-icon-svg\n class=\"eui-menu-item__link-icon\"\n icon=\"ellipse:sharp\"\n fillColor=\"neutral-light\"\n size=\"2xs\"\n [aria-label]=\"item.iconLabel\" />\n }\n } @else {\n <eui-icon-svg\n class=\"eui-menu-item__link-icon eui-u-ml-2xs\"\n icon=\"square:sharp\"\n fillColor=\"neutral-light\"\n size=\"2xs\" />\n }\n }\n }\n</ng-template>\n\n<!-- PROJECTED END BLOCK -->\n<ng-template #itemEndContent>\n @if (item.tagLabel) {\n @if (isCollapsed) {\n <eui-badge [euiVariant]=\"item.tagTypeClass\" class=\"eui-menu-item__link-dotted-badge\" />\n } @else {\n <eui-badge [euiVariant]=\"item.tagTypeClass\">\n {{ item.tagLabel }}\n </eui-badge>\n }\n }\n\n @if (item.actionIcon) {\n <button\n euiButton\n euiRounded\n euiIconButton\n euiSizeS\n euiBasicButton\n type=\"button\"\n tabindex=\"-1\"\n (keydown)=\"onActionIconKeyDown($event)\"\n (focusout)=\"onActionIconFocusOut()\"\n (focus)=\"focusActionIcon()\"\n class=\"eui-menu-item__link-action-icon\"\n [euiDisabled]=\"item.disabled\"\n [attr.aria-label]=\"item.actionIcon?.label\"\n (click)=\"onActionIconClick($event)\">\n <eui-icon-svg [icon]=\"item.actionIcon?.icon\" [fillColor]=\"item.actionIcon?.color\"></eui-icon-svg>\n </button>\n }\n\n @if (hasExpandIcon) {\n @if (item.children?.length > 0) {\n <eui-icon-button\n class=\"eui-menu-item__link-toggle\"\n [icon]=\"item.expanded ? 'chevron-up:sharp': 'chevron-down:sharp'\"\n (buttonClick)=\"onExpandToggle($event)\"\n [ariaLabel]=\"item.expanded ? collapseMenuLabel : expandMenuLabel\"\n euiRounded\n size=\"s\"\n [tabindex]=\"-1\"\n [euiDisabled]=\"item.disabled\"/>\n }\n }\n</ng-template>\n","import {\n Component,\n HostBinding,\n ViewEncapsulation,\n Input,\n OnInit,\n Output,\n EventEmitter,\n OnChanges,\n SimpleChanges,\n HostListener,\n booleanAttribute,\n OnDestroy,\n AfterViewInit,\n ViewChildren,\n QueryList,\n ChangeDetectorRef,\n ViewChild,\n ElementRef,\n} from '@angular/core';\nimport { Router, ActivatedRoute, NavigationEnd } from '@angular/router';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { FocusKeyManager } from '@angular/cdk/a11y';\nimport { Subscription } from 'rxjs';\n\nimport { consumeEvent } from '@eui/core';\nimport { EuiMenuItemComponent } from './eui-menu-item.component';\nimport { EuiMenuItem } from './models/eui-menu-item.model';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { EUI_ICON } from '@eui/components/eui-icon';\nimport { EUI_ICON_INPUT } from '@eui/components/eui-icon-input';\nimport { EUI_INPUT_TEXT } from '@eui/components/eui-input-text';\n\n@Component({\n selector: 'eui-menu',\n templateUrl: './eui-menu.component.html',\n styleUrls: ['./styles/_index.scss'],\n encapsulation: ViewEncapsulation.None,\n imports: [\n NgTemplateOutlet,\n EuiMenuItemComponent,\n ...EUI_ICON,\n ...EUI_ICON_INPUT,\n ...EUI_INPUT_TEXT,\n ],\n})\nexport class EuiMenuComponent implements OnInit, OnChanges, OnDestroy, AfterViewInit {\n @ViewChildren(EuiMenuItemComponent) protected menuItemsComponents: QueryList<EuiMenuItemComponent>;\n @ViewChild('filterInput', { read: ElementRef }) protected filterInput: ElementRef<HTMLInputElement>;\n\n @HostBinding('class')\n public get cssClasses(): string {\n return [\n 'eui-menu',\n this.isCollapsed ? 'eui-menu--collapsed' : '',\n !this.hasIcons ? 'eui-menu--no-icons' : '',\n this.isFlat ? 'eui-menu--flat': '',\n ].join(' ').trim();\n }\n\n @Input() items: EuiMenuItem[];\n @Input() searchFilterLabel: string;\n @Input() externalLinkLabel: string;\n @Input() fragmentId: string;\n @Input() filterValue = '';\n\n @Input({ transform: booleanAttribute }) isCollapsed = false;\n @Input({ transform: booleanAttribute }) hasCollapsedInitials = false;\n @Input({ transform: booleanAttribute }) hasFilter = false;\n @Input({ transform: booleanAttribute }) hasIcons = false;\n @Input({ transform: booleanAttribute }) hasTooltip = true;\n @Input({ transform: booleanAttribute }) hasTooltipOnExpanded = false;\n /**\n * Expand all items in the menu. Affects only items that have no expanded property set.\n * e.g. items = [{label: test, expanded: true}, {label: test2, expanded: false}, {label: test3}] will expand only test3.\n */\n @Input({ transform: booleanAttribute }) expandAllItems = false;\n @Input({ transform: booleanAttribute }) isFlat = false;\n @Input({ transform: booleanAttribute }) hasScrollToItem = false;\n @Input({ transform: booleanAttribute }) hasBoldRootLevel = false;\n\n @Output() isClick: EventEmitter<boolean> = new EventEmitter();\n @Output() itemClick: EventEmitter<EuiMenuItem> = new EventEmitter<EuiMenuItem>();\n @Output() expandToggle = new EventEmitter<EuiMenuItem>();\n\n protected hasExpandIcon = true;\n private subscription: Subscription;\n private focusKeyManager: FocusKeyManager<EuiMenuItemComponent>;\n\n constructor(\n private router: Router,\n private route: ActivatedRoute,\n private cd: ChangeDetectorRef,\n ) {}\n\n @HostListener('click', ['$event'])\n stopPropagation(event: MouseEvent): void {\n event.stopPropagation();\n }\n\n onKeydown(event: KeyboardEvent): void {\n // finds first child when ArrowDown\n const firstChild = this.focusKeyManager.activeItem?.item.children? this.findFirstFilteredItem(this.focusKeyManager.activeItem?.item.children) : undefined;\n const firstFocusableItem = this.findFocusableItem(firstChild);\n // finds the parent element\n const parent = this.focusKeyManager.activeItem?.item.parent;\n const parentFocusableItem = this.findFocusableItem(parent);\n switch (event.key) {\n case 'Enter': {\n if (\n (this.focusKeyManager.activeItem.isLinkItem || this.focusKeyManager.activeItem.isUrlItem) &&\n !this.focusKeyManager.activeItem.disabled\n ) {\n this.focusKeyManager.activeItem.onClick(event);\n event.preventDefault();\n }\n break;\n }\n case 'ArrowRight': {\n if(this.isFilterEnabled()) {\n break;\n }\n if(this.focusKeyManager.activeItem?.item.actionIcon){\n this.checkActionIconFocusState();\n break;\n } else {\n if (!this.focusKeyManager.activeItem?.item.expanded) {\n this.focusKeyManager.activeItem?.onExpandToggle(event);\n this.cd.detectChanges();\n }\n break;\n }\n }\n case 'ArrowLeft': {\n if(this.isFilterEnabled()) {\n break;\n }\n if(this.focusKeyManager.activeItem?.item.actionIcon){\n this.checkActionIconFocusState();\n break;\n } else {\n if (this.focusKeyManager.activeItem?.item.expanded) {\n this.focusKeyManager.activeItem.onExpandToggle(event);\n this.cd.detectChanges();\n event.preventDefault();\n }\n break;\n }\n }\n case 'ArrowDown': {\n event.preventDefault();\n if (this.shouldRenderChild(this.focusKeyManager.activeItem?.item)) {\n //focuses first child\n firstFocusableItem?.focus();\n this.focusKeyManager.updateActiveItem(firstFocusableItem);\n } else if (parent) {\n // finds last filtered child when ArrowDown and navigating within submenu\n const filteredChildren = this.findFilteredItems(parent.children);\n const lastChildIndex = (filteredChildren?.length) - 1;\n const lastChild = filteredChildren[lastChildIndex];\n const lastFocusableItem = this.findFocusableItem(lastChild);\n // if the active item is the last child, puts the focus on the next parent\n if(this.focusKeyManager.activeItem === lastFocusableItem){\n this.focusKeyManager.updateActiveItem(parentFocusableItem);\n this.focusKeyManager.setNextItemActive();\n } else {\n this.focusKeyManager.setActiveItem(this.focusKeyManager.activeItemIndex +1);\n }\n } else {\n // skips remaining children in the query list when there is expanded node\n this.focusKeyManager.skipPredicate(menuItem => menuItem.parent != undefined || menuItem.item.visible === false);\n this.focusKeyManager.onKeydown(event);\n }\n break;\n }\n case 'ArrowUp': {\n event.preventDefault();\n if (parent) {\n // finds first filtered child when ArrowUp\n const filteredChildren = this.findFilteredItems(parent.children);\n const firstChildUp = filteredChildren['0']\n const firstFocusableItemUp = this.findFocusableItem(firstChildUp);\n // when navigating up on a submenu focuses the parent if the active item is the first child\n if(this.focusKeyManager.activeItem === firstFocusableItemUp){\n this.focusKeyManager.setActiveItem(parentFocusableItem);\n } else {\n this.focusKeyManager.setActiveItem(this.focusKeyManager.activeItemIndex -1);\n }\n } else {\n this.focusKeyManager.onKeydown(event);\n // when navigating up from a parent element to an expanded submenu, finds the last child and focuses it\n if(this.shouldRenderChild(this.focusKeyManager.activeItem?.item)){\n const filteredChildren = this.findFilteredItems(this.focusKeyManager.activeItem?.item.children);\n const lastChildIndexUp = (filteredChildren.length) - 1;\n const lastFocusableItemUp =this.findFocusableItem(filteredChildren[lastChildIndexUp]);\n this.focusKeyManager.setActiveItem(lastFocusableItemUp);\n }\n }\n break;\n }\n default: {\n this.focusKeyManager.onKeydown(event);\n break;\n }\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.items) {\n this.items = this.configureItems(this.items);\n // get current url\n const currentUrl = this.router.url;\n // find an item that matches the current url or the most relevant one\n const item = this.findMostRelevantItem(currentUrl, this.items);\n // expand to that item\n if (item) {\n this.expandToGivenItem(item);\n }\n }\n\n // Expand / Collapse All items\n if (changes.expandAllItems) {\n this.items = this.setExpandedToAllItems(coerceBooleanProperty(changes.expandAllItems.currentValue), this.items);\n }\n\n if (changes.filterValue && this.hasFilter) {\n this.onFilter(changes.filterValue.currentValue ?? '');\n }\n\n // Refresh when interactive collapsed to initials\n if (changes.hasCollapsedInitials) {\n this.hasCollapsedInitials = changes.hasCollapsedInitials.currentValue;\n this.items = this.configureItems(this.items);\n }\n\n if(changes.hasScrollToItem){\n this.hasScrollToItem = changes.hasScrollToItem.currentValue;\n if(this.hasScrollToItem){\n this.scrollToItem(this.router.url);\n }\n }\n\n if(changes.hasFilter){\n this.hasFilter = changes.hasFilter.currentValue;\n if(!this.hasFilter) {\n // iterate through all items and reset the filtered property\n this.items = this.filterMenuItems(this.items, '')\n }\n }\n }\n\n ngOnInit(): void {\n // Labels default values - TODO : translations\n if (!this.searchFilterLabel) {\n this.searchFilterLabel = 'Search filter';\n }\n\n // subscription to routes url changes for activating the scrollIntoView\n this.router.events.subscribe((event) => {\n // Handle route change event\n if (event instanceof NavigationEnd) {\n if (this.hasScrollToItem) {\n this.scrollToItem(event.url);\n }\n }\n });\n }\n\n ngAfterViewInit(): void {\n // instantiates FocusKeyManager with the query list of items enabling wrapping\n this.focusKeyManager = new FocusKeyManager(this.menuItemsComponents).withWrap();\n\n // scrolls to the item that matches the current url\n if(this.hasScrollToItem){\n this.scrollToItem(this.router.url);\n }\n }\n\n ngOnDestroy():void {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n protected onClick(item: EuiMenuItem): void {\n if (!item.disabled) {\n if (item.urlExternal) {\n window.open(item.urlExternal, item.urlExternalTarget || '_blank');\n } else if (item.url) {\n this.router.navigate([item.url], { relativeTo: this.route, fragment: this.fragmentId });\n } else {\n if (typeof item.command === 'function') {\n item.command();\n } else {\n this.onExpandToggle(item);\n }\n }\n\n if (item.link) {\n this.items = this.items?.map((it) => {\n it.active = false;\n if (it.id === item.id) {\n it.active = true;\n }\n return it;\n });\n }\n }\n\n this.isClick.emit(true);\n this.itemClick.emit(item);\n\n const focusedItem = this.findFocusableItem(item);\n this.focusKeyManager.updateActiveItem(focusedItem);\n }\n\n protected onExpandToggle(item: EuiMenuItem): void {\n if (item.children) {\n this.expandToggle.emit(item);\n this.onExpandToggled(item, this.items);\n // TODO: investigate why the above is needed. Can it be simply \"item.expanded = !item.expanded;\" ?\n }\n }\n\n protected onMenuFilterClick(event: MouseEvent): void {\n consumeEvent(event);\n }\n\n /**\n * Filter the menu items based on the input value\n * @param event\n * @protected\n */\n protected onFilter(event: Event): void;\n protected onFilter(value: string): void;\n protected onFilter(eventOrValue: Event | string): void {\n const value = eventOrValue instanceof Event\n ? (eventOrValue.target as HTMLInputElement).value\n : eventOrValue;\n this.items = this.filterMenuItems(this.items, value);\n this.hasExpandIcon = !(this.isFilterEnabled());\n }\n\n /**\n * Check if the children of an item should be rendered. The children should be rendered if the item is expanded\n * or if the item is filtered and the filter input has a value. There are two cases when the filter input has a value:\n * 1. The user has typed something in the filter input\n * 2. The user has typed something in the filter input and the item is filtered\n * In general there are two states to be taken into account, the expanded state and the filtered state.\n *\n * @param item\n * @protected\n */\n protected shouldRenderChild(item: EuiMenuItem): boolean {\n return item?.children &&\n (\n item?.expanded || (\n this.hasFilter &&\n item?.filtered &&\n this.isFilterEnabled()\n )\n )\n }\n\n /**\n * finds the EuiMenuItemComponent in the queried focusableItems[] that matches the passed EuiMenuItem object\n *\n * @param menuItem an EuiMenuItem\n * @private\n */\n private findFocusableItem(menuItem: EuiMenuItem ): EuiMenuItemComponent {\n return this.menuItemsComponents.find(\n (focusableItem) => focusableItem.item.label === menuItem?.label && focusableItem.item.id === menuItem.id,\n );\n }\n\n /**\n * finds the first item that is filtered\n *\n * @param menuItems an array of EuiMenuItem\n * @private\n */\n private findFirstFilteredItem(menuItems: EuiMenuItem []): EuiMenuItem {\n return menuItems.find((item) => item.filtered);\n }\n\n /**\n * finds all filtered menu items\n *\n * @param menuItems an array of EuiMenuItem\n * @private\n */\n private findFilteredItems(menuItems: EuiMenuItem []): EuiMenuItem [] {\n return menuItems.filter((items) => items.filtered);\n }\n\n /**\n * checks the focus state of the action icon\n *\n * @private\n */\n private checkActionIconFocusState(): void {\n // check if the action icon is focused and if not focus it, otherwise focus the active item\n // eslint-disable-next-line\n !this.focusKeyManager.activeItem.isActionIconFocused ? this.focusKeyManager.activeItem.focusActionIcon() : this.focusKeyManager.activeItem.focus();\n }\n\n /**\n * filter all menu items given a value\n *\n * @param menuItems an array of menu items\n * @param filterValue the value to filter menu items\n * @private\n */\n private filterMenuItems(menuItems: EuiMenuItem[], filterValue: string): EuiMenuItem[] {\n return menuItems?.map((item: EuiMenuItem) => {\n const found = item.label?.toLowerCase().indexOf(filterValue.toLowerCase()) !== -1;\n if (item.children) {\n item.children = this.filterMenuItems(item.children, filterValue);\n item.filtered = item.children.filter((l) => l['filtered'] === true).length > 0;\n } else if (found) {\n item.filtered = found;\n } else {\n item.filtered = false;\n }\n return item;\n }) || [];\n }\n\n /**\n * expand / collapse all items\n *\n * @param isExpanded\n * @param items\n * @private\n */\n private setExpandedToAllItems(isExpanded: boolean, items: EuiMenuItem[]): EuiMenuItem[] {\n return items?.map((item) => {\n if (item.children) {\n item.expanded = item.expanded ?? isExpanded;\n item.children = this.setExpandedToAllItems(isExpanded, item.children);\n }\n return Object.assign(item, { visible: item.visible === undefined ? true : item.visible });\n });\n }\n\n /**\n * expand / collapse a menu item\n *\n * @param item The item where the \"expand\" had been toggled\n * @param items The items list (used for recursion)\n * @private\n */\n private onExpandToggled(item: EuiMenuItem, items: EuiMenuItem[]): void {\n const itemIdx = items?.indexOf(item);\n if (itemIdx > -1) {\n items[itemIdx].expanded = !items[itemIdx].expanded;\n } else {\n items.forEach((i) => {\n if (i.children) {\n this.onExpandToggled(item, i.children);\n }\n });\n }\n }\n\n /**\n * configure an array of items with visible, filtered and expand (in case of expandAllItems flag enabled) properties\n *\n * @param items An array of EuiMenuItem\n * @param parent the parent item of items if exists\n * @private\n */\n private configureItems(items: EuiMenuItem[], parent?: EuiMenuItem): EuiMenuItem[] {\n return items?.map((item) => {\n // recursion in case there are children\n if (item.children) {\n item.children = this.configureItems(item.children, item);\n // expand all parents with children\n if (this.expandAllItems) {\n item.expanded = true;\n }\n }\n // point to the parent\n if (parent) {\n item.parent = parent;\n }\n\n // make sure the items are configured with a unique id\n this.items = this.items?.map((item) => this.setRandomId(item));\n\n if (item.label && this.hasCollapsedInitials) {\n const words = item.label.split(' ');\n if (words.length === 1) {\n item.initials = `${item.label.substring(0, 1)}${item.label.substring(1, 1)}`;\n\n } else {\n item.initials = `${words[0].substring(0, 1)}${words[1].substring(0, 1)}`;\n }\n }\n\n return Object.assign(item, { visible: item.visible === undefined ? true : item.visible, filtered: true });\n });\n }\n\n /**\n * Given a URL and a list of items, it will expand the item that matches the URL. If not item matches exactly the url, then it will\n * match the item that is most relevant to that url.\n *\n * @param url\n * @param items\n * @param relevantItem\n * @private\n */\n private findMostRelevantItem(url: string, items: EuiMenuItem[], relevantItem?: EuiMenuItem): EuiMenuItem {\n if (!items) {\n return null;\n }\n\n items.forEach((item) => {\n if (item.url && url.indexOf(item.url.substring(1)) > -1) {\n relevantItem = this.getMostRelevantItem(url, relevantItem, item);\n }\n\n if (item.children) {\n relevantItem = this.findMostRelevantItem(url, item.children, relevantItem);\n }\n });\n\n return relevantItem;\n }\n\n /**\n * Given two items with url return the one with the most relevant url that matches given url\n *\n * @param url A URL to be matched with the one of given items\n * @param item1\n * @param item2\n * @private\n */\n private getMostRelevantItem(url: string, item1: EuiMenuItem, item2: EuiMenuItem): EuiMenuItem {\n const remainder1 = url.replace(item1?.url || '', '');\n const remainder2 = url.replace(item2?.url || '', '');\n\n return remainder1.length < remainder2.length ? item1 : item2;\n }\n\n /**\n * Given an item, if there's a parent expand it until you reach the root item\n *\n * @param item Given menu item\n * @private\n */\n private expandToGivenItem(item: EuiMenuItem): void {\n if (item.parent) {\n setTimeout(() => (item.parent.expanded = true));\n this.expandToGivenItem(item.parent);\n }\n }\n\n /**\n * Set a random id to an item and its child if they don't have one\n * @param item\n * @private\n */\n private setRandomId(item: EuiMenuItem): EuiMenuItem {\n item.id = item.id || crypto.randomUUID();\n if(item.children){\n item.children = item.children.map((child) => {\n return this.setRandomId(child);\n });\n }\n return item;\n }\n\n /**\n * Scroll to an item if it's not visible in the viewport\n * @param url\n * @private\n */\n private scrollToItem(url: string): void {\n const item = this.findMostRelevantItem(url, this.items);\n if (item) {\n // change the state of that item to expanded if it's not\n this.expandToGivenItem(item);\n setTimeout(_ => {\n const menuItem = this.menuItemsComponents?.find((menuItem) => menuItem.item.id === item.id);\n if(menuItem && !menuItem.elementIsVisibleInViewport()){\n menuItem.scrollIntoView({ behavior: 'smooth' });\n }\n }, 300);\n }\n }\n\n /**\n * Check if the filter input has a value\n * @private\n */\n private isFilterEnabled(): boolean {\n return this.filterInput?.nativeElement?.value.length > 0\n }\n}\n","@if (hasFilter) {\n <div class=\"eui-menu-filter\" [class.eui-menu-filter--collapsed]=\"isCollapsed\" (click)=\"onMenuFilterClick($event)\">\n <eui-icon-input>\n <eui-icon-svg icon=\"eui-ecl-search\" fillColor=\"neutral-lighter\" aria-label=\"Search Icon\"></eui-icon-svg>\n <input\n #filterInput\n euiInputText\n [euiClearable]=\"true\"\n (input)=\"onFilter($event)\"\n [placeholder]=\"searchFilterLabel\"\n [attr.aria-label]=\"searchFilterLabel\"\n [value]=\"filterValue\" />\n </eui-icon-input>\n </div>\n}\n\n<ul euiList class=\"eui-menu\" role=\"menubar\" aria-orientation=\"vertical\" tabindex=\"0\" (keydown)=\"onKeydown($event)\">\n @if (items) {\n @for (item of items; track item.id; let index = $index) {\n <ng-template [ngTemplateOutlet]=\"menuItemTemplateRef\" [ngTemplateOutletContext]=\"{ menuItem: item, index: index }\"></ng-template>\n }\n } @else {\n <span class=\"eui-menu--no-items\">No menu items defined</span>\n }\n</ul>\n\n<!-- describe the recursive template of the menu item -->\n<ng-template #menuItemTemplateRef let-item=\"menuItem\" let-parent=\"parent\" let-i=\"index\">\n <!-- render the menu item-->\n @if (item.filtered) {\n <eui-menu-item\n [item]=\"item\"\n [parent]=\"parent\"\n [hasIcon]=\"hasIcons\"\n [hasTooltip]=\"hasTooltip\"\n [hasTooltipOnExpanded]=\"hasTooltipOnExpanded\"\n [isCollapsed]=\"isCollapsed\"\n [hasBoldRootLevel]=\"hasBoldRootLevel\"\n [hasCollapsedInitials]=\"hasCollapsedInitials\"\n (expandToggle)=\"onExpandToggle($event)\"\n (itemClick)=\"onClick($event)\"\n [hasExpandIcon]=\"hasExpandIcon\">\n <!-- if the menu item has children, render the children -->\n @if (shouldRenderChild(item)) {\n <ul euiList class=\"eui-menu eui-menu-sub\" role=\"menu\" [attr.aria-label]=\"item.label\" tabindex=\"-1\">\n @for (child of item.children; track child.id; let childIndex = $index) {\n <ng-template [ngTemplateOutlet]=\"menuItemTemplateRef\" [ngTemplateOutletContext]=\"{ menuItem: child, index: childIndex, parent: item }\">\n </ng-template>\n }\n </ul>\n }\n </eui-menu-item>\n }\n</ng-template>\n","import { NgModule } from '@angular/core';\n\nimport { EuiMenuComponent } from './eui-menu.component';\nimport { EuiMenuItemComponent } from './eui-menu-item.component';\n\n/**\n * Angular module that provides list components for eui-menu\n *\n * @deprecated Use {@link EUI_MENU} instead\n */\n@NgModule({\n imports: [EuiMenuComponent, EuiMenuItemComponent],\n exports: [EuiMenuComponent, EuiMenuItemComponent],\n})\nexport class EuiMenuModule {}\n","import { EuiMenuItemComponent } from './eui-menu-item.component';\nimport { EuiMenuComponent } from './eui-menu.component';\n\nexport * from './eui-menu.module';\nexport * from './eui-menu.component';\nexport * from './eui-menu-item.component';\nexport * from './models/eui-menu-item.model';\n\nexport const EUI_MENU = [\n EuiMenuComponent,\n EuiMenuItemComponent,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","i4"],"mappings":"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"}
1
+ {"version":3,"file":"eui-components-eui-menu.mjs","sources":["../../eui-menu/eui-menu-item.component.ts","../../eui-menu/eui-menu-item.component.html","../../eui-menu/eui-menu.component.ts","../../eui-menu/eui-menu.component.html","../../eui-menu/eui-menu.module.ts","../../eui-menu/index.ts","../../eui-menu/eui-components-eui-menu.ts"],"sourcesContent":["import {\n Component,\n HostBinding,\n ViewEncapsulation,\n Input,\n Output,\n EventEmitter,\n HostListener,\n OnInit,\n OnChanges,\n SimpleChanges,\n booleanAttribute,\n ElementRef,\n} from '@angular/core';\nimport { FocusableOption } from '@angular/cdk/a11y';\n\nimport { consumeEvent } from '@eui/core';\nimport { EuiMenuItem } from './models/eui-menu-item.model';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { EUI_ICON } from '@eui/components/eui-icon';\nimport { EUI_BADGE } from '@eui/components/eui-badge';\nimport { EUI_ICON_BUTTON } from '@eui/components/eui-icon-button';\nimport { EUI_BUTTON } from '@eui/components/eui-button';\nimport { EuiTooltipDirective } from '@eui/components/directives';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'eui-menu-item',\n templateUrl: './eui-menu-item.component.html',\n styleUrls: ['./styles/_index.scss'],\n encapsulation: ViewEncapsulation.None,\n imports: [\n RouterLink,\n RouterLinkActive,\n NgTemplateOutlet,\n TranslateModule,\n ...EUI_ICON,\n ...EUI_BADGE,\n ...EUI_ICON_BUTTON,\n ...EUI_BUTTON,\n EuiTooltipDirective,\n ],\n})\nexport class EuiMenuItemComponent implements OnInit, OnChanges, FocusableOption {\n\n @HostBinding('attr.role') role = 'menuitem';\n @HostBinding('attr.aria-label') ariaLabel = '';\n\n @HostBinding('class')\n public get cssClasses(): string {\n return this.getCssClasses();\n }\n @HostBinding('attr.tabindex') tabindex = '-1';\n @HostBinding('attr.aria-haspopup')\n get ariaHasPopup(): boolean {\n return this.item?.children?.length > 0 ? true : undefined;\n }\n @HostBinding('attr.aria-expanded')\n get ariaExpanded(): boolean {\n return this.item.children ? coerceBooleanProperty(this.item.expanded) : undefined;\n }\n @HostBinding('attr.aria-disabled')\n get ariaDisabled(): boolean {\n return this.item.disabled\n }\n\n @Input() item: EuiMenuItem;\n @Input() parent: EuiMenuItem;\n @Input() hasExpandIcon = true;\n @Output() expandToggle = new EventEmitter<EuiMenuItem>();\n @Output() itemClick = new EventEmitter<EuiMenuItem>();\n\n expandMenuLabel = 'Expand';\n collapseMenuLabel = 'Collapse';\n\n isUrlItem = false;\n isLinkItem = false;\n isLabelItem = false;\n isActionIconFocused = false;\n\n @Input({ transform: booleanAttribute }) hasIcon: boolean;\n @Input({ transform: booleanAttribute }) hasTooltip: boolean;\n @Input({ transform: booleanAttribute }) hasTooltipOnExpanded: boolean;\n @Input({ transform: booleanAttribute }) isCollapsed: boolean;\n @Input({ transform: booleanAttribute }) hasCollapsedInitials: boolean;\n @Input({ transform: booleanAttribute }) hasBoldRootLevel: boolean;\n\n constructor(private elementRef: ElementRef) {}\n\n ngOnInit(): void {\n this.isUrlItem = (this.item.url || this.item.urlExternal || this.item.children || this.item.command) && !this.item.link;\n this.isLabelItem = !this.item.url && !this.item.urlExternal && !this.item.command && !this.item.children && !this.item.link;\n\n this.isLinkItem = !this.isUrlItem && !this.isLabelItem;\n this.ariaLabel = this.getAriaLabel();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.item && changes.item.isFirstChange()) {\n this.item = changes.item.currentValue;\n if(!this.item.urlExternalTarget) {\n this.item.urlExternalTarget = '_blank';\n }\n\n this.item.filtered = typeof this.item.filtered == 'boolean' ? this.item.filtered : true;\n this.item.visible = typeof this.item.visible == 'boolean' ? this.item.visible : true;\n }\n }\n\n @HostListener('click', ['$event'])\n public stopPropagation(event: MouseEvent): void {\n this.itemClick.emit(this.item);\n consumeEvent(event);\n }\n\n get menuItemTooltip(): string {\n if ((this.hasTooltip && this.isCollapsed) || (this.hasTooltipOnExpanded && !this.isCollapsed)) {\n return this.item.tooltip || this.getTooltipFromItem(this.item);\n }\n return null;\n }\n\n public onClick(event: MouseEvent | KeyboardEvent): void {\n this.itemClick.emit(this.item);\n this.focus();\n consumeEvent(event);\n }\n\n public onExpandToggle(event: Event): void {\n this.expandToggle.emit(this.item);\n consumeEvent(event);\n }\n\n public onActionIconClick(event: MouseEvent): void {\n this.item.actionIcon?.action(event);\n consumeEvent(event);\n }\n\n public onActionIconKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Enter') {\n this.item.actionIcon?.action(event);\n consumeEvent(event);\n }\n }\n\n public focusActionIcon(): void {\n this.elementRef.nativeElement.querySelector('.eui-menu-item__link-action-icon').focus();\n this.isActionIconFocused = true;\n }\n\n onActionIconFocusOut(): void {\n this.isActionIconFocused = false;\n }\n\n public focus(): void {\n this.elementRef.nativeElement.focus();\n }\n\n /**\n * Check if an element is visible in the viewport\n * @param partiallyVisible\n */\n elementIsVisibleInViewport(partiallyVisible = false): boolean {\n const { top, left, bottom, right } = this.elementRef.nativeElement.getBoundingClientRect();\n const { innerHeight, innerWidth } = window as Window;\n return partiallyVisible\n ? ((top > 0 && top < innerHeight) ||\n (bottom > 0 && bottom < innerHeight)) &&\n ((left > 0 && left < innerWidth) || (right > 0 && right < innerWidth))\n : top >= 0 && left >= 0 && bottom <= innerHeight && right <= innerWidth;\n }\n\n /**\n * Scroll the element into view\n * @param properties\n */\n scrollIntoView(properties: unknown): void {\n this.elementRef.nativeElement.scrollIntoView(properties);\n }\n\n private getTooltipFromItem(item: EuiMenuItem): string {\n return item.label && item.tagLabel ? `${item.label} (${item.tagLabel})` : item.label ||\n item.tagLabel ||\n null;\n }\n\n private getAriaLabel(): string {\n return this.item.label ||\n this.item.tagLabel ||\n (this.item.actionIcon && this.item.actionIcon.label) ||\n this.item.iconLabel ||\n 'Eui menu item';\n }\n\n /**\n * Returns the default eui-menu-item class on the HostBinding function\n * @private\n */\n private getCssClasses(): string {\n return [\n 'eui-menu-item',\n !this.parent && this.hasBoldRootLevel ? 'eui-menu-item--bold' : '',\n ].join(' ').trim();\n }\n}\n","@if (item.visible && item.filtered) {\n @if (isLabelItem) {\n <li\n role=\"none\"\n id=\"{{item.id}}\"\n class=\"eui-menu-item__content\"\n [attr.data-e2e]=\"item.e2eAttr\"\n [class.eui-menu-item--disabled]=\"item.disabled\"\n [attr.aria-disabled]=\"item.disabled\"\n [euiTooltip]=\"menuItemTooltip\"\n tabindex=\"-1\"\n position=\"after\">\n\n <a\n (click)=\"onClick($event)\"\n tabindex=\"-1\"\n class=\"eui-menu-item__link eui-menu-item__link-category\"\n [class.eui-menu-item__link--disabled]=\"item.disabled\"\n [class.eui-menu-item__link--active]=\"item.active\"\n [class.eui-menu-item__link--has-sub]=\"item.children?.length > 0\"\n href=\"javascript:void(0)\"\n [euiTooltip]=\"menuItemTooltip\"\n position=\"after\">\n\n <div class=\"eui-menu-item__link-start-block\">\n <ng-template *ngTemplateOutlet=\"itemIconContent\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n\n <div class=\"eui-menu-item__link-content-block\">\n <div class=\"eui-menu-item__link-label-container\">\n <span class=\"eui-menu-item__link-label-category\">{{ item.label | translate }}</span>\n </div>\n </div>\n\n <div class=\"eui-menu-item__link-end-block\">\n <ng-template *ngTemplateOutlet=\"itemEndContent\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n </a>\n </li>\n }\n\n @if (isUrlItem) {\n <li\n role=\"none\"\n id=\"{{item.id}}\"\n [attr.data-e2e]=\"item.e2eAttr\"\n class=\"eui-menu-item__content\"\n [class.eui-menu-item--disabled]=\"item.disabled\"\n [class.eui-menu-item--expanded]=\"item.expanded || item.filtered\"\n [attr.aria-disabled]=\"item.disabled\">\n <a\n (click)=\"onClick($event)\"\n class=\"eui-menu-item__link\"\n [class.eui-menu-item__link--disabled]=\"item.disabled\"\n [class.eui-menu-item__link--active]=\"item.active\"\n [class.eui-menu-item__link--has-sub]=\"item.children?.length > 0\"\n [routerLink]=\"item.url ? item.url : null\"\n [queryParams]=\"item.queryParams\"\n [routerLinkActive]=\"item.url ? 'eui-menu-item__link--active' : ''\"\n [euiTooltip]=\"menuItemTooltip\"\n position=\"after\"\n tabindex=\"-1\">\n <ng-template *ngTemplateOutlet=\"linkContent\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </a>\n\n <ng-template *ngTemplateOutlet=\"content\"></ng-template>\n </li>\n }\n\n @if (isLinkItem) {\n <li\n role=\"none\"\n id=\"{{item.id}}\"\n [attr.data-e2e]=\"item.e2eAttr\"\n class=\"eui-menu-item__content\"\n [class.eui-menu-item--disabled]=\"item.disabled\"\n [class.eui-menu-item--expanded]=\"item.expanded || item.filtered\"\n [attr.aria-disabled]=\"item.disabled\">\n <a\n (click)=\"onClick($event)\"\n tabindex=\"-1\"\n class=\"eui-menu-item__link\"\n [class.eui-menu-item__link--disabled]=\"item.disabled\"\n [class.eui-menu-item__link--active]=\"item.active\"\n [class.eui-menu-item__link--has-sub]=\"item.children?.length > 0\"\n href=\"javascript:void(0)\"\n [euiTooltip]=\"menuItemTooltip\"\n position=\"after\">\n <ng-template *ngTemplateOutlet=\"linkContent\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </a>\n\n <ng-template *ngTemplateOutlet=\"content\"></ng-template>\n </li>\n }\n}\n\n<ng-template #linkContent>\n <div class=\"eui-menu-item__link-start-block\">\n <ng-template *ngTemplateOutlet=\"itemIconContent\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n\n <div class=\"eui-menu-item__link-content-block\">\n <div class=\"eui-menu-item__link-label-container\">\n <span class=\"eui-menu-item__link-label\">{{ item.label | translate }}</span>\n @if (item.urlExternal && item.urlExternalTarget === '_blank') {\n <eui-icon-svg\n class=\"eui-menu-item__label-external\"\n icon=\"eui-ecl-external\"\n size=\"2xs\"\n aria-label=\"external link icon\"\n euiEnd>\n </eui-icon-svg>\n }\n </div>\n </div>\n\n <div class=\"eui-menu-item__link-end-block\">\n <ng-template *ngTemplateOutlet=\"itemEndContent\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n</ng-template>\n\n<!-- PROJECTED CONTENT BLOCK -->\n<ng-template #content>\n <ng-content />\n</ng-template>\n\n<!-- PROJECTED START BLOCK -->\n<ng-template #itemIconContent>\n @if (!isCollapsed) {\n @if (hasIcon) {\n @if (item.iconSvgName) {\n <!-- SVG -->\n <eui-icon-svg\n class=\"eui-menu-item__link-icon\"\n icon=\"{{ item.iconSvgName }}\"\n fillColor=\"{{ item.iconTypeClass }}\" />\n } @else if (item.iconSvgUrl) {\n <eui-icon-svg\n class=\"eui-menu-item__link-icon\"\n iconUrl=\"{{ item.iconSvgUrl }}\"\n fillColor=\"{{ item.iconTypeClass }}\" />\n } @else if (item.hasMarker) {\n <!-- MARKER -->\n <eui-icon-svg\n class=\"eui-menu-item__link-marker\"\n fillColor=\"{{ item?.markerTypeClass }}\"\n icon=\"ellipse:sharp\"\n size=\"2xs\"\n [aria-label]=\"item.markerTypeClass + ' ' + 'marker'\" />\n }\n @else if (!isLabelItem) {\n <!-- DEFAULT for non category items -->\n <eui-icon-svg\n class=\"eui-menu-item__link-icon\"\n icon=\"ellipse:sharp\"\n fillColor=\"neutral-light\"\n size=\"2xs\" />\n }\n } @else if (item.hasMarker) {\n <eui-icon-svg\n class=\"eui-menu-item__link-marker\"\n fillColor=\"{{ item?.markerTypeClass }}\"\n icon=\"ellipse:sharp\"\n size=\"2xs\"\n [aria-label]=\"item.markerTypeClass + ' ' + 'marker'\" />\n }\n\n } @else {\n @if (hasCollapsedInitials) {\n <span class=\"eui-menu-item__link-initials eui-u-c-bg-{{item.iconTypeClass}}\">\n {{ item.initials }}\n </span>\n } @else {\n @if (hasIcon) {\n @if (item.iconSvgName) {\n <!-- SVG -->\n <eui-icon-svg\n class=\"eui-menu-item__link-icon\"\n icon=\"{{ item.iconSvgName }}\"\n fillColor=\"{{ item.iconTypeClass }}\" />\n\n } @else if (item.iconSvgUrl) {\n <eui-icon-svg\n class=\"eui-menu-item__link-icon\"\n iconUrl=\"{{ item.iconSvgUrl }}\"\n fillColor=\"{{ item.iconTypeClass }}\" />\n\n } @else if (item.hasMarker) {\n <!-- MARKER -->\n <eui-icon-svg\n class=\"eui-menu-item__link-marker\"\n fillColor=\"{{ item?.markerTypeClass }}\"\n icon=\"ellipse:sharp\"\n size=\"2xs\"\n [aria-label]=\"item.markerTypeClass + ' ' + 'marker'\" />\n } @else {\n <!-- DEFAULT -->\n <eui-icon-svg\n class=\"eui-menu-item__link-icon\"\n icon=\"ellipse:sharp\"\n fillColor=\"neutral-light\"\n size=\"2xs\"\n [aria-label]=\"item.iconLabel\" />\n }\n } @else {\n <eui-icon-svg\n class=\"eui-menu-item__link-icon eui-u-ml-2xs\"\n icon=\"square:sharp\"\n fillColor=\"neutral-light\"\n size=\"2xs\" />\n }\n }\n }\n</ng-template>\n\n<!-- PROJECTED END BLOCK -->\n<ng-template #itemEndContent>\n @if (item.tagLabel) {\n @if (isCollapsed) {\n <eui-badge [euiVariant]=\"item.tagTypeClass\" class=\"eui-menu-item__link-dotted-badge\" />\n } @else {\n <eui-badge [euiVariant]=\"item.tagTypeClass\">\n {{ item.tagLabel }}\n </eui-badge>\n }\n }\n\n @if (item.actionIcon) {\n <button\n euiButton\n euiRounded\n euiIconButton\n euiSizeS\n euiBasicButton\n type=\"button\"\n tabindex=\"-1\"\n (keydown)=\"onActionIconKeyDown($event)\"\n (focusout)=\"onActionIconFocusOut()\"\n (focus)=\"focusActionIcon()\"\n class=\"eui-menu-item__link-action-icon\"\n [euiDisabled]=\"item.disabled\"\n [attr.aria-label]=\"item.actionIcon?.label\"\n (click)=\"onActionIconClick($event)\">\n <eui-icon-svg [icon]=\"item.actionIcon?.icon\" [fillColor]=\"item.actionIcon?.color\"></eui-icon-svg>\n </button>\n }\n\n @if (hasExpandIcon) {\n @if (item.children?.length > 0) {\n <eui-icon-button\n class=\"eui-menu-item__link-toggle\"\n [icon]=\"item.expanded ? 'chevron-up:sharp': 'chevron-down:sharp'\"\n (buttonClick)=\"onExpandToggle($event)\"\n [ariaLabel]=\"item.expanded ? collapseMenuLabel : expandMenuLabel\"\n euiRounded\n size=\"s\"\n [tabindex]=\"-1\"\n [euiDisabled]=\"item.disabled\"/>\n }\n }\n</ng-template>\n","import {\n Component,\n HostBinding,\n ViewEncapsulation,\n Input,\n OnInit,\n Output,\n EventEmitter,\n OnChanges,\n SimpleChanges,\n HostListener,\n booleanAttribute,\n OnDestroy,\n AfterViewInit,\n ViewChildren,\n QueryList,\n ChangeDetectorRef,\n ViewChild,\n ElementRef,\n} from '@angular/core';\nimport { Router, ActivatedRoute, NavigationEnd } from '@angular/router';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { FocusKeyManager } from '@angular/cdk/a11y';\nimport { Subscription } from 'rxjs';\n\nimport { consumeEvent } from '@eui/core';\nimport { EuiMenuItemComponent } from './eui-menu-item.component';\nimport { EuiMenuItem } from './models/eui-menu-item.model';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { EUI_ICON } from '@eui/components/eui-icon';\nimport { EUI_ICON_INPUT } from '@eui/components/eui-icon-input';\nimport { EUI_INPUT_TEXT } from '@eui/components/eui-input-text';\n\n@Component({\n selector: 'eui-menu',\n templateUrl: './eui-menu.component.html',\n styleUrls: ['./styles/_index.scss'],\n encapsulation: ViewEncapsulation.None,\n imports: [\n NgTemplateOutlet,\n EuiMenuItemComponent,\n ...EUI_ICON,\n ...EUI_ICON_INPUT,\n ...EUI_INPUT_TEXT,\n ],\n})\nexport class EuiMenuComponent implements OnInit, OnChanges, OnDestroy, AfterViewInit {\n @ViewChildren(EuiMenuItemComponent) protected menuItemsComponents: QueryList<EuiMenuItemComponent>;\n @ViewChild('filterInput', { read: ElementRef }) protected filterInput: ElementRef<HTMLInputElement>;\n\n @HostBinding('class')\n public get cssClasses(): string {\n return [\n 'eui-menu',\n this.isCollapsed ? 'eui-menu--collapsed' : '',\n !this.hasIcons ? 'eui-menu--no-icons' : '',\n this.isFlat ? 'eui-menu--flat': '',\n ].join(' ').trim();\n }\n\n @Input() items: EuiMenuItem[];\n @Input() searchFilterLabel: string;\n @Input() externalLinkLabel: string;\n @Input() fragmentId: string;\n @Input() filterValue = '';\n\n @Input({ transform: booleanAttribute }) isCollapsed = false;\n @Input({ transform: booleanAttribute }) hasCollapsedInitials = false;\n @Input({ transform: booleanAttribute }) hasFilter = false;\n @Input({ transform: booleanAttribute }) hasIcons = false;\n @Input({ transform: booleanAttribute }) hasTooltip = true;\n @Input({ transform: booleanAttribute }) hasTooltipOnExpanded = false;\n /**\n * Expand all items in the menu. Affects only items that have no expanded property set.\n * e.g. items = [{label: test, expanded: true}, {label: test2, expanded: false}, {label: test3}] will expand only test3.\n */\n @Input({ transform: booleanAttribute }) expandAllItems = false;\n @Input({ transform: booleanAttribute }) isFlat = false;\n @Input({ transform: booleanAttribute }) hasScrollToItem = false;\n @Input({ transform: booleanAttribute }) hasBoldRootLevel = false;\n\n @Output() isClick: EventEmitter<boolean> = new EventEmitter();\n @Output() itemClick: EventEmitter<EuiMenuItem> = new EventEmitter<EuiMenuItem>();\n @Output() expandToggle = new EventEmitter<EuiMenuItem>();\n\n protected hasExpandIcon = true;\n private subscription: Subscription;\n private focusKeyManager: FocusKeyManager<EuiMenuItemComponent>;\n\n constructor(\n private router: Router,\n private route: ActivatedRoute,\n private cd: ChangeDetectorRef,\n ) {}\n\n @HostListener('click', ['$event'])\n stopPropagation(event: MouseEvent): void {\n event.stopPropagation();\n }\n\n onKeydown(event: KeyboardEvent): void {\n // finds first child when ArrowDown\n const firstChild = this.focusKeyManager.activeItem?.item.children? this.findFirstFilteredItem(this.focusKeyManager.activeItem?.item.children) : undefined;\n const firstFocusableItem = this.findFocusableItem(firstChild);\n // finds the parent element\n const parent = this.focusKeyManager.activeItem?.item.parent;\n const parentFocusableItem = this.findFocusableItem(parent);\n switch (event.key) {\n case 'Enter': {\n if (\n (this.focusKeyManager.activeItem.isLinkItem || this.focusKeyManager.activeItem.isUrlItem) &&\n !this.focusKeyManager.activeItem.disabled\n ) {\n this.focusKeyManager.activeItem.onClick(event);\n event.preventDefault();\n }\n break;\n }\n case 'ArrowRight': {\n if(this.isFilterEnabled()) {\n break;\n }\n if(this.focusKeyManager.activeItem?.item.actionIcon){\n this.checkActionIconFocusState();\n break;\n } else {\n if (!this.focusKeyManager.activeItem?.item.expanded) {\n this.focusKeyManager.activeItem?.onExpandToggle(event);\n this.cd.detectChanges();\n }\n break;\n }\n }\n case 'ArrowLeft': {\n if(this.isFilterEnabled()) {\n break;\n }\n if(this.focusKeyManager.activeItem?.item.actionIcon){\n this.checkActionIconFocusState();\n break;\n } else {\n if (this.focusKeyManager.activeItem?.item.expanded) {\n this.focusKeyManager.activeItem.onExpandToggle(event);\n this.cd.detectChanges();\n event.preventDefault();\n }\n break;\n }\n }\n case 'ArrowDown': {\n event.preventDefault();\n if (this.shouldRenderChild(this.focusKeyManager.activeItem?.item)) {\n //focuses first child\n firstFocusableItem?.focus();\n this.focusKeyManager.updateActiveItem(firstFocusableItem);\n } else if (parent) {\n // finds last filtered child when ArrowDown and navigating within submenu\n const filteredChildren = this.findFilteredItems(parent.children);\n const lastChildIndex = (filteredChildren?.length) - 1;\n const lastChild = filteredChildren[lastChildIndex];\n const lastFocusableItem = this.findFocusableItem(lastChild);\n // if the active item is the last child, puts the focus on the next parent\n if(this.focusKeyManager.activeItem === lastFocusableItem){\n this.focusKeyManager.updateActiveItem(parentFocusableItem);\n this.focusKeyManager.setNextItemActive();\n } else {\n this.focusKeyManager.setActiveItem(this.focusKeyManager.activeItemIndex +1);\n }\n } else {\n // skips remaining children in the query list when there is expanded node\n this.focusKeyManager.skipPredicate(menuItem => menuItem.parent != undefined || menuItem.item.visible === false);\n this.focusKeyManager.onKeydown(event);\n }\n break;\n }\n case 'ArrowUp': {\n event.preventDefault();\n if (parent) {\n // finds first filtered child when ArrowUp\n const filteredChildren = this.findFilteredItems(parent.children);\n const firstChildUp = filteredChildren['0']\n const firstFocusableItemUp = this.findFocusableItem(firstChildUp);\n // when navigating up on a submenu focuses the parent if the active item is the first child\n if(this.focusKeyManager.activeItem === firstFocusableItemUp){\n this.focusKeyManager.setActiveItem(parentFocusableItem);\n } else {\n this.focusKeyManager.setActiveItem(this.focusKeyManager.activeItemIndex -1);\n }\n } else {\n this.focusKeyManager.onKeydown(event);\n // when navigating up from a parent element to an expanded submenu, finds the last child and focuses it\n if(this.shouldRenderChild(this.focusKeyManager.activeItem?.item)){\n const filteredChildren = this.findFilteredItems(this.focusKeyManager.activeItem?.item.children);\n const lastChildIndexUp = (filteredChildren.length) - 1;\n const lastFocusableItemUp =this.findFocusableItem(filteredChildren[lastChildIndexUp]);\n this.focusKeyManager.setActiveItem(lastFocusableItemUp);\n }\n }\n break;\n }\n default: {\n this.focusKeyManager.onKeydown(event);\n break;\n }\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.items) {\n this.items = this.configureItems(this.items);\n // get current url\n const currentUrl = this.router.url;\n // find an item that matches the current url or the most relevant one\n const item = this.findMostRelevantItem(currentUrl, this.items);\n // expand to that item\n if (item) {\n this.expandToGivenItem(item);\n }\n }\n\n // Expand / Collapse All items\n if (changes.expandAllItems) {\n this.items = this.setExpandedToAllItems(coerceBooleanProperty(changes.expandAllItems.currentValue), this.items);\n }\n\n if (changes.filterValue && this.hasFilter) {\n this.onFilter(changes.filterValue.currentValue ?? '');\n }\n\n // Refresh when interactive collapsed to initials\n if (changes.hasCollapsedInitials) {\n this.hasCollapsedInitials = changes.hasCollapsedInitials.currentValue;\n this.items = this.configureItems(this.items);\n }\n\n if(changes.hasScrollToItem){\n this.hasScrollToItem = changes.hasScrollToItem.currentValue;\n if(this.hasScrollToItem){\n this.scrollToItem(this.router.url);\n }\n }\n\n if(changes.hasFilter){\n this.hasFilter = changes.hasFilter.currentValue;\n if(!this.hasFilter) {\n // iterate through all items and reset the filtered property\n this.items = this.filterMenuItems(this.items, '')\n }\n }\n }\n\n ngOnInit(): void {\n // Labels default values - TODO : translations\n if (!this.searchFilterLabel) {\n this.searchFilterLabel = 'Search filter';\n }\n\n // subscription to routes url changes for activating the scrollIntoView\n this.router.events.subscribe((event) => {\n // Handle route change event\n if (event instanceof NavigationEnd) {\n if (this.hasScrollToItem) {\n this.scrollToItem(event.url);\n }\n }\n });\n }\n\n ngAfterViewInit(): void {\n // instantiates FocusKeyManager with the query list of items enabling wrapping\n this.focusKeyManager = new FocusKeyManager(this.menuItemsComponents).withWrap();\n\n // scrolls to the item that matches the current url\n if(this.hasScrollToItem){\n this.scrollToItem(this.router.url);\n }\n }\n\n ngOnDestroy():void {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n protected onClick(item: EuiMenuItem): void {\n if (!item.disabled) {\n if (item.urlExternal) {\n window.open(item.urlExternal, item.urlExternalTarget || '_blank');\n } else if (item.url) {\n this.router.navigate([item.url], { relativeTo: this.route, fragment: this.fragmentId });\n } else {\n if (typeof item.command === 'function') {\n item.command();\n } else {\n this.onExpandToggle(item);\n }\n }\n\n if (item.link) {\n this.items = this.items?.map((it) => {\n it.active = false;\n if (it.id === item.id) {\n it.active = true;\n }\n return it;\n });\n }\n }\n\n this.isClick.emit(true);\n this.itemClick.emit(item);\n\n const focusedItem = this.findFocusableItem(item);\n this.focusKeyManager.updateActiveItem(focusedItem);\n }\n\n protected onExpandToggle(item: EuiMenuItem): void {\n if (item.children) {\n this.expandToggle.emit(item);\n this.onExpandToggled(item, this.items);\n // TODO: investigate why the above is needed. Can it be simply \"item.expanded = !item.expanded;\" ?\n }\n }\n\n protected onMenuFilterClick(event: MouseEvent): void {\n consumeEvent(event);\n }\n\n /**\n * Filter the menu items based on the input value\n * @param event\n * @protected\n */\n protected onFilter(event: Event): void;\n protected onFilter(value: string): void;\n protected onFilter(eventOrValue: Event | string): void {\n const value = eventOrValue instanceof Event\n ? (eventOrValue.target as HTMLInputElement).value\n : eventOrValue;\n this.items = this.filterMenuItems(this.items, value);\n this.hasExpandIcon = !(this.isFilterEnabled());\n }\n\n /**\n * Check if the children of an item should be rendered. The children should be rendered if the item is expanded\n * or if the item is filtered and the filter input has a value. There are two cases when the filter input has a value:\n * 1. The user has typed something in the filter input\n * 2. The user has typed something in the filter input and the item is filtered\n * In general there are two states to be taken into account, the expanded state and the filtered state.\n *\n * @param item\n * @protected\n */\n protected shouldRenderChild(item: EuiMenuItem): boolean {\n return item?.children &&\n (\n item?.expanded || (\n this.hasFilter &&\n item?.filtered &&\n this.isFilterEnabled()\n )\n )\n }\n\n /**\n * finds the EuiMenuItemComponent in the queried focusableItems[] that matches the passed EuiMenuItem object\n *\n * @param menuItem an EuiMenuItem\n * @private\n */\n private findFocusableItem(menuItem: EuiMenuItem ): EuiMenuItemComponent {\n return this.menuItemsComponents.find(\n (focusableItem) => focusableItem.item.label === menuItem?.label && focusableItem.item.id === menuItem.id,\n );\n }\n\n /**\n * finds the first item that is filtered\n *\n * @param menuItems an array of EuiMenuItem\n * @private\n */\n private findFirstFilteredItem(menuItems: EuiMenuItem []): EuiMenuItem {\n return menuItems.find((item) => item.filtered);\n }\n\n /**\n * finds all filtered menu items\n *\n * @param menuItems an array of EuiMenuItem\n * @private\n */\n private findFilteredItems(menuItems: EuiMenuItem []): EuiMenuItem [] {\n return menuItems.filter((items) => items.filtered);\n }\n\n /**\n * checks the focus state of the action icon\n *\n * @private\n */\n private checkActionIconFocusState(): void {\n // check if the action icon is focused and if not focus it, otherwise focus the active item\n // eslint-disable-next-line\n !this.focusKeyManager.activeItem.isActionIconFocused ? this.focusKeyManager.activeItem.focusActionIcon() : this.focusKeyManager.activeItem.focus();\n }\n\n /**\n * filter all menu items given a value\n *\n * @param menuItems an array of menu items\n * @param filterValue the value to filter menu items\n * @private\n */\n private filterMenuItems(menuItems: EuiMenuItem[], filterValue: string): EuiMenuItem[] {\n return menuItems?.map((item: EuiMenuItem) => {\n const found = item.label?.toLowerCase().indexOf(filterValue.toLowerCase()) !== -1;\n if (item.children) {\n item.children = this.filterMenuItems(item.children, filterValue);\n item.filtered = item.children.filter((l) => l['filtered'] === true).length > 0;\n } else if (found) {\n item.filtered = found;\n } else {\n item.filtered = false;\n }\n return item;\n }) || [];\n }\n\n /**\n * expand / collapse all items\n *\n * @param isExpanded\n * @param items\n * @private\n */\n private setExpandedToAllItems(isExpanded: boolean, items: EuiMenuItem[]): EuiMenuItem[] {\n return items?.map((item) => {\n if (item.children) {\n item.expanded = item.expanded ?? isExpanded;\n item.children = this.setExpandedToAllItems(isExpanded, item.children);\n }\n return Object.assign(item, { visible: item.visible === undefined ? true : item.visible });\n });\n }\n\n /**\n * expand / collapse a menu item\n *\n * @param item The item where the \"expand\" had been toggled\n * @param items The items list (used for recursion)\n * @private\n */\n private onExpandToggled(item: EuiMenuItem, items: EuiMenuItem[]): void {\n const itemIdx = items?.indexOf(item);\n if (itemIdx > -1) {\n items[itemIdx].expanded = !items[itemIdx].expanded;\n } else {\n items.forEach((i) => {\n if (i.children) {\n this.onExpandToggled(item, i.children);\n }\n });\n }\n }\n\n /**\n * configure an array of items with visible, filtered and expand (in case of expandAllItems flag enabled) properties\n *\n * @param items An array of EuiMenuItem\n * @param parent the parent item of items if exists\n * @private\n */\n private configureItems(items: EuiMenuItem[], parent?: EuiMenuItem): EuiMenuItem[] {\n return items?.map((item) => {\n // recursion in case there are children\n if (item.children) {\n item.children = this.configureItems(item.children, item);\n // expand all parents with children\n if (this.expandAllItems) {\n item.expanded = true;\n }\n }\n // point to the parent\n if (parent) {\n item.parent = parent;\n }\n\n // make sure the items are configured with a unique id\n this.items = this.items?.map((item) => this.setRandomId(item));\n\n if (item.label && this.hasCollapsedInitials) {\n const words = item.label.split(' ');\n if (words.length === 1) {\n item.initials = `${item.label.substring(0, 1)}${item.label.substring(1, 1)}`;\n\n } else {\n item.initials = `${words[0].substring(0, 1)}${words[1].substring(0, 1)}`;\n }\n }\n\n return Object.assign(item, { visible: item.visible === undefined ? true : item.visible, filtered: true });\n });\n }\n\n /**\n * Given a URL and a list of items, it will expand the item that matches the URL. If not item matches exactly the url, then it will\n * match the item that is most relevant to that url.\n *\n * @param url\n * @param items\n * @param relevantItem\n * @private\n */\n private findMostRelevantItem(url: string, items: EuiMenuItem[], relevantItem?: EuiMenuItem): EuiMenuItem {\n if (!items) {\n return null;\n }\n\n items.forEach((item) => {\n if (item.url && url.indexOf(item.url.substring(1)) > -1) {\n relevantItem = this.getMostRelevantItem(url, relevantItem, item);\n }\n\n if (item.children) {\n relevantItem = this.findMostRelevantItem(url, item.children, relevantItem);\n }\n });\n\n return relevantItem;\n }\n\n /**\n * Given two items with url return the one with the most relevant url that matches given url\n *\n * @param url A URL to be matched with the one of given items\n * @param item1\n * @param item2\n * @private\n */\n private getMostRelevantItem(url: string, item1: EuiMenuItem, item2: EuiMenuItem): EuiMenuItem {\n const remainder1 = url.replace(item1?.url || '', '');\n const remainder2 = url.replace(item2?.url || '', '');\n\n return remainder1.length < remainder2.length ? item1 : item2;\n }\n\n /**\n * Given an item, if there's a parent expand it until you reach the root item\n *\n * @param item Given menu item\n * @private\n */\n private expandToGivenItem(item: EuiMenuItem): void {\n if (item.parent) {\n setTimeout(() => (item.parent.expanded = true));\n this.expandToGivenItem(item.parent);\n }\n }\n\n /**\n * Set a random id to an item and its child if they don't have one\n * @param item\n * @private\n */\n private setRandomId(item: EuiMenuItem): EuiMenuItem {\n item.id = item.id || crypto.randomUUID();\n if(item.children){\n item.children = item.children.map((child) => {\n return this.setRandomId(child);\n });\n }\n return item;\n }\n\n /**\n * Scroll to an item if it's not visible in the viewport\n * @param url\n * @private\n */\n private scrollToItem(url: string): void {\n const item = this.findMostRelevantItem(url, this.items);\n if (item) {\n // change the state of that item to expanded if it's not\n this.expandToGivenItem(item);\n setTimeout(_ => {\n const menuItem = this.menuItemsComponents?.find((menuItem) => menuItem.item.id === item.id);\n if(menuItem && !menuItem.elementIsVisibleInViewport()){\n menuItem.scrollIntoView({ behavior: 'smooth' });\n }\n }, 300);\n }\n }\n\n /**\n * Check if the filter input has a value\n * @private\n */\n private isFilterEnabled(): boolean {\n return this.filterInput?.nativeElement?.value.length > 0\n }\n}\n","@if (hasFilter) {\n <div class=\"eui-menu-filter\" [class.eui-menu-filter--collapsed]=\"isCollapsed\" (click)=\"onMenuFilterClick($event)\">\n <eui-icon-input>\n <eui-icon-svg icon=\"eui-ecl-search\" fillColor=\"neutral-lighter\" aria-label=\"Search Icon\"></eui-icon-svg>\n <input\n #filterInput\n euiInputText\n [euiClearable]=\"true\"\n (input)=\"onFilter($event)\"\n [placeholder]=\"searchFilterLabel\"\n [attr.aria-label]=\"searchFilterLabel\"\n [value]=\"filterValue\" />\n </eui-icon-input>\n </div>\n}\n\n<ul euiList class=\"eui-menu\" role=\"menubar\" aria-orientation=\"vertical\" tabindex=\"0\" (keydown)=\"onKeydown($event)\">\n @if (items) {\n @for (item of items; track item.id; let index = $index) {\n <ng-template [ngTemplateOutlet]=\"menuItemTemplateRef\" [ngTemplateOutletContext]=\"{ menuItem: item, index: index }\"></ng-template>\n }\n } @else {\n <span class=\"eui-menu--no-items\">No menu items defined</span>\n }\n</ul>\n\n<!-- describe the recursive template of the menu item -->\n<ng-template #menuItemTemplateRef let-item=\"menuItem\" let-parent=\"parent\" let-i=\"index\">\n <!-- render the menu item-->\n @if (item.filtered) {\n <eui-menu-item\n [item]=\"item\"\n [parent]=\"parent\"\n [hasIcon]=\"hasIcons\"\n [hasTooltip]=\"hasTooltip\"\n [hasTooltipOnExpanded]=\"hasTooltipOnExpanded\"\n [isCollapsed]=\"isCollapsed\"\n [hasBoldRootLevel]=\"hasBoldRootLevel\"\n [hasCollapsedInitials]=\"hasCollapsedInitials\"\n (expandToggle)=\"onExpandToggle($event)\"\n (itemClick)=\"onClick($event)\"\n [hasExpandIcon]=\"hasExpandIcon\">\n <!-- if the menu item has children, render the children -->\n @if (shouldRenderChild(item)) {\n <ul euiList class=\"eui-menu eui-menu-sub\" role=\"menu\" [attr.aria-label]=\"item.label\" tabindex=\"-1\">\n @for (child of item.children; track child.id; let childIndex = $index) {\n <ng-template [ngTemplateOutlet]=\"menuItemTemplateRef\" [ngTemplateOutletContext]=\"{ menuItem: child, index: childIndex, parent: item }\">\n </ng-template>\n }\n </ul>\n }\n </eui-menu-item>\n }\n</ng-template>\n","import { NgModule } from '@angular/core';\n\nimport { EuiMenuComponent } from './eui-menu.component';\nimport { EuiMenuItemComponent } from './eui-menu-item.component';\n\n/**\n * Angular module that provides list components for eui-menu\n *\n * @deprecated Use {@link EUI_MENU} instead\n */\n@NgModule({\n imports: [EuiMenuComponent, EuiMenuItemComponent],\n exports: [EuiMenuComponent, EuiMenuItemComponent],\n})\nexport class EuiMenuModule {}\n","import { EuiMenuItemComponent } from './eui-menu-item.component';\nimport { EuiMenuComponent } from './eui-menu.component';\n\nexport * from './eui-menu.module';\nexport * from './eui-menu.component';\nexport * from './eui-menu-item.component';\nexport * from './models/eui-menu-item.model';\n\nexport const EUI_MENU = [\n EuiMenuComponent,\n EuiMenuItemComponent,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i3","i4"],"mappings":"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"}
@@ -204,6 +204,7 @@ class EuiUserProfileComponent {
204
204
  this.isHeaderUserProfile = false;
205
205
  this.isToolbarUserProfile = false;
206
206
  this.isShowUserInfos = true;
207
+ this.isMobileOnly = true;
207
208
  this.euiStatusSecondary = false;
208
209
  this.euiStatusSuccess = false;
209
210
  this.euiStatusDanger = false;
@@ -252,6 +253,9 @@ class EuiUserProfileComponent {
252
253
  if (hasToolbarItemParent || !this.isHeaderUserProfile) {
253
254
  this.hasMenu = this.hasMenuContent.length !== 0;
254
255
  }
256
+ if (this.isMobileOnly) {
257
+ this.baseStatesDirective.euiSizeS = true;
258
+ }
255
259
  this.cd.markForCheck();
256
260
  });
257
261
  }
@@ -268,7 +272,7 @@ class EuiUserProfileComponent {
268
272
  this.isDropdownOpen = isOpen;
269
273
  }
270
274
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: EuiUserProfileComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1$2.UserService }, { token: i2$1.BaseStatesDirective }], target: i0.ɵɵFactoryTarget.Component }); }
271
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.9", type: EuiUserProfileComponent, isStandalone: true, selector: "eui-user-profile", inputs: { welcomeLabel: "welcomeLabel", impersonateLabel: "impersonateLabel", avatarUrl: "avatarUrl", subInfos: "subInfos", statusVariant: "statusVariant", hasMenu: ["hasMenu", "hasMenu", booleanAttribute], hasWelcomeLabel: ["hasWelcomeLabel", "hasWelcomeLabel", booleanAttribute], isShowAvatarInitials: ["isShowAvatarInitials", "isShowAvatarInitials", booleanAttribute], hasTabNavigation: ["hasTabNavigation", "hasTabNavigation", booleanAttribute], isReverse: ["isReverse", "isReverse", booleanAttribute], hasToggle: ["hasToggle", "hasToggle", booleanAttribute], isHeaderUserProfile: ["isHeaderUserProfile", "isHeaderUserProfile", booleanAttribute], isToolbarUserProfile: ["isToolbarUserProfile", "isToolbarUserProfile", booleanAttribute], isShowUserInfos: ["isShowUserInfos", "isShowUserInfos", booleanAttribute], euiStatusSecondary: ["euiStatusSecondary", "euiStatusSecondary", booleanAttribute], euiStatusSuccess: ["euiStatusSuccess", "euiStatusSuccess", booleanAttribute], euiStatusDanger: ["euiStatusDanger", "euiStatusDanger", booleanAttribute], reverseNameOrder: "reverseNameOrder" }, host: { properties: { "class": "this.cssClasses" } }, providers: [EuiDropdownService], queries: [{ propertyName: "hasMenuContent", predicate: i0.forwardRef(() => EuiUserProfileMenuComponent), descendants: true }], viewQueries: [{ propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], hostDirectives: [{ directive: i2$1.BaseStatesDirective, inputs: ["euiSizeS", "euiSizeS", "euiSecondary", "euiSecondary", "euiPrimary", "euiPrimary"] }], ngImport: i0, template: "@if (hasMenu) {\n <eui-dropdown [hasTabNavigation]=\"hasTabNavigation\" width=\"340px\" #dropdown (expand)=\"onDropdownExpand($event)\">\n <ng-container *ngTemplateOutlet=\"userProfileContent\"/>\n <eui-dropdown-content>\n <ng-content/>\n </eui-dropdown-content>\n </eui-dropdown>\n} @else {\n <ng-container *ngTemplateOutlet=\"userProfileContent\"/>\n}\n\n<ng-template #userProfileContent>\n <button class=\"eui-user-profile-content\" [tabindex]=\"hasMenu ? '0' : '-1'\" [class.eui-user-profile-content--no-menu]=\"!hasMenu\">\n\n @if (isShowUserInfos) {\n <div class=\"eui-user-profile__infos\">\n @if (userState()?.impersonatingUser) {\n <div class=\"eui-user-profile__infos-welcome\">\n @if (hasWelcomeLabel) {\n <span>{{ welcomeLabel }}&nbsp;</span>\n }\n @if(reverseNameOrder) {\n {{ userState()?.impersonatingUser?.firstName }} <strong>{{ userState()?.impersonatingUser?.lastName}}&nbsp;</strong>\n } @else {\n <strong>{{ userState()?.impersonatingUser?.lastName }}</strong> {{ userState()?.impersonatingUser?.firstName }}\n }\n <span>{{ impersonateLabel }}</span>\n </div>\n <div class=\"eui-user-profile__infos-name\">\n @if(reverseNameOrder) {\n {{ userState()?.firstName }} <strong>{{ userState()?.lastName }}</strong>\n } @else {\n <strong>{{ userState()?.lastName }}</strong> {{ userState()?.firstName }}\n }\n </div>\n @if (subInfos) {\n <div class=\"eui-user-profile__infos-subinfos\">{{ subInfos }}</div>\n }\n } @else {\n @if (hasWelcomeLabel) {\n <div class=\"eui-user-profile__infos-welcome\">{{ welcomeLabel }}</div>\n }\n <div class=\"eui-user-profile__infos-name\">\n @if(reverseNameOrder) {\n {{ userState()?.firstName }} <strong>{{ userState()?.lastName }}</strong>\n } @else {\n <strong>{{ userState()?.lastName }}</strong> {{ userState()?.firstName }}\n }\n </div>\n @if (subInfos) {\n <div class=\"eui-user-profile__infos-subinfos\">{{ subInfos }}</div>\n }\n }\n </div>\n }\n\n <eui-avatar isFlat [euiSizeS]=\"baseStatesDirective.euiSizeS\" [hasShadow]=\"userState()?.impersonatingUser\">\n\n @if (isShowAvatarInitials) {\n <eui-avatar-text>{{ avatarInitials() }}</eui-avatar-text>\n } @else {\n <eui-avatar-image [imageUrl]=\"avatarUrl\"/>\n }\n\n @if (euiStatusSecondary || euiStatusSuccess || euiStatusDanger) {\n <eui-avatar-badge position=\"bottom\">\n @if (euiStatusSuccess) {\n <eui-badge euiSuccess euiSizeS euiIconBadge>\n <eui-icon-svg icon=\"checkmark:outline\" size=\"xs\"/>\n </eui-badge>\n } @else if (euiStatusDanger) {\n <eui-badge euiDanger euiSizeS euiIconBadge>\n <eui-icon-svg icon=\"remove:outline\" size=\"xs\"/>\n </eui-badge>\n } @else if (euiStatusSecondary) {\n <eui-badge euiSecondary euiSizeS euiIconBadge>\n <eui-icon-svg icon=\"close-circle:outline\" fillColor=\"neutral\" size=\"xs\"/>\n </eui-badge>\n }\n </eui-avatar-badge>\n }\n </eui-avatar>\n\n @if (hasMenu || hasToggle) {\n @if (isDropdownOpen) {\n <eui-icon-svg icon=\"chevron-up:sharp\" size=\"s\" class=\"eui-user-profile__drop-indicator\"/>\n } @else {\n <eui-icon-svg icon=\"chevron-down:sharp\" size=\"s\" class=\"eui-user-profile__drop-indicator\"/>\n }\n }\n </button>\n</ng-template>\n", styles: [".eui-19 .eui-user-profile{display:flex;position:relative}.eui-19 .eui-user-profile-content{align-items:center;background:none;border:var(--eui-bw-none);cursor:pointer;display:flex;padding:var(--eui-s-2xs) 0;gap:var(--eui-s-xs)}.eui-19 .eui-user-profile-content:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-19 .eui-user-profile-content--no-menu{cursor:default}.eui-19 .eui-user-profile__infos{align-items:flex-end;display:flex;flex-direction:column}.eui-19 .eui-user-profile__infos-container{justify-content:flex-end;align-items:center;display:flex;width:100%}.eui-19 .eui-user-profile__infos-welcome{text-align:right;font:var(--eui-f-xs-compact)}.eui-19 .eui-user-profile__infos-name{color:var(--eui-c-branding);text-align:right;font:var(--eui-f-m-compact)}.eui-19 .eui-user-profile__infos-subinfos{color:var(--eui-c-neutral);text-align:right;font:var(--eui-f-xs-compact)}.eui-19 .eui-user-profile__drop-indicator{margin-left:calc(-1 * var(--eui-s-xs))}.eui-19 .eui--secondary .eui-user-profile__infos-name,.eui-19 .eui--secondary .eui-user-profile__infos-welcome{color:var(--eui-c-neutral)!important}@media screen and (max-width: 767px){.eui-19 .eui-app-shell-header-toolbar-items .eui-user-profile{display:flex}.eui-19 .eui-app .eui-app-toolbar .eui-user-profile__infos{display:none}}@media screen and (min-width: 768px){.eui-19 .eui-app-shell-header-toolbar-items .eui-user-profile{display:none}.eui-19 .is-header-shrink .eui-user-profile{display:flex}}@media screen and (min-width: 768px) and (max-width: 995px){.eui-19 .eui-app .eui-app-toolbar .eui-user-profile__infos{display:none}}.eui-19 .eui-user-profile--primary .eui-user-profile__infos-name{color:var(--eui-c-white)}.eui-19 .eui-user-profile--primary .eui-user-profile__infos-welcome,.eui-19 .eui-user-profile--primary .eui-user-profile__infos-subinfos{color:var(--eui-c-neutral-lightest)}.eui-19 .eui-user-profile--primary .eui-user-profile__drop-indicator svg{fill:var(--eui-c-white);color:var(--eui-c-white)}.eui-19 .eui-user-profile--reverse .eui-user-profile-content{flex-direction:row-reverse}.eui-19 .eui-user-profile--reverse .eui-user-profile__infos{margin-left:var(--eui-s-m)}.eui-19 .eui-user-profile--initials .eui-avatar-content{background-color:var(--eui-c-branding-light)!important}.eui-19 .eui-user-profile--initials .eui-avatar-text{color:var(--eui-c-branding-light-contrast)!important}.eui-19 .eui-user-profile-menu{height:auto;min-width:250px;position:relative}.eui-19 .eui-user-profile-menu-item{align-items:center;border-bottom:1px solid var(--eui-c-divider);cursor:pointer;display:flex;padding:var(--eui-s-xs) var(--eui-s-s);gap:var(--eui-s-xs)}.eui-19 .eui-user-profile-menu-item:focus:not([readonly]){outline:2px solid var(--eui-c-focus)!important;outline-offset:-2px!important;transition:none}.eui-19 .eui-user-profile-menu-item:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-19 .eui-user-profile-menu-item [tabindex=\"0\"]:focus:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-19 .eui-user-profile-menu-item:hover{background-color:var(--eui-c-hover);cursor:pointer}.eui-19 .eui-user-profile-menu-item:last-child{border-bottom:0}.eui-19 .eui-user-profile-menu-item a{color:var(--eui-c-text);text-decoration:none}.eui-19 .eui-user-profile-menu-item.link{cursor:pointer}.eui-19 .eui-user-profile-menu-item-right-content{margin-left:auto}.eui-19 .eui-user-profile-card{width:100%}.eui-19 .eui-user-profile-card__main-wrapper{display:flex;flex-direction:row;padding:var(--eui-s-m) var(--eui-s-m) var(--eui-s-m) 0}.eui-19 .eui-user-profile-card__main-wrapper-right-content{display:flex;flex-direction:column;margin-left:auto}.eui-19 .eui-user-profile-card__avatar-wrapper{display:flex}.eui-19 .eui-user-profile-card__userInfos{display:flex;flex-direction:column;padding-left:var(--eui-s-s)}.eui-19 .eui-user-profile-card__userInfos-item{padding-bottom:var(--eui-s-xs)}.eui-19 .eui-user-profile-card__impersonateInfos{background-color:var(--eui-c-neutral-bg-light);padding:var(--eui-s-s)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1$1.EuiDropdownComponent, selector: "eui-dropdown", inputs: ["e2eAttr", "tabIndex", "width", "height", "position", "subDropdownPosition", "isBlock", "isDropDownRightAligned", "hasClosedOnClickInside", "isLabelUpdatedFromSelectedItem", "isExpandOnHover", "hasTabNavigation", "isRightClickEnabled", "euiDisabled"], outputs: ["expand"] }, { kind: "directive", type: i1$1.EuiDropdownContentDirective, selector: "eui-dropdown-content" }, { kind: "component", type: i3.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "fillColor", "set", "size", "style", "iconUrl", "transform", "euiVariant", "aria-label", "ariaHidden", "focusable", "isLoading", "isInputIcon", "euiStart", "euiEnd"] }, { kind: "component", type: i5.EuiAvatarComponent, selector: "div[euiAvatar], span[euiAvatar], eui-avatar", inputs: ["e2eAttr", "aria-label", "hasShadow", "isShapeSquare", "isFlat", "hasNoBackground"] }, { kind: "component", type: i5.EuiAvatarTextComponent, selector: "eui-avatar-text" }, { kind: "component", type: i5.EuiAvatarImageComponent, selector: "eui-avatar-image", inputs: ["imageUrl"] }, { kind: "component", type: i5.EuiAvatarBadgeComponent, selector: "eui-avatar-badge", inputs: ["position"] }, { kind: "component", type: i6.EuiBadgeComponent, selector: "div[euiBadge], span[euiBadge], eui-badge", inputs: ["e2eAttr", "aria-label", "maxCharCount", "charReplacement", "euiIconBadge", "euiDottedBadge"] }], encapsulation: i0.ViewEncapsulation.None }); }
275
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.9", type: EuiUserProfileComponent, isStandalone: true, selector: "eui-user-profile", inputs: { welcomeLabel: "welcomeLabel", impersonateLabel: "impersonateLabel", avatarUrl: "avatarUrl", subInfos: "subInfos", statusVariant: "statusVariant", hasMenu: ["hasMenu", "hasMenu", booleanAttribute], hasWelcomeLabel: ["hasWelcomeLabel", "hasWelcomeLabel", booleanAttribute], isShowAvatarInitials: ["isShowAvatarInitials", "isShowAvatarInitials", booleanAttribute], hasTabNavigation: ["hasTabNavigation", "hasTabNavigation", booleanAttribute], isReverse: ["isReverse", "isReverse", booleanAttribute], hasToggle: ["hasToggle", "hasToggle", booleanAttribute], isHeaderUserProfile: ["isHeaderUserProfile", "isHeaderUserProfile", booleanAttribute], isToolbarUserProfile: ["isToolbarUserProfile", "isToolbarUserProfile", booleanAttribute], isShowUserInfos: ["isShowUserInfos", "isShowUserInfos", booleanAttribute], isMobileOnly: ["isMobileOnly", "isMobileOnly", booleanAttribute], euiStatusSecondary: ["euiStatusSecondary", "euiStatusSecondary", booleanAttribute], euiStatusSuccess: ["euiStatusSuccess", "euiStatusSuccess", booleanAttribute], euiStatusDanger: ["euiStatusDanger", "euiStatusDanger", booleanAttribute], reverseNameOrder: "reverseNameOrder" }, host: { properties: { "class": "this.cssClasses" } }, providers: [EuiDropdownService], queries: [{ propertyName: "hasMenuContent", predicate: i0.forwardRef(() => EuiUserProfileMenuComponent), descendants: true }], viewQueries: [{ propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], hostDirectives: [{ directive: i2$1.BaseStatesDirective, inputs: ["euiSizeS", "euiSizeS", "euiSecondary", "euiSecondary", "euiPrimary", "euiPrimary"] }], ngImport: i0, template: "@if (hasMenu) {\n <eui-dropdown [hasTabNavigation]=\"hasTabNavigation\" width=\"340px\" #dropdown (expand)=\"onDropdownExpand($event)\">\n <ng-container *ngTemplateOutlet=\"userProfileContent\"/>\n <eui-dropdown-content>\n <ng-content/>\n </eui-dropdown-content>\n </eui-dropdown>\n} @else {\n <ng-container *ngTemplateOutlet=\"userProfileContent\"/>\n}\n\n<ng-template #userProfileContent>\n <button class=\"eui-user-profile-content\" [tabindex]=\"hasMenu ? '0' : '-1'\" [class.eui-user-profile-content--no-menu]=\"!hasMenu\">\n\n @if (isShowUserInfos) {\n <div class=\"eui-user-profile__infos\">\n @if (userState()?.impersonatingUser) {\n <div class=\"eui-user-profile__infos-welcome\">\n @if (hasWelcomeLabel) {\n <span>{{ welcomeLabel }}&nbsp;</span>\n }\n @if(reverseNameOrder) {\n {{ userState()?.impersonatingUser?.firstName }} <strong>{{ userState()?.impersonatingUser?.lastName}}&nbsp;</strong>\n } @else {\n <strong>{{ userState()?.impersonatingUser?.lastName }}</strong> {{ userState()?.impersonatingUser?.firstName }}\n }\n <span>{{ impersonateLabel }}</span>\n </div>\n <div class=\"eui-user-profile__infos-name\">\n @if(reverseNameOrder) {\n {{ userState()?.firstName }} <strong>{{ userState()?.lastName }}</strong>\n } @else {\n <strong>{{ userState()?.lastName }}</strong> {{ userState()?.firstName }}\n }\n </div>\n @if (subInfos) {\n <div class=\"eui-user-profile__infos-subinfos\">{{ subInfos }}</div>\n }\n } @else {\n @if (hasWelcomeLabel) {\n <div class=\"eui-user-profile__infos-welcome\">{{ welcomeLabel }}</div>\n }\n <div class=\"eui-user-profile__infos-name\">\n @if(reverseNameOrder) {\n {{ userState()?.firstName }} <strong>{{ userState()?.lastName }}</strong>\n } @else {\n <strong>{{ userState()?.lastName }}</strong> {{ userState()?.firstName }}\n }\n </div>\n @if (subInfos) {\n <div class=\"eui-user-profile__infos-subinfos\">{{ subInfos }}</div>\n }\n }\n </div>\n }\n\n <eui-avatar isFlat [euiSizeS]=\"baseStatesDirective.euiSizeS\" [hasShadow]=\"userState()?.impersonatingUser\">\n\n @if (isShowAvatarInitials) {\n <eui-avatar-text>{{ avatarInitials() }}</eui-avatar-text>\n } @else {\n <eui-avatar-image [imageUrl]=\"avatarUrl\"/>\n }\n\n @if (euiStatusSecondary || euiStatusSuccess || euiStatusDanger) {\n <eui-avatar-badge position=\"bottom\">\n @if (euiStatusSuccess) {\n <eui-badge euiSuccess euiSizeS euiIconBadge>\n <eui-icon-svg icon=\"checkmark:outline\" size=\"xs\"/>\n </eui-badge>\n } @else if (euiStatusDanger) {\n <eui-badge euiDanger euiSizeS euiIconBadge>\n <eui-icon-svg icon=\"remove:outline\" size=\"xs\"/>\n </eui-badge>\n } @else if (euiStatusSecondary) {\n <eui-badge euiSecondary euiSizeS euiIconBadge>\n <eui-icon-svg icon=\"close-circle:outline\" fillColor=\"neutral\" size=\"xs\"/>\n </eui-badge>\n }\n </eui-avatar-badge>\n }\n </eui-avatar>\n\n @if (hasMenu || hasToggle) {\n @if (isDropdownOpen) {\n <eui-icon-svg icon=\"chevron-up:sharp\" size=\"s\" class=\"eui-user-profile__drop-indicator\"/>\n } @else {\n <eui-icon-svg icon=\"chevron-down:sharp\" size=\"s\" class=\"eui-user-profile__drop-indicator\"/>\n }\n }\n </button>\n</ng-template>\n", styles: [".eui-19 .eui-user-profile{display:flex;position:relative}.eui-19 .eui-user-profile-content{align-items:center;background:none;border:var(--eui-bw-none);cursor:pointer;display:flex;padding:var(--eui-s-2xs) 0;gap:var(--eui-s-xs)}.eui-19 .eui-user-profile-content:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-19 .eui-user-profile-content--no-menu{cursor:default}.eui-19 .eui-user-profile__infos{align-items:flex-end;display:flex;flex-direction:column}.eui-19 .eui-user-profile__infos-container{justify-content:flex-end;align-items:center;display:flex;width:100%}.eui-19 .eui-user-profile__infos-welcome{text-align:right;font:var(--eui-f-xs-compact)}.eui-19 .eui-user-profile__infos-name{color:var(--eui-c-branding);text-align:right;font:var(--eui-f-m-compact)}.eui-19 .eui-user-profile__infos-subinfos{color:var(--eui-c-neutral);text-align:right;font:var(--eui-f-xs-compact)}.eui-19 .eui-user-profile__drop-indicator{margin-left:calc(-1 * var(--eui-s-xs))}.eui-19 .eui--secondary .eui-user-profile__infos-name,.eui-19 .eui--secondary .eui-user-profile__infos-welcome{color:var(--eui-c-neutral)!important}@media screen and (max-width: 767px){.eui-19 .eui-app-shell-header-toolbar-items .eui-user-profile{display:flex}.eui-19 .eui-app .eui-app-toolbar .eui-user-profile__infos{display:none}}@media screen and (min-width: 768px){.eui-19 .eui-app-shell-header-toolbar-items .eui-user-profile{display:none}.eui-19 .is-header-shrink .eui-user-profile{display:flex}}@media screen and (min-width: 768px) and (max-width: 995px){.eui-19 .eui-app .eui-app-toolbar .eui-user-profile__infos{display:none}}.eui-19 .eui-user-profile--primary .eui-user-profile__infos-name{color:var(--eui-c-white)}.eui-19 .eui-user-profile--primary .eui-user-profile__infos-welcome,.eui-19 .eui-user-profile--primary .eui-user-profile__infos-subinfos{color:var(--eui-c-neutral-lightest)}.eui-19 .eui-user-profile--primary .eui-user-profile__drop-indicator svg{fill:var(--eui-c-white);color:var(--eui-c-white)}.eui-19 .eui-user-profile--reverse .eui-user-profile-content{flex-direction:row-reverse}.eui-19 .eui-user-profile--reverse .eui-user-profile__infos{margin-left:var(--eui-s-m)}.eui-19 .eui-user-profile--initials .eui-avatar-content{background-color:var(--eui-c-branding-light)!important}.eui-19 .eui-user-profile--initials .eui-avatar-text{color:var(--eui-c-branding-light-contrast)!important}.eui-19 .eui-user-profile-menu{height:auto;min-width:250px;position:relative}.eui-19 .eui-user-profile-menu-item{align-items:center;border-bottom:1px solid var(--eui-c-divider);cursor:pointer;display:flex;padding:var(--eui-s-xs) var(--eui-s-s);gap:var(--eui-s-xs)}.eui-19 .eui-user-profile-menu-item:focus:not([readonly]){outline:2px solid var(--eui-c-focus)!important;outline-offset:-2px!important;transition:none}.eui-19 .eui-user-profile-menu-item:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-19 .eui-user-profile-menu-item [tabindex=\"0\"]:focus:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-19 .eui-user-profile-menu-item:hover{background-color:var(--eui-c-hover);cursor:pointer}.eui-19 .eui-user-profile-menu-item:last-child{border-bottom:0}.eui-19 .eui-user-profile-menu-item a{color:var(--eui-c-text);text-decoration:none}.eui-19 .eui-user-profile-menu-item.link{cursor:pointer}.eui-19 .eui-user-profile-menu-item-right-content{margin-left:auto}.eui-19 .eui-user-profile-card{width:100%}.eui-19 .eui-user-profile-card__main-wrapper{display:flex;flex-direction:row;padding:var(--eui-s-m) var(--eui-s-m) var(--eui-s-m) 0}.eui-19 .eui-user-profile-card__main-wrapper-right-content{display:flex;flex-direction:column;margin-left:auto}.eui-19 .eui-user-profile-card__avatar-wrapper{display:flex}.eui-19 .eui-user-profile-card__userInfos{display:flex;flex-direction:column;padding-left:var(--eui-s-s)}.eui-19 .eui-user-profile-card__userInfos-item{padding-bottom:var(--eui-s-xs)}.eui-19 .eui-user-profile-card__impersonateInfos{background-color:var(--eui-c-neutral-bg-light);padding:var(--eui-s-s)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1$1.EuiDropdownComponent, selector: "eui-dropdown", inputs: ["e2eAttr", "tabIndex", "width", "height", "position", "subDropdownPosition", "isBlock", "isDropDownRightAligned", "hasClosedOnClickInside", "isLabelUpdatedFromSelectedItem", "isExpandOnHover", "hasTabNavigation", "isRightClickEnabled", "euiDisabled"], outputs: ["expand"] }, { kind: "directive", type: i1$1.EuiDropdownContentDirective, selector: "eui-dropdown-content" }, { kind: "component", type: i3.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "fillColor", "set", "size", "style", "iconUrl", "transform", "euiVariant", "aria-label", "ariaHidden", "focusable", "isLoading", "isInputIcon", "euiStart", "euiEnd"] }, { kind: "component", type: i5.EuiAvatarComponent, selector: "div[euiAvatar], span[euiAvatar], eui-avatar", inputs: ["e2eAttr", "aria-label", "hasShadow", "isShapeSquare", "isFlat", "hasNoBackground"] }, { kind: "component", type: i5.EuiAvatarTextComponent, selector: "eui-avatar-text" }, { kind: "component", type: i5.EuiAvatarImageComponent, selector: "eui-avatar-image", inputs: ["imageUrl"] }, { kind: "component", type: i5.EuiAvatarBadgeComponent, selector: "eui-avatar-badge", inputs: ["position"] }, { kind: "component", type: i6.EuiBadgeComponent, selector: "div[euiBadge], span[euiBadge], eui-badge", inputs: ["e2eAttr", "aria-label", "maxCharCount", "charReplacement", "euiIconBadge", "euiDottedBadge"] }], encapsulation: i0.ViewEncapsulation.None }); }
272
276
  }
273
277
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.9", ngImport: i0, type: EuiUserProfileComponent, decorators: [{
274
278
  type: Component,
@@ -328,6 +332,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.9", ngImpor
328
332
  }], isShowUserInfos: [{
329
333
  type: Input,
330
334
  args: [{ transform: booleanAttribute }]
335
+ }], isMobileOnly: [{
336
+ type: Input,
337
+ args: [{ transform: booleanAttribute }]
331
338
  }], euiStatusSecondary: [{
332
339
  type: Input,
333
340
  args: [{ transform: booleanAttribute }]