{"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-content.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-subtitle.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.setInput('glyph', glyphName);\n                    const nativeElement = componentRef.location.nativeElement;\n                    nativeElement.setAttribute('role', 'presentation');\n                    if (this.isInToggleButton) {\n                        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})\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 } 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-content]',\n    host: {\n        class: 'fd-menu__content'\n    }\n})\nexport class MenuContentDirective {}\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 { booleanAttribute, Directive, ElementRef, inject, input } 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    host: {\n        class: 'fd-menu__title',\n        '[class.fd-menu__title--truncate]': 'truncate()',\n        '[attr.title]': 'title'\n    }\n})\nexport class MenuTitleDirective {\n    /** Whether the title should truncate with ellipsis. */\n    readonly truncate = input(false, { transform: booleanAttribute });\n\n    /** @hidden */\n    private readonly _elementRef = inject(ElementRef);\n\n    /** Returns element title text */\n    get title(): string {\n        return this._elementRef.nativeElement.textContent;\n    }\n}\n","import { CdkPortalOutlet, ComponentPortal, PortalModule } from '@angular/cdk/portal';\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ContentChild,\n    ElementRef,\n    HostBinding,\n    HostListener,\n    ViewChild,\n    inject\n} 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    changeDetection: ChangeDetectionStrategy.OnPush,\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 readonly _cdr = inject(ChangeDetectorRef);\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: Event): 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        this._cdr.markForCheck();\n    }\n\n    /** @hidden */\n    setDisabled(isDisabled: boolean): void {\n        this.disabled = isDisabled;\n        this.tabindex = isDisabled ? -1 : 0;\n        this._cdr.markForCheck();\n    }\n\n    /** @hidden */\n    setSubmenu(hasSubmenu: boolean, itemId?: string): void {\n        this.ariaHaspopup = hasSubmenu;\n        this.ariaControls = hasSubmenu ? itemId || this.ariaControls : null;\n        this._cdr.markForCheck();\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, inject, Injectable, OnDestroy, 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 _destroyKeyDownHandlerListener: () => void;\n\n    /** @hidden */\n    private _destroyKeyUpHandlerListener: () => void;\n\n    /** @hidden */\n    private readonly _renderer = inject(Renderer2);\n\n    /** @hidden */\n    private readonly _rtlService = inject(RtlService, { optional: true });\n\n    /** @hidden */\n    get _isRtl(): boolean {\n        return this._rtlService?.rtl() ?? false;\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            const rootNode = this.menuMap.get(null);\n            this.focusedNode = this.activeNodePath[this.activeNodePath.length - 1] || rootNode?.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._destroyKeyDownHandlerListener) {\n            this._destroyKeyDownHandlerListener();\n        }\n        if (this._destroyKeyUpHandlerListener) {\n            this._destroyKeyUpHandlerListener();\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: MenuItemComponent) => !rootItem.parentSubmenu);\n\n        /** root item */\n        const menuTree: MenuNode = {\n            item: null,\n            parent: null,\n            children: rootItems.map((item: MenuItemComponent) => 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._destroyKeyDownHandlerListener = this._renderer.listen(\n            elementRef.nativeElement,\n            'keydown',\n            (event: KeyboardEvent) => this._handleKeydown(event)\n        );\n        this._destroyKeyUpHandlerListener = this._renderer.listen(\n            elementRef.nativeElement,\n            'keyup',\n            (event: KeyboardEvent) => this._handleKeyup(event)\n        );\n    }\n\n    /** @hidden Handles keydown events: navigation and scroll prevention for Space/Enter */\n    private _handleKeydown(event: KeyboardEvent): void {\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                setTimeout(() => this.setFocused(this.focusedNode!.children[0].item));\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, ESCAPE) && this.menuComponent.closeOnEscapeKey()) {\n            this.menuComponent.close();\n        } else if (!KeyUtil.isKeyCode(event, [SPACE, ENTER])) {\n            return;\n        }\n\n        event.preventDefault();\n    }\n\n    /** @hidden Handles keyup events: activates focused item on Space/Enter (WCAG: activate on key release) */\n    private _handleKeyup(event: KeyboardEvent): void {\n        if (!this.focusedNode) {\n            return;\n        }\n\n        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                setTimeout(() => this.setFocused(focusedNode.children[0].item));\n            }\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    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    readonly elementRef = inject(ElementRef);\n\n    /** @hidden */\n    menuService = inject(MenuService, { optional: true });\n\n    /** @hidden */\n    private _subscriptions: Subscription = new Subscription();\n\n    /** @hidden */\n    private _hoverSubscriptions: Subscription = new Subscription();\n\n    /** @hidden */\n    private _submenu = inject<BaseSubmenu | null>(SUBMENU, { optional: true });\n\n    /** @hidden */\n    private _changeDetectorRef = inject(ChangeDetectorRef);\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        if (this.menuService) {\n            this._subscriptions.add(\n                this.menuService.isMobileMode.subscribe((isMobile) => {\n                    this._hoverSubscriptions.unsubscribe();\n                    if (!isMobile) {\n                        this._hoverSubscriptions = this._listenOnMenuLinkHover();\n                    } else {\n                        // In mobile mode, leave subscriptions closed (don't create a new empty one)\n                        // The closed state is used by tests to verify mobile mode behavior\n                    }\n                })\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 ? 'false' : 'true'\"\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 { booleanAttribute, Directive, ElementRef, inject, input } 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-subtitle]',\n    host: {\n        class: 'fd-menu__subtitle',\n        '[class.fd-menu__subtitle--truncate]': 'truncate()'\n    }\n})\nexport class MenuSubtitleDirective {\n    /** Whether the title should truncate with ellipsis. */\n    readonly truncate = input(false, { transform: booleanAttribute });\n\n    /** @hidden */\n    private readonly _elementRef = inject(ElementRef);\n\n    /** Returns element title text */\n    get subtitle(): string {\n        return this._elementRef.nativeElement.textContent;\n    }\n}\n","import { Directive, ElementRef, HostBinding, inject, 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    private readonly _elementRef = inject(ElementRef);\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this._unsubscribeFromMenu();\n    }\n\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, DestroyRef, Directive, ElementRef, inject, Input, Renderer2 } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\nimport { BehaviorSubject, combineLatest, delay, 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    host: {\n        '(click)': '_onClick($event)',\n        '(keydown.enter)': '_onClick($event)',\n        '(keydown.space)': '_onClick($event)'\n    }\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    private readonly _destroyRef = inject(DestroyRef);\n\n    /** @hidden */\n    constructor() {\n        this.clicked = this._clicked.asObservable();\n        combineLatest([this._viewInit$.pipe(delay(0)), 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(this._destroyRef)\n            )\n            .subscribe();\n    }\n\n    /** @hidden */\n    _onClick($event: Event): 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')\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 { InjectionToken, InputSignal, InputSignalWithTransform, ModelSignal, OutputEmitterRef } from '@angular/core';\nimport { DialogConfig } from '@fundamental-ngx/core/dialog';\nimport { MobileMode, MobileModeConfig } 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 *\n * Note: MenuComponent implements InputSignal properties, which satisfy this interface\n * through structural typing even though the types don't perfectly align with MobileMode base.\n */\nexport interface MenuInterface extends Omit<MobileMode, 'mobile' | 'mobileConfig'> {\n    mobile: InputSignalWithTransform<boolean, unknown>;\n    mobileConfig: InputSignal<MobileModeConfig>;\n    activePath: OutputEmitterRef<MenuItemComponent[]>;\n    dialogConfig: DialogConfig | null;\n    isOpen: ModelSignal<boolean>;\n    isOpenChange: OutputEmitterRef<boolean>;\n\n    close(): void;\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n    afterNextRender,\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    effect,\n    inject,\n    Injector,\n    OnInit,\n    runInInjectionContext,\n    signal,\n    TemplateRef,\n    untracked,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport { outputToObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { InitialFocusDirective, RtlService, TemplateDirective } 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 } from '@fundamental-ngx/core/title';\nimport { startWith } 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        BarLeftDirective,\n        BarRightDirective,\n        BarElementDirective,\n        ButtonBarComponent,\n        TemplateDirective,\n        BarLeftDirective,\n        BarRightDirective,\n        BarElementDirective,\n        ButtonBarComponent,\n        ButtonComponent,\n        ContentDensityDirective,\n        NgTemplateOutlet,\n        InitialFocusDirective,\n        DialogComponent,\n        DialogBodyComponent,\n        DialogHeaderComponent,\n        DialogCloseButtonComponent,\n        DialogFooterComponent,\n        TitleComponent\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    protected readonly navigationIcon = computed(() =>\n        this._rtlService?.rtl() ? '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    private readonly _rtlService = inject(RtlService, { optional: true });\n\n    /** @hidden */\n    private readonly _menuService = inject(MenuService);\n\n    /** @hidden */\n    private readonly _injector = inject(Injector);\n\n    /** @hidden */\n    constructor() {\n        super(inject<MenuInterface>(MENU_COMPONENT), MobileModeControl.MENU);\n\n        // Set up effect to watch isOpen changes and open/close dialog\n        // This runs synchronously when the signal changes, avoiding timing issues\n        effect(() => {\n            const isOpen = this._component.isOpen();\n            untracked(() => {\n                if (isOpen && !this.dialogRef) {\n                    // Only open if not already open\n                    this._openDialog();\n                } else if (!isOpen && this.dialogRef) {\n                    // Only close if currently open\n                    this.dialogRef.close();\n                    this.dialogRef = null!;\n                }\n            });\n        });\n    }\n\n    /** @hidden */\n    ngOnInit(): void {\n        this._listenOnActivePathChange();\n        // Dialog open/close is now handled by effect in constructor\n    }\n\n    /** Closes the Dialog and Menu component */\n    close(): void {\n        this.dialogRef?.close();\n        this.dialogRef = null!;\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._executeAfterNextRender(() => {\n            menuItem?.focus();\n        });\n    }\n\n    /** @hidden Opens the Dialog */\n    private _openDialog(): void {\n        const config = {\n            mobile: true,\n            disablePaddings: true,\n            ...this.dialogConfig,\n            escKeyCloseable: false,\n            backdropClickCloseable: false\n        };\n\n        // Only add container if it's valid (for tests, this might not be set up properly)\n        if (this._elementRef?.nativeElement) {\n            config.container = this._elementRef.nativeElement;\n        }\n\n        this.dialogRef = this._dialogService.open(this.dialogTemplate, config);\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\n        // Use runInInjectionContext for outputToObservable\n        runInInjectionContext(this._injector, () => {\n            outputToObservable(this._component.activePath)\n                .pipe(startWith(initialItemPath), takeUntilDestroyed(this._destroyRef))\n                .subscribe((items) => this._setMenuView(items));\n        });\n    }\n\n    /**\n     * @hidden\n     * Executes a function after the next render cycle.\n     */\n    private _executeAfterNextRender(fn: () => void): void {\n        afterNextRender(fn, { injector: this._injector });\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._executeAfterNextRender(() => {\n            this._menuService.focusedNode?.item?.focus();\n        });\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    afterNextRender,\n    AfterViewInit,\n    booleanAttribute,\n    ChangeDetectionStrategy,\n    Component,\n    ComponentRef,\n    contentChildren,\n    DestroyRef,\n    effect,\n    ElementRef,\n    forwardRef,\n    inject,\n    Injector,\n    input,\n    model,\n    OnDestroy,\n    output,\n    Renderer2,\n    runInInjectionContext,\n    signal,\n    TemplateRef,\n    untracked,\n    viewChild,\n    ViewContainerRef,\n    ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { DynamicComponentService } from '@fundamental-ngx/cdk/utils';\nimport { DialogConfig } from '@fundamental-ngx/core/dialog';\nimport { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';\nimport { PopoverConfig, PopoverService, TriggerConfig } from '@fundamental-ngx/core/popover';\nimport { Placement, PopoverFillMode } from '@fundamental-ngx/core/shared';\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    host: {\n        '[class.fd-popover-custom--disabled]': 'disabled()'\n    }\n})\nexport class MenuComponent implements MenuInterface, AfterContentInit, AfterViewInit, OnDestroy {\n    /** Open submenu on hover after given milliseconds */\n    readonly openOnHoverTime = input(0);\n\n    /** Aria-label for navigation */\n    readonly ariaLabel = input<string | null>(null);\n\n    /** Aria-Labelledby for element describing navigation */\n    readonly ariaLabelledby = input<string | null>(null);\n\n    /** Id of the control. */\n    readonly id = input(`fd-menu-${menuUniqueId++}`);\n\n    /**\n     * Configuration object for popover settings.\n     * When provided, these settings will be merged with individual input properties.\n     * Individual inputs take precedence over config object values.\n     */\n    readonly config = input<PopoverConfig>({});\n\n    /** Whether the menu should be displayed in mobile mode */\n    readonly mobile = input(false, { transform: booleanAttribute });\n\n    /** Mobile mode configuration */\n    readonly mobileConfig = input<MobileModeConfig>({\n        approveButtonText: '',\n        title: '',\n        hasCloseButton: true\n    });\n\n    /** Menu placement */\n    readonly placement = input<Placement>('bottom-start');\n\n    /** Whether to close menu on escape key */\n    readonly closeOnEscapeKey = input(true, { transform: booleanAttribute });\n\n    /** Whether to auto-capture focus when opened */\n    readonly focusAutoCapture = input(true, { transform: booleanAttribute });\n\n    /** Whether the menu is disabled */\n    readonly disabled = input(false, { transform: booleanAttribute });\n\n    /** Whether to disable scrollbar */\n    readonly disableScrollbar = input(false, { transform: booleanAttribute });\n\n    /** Trigger events for opening/closing */\n    readonly triggers = input<(string | TriggerConfig)[]>(['click']);\n\n    /**\n     * Preset options for the menu body width.\n     * * `at-least` will apply a minimum width to the body equivalent to the width of the control.\n     * * `equal` will apply a width to the body equivalent to the width of the control.\n     * * Leave blank for no effect.\n     */\n    readonly fillControlMode = input<PopoverFillMode | null>(null);\n\n    /** Whether to close on outside click */\n    readonly closeOnOutsideClick = input(true, { transform: booleanAttribute });\n\n    /** Whether to hide the arrow */\n    readonly noArrow = input(true, { transform: booleanAttribute });\n\n    /** Whether the menu should trap focus within its boundaries */\n    readonly focusTrapped = input(true, { transform: booleanAttribute });\n\n    /** Additional CSS classes for the menu body container */\n    readonly additionalBodyClass = input<string | null>(null);\n\n    /** Whether to close the menu on router navigation start */\n    readonly closeOnNavigation = input(true, { transform: booleanAttribute });\n\n    /** Whether to move focus back to the trigger after the menu is closed */\n    readonly restoreFocusOnClose = input(true, { transform: booleanAttribute });\n\n    /** The element to which the menu overlay is attached */\n    readonly appendTo = input<ElementRef | Element | null>(null);\n\n    /** Whether position shouldn't change when the menu approaches the corner of the page */\n    readonly fixedPosition = input(false, { transform: booleanAttribute });\n\n    /** Two-way binding for menu open state */\n    readonly isOpen = model(false);\n\n    /** Emits when menu open state changes - required for MenuInterface compatibility */\n    readonly isOpenChange = output<boolean>();\n\n    /** Emits array of active menu items */\n    readonly activePath = output<MenuItemComponent[]>();\n\n    /** Event emitted right before the menu is being opened. */\n    readonly beforeOpen = output<void>();\n\n    /** @hidden Injected dependencies using inject() function */\n    readonly elementRef = inject(ElementRef);\n    readonly dialogConfig = inject(DialogConfig, { optional: true });\n    readonly _contentDensityObserver = inject(ContentDensityObserver);\n\n    /** Public getter for menu items - used by MenuService */\n    get menuItems(): readonly MenuItemComponent[] {\n        return this._menuItems() as readonly MenuItemComponent[];\n    }\n\n    /** @hidden */\n    _navContainerRole = 'menu';\n\n    /** @hidden */\n    _menuListContainerRole = 'none';\n\n    /** @hidden Reference to the menu root template */\n    protected readonly _menuRootTemplate = viewChild<TemplateRef<any>>('menuRootTemplate');\n\n    /** @hidden Reference to all menu Items */\n    protected readonly _menuItems = contentChildren(FD_MENU_ITEM_COMPONENT);\n\n    /** @hidden Menu item segmented item headers */\n    protected readonly _segmentedButtonHeaderItems = contentChildren(SegmentedButtonHeaderDirective);\n\n    /** @hidden Menu item segmented item options */\n    protected readonly _segmentedButtonOptions = contentChildren(SegmentedButtonOptionDirective);\n\n    /** @hidden */\n    protected get hasAddons(): boolean {\n        return this._addons().size > 0;\n    }\n\n    /** @hidden Reference to external menu trigger */\n    private _externalTrigger: ElementRef | null = null;\n\n    /** @hidden */\n    private _addons = signal<Set<unknown>>(new Set());\n\n    /** @hidden */\n    private _mobileModeComponentRef: ComponentRef<MenuMobileComponent> | null = null;\n\n    /** @hidden */\n    private _clickEventListener: null | (() => void);\n\n    /** @hidden Flag to prevent circular sync between component and service */\n    private _syncingIsOpen = false;\n\n    /** @hidden */\n    private readonly _renderer = inject(Renderer2);\n    private readonly _menuService = inject(MenuService);\n    private readonly _popoverService = inject(PopoverService);\n    private readonly _injector = inject(Injector);\n    private readonly _viewContainerRef = inject(ViewContainerRef);\n    private readonly _dynamicComponentService = inject(DynamicComponentService, { optional: true });\n    private readonly _destroyRef = inject(DestroyRef);\n\n    /** @hidden */\n    constructor() {\n        // Watch mobile mode changes\n        effect(() => {\n            this._menuService.setMenuMode(this.mobile());\n        });\n\n        // Sync component → service and emit beforeOpen\n        let previousIsOpen = false;\n        effect(() => {\n            const openState = this.isOpen();\n\n            // Emit beforeOpen when transitioning from closed to open\n            if (openState && !previousIsOpen) {\n                this.beforeOpen.emit();\n            }\n\n            // Emit isOpenChange for MenuMobileComponent and other consumers\n            this.isOpenChange.emit(openState);\n\n            // Sync to service only if not already syncing and not in mobile mode (prevents loop).\n            // In mobile mode, the dialog handles open/close — the popover service should not be involved.\n            if (!this._syncingIsOpen && !this.mobile()) {\n                this._syncingIsOpen = true;\n                this._popoverService.isOpen.set(openState);\n                this._syncingIsOpen = false;\n            }\n\n            if (!openState) {\n                this._cleanUpMenuAfterClose();\n            }\n\n            previousIsOpen = openState;\n        });\n\n        // Sync popover configuration with service\n        effect(() => {\n            const cfg = this.config();\n\n            this._popoverService.placement.set(this.placement() ?? cfg.placement ?? 'bottom-start');\n            this._popoverService.closeOnEscapeKey.set(this.closeOnEscapeKey() ?? cfg.closeOnEscapeKey ?? true);\n            this._popoverService.disabled.set(this.disabled() ?? cfg.disabled ?? false);\n            this._popoverService.focusTrapped.set(this.focusTrapped() ?? cfg.focusTrapped ?? false);\n            this._popoverService.focusAutoCapture.set(this.focusAutoCapture() ?? cfg.focusAutoCapture ?? true);\n            // Note: disableScrollbar is handled separately when checking for submenus (see afterNextRender effect)\n            // We don't set it here to avoid race conditions where this effect might override the submenu logic\n            this._popoverService.triggers.set(this.triggers() ?? cfg.triggers ?? ['click']);\n            this._popoverService.fillControlMode.set(this.fillControlMode() ?? cfg.fillControlMode ?? null);\n            this._popoverService.closeOnOutsideClick.set(this.closeOnOutsideClick() ?? cfg.closeOnOutsideClick ?? true);\n            this._popoverService.noArrow.set(this.noArrow() ?? cfg.noArrow ?? true);\n            this._popoverService.closeOnNavigation.set(this.closeOnNavigation() ?? cfg.closeOnNavigation ?? true);\n            this._popoverService.restoreFocusOnClose.set(this.restoreFocusOnClose() ?? cfg.restoreFocusOnClose ?? true);\n            this._popoverService.appendTo.set(this.appendTo() ?? cfg.appendTo ?? null);\n            this._popoverService.fixedPosition.set(this.fixedPosition() ?? cfg.fixedPosition ?? false);\n\n            const bodyClass = this.additionalBodyClass() ?? cfg.additionalBodyClass ?? '';\n            this._popoverService.additionalBodyClass.set(bodyClass + ' fd-popover--menu');\n        });\n\n        // Listen on menu items change and rebuild menu\n        // Use afterNextRender to ensure this runs after ngAfterContentInit sets the menu component\n        afterNextRender(() => {\n            runInInjectionContext(this._injector, () => {\n                // Track previous subscriptions to clean up when effect re-runs\n                let submenuSubscriptions: (() => void)[] = [];\n\n                effect((onCleanup) => {\n                    // Clean up previous subscriptions before creating new ones\n                    submenuSubscriptions.forEach((unsubscribe) => unsubscribe());\n                    submenuSubscriptions = [];\n\n                    const menuItems = this._menuItems() as readonly MenuItemComponent[];\n                    this._menuService.rebuildMenu();\n\n                    // Whether menu have submenu or not.\n                    let hasSubmenus = false;\n                    menuItems.forEach((menuItem: MenuItemComponent) => {\n                        if (menuItem.submenu) {\n                            hasSubmenus = true;\n                            // Subscribe to submenu changes and track subscription for cleanup\n                            const subscription = menuItem.submenu._menuItemsChange$.subscribe(() =>\n                                this._menuService.rebuildMenu()\n                            );\n                            submenuSubscriptions.push(() => subscription.unsubscribe());\n                        }\n                    });\n\n                    // Always disable scrollbar when menu has submenus to prevent clipping\n                    // Only respect the user's disableScrollbar input if they explicitly enabled it or there are no submenus\n                    const cfg = this.config();\n                    const shouldDisableScrollbar =\n                        hasSubmenus || (this.disableScrollbar() ?? cfg.disableScrollbar ?? false);\n                    this._popoverService.disableScrollbar.set(shouldDisableScrollbar);\n\n                    // Cleanup callback when effect is destroyed or re-runs\n                    onCleanup(() => {\n                        submenuSubscriptions.forEach((unsubscribe) => unsubscribe());\n                        submenuSubscriptions = [];\n                    });\n                });\n            });\n        });\n\n        // Process segmented button items (needs to run after view init)\n        afterNextRender(() => {\n            runInInjectionContext(this._injector, () => {\n                effect(() => {\n                    const menuItems = this._menuItems() as readonly MenuItemComponent[];\n                    const segmentedHeaders = this._segmentedButtonHeaderItems();\n                    const segmentedOptions = this._segmentedButtonOptions();\n\n                    // Process segmented button items\n                    const items = menuItems.map((item, index) => ({\n                        menuItem: item,\n                        segmentedButtonHeaderItem: segmentedHeaders.find(\n                            (headerItem) => headerItem.elementRef.nativeElement === item.elementRef.nativeElement\n                        ),\n                        segmentedButtonOption: segmentedOptions.find(\n                            (option) => option.elementRef.nativeElement === item.elementRef.nativeElement\n                        ),\n                        index\n                    }));\n\n                    const headers = items.filter((item) => !!item.segmentedButtonHeaderItem);\n                    const options = items.filter((item) => !!item.segmentedButtonOption);\n\n                    const headersWithOptions = 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 (\n                                    optionIndex > header.index &&\n                                    optionIndex < headers[headerIndex + 1]?.index\n                                ) {\n                                    acc.push(option);\n                                }\n                            }\n                            return acc;\n                        }, [] as any[])\n                    }));\n\n                    headersWithOptions.forEach(({ segmentedButtonHeaderItem, options: headerOptions }) => {\n                        segmentedButtonHeaderItem?.setOptions(\n                            headerOptions.map((option) => option.segmentedButtonOption)\n                        );\n                    });\n                });\n            });\n        });\n\n        // Watch for mobile mode changes (needs to run after view init)\n        afterNextRender(() => {\n            runInInjectionContext(this._injector, () => {\n                effect(() => {\n                    const mobileValue = this.mobile();\n                    // Use untracked to prevent _setupView from running in reactive context\n                    // This avoids NG0602 errors when _setupView calls other setup methods\n                    untracked(() => {\n                        this._setupView();\n\n                        if (mobileValue) {\n                            this._popoverService.deactivate();\n                        }\n                    });\n                });\n            });\n        });\n\n        // Subscribe to service changes for bidirectional sync using afterNextRender\n        // to ensure service is fully initialized\n        afterNextRender(\n            () => {\n                // Service will emit when it closes/opens programmatically (escape key, close button, etc.)\n                this._popoverService.isOpenChange\n                    .pipe(takeUntilDestroyed(this._destroyRef))\n                    .subscribe((serviceIsOpen) => {\n                        // Don't sync in mobile mode - the mobile dialog manages its own open/close state\n                        if (this.mobile()) {\n                            return;\n                        }\n\n                        // Only update if different and not already syncing (prevents loop)\n                        if (!this._syncingIsOpen && this.isOpen() !== serviceIsOpen) {\n                            this._syncingIsOpen = true;\n                            this.isOpen.set(serviceIsOpen);\n                            this._syncingIsOpen = false;\n                        }\n                    });\n            },\n            { injector: this._injector }\n        );\n    }\n\n    /** Register addon */\n    registerAddon(addon: unknown): void {\n        const currentAddons = this._addons();\n        currentAddons.add(addon);\n        this._addons.set(new Set(currentAddons));\n    }\n\n    /** Unregister addon */\n    unregisterAddon(addon: unknown): void {\n        const currentAddons = this._addons();\n        currentAddons.delete(addon);\n        this._addons.set(new Set(currentAddons));\n    }\n\n    /** @hidden */\n    ngAfterContentInit(): void {\n        this._menuService.setMenuComponent(this);\n    }\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        this._menuService.setMenuMode(this.mobile());\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this._destroyMobileComponent();\n        this._destroyEventListeners();\n    }\n\n    /** @hidden */\n    set trigger(trigger: ElementRef | null) {\n        this._externalTrigger = trigger;\n        if (trigger && !this.mobile()) {\n            this._popoverService.initialise(trigger);\n        }\n        this._destroyEventListeners();\n        this._listenOnTriggerRefClicks();\n    }\n\n    get trigger(): ElementRef | null {\n        return this._externalTrigger;\n    }\n\n    /** Opens the menu */\n    open(): void {\n        // Always update component state for consistency\n        this.isOpen.set(true);\n\n        // In desktop mode, also explicitly open the popover service.\n        // In mobile mode the dialog handles open/close via the isOpen signal.\n        if (!this.mobile()) {\n            this._popoverService.open();\n        }\n    }\n\n    /** Closes the menu */\n    close(): void {\n        // Always update component state for consistency\n        this.isOpen.set(false);\n\n        // In desktop mode, also explicitly close the popover service\n        if (!this.mobile()) {\n            this._popoverService.close();\n        }\n\n        this._cleanUpMenuAfterClose();\n        this._focusTrigger();\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 menu */\n    refreshPosition(): void {\n        this._popoverService.refreshPosition();\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\n    /** @hidden */\n    private _setupPopoverService(): void {\n        // Subscribe to popover load event to add keyboard support\n        // This is set up once, not reactively, so no effect() needed\n        this._popoverService._onLoad.subscribe((elementRef) => this._menuService.addKeyboardSupport(elementRef));\n\n        const template = this._menuRootTemplate();\n        if (template) {\n            this._popoverService.templateContent = template;\n        }\n\n        if (this._externalTrigger) {\n            // Create config from current signal values\n            const cfg = this.config();\n            const configToPass: PopoverConfig = {\n                placement: this.placement() ?? cfg.placement,\n                closeOnEscapeKey: this.closeOnEscapeKey() ?? cfg.closeOnEscapeKey,\n                disabled: this.disabled() ?? cfg.disabled,\n                focusTrapped: this.focusTrapped() ?? cfg.focusTrapped,\n                focusAutoCapture: this.focusAutoCapture() ?? cfg.focusAutoCapture,\n                // Note: disableScrollbar is handled by the submenu detection effect, don't set it here\n                triggers: this.triggers() ?? cfg.triggers,\n                fillControlMode: this.fillControlMode() ?? cfg.fillControlMode,\n                closeOnOutsideClick: this.closeOnOutsideClick() ?? cfg.closeOnOutsideClick,\n                noArrow: this.noArrow() ?? cfg.noArrow,\n                closeOnNavigation: this.closeOnNavigation() ?? cfg.closeOnNavigation,\n                restoreFocusOnClose: this.restoreFocusOnClose() ?? cfg.restoreFocusOnClose,\n                appendTo: this.appendTo() ?? cfg.appendTo,\n                fixedPosition: this.fixedPosition() ?? cfg.fixedPosition,\n                additionalBodyClass: (\n                    (this.additionalBodyClass() ?? cfg.additionalBodyClass ?? '') + ' fd-popover--menu'\n                ).trim()\n            };\n\n            this._popoverService.initialise(this._externalTrigger, configToPass);\n        }\n    }\n\n    /** @hidden Open Menu in mobile mode */\n    private async _setupMobileMode(): Promise<void> {\n        if (!this._dynamicComponentService) {\n            return;\n        }\n\n        const injector = Injector.create({\n            providers: [{ provide: MENU_COMPONENT, useValue: this }],\n            parent: this._injector\n        });\n\n        const template = this._menuRootTemplate();\n        if (!template) {\n            return;\n        }\n\n        this._mobileModeComponentRef = this._dynamicComponentService.createDynamicComponent(\n            template,\n            MenuMobileComponent,\n            {\n                containerRef: this._viewContainerRef\n            },\n            { injector }\n        );\n\n        this._listenOnTriggerRefClicks();\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._renderer.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 { MenuContentDirective } from './directives/menu-content.directive';\nimport { MenuItemInputDirective } from './directives/menu-item-input.directive';\nimport { MenuShortcutDirective } from './directives/menu-shortcut.directive';\nimport { MenuSubtitleDirective } from './directives/menu-subtitle.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/**\n * @deprecated\n * Use direct imports of components and directives.\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        MenuSubtitleDirective,\n        MenuContentDirective,\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        MenuSubtitleDirective,\n        MenuContentDirective,\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"],"mappings":"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"}