@fundamental-ngx/core 0.61.2-rc.8 → 0.61.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/fundamental-ngx-core-action-sheet.mjs +2 -3
- package/fesm2022/fundamental-ngx-core-action-sheet.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-avatar-group.mjs +4 -6
- package/fesm2022/fundamental-ngx-core-avatar-group.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-breadcrumb.mjs +13 -11
- package/fesm2022/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-busy-indicator.mjs +7 -5
- package/fesm2022/fundamental-ngx-core-busy-indicator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-calendar.mjs +31 -35
- package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-carousel.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-carousel.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-combobox.mjs +3 -5
- package/fesm2022/fundamental-ngx-core-combobox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-date-picker.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-date-picker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-datetime-picker.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-datetime.mjs +13 -7
- package/fesm2022/fundamental-ngx-core-datetime.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-dynamic-page.mjs +13 -13
- package/fesm2022/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-feed-list-item.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-form.mjs +1 -1
- package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-grid-list.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-grid-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-info-label.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-info-label.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-inline-help.mjs +65 -59
- package/fesm2022/fundamental-ngx-core-inline-help.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-link.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-link.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-menu.mjs +1 -3
- package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-strip.mjs +49 -44
- package/fesm2022/fundamental-ngx-core-message-strip.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +17 -23
- package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-multi-input.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-nested-list.mjs +21 -22
- package/fesm2022/fundamental-ngx-core-nested-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-notification.mjs +16 -13
- package/fesm2022/fundamental-ngx-core-notification.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-identifier.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-identifier.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-number.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-number.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-status.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-status.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-overflow-layout.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-pagination.mjs +14 -11
- package/fesm2022/fundamental-ngx-core-pagination.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-popover.mjs +6 -0
- package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-product-switch.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-product-switch.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-rating-indicator.mjs +7 -4
- package/fesm2022/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-segmented-button.mjs +11 -10
- package/fesm2022/fundamental-ngx-core-segmented-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-select.mjs +6 -7
- package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-shellbar.mjs +6 -6
- package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-slider.mjs +6 -6
- package/fesm2022/fundamental-ngx-core-slider.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-split-button.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-split-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-step-input.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-step-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-switch.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-switch.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tabs.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-text.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-text.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-time-picker.mjs +29 -4
- package/fesm2022/fundamental-ngx-core-time-picker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-time.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-token.mjs +15 -12
- package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-toolbar.mjs +3 -5
- package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tree.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-tree.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-upload-collection.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-upload-collection.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-user-menu.mjs +3 -5
- package/fesm2022/fundamental-ngx-core-user-menu.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs.map +1 -1
- package/package.json +3 -3
- package/types/fundamental-ngx-core-breadcrumb.d.ts +5 -5
- package/types/fundamental-ngx-core-busy-indicator.d.ts +3 -3
- package/types/fundamental-ngx-core-combobox.d.ts +2 -4
- package/types/fundamental-ngx-core-datetime.d.ts +5 -1
- package/types/fundamental-ngx-core-dynamic-page.d.ts +2 -1
- package/types/fundamental-ngx-core-inline-help.d.ts +45 -24
- package/types/fundamental-ngx-core-menu.d.ts +0 -2
- package/types/fundamental-ngx-core-message-strip.d.ts +12 -3
- package/types/fundamental-ngx-core-multi-combobox.d.ts +1 -1
- package/types/fundamental-ngx-core-nested-list.d.ts +10 -10
- package/types/fundamental-ngx-core-notification.d.ts +7 -5
- package/types/fundamental-ngx-core-pagination.d.ts +4 -3
- package/types/fundamental-ngx-core-rating-indicator.d.ts +2 -3
- package/types/fundamental-ngx-core-segmented-button.d.ts +5 -3
- package/types/fundamental-ngx-core-slider.d.ts +1 -1
- package/types/fundamental-ngx-core-time-picker.d.ts +17 -1
- package/types/fundamental-ngx-core-token.d.ts +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-core-user-menu.mjs","sources":["../../../../libs/core/user-menu/directives/user-menu-user-name.directive.ts","../../../../libs/core/user-menu/components/user-menu-list-item.component.ts","../../../../libs/core/user-menu/components/user-menu-list-item.component.html","../../../../libs/core/user-menu/components/user-menu-body.component.ts","../../../../libs/core/user-menu/components/user-menu-body.component.html","../../../../libs/core/user-menu/components/user-menu-content-container.component.ts","../../../../libs/core/user-menu/components/user-menu-control.component.ts","../../../../libs/core/user-menu/components/user-menu-footer.component.ts","../../../../libs/core/user-menu/components/user-menu-list.component.ts","../../../../libs/core/user-menu/components/user-menu-sublist.component.ts","../../../../libs/core/user-menu/directives/user-menu-control-element.directive.ts","../../../../libs/core/user-menu/user-menu.component.ts","../../../../libs/core/user-menu/user-menu.component.html","../../../../libs/core/user-menu/directives/user-menu-header-container.directive.ts","../../../../libs/core/user-menu/directives/user-menu-header.directive.ts","../../../../libs/core/user-menu/directives/user-menu-subline.directive.ts","../../../../libs/core/user-menu/user-menu.module.ts","../../../../libs/core/user-menu/fundamental-ngx-core-user-menu.ts"],"sourcesContent":["import { booleanAttribute, Directive, input } from '@angular/core';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-user-menu-user-name]',\n host: {\n class: 'fd-user-menu__user-name',\n '[class.fd-user-menu__user-name--truncate]': 'truncate()'\n }\n})\nexport class UserMenuUserNameDirective {\n /** Whether the text should truncate with ellipsis. */\n truncate = input(false, { transform: booleanAttribute });\n}\n","import { ESCAPE, LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport { CommonModule } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n EventEmitter,\n HostListener,\n inject,\n input,\n NgZone,\n Output,\n output,\n signal,\n TemplateRef,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KeyboardSupportItemInterface, KeyUtil, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { PopoverBodyComponent, PopoverComponent, PopoverControlComponent } from '@fundamental-ngx/core/popover';\nimport { asyncScheduler, Observable, observeOn, startWith, Subject, take } from 'rxjs';\n\nlet uniqueId = 0;\nlet uniqueTextId = 0;\nlet uniqueSubtitleId = 0;\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fd-user-menu-list-item]',\n templateUrl: './user-menu-list-item.component.html',\n host: {\n class: 'fd-menu__item',\n role: 'none',\n '[attr.id]': 'uniqueId()',\n '[attr.aria-labelledby]': 'textId()',\n '(mouseenter)': 'onHostMouseEnter()',\n '(mouseleave)': 'onHostMouseLeave()'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [PopoverBodyComponent, PopoverComponent, PopoverControlComponent, CommonModule]\n})\nexport class UserMenuListItemComponent implements KeyboardSupportItemInterface {\n /** Event emitter for isOpenChange event that controls the submenu popover body */\n @Output()\n readonly isOpenChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** Event emitter for showSubmenu event */\n @Output() showSubmenu: EventEmitter<TemplateRef<any> | null> = new EventEmitter();\n\n /** Event emitter for updateTitle event */\n @Output() updateTitle: EventEmitter<string | null> = new EventEmitter();\n\n /** Event emitter for keyDown event */\n readonly keyDown = output<KeyboardEvent>();\n\n /** Unique id for the menu list item. Default is provided. */\n uniqueId = input(`fd-menu-list-item-${++uniqueId}`);\n\n /** Icon name for the menu list item (optional) */\n icon = input<string>();\n\n /** Icon name for the menu list item (optional) */\n iconAfter = input<string>();\n\n /** Whether the icon after is in active state */\n iconAfterActive = input(false, { transform: booleanAttribute });\n\n /** Required text for the menu list item */\n text = input.required<string>();\n\n /** Unique id for the title. Default is provided. */\n textId = input(`fd-menu-list-item-title-${++uniqueTextId}`);\n\n /** Whether the text should be truncated */\n truncateText = input(false, { transform: booleanAttribute });\n\n /** Subtitle text for the menu list item */\n subtitle = input<string | undefined>();\n\n /** Unique id for the subtitle. Default is provided. */\n subtitleId = input(`fd-menu-list-item-subtitle-${++uniqueSubtitleId}`);\n\n /** Whether the subtitle should be truncated */\n truncateSubtitle = input(false, { transform: booleanAttribute });\n\n /** Whether the item has a submenu */\n hasSubmenu = input(false, { transform: booleanAttribute });\n\n /** Template ref for user menu list item submenu */\n submenu = input<TemplateRef<any> | null>(null);\n\n /** Whether the item is selected */\n selected = input(false, { transform: booleanAttribute });\n\n /** Whether the item's submenu is open */\n isOpen = signal(false);\n\n /** Whether the item is in mobile mode */\n mobile = signal(false);\n\n /** Reference to the popover */\n popover = viewChild(PopoverComponent);\n\n /** @hidden */\n readonly focused = new Subject<UserMenuListItemComponent>();\n\n /** Item's tabindex */\n readonly _tabIndex$ = signal<number | null>(null);\n\n /** @hidden */\n readonly _elementRef = inject(ElementRef);\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private readonly _zone = inject(NgZone);\n\n /** @hidden */\n private _changeDetectionRef = inject(ChangeDetectorRef);\n\n /** @hidden RTL service for direction detection */\n private readonly _rtlService = inject(RtlService, {\n optional: true\n });\n\n /** @hidden Computed signal to track RTL state */\n private readonly _isRtl = computed(() => this._rtlService?.rtl() ?? false);\n\n /** @hidden Track whether popover open/close was triggered by keyboard */\n private _keyboardTriggered = false;\n\n /** @hidden Timer for delayed close on mouseleave */\n private _hoverCloseTimer: ReturnType<typeof setTimeout> | null = null;\n\n /** @hidden Grace period in ms before closing submenu on mouseleave */\n private readonly _hoverCloseDelay = 150;\n\n /** @hidden */\n @HostListener('focusin')\n focusHandler(): void {\n this.focused.next(this);\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent): void {\n if (!this.hasSubmenu() || this.mobile()) {\n return;\n }\n\n const popoverInstance = this.popover();\n if (!popoverInstance) {\n return;\n }\n\n const isRtl = this._isRtl();\n\n // In RTL mode, LEFT arrow opens submenu and RIGHT arrow closes it\n // In LTR mode, RIGHT arrow opens submenu and LEFT arrow closes it\n const openKey = isRtl ? LEFT_ARROW : RIGHT_ARROW;\n const closeKey = isRtl ? RIGHT_ARROW : LEFT_ARROW;\n\n if (KeyUtil.isKeyCode(event, openKey) && !this.isOpen()) {\n event.preventDefault();\n this._keyboardTriggered = true;\n popoverInstance.open();\n } else if (KeyUtil.isKeyCode(event, closeKey) && this.isOpen()) {\n event.preventDefault();\n this._keyboardTriggered = true;\n popoverInstance.close();\n }\n }\n\n /** @hidden Handle keyboard in popover body */\n onPopoverBodyKeyDown(event: KeyboardEvent): void {\n const isRtl = this._isRtl();\n const closeKey = isRtl ? RIGHT_ARROW : LEFT_ARROW;\n\n if (KeyUtil.isKeyCode(event, closeKey) && this.isOpen()) {\n event.preventDefault();\n this._keyboardTriggered = true;\n const popoverInstance = this.popover();\n if (popoverInstance) {\n popoverInstance.close();\n }\n }\n\n // Escape is handled by the popover internally, but we need to set the flag\n // so that focus returns to the trigger item\n if (KeyUtil.isKeyCode(event, ESCAPE) && this.isOpen()) {\n this._keyboardTriggered = true;\n }\n }\n\n /** @hidden Open submenu on host mouseenter (non-mobile only) */\n onHostMouseEnter(): void {\n if (!this.hasSubmenu() || this.mobile()) {\n return;\n }\n this._cancelHoverCloseTimer();\n const popoverInstance = this.popover();\n if (popoverInstance && !this.isOpen()) {\n popoverInstance.open();\n }\n }\n\n /** @hidden Schedule submenu close on host mouseleave */\n onHostMouseLeave(): void {\n if (!this.hasSubmenu() || this.mobile()) {\n return;\n }\n this._scheduleHoverClose();\n }\n\n /** @hidden Cancel close when mouse enters the submenu popover body */\n onSubmenuMouseEnter(): void {\n this._cancelHoverCloseTimer();\n }\n\n /** @hidden Schedule close when mouse leaves the submenu popover body */\n onSubmenuMouseLeave(): void {\n this._scheduleHoverClose();\n }\n\n /** Handles submenu selection in mobile mode */\n onShowDetailsView(): void {\n if (this.submenu() && this.mobile()) {\n this.showSubmenu.emit(this.submenu());\n this.updateTitle.emit(this.text());\n }\n }\n\n /** @hidden Support for KeyboardSupportItemInterface */\n click(): void {\n const linkElement: HTMLButtonElement = this._elementRef.nativeElement.querySelector('.fd-menu__link');\n linkElement.click();\n }\n\n /** @hidden */\n focus(): void {\n const linkElement: HTMLButtonElement = this._elementRef.nativeElement.querySelector('.fd-menu__link');\n linkElement.focus();\n }\n\n /** @hidden */\n isOpenChangeHandle(isOpen: boolean, popover: PopoverComponent): void {\n const popoverBodyEl = (popover as any).popoverBody?.();\n const firstTabbableElement: HTMLButtonElement =\n popoverBodyEl?._elementRef.nativeElement.querySelector('.fd-menu__link');\n\n const linkElement: HTMLButtonElement = this._elementRef.nativeElement.querySelector('.fd-menu__link');\n\n if (this.isOpen() === isOpen) {\n return;\n }\n\n const keyboardTriggered = this._keyboardTriggered;\n this._keyboardTriggered = false;\n\n this.isOpen.set(isOpen);\n\n this.isOpenChange.emit(isOpen);\n\n this._onZoneStable().subscribe(() => {\n this.isOpen() ? linkElement.classList.add('is-selected') : linkElement.classList.remove('is-selected');\n if (keyboardTriggered && firstTabbableElement && this.isOpen()) {\n firstTabbableElement.focus();\n }\n });\n\n if (!this.isOpen() && keyboardTriggered) {\n linkElement.focus();\n }\n\n this._changeDetectionRef.detectChanges();\n }\n\n /** @hidden Schedule a delayed close of the submenu popover */\n private _scheduleHoverClose(): void {\n this._cancelHoverCloseTimer();\n this._hoverCloseTimer = setTimeout(() => {\n const popoverInstance = this.popover();\n if (popoverInstance && this.isOpen()) {\n popoverInstance.close();\n }\n }, this._hoverCloseDelay);\n }\n\n /** @hidden Cancel any pending hover close timer */\n private _cancelHoverCloseTimer(): void {\n if (this._hoverCloseTimer !== null) {\n clearTimeout(this._hoverCloseTimer);\n this._hoverCloseTimer = null;\n }\n }\n\n /** @hidden */\n private _onZoneStable(): Observable<void> {\n return this._zone.onStable.pipe(\n startWith(this._zone.isStable),\n observeOn(asyncScheduler),\n take(1),\n takeUntilDestroyed(this._destroyRef)\n );\n }\n}\n","@if (hasSubmenu()) {\n @if (mobile()) {\n <button\n role=\"menuitem\"\n class=\"fd-menu__link\"\n [class.is-selected]=\"selected()\"\n [tabIndex]=\"_tabIndex$()\"\n (click)=\"onShowDetailsView()\"\n >\n @if (icon()) {\n <span class=\"fd-menu__addon-before\">\n <i [class]=\"'sap-icon--' + icon()\" role=\"presentation\"></i>\n </span>\n }\n\n <div class=\"fd-menu__content\">\n <span class=\"fd-menu__title\" [class.fd-menu__title--truncate]=\"truncateText()\" [id]=\"textId()\">{{\n text()\n }}</span>\n @if (subtitle()) {\n <span\n class=\"fd-menu__subtitle\"\n [class.fd-menu__subtitle--truncate]=\"truncateSubtitle()\"\n [id]=\"subtitleId()\"\n >{{ subtitle() }}</span\n >\n }\n </div>\n\n @if (iconAfter()) {\n <span class=\"fd-menu__addon-after\" [class.fd-menu__addon-after--active]=\"iconAfterActive()\">\n <i [class]=\"'sap-icon--' + iconAfter()\" role=\"presentation\"></i>\n </span>\n }\n\n <span class=\"fd-menu__addon-after fd-menu__addon-after--submenu\"></span>\n </button>\n } @else {\n <fd-popover\n #popover\n [noArrow]=\"true\"\n style=\"width: 100%\"\n placement=\"left-start\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"false\"\n [restoreFocusOnClose]=\"true\"\n [closeOnOutsideClick]=\"false\"\n [isOpen]=\"isOpen()\"\n (isOpenChange)=\"isOpenChangeHandle($event, popover)\"\n >\n <fd-popover-control>\n <button\n role=\"menuitem\"\n class=\"fd-menu__link fd-menu__link--popover\"\n [class.is-selected]=\"selected()\"\n [tabIndex]=\"_tabIndex$()\"\n >\n @if (icon()) {\n <span class=\"fd-menu__addon-before\">\n <i [class]=\"'sap-icon--' + icon()\" role=\"presentation\"></i>\n </span>\n }\n\n <div class=\"fd-menu__content\">\n <span\n class=\"fd-menu__title\"\n [class.fd-menu__title--truncate]=\"truncateText()\"\n [id]=\"textId()\"\n >{{ text() }}</span\n >\n @if (subtitle()) {\n <span\n class=\"fd-menu__subtitle\"\n [class.fd-menu__subtitle--truncate]=\"truncateSubtitle()\"\n [id]=\"subtitleId()\"\n >{{ subtitle() }}</span\n >\n }\n </div>\n @if (iconAfter()) {\n <span class=\"fd-menu__addon-after\" [class.fd-menu__addon-after--active]=\"iconAfterActive()\">\n <i [class]=\"'sap-icon--' + iconAfter()\" role=\"presentation\"></i>\n </span>\n }\n <span class=\"fd-menu__addon-after fd-menu__addon-after--submenu\"></span>\n </button>\n </fd-popover-control>\n <fd-popover-body\n (keydown)=\"onPopoverBodyKeyDown($event)\"\n (mouseenter)=\"onSubmenuMouseEnter()\"\n (mouseleave)=\"onSubmenuMouseLeave()\"\n >\n <ng-container *ngTemplateOutlet=\"submenu()\"></ng-container>\n </fd-popover-body>\n </fd-popover>\n }\n} @else {\n <button role=\"menuitem\" class=\"fd-menu__link\" [class.is-selected]=\"selected()\" [tabIndex]=\"_tabIndex$()\">\n @if (icon()) {\n <span class=\"fd-menu__addon-before\">\n <i [class]=\"'sap-icon--' + icon()\" role=\"presentation\"></i>\n </span>\n }\n\n <div class=\"fd-menu__content\">\n <span class=\"fd-menu__title\" [class.fd-menu__title--truncate]=\"truncateText()\" [id]=\"textId()\">{{\n text()\n }}</span>\n @if (subtitle()) {\n <span\n class=\"fd-menu__subtitle\"\n [class.fd-menu__subtitle--truncate]=\"truncateSubtitle()\"\n [id]=\"subtitleId()\"\n >{{ subtitle() }}</span\n >\n }\n </div>\n\n @if (iconAfter()) {\n <span class=\"fd-menu__addon-after\" [class.fd-menu__addon-after--active]=\"iconAfterActive()\">\n <i [class]=\"'sap-icon--' + iconAfter()\" role=\"presentation\"></i>\n </span>\n }\n </button>\n}\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n DestroyRef,\n ElementRef,\n HostListener,\n QueryList,\n TemplateRef,\n ViewEncapsulation,\n computed,\n contentChild,\n inject,\n signal,\n viewChild\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { InitialFocusDirective, RtlService } from '@fundamental-ngx/cdk/utils';\nimport {\n BarComponent,\n BarElementDirective,\n BarLeftDirective,\n BarRightDirective,\n ButtonBarComponent\n} from '@fundamental-ngx/core/bar';\nimport { contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { Subject, startWith } from 'rxjs';\nimport { UserMenuUserNameDirective } from '../directives/user-menu-user-name.directive';\nimport { UserMenuListItemComponent } from './user-menu-list-item.component';\n\n@Component({\n selector: 'fd-user-menu-body',\n templateUrl: './user-menu-body.component.html',\n host: {\n class: 'fd-user-menu__body'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n BarComponent,\n CommonModule,\n TitleComponent,\n BarLeftDirective,\n BarRightDirective,\n ButtonBarComponent,\n BarElementDirective,\n InitialFocusDirective,\n FdTranslatePipe\n ],\n providers: [contentDensityObserverProviders()]\n})\nexport class UserMenuBodyComponent implements AfterViewInit {\n /** @hidden */\n @ContentChildren(UserMenuListItemComponent, { descendants: true })\n readonly _listItems: QueryList<UserMenuListItemComponent>;\n\n /**\n * Template ref of the submenu\n */\n submenu = signal<TemplateRef<any> | null>(null);\n\n /**\n * The text of the selected item\n * Needed in mobile mode to update the title in the header\n */\n selectedItemTitle = signal<string | null>(null);\n\n /**\n * Signal indicating whether the user name element is currently visible\n * within the user menu. This updates automatically as the element\n * enters or leaves the viewport.\n *\n * Used by the template to conditionally render the sticky header.\n */\n readonly isUserNameVisible = signal(true);\n\n /**\n * Signal storing the HTML content of the user name element.\n * When the original element scrolls out of view, this content\n * is displayed in the sticky header.\n */\n readonly userNameContent = signal('');\n\n /**\n * Template ref to the header of the user menu body.\n * Needed in mobile mode\n */\n readonly bodyHeader = viewChild<TemplateRef<any>>('bodyHeader');\n\n /**\n * Handle the navigation icon (arrow) of the Back button in RTL mode\n */\n protected readonly navigationArrow = computed(() =>\n this._rtlService?.rtl() ? 'navigation-right-arrow' : 'navigation-left-arrow'\n );\n\n /** @hidden */\n protected readonly userNameEl = contentChild(UserMenuUserNameDirective, { read: ElementRef });\n\n /** @hidden */\n private readonly _rtlService = inject(RtlService, { optional: true });\n\n /** @hidden */\n private readonly _refresh$ = new Subject<void>();\n\n /** @hidden Track the list item that opened the details view for focus restoration */\n private _triggerItem: UserMenuListItemComponent | null = null;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n event.stopPropagation();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._listItems.changes\n .pipe(startWith(this._listItems), takeUntilDestroyed(this._destroyRef))\n .subscribe((listItems) => {\n listItems.forEach((item: UserMenuListItemComponent) => {\n item.showSubmenu\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((submenuTpl: TemplateRef<any> | null) => {\n this._triggerItem = item;\n this.selectItem(submenuTpl);\n });\n item.updateTitle.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((title: string | null) => {\n this.updateTitle(title);\n });\n });\n });\n\n const el = this.userNameEl()?.nativeElement;\n\n if (!el) {\n return;\n }\n\n // logic for showing/hiding the popover header with user name on scroll\n const intersectionObserver = new IntersectionObserver(\n (entries) => {\n this.isUserNameVisible.set(entries[0].isIntersecting);\n },\n { root: null, threshold: 0 }\n );\n\n intersectionObserver.observe(el);\n\n // Initialize\n this.userNameContent.set(el.innerHTML.trim());\n\n // Watch for changes in projected content\n const mutationObserver = new MutationObserver(() => {\n this.userNameContent.set(el.innerHTML.trim());\n });\n\n mutationObserver.observe(el, {\n childList: true,\n characterData: true,\n subtree: true\n });\n\n this._destroyRef.onDestroy(() => {\n intersectionObserver.disconnect();\n mutationObserver.disconnect();\n });\n }\n\n /**\n * Selects the item and sets the submenu template ref\n */\n selectItem(submenuTpl: TemplateRef<any> | null): void {\n this.submenu.set(submenuTpl);\n }\n\n /**\n * Updates the title of the selected item\n */\n updateTitle(title: string | null): void {\n this.selectedItemTitle.set(title);\n }\n\n /**\n * Clears the submenu template ref and the selected item title\n * Closes the submenu and returns to the main view\n */\n clearSubmenu(): void {\n const itemToFocus = this._triggerItem;\n this.submenu.set(null);\n this.selectedItemTitle.set(null);\n this._triggerItem = null;\n\n if (itemToFocus) {\n // Delay focus to allow the main view to render first\n requestAnimationFrame(() => {\n itemToFocus.focus();\n });\n }\n }\n\n /**\n * Closes the dialog in mobile mode\n */\n closeDialog(dialogRef): void {\n dialogRef.dismiss('Close');\n this.clearSubmenu();\n }\n}\n","@if (!submenu()) {\n <ng-content select=\"[fd-user-menu-header]\"></ng-content>\n <ng-content select=\"[fd-user-menu-content-container]\"></ng-content>\n} @else {\n <div class=\"fd-user-menu__details-view\">\n <ng-container *ngTemplateOutlet=\"submenu()\"></ng-container>\n </div>\n}\n\n<ng-template #bodyHeader let-dialogRef=\"dialogRef\">\n <div fd-bar style=\"position: fixed; top: 0; left: 0; right: 0; z-index: 10\">\n @if (submenu()) {\n <div fd-bar-left>\n <fd-bar-element>\n <fd-button-bar\n fdkInitialFocus\n [ariaLabel]=\"('coreUserMenu.previousButton' | fdTranslate)()\"\n [glyph]=\"navigationArrow()\"\n (click)=\"clearSubmenu()\"\n >\n </fd-button-bar>\n </fd-bar-element>\n <fd-bar-element>\n <h5 fd-title>{{ selectedItemTitle() }}</h5>\n </fd-bar-element>\n </div>\n }\n <div fd-bar-right>\n @if (!submenu()) {\n <fd-bar-element\n [fullWidth]=\"true\"\n class=\"fd-user-menu__scroll-header-element\"\n [class.hidden]=\"isUserNameVisible()\"\n role=\"presentation\"\n aria-hidden=\"true\"\n >\n <div\n [innerHTML]=\"userNameContent()\"\n class=\"fd-user-menu__user-name fd-user-menu__user-name--truncate\"\n style=\"text-align: center; margin-inline-start: 2.75rem\"\n ></div>\n </fd-bar-element>\n }\n\n <fd-bar-element>\n <fd-button-bar\n [ariaLabel]=\"('coreUserMenu.closeButton' | fdTranslate)()\"\n glyph=\"decline\"\n (click)=\"closeDialog(dialogRef)\"\n >\n </fd-button-bar>\n </fd-bar-element>\n </div>\n </div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fd-user-menu-content-container]',\n template: `<ng-content />`,\n host: {\n class: 'fd-user-menu__content-container'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class UserMenuContentContainerComponent {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Output,\n ViewEncapsulation\n} from '@angular/core';\n\n@Component({\n selector: 'fd-user-menu-control',\n template: `<ng-content />`,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n tabindex: '0'\n },\n imports: []\n})\nexport class UserMenuControlComponent {\n /** Event emitted event when control element is clicked */\n @Output()\n clicked: EventEmitter<void> = new EventEmitter<void>();\n\n /** @hidden */\n constructor(private el: ElementRef<HTMLElement>) {}\n\n /** @hidden */\n @HostListener('click')\n onClick(): void {\n this.clicked.emit();\n }\n\n /** @hidden */\n focus(): void {\n this.el.nativeElement.focus();\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'fd-user-menu-footer',\n template: `<ng-content />`,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'fd-user-menu__footer'\n },\n imports: []\n})\nexport class UserMenuFooterComponent {}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n DestroyRef,\n HostListener,\n inject,\n QueryList,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KeyboardSupportService } from '@fundamental-ngx/cdk/utils';\nimport { merge, startWith, Subject, takeUntil } from 'rxjs';\nimport { UserMenuListItemComponent } from './user-menu-list-item.component';\n\n@Component({\n selector: 'fd-user-menu-list',\n template: `\n <nav class=\"fd-menu fd-menu--icons fd-user-menu__menu\">\n <ul class=\"fd-menu__list fd-user-menu__menu-list\" role=\"menu\">\n <ng-content />\n </ul>\n </nav>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class UserMenuListComponent implements AfterViewInit {\n /** @hidden */\n @ContentChildren(UserMenuListItemComponent, { descendants: false })\n readonly _listItems: QueryList<UserMenuListItemComponent>;\n\n /** @hidden */\n private _refresh$ = new Subject<void>();\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private readonly _keyboardSupportService = inject(KeyboardSupportService);\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n keyDownHandler(event: KeyboardEvent): void {\n if (this._keyboardSupportService.keyManager) {\n this._keyboardSupportService.onKeyDown(event);\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._keyboardSupportService.setKeyboardService(this._listItems, false, false);\n\n this._listItems.changes.pipe(startWith(null), takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._setupInteractionListeners();\n });\n }\n\n /** @hidden */\n private _setupInteractionListeners(): void {\n this._refresh$.next();\n this._refresh$.complete();\n this._refresh$ = new Subject<void>();\n\n merge(...this._listItems.toArray().map((i) => i.focused))\n .pipe(takeUntil(this._refresh$), takeUntilDestroyed(this._destroyRef))\n .subscribe((focusedItem) => {\n this._listItems.forEach((item) => {\n item._tabIndex$.set(-1);\n });\n focusedItem._tabIndex$.set(0);\n this._keyboardSupportService.keyManager.setActiveItem(focusedItem);\n });\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n DestroyRef,\n HostListener,\n QueryList,\n ViewEncapsulation,\n booleanAttribute,\n inject,\n input\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KeyboardSupportService } from '@fundamental-ngx/cdk/utils';\nimport { Subject, merge, startWith, takeUntil } from 'rxjs';\nimport { UserMenuListItemComponent } from './user-menu-list-item.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fd-user-menu-sublist]',\n template: `<ul class=\"fd-menu__list fd-user-menu__menu-list\" role=\"menu\">\n <ng-content />\n </ul> `,\n host: {\n class: 'fd-menu fd-user-menu__menu',\n '[class.fd-menu--icons]': 'hasIcons()'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [KeyboardSupportService],\n styles: [\n `\n [fd-user-menu-sublist] {\n margin-block-start: 0 !important;\n }\n `\n ]\n})\nexport class UserMenuSublistComponent implements AfterViewInit {\n /** @hidden */\n @ContentChildren(UserMenuListItemComponent, { descendants: true })\n _listItems: QueryList<UserMenuListItemComponent>;\n\n /** Whether the sublist menu items have icons */\n hasIcons = input(false, { transform: booleanAttribute });\n\n /** @hidden */\n private _refresh$ = new Subject<void>();\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private readonly _keyboardSupportService = inject(KeyboardSupportService<UserMenuListItemComponent>);\n\n /** @hidden */\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n event.stopPropagation();\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n keyDownHandler(event: KeyboardEvent): void {\n if (this._keyboardSupportService.keyManager) {\n this._keyboardSupportService.onKeyDown(event);\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._keyboardSupportService.setKeyboardService(this._listItems, false, false);\n\n this._listItems.changes.pipe(startWith(null), takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._setupInteractionListeners();\n });\n }\n\n /** @hidden */\n private _setupInteractionListeners(): void {\n this._refresh$.next();\n this._refresh$.complete();\n this._refresh$ = new Subject<void>();\n\n merge(...this._listItems.toArray().map((i) => i.focused))\n .pipe(takeUntil(this._refresh$), takeUntilDestroyed(this._destroyRef))\n .subscribe((focusedItem) => {\n this._listItems.forEach((item) => {\n item._tabIndex$.set(-1);\n });\n focusedItem._tabIndex$.set(0);\n this._keyboardSupportService.keyManager.setActiveItem(focusedItem);\n });\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-user-menu-control-element]'\n})\nexport class UserMenuControlElementDirective {}\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n contentChild,\n contentChildren,\n DestroyRef,\n effect,\n ElementRef,\n inject,\n input,\n output,\n Renderer2,\n signal,\n TemplateRef,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { KeyboardSupportService, RtlService, TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityMode, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport {\n DialogBodyComponent,\n DialogComponent,\n DialogFooterComponent,\n DialogHeaderComponent,\n DialogRef,\n DialogService\n} from '@fundamental-ngx/core/dialog';\n\nimport { PopoverBodyComponent, PopoverComponent, PopoverControlComponent } from '@fundamental-ngx/core/popover';\n\nimport { BarComponent, BarElementDirective, BarMiddleDirective } from '@fundamental-ngx/core/bar';\n\nimport { UserMenuBodyComponent } from './components/user-menu-body.component';\nimport { UserMenuControlComponent } from './components/user-menu-control.component';\nimport { UserMenuListItemComponent } from './components/user-menu-list-item.component';\nimport { UserMenuControlElementDirective } from './directives/user-menu-control-element.directive';\nimport { UserMenuUserNameDirective } from './directives/user-menu-user-name.directive';\n\n@Component({\n selector: 'fd-user-menu',\n templateUrl: './user-menu.component.html',\n styleUrl: './user-menu.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'fd-user-menu'\n },\n imports: [\n CommonModule,\n BarComponent,\n BarMiddleDirective,\n BarElementDirective,\n PopoverComponent,\n PopoverBodyComponent,\n PopoverControlComponent,\n DialogComponent,\n DialogBodyComponent,\n DialogFooterComponent,\n DialogHeaderComponent,\n TemplateDirective\n ],\n providers: [KeyboardSupportService, contentDensityObserverProviders()]\n})\nexport class UserMenuComponent implements AfterViewInit {\n /** Event thrown, when the user menu is opened or closed */\n isOpenChange = output<boolean>();\n\n /** Whether the user menu is in mobile mode */\n mobile = input(false, { transform: booleanAttribute });\n\n /** Whether the user menu is open */\n readonly isOpen = signal(false);\n\n /**\n * Signal indicating whether the user name element is currently visible\n * within the user menu. This updates automatically as the element\n * enters or leaves the viewport.\n *\n * Used by the template to conditionally render the sticky header.\n */\n readonly isUserNameVisible = signal(true);\n\n /**\n * Signal storing the HTML content of the user name element.\n * When the original element scrolls out of view, this content\n * is displayed in the sticky header.\n */\n readonly userNameContent = signal('');\n\n /** @hidden */\n protected readonly userMenuControl = contentChild(UserMenuControlComponent);\n\n /** @hidden */\n protected readonly userNameEl = contentChild(UserMenuUserNameDirective, { read: ElementRef });\n\n /** @hidden */\n protected readonly userMenuControlElement = contentChild(UserMenuControlElementDirective, {\n descendants: true,\n read: ElementRef\n });\n\n /** @hidden */\n protected readonly userMenuBody = contentChild(UserMenuBodyComponent, { descendants: true });\n\n /** @hidden */\n protected readonly navigationArrow = computed(() =>\n this._rtlService.rtl() ? 'navigation-right-arrow' : 'navigation-left-arrow'\n );\n\n /** @hidden */\n private readonly _listItems = contentChildren(UserMenuListItemComponent, { descendants: true });\n\n /** @hidden */\n private readonly _rtlService = inject(RtlService);\n\n /** @hidden */\n private readonly _dialogService = inject(DialogService);\n\n /** @hidden */\n private readonly _changeDetectionRef = inject(ChangeDetectorRef);\n\n /** @hidden */\n private readonly _renderer = inject(Renderer2);\n\n /** @hidden */\n private _dialogRef: DialogRef | undefined;\n\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n constructor() {\n effect(() => {\n const isMobile = this.mobile();\n this._listItems()?.forEach((item) => item.mobile.set(isMobile));\n });\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n const isMobile = this.mobile();\n this._listItems()?.forEach((item) => item.mobile.set(isMobile));\n\n const el = this.userNameEl()?.nativeElement;\n\n if (!el) {\n return;\n }\n\n // logic for showing/hiding the popover header with user name on scroll\n const intersectionObserver = new IntersectionObserver(\n (entries) => {\n this.isUserNameVisible.set(entries[0].isIntersecting);\n },\n { root: null, threshold: 0, rootMargin: '-20px 0px 0px 0px' }\n );\n\n intersectionObserver.observe(el);\n\n // Initialize\n this.userNameContent.set(el.innerHTML.trim());\n\n // Watch for changes in projected content\n const mutationObserver = new MutationObserver(() => {\n this.userNameContent.set(el.innerHTML.trim());\n });\n\n mutationObserver.observe(el, {\n childList: true,\n characterData: true,\n subtree: true\n });\n\n this._destroyRef.onDestroy(() => {\n intersectionObserver.disconnect();\n mutationObserver.disconnect();\n });\n }\n\n /** Method that opens the user menu */\n open(): void {\n this.isOpenChangeHandle(true);\n }\n\n /** Method that closes the user menu */\n close(): void {\n this.isOpenChangeHandle(false);\n\n if (this._listItems().length > 0) {\n this._listItems().forEach((item) => {\n item.isOpen.set(false);\n item._elementRef?.nativeElement.querySelector('.fd-menu__link')?.classList.remove('is-active');\n });\n\n this._listItems()[0]?._tabIndex$.set(0);\n }\n\n this._clearSubmenu();\n this._dialogRef?.close();\n }\n\n /** Method that opens the user menu in dialog (for mobile mode) */\n openDialog(dialogTemplate: TemplateRef<any>): void {\n this._dialogRef = this._dialogService.open(dialogTemplate, {\n mobile: true,\n verticalPadding: false,\n horizontalPadding: false,\n ariaLabelledBy: 'fd-user-menu-header',\n ariaDescribedBy: 'fd-user-menu-body',\n contentDensity: ContentDensityMode.COZY\n });\n\n const refSub = this._dialogRef.afterClosed.subscribe({\n next: () => {\n this.userMenuControl()?.focus();\n refSub.unsubscribe();\n },\n error: (type) => {\n if (type === 'escape') {\n this._clearSubmenu();\n refSub.unsubscribe();\n }\n }\n });\n }\n\n /** @hidden */\n isOpenChangeHandle(isOpen: boolean): void {\n if (this.isOpen() === isOpen) {\n return;\n }\n\n this.isOpen.set(isOpen);\n this.isOpenChange.emit(isOpen);\n\n if (!isOpen && !this.mobile()) {\n this.userMenuControl()?.focus();\n }\n\n const userMenuControlEl = this.userMenuControlElement()?.nativeElement;\n\n this.userMenuControlElement()?.nativeElement &&\n (isOpen\n ? this._renderer.addClass(userMenuControlEl, 'is-active')\n : this._renderer.removeClass(userMenuControlEl, 'is-active'));\n\n this._changeDetectionRef.detectChanges();\n }\n\n /** @hidden */\n private _clearSubmenu(): void {\n const userMenuBody = this.userMenuBody();\n if (userMenuBody) {\n userMenuBody.clearSubmenu();\n }\n }\n}\n","@if (!mobile()) {\n <fd-popover\n [isOpen]=\"isOpen()\"\n (isOpenChange)=\"isOpenChangeHandle($event)\"\n [focusAutoCapture]=\"true\"\n [restoreFocusOnClose]=\"true\"\n [focusTrapped]=\"true\"\n [disableScrollbar]=\"true\"\n [noArrow]=\"false\"\n >\n <fd-popover-control>\n <ng-container *ngTemplateOutlet=\"control\"></ng-container>\n </fd-popover-control>\n <fd-popover-body fd-user-menu-popover-control>\n <div class=\"fd-user-menu__popover-wrapper\">\n <div\n fd-popover-body-header\n class=\"fd-user-menu__scroll-header\"\n [class.hidden]=\"isUserNameVisible()\"\n role=\"presentation\"\n aria-hidden=\"true\"\n >\n <ng-container *ngTemplateOutlet=\"header\"></ng-container>\n </div>\n\n <ng-container *ngTemplateOutlet=\"body\"></ng-container>\n\n <div fd-popover-body-footer>\n <ng-container *ngTemplateOutlet=\"footer\"></ng-container>\n </div>\n </div>\n </fd-popover-body>\n </fd-popover>\n} @else {\n <span (click)=\"openDialog(dialogTemplate)\">\n <ng-container *ngTemplateOutlet=\"control\"></ng-container>\n </span>\n\n <ng-template [fdDialogTemplate] let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n @if (userMenuBody()?.bodyHeader()) {\n <ng-template fdkTemplate=\"header\">\n <ng-container\n *ngTemplateOutlet=\"userMenuBody()?.bodyHeader() ?? null; context: { dialogRef: dialog }\"\n >\n </ng-container>\n </ng-template>\n }\n </fd-dialog-header>\n <fd-dialog-body style=\"padding: 0\">\n <ng-container *ngTemplateOutlet=\"body\"></ng-container>\n </fd-dialog-body>\n <fd-dialog-footer>\n <ng-template fdkTemplate=\"customFooter\">\n <ng-container *ngTemplateOutlet=\"footer\"></ng-container>\n </ng-template>\n </fd-dialog-footer>\n </fd-dialog>\n </ng-template>\n}\n\n<ng-template #control>\n <ng-content select=\"fd-user-menu-control\" />\n</ng-template>\n\n<ng-template #header>\n <div fd-popover-body-header>\n <div fd-bar barDesign=\"header\">\n <div fd-bar-middle>\n <fd-bar-element>\n <div\n class=\"fd-user-menu__user-name fd-user-menu__user-name--truncate\"\n [innerHTML]=\"userNameContent()\"\n ></div>\n </fd-bar-element>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template #body>\n <ng-content select=\"fd-user-menu-body\" />\n</ng-template>\n\n<ng-template #footer>\n <ng-content select=\"fd-user-menu-footer\" />\n</ng-template>\n","import { Directive } from '@angular/core';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-user-menu-header-container]',\n host: {\n class: 'fd-user-menu__header-container'\n }\n})\nexport class UserMenuHeaderContainerDirective {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-user-menu-header]',\n host: {\n class: 'fd-user-menu__header'\n }\n})\nexport class UserMenuHeaderDirective {}\n","import { booleanAttribute, Directive, input } from '@angular/core';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-user-menu-subline]',\n host: {\n class: 'fd-user-menu__subline',\n '[class.fd-user-menu__subline--truncate]': 'truncate()'\n }\n})\nexport class UserMenuSublineDirective {\n /** Whether the text should truncate with ellipsis. */\n truncate = input(false, { transform: booleanAttribute });\n}\n","import { NgModule } from '@angular/core';\n\n// Components\nimport { UserMenuBodyComponent } from './components/user-menu-body.component';\nimport { UserMenuContentContainerComponent } from './components/user-menu-content-container.component';\nimport { UserMenuControlComponent } from './components/user-menu-control.component';\nimport { UserMenuFooterComponent } from './components/user-menu-footer.component';\nimport { UserMenuListItemComponent } from './components/user-menu-list-item.component';\nimport { UserMenuListComponent } from './components/user-menu-list.component';\nimport { UserMenuSublistComponent } from './components/user-menu-sublist.component';\nimport { UserMenuComponent } from './user-menu.component';\n\n// Directives\nimport { UserMenuControlElementDirective } from './directives/user-menu-control-element.directive';\nimport { UserMenuHeaderContainerDirective } from './directives/user-menu-header-container.directive';\nimport { UserMenuHeaderDirective } from './directives/user-menu-header.directive';\nimport { UserMenuSublineDirective } from './directives/user-menu-subline.directive';\nimport { UserMenuUserNameDirective } from './directives/user-menu-user-name.directive';\n\nconst components = [\n UserMenuComponent,\n UserMenuControlComponent,\n UserMenuBodyComponent,\n UserMenuFooterComponent,\n UserMenuListComponent,\n UserMenuSublistComponent,\n UserMenuListItemComponent,\n UserMenuContentContainerComponent,\n UserMenuHeaderDirective,\n UserMenuHeaderContainerDirective,\n UserMenuUserNameDirective,\n UserMenuSublineDirective,\n UserMenuControlElementDirective\n];\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [...components],\n exports: [...components]\n})\nexport class UserMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-core-user-menu.mjs","sources":["../../../../libs/core/user-menu/directives/user-menu-user-name.directive.ts","../../../../libs/core/user-menu/components/user-menu-list-item.component.ts","../../../../libs/core/user-menu/components/user-menu-list-item.component.html","../../../../libs/core/user-menu/components/user-menu-body.component.ts","../../../../libs/core/user-menu/components/user-menu-body.component.html","../../../../libs/core/user-menu/components/user-menu-content-container.component.ts","../../../../libs/core/user-menu/components/user-menu-control.component.ts","../../../../libs/core/user-menu/components/user-menu-footer.component.ts","../../../../libs/core/user-menu/components/user-menu-list.component.ts","../../../../libs/core/user-menu/components/user-menu-sublist.component.ts","../../../../libs/core/user-menu/directives/user-menu-control-element.directive.ts","../../../../libs/core/user-menu/user-menu.component.ts","../../../../libs/core/user-menu/user-menu.component.html","../../../../libs/core/user-menu/directives/user-menu-header-container.directive.ts","../../../../libs/core/user-menu/directives/user-menu-header.directive.ts","../../../../libs/core/user-menu/directives/user-menu-subline.directive.ts","../../../../libs/core/user-menu/user-menu.module.ts","../../../../libs/core/user-menu/fundamental-ngx-core-user-menu.ts"],"sourcesContent":["import { booleanAttribute, Directive, input } from '@angular/core';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-user-menu-user-name]',\n host: {\n class: 'fd-user-menu__user-name',\n '[class.fd-user-menu__user-name--truncate]': 'truncate()'\n }\n})\nexport class UserMenuUserNameDirective {\n /** Whether the text should truncate with ellipsis. */\n truncate = input(false, { transform: booleanAttribute });\n}\n","import { ESCAPE, LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport { CommonModule } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n EventEmitter,\n HostListener,\n inject,\n input,\n NgZone,\n Output,\n output,\n signal,\n TemplateRef,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KeyboardSupportItemInterface, KeyUtil, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { PopoverBodyComponent, PopoverComponent, PopoverControlComponent } from '@fundamental-ngx/core/popover';\nimport { asyncScheduler, Observable, observeOn, startWith, Subject, take } from 'rxjs';\n\nlet uniqueId = 0;\nlet uniqueTextId = 0;\nlet uniqueSubtitleId = 0;\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fd-user-menu-list-item]',\n templateUrl: './user-menu-list-item.component.html',\n host: {\n class: 'fd-menu__item',\n role: 'none',\n '[attr.id]': 'uniqueId()',\n '[attr.aria-labelledby]': 'textId()',\n '(mouseenter)': 'onHostMouseEnter()',\n '(mouseleave)': 'onHostMouseLeave()'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [PopoverBodyComponent, PopoverComponent, PopoverControlComponent, CommonModule]\n})\nexport class UserMenuListItemComponent implements KeyboardSupportItemInterface {\n /** Event emitter for isOpenChange event that controls the submenu popover body */\n @Output()\n readonly isOpenChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** Event emitter for showSubmenu event */\n @Output() showSubmenu: EventEmitter<TemplateRef<any> | null> = new EventEmitter();\n\n /** Event emitter for updateTitle event */\n @Output() updateTitle: EventEmitter<string | null> = new EventEmitter();\n\n /** Event emitter for keyDown event */\n readonly keyDown = output<KeyboardEvent>();\n\n /** Unique id for the menu list item. Default is provided. */\n uniqueId = input(`fd-menu-list-item-${++uniqueId}`);\n\n /** Icon name for the menu list item (optional) */\n icon = input<string>();\n\n /** Icon name for the menu list item (optional) */\n iconAfter = input<string>();\n\n /** Whether the icon after is in active state */\n iconAfterActive = input(false, { transform: booleanAttribute });\n\n /** Required text for the menu list item */\n text = input.required<string>();\n\n /** Unique id for the title. Default is provided. */\n textId = input(`fd-menu-list-item-title-${++uniqueTextId}`);\n\n /** Whether the text should be truncated */\n truncateText = input(false, { transform: booleanAttribute });\n\n /** Subtitle text for the menu list item */\n subtitle = input<string | undefined>();\n\n /** Unique id for the subtitle. Default is provided. */\n subtitleId = input(`fd-menu-list-item-subtitle-${++uniqueSubtitleId}`);\n\n /** Whether the subtitle should be truncated */\n truncateSubtitle = input(false, { transform: booleanAttribute });\n\n /** Whether the item has a submenu */\n hasSubmenu = input(false, { transform: booleanAttribute });\n\n /** Template ref for user menu list item submenu */\n submenu = input<TemplateRef<any> | null>(null);\n\n /** Whether the item is selected */\n selected = input(false, { transform: booleanAttribute });\n\n /** Whether the item's submenu is open */\n isOpen = signal(false);\n\n /** Whether the item is in mobile mode */\n mobile = signal(false);\n\n /** Reference to the popover */\n popover = viewChild(PopoverComponent);\n\n /** @hidden */\n readonly focused = new Subject<UserMenuListItemComponent>();\n\n /** Item's tabindex */\n readonly _tabIndex$ = signal<number | null>(null);\n\n /** @hidden */\n readonly _elementRef = inject(ElementRef);\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private readonly _zone = inject(NgZone);\n\n /** @hidden */\n private _changeDetectionRef = inject(ChangeDetectorRef);\n\n /** @hidden RTL service for direction detection */\n private readonly _rtlService = inject(RtlService, {\n optional: true\n });\n\n /** @hidden Computed signal to track RTL state */\n private readonly _isRtl = computed(() => this._rtlService?.rtl() ?? false);\n\n /** @hidden Track whether popover open/close was triggered by keyboard */\n private _keyboardTriggered = false;\n\n /** @hidden Timer for delayed close on mouseleave */\n private _hoverCloseTimer: ReturnType<typeof setTimeout> | null = null;\n\n /** @hidden Grace period in ms before closing submenu on mouseleave */\n private readonly _hoverCloseDelay = 150;\n\n /** @hidden */\n @HostListener('focusin')\n focusHandler(): void {\n this.focused.next(this);\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent): void {\n if (!this.hasSubmenu() || this.mobile()) {\n return;\n }\n\n const popoverInstance = this.popover();\n if (!popoverInstance) {\n return;\n }\n\n const isRtl = this._isRtl();\n\n // In RTL mode, LEFT arrow opens submenu and RIGHT arrow closes it\n // In LTR mode, RIGHT arrow opens submenu and LEFT arrow closes it\n const openKey = isRtl ? LEFT_ARROW : RIGHT_ARROW;\n const closeKey = isRtl ? RIGHT_ARROW : LEFT_ARROW;\n\n if (KeyUtil.isKeyCode(event, openKey) && !this.isOpen()) {\n event.preventDefault();\n this._keyboardTriggered = true;\n popoverInstance.open();\n } else if (KeyUtil.isKeyCode(event, closeKey) && this.isOpen()) {\n event.preventDefault();\n this._keyboardTriggered = true;\n popoverInstance.close();\n }\n }\n\n /** @hidden Handle keyboard in popover body */\n onPopoverBodyKeyDown(event: KeyboardEvent): void {\n const isRtl = this._isRtl();\n const closeKey = isRtl ? RIGHT_ARROW : LEFT_ARROW;\n\n if (KeyUtil.isKeyCode(event, closeKey) && this.isOpen()) {\n event.preventDefault();\n this._keyboardTriggered = true;\n const popoverInstance = this.popover();\n if (popoverInstance) {\n popoverInstance.close();\n }\n }\n\n // Escape is handled by the popover internally, but we need to set the flag\n // so that focus returns to the trigger item\n if (KeyUtil.isKeyCode(event, ESCAPE) && this.isOpen()) {\n this._keyboardTriggered = true;\n }\n }\n\n /** @hidden Open submenu on host mouseenter (non-mobile only) */\n onHostMouseEnter(): void {\n if (!this.hasSubmenu() || this.mobile()) {\n return;\n }\n this._cancelHoverCloseTimer();\n const popoverInstance = this.popover();\n if (popoverInstance && !this.isOpen()) {\n popoverInstance.open();\n }\n }\n\n /** @hidden Schedule submenu close on host mouseleave */\n onHostMouseLeave(): void {\n if (!this.hasSubmenu() || this.mobile()) {\n return;\n }\n this._scheduleHoverClose();\n }\n\n /** @hidden Cancel close when mouse enters the submenu popover body */\n onSubmenuMouseEnter(): void {\n this._cancelHoverCloseTimer();\n }\n\n /** @hidden Schedule close when mouse leaves the submenu popover body */\n onSubmenuMouseLeave(): void {\n this._scheduleHoverClose();\n }\n\n /** Handles submenu selection in mobile mode */\n onShowDetailsView(): void {\n if (this.submenu() && this.mobile()) {\n this.showSubmenu.emit(this.submenu());\n this.updateTitle.emit(this.text());\n }\n }\n\n /** @hidden Support for KeyboardSupportItemInterface */\n click(): void {\n const linkElement: HTMLButtonElement = this._elementRef.nativeElement.querySelector('.fd-menu__link');\n linkElement.click();\n }\n\n /** @hidden */\n focus(): void {\n const linkElement: HTMLButtonElement = this._elementRef.nativeElement.querySelector('.fd-menu__link');\n linkElement.focus();\n }\n\n /** @hidden */\n isOpenChangeHandle(isOpen: boolean, popover: PopoverComponent): void {\n const popoverBodyEl = (popover as any).popoverBody?.();\n const firstTabbableElement: HTMLButtonElement =\n popoverBodyEl?._elementRef.nativeElement.querySelector('.fd-menu__link');\n\n const linkElement: HTMLButtonElement = this._elementRef.nativeElement.querySelector('.fd-menu__link');\n\n if (this.isOpen() === isOpen) {\n return;\n }\n\n const keyboardTriggered = this._keyboardTriggered;\n this._keyboardTriggered = false;\n\n this.isOpen.set(isOpen);\n\n this.isOpenChange.emit(isOpen);\n\n this._onZoneStable().subscribe(() => {\n this.isOpen() ? linkElement.classList.add('is-selected') : linkElement.classList.remove('is-selected');\n if (keyboardTriggered && firstTabbableElement && this.isOpen()) {\n firstTabbableElement.focus();\n }\n });\n\n if (!this.isOpen() && keyboardTriggered) {\n linkElement.focus();\n }\n\n this._changeDetectionRef.detectChanges();\n }\n\n /** @hidden Schedule a delayed close of the submenu popover */\n private _scheduleHoverClose(): void {\n this._cancelHoverCloseTimer();\n this._hoverCloseTimer = setTimeout(() => {\n const popoverInstance = this.popover();\n if (popoverInstance && this.isOpen()) {\n popoverInstance.close();\n }\n }, this._hoverCloseDelay);\n }\n\n /** @hidden Cancel any pending hover close timer */\n private _cancelHoverCloseTimer(): void {\n if (this._hoverCloseTimer !== null) {\n clearTimeout(this._hoverCloseTimer);\n this._hoverCloseTimer = null;\n }\n }\n\n /** @hidden */\n private _onZoneStable(): Observable<void> {\n return this._zone.onStable.pipe(\n startWith(this._zone.isStable),\n observeOn(asyncScheduler),\n take(1),\n takeUntilDestroyed(this._destroyRef)\n );\n }\n}\n","@if (hasSubmenu()) {\n @if (mobile()) {\n <button\n role=\"menuitem\"\n class=\"fd-menu__link\"\n [class.is-selected]=\"selected()\"\n [tabIndex]=\"_tabIndex$()\"\n (click)=\"onShowDetailsView()\"\n >\n @if (icon()) {\n <span class=\"fd-menu__addon-before\">\n <i [class]=\"'sap-icon--' + icon()\" role=\"presentation\"></i>\n </span>\n }\n\n <div class=\"fd-menu__content\">\n <span class=\"fd-menu__title\" [class.fd-menu__title--truncate]=\"truncateText()\" [id]=\"textId()\">{{\n text()\n }}</span>\n @if (subtitle()) {\n <span\n class=\"fd-menu__subtitle\"\n [class.fd-menu__subtitle--truncate]=\"truncateSubtitle()\"\n [id]=\"subtitleId()\"\n >{{ subtitle() }}</span\n >\n }\n </div>\n\n @if (iconAfter()) {\n <span class=\"fd-menu__addon-after\" [class.fd-menu__addon-after--active]=\"iconAfterActive()\">\n <i [class]=\"'sap-icon--' + iconAfter()\" role=\"presentation\"></i>\n </span>\n }\n\n <span class=\"fd-menu__addon-after fd-menu__addon-after--submenu\"></span>\n </button>\n } @else {\n <fd-popover\n #popover\n [noArrow]=\"true\"\n style=\"width: 100%\"\n placement=\"left-start\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"false\"\n [restoreFocusOnClose]=\"true\"\n [closeOnOutsideClick]=\"false\"\n [isOpen]=\"isOpen()\"\n (isOpenChange)=\"isOpenChangeHandle($event, popover)\"\n >\n <fd-popover-control>\n <button\n role=\"menuitem\"\n class=\"fd-menu__link fd-menu__link--popover\"\n [class.is-selected]=\"selected()\"\n [tabIndex]=\"_tabIndex$()\"\n >\n @if (icon()) {\n <span class=\"fd-menu__addon-before\">\n <i [class]=\"'sap-icon--' + icon()\" role=\"presentation\"></i>\n </span>\n }\n\n <div class=\"fd-menu__content\">\n <span\n class=\"fd-menu__title\"\n [class.fd-menu__title--truncate]=\"truncateText()\"\n [id]=\"textId()\"\n >{{ text() }}</span\n >\n @if (subtitle()) {\n <span\n class=\"fd-menu__subtitle\"\n [class.fd-menu__subtitle--truncate]=\"truncateSubtitle()\"\n [id]=\"subtitleId()\"\n >{{ subtitle() }}</span\n >\n }\n </div>\n @if (iconAfter()) {\n <span class=\"fd-menu__addon-after\" [class.fd-menu__addon-after--active]=\"iconAfterActive()\">\n <i [class]=\"'sap-icon--' + iconAfter()\" role=\"presentation\"></i>\n </span>\n }\n <span class=\"fd-menu__addon-after fd-menu__addon-after--submenu\"></span>\n </button>\n </fd-popover-control>\n <fd-popover-body\n (keydown)=\"onPopoverBodyKeyDown($event)\"\n (mouseenter)=\"onSubmenuMouseEnter()\"\n (mouseleave)=\"onSubmenuMouseLeave()\"\n >\n <ng-container *ngTemplateOutlet=\"submenu()\"></ng-container>\n </fd-popover-body>\n </fd-popover>\n }\n} @else {\n <button role=\"menuitem\" class=\"fd-menu__link\" [class.is-selected]=\"selected()\" [tabIndex]=\"_tabIndex$()\">\n @if (icon()) {\n <span class=\"fd-menu__addon-before\">\n <i [class]=\"'sap-icon--' + icon()\" role=\"presentation\"></i>\n </span>\n }\n\n <div class=\"fd-menu__content\">\n <span class=\"fd-menu__title\" [class.fd-menu__title--truncate]=\"truncateText()\" [id]=\"textId()\">{{\n text()\n }}</span>\n @if (subtitle()) {\n <span\n class=\"fd-menu__subtitle\"\n [class.fd-menu__subtitle--truncate]=\"truncateSubtitle()\"\n [id]=\"subtitleId()\"\n >{{ subtitle() }}</span\n >\n }\n </div>\n\n @if (iconAfter()) {\n <span class=\"fd-menu__addon-after\" [class.fd-menu__addon-after--active]=\"iconAfterActive()\">\n <i [class]=\"'sap-icon--' + iconAfter()\" role=\"presentation\"></i>\n </span>\n }\n </button>\n}\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n DestroyRef,\n ElementRef,\n HostListener,\n QueryList,\n TemplateRef,\n ViewEncapsulation,\n computed,\n contentChild,\n inject,\n signal,\n viewChild\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { InitialFocusDirective, RtlService } from '@fundamental-ngx/cdk/utils';\nimport {\n BarComponent,\n BarElementDirective,\n BarLeftDirective,\n BarRightDirective,\n ButtonBarComponent\n} from '@fundamental-ngx/core/bar';\nimport { contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { Subject, startWith } from 'rxjs';\nimport { UserMenuUserNameDirective } from '../directives/user-menu-user-name.directive';\nimport { UserMenuListItemComponent } from './user-menu-list-item.component';\n\n@Component({\n selector: 'fd-user-menu-body',\n templateUrl: './user-menu-body.component.html',\n host: {\n class: 'fd-user-menu__body'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n BarComponent,\n CommonModule,\n TitleComponent,\n BarLeftDirective,\n BarRightDirective,\n ButtonBarComponent,\n BarElementDirective,\n InitialFocusDirective\n ],\n providers: [contentDensityObserverProviders()]\n})\nexport class UserMenuBodyComponent implements AfterViewInit {\n /** @hidden */\n @ContentChildren(UserMenuListItemComponent, { descendants: true })\n readonly _listItems: QueryList<UserMenuListItemComponent>;\n\n /**\n * Template ref of the submenu\n */\n submenu = signal<TemplateRef<any> | null>(null);\n\n /**\n * The text of the selected item\n * Needed in mobile mode to update the title in the header\n */\n selectedItemTitle = signal<string | null>(null);\n\n /**\n * Signal indicating whether the user name element is currently visible\n * within the user menu. This updates automatically as the element\n * enters or leaves the viewport.\n *\n * Used by the template to conditionally render the sticky header.\n */\n readonly isUserNameVisible = signal(true);\n\n /**\n * Signal storing the HTML content of the user name element.\n * When the original element scrolls out of view, this content\n * is displayed in the sticky header.\n */\n readonly userNameContent = signal('');\n\n /**\n * Template ref to the header of the user menu body.\n * Needed in mobile mode\n */\n readonly bodyHeader = viewChild<TemplateRef<any>>('bodyHeader');\n\n /**\n * Handle the navigation icon (arrow) of the Back button in RTL mode\n */\n protected readonly navigationArrow = computed(() =>\n this._rtlService?.rtl() ? 'navigation-right-arrow' : 'navigation-left-arrow'\n );\n\n /** @hidden */\n protected readonly userNameEl = contentChild(UserMenuUserNameDirective, { read: ElementRef });\n\n /** @hidden */\n private readonly _rtlService = inject(RtlService, { optional: true });\n\n /** @hidden */\n private readonly _refresh$ = new Subject<void>();\n\n /** @hidden Track the list item that opened the details view for focus restoration */\n private _triggerItem: UserMenuListItemComponent | null = null;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n event.stopPropagation();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._listItems.changes\n .pipe(startWith(this._listItems), takeUntilDestroyed(this._destroyRef))\n .subscribe((listItems) => {\n listItems.forEach((item: UserMenuListItemComponent) => {\n item.showSubmenu\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((submenuTpl: TemplateRef<any> | null) => {\n this._triggerItem = item;\n this.selectItem(submenuTpl);\n });\n item.updateTitle.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((title: string | null) => {\n this.updateTitle(title);\n });\n });\n });\n\n const el = this.userNameEl()?.nativeElement;\n\n if (!el) {\n return;\n }\n\n // logic for showing/hiding the popover header with user name on scroll\n const intersectionObserver = new IntersectionObserver(\n (entries) => {\n this.isUserNameVisible.set(entries[0].isIntersecting);\n },\n { root: null, threshold: 0 }\n );\n\n intersectionObserver.observe(el);\n\n // Initialize\n this.userNameContent.set(el.innerHTML.trim());\n\n // Watch for changes in projected content\n const mutationObserver = new MutationObserver(() => {\n this.userNameContent.set(el.innerHTML.trim());\n });\n\n mutationObserver.observe(el, {\n childList: true,\n characterData: true,\n subtree: true\n });\n\n this._destroyRef.onDestroy(() => {\n intersectionObserver.disconnect();\n mutationObserver.disconnect();\n });\n }\n\n /**\n * Selects the item and sets the submenu template ref\n */\n selectItem(submenuTpl: TemplateRef<any> | null): void {\n this.submenu.set(submenuTpl);\n }\n\n /**\n * Updates the title of the selected item\n */\n updateTitle(title: string | null): void {\n this.selectedItemTitle.set(title);\n }\n\n /**\n * Clears the submenu template ref and the selected item title\n * Closes the submenu and returns to the main view\n */\n clearSubmenu(): void {\n const itemToFocus = this._triggerItem;\n this.submenu.set(null);\n this.selectedItemTitle.set(null);\n this._triggerItem = null;\n\n if (itemToFocus) {\n // Delay focus to allow the main view to render first\n requestAnimationFrame(() => {\n itemToFocus.focus();\n });\n }\n }\n\n /**\n * Closes the dialog in mobile mode\n */\n closeDialog(dialogRef): void {\n dialogRef.dismiss('Close');\n this.clearSubmenu();\n }\n}\n","@if (!submenu()) {\n <ng-content select=\"[fd-user-menu-header]\"></ng-content>\n <ng-content select=\"[fd-user-menu-content-container]\"></ng-content>\n} @else {\n <div class=\"fd-user-menu__details-view\">\n <ng-container *ngTemplateOutlet=\"submenu()\"></ng-container>\n </div>\n}\n\n<ng-template #bodyHeader let-dialogRef=\"dialogRef\">\n <div fd-bar style=\"position: fixed; top: 0; left: 0; right: 0; z-index: 10\">\n @if (submenu()) {\n <div fd-bar-left>\n <fd-bar-element>\n <fd-button-bar\n fdkInitialFocus\n ariaLabel=\"previous\"\n [glyph]=\"navigationArrow()\"\n (click)=\"clearSubmenu()\"\n >\n </fd-button-bar>\n </fd-bar-element>\n <fd-bar-element>\n <h5 fd-title>{{ selectedItemTitle() }}</h5>\n </fd-bar-element>\n </div>\n }\n <div fd-bar-right>\n @if (!submenu()) {\n <fd-bar-element\n [fullWidth]=\"true\"\n class=\"fd-user-menu__scroll-header-element\"\n [class.hidden]=\"isUserNameVisible()\"\n role=\"presentation\"\n aria-hidden=\"true\"\n >\n <div\n [innerHTML]=\"userNameContent()\"\n class=\"fd-user-menu__user-name fd-user-menu__user-name--truncate\"\n style=\"text-align: center; margin-inline-start: 2.75rem\"\n ></div>\n </fd-bar-element>\n }\n\n <fd-bar-element>\n <fd-button-bar ariaLabel=\"close\" glyph=\"decline\" (click)=\"closeDialog(dialogRef)\"> </fd-button-bar>\n </fd-bar-element>\n </div>\n </div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fd-user-menu-content-container]',\n template: `<ng-content />`,\n host: {\n class: 'fd-user-menu__content-container'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class UserMenuContentContainerComponent {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Output,\n ViewEncapsulation\n} from '@angular/core';\n\n@Component({\n selector: 'fd-user-menu-control',\n template: `<ng-content />`,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n tabindex: '0'\n },\n imports: []\n})\nexport class UserMenuControlComponent {\n /** Event emitted event when control element is clicked */\n @Output()\n clicked: EventEmitter<void> = new EventEmitter<void>();\n\n /** @hidden */\n constructor(private el: ElementRef<HTMLElement>) {}\n\n /** @hidden */\n @HostListener('click')\n onClick(): void {\n this.clicked.emit();\n }\n\n /** @hidden */\n focus(): void {\n this.el.nativeElement.focus();\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'fd-user-menu-footer',\n template: `<ng-content />`,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'fd-user-menu__footer'\n },\n imports: []\n})\nexport class UserMenuFooterComponent {}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n DestroyRef,\n HostListener,\n inject,\n QueryList,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KeyboardSupportService } from '@fundamental-ngx/cdk/utils';\nimport { merge, startWith, Subject, takeUntil } from 'rxjs';\nimport { UserMenuListItemComponent } from './user-menu-list-item.component';\n\n@Component({\n selector: 'fd-user-menu-list',\n template: `\n <nav class=\"fd-menu fd-menu--icons fd-user-menu__menu\">\n <ul class=\"fd-menu__list fd-user-menu__menu-list\" role=\"menu\">\n <ng-content />\n </ul>\n </nav>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class UserMenuListComponent implements AfterViewInit {\n /** @hidden */\n @ContentChildren(UserMenuListItemComponent, { descendants: false })\n readonly _listItems: QueryList<UserMenuListItemComponent>;\n\n /** @hidden */\n private _refresh$ = new Subject<void>();\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private readonly _keyboardSupportService = inject(KeyboardSupportService);\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n keyDownHandler(event: KeyboardEvent): void {\n if (this._keyboardSupportService.keyManager) {\n this._keyboardSupportService.onKeyDown(event);\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._keyboardSupportService.setKeyboardService(this._listItems, false, false);\n\n this._listItems.changes.pipe(startWith(null), takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._setupInteractionListeners();\n });\n }\n\n /** @hidden */\n private _setupInteractionListeners(): void {\n this._refresh$.next();\n this._refresh$.complete();\n this._refresh$ = new Subject<void>();\n\n merge(...this._listItems.toArray().map((i) => i.focused))\n .pipe(takeUntil(this._refresh$), takeUntilDestroyed(this._destroyRef))\n .subscribe((focusedItem) => {\n this._listItems.forEach((item) => {\n item._tabIndex$.set(-1);\n });\n focusedItem._tabIndex$.set(0);\n this._keyboardSupportService.keyManager.setActiveItem(focusedItem);\n });\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n DestroyRef,\n HostListener,\n QueryList,\n ViewEncapsulation,\n booleanAttribute,\n inject,\n input\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KeyboardSupportService } from '@fundamental-ngx/cdk/utils';\nimport { Subject, merge, startWith, takeUntil } from 'rxjs';\nimport { UserMenuListItemComponent } from './user-menu-list-item.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fd-user-menu-sublist]',\n template: `<ul class=\"fd-menu__list fd-user-menu__menu-list\" role=\"menu\">\n <ng-content />\n </ul> `,\n host: {\n class: 'fd-menu fd-user-menu__menu',\n '[class.fd-menu--icons]': 'hasIcons()'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [KeyboardSupportService],\n styles: [\n `\n [fd-user-menu-sublist] {\n margin-block-start: 0 !important;\n }\n `\n ]\n})\nexport class UserMenuSublistComponent implements AfterViewInit {\n /** @hidden */\n @ContentChildren(UserMenuListItemComponent, { descendants: true })\n _listItems: QueryList<UserMenuListItemComponent>;\n\n /** Whether the sublist menu items have icons */\n hasIcons = input(false, { transform: booleanAttribute });\n\n /** @hidden */\n private _refresh$ = new Subject<void>();\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private readonly _keyboardSupportService = inject(KeyboardSupportService<UserMenuListItemComponent>);\n\n /** @hidden */\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n event.stopPropagation();\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n keyDownHandler(event: KeyboardEvent): void {\n if (this._keyboardSupportService.keyManager) {\n this._keyboardSupportService.onKeyDown(event);\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._keyboardSupportService.setKeyboardService(this._listItems, false, false);\n\n this._listItems.changes.pipe(startWith(null), takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._setupInteractionListeners();\n });\n }\n\n /** @hidden */\n private _setupInteractionListeners(): void {\n this._refresh$.next();\n this._refresh$.complete();\n this._refresh$ = new Subject<void>();\n\n merge(...this._listItems.toArray().map((i) => i.focused))\n .pipe(takeUntil(this._refresh$), takeUntilDestroyed(this._destroyRef))\n .subscribe((focusedItem) => {\n this._listItems.forEach((item) => {\n item._tabIndex$.set(-1);\n });\n focusedItem._tabIndex$.set(0);\n this._keyboardSupportService.keyManager.setActiveItem(focusedItem);\n });\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-user-menu-control-element]'\n})\nexport class UserMenuControlElementDirective {}\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n contentChild,\n contentChildren,\n DestroyRef,\n effect,\n ElementRef,\n inject,\n input,\n output,\n Renderer2,\n signal,\n TemplateRef,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { KeyboardSupportService, RtlService, TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityMode, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport {\n DialogBodyComponent,\n DialogComponent,\n DialogFooterComponent,\n DialogHeaderComponent,\n DialogRef,\n DialogService\n} from '@fundamental-ngx/core/dialog';\n\nimport { PopoverBodyComponent, PopoverComponent, PopoverControlComponent } from '@fundamental-ngx/core/popover';\n\nimport { BarComponent, BarElementDirective, BarMiddleDirective } from '@fundamental-ngx/core/bar';\n\nimport { UserMenuBodyComponent } from './components/user-menu-body.component';\nimport { UserMenuControlComponent } from './components/user-menu-control.component';\nimport { UserMenuListItemComponent } from './components/user-menu-list-item.component';\nimport { UserMenuControlElementDirective } from './directives/user-menu-control-element.directive';\nimport { UserMenuUserNameDirective } from './directives/user-menu-user-name.directive';\n\n@Component({\n selector: 'fd-user-menu',\n templateUrl: './user-menu.component.html',\n styleUrl: './user-menu.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'fd-user-menu'\n },\n imports: [\n CommonModule,\n BarComponent,\n BarMiddleDirective,\n BarElementDirective,\n PopoverComponent,\n PopoverBodyComponent,\n PopoverControlComponent,\n DialogComponent,\n DialogBodyComponent,\n DialogFooterComponent,\n DialogHeaderComponent,\n TemplateDirective\n ],\n providers: [KeyboardSupportService, contentDensityObserverProviders()]\n})\nexport class UserMenuComponent implements AfterViewInit {\n /** Event thrown, when the user menu is opened or closed */\n isOpenChange = output<boolean>();\n\n /** Whether the user menu is in mobile mode */\n mobile = input(false, { transform: booleanAttribute });\n\n /** Whether the user menu is open */\n readonly isOpen = signal(false);\n\n /**\n * Signal indicating whether the user name element is currently visible\n * within the user menu. This updates automatically as the element\n * enters or leaves the viewport.\n *\n * Used by the template to conditionally render the sticky header.\n */\n readonly isUserNameVisible = signal(true);\n\n /**\n * Signal storing the HTML content of the user name element.\n * When the original element scrolls out of view, this content\n * is displayed in the sticky header.\n */\n readonly userNameContent = signal('');\n\n /** @hidden */\n protected readonly userMenuControl = contentChild(UserMenuControlComponent);\n\n /** @hidden */\n protected readonly userNameEl = contentChild(UserMenuUserNameDirective, { read: ElementRef });\n\n /** @hidden */\n protected readonly userMenuControlElement = contentChild(UserMenuControlElementDirective, {\n descendants: true,\n read: ElementRef\n });\n\n /** @hidden */\n protected readonly userMenuBody = contentChild(UserMenuBodyComponent, { descendants: true });\n\n /** @hidden */\n protected readonly navigationArrow = computed(() =>\n this._rtlService.rtl() ? 'navigation-right-arrow' : 'navigation-left-arrow'\n );\n\n /** @hidden */\n private readonly _listItems = contentChildren(UserMenuListItemComponent, { descendants: true });\n\n /** @hidden */\n private readonly _rtlService = inject(RtlService);\n\n /** @hidden */\n private readonly _dialogService = inject(DialogService);\n\n /** @hidden */\n private readonly _changeDetectionRef = inject(ChangeDetectorRef);\n\n /** @hidden */\n private readonly _renderer = inject(Renderer2);\n\n /** @hidden */\n private _dialogRef: DialogRef | undefined;\n\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n constructor() {\n effect(() => {\n const isMobile = this.mobile();\n this._listItems()?.forEach((item) => item.mobile.set(isMobile));\n });\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n const isMobile = this.mobile();\n this._listItems()?.forEach((item) => item.mobile.set(isMobile));\n\n const el = this.userNameEl()?.nativeElement;\n\n if (!el) {\n return;\n }\n\n // logic for showing/hiding the popover header with user name on scroll\n const intersectionObserver = new IntersectionObserver(\n (entries) => {\n this.isUserNameVisible.set(entries[0].isIntersecting);\n },\n { root: null, threshold: 0, rootMargin: '-20px 0px 0px 0px' }\n );\n\n intersectionObserver.observe(el);\n\n // Initialize\n this.userNameContent.set(el.innerHTML.trim());\n\n // Watch for changes in projected content\n const mutationObserver = new MutationObserver(() => {\n this.userNameContent.set(el.innerHTML.trim());\n });\n\n mutationObserver.observe(el, {\n childList: true,\n characterData: true,\n subtree: true\n });\n\n this._destroyRef.onDestroy(() => {\n intersectionObserver.disconnect();\n mutationObserver.disconnect();\n });\n }\n\n /** Method that opens the user menu */\n open(): void {\n this.isOpenChangeHandle(true);\n }\n\n /** Method that closes the user menu */\n close(): void {\n this.isOpenChangeHandle(false);\n\n if (this._listItems().length > 0) {\n this._listItems().forEach((item) => {\n item.isOpen.set(false);\n item._elementRef?.nativeElement.querySelector('.fd-menu__link')?.classList.remove('is-active');\n });\n\n this._listItems()[0]?._tabIndex$.set(0);\n }\n\n this._clearSubmenu();\n this._dialogRef?.close();\n }\n\n /** Method that opens the user menu in dialog (for mobile mode) */\n openDialog(dialogTemplate: TemplateRef<any>): void {\n this._dialogRef = this._dialogService.open(dialogTemplate, {\n mobile: true,\n verticalPadding: false,\n horizontalPadding: false,\n ariaLabelledBy: 'fd-user-menu-header',\n ariaDescribedBy: 'fd-user-menu-body',\n contentDensity: ContentDensityMode.COZY\n });\n\n const refSub = this._dialogRef.afterClosed.subscribe({\n next: () => {\n this.userMenuControl()?.focus();\n refSub.unsubscribe();\n },\n error: (type) => {\n if (type === 'escape') {\n this._clearSubmenu();\n refSub.unsubscribe();\n }\n }\n });\n }\n\n /** @hidden */\n isOpenChangeHandle(isOpen: boolean): void {\n if (this.isOpen() === isOpen) {\n return;\n }\n\n this.isOpen.set(isOpen);\n this.isOpenChange.emit(isOpen);\n\n if (!isOpen && !this.mobile()) {\n this.userMenuControl()?.focus();\n }\n\n const userMenuControlEl = this.userMenuControlElement()?.nativeElement;\n\n this.userMenuControlElement()?.nativeElement &&\n (isOpen\n ? this._renderer.addClass(userMenuControlEl, 'is-active')\n : this._renderer.removeClass(userMenuControlEl, 'is-active'));\n\n this._changeDetectionRef.detectChanges();\n }\n\n /** @hidden */\n private _clearSubmenu(): void {\n const userMenuBody = this.userMenuBody();\n if (userMenuBody) {\n userMenuBody.clearSubmenu();\n }\n }\n}\n","@if (!mobile()) {\n <fd-popover\n [isOpen]=\"isOpen()\"\n (isOpenChange)=\"isOpenChangeHandle($event)\"\n [focusAutoCapture]=\"true\"\n [restoreFocusOnClose]=\"true\"\n [focusTrapped]=\"true\"\n [disableScrollbar]=\"true\"\n [noArrow]=\"false\"\n >\n <fd-popover-control>\n <ng-container *ngTemplateOutlet=\"control\"></ng-container>\n </fd-popover-control>\n <fd-popover-body fd-user-menu-popover-control>\n <div class=\"fd-user-menu__popover-wrapper\">\n <div\n fd-popover-body-header\n class=\"fd-user-menu__scroll-header\"\n [class.hidden]=\"isUserNameVisible()\"\n role=\"presentation\"\n aria-hidden=\"true\"\n >\n <ng-container *ngTemplateOutlet=\"header\"></ng-container>\n </div>\n\n <ng-container *ngTemplateOutlet=\"body\"></ng-container>\n\n <div fd-popover-body-footer>\n <ng-container *ngTemplateOutlet=\"footer\"></ng-container>\n </div>\n </div>\n </fd-popover-body>\n </fd-popover>\n} @else {\n <span (click)=\"openDialog(dialogTemplate)\">\n <ng-container *ngTemplateOutlet=\"control\"></ng-container>\n </span>\n\n <ng-template [fdDialogTemplate] let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n @if (userMenuBody()?.bodyHeader()) {\n <ng-template fdkTemplate=\"header\">\n <ng-container\n *ngTemplateOutlet=\"userMenuBody()?.bodyHeader() ?? null; context: { dialogRef: dialog }\"\n >\n </ng-container>\n </ng-template>\n }\n </fd-dialog-header>\n <fd-dialog-body style=\"padding: 0\">\n <ng-container *ngTemplateOutlet=\"body\"></ng-container>\n </fd-dialog-body>\n <fd-dialog-footer>\n <ng-template fdkTemplate=\"customFooter\">\n <ng-container *ngTemplateOutlet=\"footer\"></ng-container>\n </ng-template>\n </fd-dialog-footer>\n </fd-dialog>\n </ng-template>\n}\n\n<ng-template #control>\n <ng-content select=\"fd-user-menu-control\" />\n</ng-template>\n\n<ng-template #header>\n <div fd-popover-body-header>\n <div fd-bar barDesign=\"header\">\n <div fd-bar-middle>\n <fd-bar-element>\n <div\n class=\"fd-user-menu__user-name fd-user-menu__user-name--truncate\"\n [innerHTML]=\"userNameContent()\"\n ></div>\n </fd-bar-element>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template #body>\n <ng-content select=\"fd-user-menu-body\" />\n</ng-template>\n\n<ng-template #footer>\n <ng-content select=\"fd-user-menu-footer\" />\n</ng-template>\n","import { Directive } from '@angular/core';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-user-menu-header-container]',\n host: {\n class: 'fd-user-menu__header-container'\n }\n})\nexport class UserMenuHeaderContainerDirective {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-user-menu-header]',\n host: {\n class: 'fd-user-menu__header'\n }\n})\nexport class UserMenuHeaderDirective {}\n","import { booleanAttribute, Directive, input } from '@angular/core';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-user-menu-subline]',\n host: {\n class: 'fd-user-menu__subline',\n '[class.fd-user-menu__subline--truncate]': 'truncate()'\n }\n})\nexport class UserMenuSublineDirective {\n /** Whether the text should truncate with ellipsis. */\n truncate = input(false, { transform: booleanAttribute });\n}\n","import { NgModule } from '@angular/core';\n\n// Components\nimport { UserMenuBodyComponent } from './components/user-menu-body.component';\nimport { UserMenuContentContainerComponent } from './components/user-menu-content-container.component';\nimport { UserMenuControlComponent } from './components/user-menu-control.component';\nimport { UserMenuFooterComponent } from './components/user-menu-footer.component';\nimport { UserMenuListItemComponent } from './components/user-menu-list-item.component';\nimport { UserMenuListComponent } from './components/user-menu-list.component';\nimport { UserMenuSublistComponent } from './components/user-menu-sublist.component';\nimport { UserMenuComponent } from './user-menu.component';\n\n// Directives\nimport { UserMenuControlElementDirective } from './directives/user-menu-control-element.directive';\nimport { UserMenuHeaderContainerDirective } from './directives/user-menu-header-container.directive';\nimport { UserMenuHeaderDirective } from './directives/user-menu-header.directive';\nimport { UserMenuSublineDirective } from './directives/user-menu-subline.directive';\nimport { UserMenuUserNameDirective } from './directives/user-menu-user-name.directive';\n\nconst components = [\n UserMenuComponent,\n UserMenuControlComponent,\n UserMenuBodyComponent,\n UserMenuFooterComponent,\n UserMenuListComponent,\n UserMenuSublistComponent,\n UserMenuListItemComponent,\n UserMenuContentContainerComponent,\n UserMenuHeaderDirective,\n UserMenuHeaderContainerDirective,\n UserMenuUserNameDirective,\n UserMenuSublineDirective,\n UserMenuControlElementDirective\n];\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [...components],\n exports: [...components]\n})\nexport class UserMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -29,7 +29,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
|
|
|
29
29
|
class VerticalNavigationMainNavigationComponent {
|
|
30
30
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: VerticalNavigationMainNavigationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31
31
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.0", type: VerticalNavigationMainNavigationComponent, isStandalone: true, selector: "fd-vertical-navigation-main-navigation", queries: [{ propertyName: "_list", first: true, predicate: FD_LIST_COMPONENT, descendants: true }], ngImport: i0, template: `<nav
|
|
32
|
-
[attr.aria-label]="
|
|
32
|
+
[attr.aria-label]="'coreNavigation.mainNavigation' | fdTranslate"
|
|
33
33
|
class="fd-vertical-nav__main-navigation"
|
|
34
34
|
>
|
|
35
35
|
<ng-content></ng-content>
|
|
@@ -38,7 +38,7 @@ class VerticalNavigationMainNavigationComponent {
|
|
|
38
38
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: VerticalNavigationMainNavigationComponent, decorators: [{
|
|
39
39
|
type: Component,
|
|
40
40
|
args: [{ selector: 'fd-vertical-navigation-main-navigation', template: `<nav
|
|
41
|
-
[attr.aria-label]="
|
|
41
|
+
[attr.aria-label]="'coreNavigation.mainNavigation' | fdTranslate"
|
|
42
42
|
class="fd-vertical-nav__main-navigation"
|
|
43
43
|
>
|
|
44
44
|
<ng-content></ng-content>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-core-vertical-navigation.mjs","sources":["../../../../libs/core/vertical-navigation/vertical-navigation-group-header.directive.ts","../../../../libs/core/vertical-navigation/vertical-navigation-main-navigation.component.ts","../../../../libs/core/vertical-navigation/vertical-navigation.component.ts","../../../../libs/core/vertical-navigation/vertical-navigation.component.html","../../../../libs/core/vertical-navigation/vertical-navigation.module.ts","../../../../libs/core/vertical-navigation/fundamental-ngx-core-vertical-navigation.ts"],"sourcesContent":["import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[fdVerticalNavigationGroupHeader], [fd-vertical-navigation-group-header]',\n standalone: true\n})\nexport class VerticalNavigationGroupHeaderDirective {\n /** @hidden */\n @HostBinding('class.fd-vertical-nav__group-header')\n fdVerticalNavigationGroupHeaderClass = true;\n}\n","import { ChangeDetectionStrategy, Component, ContentChild, ViewEncapsulation } from '@angular/core';\nimport { FD_LIST_COMPONENT, ListComponent } from '@fundamental-ngx/core/list';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\n\n@Component({\n selector: 'fd-vertical-navigation-main-navigation',\n template: `<nav\n [attr.aria-label]=\"('coreNavigation.mainNavigation' | fdTranslate)()\"\n class=\"fd-vertical-nav__main-navigation\"\n >\n <ng-content></ng-content>\n </nav>`,\n styleUrl: './vertical-navigation.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FdTranslatePipe]\n})\nexport class VerticalNavigationMainNavigationComponent {\n /** @hidden */\n @ContentChild(FD_LIST_COMPONENT)\n _list: ListComponent;\n}\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n DestroyRef,\n HostListener,\n Input,\n OnDestroy,\n QueryList,\n ViewEncapsulation,\n effect,\n inject,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { destroyObservable } from '@fundamental-ngx/cdk/utils';\nimport { ListComponent, ListNavigationItemComponent } from '@fundamental-ngx/core/list';\nimport { Subject, delay, map, merge, startWith, takeUntil } from 'rxjs';\nimport { VerticalNavigationMainNavigationComponent } from './vertical-navigation-main-navigation.component';\n\n/**\n * @deprecated use the (btp)vertical navigation component instead.\n * The side-navigation is a wrapping component representing\n * a left navigation that can always display or expand/collapse using the menu icon within the global navigation.\n */\n@Component({\n selector: 'fd-vertical-navigation',\n templateUrl: './vertical-navigation.component.html',\n styleUrl: './vertical-navigation.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [VerticalNavigationMainNavigationComponent, ListComponent]\n})\nexport class VerticalNavigationComponent implements AfterContentInit, OnDestroy {\n /** Whether or not this component is to be shown in 'condensed' mode. */\n @Input()\n set condensed(value: boolean) {\n this._condensed.set(value);\n }\n\n get condensed(): boolean {\n return this._condensed();\n }\n\n /** @hidden */\n @ContentChildren(ListNavigationItemComponent, { descendants: true })\n private readonly _navigationItems: QueryList<ListNavigationItemComponent>;\n\n /** @hidden\n * Querylist of list-items in main navigation.\n */\n @ContentChildren(ListNavigationItemComponent)\n private set _mainItems(items: QueryList<ListNavigationItemComponent>) {\n this._mainNavItems.set(items?.toArray() ?? []);\n }\n\n /** @hidden */\n private _keyManager: FocusKeyManager<ListNavigationItemComponent>;\n\n /** An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing) */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** An RxJS Subject that will kill the data stream upon queryList changes (for unsubscribing) */\n private readonly _onRefresh$ = new Subject<void>();\n\n /** @hidden */\n private readonly _condensed = signal(false);\n\n /** @hidden */\n private readonly _contentInited = signal(false);\n\n /** @hidden */\n private readonly _mainNavItems = signal<ListNavigationItemComponent[]>([]);\n\n /** @hidden */\n constructor() {\n effect(() => {\n if (!this._contentInited()) {\n return;\n }\n\n const isCondensed = this._condensed();\n\n this._mainNavItems().forEach((item) => {\n item._condensed.set(isCondensed);\n });\n });\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n keyDownHandler(event: KeyboardEvent): void {\n this._keyManager.onKeydown(event);\n event.stopPropagation();\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._contentInited.set(true);\n\n this._keyManager?.destroy();\n this._keyManager = new FocusKeyManager(this._navigationItems)\n .withHomeAndEnd()\n .skipPredicate((item) => !item._isItemVisible || (item._condensed() && item.expanded));\n this._listenOnQueryChange();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._keyManager?.destroy();\n this._onRefresh$.next();\n this._onRefresh$.complete();\n }\n\n /** Set fake focus on element with passed index */\n setItemActive(index: number, updateOnly = false): void {\n if (updateOnly) {\n this._keyManager.updateActiveItem(index);\n } else {\n this._keyManager.setActiveItem(index);\n }\n }\n\n /** @hidden */\n private _listenOnQueryChange(): void {\n this._navigationItems.changes\n .pipe(delay(0), startWith(0), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n this._listenOnItemsClick();\n setTimeout(() => {\n // using setTimeout to avoid ExpressionChangedAfterItHasBeenCheckedError\n this._navigationItems.forEach((navItem, index) => {\n index !== 0 && (navItem._tabIndex = -1);\n });\n });\n });\n }\n\n /** @hidden */\n private _listenOnItemsClick(): void {\n /** Finish all the streams, from before */\n this._onRefresh$.next();\n\n /** Merge refresh/destroy observables */\n const completion$ = merge(this._onRefresh$, destroyObservable(this._destroyRef));\n const interactionChangesIndexes = this._navigationItems.map((item, index) =>\n merge(\n item._clicked$.pipe(map(() => ({ index, updateOnly: false }))),\n item._focused$.pipe(map((focusedOn) => ({ index, updateOnly: focusedOn })))\n )\n );\n merge(...interactionChangesIndexes)\n .pipe(takeUntil(completion$))\n .subscribe(({ index, updateOnly }) => this.setItemActive(index, updateOnly));\n }\n}\n","<div class=\"fd-vertical-nav\" [class.fd-vertical-nav--condensed]=\"condensed\">\n <fd-vertical-navigation-main-navigation>\n <ul fd-list role=\"tree\">\n <ng-content></ng-content>\n </ul>\n </fd-vertical-navigation-main-navigation>\n</div>\n","import { NgModule } from '@angular/core';\nimport { VerticalNavigationGroupHeaderDirective } from './vertical-navigation-group-header.directive';\nimport { VerticalNavigationMainNavigationComponent } from './vertical-navigation-main-navigation.component';\nimport { VerticalNavigationComponent } from './vertical-navigation.component';\n\nconst components = [\n VerticalNavigationComponent,\n VerticalNavigationMainNavigationComponent,\n VerticalNavigationGroupHeaderDirective\n];\n\n/**\n * @deprecated\n * Use direct imports of `VerticalNavigationComponent`, `VerticalNavigationMainNavigationComponent`, `VerticalNavigationGroupHeaderDirective`\n */\n@NgModule({\n imports: [...components],\n exports: [...components]\n})\nexport class VerticalNavigationModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;MAMa,sCAAsC,CAAA;AAJnD,IAAA,WAAA,GAAA;;QAOI,IAAA,CAAA,oCAAoC,GAAG,IAAI;AAC9C,IAAA;8GAJY,sCAAsC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtC,sCAAsC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,qCAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAtC,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBAJlD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,0EAA0E;AACpF,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAGI,WAAW;uBAAC,qCAAqC;;;MCSzC,yCAAyC,CAAA;8GAAzC,yCAAyC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzC,yCAAyC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAEpC,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAbrB,CAAA;;;;;AAKH,UAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,i/mBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAIG,eAAe,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAEhB,yCAAyC,EAAA,UAAA,EAAA,CAAA;kBAbrD,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wCAAwC,EAAA,QAAA,EACxC,CAAA;;;;;WAKH,EAAA,aAAA,EAEQ,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,eAAe,CAAC,EAAA,MAAA,EAAA,CAAA,i/mBAAA,CAAA,EAAA;;sBAIzB,YAAY;uBAAC,iBAAiB;;;ACGnC;;;;AAIG;MASU,2BAA2B,CAAA;;IAEpC,IACI,SAAS,CAAC,KAAc,EAAA;AACxB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;IAC9B;AAEA,IAAA,IAAI,SAAS,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE;IAC5B;AAMA;;AAEG;IACH,IACY,UAAU,CAAC,KAA6C,EAAA;AAChE,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAClD;;AAqBA,IAAA,WAAA,GAAA;;AAfiB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;;AAGhC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAAQ;;AAGjC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,KAAK,sDAAC;;AAG1B,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,KAAK,0DAAC;;AAG9B,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAgC,EAAE,yDAAC;QAItE,MAAM,CAAC,MAAK;AACR,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;gBACxB;YACJ;AAEA,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE;YAErC,IAAI,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAClC,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC;AACpC,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;IACN;;AAIA,IAAA,cAAc,CAAC,KAAoB,EAAA;AAC/B,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC;QACjC,KAAK,CAAC,eAAe,EAAE;IAC3B;;IAGA,kBAAkB,GAAA;AACd,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;AAE7B,QAAA,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE;QAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,gBAAgB;AACvD,aAAA,cAAc;aACd,aAAa,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1F,IAAI,CAAC,oBAAoB,EAAE;IAC/B;;IAGA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE;AAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;AACvB,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;IAC/B;;AAGA,IAAA,aAAa,CAAC,KAAa,EAAE,UAAU,GAAG,KAAK,EAAA;QAC3C,IAAI,UAAU,EAAE;AACZ,YAAA,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,CAAC;QAC5C;aAAO;AACH,YAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC;QACzC;IACJ;;IAGQ,oBAAoB,GAAA;QACxB,IAAI,CAAC,gBAAgB,CAAC;AACjB,aAAA,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;aACjE,SAAS,CAAC,MAAK;YACZ,IAAI,CAAC,mBAAmB,EAAE;YAC1B,UAAU,CAAC,MAAK;;gBAEZ,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,KAAI;oBAC7C,KAAK,KAAK,CAAC,KAAK,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;AAC3C,gBAAA,CAAC,CAAC;AACN,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;IACV;;IAGQ,mBAAmB,GAAA;;AAEvB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;;AAGvB,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAChF,QAAA,MAAM,yBAAyB,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KACpE,KAAK,CACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAC9D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAC9E,CACJ;QACD,KAAK,CAAC,GAAG,yBAAyB;AAC7B,aAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;AAC3B,aAAA,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACpF;8GAzHS,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,SAAA,EAYnB,2BAA2B,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAM3B,2BAA2B,6BCrDhD,mRAOA,EAAA,MAAA,EAAA,CAAA,i/mBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED0Bc,yCAAyC,EAAA,QAAA,EAAA,wCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,cAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAEzD,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBARvC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EAAA,aAAA,EAGnB,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,yCAAyC,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,mRAAA,EAAA,MAAA,EAAA,CAAA,i/mBAAA,CAAA,EAAA;;sBAIlE;;sBAUA,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,2BAA2B,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;;sBAMlE,eAAe;uBAAC,2BAA2B;;sBAuC3C,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;AEvFvC,MAAM,UAAU,GAAG;IACf,2BAA2B;IAC3B,yCAAyC;IACzC;CACH;AAED;;;AAGG;MAKU,wBAAwB,CAAA;8GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,YAbjC,2BAA2B;YAC3B,yCAAyC;AACzC,YAAA,sCAAsC,aAFtC,2BAA2B;YAC3B,yCAAyC;YACzC,sCAAsC,CAAA,EAAA,CAAA,CAAA;AAW7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,YAbjC,2BAA2B,CAAA,EAAA,CAAA,CAAA;;2FAalB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,GAAG,UAAU,CAAC;AACxB,oBAAA,OAAO,EAAE,CAAC,GAAG,UAAU;AAC1B,iBAAA;;;AClBD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-core-vertical-navigation.mjs","sources":["../../../../libs/core/vertical-navigation/vertical-navigation-group-header.directive.ts","../../../../libs/core/vertical-navigation/vertical-navigation-main-navigation.component.ts","../../../../libs/core/vertical-navigation/vertical-navigation.component.ts","../../../../libs/core/vertical-navigation/vertical-navigation.component.html","../../../../libs/core/vertical-navigation/vertical-navigation.module.ts","../../../../libs/core/vertical-navigation/fundamental-ngx-core-vertical-navigation.ts"],"sourcesContent":["import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[fdVerticalNavigationGroupHeader], [fd-vertical-navigation-group-header]',\n standalone: true\n})\nexport class VerticalNavigationGroupHeaderDirective {\n /** @hidden */\n @HostBinding('class.fd-vertical-nav__group-header')\n fdVerticalNavigationGroupHeaderClass = true;\n}\n","import { ChangeDetectionStrategy, Component, ContentChild, ViewEncapsulation } from '@angular/core';\nimport { FD_LIST_COMPONENT, ListComponent } from '@fundamental-ngx/core/list';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\n\n@Component({\n selector: 'fd-vertical-navigation-main-navigation',\n template: `<nav\n [attr.aria-label]=\"'coreNavigation.mainNavigation' | fdTranslate\"\n class=\"fd-vertical-nav__main-navigation\"\n >\n <ng-content></ng-content>\n </nav>`,\n styleUrl: './vertical-navigation.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FdTranslatePipe]\n})\nexport class VerticalNavigationMainNavigationComponent {\n /** @hidden */\n @ContentChild(FD_LIST_COMPONENT)\n _list: ListComponent;\n}\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n DestroyRef,\n HostListener,\n Input,\n OnDestroy,\n QueryList,\n ViewEncapsulation,\n effect,\n inject,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { destroyObservable } from '@fundamental-ngx/cdk/utils';\nimport { ListComponent, ListNavigationItemComponent } from '@fundamental-ngx/core/list';\nimport { Subject, delay, map, merge, startWith, takeUntil } from 'rxjs';\nimport { VerticalNavigationMainNavigationComponent } from './vertical-navigation-main-navigation.component';\n\n/**\n * @deprecated use the (btp)vertical navigation component instead.\n * The side-navigation is a wrapping component representing\n * a left navigation that can always display or expand/collapse using the menu icon within the global navigation.\n */\n@Component({\n selector: 'fd-vertical-navigation',\n templateUrl: './vertical-navigation.component.html',\n styleUrl: './vertical-navigation.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [VerticalNavigationMainNavigationComponent, ListComponent]\n})\nexport class VerticalNavigationComponent implements AfterContentInit, OnDestroy {\n /** Whether or not this component is to be shown in 'condensed' mode. */\n @Input()\n set condensed(value: boolean) {\n this._condensed.set(value);\n }\n\n get condensed(): boolean {\n return this._condensed();\n }\n\n /** @hidden */\n @ContentChildren(ListNavigationItemComponent, { descendants: true })\n private readonly _navigationItems: QueryList<ListNavigationItemComponent>;\n\n /** @hidden\n * Querylist of list-items in main navigation.\n */\n @ContentChildren(ListNavigationItemComponent)\n private set _mainItems(items: QueryList<ListNavigationItemComponent>) {\n this._mainNavItems.set(items?.toArray() ?? []);\n }\n\n /** @hidden */\n private _keyManager: FocusKeyManager<ListNavigationItemComponent>;\n\n /** An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing) */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** An RxJS Subject that will kill the data stream upon queryList changes (for unsubscribing) */\n private readonly _onRefresh$ = new Subject<void>();\n\n /** @hidden */\n private readonly _condensed = signal(false);\n\n /** @hidden */\n private readonly _contentInited = signal(false);\n\n /** @hidden */\n private readonly _mainNavItems = signal<ListNavigationItemComponent[]>([]);\n\n /** @hidden */\n constructor() {\n effect(() => {\n if (!this._contentInited()) {\n return;\n }\n\n const isCondensed = this._condensed();\n\n this._mainNavItems().forEach((item) => {\n item._condensed.set(isCondensed);\n });\n });\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n keyDownHandler(event: KeyboardEvent): void {\n this._keyManager.onKeydown(event);\n event.stopPropagation();\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._contentInited.set(true);\n\n this._keyManager?.destroy();\n this._keyManager = new FocusKeyManager(this._navigationItems)\n .withHomeAndEnd()\n .skipPredicate((item) => !item._isItemVisible || (item._condensed() && item.expanded));\n this._listenOnQueryChange();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._keyManager?.destroy();\n this._onRefresh$.next();\n this._onRefresh$.complete();\n }\n\n /** Set fake focus on element with passed index */\n setItemActive(index: number, updateOnly = false): void {\n if (updateOnly) {\n this._keyManager.updateActiveItem(index);\n } else {\n this._keyManager.setActiveItem(index);\n }\n }\n\n /** @hidden */\n private _listenOnQueryChange(): void {\n this._navigationItems.changes\n .pipe(delay(0), startWith(0), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n this._listenOnItemsClick();\n setTimeout(() => {\n // using setTimeout to avoid ExpressionChangedAfterItHasBeenCheckedError\n this._navigationItems.forEach((navItem, index) => {\n index !== 0 && (navItem._tabIndex = -1);\n });\n });\n });\n }\n\n /** @hidden */\n private _listenOnItemsClick(): void {\n /** Finish all the streams, from before */\n this._onRefresh$.next();\n\n /** Merge refresh/destroy observables */\n const completion$ = merge(this._onRefresh$, destroyObservable(this._destroyRef));\n const interactionChangesIndexes = this._navigationItems.map((item, index) =>\n merge(\n item._clicked$.pipe(map(() => ({ index, updateOnly: false }))),\n item._focused$.pipe(map((focusedOn) => ({ index, updateOnly: focusedOn })))\n )\n );\n merge(...interactionChangesIndexes)\n .pipe(takeUntil(completion$))\n .subscribe(({ index, updateOnly }) => this.setItemActive(index, updateOnly));\n }\n}\n","<div class=\"fd-vertical-nav\" [class.fd-vertical-nav--condensed]=\"condensed\">\n <fd-vertical-navigation-main-navigation>\n <ul fd-list role=\"tree\">\n <ng-content></ng-content>\n </ul>\n </fd-vertical-navigation-main-navigation>\n</div>\n","import { NgModule } from '@angular/core';\nimport { VerticalNavigationGroupHeaderDirective } from './vertical-navigation-group-header.directive';\nimport { VerticalNavigationMainNavigationComponent } from './vertical-navigation-main-navigation.component';\nimport { VerticalNavigationComponent } from './vertical-navigation.component';\n\nconst components = [\n VerticalNavigationComponent,\n VerticalNavigationMainNavigationComponent,\n VerticalNavigationGroupHeaderDirective\n];\n\n/**\n * @deprecated\n * Use direct imports of `VerticalNavigationComponent`, `VerticalNavigationMainNavigationComponent`, `VerticalNavigationGroupHeaderDirective`\n */\n@NgModule({\n imports: [...components],\n exports: [...components]\n})\nexport class VerticalNavigationModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fundamental-ngx/core",
|
|
3
|
-
"version": "0.61.2
|
|
3
|
+
"version": "0.61.2",
|
|
4
4
|
"schematics": "./schematics/collection.json",
|
|
5
5
|
"ng-update": {
|
|
6
6
|
"migrations": "./schematics/migrations.json"
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
"@angular/forms": "^21.0.0",
|
|
24
24
|
"@angular/platform-browser": "^21.0.0",
|
|
25
25
|
"@angular/router": "^21.0.0",
|
|
26
|
-
"@fundamental-ngx/cdk": "0.61.2
|
|
27
|
-
"@fundamental-ngx/i18n": "0.61.2
|
|
26
|
+
"@fundamental-ngx/cdk": "0.61.2",
|
|
27
|
+
"@fundamental-ngx/i18n": "0.61.2",
|
|
28
28
|
"@sap-theming/theming-base-content": "^11.32.0",
|
|
29
29
|
"fundamental-styles": "0.40.1",
|
|
30
30
|
"rxjs": "^7.8.0"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DomPortal } from '@angular/cdk/portal';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { AfterViewInit, ElementRef, EventEmitter, InjectionToken } from '@angular/core';
|
|
3
|
+
import { AfterViewInit, ElementRef, OnInit, EventEmitter, InjectionToken } from '@angular/core';
|
|
4
4
|
import * as i3 from '@fundamental-ngx/core/link';
|
|
5
5
|
import { LinkComponent } from '@fundamental-ngx/core/link';
|
|
6
6
|
import { HasElementRef } from '@fundamental-ngx/cdk/utils';
|
|
@@ -58,7 +58,7 @@ type BreadcrumbSeparatorStyle = '' | 'backslash' | 'double-slash' | 'double-back
|
|
|
58
58
|
* </fd-breadcrumb>
|
|
59
59
|
* ```
|
|
60
60
|
*/
|
|
61
|
-
declare class BreadcrumbComponent implements AfterViewInit, HasElementRef {
|
|
61
|
+
declare class BreadcrumbComponent implements OnInit, AfterViewInit, HasElementRef {
|
|
62
62
|
/** Whether to append items to the overflow dropdown in reverse order. Default is true. */
|
|
63
63
|
reverse: boolean;
|
|
64
64
|
/** Tabindex of the breadcrumb. */
|
|
@@ -99,20 +99,20 @@ declare class BreadcrumbComponent implements AfterViewInit, HasElementRef {
|
|
|
99
99
|
/** @hidden */
|
|
100
100
|
private readonly _rtlService;
|
|
101
101
|
/** @hidden */
|
|
102
|
-
private readonly
|
|
102
|
+
private readonly _lang$;
|
|
103
103
|
/** @hidden */
|
|
104
104
|
private readonly _translationResolver;
|
|
105
105
|
/** @hidden */
|
|
106
106
|
private readonly _destroyRef;
|
|
107
107
|
/** @hidden */
|
|
108
|
-
constructor();
|
|
109
|
-
/** @hidden */
|
|
110
108
|
onResize(): void;
|
|
111
109
|
/**
|
|
112
110
|
* Function that handles click, touch, enter and space events.
|
|
113
111
|
*/
|
|
114
112
|
itemClicked(breadcrumbItem: BreadcrumbItemComponent, $event: Event): void;
|
|
115
113
|
/** @hidden */
|
|
114
|
+
ngOnInit(): void;
|
|
115
|
+
/** @hidden */
|
|
116
116
|
ngAfterViewInit(): void;
|
|
117
117
|
/** @hidden */
|
|
118
118
|
_keyDownHandle(event: Event): void;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
2
|
import { ElementRef, InjectionToken } from '@angular/core';
|
|
3
3
|
import { HasElementRef } from '@fundamental-ngx/cdk/utils';
|
|
4
|
-
import * as
|
|
5
|
-
import { TranslationResolver } from '@fundamental-ngx/i18n';
|
|
4
|
+
import * as rxjs from 'rxjs';
|
|
5
|
+
import { FdLanguage, TranslationResolver } from '@fundamental-ngx/i18n';
|
|
6
6
|
|
|
7
7
|
type BusyIndicatorSize = 's' | 'm' | 'l';
|
|
8
8
|
declare class BusyIndicatorComponent {
|
|
@@ -25,7 +25,7 @@ declare class BusyIndicatorComponent {
|
|
|
25
25
|
/** @hidden */
|
|
26
26
|
protected readonly fakeFocusElement: _angular_core.Signal<ElementRef<any> | undefined>;
|
|
27
27
|
/** @hidden */
|
|
28
|
-
protected readonly
|
|
28
|
+
protected readonly _lang$: rxjs.Observable<FdLanguage>;
|
|
29
29
|
/** @hidden */
|
|
30
30
|
protected readonly _translationResolver: TranslationResolver;
|
|
31
31
|
/** @hidden */
|