@fundamental-ngx/core 0.59.1-rc.9 → 0.59.1
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-avatar-group-legacy.mjs +33 -50
- package/fesm2022/fundamental-ngx-core-avatar-group-legacy.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-avatar-group.mjs +9 -11
- package/fesm2022/fundamental-ngx-core-avatar-group.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-avatar.mjs +206 -293
- package/fesm2022/fundamental-ngx-core-avatar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-breadcrumb.mjs +25 -12
- package/fesm2022/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-calendar.mjs +11 -14
- package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-card.mjs +13 -26
- package/fesm2022/fundamental-ngx-core-card.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-carousel.mjs +11 -11
- package/fesm2022/fundamental-ngx-core-carousel.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-combobox.mjs +33 -7
- package/fesm2022/fundamental-ngx-core-combobox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-dialog.mjs +13 -17
- package/fesm2022/fundamental-ngx-core-dialog.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-dynamic-page.mjs +32 -24
- package/fesm2022/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-fixed-card-layout.mjs +28 -30
- package/fesm2022/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-grid-list.mjs +12 -10
- package/fesm2022/fundamental-ngx-core-grid-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-illustrated-message.mjs +202 -100
- package/fesm2022/fundamental-ngx-core-illustrated-message.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-layout-panel.mjs +72 -231
- package/fesm2022/fundamental-ngx-core-layout-panel.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-list.mjs +12 -12
- package/fesm2022/fundamental-ngx-core-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-menu.mjs +28 -28
- package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-strip.mjs +85 -84
- package/fesm2022/fundamental-ngx-core-message-strip.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs +21 -24
- package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +19 -12
- package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-multi-input.mjs +46 -39
- package/fesm2022/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-nested-list.mjs +66 -103
- package/fesm2022/fundamental-ngx-core-nested-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-notification.mjs +10 -12
- package/fesm2022/fundamental-ngx-core-notification.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-marker.mjs +69 -59
- package/fesm2022/fundamental-ngx-core-object-marker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-status.mjs +92 -118
- package/fesm2022/fundamental-ngx-core-object-status.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-overflow-layout.mjs +27 -29
- package/fesm2022/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-pagination.mjs +17 -18
- package/fesm2022/fundamental-ngx-core-pagination.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-panel.mjs +7 -9
- package/fesm2022/fundamental-ngx-core-panel.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-popover.mjs +10 -15
- package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-product-switch.mjs +12 -15
- package/fesm2022/fundamental-ngx-core-product-switch.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs +18 -20
- package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-segmented-button.mjs +8 -11
- package/fesm2022/fundamental-ngx-core-segmented-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-select.mjs +6 -8
- package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-settings.mjs +9 -12
- package/fesm2022/fundamental-ngx-core-settings.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-shellbar.mjs +48 -34
- package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-slider.mjs +30 -31
- package/fesm2022/fundamental-ngx-core-slider.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-status-indicator.mjs +137 -131
- package/fesm2022/fundamental-ngx-core-status-indicator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tabs.mjs +21 -17
- package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tile.mjs +375 -631
- package/fesm2022/fundamental-ngx-core-tile.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-time.mjs +7 -9
- package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-token.mjs +11 -13
- package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-toolbar.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tree.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-tree.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-user-menu.mjs +63 -21
- package/fesm2022/fundamental-ngx-core-user-menu.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-wizard.mjs +1 -1
- package/fesm2022/fundamental-ngx-core-wizard.mjs.map +1 -1
- package/package.json +4 -4
- package/types/fundamental-ngx-core-avatar-group-legacy.d.ts +15 -17
- package/types/fundamental-ngx-core-avatar-group.d.ts +1 -1
- package/types/fundamental-ngx-core-avatar.d.ts +66 -86
- package/types/fundamental-ngx-core-breadcrumb.d.ts +13 -5
- package/types/fundamental-ngx-core-calendar.d.ts +3 -4
- package/types/fundamental-ngx-core-card.d.ts +4 -11
- package/types/fundamental-ngx-core-carousel.d.ts +3 -3
- package/types/fundamental-ngx-core-combobox.d.ts +8 -1
- package/types/fundamental-ngx-core-dialog.d.ts +2 -4
- package/types/fundamental-ngx-core-dynamic-page.d.ts +0 -6
- package/types/fundamental-ngx-core-fixed-card-layout.d.ts +7 -7
- package/types/fundamental-ngx-core-grid-list.d.ts +6 -4
- package/types/fundamental-ngx-core-illustrated-message.d.ts +165 -31
- package/types/fundamental-ngx-core-layout-panel.d.ts +19 -131
- package/types/fundamental-ngx-core-list.d.ts +8 -6
- package/types/fundamental-ngx-core-menu.d.ts +16 -13
- package/types/fundamental-ngx-core-message-strip.d.ts +5 -2
- package/types/fundamental-ngx-core-micro-process-flow.d.ts +8 -6
- package/types/fundamental-ngx-core-multi-combobox.d.ts +8 -5
- package/types/fundamental-ngx-core-multi-input.d.ts +24 -16
- package/types/fundamental-ngx-core-nested-list.d.ts +19 -33
- package/types/fundamental-ngx-core-notification.d.ts +2 -2
- package/types/fundamental-ngx-core-object-marker.d.ts +47 -27
- package/types/fundamental-ngx-core-object-status.d.ts +49 -48
- package/types/fundamental-ngx-core-overflow-layout.d.ts +10 -10
- package/types/fundamental-ngx-core-pagination.d.ts +7 -8
- package/types/fundamental-ngx-core-panel.d.ts +2 -4
- package/types/fundamental-ngx-core-popover.d.ts +7 -5
- package/types/fundamental-ngx-core-product-switch.d.ts +5 -4
- package/types/fundamental-ngx-core-resizable-card-layout.d.ts +10 -8
- package/types/fundamental-ngx-core-segmented-button.d.ts +5 -4
- package/types/fundamental-ngx-core-select.d.ts +4 -5
- package/types/fundamental-ngx-core-settings.d.ts +7 -10
- package/types/fundamental-ngx-core-shellbar.d.ts +23 -14
- package/types/fundamental-ngx-core-slider.d.ts +18 -13
- package/types/fundamental-ngx-core-status-indicator.d.ts +42 -58
- package/types/fundamental-ngx-core-tabs.d.ts +9 -7
- package/types/fundamental-ngx-core-tile.d.ts +114 -243
- package/types/fundamental-ngx-core-time.d.ts +5 -4
- package/types/fundamental-ngx-core-token.d.ts +5 -4
- package/types/fundamental-ngx-core-tree.d.ts +1 -1
- package/types/fundamental-ngx-core-user-menu.d.ts +25 -21
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { input, booleanAttribute, Directive, EventEmitter, signal, viewChild, inject, ElementRef, DestroyRef, NgZone, ChangeDetectorRef, HostListener, Output, ChangeDetectionStrategy, ViewEncapsulation, Component, contentChild, ContentChildren, output, contentChildren, Renderer2, effect, NgModule } from '@angular/core';
|
|
2
|
+
import { input, booleanAttribute, Directive, EventEmitter, signal, viewChild, inject, ElementRef, DestroyRef, NgZone, ChangeDetectorRef, computed, HostListener, Output, ChangeDetectionStrategy, ViewEncapsulation, Component, contentChild, ContentChildren, output, contentChildren, Renderer2, effect, NgModule } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/common';
|
|
4
4
|
import { CommonModule } from '@angular/common';
|
|
5
5
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
6
|
-
import { RtlService, InitialFocusDirective, KeyboardSupportService, TemplateDirective } from '@fundamental-ngx/cdk/utils';
|
|
6
|
+
import { RtlService, KeyUtil, InitialFocusDirective, KeyboardSupportService, TemplateDirective } from '@fundamental-ngx/cdk/utils';
|
|
7
7
|
import { BarComponent, BarLeftDirective, BarRightDirective, ButtonBarComponent, BarElementDirective, BarMiddleDirective } from '@fundamental-ngx/core/bar';
|
|
8
8
|
import { contentDensityObserverProviders, ContentDensityMode } from '@fundamental-ngx/core/content-density';
|
|
9
9
|
import { TitleComponent } from '@fundamental-ngx/core/title';
|
|
10
|
-
import { Subject, startWith, observeOn, asyncScheduler, take,
|
|
10
|
+
import { Subject, startWith, observeOn, asyncScheduler, take, merge, takeUntil } from 'rxjs';
|
|
11
|
+
import { LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';
|
|
11
12
|
import { PopoverComponent, PopoverBodyComponent, PopoverControlComponent } from '@fundamental-ngx/core/popover';
|
|
12
|
-
import { map as map$1 } from 'rxjs/operators';
|
|
13
13
|
import { DialogService, DialogComponent, DialogBodyComponent, DialogFooterComponent, DialogHeaderComponent } from '@fundamental-ngx/core/dialog';
|
|
14
14
|
|
|
15
15
|
class UserMenuUserNameDirective {
|
|
@@ -76,11 +76,52 @@ class UserMenuListItemComponent {
|
|
|
76
76
|
this._zone = inject(NgZone);
|
|
77
77
|
/** @hidden */
|
|
78
78
|
this._changeDetectionRef = inject(ChangeDetectorRef);
|
|
79
|
+
/** @hidden RTL service for direction detection */
|
|
80
|
+
this._rtlService = inject(RtlService, {
|
|
81
|
+
optional: true
|
|
82
|
+
});
|
|
83
|
+
/** @hidden Computed signal to track RTL state */
|
|
84
|
+
this._isRtl = computed(() => this._rtlService?.rtl() ?? false, ...(ngDevMode ? [{ debugName: "_isRtl" }] : []));
|
|
79
85
|
}
|
|
80
86
|
/** @hidden */
|
|
81
87
|
focusHandler() {
|
|
82
88
|
this.focused.next(this);
|
|
83
89
|
}
|
|
90
|
+
/** @hidden */
|
|
91
|
+
onKeyDown(event) {
|
|
92
|
+
if (!this.hasSubmenu() || this.mobile()) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
const popoverInstance = this.popover();
|
|
96
|
+
if (!popoverInstance) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const isRtl = this._isRtl();
|
|
100
|
+
// In RTL mode, LEFT arrow opens submenu and RIGHT arrow closes it
|
|
101
|
+
// In LTR mode, RIGHT arrow opens submenu and LEFT arrow closes it
|
|
102
|
+
const openKey = isRtl ? LEFT_ARROW : RIGHT_ARROW;
|
|
103
|
+
const closeKey = isRtl ? RIGHT_ARROW : LEFT_ARROW;
|
|
104
|
+
if (KeyUtil.isKeyCode(event, openKey) && !this.isOpen()) {
|
|
105
|
+
event.preventDefault();
|
|
106
|
+
popoverInstance.open();
|
|
107
|
+
}
|
|
108
|
+
else if (KeyUtil.isKeyCode(event, closeKey) && this.isOpen()) {
|
|
109
|
+
event.preventDefault();
|
|
110
|
+
popoverInstance.close();
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/** @hidden Handle keyboard in popover body */
|
|
114
|
+
onPopoverBodyKeyDown(event) {
|
|
115
|
+
const isRtl = this._isRtl();
|
|
116
|
+
const closeKey = isRtl ? RIGHT_ARROW : LEFT_ARROW;
|
|
117
|
+
if (KeyUtil.isKeyCode(event, closeKey) && this.isOpen()) {
|
|
118
|
+
event.preventDefault();
|
|
119
|
+
const popoverInstance = this.popover();
|
|
120
|
+
if (popoverInstance) {
|
|
121
|
+
popoverInstance.close();
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
84
125
|
/** Handles submenu selection in mobile mode */
|
|
85
126
|
onShowDetailsView() {
|
|
86
127
|
if (this.submenu() && this.mobile()) {
|
|
@@ -121,7 +162,7 @@ class UserMenuListItemComponent {
|
|
|
121
162
|
return this._zone.onStable.pipe(startWith(this._zone.isStable), observeOn(asyncScheduler), take(1), takeUntilDestroyed(this._destroyRef));
|
|
122
163
|
}
|
|
123
164
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: UserMenuListItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
124
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: UserMenuListItemComponent, isStandalone: true, selector: "[fd-user-menu-list-item]", inputs: { uniqueId: { classPropertyName: "uniqueId", publicName: "uniqueId", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: true, transformFunction: null }, textId: { classPropertyName: "textId", publicName: "textId", isSignal: true, isRequired: false, transformFunction: null }, hasSubmenu: { classPropertyName: "hasSubmenu", publicName: "hasSubmenu", isSignal: true, isRequired: false, transformFunction: null }, submenu: { classPropertyName: "submenu", publicName: "submenu", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { keyDown: "keyDown", isOpenChange: "isOpenChange", showSubmenu: "showSubmenu", updateTitle: "updateTitle" }, host: { attributes: { "role": "none" }, listeners: { "focusin": "focusHandler()" }, properties: { "attr.id": "uniqueId()", "attr.aria-labelledby": "textId()" }, classAttribute: "fd-menu__item" }, viewQueries: [{ propertyName: "popover", first: true, predicate: PopoverComponent, descendants: true, isSignal: true }], ngImport: i0, template: "@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 <span class=\"fd-menu__title\" [id]=\"textId()\">{{ text() }}</span>\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]=\"true\"\n [restoreFocusOnClose]=\"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 <span class=\"fd-menu__title\" [id]=\"textId()\">{{ text() }}</span>\n <span class=\"fd-menu__addon-after fd-menu__addon-after--submenu\"></span>\n </button>\n </fd-popover-control>\n <fd-popover-body>\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 <span class=\"fd-menu__title\" [id]=\"textId()\">{{ text() }}</span>\n </button>\n}\n", dependencies: [{ kind: "component", type: PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll"] }, { kind: "component", type: PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
165
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: UserMenuListItemComponent, isStandalone: true, selector: "[fd-user-menu-list-item]", inputs: { uniqueId: { classPropertyName: "uniqueId", publicName: "uniqueId", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: true, transformFunction: null }, textId: { classPropertyName: "textId", publicName: "textId", isSignal: true, isRequired: false, transformFunction: null }, hasSubmenu: { classPropertyName: "hasSubmenu", publicName: "hasSubmenu", isSignal: true, isRequired: false, transformFunction: null }, submenu: { classPropertyName: "submenu", publicName: "submenu", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { keyDown: "keyDown", isOpenChange: "isOpenChange", showSubmenu: "showSubmenu", updateTitle: "updateTitle" }, host: { attributes: { "role": "none" }, listeners: { "focusin": "focusHandler()", "keydown": "onKeyDown($event)" }, properties: { "attr.id": "uniqueId()", "attr.aria-labelledby": "textId()" }, classAttribute: "fd-menu__item" }, viewQueries: [{ propertyName: "popover", first: true, predicate: PopoverComponent, descendants: true, isSignal: true }], ngImport: i0, template: "@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 <span class=\"fd-menu__title\" [id]=\"textId()\">{{ text() }}</span>\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]=\"true\"\n [restoreFocusOnClose]=\"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 <span class=\"fd-menu__title\" [id]=\"textId()\">{{ text() }}</span>\n <span class=\"fd-menu__addon-after fd-menu__addon-after--submenu\"></span>\n </button>\n </fd-popover-control>\n <fd-popover-body (keydown)=\"onPopoverBodyKeyDown($event)\">\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 <span class=\"fd-menu__title\" [id]=\"textId()\">{{ text() }}</span>\n </button>\n}\n", dependencies: [{ kind: "component", type: PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll"] }, { kind: "component", type: PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
125
166
|
}
|
|
126
167
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: UserMenuListItemComponent, decorators: [{
|
|
127
168
|
type: Component,
|
|
@@ -130,7 +171,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
|
|
|
130
171
|
role: 'none',
|
|
131
172
|
'[attr.id]': 'uniqueId()',
|
|
132
173
|
'[attr.aria-labelledby]': 'textId()'
|
|
133
|
-
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [PopoverBodyComponent, PopoverComponent, PopoverControlComponent, CommonModule], template: "@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 <span class=\"fd-menu__title\" [id]=\"textId()\">{{ text() }}</span>\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]=\"true\"\n [restoreFocusOnClose]=\"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 <span class=\"fd-menu__title\" [id]=\"textId()\">{{ text() }}</span>\n <span class=\"fd-menu__addon-after fd-menu__addon-after--submenu\"></span>\n </button>\n </fd-popover-control>\n <fd-popover-body>\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 <span class=\"fd-menu__title\" [id]=\"textId()\">{{ text() }}</span>\n </button>\n}\n" }]
|
|
174
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [PopoverBodyComponent, PopoverComponent, PopoverControlComponent, CommonModule], template: "@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 <span class=\"fd-menu__title\" [id]=\"textId()\">{{ text() }}</span>\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]=\"true\"\n [restoreFocusOnClose]=\"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 <span class=\"fd-menu__title\" [id]=\"textId()\">{{ text() }}</span>\n <span class=\"fd-menu__addon-after fd-menu__addon-after--submenu\"></span>\n </button>\n </fd-popover-control>\n <fd-popover-body (keydown)=\"onPopoverBodyKeyDown($event)\">\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 <span class=\"fd-menu__title\" [id]=\"textId()\">{{ text() }}</span>\n </button>\n}\n" }]
|
|
134
175
|
}], propDecorators: { keyDown: [{
|
|
135
176
|
type: Output
|
|
136
177
|
}], isOpenChange: [{
|
|
@@ -142,6 +183,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
|
|
|
142
183
|
}], uniqueId: [{ type: i0.Input, args: [{ isSignal: true, alias: "uniqueId", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: true }] }], textId: [{ type: i0.Input, args: [{ isSignal: true, alias: "textId", required: false }] }], hasSubmenu: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasSubmenu", required: false }] }], submenu: [{ type: i0.Input, args: [{ isSignal: true, alias: "submenu", required: false }] }], selected: [{ type: i0.Input, args: [{ isSignal: true, alias: "selected", required: false }] }], popover: [{ type: i0.ViewChild, args: [i0.forwardRef(() => PopoverComponent), { isSignal: true }] }], focusHandler: [{
|
|
143
184
|
type: HostListener,
|
|
144
185
|
args: ['focusin']
|
|
186
|
+
}], onKeyDown: [{
|
|
187
|
+
type: HostListener,
|
|
188
|
+
args: ['keydown', ['$event']]
|
|
145
189
|
}] } });
|
|
146
190
|
|
|
147
191
|
class UserMenuBodyComponent {
|
|
@@ -174,10 +218,14 @@ class UserMenuBodyComponent {
|
|
|
174
218
|
* Needed in mobile mode
|
|
175
219
|
*/
|
|
176
220
|
this.bodyHeader = viewChild('bodyHeader', ...(ngDevMode ? [{ debugName: "bodyHeader" }] : []));
|
|
221
|
+
/**
|
|
222
|
+
* Handle the navigation icon (arrow) of the Back button in RTL mode
|
|
223
|
+
*/
|
|
224
|
+
this.navigationArrow = computed(() => this._rtlService?.rtl() ? 'navigation-right-arrow' : 'navigation-left-arrow', ...(ngDevMode ? [{ debugName: "navigationArrow" }] : []));
|
|
177
225
|
/** @hidden */
|
|
178
226
|
this.userNameEl = contentChild(UserMenuUserNameDirective, { ...(ngDevMode ? { debugName: "userNameEl" } : {}), read: ElementRef });
|
|
179
227
|
/** @hidden */
|
|
180
|
-
this._rtlService = inject(RtlService);
|
|
228
|
+
this._rtlService = inject(RtlService, { optional: true });
|
|
181
229
|
/** @hidden */
|
|
182
230
|
this._refresh$ = new Subject();
|
|
183
231
|
/** @hidden */
|
|
@@ -188,10 +236,6 @@ class UserMenuBodyComponent {
|
|
|
188
236
|
event.stopPropagation();
|
|
189
237
|
}
|
|
190
238
|
/** @hidden */
|
|
191
|
-
ngOnInit() {
|
|
192
|
-
this.navigationArrow$ = this._rtlService.rtl.pipe(map((isRtl) => (isRtl ? 'navigation-right-arrow' : 'navigation-left-arrow')));
|
|
193
|
-
}
|
|
194
|
-
/** @hidden */
|
|
195
239
|
ngAfterViewInit() {
|
|
196
240
|
this._listItems.changes
|
|
197
241
|
.pipe(startWith(this._listItems), takeUntilDestroyed(this._destroyRef))
|
|
@@ -260,7 +304,7 @@ class UserMenuBodyComponent {
|
|
|
260
304
|
this.clearSubmenu();
|
|
261
305
|
}
|
|
262
306
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: UserMenuBodyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
263
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: UserMenuBodyComponent, isStandalone: true, selector: "fd-user-menu-body", host: { listeners: { "click": "onClick($event)" }, classAttribute: "fd-user-menu__body" }, providers: [contentDensityObserverProviders()], queries: [{ propertyName: "userNameEl", first: true, predicate: UserMenuUserNameDirective, descendants: true, read: ElementRef, isSignal: true }, { propertyName: "_listItems", predicate: UserMenuListItemComponent, descendants: true }], viewQueries: [{ propertyName: "bodyHeader", first: true, predicate: ["bodyHeader"], descendants: true, isSignal: true }], ngImport: i0, template: "@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
|
|
307
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: UserMenuBodyComponent, isStandalone: true, selector: "fd-user-menu-body", host: { listeners: { "click": "onClick($event)" }, classAttribute: "fd-user-menu__body" }, providers: [contentDensityObserverProviders()], queries: [{ propertyName: "userNameEl", first: true, predicate: UserMenuUserNameDirective, descendants: true, read: ElementRef, isSignal: true }, { propertyName: "_listItems", predicate: UserMenuListItemComponent, descendants: true }], viewQueries: [{ propertyName: "bodyHeader", first: true, predicate: ["bodyHeader"], descendants: true, isSignal: true }], ngImport: i0, template: "@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", dependencies: [{ kind: "component", type: BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "clear", "size", "role"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "directive", type: BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth"] }, { kind: "directive", type: InitialFocusDirective, selector: "[fdkInitialFocus]", inputs: ["fdkInitialFocus", "enabled", "focusLastElement"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
264
308
|
}
|
|
265
309
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: UserMenuBodyComponent, decorators: [{
|
|
266
310
|
type: Component,
|
|
@@ -275,7 +319,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
|
|
|
275
319
|
ButtonBarComponent,
|
|
276
320
|
BarElementDirective,
|
|
277
321
|
InitialFocusDirective
|
|
278
|
-
], providers: [contentDensityObserverProviders()], template: "@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
|
|
322
|
+
], providers: [contentDensityObserverProviders()], template: "@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" }]
|
|
279
323
|
}], propDecorators: { _listItems: [{
|
|
280
324
|
type: ContentChildren,
|
|
281
325
|
args: [UserMenuListItemComponent, { descendants: true }]
|
|
@@ -395,7 +439,7 @@ class UserMenuListComponent {
|
|
|
395
439
|
});
|
|
396
440
|
}
|
|
397
441
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: UserMenuListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
398
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.0", type: UserMenuListComponent, isStandalone: true, selector: "fd-user-menu-list", host: { listeners: { "keydown": "keyDownHandler($event)" } }, queries: [{ propertyName: "_listItems", predicate: UserMenuListItemComponent
|
|
442
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.0", type: UserMenuListComponent, isStandalone: true, selector: "fd-user-menu-list", host: { listeners: { "keydown": "keyDownHandler($event)" } }, queries: [{ propertyName: "_listItems", predicate: UserMenuListItemComponent }], ngImport: i0, template: `
|
|
399
443
|
<nav class="fd-menu fd-menu--icons fd-user-menu__menu">
|
|
400
444
|
<ul class="fd-menu__list fd-user-menu__menu-list" role="menu">
|
|
401
445
|
<ng-content />
|
|
@@ -419,7 +463,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
|
|
|
419
463
|
}]
|
|
420
464
|
}], propDecorators: { _listItems: [{
|
|
421
465
|
type: ContentChildren,
|
|
422
|
-
args: [UserMenuListItemComponent, { descendants:
|
|
466
|
+
args: [UserMenuListItemComponent, { descendants: false }]
|
|
423
467
|
}], keyDownHandler: [{
|
|
424
468
|
type: HostListener,
|
|
425
469
|
args: ['keydown', ['$event']]
|
|
@@ -469,7 +513,7 @@ class UserMenuSublistComponent {
|
|
|
469
513
|
});
|
|
470
514
|
}
|
|
471
515
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: UserMenuSublistComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
472
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.0", type: UserMenuSublistComponent, isStandalone: true, selector: "[fd-user-menu-sublist]", inputs: { hasIcons: { classPropertyName: "hasIcons", publicName: "hasIcons", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "onClick($event)", "keydown": "keyDownHandler($event)" }, properties: { "class.fd-menu--icons": "hasIcons()" }, classAttribute: "fd-menu fd-user-menu__menu" }, queries: [{ propertyName: "_listItems", predicate: UserMenuListItemComponent, descendants: true }], ngImport: i0, template: `<ul class="fd-menu__list fd-user-menu__menu-list" role="menu">
|
|
516
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.0", type: UserMenuSublistComponent, isStandalone: true, selector: "[fd-user-menu-sublist]", inputs: { hasIcons: { classPropertyName: "hasIcons", publicName: "hasIcons", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "onClick($event)", "keydown": "keyDownHandler($event)" }, properties: { "class.fd-menu--icons": "hasIcons()" }, classAttribute: "fd-menu fd-user-menu__menu" }, providers: [KeyboardSupportService], queries: [{ propertyName: "_listItems", predicate: UserMenuListItemComponent, descendants: true }], ngImport: i0, template: `<ul class="fd-menu__list fd-user-menu__menu-list" role="menu">
|
|
473
517
|
<ng-content />
|
|
474
518
|
</ul> `, isInline: true, styles: ["[fd-user-menu-sublist]{margin-block-start:0!important}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
475
519
|
}
|
|
@@ -480,7 +524,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
|
|
|
480
524
|
</ul> `, host: {
|
|
481
525
|
class: 'fd-menu fd-user-menu__menu',
|
|
482
526
|
'[class.fd-menu--icons]': 'hasIcons()'
|
|
483
|
-
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: ["[fd-user-menu-sublist]{margin-block-start:0!important}\n"] }]
|
|
527
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [KeyboardSupportService], styles: ["[fd-user-menu-sublist]{margin-block-start:0!important}\n"] }]
|
|
484
528
|
}], propDecorators: { _listItems: [{
|
|
485
529
|
type: ContentChildren,
|
|
486
530
|
args: [UserMenuListItemComponent, { descendants: true }]
|
|
@@ -537,6 +581,8 @@ class UserMenuComponent {
|
|
|
537
581
|
/** @hidden */
|
|
538
582
|
this.userMenuBody = contentChild(UserMenuBodyComponent, { ...(ngDevMode ? { debugName: "userMenuBody" } : {}), descendants: true });
|
|
539
583
|
/** @hidden */
|
|
584
|
+
this.navigationArrow = computed(() => this._rtlService.rtl() ? 'navigation-right-arrow' : 'navigation-left-arrow', ...(ngDevMode ? [{ debugName: "navigationArrow" }] : []));
|
|
585
|
+
/** @hidden */
|
|
540
586
|
this._listItems = contentChildren(UserMenuListItemComponent, { ...(ngDevMode ? { debugName: "_listItems" } : {}), descendants: true });
|
|
541
587
|
/** @hidden */
|
|
542
588
|
this._rtlService = inject(RtlService);
|
|
@@ -553,10 +599,6 @@ class UserMenuComponent {
|
|
|
553
599
|
});
|
|
554
600
|
}
|
|
555
601
|
/** @hidden */
|
|
556
|
-
ngOnInit() {
|
|
557
|
-
this.navigationArrow$ = this._rtlService.rtl.pipe(map$1((isRtl) => (isRtl ? 'navigation-right-arrow' : 'navigation-left-arrow')));
|
|
558
|
-
}
|
|
559
|
-
/** @hidden */
|
|
560
602
|
ngAfterViewInit() {
|
|
561
603
|
const isMobile = this.mobile();
|
|
562
604
|
this._listItems()?.forEach((item) => item.mobile.set(isMobile));
|