@rxap/layout 16.0.0-dev.2 → 16.0.0-dev.20
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/CHANGELOG.md +436 -0
- package/LICENSE +621 -21
- package/LICENSE.md +621 -0
- package/README.md +7 -22
- package/esm2022/index.mjs +5 -6
- package/esm2022/lib/app-url.service.mjs +64 -0
- package/esm2022/lib/footer/footer.component.mjs +10 -41
- package/esm2022/lib/footer.directive.mjs +21 -22
- package/esm2022/lib/header/apps-button/apps-button.component.mjs +40 -120
- package/esm2022/lib/header/header.component.mjs +64 -141
- package/esm2022/lib/header/language-selector/language-selector.component.mjs +22 -115
- package/esm2022/lib/header/navigation-progress-bar/navigation-progress-bar.component.mjs +19 -24
- package/esm2022/lib/header/reset-button/reset-button.component.mjs +12 -19
- package/esm2022/lib/header/settings-button/settings-button.component.mjs +46 -0
- package/esm2022/lib/header/sidenav-toggle-button/sidenav-toggle-button.component.mjs +16 -39
- package/esm2022/lib/header/sign-out/sign-out.component.mjs +17 -28
- package/esm2022/lib/header/user-profile-icon/user-profile-icon.component.mjs +32 -117
- package/esm2022/lib/i18n-check.guard.mjs +30 -0
- package/esm2022/lib/i18n.service.mjs +36 -0
- package/esm2022/lib/language-selector.service.mjs +34 -0
- package/esm2022/lib/layout/layout.component.mjs +61 -91
- package/esm2022/lib/layout/layout.component.service.mjs +21 -22
- package/esm2022/lib/navigation/navigation-item/navigation-item.component.mjs +116 -264
- package/esm2022/lib/navigation/navigation-item.mjs +4 -4
- package/esm2022/lib/navigation/navigation.component.mjs +46 -106
- package/esm2022/lib/navigation/navigation.service.mjs +28 -27
- package/esm2022/lib/navigation/replace-router-paths.service.mjs +9 -10
- package/esm2022/lib/sidenav/sidenav-footer.directive.mjs +15 -16
- package/esm2022/lib/sidenav/sidenav-header.directive.mjs +15 -16
- package/esm2022/lib/sidenav/sidenav.component.mjs +29 -121
- package/esm2022/lib/sidenav/sidenav.component.service.mjs +8 -9
- package/esm2022/lib/sidenav/version/version.component.mjs +14 -48
- package/esm2022/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.mjs +15 -38
- package/esm2022/lib/tokens.mjs +1 -1
- package/esm2022/lib/types.mjs +1 -1
- package/esm2022/lib/window-container-sidenav/window-container-sidenav.component.mjs +14 -33
- package/esm2022/rxap-layout.mjs +1 -1
- package/fesm2022/rxap-layout.mjs +824 -1534
- package/fesm2022/rxap-layout.mjs.map +1 -1
- package/index.d.ts +4 -3
- package/lib/app-url.service.d.ts +26 -0
- package/lib/footer.directive.d.ts +1 -1
- package/lib/header/apps-button/apps-button.component.d.ts +12 -20
- package/lib/header/header.component.d.ts +7 -12
- package/lib/header/language-selector/language-selector.component.d.ts +1 -16
- package/lib/header/settings-button/settings-button.component.d.ts +19 -0
- package/lib/header/sidenav-toggle-button/sidenav-toggle-button.component.d.ts +1 -1
- package/lib/header/sign-out/sign-out.component.d.ts +4 -4
- package/lib/header/user-profile-icon/user-profile-icon.component.d.ts +11 -7
- package/lib/i18n-check.guard.d.ts +11 -0
- package/lib/i18n.service.d.ts +12 -0
- package/lib/language-selector.service.d.ts +15 -0
- package/lib/layout/layout.component.d.ts +9 -4
- package/lib/navigation/navigation-item/navigation-item.component.d.ts +11 -18
- package/lib/navigation/navigation-item.d.ts +1 -1
- package/lib/navigation/navigation.component.d.ts +6 -6
- package/lib/navigation/navigation.service.d.ts +1 -1
- package/lib/sidenav/version/version.component.d.ts +2 -2
- package/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.d.ts +2 -4
- package/lib/types.d.ts +3 -2
- package/lib/window-container-sidenav/window-container-sidenav.component.d.ts +1 -1
- package/package.json +100 -66
- package/theme.css +1 -0
- package/collection.json +0 -10
- package/esm2022/lib/layout/layout.component.module.mjs +0 -32
- package/esm2022/lib/sidenav-content/sidenav-content.component.mjs +0 -46
- package/esm2022/lib/sidenav-content/sidenav-content.component.service.mjs +0 -37
- package/lib/layout/layout.component.module.d.ts +0 -10
- package/lib/sidenav-content/sidenav-content.component.d.ts +0 -12
- package/lib/sidenav-content/sidenav-content.component.service.d.ts +0 -15
- package/migration.json +0 -4
- package/src/schematics/ng-add/index.d.ts +0 -2
- package/src/schematics/ng-add/index.js +0 -8
- package/src/schematics/ng-add/index.js.map +0 -1
- package/src/schematics/ng-add/schema.json +0 -7
package/fesm2022/rxap-layout.mjs
CHANGED
|
@@ -1,54 +1,57 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, Component, ChangeDetectionStrategy,
|
|
2
|
+
import { InjectionToken, Component, ChangeDetectionStrategy, LOCALE_ID, Injectable, Inject, signal, Optional, isDevMode, Input, ElementRef, Renderer2, ViewContainerRef, ViewEncapsulation, forwardRef, ViewChild, HostBinding, INJECTOR, ChangeDetectorRef, TemplateRef, Directive, ContentChild, EventEmitter, Output } from '@angular/core';
|
|
3
3
|
import * as i1 from '@rxap/services';
|
|
4
|
-
import { HeaderService, ResetService, WindowContainerSidenavService, FooterService
|
|
4
|
+
import { HeaderService, ResetService, VersionService, WindowContainerSidenavService, FooterService } from '@rxap/services';
|
|
5
5
|
import * as i3 from '@angular/cdk/portal';
|
|
6
6
|
import { PortalModule, ComponentPortal, TemplatePortal } from '@angular/cdk/portal';
|
|
7
7
|
import * as i2 from '@angular/material/toolbar';
|
|
8
8
|
import { MatToolbarModule } from '@angular/material/toolbar';
|
|
9
|
-
import
|
|
10
|
-
import {
|
|
11
|
-
import { filter, map, tap, switchMap, catchError, startWith, delay, skip, distinctUntilChanged } from 'rxjs/operators';
|
|
12
|
-
import * as i2$7 from '@angular/material/sidenav';
|
|
13
|
-
import { MatSidenav, MatSidenavModule } from '@angular/material/sidenav';
|
|
14
|
-
import * as i4 from '@rxap/authentication';
|
|
15
|
-
import { SignOutDirective, UserService } from '@rxap/authentication';
|
|
16
|
-
import * as i2$3 from '@angular/material/menu';
|
|
17
|
-
import { MatMenuModule } from '@angular/material/menu';
|
|
18
|
-
import * as i2$1 from '@angular/router';
|
|
19
|
-
import { NavigationStart, NavigationEnd, NavigationCancel, Router, RouterOutlet, RouterLinkActive, RouterLink } from '@angular/router';
|
|
20
|
-
import * as i1$1 from '@angular/material/progress-bar';
|
|
21
|
-
import { MatProgressBarModule } from '@angular/material/progress-bar';
|
|
22
|
-
import * as i2$2 from '@angular/material/icon';
|
|
23
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
24
|
-
import * as i1$2 from '@angular/material/button';
|
|
25
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
26
|
-
import { isDefined } from '@rxap/utilities/rxjs';
|
|
27
|
-
import { AvatarBackgroundImageDirective } from '@rxap/directives';
|
|
28
|
-
import * as i1$3 from '@angular/flex-layout/flex';
|
|
29
|
-
import { FlexModule } from '@angular/flex-layout/flex';
|
|
30
|
-
import * as i1$4 from '@rxap/config';
|
|
31
|
-
import { ConfigService } from '@rxap/config';
|
|
32
|
-
import * as i2$4 from '@angular/flex-layout/extended';
|
|
33
|
-
import { ExtendedModule } from '@angular/flex-layout/extended';
|
|
34
|
-
import * as i7 from '@angular/cdk/overlay';
|
|
35
|
-
import { CdkOverlayOrigin, CdkConnectedOverlay, Overlay } from '@angular/cdk/overlay';
|
|
36
|
-
import * as i4$1 from '@angular/material/core';
|
|
37
|
-
import { MatOptionModule, MatRippleModule } from '@angular/material/core';
|
|
9
|
+
import * as i3$2 from '@angular/common';
|
|
10
|
+
import { NgIf, NgFor, AsyncPipe, NgOptimizedImage, KeyValuePipe, CommonModule, NgClass, NgTemplateOutlet } from '@angular/common';
|
|
38
11
|
import * as i5 from '@angular/forms';
|
|
39
12
|
import { FormsModule } from '@angular/forms';
|
|
13
|
+
import * as i1$3 from '@angular/material/button';
|
|
14
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
15
|
+
import * as i4 from '@angular/material/core';
|
|
16
|
+
import { MatOptionModule, MatRippleModule } from '@angular/material/core';
|
|
17
|
+
import * as i2$2 from '@angular/material/form-field';
|
|
18
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
19
|
+
import * as i2$1 from '@angular/material/icon';
|
|
20
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
21
|
+
import * as i6 from '@angular/material/menu';
|
|
22
|
+
import { MatMenuModule } from '@angular/material/menu';
|
|
40
23
|
import * as i3$1 from '@angular/material/select';
|
|
41
24
|
import { MatSelectModule } from '@angular/material/select';
|
|
42
|
-
import * as
|
|
43
|
-
import {
|
|
44
|
-
import {
|
|
45
|
-
import {
|
|
25
|
+
import * as i3$4 from '@angular/material/sidenav';
|
|
26
|
+
import { MatSidenav, MatSidenavModule } from '@angular/material/sidenav';
|
|
27
|
+
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
28
|
+
import { DataSourceCollectionDirective } from '@rxap/data-source/directive';
|
|
29
|
+
import { StopPropagationDirective } from '@rxap/directives';
|
|
30
|
+
import { StatusIndicatorComponent } from '@rxap/ngx-status-check';
|
|
31
|
+
import { switchMap, filter as filter$1, Subscription, BehaviorSubject, debounceTime, ReplaySubject, of, from, combineLatest } from 'rxjs';
|
|
32
|
+
import { filter, tap, map, switchMap as switchMap$1, startWith, catchError } from 'rxjs/operators';
|
|
33
|
+
import * as i1$5 from '@angular/flex-layout/flex';
|
|
34
|
+
import { FlexModule } from '@angular/flex-layout/flex';
|
|
35
|
+
import * as i1$2 from '@rxap/authentication';
|
|
36
|
+
import { ClickOnLink } from '@rxap/browser-utilities';
|
|
37
|
+
import * as i1$1 from '@rxap/config';
|
|
38
|
+
import { ConfigService } from '@rxap/config';
|
|
39
|
+
import { JoinPath, coerceBoolean } from '@rxap/utilities';
|
|
40
|
+
import * as i2$3 from '@angular/router';
|
|
41
|
+
import { NavigationStart, NavigationEnd, NavigationCancel, Router, RouterLinkActive, RouterLink, RouterOutlet } from '@angular/router';
|
|
42
|
+
import * as i1$4 from '@angular/material/progress-bar';
|
|
43
|
+
import { MatProgressBarModule } from '@angular/material/progress-bar';
|
|
44
|
+
import { FlexLayoutModule } from '@angular/flex-layout';
|
|
45
|
+
import { DetermineReleaseName, RXAP_ENVIRONMENT } from '@rxap/environment';
|
|
46
|
+
import * as i2$4 from '@rxap/icon';
|
|
47
|
+
import * as i3$3 from '@angular/material/divider';
|
|
48
|
+
import { MatDividerModule } from '@angular/material/divider';
|
|
46
49
|
import { trigger, transition, style, animate } from '@angular/animations';
|
|
50
|
+
import * as i6$1 from '@angular/cdk/overlay';
|
|
51
|
+
import { Overlay } from '@angular/cdk/overlay';
|
|
47
52
|
import { IconDirective } from '@rxap/material-directives/icon';
|
|
48
|
-
import * as i2$
|
|
49
|
-
import {
|
|
50
|
-
import * as i1$5 from '@angular/material/divider';
|
|
51
|
-
import { MatDividerModule } from '@angular/material/divider';
|
|
53
|
+
import * as i2$5 from '@angular/flex-layout/extended';
|
|
54
|
+
import { ExtendedModule } from '@angular/flex-layout/extended';
|
|
52
55
|
|
|
53
56
|
const RXAP_NAVIGATION_CONFIG = new InjectionToken('rxap/layout/navigation-config');
|
|
54
57
|
const RXAP_NAVIGATION_CONFIG_INSERTS = new InjectionToken('rxap/layout/navigation-config-inserts');
|
|
@@ -57,509 +60,273 @@ const RXAP_HEADER_COMPONENT = new InjectionToken('rxap/layout/header-component')
|
|
|
57
60
|
const RXAP_LOGO_CONFIG = new InjectionToken('rxap/layout/logo-config');
|
|
58
61
|
const RXAP_LAYOUT_APPS_GRID = new InjectionToken('rxap/layout/apps-grid');
|
|
59
62
|
|
|
60
|
-
function FooterComponent_ng_template_0_mat_toolbar_0_mat_toolbar_row_1_ng_template_1_Template(rf, ctx) { }
|
|
61
|
-
function FooterComponent_ng_template_0_mat_toolbar_0_mat_toolbar_row_1_Template(rf, ctx) { if (rf & 1) {
|
|
62
|
-
i0.ɵɵelementStart(0, "mat-toolbar-row");
|
|
63
|
-
i0.ɵɵtemplate(1, FooterComponent_ng_template_0_mat_toolbar_0_mat_toolbar_row_1_ng_template_1_Template, 0, 0, "ng-template", 4);
|
|
64
|
-
i0.ɵɵelementEnd();
|
|
65
|
-
} if (rf & 2) {
|
|
66
|
-
const portal_r4 = ctx.$implicit;
|
|
67
|
-
i0.ɵɵadvance(1);
|
|
68
|
-
i0.ɵɵproperty("cdkPortalOutlet", portal_r4);
|
|
69
|
-
} }
|
|
70
|
-
function FooterComponent_ng_template_0_mat_toolbar_0_Template(rf, ctx) { if (rf & 1) {
|
|
71
|
-
i0.ɵɵelementStart(0, "mat-toolbar", 2);
|
|
72
|
-
i0.ɵɵtemplate(1, FooterComponent_ng_template_0_mat_toolbar_0_mat_toolbar_row_1_Template, 2, 1, "mat-toolbar-row", 3);
|
|
73
|
-
i0.ɵɵelementEnd();
|
|
74
|
-
} if (rf & 2) {
|
|
75
|
-
const portals_r1 = i0.ɵɵnextContext().$implicit;
|
|
76
|
-
i0.ɵɵadvance(1);
|
|
77
|
-
i0.ɵɵproperty("ngForOf", portals_r1);
|
|
78
|
-
} }
|
|
79
|
-
function FooterComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {
|
|
80
|
-
i0.ɵɵtemplate(0, FooterComponent_ng_template_0_mat_toolbar_0_Template, 2, 1, "mat-toolbar", 1);
|
|
81
|
-
} if (rf & 2) {
|
|
82
|
-
const portals_r1 = ctx.$implicit;
|
|
83
|
-
i0.ɵɵproperty("ngIf", portals_r1.length);
|
|
84
|
-
} }
|
|
85
63
|
class FooterComponent {
|
|
86
64
|
constructor(footerService) {
|
|
87
65
|
this.footerService = footerService;
|
|
88
66
|
}
|
|
89
|
-
static { this.ɵfac =
|
|
90
|
-
static { this.ɵcmp =
|
|
91
|
-
i0.ɵɵtemplate(0, FooterComponent_ng_template_0_Template, 1, 1, "ng-template", 0);
|
|
92
|
-
i0.ɵɵpipe(1, "async");
|
|
93
|
-
} if (rf & 2) {
|
|
94
|
-
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(1, 1, ctx.footerService.portals$));
|
|
95
|
-
} }, dependencies: [NgIf, MatToolbarModule, i2.MatToolbar, i2.MatToolbarRow, NgFor, PortalModule, i3.CdkPortalOutlet, AsyncPipe], changeDetection: 0 }); }
|
|
67
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: FooterComponent, deps: [{ token: i1.FooterService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
68
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: FooterComponent, isStandalone: true, selector: "rxap-footer", ngImport: i0, template: "<ng-template [ngIf]=\"footerService.portals$ | async\" let-portals>\n <mat-toolbar *ngIf=\"portals.length\" class=\"footer mat-elevation-z1\">\n <mat-toolbar-row *ngFor=\"let portal of portals\">\n <ng-template [cdkPortalOutlet]=\"portal\"></ng-template>\n </mat-toolbar-row>\n </mat-toolbar>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatToolbarModule }, { kind: "component", type: i2.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: i2.MatToolbarRow, selector: "mat-toolbar-row", exportAs: ["matToolbarRow"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
96
69
|
}
|
|
97
|
-
(
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
70
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: FooterComponent, decorators: [{
|
|
71
|
+
type: Component,
|
|
72
|
+
args: [{ selector: 'rxap-footer', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIf, MatToolbarModule, NgFor, PortalModule, AsyncPipe], template: "<ng-template [ngIf]=\"footerService.portals$ | async\" let-portals>\n <mat-toolbar *ngIf=\"portals.length\" class=\"footer mat-elevation-z1\">\n <mat-toolbar-row *ngFor=\"let portal of portals\">\n <ng-template [cdkPortalOutlet]=\"portal\"></ng-template>\n </mat-toolbar-row>\n </mat-toolbar>\n</ng-template>\n" }]
|
|
73
|
+
}], ctorParameters: function () { return [{ type: i1.FooterService }]; } });
|
|
101
74
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
this.
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
75
|
+
class AppUrlService {
|
|
76
|
+
constructor(config, localeId, userProfileService) {
|
|
77
|
+
this.config = config;
|
|
78
|
+
this.localeId = localeId;
|
|
79
|
+
this.userProfileService = userProfileService;
|
|
80
|
+
this._apps = this.config.get('navigation.apps', []);
|
|
81
|
+
}
|
|
82
|
+
getApp(appId) {
|
|
83
|
+
return this._apps.find(app => app.id === appId) ?? null;
|
|
84
|
+
}
|
|
85
|
+
getAppUrl(appId, path) {
|
|
86
|
+
const app = this.getApp(appId);
|
|
87
|
+
if (app) {
|
|
88
|
+
const prefix = this.getPathPrefix();
|
|
89
|
+
return JoinPath(app.href, prefix, path);
|
|
90
|
+
}
|
|
91
|
+
return null;
|
|
111
92
|
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
}
|
|
117
|
-
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(1, 1, ctx.navigating$));
|
|
118
|
-
} }, dependencies: [NgIf, MatProgressBarModule, i1$1.MatProgressBar, AsyncPipe], changeDetection: 0 }); }
|
|
119
|
-
}
|
|
120
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NavigationProgressBarComponent, [{
|
|
121
|
-
type: Component,
|
|
122
|
-
args: [{ selector: 'rxap-navigation-progress-bar', changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'rxap-navigation-progress-bar' }, standalone: true, imports: [NgIf, MatProgressBarModule, AsyncPipe], template: "<mat-progress-bar\n *ngIf=\"navigating$ | async\"\n mode=\"indeterminate\"\n color=\"accent\"\n></mat-progress-bar>\n" }]
|
|
123
|
-
}], function () { return [{ type: i2$1.Router, decorators: [{
|
|
124
|
-
type: Inject,
|
|
125
|
-
args: [Router]
|
|
126
|
-
}] }]; }, null); })();
|
|
127
|
-
|
|
128
|
-
class SignOutComponent {
|
|
129
|
-
constructor(router) {
|
|
130
|
-
this.router = router;
|
|
93
|
+
navigate(appId, path) {
|
|
94
|
+
const url = this.getAppUrl(appId, path);
|
|
95
|
+
if (url) {
|
|
96
|
+
ClickOnLink(url);
|
|
97
|
+
}
|
|
131
98
|
}
|
|
132
|
-
|
|
133
|
-
this.
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
i0.ɵɵ
|
|
154
|
-
i0.ɵɵ
|
|
155
|
-
i0.ɵɵelementEnd();
|
|
156
|
-
i0.ɵɵelementStart(3, "span");
|
|
157
|
-
i0.ɵɵtext(4);
|
|
158
|
-
i0.ɵɵelementEnd()();
|
|
159
|
-
} if (rf & 2) {
|
|
160
|
-
const user_r2 = i0.ɵɵnextContext().$implicit;
|
|
161
|
-
i0.ɵɵadvance(4);
|
|
162
|
-
i0.ɵɵtextInterpolate2("", user_r2.firstname, " ", user_r2.lastname, "");
|
|
163
|
-
} }
|
|
164
|
-
function UserProfileIconComponent_ng_template_5_button_1_Template(rf, ctx) { if (rf & 1) {
|
|
165
|
-
i0.ɵɵelementStart(0, "button", 5)(1, "mat-icon");
|
|
166
|
-
i0.ɵɵtext(2, "person");
|
|
167
|
-
i0.ɵɵelementEnd();
|
|
168
|
-
i0.ɵɵelementStart(3, "span");
|
|
169
|
-
i0.ɵɵtext(4);
|
|
170
|
-
i0.ɵɵelementEnd()();
|
|
171
|
-
} if (rf & 2) {
|
|
172
|
-
const user_r2 = i0.ɵɵnextContext().$implicit;
|
|
173
|
-
i0.ɵɵadvance(4);
|
|
174
|
-
i0.ɵɵtextInterpolate(user_r2.name);
|
|
175
|
-
} }
|
|
176
|
-
function UserProfileIconComponent_ng_template_5_button_2_Template(rf, ctx) { if (rf & 1) {
|
|
177
|
-
i0.ɵɵelementStart(0, "button", 5)(1, "mat-icon");
|
|
178
|
-
i0.ɵɵtext(2, "account_circle");
|
|
179
|
-
i0.ɵɵelementEnd();
|
|
180
|
-
i0.ɵɵelementStart(3, "span");
|
|
181
|
-
i0.ɵɵtext(4);
|
|
182
|
-
i0.ɵɵelementEnd()();
|
|
183
|
-
} if (rf & 2) {
|
|
184
|
-
const user_r2 = i0.ɵɵnextContext().$implicit;
|
|
185
|
-
i0.ɵɵadvance(4);
|
|
186
|
-
i0.ɵɵtextInterpolate(user_r2.username);
|
|
187
|
-
} }
|
|
188
|
-
function UserProfileIconComponent_ng_template_5_button_3_Template(rf, ctx) { if (rf & 1) {
|
|
189
|
-
i0.ɵɵelementStart(0, "button", 5)(1, "mat-icon");
|
|
190
|
-
i0.ɵɵtext(2, "email");
|
|
191
|
-
i0.ɵɵelementEnd();
|
|
192
|
-
i0.ɵɵelementStart(3, "span");
|
|
193
|
-
i0.ɵɵtext(4);
|
|
194
|
-
i0.ɵɵelementEnd()();
|
|
195
|
-
} if (rf & 2) {
|
|
196
|
-
const user_r2 = i0.ɵɵnextContext().$implicit;
|
|
197
|
-
i0.ɵɵadvance(4);
|
|
198
|
-
i0.ɵɵtextInterpolate(user_r2.email);
|
|
199
|
-
} }
|
|
200
|
-
function UserProfileIconComponent_ng_template_5_Template(rf, ctx) { if (rf & 1) {
|
|
201
|
-
i0.ɵɵtemplate(0, UserProfileIconComponent_ng_template_5_button_0_Template, 5, 2, "button", 4);
|
|
202
|
-
i0.ɵɵtemplate(1, UserProfileIconComponent_ng_template_5_button_1_Template, 5, 1, "button", 4);
|
|
203
|
-
i0.ɵɵtemplate(2, UserProfileIconComponent_ng_template_5_button_2_Template, 5, 1, "button", 4);
|
|
204
|
-
i0.ɵɵtemplate(3, UserProfileIconComponent_ng_template_5_button_3_Template, 5, 1, "button", 4);
|
|
205
|
-
} if (rf & 2) {
|
|
206
|
-
const user_r2 = ctx.$implicit;
|
|
207
|
-
i0.ɵɵproperty("ngIf", user_r2.firstname && user_r2.lastname);
|
|
208
|
-
i0.ɵɵadvance(1);
|
|
209
|
-
i0.ɵɵproperty("ngIf", user_r2.name);
|
|
210
|
-
i0.ɵɵadvance(1);
|
|
211
|
-
i0.ɵɵproperty("ngIf", user_r2.username);
|
|
212
|
-
i0.ɵɵadvance(1);
|
|
213
|
-
i0.ɵɵproperty("ngIf", user_r2.email);
|
|
214
|
-
} }
|
|
215
|
-
class UserProfileIconComponent {
|
|
216
|
-
constructor(userService) {
|
|
217
|
-
this.userService = userService;
|
|
218
|
-
this.userProfileUrl$ = this.userService.user$.pipe(isDefined(), map((user) => user.photoURL ?? user.avatarUrl));
|
|
219
|
-
this.userName$ = this.userService.user$.pipe(isDefined(), map((user) => user.name ??
|
|
220
|
-
(user.firstname || user.lastname
|
|
221
|
-
? [user.firstname, user.lastname].join(' ').trim()
|
|
222
|
-
: null) ??
|
|
223
|
-
user.username));
|
|
224
|
-
}
|
|
225
|
-
static { this.ɵfac = function UserProfileIconComponent_Factory(t) { return new (t || UserProfileIconComponent)(i0.ɵɵdirectiveInject(UserService)); }; }
|
|
226
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UserProfileIconComponent, selectors: [["rxap-user-profile-icon"]], hostAttrs: [1, "rxap-user-profile-icon"], standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 7, vars: 11, consts: [["fxLayout", "row", "fxLayoutAlign", "center center", 1, "profile-icon", 3, "matMenuTriggerFor", "rxapAvatarBackgroundImage", "name"], [3, "yPosition"], ["menu", "matMenu"], [3, "ngIf"], ["mat-menu-item", "", 4, "ngIf"], ["mat-menu-item", ""]], template: function UserProfileIconComponent_Template(rf, ctx) { if (rf & 1) {
|
|
227
|
-
i0.ɵɵelement(0, "button", 0);
|
|
228
|
-
i0.ɵɵpipe(1, "async");
|
|
229
|
-
i0.ɵɵpipe(2, "async");
|
|
230
|
-
i0.ɵɵelementStart(3, "mat-menu", 1, 2);
|
|
231
|
-
i0.ɵɵtemplate(5, UserProfileIconComponent_ng_template_5_Template, 4, 4, "ng-template", 3);
|
|
232
|
-
i0.ɵɵpipe(6, "async");
|
|
233
|
-
i0.ɵɵelementEnd();
|
|
234
|
-
} if (rf & 2) {
|
|
235
|
-
const _r0 = i0.ɵɵreference(4);
|
|
236
|
-
let tmp_2_0;
|
|
237
|
-
i0.ɵɵproperty("matMenuTriggerFor", _r0)("rxapAvatarBackgroundImage", i0.ɵɵpipeBind1(1, 5, ctx.userProfileUrl$))("name", (tmp_2_0 = i0.ɵɵpipeBind1(2, 7, ctx.userName$)) !== null && tmp_2_0 !== undefined ? tmp_2_0 : "");
|
|
238
|
-
i0.ɵɵadvance(3);
|
|
239
|
-
i0.ɵɵproperty("yPosition", "below");
|
|
240
|
-
i0.ɵɵadvance(2);
|
|
241
|
-
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(6, 9, ctx.userService.user$));
|
|
242
|
-
} }, dependencies: [FlexModule, i1$3.DefaultLayoutDirective, i1$3.DefaultLayoutAlignDirective, MatMenuModule, i2$3.MatMenu, i2$3.MatMenuItem, i2$3.MatMenuTrigger, AvatarBackgroundImageDirective,
|
|
243
|
-
NgIf,
|
|
244
|
-
MatIconModule, i2$2.MatIcon, AsyncPipe], styles: [".profile-icon[_ngcontent-%COMP%]{border-radius:100%;border:none;height:32px;width:32px;overflow:hidden;background-position:center center;background-repeat:no-repeat;background-size:cover}.profile-icon[_ngcontent-%COMP%]:hover{cursor:pointer}.profile-icon[_ngcontent-%COMP%]:focus{outline:none}"], changeDetection: 0 }); }
|
|
99
|
+
async getAppList() {
|
|
100
|
+
const roles = await this.userProfileService.getRoleList();
|
|
101
|
+
return this._apps.filter(app => !app.hidden)
|
|
102
|
+
.map(app => ({
|
|
103
|
+
...app,
|
|
104
|
+
href: JoinPath(app.href, this.getPathPrefix()),
|
|
105
|
+
}))
|
|
106
|
+
.filter(app => !app.permissions ||
|
|
107
|
+
!app.permissions.length ||
|
|
108
|
+
app.permissions.every(permission => roles.includes(permission)));
|
|
109
|
+
}
|
|
110
|
+
getPathPrefix() {
|
|
111
|
+
switch (this.localeId) {
|
|
112
|
+
case 'de-DE':
|
|
113
|
+
return 'de';
|
|
114
|
+
case 'en-US':
|
|
115
|
+
return 'en';
|
|
116
|
+
default:
|
|
117
|
+
return 'de';
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: AppUrlService, deps: [{ token: i1$1.ConfigService }, { token: LOCALE_ID }, { token: i1$2.RxapUserProfileService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
121
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: AppUrlService, providedIn: 'root' }); }
|
|
245
122
|
}
|
|
246
|
-
(
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
MatIconModule,
|
|
254
|
-
AsyncPipe
|
|
255
|
-
], template: "<button [matMenuTriggerFor]=\"menu\"\n [rxapAvatarBackgroundImage]=\"userProfileUrl$ | async\"\n [name]=\"(userName$ | async) ?? ''\"\n class=\"profile-icon\"\n fxLayout=\"row\"\n fxLayoutAlign=\"center center\">\n</button>\n\n<mat-menu #menu=\"matMenu\" [yPosition]=\"'below'\">\n <ng-template [ngIf]=\"userService.user$ | async\" let-user>\n <button *ngIf=\"user.firstname && user.lastname\" mat-menu-item>\n <mat-icon>person</mat-icon>\n <span>{{user.firstname}} {{user.lastname}}</span>\n </button>\n <button *ngIf=\"user.name\" mat-menu-item>\n <mat-icon>person</mat-icon>\n <span>{{user.name}}</span>\n </button>\n <button *ngIf=\"user.username\" mat-menu-item>\n <mat-icon>account_circle</mat-icon>\n <span>{{user.username}}</span>\n </button>\n <button *ngIf=\"user.email\" mat-menu-item>\n <mat-icon>email</mat-icon>\n <span>{{user.email}}</span>\n </button>\n </ng-template>\n</mat-menu>\n", styles: [".profile-icon{border-radius:100%;border:none;height:32px;width:32px;overflow:hidden;background-position:center center;background-repeat:no-repeat;background-size:cover}.profile-icon:hover{cursor:pointer}.profile-icon:focus{outline:none}\n"] }]
|
|
256
|
-
}], function () { return [{ type: i4.UserService, decorators: [{
|
|
257
|
-
type: Inject,
|
|
258
|
-
args: [UserService]
|
|
259
|
-
}] }]; }, null); })();
|
|
123
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: AppUrlService, decorators: [{
|
|
124
|
+
type: Injectable,
|
|
125
|
+
args: [{ providedIn: 'root' }]
|
|
126
|
+
}], ctorParameters: function () { return [{ type: i1$1.ConfigService }, { type: undefined, decorators: [{
|
|
127
|
+
type: Inject,
|
|
128
|
+
args: [LOCALE_ID]
|
|
129
|
+
}] }, { type: i1$2.RxapUserProfileService }]; } });
|
|
260
130
|
|
|
261
|
-
function AppsButtonComponent_ng_template_0_ng_template_4_li_2_a_1_Template(rf, ctx) { if (rf & 1) {
|
|
262
|
-
i0.ɵɵelementStart(0, "a", 9)(1, "span", 10);
|
|
263
|
-
i0.ɵɵelement(2, "img", 11);
|
|
264
|
-
i0.ɵɵelementStart(3, "span");
|
|
265
|
-
i0.ɵɵtext(4);
|
|
266
|
-
i0.ɵɵelementEnd()()();
|
|
267
|
-
} if (rf & 2) {
|
|
268
|
-
const item_r4 = i0.ɵɵnextContext().$implicit;
|
|
269
|
-
i0.ɵɵproperty("href", item_r4.href, i0.ɵɵsanitizeUrl);
|
|
270
|
-
i0.ɵɵadvance(2);
|
|
271
|
-
i0.ɵɵproperty("src", item_r4.image, i0.ɵɵsanitizeUrl);
|
|
272
|
-
i0.ɵɵadvance(2);
|
|
273
|
-
i0.ɵɵtextInterpolate(item_r4.label);
|
|
274
|
-
} }
|
|
275
|
-
const _c0$5 = function (a0) { return { empty: a0 }; };
|
|
276
|
-
function AppsButtonComponent_ng_template_0_ng_template_4_li_2_Template(rf, ctx) { if (rf & 1) {
|
|
277
|
-
i0.ɵɵelementStart(0, "li", 7);
|
|
278
|
-
i0.ɵɵtemplate(1, AppsButtonComponent_ng_template_0_ng_template_4_li_2_a_1_Template, 5, 3, "a", 8);
|
|
279
|
-
i0.ɵɵelementEnd();
|
|
280
|
-
} if (rf & 2) {
|
|
281
|
-
const item_r4 = ctx.$implicit;
|
|
282
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(2, _c0$5, item_r4.empty));
|
|
283
|
-
i0.ɵɵadvance(1);
|
|
284
|
-
i0.ɵɵproperty("ngIf", !item_r4.empty);
|
|
285
|
-
} }
|
|
286
|
-
const _c1$4 = function (a0) { return { columns: a0 }; };
|
|
287
|
-
function AppsButtonComponent_ng_template_0_ng_template_4_Template(rf, ctx) { if (rf & 1) {
|
|
288
|
-
i0.ɵɵelementStart(0, "div", 4)(1, "ul", 5);
|
|
289
|
-
i0.ɵɵtemplate(2, AppsButtonComponent_ng_template_0_ng_template_4_li_2_Template, 2, 4, "li", 6);
|
|
290
|
-
i0.ɵɵelementEnd()();
|
|
291
|
-
} if (rf & 2) {
|
|
292
|
-
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
293
|
-
i0.ɵɵadvance(1);
|
|
294
|
-
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(2, _c1$4, ctx_r2.columns));
|
|
295
|
-
i0.ɵɵadvance(1);
|
|
296
|
-
i0.ɵɵproperty("ngForOf", ctx_r2.gridWithPadding);
|
|
297
|
-
} }
|
|
298
|
-
function AppsButtonComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {
|
|
299
|
-
const _r8 = i0.ɵɵgetCurrentView();
|
|
300
|
-
i0.ɵɵelementStart(0, "button", 1, 2);
|
|
301
|
-
i0.ɵɵlistener("click", function AppsButtonComponent_ng_template_0_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r7 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r7.isOpen = !ctx_r7.isOpen); });
|
|
302
|
-
i0.ɵɵelementStart(2, "mat-icon");
|
|
303
|
-
i0.ɵɵtext(3, "apps");
|
|
304
|
-
i0.ɵɵelementEnd()();
|
|
305
|
-
i0.ɵɵtemplate(4, AppsButtonComponent_ng_template_0_ng_template_4_Template, 3, 4, "ng-template", 3);
|
|
306
|
-
i0.ɵɵlistener("overlayOutsideClick", function AppsButtonComponent_ng_template_0_Template_ng_template_overlayOutsideClick_4_listener() { i0.ɵɵrestoreView(_r8); const ctx_r9 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r9.isOpen = false); });
|
|
307
|
-
} if (rf & 2) {
|
|
308
|
-
const _r1 = i0.ɵɵreference(1);
|
|
309
|
-
const ctx_r0 = i0.ɵɵnextContext();
|
|
310
|
-
i0.ɵɵadvance(4);
|
|
311
|
-
i0.ɵɵproperty("cdkConnectedOverlayOpen", ctx_r0.isOpen)("cdkConnectedOverlayOrigin", _r1);
|
|
312
|
-
} }
|
|
313
131
|
class AppsButtonComponent {
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
return gridWithPadding;
|
|
132
|
+
constructor(grid, appUrlService, authenticationService) {
|
|
133
|
+
this.appUrlService = appUrlService;
|
|
134
|
+
this.authenticationService = authenticationService;
|
|
135
|
+
this.isOpen = false;
|
|
136
|
+
this.appList = signal([]);
|
|
320
137
|
}
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
138
|
+
ngOnInit() {
|
|
139
|
+
this._subscription = this.authenticationService.isAuthenticated$.pipe(filter(Boolean), switchMap(() => this.appUrlService.getAppList()), tap((apps) => this.appList.set(apps))).subscribe();
|
|
140
|
+
}
|
|
141
|
+
ngOnDestroy() {
|
|
142
|
+
this._subscription?.unsubscribe();
|
|
143
|
+
}
|
|
144
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: AppsButtonComponent, deps: [{ token: RXAP_LAYOUT_APPS_GRID, optional: true }, { token: AppUrlService }, { token: i1$2.RxapAuthenticationService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
145
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: AppsButtonComponent, isStandalone: true, selector: "rxap-apps-button", ngImport: i0, template: "<div *ngIf=\"appList()?.length\" class=\"flex flex-row items-center gap-8\">\n\n <div *ngIf=\"isOpen\" class=\"flex flex-row items-center gap-6\">\n\n <div *ngFor=\"let app of appList()\" class=\"h-10\">\n <a [href]=\"app.href\" mat-stroked-button>\n <span class=\"flex flex-row items-center gap-4\">\n <img *ngIf=\"app.image\" [alt]=\"app.label\" [ngSrc]=\"app.image\" height=\"40\" width=\"40\">\n <span class=\"label grow-0\">{{app.label}}</span>\n </span>\n </a>\n </div>\n\n </div>\n\n <button (click)=\"isOpen = !isOpen\" mat-icon-button>\n <mat-icon svgIcon=\"apps\"></mat-icon>\n </button>\n\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FlexModule }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$3.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i1$3.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "src", "srcset"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
146
|
+
}
|
|
147
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: AppsButtonComponent, decorators: [{
|
|
148
|
+
type: Component,
|
|
149
|
+
args: [{ selector: 'rxap-apps-button', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
150
|
+
NgIf,
|
|
151
|
+
FlexModule,
|
|
152
|
+
NgFor,
|
|
153
|
+
MatButtonModule,
|
|
154
|
+
MatIconModule,
|
|
155
|
+
NgOptimizedImage,
|
|
156
|
+
], template: "<div *ngIf=\"appList()?.length\" class=\"flex flex-row items-center gap-8\">\n\n <div *ngIf=\"isOpen\" class=\"flex flex-row items-center gap-6\">\n\n <div *ngFor=\"let app of appList()\" class=\"h-10\">\n <a [href]=\"app.href\" mat-stroked-button>\n <span class=\"flex flex-row items-center gap-4\">\n <img *ngIf=\"app.image\" [alt]=\"app.label\" [ngSrc]=\"app.image\" height=\"40\" width=\"40\">\n <span class=\"label grow-0\">{{app.label}}</span>\n </span>\n </a>\n </div>\n\n </div>\n\n <button (click)=\"isOpen = !isOpen\" mat-icon-button>\n <mat-icon svgIcon=\"apps\"></mat-icon>\n </button>\n\n</div>\n" }]
|
|
157
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
158
|
+
type: Optional
|
|
159
|
+
}, {
|
|
160
|
+
type: Inject,
|
|
161
|
+
args: [RXAP_LAYOUT_APPS_GRID]
|
|
162
|
+
}] }, { type: AppUrlService }, { type: i1$2.RxapAuthenticationService }]; } });
|
|
163
|
+
|
|
164
|
+
class I18nService {
|
|
165
|
+
constructor(localId, userProfileService) {
|
|
166
|
+
this.localId = localId;
|
|
167
|
+
this.userProfileService = userProfileService;
|
|
168
|
+
this.currentLanguage = this.localId.replace(/-[A-Z]+$/, '');
|
|
169
|
+
}
|
|
170
|
+
async setLanguage(language) {
|
|
171
|
+
await this.userProfileService.setLanguage(language);
|
|
172
|
+
this.redirect(language);
|
|
173
|
+
}
|
|
174
|
+
redirect(next, current = this.currentLanguage) {
|
|
175
|
+
if (current === next) {
|
|
176
|
+
console.warn('[I18nService] redirect not required - language unchanged');
|
|
177
|
+
return;
|
|
327
178
|
}
|
|
328
|
-
|
|
179
|
+
const redirectUrl = location.origin +
|
|
180
|
+
location.pathname.replace(new RegExp(`^/${current}`), `/${next}`) +
|
|
181
|
+
location.search;
|
|
182
|
+
console.log('[I18nService] redirect to: ' + redirectUrl);
|
|
183
|
+
location.replace(redirectUrl);
|
|
329
184
|
}
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
this.isOpen = false;
|
|
333
|
-
this.grid = [];
|
|
334
|
-
this.grid = grid ?? this.config.get('navigation.apps') ?? [];
|
|
335
|
-
}
|
|
336
|
-
static { this.ɵfac = function AppsButtonComponent_Factory(t) { return new (t || AppsButtonComponent)(i0.ɵɵdirectiveInject(RXAP_LAYOUT_APPS_GRID, 8), i0.ɵɵdirectiveInject(ConfigService)); }; }
|
|
337
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AppsButtonComponent, selectors: [["rxap-apps-button"]], hostAttrs: [1, "rxap-apps-button"], standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 1, vars: 1, consts: [[3, "ngIf"], ["cdkOverlayOrigin", "", "mat-icon-button", "", 3, "click"], ["trigger", "cdkOverlayOrigin"], ["cdkConnectedOverlay", "", 3, "cdkConnectedOverlayOpen", "cdkConnectedOverlayOrigin", "overlayOutsideClick"], [1, "grid-container"], [1, "grid", 3, "ngStyle"], [3, "ngClass", 4, "ngFor", "ngForOf"], [3, "ngClass"], [3, "href", 4, "ngIf"], [3, "href"], ["fxLayout", "column", "fxLayoutAlign", "start center", "fxLayoutGap", "12px"], ["width", "53px", 3, "src"]], template: function AppsButtonComponent_Template(rf, ctx) { if (rf & 1) {
|
|
338
|
-
i0.ɵɵtemplate(0, AppsButtonComponent_ng_template_0_Template, 5, 2, "ng-template", 0);
|
|
339
|
-
} if (rf & 2) {
|
|
340
|
-
i0.ɵɵproperty("ngIf", ctx.grid && ctx.grid.length);
|
|
341
|
-
} }, dependencies: [NgIf,
|
|
342
|
-
MatButtonModule, i1$2.MatIconButton, CdkOverlayOrigin,
|
|
343
|
-
MatIconModule, i2$2.MatIcon, CdkConnectedOverlay,
|
|
344
|
-
ExtendedModule, i2$4.DefaultClassDirective, i2$4.DefaultStyleDirective, NgStyle,
|
|
345
|
-
NgFor,
|
|
346
|
-
NgClass,
|
|
347
|
-
FlexModule, i1$3.DefaultLayoutDirective, i1$3.DefaultLayoutGapDirective, i1$3.DefaultLayoutAlignDirective], styles: [".grid-container[_ngcontent-%COMP%]{padding:8px;border:1px solid rgba(0,0,0,.2);border-radius:8px;box-shadow:0 1px 2px #3c40434d,0 2px 6px 2px #3c404326}.grid[_ngcontent-%COMP%]{list-style-type:none;margin:0;padding:0}.grid[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{border-radius:8px;padding:6px;height:84px;width:84px;transition-delay:0s;transition-duration:.2s;transition-property:tramsform;transition-timing-function:cubic-bezier(.333,0,0,1);position:relative}.grid[_ngcontent-%COMP%] li[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{position:absolute;inset:6px;text-align:center;text-decoration:none;color:#000}"], changeDetection: 0 }); }
|
|
185
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: I18nService, deps: [{ token: LOCALE_ID }, { token: i1$2.RxapUserProfileService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
186
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: I18nService, providedIn: 'root' }); }
|
|
348
187
|
}
|
|
349
|
-
(
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
CdkConnectedOverlay,
|
|
357
|
-
ExtendedModule,
|
|
358
|
-
NgStyle,
|
|
359
|
-
NgFor,
|
|
360
|
-
NgClass,
|
|
361
|
-
FlexModule
|
|
362
|
-
], template: "<ng-template [ngIf]=\"grid && grid.length\">\n <button #trigger=\"cdkOverlayOrigin\" (click)=\"isOpen = !isOpen\" cdkOverlayOrigin mat-icon-button>\n <mat-icon>apps</mat-icon>\n </button>\n\n <ng-template (overlayOutsideClick)=\"isOpen = false\"\n [cdkConnectedOverlayOpen]=\"isOpen\"\n [cdkConnectedOverlayOrigin]=\"trigger\"\n cdkConnectedOverlay>\n\n <div class=\"grid-container\">\n\n <ul [ngStyle]=\"{ columns: columns }\" class=\"grid\">\n <li *ngFor=\"let item of gridWithPadding\" [ngClass]=\"{ empty: item.empty }\">\n <a *ngIf=\"!item.empty\" [href]=\"item.href\">\n\n <span fxLayout=\"column\" fxLayoutAlign=\"start center\" fxLayoutGap=\"12px\">\n <img [src]=\"item.image\" width=\"53px\">\n <span>{{item.label}}</span>\n </span>\n\n </a>\n </li>\n </ul>\n\n </div>\n\n </ng-template>\n</ng-template>\n", styles: [".grid-container{padding:8px;border:1px solid rgba(0,0,0,.2);border-radius:8px;box-shadow:0 1px 2px #3c40434d,0 2px 6px 2px #3c404326}.grid{list-style-type:none;margin:0;padding:0}.grid li{border-radius:8px;padding:6px;height:84px;width:84px;transition-delay:0s;transition-duration:.2s;transition-property:tramsform;transition-timing-function:cubic-bezier(.333,0,0,1);position:relative}.grid li a{position:absolute;inset:6px;text-align:center;text-decoration:none;color:#000}\n"] }]
|
|
363
|
-
}], function () { return [{ type: undefined, decorators: [{
|
|
364
|
-
type: Optional
|
|
365
|
-
}, {
|
|
366
|
-
type: Inject,
|
|
367
|
-
args: [RXAP_LAYOUT_APPS_GRID]
|
|
368
|
-
}] }, { type: i1$4.ConfigService, decorators: [{
|
|
369
|
-
type: Inject,
|
|
370
|
-
args: [ConfigService]
|
|
371
|
-
}] }]; }, null); })();
|
|
188
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: I18nService, decorators: [{
|
|
189
|
+
type: Injectable,
|
|
190
|
+
args: [{ providedIn: 'root' }]
|
|
191
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
192
|
+
type: Inject,
|
|
193
|
+
args: [LOCALE_ID]
|
|
194
|
+
}] }, { type: i1$2.RxapUserProfileService }]; } });
|
|
372
195
|
|
|
373
|
-
function LanguageSelectorComponent_ng_template_0_mat_option_3_Template(rf, ctx) { if (rf & 1) {
|
|
374
|
-
i0.ɵɵelementStart(0, "mat-option", 4);
|
|
375
|
-
i0.ɵɵtext(1);
|
|
376
|
-
i0.ɵɵelementEnd();
|
|
377
|
-
} if (rf & 2) {
|
|
378
|
-
const item_r2 = ctx.$implicit;
|
|
379
|
-
i0.ɵɵproperty("value", item_r2.key);
|
|
380
|
-
i0.ɵɵadvance(1);
|
|
381
|
-
i0.ɵɵtextInterpolate(item_r2.value);
|
|
382
|
-
} }
|
|
383
|
-
function LanguageSelectorComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {
|
|
384
|
-
const _r4 = i0.ɵɵgetCurrentView();
|
|
385
|
-
i0.ɵɵelementStart(0, "div")(1, "mat-form-field", 1)(2, "mat-select", 2);
|
|
386
|
-
i0.ɵɵlistener("ngModelChange", function LanguageSelectorComponent_ng_template_0_Template_mat_select_ngModelChange_2_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.language.setLanguage($event)); });
|
|
387
|
-
i0.ɵɵtemplate(3, LanguageSelectorComponent_ng_template_0_mat_option_3_Template, 2, 2, "mat-option", 3);
|
|
388
|
-
i0.ɵɵpipe(4, "keyvalue");
|
|
389
|
-
i0.ɵɵelementEnd()()();
|
|
390
|
-
} if (rf & 2) {
|
|
391
|
-
const ctx_r0 = i0.ɵɵnextContext();
|
|
392
|
-
i0.ɵɵadvance(2);
|
|
393
|
-
i0.ɵɵproperty("ngModel", ctx_r0.language.selectedLanguage);
|
|
394
|
-
i0.ɵɵadvance(1);
|
|
395
|
-
i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(4, 2, ctx_r0.language.languages));
|
|
396
|
-
} }
|
|
397
|
-
const RXAP_SELECTED_LANGUAGE_LOCAL_STORAGE_KEY = 'rxap__selected_language';
|
|
398
|
-
const RXAP_SELECTED_LANGUAGE_CHANGE_LOCAL_STORAGE_KEY = 'rxap__selected_language_last_change';
|
|
399
196
|
class LanguageSelectorService {
|
|
400
|
-
constructor(config) {
|
|
197
|
+
constructor(config, localId, i18nService) {
|
|
401
198
|
this.config = config;
|
|
199
|
+
this.localId = localId;
|
|
200
|
+
this.i18nService = i18nService;
|
|
402
201
|
this.languages = this.config.get('i18n.languages') ?? {};
|
|
403
202
|
this.defaultLanguage =
|
|
404
203
|
this.config.get('i18n.defaultLanguage') ??
|
|
405
204
|
Object.keys(this.languages)[0] ??
|
|
406
205
|
'en';
|
|
407
|
-
this.selectedLanguage =
|
|
408
|
-
localStorage.getItem(RXAP_SELECTED_LANGUAGE_LOCAL_STORAGE_KEY) ??
|
|
409
|
-
this.defaultLanguage;
|
|
206
|
+
this.selectedLanguage = this.i18nService.currentLanguage;
|
|
410
207
|
}
|
|
411
|
-
setLanguage(language) {
|
|
412
|
-
if (language !== this.
|
|
413
|
-
this.
|
|
208
|
+
async setLanguage(language) {
|
|
209
|
+
if (language !== this.i18nService.currentLanguage) {
|
|
210
|
+
await this.i18nService.setLanguage(language);
|
|
414
211
|
}
|
|
415
212
|
}
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
this.redirect(localStorage.getItem(RXAP_SELECTED_LANGUAGE_LOCAL_STORAGE_KEY));
|
|
419
|
-
}
|
|
420
|
-
}
|
|
421
|
-
redirect(language) {
|
|
422
|
-
const currentUrl = location.origin + location.pathname + location.search;
|
|
423
|
-
const redirectUrl = location.origin +
|
|
424
|
-
`/${language}` +
|
|
425
|
-
location.pathname.replace(new RegExp(`^\/${this.selectedLanguage}`), '') +
|
|
426
|
-
location.search;
|
|
427
|
-
this.selectedLanguage = language;
|
|
428
|
-
localStorage.setItem(RXAP_SELECTED_LANGUAGE_LOCAL_STORAGE_KEY, language);
|
|
429
|
-
if (currentUrl !== redirectUrl) {
|
|
430
|
-
if (this.checkLastChange()) {
|
|
431
|
-
location.replace(redirectUrl);
|
|
432
|
-
}
|
|
433
|
-
}
|
|
434
|
-
else {
|
|
435
|
-
console.log('Redirect not required');
|
|
436
|
-
}
|
|
437
|
-
}
|
|
438
|
-
checkLastChange() {
|
|
439
|
-
const lastChangeString = localStorage.getItem(RXAP_SELECTED_LANGUAGE_CHANGE_LOCAL_STORAGE_KEY);
|
|
440
|
-
if (lastChangeString) {
|
|
441
|
-
if (Date.now() - parseInt(lastChangeString, 10) < 1000) {
|
|
442
|
-
return false;
|
|
443
|
-
}
|
|
444
|
-
}
|
|
445
|
-
localStorage.setItem(RXAP_SELECTED_LANGUAGE_CHANGE_LOCAL_STORAGE_KEY, Date.now().toFixed(0));
|
|
446
|
-
return true;
|
|
447
|
-
}
|
|
448
|
-
static { this.ɵfac = function LanguageSelectorService_Factory(t) { return new (t || LanguageSelectorService)(i0.ɵɵinject(ConfigService)); }; }
|
|
449
|
-
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: LanguageSelectorService, factory: LanguageSelectorService.ɵfac, providedIn: 'root' }); }
|
|
213
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: LanguageSelectorService, deps: [{ token: i1$1.ConfigService }, { token: LOCALE_ID }, { token: I18nService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
214
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: LanguageSelectorService, providedIn: 'root' }); }
|
|
450
215
|
}
|
|
451
|
-
(
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
216
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: LanguageSelectorService, decorators: [{
|
|
217
|
+
type: Injectable,
|
|
218
|
+
args: [{ providedIn: 'root' }]
|
|
219
|
+
}], ctorParameters: function () { return [{ type: i1$1.ConfigService }, { type: undefined, decorators: [{
|
|
220
|
+
type: Inject,
|
|
221
|
+
args: [LOCALE_ID]
|
|
222
|
+
}] }, { type: I18nService }]; } });
|
|
223
|
+
|
|
458
224
|
class LanguageSelectorComponent {
|
|
459
225
|
constructor(language) {
|
|
460
226
|
this.language = language;
|
|
461
227
|
}
|
|
462
|
-
static { this.ɵfac =
|
|
463
|
-
static { this.ɵcmp =
|
|
464
|
-
i0.ɵɵtemplate(0, LanguageSelectorComponent_ng_template_0_Template, 5, 4, "ng-template", 0);
|
|
465
|
-
i0.ɵɵpipe(1, "keyvalue");
|
|
466
|
-
} if (rf & 2) {
|
|
467
|
-
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(1, 1, ctx.language.languages).length);
|
|
468
|
-
} }, dependencies: [NgIf,
|
|
469
|
-
MatFormFieldModule, i2$5.MatFormField, MatSelectModule, i3$1.MatSelect, i4$1.MatOption, FormsModule, i5.NgControlStatus, i5.NgModel, NgFor,
|
|
470
|
-
MatOptionModule,
|
|
471
|
-
KeyValuePipe], styles: [".language-selector[_ngcontent-%COMP%]{width:142px}.language-selector[_ngcontent-%COMP%] .mat-form-field-wrapper{padding-bottom:0}.language-selector[_ngcontent-%COMP%] .mat-form-field-wrapper .mat-form-field-infix{padding:12px 0;border-width:6px}.language-selector[_ngcontent-%COMP%] .mat-form-field-wrapper .mat-form-field-infix .mat-select-arrow-wrapper{transform:translateY(0)}"], changeDetection: 0 }); }
|
|
228
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: LanguageSelectorComponent, deps: [{ token: LanguageSelectorService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
229
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: LanguageSelectorComponent, isStandalone: true, selector: "rxap-language-selector", ngImport: i0, template: "<ng-template [ngIf]=\"(language.languages | keyvalue).length\">\n <div>\n <mat-form-field appearance=\"outline\" class=\"language-selector\" rxapStopPropagation>\n <mat-label i18n>Select Language</mat-label>\n <mat-select (ngModelChange)=\"language.setLanguage($event)\" [ngModel]=\"language.selectedLanguage\">\n <mat-option *ngFor=\"let item of language.languages | keyvalue\" [value]=\"item.key\">{{item.value}}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n</ng-template>\n", styles: [".language-selector{width:calc(100% - 32px);margin:0 16px}.language-selector ::ng-deep .mat-form-field-wrapper{padding-bottom:0}.language-selector ::ng-deep .mat-form-field-wrapper .mat-form-field-infix{padding:12px 0;border-width:6px}.language-selector ::ng-deep .mat-form-field-wrapper .mat-form-field-infix .mat-select-arrow-wrapper{transform:translateY(0)}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: StopPropagationDirective, selector: "[rxapStopPropagation]" }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3$1.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "panelWidth", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "pipe", type: KeyValuePipe, name: "keyvalue" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
472
230
|
}
|
|
473
|
-
(
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
231
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: LanguageSelectorComponent, decorators: [{
|
|
232
|
+
type: Component,
|
|
233
|
+
args: [{ selector: 'rxap-language-selector', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
234
|
+
NgIf,
|
|
235
|
+
MatFormFieldModule,
|
|
236
|
+
StopPropagationDirective,
|
|
237
|
+
MatSelectModule,
|
|
238
|
+
FormsModule,
|
|
239
|
+
NgFor,
|
|
240
|
+
MatOptionModule,
|
|
241
|
+
KeyValuePipe,
|
|
242
|
+
], template: "<ng-template [ngIf]=\"(language.languages | keyvalue).length\">\n <div>\n <mat-form-field appearance=\"outline\" class=\"language-selector\" rxapStopPropagation>\n <mat-label i18n>Select Language</mat-label>\n <mat-select (ngModelChange)=\"language.setLanguage($event)\" [ngModel]=\"language.selectedLanguage\">\n <mat-option *ngFor=\"let item of language.languages | keyvalue\" [value]=\"item.key\">{{item.value}}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n</ng-template>\n", styles: [".language-selector{width:calc(100% - 32px);margin:0 16px}.language-selector ::ng-deep .mat-form-field-wrapper{padding-bottom:0}.language-selector ::ng-deep .mat-form-field-wrapper .mat-form-field-infix{padding:12px 0;border-width:6px}.language-selector ::ng-deep .mat-form-field-wrapper .mat-form-field-infix .mat-select-arrow-wrapper{transform:translateY(0)}\n"] }]
|
|
243
|
+
}], ctorParameters: function () { return [{ type: LanguageSelectorService }]; } });
|
|
485
244
|
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
i0.ɵɵ
|
|
494
|
-
i0.ɵɵ
|
|
495
|
-
} }
|
|
496
|
-
class SidenavToggleButtonComponent {
|
|
497
|
-
static { this.ɵfac = function SidenavToggleButtonComponent_Factory(t) { return new (t || SidenavToggleButtonComponent)(); }; }
|
|
498
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SidenavToggleButtonComponent, selectors: [["rxap-sidenav-toggle-button"]], hostAttrs: [1, "rxap-sidenav-toggle-button"], inputs: { sidenav: "sidenav" }, standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 3, vars: 2, consts: [["mat-icon-button", "", 3, "click"], [4, "ngIf"]], template: function SidenavToggleButtonComponent_Template(rf, ctx) { if (rf & 1) {
|
|
499
|
-
i0.ɵɵelementStart(0, "button", 0);
|
|
500
|
-
i0.ɵɵlistener("click", function SidenavToggleButtonComponent_Template_button_click_0_listener() { return ctx.sidenav.toggle(); });
|
|
501
|
-
i0.ɵɵtemplate(1, SidenavToggleButtonComponent_mat_icon_1_Template, 2, 0, "mat-icon", 1);
|
|
502
|
-
i0.ɵɵtemplate(2, SidenavToggleButtonComponent_mat_icon_2_Template, 2, 0, "mat-icon", 1);
|
|
503
|
-
i0.ɵɵelementEnd();
|
|
504
|
-
} if (rf & 2) {
|
|
505
|
-
i0.ɵɵadvance(1);
|
|
506
|
-
i0.ɵɵproperty("ngIf", !ctx.sidenav.opened);
|
|
507
|
-
i0.ɵɵadvance(1);
|
|
508
|
-
i0.ɵɵproperty("ngIf", ctx.sidenav.opened);
|
|
509
|
-
} }, dependencies: [MatButtonModule, i1$2.MatIconButton, NgIf, MatIconModule, i2$2.MatIcon], changeDetection: 0 }); }
|
|
245
|
+
class NavigationProgressBarComponent {
|
|
246
|
+
constructor(router) {
|
|
247
|
+
this.router = router;
|
|
248
|
+
this.navigating$ = this.router.events.pipe(filter(event => event instanceof NavigationStart ||
|
|
249
|
+
event instanceof NavigationEnd ||
|
|
250
|
+
event instanceof NavigationCancel), map(event => event instanceof NavigationStart));
|
|
251
|
+
}
|
|
252
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: NavigationProgressBarComponent, deps: [{ token: Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
253
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: NavigationProgressBarComponent, isStandalone: true, selector: "rxap-navigation-progress-bar", ngImport: i0, template: "<mat-progress-bar\n *ngIf=\"navigating$ | async\"\n color=\"accent\"\n mode=\"indeterminate\"\n></mat-progress-bar>\n", styles: [""], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i1$4.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
510
254
|
}
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
255
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: NavigationProgressBarComponent, decorators: [{
|
|
256
|
+
type: Component,
|
|
257
|
+
args: [{ selector: 'rxap-navigation-progress-bar', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
258
|
+
NgIf,
|
|
259
|
+
MatProgressBarModule,
|
|
260
|
+
AsyncPipe,
|
|
261
|
+
], template: "<mat-progress-bar\n *ngIf=\"navigating$ | async\"\n color=\"accent\"\n mode=\"indeterminate\"\n></mat-progress-bar>\n" }]
|
|
262
|
+
}], ctorParameters: function () { return [{ type: i2$3.Router, decorators: [{
|
|
263
|
+
type: Inject,
|
|
264
|
+
args: [Router]
|
|
265
|
+
}] }]; } });
|
|
266
|
+
|
|
267
|
+
class SettingsButtonComponent {
|
|
268
|
+
constructor(theme, route, injector) {
|
|
269
|
+
this.theme = theme;
|
|
270
|
+
this.route = route;
|
|
271
|
+
this.injector = injector;
|
|
272
|
+
this.isDevMode = isDevMode();
|
|
273
|
+
this.items = signal([]);
|
|
274
|
+
}
|
|
275
|
+
ngOnDestroy() {
|
|
276
|
+
this._subscription?.unsubscribe();
|
|
277
|
+
}
|
|
278
|
+
ngOnInit() {
|
|
279
|
+
this._subscription = this.route.data.pipe(map(data => this.getCustomMenuItems(data)), map(items => items.map(item => new ComponentPortal(item, undefined, this.injector))), tap(items => this.items.set(items))).subscribe();
|
|
280
|
+
}
|
|
281
|
+
getCustomMenuItems(data) {
|
|
282
|
+
if (data?.layout?.header?.menu?.items?.length) {
|
|
283
|
+
return data.layout.header.menu.items;
|
|
284
|
+
}
|
|
285
|
+
return [];
|
|
286
|
+
}
|
|
287
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: SettingsButtonComponent, deps: [{ token: i1.ThemeService }, { token: i2$3.ActivatedRoute }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
288
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: SettingsButtonComponent, isStandalone: true, selector: "rxap-settings-button", ngImport: i0, template: "<button [matMenuTriggerFor]=\"menu\" mat-icon-button>\n <mat-icon svgIcon=\"cog\"></mat-icon>\n</button>\n\n<mat-menu #menu=\"matMenu\">\n <button (click)=\"theme.toggleDarkTheme()\" mat-menu-item>\n <mat-icon *ngIf=\"theme.darkMode\" svgIcon=\"brightness-2\"></mat-icon>\n <mat-icon *ngIf=\"!theme.darkMode\" svgIcon=\"brightness-5\"></mat-icon>\n <span i18n>Mode</span>\n </button>\n <rxap-language-selector *ngIf=\"!isDevMode\"></rxap-language-selector>\n <ng-container *ngFor=\"let item of items()\">\n <ng-template [cdkPortalOutlet]=\"item\"></ng-template>\n </ng-container>\n</mat-menu>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$3.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: LanguageSelectorComponent, selector: "rxap-language-selector" }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i6.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i6.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }] }); }
|
|
289
|
+
}
|
|
290
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: SettingsButtonComponent, decorators: [{
|
|
291
|
+
type: Component,
|
|
292
|
+
args: [{ selector: 'rxap-settings-button', standalone: true, imports: [CommonModule, MatButtonModule, MatIconModule, LanguageSelectorComponent, MatMenuModule, PortalModule], template: "<button [matMenuTriggerFor]=\"menu\" mat-icon-button>\n <mat-icon svgIcon=\"cog\"></mat-icon>\n</button>\n\n<mat-menu #menu=\"matMenu\">\n <button (click)=\"theme.toggleDarkTheme()\" mat-menu-item>\n <mat-icon *ngIf=\"theme.darkMode\" svgIcon=\"brightness-2\"></mat-icon>\n <mat-icon *ngIf=\"!theme.darkMode\" svgIcon=\"brightness-5\"></mat-icon>\n <span i18n>Mode</span>\n </button>\n <rxap-language-selector *ngIf=\"!isDevMode\"></rxap-language-selector>\n <ng-container *ngFor=\"let item of items()\">\n <ng-template [cdkPortalOutlet]=\"item\"></ng-template>\n </ng-container>\n</mat-menu>\n" }]
|
|
293
|
+
}], ctorParameters: function () { return [{ type: i1.ThemeService }, { type: i2$3.ActivatedRoute }, { type: i0.Injector }]; } });
|
|
294
|
+
|
|
295
|
+
class UserProfileIconComponent {
|
|
296
|
+
constructor(userProfileService, authenticationService) {
|
|
297
|
+
this.userProfileService = userProfileService;
|
|
298
|
+
this.authenticationService = authenticationService;
|
|
299
|
+
this.username = signal(null);
|
|
300
|
+
}
|
|
301
|
+
ngOnInit() {
|
|
302
|
+
this._subscription = this.authenticationService.isAuthenticated$.pipe(filter$1(Boolean), switchMap$1(() => this.userProfileService.getProfile()), filter$1(Boolean), tap((user) => this.username.set(user.username ?? null))).subscribe();
|
|
303
|
+
}
|
|
304
|
+
ngOnDestroy() {
|
|
305
|
+
this._subscription?.unsubscribe();
|
|
306
|
+
}
|
|
307
|
+
async logout() {
|
|
308
|
+
await this.authenticationService.signOut();
|
|
309
|
+
}
|
|
310
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: UserProfileIconComponent, deps: [{ token: i1$2.RxapUserProfileService }, { token: i1$2.RxapAuthenticationService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
311
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: UserProfileIconComponent, isStandalone: true, selector: "rxap-user-profile-icon", ngImport: i0, template: "<button [matMenuTriggerFor]=\"menu\"\n [disabled]=\"!username()\"\n class=\"profile-icon flex flex-row justify-center items-center\">\n <mat-icon class=\"avatar-icon\" svgIcon=\"account-circle\"></mat-icon>\n</button>\n\n<mat-menu #menu=\"matMenu\" [yPosition]=\"'below'\">\n <button mat-menu-item>\n <mat-icon svgIcon=\"account\"></mat-icon>\n <span>{{username()}}</span>\n </button>\n <button (click)=\"logout()\" mat-menu-item>\n <mat-icon svgIcon=\"logout\"></mat-icon>\n <span i18n>Logout</span>\n </button>\n</mat-menu>\n", styles: [".profile-icon{border-radius:100%;border:none;height:32px;width:32px;overflow:hidden;background-position:center center;background-repeat:no-repeat;background-size:cover}.profile-icon .avatar-icon{width:32px;height:32px;font-size:32px}.profile-icon:hover{cursor:pointer}.profile-icon:focus{outline:none}\n"], dependencies: [{ kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i6.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i6.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
312
|
+
}
|
|
313
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: UserProfileIconComponent, decorators: [{
|
|
314
|
+
type: Component,
|
|
315
|
+
args: [{ selector: 'rxap-user-profile-icon', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
316
|
+
MatMenuModule,
|
|
317
|
+
MatIconModule,
|
|
318
|
+
NgIf,
|
|
319
|
+
AsyncPipe,
|
|
320
|
+
], template: "<button [matMenuTriggerFor]=\"menu\"\n [disabled]=\"!username()\"\n class=\"profile-icon flex flex-row justify-center items-center\">\n <mat-icon class=\"avatar-icon\" svgIcon=\"account-circle\"></mat-icon>\n</button>\n\n<mat-menu #menu=\"matMenu\" [yPosition]=\"'below'\">\n <button mat-menu-item>\n <mat-icon svgIcon=\"account\"></mat-icon>\n <span>{{username()}}</span>\n </button>\n <button (click)=\"logout()\" mat-menu-item>\n <mat-icon svgIcon=\"logout\"></mat-icon>\n <span i18n>Logout</span>\n </button>\n</mat-menu>\n", styles: [".profile-icon{border-radius:100%;border:none;height:32px;width:32px;overflow:hidden;background-position:center center;background-repeat:no-repeat;background-size:cover}.profile-icon .avatar-icon{width:32px;height:32px;font-size:32px}.profile-icon:hover{cursor:pointer}.profile-icon:focus{outline:none}\n"] }]
|
|
321
|
+
}], ctorParameters: function () { return [{ type: i1$2.RxapUserProfileService }, { type: i1$2.RxapAuthenticationService }]; } });
|
|
521
322
|
|
|
522
|
-
function HeaderComponent_mat_toolbar_row_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
523
|
-
i0.ɵɵelementContainer(0);
|
|
524
|
-
} }
|
|
525
|
-
function HeaderComponent_mat_toolbar_row_1_Template(rf, ctx) { if (rf & 1) {
|
|
526
|
-
i0.ɵɵelementStart(0, "mat-toolbar-row");
|
|
527
|
-
i0.ɵɵtemplate(1, HeaderComponent_mat_toolbar_row_1_ng_container_1_Template, 1, 0, "ng-container", 7);
|
|
528
|
-
i0.ɵɵelementEnd();
|
|
529
|
-
} if (rf & 2) {
|
|
530
|
-
const headerComponent_r4 = ctx.$implicit;
|
|
531
|
-
i0.ɵɵadvance(1);
|
|
532
|
-
i0.ɵɵproperty("ngComponentOutlet", headerComponent_r4);
|
|
533
|
-
} }
|
|
534
|
-
function HeaderComponent_rxap_sidenav_toggle_button_4_Template(rf, ctx) { if (rf & 1) {
|
|
535
|
-
i0.ɵɵelement(0, "rxap-sidenav-toggle-button", 8);
|
|
536
|
-
} if (rf & 2) {
|
|
537
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
538
|
-
i0.ɵɵproperty("sidenav", ctx_r1.sidenav);
|
|
539
|
-
} }
|
|
540
|
-
function HeaderComponent_rxap_user_profile_icon_9_Template(rf, ctx) { if (rf & 1) {
|
|
541
|
-
i0.ɵɵelement(0, "rxap-user-profile-icon", 5);
|
|
542
|
-
} }
|
|
543
|
-
function HeaderComponent_div_11_Template(rf, ctx) { if (rf & 1) {
|
|
544
|
-
i0.ɵɵelementStart(0, "div", 5)(1, "button", 9)(2, "mat-icon");
|
|
545
|
-
i0.ɵɵtext(3, "settings");
|
|
546
|
-
i0.ɵɵelementEnd()()();
|
|
547
|
-
} if (rf & 2) {
|
|
548
|
-
const ctx_r3 = i0.ɵɵnextContext();
|
|
549
|
-
i0.ɵɵadvance(1);
|
|
550
|
-
i0.ɵɵproperty("matMenuTriggerFor", ctx_r3.settingsMenuPanel);
|
|
551
|
-
} }
|
|
552
|
-
const _c0$4 = function (a0) { return { open: a0 }; };
|
|
553
|
-
const _c1$3 = ["*"];
|
|
554
323
|
class HeaderComponent {
|
|
555
|
-
constructor(headerComponentService,
|
|
324
|
+
constructor(headerComponentService, headerComponent) {
|
|
556
325
|
this.headerComponentService = headerComponentService;
|
|
557
|
-
this.userService = userService;
|
|
558
326
|
this.headerComponent = headerComponent;
|
|
559
327
|
this.components = [];
|
|
560
328
|
this.subscriptions = new Subscription();
|
|
561
|
-
this.color =
|
|
562
|
-
this.hasUser$ = this.userService.user$.pipe(map(Boolean));
|
|
329
|
+
this.color = undefined;
|
|
563
330
|
}
|
|
564
331
|
ngOnInit() {
|
|
565
332
|
this.updateComponents();
|
|
@@ -573,377 +340,266 @@ class HeaderComponent {
|
|
|
573
340
|
ngOnDestroy() {
|
|
574
341
|
this.subscriptions.unsubscribe();
|
|
575
342
|
}
|
|
576
|
-
static { this.ɵfac =
|
|
577
|
-
static { this.ɵcmp =
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
}
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
343
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: HeaderComponent, deps: [{ token: HeaderService }, { token: RXAP_HEADER_COMPONENT, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
344
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: HeaderComponent, isStandalone: true, selector: "rxap-header", inputs: { sidenav: "sidenav", color: "color" }, ngImport: i0, template: "<mat-toolbar [color]=\"color\" [ngClass]=\"{ open: sidenav?.opened }\" class=\"mat-elevation-z3 header\">\n <div class=\"w-full flex flex-row gap-x-4 justify-between items-center\">\n <rxap-status-indicator class=\"grow-0\"></rxap-status-indicator>\n <div class=\"grow\">\n <ng-content></ng-content>\n </div>\n <rxap-apps-button class=\"grow-0\"></rxap-apps-button>\n <rxap-settings-button class=\"grow-0\"></rxap-settings-button>\n <rxap-user-profile-icon class=\"grow-0\"></rxap-user-profile-icon>\n </div>\n</mat-toolbar>\n\n<rxap-navigation-progress-bar></rxap-navigation-progress-bar>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatToolbarModule }, { kind: "component", type: i2.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatMenuModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatSelectModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatOptionModule }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: NavigationProgressBarComponent, selector: "rxap-navigation-progress-bar" }, { kind: "component", type: UserProfileIconComponent, selector: "rxap-user-profile-icon" }, { kind: "component", type: AppsButtonComponent, selector: "rxap-apps-button" }, { kind: "component", type: SettingsButtonComponent, selector: "rxap-settings-button" }, { kind: "component", type: StatusIndicatorComponent, selector: "rxap-status-indicator" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
345
|
+
}
|
|
346
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: HeaderComponent, decorators: [{
|
|
347
|
+
type: Component,
|
|
348
|
+
args: [{ selector: 'rxap-header', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
349
|
+
MatToolbarModule,
|
|
350
|
+
NgClass,
|
|
351
|
+
NgIf,
|
|
352
|
+
MatButtonModule,
|
|
353
|
+
MatMenuModule,
|
|
354
|
+
MatIconModule,
|
|
355
|
+
LanguageSelectorComponent,
|
|
356
|
+
MatFormFieldModule,
|
|
357
|
+
StopPropagationDirective,
|
|
358
|
+
MatSelectModule,
|
|
359
|
+
FormsModule,
|
|
360
|
+
MatOptionModule,
|
|
361
|
+
DataSourceCollectionDirective,
|
|
362
|
+
MatSlideToggleModule,
|
|
363
|
+
AsyncPipe,
|
|
364
|
+
NavigationProgressBarComponent,
|
|
365
|
+
UserProfileIconComponent,
|
|
366
|
+
AppsButtonComponent,
|
|
367
|
+
SettingsButtonComponent,
|
|
368
|
+
StatusIndicatorComponent,
|
|
369
|
+
], template: "<mat-toolbar [color]=\"color\" [ngClass]=\"{ open: sidenav?.opened }\" class=\"mat-elevation-z3 header\">\n <div class=\"w-full flex flex-row gap-x-4 justify-between items-center\">\n <rxap-status-indicator class=\"grow-0\"></rxap-status-indicator>\n <div class=\"grow\">\n <ng-content></ng-content>\n </div>\n <rxap-apps-button class=\"grow-0\"></rxap-apps-button>\n <rxap-settings-button class=\"grow-0\"></rxap-settings-button>\n <rxap-user-profile-icon class=\"grow-0\"></rxap-user-profile-icon>\n </div>\n</mat-toolbar>\n\n<rxap-navigation-progress-bar></rxap-navigation-progress-bar>\n" }]
|
|
370
|
+
}], ctorParameters: function () { return [{ type: i1.HeaderService, decorators: [{
|
|
371
|
+
type: Inject,
|
|
372
|
+
args: [HeaderService]
|
|
373
|
+
}] }, { type: undefined, decorators: [{
|
|
374
|
+
type: Optional
|
|
375
|
+
}, {
|
|
376
|
+
type: Inject,
|
|
377
|
+
args: [RXAP_HEADER_COMPONENT]
|
|
378
|
+
}] }]; }, propDecorators: { sidenav: [{
|
|
379
|
+
type: Input
|
|
380
|
+
}], color: [{
|
|
381
|
+
type: Input
|
|
382
|
+
}] } });
|
|
383
|
+
|
|
384
|
+
class SignOutComponent {
|
|
385
|
+
constructor(authenticationService) {
|
|
386
|
+
this.authenticationService = authenticationService;
|
|
387
|
+
}
|
|
388
|
+
async logout() {
|
|
389
|
+
await this.authenticationService.signOut();
|
|
390
|
+
}
|
|
391
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: SignOutComponent, deps: [{ token: i1$2.RxapAuthenticationService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
392
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: SignOutComponent, isStandalone: true, selector: "rxap-sign-out", ngImport: i0, template: "<button\n mat-icon-button\n (click)=\"logout()\"\n>\n <mat-icon svgIcon=\"logout\"></mat-icon>\n</button>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$3.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
614
393
|
}
|
|
615
|
-
(
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
}, standalone: true, imports: [
|
|
620
|
-
MatToolbarModule,
|
|
621
|
-
ExtendedModule,
|
|
622
|
-
NgClass,
|
|
623
|
-
NgFor,
|
|
624
|
-
NgComponentOutlet,
|
|
625
|
-
FlexModule,
|
|
626
|
-
NgIf,
|
|
627
|
-
SidenavToggleButtonComponent,
|
|
628
|
-
LanguageSelectorComponent,
|
|
629
|
-
AppsButtonComponent,
|
|
630
|
-
UserProfileIconComponent,
|
|
631
|
-
MatButtonModule,
|
|
632
|
-
MatMenuModule,
|
|
633
|
-
MatIconModule,
|
|
634
|
-
SignOutComponent,
|
|
635
|
-
NavigationProgressBarComponent,
|
|
636
|
-
AsyncPipe
|
|
637
|
-
], template: "<mat-toolbar [ngClass]=\"{ open: sidenav?.opened }\" [color]=\"color\" class=\"mat-elevation-z3\">\n <mat-toolbar-row *ngFor=\"let headerComponent of components\">\n <ng-container *ngComponentOutlet=\"headerComponent\"></ng-container>\n </mat-toolbar-row>\n <mat-toolbar-row>\n <div\n fxLayout=\"row\"\n fxLayoutAlign=\"space-between center\"\n fxLayoutGap=\"16px\"\n class=\"content\"\n >\n <rxap-sidenav-toggle-button *ngIf=\"sidenav\" fxFlex=\"nogrow\" [sidenav]=\"sidenav\"></rxap-sidenav-toggle-button>\n <div fxFlex=\"grow\">\n <ng-content></ng-content>\n </div>\n <rxap-language-selector fxFlex=\"nogrow\"></rxap-language-selector>\n <rxap-apps-button fxFlex=\"nogrow\"></rxap-apps-button>\n <rxap-user-profile-icon *ngIf=\"hasUser$ | async\" fxFlex=\"nogrow\"></rxap-user-profile-icon>\n <div fxFlex=\"nogrow\" *ngIf=\"settingsMenuPanel\">\n <button mat-icon-button [matMenuTriggerFor]=\"settingsMenuPanel\">\n <mat-icon>settings</mat-icon>\n </button>\n </div>\n <rxap-sign-out fxFlex=\"nogrow\"></rxap-sign-out>\n </div>\n </mat-toolbar-row>\n</mat-toolbar>\n<rxap-navigation-progress-bar></rxap-navigation-progress-bar>\n", styles: [".content{width:100%;height:64px}\n"] }]
|
|
638
|
-
}], function () { return [{ type: i1.HeaderService, decorators: [{
|
|
639
|
-
type: Inject,
|
|
640
|
-
args: [HeaderService]
|
|
641
|
-
}] }, { type: i4.UserService, decorators: [{
|
|
642
|
-
type: Inject,
|
|
643
|
-
args: [UserService]
|
|
644
|
-
}] }, { type: undefined, decorators: [{
|
|
645
|
-
type: Optional
|
|
646
|
-
}, {
|
|
647
|
-
type: Inject,
|
|
648
|
-
args: [RXAP_HEADER_COMPONENT]
|
|
649
|
-
}] }]; }, { sidenav: [{
|
|
650
|
-
type: Input
|
|
651
|
-
}], color: [{
|
|
652
|
-
type: Input
|
|
653
|
-
}], settingsMenuPanel: [{
|
|
654
|
-
type: Input
|
|
655
|
-
}] }); })();
|
|
394
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: SignOutComponent, decorators: [{
|
|
395
|
+
type: Component,
|
|
396
|
+
args: [{ selector: 'rxap-sign-out', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [MatButtonModule, MatIconModule], template: "<button\n mat-icon-button\n (click)=\"logout()\"\n>\n <mat-icon svgIcon=\"logout\"></mat-icon>\n</button>\n" }]
|
|
397
|
+
}], ctorParameters: function () { return [{ type: i1$2.RxapAuthenticationService }]; } });
|
|
656
398
|
|
|
657
399
|
class ResetButtonComponent {
|
|
658
400
|
constructor(resetService) {
|
|
659
401
|
this.resetService = resetService;
|
|
660
402
|
}
|
|
661
|
-
static { this.ɵfac =
|
|
662
|
-
static { this.ɵcmp =
|
|
663
|
-
i0.ɵɵelementStart(0, "button", 0);
|
|
664
|
-
i0.ɵɵlistener("click", function ResetButtonComponent_Template_button_click_0_listener() { return ctx.resetService.resetAll(); });
|
|
665
|
-
i0.ɵɵelementStart(1, "mat-icon");
|
|
666
|
-
i0.ɵɵtext(2, "refresh");
|
|
667
|
-
i0.ɵɵelementEnd()();
|
|
668
|
-
} }, dependencies: [MatButtonModule, i1$2.MatIconButton, MatIconModule, i2$2.MatIcon], changeDetection: 0 }); }
|
|
403
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: ResetButtonComponent, deps: [{ token: ResetService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
404
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: ResetButtonComponent, isStandalone: true, selector: "rxap-reset-button", ngImport: i0, template: "<button (click)=\"resetService.resetAll()\" mat-icon-button>\n <mat-icon svgIcon=\"refresh\"></mat-icon>\n</button>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$3.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
669
405
|
}
|
|
670
|
-
(
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
406
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: ResetButtonComponent, decorators: [{
|
|
407
|
+
type: Component,
|
|
408
|
+
args: [{ selector: 'rxap-reset-button', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [MatButtonModule, MatIconModule], template: "<button (click)=\"resetService.resetAll()\" mat-icon-button>\n <mat-icon svgIcon=\"refresh\"></mat-icon>\n</button>\n" }]
|
|
409
|
+
}], ctorParameters: function () { return [{ type: i1.ResetService, decorators: [{
|
|
410
|
+
type: Inject,
|
|
411
|
+
args: [ResetService]
|
|
412
|
+
}] }]; } });
|
|
677
413
|
|
|
678
|
-
class
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
this.headerComponentService = headerComponentService;
|
|
682
|
-
this.config = config;
|
|
683
|
-
this.opened$ = new BehaviorSubject(true);
|
|
684
|
-
this.mode$ = new BehaviorSubject('side');
|
|
685
|
-
this.fixedTopGap$ = new BehaviorSubject(64);
|
|
686
|
-
this.mode$.next(this.config.get('navigation.mode', this.mode$.value));
|
|
687
|
-
this.opened$.next(this.config.get('navigation.open', this.opened$.value));
|
|
688
|
-
this.fixedBottomGap$ = this.footerComponentService.portalCount$.pipe(map(count => count * 64));
|
|
689
|
-
this.fixedTopGap$.next(this.headerComponentService.countComponent * 64);
|
|
690
|
-
this.headerComponentService.update$.pipe(tap(() => this.fixedTopGap$.next(this.headerComponentService.countComponent * 64))).subscribe();
|
|
691
|
-
this.logo = logoConfig ?? {
|
|
692
|
-
src: '/assets/logo.png',
|
|
693
|
-
width: '192'
|
|
694
|
-
};
|
|
695
|
-
}
|
|
696
|
-
static { this.ɵfac = function LayoutComponentService_Factory(t) { return new (t || LayoutComponentService)(i0.ɵɵinject(i1.FooterService), i0.ɵɵinject(i1.HeaderService), i0.ɵɵinject(RXAP_LOGO_CONFIG, 8), i0.ɵɵinject(ConfigService)); }; }
|
|
697
|
-
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: LayoutComponentService, factory: LayoutComponentService.ɵfac, providedIn: 'root' }); }
|
|
414
|
+
class SidenavToggleButtonComponent {
|
|
415
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: SidenavToggleButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
416
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: SidenavToggleButtonComponent, isStandalone: true, selector: "rxap-sidenav-toggle-button", inputs: { sidenav: "sidenav" }, ngImport: i0, template: "<button (click)=\"sidenav.toggle()\" mat-icon-button>\n <mat-icon *ngIf=\"!sidenav.opened\">menu</mat-icon>\n <mat-icon *ngIf=\"sidenav.opened\">menu_open</mat-icon>\n</button>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$3.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
698
417
|
}
|
|
699
|
-
(
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
}] }]; }, null); })();
|
|
418
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: SidenavToggleButtonComponent, decorators: [{
|
|
419
|
+
type: Component,
|
|
420
|
+
args: [{ selector: 'rxap-sidenav-toggle-button', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
421
|
+
MatButtonModule,
|
|
422
|
+
NgIf,
|
|
423
|
+
MatIconModule,
|
|
424
|
+
], template: "<button (click)=\"sidenav.toggle()\" mat-icon-button>\n <mat-icon *ngIf=\"!sidenav.opened\">menu</mat-icon>\n <mat-icon *ngIf=\"sidenav.opened\">menu_open</mat-icon>\n</button>\n" }]
|
|
425
|
+
}], propDecorators: { sidenav: [{
|
|
426
|
+
type: Input,
|
|
427
|
+
args: [{ required: true }]
|
|
428
|
+
}] } });
|
|
711
429
|
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
} if (rf & 2) {
|
|
718
|
-
const portalId_r1 = ctx.$implicit;
|
|
719
|
-
const ctx_r0 = i0.ɵɵnextContext();
|
|
720
|
-
i0.ɵɵadvance(1);
|
|
721
|
-
i0.ɵɵproperty("cdkPortalOutlet", ctx_r0.portals.get(portalId_r1));
|
|
722
|
-
} }
|
|
723
|
-
class WindowContainerSidenavComponent {
|
|
724
|
-
constructor(service) {
|
|
725
|
-
this.service = service;
|
|
726
|
-
this.portals = new Map();
|
|
727
|
-
this.subscription = new Subscription();
|
|
728
|
-
}
|
|
729
|
-
ngOnInit() {
|
|
730
|
-
const components = this.service.getAll();
|
|
731
|
-
for (const component of components) {
|
|
732
|
-
this.add(component);
|
|
733
|
-
}
|
|
734
|
-
this.subscription.add(this.service.add$.pipe(tap(component => this.add(component))).subscribe());
|
|
735
|
-
this.subscription.add(this.service.remove$.pipe(tap(component => this.remove(component))).subscribe());
|
|
736
|
-
}
|
|
737
|
-
ngOnDestroy() {
|
|
738
|
-
this.subscription.unsubscribe();
|
|
739
|
-
}
|
|
740
|
-
trackBy(index, id) {
|
|
741
|
-
return id;
|
|
742
|
-
}
|
|
743
|
-
add(component) {
|
|
744
|
-
if (this.portals.has(component.id)) {
|
|
745
|
-
throw new Error(`Component portal with id ${component.id} already exists`);
|
|
746
|
-
}
|
|
747
|
-
const portal = new ComponentPortal(component.component, component.viewContainerRef, component.injector, component.componentFactoryResolver);
|
|
748
|
-
this.portals.set(component.id, portal);
|
|
430
|
+
class SidenavComponentService {
|
|
431
|
+
constructor(config) {
|
|
432
|
+
this.config = config;
|
|
433
|
+
this.collapsed$ = new BehaviorSubject(true);
|
|
434
|
+
this.collapsed$.next(this.config.get('navigation.collapsed', this.collapsed$.value));
|
|
749
435
|
}
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
const portal = this.portals.get(component.id);
|
|
753
|
-
this.portals.delete(component.id);
|
|
754
|
-
portal.detach();
|
|
755
|
-
}
|
|
436
|
+
toggleNavigationCollapse() {
|
|
437
|
+
this.collapsed$.next(!this.collapsed$.value);
|
|
756
438
|
}
|
|
757
|
-
static { this.ɵfac =
|
|
758
|
-
static { this.ɵ
|
|
759
|
-
i0.ɵɵelementStart(0, "div", 0);
|
|
760
|
-
i0.ɵɵtemplate(1, WindowContainerSidenavComponent_div_1_Template, 2, 1, "div", 1);
|
|
761
|
-
i0.ɵɵelementEnd();
|
|
762
|
-
} if (rf & 2) {
|
|
763
|
-
i0.ɵɵadvance(1);
|
|
764
|
-
i0.ɵɵproperty("ngForOf", ctx.portals.keys())("ngForTrackBy", ctx.trackBy);
|
|
765
|
-
} }, dependencies: [FlexModule, i1$3.DefaultLayoutDirective, i1$3.DefaultLayoutGapDirective, i1$3.DefaultFlexDirective, NgFor, PortalModule, i3.CdkPortalOutlet], styles: [".container[_ngcontent-%COMP%]{padding:8px}"], changeDetection: 0 }); }
|
|
439
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: SidenavComponentService, deps: [{ token: i1$1.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
440
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: SidenavComponentService, providedIn: 'root' }); }
|
|
766
441
|
}
|
|
767
|
-
(
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
type: Inject,
|
|
772
|
-
args: [WindowContainerSidenavService]
|
|
773
|
-
}] }]; }, null); })();
|
|
442
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: SidenavComponentService, decorators: [{
|
|
443
|
+
type: Injectable,
|
|
444
|
+
args: [{ providedIn: 'root' }]
|
|
445
|
+
}], ctorParameters: function () { return [{ type: i1$1.ConfigService }]; } });
|
|
774
446
|
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
i0.ɵɵelementEnd();
|
|
779
|
-
} }
|
|
780
|
-
function ToggleWindowSidenavButtonComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
|
|
781
|
-
i0.ɵɵelementStart(0, "mat-icon");
|
|
782
|
-
i0.ɵɵtext(1, "keyboard_arrow_right");
|
|
783
|
-
i0.ɵɵelementEnd();
|
|
784
|
-
} }
|
|
785
|
-
class ToggleWindowSidenavButtonComponent {
|
|
786
|
-
constructor() {
|
|
787
|
-
this.openWindowSidenav = false;
|
|
788
|
-
this.openWindowSidenavChange = new EventEmitter();
|
|
447
|
+
class NavigationItemComponent {
|
|
448
|
+
get isActive() {
|
|
449
|
+
return this._isActive;
|
|
789
450
|
}
|
|
790
|
-
|
|
451
|
+
set isActive(value) {
|
|
452
|
+
this._isActive = value;
|
|
453
|
+
this.active.set(value);
|
|
791
454
|
}
|
|
792
|
-
|
|
793
|
-
this.
|
|
794
|
-
this.
|
|
455
|
+
constructor(router, sidenav, elementRef, renderer, overlay, viewContainerRef) {
|
|
456
|
+
this.router = router;
|
|
457
|
+
this.sidenav = sidenav;
|
|
458
|
+
this.elementRef = elementRef;
|
|
459
|
+
this.renderer = renderer;
|
|
460
|
+
this.overlay = overlay;
|
|
461
|
+
this.viewContainerRef = viewContainerRef;
|
|
462
|
+
this.level = 0;
|
|
463
|
+
this._isActive = false;
|
|
464
|
+
this.children = null;
|
|
465
|
+
this.active = signal(false);
|
|
466
|
+
this._subscription = new Subscription();
|
|
795
467
|
}
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
i0.ɵɵelementEnd()();
|
|
803
|
-
} if (rf & 2) {
|
|
804
|
-
const _r1 = i0.ɵɵreference(4);
|
|
805
|
-
i0.ɵɵadvance(2);
|
|
806
|
-
i0.ɵɵproperty("ngIfElse", _r1)("ngIf", !ctx.openWindowSidenav);
|
|
807
|
-
} }, dependencies: [MatButtonModule, i1$2.MatIconButton, NgIf, MatIconModule, i2$2.MatIcon], styles: [".toggle-button[_ngcontent-%COMP%]{position:absolute;top:70px;right:0;z-index:10000;border-radius:15px 0 0 15px;border:1px solid black;background:black}"], changeDetection: 0 }); }
|
|
808
|
-
}
|
|
809
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ToggleWindowSidenavButtonComponent, [{
|
|
810
|
-
type: Component,
|
|
811
|
-
args: [{ selector: 'rxap-toggle-window-sidenav-button', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
812
|
-
class: 'rxap-toggle-window-sidenav-button'
|
|
813
|
-
}, standalone: true, imports: [MatButtonModule, NgIf, MatIconModule], template: "<div class=\"toggle-button\">\n <button (click)=\"toggle()\" mat-icon-button>\n <ng-template [ngIfElse]=\"hide\" [ngIf]=\"!openWindowSidenav\">\n <mat-icon>keyboard_arrow_left</mat-icon>\n </ng-template>\n <ng-template #hide>\n <mat-icon>keyboard_arrow_right</mat-icon>\n </ng-template>\n </button>\n</div>\n", styles: [".toggle-button{position:absolute;top:70px;right:0;z-index:10000;border-radius:15px 0 0 15px;border:1px solid black;background:black}\n"] }]
|
|
814
|
-
}], function () { return []; }, { openWindowSidenav: [{
|
|
815
|
-
type: Input
|
|
816
|
-
}], openWindowSidenavChange: [{
|
|
817
|
-
type: Output
|
|
818
|
-
}] }); })();
|
|
819
|
-
|
|
820
|
-
class SidenavContentComponentService {
|
|
821
|
-
constructor(footerComponentService, headerComponentService) {
|
|
822
|
-
this.footerComponentService = footerComponentService;
|
|
823
|
-
this.headerComponentService = headerComponentService;
|
|
824
|
-
this.headerRows$ = new BehaviorSubject(1);
|
|
825
|
-
this.headerRows$.next(this.headerComponentService.countComponent);
|
|
826
|
-
this.footerComponentService.portalCount$.pipe().subscribe();
|
|
827
|
-
this.footerRows$ = this.footerComponentService.portalCount$;
|
|
828
|
-
this.headerComponentService.update$.pipe(tap(() => this.headerRows$.next(this.headerComponentService.countComponent))).subscribe();
|
|
829
|
-
this.innerHeight$ = combineLatest([
|
|
830
|
-
this.headerRows$,
|
|
831
|
-
this.footerRows$
|
|
832
|
-
]).pipe(map(([headerRows, footerRows]) => `calc(100% - ${64 * (headerRows + footerRows)}px)`));
|
|
833
|
-
this.marginTop$ = this.headerRows$.pipe(map(headerRows => `${headerRows * 64}px`));
|
|
834
|
-
this.marginBottom$ = this.footerRows$.pipe(map(footerRows => `${footerRows * 64}px`));
|
|
835
|
-
}
|
|
836
|
-
static { this.ɵfac = function SidenavContentComponentService_Factory(t) { return new (t || SidenavContentComponentService)(i0.ɵɵinject(FooterService), i0.ɵɵinject(HeaderService)); }; }
|
|
837
|
-
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: SidenavContentComponentService, factory: SidenavContentComponentService.ɵfac, providedIn: 'root' }); }
|
|
838
|
-
}
|
|
839
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SidenavContentComponentService, [{
|
|
840
|
-
type: Injectable,
|
|
841
|
-
args: [{ providedIn: 'root' }]
|
|
842
|
-
}], function () { return [{ type: i1.FooterService, decorators: [{
|
|
843
|
-
type: Inject,
|
|
844
|
-
args: [FooterService]
|
|
845
|
-
}] }, { type: i1.HeaderService, decorators: [{
|
|
846
|
-
type: Inject,
|
|
847
|
-
args: [HeaderService]
|
|
848
|
-
}] }]; }, null); })();
|
|
849
|
-
|
|
850
|
-
const _c0$3 = function (a0) { return { "open": a0 }; };
|
|
851
|
-
const _c1$2 = function (a0, a1, a2) { return { height: a0, marginTop: a1, marginBottom: a2 }; };
|
|
852
|
-
const _c2$1 = ["*"];
|
|
853
|
-
class SidenavContentComponent {
|
|
854
|
-
constructor(sccs) {
|
|
855
|
-
this.sccs = sccs;
|
|
468
|
+
ngOnChanges(changes) {
|
|
469
|
+
if (changes['item']) {
|
|
470
|
+
const item = changes['item'].currentValue;
|
|
471
|
+
this.children =
|
|
472
|
+
item.children && item.children.length ? item.children : null;
|
|
473
|
+
}
|
|
856
474
|
}
|
|
857
|
-
|
|
475
|
+
ngAfterViewInit() {
|
|
476
|
+
this._subscription.add(this.router.events
|
|
477
|
+
.pipe(filter((event) => event instanceof NavigationEnd), debounceTime(100), startWith(true), tap(() => {
|
|
478
|
+
let isActive = true;
|
|
479
|
+
const urlParts = this.router.url.split('/');
|
|
480
|
+
if (urlParts[0] === '') {
|
|
481
|
+
urlParts[0] = '/';
|
|
482
|
+
}
|
|
483
|
+
for (let i = 0; i < this.item.routerLink.length; i++) {
|
|
484
|
+
if (urlParts[i] !== this.item.routerLink[i]) {
|
|
485
|
+
isActive = false;
|
|
486
|
+
break;
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
this.isActive = isActive;
|
|
490
|
+
if (isActive) {
|
|
491
|
+
this.renderer.addClass(this.elementRef.nativeElement, 'active');
|
|
492
|
+
}
|
|
493
|
+
else {
|
|
494
|
+
this.renderer.removeClass(this.elementRef.nativeElement, 'active');
|
|
495
|
+
}
|
|
496
|
+
}))
|
|
497
|
+
.subscribe());
|
|
858
498
|
}
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
i0.ɵɵprojectionDef();
|
|
862
|
-
i0.ɵɵelementStart(0, "div", 0);
|
|
863
|
-
i0.ɵɵpipe(1, "async");
|
|
864
|
-
i0.ɵɵpipe(2, "async");
|
|
865
|
-
i0.ɵɵpipe(3, "async");
|
|
866
|
-
i0.ɵɵpipe(4, "async");
|
|
867
|
-
i0.ɵɵelementStart(5, "div", 1);
|
|
868
|
-
i0.ɵɵelement(6, "router-outlet");
|
|
869
|
-
i0.ɵɵprojection(7);
|
|
870
|
-
i0.ɵɵelementEnd()();
|
|
871
|
-
} if (rf & 2) {
|
|
872
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(10, _c0$3, i0.ɵɵpipeBind1(1, 2, ctx.sidenav.openedChange)))("ngStyle", i0.ɵɵpureFunction3(12, _c1$2, i0.ɵɵpipeBind1(2, 4, ctx.sccs.innerHeight$), i0.ɵɵpipeBind1(3, 6, ctx.sccs.marginTop$), i0.ɵɵpipeBind1(4, 8, ctx.sccs.marginBottom$)));
|
|
873
|
-
} }, dependencies: [NgClass, NgStyle, RouterOutlet, AsyncPipe], styles: [".container[_ngcontent-%COMP%] .inner[_ngcontent-%COMP%]{padding:0;overflow:auto;height:100%}"], changeDetection: 0 }); }
|
|
874
|
-
}
|
|
875
|
-
__decorate([
|
|
876
|
-
Required,
|
|
877
|
-
__metadata("design:type", MatSidenav)
|
|
878
|
-
], SidenavContentComponent.prototype, "sidenav", void 0);
|
|
879
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SidenavContentComponent, [{
|
|
880
|
-
type: Component,
|
|
881
|
-
args: [{ selector: 'rxap-sidenav-content', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgClass, NgStyle, RouterOutlet, AsyncPipe], template: "<div [ngClass]=\"{ 'open': (sidenav.openedChange | async) }\" [ngStyle]=\"{\n height: sccs.innerHeight$ | async,\n marginTop: sccs.marginTop$ | async,\n marginBottom: sccs.marginBottom$ | async\n}\" class=\"container\">\n <!-- <dx-breadcrumb></dx-breadcrumb>-->\n <div class=\"inner\">\n <router-outlet></router-outlet>\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".container .inner{padding:0;overflow:auto;height:100%}\n"] }]
|
|
882
|
-
}], function () { return [{ type: SidenavContentComponentService }]; }, { sidenav: [{
|
|
883
|
-
type: Input
|
|
884
|
-
}] }); })();
|
|
885
|
-
|
|
886
|
-
class SidenavHeaderDirective {
|
|
887
|
-
constructor(template) {
|
|
888
|
-
this.template = template;
|
|
499
|
+
ngOnDestroy() {
|
|
500
|
+
this._subscription?.unsubscribe();
|
|
889
501
|
}
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
type: Directive,
|
|
895
|
-
args: [{
|
|
896
|
-
selector: '[rxapSidenavHeader]',
|
|
897
|
-
standalone: true
|
|
898
|
-
}]
|
|
899
|
-
}], function () { return [{ type: i0.TemplateRef, decorators: [{
|
|
900
|
-
type: Inject,
|
|
901
|
-
args: [TemplateRef]
|
|
902
|
-
}] }]; }, null); })();
|
|
903
|
-
|
|
904
|
-
class SidenavFooterDirective {
|
|
905
|
-
constructor(template) {
|
|
906
|
-
this.template = template;
|
|
502
|
+
// region type save item property
|
|
503
|
+
// required to check the type of the item property in the ngFor loop
|
|
504
|
+
isNavigationDividerItem(item) {
|
|
505
|
+
return item['divider'];
|
|
907
506
|
}
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
}
|
|
911
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SidenavFooterDirective, [{
|
|
912
|
-
type: Directive,
|
|
913
|
-
args: [{
|
|
914
|
-
selector: '[rxapSidenavFooter]',
|
|
915
|
-
standalone: true
|
|
916
|
-
}]
|
|
917
|
-
}], function () { return [{ type: i0.TemplateRef, decorators: [{
|
|
918
|
-
type: Inject,
|
|
919
|
-
args: [TemplateRef]
|
|
920
|
-
}] }]; }, null); })();
|
|
921
|
-
|
|
922
|
-
class SidenavComponentService {
|
|
923
|
-
constructor(config) {
|
|
924
|
-
this.config = config;
|
|
925
|
-
this.collapsed$ = new BehaviorSubject(true);
|
|
926
|
-
this.collapsed$.next(this.config.get('navigation.collapsed', this.collapsed$.value));
|
|
507
|
+
isNavigationItem(item) {
|
|
508
|
+
return !this.isNavigationDividerItem(item);
|
|
927
509
|
}
|
|
928
|
-
|
|
929
|
-
|
|
510
|
+
asNavigationItem(item) {
|
|
511
|
+
if (!this.isNavigationItem(item)) {
|
|
512
|
+
throw new Error('The item is not a NavigationItem');
|
|
513
|
+
}
|
|
514
|
+
return item;
|
|
930
515
|
}
|
|
931
|
-
static { this.ɵfac =
|
|
932
|
-
static { this.ɵ
|
|
516
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: NavigationItemComponent, deps: [{ token: Router }, { token: SidenavComponentService }, { token: ElementRef }, { token: Renderer2 }, { token: Overlay }, { token: ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
517
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: NavigationItemComponent, isStandalone: true, selector: "li[rxap-navigation-item]", inputs: { level: "level", item: "item" }, host: { properties: { "class.active": "this.isActive" } }, viewQueries: [{ propertyName: "routerLinkActive", first: true, predicate: RouterLinkActive, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div [ngClass]=\"{\n 'border-l-4 text-accent-400 border-accent-600': active(),\n }\">\n <a [routerLink]=\"item.routerLink\"\n class=\"h-12 pl-4 pr-5 flex flex-row justify-between items-center gap-x-4\"\n matRipple\n routerLinkActive\n\n >\n <span\n [ngClass]=\"{\n 'pl-0': level === 0,\n 'pl-4': level === 1,\n 'pl-8': level === 2,\n 'pl-12': level === 3\n }\"\n class=\"grow whitespace-nowrap\"\n >\n {{ item.label }}\n </span>\n <mat-icon *ngIf=\"item.icon\" [rxapIcon]=\"item.icon\"></mat-icon>\n </a>\n\n <ng-container *ngIf=\"item.children?.length && active()\">\n\n <mat-divider></mat-divider>\n\n <ul [@sub-nav]\n [items]=\"children ?? []\"\n [level]=\"level + 1\"\n rxap-navigation\n >\n </ul>\n\n <mat-divider></mat-divider>\n\n </ng-container>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return RouterLinkActive; }), selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i0.forwardRef(function () { return RouterLink; }), selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i0.forwardRef(function () { return NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatRippleModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i4.MatRipple; }), selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatIconModule; }) }, { kind: "component", type: i0.forwardRef(function () { return i2$1.MatIcon; }), selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i0.forwardRef(function () { return IconDirective; }), selector: "mat-icon[rxapIcon]", inputs: ["rxapIcon"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatDividerModule; }) }, { kind: "component", type: i0.forwardRef(function () { return i3$3.MatDivider; }), selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i0.forwardRef(function () { return NavigationComponent; }), selector: "ul[rxap-navigation]", inputs: ["items", "level", "root"] }, { kind: "directive", type: i0.forwardRef(function () { return NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }], animations: [
|
|
518
|
+
trigger('sub-nav', [
|
|
519
|
+
transition(':enter', [
|
|
520
|
+
style({
|
|
521
|
+
display: 'block',
|
|
522
|
+
height: '0',
|
|
523
|
+
overflow: 'hidden',
|
|
524
|
+
}),
|
|
525
|
+
animate(150, style({ height: '*' })),
|
|
526
|
+
]),
|
|
527
|
+
transition(':leave', [
|
|
528
|
+
style({ overflow: 'hidden' }),
|
|
529
|
+
animate(300, style({ height: '0' })),
|
|
530
|
+
style({ display: 'none' }),
|
|
531
|
+
]),
|
|
532
|
+
]),
|
|
533
|
+
], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
933
534
|
}
|
|
934
|
-
(
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
535
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: NavigationItemComponent, decorators: [{
|
|
536
|
+
type: Component,
|
|
537
|
+
args: [{ selector: 'li[rxap-navigation-item]', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, animations: [
|
|
538
|
+
trigger('sub-nav', [
|
|
539
|
+
transition(':enter', [
|
|
540
|
+
style({
|
|
541
|
+
display: 'block',
|
|
542
|
+
height: '0',
|
|
543
|
+
overflow: 'hidden',
|
|
544
|
+
}),
|
|
545
|
+
animate(150, style({ height: '*' })),
|
|
546
|
+
]),
|
|
547
|
+
transition(':leave', [
|
|
548
|
+
style({ overflow: 'hidden' }),
|
|
549
|
+
animate(300, style({ height: '0' })),
|
|
550
|
+
style({ display: 'none' }),
|
|
551
|
+
]),
|
|
552
|
+
]),
|
|
553
|
+
], standalone: true, imports: [
|
|
554
|
+
RouterLinkActive,
|
|
555
|
+
RouterLink,
|
|
556
|
+
NgIf,
|
|
557
|
+
MatRippleModule,
|
|
558
|
+
MatIconModule,
|
|
559
|
+
IconDirective,
|
|
560
|
+
MatDividerModule,
|
|
561
|
+
forwardRef(() => NavigationComponent),
|
|
562
|
+
NgClass,
|
|
563
|
+
], template: "<div [ngClass]=\"{\n 'border-l-4 text-accent-400 border-accent-600': active(),\n }\">\n <a [routerLink]=\"item.routerLink\"\n class=\"h-12 pl-4 pr-5 flex flex-row justify-between items-center gap-x-4\"\n matRipple\n routerLinkActive\n\n >\n <span\n [ngClass]=\"{\n 'pl-0': level === 0,\n 'pl-4': level === 1,\n 'pl-8': level === 2,\n 'pl-12': level === 3\n }\"\n class=\"grow whitespace-nowrap\"\n >\n {{ item.label }}\n </span>\n <mat-icon *ngIf=\"item.icon\" [rxapIcon]=\"item.icon\"></mat-icon>\n </a>\n\n <ng-container *ngIf=\"item.children?.length && active()\">\n\n <mat-divider></mat-divider>\n\n <ul [@sub-nav]\n [items]=\"children ?? []\"\n [level]=\"level + 1\"\n rxap-navigation\n >\n </ul>\n\n <mat-divider></mat-divider>\n\n </ng-container>\n</div>\n" }]
|
|
564
|
+
}], ctorParameters: function () { return [{ type: i2$3.Router, decorators: [{
|
|
565
|
+
type: Inject,
|
|
566
|
+
args: [Router]
|
|
567
|
+
}] }, { type: SidenavComponentService, decorators: [{
|
|
568
|
+
type: Inject,
|
|
569
|
+
args: [SidenavComponentService]
|
|
570
|
+
}] }, { type: i0.ElementRef, decorators: [{
|
|
571
|
+
type: Inject,
|
|
572
|
+
args: [ElementRef]
|
|
573
|
+
}] }, { type: i0.Renderer2, decorators: [{
|
|
574
|
+
type: Inject,
|
|
575
|
+
args: [Renderer2]
|
|
576
|
+
}] }, { type: i6$1.Overlay, decorators: [{
|
|
577
|
+
type: Inject,
|
|
578
|
+
args: [Overlay]
|
|
579
|
+
}] }, { type: i0.ViewContainerRef, decorators: [{
|
|
580
|
+
type: Inject,
|
|
581
|
+
args: [ViewContainerRef]
|
|
582
|
+
}] }]; }, propDecorators: { level: [{
|
|
583
|
+
type: Input
|
|
584
|
+
}], routerLinkActive: [{
|
|
585
|
+
type: ViewChild,
|
|
586
|
+
args: [RouterLinkActive, { static: true }]
|
|
587
|
+
}], item: [{
|
|
588
|
+
type: Input,
|
|
589
|
+
args: [{ required: true }]
|
|
590
|
+
}], isActive: [{
|
|
591
|
+
type: HostBinding,
|
|
592
|
+
args: ['class.active']
|
|
593
|
+
}] } });
|
|
938
594
|
|
|
939
595
|
function IsNavigationDividerItem(item) {
|
|
940
|
-
return item && item
|
|
596
|
+
return !!item && !!item['divider'];
|
|
941
597
|
}
|
|
942
598
|
function IsNavigationInsertItem(item) {
|
|
943
|
-
return item && item
|
|
599
|
+
return !!item && !!item['insert'];
|
|
944
600
|
}
|
|
945
601
|
function IsNavigationItem(item) {
|
|
946
|
-
return (item && item
|
|
602
|
+
return (!!item && !!item['routerLink'] && !!item['label']);
|
|
947
603
|
}
|
|
948
604
|
|
|
949
605
|
class NavigationService {
|
|
@@ -961,7 +617,7 @@ class NavigationService {
|
|
|
961
617
|
Object.entries(inserts).forEach(([id, insert]) => this.insert(id, insert, false));
|
|
962
618
|
}
|
|
963
619
|
this.updateNavigation();
|
|
964
|
-
this.config$ = this.navigation$.pipe(switchMap((navigationWithoutStatusCheck) => this.checkNavigationStatusProviders(navigationWithoutStatusCheck)));
|
|
620
|
+
this.config$ = this.navigation$.pipe(switchMap$1((navigationWithoutStatusCheck) => this.checkNavigationStatusProviders(navigationWithoutStatusCheck)));
|
|
965
621
|
}
|
|
966
622
|
/**
|
|
967
623
|
* @deprecated use add instead
|
|
@@ -1011,12 +667,14 @@ class NavigationService {
|
|
|
1011
667
|
else {
|
|
1012
668
|
return from(isVisible);
|
|
1013
669
|
}
|
|
1014
|
-
})
|
|
1015
|
-
|
|
670
|
+
})
|
|
671
|
+
.map(isVisible$ => isVisible$.pipe(catchError(e => {
|
|
672
|
+
console.error('isVisible method failed: ' +
|
|
673
|
+
e.message);
|
|
1016
674
|
return of(false);
|
|
1017
675
|
})));
|
|
1018
676
|
// TODO : dont wait for all status services to complete, but cancel waiting if one returns false
|
|
1019
|
-
return combineLatest(isVisibleArray$).pipe(map((isVisibleArray) => isVisibleArray.reduce((acc, isVisible) => acc && isVisible, true)), map((isVisible) => (isVisible ? navigationItem : null)), switchMap((navigationItemOrNull) => {
|
|
677
|
+
return combineLatest(isVisibleArray$).pipe(map((isVisibleArray) => isVisibleArray.reduce((acc, isVisible) => acc && isVisible, true)), map((isVisible) => (isVisible ? navigationItem : null)), switchMap$1((navigationItemOrNull) => {
|
|
1020
678
|
if (navigationItemOrNull) {
|
|
1021
679
|
if (navigationItemOrNull.children?.length) {
|
|
1022
680
|
return this.checkNavigationStatusProviders(navigationItemOrNull.children).pipe(map((children) => ({
|
|
@@ -1064,370 +722,35 @@ class NavigationService {
|
|
|
1064
722
|
}
|
|
1065
723
|
return navigation;
|
|
1066
724
|
}
|
|
1067
|
-
static { this.ɵfac =
|
|
1068
|
-
static { this.ɵprov =
|
|
725
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: NavigationService, deps: [{ token: RXAP_NAVIGATION_CONFIG }, { token: INJECTOR }, { token: RXAP_NAVIGATION_CONFIG_INSERTS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
726
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: NavigationService, providedIn: 'root' }); }
|
|
1069
727
|
}
|
|
1070
|
-
(
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
728
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: NavigationService, decorators: [{
|
|
729
|
+
type: Injectable,
|
|
730
|
+
args: [{ providedIn: 'root' }]
|
|
731
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
732
|
+
type: Inject,
|
|
733
|
+
args: [RXAP_NAVIGATION_CONFIG]
|
|
734
|
+
}] }, { type: undefined, decorators: [{
|
|
735
|
+
type: Inject,
|
|
736
|
+
args: [INJECTOR]
|
|
737
|
+
}] }, { type: undefined, decorators: [{
|
|
738
|
+
type: Optional
|
|
739
|
+
}, {
|
|
740
|
+
type: Inject,
|
|
741
|
+
args: [RXAP_NAVIGATION_CONFIG_INSERTS]
|
|
742
|
+
}] }]; } });
|
|
1085
743
|
|
|
1086
|
-
const _c0$2 = ["navigationOverlay"];
|
|
1087
|
-
const _c1$1 = ["rxap-navigation-item", ""];
|
|
1088
|
-
function NavigationItemComponent_mat_icon_2_Template(rf, ctx) { if (rf & 1) {
|
|
1089
|
-
i0.ɵɵelement(0, "mat-icon", 5);
|
|
1090
|
-
} if (rf & 2) {
|
|
1091
|
-
const ctx_r0 = i0.ɵɵnextContext();
|
|
1092
|
-
i0.ɵɵproperty("rxapIcon", ctx_r0.item.icon);
|
|
1093
|
-
} }
|
|
1094
|
-
function NavigationItemComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
|
|
1095
|
-
i0.ɵɵelementStart(0, "span", 6);
|
|
1096
|
-
i0.ɵɵtext(1);
|
|
1097
|
-
i0.ɵɵelementEnd();
|
|
1098
|
-
} if (rf & 2) {
|
|
1099
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
1100
|
-
i0.ɵɵadvance(1);
|
|
1101
|
-
i0.ɵɵtextInterpolate(ctx_r1.item.label);
|
|
1102
|
-
} }
|
|
1103
|
-
function NavigationItemComponent_ul_5_Template(rf, ctx) { if (rf & 1) {
|
|
1104
|
-
i0.ɵɵelement(0, "ul", 7);
|
|
1105
|
-
} if (rf & 2) {
|
|
1106
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
|
1107
|
-
i0.ɵɵproperty("@sub-nav", undefined)("items", ctx_r2.children)("level", ctx_r2.level + 1);
|
|
1108
|
-
} }
|
|
1109
|
-
function NavigationItemComponent_ng_template_7_li_2_a_1_mat_icon_1_Template(rf, ctx) { if (rf & 1) {
|
|
1110
|
-
i0.ɵɵelement(0, "mat-icon", 5);
|
|
1111
|
-
} if (rf & 2) {
|
|
1112
|
-
const child_r6 = i0.ɵɵnextContext(2).$implicit;
|
|
1113
|
-
const ctx_r8 = i0.ɵɵnextContext(2);
|
|
1114
|
-
i0.ɵɵproperty("rxapIcon", ctx_r8.asNavigationItem(child_r6).icon);
|
|
1115
|
-
} }
|
|
1116
|
-
function NavigationItemComponent_ng_template_7_li_2_a_1_Template(rf, ctx) { if (rf & 1) {
|
|
1117
|
-
i0.ɵɵelementStart(0, "a", 11);
|
|
1118
|
-
i0.ɵɵtemplate(1, NavigationItemComponent_ng_template_7_li_2_a_1_mat_icon_1_Template, 1, 1, "mat-icon", 1);
|
|
1119
|
-
i0.ɵɵelementStart(2, "span", 6);
|
|
1120
|
-
i0.ɵɵtext(3);
|
|
1121
|
-
i0.ɵɵelementEnd()();
|
|
1122
|
-
} if (rf & 2) {
|
|
1123
|
-
const child_r6 = i0.ɵɵnextContext().$implicit;
|
|
1124
|
-
const ctx_r7 = i0.ɵɵnextContext(2);
|
|
1125
|
-
i0.ɵɵproperty("routerLink", ctx_r7.asNavigationItem(child_r6).routerLink);
|
|
1126
|
-
i0.ɵɵadvance(1);
|
|
1127
|
-
i0.ɵɵproperty("ngIf", ctx_r7.asNavigationItem(child_r6).icon);
|
|
1128
|
-
i0.ɵɵadvance(2);
|
|
1129
|
-
i0.ɵɵtextInterpolate(ctx_r7.asNavigationItem(child_r6).label);
|
|
1130
|
-
} }
|
|
1131
|
-
function NavigationItemComponent_ng_template_7_li_2_Template(rf, ctx) { if (rf & 1) {
|
|
1132
|
-
i0.ɵɵelementStart(0, "li");
|
|
1133
|
-
i0.ɵɵtemplate(1, NavigationItemComponent_ng_template_7_li_2_a_1_Template, 4, 3, "a", 10);
|
|
1134
|
-
i0.ɵɵelementEnd();
|
|
1135
|
-
} if (rf & 2) {
|
|
1136
|
-
const child_r6 = ctx.$implicit;
|
|
1137
|
-
const ctx_r5 = i0.ɵɵnextContext(2);
|
|
1138
|
-
i0.ɵɵadvance(1);
|
|
1139
|
-
i0.ɵɵproperty("ngIf", ctx_r5.isNavigationItem(child_r6));
|
|
1140
|
-
} }
|
|
1141
|
-
function NavigationItemComponent_ng_template_7_Template(rf, ctx) { if (rf & 1) {
|
|
1142
|
-
const _r12 = i0.ɵɵgetCurrentView();
|
|
1143
|
-
i0.ɵɵelementStart(0, "div", 8);
|
|
1144
|
-
i0.ɵɵlistener("mouseenter", function NavigationItemComponent_ng_template_7_Template_div_mouseenter_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r11 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r11.lockeOverlay = true); })("mouseleave", function NavigationItemComponent_ng_template_7_Template_div_mouseleave_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r13 = i0.ɵɵnextContext(); ctx_r13.lockeOverlay = false; return i0.ɵɵresetView(ctx_r13.onMouseleave()); });
|
|
1145
|
-
i0.ɵɵelementStart(1, "ul");
|
|
1146
|
-
i0.ɵɵtemplate(2, NavigationItemComponent_ng_template_7_li_2_Template, 2, 1, "li", 9);
|
|
1147
|
-
i0.ɵɵelementEnd()();
|
|
1148
|
-
} if (rf & 2) {
|
|
1149
|
-
const ctx_r4 = i0.ɵɵnextContext();
|
|
1150
|
-
i0.ɵɵadvance(2);
|
|
1151
|
-
i0.ɵɵproperty("ngForOf", ctx_r4.children);
|
|
1152
|
-
} }
|
|
1153
|
-
class NavigationItemComponent {
|
|
1154
|
-
constructor(router, sidenav, elementRef, renderer, overlay, viewContainerRef) {
|
|
1155
|
-
this.router = router;
|
|
1156
|
-
this.sidenav = sidenav;
|
|
1157
|
-
this.elementRef = elementRef;
|
|
1158
|
-
this.renderer = renderer;
|
|
1159
|
-
this.overlay = overlay;
|
|
1160
|
-
this.viewContainerRef = viewContainerRef;
|
|
1161
|
-
this.children = null;
|
|
1162
|
-
this.level = 0;
|
|
1163
|
-
this.isActive = false;
|
|
1164
|
-
this._subscription = new Subscription();
|
|
1165
|
-
/**
|
|
1166
|
-
* indicates the mouse is over the
|
|
1167
|
-
*/
|
|
1168
|
-
this.lockeOverlay = false;
|
|
1169
|
-
}
|
|
1170
|
-
ngOnChanges(changes) {
|
|
1171
|
-
if (changes.item) {
|
|
1172
|
-
const item = changes.item.currentValue;
|
|
1173
|
-
this.children =
|
|
1174
|
-
item.children && item.children.length ? item.children : null;
|
|
1175
|
-
}
|
|
1176
|
-
}
|
|
1177
|
-
ngAfterViewInit() {
|
|
1178
|
-
this._subscription.add(this.router.events
|
|
1179
|
-
.pipe(filter((event) => event instanceof NavigationEnd), startWith(true), delay(100), tap(() => {
|
|
1180
|
-
if (this.routerLinkActive.isActive) {
|
|
1181
|
-
if (!this.sidenav.collapsed$.value) {
|
|
1182
|
-
// only close the overlay if sidenav collapsed
|
|
1183
|
-
this._overlayRef?.detach();
|
|
1184
|
-
}
|
|
1185
|
-
this.renderer.addClass(this.elementRef.nativeElement, 'active');
|
|
1186
|
-
}
|
|
1187
|
-
else {
|
|
1188
|
-
this.renderer.removeClass(this.elementRef.nativeElement, 'active');
|
|
1189
|
-
}
|
|
1190
|
-
}))
|
|
1191
|
-
.subscribe());
|
|
1192
|
-
}
|
|
1193
|
-
ngOnInit() {
|
|
1194
|
-
// detach the navigation overlay if the sidenav collapsed
|
|
1195
|
-
// state is changed
|
|
1196
|
-
this._subscription.add(this.sidenav.collapsed$
|
|
1197
|
-
.pipe(skip(1), distinctUntilChanged(), tap(() => this._overlayRef?.detach()))
|
|
1198
|
-
.subscribe());
|
|
1199
|
-
}
|
|
1200
|
-
ngOnDestroy() {
|
|
1201
|
-
this._subscription?.unsubscribe();
|
|
1202
|
-
this._overlayRef?.dispose();
|
|
1203
|
-
}
|
|
1204
|
-
onMouseenter() {
|
|
1205
|
-
if (this.children) {
|
|
1206
|
-
if (!this.routerLinkActive.isActive || this.sidenav.collapsed$.value) {
|
|
1207
|
-
if (!this._overlayRef) {
|
|
1208
|
-
this._overlayRef = this.overlay.create({
|
|
1209
|
-
positionStrategy: this.overlay
|
|
1210
|
-
.position()
|
|
1211
|
-
.flexibleConnectedTo(this.elementRef)
|
|
1212
|
-
.withPositions([
|
|
1213
|
-
{
|
|
1214
|
-
originY: 'top',
|
|
1215
|
-
originX: 'end',
|
|
1216
|
-
overlayY: 'top',
|
|
1217
|
-
overlayX: 'start',
|
|
1218
|
-
},
|
|
1219
|
-
]),
|
|
1220
|
-
});
|
|
1221
|
-
}
|
|
1222
|
-
if (!this._overlayRef.hasAttached()) {
|
|
1223
|
-
this._embeddedViewRef = this._overlayRef.attach(new TemplatePortal(this._navigationOverlay, this.viewContainerRef));
|
|
1224
|
-
}
|
|
1225
|
-
}
|
|
1226
|
-
}
|
|
1227
|
-
}
|
|
1228
|
-
onMouseleave() {
|
|
1229
|
-
if (!this.lockeOverlay) {
|
|
1230
|
-
this._overlayRef?.detach();
|
|
1231
|
-
}
|
|
1232
|
-
}
|
|
1233
|
-
// region type save item property
|
|
1234
|
-
// required to check the type of the item property in the ngFor loop
|
|
1235
|
-
isNavigationDividerItem(item) {
|
|
1236
|
-
return item['divider'];
|
|
1237
|
-
}
|
|
1238
|
-
isNavigationItem(item) {
|
|
1239
|
-
return !this.isNavigationDividerItem(item);
|
|
1240
|
-
}
|
|
1241
|
-
asNavigationItem(item) {
|
|
1242
|
-
if (!this.isNavigationItem(item)) {
|
|
1243
|
-
throw new Error('The item is not a NavigationItem');
|
|
1244
|
-
}
|
|
1245
|
-
return item;
|
|
1246
|
-
}
|
|
1247
|
-
static { this.ɵfac = function NavigationItemComponent_Factory(t) { return new (t || NavigationItemComponent)(i0.ɵɵdirectiveInject(Router), i0.ɵɵdirectiveInject(SidenavComponentService), i0.ɵɵdirectiveInject(ElementRef), i0.ɵɵdirectiveInject(Renderer2), i0.ɵɵdirectiveInject(Overlay), i0.ɵɵdirectiveInject(ViewContainerRef)); }; }
|
|
1248
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: NavigationItemComponent, selectors: [["li", "rxap-navigation-item", ""]], viewQuery: function NavigationItemComponent_Query(rf, ctx) { if (rf & 1) {
|
|
1249
|
-
i0.ɵɵviewQuery(RouterLinkActive, 7);
|
|
1250
|
-
i0.ɵɵviewQuery(_c0$2, 5);
|
|
1251
|
-
} if (rf & 2) {
|
|
1252
|
-
let _t;
|
|
1253
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.routerLinkActive = _t.first);
|
|
1254
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._navigationOverlay = _t.first);
|
|
1255
|
-
} }, hostAttrs: [1, "rxap-navigation-item"], hostVars: 2, hostBindings: function NavigationItemComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
1256
|
-
i0.ɵɵlistener("mouseenter", function NavigationItemComponent_mouseenter_HostBindingHandler() { return ctx.onMouseenter(); })("mouseleave", function NavigationItemComponent_mouseleave_HostBindingHandler() { return ctx.onMouseleave(); });
|
|
1257
|
-
} if (rf & 2) {
|
|
1258
|
-
i0.ɵɵclassProp("active", ctx.isActive);
|
|
1259
|
-
} }, inputs: { item: "item", level: "level" }, standalone: true, features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature], attrs: _c1$1, decls: 9, vars: 15, consts: [["routerLinkActive", "link-active", "matRipple", "", 3, "routerLink", "matTooltipDisabled", "matTooltip"], ["class", "icon", 3, "rxapIcon", 4, "ngIf"], [3, "ngIf"], ["rxap-navigation", "", "class", "sub-items", "fxFlex", "nogrow", 3, "items", "level", 4, "ngIf"], ["navigationOverlay", ""], [1, "icon", 3, "rxapIcon"], [1, "label"], ["rxap-navigation", "", "fxFlex", "nogrow", 1, "sub-items", 3, "items", "level"], [1, "navigation-overlay-container", "mat-elevation-z1", 3, "mouseenter", "mouseleave"], [4, "ngFor", "ngForOf"], ["class", "navigation-link mat-subtitle-2 mat-body-strong", "matRipple", "", 3, "routerLink", 4, "ngIf"], ["matRipple", "", 1, "navigation-link", "mat-subtitle-2", "mat-body-strong", 3, "routerLink"]], template: function NavigationItemComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1260
|
-
i0.ɵɵelementStart(0, "a", 0);
|
|
1261
|
-
i0.ɵɵpipe(1, "async");
|
|
1262
|
-
i0.ɵɵtemplate(2, NavigationItemComponent_mat_icon_2_Template, 1, 1, "mat-icon", 1);
|
|
1263
|
-
i0.ɵɵtemplate(3, NavigationItemComponent_ng_template_3_Template, 2, 1, "ng-template", 2);
|
|
1264
|
-
i0.ɵɵpipe(4, "async");
|
|
1265
|
-
i0.ɵɵelementEnd();
|
|
1266
|
-
i0.ɵɵtemplate(5, NavigationItemComponent_ul_5_Template, 1, 3, "ul", 3);
|
|
1267
|
-
i0.ɵɵpipe(6, "async");
|
|
1268
|
-
i0.ɵɵtemplate(7, NavigationItemComponent_ng_template_7_Template, 3, 1, "ng-template", null, 4, i0.ɵɵtemplateRefExtractor);
|
|
1269
|
-
} if (rf & 2) {
|
|
1270
|
-
i0.ɵɵclassMapInterpolate1("navigation-link mat-body-2 mat-body-strong navigation-level-", ctx.level, "");
|
|
1271
|
-
i0.ɵɵproperty("routerLink", ctx.item.routerLink)("matTooltipDisabled", !i0.ɵɵpipeBind1(1, 9, ctx.sidenav.collapsed$))("matTooltip", ctx.item.label);
|
|
1272
|
-
i0.ɵɵadvance(2);
|
|
1273
|
-
i0.ɵɵproperty("ngIf", ctx.item.icon);
|
|
1274
|
-
i0.ɵɵadvance(1);
|
|
1275
|
-
i0.ɵɵproperty("ngIf", !i0.ɵɵpipeBind1(4, 11, ctx.sidenav.collapsed$));
|
|
1276
|
-
i0.ɵɵadvance(2);
|
|
1277
|
-
i0.ɵɵproperty("ngIf", ctx.routerLinkActive.isActive && !i0.ɵɵpipeBind1(6, 13, ctx.sidenav.collapsed$) && ctx.children);
|
|
1278
|
-
} }, dependencies: [RouterLinkActive,
|
|
1279
|
-
MatRippleModule, i4$1.MatRipple, RouterLink,
|
|
1280
|
-
MatTooltipModule, i2$6.MatTooltip, NgIf,
|
|
1281
|
-
MatIconModule, i2$2.MatIcon, IconDirective,
|
|
1282
|
-
NavigationComponent,
|
|
1283
|
-
FlexModule, i1$3.DefaultFlexDirective, NgFor,
|
|
1284
|
-
AsyncPipe], styles: [".rxap-navigation-item,.navigation-overlay-container{display:flex;flex-direction:column;min-height:48px}.rxap-navigation-item .navigation-link,.navigation-overlay-container .navigation-link{display:flex;flex-direction:row;align-items:center;text-decoration:none;height:48px}.rxap-navigation-item .navigation-link .icon,.navigation-overlay-container .navigation-link .icon{margin:0 16px}.rxap-navigation-item .navigation-link .label,.navigation-overlay-container .navigation-link .label{padding-right:12px}.rxap-navigation-item .navigation-link.navigation-level-1,.navigation-overlay-container .navigation-link.navigation-level-1{padding-left:52px}.rxap-navigation-item .navigation-link.navigation-level-1 .icon,.navigation-overlay-container .navigation-link.navigation-level-1 .icon{padding-left:0}.rxap-navigation-item .navigation-link.navigation-level-2,.navigation-overlay-container .navigation-link.navigation-level-2{padding-left:88px}.rxap-navigation-item .navigation-link.navigation-level-2 .icon,.navigation-overlay-container .navigation-link.navigation-level-2 .icon{padding-left:0}.navigation-overlay-container{padding:0 16px}.navigation-overlay-container ul{list-style-type:none;margin:0;padding:0}.navigation-overlay-container ul .navigation-link .label{padding-right:0}.navigation-overlay-container ul .navigation-link .icon{margin-left:0}\n"], encapsulation: 2, data: { animation: [
|
|
1285
|
-
trigger('sub-nav', [
|
|
1286
|
-
transition(':enter', [
|
|
1287
|
-
style({ display: 'block', height: '0', overflow: 'hidden' }),
|
|
1288
|
-
animate(150, style({ height: '*' }))
|
|
1289
|
-
]),
|
|
1290
|
-
transition(':leave', [
|
|
1291
|
-
style({ overflow: 'hidden' }),
|
|
1292
|
-
animate(300, style({ height: '0' })),
|
|
1293
|
-
style({ display: 'none' })
|
|
1294
|
-
])
|
|
1295
|
-
])
|
|
1296
|
-
] }, changeDetection: 0 }); }
|
|
1297
|
-
}
|
|
1298
|
-
__decorate([
|
|
1299
|
-
Required,
|
|
1300
|
-
__metadata("design:type", Object)
|
|
1301
|
-
], NavigationItemComponent.prototype, "item", void 0);
|
|
1302
|
-
__decorate([
|
|
1303
|
-
DebounceCall(100),
|
|
1304
|
-
__metadata("design:type", Function),
|
|
1305
|
-
__metadata("design:paramtypes", []),
|
|
1306
|
-
__metadata("design:returntype", void 0)
|
|
1307
|
-
], NavigationItemComponent.prototype, "onMouseleave", null);
|
|
1308
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NavigationItemComponent, [{
|
|
1309
|
-
type: Component,
|
|
1310
|
-
args: [{ selector: 'li[rxap-navigation-item]', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
1311
|
-
class: 'rxap-navigation-item'
|
|
1312
|
-
}, animations: [
|
|
1313
|
-
trigger('sub-nav', [
|
|
1314
|
-
transition(':enter', [
|
|
1315
|
-
style({ display: 'block', height: '0', overflow: 'hidden' }),
|
|
1316
|
-
animate(150, style({ height: '*' }))
|
|
1317
|
-
]),
|
|
1318
|
-
transition(':leave', [
|
|
1319
|
-
style({ overflow: 'hidden' }),
|
|
1320
|
-
animate(300, style({ height: '0' })),
|
|
1321
|
-
style({ display: 'none' })
|
|
1322
|
-
])
|
|
1323
|
-
])
|
|
1324
|
-
], standalone: true, imports: [
|
|
1325
|
-
RouterLinkActive,
|
|
1326
|
-
MatRippleModule,
|
|
1327
|
-
RouterLink,
|
|
1328
|
-
MatTooltipModule,
|
|
1329
|
-
NgIf,
|
|
1330
|
-
MatIconModule,
|
|
1331
|
-
IconDirective,
|
|
1332
|
-
NavigationComponent,
|
|
1333
|
-
FlexModule,
|
|
1334
|
-
NgFor,
|
|
1335
|
-
AsyncPipe
|
|
1336
|
-
], template: "<a [routerLink]=\"item.routerLink\"\n routerLinkActive=\"link-active\"\n [matTooltipDisabled]=\"!(sidenav.collapsed$ | async)\"\n [matTooltip]=\"item.label\"\n class=\"navigation-link mat-body-2 mat-body-strong navigation-level-{{level}}\" matRipple>\n <mat-icon *ngIf=\"item.icon\" [rxapIcon]=\"item.icon\" class=\"icon\"></mat-icon>\n <ng-template [ngIf]=\"!(sidenav.collapsed$ | async)\">\n <span class=\"label\">{{ item.label }}</span>\n </ng-template>\n</a>\n\n<ul rxap-navigation\n *ngIf=\"routerLinkActive.isActive && !(sidenav.collapsed$ | async) && children\"\n [@sub-nav]\n [items]=\"children\"\n [level]=\"level + 1\"\n class=\"sub-items\"\n fxFlex=\"nogrow\"\n>\n</ul>\n\n<ng-template #navigationOverlay>\n <div class=\"navigation-overlay-container mat-elevation-z1\"\n (mouseenter)=\"lockeOverlay = true\" (mouseleave)=\"lockeOverlay = false; onMouseleave()\">\n <ul>\n <li *ngFor=\"let child of children\">\n <a *ngIf=\"isNavigationItem(child)\" [routerLink]=\"asNavigationItem(child).routerLink\"\n class=\"navigation-link mat-subtitle-2 mat-body-strong\" matRipple>\n <mat-icon *ngIf=\"asNavigationItem(child).icon\" [rxapIcon]=\"asNavigationItem(child).icon\" class=\"icon\"></mat-icon>\n <span class=\"label\">{{ asNavigationItem(child).label }}</span>\n </a>\n </li>\n </ul>\n </div>\n</ng-template>\n", styles: [".rxap-navigation-item,.navigation-overlay-container{display:flex;flex-direction:column;min-height:48px}.rxap-navigation-item .navigation-link,.navigation-overlay-container .navigation-link{display:flex;flex-direction:row;align-items:center;text-decoration:none;height:48px}.rxap-navigation-item .navigation-link .icon,.navigation-overlay-container .navigation-link .icon{margin:0 16px}.rxap-navigation-item .navigation-link .label,.navigation-overlay-container .navigation-link .label{padding-right:12px}.rxap-navigation-item .navigation-link.navigation-level-1,.navigation-overlay-container .navigation-link.navigation-level-1{padding-left:52px}.rxap-navigation-item .navigation-link.navigation-level-1 .icon,.navigation-overlay-container .navigation-link.navigation-level-1 .icon{padding-left:0}.rxap-navigation-item .navigation-link.navigation-level-2,.navigation-overlay-container .navigation-link.navigation-level-2{padding-left:88px}.rxap-navigation-item .navigation-link.navigation-level-2 .icon,.navigation-overlay-container .navigation-link.navigation-level-2 .icon{padding-left:0}.navigation-overlay-container{padding:0 16px}.navigation-overlay-container ul{list-style-type:none;margin:0;padding:0}.navigation-overlay-container ul .navigation-link .label{padding-right:0}.navigation-overlay-container ul .navigation-link .icon{margin-left:0}\n"] }]
|
|
1337
|
-
}], function () { return [{ type: i2$1.Router, decorators: [{
|
|
1338
|
-
type: Inject,
|
|
1339
|
-
args: [Router]
|
|
1340
|
-
}] }, { type: SidenavComponentService, decorators: [{
|
|
1341
|
-
type: Inject,
|
|
1342
|
-
args: [SidenavComponentService]
|
|
1343
|
-
}] }, { type: i0.ElementRef, decorators: [{
|
|
1344
|
-
type: Inject,
|
|
1345
|
-
args: [ElementRef]
|
|
1346
|
-
}] }, { type: i0.Renderer2, decorators: [{
|
|
1347
|
-
type: Inject,
|
|
1348
|
-
args: [Renderer2]
|
|
1349
|
-
}] }, { type: i7.Overlay, decorators: [{
|
|
1350
|
-
type: Inject,
|
|
1351
|
-
args: [Overlay]
|
|
1352
|
-
}] }, { type: i0.ViewContainerRef, decorators: [{
|
|
1353
|
-
type: Inject,
|
|
1354
|
-
args: [ViewContainerRef]
|
|
1355
|
-
}] }]; }, { routerLinkActive: [{
|
|
1356
|
-
type: ViewChild,
|
|
1357
|
-
args: [RouterLinkActive, { static: true }]
|
|
1358
|
-
}], item: [{
|
|
1359
|
-
type: Input
|
|
1360
|
-
}], level: [{
|
|
1361
|
-
type: Input
|
|
1362
|
-
}], isActive: [{
|
|
1363
|
-
type: HostBinding,
|
|
1364
|
-
args: ['class.active']
|
|
1365
|
-
}], _navigationOverlay: [{
|
|
1366
|
-
type: ViewChild,
|
|
1367
|
-
args: ['navigationOverlay']
|
|
1368
|
-
}], onMouseenter: [{
|
|
1369
|
-
type: HostListener,
|
|
1370
|
-
args: ['mouseenter']
|
|
1371
|
-
}], onMouseleave: [{
|
|
1372
|
-
type: HostListener,
|
|
1373
|
-
args: ['mouseleave']
|
|
1374
|
-
}] }); })();
|
|
1375
|
-
|
|
1376
|
-
const _c0$1 = ["rxap-navigation", ""];
|
|
1377
|
-
function NavigationComponent_ng_template_0_ng_template_0_div_1_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
1378
|
-
i0.ɵɵelementStart(0, "span", 2);
|
|
1379
|
-
i0.ɵɵtext(1);
|
|
1380
|
-
i0.ɵɵelementEnd();
|
|
1381
|
-
} if (rf & 2) {
|
|
1382
|
-
const item_r1 = i0.ɵɵnextContext(3).$implicit;
|
|
1383
|
-
i0.ɵɵadvance(1);
|
|
1384
|
-
i0.ɵɵtextInterpolate(item_r1.title);
|
|
1385
|
-
} }
|
|
1386
|
-
function NavigationComponent_ng_template_0_ng_template_0_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
1387
|
-
i0.ɵɵelementStart(0, "div", 4);
|
|
1388
|
-
i0.ɵɵtemplate(1, NavigationComponent_ng_template_0_ng_template_0_div_1_span_1_Template, 2, 1, "span", 5);
|
|
1389
|
-
i0.ɵɵelementEnd();
|
|
1390
|
-
} if (rf & 2) {
|
|
1391
|
-
const item_r1 = i0.ɵɵnextContext(2).$implicit;
|
|
1392
|
-
i0.ɵɵadvance(1);
|
|
1393
|
-
i0.ɵɵproperty("ngIf", item_r1.title);
|
|
1394
|
-
} }
|
|
1395
|
-
function NavigationComponent_ng_template_0_ng_template_0_Template(rf, ctx) { if (rf & 1) {
|
|
1396
|
-
i0.ɵɵelement(0, "mat-divider", 2);
|
|
1397
|
-
i0.ɵɵtemplate(1, NavigationComponent_ng_template_0_ng_template_0_div_1_Template, 2, 1, "div", 3);
|
|
1398
|
-
i0.ɵɵpipe(2, "async");
|
|
1399
|
-
} if (rf & 2) {
|
|
1400
|
-
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
1401
|
-
i0.ɵɵadvance(1);
|
|
1402
|
-
i0.ɵɵproperty("ngIf", !i0.ɵɵpipeBind1(2, 1, ctx_r2.sidenav.collapsed$));
|
|
1403
|
-
} }
|
|
1404
|
-
function NavigationComponent_ng_template_0_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
1405
|
-
i0.ɵɵelement(0, "li", 6);
|
|
1406
|
-
} if (rf & 2) {
|
|
1407
|
-
const item_r1 = i0.ɵɵnextContext().$implicit;
|
|
1408
|
-
const ctx_r3 = i0.ɵɵnextContext();
|
|
1409
|
-
i0.ɵɵproperty("level", ctx_r3.level)("item", ctx_r3.asNavigationItem(item_r1));
|
|
1410
|
-
} }
|
|
1411
|
-
function NavigationComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {
|
|
1412
|
-
i0.ɵɵtemplate(0, NavigationComponent_ng_template_0_ng_template_0_Template, 3, 3, "ng-template", 1);
|
|
1413
|
-
i0.ɵɵtemplate(1, NavigationComponent_ng_template_0_ng_template_1_Template, 1, 2, "ng-template", 1);
|
|
1414
|
-
} if (rf & 2) {
|
|
1415
|
-
const item_r1 = ctx.$implicit;
|
|
1416
|
-
const ctx_r0 = i0.ɵɵnextContext();
|
|
1417
|
-
i0.ɵɵproperty("ngIf", ctx_r0.isNavigationDividerItem(item_r1));
|
|
1418
|
-
i0.ɵɵadvance(1);
|
|
1419
|
-
i0.ɵɵproperty("ngIf", ctx_r0.isNavigationItem(item_r1));
|
|
1420
|
-
} }
|
|
1421
744
|
class NavigationComponent {
|
|
1422
|
-
set root(value) {
|
|
1423
|
-
this._root = coerceBoolean(value);
|
|
1424
|
-
}
|
|
1425
745
|
constructor(navigationService, cdr, sidenav) {
|
|
1426
746
|
this.navigationService = navigationService;
|
|
1427
747
|
this.cdr = cdr;
|
|
1428
748
|
this.sidenav = sidenav;
|
|
1429
|
-
this._root = false;
|
|
1430
749
|
this.level = 0;
|
|
750
|
+
this._root = false;
|
|
751
|
+
}
|
|
752
|
+
set root(value) {
|
|
753
|
+
this._root = coerceBoolean(value);
|
|
1431
754
|
}
|
|
1432
755
|
ngOnInit() {
|
|
1433
756
|
if (this._root) {
|
|
@@ -1436,6 +759,7 @@ class NavigationComponent {
|
|
|
1436
759
|
.pipe(tap((navigation) => (this.items = navigation)), tap(() => this.cdr.detectChanges()))
|
|
1437
760
|
.subscribe();
|
|
1438
761
|
}
|
|
762
|
+
this.items ??= [];
|
|
1439
763
|
}
|
|
1440
764
|
ngOnDestroy() {
|
|
1441
765
|
this.subscription?.unsubscribe();
|
|
@@ -1454,314 +778,200 @@ class NavigationComponent {
|
|
|
1454
778
|
}
|
|
1455
779
|
return item;
|
|
1456
780
|
}
|
|
1457
|
-
static { this.ɵfac =
|
|
1458
|
-
static { this.ɵcmp =
|
|
1459
|
-
i0.ɵɵclassProp("rxap-root-navigation", ctx._root);
|
|
1460
|
-
} }, inputs: { root: "root", items: "items", level: "level" }, standalone: true, features: [i0.ɵɵStandaloneFeature], attrs: _c0$1, decls: 1, vars: 1, consts: [["ngFor", "", 3, "ngForOf"], [3, "ngIf"], ["fxFlex", "nogrow"], ["class", "divider-title", "fxFlex", "nogrow", "fxLayout", "row", "fxLayoutAlign", "start end", 4, "ngIf"], ["fxFlex", "nogrow", "fxLayout", "row", "fxLayoutAlign", "start end", 1, "divider-title"], ["fxFlex", "nogrow", 4, "ngIf"], ["rxap-navigation-item", "", 1, "item", 3, "level", "item"]], template: function NavigationComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1461
|
-
i0.ɵɵtemplate(0, NavigationComponent_ng_template_0_Template, 2, 2, "ng-template", 0);
|
|
1462
|
-
} if (rf & 2) {
|
|
1463
|
-
i0.ɵɵproperty("ngForOf", ctx.items);
|
|
1464
|
-
} }, dependencies: [NgFor,
|
|
1465
|
-
NgIf,
|
|
1466
|
-
MatDividerModule, i1$5.MatDivider, FlexModule, i1$3.DefaultLayoutDirective, i1$3.DefaultLayoutAlignDirective, i1$3.DefaultFlexDirective, NavigationItemComponent,
|
|
1467
|
-
AsyncPipe], styles: [".rxap-navigation{list-style-type:none;padding:0}.rxap-navigation .divider-title{padding-left:18px;height:28px;align-content:center}\n"], encapsulation: 2, changeDetection: 0 }); }
|
|
781
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: NavigationComponent, deps: [{ token: NavigationService }, { token: ChangeDetectorRef }, { token: SidenavComponentService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
782
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: NavigationComponent, isStandalone: true, selector: "ul[rxap-navigation]", inputs: { items: "items", level: "level", root: "root" }, host: { properties: { "class.rxap-root-navigation": "this._root" }, classAttribute: "list-none dark:text-neutral-400 text-neutral-700" }, ngImport: i0, template: "<ng-template [ngForOf]=\"items\" let-item ngFor>\n <ng-template [ngIf]=\"isNavigationDividerItem(item)\">\n <mat-divider></mat-divider>\n <div *ngIf=\"(sidenav.collapsed$ | async) === false\" class=\"pl-5 h-6\">\n <span *ngIf=\"item.title\">{{item.title}}</span>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"isNavigationItem(item)\">\n <li [item]=\"asNavigationItem(item)\" [level]=\"level\" class=\"dark:hover:text-white hover:text-black\"\n rxap-navigation-item></li>\n </ng-template>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return NgFor; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(function () { return NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatDividerModule; }) }, { kind: "component", type: i0.forwardRef(function () { return i3$3.MatDivider; }), selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i0.forwardRef(function () { return NavigationItemComponent; }), selector: "li[rxap-navigation-item]", inputs: ["level", "item"] }, { kind: "pipe", type: i0.forwardRef(function () { return AsyncPipe; }), name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1468
783
|
}
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
type:
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
}], level: [{
|
|
1500
|
-
type: Input
|
|
1501
|
-
}] }); })();
|
|
784
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: NavigationComponent, decorators: [{
|
|
785
|
+
type: Component,
|
|
786
|
+
args: [{ selector: 'ul[rxap-navigation]', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, host: {
|
|
787
|
+
class: 'list-none dark:text-neutral-400 text-neutral-700',
|
|
788
|
+
}, imports: [
|
|
789
|
+
NgFor,
|
|
790
|
+
NgIf,
|
|
791
|
+
MatDividerModule,
|
|
792
|
+
forwardRef(() => NavigationItemComponent),
|
|
793
|
+
AsyncPipe,
|
|
794
|
+
], template: "<ng-template [ngForOf]=\"items\" let-item ngFor>\n <ng-template [ngIf]=\"isNavigationDividerItem(item)\">\n <mat-divider></mat-divider>\n <div *ngIf=\"(sidenav.collapsed$ | async) === false\" class=\"pl-5 h-6\">\n <span *ngIf=\"item.title\">{{item.title}}</span>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"isNavigationItem(item)\">\n <li [item]=\"asNavigationItem(item)\" [level]=\"level\" class=\"dark:hover:text-white hover:text-black\"\n rxap-navigation-item></li>\n </ng-template>\n</ng-template>\n" }]
|
|
795
|
+
}], ctorParameters: function () { return [{ type: NavigationService, decorators: [{
|
|
796
|
+
type: Inject,
|
|
797
|
+
args: [NavigationService]
|
|
798
|
+
}] }, { type: i0.ChangeDetectorRef, decorators: [{
|
|
799
|
+
type: Inject,
|
|
800
|
+
args: [ChangeDetectorRef]
|
|
801
|
+
}] }, { type: SidenavComponentService, decorators: [{
|
|
802
|
+
type: Inject,
|
|
803
|
+
args: [SidenavComponentService]
|
|
804
|
+
}] }]; }, propDecorators: { items: [{
|
|
805
|
+
type: Input
|
|
806
|
+
}], level: [{
|
|
807
|
+
type: Input
|
|
808
|
+
}], _root: [{
|
|
809
|
+
type: HostBinding,
|
|
810
|
+
args: ['class.rxap-root-navigation']
|
|
811
|
+
}], root: [{
|
|
812
|
+
type: Input
|
|
813
|
+
}] } });
|
|
1502
814
|
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
i0.ɵɵproperty("fxHide", i0.ɵɵpipeBind1(4, 5, ctx_r0.sidenav.collapsed$));
|
|
1521
|
-
} }
|
|
1522
|
-
function SidenavComponent_ng_template_15_ng_container_4_Template(rf, ctx) { if (rf & 1) {
|
|
1523
|
-
i0.ɵɵelementContainer(0);
|
|
1524
|
-
} }
|
|
1525
|
-
function SidenavComponent_ng_template_15_Template(rf, ctx) { if (rf & 1) {
|
|
1526
|
-
i0.ɵɵelement(0, "mat-divider", 13);
|
|
1527
|
-
i0.ɵɵpipe(1, "async");
|
|
1528
|
-
i0.ɵɵelementStart(2, "div", 14);
|
|
1529
|
-
i0.ɵɵpipe(3, "async");
|
|
1530
|
-
i0.ɵɵtemplate(4, SidenavComponent_ng_template_15_ng_container_4_Template, 1, 0, "ng-container", 12);
|
|
1531
|
-
i0.ɵɵelementEnd();
|
|
1532
|
-
} if (rf & 2) {
|
|
1533
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
1534
|
-
let tmp_2_0;
|
|
1535
|
-
i0.ɵɵproperty("fxHide", i0.ɵɵpipeBind1(1, 3, ctx_r1.sidenav.collapsed$));
|
|
1536
|
-
i0.ɵɵadvance(2);
|
|
1537
|
-
i0.ɵɵproperty("fxHide", i0.ɵɵpipeBind1(3, 5, ctx_r1.sidenav.collapsed$));
|
|
1538
|
-
i0.ɵɵadvance(2);
|
|
1539
|
-
i0.ɵɵproperty("ngTemplateOutlet", (tmp_2_0 = ctx_r1.sidenavFooterDirective == null ? null : ctx_r1.sidenavFooterDirective.template) !== null && tmp_2_0 !== undefined ? tmp_2_0 : null);
|
|
1540
|
-
} }
|
|
1541
|
-
const _c2 = function (a0) { return { "collapsed": a0 }; };
|
|
1542
|
-
class SidenavComponent {
|
|
1543
|
-
constructor(sidenav) {
|
|
1544
|
-
this.sidenav = sidenav;
|
|
815
|
+
class LayoutComponentService {
|
|
816
|
+
constructor(footerComponentService, headerComponentService, logoConfig = null, config) {
|
|
817
|
+
this.footerComponentService = footerComponentService;
|
|
818
|
+
this.headerComponentService = headerComponentService;
|
|
819
|
+
this.config = config;
|
|
820
|
+
this.opened$ = new BehaviorSubject(true);
|
|
821
|
+
this.mode$ = new BehaviorSubject('side');
|
|
822
|
+
this.fixedTopGap$ = new BehaviorSubject(64);
|
|
823
|
+
this.mode$.next(this.config.get('navigation.mode', this.mode$.value));
|
|
824
|
+
this.opened$.next(this.config.get('navigation.open', this.opened$.value));
|
|
825
|
+
this.fixedBottomGap$ = this.footerComponentService.portalCount$.pipe(map(count => count * 64));
|
|
826
|
+
this.fixedTopGap$.next(this.headerComponentService.countComponent * 64);
|
|
827
|
+
this.headerComponentService.update$.pipe(tap(() => this.fixedTopGap$.next(this.headerComponentService.countComponent * 64))).subscribe();
|
|
828
|
+
this.logo = logoConfig ?? {
|
|
829
|
+
src: '/assets/logo.png',
|
|
830
|
+
width: 192,
|
|
831
|
+
};
|
|
1545
832
|
}
|
|
1546
|
-
static { this.ɵfac =
|
|
1547
|
-
static { this.ɵ
|
|
1548
|
-
i0.ɵɵcontentQuery(dirIndex, SidenavFooterDirective, 5);
|
|
1549
|
-
i0.ɵɵcontentQuery(dirIndex, SidenavHeaderDirective, 5);
|
|
1550
|
-
} if (rf & 2) {
|
|
1551
|
-
let _t;
|
|
1552
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.sidenavFooterDirective = _t.first);
|
|
1553
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.sidenavHeaderDirective = _t.first);
|
|
1554
|
-
} }, hostAttrs: [1, "rxap-layout-sidenav"], standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 16, vars: 15, consts: function () { let i18n_0; if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
|
|
1555
|
-
/**
|
|
1556
|
-
* @suppress {msgDescriptions}
|
|
1557
|
-
*/
|
|
1558
|
-
const MSG_EXTERNAL_1144722711335201698$$LIB_SIDENAV_SIDENAV_COMPONENT_TS_1 = goog.getMsg("Collapse sidebar");
|
|
1559
|
-
i18n_0 = MSG_EXTERNAL_1144722711335201698$$LIB_SIDENAV_SIDENAV_COMPONENT_TS_1;
|
|
1560
|
-
}
|
|
1561
|
-
else {
|
|
1562
|
-
i18n_0 = $localize `:␟98effe6eb558f87ab061ab608a31b44adec4e2ae␟1144722711335201698:Collapse sidebar`;
|
|
1563
|
-
} return [[1, "container", 3, "ngClass"], ["fxLayout", "column", "fxLayoutAlign", "space-between stretch", 1, "inner"], [3, "ngIf"], ["fxFlex", "grow", 1, "nav-container"], ["fxLayout", "column", "root", "", "rxap-navigation", ""], ["fxFlex", "nogrow"], ["mat-button", "", "fxFlex", "nogrow", 1, "sidebar-toggle", 3, "ngClass", "click"], ["fxLayout", "row", "fxLayoutAlign", "start center", "fxLayoutGap", "16px", 1, "sidebar-toggle-inner"], ["fxFlex", "nogrow", 1, "arrow"], ["fxFlex", "grow", 1, "label", 3, "fxHide"], i18n_0, ["fxFlex", "nogrow", 1, "header", 3, "fxHide"], [4, "ngTemplateOutlet"], ["fxFlex", "nogrow", 3, "fxHide"], ["fxFlex", "nogrow", 1, "footer", 3, "fxHide"]]; }, template: function SidenavComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1564
|
-
i0.ɵɵelementStart(0, "div", 0);
|
|
1565
|
-
i0.ɵɵpipe(1, "async");
|
|
1566
|
-
i0.ɵɵelementStart(2, "div", 1);
|
|
1567
|
-
i0.ɵɵtemplate(3, SidenavComponent_ng_template_3_Template, 5, 7, "ng-template", 2);
|
|
1568
|
-
i0.ɵɵelementStart(4, "div", 3);
|
|
1569
|
-
i0.ɵɵelement(5, "ul", 4);
|
|
1570
|
-
i0.ɵɵelementEnd();
|
|
1571
|
-
i0.ɵɵelement(6, "mat-divider", 5);
|
|
1572
|
-
i0.ɵɵelementStart(7, "button", 6);
|
|
1573
|
-
i0.ɵɵlistener("click", function SidenavComponent_Template_button_click_7_listener() { return ctx.sidenav.toggleNavigationCollapse(); });
|
|
1574
|
-
i0.ɵɵpipe(8, "async");
|
|
1575
|
-
i0.ɵɵelementStart(9, "span", 7)(10, "mat-icon", 8);
|
|
1576
|
-
i0.ɵɵtext(11, "double_arrow");
|
|
1577
|
-
i0.ɵɵelementEnd();
|
|
1578
|
-
i0.ɵɵelementStart(12, "span", 9);
|
|
1579
|
-
i0.ɵɵi18n(13, 10);
|
|
1580
|
-
i0.ɵɵpipe(14, "async");
|
|
1581
|
-
i0.ɵɵelementEnd()()();
|
|
1582
|
-
i0.ɵɵtemplate(15, SidenavComponent_ng_template_15_Template, 5, 7, "ng-template", 2);
|
|
1583
|
-
i0.ɵɵelementEnd()();
|
|
1584
|
-
} if (rf & 2) {
|
|
1585
|
-
let tmp_4_0;
|
|
1586
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(11, _c2, i0.ɵɵpipeBind1(1, 5, ctx.sidenav.collapsed$)));
|
|
1587
|
-
i0.ɵɵadvance(3);
|
|
1588
|
-
i0.ɵɵproperty("ngIf", ctx.sidenavHeaderDirective == null ? null : ctx.sidenavHeaderDirective.template);
|
|
1589
|
-
i0.ɵɵadvance(4);
|
|
1590
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(13, _c2, i0.ɵɵpipeBind1(8, 7, ctx.sidenav.collapsed$)));
|
|
1591
|
-
i0.ɵɵadvance(5);
|
|
1592
|
-
i0.ɵɵproperty("fxHide", i0.ɵɵpipeBind1(14, 9, ctx.sidenav.collapsed$));
|
|
1593
|
-
i0.ɵɵadvance(3);
|
|
1594
|
-
i0.ɵɵproperty("ngIf", (tmp_4_0 = ctx.sidenavFooterDirective == null ? null : ctx.sidenavFooterDirective.template) !== null && tmp_4_0 !== undefined ? tmp_4_0 : null);
|
|
1595
|
-
} }, dependencies: [ExtendedModule, i2$4.DefaultShowHideDirective, i2$4.DefaultClassDirective, NgClass,
|
|
1596
|
-
FlexModule, i1$3.DefaultLayoutDirective, i1$3.DefaultLayoutGapDirective, i1$3.DefaultLayoutAlignDirective, i1$3.DefaultFlexDirective, NgIf,
|
|
1597
|
-
NgTemplateOutlet,
|
|
1598
|
-
MatDividerModule, i1$5.MatDivider, NavigationComponent,
|
|
1599
|
-
MatButtonModule, i1$2.MatButton, MatIconModule, i2$2.MatIcon, AsyncPipe], styles: [".container[_ngcontent-%COMP%], .container[_ngcontent-%COMP%] .inner[_ngcontent-%COMP%]{height:100%}.container[_ngcontent-%COMP%] .inner[_ngcontent-%COMP%] .header[_ngcontent-%COMP%]{padding-bottom:12px}.container[_ngcontent-%COMP%] .inner[_ngcontent-%COMP%] .footer[_ngcontent-%COMP%]{padding-top:12px}.container[_ngcontent-%COMP%] .inner[_ngcontent-%COMP%] .nav-container[_ngcontent-%COMP%]{overflow-y:scroll;padding-top:12px}.container[_ngcontent-%COMP%] .inner[_ngcontent-%COMP%] .nav-container[_ngcontent-%COMP%]::-webkit-scrollbar{width:6px}.container[_ngcontent-%COMP%] .inner[_ngcontent-%COMP%] .nav-container[_ngcontent-%COMP%]::-webkit-scrollbar-track{border-radius:2px}.container[_ngcontent-%COMP%] .inner[_ngcontent-%COMP%] .nav-container[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{border-radius:10px}.container[_ngcontent-%COMP%] .sidebar-toggle[_ngcontent-%COMP%]{min-height:48px}.container[_ngcontent-%COMP%] .sidebar-toggle[_ngcontent-%COMP%] .sidebar-toggle-inner[_ngcontent-%COMP%]{padding:0}.container[_ngcontent-%COMP%] .sidebar-toggle[_ngcontent-%COMP%] .arrow[_ngcontent-%COMP%]{transform:rotate(180deg)}.container[_ngcontent-%COMP%] .sidebar-toggle.collapsed[_ngcontent-%COMP%] .arrow[_ngcontent-%COMP%]{transform:initial}.container[_ngcontent-%COMP%] .sidebar-toggle.collapsed[_ngcontent-%COMP%] .sidebar-toggle-inner[_ngcontent-%COMP%]{justify-content:space-around!important}"], changeDetection: 0 }); }
|
|
833
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: LayoutComponentService, deps: [{ token: i1.FooterService }, { token: i1.HeaderService }, { token: RXAP_LOGO_CONFIG, optional: true }, { token: ConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
834
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: LayoutComponentService, providedIn: 'root' }); }
|
|
1600
835
|
}
|
|
1601
|
-
(
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
MatButtonModule,
|
|
1614
|
-
MatIconModule,
|
|
1615
|
-
AsyncPipe
|
|
1616
|
-
], template: "<div class=\"container\" [ngClass]=\"{ 'collapsed': sidenav.collapsed$ | async }\">\n <div class=\"inner\"\n fxLayout=\"column\"\n fxLayoutAlign=\"space-between stretch\">\n <ng-template [ngIf]=\"sidenavHeaderDirective?.template\">\n <div fxFlex=\"nogrow\" class=\"header\" [fxHide]=\"sidenav.collapsed$ | async\">\n <ng-container *ngTemplateOutlet=\"sidenavHeaderDirective?.template ?? null\"></ng-container>\n </div>\n <mat-divider fxFlex=\"nogrow\" [fxHide]=\"sidenav.collapsed$ | async\"></mat-divider>\n </ng-template>\n <div fxFlex=\"grow\" class=\"nav-container\">\n <ul fxLayout=\"column\" root rxap-navigation></ul>\n </div>\n <mat-divider fxFlex=\"nogrow\"></mat-divider>\n <button mat-button class=\"sidebar-toggle\" [ngClass]=\"{ 'collapsed': sidenav.collapsed$ | async }\" fxFlex=\"nogrow\"\n (click)=\"sidenav.toggleNavigationCollapse()\">\n <span class=\"sidebar-toggle-inner\" fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"16px\">\n <mat-icon fxFlex=\"nogrow\" class=\"arrow\">double_arrow</mat-icon>\n <span [fxHide]=\"sidenav.collapsed$ | async\" class=\"label\" fxFlex=\"grow\" i18n>Collapse sidebar</span>\n </span>\n </button>\n <ng-template [ngIf]=\"sidenavFooterDirective?.template ?? null\">\n <mat-divider fxFlex=\"nogrow\" [fxHide]=\"sidenav.collapsed$ | async\"></mat-divider>\n <div fxFlex=\"nogrow\" class=\"footer\" [fxHide]=\"sidenav.collapsed$ | async\">\n <ng-container *ngTemplateOutlet=\"sidenavFooterDirective?.template ?? null\"></ng-container>\n </div>\n </ng-template>\n </div>\n</div>\n", styles: [".container,.container .inner{height:100%}.container .inner .header{padding-bottom:12px}.container .inner .footer{padding-top:12px}.container .inner .nav-container{overflow-y:scroll;padding-top:12px}.container .inner .nav-container::-webkit-scrollbar{width:6px}.container .inner .nav-container::-webkit-scrollbar-track{border-radius:2px}.container .inner .nav-container::-webkit-scrollbar-thumb{border-radius:10px}.container .sidebar-toggle{min-height:48px}.container .sidebar-toggle .sidebar-toggle-inner{padding:0}.container .sidebar-toggle .arrow{transform:rotate(180deg)}.container .sidebar-toggle.collapsed .arrow{transform:initial}.container .sidebar-toggle.collapsed .sidebar-toggle-inner{justify-content:space-around!important}\n"] }]
|
|
1617
|
-
}], function () { return [{ type: SidenavComponentService }]; }, { sidenavFooterDirective: [{
|
|
1618
|
-
type: ContentChild,
|
|
1619
|
-
args: [SidenavFooterDirective]
|
|
1620
|
-
}], sidenavHeaderDirective: [{
|
|
1621
|
-
type: ContentChild,
|
|
1622
|
-
args: [SidenavHeaderDirective]
|
|
1623
|
-
}] }); })();
|
|
836
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: LayoutComponentService, decorators: [{
|
|
837
|
+
type: Injectable,
|
|
838
|
+
args: [{ providedIn: 'root' }]
|
|
839
|
+
}], ctorParameters: function () { return [{ type: i1.FooterService }, { type: i1.HeaderService }, { type: undefined, decorators: [{
|
|
840
|
+
type: Optional
|
|
841
|
+
}, {
|
|
842
|
+
type: Inject,
|
|
843
|
+
args: [RXAP_LOGO_CONFIG]
|
|
844
|
+
}] }, { type: i1$1.ConfigService, decorators: [{
|
|
845
|
+
type: Inject,
|
|
846
|
+
args: [ConfigService]
|
|
847
|
+
}] }]; } });
|
|
1624
848
|
|
|
1625
|
-
const _c0 = function () { return ["/"]; };
|
|
1626
|
-
function LayoutComponent_ng_template_8_Template(rf, ctx) { if (rf & 1) {
|
|
1627
|
-
i0.ɵɵelement(0, "img", 9);
|
|
1628
|
-
} if (rf & 2) {
|
|
1629
|
-
const ctx_r0 = i0.ɵɵnextContext();
|
|
1630
|
-
i0.ɵɵproperty("routerLink", i0.ɵɵpureFunction0(3, _c0))("width", ctx_r0.layoutComponentService.logo.width)("src", ctx_r0.layoutComponentService.logo.src, i0.ɵɵsanitizeUrl);
|
|
1631
|
-
} }
|
|
1632
|
-
const _c1 = ["*"];
|
|
1633
849
|
class LayoutComponent {
|
|
1634
|
-
constructor(layoutComponentService) {
|
|
850
|
+
constructor(layoutComponentService, environment, iconLoaderService) {
|
|
1635
851
|
this.layoutComponentService = layoutComponentService;
|
|
1636
|
-
this.
|
|
852
|
+
this.environment = environment;
|
|
853
|
+
this.sidenavMode = 'over';
|
|
854
|
+
iconLoaderService.load();
|
|
1637
855
|
}
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
i0.ɵɵviewQuery(MatSidenav, 7);
|
|
1641
|
-
} if (rf & 2) {
|
|
1642
|
-
let _t;
|
|
1643
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.sidenav = _t.first);
|
|
1644
|
-
} }, standalone: true, features: [i0.ɵɵStandaloneFeature], ngContentSelectors: _c1, decls: 18, vars: 24, consts: [[1, "header", 3, "sidenav"], ["autosize", "", 1, "container"], [1, "sidenav", 3, "fixedBottomGap", "fixedInViewport", "fixedTopGap", "mode", "opened"], ["rxapSidenavHeader", ""], [1, "content"], [3, "sidenav"], [3, "openWindowSidenav", "openWindowSidenavChange"], ["mode", "side", "position", "end", 1, "window-container-sidenav", 3, "fixedBottomGap", "fixedInViewport", "fixedTopGap", "opened"], [1, "footer"], ["alt", "logo", 1, "logo", 3, "routerLink", "width", "src"]], template: function LayoutComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1645
|
-
i0.ɵɵprojectionDef();
|
|
1646
|
-
i0.ɵɵelement(0, "rxap-header", 0);
|
|
1647
|
-
i0.ɵɵelementStart(1, "mat-sidenav-container", 1)(2, "mat-sidenav", 2);
|
|
1648
|
-
i0.ɵɵpipe(3, "async");
|
|
1649
|
-
i0.ɵɵpipe(4, "async");
|
|
1650
|
-
i0.ɵɵpipe(5, "async");
|
|
1651
|
-
i0.ɵɵpipe(6, "async");
|
|
1652
|
-
i0.ɵɵelementStart(7, "rxap-sidenav");
|
|
1653
|
-
i0.ɵɵtemplate(8, LayoutComponent_ng_template_8_Template, 1, 4, "ng-template", 3);
|
|
1654
|
-
i0.ɵɵelementEnd()();
|
|
1655
|
-
i0.ɵɵelementStart(9, "mat-sidenav-content", 4)(10, "rxap-sidenav-content", 5);
|
|
1656
|
-
i0.ɵɵprojection(11);
|
|
1657
|
-
i0.ɵɵelementStart(12, "rxap-toggle-window-sidenav-button", 6);
|
|
1658
|
-
i0.ɵɵlistener("openWindowSidenavChange", function LayoutComponent_Template_rxap_toggle_window_sidenav_button_openWindowSidenavChange_12_listener($event) { return ctx.openWindowSidenav = $event; });
|
|
1659
|
-
i0.ɵɵelementEnd()()();
|
|
1660
|
-
i0.ɵɵelementStart(13, "mat-sidenav", 7);
|
|
1661
|
-
i0.ɵɵpipe(14, "async");
|
|
1662
|
-
i0.ɵɵpipe(15, "async");
|
|
1663
|
-
i0.ɵɵelement(16, "rxap-window-container-sidenav");
|
|
1664
|
-
i0.ɵɵelementEnd()();
|
|
1665
|
-
i0.ɵɵelement(17, "rxap-footer", 8);
|
|
1666
|
-
} if (rf & 2) {
|
|
1667
|
-
let tmp_4_0;
|
|
1668
|
-
let tmp_5_0;
|
|
1669
|
-
i0.ɵɵproperty("sidenav", ctx.sidenav);
|
|
1670
|
-
i0.ɵɵadvance(2);
|
|
1671
|
-
i0.ɵɵproperty("fixedBottomGap", i0.ɵɵpipeBind1(3, 12, ctx.layoutComponentService.fixedBottomGap$))("fixedInViewport", true)("fixedTopGap", i0.ɵɵpipeBind1(4, 14, ctx.layoutComponentService.fixedTopGap$))("mode", (tmp_4_0 = i0.ɵɵpipeBind1(5, 16, ctx.layoutComponentService.mode$)) !== null && tmp_4_0 !== undefined ? tmp_4_0 : "side")("opened", (tmp_5_0 = i0.ɵɵpipeBind1(6, 18, ctx.layoutComponentService.opened$)) !== null && tmp_5_0 !== undefined ? tmp_5_0 : true);
|
|
1672
|
-
i0.ɵɵadvance(8);
|
|
1673
|
-
i0.ɵɵproperty("sidenav", ctx.sidenav);
|
|
1674
|
-
i0.ɵɵadvance(2);
|
|
1675
|
-
i0.ɵɵproperty("openWindowSidenav", ctx.openWindowSidenav);
|
|
1676
|
-
i0.ɵɵadvance(1);
|
|
1677
|
-
i0.ɵɵproperty("fixedBottomGap", i0.ɵɵpipeBind1(14, 20, ctx.layoutComponentService.fixedBottomGap$))("fixedInViewport", true)("fixedTopGap", i0.ɵɵpipeBind1(15, 22, ctx.layoutComponentService.fixedTopGap$))("opened", ctx.openWindowSidenav);
|
|
1678
|
-
} }, dependencies: [HeaderComponent,
|
|
1679
|
-
MatSidenavModule, i2$7.MatSidenav, i2$7.MatSidenavContainer, i2$7.MatSidenavContent, SidenavComponent,
|
|
1680
|
-
SidenavHeaderDirective,
|
|
1681
|
-
RouterLink,
|
|
1682
|
-
SidenavContentComponent,
|
|
1683
|
-
ToggleWindowSidenavButtonComponent,
|
|
1684
|
-
WindowContainerSidenavComponent,
|
|
1685
|
-
FooterComponent,
|
|
1686
|
-
AsyncPipe], styles: [".container[_ngcontent-%COMP%], .content[_ngcontent-%COMP%]{height:100%}.sidenav[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;width:auto}.sidenav[_ngcontent-%COMP%] .logo[_ngcontent-%COMP%]{padding:16px}.footer[_ngcontent-%COMP%]{position:fixed;bottom:0;left:0;right:0;z-index:100}.header[_ngcontent-%COMP%]{position:fixed;top:0;left:0;right:0;z-index:100}"], changeDetection: 0 }); }
|
|
1687
|
-
}
|
|
1688
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LayoutComponent, [{
|
|
1689
|
-
type: Component,
|
|
1690
|
-
args: [{ selector: 'rxap-layout', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
1691
|
-
HeaderComponent,
|
|
1692
|
-
MatSidenavModule,
|
|
1693
|
-
SidenavComponent,
|
|
1694
|
-
SidenavHeaderDirective,
|
|
1695
|
-
RouterLink,
|
|
1696
|
-
SidenavContentComponent,
|
|
1697
|
-
ToggleWindowSidenavButtonComponent,
|
|
1698
|
-
WindowContainerSidenavComponent,
|
|
1699
|
-
FooterComponent,
|
|
1700
|
-
AsyncPipe
|
|
1701
|
-
], template: "<rxap-header [sidenav]=\"sidenav\" class=\"header\"></rxap-header>\n<mat-sidenav-container autosize class=\"container\">\n <mat-sidenav\n [fixedBottomGap]=\"layoutComponentService.fixedBottomGap$ | async\"\n [fixedInViewport]=\"true\"\n [fixedTopGap]=\"layoutComponentService.fixedTopGap$ | async\"\n [mode]=\"(layoutComponentService.mode$ | async) ?? 'side'\"\n [opened]=\"(layoutComponentService.opened$ | async) ?? true\"\n class=\"sidenav\"\n >\n <rxap-sidenav>\n <ng-template rxapSidenavHeader>\n <img\n [routerLink]=\"['/']\"\n alt=\"logo\"\n class=\"logo\"\n [width]=\"layoutComponentService.logo.width\"\n [src]=\"layoutComponentService.logo.src\"\n />\n </ng-template>\n </rxap-sidenav>\n </mat-sidenav>\n <mat-sidenav-content class=\"content\">\n <rxap-sidenav-content [sidenav]=\"sidenav\">\n <ng-content></ng-content>\n <rxap-toggle-window-sidenav-button [(openWindowSidenav)]=\"openWindowSidenav\"></rxap-toggle-window-sidenav-button>\n </rxap-sidenav-content>\n </mat-sidenav-content>\n <mat-sidenav\n [fixedBottomGap]=\"layoutComponentService.fixedBottomGap$ | async\"\n [fixedInViewport]=\"true\"\n [fixedTopGap]=\"layoutComponentService.fixedTopGap$ | async\"\n [opened]=\"openWindowSidenav\"\n mode=\"side\"\n class=\"window-container-sidenav\"\n position=\"end\"\n >\n <rxap-window-container-sidenav></rxap-window-container-sidenav>\n </mat-sidenav>\n</mat-sidenav-container>\n<rxap-footer class=\"footer\"></rxap-footer>\n", styles: [".container,.content{height:100%}.sidenav{display:flex;align-items:center;justify-content:center;width:auto}.sidenav .logo{padding:16px}.footer{position:fixed;bottom:0;left:0;right:0;z-index:100}.header{position:fixed;top:0;left:0;right:0;z-index:100}\n"] }]
|
|
1702
|
-
}], function () { return [{ type: LayoutComponentService }]; }, { sidenav: [{
|
|
1703
|
-
type: ViewChild,
|
|
1704
|
-
args: [MatSidenav, { static: true }]
|
|
1705
|
-
}] }); })();
|
|
1706
|
-
|
|
1707
|
-
class LayoutModule {
|
|
1708
|
-
static withNavigation(navigation) {
|
|
1709
|
-
return {
|
|
1710
|
-
ngModule: LayoutModule,
|
|
1711
|
-
providers: [
|
|
1712
|
-
{
|
|
1713
|
-
provide: RXAP_NAVIGATION_CONFIG,
|
|
1714
|
-
useValue: navigation
|
|
1715
|
-
}
|
|
1716
|
-
]
|
|
1717
|
-
};
|
|
856
|
+
get release() {
|
|
857
|
+
return DetermineReleaseName(this.environment);
|
|
1718
858
|
}
|
|
1719
|
-
|
|
1720
|
-
|
|
1721
|
-
|
|
859
|
+
toggleSidenavMode() {
|
|
860
|
+
if (this.sidenavMode === 'over') {
|
|
861
|
+
this.sidenavMode = 'side';
|
|
862
|
+
this.sidenav.open();
|
|
863
|
+
}
|
|
864
|
+
else {
|
|
865
|
+
this.sidenavMode = 'over';
|
|
866
|
+
}
|
|
867
|
+
}
|
|
868
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: LayoutComponent, deps: [{ token: LayoutComponentService }, { token: RXAP_ENVIRONMENT }, { token: i2$4.IconLoaderService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
869
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: LayoutComponent, isStandalone: true, selector: "rxap-layout", viewQueries: [{ propertyName: "sidenav", first: true, predicate: MatSidenav, descendants: true, static: true }], ngImport: i0, template: "<div class=\"flex flex-col h-screen justify-between\">\n <rxap-header [sidenav]=\"sidenav\" class=\"z-10 w-full fixed top-0\"></rxap-header>\n <mat-sidenav-container [ngClass]=\"{\n 'mb-16': (layoutComponentService.fixedBottomGap$ | async) === 64,\n 'mb-32': (layoutComponentService.fixedBottomGap$ | async) === 128,\n }\" class=\"grow mt-16\">\n <mat-sidenav\n #matSidenav=\"matSidenav\"\n (mouseenter)=\"sidenavMode === 'over' && matSidenav.open()\"\n (mouseleave)=\"sidenavMode === 'over' && matSidenav.close()\"\n [fixedBottomGap]=\"layoutComponentService.fixedBottomGap$ | async\"\n [fixedInViewport]=\"true\"\n [fixedTopGap]=\"layoutComponentService.fixedTopGap$ | async\"\n [mode]=\"sidenavMode\"\n [opened]=\"false\"\n class=\"sidenav\"\n >\n <div class=\"h-full py-2 flex flex-col items-center gap-y-5 justify-items-stretch\">\n\n <div (click)=\"toggleSidenavMode()\"\n class=\"pl-2 pr-2 self-stretch grow-0 flex flex-row justify-between items-center\">\n <span class=\"text-lg\" i18n>Navigation</span>\n <button mat-icon-button>\n <mat-icon *ngIf=\"sidenavMode === 'over'\">radio_button_unchecked</mat-icon>\n <mat-icon *ngIf=\"sidenavMode === 'side'\">radio_button_checked</mat-icon>\n </button>\n </div>\n\n <ul class=\"grow self-stretch\" root rxap-navigation></ul>\n\n <img\n [src]=\"layoutComponentService.logo.src ?? 'https://via.placeholder.com/256x128px'\"\n [routerLink]=\"['/']\"\n [width]=\"layoutComponentService.logo.width ?? 256\"\n alt=\"logo\"\n class=\"grow-0 mx-16\"\n />\n <div class=\"grow-0 px-16\">\n <span>{{release}}</span>\n </div>\n </div>\n </mat-sidenav>\n <mat-sidenav-content class=\"ml-16 p-4\">\n <router-outlet></router-outlet>\n </mat-sidenav-content>\n </mat-sidenav-container>\n <rxap-footer class=\"z-10 w-full fixed bottom-0\"></rxap-footer>\n</div>\n<!--<rxap-window-task-bar-container></rxap-window-task-bar-container>-->\n", styles: [":host .sidenav:not(.mat-drawer-opened){transform:translate(calc(-100% + 64px))!important;visibility:visible!important;box-shadow:inherit!important;transition-property:transform;transition-delay:.25s;display:flex;border-right:solid 1px rgba(0,0,0,.12)}:host .sidenav ::ng-deep .mat-drawer-inner-container::-webkit-scrollbar{display:none}\n"], dependencies: [{ kind: "component", type: HeaderComponent, selector: "rxap-header", inputs: ["sidenav", "color"] }, { kind: "ngmodule", type: MatSidenavModule }, { kind: "component", type: i3$4.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i3$4.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i3$4.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: FlexLayoutModule }, { kind: "directive", type: i2$5.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$3.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FooterComponent, selector: "rxap-footer" }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: NavigationComponent, selector: "ul[rxap-navigation]", inputs: ["items", "level", "root"] }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1722
870
|
}
|
|
1723
|
-
(
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
|
|
1731
|
-
|
|
1732
|
-
|
|
871
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: LayoutComponent, decorators: [{
|
|
872
|
+
type: Component,
|
|
873
|
+
args: [{ selector: 'rxap-layout', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
874
|
+
HeaderComponent,
|
|
875
|
+
MatSidenavModule,
|
|
876
|
+
AsyncPipe,
|
|
877
|
+
FlexLayoutModule,
|
|
878
|
+
MatIconModule,
|
|
879
|
+
MatButtonModule,
|
|
880
|
+
RouterLink,
|
|
881
|
+
NgIf,
|
|
882
|
+
FooterComponent,
|
|
883
|
+
MatMenuModule,
|
|
884
|
+
NgOptimizedImage,
|
|
885
|
+
NavigationComponent,
|
|
886
|
+
RouterOutlet,
|
|
887
|
+
], template: "<div class=\"flex flex-col h-screen justify-between\">\n <rxap-header [sidenav]=\"sidenav\" class=\"z-10 w-full fixed top-0\"></rxap-header>\n <mat-sidenav-container [ngClass]=\"{\n 'mb-16': (layoutComponentService.fixedBottomGap$ | async) === 64,\n 'mb-32': (layoutComponentService.fixedBottomGap$ | async) === 128,\n }\" class=\"grow mt-16\">\n <mat-sidenav\n #matSidenav=\"matSidenav\"\n (mouseenter)=\"sidenavMode === 'over' && matSidenav.open()\"\n (mouseleave)=\"sidenavMode === 'over' && matSidenav.close()\"\n [fixedBottomGap]=\"layoutComponentService.fixedBottomGap$ | async\"\n [fixedInViewport]=\"true\"\n [fixedTopGap]=\"layoutComponentService.fixedTopGap$ | async\"\n [mode]=\"sidenavMode\"\n [opened]=\"false\"\n class=\"sidenav\"\n >\n <div class=\"h-full py-2 flex flex-col items-center gap-y-5 justify-items-stretch\">\n\n <div (click)=\"toggleSidenavMode()\"\n class=\"pl-2 pr-2 self-stretch grow-0 flex flex-row justify-between items-center\">\n <span class=\"text-lg\" i18n>Navigation</span>\n <button mat-icon-button>\n <mat-icon *ngIf=\"sidenavMode === 'over'\">radio_button_unchecked</mat-icon>\n <mat-icon *ngIf=\"sidenavMode === 'side'\">radio_button_checked</mat-icon>\n </button>\n </div>\n\n <ul class=\"grow self-stretch\" root rxap-navigation></ul>\n\n <img\n [src]=\"layoutComponentService.logo.src ?? 'https://via.placeholder.com/256x128px'\"\n [routerLink]=\"['/']\"\n [width]=\"layoutComponentService.logo.width ?? 256\"\n alt=\"logo\"\n class=\"grow-0 mx-16\"\n />\n <div class=\"grow-0 px-16\">\n <span>{{release}}</span>\n </div>\n </div>\n </mat-sidenav>\n <mat-sidenav-content class=\"ml-16 p-4\">\n <router-outlet></router-outlet>\n </mat-sidenav-content>\n </mat-sidenav-container>\n <rxap-footer class=\"z-10 w-full fixed bottom-0\"></rxap-footer>\n</div>\n<!--<rxap-window-task-bar-container></rxap-window-task-bar-container>-->\n", styles: [":host .sidenav:not(.mat-drawer-opened){transform:translate(calc(-100% + 64px))!important;visibility:visible!important;box-shadow:inherit!important;transition-property:transform;transition-delay:.25s;display:flex;border-right:solid 1px rgba(0,0,0,.12)}:host .sidenav ::ng-deep .mat-drawer-inner-container::-webkit-scrollbar{display:none}\n"] }]
|
|
888
|
+
}], ctorParameters: function () { return [{ type: LayoutComponentService }, { type: undefined, decorators: [{
|
|
889
|
+
type: Inject,
|
|
890
|
+
args: [RXAP_ENVIRONMENT]
|
|
891
|
+
}] }, { type: i2$4.IconLoaderService }]; }, propDecorators: { sidenav: [{
|
|
892
|
+
type: ViewChild,
|
|
893
|
+
args: [MatSidenav, { static: true }]
|
|
894
|
+
}] } });
|
|
1733
895
|
|
|
1734
896
|
class ReplaceRouterPathsService {
|
|
1735
897
|
transform(routerLink) {
|
|
1736
898
|
return of(routerLink);
|
|
1737
899
|
}
|
|
1738
|
-
static { this.ɵfac =
|
|
1739
|
-
static { this.ɵprov =
|
|
900
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: ReplaceRouterPathsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
901
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: ReplaceRouterPathsService, providedIn: 'root' }); }
|
|
1740
902
|
}
|
|
1741
|
-
(
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
903
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: ReplaceRouterPathsService, decorators: [{
|
|
904
|
+
type: Injectable,
|
|
905
|
+
args: [{ providedIn: 'root' }]
|
|
906
|
+
}] });
|
|
907
|
+
|
|
908
|
+
class SidenavFooterDirective {
|
|
909
|
+
constructor(template) {
|
|
910
|
+
this.template = template;
|
|
911
|
+
}
|
|
912
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: SidenavFooterDirective, deps: [{ token: TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
913
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.4", type: SidenavFooterDirective, isStandalone: true, selector: "[rxapSidenavFooter]", ngImport: i0 }); }
|
|
914
|
+
}
|
|
915
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: SidenavFooterDirective, decorators: [{
|
|
916
|
+
type: Directive,
|
|
917
|
+
args: [{
|
|
918
|
+
selector: '[rxapSidenavFooter]',
|
|
919
|
+
standalone: true,
|
|
920
|
+
}]
|
|
921
|
+
}], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{
|
|
922
|
+
type: Inject,
|
|
923
|
+
args: [TemplateRef]
|
|
924
|
+
}] }]; } });
|
|
925
|
+
|
|
926
|
+
class SidenavHeaderDirective {
|
|
927
|
+
constructor(template) {
|
|
928
|
+
this.template = template;
|
|
929
|
+
}
|
|
930
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: SidenavHeaderDirective, deps: [{ token: TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
931
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.4", type: SidenavHeaderDirective, isStandalone: true, selector: "[rxapSidenavHeader]", ngImport: i0 }); }
|
|
932
|
+
}
|
|
933
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: SidenavHeaderDirective, decorators: [{
|
|
934
|
+
type: Directive,
|
|
935
|
+
args: [{
|
|
936
|
+
selector: '[rxapSidenavHeader]',
|
|
937
|
+
standalone: true,
|
|
938
|
+
}]
|
|
939
|
+
}], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{
|
|
940
|
+
type: Inject,
|
|
941
|
+
args: [TemplateRef]
|
|
942
|
+
}] }]; } });
|
|
943
|
+
|
|
944
|
+
class SidenavComponent {
|
|
945
|
+
constructor(sidenav) {
|
|
946
|
+
this.sidenav = sidenav;
|
|
947
|
+
}
|
|
948
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: SidenavComponent, deps: [{ token: SidenavComponentService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
949
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: SidenavComponent, isStandalone: true, selector: "rxap-sidenav", host: { classAttribute: "rxap-layout-sidenav" }, queries: [{ propertyName: "sidenavFooterDirective", first: true, predicate: SidenavFooterDirective, descendants: true }, { propertyName: "sidenavHeaderDirective", first: true, predicate: SidenavHeaderDirective, descendants: true }], ngImport: i0, template: "<div [ngClass]=\"{ 'collapsed': sidenav.collapsed$ | async }\" class=\"container\">\n <div class=\"inner\"\n fxLayout=\"column\"\n fxLayoutAlign=\"space-between stretch\">\n <ng-template [ngIf]=\"sidenavHeaderDirective?.template\">\n <div [fxHide]=\"sidenav.collapsed$ | async\" class=\"header\" fxFlex=\"nogrow\">\n <ng-container *ngTemplateOutlet=\"sidenavHeaderDirective?.template ?? null\"></ng-container>\n </div>\n <mat-divider [fxHide]=\"sidenav.collapsed$ | async\" fxFlex=\"nogrow\"></mat-divider>\n </ng-template>\n <div class=\"nav-container\" fxFlex=\"grow\">\n <ul fxLayout=\"column\" root rxap-navigation></ul>\n </div>\n <mat-divider fxFlex=\"nogrow\"></mat-divider>\n <button (click)=\"sidenav.toggleNavigationCollapse()\" [ngClass]=\"{ 'collapsed': sidenav.collapsed$ | async }\"\n class=\"sidebar-toggle\"\n fxFlex=\"nogrow\"\n mat-button>\n <span class=\"sidebar-toggle-inner\" fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"16px\">\n <mat-icon class=\"arrow\" fxFlex=\"nogrow\">double_arrow</mat-icon>\n <span [fxHide]=\"sidenav.collapsed$ | async\" class=\"label\" fxFlex=\"grow\" i18n>Collapse sidebar</span>\n </span>\n </button>\n <ng-template [ngIf]=\"sidenavFooterDirective?.template ?? null\">\n <mat-divider [fxHide]=\"sidenav.collapsed$ | async\" fxFlex=\"nogrow\"></mat-divider>\n <div [fxHide]=\"sidenav.collapsed$ | async\" class=\"footer\" fxFlex=\"nogrow\">\n <ng-container *ngTemplateOutlet=\"sidenavFooterDirective?.template ?? null\"></ng-container>\n </div>\n </ng-template>\n </div>\n</div>\n", styles: [".container,.container .inner{height:100%}.container .inner .header{padding-bottom:12px}.container .inner .footer{padding-top:12px}.container .inner .nav-container{overflow-y:scroll;padding-top:12px}.container .inner .nav-container::-webkit-scrollbar{width:6px}.container .inner .nav-container::-webkit-scrollbar-track{border-radius:2px}.container .inner .nav-container::-webkit-scrollbar-thumb{border-radius:10px}.container .sidebar-toggle{min-height:48px}.container .sidebar-toggle .sidebar-toggle-inner{padding:0}.container .sidebar-toggle .arrow{transform:rotate(180deg)}.container .sidebar-toggle.collapsed .arrow{transform:initial}.container .sidebar-toggle.collapsed .sidebar-toggle-inner{justify-content:space-around!important}\n"], dependencies: [{ kind: "ngmodule", type: ExtendedModule }, { kind: "directive", type: i2$5.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }, { kind: "directive", type: i2$5.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FlexModule }, { kind: "directive", type: i1$5.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1$5.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1$5.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1$5.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i3$3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: NavigationComponent, selector: "ul[rxap-navigation]", inputs: ["items", "level", "root"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
950
|
+
}
|
|
951
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: SidenavComponent, decorators: [{
|
|
952
|
+
type: Component,
|
|
953
|
+
args: [{ selector: 'rxap-sidenav', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
954
|
+
class: 'rxap-layout-sidenav',
|
|
955
|
+
}, standalone: true, imports: [
|
|
956
|
+
ExtendedModule,
|
|
957
|
+
NgClass,
|
|
958
|
+
FlexModule,
|
|
959
|
+
NgIf,
|
|
960
|
+
NgTemplateOutlet,
|
|
961
|
+
MatDividerModule,
|
|
962
|
+
NavigationComponent,
|
|
963
|
+
MatButtonModule,
|
|
964
|
+
MatIconModule,
|
|
965
|
+
AsyncPipe,
|
|
966
|
+
], template: "<div [ngClass]=\"{ 'collapsed': sidenav.collapsed$ | async }\" class=\"container\">\n <div class=\"inner\"\n fxLayout=\"column\"\n fxLayoutAlign=\"space-between stretch\">\n <ng-template [ngIf]=\"sidenavHeaderDirective?.template\">\n <div [fxHide]=\"sidenav.collapsed$ | async\" class=\"header\" fxFlex=\"nogrow\">\n <ng-container *ngTemplateOutlet=\"sidenavHeaderDirective?.template ?? null\"></ng-container>\n </div>\n <mat-divider [fxHide]=\"sidenav.collapsed$ | async\" fxFlex=\"nogrow\"></mat-divider>\n </ng-template>\n <div class=\"nav-container\" fxFlex=\"grow\">\n <ul fxLayout=\"column\" root rxap-navigation></ul>\n </div>\n <mat-divider fxFlex=\"nogrow\"></mat-divider>\n <button (click)=\"sidenav.toggleNavigationCollapse()\" [ngClass]=\"{ 'collapsed': sidenav.collapsed$ | async }\"\n class=\"sidebar-toggle\"\n fxFlex=\"nogrow\"\n mat-button>\n <span class=\"sidebar-toggle-inner\" fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"16px\">\n <mat-icon class=\"arrow\" fxFlex=\"nogrow\">double_arrow</mat-icon>\n <span [fxHide]=\"sidenav.collapsed$ | async\" class=\"label\" fxFlex=\"grow\" i18n>Collapse sidebar</span>\n </span>\n </button>\n <ng-template [ngIf]=\"sidenavFooterDirective?.template ?? null\">\n <mat-divider [fxHide]=\"sidenav.collapsed$ | async\" fxFlex=\"nogrow\"></mat-divider>\n <div [fxHide]=\"sidenav.collapsed$ | async\" class=\"footer\" fxFlex=\"nogrow\">\n <ng-container *ngTemplateOutlet=\"sidenavFooterDirective?.template ?? null\"></ng-container>\n </div>\n </ng-template>\n </div>\n</div>\n", styles: [".container,.container .inner{height:100%}.container .inner .header{padding-bottom:12px}.container .inner .footer{padding-top:12px}.container .inner .nav-container{overflow-y:scroll;padding-top:12px}.container .inner .nav-container::-webkit-scrollbar{width:6px}.container .inner .nav-container::-webkit-scrollbar-track{border-radius:2px}.container .inner .nav-container::-webkit-scrollbar-thumb{border-radius:10px}.container .sidebar-toggle{min-height:48px}.container .sidebar-toggle .sidebar-toggle-inner{padding:0}.container .sidebar-toggle .arrow{transform:rotate(180deg)}.container .sidebar-toggle.collapsed .arrow{transform:initial}.container .sidebar-toggle.collapsed .sidebar-toggle-inner{justify-content:space-around!important}\n"] }]
|
|
967
|
+
}], ctorParameters: function () { return [{ type: SidenavComponentService }]; }, propDecorators: { sidenavFooterDirective: [{
|
|
968
|
+
type: ContentChild,
|
|
969
|
+
args: [SidenavFooterDirective]
|
|
970
|
+
}], sidenavHeaderDirective: [{
|
|
971
|
+
type: ContentChild,
|
|
972
|
+
args: [SidenavHeaderDirective]
|
|
973
|
+
}] } });
|
|
1745
974
|
|
|
1746
|
-
function VersionComponent_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
1747
|
-
i0.ɵɵelementStart(0, "div", 2)(1, "span", 3);
|
|
1748
|
-
i0.ɵɵtext(2);
|
|
1749
|
-
i0.ɵɵelementEnd();
|
|
1750
|
-
i0.ɵɵelementStart(3, "span", 4);
|
|
1751
|
-
i0.ɵɵtext(4);
|
|
1752
|
-
i0.ɵɵelementEnd();
|
|
1753
|
-
i0.ɵɵelementStart(5, "span", 5);
|
|
1754
|
-
i0.ɵɵtext(6);
|
|
1755
|
-
i0.ɵɵelementEnd()();
|
|
1756
|
-
} if (rf & 2) {
|
|
1757
|
-
const module_r1 = ctx.$implicit;
|
|
1758
|
-
i0.ɵɵadvance(2);
|
|
1759
|
-
i0.ɵɵtextInterpolate(module_r1.value.name);
|
|
1760
|
-
i0.ɵɵadvance(2);
|
|
1761
|
-
i0.ɵɵtextInterpolate(module_r1.value.semantic);
|
|
1762
|
-
i0.ɵɵadvance(2);
|
|
1763
|
-
i0.ɵɵtextInterpolate(module_r1.value.hash);
|
|
1764
|
-
} }
|
|
1765
975
|
class VersionComponent {
|
|
1766
976
|
constructor(version) {
|
|
1767
977
|
this.version = version;
|
|
@@ -1773,28 +983,84 @@ class VersionComponent {
|
|
|
1773
983
|
ngOnDestroy() {
|
|
1774
984
|
this.subscription?.unsubscribe();
|
|
1775
985
|
}
|
|
1776
|
-
static { this.ɵfac =
|
|
1777
|
-
static { this.ɵcmp =
|
|
1778
|
-
i0.ɵɵelementStart(0, "div", 0);
|
|
1779
|
-
i0.ɵɵtemplate(1, VersionComponent_div_1_Template, 7, 3, "div", 1);
|
|
1780
|
-
i0.ɵɵpipe(2, "keyvalue");
|
|
1781
|
-
i0.ɵɵelementEnd();
|
|
1782
|
-
} if (rf & 2) {
|
|
1783
|
-
i0.ɵɵadvance(1);
|
|
1784
|
-
i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(2, 1, ctx.modules));
|
|
1785
|
-
} }, dependencies: [FlexModule, i1$3.DefaultLayoutDirective, i1$3.DefaultLayoutGapDirective, i1$3.DefaultLayoutAlignDirective, i1$3.DefaultFlexDirective, NgFor, KeyValuePipe], styles: [".version[_ngcontent-%COMP%]{width:100%;font-size:9px;padding:8px}.version[_ngcontent-%COMP%] .name[_ngcontent-%COMP%]{padding-bottom:12px;font-size:10px}"], changeDetection: 0 }); }
|
|
986
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: VersionComponent, deps: [{ token: VersionService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
987
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: VersionComponent, isStandalone: true, selector: "rxap-version", ngImport: i0, template: "<div class=\"version\" fxFlex=\"nogrow\" fxLayout=\"column\" fxLayoutAlign=\"start start\" fxLayoutGap=\"8px\">\n <div *ngFor=\"let module of modules | keyvalue\" fxFlex=\"nogrow\" fxLayout=\"column\">\n <span class=\"name\" fxFlex=\"nogrow\">{{module.value.name}}</span>\n <span class=\"semantic\" fxFlex=\"nogrow\">{{module.value.semantic}}</span>\n <span class=\"hash\" fxFlex=\"nogrow\">{{module.value.hash}}</span>\n </div>\n</div>\n", styles: [".version{width:100%;font-size:9px;padding:8px}.version .name{padding-bottom:12px;font-size:10px}\n"], dependencies: [{ kind: "ngmodule", type: FlexModule }, { kind: "directive", type: i1$5.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1$5.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1$5.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1$5.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: KeyValuePipe, name: "keyvalue" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1786
988
|
}
|
|
1787
|
-
|
|
1788
|
-
|
|
1789
|
-
|
|
1790
|
-
],
|
|
1791
|
-
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
|
|
1797
|
-
|
|
989
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: VersionComponent, decorators: [{
|
|
990
|
+
type: Component,
|
|
991
|
+
args: [{ selector: 'rxap-version', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [FlexModule, NgFor, KeyValuePipe], template: "<div class=\"version\" fxFlex=\"nogrow\" fxLayout=\"column\" fxLayoutAlign=\"start start\" fxLayoutGap=\"8px\">\n <div *ngFor=\"let module of modules | keyvalue\" fxFlex=\"nogrow\" fxLayout=\"column\">\n <span class=\"name\" fxFlex=\"nogrow\">{{module.value.name}}</span>\n <span class=\"semantic\" fxFlex=\"nogrow\">{{module.value.semantic}}</span>\n <span class=\"hash\" fxFlex=\"nogrow\">{{module.value.hash}}</span>\n </div>\n</div>\n", styles: [".version{width:100%;font-size:9px;padding:8px}.version .name{padding-bottom:12px;font-size:10px}\n"] }]
|
|
992
|
+
}], ctorParameters: function () { return [{ type: i1.VersionService, decorators: [{
|
|
993
|
+
type: Inject,
|
|
994
|
+
args: [VersionService]
|
|
995
|
+
}] }]; } });
|
|
996
|
+
|
|
997
|
+
class ToggleWindowSidenavButtonComponent {
|
|
998
|
+
constructor() {
|
|
999
|
+
this.openWindowSidenav = false;
|
|
1000
|
+
this.openWindowSidenavChange = new EventEmitter();
|
|
1001
|
+
}
|
|
1002
|
+
toggle() {
|
|
1003
|
+
this.openWindowSidenav = !this.openWindowSidenav;
|
|
1004
|
+
this.openWindowSidenavChange.emit(this.openWindowSidenav);
|
|
1005
|
+
}
|
|
1006
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: ToggleWindowSidenavButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1007
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: ToggleWindowSidenavButtonComponent, isStandalone: true, selector: "rxap-toggle-window-sidenav-button", inputs: { openWindowSidenav: "openWindowSidenav" }, outputs: { openWindowSidenavChange: "openWindowSidenavChange" }, host: { classAttribute: "rxap-toggle-window-sidenav-button" }, ngImport: i0, template: "<div class=\"toggle-button\">\n <button (click)=\"toggle()\" mat-icon-button>\n <ng-template [ngIfElse]=\"hide\" [ngIf]=\"!openWindowSidenav\">\n <mat-icon svgIcon=\"arrow-left-bold\"></mat-icon>\n </ng-template>\n <ng-template #hide>\n <mat-icon svgIcon=\"arrow-right-bold\"></mat-icon>\n </ng-template>\n </button>\n</div>\n", styles: [".toggle-button{position:absolute;top:70px;right:0;z-index:10000;border-radius:15px 0 0 15px;border:1px solid black;background:black}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$3.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1008
|
+
}
|
|
1009
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: ToggleWindowSidenavButtonComponent, decorators: [{
|
|
1010
|
+
type: Component,
|
|
1011
|
+
args: [{ selector: 'rxap-toggle-window-sidenav-button', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
1012
|
+
class: 'rxap-toggle-window-sidenav-button',
|
|
1013
|
+
}, standalone: true, imports: [MatButtonModule, NgIf, MatIconModule], template: "<div class=\"toggle-button\">\n <button (click)=\"toggle()\" mat-icon-button>\n <ng-template [ngIfElse]=\"hide\" [ngIf]=\"!openWindowSidenav\">\n <mat-icon svgIcon=\"arrow-left-bold\"></mat-icon>\n </ng-template>\n <ng-template #hide>\n <mat-icon svgIcon=\"arrow-right-bold\"></mat-icon>\n </ng-template>\n </button>\n</div>\n", styles: [".toggle-button{position:absolute;top:70px;right:0;z-index:10000;border-radius:15px 0 0 15px;border:1px solid black;background:black}\n"] }]
|
|
1014
|
+
}], propDecorators: { openWindowSidenav: [{
|
|
1015
|
+
type: Input
|
|
1016
|
+
}], openWindowSidenavChange: [{
|
|
1017
|
+
type: Output
|
|
1018
|
+
}] } });
|
|
1019
|
+
|
|
1020
|
+
class WindowContainerSidenavComponent {
|
|
1021
|
+
constructor(service) {
|
|
1022
|
+
this.service = service;
|
|
1023
|
+
this.portals = new Map();
|
|
1024
|
+
this.subscription = new Subscription();
|
|
1025
|
+
}
|
|
1026
|
+
ngOnInit() {
|
|
1027
|
+
const components = this.service.getAll();
|
|
1028
|
+
for (const component of components) {
|
|
1029
|
+
this.add(component);
|
|
1030
|
+
}
|
|
1031
|
+
this.subscription.add(this.service.add$.pipe(tap(component => this.add(component))).subscribe());
|
|
1032
|
+
this.subscription.add(this.service.remove$.pipe(tap(component => this.remove(component))).subscribe());
|
|
1033
|
+
}
|
|
1034
|
+
ngOnDestroy() {
|
|
1035
|
+
this.subscription.unsubscribe();
|
|
1036
|
+
}
|
|
1037
|
+
trackBy(index, id) {
|
|
1038
|
+
return id;
|
|
1039
|
+
}
|
|
1040
|
+
add(component) {
|
|
1041
|
+
if (this.portals.has(component.id)) {
|
|
1042
|
+
throw new Error(`Component portal with id ${component.id} already exists`);
|
|
1043
|
+
}
|
|
1044
|
+
const portal = new ComponentPortal(component.component, component.viewContainerRef, component.injector, component.componentFactoryResolver);
|
|
1045
|
+
this.portals.set(component.id, portal);
|
|
1046
|
+
}
|
|
1047
|
+
remove(component) {
|
|
1048
|
+
if (this.portals.has(component.id)) {
|
|
1049
|
+
const portal = this.portals.get(component.id);
|
|
1050
|
+
this.portals.delete(component.id);
|
|
1051
|
+
portal.detach();
|
|
1052
|
+
}
|
|
1053
|
+
}
|
|
1054
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: WindowContainerSidenavComponent, deps: [{ token: WindowContainerSidenavService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1055
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: WindowContainerSidenavComponent, isStandalone: true, selector: "rxap-window-container-sidenav", ngImport: i0, template: "<div class=\"container\" fxLayout=\"column\" fxLayoutGap=\"16px\">\n\n <div *ngFor=\"let portalId of portals.keys(); trackBy: trackBy\" fxFlex=\"nogrow\">\n <ng-template [cdkPortalOutlet]=\"portals.get(portalId)\"></ng-template>\n </div>\n\n</div>\n", styles: [".container{padding:8px}\n"], dependencies: [{ kind: "ngmodule", type: FlexModule }, { kind: "directive", type: i1$5.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1$5.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1$5.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1056
|
+
}
|
|
1057
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: WindowContainerSidenavComponent, decorators: [{
|
|
1058
|
+
type: Component,
|
|
1059
|
+
args: [{ selector: 'rxap-window-container-sidenav', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [FlexModule, NgFor, PortalModule], template: "<div class=\"container\" fxLayout=\"column\" fxLayoutGap=\"16px\">\n\n <div *ngFor=\"let portalId of portals.keys(); trackBy: trackBy\" fxFlex=\"nogrow\">\n <ng-template [cdkPortalOutlet]=\"portals.get(portalId)\"></ng-template>\n </div>\n\n</div>\n", styles: [".container{padding:8px}\n"] }]
|
|
1060
|
+
}], ctorParameters: function () { return [{ type: i1.WindowContainerSidenavService, decorators: [{
|
|
1061
|
+
type: Inject,
|
|
1062
|
+
args: [WindowContainerSidenavService]
|
|
1063
|
+
}] }]; } });
|
|
1798
1064
|
|
|
1799
1065
|
class FooterDirective {
|
|
1800
1066
|
constructor(footerService, template, viewContainerRef) {
|
|
@@ -1811,29 +1077,53 @@ class FooterDirective {
|
|
|
1811
1077
|
this.footerService.removePortal(this._portal);
|
|
1812
1078
|
}
|
|
1813
1079
|
}
|
|
1814
|
-
static { this.ɵfac =
|
|
1815
|
-
static { this.ɵdir =
|
|
1080
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: FooterDirective, deps: [{ token: FooterService }, { token: TemplateRef }, { token: ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1081
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.4", type: FooterDirective, isStandalone: true, selector: "[rxapFooter]", ngImport: i0 }); }
|
|
1082
|
+
}
|
|
1083
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: FooterDirective, decorators: [{
|
|
1084
|
+
type: Directive,
|
|
1085
|
+
args: [{
|
|
1086
|
+
selector: '[rxapFooter]',
|
|
1087
|
+
standalone: true,
|
|
1088
|
+
}]
|
|
1089
|
+
}], ctorParameters: function () { return [{ type: i1.FooterService, decorators: [{
|
|
1090
|
+
type: Inject,
|
|
1091
|
+
args: [FooterService]
|
|
1092
|
+
}] }, { type: i0.TemplateRef, decorators: [{
|
|
1093
|
+
type: Inject,
|
|
1094
|
+
args: [TemplateRef]
|
|
1095
|
+
}] }, { type: i0.ViewContainerRef, decorators: [{
|
|
1096
|
+
type: Inject,
|
|
1097
|
+
args: [ViewContainerRef]
|
|
1098
|
+
}] }]; } });
|
|
1099
|
+
|
|
1100
|
+
class I18nCheckGuard {
|
|
1101
|
+
constructor(i18nService, userProfileService) {
|
|
1102
|
+
this.i18nService = i18nService;
|
|
1103
|
+
this.userProfileService = userProfileService;
|
|
1104
|
+
}
|
|
1105
|
+
async canActivate() {
|
|
1106
|
+
if (isDevMode()) {
|
|
1107
|
+
return true;
|
|
1108
|
+
}
|
|
1109
|
+
const selectedLanguage = (await this.userProfileService.getLanguage()) ?? 'en';
|
|
1110
|
+
if (this.i18nService.currentLanguage !== selectedLanguage) {
|
|
1111
|
+
this.i18nService.redirect(selectedLanguage);
|
|
1112
|
+
return false;
|
|
1113
|
+
}
|
|
1114
|
+
return true;
|
|
1115
|
+
}
|
|
1116
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: I18nCheckGuard, deps: [{ token: I18nService }, { token: i1$2.RxapUserProfileService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1117
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: I18nCheckGuard, providedIn: 'root' }); }
|
|
1816
1118
|
}
|
|
1817
|
-
(
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
standalone: true
|
|
1822
|
-
}]
|
|
1823
|
-
}], function () { return [{ type: i1.FooterService, decorators: [{
|
|
1824
|
-
type: Inject,
|
|
1825
|
-
args: [FooterService]
|
|
1826
|
-
}] }, { type: i0.TemplateRef, decorators: [{
|
|
1827
|
-
type: Inject,
|
|
1828
|
-
args: [TemplateRef]
|
|
1829
|
-
}] }, { type: i0.ViewContainerRef, decorators: [{
|
|
1830
|
-
type: Inject,
|
|
1831
|
-
args: [ViewContainerRef]
|
|
1832
|
-
}] }]; }, null); })();
|
|
1119
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: I18nCheckGuard, decorators: [{
|
|
1120
|
+
type: Injectable,
|
|
1121
|
+
args: [{ providedIn: 'root' }]
|
|
1122
|
+
}], ctorParameters: function () { return [{ type: I18nService }, { type: i1$2.RxapUserProfileService }]; } });
|
|
1833
1123
|
|
|
1834
1124
|
/**
|
|
1835
1125
|
* Generated bundle index. Do not edit.
|
|
1836
1126
|
*/
|
|
1837
1127
|
|
|
1838
|
-
export { AppsButtonComponent, FooterComponent, FooterDirective, HeaderComponent, IsNavigationDividerItem, IsNavigationInsertItem, IsNavigationItem, LayoutComponent, LayoutComponentService,
|
|
1128
|
+
export { AppUrlService, AppsButtonComponent, FooterComponent, FooterDirective, HeaderComponent, I18nCheckGuard, I18nService, IsNavigationDividerItem, IsNavigationInsertItem, IsNavigationItem, LanguageSelectorService, LayoutComponent, LayoutComponentService, NavigationComponent, NavigationItemComponent, NavigationProgressBarComponent, NavigationService, RXAP_FOOTER_COMPONENT, RXAP_HEADER_COMPONENT, RXAP_LAYOUT_APPS_GRID, RXAP_LOGO_CONFIG, RXAP_NAVIGATION_CONFIG, RXAP_NAVIGATION_CONFIG_INSERTS, ReplaceRouterPathsService, ResetButtonComponent, SidenavComponent, SidenavComponentService, SidenavFooterDirective, SidenavHeaderDirective, SidenavToggleButtonComponent, SignOutComponent, ToggleWindowSidenavButtonComponent, UserProfileIconComponent, VersionComponent, WindowContainerSidenavComponent };
|
|
1839
1129
|
//# sourceMappingURL=rxap-layout.mjs.map
|