@fundamental-ngx/btp 0.46.0-rc.100
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/README.md +7 -0
- package/esm2022/fundamental-ngx-btp.mjs +5 -0
- package/esm2022/index.mjs +3 -0
- package/esm2022/navigation/directives/navigation-home.directive.mjs +19 -0
- package/esm2022/navigation/directives/navigation-list-spacer.directive.mjs +24 -0
- package/esm2022/navigation/fundamental-ngx-btp-navigation.mjs +5 -0
- package/esm2022/navigation/index.mjs +11 -0
- package/esm2022/navigation/navigation-component.token.mjs +22 -0
- package/esm2022/navigation/navigation-content-end.component.mjs +62 -0
- package/esm2022/navigation/navigation-content-start.component.mjs +207 -0
- package/esm2022/navigation/navigation-content.token.mjs +3 -0
- package/esm2022/navigation/navigation-link.component.mjs +188 -0
- package/esm2022/navigation/navigation-list/navigation-list-item.component.mjs +423 -0
- package/esm2022/navigation/navigation-list/navigation-list-overflow-item.component.mjs +57 -0
- package/esm2022/navigation/navigation-list/navigation-list.component.mjs +125 -0
- package/esm2022/navigation/navigation-list-component.token.mjs +3 -0
- package/esm2022/navigation/navigation-list-item-component.token.mjs +90 -0
- package/esm2022/navigation/navigation.component.mjs +251 -0
- package/esm2022/navigation/navigation.service.mjs +14 -0
- package/esm2022/navigation/navigation.types.mjs +2 -0
- package/esm2022/navigation-menu/fundamental-ngx-btp-navigation-menu.mjs +5 -0
- package/esm2022/navigation-menu/index.mjs +6 -0
- package/esm2022/navigation-menu/lib/navigation-menu-item.component.mjs +48 -0
- package/esm2022/navigation-menu/lib/navigation-menu-popover-control.directive.mjs +19 -0
- package/esm2022/navigation-menu/lib/navigation-menu-popover.component.mjs +38 -0
- package/esm2022/navigation-menu/lib/navigation-menu.component.mjs +13 -0
- package/esm2022/navigation-menu/lib/navigation-menu.module.mjs +17 -0
- package/esm2022/search-field/fundamental-ngx-btp-search-field.mjs +5 -0
- package/esm2022/search-field/index.mjs +2 -0
- package/esm2022/search-field/search-field.component.mjs +62 -0
- package/esm2022/shared/fundamental-ngx-btp-shared.mjs +5 -0
- package/esm2022/shared/index.mjs +2 -0
- package/esm2022/tool-header/components/tool-header/tool-header.component.mjs +227 -0
- package/esm2022/tool-header/components/tool-header-product-switch.component.mjs +102 -0
- package/esm2022/tool-header/directives/tool-header-action.directive.mjs +43 -0
- package/esm2022/tool-header/directives/tool-header-actions.directive.mjs +63 -0
- package/esm2022/tool-header/directives/tool-header-auto-mode.directive.mjs +114 -0
- package/esm2022/tool-header/directives/tool-header-button.directive.mjs +51 -0
- package/esm2022/tool-header/directives/tool-header-element.directive.mjs +17 -0
- package/esm2022/tool-header/directives/tool-header-group.directive.mjs +26 -0
- package/esm2022/tool-header/directives/tool-header-logo.directive.mjs +19 -0
- package/esm2022/tool-header/directives/tool-header-user.directive.mjs +14 -0
- package/esm2022/tool-header/fundamental-ngx-btp-tool-header.mjs +5 -0
- package/esm2022/tool-header/index.mjs +10 -0
- package/esm2022/tool-header/tool-header-action-button.type.mjs +2 -0
- package/esm2022/tool-header/tool-header-component.class.mjs +74 -0
- package/esm2022/tool-header/tool-header-state.type.mjs +2 -0
- package/esm2022/tool-layout/directives/tool-layout-container.directive.mjs +17 -0
- package/esm2022/tool-layout/directives/tool-layout-content-container.directive.mjs +50 -0
- package/esm2022/tool-layout/directives/tool-layout-header-container.directive.mjs +17 -0
- package/esm2022/tool-layout/directives/tool-layout-navigation-container.directive.mjs +37 -0
- package/esm2022/tool-layout/fundamental-ngx-btp-tool-layout.mjs +5 -0
- package/esm2022/tool-layout/index.mjs +7 -0
- package/esm2022/tool-layout/tool-layout.component.mjs +43 -0
- package/esm2022/tool-layout/tool-layout.module.mjs +40 -0
- package/fesm2022/fundamental-ngx-btp-navigation-menu.mjs +130 -0
- package/fesm2022/fundamental-ngx-btp-navigation-menu.mjs.map +1 -0
- package/fesm2022/fundamental-ngx-btp-navigation.mjs +1409 -0
- package/fesm2022/fundamental-ngx-btp-navigation.mjs.map +1 -0
- package/fesm2022/fundamental-ngx-btp-search-field.mjs +69 -0
- package/fesm2022/fundamental-ngx-btp-search-field.mjs.map +1 -0
- package/fesm2022/fundamental-ngx-btp-shared.mjs +4 -0
- package/fesm2022/fundamental-ngx-btp-shared.mjs.map +1 -0
- package/fesm2022/fundamental-ngx-btp-tool-header.mjs +717 -0
- package/fesm2022/fundamental-ngx-btp-tool-header.mjs.map +1 -0
- package/fesm2022/fundamental-ngx-btp-tool-layout.mjs +194 -0
- package/fesm2022/fundamental-ngx-btp-tool-layout.mjs.map +1 -0
- package/fesm2022/fundamental-ngx-btp.mjs +7 -0
- package/fesm2022/fundamental-ngx-btp.mjs.map +1 -0
- package/fundamental-ngx-btp-v0.46.0-rc.100.tgz +0 -0
- package/index.d.ts +2 -0
- package/navigation/README.md +3 -0
- package/navigation/directives/navigation-home.directive.d.ts +10 -0
- package/navigation/directives/navigation-list-spacer.directive.d.ts +8 -0
- package/navigation/index.d.ts +10 -0
- package/navigation/navigation-component.token.d.ts +34 -0
- package/navigation/navigation-content-end.component.d.ts +23 -0
- package/navigation/navigation-content-start.component.d.ts +54 -0
- package/navigation/navigation-content.token.d.ts +11 -0
- package/navigation/navigation-link.component.d.ts +49 -0
- package/navigation/navigation-list/navigation-list-item.component.d.ts +142 -0
- package/navigation/navigation-list/navigation-list-overflow-item.component.d.ts +16 -0
- package/navigation/navigation-list/navigation-list.component.d.ts +60 -0
- package/navigation/navigation-list-component.token.d.ts +17 -0
- package/navigation/navigation-list-item-component.token.d.ts +68 -0
- package/navigation/navigation.component.d.ts +82 -0
- package/navigation/navigation.service.d.ts +8 -0
- package/navigation/navigation.types.d.ts +2 -0
- package/navigation-menu/README.md +3 -0
- package/navigation-menu/index.d.ts +5 -0
- package/navigation-menu/lib/navigation-menu-item.component.d.ts +13 -0
- package/navigation-menu/lib/navigation-menu-popover-control.directive.d.ts +10 -0
- package/navigation-menu/lib/navigation-menu-popover.component.d.ts +11 -0
- package/navigation-menu/lib/navigation-menu.component.d.ts +5 -0
- package/navigation-menu/lib/navigation-menu.module.d.ts +8 -0
- package/package.json +63 -0
- package/search-field/README.md +3 -0
- package/search-field/index.d.ts +1 -0
- package/search-field/search-field.component.d.ts +34 -0
- package/shared/README.md +3 -0
- package/shared/index.d.ts +1 -0
- package/tool-header/README.md +3 -0
- package/tool-header/components/tool-header/tool-header.component.d.ts +91 -0
- package/tool-header/components/tool-header-product-switch.component.d.ts +11 -0
- package/tool-header/directives/tool-header-action.directive.d.ts +35 -0
- package/tool-header/directives/tool-header-actions.directive.d.ts +27 -0
- package/tool-header/directives/tool-header-auto-mode.directive.d.ts +68 -0
- package/tool-header/directives/tool-header-button.directive.d.ts +22 -0
- package/tool-header/directives/tool-header-element.directive.d.ts +5 -0
- package/tool-header/directives/tool-header-group.directive.d.ts +12 -0
- package/tool-header/directives/tool-header-logo.directive.d.ts +5 -0
- package/tool-header/directives/tool-header-user.directive.d.ts +5 -0
- package/tool-header/index.d.ts +9 -0
- package/tool-header/tool-header-action-button.type.d.ts +10 -0
- package/tool-header/tool-header-component.class.d.ts +20 -0
- package/tool-header/tool-header-state.type.d.ts +14 -0
- package/tool-layout/README.md +3 -0
- package/tool-layout/directives/tool-layout-container.directive.d.ts +5 -0
- package/tool-layout/directives/tool-layout-content-container.directive.d.ts +29 -0
- package/tool-layout/directives/tool-layout-header-container.directive.d.ts +5 -0
- package/tool-layout/directives/tool-layout-navigation-container.directive.d.ts +13 -0
- package/tool-layout/index.d.ts +6 -0
- package/tool-layout/tool-layout.component.d.ts +27 -0
- package/tool-layout/tool-layout.module.d.ts +11 -0
|
@@ -0,0 +1,1409 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Directive, computed, signal, inject, DestroyRef, effect, ElementRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ViewChild, HostBinding, HostListener, Injector, ChangeDetectorRef, TemplateRef, ContentChild, ContentChildren, Injectable, forwardRef } from '@angular/core';
|
|
3
|
+
import { __decorate, __metadata } from 'tslib';
|
|
4
|
+
import { FocusKeyManager } from '@angular/cdk/a11y';
|
|
5
|
+
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
6
|
+
import { DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';
|
|
7
|
+
import { NgIf, NgTemplateOutlet, AsyncPipe, NgForOf } from '@angular/common';
|
|
8
|
+
import { toSignal, takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
|
|
9
|
+
import { RtlService, applyCssClass, TabbableElementService, KeyUtil, resizeObservable } from '@fundamental-ngx/cdk/utils';
|
|
10
|
+
import { of, filter, startWith, switchMap, merge, debounceTime, Subject, tap, observeOn, asyncScheduler, distinctUntilChanged } from 'rxjs';
|
|
11
|
+
import * as i1 from '@angular/router';
|
|
12
|
+
import { RouterLink, RouterLinkActive } from '@angular/router';
|
|
13
|
+
import { IconComponent } from '@fundamental-ngx/core/icon';
|
|
14
|
+
import { BasePopoverClass, PopoverService, PopoverComponent, PopoverControlComponent } from '@fundamental-ngx/core/popover';
|
|
15
|
+
import * as i1$1 from '@angular/cdk/portal';
|
|
16
|
+
import { DomPortal, PortalModule } from '@angular/cdk/portal';
|
|
17
|
+
import { ButtonComponent } from '@fundamental-ngx/core/button';
|
|
18
|
+
import * as i1$2 from '@fundamental-ngx/core/scrollbar';
|
|
19
|
+
import { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';
|
|
20
|
+
|
|
21
|
+
class NavigationHomeDirective {
|
|
22
|
+
/** @hidden */
|
|
23
|
+
constructor(templateRef, _viewContainerRef) {
|
|
24
|
+
this.templateRef = templateRef;
|
|
25
|
+
this._viewContainerRef = _viewContainerRef;
|
|
26
|
+
}
|
|
27
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: NavigationHomeDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
28
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.7", type: NavigationHomeDirective, isStandalone: true, selector: "[fdbNavigationHome]", ngImport: i0 }); }
|
|
29
|
+
}
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: NavigationHomeDirective, decorators: [{
|
|
31
|
+
type: Directive,
|
|
32
|
+
args: [{
|
|
33
|
+
selector: '[fdbNavigationHome]',
|
|
34
|
+
standalone: true
|
|
35
|
+
}]
|
|
36
|
+
}], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; } });
|
|
37
|
+
|
|
38
|
+
class FdbNavigationComponent {
|
|
39
|
+
constructor() {
|
|
40
|
+
/** @hidden */
|
|
41
|
+
this.isSnapped = computed(() => this.state() === 'snapped' && !this.isPhone());
|
|
42
|
+
/** @hidden */
|
|
43
|
+
this.isPopup = computed(() => this.state() === 'popup' || this.isPhone());
|
|
44
|
+
/** @hidden */
|
|
45
|
+
this.isExpanded = computed(() => this.state() === 'expanded' && !this.isPhone());
|
|
46
|
+
/** @hidden */
|
|
47
|
+
this.isHorizontal = computed(() => this.type() === 'horizontal');
|
|
48
|
+
/** @hidden */
|
|
49
|
+
this.isVertical = computed(() => this.type() === 'vertical');
|
|
50
|
+
/** @hidden */
|
|
51
|
+
this.isDesktop = computed(() => this.mode() === '');
|
|
52
|
+
/** @hidden */
|
|
53
|
+
this.isTablet = computed(() => this.mode() === 'tablet');
|
|
54
|
+
/** @hidden */
|
|
55
|
+
this.isPhone = computed(() => this.mode() === 'phone');
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
class NavigationContentComponent {
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
class FdbNavigationListComponent {
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
class FdbNavigationListItemComponent extends BasePopoverClass {
|
|
66
|
+
/** @hidden */
|
|
67
|
+
constructor() {
|
|
68
|
+
super();
|
|
69
|
+
/** @hidden */
|
|
70
|
+
this._hidden = signal(false);
|
|
71
|
+
/** @hidden */
|
|
72
|
+
this.hiddenItems = signal([]);
|
|
73
|
+
/** @hidden */
|
|
74
|
+
this.navigationComponent = inject(FdbNavigationComponent);
|
|
75
|
+
/** @hidden */
|
|
76
|
+
this.hasPortalChildren = signal(false);
|
|
77
|
+
/** @hidden */
|
|
78
|
+
this.childFocused = signal(false);
|
|
79
|
+
/** @hidden */
|
|
80
|
+
this.parentNavigationListComponent = inject(FdbNavigationListComponent);
|
|
81
|
+
/** @hidden */
|
|
82
|
+
this._rtl = inject(RtlService, { optional: true });
|
|
83
|
+
/** @hidden */
|
|
84
|
+
this._isRtl = toSignal(this._rtl?.rtl || of(false), { requireSync: true });
|
|
85
|
+
/** @hidden */
|
|
86
|
+
this._popoverService = inject(PopoverService);
|
|
87
|
+
/** @hidden */
|
|
88
|
+
this._destroyRef = inject(DestroyRef);
|
|
89
|
+
/** @hidden */
|
|
90
|
+
this._listenToSnappedExpandedState = true;
|
|
91
|
+
this._rtl?.rtl.pipe(takeUntilDestroyed()).subscribe((isRtl) => {
|
|
92
|
+
this.placement = isRtl ? 'left-start' : 'right-start';
|
|
93
|
+
this._popoverService.refreshConfiguration(this);
|
|
94
|
+
});
|
|
95
|
+
effect(() => {
|
|
96
|
+
this.isOpen = this.expanded();
|
|
97
|
+
});
|
|
98
|
+
effect(() => {
|
|
99
|
+
const hasChildren = this.childNavigationListComponent() || this.hasPortalChildren();
|
|
100
|
+
const isSnapped = this.navigationComponent.isSnapped();
|
|
101
|
+
const shouldDisable = !isSnapped || !hasChildren || this._hidden();
|
|
102
|
+
this._listenToSnappedExpandedState = true;
|
|
103
|
+
this._popoverService.setIgnoreTriggers(shouldDisable);
|
|
104
|
+
this._popoverService.disabled = shouldDisable;
|
|
105
|
+
});
|
|
106
|
+
effect(() => {
|
|
107
|
+
if (!this._listenToSnappedExpandedState && !this._hidden()) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
if (this.navigationComponent.isSnapped() && this.expanded() && this.normalizedLevel() > 1) {
|
|
111
|
+
this.expanded.set(false);
|
|
112
|
+
this.isOpen = false;
|
|
113
|
+
this._popoverService.refreshConfiguration(this);
|
|
114
|
+
this._listenToSnappedExpandedState = false;
|
|
115
|
+
}
|
|
116
|
+
}, {
|
|
117
|
+
allowSignalWrites: true
|
|
118
|
+
});
|
|
119
|
+
effect(() => {
|
|
120
|
+
const activeRouterLink = this.routerLinkActive();
|
|
121
|
+
activeRouterLink?.isActiveChange.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((isActive) => {
|
|
122
|
+
this.parentListItemComponent?.setSnappedActiveState(isActive);
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
this.isOpenChange
|
|
126
|
+
.pipe(filter(() => this.navigationComponent.isSnapped()), takeUntilDestroyed(this._destroyRef))
|
|
127
|
+
.subscribe((isOpen) => {
|
|
128
|
+
this.isOpen = isOpen;
|
|
129
|
+
this.expanded.set(isOpen);
|
|
130
|
+
if (!this.isOpen) {
|
|
131
|
+
// this.focus();
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
/** @hidden */
|
|
136
|
+
ngOnDestroy() {
|
|
137
|
+
this._popoverService.close();
|
|
138
|
+
this._popoverService.onDestroy();
|
|
139
|
+
}
|
|
140
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: FdbNavigationListItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
141
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.7", type: FdbNavigationListItemComponent, usesInheritance: true, ngImport: i0 }); }
|
|
142
|
+
}
|
|
143
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: FdbNavigationListItemComponent, decorators: [{
|
|
144
|
+
type: Directive
|
|
145
|
+
}], ctorParameters: function () { return []; } });
|
|
146
|
+
|
|
147
|
+
class NavigationLinkComponent {
|
|
148
|
+
/** @hidden */
|
|
149
|
+
constructor() {
|
|
150
|
+
/** Whether the link is for the external resource. */
|
|
151
|
+
this.external = false;
|
|
152
|
+
/** @hidden */
|
|
153
|
+
this._tabindex = 0;
|
|
154
|
+
/** @hidden */
|
|
155
|
+
this.elementRef = inject(ElementRef);
|
|
156
|
+
/** @hidden */
|
|
157
|
+
this._routerLink = inject(RouterLink, {
|
|
158
|
+
optional: true,
|
|
159
|
+
self: true
|
|
160
|
+
});
|
|
161
|
+
/** @hidden */
|
|
162
|
+
this._routerLinkActive = inject(RouterLinkActive, { optional: true });
|
|
163
|
+
/**
|
|
164
|
+
* If user applies RouterLink, we need to check if the link is active
|
|
165
|
+
* @hidden
|
|
166
|
+
**/
|
|
167
|
+
this.isActive = toSignal(inject(RouterLinkActive).isActiveChange);
|
|
168
|
+
/** @hidden */
|
|
169
|
+
this.navigationListItemComponent = inject(FdbNavigationListItemComponent);
|
|
170
|
+
/** @hidden */
|
|
171
|
+
this._navigationComponent = inject(FdbNavigationComponent);
|
|
172
|
+
this.navigationListItemComponent.linkComponent = this;
|
|
173
|
+
this.navigationListItemComponent.routerLink.set(this._routerLink);
|
|
174
|
+
this.navigationListItemComponent.routerLinkActive.set(this._routerLinkActive);
|
|
175
|
+
}
|
|
176
|
+
/** @hidden */
|
|
177
|
+
buildComponentCssClass() {
|
|
178
|
+
return [this.class || '', 'fd-navigation__link'];
|
|
179
|
+
}
|
|
180
|
+
/** @hidden */
|
|
181
|
+
_onClick() {
|
|
182
|
+
if (this.navigationListItemComponent.childNavigationListComponent()) {
|
|
183
|
+
this.navigationListItemComponent.toggle();
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
/** @hidden */
|
|
187
|
+
_focusHandler() {
|
|
188
|
+
this._navigationComponent.setActiveItem(this.navigationListItemComponent);
|
|
189
|
+
}
|
|
190
|
+
/** @hidden */
|
|
191
|
+
ngOnChanges() {
|
|
192
|
+
this.buildComponentCssClass();
|
|
193
|
+
}
|
|
194
|
+
/** @hidden */
|
|
195
|
+
ngOnInit() {
|
|
196
|
+
this.buildComponentCssClass();
|
|
197
|
+
}
|
|
198
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: NavigationLinkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
199
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: NavigationLinkComponent, isStandalone: true, selector: "a[fdb-navigation-link]", inputs: { class: "class", glyph: "glyph", label: "label", external: "external" }, host: { attributes: { "role": "link" }, listeners: { "click": "_onClick()", "focus": "_focusHandler()" }, properties: { "attr.tabindex": "this._tabindex" } }, viewQueries: [{ propertyName: "textRenderer", first: true, predicate: ["textRenderer"], descendants: true }], usesOnChanges: true, hostDirectives: [{ directive: i1.RouterLinkActive }], ngImport: i0, template: `
|
|
200
|
+
<ng-container *ngIf="glyph">
|
|
201
|
+
<fd-icon
|
|
202
|
+
[glyph]="glyph"
|
|
203
|
+
class="fd-navigation__icon"
|
|
204
|
+
[attr.role]="'presentation'"
|
|
205
|
+
[ariaHidden]="true"
|
|
206
|
+
></fd-icon>
|
|
207
|
+
</ng-container>
|
|
208
|
+
<ng-template #textRenderer>
|
|
209
|
+
<span class="fd-navigation__text">{{ label }}</span>
|
|
210
|
+
<span
|
|
211
|
+
class="fd-navigation__external-link-indicator"
|
|
212
|
+
role="presentation"
|
|
213
|
+
aria-hidden="true"
|
|
214
|
+
aria-label="external link indicator"
|
|
215
|
+
*ngIf="external"
|
|
216
|
+
></span>
|
|
217
|
+
</ng-template>
|
|
218
|
+
<ng-container *ngTemplateOutlet="textRenderer" />
|
|
219
|
+
<span
|
|
220
|
+
class="fd-navigation__selection-indicator"
|
|
221
|
+
role="presentation"
|
|
222
|
+
aria-hidden="true"
|
|
223
|
+
aria-label="selection indicator"
|
|
224
|
+
>
|
|
225
|
+
</span>
|
|
226
|
+
<span
|
|
227
|
+
*ngIf="
|
|
228
|
+
navigationListItemComponent?.childNavigationListComponent() &&
|
|
229
|
+
navigationListItemComponent?.normalizedLevel() !== 3 &&
|
|
230
|
+
!_routerLink
|
|
231
|
+
"
|
|
232
|
+
class="fd-navigation__has-children-indicator"
|
|
233
|
+
role="presentation"
|
|
234
|
+
aria-hidden="true"
|
|
235
|
+
aria-label="has children indicator, expanded"
|
|
236
|
+
>
|
|
237
|
+
</span>
|
|
238
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel", "ariaHidden"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
239
|
+
}
|
|
240
|
+
__decorate([
|
|
241
|
+
applyCssClass,
|
|
242
|
+
__metadata("design:type", Function),
|
|
243
|
+
__metadata("design:paramtypes", []),
|
|
244
|
+
__metadata("design:returntype", Array)
|
|
245
|
+
], NavigationLinkComponent.prototype, "buildComponentCssClass", null);
|
|
246
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: NavigationLinkComponent, decorators: [{
|
|
247
|
+
type: Component,
|
|
248
|
+
args: [{
|
|
249
|
+
// eslint-disable-next-line @angular-eslint/component-selector
|
|
250
|
+
selector: 'a[fdb-navigation-link]',
|
|
251
|
+
template: `
|
|
252
|
+
<ng-container *ngIf="glyph">
|
|
253
|
+
<fd-icon
|
|
254
|
+
[glyph]="glyph"
|
|
255
|
+
class="fd-navigation__icon"
|
|
256
|
+
[attr.role]="'presentation'"
|
|
257
|
+
[ariaHidden]="true"
|
|
258
|
+
></fd-icon>
|
|
259
|
+
</ng-container>
|
|
260
|
+
<ng-template #textRenderer>
|
|
261
|
+
<span class="fd-navigation__text">{{ label }}</span>
|
|
262
|
+
<span
|
|
263
|
+
class="fd-navigation__external-link-indicator"
|
|
264
|
+
role="presentation"
|
|
265
|
+
aria-hidden="true"
|
|
266
|
+
aria-label="external link indicator"
|
|
267
|
+
*ngIf="external"
|
|
268
|
+
></span>
|
|
269
|
+
</ng-template>
|
|
270
|
+
<ng-container *ngTemplateOutlet="textRenderer" />
|
|
271
|
+
<span
|
|
272
|
+
class="fd-navigation__selection-indicator"
|
|
273
|
+
role="presentation"
|
|
274
|
+
aria-hidden="true"
|
|
275
|
+
aria-label="selection indicator"
|
|
276
|
+
>
|
|
277
|
+
</span>
|
|
278
|
+
<span
|
|
279
|
+
*ngIf="
|
|
280
|
+
navigationListItemComponent?.childNavigationListComponent() &&
|
|
281
|
+
navigationListItemComponent?.normalizedLevel() !== 3 &&
|
|
282
|
+
!_routerLink
|
|
283
|
+
"
|
|
284
|
+
class="fd-navigation__has-children-indicator"
|
|
285
|
+
role="presentation"
|
|
286
|
+
aria-hidden="true"
|
|
287
|
+
aria-label="has children indicator, expanded"
|
|
288
|
+
>
|
|
289
|
+
</span>
|
|
290
|
+
`,
|
|
291
|
+
imports: [NgIf, IconComponent, AsyncPipe, NgTemplateOutlet],
|
|
292
|
+
hostDirectives: [RouterLinkActive],
|
|
293
|
+
standalone: true,
|
|
294
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
295
|
+
encapsulation: ViewEncapsulation.None,
|
|
296
|
+
host: {
|
|
297
|
+
role: 'link'
|
|
298
|
+
}
|
|
299
|
+
}]
|
|
300
|
+
}], ctorParameters: function () { return []; }, propDecorators: { class: [{
|
|
301
|
+
type: Input
|
|
302
|
+
}], glyph: [{
|
|
303
|
+
type: Input
|
|
304
|
+
}], label: [{
|
|
305
|
+
type: Input,
|
|
306
|
+
args: [{ required: true }]
|
|
307
|
+
}], external: [{
|
|
308
|
+
type: Input
|
|
309
|
+
}], textRenderer: [{
|
|
310
|
+
type: ViewChild,
|
|
311
|
+
args: ['textRenderer']
|
|
312
|
+
}], _tabindex: [{
|
|
313
|
+
type: HostBinding,
|
|
314
|
+
args: ['attr.tabindex']
|
|
315
|
+
}], buildComponentCssClass: [], _onClick: [{
|
|
316
|
+
type: HostListener,
|
|
317
|
+
args: ['click']
|
|
318
|
+
}], _focusHandler: [{
|
|
319
|
+
type: HostListener,
|
|
320
|
+
args: ['focus']
|
|
321
|
+
}] } });
|
|
322
|
+
|
|
323
|
+
class NavigationListItemComponent extends FdbNavigationListItemComponent {
|
|
324
|
+
/** @hidden */
|
|
325
|
+
set group(group) {
|
|
326
|
+
this.isGroup.set(group);
|
|
327
|
+
}
|
|
328
|
+
/** @hidden */
|
|
329
|
+
set _expanded(expanded) {
|
|
330
|
+
this.expanded.set(expanded);
|
|
331
|
+
}
|
|
332
|
+
/** @hidden */
|
|
333
|
+
set _navigationListComponent(navigationListComponent) {
|
|
334
|
+
this.childNavigationListComponent.set(navigationListComponent);
|
|
335
|
+
}
|
|
336
|
+
/** @hidden */
|
|
337
|
+
set _routerLinkActive(routerLinkActive) {
|
|
338
|
+
this.routerLinkActive.set(routerLinkActive);
|
|
339
|
+
}
|
|
340
|
+
/** @hidden */
|
|
341
|
+
set _routerLink(routerLink) {
|
|
342
|
+
this.routerLink.set(routerLink);
|
|
343
|
+
}
|
|
344
|
+
/** @hidden */
|
|
345
|
+
set _childrenTemplate(templateRef) {
|
|
346
|
+
this.childrenTemplate.set(templateRef);
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* Used in attribute only. For actual calculation of level of nesting use `normalizedLevel`.
|
|
350
|
+
*/
|
|
351
|
+
get level() {
|
|
352
|
+
return this.parentNavigationListComponent.level;
|
|
353
|
+
}
|
|
354
|
+
/** @hidden */
|
|
355
|
+
constructor() {
|
|
356
|
+
super();
|
|
357
|
+
/** @hidden */
|
|
358
|
+
this.alwaysFocusable = false;
|
|
359
|
+
/** @hidden */
|
|
360
|
+
this.injector = inject(Injector);
|
|
361
|
+
/** @hidden */
|
|
362
|
+
this.elementRef = inject(ElementRef);
|
|
363
|
+
/** @hidden */
|
|
364
|
+
this.parentListItemComponent = inject(FdbNavigationListItemComponent, { optional: true, skipSelf: true });
|
|
365
|
+
/** @hidden */
|
|
366
|
+
this.noArrow = false;
|
|
367
|
+
/** @hidden */
|
|
368
|
+
this.additionalBodyClass = 'fd-navigation__list-container';
|
|
369
|
+
/** @hidden */
|
|
370
|
+
this.routerLink = signal(null);
|
|
371
|
+
/** @hidden */
|
|
372
|
+
this.routerLinkActive = signal(null);
|
|
373
|
+
/** @hidden */
|
|
374
|
+
this.isRouterLinkActive = computed(() => {
|
|
375
|
+
const routerLinkActive = this.routerLinkActive();
|
|
376
|
+
if (routerLinkActive) {
|
|
377
|
+
return toSignal(routerLinkActive.isActiveChange, {
|
|
378
|
+
initialValue: routerLinkActive.isActive,
|
|
379
|
+
injector: this.injector
|
|
380
|
+
})();
|
|
381
|
+
}
|
|
382
|
+
return false;
|
|
383
|
+
});
|
|
384
|
+
/** @hidden */
|
|
385
|
+
this.childNavigationListComponent = signal(null);
|
|
386
|
+
/** @hidden */
|
|
387
|
+
this.expanded = signal(false);
|
|
388
|
+
/** @hidden */
|
|
389
|
+
this.fullPathExpanded = computed(() => (this.parentListItemComponent ? this.parentListItemComponent.expanded() : true) && this.expanded());
|
|
390
|
+
/** @hidden */
|
|
391
|
+
this.isGroup = signal(false);
|
|
392
|
+
/** @hidden */
|
|
393
|
+
this.childrenTemplate = signal(null);
|
|
394
|
+
/** @hidden */
|
|
395
|
+
this.childrenActive = signal(false);
|
|
396
|
+
/** @hidden */
|
|
397
|
+
this.inPortal = computed(() => this.parentInPortal() || this._selfInPortal());
|
|
398
|
+
/** @hidden */
|
|
399
|
+
this.parentInPortal = computed(() => this.parentListItemComponent?.inPortal() || false);
|
|
400
|
+
/**
|
|
401
|
+
* Used for calculation of the level of inclusion. Can be different than the actual level due to ability to mix grouped lists with ungrouped.
|
|
402
|
+
* For ungrouped lists will add +1 for the first list in the hierarchy to mimic group existence.
|
|
403
|
+
*/
|
|
404
|
+
this.normalizedLevel = computed(() => {
|
|
405
|
+
if (this.parentNavigationListComponent.isInGroup() || this.isGroup()) {
|
|
406
|
+
return this.level();
|
|
407
|
+
}
|
|
408
|
+
return this.level() + 1;
|
|
409
|
+
});
|
|
410
|
+
/** @hidden */
|
|
411
|
+
this._isInPopover = computed(() => this.navigationComponent.isSnapped() && (this.normalizedLevel() > 2 || this._hidden()));
|
|
412
|
+
/** @hidden */
|
|
413
|
+
// eslint-disable-next-line max-len
|
|
414
|
+
this.expandedAttr = computed(() => (this.expanded() ||
|
|
415
|
+
(this.normalizedLevel() === 1 &&
|
|
416
|
+
!!this.childNavigationListComponent() &&
|
|
417
|
+
this.navigationComponent.isSnapped())) &&
|
|
418
|
+
!this._hidden());
|
|
419
|
+
/**
|
|
420
|
+
* Icon which should be used for the toggle button.
|
|
421
|
+
**/
|
|
422
|
+
this.toggleIcon = computed(() => {
|
|
423
|
+
if (this.expandedAttr()) {
|
|
424
|
+
return 'slim-arrow-down';
|
|
425
|
+
}
|
|
426
|
+
return this._isRtl() ? 'slim-arrow-left' : 'slim-arrow-right';
|
|
427
|
+
});
|
|
428
|
+
/** @hidden */
|
|
429
|
+
this._selfInPortal = signal(false);
|
|
430
|
+
/** @hidden */
|
|
431
|
+
this._cdr = inject(ChangeDetectorRef);
|
|
432
|
+
/** @hidden */
|
|
433
|
+
this._tabbableService = inject(TabbableElementService);
|
|
434
|
+
/** @hidden */
|
|
435
|
+
this._navigationComponent = inject(FdbNavigationComponent);
|
|
436
|
+
effect(() => {
|
|
437
|
+
this.additionalBodyComponentClasses = [
|
|
438
|
+
'fd-navigation',
|
|
439
|
+
'fd-navigation--snapped',
|
|
440
|
+
`fd-navigation--${this.navigationComponent.mode()}`
|
|
441
|
+
]
|
|
442
|
+
.filter((klass) => !!klass)
|
|
443
|
+
.join(' ');
|
|
444
|
+
this._popoverService.updateContent(null, this.childrenTemplate());
|
|
445
|
+
});
|
|
446
|
+
}
|
|
447
|
+
/** @hidden */
|
|
448
|
+
buildComponentCssClass() {
|
|
449
|
+
return [this.class || '', 'fd-navigation__list-item'];
|
|
450
|
+
}
|
|
451
|
+
/** @hidden */
|
|
452
|
+
_keydownHandler(event) {
|
|
453
|
+
if (this._isInPopover() && KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW])) {
|
|
454
|
+
event.stopImmediatePropagation();
|
|
455
|
+
if (this._hidden() || this.parentListItemComponent?._hidden()) {
|
|
456
|
+
const hiddenItems = this.navigationComponent.getMoreButton()?.hiddenItems() || [];
|
|
457
|
+
const firstLevelHiddenElementCondition = hiddenItems &&
|
|
458
|
+
((KeyUtil.isKeyCode(event, UP_ARROW) &&
|
|
459
|
+
this.elementRef.nativeElement === hiddenItems[0]?.elementRef.nativeElement) ||
|
|
460
|
+
(KeyUtil.isKeyCode(event, DOWN_ARROW) &&
|
|
461
|
+
this.elementRef.nativeElement ===
|
|
462
|
+
hiddenItems[hiddenItems.length - 1]?.elementRef.nativeElement));
|
|
463
|
+
const secondLevelHiddenElementCondition = this.normalizedLevel() > 2 &&
|
|
464
|
+
((KeyUtil.isKeyCode(event, UP_ARROW) &&
|
|
465
|
+
this.parentNavigationListComponent.listItems.first === this) ||
|
|
466
|
+
(KeyUtil.isKeyCode(event, DOWN_ARROW) &&
|
|
467
|
+
this.parentNavigationListComponent.listItems.last === this));
|
|
468
|
+
if (firstLevelHiddenElementCondition || secondLevelHiddenElementCondition) {
|
|
469
|
+
return;
|
|
470
|
+
}
|
|
471
|
+
this.navigationComponent.keyDownHandler(event);
|
|
472
|
+
return;
|
|
473
|
+
}
|
|
474
|
+
if (KeyUtil.isKeyCode(event, UP_ARROW) && this.parentNavigationListComponent.listItems.first === this) {
|
|
475
|
+
this.parentListItemComponent?.focusOnClonedLink();
|
|
476
|
+
}
|
|
477
|
+
if ((KeyUtil.isKeyCode(event, UP_ARROW) && this.parentNavigationListComponent.listItems.first === this) ||
|
|
478
|
+
(KeyUtil.isKeyCode(event, DOWN_ARROW) && this.parentNavigationListComponent.listItems.last === this)) {
|
|
479
|
+
return;
|
|
480
|
+
}
|
|
481
|
+
this.navigationComponent.keyDownHandler(event);
|
|
482
|
+
return;
|
|
483
|
+
}
|
|
484
|
+
if (!KeyUtil.isKeyCode(event, [LEFT_ARROW, RIGHT_ARROW])) {
|
|
485
|
+
return;
|
|
486
|
+
}
|
|
487
|
+
event.stopImmediatePropagation();
|
|
488
|
+
const shouldExpand = !this._isCollapseAction(event);
|
|
489
|
+
if (!this.navigationComponent.isSnapped()) {
|
|
490
|
+
this._expandedStateKeyboardHandler(shouldExpand);
|
|
491
|
+
}
|
|
492
|
+
else {
|
|
493
|
+
this._snappedStateKeyboardHandler(shouldExpand);
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
/** @hidden */
|
|
497
|
+
clonedMainLinkKeydown(event) {
|
|
498
|
+
if (this._isCollapseAction(event)) {
|
|
499
|
+
this._popoverService.close();
|
|
500
|
+
this.focus();
|
|
501
|
+
return;
|
|
502
|
+
}
|
|
503
|
+
if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {
|
|
504
|
+
this._childNavigationListItems.first?.focus();
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
/** @hidden */
|
|
508
|
+
calculateExpanded() {
|
|
509
|
+
this._cdr.detectChanges();
|
|
510
|
+
}
|
|
511
|
+
/** @hidden */
|
|
512
|
+
focus() {
|
|
513
|
+
if (this.linkComponent) {
|
|
514
|
+
this.linkComponent.elementRef.nativeElement.focus();
|
|
515
|
+
}
|
|
516
|
+
else {
|
|
517
|
+
this._tabbableService.getTabbableElement(this.elementRef.nativeElement, false, true)?.focus();
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
/** @hidden */
|
|
521
|
+
ngAfterViewInit() {
|
|
522
|
+
this._popoverService.updateTriggerElement(this._navigationItem);
|
|
523
|
+
}
|
|
524
|
+
/** @hidden */
|
|
525
|
+
ngOnChanges() {
|
|
526
|
+
this.buildComponentCssClass();
|
|
527
|
+
this._popoverService.refreshConfiguration(this);
|
|
528
|
+
}
|
|
529
|
+
/** @hidden */
|
|
530
|
+
ngOnInit() {
|
|
531
|
+
this.buildComponentCssClass();
|
|
532
|
+
}
|
|
533
|
+
/** @hidden */
|
|
534
|
+
collapse() {
|
|
535
|
+
this.expanded.set(false);
|
|
536
|
+
this._popoverService.close();
|
|
537
|
+
}
|
|
538
|
+
/** @hidden */
|
|
539
|
+
expand() {
|
|
540
|
+
this.expanded.set(true);
|
|
541
|
+
}
|
|
542
|
+
/** @hidden */
|
|
543
|
+
toggle() {
|
|
544
|
+
if (this._hidden()) {
|
|
545
|
+
return;
|
|
546
|
+
}
|
|
547
|
+
this.expanded.set(!this.expanded());
|
|
548
|
+
}
|
|
549
|
+
/** @hidden */
|
|
550
|
+
setSnappedActiveState(isActive) {
|
|
551
|
+
this.childrenActive.set(isActive);
|
|
552
|
+
}
|
|
553
|
+
/** @hidden */
|
|
554
|
+
hide() {
|
|
555
|
+
this._hidden.set(true);
|
|
556
|
+
this.buildComponentCssClass();
|
|
557
|
+
}
|
|
558
|
+
/** @hidden */
|
|
559
|
+
show() {
|
|
560
|
+
this._hidden.set(false);
|
|
561
|
+
this.elementRef.nativeElement.style.display = 'flex';
|
|
562
|
+
this.buildComponentCssClass();
|
|
563
|
+
}
|
|
564
|
+
/** @hidden */
|
|
565
|
+
checkSelfHidden() {
|
|
566
|
+
const shouldHide = this._childNavigationListItems
|
|
567
|
+
?.filter((item) => item.normalizedLevel() === this.normalizedLevel() + 1)
|
|
568
|
+
.every((item) => item._hidden());
|
|
569
|
+
this._hidden.set(shouldHide);
|
|
570
|
+
this.isOpen = shouldHide;
|
|
571
|
+
this.elementRef.nativeElement.style.display = shouldHide ? 'none' : 'flex';
|
|
572
|
+
this.buildComponentCssClass();
|
|
573
|
+
}
|
|
574
|
+
/** @hidden */
|
|
575
|
+
focusOnClonedLink() {
|
|
576
|
+
if (this._clonedMainLink) {
|
|
577
|
+
this._clonedMainLink.nativeElement.focus();
|
|
578
|
+
return;
|
|
579
|
+
}
|
|
580
|
+
const hiddenItems = this.hiddenItems();
|
|
581
|
+
if (hiddenItems.length > 0) {
|
|
582
|
+
this._tabbableService.getTabbableElement(hiddenItems[0]?.elementRef.nativeElement)?.focus();
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
/** @hidden */
|
|
586
|
+
createPortal() {
|
|
587
|
+
this.domPortal = this.domPortal || new DomPortal(this.elementRef.nativeElement);
|
|
588
|
+
this._selfInPortal.set(true);
|
|
589
|
+
return this.domPortal;
|
|
590
|
+
}
|
|
591
|
+
/** @hidden */
|
|
592
|
+
destroyPortal() {
|
|
593
|
+
if (this.domPortal?.isAttached) {
|
|
594
|
+
this.domPortal.detach();
|
|
595
|
+
this.domPortal = null;
|
|
596
|
+
}
|
|
597
|
+
this._selfInPortal.set(false);
|
|
598
|
+
}
|
|
599
|
+
/** @hidden */
|
|
600
|
+
_isCollapseAction(event) {
|
|
601
|
+
const expandKey = this._rtl?.rtl.value ? RIGHT_ARROW : LEFT_ARROW;
|
|
602
|
+
return KeyUtil.isKeyCode(event, expandKey);
|
|
603
|
+
}
|
|
604
|
+
/** @hidden */
|
|
605
|
+
_expandedStateKeyboardHandler(shouldExpand) {
|
|
606
|
+
if (shouldExpand && this.expanded()) {
|
|
607
|
+
this.navigationComponent.setNextItemActive();
|
|
608
|
+
return;
|
|
609
|
+
}
|
|
610
|
+
if (!shouldExpand && !this.expanded() && this.parentListItemComponent) {
|
|
611
|
+
this.navigationComponent.setActiveItem(this.parentListItemComponent);
|
|
612
|
+
return;
|
|
613
|
+
}
|
|
614
|
+
if (!shouldExpand && this.childNavigationListComponent()) {
|
|
615
|
+
if (!this.expanded()) {
|
|
616
|
+
this.navigationComponent.setPreviousItemActive();
|
|
617
|
+
}
|
|
618
|
+
else {
|
|
619
|
+
this.expanded.set(false);
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
this.expanded.set(shouldExpand);
|
|
623
|
+
}
|
|
624
|
+
/** @hidden */
|
|
625
|
+
_snappedStateKeyboardHandler(shouldExpand) {
|
|
626
|
+
if (shouldExpand && this._hidden()) {
|
|
627
|
+
this.expanded.set(shouldExpand);
|
|
628
|
+
this._childNavigationListItems.first?.focus();
|
|
629
|
+
this.childFocused.set(true);
|
|
630
|
+
return;
|
|
631
|
+
}
|
|
632
|
+
if (shouldExpand) {
|
|
633
|
+
if (this.expanded()) {
|
|
634
|
+
this._childNavigationListItems.first?.focus();
|
|
635
|
+
return;
|
|
636
|
+
}
|
|
637
|
+
this.expanded.set(shouldExpand);
|
|
638
|
+
this._popoverService.open();
|
|
639
|
+
setTimeout(() => {
|
|
640
|
+
this.focusOnClonedLink();
|
|
641
|
+
});
|
|
642
|
+
}
|
|
643
|
+
else {
|
|
644
|
+
this.expanded.set(shouldExpand);
|
|
645
|
+
this._popoverService.close();
|
|
646
|
+
if (!this.inPortal()) {
|
|
647
|
+
this.focus();
|
|
648
|
+
}
|
|
649
|
+
if (this.inPortal() && this.normalizedLevel() === 2) {
|
|
650
|
+
this._navigationComponent.focusMoreButton();
|
|
651
|
+
}
|
|
652
|
+
else {
|
|
653
|
+
this.parentListItemComponent?.focus();
|
|
654
|
+
}
|
|
655
|
+
}
|
|
656
|
+
}
|
|
657
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: NavigationListItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
658
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: NavigationListItemComponent, isStandalone: true, selector: "li[fdb-navigation-list-item]", inputs: { class: "class", group: "group", _expanded: ["expanded", "_expanded"], linkTemplate: "linkTemplate", alwaysFocusable: "alwaysFocusable" }, host: { listeners: { "keydown": "_keydownHandler($event)" } }, providers: [
|
|
659
|
+
PopoverService,
|
|
660
|
+
{
|
|
661
|
+
provide: FdbNavigationListItemComponent,
|
|
662
|
+
useExisting: NavigationListItemComponent
|
|
663
|
+
}
|
|
664
|
+
], queries: [{ propertyName: "_navigationListComponent", first: true, predicate: FdbNavigationListComponent, descendants: true }, { propertyName: "_routerLinkActive", first: true, predicate: RouterLinkActive, descendants: true }, { propertyName: "_routerLink", first: true, predicate: RouterLink, descendants: true }, { propertyName: "linkComponent", first: true, predicate: NavigationLinkComponent, descendants: true }, { propertyName: "_childNavigationListItems", predicate: FdbNavigationListItemComponent, descendants: true }], viewQueries: [{ propertyName: "_childrenTemplate", first: true, predicate: ["childrenTemplate"], descendants: true, read: TemplateRef }, { propertyName: "_navigationItem", first: true, predicate: ["navigationItem"], descendants: true }, { propertyName: "_clonedMainLink", first: true, predicate: ["clonedMainLink"], descendants: true, read: ElementRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"fd-navigation__item\"\n [class.fd-navigation__item--group]=\"isGroup()\"\n [class.fd-navigation__item--overflow]=\"_hidden()\"\n [class.fd-navigation__item--child]=\"normalizedLevel() > 2\"\n [class.fd-navigation__item--with-expander]=\"\n childNavigationListComponent() && normalizedLevel() < 3 && linkComponent?._routerLink\n \"\n aria-current=\"page\"\n [attr.aria-selected]=\"isRouterLinkActive() || (childrenActive() && navigationComponent.isSnapped()) ? true : null\"\n [attr.aria-expanded]=\"expandedAttr()\"\n [attr.aria-level]=\"level()\"\n #navigationItem\n role=\"menuitem\"\n>\n <ng-container *ngIf=\"linkTemplate\">\n <ng-template [ngTemplateOutlet]=\"linkTemplate\" [ngTemplateOutletInjector]=\"injector\"></ng-template>\n </ng-container>\n <ng-content select=\"[fdb-navigation-link]\"></ng-content>\n <button\n (click)=\"toggle()\"\n *ngIf=\"childNavigationListComponent() && normalizedLevel() < 3 && linkComponent?._routerLink\"\n fd-button\n class=\"fd-button--nested fd-navigation__expander\"\n >\n <fd-icon [glyph]=\"toggleIcon()\"></fd-icon>\n </button>\n</div>\n<ng-container\n *ngIf=\"\n (childNavigationListComponent() && !navigationComponent.isSnapped()) ||\n (navigationComponent.isSnapped() && normalizedLevel() < 2) ||\n _hidden()\n \"\n>\n <ng-template [ngTemplateOutlet]=\"childrenTemplate\" [ngTemplateOutletInjector]=\"injector\"></ng-template>\n</ng-container>\n\n<ng-template #childrenTemplate>\n <ng-template #childNavigationLists>\n <ng-content select=\"ul[fdb-navigation-list]\"></ng-content>\n </ng-template>\n\n <ng-container *ngIf=\"isGroup(); else withWrapper\">\n <ng-template [ngTemplateOutlet]=\"childNavigationLists\" [ngTemplateOutletInjector]=\"injector\"></ng-template>\n </ng-container>\n <ng-template #withWrapper>\n <ng-template #popoverTemplate>\n <!-- fd-navigation__list-container -->\n <div\n *ngIf=\"childNavigationListComponent()\"\n [class.fd-navigation__list-container]=\"!navigationComponent.isSnapped()\"\n aria-hidden=\"true\"\n >\n <div class=\"fd-navigation__list-wrapper popover-wrapper\" aria-hidden=\"true\">\n <div\n *ngIf=\"linkComponent && navigationComponent.isSnapped()\"\n class=\"fd-navigation__item fd-navigation__item--title fd-navigation__item--child\"\n aria-level=\"1\"\n role=\"treeitem\"\n aria-expanded=\"true\"\n [attr.aria-selected]=\"isRouterLinkActive()\"\n >\n <a\n class=\"fd-navigation__link\"\n [routerLink]=\"$any(routerLink())?.commands\"\n role=\"button\"\n tabindex=\"0\"\n (keydown)=\"clonedMainLinkKeydown($event)\"\n #clonedMainLink\n >\n <span\n class=\"fd-navigation__icon sap-icon--basket\"\n role=\"presentation\"\n aria-hidden=\"true\"\n ></span>\n <ng-container *ngTemplateOutlet=\"linkComponent.textRenderer!\"></ng-container>\n <span class=\"fd-navigation__selection-indicator\"></span>\n </a>\n </div>\n <ng-template\n [ngTemplateOutlet]=\"childNavigationLists\"\n [ngTemplateOutletInjector]=\"injector\"\n ></ng-template>\n </div>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"_hidden()\" [ngIfElse]=\"popoverTemplate\">\n <div\n *ngIf=\"childNavigationListComponent()\"\n class=\"fd-navigation__list-container fd-navigation__list-container--submenu fd-menu__sublist\"\n >\n <div class=\"fd-navigation__list-wrapper\">\n <ng-template\n [ngTemplateOutlet]=\"childNavigationLists\"\n [ngTemplateOutletInjector]=\"injector\"\n ></ng-template>\n </div>\n </div>\n </ng-template>\n </ng-template>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel", "ariaHidden"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
665
|
+
}
|
|
666
|
+
__decorate([
|
|
667
|
+
applyCssClass,
|
|
668
|
+
__metadata("design:type", Function),
|
|
669
|
+
__metadata("design:paramtypes", []),
|
|
670
|
+
__metadata("design:returntype", Array)
|
|
671
|
+
], NavigationListItemComponent.prototype, "buildComponentCssClass", null);
|
|
672
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: NavigationListItemComponent, decorators: [{
|
|
673
|
+
type: Component,
|
|
674
|
+
args: [{ selector: 'li[fdb-navigation-list-item]', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [
|
|
675
|
+
PopoverService,
|
|
676
|
+
{
|
|
677
|
+
provide: FdbNavigationListItemComponent,
|
|
678
|
+
useExisting: NavigationListItemComponent
|
|
679
|
+
}
|
|
680
|
+
], imports: [
|
|
681
|
+
AsyncPipe,
|
|
682
|
+
NgIf,
|
|
683
|
+
NgTemplateOutlet,
|
|
684
|
+
PopoverComponent,
|
|
685
|
+
PopoverControlComponent,
|
|
686
|
+
RouterLink,
|
|
687
|
+
ButtonComponent,
|
|
688
|
+
IconComponent
|
|
689
|
+
], standalone: true, template: "<div\n class=\"fd-navigation__item\"\n [class.fd-navigation__item--group]=\"isGroup()\"\n [class.fd-navigation__item--overflow]=\"_hidden()\"\n [class.fd-navigation__item--child]=\"normalizedLevel() > 2\"\n [class.fd-navigation__item--with-expander]=\"\n childNavigationListComponent() && normalizedLevel() < 3 && linkComponent?._routerLink\n \"\n aria-current=\"page\"\n [attr.aria-selected]=\"isRouterLinkActive() || (childrenActive() && navigationComponent.isSnapped()) ? true : null\"\n [attr.aria-expanded]=\"expandedAttr()\"\n [attr.aria-level]=\"level()\"\n #navigationItem\n role=\"menuitem\"\n>\n <ng-container *ngIf=\"linkTemplate\">\n <ng-template [ngTemplateOutlet]=\"linkTemplate\" [ngTemplateOutletInjector]=\"injector\"></ng-template>\n </ng-container>\n <ng-content select=\"[fdb-navigation-link]\"></ng-content>\n <button\n (click)=\"toggle()\"\n *ngIf=\"childNavigationListComponent() && normalizedLevel() < 3 && linkComponent?._routerLink\"\n fd-button\n class=\"fd-button--nested fd-navigation__expander\"\n >\n <fd-icon [glyph]=\"toggleIcon()\"></fd-icon>\n </button>\n</div>\n<ng-container\n *ngIf=\"\n (childNavigationListComponent() && !navigationComponent.isSnapped()) ||\n (navigationComponent.isSnapped() && normalizedLevel() < 2) ||\n _hidden()\n \"\n>\n <ng-template [ngTemplateOutlet]=\"childrenTemplate\" [ngTemplateOutletInjector]=\"injector\"></ng-template>\n</ng-container>\n\n<ng-template #childrenTemplate>\n <ng-template #childNavigationLists>\n <ng-content select=\"ul[fdb-navigation-list]\"></ng-content>\n </ng-template>\n\n <ng-container *ngIf=\"isGroup(); else withWrapper\">\n <ng-template [ngTemplateOutlet]=\"childNavigationLists\" [ngTemplateOutletInjector]=\"injector\"></ng-template>\n </ng-container>\n <ng-template #withWrapper>\n <ng-template #popoverTemplate>\n <!-- fd-navigation__list-container -->\n <div\n *ngIf=\"childNavigationListComponent()\"\n [class.fd-navigation__list-container]=\"!navigationComponent.isSnapped()\"\n aria-hidden=\"true\"\n >\n <div class=\"fd-navigation__list-wrapper popover-wrapper\" aria-hidden=\"true\">\n <div\n *ngIf=\"linkComponent && navigationComponent.isSnapped()\"\n class=\"fd-navigation__item fd-navigation__item--title fd-navigation__item--child\"\n aria-level=\"1\"\n role=\"treeitem\"\n aria-expanded=\"true\"\n [attr.aria-selected]=\"isRouterLinkActive()\"\n >\n <a\n class=\"fd-navigation__link\"\n [routerLink]=\"$any(routerLink())?.commands\"\n role=\"button\"\n tabindex=\"0\"\n (keydown)=\"clonedMainLinkKeydown($event)\"\n #clonedMainLink\n >\n <span\n class=\"fd-navigation__icon sap-icon--basket\"\n role=\"presentation\"\n aria-hidden=\"true\"\n ></span>\n <ng-container *ngTemplateOutlet=\"linkComponent.textRenderer!\"></ng-container>\n <span class=\"fd-navigation__selection-indicator\"></span>\n </a>\n </div>\n <ng-template\n [ngTemplateOutlet]=\"childNavigationLists\"\n [ngTemplateOutletInjector]=\"injector\"\n ></ng-template>\n </div>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"_hidden()\" [ngIfElse]=\"popoverTemplate\">\n <div\n *ngIf=\"childNavigationListComponent()\"\n class=\"fd-navigation__list-container fd-navigation__list-container--submenu fd-menu__sublist\"\n >\n <div class=\"fd-navigation__list-wrapper\">\n <ng-template\n [ngTemplateOutlet]=\"childNavigationLists\"\n [ngTemplateOutletInjector]=\"injector\"\n ></ng-template>\n </div>\n </div>\n </ng-template>\n </ng-template>\n</ng-template>\n" }]
|
|
690
|
+
}], ctorParameters: function () { return []; }, propDecorators: { class: [{
|
|
691
|
+
type: Input
|
|
692
|
+
}], group: [{
|
|
693
|
+
type: Input
|
|
694
|
+
}], _expanded: [{
|
|
695
|
+
type: Input,
|
|
696
|
+
args: ['expanded']
|
|
697
|
+
}], linkTemplate: [{
|
|
698
|
+
type: Input
|
|
699
|
+
}], alwaysFocusable: [{
|
|
700
|
+
type: Input
|
|
701
|
+
}], _navigationListComponent: [{
|
|
702
|
+
type: ContentChild,
|
|
703
|
+
args: [FdbNavigationListComponent]
|
|
704
|
+
}], _routerLinkActive: [{
|
|
705
|
+
type: ContentChild,
|
|
706
|
+
args: [RouterLinkActive]
|
|
707
|
+
}], _routerLink: [{
|
|
708
|
+
type: ContentChild,
|
|
709
|
+
args: [RouterLink]
|
|
710
|
+
}], _childrenTemplate: [{
|
|
711
|
+
type: ViewChild,
|
|
712
|
+
args: ['childrenTemplate', { read: TemplateRef }]
|
|
713
|
+
}], _navigationItem: [{
|
|
714
|
+
type: ViewChild,
|
|
715
|
+
args: ['navigationItem']
|
|
716
|
+
}], linkComponent: [{
|
|
717
|
+
type: ContentChild,
|
|
718
|
+
args: [NavigationLinkComponent]
|
|
719
|
+
}], _childNavigationListItems: [{
|
|
720
|
+
type: ContentChildren,
|
|
721
|
+
args: [FdbNavigationListItemComponent, { descendants: true }]
|
|
722
|
+
}], _clonedMainLink: [{
|
|
723
|
+
type: ViewChild,
|
|
724
|
+
args: ['clonedMainLink', { static: false, read: ElementRef }]
|
|
725
|
+
}], buildComponentCssClass: [], _keydownHandler: [{
|
|
726
|
+
type: HostListener,
|
|
727
|
+
args: ['keydown', ['$event']]
|
|
728
|
+
}] } });
|
|
729
|
+
|
|
730
|
+
class NavigationListComponent {
|
|
731
|
+
constructor() {
|
|
732
|
+
/** @hidden */
|
|
733
|
+
this.showHome = true;
|
|
734
|
+
/** @hidden */
|
|
735
|
+
this.navigationContentComponent = inject(NavigationContentComponent);
|
|
736
|
+
/** @hidden */
|
|
737
|
+
this.parentListItemComponent = inject(FdbNavigationListItemComponent, { optional: true });
|
|
738
|
+
/** @hidden */
|
|
739
|
+
this.parentListComponent = inject(FdbNavigationListComponent, { optional: true, skipSelf: true });
|
|
740
|
+
/** @hidden */
|
|
741
|
+
this.linkTemplate = computed(() => {
|
|
742
|
+
const homeLinkTemplate = this._navigationComponent.homeLinkTemplate();
|
|
743
|
+
return !this.parentListComponent && homeLinkTemplate;
|
|
744
|
+
});
|
|
745
|
+
/** @hidden */
|
|
746
|
+
this.elementRef = inject(ElementRef);
|
|
747
|
+
/** @hidden */
|
|
748
|
+
this.isParentGroupChild = computed(() => this.parentListItemComponent?.isGroup() ?? false);
|
|
749
|
+
/** @hidden */
|
|
750
|
+
this.isInGroup = computed(() => this.isParentGroupChild() || !!this.parentListComponent?.isParentGroupChild());
|
|
751
|
+
/** @hidden */
|
|
752
|
+
this.level = computed(() => (this.parentListComponent ? this.parentListComponent.level() + 1 : 1));
|
|
753
|
+
/** @hidden */
|
|
754
|
+
this.normalizedLevel = computed(() => (this.isInGroup() ? this.level() : this.level() + (this.level() === 2 ? 1 : 0)));
|
|
755
|
+
/** @hidden */
|
|
756
|
+
this.focused = false;
|
|
757
|
+
/** @hidden */
|
|
758
|
+
this._navigationComponent = inject(FdbNavigationComponent);
|
|
759
|
+
}
|
|
760
|
+
/** @hidden */
|
|
761
|
+
buildComponentCssClass() {
|
|
762
|
+
return [
|
|
763
|
+
this.class || '',
|
|
764
|
+
'fd-navigation__list',
|
|
765
|
+
this.isParentGroupChild() ? 'fd-navigation__list--parent-items' : '',
|
|
766
|
+
this.parentListComponent?.isParentGroupChild() ? 'fd-navigation__list--child-items' : ''
|
|
767
|
+
];
|
|
768
|
+
}
|
|
769
|
+
/** @hidden */
|
|
770
|
+
_focusIn() {
|
|
771
|
+
this.focused = true;
|
|
772
|
+
}
|
|
773
|
+
/** @hidden */
|
|
774
|
+
_focusOut() {
|
|
775
|
+
this.focused = false;
|
|
776
|
+
}
|
|
777
|
+
/** @hidden */
|
|
778
|
+
ngOnChanges() {
|
|
779
|
+
this.buildComponentCssClass();
|
|
780
|
+
}
|
|
781
|
+
/** @hidden */
|
|
782
|
+
ngOnInit() {
|
|
783
|
+
this.buildComponentCssClass();
|
|
784
|
+
}
|
|
785
|
+
/** @hidden */
|
|
786
|
+
getHomeElementSize() {
|
|
787
|
+
const sizePlaceholder = { width: 0, height: 0 };
|
|
788
|
+
const homeListItemSize = this._homeListItemElement?.nativeElement.getBoundingClientRect() || sizePlaceholder;
|
|
789
|
+
const homeListSeparatorSize = this._homeListSeparator?.nativeElement.getBoundingClientRect() || sizePlaceholder;
|
|
790
|
+
return {
|
|
791
|
+
width: homeListItemSize.width + homeListSeparatorSize.width,
|
|
792
|
+
height: homeListItemSize.height + homeListSeparatorSize.height
|
|
793
|
+
};
|
|
794
|
+
}
|
|
795
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: NavigationListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
796
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: NavigationListComponent, isStandalone: true, selector: "ul[fdb-navigation-list]", inputs: { class: "class", showHome: "showHome" }, host: { attributes: { "role": "menubar" }, listeners: { "focusin": "_focusIn()", "focusout": "_focusOut()" }, properties: { "attr.aria-hidden": "true" } }, providers: [
|
|
797
|
+
{
|
|
798
|
+
provide: FdbNavigationListComponent,
|
|
799
|
+
useExisting: NavigationListComponent
|
|
800
|
+
}
|
|
801
|
+
], queries: [{ propertyName: "listItems", predicate: FdbNavigationListItemComponent }], viewQueries: [{ propertyName: "homeListItem", first: true, predicate: ["homeListItem"], descendants: true, read: FdbNavigationListItemComponent }, { propertyName: "_homeListItemElement", first: true, predicate: ["homeListItem"], descendants: true, read: ElementRef }, { propertyName: "_homeListSeparator", first: true, predicate: ["homeListSeparator"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"showHome && navigationContentComponent.showHome\">\n <ng-container *ngIf=\"linkTemplate() as tmp\">\n <li\n fdb-navigation-list-item\n [linkTemplate]=\"tmp\"\n [alwaysFocusable]=\"true\"\n #homeListItem\n [class.fd-navigation-list-item--home-without-separator]=\"!_navigationComponent.homeSeparator()\"\n class=\"fd-navigation__list-item--home\"\n ></li>\n <li\n *ngIf=\"_navigationComponent.homeSeparator()\"\n #homeListSeparator\n class=\"fd-navigation__list-item fd-navigation__list-item--separator\"\n ></li>\n </ng-container>\n</ng-container>\n<ng-content></ng-content>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NavigationListItemComponent, selector: "li[fdb-navigation-list-item]", inputs: ["class", "group", "expanded", "linkTemplate", "alwaysFocusable"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
802
|
+
}
|
|
803
|
+
__decorate([
|
|
804
|
+
applyCssClass,
|
|
805
|
+
__metadata("design:type", Function),
|
|
806
|
+
__metadata("design:paramtypes", []),
|
|
807
|
+
__metadata("design:returntype", Array)
|
|
808
|
+
], NavigationListComponent.prototype, "buildComponentCssClass", null);
|
|
809
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: NavigationListComponent, decorators: [{
|
|
810
|
+
type: Component,
|
|
811
|
+
args: [{ selector: 'ul[fdb-navigation-list]', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
812
|
+
role: 'menubar',
|
|
813
|
+
'[attr.aria-hidden]': 'true'
|
|
814
|
+
}, providers: [
|
|
815
|
+
{
|
|
816
|
+
provide: FdbNavigationListComponent,
|
|
817
|
+
useExisting: NavigationListComponent
|
|
818
|
+
}
|
|
819
|
+
], imports: [NgIf, NavigationListItemComponent], template: "<ng-container *ngIf=\"showHome && navigationContentComponent.showHome\">\n <ng-container *ngIf=\"linkTemplate() as tmp\">\n <li\n fdb-navigation-list-item\n [linkTemplate]=\"tmp\"\n [alwaysFocusable]=\"true\"\n #homeListItem\n [class.fd-navigation-list-item--home-without-separator]=\"!_navigationComponent.homeSeparator()\"\n class=\"fd-navigation__list-item--home\"\n ></li>\n <li\n *ngIf=\"_navigationComponent.homeSeparator()\"\n #homeListSeparator\n class=\"fd-navigation__list-item fd-navigation__list-item--separator\"\n ></li>\n </ng-container>\n</ng-container>\n<ng-content></ng-content>\n" }]
|
|
820
|
+
}], propDecorators: { class: [{
|
|
821
|
+
type: Input
|
|
822
|
+
}], showHome: [{
|
|
823
|
+
type: Input
|
|
824
|
+
}], listItems: [{
|
|
825
|
+
type: ContentChildren,
|
|
826
|
+
args: [FdbNavigationListItemComponent]
|
|
827
|
+
}], homeListItem: [{
|
|
828
|
+
type: ViewChild,
|
|
829
|
+
args: ['homeListItem', { static: false, read: FdbNavigationListItemComponent }]
|
|
830
|
+
}], _homeListItemElement: [{
|
|
831
|
+
type: ViewChild,
|
|
832
|
+
args: ['homeListItem', { static: false, read: ElementRef }]
|
|
833
|
+
}], _homeListSeparator: [{
|
|
834
|
+
type: ViewChild,
|
|
835
|
+
args: ['homeListSeparator', { static: false, read: ElementRef }]
|
|
836
|
+
}], buildComponentCssClass: [], _focusIn: [{
|
|
837
|
+
type: HostListener,
|
|
838
|
+
args: ['focusin']
|
|
839
|
+
}], _focusOut: [{
|
|
840
|
+
type: HostListener,
|
|
841
|
+
args: ['focusout']
|
|
842
|
+
}] } });
|
|
843
|
+
|
|
844
|
+
class NavigationService {
|
|
845
|
+
constructor() {
|
|
846
|
+
/** @hidden */
|
|
847
|
+
this.hiddenItems = signal(new Map());
|
|
848
|
+
}
|
|
849
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: NavigationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
850
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: NavigationService }); }
|
|
851
|
+
}
|
|
852
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: NavigationService, decorators: [{
|
|
853
|
+
type: Injectable
|
|
854
|
+
}] });
|
|
855
|
+
|
|
856
|
+
class NavigationComponent extends FdbNavigationComponent {
|
|
857
|
+
constructor() {
|
|
858
|
+
super(...arguments);
|
|
859
|
+
/** @hidden */
|
|
860
|
+
this.class = '';
|
|
861
|
+
/** @hidden */
|
|
862
|
+
this.elementRef = inject(ElementRef);
|
|
863
|
+
/**
|
|
864
|
+
* Whether to show a separator between home item and the rest of the navigation items.
|
|
865
|
+
* Default is true.
|
|
866
|
+
*/
|
|
867
|
+
this.homeSeparator = signal(true);
|
|
868
|
+
/** @hidden */
|
|
869
|
+
this.mode = signal('');
|
|
870
|
+
/** @hidden */
|
|
871
|
+
this.state = signal('expanded');
|
|
872
|
+
/** @hidden */
|
|
873
|
+
this.type = signal('vertical');
|
|
874
|
+
/** @hidden */
|
|
875
|
+
this.homeDirective = signal(null);
|
|
876
|
+
/** @hidden */
|
|
877
|
+
this.defaultLinkTemplate = signal(null);
|
|
878
|
+
/** @hidden */
|
|
879
|
+
this.homeLinkTemplate = computed(() => {
|
|
880
|
+
const homeDirective = this.homeDirective();
|
|
881
|
+
return homeDirective ? homeDirective.templateRef : this.defaultLinkTemplate();
|
|
882
|
+
});
|
|
883
|
+
/** @hidden */
|
|
884
|
+
this._isSnapped$ = toObservable(this.isSnapped);
|
|
885
|
+
/** @hidden */
|
|
886
|
+
this._destroyRef = inject(DestroyRef);
|
|
887
|
+
}
|
|
888
|
+
/** @hidden */
|
|
889
|
+
set _state(state) {
|
|
890
|
+
this.state.set(state);
|
|
891
|
+
}
|
|
892
|
+
/** @hidden */
|
|
893
|
+
set _horizontal(horizontal) {
|
|
894
|
+
this.type.set(horizontal ? 'horizontal' : 'vertical');
|
|
895
|
+
}
|
|
896
|
+
/** @hidden */
|
|
897
|
+
set _mode(mode) {
|
|
898
|
+
this.mode.set(mode);
|
|
899
|
+
}
|
|
900
|
+
/** @hidden */
|
|
901
|
+
set _type(type) {
|
|
902
|
+
this.type.set(type);
|
|
903
|
+
}
|
|
904
|
+
/** @hidden */
|
|
905
|
+
set _homeSeparator(value) {
|
|
906
|
+
// It will always be a boolean, because of the transform
|
|
907
|
+
this.homeSeparator.set(value);
|
|
908
|
+
}
|
|
909
|
+
/** @hidden */
|
|
910
|
+
set _homeDirective(homeDirective) {
|
|
911
|
+
this.homeDirective.set(homeDirective);
|
|
912
|
+
}
|
|
913
|
+
/** @hidden */
|
|
914
|
+
set _defaultLinkTemplate(templateRef) {
|
|
915
|
+
this.defaultLinkTemplate.set(templateRef);
|
|
916
|
+
}
|
|
917
|
+
/** @hidden */
|
|
918
|
+
buildComponentCssClass() {
|
|
919
|
+
return [
|
|
920
|
+
this.class,
|
|
921
|
+
'fd-navigation',
|
|
922
|
+
this.type() === 'horizontal' ? 'fd-navigation--horizontal' : 'fd-navigation--vertical',
|
|
923
|
+
this.mode() ? `fd-navigation--${this.mode()}` : '',
|
|
924
|
+
// Mobile mode should not support snapped state.
|
|
925
|
+
this.isSnapped() || this.state() !== 'snapped' ? `fd-navigation--${this.state()}` : ''
|
|
926
|
+
];
|
|
927
|
+
}
|
|
928
|
+
/** @hidden */
|
|
929
|
+
keyDownHandler(event) {
|
|
930
|
+
if (KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW])) {
|
|
931
|
+
this._keyboardEventsManager?.onKeydown(event);
|
|
932
|
+
}
|
|
933
|
+
}
|
|
934
|
+
/** @hidden */
|
|
935
|
+
ngOnChanges() {
|
|
936
|
+
this.buildComponentCssClass();
|
|
937
|
+
}
|
|
938
|
+
/** @hidden */
|
|
939
|
+
ngOnInit() {
|
|
940
|
+
this.buildComponentCssClass();
|
|
941
|
+
}
|
|
942
|
+
/** @hidden */
|
|
943
|
+
ngAfterViewInit() {
|
|
944
|
+
this._navigationContents.changes
|
|
945
|
+
.pipe(startWith(null), switchMap(() => merge(this._isSnapped$, ...this._navigationContents.map((content) => content.refresh$)).pipe(startWith(null), debounceTime(5))), takeUntilDestroyed(this._destroyRef))
|
|
946
|
+
.subscribe(() => {
|
|
947
|
+
const listItems = this._navigationContents.reduce((items, content) => {
|
|
948
|
+
items.push(...content.getNavigatableItems());
|
|
949
|
+
return items;
|
|
950
|
+
}, []);
|
|
951
|
+
// Reset keyboard manager.
|
|
952
|
+
this._keyboardEventsManager?.destroy();
|
|
953
|
+
const homeListItem = this._navigationLists.find((list) => !!list.homeListItem)?.homeListItem;
|
|
954
|
+
if (homeListItem) {
|
|
955
|
+
listItems.unshift(homeListItem);
|
|
956
|
+
}
|
|
957
|
+
this._keyboardEventsManager = new FocusKeyManager(listItems)
|
|
958
|
+
.withVerticalOrientation(true)
|
|
959
|
+
.skipPredicate((item) => {
|
|
960
|
+
if (!item.elementRef.nativeElement.isConnected) {
|
|
961
|
+
return true;
|
|
962
|
+
}
|
|
963
|
+
if (item.alwaysFocusable) {
|
|
964
|
+
return false;
|
|
965
|
+
}
|
|
966
|
+
const moreOpened = this._navigationContents.some((c) => c.showMoreOpened());
|
|
967
|
+
if (item.level() === 1) {
|
|
968
|
+
if (!this.isSnapped()) {
|
|
969
|
+
return false;
|
|
970
|
+
}
|
|
971
|
+
if (item.normalizedLevel() === 1) {
|
|
972
|
+
return true;
|
|
973
|
+
}
|
|
974
|
+
return item._hidden() && !moreOpened;
|
|
975
|
+
}
|
|
976
|
+
if (this.isSnapped()) {
|
|
977
|
+
if (item.inPortal() &&
|
|
978
|
+
(item.parentListItemComponent?.isOpen || item.parentNavigationListComponent.focused) &&
|
|
979
|
+
moreOpened) {
|
|
980
|
+
return false;
|
|
981
|
+
}
|
|
982
|
+
if (item._hidden()) {
|
|
983
|
+
return true;
|
|
984
|
+
}
|
|
985
|
+
return item.parentListItemComponent?.expandedAttr() !== true;
|
|
986
|
+
}
|
|
987
|
+
const navigatable = item.parentListItemComponent?.fullPathExpanded() === false;
|
|
988
|
+
return navigatable;
|
|
989
|
+
});
|
|
990
|
+
});
|
|
991
|
+
}
|
|
992
|
+
/** @hidden */
|
|
993
|
+
setNextItemActive() {
|
|
994
|
+
this._keyboardEventsManager?.setNextItemActive();
|
|
995
|
+
}
|
|
996
|
+
/** @hidden */
|
|
997
|
+
setPreviousItemActive() {
|
|
998
|
+
this._keyboardEventsManager?.setPreviousItemActive();
|
|
999
|
+
}
|
|
1000
|
+
/** @hidden */
|
|
1001
|
+
setActiveItem(item) {
|
|
1002
|
+
this._keyboardEventsManager?.setActiveItem(item);
|
|
1003
|
+
}
|
|
1004
|
+
/** @hidden */
|
|
1005
|
+
focusMoreButton() {
|
|
1006
|
+
const showMoreButton = this._navigationContents.find((c) => !!c.showMoreOverflowItem)?.showMoreOverflowItem;
|
|
1007
|
+
showMoreButton?.focus();
|
|
1008
|
+
showMoreButton?.collapse();
|
|
1009
|
+
}
|
|
1010
|
+
/** @hidden */
|
|
1011
|
+
getMoreButton() {
|
|
1012
|
+
return this._navigationContents.find((c) => !!c.showMoreOverflowItem)?.showMoreOverflowItem;
|
|
1013
|
+
}
|
|
1014
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: NavigationComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
1015
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "16.2.7", type: NavigationComponent, isStandalone: true, selector: "fdb-navigation", inputs: { class: "class", _state: ["state", "_state"], _horizontal: ["horizontal", "_horizontal"], _mode: ["mode", "_mode"], _type: ["type", "_type"], _homeSeparator: ["homeSeparator", "_homeSeparator", coerceBooleanProperty] }, host: { attributes: { "role": "navigation" }, listeners: { "keydown": "keyDownHandler($event)" } }, providers: [
|
|
1016
|
+
NavigationService,
|
|
1017
|
+
{
|
|
1018
|
+
provide: FdbNavigationComponent,
|
|
1019
|
+
useExisting: forwardRef(() => NavigationComponent)
|
|
1020
|
+
}
|
|
1021
|
+
], queries: [{ propertyName: "_homeDirective", first: true, predicate: NavigationHomeDirective, descendants: true }, { propertyName: "_navigationItems", predicate: FdbNavigationListItemComponent, descendants: true }, { propertyName: "_navigationLists", predicate: FdbNavigationListComponent, descendants: true }, { propertyName: "_navigationContents", predicate: NavigationContentComponent, descendants: true }], viewQueries: [{ propertyName: "_defaultLinkTemplate", first: true, predicate: ["defaultLinkTemplate"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
|
|
1022
|
+
<ng-content></ng-content>
|
|
1023
|
+
<ng-template #defaultLinkTemplate>
|
|
1024
|
+
<a fdb-navigation-link glyph="home" label="Home"></a>
|
|
1025
|
+
</ng-template>
|
|
1026
|
+
`, isInline: true, styles: ["@charset \"UTF-8\";/*!\n * Fundamental Library Styles v0.30.2\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-navigation{--fdNavigation_Height:100%;--fdNavigation_Padding_X:.75rem;--fdNavigation_Padding_Top:1.25rem;--fdNavigation_Item_Spacing:.25rem;--fdNavigation_Padding_Bottom:.5rem;--fdNavigation_Horizontal_Height:3.5rem;--fdNavigation_Expander_Position_Right:.5rem;--fdNavigation_Border_Radius:.5rem .5rem 0 0;--fdNavigation_Box_Shadow:var(--sapNavigation_Shadow1);--fdNavigation_Link_Icon_Size:1rem;--fdNavigation_Link_Min_Height:2rem;--fdNavigation_Link_Font_Weight:bold;--fdNavigation_Link_Spacing:.4375rem;--fdNavigation_Link_Text_Color:inherit;--fdNavigation_Link_Padding_Left:.5rem;--fdNavigation_Link_Padding_Right:.5rem;--fdNavigation_Link_Child_Indicator_Opacity:1;--fdNavigation_Link_Font_Size:var(--sapFontSize);--fdNavigation_Link_Selection_Indicator_Size:.5rem;--fdNavigation_Link_Has_Child_Indicator_Display:flex;--fdNavigation_Link_Selection_Indicator_Display:none;--fdNavigation_Link_Back_Indicator_Icon:\"\\e1ee\";--fdNavigation_Link_Has_Child_Indicator_Icon:\"\\e1ed\";--fdNavigation_Link_External_Link_Indicator_Icon:\"\\e04c\";--fdNavigation_Link_Background:var(--sapNavigation_Background);--fdNavigation_Link_Border_Color:var(--fdNavigation_Link_Border_Color_Normal);--fdNavigation_Link_Border_Bottom_Color:var(--fdNavigation_Link_Border_Bottom_Color_Normal);--fdNavigation_Item_Group_Display:flex;--fdNavigation_Item_Title_Display:none;--fdNavigation_Item_Text_Display:inline-block;--fdNavigation_Item_Selected_Background:0 100%/100% .125rem no-repeat linear-gradient(0deg,var(--sapShell_Navigation_SelectedColor),var(--sapShell_Navigation_SelectedColor)),var(--sapNavigation_Selected_Background);--fdNavigation_List_Container_Display:none;--fdNavigation_List_Parent_Items_Display:none;-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-navigation:after,.fd-navigation:before{box-sizing:inherit;font-size:inherit}.fd-navigation--vertical{-webkit-box-pack:justify;-ms-flex-pack:justify;-webkit-box-shadow:var(--fdNavigation_Box_Shadow);background:var(--sapNavigation_Background);border-radius:var(--fdNavigation_Border_Radius);box-shadow:var(--fdNavigation_Box_Shadow);display:flex;flex-direction:column;height:var(--fdNavigation_Height);justify-content:space-between;min-width:16rem;padding-bottom:var(--fdNavigation_Padding_Bottom);padding-top:var(--fdNavigation_Padding_Top)}.fd-navigation--vertical.fd-navigation--popup{--fdNavigation_Height:auto;--fdNavigation_Padding_Top:.25rem;--fdNavigation_Border_Radius:.5rem;--fdNavigation_Box_Shadow:var(--sapNavigation_Shadow2)}.fd-navigation--vertical.fd-navigation--popup .fd-navigation__container--bottom,.fd-navigation--vertical.fd-navigation--popup .fd-navigation__container--top{--fdNavigation_Padding_X:.5rem}.fd-navigation--vertical.fd-navigation--snapped{--fdNavigation_Border_Radius:.5rem .5rem 0 0;max-width:3.5rem;min-width:3.5rem;width:3.5rem}.fd-navigation--horizontal{background:var(--sapNavigation_Background);height:var(--fdNavigation_Horizontal_Height);padding:.75rem 1.5rem;width:100%}.fd-navigation--horizontal .fd-navigation__link{--fdNavigation_Link_Spacing:.5rem}.fd-navigation--horizontal .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow).is-selected,.fd-navigation--horizontal .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow)[aria-selected=true]{--fdNavigation_Link_Selection_Indicator_Display:none;--fdNavigation_Link_Background:var(--fdNavigation_Item_Selected_Background)}.fd-navigation--horizontal .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow).is-selected .fd-navigation__link.is-focus,.fd-navigation--horizontal .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow).is-selected .fd-navigation__link:focus,.fd-navigation--horizontal .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow)[aria-selected=true] .fd-navigation__link.is-focus,.fd-navigation--horizontal .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow)[aria-selected=true] .fd-navigation__link:focus{--fdNavigation_Link_Background:var(--fdNavigation_Item_Selected_Background);z-index:5}.fd-navigation--horizontal .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow).is-selected .fd-navigation__link.is-hover,.fd-navigation--horizontal .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow).is-selected .fd-navigation__link:hover,.fd-navigation--horizontal .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow)[aria-selected=true] .fd-navigation__link.is-hover,.fd-navigation--horizontal .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow)[aria-selected=true] .fd-navigation__link:hover{--fdNavigation_Link_Background:var(--fdNavigation_Item_Selected_Background)}.fd-navigation--horizontal .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow).is-selected.is-expanded .fd-navigation__link,.fd-navigation--horizontal .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow).is-selected[aria-expanded=true] .fd-navigation__link,.fd-navigation--horizontal .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow)[aria-selected=true].is-expanded .fd-navigation__link,.fd-navigation--horizontal .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow)[aria-selected=true][aria-expanded=true] .fd-navigation__link{--fdNavigation_Link_Selection_Indicator_Display:none;--fdNavigation_Link_Background:var(--fdNavigation_Item_Selected_Background)}.fd-navigation--horizontal .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow).is-expanded .fd-navigation__link:before,.fd-navigation--horizontal .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow)[aria-expanded=true] .fd-navigation__link:before{--fdNavigation_Link_Border_Bottom_Color:var(--fdNavigation_Link_Border_Color)}.fd-navigation--horizontal .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow) .fd-navigation__link:before{--fdNavigation_Link_Border_Bottom_Color:transparent}.fd-navigation--horizontal .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow) .fd-navigation__link.is-hover:before,.fd-navigation--horizontal .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow) .fd-navigation__link:hover:before{--fdNavigation_Link_Border_Bottom_Color:var(--fdNavigation_Link_Border_Color)}.fd-navigation--horizontal .fd-navigation__list:not(.fd-navigation__list--parent-items):not(.fd-navigation__list--child-items){--fdNavigation_Item_Spacing:.75rem;flex-direction:row}.fd-navigation--horizontal .fd-navigation__list:not(.fd-navigation__list--parent-items):not(.fd-navigation__list--child-items) .fd-navigation__has-children-indicator{--fdNavigation_Link_Has_Child_Indicator_Icon:\"\\e287\"}.fd-navigation--horizontal .fd-navigation__list--child-items{--fdNavigation_Item_Spacing:0}.fd-navigation--horizontal .fd-navigation__list-item--spacer{height:.75rem;width:100%}.fd-navigation--horizontal .fd-navigation__list-item--home{background:transparent;padding-top:0;position:relative}.fd-navigation--horizontal .fd-navigation__list-item--home:before{content:none}.fd-navigation--horizontal .fd-navigation__list-container{--fdPopover_Offset:calc(100% + .3875rem);-webkit-box-shadow:var(--sapMenu_Shadow2);background:var(--sapGroup_ContentBackground);border:none;border-radius:.75rem;box-shadow:var(--sapMenu_Shadow2);padding:.05rem}.fd-navigation--horizontal .fd-navigation__list-container.fd-navigation__list-container--menu{box-shadow:var(--sapMenu_Shadow1);padding:.5rem;position:absolute;right:-.5rem;top:calc(100% + .3875rem)}.fd-navigation--horizontal .fd-navigation__list-container.fd-navigation__list-container--menu[dir=rtl],[dir=rtl] .fd-navigation--horizontal .fd-navigation__list-container.fd-navigation__list-container--menu{left:-.5rem;right:auto}.fd-navigation--horizontal .fd-navigation__list-container.fd-navigation__list-container--menu .fd-navigation__list-wrapper{padding:0}.fd-navigation--horizontal .fd-navigation__list-container.fd-navigation__list-container--menu .fd-navigation__list{--fdNavigation_Item_Spacing:0;box-shadow:none}.fd-navigation--horizontal .fd-navigation__list-container.fd-navigation__list-container--menu .fd-navigation__item.is-expanded .fd-navigation__has-children-indicator,.fd-navigation--horizontal .fd-navigation__list-container.fd-navigation__list-container--menu .fd-navigation__item[aria-expanded=true] .fd-navigation__has-children-indicator{--fdNavigation_Link_Has_Child_Indicator_Icon:\"\\e1ed\"}[dir=rtl] .fd-navigation--horizontal .fd-navigation__list-container.fd-navigation__list-container--menu .fd-navigation__item.is-expanded .fd-navigation__has-children-indicator,[dir=rtl] .fd-navigation--horizontal .fd-navigation__list-container.fd-navigation__list-container--menu .fd-navigation__item[aria-expanded=true] .fd-navigation__has-children-indicator{--fdNavigation_Link_Has_Child_Indicator_Icon:\"\\e1ee\"}.fd-navigation--horizontal .fd-navigation__list-container.fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link.is-hover,.fd-navigation--horizontal .fd-navigation__list-container.fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link:hover{width:100%}.fd-navigation--horizontal .fd-navigation__list-container.fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link.is-hover .fd-navigation__text,.fd-navigation--horizontal .fd-navigation__list-container.fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link:hover .fd-navigation__text{--fdNavigation_Item_Text_Display:inline-block}.fd-navigation--horizontal .fd-navigation__list-container.fd-navigation__list-container--submenu{box-shadow:var(--sapMenu_Shadow1);left:calc(-100% - .1875rem);margin:0;padding:.5rem;top:calc(var(--fdNavigation_Link_Min_Height) - .5rem)}.fd-navigation--horizontal .fd-navigation__list-container.fd-navigation__list-container--submenu[dir=rtl],[dir=rtl] .fd-navigation--horizontal .fd-navigation__list-container.fd-navigation__list-container--submenu{left:auto;right:calc(-100% - .1875rem)}.fd-navigation--horizontal .fd-navigation__list-wrapper{padding:.7rem}.fd-navigation--horizontal .fd-navigation__item.is-expanded .fd-navigation__link,.fd-navigation--horizontal .fd-navigation__item[aria-expanded=true] .fd-navigation__link{--fdNavigation_Link_Child_Indicator_Opacity:1;--fdNavigation_Link_Background:var(--sapMenu_Active_Background);--fdNavigation_Link_Border_Color:var(--fdNavigation_Link_Border_Color_Active);--fdNavigation_Link_Border_Bottom_Color:var(--fdNavigation_Link_Border_Color_Active)}.fd-navigation--horizontal .fd-navigation__item.is-expanded .fd-navigation__link.is-focus,.fd-navigation--horizontal .fd-navigation__item.is-expanded .fd-navigation__link:focus,.fd-navigation--horizontal .fd-navigation__item[aria-expanded=true] .fd-navigation__link.is-focus,.fd-navigation--horizontal .fd-navigation__item[aria-expanded=true] .fd-navigation__link:focus{--fdNavigation_Link_Child_Indicator_Opacity:1;--fdNavigation_Link_Background:var(--sapMenu_Active_Background);--fdNavigation_Link_Border_Color:var(--fdNavigation_Link_Border_Color_Active);--fdNavigation_Link_Border_Bottom_Color:var(--fdNavigation_Link_Border_Color_Active);z-index:5}.fd-navigation--horizontal .fd-navigation__item.is-expanded.is-selected .fd-navigation__link,.fd-navigation--horizontal .fd-navigation__item.is-expanded[aria-selected=true] .fd-navigation__link,.fd-navigation--horizontal .fd-navigation__item[aria-expanded=true].is-selected .fd-navigation__link,.fd-navigation--horizontal .fd-navigation__item[aria-expanded=true][aria-selected=true] .fd-navigation__link{--fdNavigation_Link_Selection_Indicator_Display:inline-block;--fdNavigation_Link_Background:var(--sapNavigation_Selected_Background);--fdNavigation_Link_Border_Color:var(--fdNavigation_Link_Border_Color_Selected);--fdNavigation_Link_Border_Bottom_Color:var(--fdNavigation_Link_Border_Color_Selected)}.fd-navigation--horizontal .fd-navigation__item--child .fd-navigation__link{--fdNavigation_Link_Padding_Left:.5rem}.fd-navigation--snapped .fd-navigation__container--bottom,.fd-navigation--snapped .fd-navigation__container--top{overflow:visible}.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--title) .fd-navigation__link{--fdNavigation_Link_Spacing:.5rem}.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--title).is-expanded+.fd-navigation__list-container,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--title)[aria-expanded=true]+.fd-navigation__list-container{display:flex}.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--title).is-expanded .fd-navigation__link,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--title)[aria-expanded=true] .fd-navigation__link{--fdNavigation_Link_Child_Indicator_Opacity:1;--fdNavigation_Link_Background:var(--sapMenu_Active_Background);--fdNavigation_Link_Border_Color:var(--fdNavigation_Link_Border_Color_Active);--fdNavigation_Link_Border_Bottom_Color:var(--fdNavigation_Link_Border_Color_Active)}.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--title).is-expanded .fd-navigation__link.is-focus,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--title).is-expanded .fd-navigation__link:focus,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--title)[aria-expanded=true] .fd-navigation__link.is-focus,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--title)[aria-expanded=true] .fd-navigation__link:focus{--fdNavigation_Link_Child_Indicator_Opacity:1;--fdNavigation_Link_Background:var(--sapMenu_Active_Background);--fdNavigation_Link_Border_Color:var(--fdNavigation_Link_Border_Color_Active);--fdNavigation_Link_Border_Bottom_Color:var(--fdNavigation_Link_Border_Color_Active);z-index:5}.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--title).is-expanded.is-selected .fd-navigation__link,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--title).is-expanded[aria-selected=true] .fd-navigation__link,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--title)[aria-expanded=true].is-selected .fd-navigation__link,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--title)[aria-expanded=true][aria-selected=true] .fd-navigation__link{--fdNavigation_Link_Background:var(--sapNavigation_Selected_Background)}.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow).is-selected,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow)[aria-selected=true]{--fdNavigation_Link_Selection_Indicator_Display:none;--fdNavigation_Link_Background:var(--fdNavigation_Item_Selected_Background)}.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow).is-selected .fd-navigation__link.is-focus,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow).is-selected .fd-navigation__link:focus,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow)[aria-selected=true] .fd-navigation__link.is-focus,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow)[aria-selected=true] .fd-navigation__link:focus{--fdNavigation_Link_Background:var(--fdNavigation_Item_Selected_Background);z-index:5}.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow).is-selected .fd-navigation__link.is-hover,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow).is-selected .fd-navigation__link:hover,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow)[aria-selected=true] .fd-navigation__link.is-hover,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow)[aria-selected=true] .fd-navigation__link:hover{--fdNavigation_Link_Background:var(--fdNavigation_Item_Selected_Background)}.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow).is-selected.is-expanded .fd-navigation__link,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow).is-selected[aria-expanded=true] .fd-navigation__link,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow)[aria-selected=true].is-expanded .fd-navigation__link,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow)[aria-selected=true][aria-expanded=true] .fd-navigation__link{--fdNavigation_Link_Selection_Indicator_Display:none;--fdNavigation_Link_Background:var(--fdNavigation_Item_Selected_Background)}.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow).is-expanded .fd-navigation__link:before,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow)[aria-expanded=true] .fd-navigation__link:before{--fdNavigation_Link_Border_Bottom_Color:var(--fdNavigation_Link_Border_Color)}.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow) .fd-navigation__link:before{--fdNavigation_Link_Border_Bottom_Color:transparent}.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow) .fd-navigation__link.is-hover:before,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow) .fd-navigation__link:hover:before{--fdNavigation_Link_Border_Bottom_Color:var(--fdNavigation_Link_Border_Color)}.fd-navigation--snapped .fd-navigation__item--with-expander .fd-navigation__link{--fdNavigation_Link_Padding_Right:.5rem}.fd-navigation--snapped .fd-navigation__item--with-expander .fd-navigation__expander{display:none}.fd-navigation--snapped .fd-navigation__item--group{--fdNavigation_Item_Group_Display:none}.fd-navigation--snapped .fd-navigation__item--child .fd-navigation__link{--fdNavigation_Link_Padding_Left:.5rem}.fd-navigation--snapped .fd-navigation__has-children-indicator{--fdNavigation_Link_Has_Child_Indicator_Display:none}.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link.is-hover,.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link:hover{width:-moz-fit-content;width:fit-content}.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link.is-hover .fd-navigation__text,.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link:hover .fd-navigation__text{--fdNavigation_Item_Text_Display:inline-block}.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link.is-focus,.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link:focus{width:-moz-fit-content;width:fit-content;z-index:5}.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link.is-focus .fd-navigation__text,.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link:focus .fd-navigation__text{--fdNavigation_Item_Text_Display:inline-block}.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child).is-expanded>.fd-navigation__link.is-hover,.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child).is-expanded>.fd-navigation__link:hover,.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)[aria-expanded=true]>.fd-navigation__link.is-hover,.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)[aria-expanded=true]>.fd-navigation__link:hover{width:auto}.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child).is-expanded>.fd-navigation__link.is-hover .fd-navigation__text,.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child).is-expanded>.fd-navigation__link:hover .fd-navigation__text,.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)[aria-expanded=true]>.fd-navigation__link.is-hover .fd-navigation__text,.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)[aria-expanded=true]>.fd-navigation__link:hover .fd-navigation__text{--fdNavigation_Item_Text_Display:none}.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child).is-expanded>.fd-navigation__link.is-focus,.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child).is-expanded>.fd-navigation__link:focus,.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)[aria-expanded=true]>.fd-navigation__link.is-focus,.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)[aria-expanded=true]>.fd-navigation__link:focus{width:auto;z-index:5}.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child).is-expanded>.fd-navigation__link.is-focus .fd-navigation__text,.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child).is-expanded>.fd-navigation__link:focus .fd-navigation__text,.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)[aria-expanded=true]>.fd-navigation__link.is-focus .fd-navigation__text,.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)[aria-expanded=true]>.fd-navigation__link:focus .fd-navigation__text{--fdNavigation_Item_Text_Display:none}.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link.is-hover,.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link:hover{width:100%}.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link.is-hover .fd-navigation__text,.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link:hover .fd-navigation__text{--fdNavigation_Item_Text_Display:inline-block}.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link.is-focus,.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link:focus{width:100%;z-index:5}.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link.is-focus .fd-navigation__text,.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link:focus .fd-navigation__text{--fdNavigation_Item_Text_Display:inline-block}.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child).is-expanded>.fd-navigation__link.is-hover,.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child).is-expanded>.fd-navigation__link:hover,.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)[aria-expanded=true]>.fd-navigation__link.is-hover,.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)[aria-expanded=true]>.fd-navigation__link:hover{width:100%}.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child).is-expanded>.fd-navigation__link.is-hover .fd-navigation__text,.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child).is-expanded>.fd-navigation__link:hover .fd-navigation__text,.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)[aria-expanded=true]>.fd-navigation__link.is-hover .fd-navigation__text,.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)[aria-expanded=true]>.fd-navigation__link:hover .fd-navigation__text{--fdNavigation_Item_Text_Display:inline-block}.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child).is-expanded>.fd-navigation__link.is-focus,.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child).is-expanded>.fd-navigation__link:focus,.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)[aria-expanded=true]>.fd-navigation__link.is-focus,.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)[aria-expanded=true]>.fd-navigation__link:focus{width:100%;z-index:5}.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child).is-expanded>.fd-navigation__link.is-focus .fd-navigation__text,.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child).is-expanded>.fd-navigation__link:focus .fd-navigation__text,.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)[aria-expanded=true]>.fd-navigation__link.is-focus .fd-navigation__text,.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)[aria-expanded=true]>.fd-navigation__link:focus .fd-navigation__text{--fdNavigation_Item_Text_Display:inline-block}.fd-navigation--snapped .fd-navigation__list-container{-webkit-box-shadow:var(--sapMenu_Shadow2);background:var(--sapGroup_ContentBackground);border:none;border-radius:.75rem;box-shadow:var(--sapMenu_Shadow2);padding:.05rem}.fd-navigation--snapped .fd-navigation__list-container .fd-navigation__list--parent-items{--fdNavigation_List_Parent_Items_Display:flex}.fd-navigation--snapped .fd-navigation__list-container .fd-navigation__has-children-indicator{--fdNavigation_Link_Has_Child_Indicator_Display:flex}.fd-navigation--snapped .fd-navigation__list-container .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link.is-hover,.fd-navigation--snapped .fd-navigation__list-container .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link:hover{width:auto}.fd-navigation--snapped .fd-navigation__list-container.fd-navigation__list-container--menu{box-shadow:var(--sapMenu_Shadow1);left:calc(100% + .1875rem);padding:.5rem;position:absolute;top:0}.fd-navigation--snapped .fd-navigation__list-container.fd-navigation__list-container--menu[dir=rtl],[dir=rtl] .fd-navigation--snapped .fd-navigation__list-container.fd-navigation__list-container--menu{left:auto;right:calc(100% + .1875rem)}.fd-navigation--snapped .fd-navigation__list-container.fd-navigation__list-container--menu .fd-navigation__list-wrapper{padding:0}.fd-navigation--snapped .fd-navigation__list-container.fd-navigation__list-container--menu .fd-navigation__list{--fdNavigation_Item_Spacing:0;box-shadow:none}.fd-navigation--snapped .fd-navigation__list-container.fd-navigation__list-container--menu .fd-navigation__item.is-expanded .fd-navigation__has-children-indicator,.fd-navigation--snapped .fd-navigation__list-container.fd-navigation__list-container--menu .fd-navigation__item[aria-expanded=true] .fd-navigation__has-children-indicator{--fdNavigation_Link_Has_Child_Indicator_Icon:\"\\e1ed\"}[dir=rtl] .fd-navigation--snapped .fd-navigation__list-container.fd-navigation__list-container--menu .fd-navigation__item .fd-navigation__has-children-indicator{--fdNavigation_Link_Has_Child_Indicator_Icon:\"\\e1ee\"}.fd-navigation--snapped .fd-navigation__list-container.fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link.is-hover,.fd-navigation--snapped .fd-navigation__list-container.fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link:hover{width:100%}.fd-navigation--snapped .fd-navigation__list-container.fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link.is-hover .fd-navigation__text,.fd-navigation--snapped .fd-navigation__list-container.fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link:hover .fd-navigation__text{--fdNavigation_Item_Text_Display:inline-block}.fd-navigation--snapped .fd-navigation__list-container.fd-navigation__list-container--submenu{box-shadow:var(--sapMenu_Shadow1);left:calc(100% + .1875rem);margin:0;padding:.5rem;top:calc(var(--fdNavigation_Link_Min_Height) - .5rem)}.fd-navigation--snapped .fd-navigation__list-container.fd-navigation__list-container--submenu[dir=rtl],[dir=rtl] .fd-navigation--snapped .fd-navigation__list-container.fd-navigation__list-container--submenu{left:auto;right:calc(100% + .1875rem)}.fd-navigation--snapped .fd-navigation__list-wrapper{padding:.7rem}.fd-navigation--snapped .fd-navigation__item--title{display:flex;height:auto;margin-bottom:.75rem}.fd-navigation--snapped .fd-navigation__item--title .fd-navigation__text{--fdNavigation_Item_Title_Display:block;font-size:1.25rem;font-weight:700;line-height:1.5rem}.fd-navigation--snapped .fd-navigation__list--child-items{--fdNavigation_Item_Spacing:0;height:auto}.fd-navigation--phone .fd-navigation__link,.fd-navigation--tablet .fd-navigation__link{--fdNavigation_Link_Min_Height:2.5rem;--fdNavigation_Link_Padding_Left:.6875rem;--fdNavigation_Link_Padding_Right:.6875rem}.fd-navigation--phone .fd-navigation__container--bottom,.fd-navigation--phone .fd-navigation__container--top,.fd-navigation--tablet .fd-navigation__container--bottom,.fd-navigation--tablet .fd-navigation__container--top{--fdNavigation_Padding_X:.5rem}.fd-navigation--phone .fd-navigation__icon,.fd-navigation--tablet .fd-navigation__icon{--fdNavigation_Link_Icon_Size:1.125rem}.fd-navigation--phone .fd-navigation__item--with-expander .fd-navigation__link,.fd-navigation--tablet .fd-navigation__item--with-expander .fd-navigation__link{--fdNavigation_Link_Padding_Right:2.375rem}.fd-navigation--phone .fd-navigation__item--with-expander .fd-navigation__expander,.fd-navigation--tablet .fd-navigation__item--with-expander .fd-navigation__expander{--fdNavigation_Expander_Position_Right:.6875rem}.fd-navigation--phone .fd-navigation__list,.fd-navigation--phone .fd-navigation__list-item,.fd-navigation--tablet .fd-navigation__list,.fd-navigation--tablet .fd-navigation__list-item{--fdNavigation_Item_Spacing:.125rem}.fd-navigation--phone.fd-navigation--snapped .fd-navigation__item--with-expander .fd-navigation__link,.fd-navigation--tablet.fd-navigation--snapped .fd-navigation__item--with-expander .fd-navigation__link{--fdNavigation_Link_Padding_Right:.6875rem}.fd-navigation--phone.fd-navigation--horizontal,.fd-navigation--tablet.fd-navigation--horizontal{--fdNavigation_Horizontal_Height:4rem}.fd-navigation--phone.fd-navigation--horizontal .fd-navigation__list--child-items,.fd-navigation--tablet.fd-navigation--horizontal .fd-navigation__list--child-items{--fdNavigation_Item_Spacing:0}.fd-navigation__container{position:relative}.fd-navigation__container--top{height:100%;overflow:scroll;padding-bottom:.25rem;position:relative}.fd-navigation__container--bottom,.fd-navigation__container--top{padding-left:var(--fdNavigation_Padding_X);padding-right:var(--fdNavigation_Padding_X)}.fd-navigation__container--bottom:before{background:var(--sapToolbar_SeparatorColor);content:\"\";display:inline-block;height:.0625rem;margin-bottom:.5625rem;margin-top:.5625rem;width:100%}.fd-navigation__list-container{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);display:var(--fdNavigation_List_Container_Display);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-navigation__list-container:after,.fd-navigation__list-container:before{box-sizing:inherit;font-size:inherit}.fd-navigation__list-wrapper{width:100%}.fd-navigation__list{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:column;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;gap:var(--fdNavigation_Item_Spacing);height:100%;line-height:var(--sapContent_LineHeight);list-style-type:none;margin:0;padding:0;position:relative}.fd-navigation__list:after,.fd-navigation__list:before{box-sizing:inherit;font-size:inherit}.fd-navigation__list--parent-items{display:var(--fdNavigation_List_Parent_Items_Display)}.fd-navigation__list-item{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:column;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;gap:var(--fdNavigation_Item_Spacing);line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-navigation__list-item:after,.fd-navigation__list-item:before{box-sizing:inherit;font-size:inherit}.fd-navigation__list-item--spacer{background:transparent;height:100%;min-height:.25rem}.fd-navigation__list-item--separator{background:transparent;height:.75rem;max-height:.75rem;min-height:.75rem}.fd-navigation__list-item--home{background:var(--sapList_Background);padding-top:.25rem;position:sticky;top:0;z-index:10}.fd-navigation__list-item--home:before{background:var(--sapList_Background);content:\"\";height:calc(100% + .5rem);left:-.25rem;position:absolute;top:-.25rem;width:calc(100% + .5rem)}[dir=rtl] .fd-navigation__list-item--home:before{left:auto;right:-.25rem}.fd-navigation__list-item--overflow{position:relative}.fd-navigation__link{-webkit-box-sizing:border-box;-webkit-box-align:center;-ms-flex-align:center;-webkit-transition:var(--fdNavigation_Link_Transition);align-items:center;background:var(--fdNavigation_Link_Background);border:0;border-radius:var(--fdNavigation_Link_Border_Radius);box-sizing:border-box;color:var(--sapTextColor);color:var(--sapList_TextColor);cursor:pointer;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;gap:var(--fdNavigation_Link_Spacing);line-height:var(--sapContent_LineHeight);margin:0;min-height:var(--fdNavigation_Link_Min_Height);padding:.5rem 0;padding-left:var(--fdNavigation_Link_Padding_Left);padding-right:var(--fdNavigation_Link_Padding_Right);position:relative;text-align:start;text-decoration:none;transition:var(--fdNavigation_Link_Transition);width:100%}.fd-navigation__link:after,.fd-navigation__link:before{box-sizing:inherit;font-size:inherit}.fd-navigation__link[dir=rtl],[dir=rtl] .fd-navigation__link{padding-left:var(--fdNavigation_Link_Padding_Right);padding-right:var(--fdNavigation_Link_Padding_Left)}.fd-navigation__link:before{border:.0625rem solid var(--fdNavigation_Link_Border_Color);border-bottom:.0625rem solid var(--fdNavigation_Link_Border_Color);border-bottom-color:var(--fdNavigation_Link_Border_Bottom_Color);content:\"\";height:100%;left:0;position:absolute;top:0;width:100%}[dir=rtl] .fd-navigation__link:before{left:auto;right:0}.fd-navigation__link.is-hover,.fd-navigation__link:hover{--fdNavigation_Link_Child_Indicator_Opacity:1;--fdNavigation_Link_Background:var(--sapNavigation_Hover_Background);--fdNavigation_Link_Border_Color:var(--fdNavigation_Link_Border_Color_Hover);--fdNavigation_Link_Border_Bottom_Color:var(--fdNavigation_Link_Border_Color_Hover)}.fd-navigation__link.is-active,.fd-navigation__link.is-active.is-focus,.fd-navigation__link.is-active:focus,.fd-navigation__link:active,.fd-navigation__link:active.is-focus,.fd-navigation__link:active:focus{--fdNavigation_Link_Child_Indicator_Opacity:1;--fdNavigation_Link_Background:var(--sapNavigation_Active_Background);--fdNavigation_Link_Border_Color:var(--fdNavigation_Link_Border_Color_Active);--fdNavigation_Link_Border_Bottom_Color:var(--fdNavigation_Link_Border_Color_Active)}.fd-navigation__link.is-active.is-focus,.fd-navigation__link.is-active:focus,.fd-navigation__link:active.is-focus,.fd-navigation__link:active:focus{outline:none;z-index:5}.fd-navigation__link.is-focus,.fd-navigation__link:focus{--fdNavigation_Link_Border_Color:transparent;--fdNavigation_Link_Child_Indicator_Opacity:1;--fdNavigation_Link_Border_Bottom_Color:transparent;--fdNavigation_Link_Background:var(--sapNavigation_Background);outline:var(--sapContent_FocusStyle) var(--sapContent_FocusWidth) var(--sapContent_FocusColor);z-index:5}.fd-navigation__link:focus-visible{outline-offset:0}.fd-navigation__link.is-disabled,.fd-navigation__link:disabled,.fd-navigation__link[aria-disabled=true]{opacity:var(--sapContent_DisabledOpacity);pointer-events:none}.fd-navigation__link[class*=-compact],[class*=-compact] .fd-navigation__link:not([class*=-cozy]){--fdNavigation_Link_Min_Height:2rem}.fd-navigation__item{-webkit-box-sizing:border-box;align-items:center;border:0;border-radius:var(--fdNavigation_Link_Border_Radius);box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative}.fd-navigation__item:after,.fd-navigation__item:before{box-sizing:inherit;font-size:inherit}.fd-navigation__item.is-expanded .fd-navigation__has-children-indicator,.fd-navigation__item.is-expanded .fd-navigation__has-children-indicator[dir=rtl],.fd-navigation__item[aria-expanded=true] .fd-navigation__has-children-indicator,.fd-navigation__item[aria-expanded=true] .fd-navigation__has-children-indicator[dir=rtl],[dir=rtl] .fd-navigation__item.is-expanded .fd-navigation__has-children-indicator,[dir=rtl] .fd-navigation__item[aria-expanded=true] .fd-navigation__has-children-indicator{--fdNavigation_Link_Has_Child_Indicator_Icon:\"\\e1ef\"}.fd-navigation__item.is-expanded+.fd-navigation__list-container,.fd-navigation__item[aria-expanded=true]+.fd-navigation__list-container{--fdNavigation_List_Container_Display:flex}.fd-navigation__item.is-expanded+.fd-navigation__list--parent-items,.fd-navigation__item[aria-expanded=true]+.fd-navigation__list--parent-items{--fdNavigation_List_Parent_Items_Display:flex}.fd-navigation__item.is-selected,.fd-navigation__item[aria-selected=true]{--fdNavigation_Link_Selection_Indicator_Display:inline-block;--fdNavigation_Link_Background:var(--sapNavigation_Selected_Background);--fdNavigation_Link_Border_Color:var(--fdNavigation_Link_Border_Color_Selected);--fdNavigation_Link_Border_Bottom_Color:var(--fdNavigation_Link_Border_Color_Selected)}.fd-navigation__item.is-selected .fd-navigation__link.is-focus,.fd-navigation__item.is-selected .fd-navigation__link:focus,.fd-navigation__item[aria-selected=true] .fd-navigation__link.is-focus,.fd-navigation__item[aria-selected=true] .fd-navigation__link:focus{--fdNavigation_Link_Background:var(--sapNavigation_Selected_Background);--fdNavigation_Link_Border_Color:var(--fdNavigation_Link_Border_Color_Selected);--fdNavigation_Link_Border_Bottom_Color:var(--fdNavigation_Link_Border_Color_Selected);z-index:5}.fd-navigation__item.is-selected .fd-navigation__link.is-hover,.fd-navigation__item.is-selected .fd-navigation__link:hover,.fd-navigation__item[aria-selected=true] .fd-navigation__link.is-hover,.fd-navigation__item[aria-selected=true] .fd-navigation__link:hover{--fdNavigation_Link_Background:var(--sapNavigation_Selected_Background);--fdNavigation_Link_Border_Color:var(--fdNavigation_Link_Border_Color_Selected);--fdNavigation_Link_Border_Bottom_Color:var(--fdNavigation_Link_Border_Color_Selected)}.fd-navigation__item--with-expander{position:relative}.fd-navigation__item--with-expander .fd-navigation__link{--fdNavigation_Link_Padding_Right:2.1975rem}.fd-navigation__item--with-expander .fd-navigation__expander{position:absolute;right:var(--fdNavigation_Expander_Position_Right);z-index:20}.fd-navigation__item--with-expander .fd-navigation__expander[dir=rtl],[dir=rtl] .fd-navigation__item--with-expander .fd-navigation__expander{left:var(--fdNavigation_Expander_Position_Right);right:auto}.fd-navigation__item--child .fd-navigation__link{--fdNavigation_Link_Spacing:.5rem;--fdNavigation_Link_Font_Weight:normal;--fdNavigation_Link_Padding_Left:2rem}.fd-navigation__item--group{--fdNavigation_Link_Child_Indicator_Opacity:0;display:var(--fdNavigation_Item_Group_Display)}.fd-navigation__item--group .fd-navigation__link{--fdNavigation_Link_Spacing:.4375rem;--fdNavigation_Link_Text_Color:var(--sapContent_LabelColor);--fdNavigation_Link_Font_Weight:600;--fdNavigation_Link_Font_Size:var(--sapFontSmallSize)}.fd-navigation__item--title{display:var(--fdNavigation_Item_Title_Display);height:auto}.fd-navigation__item--title .fd-navigation__text{--fdNavigation_Item_Title_Display:block;font-size:1.25rem;font-weight:700;line-height:1.5rem}.fd-navigation__item--title .fd-navigation__icon[class*=sap-icon]{display:none}.fd-navigation__item--menu.is-expanded,.fd-navigation__item--menu[aria-expanded=true]{--fdNavigation_Link_Child_Indicator_Opacity:1;--fdNavigation_Link_Background:var(--sapNavigation_Active_Background);--fdNavigation_Link_Border_Color:var(--fdNavigation_Link_Border_Color_Active);--fdNavigation_Link_Border_Bottom_Color:var(--fdNavigation_Link_Border_Color_Active)}.fd-navigation__item--menu.is-expanded .fd-navigation__has-children-indicator,.fd-navigation__item--menu[aria-expanded=true] .fd-navigation__has-children-indicator{--fdNavigation_Link_Has_Child_Indicator_Icon:\"\\e1ed\"}.fd-navigation__item--menu.is-expanded .fd-navigation__has-children-indicator[dir=rtl],.fd-navigation__item--menu[aria-expanded=true] .fd-navigation__has-children-indicator[dir=rtl],[dir=rtl] .fd-navigation__item--menu.is-expanded .fd-navigation__has-children-indicator,[dir=rtl] .fd-navigation__item--menu[aria-expanded=true] .fd-navigation__has-children-indicator{--fdNavigation_Link_Has_Child_Indicator_Icon:\"\\e1ee\"}.fd-navigation__item--menu.fd-navigation__item--child .fd-navigation__link{--fdNavigation_Link_Padding_Left:.5rem}.fd-navigation__icon{height:var(--fdNavigation_Link_Icon_Size);max-height:var(--fdNavigation_Link_Icon_Size);max-width:var(--fdNavigation_Link_Icon_Size);min-height:var(--fdNavigation_Link_Icon_Size);min-width:var(--fdNavigation_Link_Icon_Size);width:var(--fdNavigation_Link_Icon_Size)}.fd-navigation__icon [class*=sap-icon],.fd-navigation__icon[class*=sap-icon]{-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;color:inherit;display:flex;font-size:var(--fdNavigation_Link_Icon_Size);justify-content:center}.fd-navigation__text{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--fdNavigation_Link_Text_Color);display:var(--fdNavigation_Item_Text_Display);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:var(--fdNavigation_Link_Font_Size);font-weight:400;font-weight:var(--fdNavigation_Link_Font_Weight);forced-color-adjust:none;line-height:var(--sapContent_LineHeight);line-height:1rem;margin:0;overflow:hidden;padding:0;text-overflow:ellipsis;vertical-align:baseline;white-space:nowrap;width:100%}.fd-navigation__text:after,.fd-navigation__text:before{box-sizing:inherit;font-size:inherit}.fd-navigation__selection-indicator{-webkit-box-sizing:border-box;background:var(--sapList_SelectionBorderColor);border:0;border-radius:100%;box-sizing:border-box;color:var(--sapTextColor);display:var(--fdNavigation_Link_Selection_Indicator_Display);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdNavigation_Link_Selection_Indicator_Size);line-height:var(--sapContent_LineHeight);margin:0;max-height:var(--fdNavigation_Link_Selection_Indicator_Size);max-width:var(--fdNavigation_Link_Selection_Indicator_Size);min-height:var(--fdNavigation_Link_Selection_Indicator_Size);min-width:var(--fdNavigation_Link_Selection_Indicator_Size);padding:0;width:var(--fdNavigation_Link_Selection_Indicator_Size)}.fd-navigation__selection-indicator:after,.fd-navigation__selection-indicator:before{box-sizing:inherit;font-size:inherit}.fd-navigation__has-children-indicator{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-ms-flex-align:center;-webkit-transition:opacity .3s ease-in-out;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;display:var(--fdNavigation_Link_Has_Child_Indicator_Display);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:.75rem;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;max-height:.75rem;max-width:.75rem;min-height:.75rem;min-width:.75rem;opacity:var(--fdNavigation_Link_Child_Indicator_Opacity);padding:0;transition:opacity .3s ease-in-out;width:.75rem}.fd-navigation__has-children-indicator:after,.fd-navigation__has-children-indicator:before{box-sizing:inherit;font-size:inherit}.fd-navigation__has-children-indicator:before{content:var(--fdNavigation_Link_Has_Child_Indicator_Icon);font-family:SAP-icons;font-size:.75rem}[dir=rtl] .fd-navigation__has-children-indicator{--fdNavigation_Link_Has_Child_Indicator_Icon:\"\\e1ee\"}.fd-navigation__external-link-indicator{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:.75rem;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;max-height:.75rem;max-width:.75rem;min-height:.75rem;min-width:.75rem;padding:0;width:.75rem}.fd-navigation__external-link-indicator:after,.fd-navigation__external-link-indicator:before{box-sizing:inherit;font-size:inherit}.fd-navigation__external-link-indicator:before{content:var(--fdNavigation_Link_External_Link_Indicator_Icon);font-family:SAP-icons;font-size:.75rem}.fd-navigation__external-link-indicator[dir=rtl],[dir=rtl] .fd-navigation__external-link-indicator{--fdNavigation_Link_External_Link_Indicator_Icon:\"\\e04d\"}.fd-navigation__back-indicator{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:.75rem;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;max-height:.75rem;max-width:.75rem;min-height:.75rem;min-width:.75rem;padding:0;width:.75rem}.fd-navigation__back-indicator:after,.fd-navigation__back-indicator:before{box-sizing:inherit;font-size:inherit}.fd-navigation__back-indicator:before{content:var(--fdNavigation_Link_Back_Indicator_Icon);font-family:SAP-icons;font-size:.75rem}.fd-navigation__back-indicator[dir=rtl],[dir=rtl] .fd-navigation__back-indicator{--fdNavigation_Link_Back_Indicator_Icon:\"\\e1ed\"}.fd-navigation .fd-navigation__container--top{padding-left:var(--fdNavigation_Padding_X);padding-right:var(--fdNavigation_Padding_X);padding-bottom:.25rem}.fd-navigation__list{min-height:100%;height:auto}.fd-navigation--snapped .fd-navigation__list-item--home{position:relative}.fd-navigation--snapped .fd-navigation__container--top{overflow:visible!important;display:flex;flex-direction:column}.fd-navigation--snapped .fd-navigation__container--top .fd-navigation__list{flex-grow:1;height:auto;min-height:0}.fd-navigation--snapped .fd-navigation__container--top .fd-navigation__list--no-grow{flex-grow:0}.fd-navigation--snapped .fd-navigation__container--hidden-overflow{overflow:hidden!important}.fd-navigation--expanded .fd-navigation__list-item--home,.fd-navigation--popup .fd-navigation__list-item--home{z-index:21}.fd-navigation__list-container--custom-menu{box-shadow:var(--sapMenu_Shadow1)}.fd-navigation__list-item--spacer--hidden{display:none!important}.fd-navigation .fd-navigation-list-item--home-without-separator{margin-bottom:.09rem}.fd-navigation--snapped .fd-navigation__list-container.fd-navigation__list-container--menu{position:relative;transition:none}.fd-navigation__list-item:not(.fd-navigation__list-item--home){position:relative}.fd-navigation__list-container--menu>.fd-scrollbar{overflow:visible!important}.fd-navigation__list-container--menu .fd-navigation__list--parent-items .fd-navigation__list-item:before{content:\"\";position:absolute;top:0;bottom:0;left:-1rem;right:-1rem}.fd-navigation__list-container--menu .fd-navigation__list--parent-items .fd-navigation__list-item>.fd-navigation__list-container{display:none;top:-.5rem}.fd-navigation__list-container--menu .fd-navigation__list--parent-items .fd-navigation__list-item:hover>.fd-navigation__list-container,.fd-navigation__list-container--menu .fd-navigation__list--parent-items .fd-navigation__list-item:focus>.fd-navigation__list-container,.fd-navigation__list-container--menu .fd-navigation__list--parent-items .fd-navigation__list-item:focus-within>.fd-navigation__list-container{display:block}.fd-navigation__list-container--menu .fd-navigation__list--parent-items .fd-navigation__list-item .fd-navigation__list-container--submenu:before{content:\"\";position:absolute;top:-2rem;bottom:0;right:0;left:0}.fd-popover__body.fd-navigation__list-container{display:block}\n"], dependencies: [{ kind: "component", type: NavigationLinkComponent, selector: "a[fdb-navigation-link]", inputs: ["class", "glyph", "label", "external"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1027
|
+
}
|
|
1028
|
+
__decorate([
|
|
1029
|
+
applyCssClass,
|
|
1030
|
+
__metadata("design:type", Function),
|
|
1031
|
+
__metadata("design:paramtypes", []),
|
|
1032
|
+
__metadata("design:returntype", Array)
|
|
1033
|
+
], NavigationComponent.prototype, "buildComponentCssClass", null);
|
|
1034
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: NavigationComponent, decorators: [{
|
|
1035
|
+
type: Component,
|
|
1036
|
+
args: [{ selector: 'fdb-navigation', template: `
|
|
1037
|
+
<ng-content></ng-content>
|
|
1038
|
+
<ng-template #defaultLinkTemplate>
|
|
1039
|
+
<a fdb-navigation-link glyph="home" label="Home"></a>
|
|
1040
|
+
</ng-template>
|
|
1041
|
+
`, standalone: true, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
1042
|
+
role: 'navigation'
|
|
1043
|
+
}, providers: [
|
|
1044
|
+
NavigationService,
|
|
1045
|
+
{
|
|
1046
|
+
provide: FdbNavigationComponent,
|
|
1047
|
+
useExisting: forwardRef(() => NavigationComponent)
|
|
1048
|
+
}
|
|
1049
|
+
], imports: [NgIf, NgTemplateOutlet, NavigationListComponent, NavigationListItemComponent, NavigationLinkComponent], styles: ["@charset \"UTF-8\";/*!\n * Fundamental Library Styles v0.30.2\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-navigation{--fdNavigation_Height:100%;--fdNavigation_Padding_X:.75rem;--fdNavigation_Padding_Top:1.25rem;--fdNavigation_Item_Spacing:.25rem;--fdNavigation_Padding_Bottom:.5rem;--fdNavigation_Horizontal_Height:3.5rem;--fdNavigation_Expander_Position_Right:.5rem;--fdNavigation_Border_Radius:.5rem .5rem 0 0;--fdNavigation_Box_Shadow:var(--sapNavigation_Shadow1);--fdNavigation_Link_Icon_Size:1rem;--fdNavigation_Link_Min_Height:2rem;--fdNavigation_Link_Font_Weight:bold;--fdNavigation_Link_Spacing:.4375rem;--fdNavigation_Link_Text_Color:inherit;--fdNavigation_Link_Padding_Left:.5rem;--fdNavigation_Link_Padding_Right:.5rem;--fdNavigation_Link_Child_Indicator_Opacity:1;--fdNavigation_Link_Font_Size:var(--sapFontSize);--fdNavigation_Link_Selection_Indicator_Size:.5rem;--fdNavigation_Link_Has_Child_Indicator_Display:flex;--fdNavigation_Link_Selection_Indicator_Display:none;--fdNavigation_Link_Back_Indicator_Icon:\"\\e1ee\";--fdNavigation_Link_Has_Child_Indicator_Icon:\"\\e1ed\";--fdNavigation_Link_External_Link_Indicator_Icon:\"\\e04c\";--fdNavigation_Link_Background:var(--sapNavigation_Background);--fdNavigation_Link_Border_Color:var(--fdNavigation_Link_Border_Color_Normal);--fdNavigation_Link_Border_Bottom_Color:var(--fdNavigation_Link_Border_Bottom_Color_Normal);--fdNavigation_Item_Group_Display:flex;--fdNavigation_Item_Title_Display:none;--fdNavigation_Item_Text_Display:inline-block;--fdNavigation_Item_Selected_Background:0 100%/100% .125rem no-repeat linear-gradient(0deg,var(--sapShell_Navigation_SelectedColor),var(--sapShell_Navigation_SelectedColor)),var(--sapNavigation_Selected_Background);--fdNavigation_List_Container_Display:none;--fdNavigation_List_Parent_Items_Display:none;-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-navigation:after,.fd-navigation:before{box-sizing:inherit;font-size:inherit}.fd-navigation--vertical{-webkit-box-pack:justify;-ms-flex-pack:justify;-webkit-box-shadow:var(--fdNavigation_Box_Shadow);background:var(--sapNavigation_Background);border-radius:var(--fdNavigation_Border_Radius);box-shadow:var(--fdNavigation_Box_Shadow);display:flex;flex-direction:column;height:var(--fdNavigation_Height);justify-content:space-between;min-width:16rem;padding-bottom:var(--fdNavigation_Padding_Bottom);padding-top:var(--fdNavigation_Padding_Top)}.fd-navigation--vertical.fd-navigation--popup{--fdNavigation_Height:auto;--fdNavigation_Padding_Top:.25rem;--fdNavigation_Border_Radius:.5rem;--fdNavigation_Box_Shadow:var(--sapNavigation_Shadow2)}.fd-navigation--vertical.fd-navigation--popup .fd-navigation__container--bottom,.fd-navigation--vertical.fd-navigation--popup .fd-navigation__container--top{--fdNavigation_Padding_X:.5rem}.fd-navigation--vertical.fd-navigation--snapped{--fdNavigation_Border_Radius:.5rem .5rem 0 0;max-width:3.5rem;min-width:3.5rem;width:3.5rem}.fd-navigation--horizontal{background:var(--sapNavigation_Background);height:var(--fdNavigation_Horizontal_Height);padding:.75rem 1.5rem;width:100%}.fd-navigation--horizontal .fd-navigation__link{--fdNavigation_Link_Spacing:.5rem}.fd-navigation--horizontal .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow).is-selected,.fd-navigation--horizontal .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow)[aria-selected=true]{--fdNavigation_Link_Selection_Indicator_Display:none;--fdNavigation_Link_Background:var(--fdNavigation_Item_Selected_Background)}.fd-navigation--horizontal .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow).is-selected .fd-navigation__link.is-focus,.fd-navigation--horizontal .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow).is-selected .fd-navigation__link:focus,.fd-navigation--horizontal .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow)[aria-selected=true] .fd-navigation__link.is-focus,.fd-navigation--horizontal .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow)[aria-selected=true] .fd-navigation__link:focus{--fdNavigation_Link_Background:var(--fdNavigation_Item_Selected_Background);z-index:5}.fd-navigation--horizontal .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow).is-selected .fd-navigation__link.is-hover,.fd-navigation--horizontal .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow).is-selected .fd-navigation__link:hover,.fd-navigation--horizontal .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow)[aria-selected=true] .fd-navigation__link.is-hover,.fd-navigation--horizontal .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow)[aria-selected=true] .fd-navigation__link:hover{--fdNavigation_Link_Background:var(--fdNavigation_Item_Selected_Background)}.fd-navigation--horizontal .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow).is-selected.is-expanded .fd-navigation__link,.fd-navigation--horizontal .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow).is-selected[aria-expanded=true] .fd-navigation__link,.fd-navigation--horizontal .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow)[aria-selected=true].is-expanded .fd-navigation__link,.fd-navigation--horizontal .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow)[aria-selected=true][aria-expanded=true] .fd-navigation__link{--fdNavigation_Link_Selection_Indicator_Display:none;--fdNavigation_Link_Background:var(--fdNavigation_Item_Selected_Background)}.fd-navigation--horizontal .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow).is-expanded .fd-navigation__link:before,.fd-navigation--horizontal .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow)[aria-expanded=true] .fd-navigation__link:before{--fdNavigation_Link_Border_Bottom_Color:var(--fdNavigation_Link_Border_Color)}.fd-navigation--horizontal .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow) .fd-navigation__link:before{--fdNavigation_Link_Border_Bottom_Color:transparent}.fd-navigation--horizontal .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow) .fd-navigation__link.is-hover:before,.fd-navigation--horizontal .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow) .fd-navigation__link:hover:before{--fdNavigation_Link_Border_Bottom_Color:var(--fdNavigation_Link_Border_Color)}.fd-navigation--horizontal .fd-navigation__list:not(.fd-navigation__list--parent-items):not(.fd-navigation__list--child-items){--fdNavigation_Item_Spacing:.75rem;flex-direction:row}.fd-navigation--horizontal .fd-navigation__list:not(.fd-navigation__list--parent-items):not(.fd-navigation__list--child-items) .fd-navigation__has-children-indicator{--fdNavigation_Link_Has_Child_Indicator_Icon:\"\\e287\"}.fd-navigation--horizontal .fd-navigation__list--child-items{--fdNavigation_Item_Spacing:0}.fd-navigation--horizontal .fd-navigation__list-item--spacer{height:.75rem;width:100%}.fd-navigation--horizontal .fd-navigation__list-item--home{background:transparent;padding-top:0;position:relative}.fd-navigation--horizontal .fd-navigation__list-item--home:before{content:none}.fd-navigation--horizontal .fd-navigation__list-container{--fdPopover_Offset:calc(100% + .3875rem);-webkit-box-shadow:var(--sapMenu_Shadow2);background:var(--sapGroup_ContentBackground);border:none;border-radius:.75rem;box-shadow:var(--sapMenu_Shadow2);padding:.05rem}.fd-navigation--horizontal .fd-navigation__list-container.fd-navigation__list-container--menu{box-shadow:var(--sapMenu_Shadow1);padding:.5rem;position:absolute;right:-.5rem;top:calc(100% + .3875rem)}.fd-navigation--horizontal .fd-navigation__list-container.fd-navigation__list-container--menu[dir=rtl],[dir=rtl] .fd-navigation--horizontal .fd-navigation__list-container.fd-navigation__list-container--menu{left:-.5rem;right:auto}.fd-navigation--horizontal .fd-navigation__list-container.fd-navigation__list-container--menu .fd-navigation__list-wrapper{padding:0}.fd-navigation--horizontal .fd-navigation__list-container.fd-navigation__list-container--menu .fd-navigation__list{--fdNavigation_Item_Spacing:0;box-shadow:none}.fd-navigation--horizontal .fd-navigation__list-container.fd-navigation__list-container--menu .fd-navigation__item.is-expanded .fd-navigation__has-children-indicator,.fd-navigation--horizontal .fd-navigation__list-container.fd-navigation__list-container--menu .fd-navigation__item[aria-expanded=true] .fd-navigation__has-children-indicator{--fdNavigation_Link_Has_Child_Indicator_Icon:\"\\e1ed\"}[dir=rtl] .fd-navigation--horizontal .fd-navigation__list-container.fd-navigation__list-container--menu .fd-navigation__item.is-expanded .fd-navigation__has-children-indicator,[dir=rtl] .fd-navigation--horizontal .fd-navigation__list-container.fd-navigation__list-container--menu .fd-navigation__item[aria-expanded=true] .fd-navigation__has-children-indicator{--fdNavigation_Link_Has_Child_Indicator_Icon:\"\\e1ee\"}.fd-navigation--horizontal .fd-navigation__list-container.fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link.is-hover,.fd-navigation--horizontal .fd-navigation__list-container.fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link:hover{width:100%}.fd-navigation--horizontal .fd-navigation__list-container.fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link.is-hover .fd-navigation__text,.fd-navigation--horizontal .fd-navigation__list-container.fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link:hover .fd-navigation__text{--fdNavigation_Item_Text_Display:inline-block}.fd-navigation--horizontal .fd-navigation__list-container.fd-navigation__list-container--submenu{box-shadow:var(--sapMenu_Shadow1);left:calc(-100% - .1875rem);margin:0;padding:.5rem;top:calc(var(--fdNavigation_Link_Min_Height) - .5rem)}.fd-navigation--horizontal .fd-navigation__list-container.fd-navigation__list-container--submenu[dir=rtl],[dir=rtl] .fd-navigation--horizontal .fd-navigation__list-container.fd-navigation__list-container--submenu{left:auto;right:calc(-100% - .1875rem)}.fd-navigation--horizontal .fd-navigation__list-wrapper{padding:.7rem}.fd-navigation--horizontal .fd-navigation__item.is-expanded .fd-navigation__link,.fd-navigation--horizontal .fd-navigation__item[aria-expanded=true] .fd-navigation__link{--fdNavigation_Link_Child_Indicator_Opacity:1;--fdNavigation_Link_Background:var(--sapMenu_Active_Background);--fdNavigation_Link_Border_Color:var(--fdNavigation_Link_Border_Color_Active);--fdNavigation_Link_Border_Bottom_Color:var(--fdNavigation_Link_Border_Color_Active)}.fd-navigation--horizontal .fd-navigation__item.is-expanded .fd-navigation__link.is-focus,.fd-navigation--horizontal .fd-navigation__item.is-expanded .fd-navigation__link:focus,.fd-navigation--horizontal .fd-navigation__item[aria-expanded=true] .fd-navigation__link.is-focus,.fd-navigation--horizontal .fd-navigation__item[aria-expanded=true] .fd-navigation__link:focus{--fdNavigation_Link_Child_Indicator_Opacity:1;--fdNavigation_Link_Background:var(--sapMenu_Active_Background);--fdNavigation_Link_Border_Color:var(--fdNavigation_Link_Border_Color_Active);--fdNavigation_Link_Border_Bottom_Color:var(--fdNavigation_Link_Border_Color_Active);z-index:5}.fd-navigation--horizontal .fd-navigation__item.is-expanded.is-selected .fd-navigation__link,.fd-navigation--horizontal .fd-navigation__item.is-expanded[aria-selected=true] .fd-navigation__link,.fd-navigation--horizontal .fd-navigation__item[aria-expanded=true].is-selected .fd-navigation__link,.fd-navigation--horizontal .fd-navigation__item[aria-expanded=true][aria-selected=true] .fd-navigation__link{--fdNavigation_Link_Selection_Indicator_Display:inline-block;--fdNavigation_Link_Background:var(--sapNavigation_Selected_Background);--fdNavigation_Link_Border_Color:var(--fdNavigation_Link_Border_Color_Selected);--fdNavigation_Link_Border_Bottom_Color:var(--fdNavigation_Link_Border_Color_Selected)}.fd-navigation--horizontal .fd-navigation__item--child .fd-navigation__link{--fdNavigation_Link_Padding_Left:.5rem}.fd-navigation--snapped .fd-navigation__container--bottom,.fd-navigation--snapped .fd-navigation__container--top{overflow:visible}.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--title) .fd-navigation__link{--fdNavigation_Link_Spacing:.5rem}.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--title).is-expanded+.fd-navigation__list-container,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--title)[aria-expanded=true]+.fd-navigation__list-container{display:flex}.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--title).is-expanded .fd-navigation__link,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--title)[aria-expanded=true] .fd-navigation__link{--fdNavigation_Link_Child_Indicator_Opacity:1;--fdNavigation_Link_Background:var(--sapMenu_Active_Background);--fdNavigation_Link_Border_Color:var(--fdNavigation_Link_Border_Color_Active);--fdNavigation_Link_Border_Bottom_Color:var(--fdNavigation_Link_Border_Color_Active)}.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--title).is-expanded .fd-navigation__link.is-focus,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--title).is-expanded .fd-navigation__link:focus,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--title)[aria-expanded=true] .fd-navigation__link.is-focus,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--title)[aria-expanded=true] .fd-navigation__link:focus{--fdNavigation_Link_Child_Indicator_Opacity:1;--fdNavigation_Link_Background:var(--sapMenu_Active_Background);--fdNavigation_Link_Border_Color:var(--fdNavigation_Link_Border_Color_Active);--fdNavigation_Link_Border_Bottom_Color:var(--fdNavigation_Link_Border_Color_Active);z-index:5}.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--title).is-expanded.is-selected .fd-navigation__link,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--title).is-expanded[aria-selected=true] .fd-navigation__link,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--title)[aria-expanded=true].is-selected .fd-navigation__link,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--title)[aria-expanded=true][aria-selected=true] .fd-navigation__link{--fdNavigation_Link_Background:var(--sapNavigation_Selected_Background)}.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow).is-selected,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow)[aria-selected=true]{--fdNavigation_Link_Selection_Indicator_Display:none;--fdNavigation_Link_Background:var(--fdNavigation_Item_Selected_Background)}.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow).is-selected .fd-navigation__link.is-focus,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow).is-selected .fd-navigation__link:focus,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow)[aria-selected=true] .fd-navigation__link.is-focus,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow)[aria-selected=true] .fd-navigation__link:focus{--fdNavigation_Link_Background:var(--fdNavigation_Item_Selected_Background);z-index:5}.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow).is-selected .fd-navigation__link.is-hover,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow).is-selected .fd-navigation__link:hover,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow)[aria-selected=true] .fd-navigation__link.is-hover,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow)[aria-selected=true] .fd-navigation__link:hover{--fdNavigation_Link_Background:var(--fdNavigation_Item_Selected_Background)}.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow).is-selected.is-expanded .fd-navigation__link,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow).is-selected[aria-expanded=true] .fd-navigation__link,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow)[aria-selected=true].is-expanded .fd-navigation__link,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow)[aria-selected=true][aria-expanded=true] .fd-navigation__link{--fdNavigation_Link_Selection_Indicator_Display:none;--fdNavigation_Link_Background:var(--fdNavigation_Item_Selected_Background)}.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow).is-expanded .fd-navigation__link:before,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow)[aria-expanded=true] .fd-navigation__link:before{--fdNavigation_Link_Border_Bottom_Color:var(--fdNavigation_Link_Border_Color)}.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow) .fd-navigation__link:before{--fdNavigation_Link_Border_Bottom_Color:transparent}.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow) .fd-navigation__link.is-hover:before,.fd-navigation--snapped .fd-navigation__item:not(.fd-navigation__item--child):not(.fd-navigation__item--overflow) .fd-navigation__link:hover:before{--fdNavigation_Link_Border_Bottom_Color:var(--fdNavigation_Link_Border_Color)}.fd-navigation--snapped .fd-navigation__item--with-expander .fd-navigation__link{--fdNavigation_Link_Padding_Right:.5rem}.fd-navigation--snapped .fd-navigation__item--with-expander .fd-navigation__expander{display:none}.fd-navigation--snapped .fd-navigation__item--group{--fdNavigation_Item_Group_Display:none}.fd-navigation--snapped .fd-navigation__item--child .fd-navigation__link{--fdNavigation_Link_Padding_Left:.5rem}.fd-navigation--snapped .fd-navigation__has-children-indicator{--fdNavigation_Link_Has_Child_Indicator_Display:none}.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link.is-hover,.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link:hover{width:-moz-fit-content;width:fit-content}.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link.is-hover .fd-navigation__text,.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link:hover .fd-navigation__text{--fdNavigation_Item_Text_Display:inline-block}.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link.is-focus,.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link:focus{width:-moz-fit-content;width:fit-content;z-index:5}.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link.is-focus .fd-navigation__text,.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link:focus .fd-navigation__text{--fdNavigation_Item_Text_Display:inline-block}.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child).is-expanded>.fd-navigation__link.is-hover,.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child).is-expanded>.fd-navigation__link:hover,.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)[aria-expanded=true]>.fd-navigation__link.is-hover,.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)[aria-expanded=true]>.fd-navigation__link:hover{width:auto}.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child).is-expanded>.fd-navigation__link.is-hover .fd-navigation__text,.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child).is-expanded>.fd-navigation__link:hover .fd-navigation__text,.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)[aria-expanded=true]>.fd-navigation__link.is-hover .fd-navigation__text,.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)[aria-expanded=true]>.fd-navigation__link:hover .fd-navigation__text{--fdNavigation_Item_Text_Display:none}.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child).is-expanded>.fd-navigation__link.is-focus,.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child).is-expanded>.fd-navigation__link:focus,.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)[aria-expanded=true]>.fd-navigation__link.is-focus,.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)[aria-expanded=true]>.fd-navigation__link:focus{width:auto;z-index:5}.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child).is-expanded>.fd-navigation__link.is-focus .fd-navigation__text,.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child).is-expanded>.fd-navigation__link:focus .fd-navigation__text,.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)[aria-expanded=true]>.fd-navigation__link.is-focus .fd-navigation__text,.fd-navigation--snapped .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)[aria-expanded=true]>.fd-navigation__link:focus .fd-navigation__text{--fdNavigation_Item_Text_Display:none}.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link.is-hover,.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link:hover{width:100%}.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link.is-hover .fd-navigation__text,.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link:hover .fd-navigation__text{--fdNavigation_Item_Text_Display:inline-block}.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link.is-focus,.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link:focus{width:100%;z-index:5}.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link.is-focus .fd-navigation__text,.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link:focus .fd-navigation__text{--fdNavigation_Item_Text_Display:inline-block}.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child).is-expanded>.fd-navigation__link.is-hover,.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child).is-expanded>.fd-navigation__link:hover,.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)[aria-expanded=true]>.fd-navigation__link.is-hover,.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)[aria-expanded=true]>.fd-navigation__link:hover{width:100%}.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child).is-expanded>.fd-navigation__link.is-hover .fd-navigation__text,.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child).is-expanded>.fd-navigation__link:hover .fd-navigation__text,.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)[aria-expanded=true]>.fd-navigation__link.is-hover .fd-navigation__text,.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)[aria-expanded=true]>.fd-navigation__link:hover .fd-navigation__text{--fdNavigation_Item_Text_Display:inline-block}.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child).is-expanded>.fd-navigation__link.is-focus,.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child).is-expanded>.fd-navigation__link:focus,.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)[aria-expanded=true]>.fd-navigation__link.is-focus,.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)[aria-expanded=true]>.fd-navigation__link:focus{width:100%;z-index:5}.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child).is-expanded>.fd-navigation__link.is-focus .fd-navigation__text,.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child).is-expanded>.fd-navigation__link:focus .fd-navigation__text,.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)[aria-expanded=true]>.fd-navigation__link.is-focus .fd-navigation__text,.fd-navigation--snapped .fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)[aria-expanded=true]>.fd-navigation__link:focus .fd-navigation__text{--fdNavigation_Item_Text_Display:inline-block}.fd-navigation--snapped .fd-navigation__list-container{-webkit-box-shadow:var(--sapMenu_Shadow2);background:var(--sapGroup_ContentBackground);border:none;border-radius:.75rem;box-shadow:var(--sapMenu_Shadow2);padding:.05rem}.fd-navigation--snapped .fd-navigation__list-container .fd-navigation__list--parent-items{--fdNavigation_List_Parent_Items_Display:flex}.fd-navigation--snapped .fd-navigation__list-container .fd-navigation__has-children-indicator{--fdNavigation_Link_Has_Child_Indicator_Display:flex}.fd-navigation--snapped .fd-navigation__list-container .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link.is-hover,.fd-navigation--snapped .fd-navigation__list-container .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link:hover{width:auto}.fd-navigation--snapped .fd-navigation__list-container.fd-navigation__list-container--menu{box-shadow:var(--sapMenu_Shadow1);left:calc(100% + .1875rem);padding:.5rem;position:absolute;top:0}.fd-navigation--snapped .fd-navigation__list-container.fd-navigation__list-container--menu[dir=rtl],[dir=rtl] .fd-navigation--snapped .fd-navigation__list-container.fd-navigation__list-container--menu{left:auto;right:calc(100% + .1875rem)}.fd-navigation--snapped .fd-navigation__list-container.fd-navigation__list-container--menu .fd-navigation__list-wrapper{padding:0}.fd-navigation--snapped .fd-navigation__list-container.fd-navigation__list-container--menu .fd-navigation__list{--fdNavigation_Item_Spacing:0;box-shadow:none}.fd-navigation--snapped .fd-navigation__list-container.fd-navigation__list-container--menu .fd-navigation__item.is-expanded .fd-navigation__has-children-indicator,.fd-navigation--snapped .fd-navigation__list-container.fd-navigation__list-container--menu .fd-navigation__item[aria-expanded=true] .fd-navigation__has-children-indicator{--fdNavigation_Link_Has_Child_Indicator_Icon:\"\\e1ed\"}[dir=rtl] .fd-navigation--snapped .fd-navigation__list-container.fd-navigation__list-container--menu .fd-navigation__item .fd-navigation__has-children-indicator{--fdNavigation_Link_Has_Child_Indicator_Icon:\"\\e1ee\"}.fd-navigation--snapped .fd-navigation__list-container.fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link.is-hover,.fd-navigation--snapped .fd-navigation__list-container.fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link:hover{width:100%}.fd-navigation--snapped .fd-navigation__list-container.fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link.is-hover .fd-navigation__text,.fd-navigation--snapped .fd-navigation__list-container.fd-navigation__list-container--menu .fd-navigation__list-item>.fd-navigation__item:not(.fd-navigation__item--child)>.fd-navigation__link:hover .fd-navigation__text{--fdNavigation_Item_Text_Display:inline-block}.fd-navigation--snapped .fd-navigation__list-container.fd-navigation__list-container--submenu{box-shadow:var(--sapMenu_Shadow1);left:calc(100% + .1875rem);margin:0;padding:.5rem;top:calc(var(--fdNavigation_Link_Min_Height) - .5rem)}.fd-navigation--snapped .fd-navigation__list-container.fd-navigation__list-container--submenu[dir=rtl],[dir=rtl] .fd-navigation--snapped .fd-navigation__list-container.fd-navigation__list-container--submenu{left:auto;right:calc(100% + .1875rem)}.fd-navigation--snapped .fd-navigation__list-wrapper{padding:.7rem}.fd-navigation--snapped .fd-navigation__item--title{display:flex;height:auto;margin-bottom:.75rem}.fd-navigation--snapped .fd-navigation__item--title .fd-navigation__text{--fdNavigation_Item_Title_Display:block;font-size:1.25rem;font-weight:700;line-height:1.5rem}.fd-navigation--snapped .fd-navigation__list--child-items{--fdNavigation_Item_Spacing:0;height:auto}.fd-navigation--phone .fd-navigation__link,.fd-navigation--tablet .fd-navigation__link{--fdNavigation_Link_Min_Height:2.5rem;--fdNavigation_Link_Padding_Left:.6875rem;--fdNavigation_Link_Padding_Right:.6875rem}.fd-navigation--phone .fd-navigation__container--bottom,.fd-navigation--phone .fd-navigation__container--top,.fd-navigation--tablet .fd-navigation__container--bottom,.fd-navigation--tablet .fd-navigation__container--top{--fdNavigation_Padding_X:.5rem}.fd-navigation--phone .fd-navigation__icon,.fd-navigation--tablet .fd-navigation__icon{--fdNavigation_Link_Icon_Size:1.125rem}.fd-navigation--phone .fd-navigation__item--with-expander .fd-navigation__link,.fd-navigation--tablet .fd-navigation__item--with-expander .fd-navigation__link{--fdNavigation_Link_Padding_Right:2.375rem}.fd-navigation--phone .fd-navigation__item--with-expander .fd-navigation__expander,.fd-navigation--tablet .fd-navigation__item--with-expander .fd-navigation__expander{--fdNavigation_Expander_Position_Right:.6875rem}.fd-navigation--phone .fd-navigation__list,.fd-navigation--phone .fd-navigation__list-item,.fd-navigation--tablet .fd-navigation__list,.fd-navigation--tablet .fd-navigation__list-item{--fdNavigation_Item_Spacing:.125rem}.fd-navigation--phone.fd-navigation--snapped .fd-navigation__item--with-expander .fd-navigation__link,.fd-navigation--tablet.fd-navigation--snapped .fd-navigation__item--with-expander .fd-navigation__link{--fdNavigation_Link_Padding_Right:.6875rem}.fd-navigation--phone.fd-navigation--horizontal,.fd-navigation--tablet.fd-navigation--horizontal{--fdNavigation_Horizontal_Height:4rem}.fd-navigation--phone.fd-navigation--horizontal .fd-navigation__list--child-items,.fd-navigation--tablet.fd-navigation--horizontal .fd-navigation__list--child-items{--fdNavigation_Item_Spacing:0}.fd-navigation__container{position:relative}.fd-navigation__container--top{height:100%;overflow:scroll;padding-bottom:.25rem;position:relative}.fd-navigation__container--bottom,.fd-navigation__container--top{padding-left:var(--fdNavigation_Padding_X);padding-right:var(--fdNavigation_Padding_X)}.fd-navigation__container--bottom:before{background:var(--sapToolbar_SeparatorColor);content:\"\";display:inline-block;height:.0625rem;margin-bottom:.5625rem;margin-top:.5625rem;width:100%}.fd-navigation__list-container{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);display:var(--fdNavigation_List_Container_Display);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-navigation__list-container:after,.fd-navigation__list-container:before{box-sizing:inherit;font-size:inherit}.fd-navigation__list-wrapper{width:100%}.fd-navigation__list{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:column;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;gap:var(--fdNavigation_Item_Spacing);height:100%;line-height:var(--sapContent_LineHeight);list-style-type:none;margin:0;padding:0;position:relative}.fd-navigation__list:after,.fd-navigation__list:before{box-sizing:inherit;font-size:inherit}.fd-navigation__list--parent-items{display:var(--fdNavigation_List_Parent_Items_Display)}.fd-navigation__list-item{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:column;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;gap:var(--fdNavigation_Item_Spacing);line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-navigation__list-item:after,.fd-navigation__list-item:before{box-sizing:inherit;font-size:inherit}.fd-navigation__list-item--spacer{background:transparent;height:100%;min-height:.25rem}.fd-navigation__list-item--separator{background:transparent;height:.75rem;max-height:.75rem;min-height:.75rem}.fd-navigation__list-item--home{background:var(--sapList_Background);padding-top:.25rem;position:sticky;top:0;z-index:10}.fd-navigation__list-item--home:before{background:var(--sapList_Background);content:\"\";height:calc(100% + .5rem);left:-.25rem;position:absolute;top:-.25rem;width:calc(100% + .5rem)}[dir=rtl] .fd-navigation__list-item--home:before{left:auto;right:-.25rem}.fd-navigation__list-item--overflow{position:relative}.fd-navigation__link{-webkit-box-sizing:border-box;-webkit-box-align:center;-ms-flex-align:center;-webkit-transition:var(--fdNavigation_Link_Transition);align-items:center;background:var(--fdNavigation_Link_Background);border:0;border-radius:var(--fdNavigation_Link_Border_Radius);box-sizing:border-box;color:var(--sapTextColor);color:var(--sapList_TextColor);cursor:pointer;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;gap:var(--fdNavigation_Link_Spacing);line-height:var(--sapContent_LineHeight);margin:0;min-height:var(--fdNavigation_Link_Min_Height);padding:.5rem 0;padding-left:var(--fdNavigation_Link_Padding_Left);padding-right:var(--fdNavigation_Link_Padding_Right);position:relative;text-align:start;text-decoration:none;transition:var(--fdNavigation_Link_Transition);width:100%}.fd-navigation__link:after,.fd-navigation__link:before{box-sizing:inherit;font-size:inherit}.fd-navigation__link[dir=rtl],[dir=rtl] .fd-navigation__link{padding-left:var(--fdNavigation_Link_Padding_Right);padding-right:var(--fdNavigation_Link_Padding_Left)}.fd-navigation__link:before{border:.0625rem solid var(--fdNavigation_Link_Border_Color);border-bottom:.0625rem solid var(--fdNavigation_Link_Border_Color);border-bottom-color:var(--fdNavigation_Link_Border_Bottom_Color);content:\"\";height:100%;left:0;position:absolute;top:0;width:100%}[dir=rtl] .fd-navigation__link:before{left:auto;right:0}.fd-navigation__link.is-hover,.fd-navigation__link:hover{--fdNavigation_Link_Child_Indicator_Opacity:1;--fdNavigation_Link_Background:var(--sapNavigation_Hover_Background);--fdNavigation_Link_Border_Color:var(--fdNavigation_Link_Border_Color_Hover);--fdNavigation_Link_Border_Bottom_Color:var(--fdNavigation_Link_Border_Color_Hover)}.fd-navigation__link.is-active,.fd-navigation__link.is-active.is-focus,.fd-navigation__link.is-active:focus,.fd-navigation__link:active,.fd-navigation__link:active.is-focus,.fd-navigation__link:active:focus{--fdNavigation_Link_Child_Indicator_Opacity:1;--fdNavigation_Link_Background:var(--sapNavigation_Active_Background);--fdNavigation_Link_Border_Color:var(--fdNavigation_Link_Border_Color_Active);--fdNavigation_Link_Border_Bottom_Color:var(--fdNavigation_Link_Border_Color_Active)}.fd-navigation__link.is-active.is-focus,.fd-navigation__link.is-active:focus,.fd-navigation__link:active.is-focus,.fd-navigation__link:active:focus{outline:none;z-index:5}.fd-navigation__link.is-focus,.fd-navigation__link:focus{--fdNavigation_Link_Border_Color:transparent;--fdNavigation_Link_Child_Indicator_Opacity:1;--fdNavigation_Link_Border_Bottom_Color:transparent;--fdNavigation_Link_Background:var(--sapNavigation_Background);outline:var(--sapContent_FocusStyle) var(--sapContent_FocusWidth) var(--sapContent_FocusColor);z-index:5}.fd-navigation__link:focus-visible{outline-offset:0}.fd-navigation__link.is-disabled,.fd-navigation__link:disabled,.fd-navigation__link[aria-disabled=true]{opacity:var(--sapContent_DisabledOpacity);pointer-events:none}.fd-navigation__link[class*=-compact],[class*=-compact] .fd-navigation__link:not([class*=-cozy]){--fdNavigation_Link_Min_Height:2rem}.fd-navigation__item{-webkit-box-sizing:border-box;align-items:center;border:0;border-radius:var(--fdNavigation_Link_Border_Radius);box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative}.fd-navigation__item:after,.fd-navigation__item:before{box-sizing:inherit;font-size:inherit}.fd-navigation__item.is-expanded .fd-navigation__has-children-indicator,.fd-navigation__item.is-expanded .fd-navigation__has-children-indicator[dir=rtl],.fd-navigation__item[aria-expanded=true] .fd-navigation__has-children-indicator,.fd-navigation__item[aria-expanded=true] .fd-navigation__has-children-indicator[dir=rtl],[dir=rtl] .fd-navigation__item.is-expanded .fd-navigation__has-children-indicator,[dir=rtl] .fd-navigation__item[aria-expanded=true] .fd-navigation__has-children-indicator{--fdNavigation_Link_Has_Child_Indicator_Icon:\"\\e1ef\"}.fd-navigation__item.is-expanded+.fd-navigation__list-container,.fd-navigation__item[aria-expanded=true]+.fd-navigation__list-container{--fdNavigation_List_Container_Display:flex}.fd-navigation__item.is-expanded+.fd-navigation__list--parent-items,.fd-navigation__item[aria-expanded=true]+.fd-navigation__list--parent-items{--fdNavigation_List_Parent_Items_Display:flex}.fd-navigation__item.is-selected,.fd-navigation__item[aria-selected=true]{--fdNavigation_Link_Selection_Indicator_Display:inline-block;--fdNavigation_Link_Background:var(--sapNavigation_Selected_Background);--fdNavigation_Link_Border_Color:var(--fdNavigation_Link_Border_Color_Selected);--fdNavigation_Link_Border_Bottom_Color:var(--fdNavigation_Link_Border_Color_Selected)}.fd-navigation__item.is-selected .fd-navigation__link.is-focus,.fd-navigation__item.is-selected .fd-navigation__link:focus,.fd-navigation__item[aria-selected=true] .fd-navigation__link.is-focus,.fd-navigation__item[aria-selected=true] .fd-navigation__link:focus{--fdNavigation_Link_Background:var(--sapNavigation_Selected_Background);--fdNavigation_Link_Border_Color:var(--fdNavigation_Link_Border_Color_Selected);--fdNavigation_Link_Border_Bottom_Color:var(--fdNavigation_Link_Border_Color_Selected);z-index:5}.fd-navigation__item.is-selected .fd-navigation__link.is-hover,.fd-navigation__item.is-selected .fd-navigation__link:hover,.fd-navigation__item[aria-selected=true] .fd-navigation__link.is-hover,.fd-navigation__item[aria-selected=true] .fd-navigation__link:hover{--fdNavigation_Link_Background:var(--sapNavigation_Selected_Background);--fdNavigation_Link_Border_Color:var(--fdNavigation_Link_Border_Color_Selected);--fdNavigation_Link_Border_Bottom_Color:var(--fdNavigation_Link_Border_Color_Selected)}.fd-navigation__item--with-expander{position:relative}.fd-navigation__item--with-expander .fd-navigation__link{--fdNavigation_Link_Padding_Right:2.1975rem}.fd-navigation__item--with-expander .fd-navigation__expander{position:absolute;right:var(--fdNavigation_Expander_Position_Right);z-index:20}.fd-navigation__item--with-expander .fd-navigation__expander[dir=rtl],[dir=rtl] .fd-navigation__item--with-expander .fd-navigation__expander{left:var(--fdNavigation_Expander_Position_Right);right:auto}.fd-navigation__item--child .fd-navigation__link{--fdNavigation_Link_Spacing:.5rem;--fdNavigation_Link_Font_Weight:normal;--fdNavigation_Link_Padding_Left:2rem}.fd-navigation__item--group{--fdNavigation_Link_Child_Indicator_Opacity:0;display:var(--fdNavigation_Item_Group_Display)}.fd-navigation__item--group .fd-navigation__link{--fdNavigation_Link_Spacing:.4375rem;--fdNavigation_Link_Text_Color:var(--sapContent_LabelColor);--fdNavigation_Link_Font_Weight:600;--fdNavigation_Link_Font_Size:var(--sapFontSmallSize)}.fd-navigation__item--title{display:var(--fdNavigation_Item_Title_Display);height:auto}.fd-navigation__item--title .fd-navigation__text{--fdNavigation_Item_Title_Display:block;font-size:1.25rem;font-weight:700;line-height:1.5rem}.fd-navigation__item--title .fd-navigation__icon[class*=sap-icon]{display:none}.fd-navigation__item--menu.is-expanded,.fd-navigation__item--menu[aria-expanded=true]{--fdNavigation_Link_Child_Indicator_Opacity:1;--fdNavigation_Link_Background:var(--sapNavigation_Active_Background);--fdNavigation_Link_Border_Color:var(--fdNavigation_Link_Border_Color_Active);--fdNavigation_Link_Border_Bottom_Color:var(--fdNavigation_Link_Border_Color_Active)}.fd-navigation__item--menu.is-expanded .fd-navigation__has-children-indicator,.fd-navigation__item--menu[aria-expanded=true] .fd-navigation__has-children-indicator{--fdNavigation_Link_Has_Child_Indicator_Icon:\"\\e1ed\"}.fd-navigation__item--menu.is-expanded .fd-navigation__has-children-indicator[dir=rtl],.fd-navigation__item--menu[aria-expanded=true] .fd-navigation__has-children-indicator[dir=rtl],[dir=rtl] .fd-navigation__item--menu.is-expanded .fd-navigation__has-children-indicator,[dir=rtl] .fd-navigation__item--menu[aria-expanded=true] .fd-navigation__has-children-indicator{--fdNavigation_Link_Has_Child_Indicator_Icon:\"\\e1ee\"}.fd-navigation__item--menu.fd-navigation__item--child .fd-navigation__link{--fdNavigation_Link_Padding_Left:.5rem}.fd-navigation__icon{height:var(--fdNavigation_Link_Icon_Size);max-height:var(--fdNavigation_Link_Icon_Size);max-width:var(--fdNavigation_Link_Icon_Size);min-height:var(--fdNavigation_Link_Icon_Size);min-width:var(--fdNavigation_Link_Icon_Size);width:var(--fdNavigation_Link_Icon_Size)}.fd-navigation__icon [class*=sap-icon],.fd-navigation__icon[class*=sap-icon]{-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;color:inherit;display:flex;font-size:var(--fdNavigation_Link_Icon_Size);justify-content:center}.fd-navigation__text{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--fdNavigation_Link_Text_Color);display:var(--fdNavigation_Item_Text_Display);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:var(--fdNavigation_Link_Font_Size);font-weight:400;font-weight:var(--fdNavigation_Link_Font_Weight);forced-color-adjust:none;line-height:var(--sapContent_LineHeight);line-height:1rem;margin:0;overflow:hidden;padding:0;text-overflow:ellipsis;vertical-align:baseline;white-space:nowrap;width:100%}.fd-navigation__text:after,.fd-navigation__text:before{box-sizing:inherit;font-size:inherit}.fd-navigation__selection-indicator{-webkit-box-sizing:border-box;background:var(--sapList_SelectionBorderColor);border:0;border-radius:100%;box-sizing:border-box;color:var(--sapTextColor);display:var(--fdNavigation_Link_Selection_Indicator_Display);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdNavigation_Link_Selection_Indicator_Size);line-height:var(--sapContent_LineHeight);margin:0;max-height:var(--fdNavigation_Link_Selection_Indicator_Size);max-width:var(--fdNavigation_Link_Selection_Indicator_Size);min-height:var(--fdNavigation_Link_Selection_Indicator_Size);min-width:var(--fdNavigation_Link_Selection_Indicator_Size);padding:0;width:var(--fdNavigation_Link_Selection_Indicator_Size)}.fd-navigation__selection-indicator:after,.fd-navigation__selection-indicator:before{box-sizing:inherit;font-size:inherit}.fd-navigation__has-children-indicator{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-ms-flex-align:center;-webkit-transition:opacity .3s ease-in-out;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;display:var(--fdNavigation_Link_Has_Child_Indicator_Display);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:.75rem;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;max-height:.75rem;max-width:.75rem;min-height:.75rem;min-width:.75rem;opacity:var(--fdNavigation_Link_Child_Indicator_Opacity);padding:0;transition:opacity .3s ease-in-out;width:.75rem}.fd-navigation__has-children-indicator:after,.fd-navigation__has-children-indicator:before{box-sizing:inherit;font-size:inherit}.fd-navigation__has-children-indicator:before{content:var(--fdNavigation_Link_Has_Child_Indicator_Icon);font-family:SAP-icons;font-size:.75rem}[dir=rtl] .fd-navigation__has-children-indicator{--fdNavigation_Link_Has_Child_Indicator_Icon:\"\\e1ee\"}.fd-navigation__external-link-indicator{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:.75rem;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;max-height:.75rem;max-width:.75rem;min-height:.75rem;min-width:.75rem;padding:0;width:.75rem}.fd-navigation__external-link-indicator:after,.fd-navigation__external-link-indicator:before{box-sizing:inherit;font-size:inherit}.fd-navigation__external-link-indicator:before{content:var(--fdNavigation_Link_External_Link_Indicator_Icon);font-family:SAP-icons;font-size:.75rem}.fd-navigation__external-link-indicator[dir=rtl],[dir=rtl] .fd-navigation__external-link-indicator{--fdNavigation_Link_External_Link_Indicator_Icon:\"\\e04d\"}.fd-navigation__back-indicator{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:.75rem;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;max-height:.75rem;max-width:.75rem;min-height:.75rem;min-width:.75rem;padding:0;width:.75rem}.fd-navigation__back-indicator:after,.fd-navigation__back-indicator:before{box-sizing:inherit;font-size:inherit}.fd-navigation__back-indicator:before{content:var(--fdNavigation_Link_Back_Indicator_Icon);font-family:SAP-icons;font-size:.75rem}.fd-navigation__back-indicator[dir=rtl],[dir=rtl] .fd-navigation__back-indicator{--fdNavigation_Link_Back_Indicator_Icon:\"\\e1ed\"}.fd-navigation .fd-navigation__container--top{padding-left:var(--fdNavigation_Padding_X);padding-right:var(--fdNavigation_Padding_X);padding-bottom:.25rem}.fd-navigation__list{min-height:100%;height:auto}.fd-navigation--snapped .fd-navigation__list-item--home{position:relative}.fd-navigation--snapped .fd-navigation__container--top{overflow:visible!important;display:flex;flex-direction:column}.fd-navigation--snapped .fd-navigation__container--top .fd-navigation__list{flex-grow:1;height:auto;min-height:0}.fd-navigation--snapped .fd-navigation__container--top .fd-navigation__list--no-grow{flex-grow:0}.fd-navigation--snapped .fd-navigation__container--hidden-overflow{overflow:hidden!important}.fd-navigation--expanded .fd-navigation__list-item--home,.fd-navigation--popup .fd-navigation__list-item--home{z-index:21}.fd-navigation__list-container--custom-menu{box-shadow:var(--sapMenu_Shadow1)}.fd-navigation__list-item--spacer--hidden{display:none!important}.fd-navigation .fd-navigation-list-item--home-without-separator{margin-bottom:.09rem}.fd-navigation--snapped .fd-navigation__list-container.fd-navigation__list-container--menu{position:relative;transition:none}.fd-navigation__list-item:not(.fd-navigation__list-item--home){position:relative}.fd-navigation__list-container--menu>.fd-scrollbar{overflow:visible!important}.fd-navigation__list-container--menu .fd-navigation__list--parent-items .fd-navigation__list-item:before{content:\"\";position:absolute;top:0;bottom:0;left:-1rem;right:-1rem}.fd-navigation__list-container--menu .fd-navigation__list--parent-items .fd-navigation__list-item>.fd-navigation__list-container{display:none;top:-.5rem}.fd-navigation__list-container--menu .fd-navigation__list--parent-items .fd-navigation__list-item:hover>.fd-navigation__list-container,.fd-navigation__list-container--menu .fd-navigation__list--parent-items .fd-navigation__list-item:focus>.fd-navigation__list-container,.fd-navigation__list-container--menu .fd-navigation__list--parent-items .fd-navigation__list-item:focus-within>.fd-navigation__list-container{display:block}.fd-navigation__list-container--menu .fd-navigation__list--parent-items .fd-navigation__list-item .fd-navigation__list-container--submenu:before{content:\"\";position:absolute;top:-2rem;bottom:0;right:0;left:0}.fd-popover__body.fd-navigation__list-container{display:block}\n"] }]
|
|
1050
|
+
}], propDecorators: { class: [{
|
|
1051
|
+
type: Input
|
|
1052
|
+
}], _state: [{
|
|
1053
|
+
type: Input,
|
|
1054
|
+
args: ['state']
|
|
1055
|
+
}], _horizontal: [{
|
|
1056
|
+
type: Input,
|
|
1057
|
+
args: ['horizontal']
|
|
1058
|
+
}], _mode: [{
|
|
1059
|
+
type: Input,
|
|
1060
|
+
args: ['mode']
|
|
1061
|
+
}], _type: [{
|
|
1062
|
+
type: Input,
|
|
1063
|
+
args: ['type']
|
|
1064
|
+
}], _homeSeparator: [{
|
|
1065
|
+
type: Input,
|
|
1066
|
+
args: [{ alias: 'homeSeparator', transform: coerceBooleanProperty }]
|
|
1067
|
+
}], _homeDirective: [{
|
|
1068
|
+
type: ContentChild,
|
|
1069
|
+
args: [NavigationHomeDirective]
|
|
1070
|
+
}], _defaultLinkTemplate: [{
|
|
1071
|
+
type: ViewChild,
|
|
1072
|
+
args: ['defaultLinkTemplate']
|
|
1073
|
+
}], _navigationItems: [{
|
|
1074
|
+
type: ContentChildren,
|
|
1075
|
+
args: [FdbNavigationListItemComponent, { descendants: true }]
|
|
1076
|
+
}], _navigationLists: [{
|
|
1077
|
+
type: ContentChildren,
|
|
1078
|
+
args: [FdbNavigationListComponent, { descendants: true }]
|
|
1079
|
+
}], _navigationContents: [{
|
|
1080
|
+
type: ContentChildren,
|
|
1081
|
+
args: [NavigationContentComponent, { descendants: true }]
|
|
1082
|
+
}], buildComponentCssClass: [], keyDownHandler: [{
|
|
1083
|
+
type: HostListener,
|
|
1084
|
+
args: ['keydown', ['$event']]
|
|
1085
|
+
}] } });
|
|
1086
|
+
|
|
1087
|
+
class NavigationItemSpacerDirective {
|
|
1088
|
+
constructor() {
|
|
1089
|
+
/** @hidden */
|
|
1090
|
+
this._navigationComponent = inject(NavigationComponent);
|
|
1091
|
+
}
|
|
1092
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: NavigationItemSpacerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1093
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.7", type: NavigationItemSpacerDirective, isStandalone: true, selector: "li[fdb-navigation-list-spacer]", host: { properties: { "class.fd-navigation__list-item--spacer--hidden": "_navigationComponent.isSnapped()" }, classAttribute: "fd-navigation__list-item fd-navigation__list-item--spacer" }, ngImport: i0 }); }
|
|
1094
|
+
}
|
|
1095
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: NavigationItemSpacerDirective, decorators: [{
|
|
1096
|
+
type: Directive,
|
|
1097
|
+
args: [{
|
|
1098
|
+
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
1099
|
+
selector: 'li[fdb-navigation-list-spacer]',
|
|
1100
|
+
standalone: true,
|
|
1101
|
+
host: {
|
|
1102
|
+
class: 'fd-navigation__list-item fd-navigation__list-item--spacer',
|
|
1103
|
+
'[class.fd-navigation__list-item--spacer--hidden]': '_navigationComponent.isSnapped()'
|
|
1104
|
+
}
|
|
1105
|
+
}]
|
|
1106
|
+
}] });
|
|
1107
|
+
|
|
1108
|
+
class NavigationContentEndComponent extends NavigationContentComponent {
|
|
1109
|
+
constructor() {
|
|
1110
|
+
super(...arguments);
|
|
1111
|
+
/** @hidden */
|
|
1112
|
+
this.showHome = false;
|
|
1113
|
+
/** @hidden */
|
|
1114
|
+
this.refresh$ = new Subject();
|
|
1115
|
+
/** @hidden */
|
|
1116
|
+
this._destroyRef = inject(DestroyRef);
|
|
1117
|
+
}
|
|
1118
|
+
/** @hidden */
|
|
1119
|
+
ngAfterViewInit() {
|
|
1120
|
+
this._listItems.changes.pipe(startWith(null), takeUntilDestroyed(this._destroyRef)).subscribe(() => {
|
|
1121
|
+
this.refresh$.next();
|
|
1122
|
+
});
|
|
1123
|
+
}
|
|
1124
|
+
/** @hidden */
|
|
1125
|
+
getNavigatableItems() {
|
|
1126
|
+
return this._listItems.toArray();
|
|
1127
|
+
}
|
|
1128
|
+
/** @hidden */
|
|
1129
|
+
showMoreOpened() {
|
|
1130
|
+
return false;
|
|
1131
|
+
}
|
|
1132
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: NavigationContentEndComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
1133
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: NavigationContentEndComponent, isStandalone: true, selector: "fdb-navigation-content-end", host: { classAttribute: "fd-navigation__container fd-navigation__container--bottom" }, providers: [
|
|
1134
|
+
{
|
|
1135
|
+
provide: NavigationContentComponent,
|
|
1136
|
+
useExisting: NavigationContentEndComponent
|
|
1137
|
+
}
|
|
1138
|
+
], queries: [{ propertyName: "_listItems", predicate: FdbNavigationListItemComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: ` <ng-content></ng-content> `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1139
|
+
}
|
|
1140
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: NavigationContentEndComponent, decorators: [{
|
|
1141
|
+
type: Component,
|
|
1142
|
+
args: [{
|
|
1143
|
+
selector: 'fdb-navigation-content-end',
|
|
1144
|
+
template: ` <ng-content></ng-content> `,
|
|
1145
|
+
standalone: true,
|
|
1146
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1147
|
+
encapsulation: ViewEncapsulation.None,
|
|
1148
|
+
providers: [
|
|
1149
|
+
{
|
|
1150
|
+
provide: NavigationContentComponent,
|
|
1151
|
+
useExisting: NavigationContentEndComponent
|
|
1152
|
+
}
|
|
1153
|
+
],
|
|
1154
|
+
// eslint-disable-next-line @angular-eslint/no-host-metadata-property
|
|
1155
|
+
host: {
|
|
1156
|
+
class: 'fd-navigation__container fd-navigation__container--bottom'
|
|
1157
|
+
}
|
|
1158
|
+
}]
|
|
1159
|
+
}], propDecorators: { _listItems: [{
|
|
1160
|
+
type: ContentChildren,
|
|
1161
|
+
args: [FdbNavigationListItemComponent, { descendants: true }]
|
|
1162
|
+
}] } });
|
|
1163
|
+
|
|
1164
|
+
class NavigationListOverflowItemComponent extends NavigationListItemComponent {
|
|
1165
|
+
/** @hidden */
|
|
1166
|
+
// eslint-disable-next-line @angular-eslint/no-input-rename
|
|
1167
|
+
set _hiddenItems(items) {
|
|
1168
|
+
this.hiddenItems().forEach((item) => item.destroyPortal());
|
|
1169
|
+
items.forEach((item) => item.createPortal());
|
|
1170
|
+
this.hiddenItems.set(items);
|
|
1171
|
+
}
|
|
1172
|
+
/** @hidden */
|
|
1173
|
+
constructor() {
|
|
1174
|
+
super();
|
|
1175
|
+
/** @hidden */
|
|
1176
|
+
this.additionalBodyClass = 'fd-navigation__list-container fd-navigation__list-container--menu';
|
|
1177
|
+
effect(() => {
|
|
1178
|
+
const items = this.hiddenItems();
|
|
1179
|
+
this.hasPortalChildren.set(items.length > 0);
|
|
1180
|
+
if (items.length === 0) {
|
|
1181
|
+
return;
|
|
1182
|
+
}
|
|
1183
|
+
}, {
|
|
1184
|
+
allowSignalWrites: true
|
|
1185
|
+
});
|
|
1186
|
+
}
|
|
1187
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: NavigationListOverflowItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1188
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: NavigationListOverflowItemComponent, isStandalone: true, selector: "li[fdb-navigation-list-overflow-item]", inputs: { _hiddenItems: ["hiddenItems", "_hiddenItems"] }, providers: [
|
|
1189
|
+
PopoverService,
|
|
1190
|
+
{
|
|
1191
|
+
provide: FdbNavigationListItemComponent,
|
|
1192
|
+
useExisting: NavigationListOverflowItemComponent
|
|
1193
|
+
}
|
|
1194
|
+
], viewQueries: [{ propertyName: "_portal", first: true, predicate: ["childrenTemplate"], descendants: true, read: TemplateRef }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"fd-navigation__item\"\n [class.fd-navigation__item--group]=\"isGroup()\"\n [class.fd-navigation__item--child]=\"parentNavigationListComponent.parentListComponent?.isParentGroupChild()\"\n aria-current=\"page\"\n [attr.aria-selected]=\"childrenActive() && navigationComponent.isSnapped() ? true : null\"\n [attr.aria-expanded]=\"expandedAttr()\"\n [attr.aria-level]=\"1\"\n #navigationItem\n role=\"menuitem\"\n>\n <ng-content select=\"[fdb-navigation-link]\"></ng-content>\n</div>\n<!-- Detach elements from their hosts immediately to fix issue with flickering elements. -->\n<ul hidden>\n <ng-template *ngFor=\"let item of hiddenItems()\" [cdkPortalOutlet]=\"item.domPortal\"></ng-template>\n</ul>\n<ng-template #childrenTemplate>\n <div class=\"fd-navigation__list-container--menu\">\n <ul class=\"fd-navigation__list fd-navigation__list--parent-items fd-menu__list\">\n <ng-template *ngFor=\"let item of hiddenItems()\" [cdkPortalOutlet]=\"item.domPortal\"></ng-template>\n </ul>\n </div>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i1$1.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1195
|
+
}
|
|
1196
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: NavigationListOverflowItemComponent, decorators: [{
|
|
1197
|
+
type: Component,
|
|
1198
|
+
args: [{ selector: 'li[fdb-navigation-list-overflow-item]', standalone: true, imports: [PortalModule, AsyncPipe, NgForOf], providers: [
|
|
1199
|
+
PopoverService,
|
|
1200
|
+
{
|
|
1201
|
+
provide: FdbNavigationListItemComponent,
|
|
1202
|
+
useExisting: NavigationListOverflowItemComponent
|
|
1203
|
+
}
|
|
1204
|
+
], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"fd-navigation__item\"\n [class.fd-navigation__item--group]=\"isGroup()\"\n [class.fd-navigation__item--child]=\"parentNavigationListComponent.parentListComponent?.isParentGroupChild()\"\n aria-current=\"page\"\n [attr.aria-selected]=\"childrenActive() && navigationComponent.isSnapped() ? true : null\"\n [attr.aria-expanded]=\"expandedAttr()\"\n [attr.aria-level]=\"1\"\n #navigationItem\n role=\"menuitem\"\n>\n <ng-content select=\"[fdb-navigation-link]\"></ng-content>\n</div>\n<!-- Detach elements from their hosts immediately to fix issue with flickering elements. -->\n<ul hidden>\n <ng-template *ngFor=\"let item of hiddenItems()\" [cdkPortalOutlet]=\"item.domPortal\"></ng-template>\n</ul>\n<ng-template #childrenTemplate>\n <div class=\"fd-navigation__list-container--menu\">\n <ul class=\"fd-navigation__list fd-navigation__list--parent-items fd-menu__list\">\n <ng-template *ngFor=\"let item of hiddenItems()\" [cdkPortalOutlet]=\"item.domPortal\"></ng-template>\n </ul>\n </div>\n</ng-template>\n" }]
|
|
1205
|
+
}], ctorParameters: function () { return []; }, propDecorators: { _hiddenItems: [{
|
|
1206
|
+
type: Input,
|
|
1207
|
+
args: ['hiddenItems']
|
|
1208
|
+
}], _portal: [{
|
|
1209
|
+
type: ViewChild,
|
|
1210
|
+
args: ['childrenTemplate', { read: TemplateRef }]
|
|
1211
|
+
}] } });
|
|
1212
|
+
|
|
1213
|
+
/* eslint-disable no-unused-vars */
|
|
1214
|
+
const FD_NAVIGATION_OVERFLOW_ITEM_CLASS = 'fd-navigation__container--hidden-overflow';
|
|
1215
|
+
class NavigationContentStartComponent extends NavigationContentComponent {
|
|
1216
|
+
/** @hidden */
|
|
1217
|
+
set _showMoreOverflowItemCmp(value) {
|
|
1218
|
+
this.showMoreOverflowItem = value;
|
|
1219
|
+
this.refresh$.next();
|
|
1220
|
+
}
|
|
1221
|
+
/** @hidden */
|
|
1222
|
+
constructor() {
|
|
1223
|
+
super();
|
|
1224
|
+
/** @hidden */
|
|
1225
|
+
this.linkTemplate = inject(FdbNavigationComponent).homeLinkTemplate;
|
|
1226
|
+
/** @hidden */
|
|
1227
|
+
this.showHome = true;
|
|
1228
|
+
/** @hidden */
|
|
1229
|
+
this.showOverflowButton = signal(false);
|
|
1230
|
+
/** @hidden */
|
|
1231
|
+
this._hiddenItems = [];
|
|
1232
|
+
/** @hidden */
|
|
1233
|
+
this.refresh$ = new Subject();
|
|
1234
|
+
/** @hidden */
|
|
1235
|
+
this._calculationInProgress = false;
|
|
1236
|
+
/** @hidden */
|
|
1237
|
+
this._canTrackItems = signal(false);
|
|
1238
|
+
/** @hidden */
|
|
1239
|
+
this._navigationComponent = inject(FdbNavigationComponent);
|
|
1240
|
+
/** @hidden */
|
|
1241
|
+
this._elementRef = inject((ElementRef));
|
|
1242
|
+
/** @hidden */
|
|
1243
|
+
this._cdr = inject(ChangeDetectorRef);
|
|
1244
|
+
/** @hidden */
|
|
1245
|
+
this._scrollbar = inject(ScrollbarDirective);
|
|
1246
|
+
/** @hidden */
|
|
1247
|
+
this._destroyRef = inject(DestroyRef);
|
|
1248
|
+
this._scrollbar.overrideTabindex = false;
|
|
1249
|
+
effect(() => {
|
|
1250
|
+
if (!this._canTrackItems()) {
|
|
1251
|
+
return;
|
|
1252
|
+
}
|
|
1253
|
+
// We need to also listen to snapped state.
|
|
1254
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1255
|
+
const snapped = this._navigationComponent.isSnapped();
|
|
1256
|
+
this._elementRef.nativeElement.scrollTop = 0;
|
|
1257
|
+
setTimeout(() => {
|
|
1258
|
+
this._calculateVisibleItems();
|
|
1259
|
+
});
|
|
1260
|
+
}, {
|
|
1261
|
+
allowSignalWrites: true
|
|
1262
|
+
});
|
|
1263
|
+
}
|
|
1264
|
+
/** @hidden */
|
|
1265
|
+
ngAfterViewInit() {
|
|
1266
|
+
this._canTrackItems.set(true);
|
|
1267
|
+
this._navigationItems.changes
|
|
1268
|
+
.pipe(startWith(null))
|
|
1269
|
+
.pipe(tap(() => {
|
|
1270
|
+
this.refresh$.next();
|
|
1271
|
+
}), filter(() => this._navigationItems?.length > 0), observeOn(asyncScheduler), takeUntilDestroyed(this._destroyRef))
|
|
1272
|
+
.subscribe(() => {
|
|
1273
|
+
this._calculateVisibleItems();
|
|
1274
|
+
});
|
|
1275
|
+
resizeObservable(this._elementRef.nativeElement)
|
|
1276
|
+
.pipe(debounceTime(30), distinctUntilChanged((prev, current) => prev[0].contentRect.height === current[0].contentRect.height), filter(() => !this._calculationInProgress), takeUntilDestroyed(this._destroyRef))
|
|
1277
|
+
.subscribe(() => {
|
|
1278
|
+
this._calculateVisibleItems();
|
|
1279
|
+
});
|
|
1280
|
+
}
|
|
1281
|
+
/** @hidden */
|
|
1282
|
+
getNavigatableItems() {
|
|
1283
|
+
const items = this._navigationItems.toArray();
|
|
1284
|
+
if (this.showMoreOverflowItem) {
|
|
1285
|
+
items.push(this.showMoreOverflowItem);
|
|
1286
|
+
}
|
|
1287
|
+
return items;
|
|
1288
|
+
}
|
|
1289
|
+
/** @hidden */
|
|
1290
|
+
showMoreOpened() {
|
|
1291
|
+
return !!this.showMoreOverflowItem?.isOpen;
|
|
1292
|
+
}
|
|
1293
|
+
/** @hidden */
|
|
1294
|
+
_calculateVisibleItems() {
|
|
1295
|
+
if (this._calculationInProgress) {
|
|
1296
|
+
return;
|
|
1297
|
+
}
|
|
1298
|
+
this._calculationInProgress = true;
|
|
1299
|
+
this._hiddenItems = [];
|
|
1300
|
+
this._cdr.detectChanges();
|
|
1301
|
+
if (!this._navigationComponent.isSnapped()) {
|
|
1302
|
+
this._navigationItems.forEach((item) => {
|
|
1303
|
+
item.show();
|
|
1304
|
+
});
|
|
1305
|
+
this.showOverflowButton.set(false);
|
|
1306
|
+
setTimeout(() => {
|
|
1307
|
+
this._calculationInProgress = false;
|
|
1308
|
+
});
|
|
1309
|
+
return;
|
|
1310
|
+
}
|
|
1311
|
+
this._elementRef.nativeElement.classList.add(FD_NAVIGATION_OVERFLOW_ITEM_CLASS);
|
|
1312
|
+
this.showOverflowButton.set(true);
|
|
1313
|
+
this._cdr.detectChanges();
|
|
1314
|
+
let canDisplayItems = true;
|
|
1315
|
+
const containerHeight = this._elementRef.nativeElement.getBoundingClientRect().height;
|
|
1316
|
+
const showMoreHeight = (this.showMoreOverflowItem?.elementRef.nativeElement.getBoundingClientRect().height || 0) * 2;
|
|
1317
|
+
const homeElementSize = this._navigationLists.toArray().reduce((height, list) => {
|
|
1318
|
+
height += list.getHomeElementSize().height;
|
|
1319
|
+
return height;
|
|
1320
|
+
}, 0);
|
|
1321
|
+
let totalAvailableHeight = containerHeight - showMoreHeight - homeElementSize;
|
|
1322
|
+
const hiddenElements = [];
|
|
1323
|
+
const navigationItemGroups = this._navigationItems.reduce((acc, item) => {
|
|
1324
|
+
const itemLevel = item.normalizedLevel();
|
|
1325
|
+
if (itemLevel > 2) {
|
|
1326
|
+
return acc;
|
|
1327
|
+
}
|
|
1328
|
+
acc[itemLevel === 1 ? 'root' : 'children'].push(item);
|
|
1329
|
+
return acc;
|
|
1330
|
+
}, { root: [], children: [] });
|
|
1331
|
+
this._navigationItems.forEach((item) => {
|
|
1332
|
+
item.show();
|
|
1333
|
+
});
|
|
1334
|
+
navigationItemGroups.children.forEach((item) => {
|
|
1335
|
+
item.calculateExpanded();
|
|
1336
|
+
if (!canDisplayItems) {
|
|
1337
|
+
item.hide();
|
|
1338
|
+
hiddenElements.push(item);
|
|
1339
|
+
return;
|
|
1340
|
+
}
|
|
1341
|
+
// item.show();
|
|
1342
|
+
totalAvailableHeight -= item.elementRef.nativeElement.getBoundingClientRect().height;
|
|
1343
|
+
if (totalAvailableHeight <= 0) {
|
|
1344
|
+
canDisplayItems = false;
|
|
1345
|
+
item.hide();
|
|
1346
|
+
hiddenElements.push(item);
|
|
1347
|
+
return;
|
|
1348
|
+
}
|
|
1349
|
+
});
|
|
1350
|
+
navigationItemGroups.root.forEach((item) => {
|
|
1351
|
+
item.checkSelfHidden();
|
|
1352
|
+
});
|
|
1353
|
+
this._elementRef.nativeElement.classList.remove(FD_NAVIGATION_OVERFLOW_ITEM_CLASS);
|
|
1354
|
+
this._handleOverflowItems(hiddenElements);
|
|
1355
|
+
setTimeout(() => {
|
|
1356
|
+
this._calculationInProgress = false;
|
|
1357
|
+
}, 5);
|
|
1358
|
+
}
|
|
1359
|
+
/** @hidden */
|
|
1360
|
+
_handleOverflowItems(items) {
|
|
1361
|
+
this.showOverflowButton.set(items.length > 0);
|
|
1362
|
+
this._hiddenItems = items;
|
|
1363
|
+
this._cdr.detectChanges();
|
|
1364
|
+
}
|
|
1365
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: NavigationContentStartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1366
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: NavigationContentStartComponent, isStandalone: true, selector: "fdb-navigation-content-start", host: { properties: { "style.flex-grow": "1" }, classAttribute: "fd-navigation__container fd-navigation__container--top" }, providers: [
|
|
1367
|
+
{
|
|
1368
|
+
provide: NavigationContentComponent,
|
|
1369
|
+
useExisting: NavigationContentStartComponent
|
|
1370
|
+
}
|
|
1371
|
+
], queries: [{ propertyName: "_navigationItems", predicate: FdbNavigationListItemComponent, descendants: true }, { propertyName: "_navigationLists", predicate: FdbNavigationListComponent }], viewQueries: [{ propertyName: "_showMoreOverflow", first: true, predicate: ["showMoreOverflowMenu"], descendants: true, read: ElementRef }, { propertyName: "_showMoreOverflowItemCmp", first: true, predicate: ["showMoreOverflowItem"], descendants: true, read: FdbNavigationListItemComponent }], usesInheritance: true, hostDirectives: [{ directive: i1$2.ScrollbarDirective }], ngImport: i0, template: "<ng-content select=\"ul[fdb-navigation-list]\"></ng-content>\n\n<ng-container *ngIf=\"showOverflowButton()\">\n <ul fdb-navigation-list class=\"fd-navigation__list--no-grow\" [showHome]=\"false\" #showMoreOverflowMenu>\n <li\n fdb-navigation-list-overflow-item\n [alwaysFocusable]=\"true\"\n #showMoreOverflowItem\n [hiddenItems]=\"_hiddenItems\"\n >\n <a fdb-navigation-link glyph=\"overflow\" label=\"More Items\"></a>\n </li>\n </ul>\n</ng-container>\n", dependencies: [{ kind: "component", type: NavigationListComponent, selector: "ul[fdb-navigation-list]", inputs: ["class", "showHome"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NavigationLinkComponent, selector: "a[fdb-navigation-link]", inputs: ["class", "glyph", "label", "external"] }, { kind: "component", type: NavigationListOverflowItemComponent, selector: "li[fdb-navigation-list-overflow-item]", inputs: ["hiddenItems"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1372
|
+
}
|
|
1373
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: NavigationContentStartComponent, decorators: [{
|
|
1374
|
+
type: Component,
|
|
1375
|
+
args: [{ selector: 'fdb-navigation-content-start', standalone: true, imports: [
|
|
1376
|
+
NavigationListComponent,
|
|
1377
|
+
NavigationListItemComponent,
|
|
1378
|
+
NgIf,
|
|
1379
|
+
NavigationLinkComponent,
|
|
1380
|
+
NavigationListOverflowItemComponent
|
|
1381
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [
|
|
1382
|
+
{
|
|
1383
|
+
provide: NavigationContentComponent,
|
|
1384
|
+
useExisting: NavigationContentStartComponent
|
|
1385
|
+
}
|
|
1386
|
+
], host: {
|
|
1387
|
+
class: 'fd-navigation__container fd-navigation__container--top',
|
|
1388
|
+
'[style.flex-grow]': '1'
|
|
1389
|
+
}, hostDirectives: [ScrollbarDirective], template: "<ng-content select=\"ul[fdb-navigation-list]\"></ng-content>\n\n<ng-container *ngIf=\"showOverflowButton()\">\n <ul fdb-navigation-list class=\"fd-navigation__list--no-grow\" [showHome]=\"false\" #showMoreOverflowMenu>\n <li\n fdb-navigation-list-overflow-item\n [alwaysFocusable]=\"true\"\n #showMoreOverflowItem\n [hiddenItems]=\"_hiddenItems\"\n >\n <a fdb-navigation-link glyph=\"overflow\" label=\"More Items\"></a>\n </li>\n </ul>\n</ng-container>\n" }]
|
|
1390
|
+
}], ctorParameters: function () { return []; }, propDecorators: { _navigationItems: [{
|
|
1391
|
+
type: ContentChildren,
|
|
1392
|
+
args: [FdbNavigationListItemComponent, { descendants: true }]
|
|
1393
|
+
}], _navigationLists: [{
|
|
1394
|
+
type: ContentChildren,
|
|
1395
|
+
args: [FdbNavigationListComponent]
|
|
1396
|
+
}], _showMoreOverflow: [{
|
|
1397
|
+
type: ViewChild,
|
|
1398
|
+
args: ['showMoreOverflowMenu', { static: false, read: ElementRef }]
|
|
1399
|
+
}], _showMoreOverflowItemCmp: [{
|
|
1400
|
+
type: ViewChild,
|
|
1401
|
+
args: ['showMoreOverflowItem', { static: false, read: FdbNavigationListItemComponent }]
|
|
1402
|
+
}] } });
|
|
1403
|
+
|
|
1404
|
+
/**
|
|
1405
|
+
* Generated bundle index. Do not edit.
|
|
1406
|
+
*/
|
|
1407
|
+
|
|
1408
|
+
export { NavigationComponent, NavigationContentEndComponent, NavigationContentStartComponent, NavigationHomeDirective, NavigationItemSpacerDirective, NavigationLinkComponent, NavigationListComponent, NavigationListItemComponent, NavigationListOverflowItemComponent };
|
|
1409
|
+
//# sourceMappingURL=fundamental-ngx-btp-navigation.mjs.map
|