@abp/ng.theme.basic 7.2.2 → 7.3.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{esm2020 → esm2022}/abp-ng.theme.basic.mjs +4 -4
- package/esm2022/lib/components/account-layout/account-layout.component.mjs +32 -0
- package/esm2022/lib/components/account-layout/auth-wrapper/auth-wrapper.component.mjs +20 -0
- package/esm2022/lib/components/account-layout/tenant-box/tenant-box.component.mjs +21 -0
- package/esm2022/lib/components/application-layout/application-layout.component.mjs +31 -0
- package/esm2022/lib/components/empty-layout/empty-layout.component.mjs +24 -0
- package/{esm2020 → esm2022}/lib/components/index.mjs +12 -12
- package/esm2022/lib/components/logo/logo.component.mjs +53 -0
- package/esm2022/lib/components/nav-items/current-user.component.mjs +40 -0
- package/esm2022/lib/components/nav-items/languages.component.mjs +108 -0
- package/{esm2020 → esm2022}/lib/components/nav-items/nav-items.component.mjs +20 -19
- package/esm2022/lib/components/page-alert-container/page-alert-container.component.mjs +19 -0
- package/esm2022/lib/components/routes/routes.component.mjs +38 -0
- package/esm2022/lib/components/validation-error/validation-error.component.mjs +45 -0
- package/{esm2020 → esm2022}/lib/constants/styles.mjs +1 -1
- package/{esm2020 → esm2022}/lib/enums/components.mjs +1 -1
- package/{esm2020 → esm2022}/lib/enums/index.mjs +2 -2
- package/{esm2020 → esm2022}/lib/enums/user-menu-items.mjs +1 -1
- package/{esm2020 → esm2022}/lib/handlers/index.mjs +1 -1
- package/esm2022/lib/handlers/lazy-style.handler.mjs +83 -0
- package/{esm2020 → esm2022}/lib/models/index.mjs +1 -1
- package/{esm2020 → esm2022}/lib/models/layout.mjs +1 -1
- package/{esm2020 → esm2022}/lib/providers/index.mjs +3 -3
- package/{esm2020 → esm2022}/lib/providers/nav-item.provider.mjs +28 -28
- package/{esm2020 → esm2022}/lib/providers/styles.provider.mjs +34 -34
- package/{esm2020 → esm2022}/lib/providers/user-menu.provider.mjs +40 -40
- package/esm2022/lib/services/layout.service.mjs +42 -0
- package/esm2022/lib/theme-basic.module.mjs +128 -0
- package/{esm2020 → esm2022}/lib/tokens/index.mjs +1 -1
- package/{esm2020 → esm2022}/lib/tokens/lazy-styles.token.mjs +2 -2
- package/{esm2020 → esm2022}/public-api.mjs +10 -10
- package/{esm2020 → esm2022}/testing/abp-ng.theme.basic-testing.mjs +4 -4
- package/esm2022/testing/lib/theme-basic-testing.module.mjs +39 -0
- package/{esm2020 → esm2022}/testing/public-api.mjs +1 -1
- package/{fesm2015 → fesm2022}/abp-ng.theme.basic-testing.mjs +34 -34
- package/{fesm2015 → fesm2022}/abp-ng.theme.basic-testing.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/abp-ng.theme.basic.mjs +520 -520
- package/{fesm2020 → fesm2022}/abp-ng.theme.basic.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/components/account-layout/account-layout.component.d.ts +13 -13
- package/lib/components/account-layout/auth-wrapper/auth-wrapper.component.d.ts +8 -8
- package/lib/components/account-layout/tenant-box/tenant-box.component.d.ts +8 -8
- package/lib/components/application-layout/application-layout.component.d.ts +12 -12
- package/lib/components/empty-layout/empty-layout.component.d.ts +7 -7
- package/lib/components/index.d.ts +12 -12
- package/lib/components/logo/logo.component.d.ts +9 -9
- package/lib/components/nav-items/current-user.component.d.ts +21 -21
- package/lib/components/nav-items/languages.component.d.ts +16 -16
- package/lib/components/nav-items/nav-items.component.d.ts +10 -10
- package/lib/components/page-alert-container/page-alert-container.component.d.ts +8 -8
- package/lib/components/routes/routes.component.d.ts +18 -18
- package/lib/components/validation-error/validation-error.component.d.ts +9 -9
- package/lib/constants/styles.d.ts +2 -2
- package/lib/enums/components.d.ts +10 -10
- package/lib/enums/index.d.ts +2 -2
- package/lib/enums/user-menu-items.d.ts +4 -4
- package/lib/handlers/index.d.ts +1 -1
- package/lib/handlers/lazy-style.handler.d.ts +23 -23
- package/lib/models/index.d.ts +1 -1
- package/lib/models/layout.d.ts +11 -11
- package/lib/providers/index.d.ts +3 -3
- package/lib/providers/nav-item.provider.d.ts +8 -8
- package/lib/providers/styles.provider.d.ts +8 -8
- package/lib/providers/user-menu.provider.d.ts +8 -8
- package/lib/services/layout.service.d.ts +18 -18
- package/lib/theme-basic.module.d.ts +32 -32
- package/lib/tokens/index.d.ts +1 -1
- package/lib/tokens/lazy-styles.token.d.ts +2 -2
- package/package.json +11 -19
- package/public-api.d.ts +7 -7
- package/testing/index.d.ts +5 -5
- package/testing/lib/theme-basic-testing.module.d.ts +9 -9
- package/testing/public-api.d.ts +1 -1
- package/esm2020/lib/components/account-layout/account-layout.component.mjs +0 -32
- package/esm2020/lib/components/account-layout/auth-wrapper/auth-wrapper.component.mjs +0 -19
- package/esm2020/lib/components/account-layout/tenant-box/tenant-box.component.mjs +0 -20
- package/esm2020/lib/components/application-layout/application-layout.component.mjs +0 -31
- package/esm2020/lib/components/empty-layout/empty-layout.component.mjs +0 -23
- package/esm2020/lib/components/logo/logo.component.mjs +0 -52
- package/esm2020/lib/components/nav-items/current-user.component.mjs +0 -39
- package/esm2020/lib/components/nav-items/languages.component.mjs +0 -107
- package/esm2020/lib/components/page-alert-container/page-alert-container.component.mjs +0 -18
- package/esm2020/lib/components/routes/routes.component.mjs +0 -37
- package/esm2020/lib/components/validation-error/validation-error.component.mjs +0 -44
- package/esm2020/lib/handlers/lazy-style.handler.mjs +0 -82
- package/esm2020/lib/services/layout.service.mjs +0 -41
- package/esm2020/lib/theme-basic.module.mjs +0 -126
- package/esm2020/testing/lib/theme-basic-testing.module.mjs +0 -38
- package/fesm2015/abp-ng.theme.basic.mjs +0 -834
- package/fesm2015/abp-ng.theme.basic.mjs.map +0 -1
- package/fesm2020/abp-ng.theme.basic-testing.mjs +0 -45
- package/fesm2020/abp-ng.theme.basic-testing.mjs.map +0 -1
|
@@ -6,60 +6,59 @@ import { fromEvent } from 'rxjs';
|
|
|
6
6
|
import { debounceTime, map } from 'rxjs/operators';
|
|
7
7
|
import * as i2 from '@angular/common';
|
|
8
8
|
import * as i3 from '@angular/router';
|
|
9
|
-
import * as i5 from '@ng-bootstrap/ng-bootstrap';
|
|
10
|
-
import { NgbCollapseModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';
|
|
11
9
|
import * as i1$1 from '@abp/ng.theme.shared';
|
|
12
10
|
import { slideFromBottom, collapseWithMargin, DocumentDirHandlerService, NavItemsService, UserMenuService, ThemeSharedModule } from '@abp/ng.theme.shared';
|
|
11
|
+
import * as i5 from '@ng-bootstrap/ng-bootstrap';
|
|
12
|
+
import { NgbCollapseModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';
|
|
13
13
|
import * as i1$2 from '@abp/ng.account.core';
|
|
14
14
|
import { TenantBoxService, AuthWrapperService } from '@abp/ng.account.core';
|
|
15
15
|
import * as i3$1 from '@angular/forms';
|
|
16
16
|
import { ValidationErrorComponent as ValidationErrorComponent$1, NgxValidateCoreModule, VALIDATION_ERROR_TEMPLATE, VALIDATION_TARGET_SELECTOR, VALIDATION_INVALID_CLASSES } from '@ngx-validate/core';
|
|
17
17
|
|
|
18
|
-
class LayoutService {
|
|
19
|
-
constructor(subscription, cdRef, routerEvents) {
|
|
20
|
-
this.subscription = subscription;
|
|
21
|
-
this.cdRef = cdRef;
|
|
22
|
-
this.isCollapsed = true;
|
|
23
|
-
this.logoComponentKey = "Theme.LogoComponent" /* eThemeBasicComponents.Logo */;
|
|
24
|
-
this.routesComponentKey = "Theme.RoutesComponent" /* eThemeBasicComponents.Routes */;
|
|
25
|
-
this.navItemsComponentKey = "Theme.NavItemsComponent" /* eThemeBasicComponents.NavItems */;
|
|
26
|
-
subscription.addOne(routerEvents.getNavigationEvents("End"), () => {
|
|
27
|
-
this.isCollapsed = true;
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
checkWindowWidth() {
|
|
31
|
-
const isSmallScreen = window.innerWidth < 992;
|
|
32
|
-
if (isSmallScreen && this.smallScreen === false) {
|
|
33
|
-
this.isCollapsed = false;
|
|
34
|
-
setTimeout(() => {
|
|
35
|
-
this.isCollapsed = true;
|
|
36
|
-
}, 100);
|
|
37
|
-
}
|
|
38
|
-
this.smallScreen = isSmallScreen;
|
|
39
|
-
this.cdRef.detectChanges();
|
|
40
|
-
}
|
|
41
|
-
subscribeWindowSize() {
|
|
42
|
-
this.checkWindowWidth();
|
|
43
|
-
const resize$ = fromEvent(window, 'resize').pipe(debounceTime(150));
|
|
44
|
-
this.subscription.addOne(resize$, () => this.checkWindowWidth());
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
50
|
-
type: Injectable
|
|
18
|
+
class LayoutService {
|
|
19
|
+
constructor(subscription, cdRef, routerEvents) {
|
|
20
|
+
this.subscription = subscription;
|
|
21
|
+
this.cdRef = cdRef;
|
|
22
|
+
this.isCollapsed = true;
|
|
23
|
+
this.logoComponentKey = "Theme.LogoComponent" /* eThemeBasicComponents.Logo */;
|
|
24
|
+
this.routesComponentKey = "Theme.RoutesComponent" /* eThemeBasicComponents.Routes */;
|
|
25
|
+
this.navItemsComponentKey = "Theme.NavItemsComponent" /* eThemeBasicComponents.NavItems */;
|
|
26
|
+
subscription.addOne(routerEvents.getNavigationEvents("End"), () => {
|
|
27
|
+
this.isCollapsed = true;
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
checkWindowWidth() {
|
|
31
|
+
const isSmallScreen = window.innerWidth < 992;
|
|
32
|
+
if (isSmallScreen && this.smallScreen === false) {
|
|
33
|
+
this.isCollapsed = false;
|
|
34
|
+
setTimeout(() => {
|
|
35
|
+
this.isCollapsed = true;
|
|
36
|
+
}, 100);
|
|
37
|
+
}
|
|
38
|
+
this.smallScreen = isSmallScreen;
|
|
39
|
+
this.cdRef.detectChanges();
|
|
40
|
+
}
|
|
41
|
+
subscribeWindowSize() {
|
|
42
|
+
this.checkWindowWidth();
|
|
43
|
+
const resize$ = fromEvent(window, 'resize').pipe(debounceTime(150));
|
|
44
|
+
this.subscription.addOne(resize$, () => this.checkWindowWidth());
|
|
45
|
+
}
|
|
46
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: LayoutService, deps: [{ token: i1.SubscriptionService }, { token: i0.ChangeDetectorRef }, { token: i1.RouterEvents }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
47
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: LayoutService }); }
|
|
48
|
+
}
|
|
49
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: LayoutService, decorators: [{
|
|
50
|
+
type: Injectable
|
|
51
51
|
}], ctorParameters: function () { return [{ type: i1.SubscriptionService }, { type: i0.ChangeDetectorRef }, { type: i1.RouterEvents }]; } });
|
|
52
52
|
|
|
53
|
-
class LogoComponent {
|
|
54
|
-
|
|
55
|
-
this.environment
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
LogoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: LogoComponent, selector: "abp-logo", ngImport: i0, template: `
|
|
53
|
+
class LogoComponent {
|
|
54
|
+
get appInfo() {
|
|
55
|
+
return this.environment.getEnvironment().application;
|
|
56
|
+
}
|
|
57
|
+
constructor(environment) {
|
|
58
|
+
this.environment = environment;
|
|
59
|
+
}
|
|
60
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: LogoComponent, deps: [{ token: i1.EnvironmentService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
61
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: LogoComponent, selector: "abp-logo", ngImport: i0, template: `
|
|
63
62
|
<a class="navbar-brand" routerLink="/">
|
|
64
63
|
<img
|
|
65
64
|
*ngIf="appInfo.logoUrl; else appName"
|
|
@@ -73,11 +72,12 @@ LogoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version:
|
|
|
73
72
|
<ng-template #appName>
|
|
74
73
|
{{ appInfo.name }}
|
|
75
74
|
</ng-template>
|
|
76
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] });
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
75
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
|
|
76
|
+
}
|
|
77
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: LogoComponent, decorators: [{
|
|
78
|
+
type: Component,
|
|
79
|
+
args: [{
|
|
80
|
+
selector: 'abp-logo',
|
|
81
81
|
template: `
|
|
82
82
|
<a class="navbar-brand" routerLink="/">
|
|
83
83
|
<img
|
|
@@ -92,197 +92,196 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
|
|
|
92
92
|
<ng-template #appName>
|
|
93
93
|
{{ appInfo.name }}
|
|
94
94
|
</ng-template>
|
|
95
|
-
`,
|
|
96
|
-
}]
|
|
95
|
+
`,
|
|
96
|
+
}]
|
|
97
97
|
}], ctorParameters: function () { return [{ type: i1.EnvironmentService }]; } });
|
|
98
98
|
|
|
99
|
-
class NavItemsComponent {
|
|
100
|
-
constructor(navItems) {
|
|
101
|
-
this.navItems = navItems;
|
|
102
|
-
this.trackByFn = (_, element) => element.id;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
108
|
-
type: Component,
|
|
109
|
-
args: [{ selector: 'abp-nav-items', template: "<ul class=\"navbar-nav\">\r\n <ng-container *ngFor=\"let item of navItems.items$ | async; trackBy: trackByFn\">\r\n <ng-container *abpVisible=\"!item.visible || item.visible(item)\">\r\n <li class=\"nav-item d-flex align-items-center\" *abpPermission=\"item.requiredPolicy\">\r\n <ng-container \r\n \r\n *ngIf=\"item.component; else htmlTemplate\" \r\n [ngComponentOutlet]=\"item.component\"\r\n [ngComponentOutletInjector]=\"item | toInjector\"\r\n ></ng-container>\r\n \r\n <ng-template #htmlTemplate>\r\n <div [innerHTML]=\"item.html\" (click)=\"item.action ? item.action() : null\"></div>\r\n </ng-template>\r\n </li>\r\n </ng-container>\r\n </ng-container>\r\n</ul>" }]
|
|
99
|
+
class NavItemsComponent {
|
|
100
|
+
constructor(navItems) {
|
|
101
|
+
this.navItems = navItems;
|
|
102
|
+
this.trackByFn = (_, element) => element.id;
|
|
103
|
+
}
|
|
104
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: NavItemsComponent, deps: [{ token: i1$1.NavItemsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
105
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: NavItemsComponent, selector: "abp-nav-items", ngImport: i0, template: "<ul class=\"navbar-nav\">\r\n <ng-container *ngFor=\"let item of navItems.items$ | async; trackBy: trackByFn\">\r\n <ng-container *abpVisible=\"!item.visible || item.visible(item)\">\r\n <li class=\"nav-item d-flex align-items-center\" *abpPermission=\"item.requiredPolicy\">\r\n <ng-container \r\n \r\n *ngIf=\"item.component; else htmlTemplate\" \r\n [ngComponentOutlet]=\"item.component\"\r\n [ngComponentOutletInjector]=\"item | toInjector\"\r\n ></ng-container>\r\n \r\n <ng-template #htmlTemplate>\r\n <div [innerHTML]=\"item.html\" (click)=\"item.action ? item.action() : null\"></div>\r\n </ng-template>\r\n </li>\r\n </ng-container>\r\n </ng-container>\r\n</ul>", dependencies: [{ kind: "directive", type: i2.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission", "abpPermissionRunChangeDetection"] }, { kind: "directive", type: i1$1.AbpVisibleDirective, selector: "[abpVisible]", inputs: ["abpVisible"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.ToInjectorPipe, name: "toInjector" }] }); }
|
|
106
|
+
}
|
|
107
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: NavItemsComponent, decorators: [{
|
|
108
|
+
type: Component,
|
|
109
|
+
args: [{ selector: 'abp-nav-items', template: "<ul class=\"navbar-nav\">\r\n <ng-container *ngFor=\"let item of navItems.items$ | async; trackBy: trackByFn\">\r\n <ng-container *abpVisible=\"!item.visible || item.visible(item)\">\r\n <li class=\"nav-item d-flex align-items-center\" *abpPermission=\"item.requiredPolicy\">\r\n <ng-container \r\n \r\n *ngIf=\"item.component; else htmlTemplate\" \r\n [ngComponentOutlet]=\"item.component\"\r\n [ngComponentOutletInjector]=\"item | toInjector\"\r\n ></ng-container>\r\n \r\n <ng-template #htmlTemplate>\r\n <div [innerHTML]=\"item.html\" (click)=\"item.action ? item.action() : null\"></div>\r\n </ng-template>\r\n </li>\r\n </ng-container>\r\n </ng-container>\r\n</ul>" }]
|
|
110
110
|
}], ctorParameters: function () { return [{ type: i1$1.NavItemsService }]; } });
|
|
111
111
|
|
|
112
|
-
class RoutesComponent {
|
|
113
|
-
constructor(routesService, renderer) {
|
|
114
|
-
this.routesService = routesService;
|
|
115
|
-
this.renderer = renderer;
|
|
116
|
-
this.rootDropdownExpand = {};
|
|
117
|
-
this.trackByFn = (_, item) => item.name;
|
|
118
|
-
}
|
|
119
|
-
isDropdown(node) {
|
|
120
|
-
return !node?.isLeaf || this.routesService.hasChildren(node.name);
|
|
121
|
-
}
|
|
122
|
-
closeDropdown() {
|
|
123
|
-
this.childrenContainers.forEach(({ nativeElement }) => {
|
|
124
|
-
this.renderer.addClass(nativeElement, 'd-none');
|
|
125
|
-
setTimeout(() => this.renderer.removeClass(nativeElement, 'd-none'), 0);
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
132
|
-
type: Component,
|
|
133
|
-
args: [{ selector: 'abp-routes', template: "<ul class=\"navbar-nav\">\r\n <ng-container\r\n *ngFor=\"let route of routesService.visible$ | async; trackBy: trackByFn\"\r\n [ngTemplateOutlet]=\"isDropdown(route) ? dropdownLink : defaultLink\"\r\n [ngTemplateOutletContext]=\"{ $implicit: route }\"\r\n >\r\n </ng-container>\r\n\r\n <ng-template #defaultLink let-route>\r\n <li class=\"nav-item\" *abpPermission=\"route.requiredPolicy\">\r\n <a class=\"nav-link\" [routerLink]=\"[route.path]\"\r\n ><i *ngIf=\"route.iconClass\" [ngClass]=\"route.iconClass\"></i>\r\n {{ route.name | abpLocalization }}</a\r\n >\r\n </li>\r\n </ng-template>\r\n\r\n <ng-template #dropdownLink let-route>\r\n <ng-container *ngIf=\"route.children?.length\">\r\n <li\r\n class=\"nav-item dropdown\"\r\n display=\"static\"\r\n *abpPermission=\"route.requiredPolicy\"\r\n (click)=\"\r\n rootDropdownExpand[route.name]\r\n ? (rootDropdownExpand[route.name] = false)\r\n : (rootDropdownExpand[route.name] = true)\r\n \"\r\n >\r\n <a\r\n class=\"nav-link dropdown-toggle\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n aria-expanded=\"false\"\r\n href=\"javascript:void(0)\"\r\n >\r\n <i *ngIf=\"route.iconClass\" [ngClass]=\"route.iconClass\"></i>\r\n {{ route.name | abpLocalization }}\r\n </a>\r\n <div\r\n #routeContainer\r\n class=\"dropdown-menu border-0 shadow-sm\"\r\n (click)=\"$event.preventDefault(); $event.stopPropagation()\"\r\n [class.d-block]=\"smallScreen && rootDropdownExpand[route.name]\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"forTemplate; context: { $implicit: route }\"\r\n ></ng-container>\r\n </div>\r\n </li>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template #forTemplate let-route>\r\n <ng-container *ngFor=\"let child of route.children\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"child.children?.length ? dropdownChild : defaultChild\"\r\n [ngTemplateOutletContext]=\"{ $implicit: child }\"\r\n ></ng-template>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template #defaultChild let-child>\r\n <ng-container *ngIf=\"child.path\">\r\n <div class=\"dropdown-submenu\" *abpPermission=\"child.requiredPolicy\">\r\n <a class=\"dropdown-item\" [routerLink]=\"[child.path]\" (click)=\"closeDropdown()\">\r\n <i *ngIf=\"child.iconClass\" [ngClass]=\"child.iconClass\"></i>\r\n {{ child.name | abpLocalization }}</a\r\n >\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template #dropdownChild let-child>\r\n <div\r\n class=\"dropdown-submenu\"\r\n ngbDropdown\r\n #dropdownSubmenu=\"ngbDropdown\"\r\n placement=\"right-top\"\r\n [autoClose]=\"true\"\r\n *abpPermission=\"child.requiredPolicy\"\r\n >\r\n <div ngbDropdownToggle [class.dropdown-toggle]=\"false\">\r\n <a\r\n abpEllipsis=\"210px\"\r\n [abpEllipsisEnabled]=\"!smallScreen\"\r\n role=\"button\"\r\n class=\"btn d-block text-start dropdown-toggle\"\r\n >\r\n <i *ngIf=\"child.iconClass\" [ngClass]=\"child.iconClass\"></i>\r\n {{ child.name | abpLocalization }}\r\n </a>\r\n </div>\r\n <div\r\n #childrenContainer\r\n class=\"dropdown-menu dropdown-menu-start border-0 shadow-sm\"\r\n [class.d-block]=\"smallScreen && dropdownSubmenu.isOpen()\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"forTemplate; context: { $implicit: child }\"></ng-container>\r\n </div>\r\n </div>\r\n </ng-template>\r\n</ul>\r\n" }]
|
|
134
|
-
}], ctorParameters: function () { return [{ type: i1.RoutesService }, { type: i0.Renderer2 }]; }, propDecorators: { smallScreen: [{
|
|
135
|
-
type: Input
|
|
136
|
-
}], childrenContainers: [{
|
|
137
|
-
type: ViewChildren,
|
|
138
|
-
args: ['childrenContainer']
|
|
112
|
+
class RoutesComponent {
|
|
113
|
+
constructor(routesService, renderer) {
|
|
114
|
+
this.routesService = routesService;
|
|
115
|
+
this.renderer = renderer;
|
|
116
|
+
this.rootDropdownExpand = {};
|
|
117
|
+
this.trackByFn = (_, item) => item.name;
|
|
118
|
+
}
|
|
119
|
+
isDropdown(node) {
|
|
120
|
+
return !node?.isLeaf || this.routesService.hasChildren(node.name);
|
|
121
|
+
}
|
|
122
|
+
closeDropdown() {
|
|
123
|
+
this.childrenContainers.forEach(({ nativeElement }) => {
|
|
124
|
+
this.renderer.addClass(nativeElement, 'd-none');
|
|
125
|
+
setTimeout(() => this.renderer.removeClass(nativeElement, 'd-none'), 0);
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RoutesComponent, deps: [{ token: i1.RoutesService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
129
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: RoutesComponent, selector: "abp-routes", inputs: { smallScreen: "smallScreen" }, viewQueries: [{ propertyName: "childrenContainers", predicate: ["childrenContainer"], descendants: true }], ngImport: i0, template: "<ul class=\"navbar-nav\">\r\n <ng-container\r\n *ngFor=\"let route of routesService.visible$ | async; trackBy: trackByFn\"\r\n [ngTemplateOutlet]=\"isDropdown(route) ? dropdownLink : defaultLink\"\r\n [ngTemplateOutletContext]=\"{ $implicit: route }\"\r\n >\r\n </ng-container>\r\n\r\n <ng-template #defaultLink let-route>\r\n <li class=\"nav-item\" *abpPermission=\"route.requiredPolicy\">\r\n <a class=\"nav-link\" [routerLink]=\"[route.path]\"\r\n ><i *ngIf=\"route.iconClass\" [ngClass]=\"route.iconClass\"></i>\r\n {{ route.name | abpLocalization }}</a\r\n >\r\n </li>\r\n </ng-template>\r\n\r\n <ng-template #dropdownLink let-route>\r\n <ng-container *ngIf=\"route.children?.length\">\r\n <li\r\n class=\"nav-item dropdown\"\r\n display=\"static\"\r\n *abpPermission=\"route.requiredPolicy\"\r\n (click)=\"\r\n rootDropdownExpand[route.name]\r\n ? (rootDropdownExpand[route.name] = false)\r\n : (rootDropdownExpand[route.name] = true)\r\n \"\r\n >\r\n <a\r\n class=\"nav-link dropdown-toggle\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n aria-expanded=\"false\"\r\n href=\"javascript:void(0)\"\r\n >\r\n <i *ngIf=\"route.iconClass\" [ngClass]=\"route.iconClass\"></i>\r\n {{ route.name | abpLocalization }}\r\n </a>\r\n <div\r\n #routeContainer\r\n class=\"dropdown-menu border-0 shadow-sm\"\r\n (click)=\"$event.preventDefault(); $event.stopPropagation()\"\r\n [class.d-block]=\"smallScreen && rootDropdownExpand[route.name]\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"forTemplate; context: { $implicit: route }\"\r\n ></ng-container>\r\n </div>\r\n </li>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template #forTemplate let-route>\r\n <ng-container *ngFor=\"let child of route.children\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"child.children?.length ? dropdownChild : defaultChild\"\r\n [ngTemplateOutletContext]=\"{ $implicit: child }\"\r\n ></ng-template>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template #defaultChild let-child>\r\n <ng-container *ngIf=\"child.path\">\r\n <div class=\"dropdown-submenu\" *abpPermission=\"child.requiredPolicy\">\r\n <a class=\"dropdown-item\" [routerLink]=\"[child.path]\" (click)=\"closeDropdown()\">\r\n <i *ngIf=\"child.iconClass\" [ngClass]=\"child.iconClass\"></i>\r\n {{ child.name | abpLocalization }}</a\r\n >\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template #dropdownChild let-child>\r\n <div\r\n class=\"dropdown-submenu\"\r\n ngbDropdown\r\n #dropdownSubmenu=\"ngbDropdown\"\r\n placement=\"right-top\"\r\n [autoClose]=\"true\"\r\n *abpPermission=\"child.requiredPolicy\"\r\n >\r\n <div ngbDropdownToggle [class.dropdown-toggle]=\"false\">\r\n <a\r\n abpEllipsis=\"210px\"\r\n [abpEllipsisEnabled]=\"!smallScreen\"\r\n role=\"button\"\r\n class=\"btn d-block text-start dropdown-toggle\"\r\n >\r\n <i *ngIf=\"child.iconClass\" [ngClass]=\"child.iconClass\"></i>\r\n {{ child.name | abpLocalization }}\r\n </a>\r\n </div>\r\n <div\r\n #childrenContainer\r\n class=\"dropdown-menu dropdown-menu-start border-0 shadow-sm\"\r\n [class.d-block]=\"smallScreen && dropdownSubmenu.isOpen()\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"forTemplate; context: { $implicit: child }\"></ng-container>\r\n </div>\r\n </div>\r\n </ng-template>\r\n</ul>\r\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1.PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission", "abpPermissionRunChangeDetection"] }, { kind: "directive", type: i1$1.EllipsisDirective, selector: "[abpEllipsis]", inputs: ["abpEllipsis", "title", "abpEllipsisEnabled"] }, { kind: "directive", type: i5.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i5.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }] }); }
|
|
130
|
+
}
|
|
131
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RoutesComponent, decorators: [{
|
|
132
|
+
type: Component,
|
|
133
|
+
args: [{ selector: 'abp-routes', template: "<ul class=\"navbar-nav\">\r\n <ng-container\r\n *ngFor=\"let route of routesService.visible$ | async; trackBy: trackByFn\"\r\n [ngTemplateOutlet]=\"isDropdown(route) ? dropdownLink : defaultLink\"\r\n [ngTemplateOutletContext]=\"{ $implicit: route }\"\r\n >\r\n </ng-container>\r\n\r\n <ng-template #defaultLink let-route>\r\n <li class=\"nav-item\" *abpPermission=\"route.requiredPolicy\">\r\n <a class=\"nav-link\" [routerLink]=\"[route.path]\"\r\n ><i *ngIf=\"route.iconClass\" [ngClass]=\"route.iconClass\"></i>\r\n {{ route.name | abpLocalization }}</a\r\n >\r\n </li>\r\n </ng-template>\r\n\r\n <ng-template #dropdownLink let-route>\r\n <ng-container *ngIf=\"route.children?.length\">\r\n <li\r\n class=\"nav-item dropdown\"\r\n display=\"static\"\r\n *abpPermission=\"route.requiredPolicy\"\r\n (click)=\"\r\n rootDropdownExpand[route.name]\r\n ? (rootDropdownExpand[route.name] = false)\r\n : (rootDropdownExpand[route.name] = true)\r\n \"\r\n >\r\n <a\r\n class=\"nav-link dropdown-toggle\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n aria-expanded=\"false\"\r\n href=\"javascript:void(0)\"\r\n >\r\n <i *ngIf=\"route.iconClass\" [ngClass]=\"route.iconClass\"></i>\r\n {{ route.name | abpLocalization }}\r\n </a>\r\n <div\r\n #routeContainer\r\n class=\"dropdown-menu border-0 shadow-sm\"\r\n (click)=\"$event.preventDefault(); $event.stopPropagation()\"\r\n [class.d-block]=\"smallScreen && rootDropdownExpand[route.name]\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"forTemplate; context: { $implicit: route }\"\r\n ></ng-container>\r\n </div>\r\n </li>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template #forTemplate let-route>\r\n <ng-container *ngFor=\"let child of route.children\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"child.children?.length ? dropdownChild : defaultChild\"\r\n [ngTemplateOutletContext]=\"{ $implicit: child }\"\r\n ></ng-template>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template #defaultChild let-child>\r\n <ng-container *ngIf=\"child.path\">\r\n <div class=\"dropdown-submenu\" *abpPermission=\"child.requiredPolicy\">\r\n <a class=\"dropdown-item\" [routerLink]=\"[child.path]\" (click)=\"closeDropdown()\">\r\n <i *ngIf=\"child.iconClass\" [ngClass]=\"child.iconClass\"></i>\r\n {{ child.name | abpLocalization }}</a\r\n >\r\n </div>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template #dropdownChild let-child>\r\n <div\r\n class=\"dropdown-submenu\"\r\n ngbDropdown\r\n #dropdownSubmenu=\"ngbDropdown\"\r\n placement=\"right-top\"\r\n [autoClose]=\"true\"\r\n *abpPermission=\"child.requiredPolicy\"\r\n >\r\n <div ngbDropdownToggle [class.dropdown-toggle]=\"false\">\r\n <a\r\n abpEllipsis=\"210px\"\r\n [abpEllipsisEnabled]=\"!smallScreen\"\r\n role=\"button\"\r\n class=\"btn d-block text-start dropdown-toggle\"\r\n >\r\n <i *ngIf=\"child.iconClass\" [ngClass]=\"child.iconClass\"></i>\r\n {{ child.name | abpLocalization }}\r\n </a>\r\n </div>\r\n <div\r\n #childrenContainer\r\n class=\"dropdown-menu dropdown-menu-start border-0 shadow-sm\"\r\n [class.d-block]=\"smallScreen && dropdownSubmenu.isOpen()\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"forTemplate; context: { $implicit: child }\"></ng-container>\r\n </div>\r\n </div>\r\n </ng-template>\r\n</ul>\r\n" }]
|
|
134
|
+
}], ctorParameters: function () { return [{ type: i1.RoutesService }, { type: i0.Renderer2 }]; }, propDecorators: { smallScreen: [{
|
|
135
|
+
type: Input
|
|
136
|
+
}], childrenContainers: [{
|
|
137
|
+
type: ViewChildren,
|
|
138
|
+
args: ['childrenContainer']
|
|
139
139
|
}] } });
|
|
140
140
|
|
|
141
|
-
class PageAlertContainerComponent {
|
|
142
|
-
constructor(service) {
|
|
143
|
-
this.service = service;
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
149
|
-
type: Component,
|
|
150
|
-
args: [{ selector: 'abp-page-alert-container', encapsulation: ViewEncapsulation.None, template: "<ng-container *ngFor=\"let alert of service.alerts$ | async; let i = index\">\r\n <div\r\n class=\"alert alert-{{ alert.type }} fade show\"\r\n [ngClass]=\"{ 'alert-dismissible fade show': alert.dismissible }\"\r\n role=\"alert\"\r\n >\r\n <h4\r\n class=\"alert-heading\"\r\n *ngIf=\"alert.title\"\r\n [innerHTML]=\"alert.title | abpSafeHtml | abpLocalization: alert.titleLocalizationParams\"\r\n ></h4>\r\n <span\r\n [innerHTML]=\"alert.message | abpSafeHtml | abpLocalization: alert.messageLocalizationParams\"\r\n ></span>\r\n <button\r\n *ngIf=\"alert.dismissible\"\r\n type=\"button\"\r\n class=\"btn-close\"\r\n data-dismiss=\"alert\"\r\n aria-label=\"Close\"\r\n (click)=\"service.remove(i)\"\r\n ></button>\r\n </div>\r\n</ng-container>\r\n" }]
|
|
141
|
+
class PageAlertContainerComponent {
|
|
142
|
+
constructor(service) {
|
|
143
|
+
this.service = service;
|
|
144
|
+
}
|
|
145
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: PageAlertContainerComponent, deps: [{ token: i1$1.PageAlertService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
146
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: PageAlertContainerComponent, selector: "abp-page-alert-container", ngImport: i0, template: "<ng-container *ngFor=\"let alert of service.alerts$ | async; let i = index\">\r\n <div\r\n class=\"alert alert-{{ alert.type }} fade show\"\r\n [ngClass]=\"{ 'alert-dismissible fade show': alert.dismissible }\"\r\n role=\"alert\"\r\n >\r\n <h4\r\n class=\"alert-heading\"\r\n *ngIf=\"alert.title\"\r\n [innerHTML]=\"alert.title | abpSafeHtml | abpLocalization: alert.titleLocalizationParams\"\r\n ></h4>\r\n <span\r\n [innerHTML]=\"alert.message | abpSafeHtml | abpLocalization: alert.messageLocalizationParams\"\r\n ></span>\r\n <button\r\n *ngIf=\"alert.dismissible\"\r\n type=\"button\"\r\n class=\"btn-close\"\r\n data-dismiss=\"alert\"\r\n aria-label=\"Close\"\r\n (click)=\"service.remove(i)\"\r\n ></button>\r\n </div>\r\n</ng-container>\r\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }, { kind: "pipe", type: i1.SafeHtmlPipe, name: "abpSafeHtml" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
147
|
+
}
|
|
148
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: PageAlertContainerComponent, decorators: [{
|
|
149
|
+
type: Component,
|
|
150
|
+
args: [{ selector: 'abp-page-alert-container', encapsulation: ViewEncapsulation.None, template: "<ng-container *ngFor=\"let alert of service.alerts$ | async; let i = index\">\r\n <div\r\n class=\"alert alert-{{ alert.type }} fade show\"\r\n [ngClass]=\"{ 'alert-dismissible fade show': alert.dismissible }\"\r\n role=\"alert\"\r\n >\r\n <h4\r\n class=\"alert-heading\"\r\n *ngIf=\"alert.title\"\r\n [innerHTML]=\"alert.title | abpSafeHtml | abpLocalization: alert.titleLocalizationParams\"\r\n ></h4>\r\n <span\r\n [innerHTML]=\"alert.message | abpSafeHtml | abpLocalization: alert.messageLocalizationParams\"\r\n ></span>\r\n <button\r\n *ngIf=\"alert.dismissible\"\r\n type=\"button\"\r\n class=\"btn-close\"\r\n data-dismiss=\"alert\"\r\n aria-label=\"Close\"\r\n (click)=\"service.remove(i)\"\r\n ></button>\r\n </div>\r\n</ng-container>\r\n" }]
|
|
151
151
|
}], ctorParameters: function () { return [{ type: i1$1.PageAlertService }]; } });
|
|
152
152
|
|
|
153
|
-
class TenantBoxComponent {
|
|
154
|
-
constructor(service) {
|
|
155
|
-
this.service = service;
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
161
|
-
type: Component,
|
|
162
|
-
args: [{ selector: 'abp-tenant-box', providers: [TenantBoxService], template: "<ng-container *ngIf=\"(service.currentTenant$ | async) || { name: '' } as currentTenant\">\r\n <div class=\"card shadow-sm rounded mb-3\">\r\n <div class=\"card-body px-5\">\r\n <div class=\"row\">\r\n <div class=\"col\">\r\n <span style=\"font-size: 0.8em\" class=\"text-uppercase text-muted\">{{\r\n 'AbpUiMultiTenancy::Tenant' | abpLocalization\r\n }}</span\r\n ><br />\r\n <h6 class=\"m-0 d-inline-block\">\r\n <i>{{ currentTenant.name || ('AbpUiMultiTenancy::NotSelected' | abpLocalization) }}</i>\r\n </h6>\r\n </div>\r\n <div class=\"col-auto\">\r\n <a\r\n id=\"AbpTenantSwitchLink\"\r\n href=\"javascript:void(0);\"\r\n class=\"btn btn-sm mt-3 btn-outline-primary\"\r\n (click)=\"service.onSwitch()\"\r\n >{{ 'AbpUiMultiTenancy::Switch' | abpLocalization }}</a\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <abp-modal [(visible)]=\"service.isModalVisible\" [busy]=\"service.modalBusy\">\r\n <ng-template #abpHeader>\r\n <h5>Switch Tenant</h5>\r\n </ng-template>\r\n <ng-template #abpBody>\r\n <form (ngSubmit)=\"service.save()\">\r\n <div class=\"mt-2\">\r\n <div class=\"mb-3 form-group\">\r\n <label for=\"name\" class=\"form-label\">{{\r\n 'AbpUiMultiTenancy::Name' | abpLocalization\r\n }}</label>\r\n <input\r\n [(ngModel)]=\"service.name\"\r\n type=\"text\"\r\n id=\"name\"\r\n name=\"tenant\"\r\n class=\"form-control\"\r\n autofocus\r\n />\r\n </div>\r\n <p>{{ 'AbpUiMultiTenancy::SwitchTenantHint' | abpLocalization }}</p>\r\n </div>\r\n </form>\r\n </ng-template>\r\n <ng-template #abpFooter>\r\n <button abpClose type=\"button\" class=\"btn btn-secondary\">\r\n {{ 'AbpTenantManagement::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button\r\n type=\"abp-button\"\r\n iconClass=\"fa fa-check\"\r\n (click)=\"service.save()\"\r\n [disabled]=\"currentTenant?.name === service.name\"\r\n >\r\n <span>{{ 'AbpTenantManagement::Save' | abpLocalization }}</span>\r\n </abp-button>\r\n </ng-template>\r\n </abp-modal>\r\n</ng-container>\r\n" }]
|
|
153
|
+
class TenantBoxComponent {
|
|
154
|
+
constructor(service) {
|
|
155
|
+
this.service = service;
|
|
156
|
+
}
|
|
157
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: TenantBoxComponent, deps: [{ token: i1$2.TenantBoxService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
158
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: TenantBoxComponent, selector: "abp-tenant-box", providers: [TenantBoxService], ngImport: i0, template: "<ng-container *ngIf=\"(service.currentTenant$ | async) || { name: '' } as currentTenant\">\r\n <div class=\"card shadow-sm rounded mb-3\">\r\n <div class=\"card-body px-5\">\r\n <div class=\"row\">\r\n <div class=\"col\">\r\n <span style=\"font-size: 0.8em\" class=\"text-uppercase text-muted\">{{\r\n 'AbpUiMultiTenancy::Tenant' | abpLocalization\r\n }}</span\r\n ><br />\r\n <h6 class=\"m-0 d-inline-block\">\r\n <i>{{ currentTenant.name || ('AbpUiMultiTenancy::NotSelected' | abpLocalization) }}</i>\r\n </h6>\r\n </div>\r\n <div class=\"col-auto\">\r\n <a\r\n id=\"AbpTenantSwitchLink\"\r\n href=\"javascript:void(0);\"\r\n class=\"btn btn-sm mt-3 btn-outline-primary\"\r\n (click)=\"service.onSwitch()\"\r\n >{{ 'AbpUiMultiTenancy::Switch' | abpLocalization }}</a\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <abp-modal [(visible)]=\"service.isModalVisible\" [busy]=\"service.modalBusy\">\r\n <ng-template #abpHeader>\r\n <h5>Switch Tenant</h5>\r\n </ng-template>\r\n <ng-template #abpBody>\r\n <form (ngSubmit)=\"service.save()\">\r\n <div class=\"mt-2\">\r\n <div class=\"mb-3 form-group\">\r\n <label for=\"name\" class=\"form-label\">{{\r\n 'AbpUiMultiTenancy::Name' | abpLocalization\r\n }}</label>\r\n <input\r\n [(ngModel)]=\"service.name\"\r\n type=\"text\"\r\n id=\"name\"\r\n name=\"tenant\"\r\n class=\"form-control\"\r\n autofocus\r\n />\r\n </div>\r\n <p>{{ 'AbpUiMultiTenancy::SwitchTenantHint' | abpLocalization }}</p>\r\n </div>\r\n </form>\r\n </ng-template>\r\n <ng-template #abpFooter>\r\n <button abpClose type=\"button\" class=\"btn btn-secondary\">\r\n {{ 'AbpTenantManagement::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button\r\n type=\"abp-button\"\r\n iconClass=\"fa fa-check\"\r\n (click)=\"service.save()\"\r\n [disabled]=\"currentTenant?.name === service.name\"\r\n >\r\n <span>{{ 'AbpTenantManagement::Save' | abpLocalization }}</span>\r\n </abp-button>\r\n </ng-template>\r\n </abp-modal>\r\n</ng-container>\r\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3$1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.AutofocusDirective, selector: "[autofocus]", inputs: ["autofocus"] }, { kind: "component", type: i1$1.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "component", type: i1$1.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "directive", type: i1$1.ModalCloseDirective, selector: "[abpClose]" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }] }); }
|
|
159
|
+
}
|
|
160
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: TenantBoxComponent, decorators: [{
|
|
161
|
+
type: Component,
|
|
162
|
+
args: [{ selector: 'abp-tenant-box', providers: [TenantBoxService], template: "<ng-container *ngIf=\"(service.currentTenant$ | async) || { name: '' } as currentTenant\">\r\n <div class=\"card shadow-sm rounded mb-3\">\r\n <div class=\"card-body px-5\">\r\n <div class=\"row\">\r\n <div class=\"col\">\r\n <span style=\"font-size: 0.8em\" class=\"text-uppercase text-muted\">{{\r\n 'AbpUiMultiTenancy::Tenant' | abpLocalization\r\n }}</span\r\n ><br />\r\n <h6 class=\"m-0 d-inline-block\">\r\n <i>{{ currentTenant.name || ('AbpUiMultiTenancy::NotSelected' | abpLocalization) }}</i>\r\n </h6>\r\n </div>\r\n <div class=\"col-auto\">\r\n <a\r\n id=\"AbpTenantSwitchLink\"\r\n href=\"javascript:void(0);\"\r\n class=\"btn btn-sm mt-3 btn-outline-primary\"\r\n (click)=\"service.onSwitch()\"\r\n >{{ 'AbpUiMultiTenancy::Switch' | abpLocalization }}</a\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <abp-modal [(visible)]=\"service.isModalVisible\" [busy]=\"service.modalBusy\">\r\n <ng-template #abpHeader>\r\n <h5>Switch Tenant</h5>\r\n </ng-template>\r\n <ng-template #abpBody>\r\n <form (ngSubmit)=\"service.save()\">\r\n <div class=\"mt-2\">\r\n <div class=\"mb-3 form-group\">\r\n <label for=\"name\" class=\"form-label\">{{\r\n 'AbpUiMultiTenancy::Name' | abpLocalization\r\n }}</label>\r\n <input\r\n [(ngModel)]=\"service.name\"\r\n type=\"text\"\r\n id=\"name\"\r\n name=\"tenant\"\r\n class=\"form-control\"\r\n autofocus\r\n />\r\n </div>\r\n <p>{{ 'AbpUiMultiTenancy::SwitchTenantHint' | abpLocalization }}</p>\r\n </div>\r\n </form>\r\n </ng-template>\r\n <ng-template #abpFooter>\r\n <button abpClose type=\"button\" class=\"btn btn-secondary\">\r\n {{ 'AbpTenantManagement::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button\r\n type=\"abp-button\"\r\n iconClass=\"fa fa-check\"\r\n (click)=\"service.save()\"\r\n [disabled]=\"currentTenant?.name === service.name\"\r\n >\r\n <span>{{ 'AbpTenantManagement::Save' | abpLocalization }}</span>\r\n </abp-button>\r\n </ng-template>\r\n </abp-modal>\r\n</ng-container>\r\n" }]
|
|
163
163
|
}], ctorParameters: function () { return [{ type: i1$2.TenantBoxService }]; } });
|
|
164
164
|
|
|
165
|
-
class AuthWrapperComponent {
|
|
166
|
-
constructor(service) {
|
|
167
|
-
this.service = service;
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
173
|
-
type: Component,
|
|
174
|
-
args: [{ selector: 'abp-auth-wrapper', providers: [AuthWrapperService], template: "<div class=\"row\">\r\n <div class=\"mx-auto col col-md-5\">\r\n <ng-container *ngIf=\"(service.isMultiTenancyEnabled$ | async) && service.isTenantBoxVisible\">\r\n <abp-tenant-box\r\n *abpReplaceableTemplate=\"{ componentKey: service.tenantBoxKey }\"\r\n ></abp-tenant-box>\r\n </ng-container>\r\n\r\n <div class=\"abp-account-container\">\r\n <div\r\n *ngIf=\"service.enableLocalLogin$ | async; else disableLocalLoginTemplate\"\r\n class=\"card mt-3 shadow-sm rounded\"\r\n >\r\n <div class=\"card-body p-5\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #disableLocalLoginTemplate>\r\n <div class=\"alert alert-warning\">\r\n <strong>{{ 'AbpAccount::InvalidLoginRequest' | abpLocalization }}</strong>\r\n {{ 'AbpAccount::ThereAreNoLoginSchemesConfiguredForThisClient' | abpLocalization }}\r\n </div>\r\n</ng-template>\r\n" }]
|
|
165
|
+
class AuthWrapperComponent {
|
|
166
|
+
constructor(service) {
|
|
167
|
+
this.service = service;
|
|
168
|
+
}
|
|
169
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AuthWrapperComponent, deps: [{ token: i1$2.AuthWrapperService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
170
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: AuthWrapperComponent, selector: "abp-auth-wrapper", providers: [AuthWrapperService], ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"mx-auto col col-md-5\">\r\n <ng-container *ngIf=\"(service.isMultiTenancyEnabled$ | async) && service.isTenantBoxVisible\">\r\n <abp-tenant-box\r\n *abpReplaceableTemplate=\"{ componentKey: service.tenantBoxKey }\"\r\n ></abp-tenant-box>\r\n </ng-container>\r\n\r\n <div class=\"abp-account-container\">\r\n <div\r\n *ngIf=\"service.enableLocalLogin$ | async; else disableLocalLoginTemplate\"\r\n class=\"card mt-3 shadow-sm rounded\"\r\n >\r\n <div class=\"card-body p-5\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #disableLocalLoginTemplate>\r\n <div class=\"alert alert-warning\">\r\n <strong>{{ 'AbpAccount::InvalidLoginRequest' | abpLocalization }}</strong>\r\n {{ 'AbpAccount::ThereAreNoLoginSchemesConfiguredForThisClient' | abpLocalization }}\r\n </div>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { kind: "component", type: TenantBoxComponent, selector: "abp-tenant-box" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }] }); }
|
|
171
|
+
}
|
|
172
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AuthWrapperComponent, decorators: [{
|
|
173
|
+
type: Component,
|
|
174
|
+
args: [{ selector: 'abp-auth-wrapper', providers: [AuthWrapperService], template: "<div class=\"row\">\r\n <div class=\"mx-auto col col-md-5\">\r\n <ng-container *ngIf=\"(service.isMultiTenancyEnabled$ | async) && service.isTenantBoxVisible\">\r\n <abp-tenant-box\r\n *abpReplaceableTemplate=\"{ componentKey: service.tenantBoxKey }\"\r\n ></abp-tenant-box>\r\n </ng-container>\r\n\r\n <div class=\"abp-account-container\">\r\n <div\r\n *ngIf=\"service.enableLocalLogin$ | async; else disableLocalLoginTemplate\"\r\n class=\"card mt-3 shadow-sm rounded\"\r\n >\r\n <div class=\"card-body p-5\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #disableLocalLoginTemplate>\r\n <div class=\"alert alert-warning\">\r\n <strong>{{ 'AbpAccount::InvalidLoginRequest' | abpLocalization }}</strong>\r\n {{ 'AbpAccount::ThereAreNoLoginSchemesConfiguredForThisClient' | abpLocalization }}\r\n </div>\r\n</ng-template>\r\n" }]
|
|
175
175
|
}], ctorParameters: function () { return [{ type: i1$2.AuthWrapperService }]; } });
|
|
176
176
|
|
|
177
|
-
class AccountLayoutComponent {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
191
|
-
type: Component,
|
|
192
|
-
args: [{ selector: 'abp-layout-account', providers: [LayoutService, SubscriptionService], template: "<nav\r\n class=\"navbar navbar-expand-lg navbar-dark bg-dark shadow-sm flex-column flex-md-row mb-4\"\r\n id=\"main-navbar\"\r\n style=\"min-height: 4rem\"\r\n>\r\n <div class=\"container\">\r\n <abp-logo *abpReplaceableTemplate=\"{ componentKey: service.logoComponentKey }\"></abp-logo>\r\n <button\r\n class=\"navbar-toggler\"\r\n type=\"button\"\r\n [attr.aria-expanded]=\"!service.isCollapsed\"\r\n (click)=\"service.isCollapsed = !service.isCollapsed\"\r\n >\r\n <span class=\"navbar-toggler-icon\"></span>\r\n </button>\r\n <div\r\n class=\"navbar-collapse\"\r\n [class.overflow-hidden]=\"service.smallScreen\"\r\n id=\"main-navbar-collapse\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"!service.smallScreen ? navigations : null\"></ng-container>\r\n\r\n <div\r\n *ngIf=\"service.smallScreen\"\r\n [@collapseWithMargin]=\"service.isCollapsed ? 'collapsed' : 'expanded'\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"navigations\"></ng-container>\r\n </div>\r\n\r\n <ng-template #navigations>\r\n <abp-routes\r\n *abpReplaceableTemplate=\"{\r\n componentKey: service.routesComponentKey,\r\n inputs: {\r\n smallScreen: { value: service.smallScreen }\r\n }\r\n }\"\r\n class=\"mx-auto\"\r\n [smallScreen]=\"service.smallScreen\"\r\n ></abp-routes>\r\n\r\n <abp-nav-items\r\n *abpReplaceableTemplate=\"{\r\n componentKey: service.navItemsComponentKey\r\n }\"\r\n ></abp-nav-items>\r\n </ng-template>\r\n </div>\r\n </div>\r\n</nav>\r\n\r\n<!-- [@slideFromBottom]=\"outlet.isActivated && outlet.activatedRoute?.routeConfig?.path\" TODO: throws ExpressionChangedAfterItHasBeenCheck when animation is active. It should be fixed -->\r\n<div class=\"container\">\r\n <abp-page-alert-container></abp-page-alert-container>\r\n <abp-auth-wrapper\r\n *abpReplaceableTemplate=\"{\r\n componentKey: authWrapperKey\r\n }\"\r\n >\r\n <router-outlet #outlet=\"outlet\"></router-outlet>\r\n </abp-auth-wrapper>\r\n</div>\r\n" }]
|
|
177
|
+
class AccountLayoutComponent {
|
|
178
|
+
// required for dynamic component
|
|
179
|
+
static { this.type = "account" /* eLayoutType.account */; }
|
|
180
|
+
constructor(service) {
|
|
181
|
+
this.service = service;
|
|
182
|
+
this.authWrapperKey = 'Account.AuthWrapperComponent';
|
|
183
|
+
}
|
|
184
|
+
ngAfterViewInit() {
|
|
185
|
+
this.service.subscribeWindowSize();
|
|
186
|
+
}
|
|
187
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AccountLayoutComponent, deps: [{ token: LayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
188
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: AccountLayoutComponent, selector: "abp-layout-account", providers: [LayoutService, SubscriptionService], ngImport: i0, template: "<nav\r\n class=\"navbar navbar-expand-lg navbar-dark bg-dark shadow-sm flex-column flex-md-row mb-4\"\r\n id=\"main-navbar\"\r\n style=\"min-height: 4rem\"\r\n>\r\n <div class=\"container\">\r\n <abp-logo *abpReplaceableTemplate=\"{ componentKey: service.logoComponentKey }\"></abp-logo>\r\n <button\r\n class=\"navbar-toggler\"\r\n type=\"button\"\r\n [attr.aria-expanded]=\"!service.isCollapsed\"\r\n (click)=\"service.isCollapsed = !service.isCollapsed\"\r\n >\r\n <span class=\"navbar-toggler-icon\"></span>\r\n </button>\r\n <div\r\n class=\"navbar-collapse\"\r\n [class.overflow-hidden]=\"service.smallScreen\"\r\n id=\"main-navbar-collapse\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"!service.smallScreen ? navigations : null\"></ng-container>\r\n\r\n <div\r\n *ngIf=\"service.smallScreen\"\r\n [@collapseWithMargin]=\"service.isCollapsed ? 'collapsed' : 'expanded'\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"navigations\"></ng-container>\r\n </div>\r\n\r\n <ng-template #navigations>\r\n <abp-routes\r\n *abpReplaceableTemplate=\"{\r\n componentKey: service.routesComponentKey,\r\n inputs: {\r\n smallScreen: { value: service.smallScreen }\r\n }\r\n }\"\r\n class=\"mx-auto\"\r\n [smallScreen]=\"service.smallScreen\"\r\n ></abp-routes>\r\n\r\n <abp-nav-items\r\n *abpReplaceableTemplate=\"{\r\n componentKey: service.navItemsComponentKey\r\n }\"\r\n ></abp-nav-items>\r\n </ng-template>\r\n </div>\r\n </div>\r\n</nav>\r\n\r\n<!-- [@slideFromBottom]=\"outlet.isActivated && outlet.activatedRoute?.routeConfig?.path\" TODO: throws ExpressionChangedAfterItHasBeenCheck when animation is active. It should be fixed -->\r\n<div class=\"container\">\r\n <abp-page-alert-container></abp-page-alert-container>\r\n <abp-auth-wrapper\r\n *abpReplaceableTemplate=\"{\r\n componentKey: authWrapperKey\r\n }\"\r\n >\r\n <router-outlet #outlet=\"outlet\"></router-outlet>\r\n </abp-auth-wrapper>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i1.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { kind: "component", type: LogoComponent, selector: "abp-logo" }, { kind: "component", type: NavItemsComponent, selector: "abp-nav-items" }, { kind: "component", type: RoutesComponent, selector: "abp-routes", inputs: ["smallScreen"] }, { kind: "component", type: PageAlertContainerComponent, selector: "abp-page-alert-container" }, { kind: "component", type: AuthWrapperComponent, selector: "abp-auth-wrapper" }] }); }
|
|
189
|
+
}
|
|
190
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: AccountLayoutComponent, decorators: [{
|
|
191
|
+
type: Component,
|
|
192
|
+
args: [{ selector: 'abp-layout-account', providers: [LayoutService, SubscriptionService], template: "<nav\r\n class=\"navbar navbar-expand-lg navbar-dark bg-dark shadow-sm flex-column flex-md-row mb-4\"\r\n id=\"main-navbar\"\r\n style=\"min-height: 4rem\"\r\n>\r\n <div class=\"container\">\r\n <abp-logo *abpReplaceableTemplate=\"{ componentKey: service.logoComponentKey }\"></abp-logo>\r\n <button\r\n class=\"navbar-toggler\"\r\n type=\"button\"\r\n [attr.aria-expanded]=\"!service.isCollapsed\"\r\n (click)=\"service.isCollapsed = !service.isCollapsed\"\r\n >\r\n <span class=\"navbar-toggler-icon\"></span>\r\n </button>\r\n <div\r\n class=\"navbar-collapse\"\r\n [class.overflow-hidden]=\"service.smallScreen\"\r\n id=\"main-navbar-collapse\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"!service.smallScreen ? navigations : null\"></ng-container>\r\n\r\n <div\r\n *ngIf=\"service.smallScreen\"\r\n [@collapseWithMargin]=\"service.isCollapsed ? 'collapsed' : 'expanded'\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"navigations\"></ng-container>\r\n </div>\r\n\r\n <ng-template #navigations>\r\n <abp-routes\r\n *abpReplaceableTemplate=\"{\r\n componentKey: service.routesComponentKey,\r\n inputs: {\r\n smallScreen: { value: service.smallScreen }\r\n }\r\n }\"\r\n class=\"mx-auto\"\r\n [smallScreen]=\"service.smallScreen\"\r\n ></abp-routes>\r\n\r\n <abp-nav-items\r\n *abpReplaceableTemplate=\"{\r\n componentKey: service.navItemsComponentKey\r\n }\"\r\n ></abp-nav-items>\r\n </ng-template>\r\n </div>\r\n </div>\r\n</nav>\r\n\r\n<!-- [@slideFromBottom]=\"outlet.isActivated && outlet.activatedRoute?.routeConfig?.path\" TODO: throws ExpressionChangedAfterItHasBeenCheck when animation is active. It should be fixed -->\r\n<div class=\"container\">\r\n <abp-page-alert-container></abp-page-alert-container>\r\n <abp-auth-wrapper\r\n *abpReplaceableTemplate=\"{\r\n componentKey: authWrapperKey\r\n }\"\r\n >\r\n <router-outlet #outlet=\"outlet\"></router-outlet>\r\n </abp-auth-wrapper>\r\n</div>\r\n" }]
|
|
193
193
|
}], ctorParameters: function () { return [{ type: LayoutService }]; } });
|
|
194
194
|
|
|
195
|
-
class ApplicationLayoutComponent {
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
208
|
-
type: Component,
|
|
209
|
-
args: [{ selector: 'abp-layout-application', animations: [slideFromBottom, collapseWithMargin], providers: [LayoutService, SubscriptionService], template: "<nav\r\n class=\"navbar navbar-expand-lg navbar-dark bg-dark shadow-sm flex-column flex-md-row mb-4\"\r\n id=\"main-navbar\"\r\n style=\"min-height: 4rem\"\r\n>\r\n <div class=\"container\">\r\n <abp-logo *abpReplaceableTemplate=\"{ componentKey: service.logoComponentKey }\"></abp-logo>\r\n <button\r\n class=\"navbar-toggler\"\r\n type=\"button\"\r\n [attr.aria-expanded]=\"!service.isCollapsed\"\r\n (click)=\"service.isCollapsed = !service.isCollapsed\"\r\n >\r\n <span class=\"navbar-toggler-icon\"></span>\r\n </button>\r\n <div class=\"navbar-collapse\" [class.overflow-hidden]=\"service.smallScreen\" id=\"main-navbar-collapse\">\r\n <ng-container *ngTemplateOutlet=\"!service.smallScreen ? navigations : null\"></ng-container>\r\n\r\n <div *ngIf=\"service.smallScreen\" [@collapseWithMargin]=\"service.isCollapsed ? 'collapsed' : 'expanded'\">\r\n <ng-container *ngTemplateOutlet=\"navigations\"></ng-container>\r\n </div>\r\n\r\n <ng-template #navigations>\r\n <abp-routes\r\n *abpReplaceableTemplate=\"{\r\n componentKey: service.routesComponentKey,\r\n inputs: {\r\n smallScreen: { value: service.smallScreen }\r\n }\r\n }\"\r\n class=\"mx-auto\"\r\n [smallScreen]=\"service.smallScreen\"\r\n ></abp-routes>\r\n\r\n <abp-nav-items\r\n *abpReplaceableTemplate=\"{\r\n componentKey: service.navItemsComponentKey\r\n }\"\r\n ></abp-nav-items>\r\n </ng-template>\r\n </div>\r\n </div>\r\n</nav>\r\n\r\n<!-- [@slideFromBottom]=\"outlet.isActivated && outlet.activatedRoute?.routeConfig?.path\" TODO: throws ExpressionChangedAfterItHasBeenCheck when animation is active. It should be fixed -->\r\n<div class=\"container\">\r\n <abp-page-alert-container></abp-page-alert-container>\r\n\r\n <router-outlet #outlet=\"outlet\"></router-outlet>\r\n</div>\r\n" }]
|
|
195
|
+
class ApplicationLayoutComponent {
|
|
196
|
+
// required for dynamic component
|
|
197
|
+
static { this.type = "application" /* eLayoutType.application */; }
|
|
198
|
+
constructor(service) {
|
|
199
|
+
this.service = service;
|
|
200
|
+
}
|
|
201
|
+
ngAfterViewInit() {
|
|
202
|
+
this.service.subscribeWindowSize();
|
|
203
|
+
}
|
|
204
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ApplicationLayoutComponent, deps: [{ token: LayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
205
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: ApplicationLayoutComponent, selector: "abp-layout-application", providers: [LayoutService, SubscriptionService], ngImport: i0, template: "<nav\r\n class=\"navbar navbar-expand-lg navbar-dark bg-dark shadow-sm flex-column flex-md-row mb-4\"\r\n id=\"main-navbar\"\r\n style=\"min-height: 4rem\"\r\n>\r\n <div class=\"container\">\r\n <abp-logo *abpReplaceableTemplate=\"{ componentKey: service.logoComponentKey }\"></abp-logo>\r\n <button\r\n class=\"navbar-toggler\"\r\n type=\"button\"\r\n [attr.aria-expanded]=\"!service.isCollapsed\"\r\n (click)=\"service.isCollapsed = !service.isCollapsed\"\r\n >\r\n <span class=\"navbar-toggler-icon\"></span>\r\n </button>\r\n <div class=\"navbar-collapse\" [class.overflow-hidden]=\"service.smallScreen\" id=\"main-navbar-collapse\">\r\n <ng-container *ngTemplateOutlet=\"!service.smallScreen ? navigations : null\"></ng-container>\r\n\r\n <div *ngIf=\"service.smallScreen\" [@collapseWithMargin]=\"service.isCollapsed ? 'collapsed' : 'expanded'\">\r\n <ng-container *ngTemplateOutlet=\"navigations\"></ng-container>\r\n </div>\r\n\r\n <ng-template #navigations>\r\n <abp-routes\r\n *abpReplaceableTemplate=\"{\r\n componentKey: service.routesComponentKey,\r\n inputs: {\r\n smallScreen: { value: service.smallScreen }\r\n }\r\n }\"\r\n class=\"mx-auto\"\r\n [smallScreen]=\"service.smallScreen\"\r\n ></abp-routes>\r\n\r\n <abp-nav-items\r\n *abpReplaceableTemplate=\"{\r\n componentKey: service.navItemsComponentKey\r\n }\"\r\n ></abp-nav-items>\r\n </ng-template>\r\n </div>\r\n </div>\r\n</nav>\r\n\r\n<!-- [@slideFromBottom]=\"outlet.isActivated && outlet.activatedRoute?.routeConfig?.path\" TODO: throws ExpressionChangedAfterItHasBeenCheck when animation is active. It should be fixed -->\r\n<div class=\"container\">\r\n <abp-page-alert-container></abp-page-alert-container>\r\n\r\n <router-outlet #outlet=\"outlet\"></router-outlet>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i1.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { kind: "component", type: LogoComponent, selector: "abp-logo" }, { kind: "component", type: NavItemsComponent, selector: "abp-nav-items" }, { kind: "component", type: RoutesComponent, selector: "abp-routes", inputs: ["smallScreen"] }, { kind: "component", type: PageAlertContainerComponent, selector: "abp-page-alert-container" }], animations: [slideFromBottom, collapseWithMargin] }); }
|
|
206
|
+
}
|
|
207
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ApplicationLayoutComponent, decorators: [{
|
|
208
|
+
type: Component,
|
|
209
|
+
args: [{ selector: 'abp-layout-application', animations: [slideFromBottom, collapseWithMargin], providers: [LayoutService, SubscriptionService], template: "<nav\r\n class=\"navbar navbar-expand-lg navbar-dark bg-dark shadow-sm flex-column flex-md-row mb-4\"\r\n id=\"main-navbar\"\r\n style=\"min-height: 4rem\"\r\n>\r\n <div class=\"container\">\r\n <abp-logo *abpReplaceableTemplate=\"{ componentKey: service.logoComponentKey }\"></abp-logo>\r\n <button\r\n class=\"navbar-toggler\"\r\n type=\"button\"\r\n [attr.aria-expanded]=\"!service.isCollapsed\"\r\n (click)=\"service.isCollapsed = !service.isCollapsed\"\r\n >\r\n <span class=\"navbar-toggler-icon\"></span>\r\n </button>\r\n <div class=\"navbar-collapse\" [class.overflow-hidden]=\"service.smallScreen\" id=\"main-navbar-collapse\">\r\n <ng-container *ngTemplateOutlet=\"!service.smallScreen ? navigations : null\"></ng-container>\r\n\r\n <div *ngIf=\"service.smallScreen\" [@collapseWithMargin]=\"service.isCollapsed ? 'collapsed' : 'expanded'\">\r\n <ng-container *ngTemplateOutlet=\"navigations\"></ng-container>\r\n </div>\r\n\r\n <ng-template #navigations>\r\n <abp-routes\r\n *abpReplaceableTemplate=\"{\r\n componentKey: service.routesComponentKey,\r\n inputs: {\r\n smallScreen: { value: service.smallScreen }\r\n }\r\n }\"\r\n class=\"mx-auto\"\r\n [smallScreen]=\"service.smallScreen\"\r\n ></abp-routes>\r\n\r\n <abp-nav-items\r\n *abpReplaceableTemplate=\"{\r\n componentKey: service.navItemsComponentKey\r\n }\"\r\n ></abp-nav-items>\r\n </ng-template>\r\n </div>\r\n </div>\r\n</nav>\r\n\r\n<!-- [@slideFromBottom]=\"outlet.isActivated && outlet.activatedRoute?.routeConfig?.path\" TODO: throws ExpressionChangedAfterItHasBeenCheck when animation is active. It should be fixed -->\r\n<div class=\"container\">\r\n <abp-page-alert-container></abp-page-alert-container>\r\n\r\n <router-outlet #outlet=\"outlet\"></router-outlet>\r\n</div>\r\n" }]
|
|
210
210
|
}], ctorParameters: function () { return [{ type: LayoutService }]; } });
|
|
211
211
|
|
|
212
|
-
class EmptyLayoutComponent {
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
EmptyLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: EmptyLayoutComponent, selector: "abp-layout-empty", ngImport: i0, template: `
|
|
212
|
+
class EmptyLayoutComponent {
|
|
213
|
+
static { this.type = "empty" /* eLayoutType.empty */; }
|
|
214
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: EmptyLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
215
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: EmptyLayoutComponent, selector: "abp-layout-empty", ngImport: i0, template: `
|
|
217
216
|
<router-outlet></router-outlet>
|
|
218
217
|
<abp-confirmation></abp-confirmation>
|
|
219
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i3.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i1$1.ConfirmationComponent, selector: "abp-confirmation" }] });
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
218
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i3.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i1$1.ConfirmationComponent, selector: "abp-confirmation" }] }); }
|
|
219
|
+
}
|
|
220
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: EmptyLayoutComponent, decorators: [{
|
|
221
|
+
type: Component,
|
|
222
|
+
args: [{
|
|
223
|
+
selector: 'abp-layout-empty',
|
|
224
224
|
template: `
|
|
225
225
|
<router-outlet></router-outlet>
|
|
226
226
|
<abp-confirmation></abp-confirmation>
|
|
227
|
-
`,
|
|
228
|
-
}]
|
|
227
|
+
`,
|
|
228
|
+
}]
|
|
229
229
|
}] });
|
|
230
230
|
|
|
231
|
-
class CurrentUserComponent {
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
this.
|
|
237
|
-
this.
|
|
238
|
-
this.
|
|
239
|
-
this.
|
|
240
|
-
this.
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
}
|
|
245
|
-
navigateToLogin() {
|
|
246
|
-
this.authService.navigateToLogin();
|
|
247
|
-
}
|
|
248
|
-
logout() {
|
|
249
|
-
this.authService.logout().subscribe();
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
255
|
-
type: Component,
|
|
256
|
-
args: [{ selector: 'abp-current-user', template: "<ng-template #loginBtn>\r\n <a role=\"button\" class=\"nav-link pointer\" (click)=\"navigateToLogin()\">{{\r\n 'AbpAccount::Login' | abpLocalization\r\n }}</a>\r\n</ng-template>\r\n<div\r\n *ngIf=\"(currentUser$ | async)?.isAuthenticated; else loginBtn\"\r\n ngbDropdown\r\n class=\"dropdown\"\r\n #currentUserDropdown=\"ngbDropdown\"\r\n display=\"static\"\r\n>\r\n <a\r\n ngbDropdownToggle\r\n class=\"nav-link\"\r\n href=\"javascript:void(0)\"\r\n role=\"button\"\r\n id=\"dropdownMenuLink\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n aria-expanded=\"false\"\r\n >\r\n <small *ngIf=\"(selectedTenant$ | async)?.name as tenantName\"\r\n ><i>{{ tenantName }}</i\r\n >\\</small\r\n >\r\n <strong>{{ (currentUser$ | async)?.userName }}</strong>\r\n </a>\r\n <div\r\n class=\"dropdown-menu dropdown-menu-end border-0 shadow-sm\"\r\n aria-labelledby=\"dropdownMenuLink\"\r\n [class.d-block]=\"smallScreen && currentUserDropdown.isOpen()\"\r\n >\r\n <ng-container *ngFor=\"let item of userMenu.items$ | async; trackBy: trackByFn\">\r\n <ng-container *abpVisible=\"!item.visible || item.visible(item)\">\r\n <li class=\"nav-item d-flex align-items-center\" *abpPermission=\"item.requiredPolicy\">\r\n <ng-container\r\n *ngIf=\"item.component; else htmlTemplate\"\r\n [ngComponentOutlet]=\"item.component\"\r\n [ngComponentOutletInjector]=\"item | toInjector\"\r\n ></ng-container>\r\n\r\n <ng-template #htmlTemplate>\r\n <div\r\n *ngIf=\"item.html; else textTemplate\"\r\n [innerHTML]=\"item.html\"\r\n (click)=\"item.action ? item.action() : null\"\r\n ></div>\r\n </ng-template>\r\n\r\n <ng-template #textTemplate>\r\n <a\r\n *ngIf=\"item.textTemplate\"\r\n (click)=\"item.action ? item.action() : null\"\r\n class=\"dropdown-item pointer\"\r\n >\r\n <i *ngIf=\"item.textTemplate.icon\" class=\"me-1 {{ item.textTemplate.icon }}\"></i>\r\n {{ item.textTemplate.text | abpLocalization }}</a\r\n >\r\n </ng-template>\r\n </li>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</div>\r\n" }]
|
|
257
|
-
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
258
|
-
type: Inject,
|
|
259
|
-
args: [NAVIGATE_TO_MANAGE_PROFILE]
|
|
231
|
+
class CurrentUserComponent {
|
|
232
|
+
get smallScreen() {
|
|
233
|
+
return window.innerWidth < 992;
|
|
234
|
+
}
|
|
235
|
+
constructor(navigateToManageProfile, userMenu, authService, configState, sessionState) {
|
|
236
|
+
this.navigateToManageProfile = navigateToManageProfile;
|
|
237
|
+
this.userMenu = userMenu;
|
|
238
|
+
this.authService = authService;
|
|
239
|
+
this.configState = configState;
|
|
240
|
+
this.sessionState = sessionState;
|
|
241
|
+
this.currentUser$ = this.configState.getOne$('currentUser');
|
|
242
|
+
this.selectedTenant$ = this.sessionState.getTenant$();
|
|
243
|
+
this.trackByFn = (_, element) => element.id;
|
|
244
|
+
}
|
|
245
|
+
navigateToLogin() {
|
|
246
|
+
this.authService.navigateToLogin();
|
|
247
|
+
}
|
|
248
|
+
logout() {
|
|
249
|
+
this.authService.logout().subscribe();
|
|
250
|
+
}
|
|
251
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: CurrentUserComponent, deps: [{ token: NAVIGATE_TO_MANAGE_PROFILE }, { token: i1$1.UserMenuService }, { token: i1.AuthService }, { token: i1.ConfigStateService }, { token: i1.SessionStateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
252
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: CurrentUserComponent, selector: "abp-current-user", ngImport: i0, template: "<ng-template #loginBtn>\r\n <a role=\"button\" class=\"nav-link pointer\" (click)=\"navigateToLogin()\">{{\r\n 'AbpAccount::Login' | abpLocalization\r\n }}</a>\r\n</ng-template>\r\n<div\r\n *ngIf=\"(currentUser$ | async)?.isAuthenticated; else loginBtn\"\r\n ngbDropdown\r\n class=\"dropdown\"\r\n #currentUserDropdown=\"ngbDropdown\"\r\n display=\"static\"\r\n>\r\n <a\r\n ngbDropdownToggle\r\n class=\"nav-link\"\r\n href=\"javascript:void(0)\"\r\n role=\"button\"\r\n id=\"dropdownMenuLink\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n aria-expanded=\"false\"\r\n >\r\n <small *ngIf=\"(selectedTenant$ | async)?.name as tenantName\"\r\n ><i>{{ tenantName }}</i\r\n >\\</small\r\n >\r\n <strong>{{ (currentUser$ | async)?.userName }}</strong>\r\n </a>\r\n <div\r\n class=\"dropdown-menu dropdown-menu-end border-0 shadow-sm\"\r\n aria-labelledby=\"dropdownMenuLink\"\r\n [class.d-block]=\"smallScreen && currentUserDropdown.isOpen()\"\r\n >\r\n <ng-container *ngFor=\"let item of userMenu.items$ | async; trackBy: trackByFn\">\r\n <ng-container *abpVisible=\"!item.visible || item.visible(item)\">\r\n <li class=\"nav-item d-flex align-items-center\" *abpPermission=\"item.requiredPolicy\">\r\n <ng-container\r\n *ngIf=\"item.component; else htmlTemplate\"\r\n [ngComponentOutlet]=\"item.component\"\r\n [ngComponentOutletInjector]=\"item | toInjector\"\r\n ></ng-container>\r\n\r\n <ng-template #htmlTemplate>\r\n <div\r\n *ngIf=\"item.html; else textTemplate\"\r\n [innerHTML]=\"item.html\"\r\n (click)=\"item.action ? item.action() : null\"\r\n ></div>\r\n </ng-template>\r\n\r\n <ng-template #textTemplate>\r\n <a\r\n *ngIf=\"item.textTemplate\"\r\n (click)=\"item.action ? item.action() : null\"\r\n class=\"dropdown-item pointer\"\r\n >\r\n <i *ngIf=\"item.textTemplate.icon\" class=\"me-1 {{ item.textTemplate.icon }}\"></i>\r\n {{ item.textTemplate.text | abpLocalization }}</a\r\n >\r\n </ng-template>\r\n </li>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i2.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission", "abpPermissionRunChangeDetection"] }, { kind: "directive", type: i1$1.AbpVisibleDirective, selector: "[abpVisible]", inputs: ["abpVisible"] }, { kind: "directive", type: i5.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i5.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }, { kind: "pipe", type: i1.ToInjectorPipe, name: "toInjector" }] }); }
|
|
253
|
+
}
|
|
254
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: CurrentUserComponent, decorators: [{
|
|
255
|
+
type: Component,
|
|
256
|
+
args: [{ selector: 'abp-current-user', template: "<ng-template #loginBtn>\r\n <a role=\"button\" class=\"nav-link pointer\" (click)=\"navigateToLogin()\">{{\r\n 'AbpAccount::Login' | abpLocalization\r\n }}</a>\r\n</ng-template>\r\n<div\r\n *ngIf=\"(currentUser$ | async)?.isAuthenticated; else loginBtn\"\r\n ngbDropdown\r\n class=\"dropdown\"\r\n #currentUserDropdown=\"ngbDropdown\"\r\n display=\"static\"\r\n>\r\n <a\r\n ngbDropdownToggle\r\n class=\"nav-link\"\r\n href=\"javascript:void(0)\"\r\n role=\"button\"\r\n id=\"dropdownMenuLink\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n aria-expanded=\"false\"\r\n >\r\n <small *ngIf=\"(selectedTenant$ | async)?.name as tenantName\"\r\n ><i>{{ tenantName }}</i\r\n >\\</small\r\n >\r\n <strong>{{ (currentUser$ | async)?.userName }}</strong>\r\n </a>\r\n <div\r\n class=\"dropdown-menu dropdown-menu-end border-0 shadow-sm\"\r\n aria-labelledby=\"dropdownMenuLink\"\r\n [class.d-block]=\"smallScreen && currentUserDropdown.isOpen()\"\r\n >\r\n <ng-container *ngFor=\"let item of userMenu.items$ | async; trackBy: trackByFn\">\r\n <ng-container *abpVisible=\"!item.visible || item.visible(item)\">\r\n <li class=\"nav-item d-flex align-items-center\" *abpPermission=\"item.requiredPolicy\">\r\n <ng-container\r\n *ngIf=\"item.component; else htmlTemplate\"\r\n [ngComponentOutlet]=\"item.component\"\r\n [ngComponentOutletInjector]=\"item | toInjector\"\r\n ></ng-container>\r\n\r\n <ng-template #htmlTemplate>\r\n <div\r\n *ngIf=\"item.html; else textTemplate\"\r\n [innerHTML]=\"item.html\"\r\n (click)=\"item.action ? item.action() : null\"\r\n ></div>\r\n </ng-template>\r\n\r\n <ng-template #textTemplate>\r\n <a\r\n *ngIf=\"item.textTemplate\"\r\n (click)=\"item.action ? item.action() : null\"\r\n class=\"dropdown-item pointer\"\r\n >\r\n <i *ngIf=\"item.textTemplate.icon\" class=\"me-1 {{ item.textTemplate.icon }}\"></i>\r\n {{ item.textTemplate.text | abpLocalization }}</a\r\n >\r\n </ng-template>\r\n </li>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</div>\r\n" }]
|
|
257
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
258
|
+
type: Inject,
|
|
259
|
+
args: [NAVIGATE_TO_MANAGE_PROFILE]
|
|
260
260
|
}] }, { type: i1$1.UserMenuService }, { type: i1.AuthService }, { type: i1.ConfigStateService }, { type: i1.SessionStateService }]; } });
|
|
261
261
|
|
|
262
|
-
class LanguagesComponent {
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
}
|
|
280
|
-
onChangeLang(cultureName) {
|
|
281
|
-
this.sessionState.setLanguage(cultureName);
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
LanguagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: LanguagesComponent, selector: "abp-languages", ngImport: i0, template: `
|
|
262
|
+
class LanguagesComponent {
|
|
263
|
+
get smallScreen() {
|
|
264
|
+
return window.innerWidth < 992;
|
|
265
|
+
}
|
|
266
|
+
get defaultLanguage$() {
|
|
267
|
+
return this.languages$.pipe(map(languages => languages?.find(lang => lang.cultureName === this.selectedLangCulture)?.displayName || ''));
|
|
268
|
+
}
|
|
269
|
+
get dropdownLanguages$() {
|
|
270
|
+
return this.languages$.pipe(map(languages => languages?.filter(lang => lang.cultureName !== this.selectedLangCulture) || []));
|
|
271
|
+
}
|
|
272
|
+
get selectedLangCulture() {
|
|
273
|
+
return this.sessionState.getLanguage();
|
|
274
|
+
}
|
|
275
|
+
constructor(sessionState, configState) {
|
|
276
|
+
this.sessionState = sessionState;
|
|
277
|
+
this.configState = configState;
|
|
278
|
+
this.languages$ = this.configState.getDeep$('localization.languages');
|
|
279
|
+
}
|
|
280
|
+
onChangeLang(cultureName) {
|
|
281
|
+
this.sessionState.setLanguage(cultureName);
|
|
282
|
+
}
|
|
283
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: LanguagesComponent, deps: [{ token: i1.SessionStateService }, { token: i1.ConfigStateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
284
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: LanguagesComponent, selector: "abp-languages", ngImport: i0, template: `
|
|
286
285
|
<div
|
|
287
286
|
*ngIf="((dropdownLanguages$ | async)?.length || 0) > 0"
|
|
288
287
|
class="dropdown"
|
|
@@ -316,11 +315,12 @@ LanguagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ver
|
|
|
316
315
|
>
|
|
317
316
|
</div>
|
|
318
317
|
</div>
|
|
319
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i5.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
318
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i5.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
|
|
319
|
+
}
|
|
320
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: LanguagesComponent, decorators: [{
|
|
321
|
+
type: Component,
|
|
322
|
+
args: [{
|
|
323
|
+
selector: 'abp-languages',
|
|
324
324
|
template: `
|
|
325
325
|
<div
|
|
326
326
|
*ngIf="((dropdownLanguages$ | async)?.length || 0) > 0"
|
|
@@ -355,151 +355,151 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
|
|
|
355
355
|
>
|
|
356
356
|
</div>
|
|
357
357
|
</div>
|
|
358
|
-
`,
|
|
359
|
-
}]
|
|
358
|
+
`,
|
|
359
|
+
}]
|
|
360
360
|
}], ctorParameters: function () { return [{ type: i1.SessionStateService }, { type: i1.ConfigStateService }]; } });
|
|
361
361
|
|
|
362
|
-
class ValidationErrorComponent extends ValidationErrorComponent$1 {
|
|
363
|
-
get abpErrors() {
|
|
364
|
-
if (!this.errors || !this.errors.length)
|
|
365
|
-
return [];
|
|
366
|
-
return this.errors.map(error => {
|
|
367
|
-
if (!error.message)
|
|
368
|
-
return error;
|
|
369
|
-
const index = error.message.indexOf('[');
|
|
370
|
-
if (index > -1) {
|
|
371
|
-
return {
|
|
372
|
-
...error,
|
|
373
|
-
message: error.message.slice(0, index),
|
|
374
|
-
interpoliteParams: error.message.slice(index + 1, error.message.length - 1).split(','),
|
|
375
|
-
};
|
|
376
|
-
}
|
|
377
|
-
return error;
|
|
378
|
-
});
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
|
|
382
|
-
ValidationErrorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ValidationErrorComponent, selector: "abp-validation-error", usesInheritance: true, ngImport: i0, template: `
|
|
362
|
+
class ValidationErrorComponent extends ValidationErrorComponent$1 {
|
|
363
|
+
get abpErrors() {
|
|
364
|
+
if (!this.errors || !this.errors.length)
|
|
365
|
+
return [];
|
|
366
|
+
return this.errors.map(error => {
|
|
367
|
+
if (!error.message)
|
|
368
|
+
return error;
|
|
369
|
+
const index = error.message.indexOf('[');
|
|
370
|
+
if (index > -1) {
|
|
371
|
+
return {
|
|
372
|
+
...error,
|
|
373
|
+
message: error.message.slice(0, index),
|
|
374
|
+
interpoliteParams: error.message.slice(index + 1, error.message.length - 1).split(','),
|
|
375
|
+
};
|
|
376
|
+
}
|
|
377
|
+
return error;
|
|
378
|
+
});
|
|
379
|
+
}
|
|
380
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ValidationErrorComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
381
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: ValidationErrorComponent, selector: "abp-validation-error", usesInheritance: true, ngImport: i0, template: `
|
|
383
382
|
<div class="invalid-feedback" *ngFor="let error of abpErrors; trackBy: trackByFn">
|
|
384
383
|
{{ error.message | abpLocalization: error.interpoliteParams }}
|
|
385
384
|
</div>
|
|
386
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
385
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
386
|
+
}
|
|
387
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ValidationErrorComponent, decorators: [{
|
|
388
|
+
type: Component,
|
|
389
|
+
args: [{
|
|
390
|
+
selector: 'abp-validation-error',
|
|
391
391
|
template: `
|
|
392
392
|
<div class="invalid-feedback" *ngFor="let error of abpErrors; trackBy: trackByFn">
|
|
393
393
|
{{ error.message | abpLocalization: error.interpoliteParams }}
|
|
394
394
|
</div>
|
|
395
|
-
`,
|
|
396
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
397
|
-
encapsulation: ViewEncapsulation.None,
|
|
398
|
-
}]
|
|
395
|
+
`,
|
|
396
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
397
|
+
encapsulation: ViewEncapsulation.None,
|
|
398
|
+
}]
|
|
399
399
|
}] });
|
|
400
400
|
|
|
401
401
|
const LAZY_STYLES = new InjectionToken('LAZY_STYLES');
|
|
402
402
|
|
|
403
|
-
const BOOTSTRAP = 'bootstrap-{{dir}}.min.css';
|
|
404
|
-
class LazyStyleHandler {
|
|
405
|
-
|
|
406
|
-
this._dir
|
|
407
|
-
|
|
408
|
-
this.
|
|
409
|
-
this.
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
this.
|
|
416
|
-
this.
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
}
|
|
421
|
-
getHrefFromLink(link) {
|
|
422
|
-
if (!link)
|
|
423
|
-
return '';
|
|
424
|
-
const a = document.createElement('a');
|
|
425
|
-
a.href = link.href;
|
|
426
|
-
return a.pathname.replace(/^\//, '');
|
|
427
|
-
}
|
|
428
|
-
getLoadedBootstrap() {
|
|
429
|
-
const href = createLazyStyleHref(BOOTSTRAP, this.dir);
|
|
430
|
-
const selector = `[href*="${href.replace(/\.css$/, '')}"]`;
|
|
431
|
-
const link = document.querySelector(selector);
|
|
432
|
-
return { href, link };
|
|
433
|
-
}
|
|
434
|
-
listenToDirectionChanges(injector) {
|
|
435
|
-
const docDirHandler = injector.get(DocumentDirHandlerService);
|
|
436
|
-
// will always listen, no need to unsubscribe
|
|
437
|
-
docDirHandler.dir$.subscribe(dir => {
|
|
438
|
-
this.dir = dir;
|
|
439
|
-
});
|
|
440
|
-
}
|
|
441
|
-
setLazyLoad(injector) {
|
|
442
|
-
this.lazyLoad = injector.get(LazyLoadService);
|
|
443
|
-
const { href, link } = this.getLoadedBootstrap();
|
|
444
|
-
this.lazyLoad.loaded.set(href, link);
|
|
445
|
-
}
|
|
446
|
-
setStyles(injector) {
|
|
447
|
-
this.styles = injector.get(LAZY_STYLES, [BOOTSTRAP]);
|
|
448
|
-
}
|
|
449
|
-
switchCSS(dir) {
|
|
450
|
-
this.styles.forEach(style => {
|
|
451
|
-
const oldHref = createLazyStyleHref(style, this.dir);
|
|
452
|
-
const newHref = createLazyStyleHref(style, dir);
|
|
453
|
-
const link = this.loaded.get(newHref);
|
|
454
|
-
const href = this.getHrefFromLink(link) || newHref;
|
|
455
|
-
const strategy = LOADING_STRATEGY.PrependAnonymousStyleToHead(href);
|
|
456
|
-
this.lazyLoad.load(strategy).subscribe(() => {
|
|
457
|
-
const oldLink = this.lazyLoad.loaded.get(oldHref);
|
|
458
|
-
this.loaded.delete(newHref);
|
|
459
|
-
this.loaded.set(oldHref, oldLink);
|
|
460
|
-
const newLink = this.lazyLoad.loaded.get(href);
|
|
461
|
-
this.lazyLoad.loaded.delete(href);
|
|
462
|
-
this.lazyLoad.loaded.set(newHref, newLink);
|
|
463
|
-
this.lazyLoad.remove(oldHref);
|
|
464
|
-
});
|
|
465
|
-
});
|
|
466
|
-
}
|
|
467
|
-
}
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
471
|
-
type: Injectable
|
|
472
|
-
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
473
|
-
function createLazyStyleHref(style, dir) {
|
|
474
|
-
return style.replace(/{{\s*dir\s*}}/g, dir);
|
|
475
|
-
}
|
|
476
|
-
function initLazyStyleHandler(injector) {
|
|
477
|
-
return () => new LazyStyleHandler(injector);
|
|
403
|
+
const BOOTSTRAP = 'bootstrap-{{dir}}.min.css';
|
|
404
|
+
class LazyStyleHandler {
|
|
405
|
+
set dir(dir) {
|
|
406
|
+
if (dir === this._dir)
|
|
407
|
+
return;
|
|
408
|
+
this.switchCSS(dir);
|
|
409
|
+
this._dir = dir;
|
|
410
|
+
}
|
|
411
|
+
get dir() {
|
|
412
|
+
return this._dir;
|
|
413
|
+
}
|
|
414
|
+
constructor(injector) {
|
|
415
|
+
this._dir = 'ltr';
|
|
416
|
+
this.loaded = new Map();
|
|
417
|
+
this.setStyles(injector);
|
|
418
|
+
this.setLazyLoad(injector);
|
|
419
|
+
this.listenToDirectionChanges(injector);
|
|
420
|
+
}
|
|
421
|
+
getHrefFromLink(link) {
|
|
422
|
+
if (!link)
|
|
423
|
+
return '';
|
|
424
|
+
const a = document.createElement('a');
|
|
425
|
+
a.href = link.href;
|
|
426
|
+
return a.pathname.replace(/^\//, '');
|
|
427
|
+
}
|
|
428
|
+
getLoadedBootstrap() {
|
|
429
|
+
const href = createLazyStyleHref(BOOTSTRAP, this.dir);
|
|
430
|
+
const selector = `[href*="${href.replace(/\.css$/, '')}"]`;
|
|
431
|
+
const link = document.querySelector(selector);
|
|
432
|
+
return { href, link };
|
|
433
|
+
}
|
|
434
|
+
listenToDirectionChanges(injector) {
|
|
435
|
+
const docDirHandler = injector.get(DocumentDirHandlerService);
|
|
436
|
+
// will always listen, no need to unsubscribe
|
|
437
|
+
docDirHandler.dir$.subscribe(dir => {
|
|
438
|
+
this.dir = dir;
|
|
439
|
+
});
|
|
440
|
+
}
|
|
441
|
+
setLazyLoad(injector) {
|
|
442
|
+
this.lazyLoad = injector.get(LazyLoadService);
|
|
443
|
+
const { href, link } = this.getLoadedBootstrap();
|
|
444
|
+
this.lazyLoad.loaded.set(href, link);
|
|
445
|
+
}
|
|
446
|
+
setStyles(injector) {
|
|
447
|
+
this.styles = injector.get(LAZY_STYLES, [BOOTSTRAP]);
|
|
448
|
+
}
|
|
449
|
+
switchCSS(dir) {
|
|
450
|
+
this.styles.forEach(style => {
|
|
451
|
+
const oldHref = createLazyStyleHref(style, this.dir);
|
|
452
|
+
const newHref = createLazyStyleHref(style, dir);
|
|
453
|
+
const link = this.loaded.get(newHref);
|
|
454
|
+
const href = this.getHrefFromLink(link) || newHref;
|
|
455
|
+
const strategy = LOADING_STRATEGY.PrependAnonymousStyleToHead(href);
|
|
456
|
+
this.lazyLoad.load(strategy).subscribe(() => {
|
|
457
|
+
const oldLink = this.lazyLoad.loaded.get(oldHref);
|
|
458
|
+
this.loaded.delete(newHref);
|
|
459
|
+
this.loaded.set(oldHref, oldLink);
|
|
460
|
+
const newLink = this.lazyLoad.loaded.get(href);
|
|
461
|
+
this.lazyLoad.loaded.delete(href);
|
|
462
|
+
this.lazyLoad.loaded.set(newHref, newLink);
|
|
463
|
+
this.lazyLoad.remove(oldHref);
|
|
464
|
+
});
|
|
465
|
+
});
|
|
466
|
+
}
|
|
467
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: LazyStyleHandler, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
468
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: LazyStyleHandler }); }
|
|
469
|
+
}
|
|
470
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: LazyStyleHandler, decorators: [{
|
|
471
|
+
type: Injectable
|
|
472
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
473
|
+
function createLazyStyleHref(style, dir) {
|
|
474
|
+
return style.replace(/{{\s*dir\s*}}/g, dir);
|
|
475
|
+
}
|
|
476
|
+
function initLazyStyleHandler(injector) {
|
|
477
|
+
return () => new LazyStyleHandler(injector);
|
|
478
478
|
}
|
|
479
479
|
|
|
480
|
-
const BASIC_THEME_NAV_ITEM_PROVIDERS = [
|
|
481
|
-
{
|
|
482
|
-
provide: APP_INITIALIZER,
|
|
483
|
-
useFactory: configureNavItems,
|
|
484
|
-
deps: [NavItemsService],
|
|
485
|
-
multi: true,
|
|
486
|
-
},
|
|
487
|
-
];
|
|
488
|
-
function configureNavItems(navItems) {
|
|
489
|
-
return () => {
|
|
490
|
-
navItems.addItems([
|
|
491
|
-
{
|
|
492
|
-
id: "Theme.LanguagesComponent" /* eThemeBasicComponents.Languages */,
|
|
493
|
-
order: 100,
|
|
494
|
-
component: LanguagesComponent,
|
|
495
|
-
},
|
|
496
|
-
{
|
|
497
|
-
id: "Theme.CurrentUserComponent" /* eThemeBasicComponents.CurrentUser */,
|
|
498
|
-
order: 100,
|
|
499
|
-
component: CurrentUserComponent,
|
|
500
|
-
},
|
|
501
|
-
]);
|
|
502
|
-
};
|
|
480
|
+
const BASIC_THEME_NAV_ITEM_PROVIDERS = [
|
|
481
|
+
{
|
|
482
|
+
provide: APP_INITIALIZER,
|
|
483
|
+
useFactory: configureNavItems,
|
|
484
|
+
deps: [NavItemsService],
|
|
485
|
+
multi: true,
|
|
486
|
+
},
|
|
487
|
+
];
|
|
488
|
+
function configureNavItems(navItems) {
|
|
489
|
+
return () => {
|
|
490
|
+
navItems.addItems([
|
|
491
|
+
{
|
|
492
|
+
id: "Theme.LanguagesComponent" /* eThemeBasicComponents.Languages */,
|
|
493
|
+
order: 100,
|
|
494
|
+
component: LanguagesComponent,
|
|
495
|
+
},
|
|
496
|
+
{
|
|
497
|
+
id: "Theme.CurrentUserComponent" /* eThemeBasicComponents.CurrentUser */,
|
|
498
|
+
order: 100,
|
|
499
|
+
component: CurrentUserComponent,
|
|
500
|
+
},
|
|
501
|
+
]);
|
|
502
|
+
};
|
|
503
503
|
}
|
|
504
504
|
|
|
505
505
|
var styles = `
|
|
@@ -653,183 +653,183 @@ background-color: rgba(0, 0, 0, 0.6);
|
|
|
653
653
|
}
|
|
654
654
|
`;
|
|
655
655
|
|
|
656
|
-
const BASIC_THEME_STYLES_PROVIDERS = [
|
|
657
|
-
{
|
|
658
|
-
provide: APP_INITIALIZER,
|
|
659
|
-
useFactory: configureStyles,
|
|
660
|
-
deps: [DomInsertionService, ReplaceableComponentsService],
|
|
661
|
-
multi: true,
|
|
662
|
-
},
|
|
663
|
-
];
|
|
664
|
-
function configureStyles(domInsertion, replaceableComponents) {
|
|
665
|
-
return () => {
|
|
666
|
-
domInsertion.insertContent(CONTENT_STRATEGY.AppendStyleToHead(styles));
|
|
667
|
-
initLayouts(replaceableComponents);
|
|
668
|
-
};
|
|
669
|
-
}
|
|
670
|
-
function initLayouts(replaceableComponents) {
|
|
671
|
-
replaceableComponents.add({
|
|
672
|
-
key: "Theme.ApplicationLayoutComponent" /* eThemeBasicComponents.ApplicationLayout */,
|
|
673
|
-
component: ApplicationLayoutComponent,
|
|
674
|
-
});
|
|
675
|
-
replaceableComponents.add({
|
|
676
|
-
key: "Theme.AccountLayoutComponent" /* eThemeBasicComponents.AccountLayout */,
|
|
677
|
-
component: AccountLayoutComponent,
|
|
678
|
-
});
|
|
679
|
-
replaceableComponents.add({
|
|
680
|
-
key: "Theme.EmptyLayoutComponent" /* eThemeBasicComponents.EmptyLayout */,
|
|
681
|
-
component: EmptyLayoutComponent,
|
|
682
|
-
});
|
|
656
|
+
const BASIC_THEME_STYLES_PROVIDERS = [
|
|
657
|
+
{
|
|
658
|
+
provide: APP_INITIALIZER,
|
|
659
|
+
useFactory: configureStyles,
|
|
660
|
+
deps: [DomInsertionService, ReplaceableComponentsService],
|
|
661
|
+
multi: true,
|
|
662
|
+
},
|
|
663
|
+
];
|
|
664
|
+
function configureStyles(domInsertion, replaceableComponents) {
|
|
665
|
+
return () => {
|
|
666
|
+
domInsertion.insertContent(CONTENT_STRATEGY.AppendStyleToHead(styles));
|
|
667
|
+
initLayouts(replaceableComponents);
|
|
668
|
+
};
|
|
669
|
+
}
|
|
670
|
+
function initLayouts(replaceableComponents) {
|
|
671
|
+
replaceableComponents.add({
|
|
672
|
+
key: "Theme.ApplicationLayoutComponent" /* eThemeBasicComponents.ApplicationLayout */,
|
|
673
|
+
component: ApplicationLayoutComponent,
|
|
674
|
+
});
|
|
675
|
+
replaceableComponents.add({
|
|
676
|
+
key: "Theme.AccountLayoutComponent" /* eThemeBasicComponents.AccountLayout */,
|
|
677
|
+
component: AccountLayoutComponent,
|
|
678
|
+
});
|
|
679
|
+
replaceableComponents.add({
|
|
680
|
+
key: "Theme.EmptyLayoutComponent" /* eThemeBasicComponents.EmptyLayout */,
|
|
681
|
+
component: EmptyLayoutComponent,
|
|
682
|
+
});
|
|
683
683
|
}
|
|
684
684
|
|
|
685
|
-
const BASIC_THEME_USER_MENU_PROVIDERS = [
|
|
686
|
-
{
|
|
687
|
-
provide: APP_INITIALIZER,
|
|
688
|
-
useFactory: configureUserMenu,
|
|
689
|
-
deps: [Injector],
|
|
690
|
-
multi: true,
|
|
691
|
-
},
|
|
692
|
-
];
|
|
693
|
-
function configureUserMenu(injector) {
|
|
694
|
-
const userMenu = injector.get(UserMenuService);
|
|
695
|
-
const authService = injector.get(AuthService);
|
|
696
|
-
const navigateToManageProfile = injector.get(NAVIGATE_TO_MANAGE_PROFILE);
|
|
697
|
-
return () => {
|
|
698
|
-
userMenu.addItems([
|
|
699
|
-
{
|
|
700
|
-
id: "UserMenu.MyAccount" /* eUserMenuItems.MyAccount */,
|
|
701
|
-
order: 100,
|
|
702
|
-
textTemplate: {
|
|
703
|
-
text: 'AbpAccount::MyAccount',
|
|
704
|
-
icon: 'fa fa-cog',
|
|
705
|
-
},
|
|
706
|
-
action: () => navigateToManageProfile(),
|
|
707
|
-
},
|
|
708
|
-
{
|
|
709
|
-
id: "UserMenu.Logout" /* eUserMenuItems.Logout */,
|
|
710
|
-
order: 101,
|
|
711
|
-
textTemplate: {
|
|
712
|
-
text: 'AbpUi::Logout',
|
|
713
|
-
icon: 'fa fa-power-off',
|
|
714
|
-
},
|
|
715
|
-
action: () => {
|
|
716
|
-
authService.logout().subscribe();
|
|
717
|
-
},
|
|
718
|
-
},
|
|
719
|
-
]);
|
|
720
|
-
};
|
|
685
|
+
const BASIC_THEME_USER_MENU_PROVIDERS = [
|
|
686
|
+
{
|
|
687
|
+
provide: APP_INITIALIZER,
|
|
688
|
+
useFactory: configureUserMenu,
|
|
689
|
+
deps: [Injector],
|
|
690
|
+
multi: true,
|
|
691
|
+
},
|
|
692
|
+
];
|
|
693
|
+
function configureUserMenu(injector) {
|
|
694
|
+
const userMenu = injector.get(UserMenuService);
|
|
695
|
+
const authService = injector.get(AuthService);
|
|
696
|
+
const navigateToManageProfile = injector.get(NAVIGATE_TO_MANAGE_PROFILE);
|
|
697
|
+
return () => {
|
|
698
|
+
userMenu.addItems([
|
|
699
|
+
{
|
|
700
|
+
id: "UserMenu.MyAccount" /* eUserMenuItems.MyAccount */,
|
|
701
|
+
order: 100,
|
|
702
|
+
textTemplate: {
|
|
703
|
+
text: 'AbpAccount::MyAccount',
|
|
704
|
+
icon: 'fa fa-cog',
|
|
705
|
+
},
|
|
706
|
+
action: () => navigateToManageProfile(),
|
|
707
|
+
},
|
|
708
|
+
{
|
|
709
|
+
id: "UserMenu.Logout" /* eUserMenuItems.Logout */,
|
|
710
|
+
order: 101,
|
|
711
|
+
textTemplate: {
|
|
712
|
+
text: 'AbpUi::Logout',
|
|
713
|
+
icon: 'fa fa-power-off',
|
|
714
|
+
},
|
|
715
|
+
action: () => {
|
|
716
|
+
authService.logout().subscribe();
|
|
717
|
+
},
|
|
718
|
+
},
|
|
719
|
+
]);
|
|
720
|
+
};
|
|
721
721
|
}
|
|
722
722
|
|
|
723
|
-
const LAYOUTS = [ApplicationLayoutComponent, AccountLayoutComponent, EmptyLayoutComponent];
|
|
724
|
-
class BaseThemeBasicModule {
|
|
725
|
-
}
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
752
|
-
type: NgModule,
|
|
753
|
-
args: [{
|
|
754
|
-
declarations: [
|
|
755
|
-
...LAYOUTS,
|
|
756
|
-
ValidationErrorComponent,
|
|
757
|
-
LogoComponent,
|
|
758
|
-
NavItemsComponent,
|
|
759
|
-
RoutesComponent,
|
|
760
|
-
CurrentUserComponent,
|
|
761
|
-
LanguagesComponent,
|
|
762
|
-
PageAlertContainerComponent,
|
|
763
|
-
TenantBoxComponent,
|
|
764
|
-
AuthWrapperComponent,
|
|
765
|
-
],
|
|
766
|
-
exports: [
|
|
767
|
-
...LAYOUTS,
|
|
768
|
-
ValidationErrorComponent,
|
|
769
|
-
LogoComponent,
|
|
770
|
-
NavItemsComponent,
|
|
771
|
-
RoutesComponent,
|
|
772
|
-
CurrentUserComponent,
|
|
773
|
-
LanguagesComponent,
|
|
774
|
-
PageAlertContainerComponent,
|
|
775
|
-
],
|
|
776
|
-
imports: [
|
|
777
|
-
CoreModule,
|
|
778
|
-
ThemeSharedModule,
|
|
779
|
-
NgbCollapseModule,
|
|
780
|
-
NgbDropdownModule,
|
|
781
|
-
NgxValidateCoreModule,
|
|
782
|
-
],
|
|
783
|
-
}]
|
|
784
|
-
}] });
|
|
785
|
-
class ThemeBasicModule {
|
|
786
|
-
static forRoot() {
|
|
787
|
-
return {
|
|
788
|
-
ngModule: ThemeBasicModule,
|
|
789
|
-
providers: [
|
|
790
|
-
BASIC_THEME_NAV_ITEM_PROVIDERS,
|
|
791
|
-
BASIC_THEME_USER_MENU_PROVIDERS,
|
|
792
|
-
BASIC_THEME_STYLES_PROVIDERS,
|
|
793
|
-
{
|
|
794
|
-
provide: VALIDATION_ERROR_TEMPLATE,
|
|
795
|
-
useValue: ValidationErrorComponent,
|
|
796
|
-
},
|
|
797
|
-
{
|
|
798
|
-
provide: VALIDATION_TARGET_SELECTOR,
|
|
799
|
-
useValue: '.form-group',
|
|
800
|
-
},
|
|
801
|
-
{
|
|
802
|
-
provide: VALIDATION_INVALID_CLASSES,
|
|
803
|
-
useValue: 'is-invalid',
|
|
804
|
-
},
|
|
805
|
-
LazyStyleHandler,
|
|
806
|
-
{
|
|
807
|
-
provide: APP_INITIALIZER,
|
|
808
|
-
useFactory: noop,
|
|
809
|
-
multi: true,
|
|
810
|
-
deps: [LazyStyleHandler],
|
|
811
|
-
},
|
|
812
|
-
],
|
|
813
|
-
};
|
|
814
|
-
}
|
|
815
|
-
}
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
820
|
-
type: NgModule,
|
|
821
|
-
args: [{
|
|
822
|
-
exports: [BaseThemeBasicModule],
|
|
823
|
-
imports: [BaseThemeBasicModule],
|
|
824
|
-
}]
|
|
723
|
+
const LAYOUTS = [ApplicationLayoutComponent, AccountLayoutComponent, EmptyLayoutComponent];
|
|
724
|
+
class BaseThemeBasicModule {
|
|
725
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: BaseThemeBasicModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
726
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.1", ngImport: i0, type: BaseThemeBasicModule, declarations: [ApplicationLayoutComponent, AccountLayoutComponent, EmptyLayoutComponent, ValidationErrorComponent,
|
|
727
|
+
LogoComponent,
|
|
728
|
+
NavItemsComponent,
|
|
729
|
+
RoutesComponent,
|
|
730
|
+
CurrentUserComponent,
|
|
731
|
+
LanguagesComponent,
|
|
732
|
+
PageAlertContainerComponent,
|
|
733
|
+
TenantBoxComponent,
|
|
734
|
+
AuthWrapperComponent], imports: [CoreModule,
|
|
735
|
+
ThemeSharedModule,
|
|
736
|
+
NgbCollapseModule,
|
|
737
|
+
NgbDropdownModule,
|
|
738
|
+
NgxValidateCoreModule], exports: [ApplicationLayoutComponent, AccountLayoutComponent, EmptyLayoutComponent, ValidationErrorComponent,
|
|
739
|
+
LogoComponent,
|
|
740
|
+
NavItemsComponent,
|
|
741
|
+
RoutesComponent,
|
|
742
|
+
CurrentUserComponent,
|
|
743
|
+
LanguagesComponent,
|
|
744
|
+
PageAlertContainerComponent] }); }
|
|
745
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: BaseThemeBasicModule, imports: [CoreModule,
|
|
746
|
+
ThemeSharedModule,
|
|
747
|
+
NgbCollapseModule,
|
|
748
|
+
NgbDropdownModule,
|
|
749
|
+
NgxValidateCoreModule] }); }
|
|
750
|
+
}
|
|
751
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: BaseThemeBasicModule, decorators: [{
|
|
752
|
+
type: NgModule,
|
|
753
|
+
args: [{
|
|
754
|
+
declarations: [
|
|
755
|
+
...LAYOUTS,
|
|
756
|
+
ValidationErrorComponent,
|
|
757
|
+
LogoComponent,
|
|
758
|
+
NavItemsComponent,
|
|
759
|
+
RoutesComponent,
|
|
760
|
+
CurrentUserComponent,
|
|
761
|
+
LanguagesComponent,
|
|
762
|
+
PageAlertContainerComponent,
|
|
763
|
+
TenantBoxComponent,
|
|
764
|
+
AuthWrapperComponent,
|
|
765
|
+
],
|
|
766
|
+
exports: [
|
|
767
|
+
...LAYOUTS,
|
|
768
|
+
ValidationErrorComponent,
|
|
769
|
+
LogoComponent,
|
|
770
|
+
NavItemsComponent,
|
|
771
|
+
RoutesComponent,
|
|
772
|
+
CurrentUserComponent,
|
|
773
|
+
LanguagesComponent,
|
|
774
|
+
PageAlertContainerComponent,
|
|
775
|
+
],
|
|
776
|
+
imports: [
|
|
777
|
+
CoreModule,
|
|
778
|
+
ThemeSharedModule,
|
|
779
|
+
NgbCollapseModule,
|
|
780
|
+
NgbDropdownModule,
|
|
781
|
+
NgxValidateCoreModule,
|
|
782
|
+
],
|
|
783
|
+
}]
|
|
784
|
+
}] });
|
|
785
|
+
class ThemeBasicModule {
|
|
786
|
+
static forRoot() {
|
|
787
|
+
return {
|
|
788
|
+
ngModule: ThemeBasicModule,
|
|
789
|
+
providers: [
|
|
790
|
+
BASIC_THEME_NAV_ITEM_PROVIDERS,
|
|
791
|
+
BASIC_THEME_USER_MENU_PROVIDERS,
|
|
792
|
+
BASIC_THEME_STYLES_PROVIDERS,
|
|
793
|
+
{
|
|
794
|
+
provide: VALIDATION_ERROR_TEMPLATE,
|
|
795
|
+
useValue: ValidationErrorComponent,
|
|
796
|
+
},
|
|
797
|
+
{
|
|
798
|
+
provide: VALIDATION_TARGET_SELECTOR,
|
|
799
|
+
useValue: '.form-group',
|
|
800
|
+
},
|
|
801
|
+
{
|
|
802
|
+
provide: VALIDATION_INVALID_CLASSES,
|
|
803
|
+
useValue: 'is-invalid',
|
|
804
|
+
},
|
|
805
|
+
LazyStyleHandler,
|
|
806
|
+
{
|
|
807
|
+
provide: APP_INITIALIZER,
|
|
808
|
+
useFactory: noop,
|
|
809
|
+
multi: true,
|
|
810
|
+
deps: [LazyStyleHandler],
|
|
811
|
+
},
|
|
812
|
+
],
|
|
813
|
+
};
|
|
814
|
+
}
|
|
815
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ThemeBasicModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
816
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.1", ngImport: i0, type: ThemeBasicModule, imports: [BaseThemeBasicModule], exports: [BaseThemeBasicModule] }); }
|
|
817
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ThemeBasicModule, imports: [BaseThemeBasicModule, BaseThemeBasicModule] }); }
|
|
818
|
+
}
|
|
819
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ThemeBasicModule, decorators: [{
|
|
820
|
+
type: NgModule,
|
|
821
|
+
args: [{
|
|
822
|
+
exports: [BaseThemeBasicModule],
|
|
823
|
+
imports: [BaseThemeBasicModule],
|
|
824
|
+
}]
|
|
825
825
|
}] });
|
|
826
826
|
|
|
827
|
-
/*
|
|
828
|
-
* Public API Surface of theme-basic
|
|
827
|
+
/*
|
|
828
|
+
* Public API Surface of theme-basic
|
|
829
829
|
*/
|
|
830
830
|
|
|
831
|
-
/**
|
|
832
|
-
* Generated bundle index. Do not edit.
|
|
831
|
+
/**
|
|
832
|
+
* Generated bundle index. Do not edit.
|
|
833
833
|
*/
|
|
834
834
|
|
|
835
835
|
export { AccountLayoutComponent, ApplicationLayoutComponent, AuthWrapperComponent, BASIC_THEME_NAV_ITEM_PROVIDERS, BASIC_THEME_STYLES_PROVIDERS, BASIC_THEME_USER_MENU_PROVIDERS, BOOTSTRAP, BaseThemeBasicModule, CurrentUserComponent, EmptyLayoutComponent, LAYOUTS, LAZY_STYLES, LanguagesComponent, LazyStyleHandler, LogoComponent, NavItemsComponent, PageAlertContainerComponent, RoutesComponent, TenantBoxComponent, ThemeBasicModule, ValidationErrorComponent, configureNavItems, configureStyles, configureUserMenu, createLazyStyleHref, initLazyStyleHandler };
|