@abp/ng.theme.basic 5.0.0-beta.2 → 5.0.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/README.md +3 -3
  2. package/bundles/abp-ng.theme.basic-testing.umd.js +8 -10
  3. package/bundles/abp-ng.theme.basic-testing.umd.js.map +1 -1
  4. package/bundles/abp-ng.theme.basic.umd.js +153 -56
  5. package/bundles/abp-ng.theme.basic.umd.js.map +1 -1
  6. package/esm2015/abp-ng.theme.basic.js +1 -1
  7. package/esm2015/lib/components/account-layout/account-layout.component.js +4 -4
  8. package/esm2015/lib/components/account-layout/auth-wrapper/auth-wrapper.component.js +4 -4
  9. package/esm2015/lib/components/account-layout/tenant-box/tenant-box.component.js +4 -4
  10. package/esm2015/lib/components/application-layout/application-layout.component.js +4 -4
  11. package/esm2015/lib/components/empty-layout/empty-layout.component.js +9 -9
  12. package/esm2015/lib/components/index.js +1 -1
  13. package/esm2015/lib/components/logo/logo.component.js +31 -31
  14. package/esm2015/lib/components/nav-items/current-user.component.js +4 -4
  15. package/esm2015/lib/components/nav-items/languages.component.js +73 -73
  16. package/esm2015/lib/components/nav-items/nav-items.component.js +4 -4
  17. package/esm2015/lib/components/page-alert-container/page-alert-container.component.js +4 -4
  18. package/esm2015/lib/components/routes/routes.component.js +5 -4
  19. package/esm2015/lib/components/validation-error/validation-error.component.js +11 -11
  20. package/esm2015/lib/constants/styles.js +150 -145
  21. package/esm2015/lib/enums/components.js +1 -1
  22. package/esm2015/lib/enums/index.js +1 -1
  23. package/esm2015/lib/handlers/index.js +2 -0
  24. package/esm2015/lib/handlers/lazy-style.handler.js +82 -0
  25. package/esm2015/lib/models/index.js +1 -1
  26. package/esm2015/lib/models/layout.js +1 -1
  27. package/esm2015/lib/providers/index.js +1 -1
  28. package/esm2015/lib/providers/nav-item.provider.js +1 -1
  29. package/esm2015/lib/providers/styles.provider.js +1 -1
  30. package/esm2015/lib/services/layout.service.js +5 -5
  31. package/esm2015/lib/theme-basic.module.js +22 -14
  32. package/esm2015/lib/tokens/index.js +2 -0
  33. package/esm2015/lib/tokens/lazy-styles.token.js +3 -0
  34. package/esm2015/public-api.js +3 -1
  35. package/esm2015/testing/abp-ng.theme.basic-testing.js +1 -1
  36. package/esm2015/testing/lib/theme-basic-testing.module.js +5 -5
  37. package/esm2015/testing/public-api.js +1 -1
  38. package/fesm2015/abp-ng.theme.basic-testing.js +4 -4
  39. package/fesm2015/abp-ng.theme.basic-testing.js.map +1 -1
  40. package/fesm2015/abp-ng.theme.basic.js +395 -303
  41. package/fesm2015/abp-ng.theme.basic.js.map +1 -1
  42. package/lib/components/nav-items/current-user.component.d.ts +2 -2
  43. package/lib/components/routes/routes.component.d.ts +4 -1
  44. package/lib/components/validation-error/validation-error.component.d.ts +2 -2
  45. package/lib/constants/styles.d.ts +1 -1
  46. package/lib/handlers/index.d.ts +1 -0
  47. package/lib/handlers/lazy-style.handler.d.ts +23 -0
  48. package/lib/services/layout.service.d.ts +1 -1
  49. package/lib/tokens/index.d.ts +1 -0
  50. package/lib/tokens/lazy-styles.token.d.ts +2 -0
  51. package/package.json +5 -5
  52. package/public-api.d.ts +2 -0
  53. package/esm2015/abp-ng.theme.basic.js.map +0 -1
  54. package/esm2015/lib/components/account-layout/account-layout.component.js.map +0 -1
  55. package/esm2015/lib/components/account-layout/auth-wrapper/auth-wrapper.component.js.map +0 -1
  56. package/esm2015/lib/components/account-layout/tenant-box/tenant-box.component.js.map +0 -1
  57. package/esm2015/lib/components/application-layout/application-layout.component.js.map +0 -1
  58. package/esm2015/lib/components/empty-layout/empty-layout.component.js.map +0 -1
  59. package/esm2015/lib/components/index.js.map +0 -1
  60. package/esm2015/lib/components/logo/logo.component.js.map +0 -1
  61. package/esm2015/lib/components/nav-items/current-user.component.js.map +0 -1
  62. package/esm2015/lib/components/nav-items/languages.component.js.map +0 -1
  63. package/esm2015/lib/components/nav-items/nav-items.component.js.map +0 -1
  64. package/esm2015/lib/components/page-alert-container/page-alert-container.component.js.map +0 -1
  65. package/esm2015/lib/components/routes/routes.component.js.map +0 -1
  66. package/esm2015/lib/components/validation-error/validation-error.component.js.map +0 -1
  67. package/esm2015/lib/constants/styles.js.map +0 -1
  68. package/esm2015/lib/enums/components.js.map +0 -1
  69. package/esm2015/lib/enums/index.js.map +0 -1
  70. package/esm2015/lib/models/index.js.map +0 -1
  71. package/esm2015/lib/models/layout.js.map +0 -1
  72. package/esm2015/lib/providers/index.js.map +0 -1
  73. package/esm2015/lib/providers/nav-item.provider.js.map +0 -1
  74. package/esm2015/lib/providers/styles.provider.js.map +0 -1
  75. package/esm2015/lib/services/layout.service.js.map +0 -1
  76. package/esm2015/lib/theme-basic.module.js.map +0 -1
  77. package/esm2015/public-api.js.map +0 -1
  78. package/esm2015/testing/abp-ng.theme.basic-testing.js.map +0 -1
  79. package/esm2015/testing/lib/theme-basic-testing.module.js.map +0 -1
  80. package/esm2015/testing/public-api.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, Component, Input, ViewChildren, ViewEncapsulation, Inject, ChangeDetectionStrategy, APP_INITIALIZER, NgModule } from '@angular/core';
2
+ import { Injectable, Component, Input, ViewChildren, ViewEncapsulation, Inject, ChangeDetectionStrategy, InjectionToken, APP_INITIALIZER, NgModule } from '@angular/core';
3
3
  import * as i1 from '@abp/ng.core';
4
- import { SubscriptionService, NAVIGATE_TO_MANAGE_PROFILE, DomInsertionService, ReplaceableComponentsService, CONTENT_STRATEGY, CoreModule } from '@abp/ng.core';
4
+ import { SubscriptionService, NAVIGATE_TO_MANAGE_PROFILE, LazyLoadService, LOADING_STRATEGY, DomInsertionService, ReplaceableComponentsService, CONTENT_STRATEGY, CoreModule, noop } from '@abp/ng.core';
5
5
  import { fromEvent } from 'rxjs';
6
6
  import { debounceTime, map } from 'rxjs/operators';
7
7
  import * as i2 from '@angular/router';
@@ -9,7 +9,7 @@ import * as i2$1 from '@angular/common';
9
9
  import * as i3 from '@ng-bootstrap/ng-bootstrap';
10
10
  import { NgbCollapseModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';
11
11
  import * as i1$1 from '@abp/ng.theme.shared';
12
- import { slideFromBottom, collapseWithMargin, NavItemsService, ThemeSharedModule } from '@abp/ng.theme.shared';
12
+ import { slideFromBottom, collapseWithMargin, DocumentDirHandlerService, NavItemsService, ThemeSharedModule } from '@abp/ng.theme.shared';
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 i4 from '@angular/forms';
@@ -41,9 +41,9 @@ class LayoutService {
41
41
  this.subscription.addOne(resize$, () => this.checkWindowWidth());
42
42
  }
43
43
  }
44
- LayoutService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: LayoutService, deps: [{ token: i1.SubscriptionService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Injectable });
45
- LayoutService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: LayoutService });
46
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: LayoutService, decorators: [{
44
+ LayoutService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: LayoutService, deps: [{ token: i1.SubscriptionService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Injectable });
45
+ LayoutService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: LayoutService });
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: LayoutService, decorators: [{
47
47
  type: Injectable
48
48
  }], ctorParameters: function () { return [{ type: i1.SubscriptionService }, { type: i0.ChangeDetectorRef }]; } });
49
49
 
@@ -55,40 +55,40 @@ class LogoComponent {
55
55
  return this.environment.getEnvironment().application;
56
56
  }
57
57
  }
58
- LogoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: LogoComponent, deps: [{ token: i1.EnvironmentService }], target: i0.ɵɵFactoryTarget.Component });
59
- LogoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.6", type: LogoComponent, selector: "abp-logo", ngImport: i0, template: `
60
- <a class="navbar-brand" routerLink="/">
61
- <img
62
- *ngIf="appInfo.logoUrl; else appName"
63
- [src]="appInfo.logoUrl"
64
- [alt]="appInfo.name"
65
- width="100%"
66
- height="auto"
67
- />
68
- </a>
69
-
70
- <ng-template #appName>
71
- {{ appInfo.name }}
72
- </ng-template>
58
+ LogoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: LogoComponent, deps: [{ token: i1.EnvironmentService }], target: i0.ɵɵFactoryTarget.Component });
59
+ LogoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: LogoComponent, selector: "abp-logo", ngImport: i0, template: `
60
+ <a class="navbar-brand" routerLink="/">
61
+ <img
62
+ *ngIf="appInfo.logoUrl; else appName"
63
+ [src]="appInfo.logoUrl"
64
+ [alt]="appInfo.name"
65
+ width="100%"
66
+ height="auto"
67
+ />
68
+ </a>
69
+
70
+ <ng-template #appName>
71
+ {{ appInfo.name }}
72
+ </ng-template>
73
73
  `, isInline: true, directives: [{ type: i2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["routerLink", "target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }, { type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
74
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: LogoComponent, decorators: [{
74
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: LogoComponent, decorators: [{
75
75
  type: Component,
76
76
  args: [{
77
77
  selector: 'abp-logo',
78
- template: `
79
- <a class="navbar-brand" routerLink="/">
80
- <img
81
- *ngIf="appInfo.logoUrl; else appName"
82
- [src]="appInfo.logoUrl"
83
- [alt]="appInfo.name"
84
- width="100%"
85
- height="auto"
86
- />
87
- </a>
88
-
89
- <ng-template #appName>
90
- {{ appInfo.name }}
91
- </ng-template>
78
+ template: `
79
+ <a class="navbar-brand" routerLink="/">
80
+ <img
81
+ *ngIf="appInfo.logoUrl; else appName"
82
+ [src]="appInfo.logoUrl"
83
+ [alt]="appInfo.name"
84
+ width="100%"
85
+ height="auto"
86
+ />
87
+ </a>
88
+
89
+ <ng-template #appName>
90
+ {{ appInfo.name }}
91
+ </ng-template>
92
92
  `,
93
93
  }]
94
94
  }], ctorParameters: function () { return [{ type: i1.EnvironmentService }]; } });
@@ -97,6 +97,7 @@ class RoutesComponent {
97
97
  constructor(routesService, renderer) {
98
98
  this.routesService = routesService;
99
99
  this.renderer = renderer;
100
+ this.rootDropdownExpand = {};
100
101
  this.trackByFn = (_, item) => item.name;
101
102
  }
102
103
  isDropdown(node) {
@@ -109,9 +110,9 @@ class RoutesComponent {
109
110
  });
110
111
  }
111
112
  }
112
- RoutesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: RoutesComponent, deps: [{ token: i1.RoutesService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
113
- RoutesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.6", type: RoutesComponent, selector: "abp-routes", inputs: { smallScreen: "smallScreen" }, viewQueries: [{ propertyName: "childrenContainers", predicate: ["childrenContainer"], descendants: true }], ngImport: i0, template: "<ul class=\"navbar-nav\">\n <ng-container\n *ngFor=\"let route of routesService.visible$ | async; trackBy: trackByFn\"\n [ngTemplateOutlet]=\"isDropdown(route) ? dropdownLink : defaultLink\"\n [ngTemplateOutletContext]=\"{ $implicit: route }\"\n >\n </ng-container>\n\n <ng-template #defaultLink let-route>\n <li class=\"nav-item\" *abpPermission=\"route.requiredPolicy\">\n <a class=\"nav-link\" [routerLink]=\"[route.path]\"\n ><i *ngIf=\"route.iconClass\" [ngClass]=\"route.iconClass\"></i>\n {{ route.name | abpLocalization }}</a\n >\n </li>\n </ng-template>\n\n <ng-template #dropdownLink let-route>\n <ng-container *ngIf=\"route.children?.length\">\n <li\n #navbarRootDropdown\n class=\"nav-item dropdown\"\n display=\"static\"\n *abpPermission=\"route.requiredPolicy\"\n (click)=\"\n navbarRootDropdown.expand\n ? (navbarRootDropdown.expand = false)\n : (navbarRootDropdown.expand = true)\n \"\n >\n <a\n class=\"nav-link dropdown-toggle\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n href=\"javascript:void(0)\"\n >\n <i *ngIf=\"route.iconClass\" [ngClass]=\"route.iconClass\"></i>\n {{ route.name | abpLocalization }}\n </a>\n <div\n #routeContainer\n class=\"dropdown-menu border-0 shadow-sm\"\n (click)=\"$event.preventDefault(); $event.stopPropagation()\"\n [class.d-block]=\"smallScreen && navbarRootDropdown.expand\"\n >\n <ng-container\n *ngTemplateOutlet=\"forTemplate; context: { $implicit: route }\"\n ></ng-container>\n </div>\n </li>\n </ng-container>\n </ng-template>\n\n <ng-template #forTemplate let-route>\n <ng-container *ngFor=\"let child of route.children\">\n <ng-template\n [ngTemplateOutlet]=\"child.children?.length ? dropdownChild : defaultChild\"\n [ngTemplateOutletContext]=\"{ $implicit: child }\"\n ></ng-template>\n </ng-container>\n </ng-template>\n\n <ng-template #defaultChild let-child>\n <ng-container *ngIf=\"child.path\">\n <div class=\"dropdown-submenu\" *abpPermission=\"child.requiredPolicy\">\n <a class=\"dropdown-item\" [routerLink]=\"[child.path]\" (click)=\"closeDropdown()\">\n <i *ngIf=\"child.iconClass\" [ngClass]=\"child.iconClass\"></i>\n {{ child.name | abpLocalization }}</a\n >\n </div>\n </ng-container>\n </ng-template>\n\n <ng-template #dropdownChild let-child>\n <div\n class=\"dropdown-submenu\"\n ngbDropdown\n #dropdownSubmenu=\"ngbDropdown\"\n placement=\"right-top\"\n [autoClose]=\"true\"\n *abpPermission=\"child.requiredPolicy\"\n >\n <div ngbDropdownToggle [class.dropdown-toggle]=\"false\">\n <a\n abpEllipsis=\"210px\"\n [abpEllipsisEnabled]=\"!smallScreen\"\n role=\"button\"\n class=\"btn d-block text-left dropdown-toggle\"\n >\n <i *ngIf=\"child.iconClass\" [ngClass]=\"child.iconClass\"></i>\n {{ child.name | abpLocalization }}\n </a>\n </div>\n <div\n #childrenContainer\n class=\"dropdown-menu border-0 shadow-sm\"\n [class.d-block]=\"smallScreen && dropdownSubmenu.isOpen()\"\n >\n <ng-container *ngTemplateOutlet=\"forTemplate; context: { $implicit: child }\"></ng-container>\n </div>\n </div>\n </ng-template>\n</ul>\n", directives: [{ type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission"] }, { type: i2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["routerLink", "target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }, { type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgbDropdown, selector: "[ngbDropdown]", inputs: ["open", "placement", "container", "autoClose", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { type: i3.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { type: i1$1.EllipsisDirective, selector: "[abpEllipsis]", inputs: ["abpEllipsis", "title", "abpEllipsisEnabled"] }], pipes: { "async": i2$1.AsyncPipe, "abpLocalization": i1.LocalizationPipe } });
114
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: RoutesComponent, decorators: [{
113
+ RoutesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: RoutesComponent, deps: [{ token: i1.RoutesService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
114
+ RoutesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", 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", directives: [{ type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission"] }, { type: i2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["routerLink", "target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }, { type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgbDropdown, selector: "[ngbDropdown]", inputs: ["open", "placement", "container", "autoClose", "display", "dropdownClass"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { type: i3.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { type: i1$1.EllipsisDirective, selector: "[abpEllipsis]", inputs: ["abpEllipsis", "title", "abpEllipsisEnabled"] }], pipes: { "async": i2$1.AsyncPipe, "abpLocalization": i1.LocalizationPipe } });
115
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: RoutesComponent, decorators: [{
115
116
  type: Component,
116
117
  args: [{
117
118
  selector: 'abp-routes',
@@ -130,9 +131,9 @@ class NavItemsComponent {
130
131
  this.trackByFn = (_, element) => element.id;
131
132
  }
132
133
  }
133
- NavItemsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: NavItemsComponent, deps: [{ token: i1$1.NavItemsService }], target: i0.ɵɵFactoryTarget.Component });
134
- NavItemsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.6", type: NavItemsComponent, selector: "abp-nav-items", ngImport: i0, template: "<ul class=\"navbar-nav\">\n <ng-container *ngFor=\"let item of navItems.items$ | async; trackBy: trackByFn\">\n <ng-container *ngIf=\"item.visible()\">\n <li class=\"nav-item d-flex align-items-center\" *abpPermission=\"item.requiredPolicy\">\n <ng-container\n *ngIf=\"item.component; else htmlTemplate\"\n [ngComponentOutlet]=\"item.component\"\n ></ng-container>\n\n <ng-template #htmlTemplate>\n <div [innerHTML]=\"item.html\" (click)=\"item.action ? item.action() : null\"></div>\n </ng-template>\n </li>\n </ng-container>\n </ng-container>\n</ul>\n", directives: [{ type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission"] }, { type: i2$1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModuleFactory"] }], pipes: { "async": i2$1.AsyncPipe } });
135
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: NavItemsComponent, decorators: [{
134
+ NavItemsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: NavItemsComponent, deps: [{ token: i1$1.NavItemsService }], target: i0.ɵɵFactoryTarget.Component });
135
+ NavItemsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", 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 *ngIf=\"item.visible && item.visible()\">\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 ></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>\r\n", directives: [{ type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission"] }, { type: i2$1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModuleFactory"] }], pipes: { "async": i2$1.AsyncPipe } });
136
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: NavItemsComponent, decorators: [{
136
137
  type: Component,
137
138
  args: [{
138
139
  selector: 'abp-nav-items',
@@ -145,9 +146,9 @@ class PageAlertContainerComponent {
145
146
  this.service = service;
146
147
  }
147
148
  }
148
- PageAlertContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: PageAlertContainerComponent, deps: [{ token: i1$1.PageAlertService }], target: i0.ɵɵFactoryTarget.Component });
149
- PageAlertContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.6", type: PageAlertContainerComponent, selector: "abp-page-alert-container", ngImport: i0, template: "<ng-container *ngFor=\"let alert of service.alerts$ | async; let i = index\">\n <div\n class=\"alert alert-{{ alert.type }} fade show\"\n [ngClass]=\"{ 'alert-dismissible fade show': alert.dismissible }\"\n role=\"alert\"\n >\n <h4 class=\"alert-heading\" *ngIf=\"alert.title\">\n {{ alert.title | abpLocalization: alert.titleLocalizationParams }}\n </h4>\n {{ alert.message | abpLocalization: alert.messageLocalizationParams }}\n <button\n *ngIf=\"alert.dismissible\"\n type=\"button\"\n class=\"close\"\n data-dismiss=\"alert\"\n aria-label=\"Close\"\n (click)=\"service.remove(i)\"\n >\n <span aria-hidden=\"true\">&times;</span>\n </button>\n </div>\n</ng-container>\n", directives: [{ type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i2$1.AsyncPipe, "abpLocalization": i1.LocalizationPipe }, encapsulation: i0.ViewEncapsulation.None });
150
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: PageAlertContainerComponent, decorators: [{
149
+ PageAlertContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: PageAlertContainerComponent, deps: [{ token: i1$1.PageAlertService }], target: i0.ɵɵFactoryTarget.Component });
150
+ PageAlertContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", 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 class=\"alert-heading\" *ngIf=\"alert.title\">\r\n {{ alert.title | abpLocalization: alert.titleLocalizationParams }}\r\n </h4>\r\n {{ alert.message | abpLocalization: alert.messageLocalizationParams }}\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", directives: [{ type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i2$1.AsyncPipe, "abpLocalization": i1.LocalizationPipe }, encapsulation: i0.ViewEncapsulation.None });
151
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: PageAlertContainerComponent, decorators: [{
151
152
  type: Component,
152
153
  args: [{
153
154
  selector: 'abp-page-alert-container',
@@ -161,9 +162,9 @@ class TenantBoxComponent {
161
162
  this.service = service;
162
163
  }
163
164
  }
164
- TenantBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: TenantBoxComponent, deps: [{ token: i1$2.TenantBoxService }], target: i0.ɵɵFactoryTarget.Component });
165
- TenantBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.6", type: TenantBoxComponent, selector: "abp-tenant-box", providers: [TenantBoxService], ngImport: i0, template: "<ng-container *ngIf=\"(service.currentTenant$ | async) || {} as currentTenant\">\n <div class=\"card shadow-sm rounded mb-3\">\n <div class=\"card-body px-5\">\n <div class=\"row\">\n <div class=\"col\">\n <span style=\"font-size: 0.8em\" class=\"text-uppercase text-muted\">{{\n 'AbpUiMultiTenancy::Tenant' | abpLocalization\n }}</span\n ><br />\n <h6 class=\"m-0 d-inline-block\">\n <i>{{ currentTenant.name || ('AbpUiMultiTenancy::NotSelected' | abpLocalization) }}</i>\n </h6>\n </div>\n <div class=\"col-auto\">\n <a\n id=\"AbpTenantSwitchLink\"\n href=\"javascript:void(0);\"\n class=\"btn btn-sm mt-3 btn-outline-primary\"\n (click)=\"service.onSwitch()\"\n >{{ 'AbpUiMultiTenancy::Switch' | abpLocalization }}</a\n >\n </div>\n </div>\n </div>\n </div>\n\n <abp-modal [(visible)]=\"service.isModalVisible\" [busy]=\"service.modalBusy\">\n <ng-template #abpHeader>\n <h5>Switch Tenant</h5>\n </ng-template>\n <ng-template #abpBody>\n <form (ngSubmit)=\"service.save()\">\n <div class=\"mt-2\">\n <div class=\"form-group\">\n <label for=\"name\">{{ 'AbpUiMultiTenancy::Name' | abpLocalization }}</label>\n <input\n [(ngModel)]=\"service.name\"\n type=\"text\"\n id=\"name\"\n name=\"tenant\"\n class=\"form-control\"\n autofocus\n />\n </div>\n <p>{{ 'AbpUiMultiTenancy::SwitchTenantHint' | abpLocalization }}</p>\n </div>\n </form>\n </ng-template>\n <ng-template #abpFooter>\n <button abpClose type=\"button\" class=\"btn btn-secondary\">\n {{ 'AbpTenantManagement::Cancel' | abpLocalization }}\n </button>\n <abp-button\n type=\"abp-button\"\n iconClass=\"fa fa-check\"\n (click)=\"service.save()\"\n [disabled]=\"currentTenant?.name === service.name\"\n >\n <span>{{ 'AbpTenantManagement::Save' | abpLocalization }}</span>\n </abp-button>\n </ng-template>\n </abp-modal>\n</ng-container>\n", components: [{ type: i1$1.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { type: i1$1.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }], directives: [{ type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1.AutofocusDirective, selector: "[autofocus]", inputs: ["autofocus"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i1$1.ModalCloseDirective, selector: "[abpClose]" }], pipes: { "async": i2$1.AsyncPipe, "abpLocalization": i1.LocalizationPipe } });
166
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: TenantBoxComponent, decorators: [{
165
+ TenantBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: TenantBoxComponent, deps: [{ token: i1$2.TenantBoxService }], target: i0.ɵɵFactoryTarget.Component });
166
+ TenantBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", 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", components: [{ type: i1$1.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { type: i1$1.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }], directives: [{ type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1.AutofocusDirective, selector: "[autofocus]", inputs: ["autofocus"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i1$1.ModalCloseDirective, selector: "[abpClose]" }], pipes: { "async": i2$1.AsyncPipe, "abpLocalization": i1.LocalizationPipe } });
167
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: TenantBoxComponent, decorators: [{
167
168
  type: Component,
168
169
  args: [{
169
170
  selector: 'abp-tenant-box',
@@ -177,9 +178,9 @@ class AuthWrapperComponent {
177
178
  this.service = service;
178
179
  }
179
180
  }
180
- AuthWrapperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: AuthWrapperComponent, deps: [{ token: i1$2.AuthWrapperService }], target: i0.ɵɵFactoryTarget.Component });
181
- AuthWrapperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.6", type: AuthWrapperComponent, selector: "abp-auth-wrapper", providers: [AuthWrapperService], ngImport: i0, template: "<div class=\"row\">\n <div class=\"mx-auto col col-md-5\">\n <ng-container *ngIf=\"(service.isMultiTenancyEnabled$ | async) && service.isTenantBoxVisible\">\n <abp-tenant-box\n *abpReplaceableTemplate=\"{ componentKey: service.tenantBoxKey }\"\n ></abp-tenant-box>\n </ng-container>\n\n <div class=\"abp-account-container\">\n <div\n *ngIf=\"service.enableLocalLogin$ | async; else disableLocalLoginTemplate\"\n class=\"card mt-3 shadow-sm rounded\"\n >\n <div class=\"card-body p-5\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #disableLocalLoginTemplate>\n <div class=\"alert alert-warning\">\n <strong>{{ 'AbpAccount::InvalidLoginRequest' | abpLocalization }}</strong>\n {{ 'AbpAccount::ThereAreNoLoginSchemesConfiguredForThisClient' | abpLocalization }}\n </div>\n</ng-template>\n", components: [{ type: TenantBoxComponent, selector: "abp-tenant-box" }], directives: [{ type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }], pipes: { "async": i2$1.AsyncPipe, "abpLocalization": i1.LocalizationPipe } });
182
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: AuthWrapperComponent, decorators: [{
181
+ AuthWrapperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: AuthWrapperComponent, deps: [{ token: i1$2.AuthWrapperService }], target: i0.ɵɵFactoryTarget.Component });
182
+ AuthWrapperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", 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", components: [{ type: TenantBoxComponent, selector: "abp-tenant-box" }], directives: [{ type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }], pipes: { "async": i2$1.AsyncPipe, "abpLocalization": i1.LocalizationPipe } });
183
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: AuthWrapperComponent, decorators: [{
183
184
  type: Component,
184
185
  args: [{
185
186
  selector: 'abp-auth-wrapper',
@@ -199,9 +200,9 @@ class AccountLayoutComponent {
199
200
  }
200
201
  // required for dynamic component
201
202
  AccountLayoutComponent.type = "account" /* account */;
202
- AccountLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: AccountLayoutComponent, deps: [{ token: LayoutService }], target: i0.ɵɵFactoryTarget.Component });
203
- AccountLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.6", type: AccountLayoutComponent, selector: "abp-layout-account", providers: [LayoutService, SubscriptionService], ngImport: i0, template: "<nav\n class=\"navbar navbar-expand-lg navbar-dark bg-dark shadow-sm flex-column flex-md-row mb-4\"\n id=\"main-navbar\"\n style=\"min-height: 4rem\"\n>\n <div class=\"container\">\n <abp-logo *abpReplaceableTemplate=\"{ componentKey: service.logoComponentKey }\"></abp-logo>\n <button\n class=\"navbar-toggler\"\n type=\"button\"\n [attr.aria-expanded]=\"!service.isCollapsed\"\n (click)=\"service.isCollapsed = !service.isCollapsed\"\n >\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n <div\n class=\"navbar-collapse\"\n [class.overflow-hidden]=\"service.smallScreen\"\n id=\"main-navbar-collapse\"\n >\n <ng-container *ngTemplateOutlet=\"!service.smallScreen ? navigations : null\"></ng-container>\n\n <div\n *ngIf=\"service.smallScreen\"\n [@collapseWithMargin]=\"service.isCollapsed ? 'collapsed' : 'expanded'\"\n >\n <ng-container *ngTemplateOutlet=\"navigations\"></ng-container>\n </div>\n\n <ng-template #navigations>\n <abp-routes\n *abpReplaceableTemplate=\"{\n componentKey: service.routesComponentKey,\n inputs: {\n smallScreen: { value: service.smallScreen }\n }\n }\"\n class=\"mx-auto\"\n [smallScreen]=\"service.smallScreen\"\n ></abp-routes>\n\n <abp-nav-items\n *abpReplaceableTemplate=\"{\n componentKey: service.navItemsComponentKey\n }\"\n ></abp-nav-items>\n </ng-template>\n </div>\n </div>\n</nav>\n\n<!-- [@slideFromBottom]=\"outlet.isActivated && outlet.activatedRoute?.routeConfig?.path\" TODO: throws ExpressionChangedAfterItHasBeenCheck when animation is active. It should be fixed -->\n<div class=\"container\">\n <abp-page-alert-container></abp-page-alert-container>\n <abp-auth-wrapper\n *abpReplaceableTemplate=\"{\n componentKey: authWrapperKey\n }\"\n >\n <router-outlet #outlet=\"outlet\"></router-outlet>\n </abp-auth-wrapper>\n</div>\n", components: [{ type: LogoComponent, selector: "abp-logo" }, { type: RoutesComponent, selector: "abp-routes", inputs: ["smallScreen"] }, { type: NavItemsComponent, selector: "abp-nav-items" }, { type: PageAlertContainerComponent, selector: "abp-page-alert-container" }, { type: AuthWrapperComponent, selector: "abp-auth-wrapper" }], directives: [{ type: i3.NgbNavbar, selector: ".navbar" }, { type: i1.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate"], exportAs: ["outlet"] }] });
204
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: AccountLayoutComponent, decorators: [{
203
+ AccountLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: AccountLayoutComponent, deps: [{ token: LayoutService }], target: i0.ɵɵFactoryTarget.Component });
204
+ AccountLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", 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", components: [{ type: LogoComponent, selector: "abp-logo" }, { type: RoutesComponent, selector: "abp-routes", inputs: ["smallScreen"] }, { type: NavItemsComponent, selector: "abp-nav-items" }, { type: PageAlertContainerComponent, selector: "abp-page-alert-container" }, { type: AuthWrapperComponent, selector: "abp-auth-wrapper" }], directives: [{ type: i3.NgbNavbar, selector: ".navbar" }, { type: i1.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate"], exportAs: ["outlet"] }] });
205
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: AccountLayoutComponent, decorators: [{
205
206
  type: Component,
206
207
  args: [{
207
208
  selector: 'abp-layout-account',
@@ -220,9 +221,9 @@ class ApplicationLayoutComponent {
220
221
  }
221
222
  // required for dynamic component
222
223
  ApplicationLayoutComponent.type = "application" /* application */;
223
- ApplicationLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: ApplicationLayoutComponent, deps: [{ token: LayoutService }], target: i0.ɵɵFactoryTarget.Component });
224
- ApplicationLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.6", type: ApplicationLayoutComponent, selector: "abp-layout-application", providers: [LayoutService, SubscriptionService], ngImport: i0, template: "<nav\n class=\"navbar navbar-expand-lg navbar-dark bg-dark shadow-sm flex-column flex-md-row mb-4\"\n id=\"main-navbar\"\n style=\"min-height: 4rem\"\n>\n <div class=\"container\">\n <abp-logo *abpReplaceableTemplate=\"{ componentKey: service.logoComponentKey }\"></abp-logo>\n <button\n class=\"navbar-toggler\"\n type=\"button\"\n [attr.aria-expanded]=\"!service.isCollapsed\"\n (click)=\"service.isCollapsed = !service.isCollapsed\"\n >\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n <div class=\"navbar-collapse\" [class.overflow-hidden]=\"service.smallScreen\" id=\"main-navbar-collapse\">\n <ng-container *ngTemplateOutlet=\"!service.smallScreen ? navigations : null\"></ng-container>\n\n <div *ngIf=\"service.smallScreen\" [@collapseWithMargin]=\"service.isCollapsed ? 'collapsed' : 'expanded'\">\n <ng-container *ngTemplateOutlet=\"navigations\"></ng-container>\n </div>\n\n <ng-template #navigations>\n <abp-routes\n *abpReplaceableTemplate=\"{\n componentKey: service.routesComponentKey,\n inputs: {\n smallScreen: { value: service.smallScreen }\n }\n }\"\n class=\"mx-auto\"\n [smallScreen]=\"service.smallScreen\"\n ></abp-routes>\n\n <abp-nav-items\n *abpReplaceableTemplate=\"{\n componentKey: service.navItemsComponentKey\n }\"\n ></abp-nav-items>\n </ng-template>\n </div>\n </div>\n</nav>\n\n<!-- [@slideFromBottom]=\"outlet.isActivated && outlet.activatedRoute?.routeConfig?.path\" TODO: throws ExpressionChangedAfterItHasBeenCheck when animation is active. It should be fixed -->\n<div class=\"container\">\n <abp-page-alert-container></abp-page-alert-container>\n\n <router-outlet #outlet=\"outlet\"></router-outlet>\n</div>\n", components: [{ type: LogoComponent, selector: "abp-logo" }, { type: RoutesComponent, selector: "abp-routes", inputs: ["smallScreen"] }, { type: NavItemsComponent, selector: "abp-nav-items" }, { type: PageAlertContainerComponent, selector: "abp-page-alert-container" }], directives: [{ type: i3.NgbNavbar, selector: ".navbar" }, { type: i1.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate"], exportAs: ["outlet"] }], animations: [slideFromBottom, collapseWithMargin] });
225
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: ApplicationLayoutComponent, decorators: [{
224
+ ApplicationLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ApplicationLayoutComponent, deps: [{ token: LayoutService }], target: i0.ɵɵFactoryTarget.Component });
225
+ ApplicationLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", 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", components: [{ type: LogoComponent, selector: "abp-logo" }, { type: RoutesComponent, selector: "abp-routes", inputs: ["smallScreen"] }, { type: NavItemsComponent, selector: "abp-nav-items" }, { type: PageAlertContainerComponent, selector: "abp-page-alert-container" }], directives: [{ type: i3.NgbNavbar, selector: ".navbar" }, { type: i1.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate"], exportAs: ["outlet"] }], animations: [slideFromBottom, collapseWithMargin] });
226
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ApplicationLayoutComponent, decorators: [{
226
227
  type: Component,
227
228
  args: [{
228
229
  selector: 'abp-layout-application',
@@ -235,18 +236,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImpor
235
236
  class EmptyLayoutComponent {
236
237
  }
237
238
  EmptyLayoutComponent.type = "empty" /* empty */;
238
- EmptyLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: EmptyLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
239
- EmptyLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.6", type: EmptyLayoutComponent, selector: "abp-layout-empty", ngImport: i0, template: `
240
- <router-outlet></router-outlet>
241
- <abp-confirmation></abp-confirmation>
239
+ EmptyLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: EmptyLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
240
+ EmptyLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: EmptyLayoutComponent, selector: "abp-layout-empty", ngImport: i0, template: `
241
+ <router-outlet></router-outlet>
242
+ <abp-confirmation></abp-confirmation>
242
243
  `, isInline: true, components: [{ type: i1$1.ConfirmationComponent, selector: "abp-confirmation" }], directives: [{ type: i2.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate"], exportAs: ["outlet"] }] });
243
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: EmptyLayoutComponent, decorators: [{
244
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: EmptyLayoutComponent, decorators: [{
244
245
  type: Component,
245
246
  args: [{
246
247
  selector: 'abp-layout-empty',
247
- template: `
248
- <router-outlet></router-outlet>
249
- <abp-confirmation></abp-confirmation>
248
+ template: `
249
+ <router-outlet></router-outlet>
250
+ <abp-confirmation></abp-confirmation>
250
251
  `,
251
252
  }]
252
253
  }] });
@@ -270,9 +271,9 @@ class CurrentUserComponent {
270
271
  this.authService.logout().subscribe();
271
272
  }
272
273
  }
273
- CurrentUserComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: CurrentUserComponent, deps: [{ token: NAVIGATE_TO_MANAGE_PROFILE }, { token: i1.AuthService }, { token: i1.ConfigStateService }, { token: i1.SessionStateService }], target: i0.ɵɵFactoryTarget.Component });
274
- CurrentUserComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.6", type: CurrentUserComponent, selector: "abp-current-user", ngImport: i0, template: "<ng-template #loginBtn>\n <a role=\"button\" class=\"nav-link pointer\" (click)=\"navigateToLogin()\">{{\n 'AbpAccount::Login' | abpLocalization\n }}</a>\n</ng-template>\n<div\n *ngIf=\"(currentUser$ | async)?.isAuthenticated; else loginBtn\"\n ngbDropdown\n class=\"dropdown\"\n #currentUserDropdown=\"ngbDropdown\"\n display=\"static\"\n>\n <a\n ngbDropdownToggle\n class=\"nav-link\"\n href=\"javascript:void(0)\"\n role=\"button\"\n id=\"dropdownMenuLink\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <small *ngIf=\"(selectedTenant$ | async)?.name as tenantName\"\n ><i>{{ tenantName }}</i\n >\\</small\n >\n <strong>{{ (currentUser$ | async)?.userName }}</strong>\n </a>\n <div\n class=\"dropdown-menu dropdown-menu-right border-0 shadow-sm\"\n aria-labelledby=\"dropdownMenuLink\"\n [class.d-block]=\"smallScreen && currentUserDropdown.isOpen()\"\n >\n <a class=\"dropdown-item pointer\" (click)=\"navigateToManageProfile()\"\n ><i class=\"fa fa-cog mr-1\"></i>{{ 'AbpAccount::MyAccount' | abpLocalization }}</a\n >\n <a class=\"dropdown-item\" href=\"javascript:void(0)\" (click)=\"logout()\"\n ><i class=\"fa fa-power-off mr-1\"></i>{{ 'AbpUi::Logout' | abpLocalization }}</a\n >\n </div>\n</div>\n", directives: [{ type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgbDropdown, selector: "[ngbDropdown]", inputs: ["open", "placement", "container", "autoClose", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { type: i3.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }], pipes: { "abpLocalization": i1.LocalizationPipe, "async": i2$1.AsyncPipe } });
275
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: CurrentUserComponent, decorators: [{
274
+ CurrentUserComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: CurrentUserComponent, deps: [{ token: NAVIGATE_TO_MANAGE_PROFILE }, { token: i1.AuthService }, { token: i1.ConfigStateService }, { token: i1.SessionStateService }], target: i0.ɵɵFactoryTarget.Component });
275
+ CurrentUserComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", 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 <a class=\"dropdown-item pointer\" (click)=\"navigateToManageProfile()\"\r\n ><i class=\"fa fa-cog me-1\"></i>{{ 'AbpAccount::MyAccount' | abpLocalization }}</a\r\n >\r\n <a class=\"dropdown-item\" href=\"javascript:void(0)\" (click)=\"logout()\"\r\n ><i class=\"fa fa-power-off me-1\"></i>{{ 'AbpUi::Logout' | abpLocalization }}</a\r\n >\r\n </div>\r\n</div>\r\n", directives: [{ type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgbDropdown, selector: "[ngbDropdown]", inputs: ["open", "placement", "container", "autoClose", "display", "dropdownClass"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { type: i3.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }], pipes: { "abpLocalization": i1.LocalizationPipe, "async": i2$1.AsyncPipe } });
276
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: CurrentUserComponent, decorators: [{
276
277
  type: Component,
277
278
  args: [{
278
279
  selector: 'abp-current-user',
@@ -293,7 +294,7 @@ class LanguagesComponent {
293
294
  return window.innerWidth < 992;
294
295
  }
295
296
  get defaultLanguage$() {
296
- return this.languages$.pipe(map(languages => (languages === null || languages === void 0 ? void 0 : languages.find(lang => lang.cultureName === this.selectedLangCulture).displayName) || ''));
297
+ return this.languages$.pipe(map(languages => { var _a; return ((_a = languages === null || languages === void 0 ? void 0 : languages.find(lang => lang.cultureName === this.selectedLangCulture)) === null || _a === void 0 ? void 0 : _a.displayName) || ''; }));
297
298
  }
298
299
  get dropdownLanguages$() {
299
300
  return this.languages$.pipe(map(languages => (languages === null || languages === void 0 ? void 0 : languages.filter(lang => lang.cultureName !== this.selectedLangCulture)) || []));
@@ -305,80 +306,80 @@ class LanguagesComponent {
305
306
  this.sessionState.setLanguage(cultureName);
306
307
  }
307
308
  }
308
- LanguagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: LanguagesComponent, deps: [{ token: i1.SessionStateService }, { token: i1.ConfigStateService }], target: i0.ɵɵFactoryTarget.Component });
309
- LanguagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.6", type: LanguagesComponent, selector: "abp-languages", ngImport: i0, template: `
310
- <div
311
- *ngIf="(dropdownLanguages$ | async)?.length > 0"
312
- class="dropdown"
313
- ngbDropdown
314
- #languageDropdown="ngbDropdown"
315
- display="static"
316
- >
317
- <a
318
- ngbDropdownToggle
319
- class="nav-link"
320
- href="javascript:void(0)"
321
- role="button"
322
- id="dropdownMenuLink"
323
- data-toggle="dropdown"
324
- aria-haspopup="true"
325
- aria-expanded="false"
326
- >
327
- {{ defaultLanguage$ | async }}
328
- </a>
329
- <div
330
- class="dropdown-menu dropdown-menu-right border-0 shadow-sm"
331
- aria-labelledby="dropdownMenuLink"
332
- [class.d-block]="smallScreen && languageDropdown.isOpen()"
333
- >
334
- <a
335
- *ngFor="let lang of dropdownLanguages$ | async"
336
- href="javascript:void(0)"
337
- class="dropdown-item"
338
- (click)="onChangeLang(lang.cultureName)"
339
- >{{ lang?.displayName }}</a
340
- >
341
- </div>
342
- </div>
343
- `, isInline: true, directives: [{ type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgbDropdown, selector: "[ngbDropdown]", inputs: ["open", "placement", "container", "autoClose", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { type: i3.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i2$1.AsyncPipe } });
344
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: LanguagesComponent, decorators: [{
309
+ LanguagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: LanguagesComponent, deps: [{ token: i1.SessionStateService }, { token: i1.ConfigStateService }], target: i0.ɵɵFactoryTarget.Component });
310
+ LanguagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: LanguagesComponent, selector: "abp-languages", ngImport: i0, template: `
311
+ <div
312
+ *ngIf="((dropdownLanguages$ | async)?.length || 0) > 0"
313
+ class="dropdown"
314
+ ngbDropdown
315
+ #languageDropdown="ngbDropdown"
316
+ display="static"
317
+ >
318
+ <a
319
+ ngbDropdownToggle
320
+ class="nav-link"
321
+ href="javascript:void(0)"
322
+ role="button"
323
+ id="dropdownMenuLink"
324
+ data-toggle="dropdown"
325
+ aria-haspopup="true"
326
+ aria-expanded="false"
327
+ >
328
+ {{ defaultLanguage$ | async }}
329
+ </a>
330
+ <div
331
+ class="dropdown-menu dropdown-menu-end border-0 shadow-sm"
332
+ aria-labelledby="dropdownMenuLink"
333
+ [class.d-block]="smallScreen && languageDropdown.isOpen()"
334
+ >
335
+ <a
336
+ *ngFor="let lang of dropdownLanguages$ | async"
337
+ href="javascript:void(0)"
338
+ class="dropdown-item"
339
+ (click)="onChangeLang(lang.cultureName || '')"
340
+ >{{ lang?.displayName }}</a
341
+ >
342
+ </div>
343
+ </div>
344
+ `, isInline: true, directives: [{ type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgbDropdown, selector: "[ngbDropdown]", inputs: ["open", "placement", "container", "autoClose", "display", "dropdownClass"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { type: i3.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i2$1.AsyncPipe } });
345
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: LanguagesComponent, decorators: [{
345
346
  type: Component,
346
347
  args: [{
347
348
  selector: 'abp-languages',
348
- template: `
349
- <div
350
- *ngIf="(dropdownLanguages$ | async)?.length > 0"
351
- class="dropdown"
352
- ngbDropdown
353
- #languageDropdown="ngbDropdown"
354
- display="static"
355
- >
356
- <a
357
- ngbDropdownToggle
358
- class="nav-link"
359
- href="javascript:void(0)"
360
- role="button"
361
- id="dropdownMenuLink"
362
- data-toggle="dropdown"
363
- aria-haspopup="true"
364
- aria-expanded="false"
365
- >
366
- {{ defaultLanguage$ | async }}
367
- </a>
368
- <div
369
- class="dropdown-menu dropdown-menu-right border-0 shadow-sm"
370
- aria-labelledby="dropdownMenuLink"
371
- [class.d-block]="smallScreen && languageDropdown.isOpen()"
372
- >
373
- <a
374
- *ngFor="let lang of dropdownLanguages$ | async"
375
- href="javascript:void(0)"
376
- class="dropdown-item"
377
- (click)="onChangeLang(lang.cultureName)"
378
- >{{ lang?.displayName }}</a
379
- >
380
- </div>
381
- </div>
349
+ template: `
350
+ <div
351
+ *ngIf="((dropdownLanguages$ | async)?.length || 0) > 0"
352
+ class="dropdown"
353
+ ngbDropdown
354
+ #languageDropdown="ngbDropdown"
355
+ display="static"
356
+ >
357
+ <a
358
+ ngbDropdownToggle
359
+ class="nav-link"
360
+ href="javascript:void(0)"
361
+ role="button"
362
+ id="dropdownMenuLink"
363
+ data-toggle="dropdown"
364
+ aria-haspopup="true"
365
+ aria-expanded="false"
366
+ >
367
+ {{ defaultLanguage$ | async }}
368
+ </a>
369
+ <div
370
+ class="dropdown-menu dropdown-menu-end border-0 shadow-sm"
371
+ aria-labelledby="dropdownMenuLink"
372
+ [class.d-block]="smallScreen && languageDropdown.isOpen()"
373
+ >
374
+ <a
375
+ *ngFor="let lang of dropdownLanguages$ | async"
376
+ href="javascript:void(0)"
377
+ class="dropdown-item"
378
+ (click)="onChangeLang(lang.cultureName || '')"
379
+ >{{ lang?.displayName }}</a
380
+ >
381
+ </div>
382
+ </div>
382
383
  `,
383
384
  }]
384
385
  }], ctorParameters: function () { return [{ type: i1.SessionStateService }, { type: i1.ConfigStateService }]; } });
@@ -398,26 +399,105 @@ class ValidationErrorComponent extends ValidationErrorComponent$1 {
398
399
  });
399
400
  }
400
401
  }
401
- ValidationErrorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: ValidationErrorComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
402
- ValidationErrorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.6", type: ValidationErrorComponent, selector: "abp-validation-error", usesInheritance: true, ngImport: i0, template: `
403
- <div class="invalid-feedback" *ngFor="let error of abpErrors; trackBy: trackByFn">
404
- {{ error.message | abpLocalization: error.interpoliteParams }}
405
- </div>
402
+ ValidationErrorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ValidationErrorComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
403
+ ValidationErrorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: ValidationErrorComponent, selector: "abp-validation-error", usesInheritance: true, ngImport: i0, template: `
404
+ <div class="invalid-feedback" *ngFor="let error of abpErrors; trackBy: trackByFn">
405
+ {{ error.message | abpLocalization: error.interpoliteParams }}
406
+ </div>
406
407
  `, isInline: true, directives: [{ type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "abpLocalization": i1.LocalizationPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
407
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: ValidationErrorComponent, decorators: [{
408
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ValidationErrorComponent, decorators: [{
408
409
  type: Component,
409
410
  args: [{
410
411
  selector: 'abp-validation-error',
411
- template: `
412
- <div class="invalid-feedback" *ngFor="let error of abpErrors; trackBy: trackByFn">
413
- {{ error.message | abpLocalization: error.interpoliteParams }}
414
- </div>
412
+ template: `
413
+ <div class="invalid-feedback" *ngFor="let error of abpErrors; trackBy: trackByFn">
414
+ {{ error.message | abpLocalization: error.interpoliteParams }}
415
+ </div>
415
416
  `,
416
417
  changeDetection: ChangeDetectionStrategy.OnPush,
417
418
  encapsulation: ViewEncapsulation.None,
418
419
  }]
419
420
  }] });
420
421
 
422
+ const LAZY_STYLES = new InjectionToken('LAZY_STYLES');
423
+
424
+ const BOOTSTRAP = 'bootstrap-{{dir}}.min.css';
425
+ class LazyStyleHandler {
426
+ constructor(injector) {
427
+ this._dir = 'ltr';
428
+ this.loaded = new Map();
429
+ this.setStyles(injector);
430
+ this.setLazyLoad(injector);
431
+ this.listenToDirectionChanges(injector);
432
+ }
433
+ set dir(dir) {
434
+ if (dir === this._dir)
435
+ return;
436
+ this.switchCSS(dir);
437
+ this._dir = dir;
438
+ }
439
+ get dir() {
440
+ return this._dir;
441
+ }
442
+ getHrefFromLink(link) {
443
+ if (!link)
444
+ return '';
445
+ const a = document.createElement('a');
446
+ a.href = link.href;
447
+ return a.pathname.replace(/^\//, '');
448
+ }
449
+ getLoadedBootstrap() {
450
+ const href = createLazyStyleHref(BOOTSTRAP, this.dir);
451
+ const selector = `[href*="${href.replace(/\.css$/, '')}"]`;
452
+ const link = document.querySelector(selector);
453
+ return { href, link };
454
+ }
455
+ listenToDirectionChanges(injector) {
456
+ const docDirHandler = injector.get(DocumentDirHandlerService);
457
+ // will always listen, no need to unsubscribe
458
+ docDirHandler.dir$.subscribe(dir => {
459
+ this.dir = dir;
460
+ });
461
+ }
462
+ setLazyLoad(injector) {
463
+ this.lazyLoad = injector.get(LazyLoadService);
464
+ const { href, link } = this.getLoadedBootstrap();
465
+ this.lazyLoad.loaded.set(href, link);
466
+ }
467
+ setStyles(injector) {
468
+ this.styles = injector.get(LAZY_STYLES, [BOOTSTRAP]);
469
+ }
470
+ switchCSS(dir) {
471
+ this.styles.forEach(style => {
472
+ const oldHref = createLazyStyleHref(style, this.dir);
473
+ const newHref = createLazyStyleHref(style, dir);
474
+ const link = this.loaded.get(newHref);
475
+ const href = this.getHrefFromLink(link) || newHref;
476
+ const strategy = LOADING_STRATEGY.PrependAnonymousStyleToHead(href);
477
+ this.lazyLoad.load(strategy).subscribe(() => {
478
+ const oldLink = this.lazyLoad.loaded.get(oldHref);
479
+ this.loaded.delete(newHref);
480
+ this.loaded.set(oldHref, oldLink);
481
+ const newLink = this.lazyLoad.loaded.get(href);
482
+ this.lazyLoad.loaded.delete(href);
483
+ this.lazyLoad.loaded.set(newHref, newLink);
484
+ this.lazyLoad.remove(oldHref);
485
+ });
486
+ });
487
+ }
488
+ }
489
+ LazyStyleHandler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: LazyStyleHandler, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
490
+ LazyStyleHandler.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: LazyStyleHandler });
491
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: LazyStyleHandler, decorators: [{
492
+ type: Injectable
493
+ }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
494
+ function createLazyStyleHref(style, dir) {
495
+ return style.replace(/{{\s*dir\s*}}/g, dir);
496
+ }
497
+ function initLazyStyleHandler(injector) {
498
+ return () => new LazyStyleHandler(injector);
499
+ }
500
+
421
501
  const BASIC_THEME_NAV_ITEM_PROVIDERS = [
422
502
  {
423
503
  provide: APP_INITIALIZER,
@@ -443,150 +523,155 @@ function configureNavItems(navItems) {
443
523
  };
444
524
  }
445
525
 
446
- var styles = `
447
- .content-header-title {
448
- font-size: 24px;
449
- }
450
- .entry-row {
451
- margin-bottom: 15px;
452
- }
453
- #main-navbar-tools a.dropdown-toggle {
454
- text-decoration: none;
455
- color: #fff;
456
- }
457
- .navbar .dropdown-submenu {
458
- position: relative;
459
- }
460
- .navbar .dropdown-menu {
461
- margin: 0;
462
- padding: 0;
463
- }
464
- .navbar .dropdown-menu a {
465
- font-size: .9em;
466
- padding: 10px 15px;
467
- display: block;
468
- min-width: 210px;
469
- text-align: left;
470
- border-radius: 0.25rem;
471
- min-height: 44px;
472
- }
473
- [dir=rtl] .navbar .dropdown-menu a {
474
- text-align: right!important;
475
- }
476
- .navbar .dropdown-submenu a::after {
477
- transform: rotate(-90deg);
478
- position: absolute;
479
- right: 16px;
480
- top: 18px;
481
- }
482
- [dir=rtl] .navbar .dropdown-submenu a::after {
483
- transform: rotate(90deg);
484
- left: 16px;
485
- right: auto;
486
- top: 20px;
487
- }
488
- .navbar .dropdown-submenu .dropdown-menu {
489
- top: 0;
490
- left: 100%;
491
- }
492
- .card-header .btn {
493
- padding: 2px 6px;
494
- }
495
- .card-header h5 {
496
- margin: 0;
497
- }
498
- .container > .card {
499
- box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;
500
- }
501
- @media screen and (min-width: 992px) {
502
- .navbar .dropdown:hover > .dropdown-menu {
503
- display: block;
504
- }
505
-
506
- .navbar .dropdown-submenu:hover > .dropdown-menu {
507
- display: block;
508
- }
509
- }
510
- .input-validation-error {
511
- border-color: #dc3545;
512
- }
513
- .field-validation-error {
514
- font-size: 0.8em;
515
- }
516
- .ui-table .ui-table-tbody > tr.empty-row > div.empty-row-content {
517
- border: 1px solid #c8c8c8;
518
- }
519
- .abp-loading {
520
- background: rgba(0, 0, 0, 0.05);
521
- }
522
- .modal-backdrop {
523
- background-color: rgba(0, 0, 0, 0.6);
524
- }
525
-
526
- .confirmation .confirmation-backdrop {
527
- background: rgba(0, 0, 0, 0.7) !important;
528
- }
529
- .confirmation .confirmation-dialog {
530
- border: none;
531
- border-radius: 10px;
532
- background-color: #fff;
533
- box-shadow: 0 0 10px -5px rgba(0, 0, 0, 0.5);
534
- }
535
- .confirmation .confirmation-dialog .icon-container .icon {
536
- stroke: #fff;
537
- color: #fff;
538
- }
539
- .confirmation .confirmation-dialog .icon-container.info .icon {
540
- stroke: #2f96b4;
541
- color: #2f96b4;
542
- }
543
- .confirmation .confirmation-dialog .icon-container.success .icon {
544
- stroke: #51a351;
545
- color: #51a351;
546
- }
547
- .confirmation .confirmation-dialog .icon-container.warning .icon {
548
- stroke: #f89406;
549
- color: #f89406;
550
- }
551
- .confirmation .confirmation-dialog .icon-container.error .icon {
552
- stroke: #bd362f;
553
- color: #bd362f;
554
- }
555
- .confirmation .confirmation-dialog .content .title {
556
- color: #222;
557
- }
558
- .confirmation .confirmation-dialog .content .message {
559
- color: #777;
560
- }
561
- .confirmation .confirmation-dialog .footer {
562
- background: transparent;
563
- }
564
- .confirmation .confirmation-dialog .footer .confirmation-button {
565
- background-color: #eee;
566
- color: #777;
567
- }
568
- .confirmation .confirmation-dialog .footer .confirmation-button:hover, .confirmation .confirmation-dialog .footer .confirmation-button:focus, .confirmation .confirmation-dialog .footer .confirmation-button:active {
569
- background-color: #bbb;
570
- }
571
- .confirmation .confirmation-dialog .footer .confirmation-button--confirm {
572
- background-color: #2f96b4;
573
- color: #fff;
574
- }
575
- .confirmation .confirmation-dialog .footer .confirmation-button--confirm:hover {
576
- background-color: #2e819b;
577
- }
578
- .ui-table .pagination-wrapper {
579
- background-color: #f4f4f4;
580
- border: 1px solid #c8c8c8;
581
- }
582
- .bordered .datatable-body-row {
583
- border-top: 1px solid #eee;
584
- margin-top: -1px;
585
- }
586
- .breadcrumb {
587
- background-color: transparent;
588
- padding: 0.27rem;
589
- }
526
+ var styles = `
527
+ .content-header-title {
528
+ font-size: 24px;
529
+ }
530
+ .entry-row {
531
+ margin-bottom: 15px;
532
+ }
533
+ #main-navbar-tools a.dropdown-toggle {
534
+ text-decoration: none;
535
+ color: #fff;
536
+ }
537
+ .navbar .dropdown-submenu {
538
+ position: relative;
539
+ }
540
+ .navbar .dropdown-menu {
541
+ margin: 0;
542
+ padding: 0;
543
+ }
544
+ .navbar .dropdown-menu a {
545
+ font-size: .9em;
546
+ padding: 10px 15px;
547
+ display: block;
548
+ min-width: 210px;
549
+ text-align: left;
550
+ border-radius: 0.25rem;
551
+ min-height: 44px;
552
+ }
553
+ [dir=rtl] .navbar .dropdown-menu a {
554
+ text-align: right!important;
555
+ }
556
+ .navbar .dropdown-submenu a::after {
557
+ transform: rotate(-90deg);
558
+ position: absolute;
559
+ right: 16px;
560
+ top: 18px;
561
+ }
562
+ [dir=rtl] .navbar .dropdown-submenu a::after {
563
+ transform: rotate(90deg);
564
+ left: 16px;
565
+ right: auto;
566
+ top: 20px;
567
+ }
568
+ .navbar .dropdown-submenu .dropdown-menu {
569
+ top: 0;
570
+ left: 100%;
571
+ }
572
+ /* work around for rtl. Track https://github.com/ng-bootstrap/ng-bootstrap/issues/4100 issue */
573
+ [dir=rtl] .navbar .dropdown-submenu .dropdown-menu {
574
+ top: 0;
575
+ right: 100%;
576
+ }
577
+ .card-header .btn {
578
+ padding: 2px 6px;
579
+ }
580
+ .card-header h5 {
581
+ margin: 0;
582
+ }
583
+ .container > .card {
584
+ box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;
585
+ }
586
+ @media screen and (min-width: 992px) {
587
+ .navbar .dropdown:hover > .dropdown-menu {
588
+ display: block;
589
+ }
590
+
591
+ .navbar .dropdown-submenu:hover > .dropdown-menu {
592
+ display: block;
593
+ }
594
+ }
595
+ .input-validation-error {
596
+ border-color: #dc3545;
597
+ }
598
+ .field-validation-error {
599
+ font-size: 0.8em;
600
+ }
601
+ .ui-table .ui-table-tbody > tr.empty-row > div.empty-row-content {
602
+ border: 1px solid #c8c8c8;
603
+ }
604
+ .abp-loading {
605
+ background: rgba(0, 0, 0, 0.05);
606
+ }
607
+ .modal-backdrop {
608
+ background-color: rgba(0, 0, 0, 0.6);
609
+ }
610
+
611
+ .confirmation .confirmation-backdrop {
612
+ background: rgba(0, 0, 0, 0.7) !important;
613
+ }
614
+ .confirmation .confirmation-dialog {
615
+ border: none;
616
+ border-radius: 10px;
617
+ background-color: #fff;
618
+ box-shadow: 0 0 10px -5px rgba(0, 0, 0, 0.5);
619
+ }
620
+ .confirmation .confirmation-dialog .icon-container .icon {
621
+ stroke: #fff;
622
+ color: #fff;
623
+ }
624
+ .confirmation .confirmation-dialog .icon-container.info .icon {
625
+ stroke: #2f96b4;
626
+ color: #2f96b4;
627
+ }
628
+ .confirmation .confirmation-dialog .icon-container.success .icon {
629
+ stroke: #51a351;
630
+ color: #51a351;
631
+ }
632
+ .confirmation .confirmation-dialog .icon-container.warning .icon {
633
+ stroke: #f89406;
634
+ color: #f89406;
635
+ }
636
+ .confirmation .confirmation-dialog .icon-container.error .icon {
637
+ stroke: #bd362f;
638
+ color: #bd362f;
639
+ }
640
+ .confirmation .confirmation-dialog .content .title {
641
+ color: #222;
642
+ }
643
+ .confirmation .confirmation-dialog .content .message {
644
+ color: #777;
645
+ }
646
+ .confirmation .confirmation-dialog .footer {
647
+ background: transparent;
648
+ }
649
+ .confirmation .confirmation-dialog .footer .confirmation-button {
650
+ background-color: #eee;
651
+ color: #777;
652
+ }
653
+ .confirmation .confirmation-dialog .footer .confirmation-button:hover, .confirmation .confirmation-dialog .footer .confirmation-button:focus, .confirmation .confirmation-dialog .footer .confirmation-button:active {
654
+ background-color: #bbb;
655
+ }
656
+ .confirmation .confirmation-dialog .footer .confirmation-button--confirm {
657
+ background-color: #2f96b4;
658
+ color: #fff;
659
+ }
660
+ .confirmation .confirmation-dialog .footer .confirmation-button--confirm:hover {
661
+ background-color: #2e819b;
662
+ }
663
+ .ui-table .pagination-wrapper {
664
+ background-color: #f4f4f4;
665
+ border: 1px solid #c8c8c8;
666
+ }
667
+ .bordered .datatable-body-row {
668
+ border-top: 1px solid #eee;
669
+ margin-top: -1px;
670
+ }
671
+ .breadcrumb {
672
+ background-color: transparent;
673
+ padding: 0.27rem;
674
+ }
590
675
  `;
591
676
 
592
677
  const BASIC_THEME_STYLES_PROVIDERS = [
@@ -621,8 +706,8 @@ function initLayouts(replaceableComponents) {
621
706
  const LAYOUTS = [ApplicationLayoutComponent, AccountLayoutComponent, EmptyLayoutComponent];
622
707
  class BaseThemeBasicModule {
623
708
  }
624
- BaseThemeBasicModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: BaseThemeBasicModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
625
- BaseThemeBasicModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: BaseThemeBasicModule, declarations: [ApplicationLayoutComponent, AccountLayoutComponent, EmptyLayoutComponent, ValidationErrorComponent,
709
+ BaseThemeBasicModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: BaseThemeBasicModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
710
+ BaseThemeBasicModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: BaseThemeBasicModule, declarations: [ApplicationLayoutComponent, AccountLayoutComponent, EmptyLayoutComponent, ValidationErrorComponent,
626
711
  LogoComponent,
627
712
  NavItemsComponent,
628
713
  RoutesComponent,
@@ -641,14 +726,14 @@ BaseThemeBasicModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", ve
641
726
  CurrentUserComponent,
642
727
  LanguagesComponent,
643
728
  PageAlertContainerComponent] });
644
- BaseThemeBasicModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: BaseThemeBasicModule, imports: [[
729
+ BaseThemeBasicModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: BaseThemeBasicModule, imports: [[
645
730
  CoreModule,
646
731
  ThemeSharedModule,
647
732
  NgbCollapseModule,
648
733
  NgbDropdownModule,
649
734
  NgxValidateCoreModule,
650
735
  ]] });
651
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: BaseThemeBasicModule, decorators: [{
736
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: BaseThemeBasicModule, decorators: [{
652
737
  type: NgModule,
653
738
  args: [{
654
739
  declarations: [
@@ -702,14 +787,21 @@ class ThemeBasicModule {
702
787
  provide: VALIDATION_INVALID_CLASSES,
703
788
  useValue: 'is-invalid',
704
789
  },
790
+ LazyStyleHandler,
791
+ {
792
+ provide: APP_INITIALIZER,
793
+ useFactory: noop,
794
+ multi: true,
795
+ deps: [LazyStyleHandler],
796
+ },
705
797
  ],
706
798
  };
707
799
  }
708
800
  }
709
- ThemeBasicModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: ThemeBasicModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
710
- ThemeBasicModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: ThemeBasicModule, imports: [BaseThemeBasicModule], exports: [BaseThemeBasicModule] });
711
- ThemeBasicModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: ThemeBasicModule, imports: [[BaseThemeBasicModule], BaseThemeBasicModule] });
712
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: ThemeBasicModule, decorators: [{
801
+ ThemeBasicModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ThemeBasicModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
802
+ ThemeBasicModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ThemeBasicModule, imports: [BaseThemeBasicModule], exports: [BaseThemeBasicModule] });
803
+ ThemeBasicModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ThemeBasicModule, imports: [[BaseThemeBasicModule], BaseThemeBasicModule] });
804
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ThemeBasicModule, decorators: [{
713
805
  type: NgModule,
714
806
  args: [{
715
807
  exports: [BaseThemeBasicModule],
@@ -725,5 +817,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImpor
725
817
  * Generated bundle index. Do not edit.
726
818
  */
727
819
 
728
- export { AccountLayoutComponent, ApplicationLayoutComponent, AuthWrapperComponent, BASIC_THEME_NAV_ITEM_PROVIDERS, BASIC_THEME_STYLES_PROVIDERS, BaseThemeBasicModule, CurrentUserComponent, EmptyLayoutComponent, LAYOUTS, LanguagesComponent, LogoComponent, NavItemsComponent, PageAlertContainerComponent, RoutesComponent, TenantBoxComponent, ThemeBasicModule, ValidationErrorComponent, configureNavItems, configureStyles };
820
+ export { AccountLayoutComponent, ApplicationLayoutComponent, AuthWrapperComponent, BASIC_THEME_NAV_ITEM_PROVIDERS, BASIC_THEME_STYLES_PROVIDERS, BOOTSTRAP, BaseThemeBasicModule, CurrentUserComponent, EmptyLayoutComponent, LAYOUTS, LAZY_STYLES, LanguagesComponent, LazyStyleHandler, LogoComponent, NavItemsComponent, PageAlertContainerComponent, RoutesComponent, TenantBoxComponent, ThemeBasicModule, ValidationErrorComponent, configureNavItems, configureStyles, createLazyStyleHref, initLazyStyleHandler };
729
821
  //# sourceMappingURL=abp-ng.theme.basic.js.map