@fundamental-ngx/core 0.55.4 → 0.55.5
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/dialog/base/dialog-config-base.class.d.ts +2 -0
- package/fesm2022/fundamental-ngx-core-action-bar.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-action-sheet.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-avatar-group.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-avatar-group.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-avatar.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-avatar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-bar.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-breadcrumb.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-busy-indicator.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-button.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-calendar.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-card.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-carousel.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-checkbox.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-checkbox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-combobox.mjs +1 -1
- package/fesm2022/fundamental-ngx-core-combobox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-dialog.mjs +6 -4
- package/fesm2022/fundamental-ngx-core-dialog.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-dynamic-page.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-dynamic-side-content.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-facets.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-facets.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-feed-input.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-feed-list-item.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-file-uploader.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-file-uploader.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-fixed-card-layout.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-flexible-column-layout.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-form.mjs +14 -14
- package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-generic-tag.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-grid-list.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-grid-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-icon.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-icon.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-illustrated-message.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-info-label.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-input-group.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-input-group.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-layout-grid.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-layout-panel.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-link.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-link.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-list.mjs +51 -14
- package/fesm2022/fundamental-ngx-core-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-menu.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-box.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-message-box.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-page.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-message-strip.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-message-toast.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-message-toast.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-multi-input.mjs +1 -1
- package/fesm2022/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-notification.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-notification.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-attribute.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-identifier.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-marker.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-number.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-status.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-pagination.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-panel.mjs +18 -10
- package/fesm2022/fundamental-ngx-core-panel.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-popover.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-product-switch.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-progress-indicator.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-quick-view.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-quick-view.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-radio.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-radio.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-rating-indicator.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-segmented-button.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-segmented-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-select.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-settings.mjs +362 -0
- package/fesm2022/fundamental-ngx-core-settings.mjs.map +1 -0
- package/fesm2022/fundamental-ngx-core-shellbar.mjs +332 -46
- package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-side-navigation.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-side-navigation.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-skeleton.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-slider.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-slider.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-split-button.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-status-indicator.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-step-input.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-step-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-switch.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-table.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-table.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tabs.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-text.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-tile.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-time.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-title.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-token.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-toolbar.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-tree.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-upload-collection.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-upload-collection.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-user-menu.mjs +652 -0
- package/fesm2022/fundamental-ngx-core-user-menu.mjs.map +1 -0
- package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-wizard.mjs +2 -2
- package/fesm2022/fundamental-ngx-core.mjs +8 -3
- package/fesm2022/fundamental-ngx-core.mjs.map +1 -1
- package/fundamental-ngx.module.d.ts +2 -1
- package/index.d.ts +1 -0
- package/list/directives/subline/list-subline.directive.d.ts +5 -0
- package/list/index.d.ts +1 -0
- package/list/list-item/list-item.component.d.ts +6 -2
- package/list/list.component.d.ts +7 -1
- package/list/list.module.d.ts +2 -1
- package/package.json +17 -9
- package/panel/panel-content/panel-content.directive.d.ts +5 -3
- package/panel/panel.component.d.ts +5 -1
- package/settings/index.d.ts +11 -0
- package/settings/settings-container/settings-container.component.d.ts +52 -0
- package/settings/settings-content/settings-content.directive.d.ts +15 -0
- package/settings/settings-detail-area/settings-detail-area.directive.d.ts +5 -0
- package/settings/settings-dialog-body/settings-dialog-body.directive.d.ts +5 -0
- package/settings/settings-dialog-content/settings-dialog-content.directive.d.ts +5 -0
- package/settings/settings-header/settings-header.directive.d.ts +5 -0
- package/settings/settings-header-button/settings-header-button.directive.d.ts +5 -0
- package/settings/settings-list-area/settings-list-area.directive.d.ts +5 -0
- package/settings/settings-list-container/settings-list-container.directive.d.ts +5 -0
- package/settings/settings.component.d.ts +5 -0
- package/settings/settings.module.d.ts +20 -0
- package/shellbar/index.d.ts +4 -0
- package/shellbar/model/shellbar.d.ts +2 -0
- package/shellbar/shellbar-action/shellbar-action.component.d.ts +3 -0
- package/shellbar/shellbar-actions/shellbar-actions.component.d.ts +12 -6
- package/shellbar/shellbar-actions-mobile/shellbar-actions-mobile.component.d.ts +4 -1
- package/shellbar/shellbar-branding/shellbar-branding.component.d.ts +20 -0
- package/shellbar/shellbar-context-area/shellbar-context-area.component.d.ts +30 -0
- package/shellbar/shellbar-hide-priority.directive.d.ts +10 -0
- package/shellbar/shellbar-separator/shellbar-separator.component.d.ts +8 -0
- package/shellbar/shellbar-subtitle/shellbar-subtitle.component.d.ts +2 -0
- package/shellbar/shellbar.component.d.ts +45 -9
- package/shellbar/shellbar.module.d.ts +7 -2
- package/user-menu/components/user-menu-body.component.d.ts +63 -0
- package/user-menu/components/user-menu-content-container.component.d.ts +5 -0
- package/user-menu/components/user-menu-control.component.d.ts +14 -0
- package/user-menu/components/user-menu-footer.component.d.ts +5 -0
- package/user-menu/components/user-menu-list-item.component.d.ts +61 -0
- package/user-menu/components/user-menu-list.component.d.ts +5 -0
- package/user-menu/components/user-menu-sublist.component.d.ts +25 -0
- package/user-menu/directives/user-menu-header-container.directive.d.ts +5 -0
- package/user-menu/directives/user-menu-header.directive.d.ts +5 -0
- package/user-menu/directives/user-menu-subline.directive.d.ts +5 -0
- package/user-menu/directives/user-menu-user-name.directive.d.ts +5 -0
- package/user-menu/index.d.ts +13 -0
- package/user-menu/user-menu.component.d.ts +48 -0
- package/user-menu/user-menu.module.d.ts +22 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-core-menu.mjs","sources":["../../../../libs/core/menu/menu.tokens.ts","../../../../libs/core/menu/directives/glyph-menu-addon.directive.ts","../../../../libs/core/menu/directives/menu-addon.directive.ts","../../../../libs/core/menu/directives/menu-item-input.directive.ts","../../../../libs/core/menu/directives/menu-title.directive.ts","../../../../libs/core/menu/menu-interactive.component.ts","../../../../libs/core/menu/services/menu.service.ts","../../../../libs/core/menu/menu-item/menu-item.component.ts","../../../../libs/core/menu/menu-item/menu-item.component.html","../../../../libs/core/menu/directives/menu-shortcut.directive.ts","../../../../libs/core/menu/directives/menu-trigger.directive.ts","../../../../libs/core/menu/directives/segmented-button/segmented-button-header.directive.ts","../../../../libs/core/menu/directives/segmented-button/segmented-button-option.directive.ts","../../../../libs/core/menu/directives/toggle-button.directive.ts","../../../../libs/core/menu/menu-separator.directive.ts","../../../../libs/core/menu/default-menu-item.class.ts","../../../../libs/core/menu/menu.interface.ts","../../../../libs/core/menu/menu-mobile/menu-mobile.component.ts","../../../../libs/core/menu/menu-mobile/menu-mobile.component.html","../../../../libs/core/menu/menu.component.ts","../../../../libs/core/menu/menu.component.html","../../../../libs/core/menu/menu.module.ts","../../../../libs/core/menu/menu-keyboard.service.ts","../../../../libs/core/menu/fundamental-ngx-core-menu.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const TOGGLE_MENU_ITEM = new InjectionToken('TOGGLE_MENU_ITEM');\nexport const FD_MENU_COMPONENT = new InjectionToken('FD_MENU_COMPONENT');\nexport const FD_MENU_ITEM_COMPONENT = new InjectionToken('FD_MENU_ITEM_COMPONENT');\n","import { CdkPortalOutlet, ComponentPortal, DomPortal, Portal, TemplatePortal } from '@angular/cdk/portal';\nimport { ComponentRef, DestroyRef, Directive, EmbeddedViewRef, Input, OnDestroy, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { Observable, Subject, combineLatest, first, map, tap } from 'rxjs';\nimport { MenuComponent } from '../menu.component';\nimport { FD_MENU_COMPONENT, TOGGLE_MENU_ITEM } from '../menu.tokens';\n\n@Directive({\n selector: '[fdMenuAddonGlyph], [fd-menu-addon-glyph]',\n standalone: true\n})\nexport class GlyphMenuAddonDirective implements OnDestroy {\n /**\n * The icon name to display. See the icon page for the list of icons\n * here: https://sap.github.io/fundamental-ngx/icon\n **/\n @Input() set glyph(glyph: string | undefined) {\n this._glyphName$.next(glyph);\n }\n\n /**\n * Toggle buttons always need a space, so we check if it is in a toggle button\n * */\n isInToggleButton = !!inject(TOGGLE_MENU_ITEM, { optional: true });\n\n /** @hidden */\n private _menuComponent = inject<MenuComponent>(FD_MENU_COMPONENT, { optional: true });\n\n /** @hidden */\n private _addonGlyphPortalOutlet$ = new Subject<CdkPortalOutlet>();\n\n /** @hidden */\n private _glyphName$ = new Subject<string | undefined>();\n\n /** @hidden */\n private _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n constructor() {\n combineLatest([this._addonGlyphPortalOutlet$, this._glyphName$])\n .pipe(\n tap(([, glyphName]) => {\n glyphName || this.isInToggleButton ? this._addGlyphAddonToMenu() : this._removeGlyphAddonFromMenu();\n }),\n tap(([outlet, glyphName]) => {\n if (!glyphName) {\n outlet.detach();\n return;\n }\n const componentRef = outlet.attachComponentPortal(new ComponentPortal(IconComponent));\n componentRef.instance.glyph = glyphName;\n componentRef.instance.elementRef.nativeElement.setAttribute('role', 'presentation');\n if (this.isInToggleButton) {\n componentRef.instance.elementRef.nativeElement.classList.add('fd-menu__checkmark');\n }\n componentRef.changeDetectorRef.detectChanges();\n }),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n\n /** @hidden */\n setGlyphPortalOutlet(outlet: CdkPortalOutlet): void {\n this._addonGlyphPortalOutlet$.next(outlet);\n }\n\n /** @hidden */\n renderElement<ComponentType>(element: ComponentPortal<ComponentType>): Observable<ComponentRef<ComponentType>>;\n /** @hidden */\n renderElement<TemplateContext>(\n element: TemplatePortal<TemplateContext>\n ): Observable<EmbeddedViewRef<TemplateContext>>;\n /** @hidden */\n renderElement(element: DomPortal): Observable<any>;\n /** @hidden */\n renderElement(element: Portal<any>): Observable<any> {\n return this._addonGlyphPortalOutlet$.pipe(\n first(),\n tap((outlet) => outlet.detach()),\n map((outlet) => outlet.attach(element))\n );\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._removeGlyphAddonFromMenu();\n }\n\n /** @hidden */\n private _addGlyphAddonToMenu(): void {\n this._menuComponent?.registerAddon(this);\n }\n\n /** @hidden */\n private _removeGlyphAddonFromMenu(): void {\n this._menuComponent?.unregisterAddon(this);\n }\n}\n","import { CdkPortalOutlet, PortalModule } from '@angular/cdk/portal';\nimport { Component, ElementRef, HostBinding, Input, ViewChild, inject } from '@angular/core';\nimport { GlyphMenuAddonDirective } from './glyph-menu-addon.directive';\n\n@Component({\n selector: 'fd-menu-addon',\n template: ` <ng-template cdkPortalOutlet></ng-template> `,\n hostDirectives: [{ directive: GlyphMenuAddonDirective, inputs: ['glyph'] }],\n imports: [PortalModule]\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class MenuAddonDirective {\n /** Whether addon is used before or after text */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('position') set setAddonPosition(position: 'before' | 'after') {\n this.fdAddonBeforeClass = position === 'before';\n this.fdAddonAfterClass = position === 'after';\n }\n\n /** Whether is used as submenu indicator */\n @Input()\n @HostBinding('class.fd-menu__addon-after--submenu')\n submenuIndicator = false;\n\n /** Sets Aria hidden attribute */\n @Input()\n @HostBinding('attr.aria-hidden')\n ariaHidden = true;\n\n /** @hidden */\n @HostBinding('class.fd-menu__addon-after')\n fdAddonAfterClass = true;\n\n /** @hidden */\n @HostBinding('class.fd-menu__addon-before')\n fdAddonBeforeClass = false;\n\n /** @hidden */\n @ViewChild(CdkPortalOutlet)\n set addonPortalOutlet(portalOutlet: CdkPortalOutlet) {\n this._addonGlyph.setGlyphPortalOutlet(portalOutlet);\n }\n\n /** @hidden */\n readonly _addonGlyph = inject(GlyphMenuAddonDirective);\n\n /** @hidden */\n readonly elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n}\n","import { Directive, ElementRef, HostListener, inject } from '@angular/core';\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'input[fd-form-control][fd-menu-item-input]',\n host: {\n class: 'fd-menu__input'\n },\n standalone: true\n})\nexport class MenuItemInputDirective implements HasElementRef {\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n\n /**\n * This is needed to prevent the click event from bubbling up to the menu item\n * and potentially closing the menu or triggering other actions.\n */\n @HostListener('keydown', ['$event'])\n @HostListener('click', ['$event'])\n onInteraction($event: KeyboardEvent | MouseEvent): void {\n if ($event.target === this.elementRef.nativeElement) {\n $event.stopPropagation();\n }\n }\n}\n","import { Directive, ElementRef, HostBinding } from '@angular/core';\n\n/**\n * The directive that represents the menu title.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-menu-title]',\n standalone: true\n})\nexport class MenuTitleDirective {\n /** @hidden */\n @HostBinding('class.fd-menu__title')\n fdMenuTitleClass = true;\n\n /** Returns element title text */\n @HostBinding('attr.title')\n get title(): string {\n return this._elementRef.nativeElement.textContent;\n }\n\n /** @hidden */\n constructor(private _elementRef: ElementRef) {}\n}\n","import { CdkPortalOutlet, ComponentPortal, PortalModule } from '@angular/cdk/portal';\nimport { Component, ContentChild, ElementRef, HostBinding, HostListener, ViewChild, inject } from '@angular/core';\nimport { HasElementRef, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { MenuAddonDirective } from './directives/menu-addon.directive';\nimport { MenuItemInputDirective } from './directives/menu-item-input.directive';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fd-menu-interactive]',\n template: `\n <ng-template cdkPortalOutlet></ng-template>\n <ng-content></ng-content>\n `,\n host: {\n role: 'menuitem'\n },\n imports: [PortalModule]\n})\nexport class MenuInteractiveComponent implements HasElementRef {\n /** @hidden */\n @ViewChild(CdkPortalOutlet)\n addonPortalOutlet: CdkPortalOutlet;\n\n /** @hidden */\n @ContentChild(MenuAddonDirective)\n private set _addon(addon: MenuAddonDirective) {\n if (\n addon?.elementRef.nativeElement === this.elementRef.nativeElement.querySelector('fd-menu-addon:first-child')\n ) {\n this._startAddonInstance = addon;\n }\n }\n\n /** @hidden */\n @HostBinding('attr.tabindex')\n tabindex = 0;\n\n /** @hidden */\n @HostBinding('class.is-disabled')\n disabled = false;\n\n /** @hidden */\n @HostBinding('attr.aria-controls')\n ariaControls: Nullable<string>;\n\n /** @hidden */\n @HostBinding('class.is-selected')\n selected = false;\n\n /** @hidden */\n @HostBinding('attr.aria-expanded')\n ariaExpanded: Nullable<boolean>;\n\n /** @hidden */\n @HostBinding('attr.aria-haspopup')\n @HostBinding('class.has-child')\n ariaHaspopup = false;\n\n /** @hidden */\n @HostBinding('class.fd-menu__link')\n readonly fdMenuLinkClass: boolean = true;\n\n /** @hidden */\n @ContentChild(MenuItemInputDirective)\n private _input: MenuItemInputDirective;\n\n /** @hidden */\n _fromSplitButton = false;\n\n /** @hidden */\n readonly elementRef: ElementRef = inject(ElementRef);\n\n /** @hidden */\n private _startAddonInstance: MenuAddonDirective;\n\n /** @hidden */\n get startAddon(): MenuAddonDirective {\n if (!this._startAddonInstance) {\n this.addonPortalOutlet.detach();\n this._startAddonInstance = this.addonPortalOutlet.attachComponentPortal(\n new ComponentPortal(MenuAddonDirective)\n ).instance;\n this._startAddonInstance.setAddonPosition = 'before';\n }\n return this._startAddonInstance;\n }\n\n /** @hidden */\n @HostListener('keydown.enter', ['$event'])\n @HostListener('keydown.space', ['$event'])\n _handleKeydown($event: KeyboardEvent): void {\n if (this._input && $event.target === this.elementRef.nativeElement) {\n this._input.elementRef.nativeElement.focus();\n }\n }\n\n /** @hidden */\n setSelected(isSelected: boolean): void {\n this.selected = isSelected && (this.ariaHaspopup || this._fromSplitButton);\n if (this.ariaHaspopup || this._fromSplitButton) {\n this.ariaExpanded = isSelected;\n }\n }\n\n /** @hidden */\n setDisabled(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.tabindex = isDisabled ? -1 : 0;\n }\n\n /** @hidden */\n setSubmenu(hasSubmenu: boolean, itemId?: string): void {\n this.ariaHaspopup = hasSubmenu;\n this.ariaControls = hasSubmenu ? itemId || this.ariaControls : null;\n }\n}\n\nexport { MenuInteractiveComponent as MenuInteractiveDirective };\n","import { DOWN_ARROW, ENTER, ESCAPE, LEFT_ARROW, RIGHT_ARROW, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { ElementRef, Injectable, OnDestroy, Optional, Renderer2 } from '@angular/core';\nimport { KeyUtil, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { MenuItemComponent } from '../menu-item/menu-item.component';\nimport { MenuComponent } from '../menu.component';\n\ninterface MenuNode {\n item: MenuItemComponent | null;\n parent: MenuNode | null;\n children: MenuNode[];\n}\n\n/** `null` key is used for the root node */\ntype MenuMap = Map<MenuItemComponent | null, MenuNode>;\n\n@Injectable()\nexport class MenuService implements OnDestroy {\n /** Map of menu items to menu nodes */\n menuMap: MenuMap;\n\n /** Currently focused node */\n focusedNode: MenuNode | undefined;\n\n /** Collection of active menu nodes */\n activeNodePath: MenuNode[] = [];\n\n /** Collection of active menu nodes */\n private _isMobileMode = new Subject<boolean>();\n\n /** @hidden */\n private _menuComponent: MenuComponent;\n\n /** @hidden */\n private _destroyKeyboardHandlerListener: () => void;\n\n /** @hidden */\n get _isRtl(): boolean {\n return this._rtlService?.rtl.value;\n }\n\n /** @hidden */\n constructor(\n private _renderer: Renderer2,\n @Optional() private readonly _rtlService: RtlService\n ) {}\n\n /** Reference to menu component */\n get menuComponent(): MenuComponent {\n return this._menuComponent;\n }\n\n /** Returns menu mode observable */\n get isMobileMode(): Observable<boolean> {\n return this._isMobileMode.pipe(distinctUntilChanged());\n }\n\n /** Sets menu mode */\n setMenuMode(value: boolean): void {\n this._isMobileMode.next(value);\n }\n\n /** Sets given menu item as focused */\n setFocused(menuItem: MenuItemComponent | null): void {\n this.focusedNode = this.menuMap.get(menuItem);\n this.focusedNode?.item?.focus();\n }\n\n /**\n * Sets state of a given menu item\n * @param isActive - Whether should be set as active or inactive\n * @param menuItem `MenuItemComponent` that should be set as active or inactive\n */\n setActive(isActive: boolean, menuItem: MenuItemComponent | null): void {\n if (!menuItem || (isActive && menuItem.disabled)) {\n return;\n }\n\n if (isActive) {\n this._addToActivePath(menuItem);\n } else {\n this._removeFromActivePath(menuItem);\n }\n\n this._emitActivePath();\n }\n\n /**\n * Close active sibling submenu if any\n * @param menuItem to look for active siblings\n */\n setInactiveSiblingMenuItem(menuItem: MenuItemComponent): void {\n this._removeActiveSibling(menuItem);\n this._emitActivePath();\n }\n\n /** Initializes menu service based on given Menu Component */\n setMenuComponent(menu: MenuComponent): void {\n this._menuComponent = menu;\n this.menuMap = this._buildMenuMap(this._menuComponent);\n }\n\n /** Clears Active Node Path and resets Focused Node */\n resetMenuState(): void {\n this._clearActivePath();\n this.focusedNode = undefined;\n this._emitActivePath();\n }\n\n /** - Updates the structure of the menu\n * - Validates Active Node Path\n * - Validates Focused Node */\n rebuildMenu(): void {\n this.menuMap = this._buildMenuMap(this._menuComponent);\n\n const deadNode = this.activeNodePath.find((node) => !this.menuMap.has(node.item));\n if (deadNode?.item) {\n this.setActive(false, deadNode.item);\n }\n\n const invalidFocusedElement = this.focusedNode && !this.menuMap.get(this.focusedNode.item);\n if (invalidFocusedElement) {\n this.focusedNode =\n this.activeNodePath[this.activeNodePath.length - 1] || this.menuMap.get(null)!.children[0];\n }\n }\n\n /** Adds Menu keyboard support */\n addKeyboardSupport(elementRef: ElementRef): void {\n this.removeKeyboardSupport();\n this._setKeyboardSupport(elementRef);\n }\n\n /** Removes Menu keyboard support */\n removeKeyboardSupport(): void {\n if (this._destroyKeyboardHandlerListener) {\n this._destroyKeyboardHandlerListener();\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this.removeKeyboardSupport();\n }\n\n /** @hidden Returns siblings of given node */\n private _nodeSiblings(node: MenuNode): MenuNode[] | undefined {\n return node.parent ? node.parent.children : this.menuMap.get(null)?.children;\n }\n\n /** @hidden Adds given element to the Active Node Path and setts as active*/\n private _addToActivePath(menuItem: MenuItemComponent): void {\n const menuNode = this.menuMap.get(menuItem);\n\n this._removeActiveSibling(menuItem);\n\n if (menuNode) {\n this.activeNodePath.push(menuNode);\n menuNode.item?.setSelected(true);\n }\n }\n\n /** @hidden Removes given element and all its successors from the Active Node Path and setts as inactive*/\n private _removeFromActivePath(menuItem: MenuItemComponent | null): void {\n const menuNode = this.menuMap.get(menuItem);\n if (menuNode) {\n const pathIndex = this.activeNodePath.findIndex((i) => i.item === menuNode.item);\n\n if (pathIndex !== -1) {\n this.activeNodePath\n .splice(pathIndex)\n .forEach((removedActiveNode) => removedActiveNode.item?.setSelected(false));\n }\n }\n }\n\n /** @hidden Removes all elements from the Active Node Path and sets them as closed */\n private _clearActivePath(): void {\n if (this.activeNodePath.length) {\n this._removeFromActivePath(this.activeNodePath[0].item);\n }\n }\n\n /** @hidden\n * - Builds Menu Nodes based on Menu Items\n * - Creates Map of the Menu Nodes */\n private _buildMenuMap(menu: MenuComponent): MenuMap {\n function buildNode(menuItem: MenuItemComponent): MenuNode {\n return {\n item: menuItem,\n parent: null,\n children: menuItem.submenu\n ? menuItem.submenu.menuItems.map((subMenuItem) => buildNode(subMenuItem))\n : []\n };\n }\n\n function setParents(node: MenuNode, parent: MenuNode | null): void {\n node.parent = parent;\n node.children.forEach((childNode) => setParents(childNode, node));\n }\n\n function toMap(node: MenuNode, map = new Map() as MenuMap): MenuMap {\n map.set(node.item, node);\n node.children.forEach((childNode) => toMap(childNode, map));\n return map;\n }\n\n const rootItems = menu._menuItems.filter((rootItem) => !rootItem.parentSubmenu);\n\n /** root item */\n const menuTree: MenuNode = {\n item: null,\n parent: null,\n children: rootItems.map((item) => buildNode(item))\n };\n\n setParents(menuTree, null);\n\n return toMap(menuTree);\n }\n\n /** @hidden Removes active sibling of a given menu item from the Active Path */\n private _removeActiveSibling(menuItem: MenuItemComponent): void {\n const menuNode = this.menuMap.get(menuItem);\n const children = menuNode?.parent?.children.map((i) => i.item);\n const activeSibling = this.activeNodePath.find((i) => children?.includes(i.item));\n\n if (activeSibling) {\n const activeParentIndex = this.activeNodePath.indexOf(menuNode?.parent as MenuNode);\n this._removeFromActivePath(activeParentIndex !== -1 ? activeSibling.item : this.activeNodePath[0].item);\n }\n }\n\n /** @hidden Adds keyboard support */\n private _setKeyboardSupport(elementRef: ElementRef): void {\n this._destroyKeyboardHandlerListener = this._renderer.listen(\n elementRef.nativeElement,\n 'keydown',\n (event: KeyboardEvent) => this._handleKey(event)\n );\n }\n\n /** @hidden */\n private _handleKey(event: KeyboardEvent): void {\n const focusRight = (node): void => {\n setTimeout(() => this.setFocused(node.children[0].item));\n };\n let matched = true;\n\n if (!this.focusedNode) {\n return;\n }\n\n if (\n (KeyUtil.isKeyCode(event, RIGHT_ARROW) && !this._isRtl) ||\n (KeyUtil.isKeyCode(event, LEFT_ARROW) && this._isRtl)\n ) {\n if (this.focusedNode?.children.length) {\n this.setActive(true, this.focusedNode.item);\n focusRight(this.focusedNode);\n }\n } else if (\n (KeyUtil.isKeyCode(event, LEFT_ARROW) && !this._isRtl) ||\n (KeyUtil.isKeyCode(event, RIGHT_ARROW) && this._isRtl)\n ) {\n if (this.focusedNode.parent?.item) {\n this.setActive(false, this.focusedNode.parent.item);\n this.setFocused(this.focusedNode.parent.item);\n }\n } else if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n const closest = this._closestEnabled(this.focusedNode, 'down');\n if (closest) {\n this.setFocused(closest.item);\n }\n } else if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n const closest = this._closestEnabled(this.focusedNode, 'up');\n if (closest) {\n this.setFocused(closest.item);\n }\n } else if (KeyUtil.isKeyCode(event, [SPACE, ENTER])) {\n const focusedNode = this.focusedNode;\n this.setActive(true, focusedNode?.item);\n focusedNode.item?.click();\n if (focusedNode.children.length) {\n focusRight(focusedNode);\n }\n } else if (KeyUtil.isKeyCode(event, ESCAPE) && this.menuComponent.closeOnEscapeKey) {\n this.menuComponent.close();\n } else {\n matched = false;\n }\n\n if (matched) {\n event.preventDefault();\n }\n }\n\n /** @hidden Emits an array of active menu items */\n private _emitActivePath(): void {\n this.menuComponent.activePath.emit(this.activeNodePath.map((node) => node.item) as MenuItemComponent[]);\n }\n\n /** @hidden Depending on direction returns closest enabled sibling of given node */\n private _closestEnabled(node: MenuNode, direction: 'up' | 'down'): MenuNode | null {\n const siblings =\n direction === 'up' ? [...(this._nodeSiblings(node) ?? [])].reverse() : this._nodeSiblings(node);\n\n if (siblings) {\n const startIndex = siblings.indexOf(node) + 1;\n\n for (let i = startIndex; i < siblings.length; i++) {\n if (siblings[i].item && !siblings[i].item!.disabled) {\n return siblings[i];\n }\n }\n }\n\n return null;\n }\n}\n","import {\n AfterContentInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Inject,\n InjectionToken,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { defer, fromEvent, Observable, Subject, Subscription, timer } from 'rxjs';\nimport { filter, switchMap, takeUntil } from 'rxjs/operators';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { DefaultMenuItem } from '../default-menu-item.class';\nimport { MenuTitleDirective } from '../directives/menu-title.directive';\nimport { MenuInteractiveComponent } from '../menu-interactive.component';\nimport { FD_MENU_ITEM_COMPONENT } from '../menu.tokens';\nimport { MenuService } from '../services/menu.service';\n\nlet menuUniqueId = 0;\n\nexport interface BaseSubmenu {\n templateRef: TemplateRef<any>;\n menuItems: MenuItemComponent[];\n menuService: MenuService;\n ariaLabel: Nullable<string>;\n ariaLabelledby: Nullable<string>;\n _menuItemsChange$: Observable<void>;\n\n _registerItem(item: MenuItemComponent): void;\n\n _unregisterItem(item: MenuItemComponent): void;\n}\n\nexport const SUBMENU = new InjectionToken<BaseSubmenu>('Submenu component dependency');\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'li[fd-menu-item]',\n exportAs: 'fd-menu-item',\n templateUrl: './menu-item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.role]': '\"menuitem\"',\n '[class.fd-menu__item]': 'true',\n '[class.fd-menu--full-width]': 'menuService?.menuComponent?.mobile || false'\n },\n imports: [NgTemplateOutlet],\n providers: [\n {\n provide: FD_MENU_ITEM_COMPONENT,\n useExisting: forwardRef(() => MenuItemComponent)\n }\n ]\n})\nexport class MenuItemComponent implements DefaultMenuItem, OnInit, OnChanges, AfterContentInit, OnDestroy {\n /** Set the Menu Item as disabled/enabled */\n @Input()\n disabled = false;\n\n /** Menu Item id attribute value */\n @Input()\n itemId = `fd-menu-item-${menuUniqueId++}`;\n\n /** Reference to sub-menu component */\n @Input()\n submenu: BaseSubmenu | undefined;\n\n /** Reference to the parent submenu if nested menus created dynamically */\n @Input()\n parentSubmenu: BaseSubmenu | undefined;\n\n /** Whether the menu item has a separator */\n @Input({ transform: booleanAttribute })\n @HostBinding('class.has-separator')\n hasSeparator = false;\n\n /** Emitted when the menu item is selected. */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onSelect: EventEmitter<void> = new EventEmitter<void>();\n\n /** @hidden Reference to the Menu Item title */\n @ContentChild(MenuTitleDirective)\n menuItemTitle: MenuTitleDirective;\n\n /** @hidden Reference to the Menu Item interactive element */\n @ContentChild(MenuInteractiveComponent)\n menuInteractive: MenuInteractiveComponent;\n\n /** @hidden Whether sub-menu is currently visible*/\n submenuVisible = false;\n\n /** @hidden */\n private _subscriptions: Subscription = new Subscription();\n\n /** @hidden */\n private _hoverSubscriptions: Subscription = new Subscription();\n\n /** @hidden */\n constructor(\n public elementRef: ElementRef,\n @Optional() public menuService: MenuService | null,\n private _changeDetectorRef: ChangeDetectorRef,\n @Optional() @Inject(SUBMENU) private _submenu: BaseSubmenu | null\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n if (this.parentSubmenu) {\n this._submenu = this.parentSubmenu;\n this._submenu._registerItem(this);\n }\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._setMenuService();\n this._initialiseItemState();\n this._listenOnMenuLinkClick();\n this._listenOnOuterFocus();\n this._listenOnMenuMode();\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['disabled'] && !changes['disabled'].firstChange) {\n this.menuInteractive.setDisabled(this.disabled);\n }\n if (changes['submenu'] && !changes['submenu'].firstChange) {\n this.menuInteractive.setSubmenu(!!this.submenu, this.submenu ? this.itemId : undefined);\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n if (this.parentSubmenu) {\n this._submenu?._unregisterItem(this);\n }\n\n this._subscriptions.unsubscribe();\n this._hoverSubscriptions.unsubscribe();\n }\n\n /** Whether menu item has popup (desktop mode) */\n get hasPopup(): boolean {\n return !!this.submenu && (!this.menuService?.menuComponent || !this.menuService?.menuComponent.mobile);\n }\n\n /** Focuses Menu Item interactive element */\n focus(): void {\n if (this.menuInteractive) {\n this.menuInteractive.elementRef.nativeElement.focus();\n }\n }\n\n /** Clicks Menu Item interactive element */\n click(): void {\n if (this.menuInteractive) {\n this.menuInteractive.elementRef.nativeElement.click();\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /** @hidden Sets menu item as selected/unselected based on isSelected flag */\n setSelected(isSelected: boolean, fromSplit?: boolean): void {\n this.menuInteractive.setSelected(isSelected);\n this.submenuVisible = isSelected && !!this.submenu;\n if (!fromSplit) {\n this.onSelect.emit();\n }\n this._changeDetectorRef.markForCheck();\n }\n\n /** @hidden Creates click listener on menu item interactive element */\n private _listenOnMenuLinkClick(): void {\n this._subscriptions.add(\n fromEvent(this.menuInteractive.elementRef.nativeElement, 'click').subscribe(() =>\n this.menuService?.setActive(true, this)\n )\n );\n }\n\n /** @hidden Creates hover listeners for activating/deactivating menu item */\n private _listenOnMenuLinkHover(): Subscription {\n const hoverSubscriptions: Subscription = new Subscription();\n\n const mouseEnter$: Observable<MouseEvent> = fromEvent(\n this.menuInteractive.elementRef.nativeElement,\n 'mouseenter'\n );\n const mouseLeave$: Observable<MouseEvent> = fromEvent(\n this.menuInteractive.elementRef.nativeElement,\n 'mouseleave'\n );\n\n const timerFactory$ = defer(() =>\n timer(this.menuService ? this.menuService.menuComponent.openOnHoverTime : 0).pipe(takeUntil(mouseLeave$))\n );\n\n // Set active on hover\n hoverSubscriptions.add(\n mouseEnter$\n .pipe(\n filter(() => !!this.menuService),\n switchMap(() => timerFactory$)\n )\n .subscribe(() => {\n if (this.submenu) {\n // Open submenu\n this.menuService!.setActive(true, this);\n }\n if (!this.submenu) {\n // Close sibling submenu if opened\n this.menuService!.setInactiveSiblingMenuItem(this);\n }\n })\n );\n\n return hoverSubscriptions;\n }\n\n /** @hidden Initializes menu link state based on item initial state */\n private _initialiseItemState(): void {\n this.menuInteractive.setSubmenu(!!this.submenu, this.itemId);\n this.menuInteractive.setDisabled(this.disabled);\n }\n\n /** @hidden Checks for Menu Service dependency and passes it if further */\n private _setMenuService(): void {\n this.menuService = this.menuService || this._submenu?.menuService || null;\n if (this.submenu && this.menuService) {\n this.submenu.menuService = this.menuService;\n }\n }\n\n /** @hidden Listen on menu mode and set proper mode listeners */\n private _listenOnMenuMode(): void {\n this.menuService?.isMobileMode.subscribe((isMobile) => {\n this._hoverSubscriptions.unsubscribe();\n if (!isMobile) {\n this._hoverSubscriptions = this._listenOnMenuLinkHover();\n }\n });\n }\n\n /** @hidden Updates focused menu item on outer focus */\n private _listenOnOuterFocus(): void {\n this._subscriptions.add(\n fromEvent(this.menuInteractive.elementRef.nativeElement, 'focus').subscribe(() => {\n if (this.menuService && this.menuService.focusedNode !== this.menuService.menuMap.get(this)) {\n this.menuService.setFocused(this);\n }\n })\n );\n }\n}\n\n@Component({\n selector: 'fd-submenu',\n template: `\n <ng-template>\n <ng-content></ng-content>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: SUBMENU, useExisting: SubmenuComponent }],\n exportAs: 'fdSubmenu',\n standalone: true\n})\nexport class SubmenuComponent implements BaseSubmenu, AfterContentInit {\n /** Aria-label for navigation */\n @Input()\n ariaLabel: Nullable<string>;\n\n /** Aria-Labelledby for element describing navigation */\n @Input()\n ariaLabelledby: Nullable<string>;\n\n /** @hidden Reference to template with Submenu items */\n @ViewChild(TemplateRef) templateRef: TemplateRef<any>;\n\n /** @hidden Reference to Submenu MenuItems */\n @ContentChildren(FD_MENU_ITEM_COMPONENT)\n _projectedItems: QueryList<MenuItemComponent>;\n\n /** @hidden */\n _registeredItems: MenuItemComponent[] = [];\n\n /** @hidden Reference to MenuService used by MenuItems */\n menuService: MenuService;\n\n /** @hidden */\n _menuItemsChange$ = new Subject<void>();\n\n /** @hidden */\n get menuItems(): MenuItemComponent[] {\n return this._projectedItems.length ? this._projectedItems.toArray() : this._registeredItems;\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._projectedItems.changes.subscribe(() => this._menuItemsChange$.next());\n }\n\n /** @hidden method for manually registering item when it's not visible for @ContentChildren */\n _registerItem(item: MenuItemComponent): void {\n this._registeredItems.push(item);\n this._menuItemsChange$.next();\n }\n\n /** @hidden method for manually unregistering item when it's not visible for @ContentChildren */\n _unregisterItem(item: MenuItemComponent): void {\n this._registeredItems = this._registeredItems.filter((i) => i !== item);\n this._menuItemsChange$.next();\n }\n}\n","<ng-content></ng-content>\n@if (hasPopup && submenu) {\n <ul\n class=\"fd-menu__sublist\"\n role=\"menu\"\n [attr.id]=\"itemId\"\n [attr.aria-hidden]=\"!submenuVisible\"\n [attr.aria-label]=\"submenu.ariaLabel\"\n [attr.aria-labelledby]=\"submenu.ariaLabelledby\"\n >\n <ng-template [ngTemplateOutlet]=\"submenu.templateRef\"></ng-template>\n </ul>\n}\n","import { AfterViewInit, Directive, ElementRef, HostBinding, Input, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { MenuItemComponent } from '../menu-item/menu-item.component';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-menu-shortcut]',\n standalone: true\n})\nexport class MenuShortcutDirective implements AfterViewInit, OnDestroy {\n /** Hide shortcuts in mobile mode */\n @Input()\n hideOnMobile = true;\n\n /** @hidden */\n @HostBinding('class.fd-menu__shortcut')\n readonly fdMenuShortcutClass: boolean = true;\n\n /** @hidden */\n private _subscriptions: Subscription = new Subscription();\n\n /** @hidden */\n constructor(\n private _menuItem: MenuItemComponent,\n private _elementRef: ElementRef\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._hideOnMobile();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n private _hideOnMobile(): void {\n this._subscriptions.add(\n this._menuItem.menuService?.isMobileMode.pipe(filter(() => this.hideOnMobile)).subscribe((isMobile) => {\n if (isMobile) {\n this._elementRef.nativeElement.style.display = 'none';\n } else {\n this._elementRef.nativeElement.style.display = null;\n }\n })\n );\n }\n}\n","import { Directive, ElementRef, HostBinding, Input, OnDestroy } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { Subscription } from 'rxjs';\n\nimport { MenuComponent } from '../menu.component';\n\n@Directive({\n selector: '[fdMenuTrigger]',\n standalone: true\n})\nexport class MenuTriggerDirective implements OnDestroy {\n /** Set reference to Menu Component */\n @Input('fdMenuTrigger')\n set menu(menu: MenuComponent | undefined) {\n this._unsubscribeFromMenu();\n\n if (menu) {\n menu.trigger = this._elementRef;\n this._subscribeToMenu(menu);\n }\n\n this._setAriaAttributes(menu);\n }\n\n /** @hidden */\n @HostBinding('attr.aria-haspopup')\n ariaHasPopup: Nullable<boolean>;\n\n /** @hidden */\n @HostBinding('attr.aria-controls')\n ariaControls: Nullable<string>;\n\n /** @hidden */\n @HostBinding('attr.aria-expanded')\n ariaExpanded: Nullable<boolean>;\n\n /** @hidden */\n private _menuSubscription: Subscription = new Subscription();\n\n /** @hidden */\n constructor(private _elementRef: ElementRef) {}\n\n /** @hidden */\n ngOnDestroy(): void {\n this._unsubscribeFromMenu();\n }\n\n /** @hidden */\n private _subscribeToMenu(menu: MenuComponent): void {\n this._menuSubscription.add(\n menu.isOpenChange.subscribe(() => {\n this._setAriaAttributes(menu);\n })\n );\n }\n\n /** @hidden */\n private _unsubscribeFromMenu(): void {\n this._menuSubscription.unsubscribe();\n this._menuSubscription = new Subscription();\n }\n\n /** @hidden */\n private _setAriaAttributes(menu?: MenuComponent): void {\n this.ariaHasPopup = !!menu;\n this.ariaExpanded = menu?.isOpen;\n this.ariaControls = menu?.isOpen ? menu.id : null;\n }\n}\n","import { AfterViewInit, DestroyRef, Directive, ElementRef, inject, Input } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CvaControl, CvaDirective, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\nimport { BehaviorSubject, combineLatest, map, merge, of, switchMap, tap } from 'rxjs';\nimport { MenuItemComponent } from '../../menu-item/menu-item.component';\nimport { FD_MENU_ITEM_COMPONENT } from '../../menu.tokens';\nimport { SegmentedButtonOptionDirective } from './segmented-button-option.directive';\n\nconst strictEquals = (a: unknown, b: unknown): boolean => a === b;\n\n@Directive({\n selector: 'li[fd-menu-item][fdMenuSegmentedButtonHeader]',\n standalone: true,\n hostDirectives: [\n {\n directive: CvaDirective,\n inputs: ['id:inputId', 'stateMessage', 'disabled', 'readonly', 'name']\n }\n ],\n providers: [\n CvaControl,\n { provide: FD_FORM_FIELD_CONTROL, useExisting: SegmentedButtonHeaderDirective, multi: true }\n ]\n})\nexport class SegmentedButtonHeaderDirective<T> implements AfterViewInit, HasElementRef {\n /** @hidden */\n @Input()\n valueComparator: (a: T, b: T) => boolean = strictEquals;\n\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n /** @hidden */\n readonly menuItem = inject<MenuItemComponent>(FD_MENU_ITEM_COMPONENT, { host: true });\n\n /** @hidden */\n private _cvaControl: CvaControl<T> = inject(CvaControl)!;\n /** @hidden */\n private _destroyRef = inject(DestroyRef)!;\n\n /** @hidden */\n private _options$ = new BehaviorSubject<SegmentedButtonOptionDirective<T>[]>([]);\n\n /** @hidden */\n constructor() {\n this.menuItem.hasSeparator = true;\n }\n\n /** @hidden */\n setOptions(options: SegmentedButtonOptionDirective<T>[]): void {\n this._options$.next(options);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._cvaControl.listenToChanges();\n combineLatest([this._options$, this._cvaControl.cvaDirective?.ngControl?.valueChanges || of(undefined)])\n .pipe(\n tap(([options, value]) => {\n options.forEach((option, index) => {\n option.menuItem.hasSeparator = index === options.length - 1;\n option.selected = this.valueComparator(option.value, value);\n });\n }),\n switchMap(([options]) =>\n merge(...options.map((option) => option.clicked.pipe(map(() => option.value))))\n ),\n tap((val) => this._cvaControl.cvaDirective?.setValue(val)),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n}\n","import { DomPortal } from '@angular/cdk/portal';\nimport { AfterViewInit, Directive, ElementRef, HostListener, inject, Input, NgZone, Renderer2 } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\nimport { BehaviorSubject, combineLatest, delayWhen, Observable, Subject, tap } from 'rxjs';\nimport { MenuItemComponent } from '../../menu-item/menu-item.component';\nimport { FD_MENU_ITEM_COMPONENT } from '../../menu.tokens';\n\n@Directive({\n selector: 'li[fd-menu-item][fdMenuSegmentedButtonOption]',\n standalone: true\n})\nexport class SegmentedButtonOptionDirective<T> implements AfterViewInit, HasElementRef {\n /** @hidden */\n @Input() value: T;\n\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n\n /** @hidden */\n readonly menuItem = inject<MenuItemComponent>(FD_MENU_ITEM_COMPONENT, { host: true });\n\n /** @hidden */\n readonly clicked: Observable<void>;\n\n /** @hidden */\n readonly renderer2 = inject(Renderer2);\n\n /** @hidden */\n private _clicked = new Subject<void>();\n\n /** @hidden */\n private _dotElement: HTMLSpanElement;\n\n /** @hidden */\n private _viewInit$ = new Subject<void>();\n\n /** @hidden */\n private _selected$ = new BehaviorSubject<boolean>(false);\n\n /** @hidden */\n constructor() {\n this.clicked = this._clicked.asObservable();\n const ngZone = inject(NgZone);\n combineLatest([this._viewInit$.pipe(delayWhen(() => ngZone.onStable.asObservable())), this._selected$])\n .pipe(\n tap(() => {\n if (!this._dotElement) {\n this._createDot();\n }\n }),\n tap(([, selected]) => {\n selected ? this._showDot() : this._hideDot();\n }),\n takeUntilDestroyed()\n )\n .subscribe();\n }\n\n /** @hidden */\n @HostListener('click', ['$event'])\n @HostListener('keydown.enter', ['$event'])\n @HostListener('keydown.space', ['$event'])\n _onClick($event: MouseEvent | KeyboardEvent): void {\n $event.preventDefault();\n this._clicked.next();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._viewInit$.next();\n }\n\n /** @hidden */\n private _createDot(): void {\n this._dotElement = this.renderer2.createElement('span');\n this.renderer2.appendChild(this.elementRef.nativeElement, this._dotElement);\n this.renderer2.addClass(this._dotElement, 'fd-menu__active-dot');\n this.renderer2.setAttribute(this._dotElement, 'role', 'presentation');\n this._hideDot();\n const addonDirective = this.menuItem.menuInteractive.startAddon;\n const addonGlyph = addonDirective._addonGlyph;\n addonGlyph.renderElement(new DomPortal(this._dotElement)).subscribe();\n }\n\n /** @hidden */\n private _showDot(): void {\n this.renderer2.setAttribute(this._dotElement, 'aria-hidden', 'false');\n this.renderer2.setStyle(this._dotElement, 'display', 'inline-block');\n }\n\n /** @hidden */\n private _hideDot(): void {\n this.renderer2.setAttribute(this._dotElement, 'aria-hidden', 'true');\n this.renderer2.setStyle(this._dotElement, 'display', 'none');\n }\n\n /** @hidden */\n set selected(isSelected: boolean) {\n this._selected$.next(isSelected);\n }\n}\n","import { AfterViewInit, DestroyRef, Directive, HostListener, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CvaControl, CvaDirective, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\nimport { tap } from 'rxjs';\nimport { MenuInteractiveComponent } from '../menu-interactive.component';\nimport { TOGGLE_MENU_ITEM } from '../menu.tokens';\n\n@Directive({\n selector: 'button[fd-menu-interactive][toggle]',\n standalone: true,\n hostDirectives: [\n {\n directive: CvaDirective,\n inputs: ['id:inputId', 'stateMessage', 'disabled', 'readonly', 'name']\n }\n ],\n providers: [\n CvaControl,\n { provide: FD_FORM_FIELD_CONTROL, useExisting: ToggleButtonDirective, multi: true },\n { provide: TOGGLE_MENU_ITEM, useExisting: ToggleButtonDirective }\n ]\n})\nexport class ToggleButtonDirective implements AfterViewInit {\n /** @hidden */\n private _cvaControl = inject<CvaControl<boolean>>(CvaControl);\n\n /** @hidden */\n private _destroyRef = inject(DestroyRef)!;\n\n /** @hidden */\n private _interactiveItemComponent = inject(MenuInteractiveComponent, { host: true });\n\n /**\n * Listen on interaction events that should cause the value update\n * */\n @HostListener('click', ['$event'])\n onClick(): void {\n this._cvaControl.cvaDirective?.setValue(!this._cvaControl.cvaDirective!.value);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._cvaControl.listenToChanges();\n this._cvaControl.cvaDirective?.ngControl?.valueChanges\n ?.pipe(\n tap((value: boolean) => {\n this._interactiveItemComponent.startAddon._addonGlyph.glyph = value ? 'accept' : undefined;\n }),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n}\n","import { Directive, ElementRef, inject } from '@angular/core';\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\n\n/**\n * @deprecated\n * Use `hasSeparator` input on a `fd-menu-item` instead.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'fd-menu-separator',\n host: {\n '[style.display]': '\"none\"'\n },\n standalone: true\n})\nexport class MenuSeparatorDirective implements HasElementRef {\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n\n /** @hidden */\n constructor() {\n console.error(\n '<fd-menu-separator> has been removed. Use `hasSeparator` input on a `fd-menu-item` instead.',\n this.elementRef.nativeElement\n );\n }\n}\n\n// Exporting as a old class name for the backward compatibility.\nexport { MenuSeparatorDirective as MenuSeparatorComponent };\n","export abstract class DefaultMenuItem {\n abstract focus(): void;\n abstract click(): void;\n}\n","import { EventEmitter, InjectionToken } from '@angular/core';\nimport { DialogConfig } from '@fundamental-ngx/core/dialog';\nimport { MobileMode } from '@fundamental-ngx/core/mobile-mode';\nimport { MenuItemComponent } from './menu-item/menu-item.component';\n\nexport const MENU_COMPONENT = new InjectionToken<string[]>('MenuInterface');\n\n/**\n * Menu Interface to have typing and avoid circular dependency between\n * MenuComponent <==> MenuMobileComponent\n */\nexport interface MenuInterface extends MobileMode {\n activePath: EventEmitter<MenuItemComponent[]>;\n dialogConfig: DialogConfig;\n isOpenChange: EventEmitter<boolean>;\n\n close(): void;\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Inject,\n NgZone,\n OnInit,\n Optional,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n computed,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { InitialFocusDirective, RtlService, TemplateDirective, TemplateModule } from '@fundamental-ngx/cdk/utils';\nimport {\n BarElementDirective,\n BarLeftDirective,\n BarRightDirective,\n ButtonBarComponent\n} from '@fundamental-ngx/core/bar';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { ContentDensityDirective } from '@fundamental-ngx/core/content-density';\nimport {\n DialogBodyComponent,\n DialogCloseButtonComponent,\n DialogComponent,\n DialogFooterComponent,\n DialogHeaderComponent\n} from '@fundamental-ngx/core/dialog';\nimport { MobileModeBase, MobileModeControl } from '@fundamental-ngx/core/mobile-mode';\nimport { TitleComponent, TitleModule } from '@fundamental-ngx/core/title';\nimport { startWith, take } from 'rxjs/operators';\nimport { MenuItemComponent } from '../menu-item/menu-item.component';\nimport { MENU_COMPONENT, MenuInterface } from '../menu.interface';\nimport { MenuService } from '../services/menu.service';\n\n@Component({\n selector: 'fd-menu-mobile',\n templateUrl: './menu-mobile.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n TemplateModule,\n BarLeftDirective,\n BarRightDirective,\n BarElementDirective,\n ButtonBarComponent,\n TitleComponent,\n TemplateDirective,\n BarLeftDirective,\n BarRightDirective,\n BarElementDirective,\n ButtonBarComponent,\n ButtonComponent,\n ContentDensityDirective,\n TitleModule,\n NgTemplateOutlet,\n InitialFocusDirective,\n DialogComponent,\n DialogBodyComponent,\n DialogHeaderComponent,\n DialogCloseButtonComponent,\n DialogFooterComponent\n ]\n})\nexport class MenuMobileComponent extends MobileModeBase<MenuInterface> implements OnInit {\n /** @hidden */\n @ViewChild('dialogTemplate') dialogTemplate: TemplateRef<any>;\n\n /** Current menu title */\n title$ = signal('');\n\n /** Whether current menu level is submenu */\n isSubmenu$ = signal(false);\n\n /** @hidden External content */\n childContent: TemplateRef<any> | null = null;\n\n /** @hidden Currently rendered menu view */\n view$ = signal<TemplateRef<any> | null>(null);\n\n /** @hidden Navigation icon name based on RTL */\n navigationIcon$ = computed(() =>\n this._rtlService?.rtlSignal() ? 'navigation-right-arrow' : 'navigation-left-arrow'\n );\n\n /** @hidden */\n @ViewChild(DialogBodyComponent)\n set _watch(_dialogBody: DialogBodyComponent) {\n if (_dialogBody) {\n this._menuService.addKeyboardSupport(_dialogBody.elementRef);\n }\n }\n\n /** @hidden */\n constructor(\n private _menuService: MenuService,\n private _ngZone: NgZone,\n @Optional() private _rtlService: RtlService,\n @Inject(MENU_COMPONENT) menuComponent: MenuInterface\n ) {\n super(menuComponent, MobileModeControl.MENU);\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._listenOnActivePathChange();\n this._listenOnMenuOpenChange();\n }\n\n /** Closes the Dialog and Menu component */\n close(): void {\n this.dialogRef.close();\n this._component.close();\n }\n\n /** Navigate back to parent level of submenu */\n backToParentLevel(): void {\n const menuItem = this._menuService.activeNodePath[this._menuService.activeNodePath.length - 1].item;\n this._menuService.setActive(false, menuItem);\n this._executeOnStable(() => {\n menuItem?.focus();\n });\n }\n\n /** @hidden Opens the Dialog */\n private _openDialog(): void {\n this.dialogRef = this._dialogService.open(this.dialogTemplate, {\n mobile: true,\n disablePaddings: true,\n ...this.dialogConfig,\n escKeyCloseable: false,\n backdropClickCloseable: false,\n container: this._elementRef.nativeElement\n });\n }\n\n /** @hidden Listens on Active Path changes and updates mobile view */\n private _listenOnActivePathChange(): void {\n const initialItemPath: MenuItemComponent[] = this._menuService.activeNodePath\n .map((node) => node.item)\n .filter((v): v is MenuItemComponent => !!v);\n this._component.activePath\n .pipe(startWith(initialItemPath), takeUntilDestroyed(this._destroyRef))\n .subscribe((items) => this._setMenuView(items));\n }\n\n /**\n * @hidden\n * Executes a function when the zone is stable.\n */\n private _executeOnStable(fn: () => any): void {\n if (this._ngZone.isStable) {\n fn();\n } else {\n this._ngZone.onStable.pipe(take(1)).subscribe(fn);\n }\n }\n\n /** @hidden Sets menu view, title and isSubmenu flag */\n private _setMenuView(items: MenuItemComponent[]): void {\n const lastItem: MenuItemComponent = items[items.length - 1];\n this.isSubmenu$.set(!!items.length);\n this.title$.set(this._getDialogTitle(lastItem));\n this.view$.set(this._getMenuView(lastItem));\n this._executeOnStable(() => {\n this._menuService.focusedNode?.item?.focus();\n });\n }\n\n /** @hidden Opens/closes the Dialog based on Menu isOpenChange events */\n private _listenOnMenuOpenChange(): void {\n this._component.isOpenChange\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((isOpen) => (isOpen ? this._openDialog() : this.dialogRef.close()));\n }\n\n /** @hidden Returns dialog title */\n private _getDialogTitle(menuItem: MenuItemComponent): string {\n if (this.isSubmenu$()) {\n return menuItem.menuItemTitle ? menuItem.menuItemTitle.title : '';\n }\n\n return this.mobileConfig.title || '';\n }\n\n /** @hidden Returns dialog content view */\n private _getMenuView(menuItem: MenuItemComponent): TemplateRef<any> | null {\n if (this.isSubmenu$()) {\n return menuItem.submenu ? menuItem.submenu.templateRef : this.view$();\n }\n return this.childContent;\n }\n}\n","<ng-template [fdDialogTemplate] let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n @if (isSubmenu$()) {\n <fd-bar-element>\n <button\n fd-button\n fdType=\"transparent\"\n id=\"menu-mobile-navigate-back\"\n fdCozy\n [attr.aria-label]=\"'Go to previous menu level: ' + title$()\"\n [glyph]=\"navigationIcon$()\"\n (click)=\"backToParentLevel()\"\n ></button>\n </fd-bar-element>\n }\n <fd-bar-element>\n <h1 fd-title>{{ title$() }}</h1>\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-bar-element>\n @if (this.mobileConfig.hasCloseButton) {\n <button fd-dialog-close-button [mobile]=\"true\" (click)=\"close()\"></button>\n }\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n <ng-template [ngTemplateOutlet]=\"(isSubmenu$() ? subMenuTemplate : view$()) || null\"> </ng-template>\n </fd-dialog-body>\n @if (mobileConfig.approveButtonText || mobileConfig.cancelButtonText) {\n <fd-dialog-footer>\n @if (mobileConfig.approveButtonText) {\n <fd-button-bar fdType=\"emphasized\" [label]=\"mobileConfig.approveButtonText\" (click)=\"close()\">\n </fd-button-bar>\n }\n @if (mobileConfig.cancelButtonText) {\n <fd-button-bar fdkInitialFocus [label]=\"mobileConfig.cancelButtonText\" (click)=\"close()\">\n </fd-button-bar>\n }\n </fd-dialog-footer>\n }\n </fd-dialog>\n</ng-template>\n<ng-template #subMenuTemplate>\n <nav class=\"fd-menu fd-menu--mobile\">\n <ul class=\"fd-menu__sublist\">\n <ng-template [ngTemplateOutlet]=\"view$()\"></ng-template>\n </ul>\n </nav>\n</ng-template>\n","import {\n AfterContentInit,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n Renderer2,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { combineLatest, map, startWith, Subscription, tap } from 'rxjs';\n\nimport { DynamicComponentService, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { DialogConfig } from '@fundamental-ngx/core/dialog';\nimport { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';\nimport { BasePopoverClass, PopoverService } from '@fundamental-ngx/core/popover';\n\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { SegmentedButtonHeaderDirective } from './directives/segmented-button/segmented-button-header.directive';\nimport { SegmentedButtonOptionDirective } from './directives/segmented-button/segmented-button-option.directive';\nimport { MenuItemComponent } from './menu-item/menu-item.component';\nimport { MenuMobileComponent } from './menu-mobile/menu-mobile.component';\nimport { MENU_COMPONENT, MenuInterface } from './menu.interface';\nimport { FD_MENU_COMPONENT, FD_MENU_ITEM_COMPONENT } from './menu.tokens';\nimport { MenuService } from './services/menu.service';\n\nlet menuUniqueId = 0;\n\n/**\n * The component that represents a menu.\n */\n@Component({\n selector: 'fd-menu',\n templateUrl: './menu.component.html',\n styleUrl: 'menu.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n MenuService,\n PopoverService,\n DynamicComponentService,\n {\n provide: FD_MENU_COMPONENT,\n useExisting: forwardRef(() => MenuComponent)\n },\n contentDensityObserverProviders()\n ],\n standalone: true\n})\nexport class MenuComponent\n extends BasePopoverClass\n implements MenuInterface, AfterContentInit, AfterViewInit, OnDestroy, OnInit\n{\n /** Set menu in mobile mode */\n @Input({ transform: booleanAttribute })\n set mobile(value: boolean) {\n this._mobile = value;\n this._menuService.setMenuMode(this.mobile);\n }\n\n get mobile(): boolean {\n return this._mobile;\n }\n\n /** Whether the popover is disabled. */\n @Input()\n disabled = false;\n\n /** Whether the popover should be focusTrapped. */\n @Input()\n focusTrapped = true;\n\n /**\n * Whether the popover should automatically move focus into the trapped region upon\n * initialization and return focus to the previous activeElement upon destruction.\n */\n @Input()\n focusAutoCapture = true;\n\n /** Open submenu on hover after given milliseconds */\n @Input()\n openOnHoverTime = 0;\n\n /** Display menu without integrated popover */\n @Input()\n mobileConfig: MobileModeConfig = { cancelButtonText: 'Cancel' };\n\n /** Aria-label for navigation */\n @Input()\n ariaLabel: Nullable<string>;\n\n /** Aria-Labelledby for element describing navigation */\n @Input()\n ariaLabelledby: Nullable<string>;\n\n /** Id of the control. */\n @Input()\n id = `fd-menu-${menuUniqueId++}`;\n\n /** Emits array of active menu items */\n @Output()\n readonly activePath = new EventEmitter<MenuItemComponent[]>();\n\n /** @hidden Reference to the menu root template */\n @ViewChild('menuRootTemplate')\n _menuRootTemplate: TemplateRef<any>;\n\n /** @hidden Reference to all menu Items */\n @ContentChildren(FD_MENU_ITEM_COMPONENT)\n _menuItems: QueryList<MenuItemComponent>;\n\n /** @hidden Menu item segmented item headers */\n @ContentChildren(SegmentedButtonHeaderDirective)\n _segmentedButtonHeaderItems: QueryList<SegmentedButtonHeaderDirective<unknown>>;\n\n /** @hidden Menu item segmented item options */\n @ContentChildren(SegmentedButtonOptionDirective)\n _segmentedButtonOptions: QueryList<SegmentedButtonOptionDirective<unknown>>;\n\n /** @hidden */\n _navContainerRole = 'menu';\n\n /** @hidden */\n _menuListContainerRole = 'none';\n\n /** @hidden Whether use a menu in mobile mode */\n private _mobile = false;\n\n /** @hidden Reference to external menu trigger */\n private _externalTrigger: ElementRef;\n\n /** @hidden */\n private _addons: Set<unknown> = new Set();\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n private _mobileModeComponentRef: ComponentRef<MenuMobileComponent>;\n\n /** @hidden */\n private _clickEventListener: null | (() => void);\n\n /** @hidden */\n get hasAddons(): boolean {\n return this._addons.size > 0;\n }\n\n /** @hidden */\n private get _popoverConfig(): BasePopoverClass {\n return {\n ...this,\n additionalBodyClass: (this.additionalBodyClass ?? '') + ' fd-popover--menu'\n };\n }\n\n /** @hidden */\n constructor(\n public readonly elementRef: ElementRef,\n @Optional() public readonly dialogConfig: DialogConfig,\n private readonly _rendered: Renderer2,\n private readonly _menuService: MenuService,\n private readonly _changeDetectorRef: ChangeDetectorRef,\n private readonly _popoverService: PopoverService,\n private readonly _injector: Injector,\n private readonly _viewContainerRef: ViewContainerRef,\n @Optional() private readonly _dynamicComponentService: DynamicComponentService,\n readonly _contentDensityObserver: ContentDensityObserver\n ) {\n super();\n }\n\n /** @hidden */\n ngOnInit(): void {\n /** keep isOpen up to date */\n this.isOpenChange.subscribe((isOpen) => {\n this.isOpen = isOpen;\n\n // when popover got closed by its own mechanism (e.x. click outside)\n // we need to clean up a menu as well\n if (!isOpen) {\n this._cleanUpMenuAfterClose();\n }\n\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /** Register addon */\n registerAddon(addon: unknown): void {\n this._addons.add(addon);\n this._changeDetectorRef.markForCheck();\n }\n\n /** Unregister addon */\n unregisterAddon(addon: unknown): void {\n this._addons.delete(addon);\n this._changeDetectorRef.markForCheck();\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._menuService.setMenuComponent(this);\n this._listenOnMenuItemsChange();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._menuService.isMobileMode.subscribe((isMobile) => {\n this._setupView();\n\n // Since it is mobile, it's needed to disable popoverService\n if (isMobile) {\n this._popoverService.deactivate();\n }\n });\n\n this._menuService.setMenuMode(this.mobile);\n\n combineLatest([\n this._menuItems.changes.pipe(\n startWith(this._menuItems),\n map((items) => items.toArray())\n ),\n this._segmentedButtonHeaderItems.changes.pipe(\n startWith(this._segmentedButtonHeaderItems),\n map((items) => items.toArray())\n ),\n this._segmentedButtonOptions.changes.pipe(\n startWith(this._segmentedButtonOptions),\n map((items) => items.toArray())\n )\n ])\n .pipe(\n map(([menuItems, segmentedButtonHeaderItems, segmentedButtonOptions]) =>\n menuItems.map((item, index) => ({\n menuItem: item,\n segmentedButtonHeaderItem: segmentedButtonHeaderItems.find(\n (headerItem) => headerItem.elementRef.nativeElement === item.elementRef.nativeElement\n ),\n segmentedButtonOption: segmentedButtonOptions.find(\n (option) => option.elementRef.nativeElement === item.elementRef.nativeElement\n ),\n index\n }))\n ),\n map((items) => {\n let headers = items.filter((item) => !!item.segmentedButtonHeaderItem);\n const options = items.filter((item) => !!item.segmentedButtonOption);\n headers = headers.map((header, headerIndex) => ({\n ...header,\n options: options.reduce((acc, option) => {\n const lastOption = acc[acc.length - 1];\n const optionIndex = option.index;\n if (!lastOption || optionIndex === lastOption.index + 1) {\n if (headerIndex === headers.length - 1 && optionIndex > header.index) {\n acc.push(option);\n } else if (optionIndex > header.index && optionIndex < headers[headerIndex + 1].index) {\n acc.push(option);\n }\n }\n return acc;\n }, [])\n }));\n return headers;\n }),\n tap((headers) =>\n headers.forEach(({ segmentedButtonHeaderItem, options }) => {\n segmentedButtonHeaderItem.setOptions(options.map((option) => option.segmentedButtonOption));\n })\n )\n )\n .subscribe();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._destroyMobileComponent();\n this._destroyEventListeners();\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n set trigger(trigger: ElementRef) {\n this._externalTrigger = trigger;\n this._popoverService.initialise(this._externalTrigger);\n this._destroyEventListeners();\n this._listenOnTriggerRefClicks();\n }\n\n get trigger(): ElementRef {\n return this._externalTrigger;\n }\n\n /** Opens the menu */\n open(): void {\n if (this.mobile) {\n this.isOpen = true;\n this.isOpenChange.emit(this.isOpen);\n } else {\n this._popoverService.open();\n }\n\n this._changeDetectorRef.markForCheck();\n }\n\n /** Closes the menu */\n close(): void {\n if (this.mobile) {\n this.isOpen = false;\n this.isOpenChange.emit(this.isOpen);\n } else {\n this._popoverService.close();\n }\n\n this._cleanUpMenuAfterClose();\n this._focusTrigger();\n this._changeDetectorRef.markForCheck();\n }\n\n /** Toggles menu open/close state */\n toggle(): void {\n this.isOpen ? this.close() : this.open();\n }\n\n /** Method called to refresh position of opened popover */\n refreshPosition(): void {\n this._popoverService.refreshPosition();\n }\n\n /** @hidden */\n detectChanges(): void {\n this._changeDetectorRef.detectChanges();\n }\n\n /** @hidden */\n private _cleanUpMenuAfterClose(): void {\n this._menuService.resetMenuState();\n }\n\n /** @hidden Select and instantiate menu view mode */\n private _setupView(): void {\n if (this.mobile) {\n this._setupMobileMode();\n } else {\n this._setupPopoverService();\n }\n\n this.detectChanges();\n }\n\n /** @hidden */\n private _setupPopoverService(): void {\n this._subscriptions.add(\n this._popoverService._onLoad.subscribe((elementRef) => this._menuService.addKeyboardSupport(elementRef))\n );\n\n this._popoverService.templateContent = this._menuRootTemplate;\n this._popoverService.initialise(this._externalTrigger, this._popoverConfig);\n }\n\n /** @hidden Open Menu in mobile mode */\n private async _setupMobileMode(): Promise<void> {\n const injector = Injector.create({\n providers: [{ provide: MENU_COMPONENT, useValue: this }],\n parent: this._injector\n });\n\n this._mobileModeComponentRef = this._dynamicComponentService.createDynamicComponent(\n this._menuRootTemplate,\n MenuMobileComponent,\n {\n containerRef: this._viewContainerRef\n },\n { injector }\n );\n\n this._listenOnTriggerRefClicks();\n }\n\n /** @hidden Listen on menu items change and rebuild menu */\n private _listenOnMenuItemsChange(): void {\n this._subscriptions.add(this._menuItems.changes.subscribe(() => this._menuService.rebuildMenu()));\n\n // Whether menu have submenu or not.\n let isSubmenu = false;\n this._menuItems.forEach((menuItem) => {\n if (menuItem.submenu?.menuItems) {\n isSubmenu = true;\n this._subscriptions.add(\n menuItem.submenu._menuItemsChange$.subscribe(() => this._menuService.rebuildMenu())\n );\n }\n });\n if (!this.disableScrollbar && isSubmenu) {\n this.disableScrollbar = isSubmenu;\n }\n }\n\n /**\n * @hidden\n * This is going to be removed in feature, on dialog and dynamic service component refactor\n */\n private _listenOnTriggerRefClicks(): void {\n this._destroyEventListeners();\n\n if (this.trigger && this.mobile) {\n this._clickEventListener = this._rendered.listen(this.trigger.nativeElement, 'click', () => this.toggle());\n }\n }\n\n /**\n * @hidden\n * This is going to be removed in feature, on dialog and dynamic service component refactor\n */\n private _destroyEventListeners(): void {\n if (this._clickEventListener) {\n this._clickEventListener();\n this._clickEventListener = null;\n }\n }\n\n /** @hidden */\n private _destroyMobileComponent(): void {\n if (this._mobileModeComponentRef) {\n this._mobileModeComponentRef.destroy();\n }\n }\n\n /** @hidden */\n private _focusTrigger(): void {\n if (this.focusTrapped && this.trigger) {\n this.trigger.nativeElement.focus();\n }\n }\n}\n","<ng-container #viewContainer></ng-container>\n\n<ng-template #menuRootTemplate>\n <div class=\"fd-popover__wrapper--visible\">\n <nav\n class=\"fd-menu\"\n [id]=\"id\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.role]=\"_navContainerRole\"\n [class.fd-menu--mobile]=\"mobile\"\n [class.fd-menu--icons]=\"hasAddons\"\n >\n <ul\n [attr.role]=\"_menuListContainerRole\"\n class=\"fd-menu__list fd-menu__list--no-shadow\"\n [class.fd-menu--full-width]=\"mobile || false\"\n >\n <ng-content></ng-content>\n </ul>\n </nav>\n </div>\n</ng-template>\n","import { PortalModule } from '@angular/cdk/portal';\nimport { NgModule } from '@angular/core';\nimport { DynamicComponentService, InitialFocusModule } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\nimport { GlyphMenuAddonDirective } from './directives/glyph-menu-addon.directive';\nimport { MenuAddonDirective } from './directives/menu-addon.directive';\nimport { MenuItemInputDirective } from './directives/menu-item-input.directive';\nimport { MenuShortcutDirective } from './directives/menu-shortcut.directive';\nimport { MenuTitleDirective } from './directives/menu-title.directive';\nimport { MenuTriggerDirective } from './directives/menu-trigger.directive';\nimport { SegmentedButtonHeaderDirective } from './directives/segmented-button/segmented-button-header.directive';\nimport { SegmentedButtonOptionDirective } from './directives/segmented-button/segmented-button-option.directive';\nimport { ToggleButtonDirective } from './directives/toggle-button.directive';\nimport { MenuInteractiveComponent } from './menu-interactive.component';\nimport { MenuItemComponent, SubmenuComponent } from './menu-item/menu-item.component';\nimport { MenuSeparatorDirective } from './menu-separator.directive';\nimport { MenuComponent } from './menu.component';\n\n@NgModule({\n imports: [\n PopoverModule,\n InitialFocusModule,\n ContentDensityModule,\n GlyphMenuAddonDirective,\n PortalModule,\n MenuComponent,\n MenuItemComponent,\n MenuAddonDirective,\n MenuSeparatorDirective,\n MenuShortcutDirective,\n MenuInteractiveComponent,\n MenuTitleDirective,\n SubmenuComponent,\n MenuTriggerDirective,\n ToggleButtonDirective,\n SegmentedButtonHeaderDirective,\n SegmentedButtonOptionDirective,\n MenuItemInputDirective\n ],\n exports: [\n MenuComponent,\n MenuItemComponent,\n SubmenuComponent,\n MenuSeparatorDirective,\n MenuShortcutDirective,\n MenuInteractiveComponent,\n MenuTitleDirective,\n MenuAddonDirective,\n MenuTriggerDirective,\n ContentDensityModule,\n GlyphMenuAddonDirective,\n ToggleButtonDirective,\n SegmentedButtonHeaderDirective,\n SegmentedButtonOptionDirective,\n MenuItemInputDirective\n ],\n providers: [DynamicComponentService]\n})\nexport class MenuModule {}\n","import { DOWN_ARROW, ENTER, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { Injectable, Output } from '@angular/core';\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { ListItemComponent } from '@fundamental-ngx/core/list';\nimport { Subject } from 'rxjs';\nimport { DefaultMenuItem } from './default-menu-item.class';\n\n@Injectable()\nexport class MenuKeyboardService {\n /** Event emitted when an item link is clicked.*/\n @Output()\n public readonly itemClicked: Subject<number> = new Subject<number>();\n\n /** Whether user wants to remove keyboard handling */\n disableKeydownHandling = false;\n\n /** Function that is supposed to be called, when focus escape before list */\n focusEscapeBeforeList: () => void;\n\n /** Function that is supposed to be called, when focus escape after list */\n focusEscapeAfterList: () => void;\n\n /** Function that should be called every time, keydown event is used on some menu item,\n * it provides whole functionality for handling\n * ArrowDown - focus, ArrowUp - focus, Space bar - simulate click, Enter key - simulate click.\n * @param event KeyboardEvent\n * @param index index of items starts from 0\n * @param menuItems array of menu item directives\n * */\n keyDownHandler(event: KeyboardEvent, index: number, menuItems: DefaultMenuItem[] | ListItemComponent[]): void {\n if (this.disableKeydownHandling) {\n return;\n }\n\n if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n if (menuItems.length > index + 1) {\n menuItems[index + 1].focus();\n } else {\n if (this.focusEscapeAfterList) {\n this.focusEscapeAfterList();\n } else {\n menuItems[0].focus();\n }\n }\n event.preventDefault();\n } else if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n if (index > 0) {\n menuItems[index - 1].focus();\n } else {\n if (this.focusEscapeBeforeList) {\n this.focusEscapeBeforeList();\n } else {\n menuItems[menuItems.length - 1].focus();\n }\n }\n event.preventDefault();\n } else if (KeyUtil.isKeyCode(event, [SPACE, ENTER])) {\n if (menuItems[index]) {\n menuItems[index].click();\n event.preventDefault();\n }\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.GlyphMenuAddonDirective","i1","menuUniqueId","i1.MenuItemComponent","switchMap","i2","startWith","i2.MenuService","i4"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-core-menu.mjs","sources":["../../../../libs/core/menu/menu.tokens.ts","../../../../libs/core/menu/directives/glyph-menu-addon.directive.ts","../../../../libs/core/menu/directives/menu-addon.directive.ts","../../../../libs/core/menu/directives/menu-item-input.directive.ts","../../../../libs/core/menu/directives/menu-title.directive.ts","../../../../libs/core/menu/menu-interactive.component.ts","../../../../libs/core/menu/services/menu.service.ts","../../../../libs/core/menu/menu-item/menu-item.component.ts","../../../../libs/core/menu/menu-item/menu-item.component.html","../../../../libs/core/menu/directives/menu-shortcut.directive.ts","../../../../libs/core/menu/directives/menu-trigger.directive.ts","../../../../libs/core/menu/directives/segmented-button/segmented-button-header.directive.ts","../../../../libs/core/menu/directives/segmented-button/segmented-button-option.directive.ts","../../../../libs/core/menu/directives/toggle-button.directive.ts","../../../../libs/core/menu/menu-separator.directive.ts","../../../../libs/core/menu/default-menu-item.class.ts","../../../../libs/core/menu/menu.interface.ts","../../../../libs/core/menu/menu-mobile/menu-mobile.component.ts","../../../../libs/core/menu/menu-mobile/menu-mobile.component.html","../../../../libs/core/menu/menu.component.ts","../../../../libs/core/menu/menu.component.html","../../../../libs/core/menu/menu.module.ts","../../../../libs/core/menu/menu-keyboard.service.ts","../../../../libs/core/menu/fundamental-ngx-core-menu.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const TOGGLE_MENU_ITEM = new InjectionToken('TOGGLE_MENU_ITEM');\nexport const FD_MENU_COMPONENT = new InjectionToken('FD_MENU_COMPONENT');\nexport const FD_MENU_ITEM_COMPONENT = new InjectionToken('FD_MENU_ITEM_COMPONENT');\n","import { CdkPortalOutlet, ComponentPortal, DomPortal, Portal, TemplatePortal } from '@angular/cdk/portal';\nimport { ComponentRef, DestroyRef, Directive, EmbeddedViewRef, Input, OnDestroy, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { Observable, Subject, combineLatest, first, map, tap } from 'rxjs';\nimport { MenuComponent } from '../menu.component';\nimport { FD_MENU_COMPONENT, TOGGLE_MENU_ITEM } from '../menu.tokens';\n\n@Directive({\n selector: '[fdMenuAddonGlyph], [fd-menu-addon-glyph]',\n standalone: true\n})\nexport class GlyphMenuAddonDirective implements OnDestroy {\n /**\n * The icon name to display. See the icon page for the list of icons\n * here: https://sap.github.io/fundamental-ngx/icon\n **/\n @Input() set glyph(glyph: string | undefined) {\n this._glyphName$.next(glyph);\n }\n\n /**\n * Toggle buttons always need a space, so we check if it is in a toggle button\n * */\n isInToggleButton = !!inject(TOGGLE_MENU_ITEM, { optional: true });\n\n /** @hidden */\n private _menuComponent = inject<MenuComponent>(FD_MENU_COMPONENT, { optional: true });\n\n /** @hidden */\n private _addonGlyphPortalOutlet$ = new Subject<CdkPortalOutlet>();\n\n /** @hidden */\n private _glyphName$ = new Subject<string | undefined>();\n\n /** @hidden */\n private _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n constructor() {\n combineLatest([this._addonGlyphPortalOutlet$, this._glyphName$])\n .pipe(\n tap(([, glyphName]) => {\n glyphName || this.isInToggleButton ? this._addGlyphAddonToMenu() : this._removeGlyphAddonFromMenu();\n }),\n tap(([outlet, glyphName]) => {\n if (!glyphName) {\n outlet.detach();\n return;\n }\n const componentRef = outlet.attachComponentPortal(new ComponentPortal(IconComponent));\n componentRef.instance.glyph = glyphName;\n componentRef.instance.elementRef.nativeElement.setAttribute('role', 'presentation');\n if (this.isInToggleButton) {\n componentRef.instance.elementRef.nativeElement.classList.add('fd-menu__checkmark');\n }\n componentRef.changeDetectorRef.detectChanges();\n }),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n\n /** @hidden */\n setGlyphPortalOutlet(outlet: CdkPortalOutlet): void {\n this._addonGlyphPortalOutlet$.next(outlet);\n }\n\n /** @hidden */\n renderElement<ComponentType>(element: ComponentPortal<ComponentType>): Observable<ComponentRef<ComponentType>>;\n /** @hidden */\n renderElement<TemplateContext>(\n element: TemplatePortal<TemplateContext>\n ): Observable<EmbeddedViewRef<TemplateContext>>;\n /** @hidden */\n renderElement(element: DomPortal): Observable<any>;\n /** @hidden */\n renderElement(element: Portal<any>): Observable<any> {\n return this._addonGlyphPortalOutlet$.pipe(\n first(),\n tap((outlet) => outlet.detach()),\n map((outlet) => outlet.attach(element))\n );\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._removeGlyphAddonFromMenu();\n }\n\n /** @hidden */\n private _addGlyphAddonToMenu(): void {\n this._menuComponent?.registerAddon(this);\n }\n\n /** @hidden */\n private _removeGlyphAddonFromMenu(): void {\n this._menuComponent?.unregisterAddon(this);\n }\n}\n","import { CdkPortalOutlet, PortalModule } from '@angular/cdk/portal';\nimport { Component, ElementRef, HostBinding, Input, ViewChild, inject } from '@angular/core';\nimport { GlyphMenuAddonDirective } from './glyph-menu-addon.directive';\n\n@Component({\n selector: 'fd-menu-addon',\n template: ` <ng-template cdkPortalOutlet></ng-template> `,\n hostDirectives: [{ directive: GlyphMenuAddonDirective, inputs: ['glyph'] }],\n imports: [PortalModule]\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class MenuAddonDirective {\n /** Whether addon is used before or after text */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('position') set setAddonPosition(position: 'before' | 'after') {\n this.fdAddonBeforeClass = position === 'before';\n this.fdAddonAfterClass = position === 'after';\n }\n\n /** Whether is used as submenu indicator */\n @Input()\n @HostBinding('class.fd-menu__addon-after--submenu')\n submenuIndicator = false;\n\n /** Sets Aria hidden attribute */\n @Input()\n @HostBinding('attr.aria-hidden')\n ariaHidden = true;\n\n /** @hidden */\n @HostBinding('class.fd-menu__addon-after')\n fdAddonAfterClass = true;\n\n /** @hidden */\n @HostBinding('class.fd-menu__addon-before')\n fdAddonBeforeClass = false;\n\n /** @hidden */\n @ViewChild(CdkPortalOutlet)\n set addonPortalOutlet(portalOutlet: CdkPortalOutlet) {\n this._addonGlyph.setGlyphPortalOutlet(portalOutlet);\n }\n\n /** @hidden */\n readonly _addonGlyph = inject(GlyphMenuAddonDirective);\n\n /** @hidden */\n readonly elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n}\n","import { Directive, ElementRef, HostListener, inject } from '@angular/core';\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'input[fd-form-control][fd-menu-item-input]',\n host: {\n class: 'fd-menu__input'\n },\n standalone: true\n})\nexport class MenuItemInputDirective implements HasElementRef {\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n\n /**\n * This is needed to prevent the click event from bubbling up to the menu item\n * and potentially closing the menu or triggering other actions.\n */\n @HostListener('keydown', ['$event'])\n @HostListener('click', ['$event'])\n onInteraction($event: KeyboardEvent | MouseEvent): void {\n if ($event.target === this.elementRef.nativeElement) {\n $event.stopPropagation();\n }\n }\n}\n","import { Directive, ElementRef, HostBinding } from '@angular/core';\n\n/**\n * The directive that represents the menu title.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-menu-title]',\n standalone: true\n})\nexport class MenuTitleDirective {\n /** @hidden */\n @HostBinding('class.fd-menu__title')\n fdMenuTitleClass = true;\n\n /** Returns element title text */\n @HostBinding('attr.title')\n get title(): string {\n return this._elementRef.nativeElement.textContent;\n }\n\n /** @hidden */\n constructor(private _elementRef: ElementRef) {}\n}\n","import { CdkPortalOutlet, ComponentPortal, PortalModule } from '@angular/cdk/portal';\nimport { Component, ContentChild, ElementRef, HostBinding, HostListener, ViewChild, inject } from '@angular/core';\nimport { HasElementRef, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { MenuAddonDirective } from './directives/menu-addon.directive';\nimport { MenuItemInputDirective } from './directives/menu-item-input.directive';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fd-menu-interactive]',\n template: `\n <ng-template cdkPortalOutlet></ng-template>\n <ng-content></ng-content>\n `,\n host: {\n role: 'menuitem'\n },\n imports: [PortalModule]\n})\nexport class MenuInteractiveComponent implements HasElementRef {\n /** @hidden */\n @ViewChild(CdkPortalOutlet)\n addonPortalOutlet: CdkPortalOutlet;\n\n /** @hidden */\n @ContentChild(MenuAddonDirective)\n private set _addon(addon: MenuAddonDirective) {\n if (\n addon?.elementRef.nativeElement === this.elementRef.nativeElement.querySelector('fd-menu-addon:first-child')\n ) {\n this._startAddonInstance = addon;\n }\n }\n\n /** @hidden */\n @HostBinding('attr.tabindex')\n tabindex = 0;\n\n /** @hidden */\n @HostBinding('class.is-disabled')\n disabled = false;\n\n /** @hidden */\n @HostBinding('attr.aria-controls')\n ariaControls: Nullable<string>;\n\n /** @hidden */\n @HostBinding('class.is-selected')\n selected = false;\n\n /** @hidden */\n @HostBinding('attr.aria-expanded')\n ariaExpanded: Nullable<boolean>;\n\n /** @hidden */\n @HostBinding('attr.aria-haspopup')\n @HostBinding('class.has-child')\n ariaHaspopup = false;\n\n /** @hidden */\n @HostBinding('class.fd-menu__link')\n readonly fdMenuLinkClass: boolean = true;\n\n /** @hidden */\n @ContentChild(MenuItemInputDirective)\n private _input: MenuItemInputDirective;\n\n /** @hidden */\n _fromSplitButton = false;\n\n /** @hidden */\n readonly elementRef: ElementRef = inject(ElementRef);\n\n /** @hidden */\n private _startAddonInstance: MenuAddonDirective;\n\n /** @hidden */\n get startAddon(): MenuAddonDirective {\n if (!this._startAddonInstance) {\n this.addonPortalOutlet.detach();\n this._startAddonInstance = this.addonPortalOutlet.attachComponentPortal(\n new ComponentPortal(MenuAddonDirective)\n ).instance;\n this._startAddonInstance.setAddonPosition = 'before';\n }\n return this._startAddonInstance;\n }\n\n /** @hidden */\n @HostListener('keydown.enter', ['$event'])\n @HostListener('keydown.space', ['$event'])\n _handleKeydown($event: KeyboardEvent): void {\n if (this._input && $event.target === this.elementRef.nativeElement) {\n this._input.elementRef.nativeElement.focus();\n }\n }\n\n /** @hidden */\n setSelected(isSelected: boolean): void {\n this.selected = isSelected && (this.ariaHaspopup || this._fromSplitButton);\n if (this.ariaHaspopup || this._fromSplitButton) {\n this.ariaExpanded = isSelected;\n }\n }\n\n /** @hidden */\n setDisabled(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.tabindex = isDisabled ? -1 : 0;\n }\n\n /** @hidden */\n setSubmenu(hasSubmenu: boolean, itemId?: string): void {\n this.ariaHaspopup = hasSubmenu;\n this.ariaControls = hasSubmenu ? itemId || this.ariaControls : null;\n }\n}\n\nexport { MenuInteractiveComponent as MenuInteractiveDirective };\n","import { DOWN_ARROW, ENTER, ESCAPE, LEFT_ARROW, RIGHT_ARROW, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { ElementRef, Injectable, OnDestroy, Optional, Renderer2 } from '@angular/core';\nimport { KeyUtil, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { MenuItemComponent } from '../menu-item/menu-item.component';\nimport { MenuComponent } from '../menu.component';\n\ninterface MenuNode {\n item: MenuItemComponent | null;\n parent: MenuNode | null;\n children: MenuNode[];\n}\n\n/** `null` key is used for the root node */\ntype MenuMap = Map<MenuItemComponent | null, MenuNode>;\n\n@Injectable()\nexport class MenuService implements OnDestroy {\n /** Map of menu items to menu nodes */\n menuMap: MenuMap;\n\n /** Currently focused node */\n focusedNode: MenuNode | undefined;\n\n /** Collection of active menu nodes */\n activeNodePath: MenuNode[] = [];\n\n /** Collection of active menu nodes */\n private _isMobileMode = new Subject<boolean>();\n\n /** @hidden */\n private _menuComponent: MenuComponent;\n\n /** @hidden */\n private _destroyKeyboardHandlerListener: () => void;\n\n /** @hidden */\n get _isRtl(): boolean {\n return this._rtlService?.rtl.value;\n }\n\n /** @hidden */\n constructor(\n private _renderer: Renderer2,\n @Optional() private readonly _rtlService: RtlService\n ) {}\n\n /** Reference to menu component */\n get menuComponent(): MenuComponent {\n return this._menuComponent;\n }\n\n /** Returns menu mode observable */\n get isMobileMode(): Observable<boolean> {\n return this._isMobileMode.pipe(distinctUntilChanged());\n }\n\n /** Sets menu mode */\n setMenuMode(value: boolean): void {\n this._isMobileMode.next(value);\n }\n\n /** Sets given menu item as focused */\n setFocused(menuItem: MenuItemComponent | null): void {\n this.focusedNode = this.menuMap.get(menuItem);\n this.focusedNode?.item?.focus();\n }\n\n /**\n * Sets state of a given menu item\n * @param isActive - Whether should be set as active or inactive\n * @param menuItem `MenuItemComponent` that should be set as active or inactive\n */\n setActive(isActive: boolean, menuItem: MenuItemComponent | null): void {\n if (!menuItem || (isActive && menuItem.disabled)) {\n return;\n }\n\n if (isActive) {\n this._addToActivePath(menuItem);\n } else {\n this._removeFromActivePath(menuItem);\n }\n\n this._emitActivePath();\n }\n\n /**\n * Close active sibling submenu if any\n * @param menuItem to look for active siblings\n */\n setInactiveSiblingMenuItem(menuItem: MenuItemComponent): void {\n this._removeActiveSibling(menuItem);\n this._emitActivePath();\n }\n\n /** Initializes menu service based on given Menu Component */\n setMenuComponent(menu: MenuComponent): void {\n this._menuComponent = menu;\n this.menuMap = this._buildMenuMap(this._menuComponent);\n }\n\n /** Clears Active Node Path and resets Focused Node */\n resetMenuState(): void {\n this._clearActivePath();\n this.focusedNode = undefined;\n this._emitActivePath();\n }\n\n /** - Updates the structure of the menu\n * - Validates Active Node Path\n * - Validates Focused Node */\n rebuildMenu(): void {\n this.menuMap = this._buildMenuMap(this._menuComponent);\n\n const deadNode = this.activeNodePath.find((node) => !this.menuMap.has(node.item));\n if (deadNode?.item) {\n this.setActive(false, deadNode.item);\n }\n\n const invalidFocusedElement = this.focusedNode && !this.menuMap.get(this.focusedNode.item);\n if (invalidFocusedElement) {\n this.focusedNode =\n this.activeNodePath[this.activeNodePath.length - 1] || this.menuMap.get(null)!.children[0];\n }\n }\n\n /** Adds Menu keyboard support */\n addKeyboardSupport(elementRef: ElementRef): void {\n this.removeKeyboardSupport();\n this._setKeyboardSupport(elementRef);\n }\n\n /** Removes Menu keyboard support */\n removeKeyboardSupport(): void {\n if (this._destroyKeyboardHandlerListener) {\n this._destroyKeyboardHandlerListener();\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this.removeKeyboardSupport();\n }\n\n /** @hidden Returns siblings of given node */\n private _nodeSiblings(node: MenuNode): MenuNode[] | undefined {\n return node.parent ? node.parent.children : this.menuMap.get(null)?.children;\n }\n\n /** @hidden Adds given element to the Active Node Path and setts as active*/\n private _addToActivePath(menuItem: MenuItemComponent): void {\n const menuNode = this.menuMap.get(menuItem);\n\n this._removeActiveSibling(menuItem);\n\n if (menuNode) {\n this.activeNodePath.push(menuNode);\n menuNode.item?.setSelected(true);\n }\n }\n\n /** @hidden Removes given element and all its successors from the Active Node Path and setts as inactive*/\n private _removeFromActivePath(menuItem: MenuItemComponent | null): void {\n const menuNode = this.menuMap.get(menuItem);\n if (menuNode) {\n const pathIndex = this.activeNodePath.findIndex((i) => i.item === menuNode.item);\n\n if (pathIndex !== -1) {\n this.activeNodePath\n .splice(pathIndex)\n .forEach((removedActiveNode) => removedActiveNode.item?.setSelected(false));\n }\n }\n }\n\n /** @hidden Removes all elements from the Active Node Path and sets them as closed */\n private _clearActivePath(): void {\n if (this.activeNodePath.length) {\n this._removeFromActivePath(this.activeNodePath[0].item);\n }\n }\n\n /** @hidden\n * - Builds Menu Nodes based on Menu Items\n * - Creates Map of the Menu Nodes */\n private _buildMenuMap(menu: MenuComponent): MenuMap {\n function buildNode(menuItem: MenuItemComponent): MenuNode {\n return {\n item: menuItem,\n parent: null,\n children: menuItem.submenu\n ? menuItem.submenu.menuItems.map((subMenuItem) => buildNode(subMenuItem))\n : []\n };\n }\n\n function setParents(node: MenuNode, parent: MenuNode | null): void {\n node.parent = parent;\n node.children.forEach((childNode) => setParents(childNode, node));\n }\n\n function toMap(node: MenuNode, map = new Map() as MenuMap): MenuMap {\n map.set(node.item, node);\n node.children.forEach((childNode) => toMap(childNode, map));\n return map;\n }\n\n const rootItems = menu._menuItems.filter((rootItem) => !rootItem.parentSubmenu);\n\n /** root item */\n const menuTree: MenuNode = {\n item: null,\n parent: null,\n children: rootItems.map((item) => buildNode(item))\n };\n\n setParents(menuTree, null);\n\n return toMap(menuTree);\n }\n\n /** @hidden Removes active sibling of a given menu item from the Active Path */\n private _removeActiveSibling(menuItem: MenuItemComponent): void {\n const menuNode = this.menuMap.get(menuItem);\n const children = menuNode?.parent?.children.map((i) => i.item);\n const activeSibling = this.activeNodePath.find((i) => children?.includes(i.item));\n\n if (activeSibling) {\n const activeParentIndex = this.activeNodePath.indexOf(menuNode?.parent as MenuNode);\n this._removeFromActivePath(activeParentIndex !== -1 ? activeSibling.item : this.activeNodePath[0].item);\n }\n }\n\n /** @hidden Adds keyboard support */\n private _setKeyboardSupport(elementRef: ElementRef): void {\n this._destroyKeyboardHandlerListener = this._renderer.listen(\n elementRef.nativeElement,\n 'keydown',\n (event: KeyboardEvent) => this._handleKey(event)\n );\n }\n\n /** @hidden */\n private _handleKey(event: KeyboardEvent): void {\n const focusRight = (node): void => {\n setTimeout(() => this.setFocused(node.children[0].item));\n };\n let matched = true;\n\n if (!this.focusedNode) {\n return;\n }\n\n if (\n (KeyUtil.isKeyCode(event, RIGHT_ARROW) && !this._isRtl) ||\n (KeyUtil.isKeyCode(event, LEFT_ARROW) && this._isRtl)\n ) {\n if (this.focusedNode?.children.length) {\n this.setActive(true, this.focusedNode.item);\n focusRight(this.focusedNode);\n }\n } else if (\n (KeyUtil.isKeyCode(event, LEFT_ARROW) && !this._isRtl) ||\n (KeyUtil.isKeyCode(event, RIGHT_ARROW) && this._isRtl)\n ) {\n if (this.focusedNode.parent?.item) {\n this.setActive(false, this.focusedNode.parent.item);\n this.setFocused(this.focusedNode.parent.item);\n }\n } else if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n const closest = this._closestEnabled(this.focusedNode, 'down');\n if (closest) {\n this.setFocused(closest.item);\n }\n } else if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n const closest = this._closestEnabled(this.focusedNode, 'up');\n if (closest) {\n this.setFocused(closest.item);\n }\n } else if (KeyUtil.isKeyCode(event, [SPACE, ENTER])) {\n const focusedNode = this.focusedNode;\n this.setActive(true, focusedNode?.item);\n focusedNode.item?.click();\n if (focusedNode.children.length) {\n focusRight(focusedNode);\n }\n } else if (KeyUtil.isKeyCode(event, ESCAPE) && this.menuComponent.closeOnEscapeKey) {\n this.menuComponent.close();\n } else {\n matched = false;\n }\n\n if (matched) {\n event.preventDefault();\n }\n }\n\n /** @hidden Emits an array of active menu items */\n private _emitActivePath(): void {\n this.menuComponent.activePath.emit(this.activeNodePath.map((node) => node.item) as MenuItemComponent[]);\n }\n\n /** @hidden Depending on direction returns closest enabled sibling of given node */\n private _closestEnabled(node: MenuNode, direction: 'up' | 'down'): MenuNode | null {\n const siblings =\n direction === 'up' ? [...(this._nodeSiblings(node) ?? [])].reverse() : this._nodeSiblings(node);\n\n if (siblings) {\n const startIndex = siblings.indexOf(node) + 1;\n\n for (let i = startIndex; i < siblings.length; i++) {\n if (siblings[i].item && !siblings[i].item!.disabled) {\n return siblings[i];\n }\n }\n }\n\n return null;\n }\n}\n","import {\n AfterContentInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Inject,\n InjectionToken,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { defer, fromEvent, Observable, Subject, Subscription, timer } from 'rxjs';\nimport { filter, switchMap, takeUntil } from 'rxjs/operators';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { DefaultMenuItem } from '../default-menu-item.class';\nimport { MenuTitleDirective } from '../directives/menu-title.directive';\nimport { MenuInteractiveComponent } from '../menu-interactive.component';\nimport { FD_MENU_ITEM_COMPONENT } from '../menu.tokens';\nimport { MenuService } from '../services/menu.service';\n\nlet menuUniqueId = 0;\n\nexport interface BaseSubmenu {\n templateRef: TemplateRef<any>;\n menuItems: MenuItemComponent[];\n menuService: MenuService;\n ariaLabel: Nullable<string>;\n ariaLabelledby: Nullable<string>;\n _menuItemsChange$: Observable<void>;\n\n _registerItem(item: MenuItemComponent): void;\n\n _unregisterItem(item: MenuItemComponent): void;\n}\n\nexport const SUBMENU = new InjectionToken<BaseSubmenu>('Submenu component dependency');\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'li[fd-menu-item]',\n exportAs: 'fd-menu-item',\n templateUrl: './menu-item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.role]': '\"menuitem\"',\n '[class.fd-menu__item]': 'true',\n '[class.fd-menu--full-width]': 'menuService?.menuComponent?.mobile || false'\n },\n imports: [NgTemplateOutlet],\n providers: [\n {\n provide: FD_MENU_ITEM_COMPONENT,\n useExisting: forwardRef(() => MenuItemComponent)\n }\n ]\n})\nexport class MenuItemComponent implements DefaultMenuItem, OnInit, OnChanges, AfterContentInit, OnDestroy {\n /** Set the Menu Item as disabled/enabled */\n @Input()\n disabled = false;\n\n /** Menu Item id attribute value */\n @Input()\n itemId = `fd-menu-item-${menuUniqueId++}`;\n\n /** Reference to sub-menu component */\n @Input()\n submenu: BaseSubmenu | undefined;\n\n /** Reference to the parent submenu if nested menus created dynamically */\n @Input()\n parentSubmenu: BaseSubmenu | undefined;\n\n /** Whether the menu item has a separator */\n @Input({ transform: booleanAttribute })\n @HostBinding('class.has-separator')\n hasSeparator = false;\n\n /** Emitted when the menu item is selected. */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onSelect: EventEmitter<void> = new EventEmitter<void>();\n\n /** @hidden Reference to the Menu Item title */\n @ContentChild(MenuTitleDirective)\n menuItemTitle: MenuTitleDirective;\n\n /** @hidden Reference to the Menu Item interactive element */\n @ContentChild(MenuInteractiveComponent)\n menuInteractive: MenuInteractiveComponent;\n\n /** @hidden Whether sub-menu is currently visible*/\n submenuVisible = false;\n\n /** @hidden */\n private _subscriptions: Subscription = new Subscription();\n\n /** @hidden */\n private _hoverSubscriptions: Subscription = new Subscription();\n\n /** @hidden */\n constructor(\n public elementRef: ElementRef,\n @Optional() public menuService: MenuService | null,\n private _changeDetectorRef: ChangeDetectorRef,\n @Optional() @Inject(SUBMENU) private _submenu: BaseSubmenu | null\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n if (this.parentSubmenu) {\n this._submenu = this.parentSubmenu;\n this._submenu._registerItem(this);\n }\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._setMenuService();\n this._initialiseItemState();\n this._listenOnMenuLinkClick();\n this._listenOnOuterFocus();\n this._listenOnMenuMode();\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['disabled'] && !changes['disabled'].firstChange) {\n this.menuInteractive.setDisabled(this.disabled);\n }\n if (changes['submenu'] && !changes['submenu'].firstChange) {\n this.menuInteractive.setSubmenu(!!this.submenu, this.submenu ? this.itemId : undefined);\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n if (this.parentSubmenu) {\n this._submenu?._unregisterItem(this);\n }\n\n this._subscriptions.unsubscribe();\n this._hoverSubscriptions.unsubscribe();\n }\n\n /** Whether menu item has popup (desktop mode) */\n get hasPopup(): boolean {\n return !!this.submenu && (!this.menuService?.menuComponent || !this.menuService?.menuComponent.mobile);\n }\n\n /** Focuses Menu Item interactive element */\n focus(): void {\n if (this.menuInteractive) {\n this.menuInteractive.elementRef.nativeElement.focus();\n }\n }\n\n /** Clicks Menu Item interactive element */\n click(): void {\n if (this.menuInteractive) {\n this.menuInteractive.elementRef.nativeElement.click();\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /** @hidden Sets menu item as selected/unselected based on isSelected flag */\n setSelected(isSelected: boolean, fromSplit?: boolean): void {\n this.menuInteractive.setSelected(isSelected);\n this.submenuVisible = isSelected && !!this.submenu;\n if (!fromSplit) {\n this.onSelect.emit();\n }\n this._changeDetectorRef.markForCheck();\n }\n\n /** @hidden Creates click listener on menu item interactive element */\n private _listenOnMenuLinkClick(): void {\n this._subscriptions.add(\n fromEvent(this.menuInteractive.elementRef.nativeElement, 'click').subscribe(() =>\n this.menuService?.setActive(true, this)\n )\n );\n }\n\n /** @hidden Creates hover listeners for activating/deactivating menu item */\n private _listenOnMenuLinkHover(): Subscription {\n const hoverSubscriptions: Subscription = new Subscription();\n\n const mouseEnter$: Observable<MouseEvent> = fromEvent(\n this.menuInteractive.elementRef.nativeElement,\n 'mouseenter'\n );\n const mouseLeave$: Observable<MouseEvent> = fromEvent(\n this.menuInteractive.elementRef.nativeElement,\n 'mouseleave'\n );\n\n const timerFactory$ = defer(() =>\n timer(this.menuService ? this.menuService.menuComponent.openOnHoverTime : 0).pipe(takeUntil(mouseLeave$))\n );\n\n // Set active on hover\n hoverSubscriptions.add(\n mouseEnter$\n .pipe(\n filter(() => !!this.menuService),\n switchMap(() => timerFactory$)\n )\n .subscribe(() => {\n if (this.submenu) {\n // Open submenu\n this.menuService!.setActive(true, this);\n }\n if (!this.submenu) {\n // Close sibling submenu if opened\n this.menuService!.setInactiveSiblingMenuItem(this);\n }\n })\n );\n\n return hoverSubscriptions;\n }\n\n /** @hidden Initializes menu link state based on item initial state */\n private _initialiseItemState(): void {\n this.menuInteractive.setSubmenu(!!this.submenu, this.itemId);\n this.menuInteractive.setDisabled(this.disabled);\n }\n\n /** @hidden Checks for Menu Service dependency and passes it if further */\n private _setMenuService(): void {\n this.menuService = this.menuService || this._submenu?.menuService || null;\n if (this.submenu && this.menuService) {\n this.submenu.menuService = this.menuService;\n }\n }\n\n /** @hidden Listen on menu mode and set proper mode listeners */\n private _listenOnMenuMode(): void {\n this.menuService?.isMobileMode.subscribe((isMobile) => {\n this._hoverSubscriptions.unsubscribe();\n if (!isMobile) {\n this._hoverSubscriptions = this._listenOnMenuLinkHover();\n }\n });\n }\n\n /** @hidden Updates focused menu item on outer focus */\n private _listenOnOuterFocus(): void {\n this._subscriptions.add(\n fromEvent(this.menuInteractive.elementRef.nativeElement, 'focus').subscribe(() => {\n if (this.menuService && this.menuService.focusedNode !== this.menuService.menuMap.get(this)) {\n this.menuService.setFocused(this);\n }\n })\n );\n }\n}\n\n@Component({\n selector: 'fd-submenu',\n template: `\n <ng-template>\n <ng-content></ng-content>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: SUBMENU, useExisting: SubmenuComponent }],\n exportAs: 'fdSubmenu',\n standalone: true\n})\nexport class SubmenuComponent implements BaseSubmenu, AfterContentInit {\n /** Aria-label for navigation */\n @Input()\n ariaLabel: Nullable<string>;\n\n /** Aria-Labelledby for element describing navigation */\n @Input()\n ariaLabelledby: Nullable<string>;\n\n /** @hidden Reference to template with Submenu items */\n @ViewChild(TemplateRef) templateRef: TemplateRef<any>;\n\n /** @hidden Reference to Submenu MenuItems */\n @ContentChildren(FD_MENU_ITEM_COMPONENT)\n _projectedItems: QueryList<MenuItemComponent>;\n\n /** @hidden */\n _registeredItems: MenuItemComponent[] = [];\n\n /** @hidden Reference to MenuService used by MenuItems */\n menuService: MenuService;\n\n /** @hidden */\n _menuItemsChange$ = new Subject<void>();\n\n /** @hidden */\n get menuItems(): MenuItemComponent[] {\n return this._projectedItems.length ? this._projectedItems.toArray() : this._registeredItems;\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._projectedItems.changes.subscribe(() => this._menuItemsChange$.next());\n }\n\n /** @hidden method for manually registering item when it's not visible for @ContentChildren */\n _registerItem(item: MenuItemComponent): void {\n this._registeredItems.push(item);\n this._menuItemsChange$.next();\n }\n\n /** @hidden method for manually unregistering item when it's not visible for @ContentChildren */\n _unregisterItem(item: MenuItemComponent): void {\n this._registeredItems = this._registeredItems.filter((i) => i !== item);\n this._menuItemsChange$.next();\n }\n}\n","<ng-content></ng-content>\n@if (hasPopup && submenu) {\n <ul\n class=\"fd-menu__sublist\"\n role=\"menu\"\n [attr.id]=\"itemId\"\n [attr.aria-hidden]=\"!submenuVisible\"\n [attr.aria-label]=\"submenu.ariaLabel\"\n [attr.aria-labelledby]=\"submenu.ariaLabelledby\"\n >\n <ng-template [ngTemplateOutlet]=\"submenu.templateRef\"></ng-template>\n </ul>\n}\n","import { AfterViewInit, Directive, ElementRef, HostBinding, Input, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { MenuItemComponent } from '../menu-item/menu-item.component';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-menu-shortcut]',\n standalone: true\n})\nexport class MenuShortcutDirective implements AfterViewInit, OnDestroy {\n /** Hide shortcuts in mobile mode */\n @Input()\n hideOnMobile = true;\n\n /** @hidden */\n @HostBinding('class.fd-menu__shortcut')\n readonly fdMenuShortcutClass: boolean = true;\n\n /** @hidden */\n private _subscriptions: Subscription = new Subscription();\n\n /** @hidden */\n constructor(\n private _menuItem: MenuItemComponent,\n private _elementRef: ElementRef\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._hideOnMobile();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n private _hideOnMobile(): void {\n this._subscriptions.add(\n this._menuItem.menuService?.isMobileMode.pipe(filter(() => this.hideOnMobile)).subscribe((isMobile) => {\n if (isMobile) {\n this._elementRef.nativeElement.style.display = 'none';\n } else {\n this._elementRef.nativeElement.style.display = null;\n }\n })\n );\n }\n}\n","import { Directive, ElementRef, HostBinding, Input, OnDestroy } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { Subscription } from 'rxjs';\n\nimport { MenuComponent } from '../menu.component';\n\n@Directive({\n selector: '[fdMenuTrigger]',\n standalone: true\n})\nexport class MenuTriggerDirective implements OnDestroy {\n /** Set reference to Menu Component */\n @Input('fdMenuTrigger')\n set menu(menu: MenuComponent | undefined) {\n this._unsubscribeFromMenu();\n\n if (menu) {\n menu.trigger = this._elementRef;\n this._subscribeToMenu(menu);\n }\n\n this._setAriaAttributes(menu);\n }\n\n /** @hidden */\n @HostBinding('attr.aria-haspopup')\n ariaHasPopup: Nullable<boolean>;\n\n /** @hidden */\n @HostBinding('attr.aria-controls')\n ariaControls: Nullable<string>;\n\n /** @hidden */\n @HostBinding('attr.aria-expanded')\n ariaExpanded: Nullable<boolean>;\n\n /** @hidden */\n private _menuSubscription: Subscription = new Subscription();\n\n /** @hidden */\n constructor(private _elementRef: ElementRef) {}\n\n /** @hidden */\n ngOnDestroy(): void {\n this._unsubscribeFromMenu();\n }\n\n /** @hidden */\n private _subscribeToMenu(menu: MenuComponent): void {\n this._menuSubscription.add(\n menu.isOpenChange.subscribe(() => {\n this._setAriaAttributes(menu);\n })\n );\n }\n\n /** @hidden */\n private _unsubscribeFromMenu(): void {\n this._menuSubscription.unsubscribe();\n this._menuSubscription = new Subscription();\n }\n\n /** @hidden */\n private _setAriaAttributes(menu?: MenuComponent): void {\n this.ariaHasPopup = !!menu;\n this.ariaExpanded = menu?.isOpen;\n this.ariaControls = menu?.isOpen ? menu.id : null;\n }\n}\n","import { AfterViewInit, DestroyRef, Directive, ElementRef, inject, Input } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CvaControl, CvaDirective, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\nimport { BehaviorSubject, combineLatest, map, merge, of, switchMap, tap } from 'rxjs';\nimport { MenuItemComponent } from '../../menu-item/menu-item.component';\nimport { FD_MENU_ITEM_COMPONENT } from '../../menu.tokens';\nimport { SegmentedButtonOptionDirective } from './segmented-button-option.directive';\n\nconst strictEquals = (a: unknown, b: unknown): boolean => a === b;\n\n@Directive({\n selector: 'li[fd-menu-item][fdMenuSegmentedButtonHeader]',\n standalone: true,\n hostDirectives: [\n {\n directive: CvaDirective,\n inputs: ['id:inputId', 'stateMessage', 'disabled', 'readonly', 'name']\n }\n ],\n providers: [\n CvaControl,\n { provide: FD_FORM_FIELD_CONTROL, useExisting: SegmentedButtonHeaderDirective, multi: true }\n ]\n})\nexport class SegmentedButtonHeaderDirective<T> implements AfterViewInit, HasElementRef {\n /** @hidden */\n @Input()\n valueComparator: (a: T, b: T) => boolean = strictEquals;\n\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n /** @hidden */\n readonly menuItem = inject<MenuItemComponent>(FD_MENU_ITEM_COMPONENT, { host: true });\n\n /** @hidden */\n private _cvaControl: CvaControl<T> = inject(CvaControl)!;\n /** @hidden */\n private _destroyRef = inject(DestroyRef)!;\n\n /** @hidden */\n private _options$ = new BehaviorSubject<SegmentedButtonOptionDirective<T>[]>([]);\n\n /** @hidden */\n constructor() {\n this.menuItem.hasSeparator = true;\n }\n\n /** @hidden */\n setOptions(options: SegmentedButtonOptionDirective<T>[]): void {\n this._options$.next(options);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._cvaControl.listenToChanges();\n combineLatest([this._options$, this._cvaControl.cvaDirective?.ngControl?.valueChanges || of(undefined)])\n .pipe(\n tap(([options, value]) => {\n options.forEach((option, index) => {\n option.menuItem.hasSeparator = index === options.length - 1;\n option.selected = this.valueComparator(option.value, value);\n });\n }),\n switchMap(([options]) =>\n merge(...options.map((option) => option.clicked.pipe(map(() => option.value))))\n ),\n tap((val) => this._cvaControl.cvaDirective?.setValue(val)),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n}\n","import { DomPortal } from '@angular/cdk/portal';\nimport { AfterViewInit, Directive, ElementRef, HostListener, inject, Input, NgZone, Renderer2 } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\nimport { BehaviorSubject, combineLatest, delayWhen, Observable, Subject, tap } from 'rxjs';\nimport { MenuItemComponent } from '../../menu-item/menu-item.component';\nimport { FD_MENU_ITEM_COMPONENT } from '../../menu.tokens';\n\n@Directive({\n selector: 'li[fd-menu-item][fdMenuSegmentedButtonOption]',\n standalone: true\n})\nexport class SegmentedButtonOptionDirective<T> implements AfterViewInit, HasElementRef {\n /** @hidden */\n @Input() value: T;\n\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n\n /** @hidden */\n readonly menuItem = inject<MenuItemComponent>(FD_MENU_ITEM_COMPONENT, { host: true });\n\n /** @hidden */\n readonly clicked: Observable<void>;\n\n /** @hidden */\n readonly renderer2 = inject(Renderer2);\n\n /** @hidden */\n private _clicked = new Subject<void>();\n\n /** @hidden */\n private _dotElement: HTMLSpanElement;\n\n /** @hidden */\n private _viewInit$ = new Subject<void>();\n\n /** @hidden */\n private _selected$ = new BehaviorSubject<boolean>(false);\n\n /** @hidden */\n constructor() {\n this.clicked = this._clicked.asObservable();\n const ngZone = inject(NgZone);\n combineLatest([this._viewInit$.pipe(delayWhen(() => ngZone.onStable.asObservable())), this._selected$])\n .pipe(\n tap(() => {\n if (!this._dotElement) {\n this._createDot();\n }\n }),\n tap(([, selected]) => {\n selected ? this._showDot() : this._hideDot();\n }),\n takeUntilDestroyed()\n )\n .subscribe();\n }\n\n /** @hidden */\n @HostListener('click', ['$event'])\n @HostListener('keydown.enter', ['$event'])\n @HostListener('keydown.space', ['$event'])\n _onClick($event: MouseEvent | KeyboardEvent): void {\n $event.preventDefault();\n this._clicked.next();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._viewInit$.next();\n }\n\n /** @hidden */\n private _createDot(): void {\n this._dotElement = this.renderer2.createElement('span');\n this.renderer2.appendChild(this.elementRef.nativeElement, this._dotElement);\n this.renderer2.addClass(this._dotElement, 'fd-menu__active-dot');\n this.renderer2.setAttribute(this._dotElement, 'role', 'presentation');\n this._hideDot();\n const addonDirective = this.menuItem.menuInteractive.startAddon;\n const addonGlyph = addonDirective._addonGlyph;\n addonGlyph.renderElement(new DomPortal(this._dotElement)).subscribe();\n }\n\n /** @hidden */\n private _showDot(): void {\n this.renderer2.setAttribute(this._dotElement, 'aria-hidden', 'false');\n this.renderer2.setStyle(this._dotElement, 'display', 'inline-block');\n }\n\n /** @hidden */\n private _hideDot(): void {\n this.renderer2.setAttribute(this._dotElement, 'aria-hidden', 'true');\n this.renderer2.setStyle(this._dotElement, 'display', 'none');\n }\n\n /** @hidden */\n set selected(isSelected: boolean) {\n this._selected$.next(isSelected);\n }\n}\n","import { AfterViewInit, DestroyRef, Directive, HostListener, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CvaControl, CvaDirective, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';\nimport { tap } from 'rxjs';\nimport { MenuInteractiveComponent } from '../menu-interactive.component';\nimport { TOGGLE_MENU_ITEM } from '../menu.tokens';\n\n@Directive({\n selector: 'button[fd-menu-interactive][toggle]',\n standalone: true,\n hostDirectives: [\n {\n directive: CvaDirective,\n inputs: ['id:inputId', 'stateMessage', 'disabled', 'readonly', 'name']\n }\n ],\n providers: [\n CvaControl,\n { provide: FD_FORM_FIELD_CONTROL, useExisting: ToggleButtonDirective, multi: true },\n { provide: TOGGLE_MENU_ITEM, useExisting: ToggleButtonDirective }\n ]\n})\nexport class ToggleButtonDirective implements AfterViewInit {\n /** @hidden */\n private _cvaControl = inject<CvaControl<boolean>>(CvaControl);\n\n /** @hidden */\n private _destroyRef = inject(DestroyRef)!;\n\n /** @hidden */\n private _interactiveItemComponent = inject(MenuInteractiveComponent, { host: true });\n\n /**\n * Listen on interaction events that should cause the value update\n * */\n @HostListener('click', ['$event'])\n onClick(): void {\n this._cvaControl.cvaDirective?.setValue(!this._cvaControl.cvaDirective!.value);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._cvaControl.listenToChanges();\n this._cvaControl.cvaDirective?.ngControl?.valueChanges\n ?.pipe(\n tap((value: boolean) => {\n this._interactiveItemComponent.startAddon._addonGlyph.glyph = value ? 'accept' : undefined;\n }),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n}\n","import { Directive, ElementRef, inject } from '@angular/core';\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\n\n/**\n * @deprecated\n * Use `hasSeparator` input on a `fd-menu-item` instead.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'fd-menu-separator',\n host: {\n '[style.display]': '\"none\"'\n },\n standalone: true\n})\nexport class MenuSeparatorDirective implements HasElementRef {\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n\n /** @hidden */\n constructor() {\n console.error(\n '<fd-menu-separator> has been removed. Use `hasSeparator` input on a `fd-menu-item` instead.',\n this.elementRef.nativeElement\n );\n }\n}\n\n// Exporting as a old class name for the backward compatibility.\nexport { MenuSeparatorDirective as MenuSeparatorComponent };\n","export abstract class DefaultMenuItem {\n abstract focus(): void;\n abstract click(): void;\n}\n","import { EventEmitter, InjectionToken } from '@angular/core';\nimport { DialogConfig } from '@fundamental-ngx/core/dialog';\nimport { MobileMode } from '@fundamental-ngx/core/mobile-mode';\nimport { MenuItemComponent } from './menu-item/menu-item.component';\n\nexport const MENU_COMPONENT = new InjectionToken<string[]>('MenuInterface');\n\n/**\n * Menu Interface to have typing and avoid circular dependency between\n * MenuComponent <==> MenuMobileComponent\n */\nexport interface MenuInterface extends MobileMode {\n activePath: EventEmitter<MenuItemComponent[]>;\n dialogConfig: DialogConfig;\n isOpenChange: EventEmitter<boolean>;\n\n close(): void;\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Inject,\n NgZone,\n OnInit,\n Optional,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n computed,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { InitialFocusDirective, RtlService, TemplateDirective, TemplateModule } from '@fundamental-ngx/cdk/utils';\nimport {\n BarElementDirective,\n BarLeftDirective,\n BarRightDirective,\n ButtonBarComponent\n} from '@fundamental-ngx/core/bar';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { ContentDensityDirective } from '@fundamental-ngx/core/content-density';\nimport {\n DialogBodyComponent,\n DialogCloseButtonComponent,\n DialogComponent,\n DialogFooterComponent,\n DialogHeaderComponent\n} from '@fundamental-ngx/core/dialog';\nimport { MobileModeBase, MobileModeControl } from '@fundamental-ngx/core/mobile-mode';\nimport { TitleComponent, TitleModule } from '@fundamental-ngx/core/title';\nimport { startWith, take } from 'rxjs/operators';\nimport { MenuItemComponent } from '../menu-item/menu-item.component';\nimport { MENU_COMPONENT, MenuInterface } from '../menu.interface';\nimport { MenuService } from '../services/menu.service';\n\n@Component({\n selector: 'fd-menu-mobile',\n templateUrl: './menu-mobile.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n TemplateModule,\n BarLeftDirective,\n BarRightDirective,\n BarElementDirective,\n ButtonBarComponent,\n TitleComponent,\n TemplateDirective,\n BarLeftDirective,\n BarRightDirective,\n BarElementDirective,\n ButtonBarComponent,\n ButtonComponent,\n ContentDensityDirective,\n TitleModule,\n NgTemplateOutlet,\n InitialFocusDirective,\n DialogComponent,\n DialogBodyComponent,\n DialogHeaderComponent,\n DialogCloseButtonComponent,\n DialogFooterComponent\n ]\n})\nexport class MenuMobileComponent extends MobileModeBase<MenuInterface> implements OnInit {\n /** @hidden */\n @ViewChild('dialogTemplate') dialogTemplate: TemplateRef<any>;\n\n /** Current menu title */\n title$ = signal('');\n\n /** Whether current menu level is submenu */\n isSubmenu$ = signal(false);\n\n /** @hidden External content */\n childContent: TemplateRef<any> | null = null;\n\n /** @hidden Currently rendered menu view */\n view$ = signal<TemplateRef<any> | null>(null);\n\n /** @hidden Navigation icon name based on RTL */\n navigationIcon$ = computed(() =>\n this._rtlService?.rtlSignal() ? 'navigation-right-arrow' : 'navigation-left-arrow'\n );\n\n /** @hidden */\n @ViewChild(DialogBodyComponent)\n set _watch(_dialogBody: DialogBodyComponent) {\n if (_dialogBody) {\n this._menuService.addKeyboardSupport(_dialogBody.elementRef);\n }\n }\n\n /** @hidden */\n constructor(\n private _menuService: MenuService,\n private _ngZone: NgZone,\n @Optional() private _rtlService: RtlService,\n @Inject(MENU_COMPONENT) menuComponent: MenuInterface\n ) {\n super(menuComponent, MobileModeControl.MENU);\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._listenOnActivePathChange();\n this._listenOnMenuOpenChange();\n }\n\n /** Closes the Dialog and Menu component */\n close(): void {\n this.dialogRef.close();\n this._component.close();\n }\n\n /** Navigate back to parent level of submenu */\n backToParentLevel(): void {\n const menuItem = this._menuService.activeNodePath[this._menuService.activeNodePath.length - 1].item;\n this._menuService.setActive(false, menuItem);\n this._executeOnStable(() => {\n menuItem?.focus();\n });\n }\n\n /** @hidden Opens the Dialog */\n private _openDialog(): void {\n this.dialogRef = this._dialogService.open(this.dialogTemplate, {\n mobile: true,\n disablePaddings: true,\n ...this.dialogConfig,\n escKeyCloseable: false,\n backdropClickCloseable: false,\n container: this._elementRef.nativeElement\n });\n }\n\n /** @hidden Listens on Active Path changes and updates mobile view */\n private _listenOnActivePathChange(): void {\n const initialItemPath: MenuItemComponent[] = this._menuService.activeNodePath\n .map((node) => node.item)\n .filter((v): v is MenuItemComponent => !!v);\n this._component.activePath\n .pipe(startWith(initialItemPath), takeUntilDestroyed(this._destroyRef))\n .subscribe((items) => this._setMenuView(items));\n }\n\n /**\n * @hidden\n * Executes a function when the zone is stable.\n */\n private _executeOnStable(fn: () => any): void {\n if (this._ngZone.isStable) {\n fn();\n } else {\n this._ngZone.onStable.pipe(take(1)).subscribe(fn);\n }\n }\n\n /** @hidden Sets menu view, title and isSubmenu flag */\n private _setMenuView(items: MenuItemComponent[]): void {\n const lastItem: MenuItemComponent = items[items.length - 1];\n this.isSubmenu$.set(!!items.length);\n this.title$.set(this._getDialogTitle(lastItem));\n this.view$.set(this._getMenuView(lastItem));\n this._executeOnStable(() => {\n this._menuService.focusedNode?.item?.focus();\n });\n }\n\n /** @hidden Opens/closes the Dialog based on Menu isOpenChange events */\n private _listenOnMenuOpenChange(): void {\n this._component.isOpenChange\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((isOpen) => (isOpen ? this._openDialog() : this.dialogRef.close()));\n }\n\n /** @hidden Returns dialog title */\n private _getDialogTitle(menuItem: MenuItemComponent): string {\n if (this.isSubmenu$()) {\n return menuItem.menuItemTitle ? menuItem.menuItemTitle.title : '';\n }\n\n return this.mobileConfig.title || '';\n }\n\n /** @hidden Returns dialog content view */\n private _getMenuView(menuItem: MenuItemComponent): TemplateRef<any> | null {\n if (this.isSubmenu$()) {\n return menuItem.submenu ? menuItem.submenu.templateRef : this.view$();\n }\n return this.childContent;\n }\n}\n","<ng-template [fdDialogTemplate] let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n @if (isSubmenu$()) {\n <fd-bar-element>\n <button\n fd-button\n fdType=\"transparent\"\n id=\"menu-mobile-navigate-back\"\n fdCozy\n [attr.aria-label]=\"'Go to previous menu level: ' + title$()\"\n [glyph]=\"navigationIcon$()\"\n (click)=\"backToParentLevel()\"\n ></button>\n </fd-bar-element>\n }\n <fd-bar-element>\n <h1 fd-title>{{ title$() }}</h1>\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-bar-element>\n @if (this.mobileConfig.hasCloseButton) {\n <button fd-dialog-close-button [mobile]=\"true\" (click)=\"close()\"></button>\n }\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n <ng-template [ngTemplateOutlet]=\"(isSubmenu$() ? subMenuTemplate : view$()) || null\"> </ng-template>\n </fd-dialog-body>\n @if (mobileConfig.approveButtonText || mobileConfig.cancelButtonText) {\n <fd-dialog-footer>\n @if (mobileConfig.approveButtonText) {\n <fd-button-bar fdType=\"emphasized\" [label]=\"mobileConfig.approveButtonText\" (click)=\"close()\">\n </fd-button-bar>\n }\n @if (mobileConfig.cancelButtonText) {\n <fd-button-bar fdkInitialFocus [label]=\"mobileConfig.cancelButtonText\" (click)=\"close()\">\n </fd-button-bar>\n }\n </fd-dialog-footer>\n }\n </fd-dialog>\n</ng-template>\n<ng-template #subMenuTemplate>\n <nav class=\"fd-menu fd-menu--mobile\">\n <ul class=\"fd-menu__sublist\">\n <ng-template [ngTemplateOutlet]=\"view$()\"></ng-template>\n </ul>\n </nav>\n</ng-template>\n","import {\n AfterContentInit,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n Renderer2,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { combineLatest, map, startWith, Subscription, tap } from 'rxjs';\n\nimport { DynamicComponentService, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { DialogConfig } from '@fundamental-ngx/core/dialog';\nimport { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';\nimport { BasePopoverClass, PopoverService } from '@fundamental-ngx/core/popover';\n\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { SegmentedButtonHeaderDirective } from './directives/segmented-button/segmented-button-header.directive';\nimport { SegmentedButtonOptionDirective } from './directives/segmented-button/segmented-button-option.directive';\nimport { MenuItemComponent } from './menu-item/menu-item.component';\nimport { MenuMobileComponent } from './menu-mobile/menu-mobile.component';\nimport { MENU_COMPONENT, MenuInterface } from './menu.interface';\nimport { FD_MENU_COMPONENT, FD_MENU_ITEM_COMPONENT } from './menu.tokens';\nimport { MenuService } from './services/menu.service';\n\nlet menuUniqueId = 0;\n\n/**\n * The component that represents a menu.\n */\n@Component({\n selector: 'fd-menu',\n templateUrl: './menu.component.html',\n styleUrl: 'menu.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n MenuService,\n PopoverService,\n DynamicComponentService,\n {\n provide: FD_MENU_COMPONENT,\n useExisting: forwardRef(() => MenuComponent)\n },\n contentDensityObserverProviders()\n ],\n standalone: true\n})\nexport class MenuComponent\n extends BasePopoverClass\n implements MenuInterface, AfterContentInit, AfterViewInit, OnDestroy, OnInit\n{\n /** Set menu in mobile mode */\n @Input({ transform: booleanAttribute })\n set mobile(value: boolean) {\n this._mobile = value;\n this._menuService.setMenuMode(this.mobile);\n }\n\n get mobile(): boolean {\n return this._mobile;\n }\n\n /** Whether the popover is disabled. */\n @Input()\n disabled = false;\n\n /** Whether the popover should be focusTrapped. */\n @Input()\n focusTrapped = true;\n\n /**\n * Whether the popover should automatically move focus into the trapped region upon\n * initialization and return focus to the previous activeElement upon destruction.\n */\n @Input()\n focusAutoCapture = true;\n\n /** Open submenu on hover after given milliseconds */\n @Input()\n openOnHoverTime = 0;\n\n /** Display menu without integrated popover */\n @Input()\n mobileConfig: MobileModeConfig = { cancelButtonText: 'Cancel' };\n\n /** Aria-label for navigation */\n @Input()\n ariaLabel: Nullable<string>;\n\n /** Aria-Labelledby for element describing navigation */\n @Input()\n ariaLabelledby: Nullable<string>;\n\n /** Id of the control. */\n @Input()\n id = `fd-menu-${menuUniqueId++}`;\n\n /** Emits array of active menu items */\n @Output()\n readonly activePath = new EventEmitter<MenuItemComponent[]>();\n\n /** @hidden Reference to the menu root template */\n @ViewChild('menuRootTemplate')\n _menuRootTemplate: TemplateRef<any>;\n\n /** @hidden Reference to all menu Items */\n @ContentChildren(FD_MENU_ITEM_COMPONENT)\n _menuItems: QueryList<MenuItemComponent>;\n\n /** @hidden Menu item segmented item headers */\n @ContentChildren(SegmentedButtonHeaderDirective)\n _segmentedButtonHeaderItems: QueryList<SegmentedButtonHeaderDirective<unknown>>;\n\n /** @hidden Menu item segmented item options */\n @ContentChildren(SegmentedButtonOptionDirective)\n _segmentedButtonOptions: QueryList<SegmentedButtonOptionDirective<unknown>>;\n\n /** @hidden */\n _navContainerRole = 'menu';\n\n /** @hidden */\n _menuListContainerRole = 'none';\n\n /** @hidden Whether use a menu in mobile mode */\n private _mobile = false;\n\n /** @hidden Reference to external menu trigger */\n private _externalTrigger: ElementRef;\n\n /** @hidden */\n private _addons: Set<unknown> = new Set();\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n private _mobileModeComponentRef: ComponentRef<MenuMobileComponent>;\n\n /** @hidden */\n private _clickEventListener: null | (() => void);\n\n /** @hidden */\n get hasAddons(): boolean {\n return this._addons.size > 0;\n }\n\n /** @hidden */\n private get _popoverConfig(): BasePopoverClass {\n return {\n ...this,\n additionalBodyClass: (this.additionalBodyClass ?? '') + ' fd-popover--menu'\n };\n }\n\n /** @hidden */\n constructor(\n public readonly elementRef: ElementRef,\n @Optional() public readonly dialogConfig: DialogConfig,\n private readonly _rendered: Renderer2,\n private readonly _menuService: MenuService,\n private readonly _changeDetectorRef: ChangeDetectorRef,\n private readonly _popoverService: PopoverService,\n private readonly _injector: Injector,\n private readonly _viewContainerRef: ViewContainerRef,\n @Optional() private readonly _dynamicComponentService: DynamicComponentService,\n readonly _contentDensityObserver: ContentDensityObserver\n ) {\n super();\n }\n\n /** @hidden */\n ngOnInit(): void {\n /** keep isOpen up to date */\n this.isOpenChange.subscribe((isOpen) => {\n this.isOpen = isOpen;\n\n // when popover got closed by its own mechanism (e.x. click outside)\n // we need to clean up a menu as well\n if (!isOpen) {\n this._cleanUpMenuAfterClose();\n }\n\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /** Register addon */\n registerAddon(addon: unknown): void {\n this._addons.add(addon);\n this._changeDetectorRef.markForCheck();\n }\n\n /** Unregister addon */\n unregisterAddon(addon: unknown): void {\n this._addons.delete(addon);\n this._changeDetectorRef.markForCheck();\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._menuService.setMenuComponent(this);\n this._listenOnMenuItemsChange();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._menuService.isMobileMode.subscribe((isMobile) => {\n this._setupView();\n\n // Since it is mobile, it's needed to disable popoverService\n if (isMobile) {\n this._popoverService.deactivate();\n }\n });\n\n this._menuService.setMenuMode(this.mobile);\n\n combineLatest([\n this._menuItems.changes.pipe(\n startWith(this._menuItems),\n map((items) => items.toArray())\n ),\n this._segmentedButtonHeaderItems.changes.pipe(\n startWith(this._segmentedButtonHeaderItems),\n map((items) => items.toArray())\n ),\n this._segmentedButtonOptions.changes.pipe(\n startWith(this._segmentedButtonOptions),\n map((items) => items.toArray())\n )\n ])\n .pipe(\n map(([menuItems, segmentedButtonHeaderItems, segmentedButtonOptions]) =>\n menuItems.map((item, index) => ({\n menuItem: item,\n segmentedButtonHeaderItem: segmentedButtonHeaderItems.find(\n (headerItem) => headerItem.elementRef.nativeElement === item.elementRef.nativeElement\n ),\n segmentedButtonOption: segmentedButtonOptions.find(\n (option) => option.elementRef.nativeElement === item.elementRef.nativeElement\n ),\n index\n }))\n ),\n map((items) => {\n let headers = items.filter((item) => !!item.segmentedButtonHeaderItem);\n const options = items.filter((item) => !!item.segmentedButtonOption);\n headers = headers.map((header, headerIndex) => ({\n ...header,\n options: options.reduce((acc, option) => {\n const lastOption = acc[acc.length - 1];\n const optionIndex = option.index;\n if (!lastOption || optionIndex === lastOption.index + 1) {\n if (headerIndex === headers.length - 1 && optionIndex > header.index) {\n acc.push(option);\n } else if (optionIndex > header.index && optionIndex < headers[headerIndex + 1].index) {\n acc.push(option);\n }\n }\n return acc;\n }, [])\n }));\n return headers;\n }),\n tap((headers) =>\n headers.forEach(({ segmentedButtonHeaderItem, options }) => {\n segmentedButtonHeaderItem.setOptions(options.map((option) => option.segmentedButtonOption));\n })\n )\n )\n .subscribe();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._destroyMobileComponent();\n this._destroyEventListeners();\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n set trigger(trigger: ElementRef) {\n this._externalTrigger = trigger;\n this._popoverService.initialise(this._externalTrigger);\n this._destroyEventListeners();\n this._listenOnTriggerRefClicks();\n }\n\n get trigger(): ElementRef {\n return this._externalTrigger;\n }\n\n /** Opens the menu */\n open(): void {\n if (this.mobile) {\n this.isOpen = true;\n this.isOpenChange.emit(this.isOpen);\n } else {\n this._popoverService.open();\n }\n\n this._changeDetectorRef.markForCheck();\n }\n\n /** Closes the menu */\n close(): void {\n if (this.mobile) {\n this.isOpen = false;\n this.isOpenChange.emit(this.isOpen);\n } else {\n this._popoverService.close();\n }\n\n this._cleanUpMenuAfterClose();\n this._focusTrigger();\n this._changeDetectorRef.markForCheck();\n }\n\n /** Toggles menu open/close state */\n toggle(): void {\n this.isOpen ? this.close() : this.open();\n }\n\n /** Method called to refresh position of opened popover */\n refreshPosition(): void {\n this._popoverService.refreshPosition();\n }\n\n /** @hidden */\n detectChanges(): void {\n this._changeDetectorRef.detectChanges();\n }\n\n /** @hidden */\n private _cleanUpMenuAfterClose(): void {\n this._menuService.resetMenuState();\n }\n\n /** @hidden Select and instantiate menu view mode */\n private _setupView(): void {\n if (this.mobile) {\n this._setupMobileMode();\n } else {\n this._setupPopoverService();\n }\n\n this.detectChanges();\n }\n\n /** @hidden */\n private _setupPopoverService(): void {\n this._subscriptions.add(\n this._popoverService._onLoad.subscribe((elementRef) => this._menuService.addKeyboardSupport(elementRef))\n );\n\n this._popoverService.templateContent = this._menuRootTemplate;\n this._popoverService.initialise(this._externalTrigger, this._popoverConfig);\n }\n\n /** @hidden Open Menu in mobile mode */\n private async _setupMobileMode(): Promise<void> {\n const injector = Injector.create({\n providers: [{ provide: MENU_COMPONENT, useValue: this }],\n parent: this._injector\n });\n\n this._mobileModeComponentRef = this._dynamicComponentService.createDynamicComponent(\n this._menuRootTemplate,\n MenuMobileComponent,\n {\n containerRef: this._viewContainerRef\n },\n { injector }\n );\n\n this._listenOnTriggerRefClicks();\n }\n\n /** @hidden Listen on menu items change and rebuild menu */\n private _listenOnMenuItemsChange(): void {\n this._subscriptions.add(this._menuItems.changes.subscribe(() => this._menuService.rebuildMenu()));\n\n // Whether menu have submenu or not.\n let isSubmenu = false;\n this._menuItems.forEach((menuItem) => {\n if (menuItem.submenu?.menuItems) {\n isSubmenu = true;\n this._subscriptions.add(\n menuItem.submenu._menuItemsChange$.subscribe(() => this._menuService.rebuildMenu())\n );\n }\n });\n if (!this.disableScrollbar && isSubmenu) {\n this.disableScrollbar = isSubmenu;\n }\n }\n\n /**\n * @hidden\n * This is going to be removed in feature, on dialog and dynamic service component refactor\n */\n private _listenOnTriggerRefClicks(): void {\n this._destroyEventListeners();\n\n if (this.trigger && this.mobile) {\n this._clickEventListener = this._rendered.listen(this.trigger.nativeElement, 'click', () => this.toggle());\n }\n }\n\n /**\n * @hidden\n * This is going to be removed in feature, on dialog and dynamic service component refactor\n */\n private _destroyEventListeners(): void {\n if (this._clickEventListener) {\n this._clickEventListener();\n this._clickEventListener = null;\n }\n }\n\n /** @hidden */\n private _destroyMobileComponent(): void {\n if (this._mobileModeComponentRef) {\n this._mobileModeComponentRef.destroy();\n }\n }\n\n /** @hidden */\n private _focusTrigger(): void {\n if (this.focusTrapped && this.trigger) {\n this.trigger.nativeElement.focus();\n }\n }\n}\n","<ng-container #viewContainer></ng-container>\n\n<ng-template #menuRootTemplate>\n <div class=\"fd-popover__wrapper--visible\">\n <nav\n class=\"fd-menu\"\n [id]=\"id\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.role]=\"_navContainerRole\"\n [class.fd-menu--mobile]=\"mobile\"\n [class.fd-menu--icons]=\"hasAddons\"\n >\n <ul\n [attr.role]=\"_menuListContainerRole\"\n class=\"fd-menu__list fd-menu__list--no-shadow\"\n [class.fd-menu--full-width]=\"mobile || false\"\n >\n <ng-content></ng-content>\n </ul>\n </nav>\n </div>\n</ng-template>\n","import { PortalModule } from '@angular/cdk/portal';\nimport { NgModule } from '@angular/core';\nimport { DynamicComponentService, InitialFocusModule } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\nimport { GlyphMenuAddonDirective } from './directives/glyph-menu-addon.directive';\nimport { MenuAddonDirective } from './directives/menu-addon.directive';\nimport { MenuItemInputDirective } from './directives/menu-item-input.directive';\nimport { MenuShortcutDirective } from './directives/menu-shortcut.directive';\nimport { MenuTitleDirective } from './directives/menu-title.directive';\nimport { MenuTriggerDirective } from './directives/menu-trigger.directive';\nimport { SegmentedButtonHeaderDirective } from './directives/segmented-button/segmented-button-header.directive';\nimport { SegmentedButtonOptionDirective } from './directives/segmented-button/segmented-button-option.directive';\nimport { ToggleButtonDirective } from './directives/toggle-button.directive';\nimport { MenuInteractiveComponent } from './menu-interactive.component';\nimport { MenuItemComponent, SubmenuComponent } from './menu-item/menu-item.component';\nimport { MenuSeparatorDirective } from './menu-separator.directive';\nimport { MenuComponent } from './menu.component';\n\n@NgModule({\n imports: [\n PopoverModule,\n InitialFocusModule,\n ContentDensityModule,\n GlyphMenuAddonDirective,\n PortalModule,\n MenuComponent,\n MenuItemComponent,\n MenuAddonDirective,\n MenuSeparatorDirective,\n MenuShortcutDirective,\n MenuInteractiveComponent,\n MenuTitleDirective,\n SubmenuComponent,\n MenuTriggerDirective,\n ToggleButtonDirective,\n SegmentedButtonHeaderDirective,\n SegmentedButtonOptionDirective,\n MenuItemInputDirective\n ],\n exports: [\n MenuComponent,\n MenuItemComponent,\n SubmenuComponent,\n MenuSeparatorDirective,\n MenuShortcutDirective,\n MenuInteractiveComponent,\n MenuTitleDirective,\n MenuAddonDirective,\n MenuTriggerDirective,\n ContentDensityModule,\n GlyphMenuAddonDirective,\n ToggleButtonDirective,\n SegmentedButtonHeaderDirective,\n SegmentedButtonOptionDirective,\n MenuItemInputDirective\n ],\n providers: [DynamicComponentService]\n})\nexport class MenuModule {}\n","import { DOWN_ARROW, ENTER, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { Injectable, Output } from '@angular/core';\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { ListItemComponent } from '@fundamental-ngx/core/list';\nimport { Subject } from 'rxjs';\nimport { DefaultMenuItem } from './default-menu-item.class';\n\n@Injectable()\nexport class MenuKeyboardService {\n /** Event emitted when an item link is clicked.*/\n @Output()\n public readonly itemClicked: Subject<number> = new Subject<number>();\n\n /** Whether user wants to remove keyboard handling */\n disableKeydownHandling = false;\n\n /** Function that is supposed to be called, when focus escape before list */\n focusEscapeBeforeList: () => void;\n\n /** Function that is supposed to be called, when focus escape after list */\n focusEscapeAfterList: () => void;\n\n /** Function that should be called every time, keydown event is used on some menu item,\n * it provides whole functionality for handling\n * ArrowDown - focus, ArrowUp - focus, Space bar - simulate click, Enter key - simulate click.\n * @param event KeyboardEvent\n * @param index index of items starts from 0\n * @param menuItems array of menu item directives\n * */\n keyDownHandler(event: KeyboardEvent, index: number, menuItems: DefaultMenuItem[] | ListItemComponent[]): void {\n if (this.disableKeydownHandling) {\n return;\n }\n\n if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n if (menuItems.length > index + 1) {\n menuItems[index + 1].focus();\n } else {\n if (this.focusEscapeAfterList) {\n this.focusEscapeAfterList();\n } else {\n menuItems[0].focus();\n }\n }\n event.preventDefault();\n } else if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n if (index > 0) {\n menuItems[index - 1].focus();\n } else {\n if (this.focusEscapeBeforeList) {\n this.focusEscapeBeforeList();\n } else {\n menuItems[menuItems.length - 1].focus();\n }\n }\n event.preventDefault();\n } else if (KeyUtil.isKeyCode(event, [SPACE, ENTER])) {\n if (menuItems[index]) {\n menuItems[index].click();\n event.preventDefault();\n }\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.GlyphMenuAddonDirective","i1","menuUniqueId","i1.MenuItemComponent","switchMap","i2","startWith","i2.MenuService","i4"],"mappings":"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"}
|