@eui/eds 22.0.0-alpha.16 → 22.0.0-alpha.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/changelog.html +28 -0
- package/docs/components/EdsLanguageSelectorDialog.html +1 -1
- package/docs/js/search/search_index.js +2 -2
- package/docs/json/documentation.json +42 -42
- package/docs/llms.txt +1 -1
- package/docs/properties.html +1 -1
- package/fesm2022/eui-eds-charts-eds-chart-legend.mjs +2 -2
- package/fesm2022/eui-eds-charts-eds-chart-legend.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-accordion.mjs +2 -2
- package/fesm2022/eui-eds-eds-accordion.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-alert.mjs +2 -2
- package/fesm2022/eui-eds-eds-alert.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-autocomplete.mjs +2 -2
- package/fesm2022/eui-eds-eds-autocomplete.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-avatar.mjs +4 -4
- package/fesm2022/eui-eds-eds-avatar.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-blockquote.mjs +2 -2
- package/fesm2022/eui-eds-eds-blockquote.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-calendar.mjs +4 -4
- package/fesm2022/eui-eds-eds-calendar.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-card.mjs +2 -2
- package/fesm2022/eui-eds-eds-card.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-date-block.mjs +2 -2
- package/fesm2022/eui-eds-eds-date-block.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-datepicker.mjs +2 -2
- package/fesm2022/eui-eds-eds-datepicker.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-discussion-thread.mjs +4 -4
- package/fesm2022/eui-eds-eds-discussion-thread.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-empty-state.mjs +2 -2
- package/fesm2022/eui-eds-eds-empty-state.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-fieldset.mjs +2 -2
- package/fesm2022/eui-eds-eds-fieldset.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-file-upload.mjs +2 -2
- package/fesm2022/eui-eds-eds-file-upload.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-growl.mjs +2 -2
- package/fesm2022/eui-eds-eds-growl.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-language-selector.mjs +4 -4
- package/fesm2022/eui-eds-eds-language-selector.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-list.mjs +2 -2
- package/fesm2022/eui-eds-eds-list.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-menu.mjs +2 -2
- package/fesm2022/eui-eds-eds-menu.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-multiselect.mjs +2 -2
- package/fesm2022/eui-eds-eds-multiselect.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-page.mjs +2 -2
- package/fesm2022/eui-eds-eds-page.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-popover.mjs +2 -2
- package/fesm2022/eui-eds-eds-popover.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-progress-bar.mjs +2 -2
- package/fesm2022/eui-eds-eds-progress-bar.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-progress-circle.mjs +2 -2
- package/fesm2022/eui-eds-eds-progress-circle.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-select.mjs +2 -2
- package/fesm2022/eui-eds-eds-select.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-shell.mjs +4 -4
- package/fesm2022/eui-eds-eds-shell.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-table.mjs +2 -2
- package/fesm2022/eui-eds-eds-table.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-tabs.mjs +2 -2
- package/fesm2022/eui-eds-eds-tabs.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-timeline.mjs +2 -2
- package/fesm2022/eui-eds-eds-timeline.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-timepicker.mjs +2 -2
- package/fesm2022/eui-eds-eds-timepicker.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-user-profile.mjs +2 -2
- package/fesm2022/eui-eds-eds-user-profile.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-wizard.mjs +2 -2
- package/fesm2022/eui-eds-utilities-eds-label.mjs +2 -2
- package/fesm2022/eui-eds-utilities-eds-label.mjs.map +1 -1
- package/fesm2022/eui-eds-utilities-eds-trend.mjs +2 -2
- package/fesm2022/eui-eds-utilities-eds-trend.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-eds-eds-menu.mjs","sources":["../../eds-menu/eds-menu-item.ts","../../eds-menu/eds-menu-item.html","../../eds-menu/eds-menu.ts","../../eds-menu/eds-menu.html","../../eds-menu/index.ts","../../eds-menu/eui-eds-eds-menu.ts"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n booleanAttribute,\n ElementRef,\n inject,\n} from '@angular/core';\nimport { FocusableOption } from '@angular/cdk/a11y';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { EDS_ICON } from '@eui/eds/eds-icon';\nimport { EDS_ICON_BUTTON } from '@eui/eds/eds-icon-button';\nimport { EDS_BADGE } from '@eui/eds/eds-badge';\nimport { EdsMenuItem } from './eds-menu-item.model';\n\n@Component({\n selector: 'eds-menu-item',\n templateUrl: './eds-menu-item.html',\n styleUrl: './eds-menu-item.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, RouterLink, RouterLinkActive, ...EDS_ICON, ...EDS_ICON_BUTTON, ...EDS_BADGE],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-e2e]': 'item()?.e2eAttr || \"eds-menu-item\"',\n '[attr.role]': '\"treeitem\"',\n '[attr.tabindex]': '\"-1\"',\n '[attr.aria-haspopup]': 'item()?.children?.length ? true : undefined',\n '[attr.aria-expanded]': 'item()?.children ? !!item()?.expanded : undefined',\n '[attr.aria-disabled]': 'item()?.disabled || undefined',\n },\n})\nexport class EdsMenuItemComponent implements FocusableOption {\n /** The menu item data model. */\n item = input.required<EdsMenuItem>();\n\n /** Whether to display icon. */\n hasIcon = input(false, { transform: booleanAttribute });\n\n /** Whether to display icon with label in collapsed mode. */\n hasIconLabel = input(false, { transform: booleanAttribute });\n\n /** Whether tooltips are enabled. */\n hasTooltip = input(false, { transform: booleanAttribute });\n\n /** Whether tooltips are shown when expanded. */\n hasTooltipOnExpanded = input(false, { transform: booleanAttribute });\n\n /** Whether the menu is collapsed. */\n isCollapsed = input(false, { transform: booleanAttribute });\n\n /** Whether to show initials in collapsed mode. */\n hasCollapsedInitials = input(false, { transform: booleanAttribute });\n\n /** Whether root-level items should be bold. */\n hasBoldRootLevel = input(false, { transform: booleanAttribute });\n\n /** Whether to show the expand/collapse icon. */\n hasExpandIcon = input(true, { transform: booleanAttribute });\n\n /** Emitted when the item is clicked. */\n itemClick = output<EdsMenuItem>();\n\n /** Emitted when expand/collapse is toggled. */\n expandToggle = output<EdsMenuItem>();\n\n hostClasses = computed(() => {\n const item = this.item();\n return [\n 'eds-menu-item',\n this.isCollapsed() && this.hasIconLabel() ? 'eds-menu-item--icon-label' : '',\n !item?.parent && this.hasBoldRootLevel() ? 'eds-menu-item--bold' : '',\n ].join(' ').trim();\n });\n\n /** Whether this is a non-navigable label/category item. */\n protected isLabelItem = computed(() => {\n const item = this.item();\n return !item.url && !item.urlExternal && !item.command && !item.children && !item.link;\n });\n\n /** Whether this is a URL-navigable or expandable item. */\n protected isUrlItem = computed(() => {\n const item = this.item();\n return (item.url || item.urlExternal || item.children || item.command) && !item.link;\n });\n\n /** Whether this is a link-mode item. */\n protected isLinkItem = computed(() => {\n return !this.isUrlItem() && !this.isLabelItem();\n });\n\n /** Tooltip text to display. */\n protected tooltipText = computed(() => {\n const item = this.item();\n if (!this.hasTooltip()) {\n return null;\n }\n if (this.isCollapsed()) {\n return item.tooltip || item.label || null;\n }\n if (this.hasTooltipOnExpanded()) {\n return item.tooltip || item.label || null;\n }\n return null;\n });\n\n elementRef = inject(ElementRef);\n\n /** FocusableOption — focuses the host element. */\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n\n /** Scroll this element into view. */\n scrollIntoView(): void {\n this.elementRef.nativeElement.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n }\n\n protected onClick(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n this.itemClick.emit(this.item());\n }\n\n protected onExpandToggle(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n this.expandToggle.emit(this.item());\n }\n\n protected onActionIconClick(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.item().actionIcon?.action?.(event);\n }\n}\n","@if (isLabelItem()) {\n <!-- Category / label-only item (non-navigable) -->\n <li role=\"none\" class=\"eds-menu-item__content eds-menu-item__content--category\"\n [class.eds-menu-item--disabled]=\"item().disabled\"\n [attr.title]=\"tooltipText()\">\n <span class=\"eds-menu-item__link eds-menu-item__link--category\" (click)=\"onClick($event)\">\n <span class=\"eds-menu-item__link-start-block\">\n <ng-container *ngTemplateOutlet=\"iconBlock\"></ng-container>\n </span>\n <span class=\"eds-menu-item__link-content-block\">\n <span class=\"eds-menu-item__link-label eds-menu-item__link-label--category\">{{ item().label }}</span>\n </span>\n </span>\n </li>\n} @else {\n <!-- Navigable / expandable item -->\n <li role=\"none\" class=\"eds-menu-item__content\"\n [class.eds-menu-item--disabled]=\"item().disabled\"\n [class.eds-menu-item--expanded]=\"item().expanded\"\n [class.eds-menu-item--active]=\"item().active\">\n\n @if (item().url && !item().urlExternal) {\n <!-- Internal router link -->\n <a class=\"eds-menu-item__link\"\n [class.eds-menu-item__link--active]=\"item().active\"\n [class.eds-menu-item__link--disabled]=\"item().disabled\"\n [class.eds-menu-item__link--has-sub]=\"item().children?.length\"\n [routerLink]=\"item().url\"\n [queryParams]=\"item().queryParams\"\n routerLinkActive=\"eds-menu-item__link--active\"\n [attr.title]=\"tooltipText()\"\n (click)=\"onClick($event)\">\n <ng-container *ngTemplateOutlet=\"linkContent\"></ng-container>\n </a>\n } @else {\n <!-- External link / command / expandable -->\n <a class=\"eds-menu-item__link\"\n [class.eds-menu-item__link--active]=\"item().active\"\n [class.eds-menu-item__link--disabled]=\"item().disabled\"\n [class.eds-menu-item__link--has-sub]=\"item().children?.length\"\n href=\"javascript:void(0)\"\n [attr.title]=\"tooltipText()\"\n (click)=\"onClick($event)\">\n <ng-container *ngTemplateOutlet=\"linkContent\"></ng-container>\n </a>\n }\n\n <!-- Projected child list -->\n <ng-content />\n </li>\n}\n\n<!-- LINK CONTENT TEMPLATE -->\n<ng-template #linkContent>\n <span class=\"eds-menu-item__link-start-block\">\n <ng-container *ngTemplateOutlet=\"iconBlock\"></ng-container>\n @if (isCollapsed() && item().tagLabel) {\n <eds-badge class=\"eds-menu-item__badge--dot\" [color]=\"$any(item().tagTypeClass || '')\" iconOnly />\n }\n </span>\n\n <span class=\"eds-menu-item__link-content-block\">\n <span class=\"eds-menu-item__link-label\">{{ item().label }}</span>\n @if (item().urlExternal && item().urlExternalTarget === '_blank') {\n <eds-icon class=\"eds-menu-item__link-external-icon\" icon=\"arrow-square-out:core\" size=\"xs\" />\n }\n </span>\n\n <span class=\"eds-menu-item__link-end-block\">\n @if (item().tagLabel && !isCollapsed()) {\n <eds-badge [color]=\"$any(item().tagTypeClass || '')\" size=\"s\">{{ item().tagLabel }}</eds-badge>\n }\n\n @if (item().actionIcon) {\n <button edsIconButton\n class=\"eds-menu-item__action-icon\"\n [icon]=\"item().actionIcon!.icon\"\n [ariaLabel]=\"item().actionIcon!.label || 'Action'\"\n size=\"xs\"\n (click)=\"onActionIconClick($event)\">\n </button>\n }\n\n @if (hasExpandIcon() && item().children?.length) {\n <button edsIconButton\n class=\"eds-menu-item__expand-toggle\"\n [icon]=\"item().expanded ? 'caret-up' : 'caret-down'\"\n [ariaLabel]=\"item().expanded ? 'Collapse' : 'Expand'\"\n size=\"xs\"\n rounded\n (click)=\"onExpandToggle($event)\">\n </button>\n }\n </span>\n</ng-template>\n\n<!-- ICON BLOCK TEMPLATE -->\n<ng-template #iconBlock>\n @if (!isCollapsed()) {\n @if (hasIcon()) {\n @if (item().icon) {\n <eds-icon class=\"eds-menu-item__icon\" [icon]=\"item().icon!\" size=\"s\" />\n } @else if (item().hasMarker) {\n <eds-icon class=\"eds-menu-item__marker\" icon=\"dot:core\" size=\"xs\"\n [style.color]=\"'var(--eds-c-foreground-' + (item().markerTypeClass || 'primary') + ')'\" />\n }\n } @else if (item().hasMarker) {\n <eds-icon class=\"eds-menu-item__marker\" icon=\"dot:core\" size=\"xs\"\n [style.color]=\"'var(--eds-c-foreground-' + (item().markerTypeClass || 'primary') + ')'\" />\n }\n } @else {\n <!-- Collapsed mode -->\n @if (hasCollapsedInitials() && item().initials) {\n <span class=\"eds-menu-item__initials\">{{ item().initials }}</span>\n } @else if (hasIcon() && item().icon) {\n <eds-icon class=\"eds-menu-item__icon\" [icon]=\"item().icon!\" size=\"s\" />\n } @else if (item().hasMarker) {\n <eds-icon class=\"eds-menu-item__marker\" icon=\"dot:core\" size=\"xs\"\n [style.color]=\"'var(--eds-c-foreground-' + (item().markerTypeClass || 'primary') + ')'\" />\n } @else {\n <span class=\"eds-menu-item__initials\">{{ item().label?.charAt(0) }}</span>\n }\n\n @if (hasIconLabel()) {\n <span class=\"eds-menu-item__icon-label\">{{ item().label }}</span>\n }\n }\n</ng-template>\n\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n booleanAttribute,\n effect,\n signal,\n viewChildren,\n viewChild,\n ElementRef,\n inject,\n OnInit,\n OnDestroy,\n AfterViewInit,\n} from '@angular/core';\nimport { Router, ActivatedRoute, NavigationEnd } from '@angular/router';\nimport { FocusKeyManager } from '@angular/cdk/a11y';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { EdsMenuItemComponent } from './eds-menu-item';\nimport { EdsMenuItem } from './eds-menu-item.model';\nimport { EDS_ICON } from '@eui/eds/eds-icon';\n\n@Component({\n selector: 'eds-menu',\n templateUrl: './eds-menu.html',\n styleUrl: './eds-menu.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, EdsMenuItemComponent, ...EDS_ICON],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-e2e]': '\"eds-menu\"',\n role: 'navigation',\n '(keydown)': 'onKeydown($event)',\n },\n})\nexport class EdsMenu implements OnInit, OnDestroy, AfterViewInit {\n protected readonly menuItems = viewChildren(EdsMenuItemComponent);\n protected readonly filterInput = viewChild('filterInput', { read: ElementRef });\n\n /** Hierarchical array of menu items to display. */\n items = input<EdsMenuItem[]>([]);\n\n /** Label for the search filter input. */\n searchFilterLabel = input('Search filter');\n\n /** URL fragment identifier for internal navigation. */\n fragmentId = input<string | undefined>(undefined);\n\n /** Current filter value for programmatic filtering. */\n filterValue = input('');\n\n /** Collapses the menu to icon-only state. */\n isCollapsed = input(false, { transform: booleanAttribute });\n\n /** Shows initials when collapsed (instead of icons). */\n hasCollapsedInitials = input(false, { transform: booleanAttribute });\n\n /** Enables the search filter input. */\n hasFilter = input(false, { transform: booleanAttribute });\n\n /** Shows icons for menu items. */\n hasIcons = input(false, { transform: booleanAttribute });\n\n /** Shows labels underneath icons in collapsed mode. */\n hasIconsLabels = input(false, { transform: booleanAttribute });\n\n /** Alias for hasIconsLabels — shows labels underneath icons in collapsed mode. */\n hasCollapsedLabels = input(false, { transform: booleanAttribute });\n\n /** Enables tooltips on menu items (shown in collapsed mode). */\n hasTooltip = input(true, { transform: booleanAttribute });\n\n /** Shows tooltips even when menu is expanded. */\n hasTooltipOnExpanded = input(false, { transform: booleanAttribute });\n\n /** Only shows tooltip from the tooltip property (not auto-generated from label) when expanded. */\n hasTooltipOnlyOnExpanded = input(false, { transform: booleanAttribute });\n\n /** Expands all items that do not have an explicit expanded property. */\n expandAllItems = input(false, { transform: booleanAttribute });\n\n /** Applies flat styling without hierarchical indentation. */\n isFlat = input(false, { transform: booleanAttribute });\n\n /** Automatically scrolls to the active menu item on route changes. */\n hasScrollToItem = input(false, { transform: booleanAttribute });\n\n /** Applies bold font weight to root-level menu items. */\n hasBoldRootLevel = input(false, { transform: booleanAttribute });\n\n /** Emits true when any menu item is clicked. */\n isClick = output<boolean>();\n\n /** Emits the clicked menu item. */\n itemClick = output<EdsMenuItem>();\n\n /** Emits when a menu item's expand state is toggled. */\n expandToggle = output<EdsMenuItem>();\n\n /** Internal configured items with parent refs, visibility, and filtering applied. */\n protected internalItems = signal<EdsMenuItem[]>([]);\n\n /** Whether expand icons should be shown (hidden during filter). */\n protected hasExpandIcon = signal(true);\n\n hostClasses = computed(() => {\n return [\n 'eds-menu',\n this.isCollapsed() ? 'eds-menu--collapsed' : '',\n !this.hasIcons() ? 'eds-menu--no-icons' : '',\n this.isFlat() ? 'eds-menu--flat' : '',\n ].join(' ').trim();\n });\n\n private router = inject(Router);\n private route = inject(ActivatedRoute);\n private subscription: Subscription | undefined;\n private focusKeyManager: FocusKeyManager<EdsMenuItemComponent> | undefined;\n\n constructor() {\n // Sync items input → internal state\n effect(() => {\n const items = this.items();\n const expandAll = this.expandAllItems();\n const configured = this.configureItems([...items], undefined, expandAll);\n // Try to expand to current route\n const currentUrl = this.router.url;\n const relevant = this.findMostRelevantItem(currentUrl, configured);\n if (relevant) {\n this.expandToItem(relevant);\n }\n this.internalItems.set(configured);\n });\n\n // Sync filterValue input → filtering\n effect(() => {\n const fv = this.filterValue();\n const hasFilterInput = this.hasFilter();\n if (hasFilterInput && fv) {\n this.applyFilter(fv);\n }\n });\n }\n\n ngOnInit(): void {\n this.subscription = this.router.events\n .pipe(filter(event => event instanceof NavigationEnd))\n .subscribe((event: NavigationEnd) => {\n if (this.hasScrollToItem()) {\n this.scrollToItem(event.url);\n }\n });\n }\n\n ngAfterViewInit(): void {\n this.initFocusKeyManager();\n }\n\n ngOnDestroy(): void {\n this.subscription?.unsubscribe();\n }\n\n /** Keyboard navigation handler — ArrowUp/Down for linear, ArrowRight to expand, ArrowLeft to collapse, Enter to activate. */\n protected onKeydown(event: KeyboardEvent): void {\n if (!this.focusKeyManager) {\n return;\n }\n\n // Sync active item from DOM focus if FocusKeyManager lost track\n if (!this.focusKeyManager.activeItem) {\n const focused = this.menuItems().find(mi =>\n mi.elementRef.nativeElement.contains(document.activeElement),\n );\n if (focused) {\n this.focusKeyManager.updateActiveItem(focused);\n }\n }\n\n const activeItem = this.focusKeyManager.activeItem;\n\n switch (event.key) {\n case 'Enter':\n case ' ': {\n if (activeItem && !activeItem.item()?.disabled) {\n this.onItemClick(activeItem.item());\n event.preventDefault();\n }\n break;\n }\n case 'ArrowRight': {\n if (activeItem?.item()?.children) {\n if (!activeItem.item().expanded) {\n // Closed node: open it\n this.onExpandToggle(activeItem.item());\n } else {\n // Open node: move focus to first child\n const firstChildComp = this.menuItems().find(mi => mi.item()?.parent?.id === activeItem.item().id);\n if (firstChildComp) {\n this.focusKeyManager.setActiveItem(firstChildComp);\n }\n }\n event.preventDefault();\n }\n break;\n }\n case 'ArrowLeft': {\n if (activeItem?.item()?.children && activeItem.item().expanded) {\n // Open node: close it\n this.onExpandToggle(activeItem.item());\n event.preventDefault();\n } else if (activeItem?.item()?.parent) {\n // Child or closed node: move to parent\n const parentComp = this.menuItems().find(mi => mi.item()?.id === activeItem.item().parent?.id);\n if (parentComp) {\n this.focusKeyManager.setActiveItem(parentComp);\n event.preventDefault();\n }\n }\n break;\n }\n case 'ArrowDown': {\n event.preventDefault();\n this.focusKeyManager.setNextItemActive();\n break;\n }\n case 'ArrowUp': {\n event.preventDefault();\n this.focusKeyManager.setPreviousItemActive();\n break;\n }\n case 'Home': {\n event.preventDefault();\n this.focusKeyManager.setFirstItemActive();\n break;\n }\n case 'End': {\n event.preventDefault();\n this.focusKeyManager.setLastItemActive();\n break;\n }\n default: {\n this.focusKeyManager.onKeydown(event);\n break;\n }\n }\n }\n\n protected onItemClick(item: EdsMenuItem): 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], {\n relativeTo: this.route,\n fragment: this.fragmentId(),\n queryParams: item.queryParams,\n });\n } else if (typeof item.command === 'function') {\n item.command();\n } else {\n this.onExpandToggle(item);\n }\n }\n\n this.isClick.emit(true);\n this.itemClick.emit(item);\n }\n\n protected onExpandToggle(item: EdsMenuItem): void {\n if (item.children) {\n item.expanded = !item.expanded;\n this.expandToggle.emit(item);\n // Trigger change detection by updating the signal\n this.internalItems.set([...this.internalItems()]);\n // Re-init FocusKeyManager after DOM updates\n setTimeout(() => this.initFocusKeyManager());\n }\n }\n\n protected onFilter(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n this.applyFilter(value);\n }\n\n protected onFilterClick(event: MouseEvent): void {\n event.stopPropagation();\n }\n\n protected shouldRenderChild(item: EdsMenuItem): boolean {\n return !!(item?.children && (item.expanded || (this.hasFilter() && item.filtered && this.isFilterActive())));\n }\n\n protected trackById(index: number, item: EdsMenuItem): string {\n return item.id || item.label || String(index);\n }\n\n private initFocusKeyManager(): void {\n const items = this.menuItems();\n if (items.length > 0) {\n this.focusKeyManager = new FocusKeyManager(items).withWrap();\n }\n }\n\n private applyFilter(value: string): void {\n const items = this.filterMenuItems(this.internalItems(), value);\n this.hasExpandIcon.set(!value);\n this.internalItems.set(items);\n }\n\n private isFilterActive(): boolean {\n return (this.filterInput()?.nativeElement?.value?.length ?? 0) > 0;\n }\n\n private filterMenuItems(items: EdsMenuItem[], filterValue: string): EdsMenuItem[] {\n return items?.map((item: EdsMenuItem) => {\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.some(child => child.filtered);\n } else {\n item.filtered = found;\n }\n return item;\n }) || [];\n }\n\n private configureItems(items: EdsMenuItem[], parent?: EdsMenuItem, expandAll?: boolean): EdsMenuItem[] {\n return items?.map((item) => {\n if (item.children) {\n item.children = this.configureItems(item.children, item, expandAll);\n if (expandAll && item.expanded === undefined) {\n item.expanded = true;\n }\n }\n if (parent) {\n item.parent = parent;\n }\n if (!item.id) {\n item.id = crypto.randomUUID();\n }\n if (item.label && this.hasCollapsedInitials()) {\n const words = item.label.split(' ');\n item.initials = words.length > 1\n ? `${words[0].charAt(0)}${words[1].charAt(0)}`\n : item.label.substring(0, 2);\n }\n item.visible = item.visible ?? true;\n item.filtered = item.filtered ?? true;\n return item;\n }) || [];\n }\n\n private findMostRelevantItem(url: string, items: EdsMenuItem[], relevantItem?: EdsMenuItem): EdsMenuItem | undefined {\n if (!items) {\n return undefined;\n }\n for (const item of items) {\n if (item.url && url.indexOf(item.url) > -1) {\n if (!relevantItem || url.replace(item.url, '').length < url.replace(relevantItem.url!, '').length) {\n relevantItem = item;\n }\n }\n if (item.children) {\n relevantItem = this.findMostRelevantItem(url, item.children, relevantItem);\n }\n }\n return relevantItem;\n }\n\n private expandToItem(item: EdsMenuItem): void {\n if (item.parent) {\n item.parent.expanded = true;\n this.expandToItem(item.parent);\n }\n }\n\n private scrollToItem(url: string): void {\n const item = this.findMostRelevantItem(url, this.internalItems());\n if (item) {\n this.expandToItem(item);\n this.internalItems.set([...this.internalItems()]);\n setTimeout(() => {\n const menuItemComp = this.menuItems()?.find(mi => mi.item()?.id === item.id);\n if (menuItemComp) {\n menuItemComp.scrollIntoView();\n }\n }, 300);\n }\n }\n}\n","@if (hasFilter()) {\n <div class=\"eds-menu-filter\" [class.eds-menu-filter--collapsed]=\"isCollapsed()\" (click)=\"onFilterClick($event)\">\n <div class=\"eds-menu-filter__input-wrapper\">\n <eds-icon class=\"eds-menu-filter__icon\" icon=\"magnifying-glass:core\" size=\"s\" />\n <input\n #filterInput\n class=\"eds-menu-filter__input\"\n type=\"text\"\n (input)=\"onFilter($event)\"\n [placeholder]=\"searchFilterLabel()\"\n [attr.aria-label]=\"searchFilterLabel()\"\n [value]=\"filterValue()\" />\n </div>\n </div>\n}\n\n<ul class=\"eds-menu__list\" role=\"tree\" aria-orientation=\"vertical\" tabindex=\"0\">\n @for (item of internalItems(); track trackById($index, item)) {\n <ng-container *ngTemplateOutlet=\"menuItemTpl; context: { $implicit: item }\"></ng-container>\n }\n</ul>\n\n<ng-template #menuItemTpl let-item>\n @if (item.visible && item.filtered) {\n <eds-menu-item\n [item]=\"item\"\n [hasIcon]=\"hasIcons()\"\n [hasIconLabel]=\"hasIconsLabels() || hasCollapsedLabels()\"\n [hasTooltip]=\"hasTooltip()\"\n [hasTooltipOnExpanded]=\"hasTooltipOnExpanded()\"\n [isCollapsed]=\"isCollapsed()\"\n [hasCollapsedInitials]=\"hasCollapsedInitials()\"\n [hasBoldRootLevel]=\"hasBoldRootLevel()\"\n [hasExpandIcon]=\"hasExpandIcon()\"\n (itemClick)=\"onItemClick($event)\"\n (expandToggle)=\"onExpandToggle($event)\">\n @if (shouldRenderChild(item)) {\n <ul class=\"eds-menu__list eds-menu__sublist\" role=\"group\" [attr.aria-label]=\"item.label\">\n @for (child of item.children; track trackById($index, child)) {\n <ng-container *ngTemplateOutlet=\"menuItemTpl; context: { $implicit: child }\"></ng-container>\n }\n </ul>\n }\n </eds-menu-item>\n }\n</ng-template>\n","import { EdsMenu } from './eds-menu';\nimport { EdsMenuItemComponent } from './eds-menu-item';\n\nexport { EdsMenu };\nexport { EdsMenuItemComponent };\nexport { EdsMenuItem } from './eds-menu-item.model';\n\n/** Convenience array for importing all eds-menu components. */\nexport const EDS_MENU = [EdsMenu, EdsMenuItemComponent] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eui-eds-eds-menu.mjs","sources":["../../eds-menu/eds-menu-item.ts","../../eds-menu/eds-menu-item.html","../../eds-menu/eds-menu.ts","../../eds-menu/eds-menu.html","../../eds-menu/index.ts","../../eds-menu/eui-eds-eds-menu.ts"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n booleanAttribute,\n ElementRef,\n inject,\n} from '@angular/core';\nimport { FocusableOption } from '@angular/cdk/a11y';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { EDS_ICON } from '@eui/eds/eds-icon';\nimport { EDS_ICON_BUTTON } from '@eui/eds/eds-icon-button';\nimport { EDS_BADGE } from '@eui/eds/eds-badge';\nimport { EdsMenuItem } from './eds-menu-item.model';\n\n@Component({\n selector: 'eds-menu-item',\n templateUrl: './eds-menu-item.html',\n styleUrl: './eds-menu-item.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, RouterLink, RouterLinkActive, ...EDS_ICON, ...EDS_ICON_BUTTON, ...EDS_BADGE],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-e2e]': 'item()?.e2eAttr || \"eds-menu-item\"',\n '[attr.role]': '\"treeitem\"',\n '[attr.tabindex]': '\"-1\"',\n '[attr.aria-haspopup]': 'item()?.children?.length ? true : undefined',\n '[attr.aria-expanded]': 'item()?.children ? !!item()?.expanded : undefined',\n '[attr.aria-disabled]': 'item()?.disabled || undefined',\n },\n})\nexport class EdsMenuItemComponent implements FocusableOption {\n /** The menu item data model. */\n item = input.required<EdsMenuItem>();\n\n /** Whether to display icon. */\n hasIcon = input(false, { transform: booleanAttribute });\n\n /** Whether to display icon with label in collapsed mode. */\n hasIconLabel = input(false, { transform: booleanAttribute });\n\n /** Whether tooltips are enabled. */\n hasTooltip = input(false, { transform: booleanAttribute });\n\n /** Whether tooltips are shown when expanded. */\n hasTooltipOnExpanded = input(false, { transform: booleanAttribute });\n\n /** Whether the menu is collapsed. */\n isCollapsed = input(false, { transform: booleanAttribute });\n\n /** Whether to show initials in collapsed mode. */\n hasCollapsedInitials = input(false, { transform: booleanAttribute });\n\n /** Whether root-level items should be bold. */\n hasBoldRootLevel = input(false, { transform: booleanAttribute });\n\n /** Whether to show the expand/collapse icon. */\n hasExpandIcon = input(true, { transform: booleanAttribute });\n\n /** Emitted when the item is clicked. */\n itemClick = output<EdsMenuItem>();\n\n /** Emitted when expand/collapse is toggled. */\n expandToggle = output<EdsMenuItem>();\n\n hostClasses = computed(() => {\n const item = this.item();\n return [\n 'eds-menu-item',\n this.isCollapsed() && this.hasIconLabel() ? 'eds-menu-item--icon-label' : '',\n !item?.parent && this.hasBoldRootLevel() ? 'eds-menu-item--bold' : '',\n ].join(' ').trim();\n });\n\n /** Whether this is a non-navigable label/category item. */\n protected isLabelItem = computed(() => {\n const item = this.item();\n return !item.url && !item.urlExternal && !item.command && !item.children && !item.link;\n });\n\n /** Whether this is a URL-navigable or expandable item. */\n protected isUrlItem = computed(() => {\n const item = this.item();\n return (item.url || item.urlExternal || item.children || item.command) && !item.link;\n });\n\n /** Whether this is a link-mode item. */\n protected isLinkItem = computed(() => {\n return !this.isUrlItem() && !this.isLabelItem();\n });\n\n /** Tooltip text to display. */\n protected tooltipText = computed(() => {\n const item = this.item();\n if (!this.hasTooltip()) {\n return null;\n }\n if (this.isCollapsed()) {\n return item.tooltip || item.label || null;\n }\n if (this.hasTooltipOnExpanded()) {\n return item.tooltip || item.label || null;\n }\n return null;\n });\n\n elementRef = inject(ElementRef);\n\n /** FocusableOption — focuses the host element. */\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n\n /** Scroll this element into view. */\n scrollIntoView(): void {\n this.elementRef.nativeElement.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n }\n\n protected onClick(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n this.itemClick.emit(this.item());\n }\n\n protected onExpandToggle(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n this.expandToggle.emit(this.item());\n }\n\n protected onActionIconClick(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.item().actionIcon?.action?.(event);\n }\n}\n","@if (isLabelItem()) {\n <!-- Category / label-only item (non-navigable) -->\n <li role=\"none\" class=\"eds-menu-item__content eds-menu-item__content--category\"\n [class.eds-menu-item--disabled]=\"item().disabled\"\n [attr.title]=\"tooltipText()\">\n <span class=\"eds-menu-item__link eds-menu-item__link--category\" (click)=\"onClick($event)\">\n <span class=\"eds-menu-item__link-start-block\">\n <ng-container *ngTemplateOutlet=\"iconBlock\"></ng-container>\n </span>\n <span class=\"eds-menu-item__link-content-block\">\n <span class=\"eds-menu-item__link-label eds-menu-item__link-label--category\">{{ item().label }}</span>\n </span>\n </span>\n </li>\n} @else {\n <!-- Navigable / expandable item -->\n <li role=\"none\" class=\"eds-menu-item__content\"\n [class.eds-menu-item--disabled]=\"item().disabled\"\n [class.eds-menu-item--expanded]=\"item().expanded\"\n [class.eds-menu-item--active]=\"item().active\">\n\n @if (item().url && !item().urlExternal) {\n <!-- Internal router link -->\n <a class=\"eds-menu-item__link\"\n [class.eds-menu-item__link--active]=\"item().active\"\n [class.eds-menu-item__link--disabled]=\"item().disabled\"\n [class.eds-menu-item__link--has-sub]=\"item().children?.length\"\n [routerLink]=\"item().url\"\n [queryParams]=\"item().queryParams\"\n routerLinkActive=\"eds-menu-item__link--active\"\n [attr.title]=\"tooltipText()\"\n (click)=\"onClick($event)\">\n <ng-container *ngTemplateOutlet=\"linkContent\"></ng-container>\n </a>\n } @else {\n <!-- External link / command / expandable -->\n <a class=\"eds-menu-item__link\"\n [class.eds-menu-item__link--active]=\"item().active\"\n [class.eds-menu-item__link--disabled]=\"item().disabled\"\n [class.eds-menu-item__link--has-sub]=\"item().children?.length\"\n href=\"javascript:void(0)\"\n [attr.title]=\"tooltipText()\"\n (click)=\"onClick($event)\">\n <ng-container *ngTemplateOutlet=\"linkContent\"></ng-container>\n </a>\n }\n\n <!-- Projected child list -->\n <ng-content />\n </li>\n}\n\n<!-- LINK CONTENT TEMPLATE -->\n<ng-template #linkContent>\n <span class=\"eds-menu-item__link-start-block\">\n <ng-container *ngTemplateOutlet=\"iconBlock\"></ng-container>\n @if (isCollapsed() && item().tagLabel) {\n <eds-badge class=\"eds-menu-item__badge--dot\" [color]=\"$any(item().tagTypeClass || '')\" iconOnly />\n }\n </span>\n\n <span class=\"eds-menu-item__link-content-block\">\n <span class=\"eds-menu-item__link-label\">{{ item().label }}</span>\n @if (item().urlExternal && item().urlExternalTarget === '_blank') {\n <eds-icon class=\"eds-menu-item__link-external-icon\" icon=\"arrow-square-out:core\" size=\"xs\" />\n }\n </span>\n\n <span class=\"eds-menu-item__link-end-block\">\n @if (item().tagLabel && !isCollapsed()) {\n <eds-badge [color]=\"$any(item().tagTypeClass || '')\" size=\"s\">{{ item().tagLabel }}</eds-badge>\n }\n\n @if (item().actionIcon) {\n <button edsIconButton\n class=\"eds-menu-item__action-icon\"\n [icon]=\"item().actionIcon!.icon\"\n [ariaLabel]=\"item().actionIcon!.label || 'Action'\"\n size=\"xs\"\n (click)=\"onActionIconClick($event)\">\n </button>\n }\n\n @if (hasExpandIcon() && item().children?.length) {\n <button edsIconButton\n class=\"eds-menu-item__expand-toggle\"\n [icon]=\"item().expanded ? 'caret-up' : 'caret-down'\"\n [ariaLabel]=\"item().expanded ? 'Collapse' : 'Expand'\"\n size=\"xs\"\n rounded\n (click)=\"onExpandToggle($event)\">\n </button>\n }\n </span>\n</ng-template>\n\n<!-- ICON BLOCK TEMPLATE -->\n<ng-template #iconBlock>\n @if (!isCollapsed()) {\n @if (hasIcon()) {\n @if (item().icon) {\n <eds-icon class=\"eds-menu-item__icon\" [icon]=\"item().icon!\" size=\"s\" />\n } @else if (item().hasMarker) {\n <eds-icon class=\"eds-menu-item__marker\" icon=\"dot:core\" size=\"xs\"\n [style.color]=\"'var(--eds-c-foreground-' + (item().markerTypeClass || 'primary') + ')'\" />\n }\n } @else if (item().hasMarker) {\n <eds-icon class=\"eds-menu-item__marker\" icon=\"dot:core\" size=\"xs\"\n [style.color]=\"'var(--eds-c-foreground-' + (item().markerTypeClass || 'primary') + ')'\" />\n }\n } @else {\n <!-- Collapsed mode -->\n @if (hasCollapsedInitials() && item().initials) {\n <span class=\"eds-menu-item__initials\">{{ item().initials }}</span>\n } @else if (hasIcon() && item().icon) {\n <eds-icon class=\"eds-menu-item__icon\" [icon]=\"item().icon!\" size=\"s\" />\n } @else if (item().hasMarker) {\n <eds-icon class=\"eds-menu-item__marker\" icon=\"dot:core\" size=\"xs\"\n [style.color]=\"'var(--eds-c-foreground-' + (item().markerTypeClass || 'primary') + ')'\" />\n } @else {\n <span class=\"eds-menu-item__initials\">{{ item().label?.charAt(0) }}</span>\n }\n\n @if (hasIconLabel()) {\n <span class=\"eds-menu-item__icon-label\">{{ item().label }}</span>\n }\n }\n</ng-template>\n\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n booleanAttribute,\n effect,\n signal,\n viewChildren,\n viewChild,\n ElementRef,\n inject,\n OnInit,\n OnDestroy,\n AfterViewInit,\n} from '@angular/core';\nimport { Router, ActivatedRoute, NavigationEnd } from '@angular/router';\nimport { FocusKeyManager } from '@angular/cdk/a11y';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { EdsMenuItemComponent } from './eds-menu-item';\nimport { EdsMenuItem } from './eds-menu-item.model';\nimport { EDS_ICON } from '@eui/eds/eds-icon';\n\n@Component({\n selector: 'eds-menu',\n templateUrl: './eds-menu.html',\n styleUrl: './eds-menu.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, EdsMenuItemComponent, ...EDS_ICON],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-e2e]': '\"eds-menu\"',\n role: 'navigation',\n '(keydown)': 'onKeydown($event)',\n },\n})\nexport class EdsMenu implements OnInit, OnDestroy, AfterViewInit {\n protected readonly menuItems = viewChildren(EdsMenuItemComponent);\n protected readonly filterInput = viewChild('filterInput', { read: ElementRef });\n\n /** Hierarchical array of menu items to display. */\n items = input<EdsMenuItem[]>([]);\n\n /** Label for the search filter input. */\n searchFilterLabel = input('Search filter');\n\n /** URL fragment identifier for internal navigation. */\n fragmentId = input<string | undefined>(undefined);\n\n /** Current filter value for programmatic filtering. */\n filterValue = input('');\n\n /** Collapses the menu to icon-only state. */\n isCollapsed = input(false, { transform: booleanAttribute });\n\n /** Shows initials when collapsed (instead of icons). */\n hasCollapsedInitials = input(false, { transform: booleanAttribute });\n\n /** Enables the search filter input. */\n hasFilter = input(false, { transform: booleanAttribute });\n\n /** Shows icons for menu items. */\n hasIcons = input(false, { transform: booleanAttribute });\n\n /** Shows labels underneath icons in collapsed mode. */\n hasIconsLabels = input(false, { transform: booleanAttribute });\n\n /** Alias for hasIconsLabels — shows labels underneath icons in collapsed mode. */\n hasCollapsedLabels = input(false, { transform: booleanAttribute });\n\n /** Enables tooltips on menu items (shown in collapsed mode). */\n hasTooltip = input(true, { transform: booleanAttribute });\n\n /** Shows tooltips even when menu is expanded. */\n hasTooltipOnExpanded = input(false, { transform: booleanAttribute });\n\n /** Only shows tooltip from the tooltip property (not auto-generated from label) when expanded. */\n hasTooltipOnlyOnExpanded = input(false, { transform: booleanAttribute });\n\n /** Expands all items that do not have an explicit expanded property. */\n expandAllItems = input(false, { transform: booleanAttribute });\n\n /** Applies flat styling without hierarchical indentation. */\n isFlat = input(false, { transform: booleanAttribute });\n\n /** Automatically scrolls to the active menu item on route changes. */\n hasScrollToItem = input(false, { transform: booleanAttribute });\n\n /** Applies bold font weight to root-level menu items. */\n hasBoldRootLevel = input(false, { transform: booleanAttribute });\n\n /** Emits true when any menu item is clicked. */\n isClick = output<boolean>();\n\n /** Emits the clicked menu item. */\n itemClick = output<EdsMenuItem>();\n\n /** Emits when a menu item's expand state is toggled. */\n expandToggle = output<EdsMenuItem>();\n\n /** Internal configured items with parent refs, visibility, and filtering applied. */\n protected internalItems = signal<EdsMenuItem[]>([]);\n\n /** Whether expand icons should be shown (hidden during filter). */\n protected hasExpandIcon = signal(true);\n\n hostClasses = computed(() => {\n return [\n 'eds-menu',\n this.isCollapsed() ? 'eds-menu--collapsed' : '',\n !this.hasIcons() ? 'eds-menu--no-icons' : '',\n this.isFlat() ? 'eds-menu--flat' : '',\n ].join(' ').trim();\n });\n\n private router = inject(Router);\n private route = inject(ActivatedRoute);\n private subscription: Subscription | undefined;\n private focusKeyManager: FocusKeyManager<EdsMenuItemComponent> | undefined;\n\n constructor() {\n // Sync items input → internal state\n effect(() => {\n const items = this.items();\n const expandAll = this.expandAllItems();\n const configured = this.configureItems([...items], undefined, expandAll);\n // Try to expand to current route\n const currentUrl = this.router.url;\n const relevant = this.findMostRelevantItem(currentUrl, configured);\n if (relevant) {\n this.expandToItem(relevant);\n }\n this.internalItems.set(configured);\n });\n\n // Sync filterValue input → filtering\n effect(() => {\n const fv = this.filterValue();\n const hasFilterInput = this.hasFilter();\n if (hasFilterInput && fv) {\n this.applyFilter(fv);\n }\n });\n }\n\n ngOnInit(): void {\n this.subscription = this.router.events\n .pipe(filter(event => event instanceof NavigationEnd))\n .subscribe((event: NavigationEnd) => {\n if (this.hasScrollToItem()) {\n this.scrollToItem(event.url);\n }\n });\n }\n\n ngAfterViewInit(): void {\n this.initFocusKeyManager();\n }\n\n ngOnDestroy(): void {\n this.subscription?.unsubscribe();\n }\n\n /** Keyboard navigation handler — ArrowUp/Down for linear, ArrowRight to expand, ArrowLeft to collapse, Enter to activate. */\n protected onKeydown(event: KeyboardEvent): void {\n if (!this.focusKeyManager) {\n return;\n }\n\n // Sync active item from DOM focus if FocusKeyManager lost track\n if (!this.focusKeyManager.activeItem) {\n const focused = this.menuItems().find(mi =>\n mi.elementRef.nativeElement.contains(document.activeElement),\n );\n if (focused) {\n this.focusKeyManager.updateActiveItem(focused);\n }\n }\n\n const activeItem = this.focusKeyManager.activeItem;\n\n switch (event.key) {\n case 'Enter':\n case ' ': {\n if (activeItem && !activeItem.item()?.disabled) {\n this.onItemClick(activeItem.item());\n event.preventDefault();\n }\n break;\n }\n case 'ArrowRight': {\n if (activeItem?.item()?.children) {\n if (!activeItem.item().expanded) {\n // Closed node: open it\n this.onExpandToggle(activeItem.item());\n } else {\n // Open node: move focus to first child\n const firstChildComp = this.menuItems().find(mi => mi.item()?.parent?.id === activeItem.item().id);\n if (firstChildComp) {\n this.focusKeyManager.setActiveItem(firstChildComp);\n }\n }\n event.preventDefault();\n }\n break;\n }\n case 'ArrowLeft': {\n if (activeItem?.item()?.children && activeItem.item().expanded) {\n // Open node: close it\n this.onExpandToggle(activeItem.item());\n event.preventDefault();\n } else if (activeItem?.item()?.parent) {\n // Child or closed node: move to parent\n const parentComp = this.menuItems().find(mi => mi.item()?.id === activeItem.item().parent?.id);\n if (parentComp) {\n this.focusKeyManager.setActiveItem(parentComp);\n event.preventDefault();\n }\n }\n break;\n }\n case 'ArrowDown': {\n event.preventDefault();\n this.focusKeyManager.setNextItemActive();\n break;\n }\n case 'ArrowUp': {\n event.preventDefault();\n this.focusKeyManager.setPreviousItemActive();\n break;\n }\n case 'Home': {\n event.preventDefault();\n this.focusKeyManager.setFirstItemActive();\n break;\n }\n case 'End': {\n event.preventDefault();\n this.focusKeyManager.setLastItemActive();\n break;\n }\n default: {\n this.focusKeyManager.onKeydown(event);\n break;\n }\n }\n }\n\n protected onItemClick(item: EdsMenuItem): 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], {\n relativeTo: this.route,\n fragment: this.fragmentId(),\n queryParams: item.queryParams,\n });\n } else if (typeof item.command === 'function') {\n item.command();\n } else {\n this.onExpandToggle(item);\n }\n }\n\n this.isClick.emit(true);\n this.itemClick.emit(item);\n }\n\n protected onExpandToggle(item: EdsMenuItem): void {\n if (item.children) {\n item.expanded = !item.expanded;\n this.expandToggle.emit(item);\n // Trigger change detection by updating the signal\n this.internalItems.set([...this.internalItems()]);\n // Re-init FocusKeyManager after DOM updates\n setTimeout(() => this.initFocusKeyManager());\n }\n }\n\n protected onFilter(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n this.applyFilter(value);\n }\n\n protected onFilterClick(event: MouseEvent): void {\n event.stopPropagation();\n }\n\n protected shouldRenderChild(item: EdsMenuItem): boolean {\n return !!(item?.children && (item.expanded || (this.hasFilter() && item.filtered && this.isFilterActive())));\n }\n\n protected trackById(index: number, item: EdsMenuItem): string {\n return item.id || item.label || String(index);\n }\n\n private initFocusKeyManager(): void {\n const items = this.menuItems();\n if (items.length > 0) {\n this.focusKeyManager = new FocusKeyManager(items).withWrap();\n }\n }\n\n private applyFilter(value: string): void {\n const items = this.filterMenuItems(this.internalItems(), value);\n this.hasExpandIcon.set(!value);\n this.internalItems.set(items);\n }\n\n private isFilterActive(): boolean {\n return (this.filterInput()?.nativeElement?.value?.length ?? 0) > 0;\n }\n\n private filterMenuItems(items: EdsMenuItem[], filterValue: string): EdsMenuItem[] {\n return items?.map((item: EdsMenuItem) => {\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.some(child => child.filtered);\n } else {\n item.filtered = found;\n }\n return item;\n }) || [];\n }\n\n private configureItems(items: EdsMenuItem[], parent?: EdsMenuItem, expandAll?: boolean): EdsMenuItem[] {\n return items?.map((item) => {\n if (item.children) {\n item.children = this.configureItems(item.children, item, expandAll);\n if (expandAll && item.expanded === undefined) {\n item.expanded = true;\n }\n }\n if (parent) {\n item.parent = parent;\n }\n if (!item.id) {\n item.id = crypto.randomUUID();\n }\n if (item.label && this.hasCollapsedInitials()) {\n const words = item.label.split(' ');\n item.initials = words.length > 1\n ? `${words[0].charAt(0)}${words[1].charAt(0)}`\n : item.label.substring(0, 2);\n }\n item.visible = item.visible ?? true;\n item.filtered = item.filtered ?? true;\n return item;\n }) || [];\n }\n\n private findMostRelevantItem(url: string, items: EdsMenuItem[], relevantItem?: EdsMenuItem): EdsMenuItem | undefined {\n if (!items) {\n return undefined;\n }\n for (const item of items) {\n if (item.url && url.indexOf(item.url) > -1) {\n if (!relevantItem || url.replace(item.url, '').length < url.replace(relevantItem.url!, '').length) {\n relevantItem = item;\n }\n }\n if (item.children) {\n relevantItem = this.findMostRelevantItem(url, item.children, relevantItem);\n }\n }\n return relevantItem;\n }\n\n private expandToItem(item: EdsMenuItem): void {\n if (item.parent) {\n item.parent.expanded = true;\n this.expandToItem(item.parent);\n }\n }\n\n private scrollToItem(url: string): void {\n const item = this.findMostRelevantItem(url, this.internalItems());\n if (item) {\n this.expandToItem(item);\n this.internalItems.set([...this.internalItems()]);\n setTimeout(() => {\n const menuItemComp = this.menuItems()?.find(mi => mi.item()?.id === item.id);\n if (menuItemComp) {\n menuItemComp.scrollIntoView();\n }\n }, 300);\n }\n }\n}\n","@if (hasFilter()) {\n <div class=\"eds-menu-filter\" [class.eds-menu-filter--collapsed]=\"isCollapsed()\" (click)=\"onFilterClick($event)\">\n <div class=\"eds-menu-filter__input-wrapper\">\n <eds-icon class=\"eds-menu-filter__icon\" icon=\"magnifying-glass:core\" size=\"s\" />\n <input\n #filterInput\n class=\"eds-menu-filter__input\"\n type=\"text\"\n (input)=\"onFilter($event)\"\n [placeholder]=\"searchFilterLabel()\"\n [attr.aria-label]=\"searchFilterLabel()\"\n [value]=\"filterValue()\" />\n </div>\n </div>\n}\n\n<ul class=\"eds-menu__list\" role=\"tree\" aria-orientation=\"vertical\" tabindex=\"0\">\n @for (item of internalItems(); track trackById($index, item)) {\n <ng-container *ngTemplateOutlet=\"menuItemTpl; context: { $implicit: item }\"></ng-container>\n }\n</ul>\n\n<ng-template #menuItemTpl let-item>\n @if (item.visible && item.filtered) {\n <eds-menu-item\n [item]=\"item\"\n [hasIcon]=\"hasIcons()\"\n [hasIconLabel]=\"hasIconsLabels() || hasCollapsedLabels()\"\n [hasTooltip]=\"hasTooltip()\"\n [hasTooltipOnExpanded]=\"hasTooltipOnExpanded()\"\n [isCollapsed]=\"isCollapsed()\"\n [hasCollapsedInitials]=\"hasCollapsedInitials()\"\n [hasBoldRootLevel]=\"hasBoldRootLevel()\"\n [hasExpandIcon]=\"hasExpandIcon()\"\n (itemClick)=\"onItemClick($event)\"\n (expandToggle)=\"onExpandToggle($event)\">\n @if (shouldRenderChild(item)) {\n <ul class=\"eds-menu__list eds-menu__sublist\" role=\"group\" [attr.aria-label]=\"item.label\">\n @for (child of item.children; track trackById($index, child)) {\n <ng-container *ngTemplateOutlet=\"menuItemTpl; context: { $implicit: child }\"></ng-container>\n }\n </ul>\n }\n </eds-menu-item>\n }\n</ng-template>\n","import { EdsMenu } from './eds-menu';\nimport { EdsMenuItemComponent } from './eds-menu-item';\n\nexport { EdsMenu };\nexport { EdsMenuItemComponent };\nexport { EdsMenuItem } from './eds-menu-item.model';\n\n/** Convenience array for importing all eds-menu components. */\nexport const EDS_MENU = [EdsMenu, EdsMenuItemComponent] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -498,7 +498,7 @@ class EdsMultiselect {
|
|
|
498
498
|
useExisting: EdsMultiselect,
|
|
499
499
|
multi: true,
|
|
500
500
|
},
|
|
501
|
-
], queries: [{ propertyName: "options", predicate: EdsMultiselectOption, isSignal: true }], viewQueries: [{ propertyName: "dropdownTemplate", first: true, predicate: ["dropdownTemplate"], descendants: true, isSignal: true }, { propertyName: "triggerRef", first: true, predicate: ["triggerRef"], descendants: true, isSignal: true }], ngImport: i0, template: "<!-- Combobox trigger -->\n<div\n #triggerRef\n class=\"eds-multiselect__trigger\"\n role=\"combobox\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-controls]=\"isOpen() ? 'eds-multiselect-listbox' : null\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-activedescendant]=\"activeDescendantId()\"\n [attr.aria-disabled]=\"internalDisabled() || null\"\n [attr.tabindex]=\"internalDisabled() ? -1 : 0\"\n (click)=\"onTriggerClick()\"\n (keydown)=\"onTriggerKeydown($event)\"\n>\n <span\n class=\"eds-multiselect__display\"\n [class.eds-multiselect__display--placeholder]=\"isPlaceholderShown()\"\n >\n {{ displayValue() }}\n </span>\n <eds-icon\n class=\"eds-multiselect__caret\"\n [icon]=\"'caret-down'\"\n aria-hidden=\"true\"\n />\n</div>\n\n<!-- Dropdown panel (rendered in overlay) -->\n<ng-template #dropdownTemplate>\n <div class=\"eds-multiselect__panel-wrapper\" tabindex=\"-1\" cdkTrapFocus [cdkTrapFocusAutoCapture]=\"true\">\n <div\n class=\"eds-multiselect__panel\"\n id=\"eds-multiselect-listbox\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-activedescendant]=\"activeDescendantId()\"\n tabindex=\"0\"\n (keydown)=\"onPanelKeydown($event)\"\n >\n @for (option of options(); track option.value()) {\n <div\n class=\"eds-multiselect-option\"\n [class.eds-multiselect-option--selected]=\"option.selected()\"\n [class.eds-multiselect-option--active]=\"option.isActive()\"\n [class.eds-multiselect-option--disabled]=\"option.isDisabled()\"\n [attr.role]=\"'option'\"\n [attr.aria-selected]=\"option.selected()\"\n [attr.aria-disabled]=\"option.isDisabled() || null\"\n [id]=\"option.optionId()\"\n (click)=\"onOptionClick(option)\"\n >\n <eds-icon\n class=\"eds-multiselect-option__check\"\n [icon]=\"'check'\"\n edsSizeS\n aria-hidden=\"true\"\n />\n <span class=\"eds-multiselect-option__label\">{{ option.label() }}</span>\n </div>\n }\n </div>\n <div class=\"eds-multiselect__panel-footer\">\n <button\n type=\"button\"\n class=\"eds-multiselect__done-button\"\n (click)=\"onDoneClick()\"\n >\n Done\n </button>\n </div>\n </div>\n</ng-template>\n", styles: [".eui-21 :host.eds-multiselect{display:block;position:relative;width:100%}.eui-21 :host.eds-multiselect .eds-multiselect__trigger{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:center;gap:var(--eds-sp-xs);font:var(--eds-f-paragraph-m);appearance:none;background-color:var(--eds-c-surface-elevation);border:var(--eds-bw-xs) solid var(--eds-c-border-neutral);border-radius:var(--eds-br-s);box-shadow:none;color:var(--eds-c-foreground-default);min-height:var(--eds-si-3xl);padding:var(--eds-sp-xs) var(--eds-sp-s);width:100%;cursor:pointer;outline:none;transition:border-color .15s ease}.eui-21 :host.eds-multiselect .eds-multiselect__trigger:hover:not([aria-disabled=true]){border-color:var(--eds-c-border-primary)}.eui-21 :host.eds-multiselect .eds-multiselect__trigger:focus-visible:not([aria-disabled=true]){outline:2px solid var(--eds-c-border-primary);outline-offset:-2px}.eui-21 :host.eds-multiselect .eds-multiselect__display{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-21 :host.eds-multiselect .eds-multiselect__display--placeholder{color:var(--eds-c-foreground-subtler)}.eui-21 :host.eds-multiselect .eds-multiselect__caret{flex-shrink:0;font-size:20px;color:var(--eds-c-foreground-default);transition:transform .2s ease}.eui-21 :host.eds-multiselect.eds-multiselect--open .eds-multiselect__trigger{border-color:var(--eds-c-border-primary);outline:2px solid var(--eds-c-border-primary);outline-offset:-2px}.eui-21 :host.eds-multiselect.eds-multiselect--open .eds-multiselect__caret{transform:rotate(180deg)}.eui-21 :host.eds-multiselect.eds-multiselect--disabled .eds-multiselect__trigger{background-color:var(--eds-c-suface-disabled);border-color:var(--eds-c-border-disabled);color:var(--eds-c-foreground-subtler);cursor:not-allowed;pointer-events:none}.eui-21 :host.eds-multiselect.eds-multiselect--disabled .eds-multiselect__caret{color:var(--eds-c-foreground-subtler)}.eui-21 :host.eds-multiselect.eds-multiselect--invalid .eds-multiselect__trigger{border-color:var(--eds-c-border-critical)}.eui-21 :host.eds-multiselect.eds-multiselect--invalid .eds-multiselect__trigger:focus-visible{outline-color:var(--eds-c-border-critical)}.eds-multiselect__panel-wrapper{background-color:var(--eds-c-surface-elevation);border:var(--eds-bw-xs) solid var(--eds-c-border-neutral);border-radius:var(--eds-br-s);box-shadow:var(--eds-sh-1);display:flex;flex-direction:column;max-height:280px;min-width:100%;box-sizing:border-box;outline:none}.eds-multiselect__panel{flex:1;max-height:240px;overflow-y:auto;padding:var(--eds-sp-3xs) 0;outline:none}.eds-multiselect__panel .eds-multiselect-option{display:flex;align-items:center;gap:var(--eds-sp-s);padding:var(--eds-sp-xs) var(--eds-sp-s);cursor:pointer;font:var(--eds-f-paragraph-m);color:var(--eds-c-foreground-default);-webkit-user-select:none;user-select:none;transition:background-color .1s ease}.eds-multiselect__panel .eds-multiselect-option .eds-multiselect-option__label{flex:1}.eds-multiselect__panel .eds-multiselect-option .eds-multiselect-option__check{opacity:0;font-size:16px;color:var(--eds-c-foreground-primary);transition:opacity .1s ease}.eds-multiselect__panel .eds-multiselect-option:hover:not(.eds-multiselect-option--disabled){background-color:var(--eds-c-surface-hover)}.eds-multiselect__panel .eds-multiselect-option--active:not(.eds-multiselect-option--disabled){background-color:var(--eds-c-surface-hover);outline:var(--eds-bw-s) solid var(--eds-c-border-primary);outline-offset:-2px}.eds-multiselect__panel .eds-multiselect-option--selected .eds-multiselect-option__check{opacity:1}.eds-multiselect__panel .eds-multiselect-option--disabled{color:var(--eds-c-foreground-subtler);cursor:not-allowed;pointer-events:none}.eds-multiselect__panel-footer{display:flex;justify-content:flex-start;padding:var(--eds-sp-xs) var(--eds-sp-s);border-top:var(--eds-bw-xs) solid var(--eds-c-border-divider)}.eds-multiselect__done-button{font:var(--eds-f-label-m-
|
|
501
|
+
], queries: [{ propertyName: "options", predicate: EdsMultiselectOption, isSignal: true }], viewQueries: [{ propertyName: "dropdownTemplate", first: true, predicate: ["dropdownTemplate"], descendants: true, isSignal: true }, { propertyName: "triggerRef", first: true, predicate: ["triggerRef"], descendants: true, isSignal: true }], ngImport: i0, template: "<!-- Combobox trigger -->\n<div\n #triggerRef\n class=\"eds-multiselect__trigger\"\n role=\"combobox\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-controls]=\"isOpen() ? 'eds-multiselect-listbox' : null\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-activedescendant]=\"activeDescendantId()\"\n [attr.aria-disabled]=\"internalDisabled() || null\"\n [attr.tabindex]=\"internalDisabled() ? -1 : 0\"\n (click)=\"onTriggerClick()\"\n (keydown)=\"onTriggerKeydown($event)\"\n>\n <span\n class=\"eds-multiselect__display\"\n [class.eds-multiselect__display--placeholder]=\"isPlaceholderShown()\"\n >\n {{ displayValue() }}\n </span>\n <eds-icon\n class=\"eds-multiselect__caret\"\n [icon]=\"'caret-down'\"\n aria-hidden=\"true\"\n />\n</div>\n\n<!-- Dropdown panel (rendered in overlay) -->\n<ng-template #dropdownTemplate>\n <div class=\"eds-multiselect__panel-wrapper\" tabindex=\"-1\" cdkTrapFocus [cdkTrapFocusAutoCapture]=\"true\">\n <div\n class=\"eds-multiselect__panel\"\n id=\"eds-multiselect-listbox\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-activedescendant]=\"activeDescendantId()\"\n tabindex=\"0\"\n (keydown)=\"onPanelKeydown($event)\"\n >\n @for (option of options(); track option.value()) {\n <div\n class=\"eds-multiselect-option\"\n [class.eds-multiselect-option--selected]=\"option.selected()\"\n [class.eds-multiselect-option--active]=\"option.isActive()\"\n [class.eds-multiselect-option--disabled]=\"option.isDisabled()\"\n [attr.role]=\"'option'\"\n [attr.aria-selected]=\"option.selected()\"\n [attr.aria-disabled]=\"option.isDisabled() || null\"\n [id]=\"option.optionId()\"\n (click)=\"onOptionClick(option)\"\n >\n <eds-icon\n class=\"eds-multiselect-option__check\"\n [icon]=\"'check'\"\n edsSizeS\n aria-hidden=\"true\"\n />\n <span class=\"eds-multiselect-option__label\">{{ option.label() }}</span>\n </div>\n }\n </div>\n <div class=\"eds-multiselect__panel-footer\">\n <button\n type=\"button\"\n class=\"eds-multiselect__done-button\"\n (click)=\"onDoneClick()\"\n >\n Done\n </button>\n </div>\n </div>\n</ng-template>\n", styles: [".eui-21 :host.eds-multiselect{display:block;position:relative;width:100%}.eui-21 :host.eds-multiselect .eds-multiselect__trigger{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:center;gap:var(--eds-sp-xs);font:var(--eds-f-paragraph-m);appearance:none;background-color:var(--eds-c-surface-elevation);border:var(--eds-bw-xs) solid var(--eds-c-border-neutral);border-radius:var(--eds-br-s);box-shadow:none;color:var(--eds-c-foreground-default);min-height:var(--eds-si-3xl);padding:var(--eds-sp-xs) var(--eds-sp-s);width:100%;cursor:pointer;outline:none;transition:border-color .15s ease}.eui-21 :host.eds-multiselect .eds-multiselect__trigger:hover:not([aria-disabled=true]){border-color:var(--eds-c-border-primary)}.eui-21 :host.eds-multiselect .eds-multiselect__trigger:focus-visible:not([aria-disabled=true]){outline:2px solid var(--eds-c-border-primary);outline-offset:-2px}.eui-21 :host.eds-multiselect .eds-multiselect__display{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-21 :host.eds-multiselect .eds-multiselect__display--placeholder{color:var(--eds-c-foreground-subtler)}.eui-21 :host.eds-multiselect .eds-multiselect__caret{flex-shrink:0;font-size:20px;color:var(--eds-c-foreground-default);transition:transform .2s ease}.eui-21 :host.eds-multiselect.eds-multiselect--open .eds-multiselect__trigger{border-color:var(--eds-c-border-primary);outline:2px solid var(--eds-c-border-primary);outline-offset:-2px}.eui-21 :host.eds-multiselect.eds-multiselect--open .eds-multiselect__caret{transform:rotate(180deg)}.eui-21 :host.eds-multiselect.eds-multiselect--disabled .eds-multiselect__trigger{background-color:var(--eds-c-suface-disabled);border-color:var(--eds-c-border-disabled);color:var(--eds-c-foreground-subtler);cursor:not-allowed;pointer-events:none}.eui-21 :host.eds-multiselect.eds-multiselect--disabled .eds-multiselect__caret{color:var(--eds-c-foreground-subtler)}.eui-21 :host.eds-multiselect.eds-multiselect--invalid .eds-multiselect__trigger{border-color:var(--eds-c-border-critical)}.eui-21 :host.eds-multiselect.eds-multiselect--invalid .eds-multiselect__trigger:focus-visible{outline-color:var(--eds-c-border-critical)}.eds-multiselect__panel-wrapper{background-color:var(--eds-c-surface-elevation);border:var(--eds-bw-xs) solid var(--eds-c-border-neutral);border-radius:var(--eds-br-s);box-shadow:var(--eds-sh-1);display:flex;flex-direction:column;max-height:280px;min-width:100%;box-sizing:border-box;outline:none}.eds-multiselect__panel{flex:1;max-height:240px;overflow-y:auto;padding:var(--eds-sp-3xs) 0;outline:none}.eds-multiselect__panel .eds-multiselect-option{display:flex;align-items:center;gap:var(--eds-sp-s);padding:var(--eds-sp-xs) var(--eds-sp-s);cursor:pointer;font:var(--eds-f-paragraph-m);color:var(--eds-c-foreground-default);-webkit-user-select:none;user-select:none;transition:background-color .1s ease}.eds-multiselect__panel .eds-multiselect-option .eds-multiselect-option__label{flex:1}.eds-multiselect__panel .eds-multiselect-option .eds-multiselect-option__check{opacity:0;font-size:16px;color:var(--eds-c-foreground-primary);transition:opacity .1s ease}.eds-multiselect__panel .eds-multiselect-option:hover:not(.eds-multiselect-option--disabled){background-color:var(--eds-c-surface-hover)}.eds-multiselect__panel .eds-multiselect-option--active:not(.eds-multiselect-option--disabled){background-color:var(--eds-c-surface-hover);outline:var(--eds-bw-s) solid var(--eds-c-border-primary);outline-offset:-2px}.eds-multiselect__panel .eds-multiselect-option--selected .eds-multiselect-option__check{opacity:1}.eds-multiselect__panel .eds-multiselect-option--disabled{color:var(--eds-c-foreground-subtler);cursor:not-allowed;pointer-events:none}.eds-multiselect__panel-footer{display:flex;justify-content:flex-start;padding:var(--eds-sp-xs) var(--eds-sp-s);border-top:var(--eds-bw-xs) solid var(--eds-c-border-divider)}.eds-multiselect__done-button{font:var(--eds-f-label-m-semibold);color:var(--eds-c-foreground-primary);background:none;border:none;cursor:pointer;padding:var(--eds-sp-3xs) var(--eds-sp-s);border-radius:var(--eds-br-s);transition:background-color .1s ease}.eds-multiselect__done-button:hover{background-color:var(--eds-c-surface-hover)}.eds-multiselect__done-button:focus-visible{outline:2px solid var(--eds-c-border-primary);outline-offset:-2px}\n"], dependencies: [{ kind: "ngmodule", type: OverlayModule }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i1$1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: i1.EdsIcon, selector: "eds-icon, span[edsIcon]", inputs: ["icon", "set", "color", "size", "ariaLabel", "ariaHidden", "rounded", "isLoading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
502
502
|
}
|
|
503
503
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EdsMultiselect, decorators: [{
|
|
504
504
|
type: Component,
|
|
@@ -511,7 +511,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImpor
|
|
|
511
511
|
], host: {
|
|
512
512
|
'[class]': 'hostClasses()',
|
|
513
513
|
'[attr.data-e2e]': 'e2eAttr()',
|
|
514
|
-
}, template: "<!-- Combobox trigger -->\n<div\n #triggerRef\n class=\"eds-multiselect__trigger\"\n role=\"combobox\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-controls]=\"isOpen() ? 'eds-multiselect-listbox' : null\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-activedescendant]=\"activeDescendantId()\"\n [attr.aria-disabled]=\"internalDisabled() || null\"\n [attr.tabindex]=\"internalDisabled() ? -1 : 0\"\n (click)=\"onTriggerClick()\"\n (keydown)=\"onTriggerKeydown($event)\"\n>\n <span\n class=\"eds-multiselect__display\"\n [class.eds-multiselect__display--placeholder]=\"isPlaceholderShown()\"\n >\n {{ displayValue() }}\n </span>\n <eds-icon\n class=\"eds-multiselect__caret\"\n [icon]=\"'caret-down'\"\n aria-hidden=\"true\"\n />\n</div>\n\n<!-- Dropdown panel (rendered in overlay) -->\n<ng-template #dropdownTemplate>\n <div class=\"eds-multiselect__panel-wrapper\" tabindex=\"-1\" cdkTrapFocus [cdkTrapFocusAutoCapture]=\"true\">\n <div\n class=\"eds-multiselect__panel\"\n id=\"eds-multiselect-listbox\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-activedescendant]=\"activeDescendantId()\"\n tabindex=\"0\"\n (keydown)=\"onPanelKeydown($event)\"\n >\n @for (option of options(); track option.value()) {\n <div\n class=\"eds-multiselect-option\"\n [class.eds-multiselect-option--selected]=\"option.selected()\"\n [class.eds-multiselect-option--active]=\"option.isActive()\"\n [class.eds-multiselect-option--disabled]=\"option.isDisabled()\"\n [attr.role]=\"'option'\"\n [attr.aria-selected]=\"option.selected()\"\n [attr.aria-disabled]=\"option.isDisabled() || null\"\n [id]=\"option.optionId()\"\n (click)=\"onOptionClick(option)\"\n >\n <eds-icon\n class=\"eds-multiselect-option__check\"\n [icon]=\"'check'\"\n edsSizeS\n aria-hidden=\"true\"\n />\n <span class=\"eds-multiselect-option__label\">{{ option.label() }}</span>\n </div>\n }\n </div>\n <div class=\"eds-multiselect__panel-footer\">\n <button\n type=\"button\"\n class=\"eds-multiselect__done-button\"\n (click)=\"onDoneClick()\"\n >\n Done\n </button>\n </div>\n </div>\n</ng-template>\n", styles: [".eui-21 :host.eds-multiselect{display:block;position:relative;width:100%}.eui-21 :host.eds-multiselect .eds-multiselect__trigger{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:center;gap:var(--eds-sp-xs);font:var(--eds-f-paragraph-m);appearance:none;background-color:var(--eds-c-surface-elevation);border:var(--eds-bw-xs) solid var(--eds-c-border-neutral);border-radius:var(--eds-br-s);box-shadow:none;color:var(--eds-c-foreground-default);min-height:var(--eds-si-3xl);padding:var(--eds-sp-xs) var(--eds-sp-s);width:100%;cursor:pointer;outline:none;transition:border-color .15s ease}.eui-21 :host.eds-multiselect .eds-multiselect__trigger:hover:not([aria-disabled=true]){border-color:var(--eds-c-border-primary)}.eui-21 :host.eds-multiselect .eds-multiselect__trigger:focus-visible:not([aria-disabled=true]){outline:2px solid var(--eds-c-border-primary);outline-offset:-2px}.eui-21 :host.eds-multiselect .eds-multiselect__display{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-21 :host.eds-multiselect .eds-multiselect__display--placeholder{color:var(--eds-c-foreground-subtler)}.eui-21 :host.eds-multiselect .eds-multiselect__caret{flex-shrink:0;font-size:20px;color:var(--eds-c-foreground-default);transition:transform .2s ease}.eui-21 :host.eds-multiselect.eds-multiselect--open .eds-multiselect__trigger{border-color:var(--eds-c-border-primary);outline:2px solid var(--eds-c-border-primary);outline-offset:-2px}.eui-21 :host.eds-multiselect.eds-multiselect--open .eds-multiselect__caret{transform:rotate(180deg)}.eui-21 :host.eds-multiselect.eds-multiselect--disabled .eds-multiselect__trigger{background-color:var(--eds-c-suface-disabled);border-color:var(--eds-c-border-disabled);color:var(--eds-c-foreground-subtler);cursor:not-allowed;pointer-events:none}.eui-21 :host.eds-multiselect.eds-multiselect--disabled .eds-multiselect__caret{color:var(--eds-c-foreground-subtler)}.eui-21 :host.eds-multiselect.eds-multiselect--invalid .eds-multiselect__trigger{border-color:var(--eds-c-border-critical)}.eui-21 :host.eds-multiselect.eds-multiselect--invalid .eds-multiselect__trigger:focus-visible{outline-color:var(--eds-c-border-critical)}.eds-multiselect__panel-wrapper{background-color:var(--eds-c-surface-elevation);border:var(--eds-bw-xs) solid var(--eds-c-border-neutral);border-radius:var(--eds-br-s);box-shadow:var(--eds-sh-1);display:flex;flex-direction:column;max-height:280px;min-width:100%;box-sizing:border-box;outline:none}.eds-multiselect__panel{flex:1;max-height:240px;overflow-y:auto;padding:var(--eds-sp-3xs) 0;outline:none}.eds-multiselect__panel .eds-multiselect-option{display:flex;align-items:center;gap:var(--eds-sp-s);padding:var(--eds-sp-xs) var(--eds-sp-s);cursor:pointer;font:var(--eds-f-paragraph-m);color:var(--eds-c-foreground-default);-webkit-user-select:none;user-select:none;transition:background-color .1s ease}.eds-multiselect__panel .eds-multiselect-option .eds-multiselect-option__label{flex:1}.eds-multiselect__panel .eds-multiselect-option .eds-multiselect-option__check{opacity:0;font-size:16px;color:var(--eds-c-foreground-primary);transition:opacity .1s ease}.eds-multiselect__panel .eds-multiselect-option:hover:not(.eds-multiselect-option--disabled){background-color:var(--eds-c-surface-hover)}.eds-multiselect__panel .eds-multiselect-option--active:not(.eds-multiselect-option--disabled){background-color:var(--eds-c-surface-hover);outline:var(--eds-bw-s) solid var(--eds-c-border-primary);outline-offset:-2px}.eds-multiselect__panel .eds-multiselect-option--selected .eds-multiselect-option__check{opacity:1}.eds-multiselect__panel .eds-multiselect-option--disabled{color:var(--eds-c-foreground-subtler);cursor:not-allowed;pointer-events:none}.eds-multiselect__panel-footer{display:flex;justify-content:flex-start;padding:var(--eds-sp-xs) var(--eds-sp-s);border-top:var(--eds-bw-xs) solid var(--eds-c-border-divider)}.eds-multiselect__done-button{font:var(--eds-f-label-m-
|
|
514
|
+
}, template: "<!-- Combobox trigger -->\n<div\n #triggerRef\n class=\"eds-multiselect__trigger\"\n role=\"combobox\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-controls]=\"isOpen() ? 'eds-multiselect-listbox' : null\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-activedescendant]=\"activeDescendantId()\"\n [attr.aria-disabled]=\"internalDisabled() || null\"\n [attr.tabindex]=\"internalDisabled() ? -1 : 0\"\n (click)=\"onTriggerClick()\"\n (keydown)=\"onTriggerKeydown($event)\"\n>\n <span\n class=\"eds-multiselect__display\"\n [class.eds-multiselect__display--placeholder]=\"isPlaceholderShown()\"\n >\n {{ displayValue() }}\n </span>\n <eds-icon\n class=\"eds-multiselect__caret\"\n [icon]=\"'caret-down'\"\n aria-hidden=\"true\"\n />\n</div>\n\n<!-- Dropdown panel (rendered in overlay) -->\n<ng-template #dropdownTemplate>\n <div class=\"eds-multiselect__panel-wrapper\" tabindex=\"-1\" cdkTrapFocus [cdkTrapFocusAutoCapture]=\"true\">\n <div\n class=\"eds-multiselect__panel\"\n id=\"eds-multiselect-listbox\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-activedescendant]=\"activeDescendantId()\"\n tabindex=\"0\"\n (keydown)=\"onPanelKeydown($event)\"\n >\n @for (option of options(); track option.value()) {\n <div\n class=\"eds-multiselect-option\"\n [class.eds-multiselect-option--selected]=\"option.selected()\"\n [class.eds-multiselect-option--active]=\"option.isActive()\"\n [class.eds-multiselect-option--disabled]=\"option.isDisabled()\"\n [attr.role]=\"'option'\"\n [attr.aria-selected]=\"option.selected()\"\n [attr.aria-disabled]=\"option.isDisabled() || null\"\n [id]=\"option.optionId()\"\n (click)=\"onOptionClick(option)\"\n >\n <eds-icon\n class=\"eds-multiselect-option__check\"\n [icon]=\"'check'\"\n edsSizeS\n aria-hidden=\"true\"\n />\n <span class=\"eds-multiselect-option__label\">{{ option.label() }}</span>\n </div>\n }\n </div>\n <div class=\"eds-multiselect__panel-footer\">\n <button\n type=\"button\"\n class=\"eds-multiselect__done-button\"\n (click)=\"onDoneClick()\"\n >\n Done\n </button>\n </div>\n </div>\n</ng-template>\n", styles: [".eui-21 :host.eds-multiselect{display:block;position:relative;width:100%}.eui-21 :host.eds-multiselect .eds-multiselect__trigger{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:center;gap:var(--eds-sp-xs);font:var(--eds-f-paragraph-m);appearance:none;background-color:var(--eds-c-surface-elevation);border:var(--eds-bw-xs) solid var(--eds-c-border-neutral);border-radius:var(--eds-br-s);box-shadow:none;color:var(--eds-c-foreground-default);min-height:var(--eds-si-3xl);padding:var(--eds-sp-xs) var(--eds-sp-s);width:100%;cursor:pointer;outline:none;transition:border-color .15s ease}.eui-21 :host.eds-multiselect .eds-multiselect__trigger:hover:not([aria-disabled=true]){border-color:var(--eds-c-border-primary)}.eui-21 :host.eds-multiselect .eds-multiselect__trigger:focus-visible:not([aria-disabled=true]){outline:2px solid var(--eds-c-border-primary);outline-offset:-2px}.eui-21 :host.eds-multiselect .eds-multiselect__display{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-21 :host.eds-multiselect .eds-multiselect__display--placeholder{color:var(--eds-c-foreground-subtler)}.eui-21 :host.eds-multiselect .eds-multiselect__caret{flex-shrink:0;font-size:20px;color:var(--eds-c-foreground-default);transition:transform .2s ease}.eui-21 :host.eds-multiselect.eds-multiselect--open .eds-multiselect__trigger{border-color:var(--eds-c-border-primary);outline:2px solid var(--eds-c-border-primary);outline-offset:-2px}.eui-21 :host.eds-multiselect.eds-multiselect--open .eds-multiselect__caret{transform:rotate(180deg)}.eui-21 :host.eds-multiselect.eds-multiselect--disabled .eds-multiselect__trigger{background-color:var(--eds-c-suface-disabled);border-color:var(--eds-c-border-disabled);color:var(--eds-c-foreground-subtler);cursor:not-allowed;pointer-events:none}.eui-21 :host.eds-multiselect.eds-multiselect--disabled .eds-multiselect__caret{color:var(--eds-c-foreground-subtler)}.eui-21 :host.eds-multiselect.eds-multiselect--invalid .eds-multiselect__trigger{border-color:var(--eds-c-border-critical)}.eui-21 :host.eds-multiselect.eds-multiselect--invalid .eds-multiselect__trigger:focus-visible{outline-color:var(--eds-c-border-critical)}.eds-multiselect__panel-wrapper{background-color:var(--eds-c-surface-elevation);border:var(--eds-bw-xs) solid var(--eds-c-border-neutral);border-radius:var(--eds-br-s);box-shadow:var(--eds-sh-1);display:flex;flex-direction:column;max-height:280px;min-width:100%;box-sizing:border-box;outline:none}.eds-multiselect__panel{flex:1;max-height:240px;overflow-y:auto;padding:var(--eds-sp-3xs) 0;outline:none}.eds-multiselect__panel .eds-multiselect-option{display:flex;align-items:center;gap:var(--eds-sp-s);padding:var(--eds-sp-xs) var(--eds-sp-s);cursor:pointer;font:var(--eds-f-paragraph-m);color:var(--eds-c-foreground-default);-webkit-user-select:none;user-select:none;transition:background-color .1s ease}.eds-multiselect__panel .eds-multiselect-option .eds-multiselect-option__label{flex:1}.eds-multiselect__panel .eds-multiselect-option .eds-multiselect-option__check{opacity:0;font-size:16px;color:var(--eds-c-foreground-primary);transition:opacity .1s ease}.eds-multiselect__panel .eds-multiselect-option:hover:not(.eds-multiselect-option--disabled){background-color:var(--eds-c-surface-hover)}.eds-multiselect__panel .eds-multiselect-option--active:not(.eds-multiselect-option--disabled){background-color:var(--eds-c-surface-hover);outline:var(--eds-bw-s) solid var(--eds-c-border-primary);outline-offset:-2px}.eds-multiselect__panel .eds-multiselect-option--selected .eds-multiselect-option__check{opacity:1}.eds-multiselect__panel .eds-multiselect-option--disabled{color:var(--eds-c-foreground-subtler);cursor:not-allowed;pointer-events:none}.eds-multiselect__panel-footer{display:flex;justify-content:flex-start;padding:var(--eds-sp-xs) var(--eds-sp-s);border-top:var(--eds-bw-xs) solid var(--eds-c-border-divider)}.eds-multiselect__done-button{font:var(--eds-f-label-m-semibold);color:var(--eds-c-foreground-primary);background:none;border:none;cursor:pointer;padding:var(--eds-sp-3xs) var(--eds-sp-s);border-radius:var(--eds-br-s);transition:background-color .1s ease}.eds-multiselect__done-button:hover{background-color:var(--eds-c-surface-hover)}.eds-multiselect__done-button:focus-visible{outline:2px solid var(--eds-c-border-primary);outline-offset:-2px}\n"] }]
|
|
515
515
|
}], ctorParameters: () => [], propDecorators: { e2eAttr: [{ type: i0.Input, args: [{ isSignal: true, alias: "e2eAttr", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], isInvalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "isInvalid", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }], options: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => EdsMultiselectOption), { isSignal: true }] }], dropdownTemplate: [{ type: i0.ViewChild, args: ['dropdownTemplate', { isSignal: true }] }], triggerRef: [{ type: i0.ViewChild, args: ['triggerRef', { isSignal: true }] }] } });
|
|
516
516
|
|
|
517
517
|
/** Convenience array for importing all eds-multiselect components. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-eds-eds-multiselect.mjs","sources":["../../eds-multiselect/eds-multiselect-option.ts","../../eds-multiselect/eds-multiselect.ts","../../eds-multiselect/eds-multiselect.html","../../eds-multiselect/index.ts","../../eds-multiselect/eui-eds-eds-multiselect.ts"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n input,\n signal,\n computed,\n booleanAttribute,\n ElementRef,\n inject,\n} from '@angular/core';\nimport { Highlightable } from '@angular/cdk/a11y';\nimport { EDS_ICON } from '@eui/eds/eds-icon';\n\n/**\n * @description\n * An individual option within the EDS Multiselect dropdown.\n * Supports selection state, disabled state, and keyboard navigation via CDK ActiveDescendantKeyManager.\n *\n * @usageNotes\n * ```html\n * <eds-multiselect-option value=\"opt1\" label=\"Option 1\" />\n * ```\n */\n@Component({\n selector: 'eds-multiselect-option',\n template: `\n <span class=\"eds-multiselect-option__label\">{{ label() }}</span>\n <eds-icon\n class=\"eds-multiselect-option__check\"\n [icon]=\"'check'\"\n aria-hidden=\"true\"\n />\n `,\n styleUrl: './eds-multiselect-option.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [...EDS_ICON],\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': '\"option\"',\n '[attr.aria-selected]': 'selected()',\n '[attr.aria-disabled]': 'isDisabled() || null',\n '[attr.data-e2e]': '\"eds-multiselect-option\"',\n '[id]': 'optionId()',\n '(click)': 'onSelect()',\n },\n})\nexport class EdsMultiselectOption implements Highlightable {\n /**\n * The value associated with this option.\n */\n value = input.required<string>();\n\n /**\n * The display label for this option.\n */\n label = input.required<string>();\n\n /**\n * Whether this option is disabled.\n * @default false\n */\n isDisabled = input(false, { transform: booleanAttribute });\n\n /**\n * Required by Highlightable interface — reads the signal value.\n */\n get disabled(): boolean {\n return this.isDisabled();\n }\n\n /** Whether this option is currently selected. */\n selected = signal(false);\n\n /** Whether this option is the active descendant (highlighted via keyboard). */\n isActive = signal(false);\n\n /** Unique ID for the option element (used for aria-activedescendant). */\n optionId = computed(() => `eds-multiselect-option-${this.value()}`);\n\n readonly elementRef = inject(ElementRef);\n\n hostClasses = computed(() => {\n return [\n 'eds-multiselect-option',\n this.selected() ? 'eds-multiselect-option--selected' : '',\n this.isActive() ? 'eds-multiselect-option--active' : '',\n this.isDisabled() ? 'eds-multiselect-option--disabled' : '',\n ].join(' ').trim();\n });\n\n // --- Highlightable interface ---\n\n setActiveStyles(): void {\n this.isActive.set(true);\n }\n\n setInactiveStyles(): void {\n this.isActive.set(false);\n }\n\n // --- Interaction ---\n\n onSelect(): void {\n if (!this.isDisabled()) {\n this.selected.set(!this.selected());\n }\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n signal,\n computed,\n contentChildren,\n viewChild,\n ElementRef,\n TemplateRef,\n ViewContainerRef,\n inject,\n booleanAttribute,\n effect,\n OnDestroy,\n AfterContentInit,\n DestroyRef,\n} from '@angular/core';\n/* eslint-disable @typescript-eslint/member-ordering */\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n Overlay,\n OverlayRef,\n OverlayModule,\n FlexibleConnectedPositionStrategy,\n ConnectionPositionPair,\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { EDS_ICON } from '@eui/eds/eds-icon';\n\nimport { EdsMultiselectOption } from './eds-multiselect-option';\n\n/**\n * @description\n * EDS Multiselect component — a combobox-style dropdown that allows multiple selections.\n * Implements the WAI-ARIA multiselect listbox pattern with full keyboard navigation.\n * Styled to match eds-input-text default/hover/focus/disabled states.\n *\n * Integrates with Angular Reactive Forms and Template-driven Forms via ControlValueAccessor.\n *\n * @usageNotes\n * ### Basic usage\n * ```html\n * <eds-multiselect placeholder=\"Select labels\" [(value)]=\"selectedLabels\">\n * <eds-multiselect-option value=\"important\" label=\"Important\" />\n * <eds-multiselect-option value=\"starred\" label=\"Starred\" />\n * <eds-multiselect-option value=\"work\" label=\"Work\" />\n * </eds-multiselect>\n * ```\n *\n * ### With Reactive Forms\n * ```html\n * <eds-multiselect placeholder=\"Select options\" [formControl]=\"myControl\">\n * <eds-multiselect-option value=\"a\" label=\"Option A\" />\n * <eds-multiselect-option value=\"b\" label=\"Option B\" />\n * </eds-multiselect>\n * ```\n *\n * ### Accessibility\n * - Implements ARIA combobox pattern with `role=\"combobox\"` on the trigger\n * - Listbox popup uses `role=\"listbox\"` with `aria-multiselectable=\"true\"`\n * - Arrow keys navigate options, Space toggles selection, Escape closes\n * - Active descendant pattern for screen reader announcements\n */\n@Component({\n selector: 'eds-multiselect',\n templateUrl: './eds-multiselect.html',\n styleUrl: './eds-multiselect.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [OverlayModule, A11yModule, ...EDS_ICON],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: EdsMultiselect,\n multi: true,\n },\n ],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-e2e]': 'e2eAttr()',\n },\n})\nexport class EdsMultiselect implements ControlValueAccessor, OnDestroy, AfterContentInit {\n /**\n * Data attribute value for end-to-end testing identification.\n * @default 'eds-multiselect'\n */\n e2eAttr = input('eds-multiselect');\n\n /**\n * Placeholder text displayed when no options are selected.\n * @default 'Select options'\n */\n placeholder = input('Select options');\n\n /**\n * Controls whether the multiselect is disabled.\n * @default false\n */\n disabled = input(false, { transform: booleanAttribute });\n\n /**\n * Controls whether the multiselect shows an invalid/error state.\n * @default false\n */\n isInvalid = input(false, { transform: booleanAttribute });\n\n /**\n * Aria-label for the combobox trigger.\n * @default 'Select options'\n */\n ariaLabel = input('Select options');\n\n /**\n * Emits the current selection whenever it changes.\n */\n valueChange = output<string[]>();\n\n /** The projected option components. */\n readonly options = contentChildren(EdsMultiselectOption);\n\n /** Reference to the dropdown template for the overlay. */\n readonly dropdownTemplate = viewChild<TemplateRef<unknown>>('dropdownTemplate');\n\n /** Reference to the trigger element. */\n readonly triggerRef = viewChild<ElementRef<HTMLElement>>('triggerRef');\n\n /** Whether the dropdown popup is open. */\n isOpen = signal(false);\n\n /** Internal selected values. */\n protected internalValue = signal<string[]>([]);\n\n /** Internal disabled state (supports CVA setDisabledState). */\n protected internalDisabled = signal(false);\n\n /** Internal invalid state. */\n protected internalInvalid = signal(false);\n\n /** The display value shown in the trigger. */\n protected displayValue = computed(() => {\n const selected = this.internalValue();\n if (selected.length === 0) {\n return this.placeholder();\n }\n const opts = this.options();\n const firstLabel = opts.find(o => o.value() === selected[0])?.label() ?? selected[0];\n if (selected.length === 1) {\n return firstLabel;\n }\n return `${firstLabel} + ${selected.length - 1} more`;\n });\n\n /** Whether the placeholder is shown (no selection). */\n protected isPlaceholderShown = computed(() => this.internalValue().length === 0);\n\n /** The active descendant ID for screen readers. */\n protected activeDescendantId = signal<string | null>(null);\n\n hostClasses = computed(() => {\n return [\n 'eds-multiselect',\n this.internalDisabled() ? 'eds-multiselect--disabled' : '',\n this.internalInvalid() ? 'eds-multiselect--invalid' : '',\n this.isOpen() ? 'eds-multiselect--open' : '',\n ].join(' ').trim();\n });\n\n private overlay = inject(Overlay);\n private viewContainerRef = inject(ViewContainerRef);\n private destroyRef = inject(DestroyRef);\n private overlayRef: OverlayRef | null = null;\n private templatePortal: TemplatePortal | null = null;\n private keyManager: ActiveDescendantKeyManager<EdsMultiselectOption> | null = null;\n\n constructor() {\n // Sync disabled input → internal state\n effect(() => {\n this.internalDisabled.set(this.disabled());\n });\n\n // Sync isInvalid input → internal state\n effect(() => {\n this.internalInvalid.set(this.isInvalid());\n });\n }\n\n private _onChange: (value: string[]) => void = () => { /* noop */ };\n private _onTouched: () => void = () => { /* noop */ };\n\n ngAfterContentInit(): void {\n // Sync option selected states from internalValue whenever options change\n this.syncOptionsFromValue();\n }\n\n ngOnDestroy(): void {\n this.closeDropdown();\n this.overlayRef?.dispose();\n this.overlayRef = null;\n }\n\n // --- ControlValueAccessor ---\n\n writeValue(value: string[]): void {\n this.internalValue.set(value ?? []);\n this.syncOptionsFromValue();\n }\n\n registerOnChange(fn: (value: string[]) => void): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.internalDisabled.set(isDisabled);\n }\n\n // --- Trigger interactions ---\n\n protected onTriggerClick(): void {\n if (this.internalDisabled()) {\n return;\n }\n if (this.isOpen()) {\n this.closeDropdown();\n } else {\n this.openDropdown();\n }\n }\n\n protected onTriggerKeydown(event: KeyboardEvent): void {\n if (this.internalDisabled()) {\n return;\n }\n\n switch (event.key) {\n case 'Enter':\n case ' ':\n event.preventDefault();\n if (!this.isOpen()) {\n this.openDropdown();\n }\n break;\n case 'ArrowDown':\n event.preventDefault();\n if (!this.isOpen()) {\n this.openDropdown();\n }\n break;\n case 'ArrowUp':\n event.preventDefault();\n if (!this.isOpen()) {\n this.openDropdown();\n }\n break;\n case 'Escape':\n event.preventDefault();\n if (this.isOpen()) {\n this.closeDropdown();\n }\n break;\n }\n }\n\n protected onOptionClick(option: EdsMultiselectOption): void {\n if (option.isDisabled()) {\n return;\n }\n option.onSelect();\n this.syncValueFromOptions();\n this.keyManager?.setActiveItem(option);\n this.updateActiveDescendant();\n }\n\n protected onDoneClick(): void {\n this.closeDropdown();\n }\n\n protected onPanelKeydown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.keyManager?.setNextItemActive();\n this.updateActiveDescendant();\n this.scrollActiveOptionIntoView();\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.keyManager?.setPreviousItemActive();\n this.updateActiveDescendant();\n this.scrollActiveOptionIntoView();\n break;\n case 'Home':\n event.preventDefault();\n this.keyManager?.setFirstItemActive();\n this.updateActiveDescendant();\n this.scrollActiveOptionIntoView();\n break;\n case 'End':\n event.preventDefault();\n this.keyManager?.setLastItemActive();\n this.updateActiveDescendant();\n this.scrollActiveOptionIntoView();\n break;\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.toggleActiveOption();\n break;\n case 'Escape':\n event.preventDefault();\n this.closeDropdown();\n break;\n default:\n // Type-ahead: single printable character moves focus to next matching option\n if (event.key.length === 1 && !event.ctrlKey && !event.altKey && !event.metaKey) {\n this.handleTypeAhead(event.key);\n }\n break;\n }\n }\n\n // --- Dropdown management (private) ---\n\n private openDropdown(): void {\n if (this.isOpen() || !this.dropdownTemplate()) {\n return;\n }\n\n const triggerEl = this.triggerRef()?.nativeElement;\n if (!triggerEl) {\n return;\n }\n\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(triggerEl)\n .withPositions([\n new ConnectionPositionPair(\n { originX: 'start', originY: 'bottom' },\n { overlayX: 'start', overlayY: 'top' },\n ),\n new ConnectionPositionPair(\n { originX: 'start', originY: 'top' },\n { overlayX: 'start', overlayY: 'bottom' },\n ),\n ])\n .withFlexibleDimensions(false)\n .withPush(true);\n\n const scrollStrategy = this.overlay.scrollStrategies.reposition();\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n scrollStrategy,\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n width: triggerEl.offsetWidth,\n disposeOnNavigation: true,\n });\n\n this.templatePortal = new TemplatePortal(this.dropdownTemplate(), this.viewContainerRef);\n this.overlayRef.attach(this.templatePortal);\n\n // Focus the panel wrapper so keyboard events are captured\n const panelEl = this.overlayRef.overlayElement.querySelector<HTMLElement>('.eds-multiselect__panel-wrapper');\n panelEl?.focus();\n\n this.overlayRef.backdropClick()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.closeDropdown());\n\n this.overlayRef.keydownEvents()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => {\n if (event.key === 'Escape') {\n event.preventDefault();\n this.closeDropdown();\n }\n });\n\n // Setup key manager\n const opts = this.options();\n if (opts.length > 0) {\n // Reset all active states from previous opening\n opts.forEach(o => o.setInactiveStyles());\n\n this.keyManager = new ActiveDescendantKeyManager(opts as unknown as EdsMultiselectOption[])\n .withVerticalOrientation(true)\n .withHomeAndEnd(true)\n .withWrap();\n\n // APG: If options are selected, focus first selected option; otherwise first option\n const firstSelectedIndex = opts.findIndex(o => o.selected());\n if (firstSelectedIndex >= 0) {\n this.keyManager.setActiveItem(firstSelectedIndex);\n } else {\n this.keyManager.setFirstItemActive();\n }\n this.updateActiveDescendant();\n }\n\n this.isOpen.set(true);\n }\n\n private closeDropdown(): void {\n if (!this.isOpen()) {\n return;\n }\n // Clear active styles on all options\n this.options().forEach(o => o.setInactiveStyles());\n\n this.overlayRef?.detach();\n this.overlayRef?.dispose();\n this.overlayRef = null;\n this.templatePortal = null;\n this.keyManager = null;\n this.activeDescendantId.set(null);\n this.isOpen.set(false);\n this._onTouched();\n this.triggerRef()?.nativeElement?.focus();\n }\n\n private toggleActiveOption(): void {\n const active = this.keyManager?.activeItem;\n if (active && !active.isDisabled()) {\n active.onSelect();\n this.syncValueFromOptions();\n }\n }\n\n private handleTypeAhead(char: string): void {\n const opts = this.options();\n const activeIndex = this.keyManager?.activeItemIndex ?? 0;\n const lowerChar = char.toLowerCase();\n\n // Search from after the active item, then wrap around\n for (let i = 1; i <= opts.length; i++) {\n const index = (activeIndex + i) % opts.length;\n const option = opts[index];\n if (!option.isDisabled() && option.label().toLowerCase().startsWith(lowerChar)) {\n this.keyManager?.setActiveItem(index);\n this.updateActiveDescendant();\n this.scrollActiveOptionIntoView();\n break;\n }\n }\n }\n\n private scrollActiveOptionIntoView(): void {\n const activeId = this.activeDescendantId();\n if (!activeId || !this.overlayRef) {\n return;\n }\n const activeEl = this.overlayRef.overlayElement.querySelector<HTMLElement>(`#${activeId}`);\n if (activeEl && typeof activeEl.scrollIntoView === 'function') {\n activeEl.scrollIntoView({ block: 'nearest' });\n }\n }\n\n private updateActiveDescendant(): void {\n const active = this.keyManager?.activeItem;\n this.activeDescendantId.set(active ? active.optionId() : null);\n }\n\n private syncValueFromOptions(): void {\n const selectedValues = this.options()\n .filter(o => o.selected())\n .map(o => o.value());\n this.internalValue.set(selectedValues);\n this._onChange(selectedValues);\n this.valueChange.emit(selectedValues);\n }\n\n private syncOptionsFromValue(): void {\n const currentValue = this.internalValue();\n this.options().forEach(option => {\n option.selected.set(currentValue.includes(option.value()));\n });\n }\n}\n","<!-- Combobox trigger -->\n<div\n #triggerRef\n class=\"eds-multiselect__trigger\"\n role=\"combobox\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-controls]=\"isOpen() ? 'eds-multiselect-listbox' : null\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-activedescendant]=\"activeDescendantId()\"\n [attr.aria-disabled]=\"internalDisabled() || null\"\n [attr.tabindex]=\"internalDisabled() ? -1 : 0\"\n (click)=\"onTriggerClick()\"\n (keydown)=\"onTriggerKeydown($event)\"\n>\n <span\n class=\"eds-multiselect__display\"\n [class.eds-multiselect__display--placeholder]=\"isPlaceholderShown()\"\n >\n {{ displayValue() }}\n </span>\n <eds-icon\n class=\"eds-multiselect__caret\"\n [icon]=\"'caret-down'\"\n aria-hidden=\"true\"\n />\n</div>\n\n<!-- Dropdown panel (rendered in overlay) -->\n<ng-template #dropdownTemplate>\n <div class=\"eds-multiselect__panel-wrapper\" tabindex=\"-1\" cdkTrapFocus [cdkTrapFocusAutoCapture]=\"true\">\n <div\n class=\"eds-multiselect__panel\"\n id=\"eds-multiselect-listbox\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-activedescendant]=\"activeDescendantId()\"\n tabindex=\"0\"\n (keydown)=\"onPanelKeydown($event)\"\n >\n @for (option of options(); track option.value()) {\n <div\n class=\"eds-multiselect-option\"\n [class.eds-multiselect-option--selected]=\"option.selected()\"\n [class.eds-multiselect-option--active]=\"option.isActive()\"\n [class.eds-multiselect-option--disabled]=\"option.isDisabled()\"\n [attr.role]=\"'option'\"\n [attr.aria-selected]=\"option.selected()\"\n [attr.aria-disabled]=\"option.isDisabled() || null\"\n [id]=\"option.optionId()\"\n (click)=\"onOptionClick(option)\"\n >\n <eds-icon\n class=\"eds-multiselect-option__check\"\n [icon]=\"'check'\"\n edsSizeS\n aria-hidden=\"true\"\n />\n <span class=\"eds-multiselect-option__label\">{{ option.label() }}</span>\n </div>\n }\n </div>\n <div class=\"eds-multiselect__panel-footer\">\n <button\n type=\"button\"\n class=\"eds-multiselect__done-button\"\n (click)=\"onDoneClick()\"\n >\n Done\n </button>\n </div>\n </div>\n</ng-template>\n","import { EdsMultiselect } from './eds-multiselect';\nimport { EdsMultiselectOption } from './eds-multiselect-option';\n\nexport {\n EdsMultiselect,\n EdsMultiselectOption,\n};\n\n/** Convenience array for importing all eds-multiselect components. */\nexport const EDS_MULTISELECT = [\n EdsMultiselect,\n EdsMultiselectOption,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eui-eds-eds-multiselect.mjs","sources":["../../eds-multiselect/eds-multiselect-option.ts","../../eds-multiselect/eds-multiselect.ts","../../eds-multiselect/eds-multiselect.html","../../eds-multiselect/index.ts","../../eds-multiselect/eui-eds-eds-multiselect.ts"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n input,\n signal,\n computed,\n booleanAttribute,\n ElementRef,\n inject,\n} from '@angular/core';\nimport { Highlightable } from '@angular/cdk/a11y';\nimport { EDS_ICON } from '@eui/eds/eds-icon';\n\n/**\n * @description\n * An individual option within the EDS Multiselect dropdown.\n * Supports selection state, disabled state, and keyboard navigation via CDK ActiveDescendantKeyManager.\n *\n * @usageNotes\n * ```html\n * <eds-multiselect-option value=\"opt1\" label=\"Option 1\" />\n * ```\n */\n@Component({\n selector: 'eds-multiselect-option',\n template: `\n <span class=\"eds-multiselect-option__label\">{{ label() }}</span>\n <eds-icon\n class=\"eds-multiselect-option__check\"\n [icon]=\"'check'\"\n aria-hidden=\"true\"\n />\n `,\n styleUrl: './eds-multiselect-option.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [...EDS_ICON],\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': '\"option\"',\n '[attr.aria-selected]': 'selected()',\n '[attr.aria-disabled]': 'isDisabled() || null',\n '[attr.data-e2e]': '\"eds-multiselect-option\"',\n '[id]': 'optionId()',\n '(click)': 'onSelect()',\n },\n})\nexport class EdsMultiselectOption implements Highlightable {\n /**\n * The value associated with this option.\n */\n value = input.required<string>();\n\n /**\n * The display label for this option.\n */\n label = input.required<string>();\n\n /**\n * Whether this option is disabled.\n * @default false\n */\n isDisabled = input(false, { transform: booleanAttribute });\n\n /**\n * Required by Highlightable interface — reads the signal value.\n */\n get disabled(): boolean {\n return this.isDisabled();\n }\n\n /** Whether this option is currently selected. */\n selected = signal(false);\n\n /** Whether this option is the active descendant (highlighted via keyboard). */\n isActive = signal(false);\n\n /** Unique ID for the option element (used for aria-activedescendant). */\n optionId = computed(() => `eds-multiselect-option-${this.value()}`);\n\n readonly elementRef = inject(ElementRef);\n\n hostClasses = computed(() => {\n return [\n 'eds-multiselect-option',\n this.selected() ? 'eds-multiselect-option--selected' : '',\n this.isActive() ? 'eds-multiselect-option--active' : '',\n this.isDisabled() ? 'eds-multiselect-option--disabled' : '',\n ].join(' ').trim();\n });\n\n // --- Highlightable interface ---\n\n setActiveStyles(): void {\n this.isActive.set(true);\n }\n\n setInactiveStyles(): void {\n this.isActive.set(false);\n }\n\n // --- Interaction ---\n\n onSelect(): void {\n if (!this.isDisabled()) {\n this.selected.set(!this.selected());\n }\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n signal,\n computed,\n contentChildren,\n viewChild,\n ElementRef,\n TemplateRef,\n ViewContainerRef,\n inject,\n booleanAttribute,\n effect,\n OnDestroy,\n AfterContentInit,\n DestroyRef,\n} from '@angular/core';\n/* eslint-disable @typescript-eslint/member-ordering */\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n Overlay,\n OverlayRef,\n OverlayModule,\n FlexibleConnectedPositionStrategy,\n ConnectionPositionPair,\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { EDS_ICON } from '@eui/eds/eds-icon';\n\nimport { EdsMultiselectOption } from './eds-multiselect-option';\n\n/**\n * @description\n * EDS Multiselect component — a combobox-style dropdown that allows multiple selections.\n * Implements the WAI-ARIA multiselect listbox pattern with full keyboard navigation.\n * Styled to match eds-input-text default/hover/focus/disabled states.\n *\n * Integrates with Angular Reactive Forms and Template-driven Forms via ControlValueAccessor.\n *\n * @usageNotes\n * ### Basic usage\n * ```html\n * <eds-multiselect placeholder=\"Select labels\" [(value)]=\"selectedLabels\">\n * <eds-multiselect-option value=\"important\" label=\"Important\" />\n * <eds-multiselect-option value=\"starred\" label=\"Starred\" />\n * <eds-multiselect-option value=\"work\" label=\"Work\" />\n * </eds-multiselect>\n * ```\n *\n * ### With Reactive Forms\n * ```html\n * <eds-multiselect placeholder=\"Select options\" [formControl]=\"myControl\">\n * <eds-multiselect-option value=\"a\" label=\"Option A\" />\n * <eds-multiselect-option value=\"b\" label=\"Option B\" />\n * </eds-multiselect>\n * ```\n *\n * ### Accessibility\n * - Implements ARIA combobox pattern with `role=\"combobox\"` on the trigger\n * - Listbox popup uses `role=\"listbox\"` with `aria-multiselectable=\"true\"`\n * - Arrow keys navigate options, Space toggles selection, Escape closes\n * - Active descendant pattern for screen reader announcements\n */\n@Component({\n selector: 'eds-multiselect',\n templateUrl: './eds-multiselect.html',\n styleUrl: './eds-multiselect.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [OverlayModule, A11yModule, ...EDS_ICON],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: EdsMultiselect,\n multi: true,\n },\n ],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-e2e]': 'e2eAttr()',\n },\n})\nexport class EdsMultiselect implements ControlValueAccessor, OnDestroy, AfterContentInit {\n /**\n * Data attribute value for end-to-end testing identification.\n * @default 'eds-multiselect'\n */\n e2eAttr = input('eds-multiselect');\n\n /**\n * Placeholder text displayed when no options are selected.\n * @default 'Select options'\n */\n placeholder = input('Select options');\n\n /**\n * Controls whether the multiselect is disabled.\n * @default false\n */\n disabled = input(false, { transform: booleanAttribute });\n\n /**\n * Controls whether the multiselect shows an invalid/error state.\n * @default false\n */\n isInvalid = input(false, { transform: booleanAttribute });\n\n /**\n * Aria-label for the combobox trigger.\n * @default 'Select options'\n */\n ariaLabel = input('Select options');\n\n /**\n * Emits the current selection whenever it changes.\n */\n valueChange = output<string[]>();\n\n /** The projected option components. */\n readonly options = contentChildren(EdsMultiselectOption);\n\n /** Reference to the dropdown template for the overlay. */\n readonly dropdownTemplate = viewChild<TemplateRef<unknown>>('dropdownTemplate');\n\n /** Reference to the trigger element. */\n readonly triggerRef = viewChild<ElementRef<HTMLElement>>('triggerRef');\n\n /** Whether the dropdown popup is open. */\n isOpen = signal(false);\n\n /** Internal selected values. */\n protected internalValue = signal<string[]>([]);\n\n /** Internal disabled state (supports CVA setDisabledState). */\n protected internalDisabled = signal(false);\n\n /** Internal invalid state. */\n protected internalInvalid = signal(false);\n\n /** The display value shown in the trigger. */\n protected displayValue = computed(() => {\n const selected = this.internalValue();\n if (selected.length === 0) {\n return this.placeholder();\n }\n const opts = this.options();\n const firstLabel = opts.find(o => o.value() === selected[0])?.label() ?? selected[0];\n if (selected.length === 1) {\n return firstLabel;\n }\n return `${firstLabel} + ${selected.length - 1} more`;\n });\n\n /** Whether the placeholder is shown (no selection). */\n protected isPlaceholderShown = computed(() => this.internalValue().length === 0);\n\n /** The active descendant ID for screen readers. */\n protected activeDescendantId = signal<string | null>(null);\n\n hostClasses = computed(() => {\n return [\n 'eds-multiselect',\n this.internalDisabled() ? 'eds-multiselect--disabled' : '',\n this.internalInvalid() ? 'eds-multiselect--invalid' : '',\n this.isOpen() ? 'eds-multiselect--open' : '',\n ].join(' ').trim();\n });\n\n private overlay = inject(Overlay);\n private viewContainerRef = inject(ViewContainerRef);\n private destroyRef = inject(DestroyRef);\n private overlayRef: OverlayRef | null = null;\n private templatePortal: TemplatePortal | null = null;\n private keyManager: ActiveDescendantKeyManager<EdsMultiselectOption> | null = null;\n\n constructor() {\n // Sync disabled input → internal state\n effect(() => {\n this.internalDisabled.set(this.disabled());\n });\n\n // Sync isInvalid input → internal state\n effect(() => {\n this.internalInvalid.set(this.isInvalid());\n });\n }\n\n private _onChange: (value: string[]) => void = () => { /* noop */ };\n private _onTouched: () => void = () => { /* noop */ };\n\n ngAfterContentInit(): void {\n // Sync option selected states from internalValue whenever options change\n this.syncOptionsFromValue();\n }\n\n ngOnDestroy(): void {\n this.closeDropdown();\n this.overlayRef?.dispose();\n this.overlayRef = null;\n }\n\n // --- ControlValueAccessor ---\n\n writeValue(value: string[]): void {\n this.internalValue.set(value ?? []);\n this.syncOptionsFromValue();\n }\n\n registerOnChange(fn: (value: string[]) => void): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.internalDisabled.set(isDisabled);\n }\n\n // --- Trigger interactions ---\n\n protected onTriggerClick(): void {\n if (this.internalDisabled()) {\n return;\n }\n if (this.isOpen()) {\n this.closeDropdown();\n } else {\n this.openDropdown();\n }\n }\n\n protected onTriggerKeydown(event: KeyboardEvent): void {\n if (this.internalDisabled()) {\n return;\n }\n\n switch (event.key) {\n case 'Enter':\n case ' ':\n event.preventDefault();\n if (!this.isOpen()) {\n this.openDropdown();\n }\n break;\n case 'ArrowDown':\n event.preventDefault();\n if (!this.isOpen()) {\n this.openDropdown();\n }\n break;\n case 'ArrowUp':\n event.preventDefault();\n if (!this.isOpen()) {\n this.openDropdown();\n }\n break;\n case 'Escape':\n event.preventDefault();\n if (this.isOpen()) {\n this.closeDropdown();\n }\n break;\n }\n }\n\n protected onOptionClick(option: EdsMultiselectOption): void {\n if (option.isDisabled()) {\n return;\n }\n option.onSelect();\n this.syncValueFromOptions();\n this.keyManager?.setActiveItem(option);\n this.updateActiveDescendant();\n }\n\n protected onDoneClick(): void {\n this.closeDropdown();\n }\n\n protected onPanelKeydown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.keyManager?.setNextItemActive();\n this.updateActiveDescendant();\n this.scrollActiveOptionIntoView();\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.keyManager?.setPreviousItemActive();\n this.updateActiveDescendant();\n this.scrollActiveOptionIntoView();\n break;\n case 'Home':\n event.preventDefault();\n this.keyManager?.setFirstItemActive();\n this.updateActiveDescendant();\n this.scrollActiveOptionIntoView();\n break;\n case 'End':\n event.preventDefault();\n this.keyManager?.setLastItemActive();\n this.updateActiveDescendant();\n this.scrollActiveOptionIntoView();\n break;\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.toggleActiveOption();\n break;\n case 'Escape':\n event.preventDefault();\n this.closeDropdown();\n break;\n default:\n // Type-ahead: single printable character moves focus to next matching option\n if (event.key.length === 1 && !event.ctrlKey && !event.altKey && !event.metaKey) {\n this.handleTypeAhead(event.key);\n }\n break;\n }\n }\n\n // --- Dropdown management (private) ---\n\n private openDropdown(): void {\n if (this.isOpen() || !this.dropdownTemplate()) {\n return;\n }\n\n const triggerEl = this.triggerRef()?.nativeElement;\n if (!triggerEl) {\n return;\n }\n\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(triggerEl)\n .withPositions([\n new ConnectionPositionPair(\n { originX: 'start', originY: 'bottom' },\n { overlayX: 'start', overlayY: 'top' },\n ),\n new ConnectionPositionPair(\n { originX: 'start', originY: 'top' },\n { overlayX: 'start', overlayY: 'bottom' },\n ),\n ])\n .withFlexibleDimensions(false)\n .withPush(true);\n\n const scrollStrategy = this.overlay.scrollStrategies.reposition();\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n scrollStrategy,\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n width: triggerEl.offsetWidth,\n disposeOnNavigation: true,\n });\n\n this.templatePortal = new TemplatePortal(this.dropdownTemplate(), this.viewContainerRef);\n this.overlayRef.attach(this.templatePortal);\n\n // Focus the panel wrapper so keyboard events are captured\n const panelEl = this.overlayRef.overlayElement.querySelector<HTMLElement>('.eds-multiselect__panel-wrapper');\n panelEl?.focus();\n\n this.overlayRef.backdropClick()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.closeDropdown());\n\n this.overlayRef.keydownEvents()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => {\n if (event.key === 'Escape') {\n event.preventDefault();\n this.closeDropdown();\n }\n });\n\n // Setup key manager\n const opts = this.options();\n if (opts.length > 0) {\n // Reset all active states from previous opening\n opts.forEach(o => o.setInactiveStyles());\n\n this.keyManager = new ActiveDescendantKeyManager(opts as unknown as EdsMultiselectOption[])\n .withVerticalOrientation(true)\n .withHomeAndEnd(true)\n .withWrap();\n\n // APG: If options are selected, focus first selected option; otherwise first option\n const firstSelectedIndex = opts.findIndex(o => o.selected());\n if (firstSelectedIndex >= 0) {\n this.keyManager.setActiveItem(firstSelectedIndex);\n } else {\n this.keyManager.setFirstItemActive();\n }\n this.updateActiveDescendant();\n }\n\n this.isOpen.set(true);\n }\n\n private closeDropdown(): void {\n if (!this.isOpen()) {\n return;\n }\n // Clear active styles on all options\n this.options().forEach(o => o.setInactiveStyles());\n\n this.overlayRef?.detach();\n this.overlayRef?.dispose();\n this.overlayRef = null;\n this.templatePortal = null;\n this.keyManager = null;\n this.activeDescendantId.set(null);\n this.isOpen.set(false);\n this._onTouched();\n this.triggerRef()?.nativeElement?.focus();\n }\n\n private toggleActiveOption(): void {\n const active = this.keyManager?.activeItem;\n if (active && !active.isDisabled()) {\n active.onSelect();\n this.syncValueFromOptions();\n }\n }\n\n private handleTypeAhead(char: string): void {\n const opts = this.options();\n const activeIndex = this.keyManager?.activeItemIndex ?? 0;\n const lowerChar = char.toLowerCase();\n\n // Search from after the active item, then wrap around\n for (let i = 1; i <= opts.length; i++) {\n const index = (activeIndex + i) % opts.length;\n const option = opts[index];\n if (!option.isDisabled() && option.label().toLowerCase().startsWith(lowerChar)) {\n this.keyManager?.setActiveItem(index);\n this.updateActiveDescendant();\n this.scrollActiveOptionIntoView();\n break;\n }\n }\n }\n\n private scrollActiveOptionIntoView(): void {\n const activeId = this.activeDescendantId();\n if (!activeId || !this.overlayRef) {\n return;\n }\n const activeEl = this.overlayRef.overlayElement.querySelector<HTMLElement>(`#${activeId}`);\n if (activeEl && typeof activeEl.scrollIntoView === 'function') {\n activeEl.scrollIntoView({ block: 'nearest' });\n }\n }\n\n private updateActiveDescendant(): void {\n const active = this.keyManager?.activeItem;\n this.activeDescendantId.set(active ? active.optionId() : null);\n }\n\n private syncValueFromOptions(): void {\n const selectedValues = this.options()\n .filter(o => o.selected())\n .map(o => o.value());\n this.internalValue.set(selectedValues);\n this._onChange(selectedValues);\n this.valueChange.emit(selectedValues);\n }\n\n private syncOptionsFromValue(): void {\n const currentValue = this.internalValue();\n this.options().forEach(option => {\n option.selected.set(currentValue.includes(option.value()));\n });\n }\n}\n","<!-- Combobox trigger -->\n<div\n #triggerRef\n class=\"eds-multiselect__trigger\"\n role=\"combobox\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-controls]=\"isOpen() ? 'eds-multiselect-listbox' : null\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-activedescendant]=\"activeDescendantId()\"\n [attr.aria-disabled]=\"internalDisabled() || null\"\n [attr.tabindex]=\"internalDisabled() ? -1 : 0\"\n (click)=\"onTriggerClick()\"\n (keydown)=\"onTriggerKeydown($event)\"\n>\n <span\n class=\"eds-multiselect__display\"\n [class.eds-multiselect__display--placeholder]=\"isPlaceholderShown()\"\n >\n {{ displayValue() }}\n </span>\n <eds-icon\n class=\"eds-multiselect__caret\"\n [icon]=\"'caret-down'\"\n aria-hidden=\"true\"\n />\n</div>\n\n<!-- Dropdown panel (rendered in overlay) -->\n<ng-template #dropdownTemplate>\n <div class=\"eds-multiselect__panel-wrapper\" tabindex=\"-1\" cdkTrapFocus [cdkTrapFocusAutoCapture]=\"true\">\n <div\n class=\"eds-multiselect__panel\"\n id=\"eds-multiselect-listbox\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-activedescendant]=\"activeDescendantId()\"\n tabindex=\"0\"\n (keydown)=\"onPanelKeydown($event)\"\n >\n @for (option of options(); track option.value()) {\n <div\n class=\"eds-multiselect-option\"\n [class.eds-multiselect-option--selected]=\"option.selected()\"\n [class.eds-multiselect-option--active]=\"option.isActive()\"\n [class.eds-multiselect-option--disabled]=\"option.isDisabled()\"\n [attr.role]=\"'option'\"\n [attr.aria-selected]=\"option.selected()\"\n [attr.aria-disabled]=\"option.isDisabled() || null\"\n [id]=\"option.optionId()\"\n (click)=\"onOptionClick(option)\"\n >\n <eds-icon\n class=\"eds-multiselect-option__check\"\n [icon]=\"'check'\"\n edsSizeS\n aria-hidden=\"true\"\n />\n <span class=\"eds-multiselect-option__label\">{{ option.label() }}</span>\n </div>\n }\n </div>\n <div class=\"eds-multiselect__panel-footer\">\n <button\n type=\"button\"\n class=\"eds-multiselect__done-button\"\n (click)=\"onDoneClick()\"\n >\n Done\n </button>\n </div>\n </div>\n</ng-template>\n","import { EdsMultiselect } from './eds-multiselect';\nimport { EdsMultiselectOption } from './eds-multiselect-option';\n\nexport {\n EdsMultiselect,\n EdsMultiselectOption,\n};\n\n/** Convenience array for importing all eds-multiselect components. */\nexport const EDS_MULTISELECT = [\n EdsMultiselect,\n EdsMultiselectOption,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
|
|
@@ -335,11 +335,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImpor
|
|
|
335
335
|
|
|
336
336
|
class EdsPageColumnHeaderLabel {
|
|
337
337
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EdsPageColumnHeaderLabel, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
338
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.2", type: EdsPageColumnHeaderLabel, isStandalone: true, selector: "eds-page-column-header-label", ngImport: i0, template: '<ng-content/>', isInline: true, styles: [".eui-21 :host{display:block;font:var(--eds-f-label-m-
|
|
338
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.2", type: EdsPageColumnHeaderLabel, isStandalone: true, selector: "eds-page-column-header-label", ngImport: i0, template: '<ng-content/>', isInline: true, styles: [".eui-21 :host{display:block;font:var(--eds-f-label-m-semibold);color:var(--eds-c-foreground)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
339
339
|
}
|
|
340
340
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EdsPageColumnHeaderLabel, decorators: [{
|
|
341
341
|
type: Component,
|
|
342
|
-
args: [{ selector: 'eds-page-column-header-label', template: '<ng-content/>', changeDetection: ChangeDetectionStrategy.OnPush, styles: [".eui-21 :host{display:block;font:var(--eds-f-label-m-
|
|
342
|
+
args: [{ selector: 'eds-page-column-header-label', template: '<ng-content/>', changeDetection: ChangeDetectionStrategy.OnPush, styles: [".eui-21 :host{display:block;font:var(--eds-f-label-m-semibold);color:var(--eds-c-foreground)}\n"] }]
|
|
343
343
|
}] });
|
|
344
344
|
|
|
345
345
|
class EdsPageColumnHeaderSublabel {
|