@abp/ng.theme.basic 10.1.0-rc.1 → 10.1.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.
@@ -25,11 +25,11 @@ class ThemeBasicTestingModule {
25
25
  ],
26
26
  };
27
27
  }
28
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ThemeBasicTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
29
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.6", ngImport: i0, type: ThemeBasicTestingModule, imports: [BaseThemeBasicModule], exports: [BaseThemeBasicModule] }); }
30
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ThemeBasicTestingModule, imports: [BaseThemeBasicModule, BaseThemeBasicModule] }); }
28
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: ThemeBasicTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
29
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.9", ngImport: i0, type: ThemeBasicTestingModule, imports: [BaseThemeBasicModule], exports: [BaseThemeBasicModule] }); }
30
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: ThemeBasicTestingModule, imports: [BaseThemeBasicModule, BaseThemeBasicModule] }); }
31
31
  }
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ThemeBasicTestingModule, decorators: [{
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: ThemeBasicTestingModule, decorators: [{
33
33
  type: NgModule,
34
34
  args: [{
35
35
  exports: [BaseThemeBasicModule],
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { inject, ChangeDetectorRef, Injectable, Component, Renderer2, ViewChildren, Input, PLATFORM_ID, ViewEncapsulation, ChangeDetectionStrategy, InjectionToken, Injector, provideAppInitializer, makeEnvironmentProviders, NgModule } from '@angular/core';
3
- import { SubscriptionService, RouterEvents, EnvironmentService, RoutesService, PermissionDirective, LazyLocalizationPipe, LocalizationPipe, ToInjectorPipe, ReplaceableTemplateDirective, SafeHtmlPipe, NAVIGATE_TO_MANAGE_PROFILE, AuthService, ConfigStateService, SessionStateService, LazyLoadService, LOADING_STRATEGY, DomInsertionService, ReplaceableComponentsService, CONTENT_STRATEGY } from '@abp/ng.core';
3
+ import { SubscriptionService, RouterEvents, EnvironmentService, RoutesService, PermissionDirective, AsyncLocalizationPipe, LocalizationPipe, ToInjectorPipe, ReplaceableTemplateDirective, SafeHtmlPipe, NAVIGATE_TO_MANAGE_PROFILE, AuthService, ConfigStateService, SessionStateService, LazyLoadService, LOADING_STRATEGY, DomInsertionService, ReplaceableComponentsService, CONTENT_STRATEGY } from '@abp/ng.core';
4
4
  import { fromEvent } from 'rxjs';
5
5
  import { debounceTime, map } from 'rxjs/operators';
6
6
  import { DOCUMENT, NgTemplateOutlet, NgClass, AsyncPipe, isPlatformBrowser, NgComponentOutlet } from '@angular/common';
@@ -44,10 +44,10 @@ class LayoutService {
44
44
  const resize$ = fromEvent(this.document.defaultView, 'resize').pipe(debounceTime(150));
45
45
  this.subscription.addOne(resize$, () => this.checkWindowWidth());
46
46
  }
47
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: LayoutService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
48
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: LayoutService }); }
47
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: LayoutService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
48
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: LayoutService }); }
49
49
  }
50
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: LayoutService, decorators: [{
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: LayoutService, decorators: [{
51
51
  type: Injectable
52
52
  }], ctorParameters: () => [] });
53
53
 
@@ -63,8 +63,8 @@ class LogoComponent {
63
63
  get appName() {
64
64
  return (this.providedAppName ?? this.environment.getEnvironment().application?.name);
65
65
  }
66
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: LogoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
67
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: LogoComponent, isStandalone: true, selector: "abp-logo", ngImport: i0, template: `
66
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: LogoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
67
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: LogoComponent, isStandalone: true, selector: "abp-logo", ngImport: i0, template: `
68
68
  <a class="navbar-brand" routerLink="/">
69
69
  @if (logoUrl) {
70
70
  <img [src]="logoUrl" [alt]="appName" width="100%" height="auto" />
@@ -74,7 +74,7 @@ class LogoComponent {
74
74
  </a>
75
75
  `, isInline: true, dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
76
76
  }
77
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: LogoComponent, decorators: [{
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: LogoComponent, decorators: [{
78
78
  type: Component,
79
79
  args: [{
80
80
  selector: 'abp-logo',
@@ -108,10 +108,10 @@ class RoutesComponent {
108
108
  setTimeout(() => this.renderer.removeClass(nativeElement, 'd-none'), 0);
109
109
  });
110
110
  }
111
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: RoutesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
112
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: RoutesComponent, isStandalone: true, selector: "abp-routes", inputs: { smallScreen: "smallScreen" }, viewQueries: [{ propertyName: "childrenContainers", predicate: ["childrenContainer"], descendants: true }], ngImport: i0, template: "<ul class=\"navbar-nav\">\r\n @for (route of routesService.visible$ | async; track $index) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"isDropdown(route) ? dropdownLink : defaultLink\"\r\n [ngTemplateOutletContext]=\"{ $implicit: route }\"\r\n />\r\n }\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 @if (route.iconClass) {\r\n <i [ngClass]=\"route.iconClass\"></i>\r\n }\r\n {{ route.name | abpLazyLocalization | async }}\r\n </a>\r\n </li>\r\n </ng-template>\r\n\r\n <ng-template #dropdownLink let-route>\r\n @if (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 @if (route.iconClass) {\r\n <i [ngClass]=\"route.iconClass\"></i>\r\n }\r\n {{ route.name | abpLazyLocalization | async }}\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 *ngTemplateOutlet=\"forTemplate; context: { $implicit: route }\" />\r\n </div>\r\n </li>\r\n }\r\n </ng-template>\r\n\r\n <ng-template #forTemplate let-route>\r\n @for (child of route.children; track $index) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"child.children?.length ? dropdownChild : defaultChild\"\r\n [ngTemplateOutletContext]=\"{ $implicit: child }\"\r\n />\r\n }\r\n </ng-template>\r\n\r\n <ng-template #defaultChild let-child>\r\n @if (child.path) {\r\n <div class=\"dropdown-submenu\" *abpPermission=\"child.requiredPolicy\">\r\n <a class=\"dropdown-item\" [routerLink]=\"[child.path]\" (click)=\"closeDropdown()\">\r\n @if (child.iconClass) {\r\n <i [ngClass]=\"child.iconClass\"></i>\r\n }\r\n {{ child.name | abpLocalization }}</a\r\n >\r\n </div>\r\n }\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 @if (child.iconClass) {\r\n <i [ngClass]=\"child.iconClass\"></i>\r\n }\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 }\" />\r\n </div>\r\n </div>\r\n </ng-template>\r\n</ul>\r\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: NgbDropdownModule }, { kind: "directive", type: i1.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i1.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission", "abpPermissionRunChangeDetection"] }, { kind: "directive", type: EllipsisDirective, selector: "[abpEllipsis]", inputs: ["abpEllipsis", "title", "abpEllipsisEnabled"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: LazyLocalizationPipe, name: "abpLazyLocalization" }, { kind: "pipe", type: LocalizationPipe, name: "abpLocalization" }] }); }
111
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: RoutesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
112
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: RoutesComponent, isStandalone: true, selector: "abp-routes", inputs: { smallScreen: "smallScreen" }, viewQueries: [{ propertyName: "childrenContainers", predicate: ["childrenContainer"], descendants: true }], ngImport: i0, template: "<ul class=\"navbar-nav\">\r\n @for (route of routesService.visible$ | async; track $index) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"isDropdown(route) ? dropdownLink : defaultLink\"\r\n [ngTemplateOutletContext]=\"{ $implicit: route }\"\r\n />\r\n }\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 @if (route.iconClass) {\r\n <i [ngClass]=\"route.iconClass\"></i>\r\n }\r\n {{ route.name | abpAsyncLocalization | async }}\r\n </a>\r\n </li>\r\n </ng-template>\r\n\r\n <ng-template #dropdownLink let-route>\r\n @if (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 @if (route.iconClass) {\r\n <i [ngClass]=\"route.iconClass\"></i>\r\n }\r\n {{ route.name | abpAsyncLocalization | async }}\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 *ngTemplateOutlet=\"forTemplate; context: { $implicit: route }\" />\r\n </div>\r\n </li>\r\n }\r\n </ng-template>\r\n\r\n <ng-template #forTemplate let-route>\r\n @for (child of route.children; track $index) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"child.children?.length ? dropdownChild : defaultChild\"\r\n [ngTemplateOutletContext]=\"{ $implicit: child }\"\r\n />\r\n }\r\n </ng-template>\r\n\r\n <ng-template #defaultChild let-child>\r\n @if (child.path) {\r\n <div class=\"dropdown-submenu\" *abpPermission=\"child.requiredPolicy\">\r\n <a class=\"dropdown-item\" [routerLink]=\"[child.path]\" (click)=\"closeDropdown()\">\r\n @if (child.iconClass) {\r\n <i [ngClass]=\"child.iconClass\"></i>\r\n }\r\n {{ child.name | abpLocalization }}</a\r\n >\r\n </div>\r\n }\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 @if (child.iconClass) {\r\n <i [ngClass]=\"child.iconClass\"></i>\r\n }\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 }\" />\r\n </div>\r\n </div>\r\n </ng-template>\r\n</ul>\r\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: NgbDropdownModule }, { kind: "directive", type: i1.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i1.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission", "abpPermissionRunChangeDetection"] }, { kind: "directive", type: EllipsisDirective, selector: "[abpEllipsis]", inputs: ["abpEllipsis", "title", "abpEllipsisEnabled"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AsyncLocalizationPipe, name: "abpAsyncLocalization" }, { kind: "pipe", type: LocalizationPipe, name: "abpLocalization" }] }); }
113
113
  }
114
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: RoutesComponent, decorators: [{
114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: RoutesComponent, decorators: [{
115
115
  type: Component,
116
116
  args: [{ selector: 'abp-routes', imports: [
117
117
  NgTemplateOutlet,
@@ -119,11 +119,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
119
119
  AsyncPipe,
120
120
  RouterLink,
121
121
  NgbDropdownModule,
122
- LazyLocalizationPipe,
122
+ AsyncLocalizationPipe,
123
123
  PermissionDirective,
124
124
  EllipsisDirective,
125
125
  LocalizationPipe,
126
- ], template: "<ul class=\"navbar-nav\">\r\n @for (route of routesService.visible$ | async; track $index) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"isDropdown(route) ? dropdownLink : defaultLink\"\r\n [ngTemplateOutletContext]=\"{ $implicit: route }\"\r\n />\r\n }\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 @if (route.iconClass) {\r\n <i [ngClass]=\"route.iconClass\"></i>\r\n }\r\n {{ route.name | abpLazyLocalization | async }}\r\n </a>\r\n </li>\r\n </ng-template>\r\n\r\n <ng-template #dropdownLink let-route>\r\n @if (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 @if (route.iconClass) {\r\n <i [ngClass]=\"route.iconClass\"></i>\r\n }\r\n {{ route.name | abpLazyLocalization | async }}\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 *ngTemplateOutlet=\"forTemplate; context: { $implicit: route }\" />\r\n </div>\r\n </li>\r\n }\r\n </ng-template>\r\n\r\n <ng-template #forTemplate let-route>\r\n @for (child of route.children; track $index) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"child.children?.length ? dropdownChild : defaultChild\"\r\n [ngTemplateOutletContext]=\"{ $implicit: child }\"\r\n />\r\n }\r\n </ng-template>\r\n\r\n <ng-template #defaultChild let-child>\r\n @if (child.path) {\r\n <div class=\"dropdown-submenu\" *abpPermission=\"child.requiredPolicy\">\r\n <a class=\"dropdown-item\" [routerLink]=\"[child.path]\" (click)=\"closeDropdown()\">\r\n @if (child.iconClass) {\r\n <i [ngClass]=\"child.iconClass\"></i>\r\n }\r\n {{ child.name | abpLocalization }}</a\r\n >\r\n </div>\r\n }\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 @if (child.iconClass) {\r\n <i [ngClass]=\"child.iconClass\"></i>\r\n }\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 }\" />\r\n </div>\r\n </div>\r\n </ng-template>\r\n</ul>\r\n" }]
126
+ ], template: "<ul class=\"navbar-nav\">\r\n @for (route of routesService.visible$ | async; track $index) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"isDropdown(route) ? dropdownLink : defaultLink\"\r\n [ngTemplateOutletContext]=\"{ $implicit: route }\"\r\n />\r\n }\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 @if (route.iconClass) {\r\n <i [ngClass]=\"route.iconClass\"></i>\r\n }\r\n {{ route.name | abpAsyncLocalization | async }}\r\n </a>\r\n </li>\r\n </ng-template>\r\n\r\n <ng-template #dropdownLink let-route>\r\n @if (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 @if (route.iconClass) {\r\n <i [ngClass]=\"route.iconClass\"></i>\r\n }\r\n {{ route.name | abpAsyncLocalization | async }}\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 *ngTemplateOutlet=\"forTemplate; context: { $implicit: route }\" />\r\n </div>\r\n </li>\r\n }\r\n </ng-template>\r\n\r\n <ng-template #forTemplate let-route>\r\n @for (child of route.children; track $index) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"child.children?.length ? dropdownChild : defaultChild\"\r\n [ngTemplateOutletContext]=\"{ $implicit: child }\"\r\n />\r\n }\r\n </ng-template>\r\n\r\n <ng-template #defaultChild let-child>\r\n @if (child.path) {\r\n <div class=\"dropdown-submenu\" *abpPermission=\"child.requiredPolicy\">\r\n <a class=\"dropdown-item\" [routerLink]=\"[child.path]\" (click)=\"closeDropdown()\">\r\n @if (child.iconClass) {\r\n <i [ngClass]=\"child.iconClass\"></i>\r\n }\r\n {{ child.name | abpLocalization }}</a\r\n >\r\n </div>\r\n }\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 @if (child.iconClass) {\r\n <i [ngClass]=\"child.iconClass\"></i>\r\n }\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 }\" />\r\n </div>\r\n </div>\r\n </ng-template>\r\n</ul>\r\n" }]
127
127
  }], propDecorators: { smallScreen: [{
128
128
  type: Input
129
129
  }], childrenContainers: [{
@@ -138,10 +138,10 @@ class NavItemsComponent {
138
138
  this.isBrowser = isPlatformBrowser(this.platformId);
139
139
  this.trackByFn = (_, element) => element.id;
140
140
  }
141
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: NavItemsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
142
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: NavItemsComponent, isStandalone: true, selector: "abp-nav-items", ngImport: i0, template: "<ul class=\"navbar-nav\">\r\n @if (isBrowser) {\r\n @for (item of navItems.items$ | async; track $index) {\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 @if (item.component) {\r\n <ng-container\r\n [ngComponentOutlet]=\"item.component\"\r\n [ngComponentOutletInjector]=\"item | toInjector\"\r\n ></ng-container>\r\n } @else {\r\n <div [innerHTML]=\"item.html\" (click)=\"item.action ? item.action() : null\"></div>\r\n }\r\n </li>\r\n </ng-container>\r\n }\r\n }\r\n</ul>\r\n", dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "directive", type: AbpVisibleDirective, selector: "[abpVisible]", inputs: ["abpVisible"] }, { kind: "directive", type: PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission", "abpPermissionRunChangeDetection"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: ToInjectorPipe, name: "toInjector" }] }); }
141
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: NavItemsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
142
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: NavItemsComponent, isStandalone: true, selector: "abp-nav-items", ngImport: i0, template: "<ul class=\"navbar-nav\">\r\n @if (isBrowser) {\r\n @for (item of navItems.items$ | async; track $index) {\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 @if (item.component) {\r\n <ng-container\r\n [ngComponentOutlet]=\"item.component\"\r\n [ngComponentOutletInjector]=\"item | toInjector\"\r\n ></ng-container>\r\n } @else {\r\n <div [innerHTML]=\"item.html\" (click)=\"item.action ? item.action() : null\"></div>\r\n }\r\n </li>\r\n </ng-container>\r\n }\r\n }\r\n</ul>\r\n", dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "directive", type: AbpVisibleDirective, selector: "[abpVisible]", inputs: ["abpVisible"] }, { kind: "directive", type: PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission", "abpPermissionRunChangeDetection"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: ToInjectorPipe, name: "toInjector" }] }); }
143
143
  }
144
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: NavItemsComponent, decorators: [{
144
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: NavItemsComponent, decorators: [{
145
145
  type: Component,
146
146
  args: [{ selector: 'abp-nav-items', imports: [NgComponentOutlet, AsyncPipe, AbpVisibleDirective, PermissionDirective, ToInjectorPipe], template: "<ul class=\"navbar-nav\">\r\n @if (isBrowser) {\r\n @for (item of navItems.items$ | async; track $index) {\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 @if (item.component) {\r\n <ng-container\r\n [ngComponentOutlet]=\"item.component\"\r\n [ngComponentOutletInjector]=\"item | toInjector\"\r\n ></ng-container>\r\n } @else {\r\n <div [innerHTML]=\"item.html\" (click)=\"item.action ? item.action() : null\"></div>\r\n }\r\n </li>\r\n </ng-container>\r\n }\r\n }\r\n</ul>\r\n" }]
147
147
  }] });
@@ -150,10 +150,10 @@ class TenantBoxComponent {
150
150
  constructor() {
151
151
  this.service = inject(TenantBoxService);
152
152
  }
153
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: TenantBoxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
154
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: TenantBoxComponent, isStandalone: true, selector: "abp-tenant-box", providers: [TenantBoxService], ngImport: i0, template: "@if ((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-outline-primary\">\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}\r\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$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: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]):not([formArray]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "component", type: ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "directive", type: ModalCloseDirective, selector: "[abpClose]" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: LocalizationPipe, name: "abpLocalization" }] }); }
153
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TenantBoxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
154
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: TenantBoxComponent, isStandalone: true, selector: "abp-tenant-box", providers: [TenantBoxService], ngImport: i0, template: "@if ((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-outline-primary\">\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}\r\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$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: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]):not([formArray]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "component", type: ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "directive", type: ModalCloseDirective, selector: "[abpClose]" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: LocalizationPipe, name: "abpLocalization" }] }); }
155
155
  }
156
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: TenantBoxComponent, decorators: [{
156
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TenantBoxComponent, decorators: [{
157
157
  type: Component,
158
158
  args: [{ selector: 'abp-tenant-box', providers: [TenantBoxService], imports: [
159
159
  AsyncPipe,
@@ -169,10 +169,10 @@ class AuthWrapperComponent {
169
169
  constructor() {
170
170
  this.service = inject(AuthWrapperService);
171
171
  }
172
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: AuthWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
173
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: AuthWrapperComponent, isStandalone: true, selector: "abp-auth-wrapper", providers: [AuthWrapperService], ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"mx-auto col col-md-5\">\r\n @if ((service.isMultiTenancyEnabled$ | async) && service.isTenantBoxVisible) {\r\n <abp-tenant-box\r\n *abpReplaceableTemplate=\"{ componentKey: service.tenantBoxKey }\"\r\n ></abp-tenant-box>\r\n }\r\n\r\n <div class=\"abp-account-container\">\r\n @if (service.enableLocalLogin$ | async) {\r\n <div class=\"card mt-3 shadow-sm rounded\">\r\n <div class=\"card-body p-5\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n } @else {\r\n <div class=\"alert alert-warning\">\r\n <strong>{{ 'AbpAccount::InvalidLoginRequest' | abpLocalization }}</strong>\r\n {{ 'AbpAccount::ThereAreNoLoginSchemesConfiguredForThisClient' | abpLocalization }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "component", type: TenantBoxComponent, selector: "abp-tenant-box" }, { kind: "directive", type: ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: LocalizationPipe, name: "abpLocalization" }] }); }
172
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: AuthWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
173
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: AuthWrapperComponent, isStandalone: true, selector: "abp-auth-wrapper", providers: [AuthWrapperService], ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"mx-auto col col-md-5\">\r\n @if ((service.isMultiTenancyEnabled$ | async) && service.isTenantBoxVisible) {\r\n <abp-tenant-box\r\n *abpReplaceableTemplate=\"{ componentKey: service.tenantBoxKey }\"\r\n ></abp-tenant-box>\r\n }\r\n\r\n <div class=\"abp-account-container\">\r\n @if (service.enableLocalLogin$ | async) {\r\n <div class=\"card mt-3 shadow-sm rounded\">\r\n <div class=\"card-body p-5\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n } @else {\r\n <div class=\"alert alert-warning\">\r\n <strong>{{ 'AbpAccount::InvalidLoginRequest' | abpLocalization }}</strong>\r\n {{ 'AbpAccount::ThereAreNoLoginSchemesConfiguredForThisClient' | abpLocalization }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "component", type: TenantBoxComponent, selector: "abp-tenant-box" }, { kind: "directive", type: ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: LocalizationPipe, name: "abpLocalization" }] }); }
174
174
  }
175
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: AuthWrapperComponent, decorators: [{
175
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: AuthWrapperComponent, decorators: [{
176
176
  type: Component,
177
177
  args: [{ selector: 'abp-auth-wrapper', providers: [AuthWrapperService], imports: [AsyncPipe, TenantBoxComponent, ReplaceableTemplateDirective, LocalizationPipe], template: "<div class=\"row\">\r\n <div class=\"mx-auto col col-md-5\">\r\n @if ((service.isMultiTenancyEnabled$ | async) && service.isTenantBoxVisible) {\r\n <abp-tenant-box\r\n *abpReplaceableTemplate=\"{ componentKey: service.tenantBoxKey }\"\r\n ></abp-tenant-box>\r\n }\r\n\r\n <div class=\"abp-account-container\">\r\n @if (service.enableLocalLogin$ | async) {\r\n <div class=\"card mt-3 shadow-sm rounded\">\r\n <div class=\"card-body p-5\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n } @else {\r\n <div class=\"alert alert-warning\">\r\n <strong>{{ 'AbpAccount::InvalidLoginRequest' | abpLocalization }}</strong>\r\n {{ 'AbpAccount::ThereAreNoLoginSchemesConfiguredForThisClient' | abpLocalization }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n" }]
178
178
  }] });
@@ -181,10 +181,10 @@ class PageAlertContainerComponent {
181
181
  constructor() {
182
182
  this.service = inject(PageAlertService);
183
183
  }
184
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: PageAlertContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
185
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: PageAlertContainerComponent, isStandalone: true, selector: "abp-page-alert-container", ngImport: i0, template: "@for (alert of service.alerts$ | async; track i; 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 @if (alert.title) {\r\n <h4\r\n class=\"alert-heading\"\r\n [innerHTML]=\"alert.title | abpSafeHtml | abpLocalization: alert.titleLocalizationParams\"\r\n ></h4>\r\n }\r\n <span\r\n [innerHTML]=\"alert.message | abpSafeHtml | abpLocalization: alert.messageLocalizationParams\"\r\n ></span>\r\n @if (alert.dismissible) {\r\n <button\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 }\r\n </div>\r\n}\r\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: LocalizationPipe, name: "abpLocalization" }, { kind: "pipe", type: SafeHtmlPipe, name: "abpSafeHtml" }], encapsulation: i0.ViewEncapsulation.None }); }
184
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: PageAlertContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
185
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: PageAlertContainerComponent, isStandalone: true, selector: "abp-page-alert-container", ngImport: i0, template: "@for (alert of service.alerts$ | async; track i; 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 @if (alert.title) {\r\n <h4\r\n class=\"alert-heading\"\r\n [innerHTML]=\"alert.title | abpSafeHtml | abpLocalization: alert.titleLocalizationParams\"\r\n ></h4>\r\n }\r\n <span\r\n [innerHTML]=\"alert.message | abpSafeHtml | abpLocalization: alert.messageLocalizationParams\"\r\n ></span>\r\n @if (alert.dismissible) {\r\n <button\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 }\r\n </div>\r\n}\r\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: LocalizationPipe, name: "abpLocalization" }, { kind: "pipe", type: SafeHtmlPipe, name: "abpSafeHtml" }], encapsulation: i0.ViewEncapsulation.None }); }
186
186
  }
187
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: PageAlertContainerComponent, decorators: [{
187
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: PageAlertContainerComponent, decorators: [{
188
188
  type: Component,
189
189
  args: [{ selector: 'abp-page-alert-container', encapsulation: ViewEncapsulation.None, imports: [NgClass, AsyncPipe, LocalizationPipe, SafeHtmlPipe], template: "@for (alert of service.alerts$ | async; track i; 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 @if (alert.title) {\r\n <h4\r\n class=\"alert-heading\"\r\n [innerHTML]=\"alert.title | abpSafeHtml | abpLocalization: alert.titleLocalizationParams\"\r\n ></h4>\r\n }\r\n <span\r\n [innerHTML]=\"alert.message | abpSafeHtml | abpLocalization: alert.messageLocalizationParams\"\r\n ></span>\r\n @if (alert.dismissible) {\r\n <button\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 }\r\n </div>\r\n}\r\n" }]
190
190
  }] });
@@ -199,10 +199,10 @@ class AccountLayoutComponent {
199
199
  ngAfterViewInit() {
200
200
  this.service.subscribeWindowSize();
201
201
  }
202
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: AccountLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
203
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: AccountLayoutComponent, isStandalone: true, 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 @if (service.smallScreen) {\r\n <div\r\n [@collapseWithMargin]=\"service.isCollapsed ? 'collapsed' : 'expanded'\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"navigations\"></ng-container>\r\n </div>\r\n }\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: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: LogoComponent, selector: "abp-logo" }, { kind: "component", type: RoutesComponent, selector: "abp-routes", inputs: ["smallScreen"] }, { kind: "component", type: NavItemsComponent, selector: "abp-nav-items" }, { kind: "component", type: AuthWrapperComponent, selector: "abp-auth-wrapper" }, { kind: "component", type: PageAlertContainerComponent, selector: "abp-page-alert-container" }, { kind: "directive", type: ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }], animations: [collapseWithMargin] }); }
202
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: AccountLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
203
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: AccountLayoutComponent, isStandalone: true, 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 @if (service.smallScreen) {\r\n <div\r\n [@collapseWithMargin]=\"service.isCollapsed ? 'collapsed' : 'expanded'\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"navigations\"></ng-container>\r\n </div>\r\n }\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: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: LogoComponent, selector: "abp-logo" }, { kind: "component", type: RoutesComponent, selector: "abp-routes", inputs: ["smallScreen"] }, { kind: "component", type: NavItemsComponent, selector: "abp-nav-items" }, { kind: "component", type: AuthWrapperComponent, selector: "abp-auth-wrapper" }, { kind: "component", type: PageAlertContainerComponent, selector: "abp-page-alert-container" }, { kind: "directive", type: ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }], animations: [collapseWithMargin] }); }
204
204
  }
205
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: AccountLayoutComponent, decorators: [{
205
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: AccountLayoutComponent, decorators: [{
206
206
  type: Component,
207
207
  args: [{ selector: 'abp-layout-account', animations: [collapseWithMargin], providers: [LayoutService, SubscriptionService], imports: [
208
208
  NgTemplateOutlet,
@@ -225,10 +225,10 @@ class ApplicationLayoutComponent {
225
225
  ngAfterViewInit() {
226
226
  this.service.subscribeWindowSize();
227
227
  }
228
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ApplicationLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
229
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: ApplicationLayoutComponent, isStandalone: true, 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\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 @if (service.smallScreen) {\r\n <div [@collapseWithMargin]=\"service.isCollapsed ? 'collapsed' : 'expanded'\">\r\n <ng-container *ngTemplateOutlet=\"navigations\"></ng-container>\r\n </div>\r\n }\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: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: LogoComponent, selector: "abp-logo" }, { kind: "component", type: PageAlertContainerComponent, selector: "abp-page-alert-container" }, { kind: "component", type: RoutesComponent, selector: "abp-routes", inputs: ["smallScreen"] }, { kind: "component", type: NavItemsComponent, selector: "abp-nav-items" }, { kind: "directive", type: ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }], animations: [slideFromBottom, collapseWithMargin] }); }
228
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: ApplicationLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
229
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: ApplicationLayoutComponent, isStandalone: true, 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\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 @if (service.smallScreen) {\r\n <div [@collapseWithMargin]=\"service.isCollapsed ? 'collapsed' : 'expanded'\">\r\n <ng-container *ngTemplateOutlet=\"navigations\"></ng-container>\r\n </div>\r\n }\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: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: LogoComponent, selector: "abp-logo" }, { kind: "component", type: PageAlertContainerComponent, selector: "abp-page-alert-container" }, { kind: "component", type: RoutesComponent, selector: "abp-routes", inputs: ["smallScreen"] }, { kind: "component", type: NavItemsComponent, selector: "abp-nav-items" }, { kind: "directive", type: ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }], animations: [slideFromBottom, collapseWithMargin] }); }
230
230
  }
231
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ApplicationLayoutComponent, decorators: [{
231
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: ApplicationLayoutComponent, decorators: [{
232
232
  type: Component,
233
233
  args: [{ selector: 'abp-layout-application', animations: [slideFromBottom, collapseWithMargin], providers: [LayoutService, SubscriptionService], imports: [
234
234
  NgTemplateOutlet,
@@ -243,10 +243,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
243
243
 
244
244
  class EmptyLayoutComponent {
245
245
  static { this.type = "empty" /* eLayoutType.empty */; }
246
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: EmptyLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
247
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: EmptyLayoutComponent, isStandalone: true, selector: "abp-layout-empty", ngImport: i0, template: ` <router-outlet></router-outlet> `, isInline: true, dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] }); }
246
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: EmptyLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
247
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.9", type: EmptyLayoutComponent, isStandalone: true, selector: "abp-layout-empty", ngImport: i0, template: ` <router-outlet></router-outlet> `, isInline: true, dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] }); }
248
248
  }
249
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: EmptyLayoutComponent, decorators: [{
249
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: EmptyLayoutComponent, decorators: [{
250
250
  type: Component,
251
251
  args: [{
252
252
  selector: 'abp-layout-empty',
@@ -276,10 +276,10 @@ class CurrentUserComponent {
276
276
  logout() {
277
277
  this.authService.logout().subscribe();
278
278
  }
279
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: CurrentUserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
280
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: CurrentUserComponent, isStandalone: true, selector: "abp-current-user", ngImport: i0, template: "@if ((currentUser$ | async)?.isAuthenticated) {\r\n <div\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 @if ((selectedTenant$ | async)?.name; as tenantName) {\r\n <small\r\n ><i>{{ tenantName }}</i\r\n >\\</small\r\n >\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 @for (item of userMenu.items$ | async; track $index) {\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 @if (item.component) {\r\n <ng-container\r\n [ngComponentOutlet]=\"item.component\"\r\n [ngComponentOutletInjector]=\"item | toInjector\"\r\n ></ng-container>\r\n } @else {\r\n @if (item.html) {\r\n <div [innerHTML]=\"item.html\" (click)=\"item.action ? item.action() : null\"></div>\r\n } @else {\r\n @if (item.textTemplate) {\r\n <a (click)=\"item.action ? item.action() : null\" class=\"dropdown-item pointer\">\r\n @if (item.textTemplate.icon) {\r\n <i class=\"me-1 {{ item.textTemplate.icon }}\"></i>\r\n }\r\n {{ item.textTemplate.text | abpLocalization }}</a\r\n >\r\n }\r\n }\r\n }\r\n </li>\r\n </ng-container>\r\n }\r\n </div>\r\n </div>\r\n} @else {\r\n <a role=\"button\" class=\"nav-link pointer\" (click)=\"navigateToLogin()\">\r\n {{ 'AbpAccount::Login' | abpLocalization }}\r\n </a>\r\n}\r\n", dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "ngmodule", type: NgbDropdownModule }, { kind: "directive", type: i1.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i1.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: AbpVisibleDirective, selector: "[abpVisible]", inputs: ["abpVisible"] }, { kind: "directive", type: PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission", "abpPermissionRunChangeDetection"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: ToInjectorPipe, name: "toInjector" }, { kind: "pipe", type: LocalizationPipe, name: "abpLocalization" }] }); }
279
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: CurrentUserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
280
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: CurrentUserComponent, isStandalone: true, selector: "abp-current-user", ngImport: i0, template: "@if ((currentUser$ | async)?.isAuthenticated) {\r\n <div\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 @if ((selectedTenant$ | async)?.name; as tenantName) {\r\n <small\r\n ><i>{{ tenantName }}</i\r\n >\\</small\r\n >\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 @for (item of userMenu.items$ | async; track $index) {\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 @if (item.component) {\r\n <ng-container\r\n [ngComponentOutlet]=\"item.component\"\r\n [ngComponentOutletInjector]=\"item | toInjector\"\r\n ></ng-container>\r\n } @else {\r\n @if (item.html) {\r\n <div [innerHTML]=\"item.html\" (click)=\"item.action ? item.action() : null\"></div>\r\n } @else {\r\n @if (item.textTemplate) {\r\n <a (click)=\"item.action ? item.action() : null\" class=\"dropdown-item pointer\">\r\n @if (item.textTemplate.icon) {\r\n <i class=\"me-1 {{ item.textTemplate.icon }}\"></i>\r\n }\r\n {{ item.textTemplate.text | abpLocalization }}</a\r\n >\r\n }\r\n }\r\n }\r\n </li>\r\n </ng-container>\r\n }\r\n </div>\r\n </div>\r\n} @else {\r\n <a role=\"button\" class=\"nav-link pointer\" (click)=\"navigateToLogin()\">\r\n {{ 'AbpAccount::Login' | abpLocalization }}\r\n </a>\r\n}\r\n", dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "ngmodule", type: NgbDropdownModule }, { kind: "directive", type: i1.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i1.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: AbpVisibleDirective, selector: "[abpVisible]", inputs: ["abpVisible"] }, { kind: "directive", type: PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission", "abpPermissionRunChangeDetection"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: ToInjectorPipe, name: "toInjector" }, { kind: "pipe", type: LocalizationPipe, name: "abpLocalization" }] }); }
281
281
  }
282
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: CurrentUserComponent, decorators: [{
282
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: CurrentUserComponent, decorators: [{
283
283
  type: Component,
284
284
  args: [{ selector: 'abp-current-user', imports: [
285
285
  NgComponentOutlet,
@@ -314,8 +314,8 @@ class LanguagesComponent {
314
314
  onChangeLang(cultureName) {
315
315
  this.sessionState.setLanguage(cultureName);
316
316
  }
317
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: LanguagesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
318
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: LanguagesComponent, isStandalone: true, selector: "abp-languages", ngImport: i0, template: `
317
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: LanguagesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
318
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: LanguagesComponent, isStandalone: true, selector: "abp-languages", ngImport: i0, template: `
319
319
  @if (((dropdownLanguages$ | async)?.length || 0) > 0) {
320
320
  <div class="dropdown" ngbDropdown #languageDropdown="ngbDropdown" display="static">
321
321
  <a
@@ -348,7 +348,7 @@ class LanguagesComponent {
348
348
  }
349
349
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: NgbDropdownModule }, { kind: "directive", type: i1.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i1.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
350
350
  }
351
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: LanguagesComponent, decorators: [{
351
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: LanguagesComponent, decorators: [{
352
352
  type: Component,
353
353
  args: [{
354
354
  selector: 'abp-languages',
@@ -406,8 +406,8 @@ class ValidationErrorComponent extends ValidationErrorComponent$1 {
406
406
  return error;
407
407
  });
408
408
  }
409
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ValidationErrorComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
410
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: ValidationErrorComponent, isStandalone: true, selector: "abp-validation-error", usesInheritance: true, ngImport: i0, template: `
409
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: ValidationErrorComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
410
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: ValidationErrorComponent, isStandalone: true, selector: "abp-validation-error", usesInheritance: true, ngImport: i0, template: `
411
411
  @for (error of abpErrors; track $index) {
412
412
  <div class="invalid-feedback">
413
413
  {{ error.message | abpLocalization: error.interpoliteParams }}
@@ -415,7 +415,7 @@ class ValidationErrorComponent extends ValidationErrorComponent$1 {
415
415
  }
416
416
  `, isInline: true, dependencies: [{ kind: "pipe", type: LocalizationPipe, name: "abpLocalization" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
417
417
  }
418
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ValidationErrorComponent, decorators: [{
418
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: ValidationErrorComponent, decorators: [{
419
419
  type: Component,
420
420
  args: [{
421
421
  selector: 'abp-validation-error',
@@ -500,10 +500,10 @@ class LazyStyleHandler {
500
500
  });
501
501
  });
502
502
  }
503
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: LazyStyleHandler, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
504
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: LazyStyleHandler }); }
503
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: LazyStyleHandler, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
504
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: LazyStyleHandler }); }
505
505
  }
506
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: LazyStyleHandler, decorators: [{
506
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: LazyStyleHandler, decorators: [{
507
507
  type: Injectable
508
508
  }], ctorParameters: () => [] });
509
509
  function createLazyStyleHref(style, dir) {
@@ -816,8 +816,8 @@ const THEME_BASIC_COMPONENTS = [
816
816
  TenantBoxComponent,
817
817
  ];
818
818
  class BaseThemeBasicModule {
819
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: BaseThemeBasicModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
820
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.6", ngImport: i0, type: BaseThemeBasicModule, imports: [ApplicationLayoutComponent, AccountLayoutComponent, EmptyLayoutComponent, ValidationErrorComponent,
819
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: BaseThemeBasicModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
820
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.9", ngImport: i0, type: BaseThemeBasicModule, imports: [ApplicationLayoutComponent, AccountLayoutComponent, EmptyLayoutComponent, ValidationErrorComponent,
821
821
  LogoComponent,
822
822
  NavItemsComponent,
823
823
  RoutesComponent,
@@ -834,13 +834,13 @@ class BaseThemeBasicModule {
834
834
  PageAlertContainerComponent,
835
835
  AuthWrapperComponent,
836
836
  TenantBoxComponent] }); }
837
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: BaseThemeBasicModule, imports: [ApplicationLayoutComponent, AccountLayoutComponent, RoutesComponent,
837
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: BaseThemeBasicModule, imports: [ApplicationLayoutComponent, AccountLayoutComponent, RoutesComponent,
838
838
  CurrentUserComponent,
839
839
  LanguagesComponent,
840
840
  AuthWrapperComponent,
841
841
  TenantBoxComponent] }); }
842
842
  }
843
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: BaseThemeBasicModule, decorators: [{
843
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: BaseThemeBasicModule, decorators: [{
844
844
  type: NgModule,
845
845
  args: [{
846
846
  declarations: [],
@@ -858,11 +858,11 @@ class ThemeBasicModule {
858
858
  providers: [provideThemeBasicConfig()],
859
859
  };
860
860
  }
861
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ThemeBasicModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
862
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.6", ngImport: i0, type: ThemeBasicModule, imports: [BaseThemeBasicModule], exports: [BaseThemeBasicModule] }); }
863
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ThemeBasicModule, imports: [BaseThemeBasicModule, BaseThemeBasicModule] }); }
861
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: ThemeBasicModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
862
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.9", ngImport: i0, type: ThemeBasicModule, imports: [BaseThemeBasicModule], exports: [BaseThemeBasicModule] }); }
863
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: ThemeBasicModule, imports: [BaseThemeBasicModule, BaseThemeBasicModule] }); }
864
864
  }
865
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ThemeBasicModule, decorators: [{
865
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: ThemeBasicModule, decorators: [{
866
866
  type: NgModule,
867
867
  args: [{
868
868
  exports: [BaseThemeBasicModule],
@@ -1 +1 @@
1
- {"version":3,"file":"abp-ng.theme.basic.mjs","sources":["../../../../packages/theme-basic/src/lib/services/layout.service.ts","../../../../packages/theme-basic/src/lib/components/logo/logo.component.ts","../../../../packages/theme-basic/src/lib/components/routes/routes.component.ts","../../../../packages/theme-basic/src/lib/components/routes/routes.component.html","../../../../packages/theme-basic/src/lib/components/nav-items/nav-items.component.ts","../../../../packages/theme-basic/src/lib/components/nav-items/nav-items.component.html","../../../../packages/theme-basic/src/lib/components/account-layout/tenant-box/tenant-box.component.ts","../../../../packages/theme-basic/src/lib/components/account-layout/tenant-box/tenant-box.component.html","../../../../packages/theme-basic/src/lib/components/account-layout/auth-wrapper/auth-wrapper.component.ts","../../../../packages/theme-basic/src/lib/components/account-layout/auth-wrapper/auth-wrapper.component.html","../../../../packages/theme-basic/src/lib/components/page-alert-container/page-alert-container.component.ts","../../../../packages/theme-basic/src/lib/components/page-alert-container/page-alert-container.component.html","../../../../packages/theme-basic/src/lib/components/account-layout/account-layout.component.ts","../../../../packages/theme-basic/src/lib/components/account-layout/account-layout.component.html","../../../../packages/theme-basic/src/lib/components/application-layout/application-layout.component.ts","../../../../packages/theme-basic/src/lib/components/application-layout/application-layout.component.html","../../../../packages/theme-basic/src/lib/components/empty-layout/empty-layout.component.ts","../../../../packages/theme-basic/src/lib/components/nav-items/current-user.component.ts","../../../../packages/theme-basic/src/lib/components/nav-items/current-user.component.html","../../../../packages/theme-basic/src/lib/components/nav-items/languages.component.ts","../../../../packages/theme-basic/src/lib/components/validation-error/validation-error.component.ts","../../../../packages/theme-basic/src/lib/tokens/lazy-styles.token.ts","../../../../packages/theme-basic/src/lib/handlers/lazy-style.handler.ts","../../../../packages/theme-basic/src/lib/providers/nav-item.provider.ts","../../../../packages/theme-basic/src/lib/constants/styles.ts","../../../../packages/theme-basic/src/lib/providers/styles.provider.ts","../../../../packages/theme-basic/src/lib/providers/user-menu.provider.ts","../../../../packages/theme-basic/src/lib/providers/theme-basic-config.provider.ts","../../../../packages/theme-basic/src/lib/theme-basic.module.ts","../../../../packages/theme-basic/src/public-api.ts","../../../../packages/theme-basic/src/abp-ng.theme.basic.ts"],"sourcesContent":["import {RouterEvents, SubscriptionService} from '@abp/ng.core';\r\nimport { ChangeDetectorRef, Injectable, inject } from '@angular/core';\r\nimport { fromEvent } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { eThemeBasicComponents } from '../enums';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Injectable()\r\nexport class LayoutService {\r\n private subscription = inject(SubscriptionService);\r\n private cdRef = inject(ChangeDetectorRef);\r\n\r\n document = inject(DOCUMENT);\r\n isCollapsed = true;\r\n\r\n smallScreen!: boolean; // do not set true or false\r\n\r\n logoComponentKey = eThemeBasicComponents.Logo;\r\n\r\n routesComponentKey = eThemeBasicComponents.Routes;\r\n\r\n navItemsComponentKey = eThemeBasicComponents.NavItems;\r\n\r\n constructor() {\r\n const subscription = this.subscription;\r\n const routerEvents = inject(RouterEvents);\r\n\r\n subscription.addOne(routerEvents.getNavigationEvents(\"End\"),() => {\r\n this.isCollapsed = true;\r\n })\r\n }\r\n\r\n private checkWindowWidth() {\r\n const isSmallScreen = this.document.defaultView.innerWidth < 992;\r\n if (isSmallScreen && this.smallScreen === false) {\r\n this.isCollapsed = false;\r\n setTimeout(() => {\r\n this.isCollapsed = true;\r\n }, 100);\r\n }\r\n this.smallScreen = isSmallScreen;\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n subscribeWindowSize() {\r\n this.checkWindowWidth();\r\n\r\n const resize$ = fromEvent(this.document.defaultView, 'resize').pipe(debounceTime(150));\r\n this.subscription.addOne(resize$, () => this.checkWindowWidth());\r\n }\r\n}\r\n","import { EnvironmentService } from '@abp/ng.core';\r\nimport { RouterLink } from '@angular/router';\r\nimport { Component, inject } from '@angular/core';\r\nimport { LOGO_APP_NAME_TOKEN, LOGO_URL_TOKEN } from '@abp/ng.theme.shared';\r\n\r\n@Component({\r\n selector: 'abp-logo',\r\n template: `\r\n <a class=\"navbar-brand\" routerLink=\"/\">\r\n @if (logoUrl) {\r\n <img [src]=\"logoUrl\" [alt]=\"appName\" width=\"100%\" height=\"auto\" />\r\n } @else {\r\n {{ appName }}\r\n }\r\n </a>\r\n `,\r\n standalone: true,\r\n imports: [RouterLink],\r\n})\r\nexport class LogoComponent {\r\n private environment = inject(EnvironmentService);\r\n\r\n private readonly providedLogoUrl = inject(LOGO_URL_TOKEN, { optional: true });\r\n private readonly providedAppName = inject(LOGO_APP_NAME_TOKEN, { optional: true });\r\n\r\n get logoUrl(): string {\r\n return (\r\n this.providedLogoUrl ?? this.environment.getEnvironment().application?.logoUrl\r\n );\r\n }\r\n\r\n get appName(): string {\r\n return (\r\n this.providedAppName ?? this.environment.getEnvironment().application?.name\r\n );\r\n }\r\n}\r\n","import {\r\n ABP,\r\n LazyLocalizationPipe,\r\n LocalizationPipe,\r\n PermissionDirective,\r\n RoutesService,\r\n TreeNode,\r\n} from '@abp/ng.core';\r\nimport {\r\n Component,\r\n ElementRef,\r\n inject,\r\n Input,\r\n QueryList,\r\n Renderer2,\r\n TrackByFunction,\r\n ViewChildren,\r\n} from '@angular/core';\r\nimport { NgTemplateOutlet, NgClass, AsyncPipe } from '@angular/common';\r\nimport { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { RouterLink } from '@angular/router';\r\nimport { EllipsisDirective } from '@abp/ng.theme.shared';\r\n\r\n@Component({\r\n selector: 'abp-routes',\r\n templateUrl: 'routes.component.html',\r\n imports: [\r\n NgTemplateOutlet,\r\n NgClass,\r\n AsyncPipe,\r\n RouterLink,\r\n NgbDropdownModule,\r\n LazyLocalizationPipe,\r\n PermissionDirective,\r\n EllipsisDirective,\r\n LocalizationPipe,\r\n ],\r\n})\r\nexport class RoutesComponent {\r\n public readonly routesService = inject(RoutesService);\r\n protected renderer = inject(Renderer2);\r\n\r\n @Input() smallScreen?: boolean;\r\n\r\n @ViewChildren('childrenContainer') childrenContainers!: QueryList<ElementRef<HTMLDivElement>>;\r\n\r\n rootDropdownExpand = {} as { [key: string]: boolean };\r\n\r\n trackByFn: TrackByFunction<TreeNode<ABP.Route>> = (_, item) => item.name;\r\n\r\n isDropdown(node: TreeNode<ABP.Route>) {\r\n return !node?.isLeaf || this.routesService.hasChildren(node.name);\r\n }\r\n\r\n closeDropdown() {\r\n this.childrenContainers.forEach(({ nativeElement }) => {\r\n this.renderer.addClass(nativeElement, 'd-none');\r\n setTimeout(() => this.renderer.removeClass(nativeElement, 'd-none'), 0);\r\n });\r\n }\r\n}\r\n","<ul class=\"navbar-nav\">\r\n @for (route of routesService.visible$ | async; track $index) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"isDropdown(route) ? dropdownLink : defaultLink\"\r\n [ngTemplateOutletContext]=\"{ $implicit: route }\"\r\n />\r\n }\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 @if (route.iconClass) {\r\n <i [ngClass]=\"route.iconClass\"></i>\r\n }\r\n {{ route.name | abpLazyLocalization | async }}\r\n </a>\r\n </li>\r\n </ng-template>\r\n\r\n <ng-template #dropdownLink let-route>\r\n @if (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 @if (route.iconClass) {\r\n <i [ngClass]=\"route.iconClass\"></i>\r\n }\r\n {{ route.name | abpLazyLocalization | async }}\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 *ngTemplateOutlet=\"forTemplate; context: { $implicit: route }\" />\r\n </div>\r\n </li>\r\n }\r\n </ng-template>\r\n\r\n <ng-template #forTemplate let-route>\r\n @for (child of route.children; track $index) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"child.children?.length ? dropdownChild : defaultChild\"\r\n [ngTemplateOutletContext]=\"{ $implicit: child }\"\r\n />\r\n }\r\n </ng-template>\r\n\r\n <ng-template #defaultChild let-child>\r\n @if (child.path) {\r\n <div class=\"dropdown-submenu\" *abpPermission=\"child.requiredPolicy\">\r\n <a class=\"dropdown-item\" [routerLink]=\"[child.path]\" (click)=\"closeDropdown()\">\r\n @if (child.iconClass) {\r\n <i [ngClass]=\"child.iconClass\"></i>\r\n }\r\n {{ child.name | abpLocalization }}</a\r\n >\r\n </div>\r\n }\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 @if (child.iconClass) {\r\n <i [ngClass]=\"child.iconClass\"></i>\r\n }\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 }\" />\r\n </div>\r\n </div>\r\n </ng-template>\r\n</ul>\r\n","import { AbpVisibleDirective, NavItem, NavItemsService } from '@abp/ng.theme.shared';\r\nimport { Component, TrackByFunction, inject, PLATFORM_ID } from '@angular/core';\r\nimport { NgComponentOutlet, AsyncPipe, isPlatformBrowser } from '@angular/common';\r\nimport { PermissionDirective, ToInjectorPipe } from '@abp/ng.core';\r\n\r\n@Component({\r\n selector: 'abp-nav-items',\r\n templateUrl: 'nav-items.component.html',\r\n imports: [NgComponentOutlet, AsyncPipe, AbpVisibleDirective, PermissionDirective, ToInjectorPipe],\r\n})\r\nexport class NavItemsComponent {\r\n readonly navItems = inject(NavItemsService);\r\n private platformId = inject(PLATFORM_ID);\r\n readonly isBrowser = isPlatformBrowser(this.platformId);\r\n\r\n trackByFn: TrackByFunction<NavItem> = (_, element) => element.id;\r\n}\r\n","<ul class=\"navbar-nav\">\r\n @if (isBrowser) {\r\n @for (item of navItems.items$ | async; track $index) {\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 @if (item.component) {\r\n <ng-container\r\n [ngComponentOutlet]=\"item.component\"\r\n [ngComponentOutletInjector]=\"item | toInjector\"\r\n ></ng-container>\r\n } @else {\r\n <div [innerHTML]=\"item.html\" (click)=\"item.action ? item.action() : null\"></div>\r\n }\r\n </li>\r\n </ng-container>\r\n }\r\n }\r\n</ul>\r\n","import { TenantBoxService } from '@abp/ng.account.core';\r\nimport { Component, inject } from '@angular/core';\r\nimport { AsyncPipe } from '@angular/common';\r\nimport { LocalizationPipe } from '@abp/ng.core';\r\nimport { ButtonComponent, ModalCloseDirective, ModalComponent } from '@abp/ng.theme.shared';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'abp-tenant-box',\r\n templateUrl: './tenant-box.component.html',\r\n providers: [TenantBoxService],\r\n imports: [\r\n AsyncPipe,\r\n FormsModule,\r\n ModalComponent,\r\n LocalizationPipe,\r\n ButtonComponent,\r\n ModalCloseDirective,\r\n ],\r\n})\r\nexport class TenantBoxComponent {\r\n service = inject(TenantBoxService);\r\n}\r\n","@if ((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-outline-primary\">\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}\r\n","import { AuthWrapperService } from '@abp/ng.account.core';\r\nimport { Component, inject } from '@angular/core';\r\nimport { AsyncPipe } from '@angular/common';\r\nimport { LocalizationPipe, ReplaceableTemplateDirective } from '@abp/ng.core';\r\nimport { TenantBoxComponent } from '../tenant-box/tenant-box.component';\r\n\r\n@Component({\r\n selector: 'abp-auth-wrapper',\r\n templateUrl: './auth-wrapper.component.html',\r\n providers: [AuthWrapperService],\r\n imports: [AsyncPipe, TenantBoxComponent, ReplaceableTemplateDirective, LocalizationPipe],\r\n})\r\nexport class AuthWrapperComponent {\r\n service = inject(AuthWrapperService);\r\n}","<div class=\"row\">\r\n <div class=\"mx-auto col col-md-5\">\r\n @if ((service.isMultiTenancyEnabled$ | async) && service.isTenantBoxVisible) {\r\n <abp-tenant-box\r\n *abpReplaceableTemplate=\"{ componentKey: service.tenantBoxKey }\"\r\n ></abp-tenant-box>\r\n }\r\n\r\n <div class=\"abp-account-container\">\r\n @if (service.enableLocalLogin$ | async) {\r\n <div class=\"card mt-3 shadow-sm rounded\">\r\n <div class=\"card-body p-5\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n } @else {\r\n <div class=\"alert alert-warning\">\r\n <strong>{{ 'AbpAccount::InvalidLoginRequest' | abpLocalization }}</strong>\r\n {{ 'AbpAccount::ThereAreNoLoginSchemesConfiguredForThisClient' | abpLocalization }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n","import { Component, ViewEncapsulation, inject } from '@angular/core';\r\nimport { PageAlertService } from '@abp/ng.theme.shared';\r\nimport { NgClass, AsyncPipe } from '@angular/common';\r\nimport { LocalizationPipe, SafeHtmlPipe } from '@abp/ng.core';\r\n\r\n@Component({\r\n selector: 'abp-page-alert-container',\r\n templateUrl: './page-alert-container.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [NgClass, AsyncPipe, LocalizationPipe, SafeHtmlPipe],\r\n})\r\nexport class PageAlertContainerComponent {\r\n service = inject(PageAlertService);\r\n}\r\n","@for (alert of service.alerts$ | async; track i; 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 @if (alert.title) {\r\n <h4\r\n class=\"alert-heading\"\r\n [innerHTML]=\"alert.title | abpSafeHtml | abpLocalization: alert.titleLocalizationParams\"\r\n ></h4>\r\n }\r\n <span\r\n [innerHTML]=\"alert.message | abpSafeHtml | abpLocalization: alert.messageLocalizationParams\"\r\n ></span>\r\n @if (alert.dismissible) {\r\n <button\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 }\r\n </div>\r\n}\r\n","import { AfterViewInit, Component, inject } from '@angular/core';\r\nimport { eLayoutType, ReplaceableTemplateDirective, SubscriptionService } from '@abp/ng.core';\r\nimport { LayoutService } from '../../services/layout.service';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { LogoComponent } from '../logo/logo.component';\r\nimport { RoutesComponent } from '../routes/routes.component';\r\nimport { NavItemsComponent } from '../nav-items/nav-items.component';\r\nimport { AuthWrapperComponent } from './auth-wrapper/auth-wrapper.component';\r\nimport { PageAlertContainerComponent } from '../page-alert-container/page-alert-container.component';\r\nimport { RouterOutlet } from '@angular/router';\r\nimport { collapseWithMargin } from '@abp/ng.theme.shared';\r\n\r\n@Component({\r\n selector: 'abp-layout-account',\r\n templateUrl: './account-layout.component.html',\r\n animations: [collapseWithMargin],\r\n providers: [LayoutService, SubscriptionService],\r\n imports: [\r\n NgTemplateOutlet,\r\n LogoComponent,\r\n RoutesComponent,\r\n NavItemsComponent,\r\n AuthWrapperComponent,\r\n PageAlertContainerComponent,\r\n ReplaceableTemplateDirective,\r\n RouterOutlet,\r\n ],\r\n})\r\nexport class AccountLayoutComponent implements AfterViewInit {\r\n service = inject(LayoutService);\r\n\r\n // required for dynamic component\r\n static type = eLayoutType.account;\r\n\r\n authWrapperKey = 'Account.AuthWrapperComponent';\r\n\r\n ngAfterViewInit() {\r\n this.service.subscribeWindowSize();\r\n }\r\n}\r\n","<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 @if (service.smallScreen) {\r\n <div\r\n [@collapseWithMargin]=\"service.isCollapsed ? 'collapsed' : 'expanded'\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"navigations\"></ng-container>\r\n </div>\r\n }\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","import { eLayoutType, ReplaceableTemplateDirective, SubscriptionService } from '@abp/ng.core';\r\nimport { collapseWithMargin, slideFromBottom } from '@abp/ng.theme.shared';\r\nimport { AfterViewInit, Component, inject } from '@angular/core';\r\nimport { LayoutService } from '../../services/layout.service';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { RouterOutlet } from '@angular/router';\r\nimport { LogoComponent } from '../logo/logo.component';\r\nimport { PageAlertContainerComponent } from '../page-alert-container/page-alert-container.component';\r\nimport { RoutesComponent } from '../routes/routes.component';\r\nimport { NavItemsComponent } from '../nav-items/nav-items.component';\r\n\r\n@Component({\r\n selector: 'abp-layout-application',\r\n templateUrl: './application-layout.component.html',\r\n animations: [slideFromBottom, collapseWithMargin],\r\n providers: [LayoutService, SubscriptionService],\r\n imports: [\r\n NgTemplateOutlet,\r\n LogoComponent,\r\n PageAlertContainerComponent,\r\n RoutesComponent,\r\n NavItemsComponent,\r\n ReplaceableTemplateDirective,\r\n RouterOutlet,\r\n ],\r\n})\r\nexport class ApplicationLayoutComponent implements AfterViewInit {\r\n public readonly service = inject(LayoutService);\r\n // required for dynamic component\r\n static type = eLayoutType.application;\r\n\r\n ngAfterViewInit() {\r\n this.service.subscribeWindowSize();\r\n }\r\n}\r\n","<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 @if (service.smallScreen) {\r\n <div [@collapseWithMargin]=\"service.isCollapsed ? 'collapsed' : 'expanded'\">\r\n <ng-container *ngTemplateOutlet=\"navigations\"></ng-container>\r\n </div>\r\n }\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","import { Component } from '@angular/core';\r\nimport { eLayoutType } from '@abp/ng.core';\r\nimport { RouterOutlet } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'abp-layout-empty',\r\n template: ` <router-outlet></router-outlet> `,\r\n imports: [RouterOutlet],\r\n})\r\nexport class EmptyLayoutComponent {\r\n static type = eLayoutType.empty;\r\n}\r\n","import {\r\n AuthService,\r\n ConfigStateService,\r\n CurrentUserDto,\r\n LocalizationPipe,\r\n NAVIGATE_TO_MANAGE_PROFILE,\r\n PermissionDirective,\r\n SessionStateService,\r\n ToInjectorPipe,\r\n} from '@abp/ng.core';\r\nimport { AbpVisibleDirective, UserMenu, UserMenuService } from '@abp/ng.theme.shared';\r\nimport { Component, TrackByFunction, inject } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { NgComponentOutlet, AsyncPipe, DOCUMENT } from '@angular/common';\r\nimport { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n selector: 'abp-current-user',\r\n templateUrl: './current-user.component.html',\r\n imports: [\r\n NgComponentOutlet,\r\n AsyncPipe,\r\n NgbDropdownModule,\r\n AbpVisibleDirective,\r\n PermissionDirective,\r\n ToInjectorPipe,\r\n LocalizationPipe,\r\n ],\r\n})\r\nexport class CurrentUserComponent {\r\n readonly navigateToManageProfile = inject(NAVIGATE_TO_MANAGE_PROFILE);\r\n readonly userMenu = inject(UserMenuService);\r\n private authService = inject(AuthService);\r\n private configState = inject(ConfigStateService);\r\n private sessionState = inject(SessionStateService);\r\n private document = inject(DOCUMENT);\r\n\r\n currentUser$: Observable<CurrentUserDto> = this.configState.getOne$('currentUser');\r\n selectedTenant$ = this.sessionState.getTenant$();\r\n trackByFn: TrackByFunction<UserMenu> = (_, element) => element.id;\r\n\r\n get smallScreen(): boolean {\r\n return this.document.defaultView?.innerWidth < 992;\r\n }\r\n\r\n navigateToLogin() {\r\n this.authService.navigateToLogin();\r\n }\r\n\r\n logout() {\r\n this.authService.logout().subscribe();\r\n }\r\n}\r\n","@if ((currentUser$ | async)?.isAuthenticated) {\r\n <div\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 @if ((selectedTenant$ | async)?.name; as tenantName) {\r\n <small\r\n ><i>{{ tenantName }}</i\r\n >\\</small\r\n >\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 @for (item of userMenu.items$ | async; track $index) {\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 @if (item.component) {\r\n <ng-container\r\n [ngComponentOutlet]=\"item.component\"\r\n [ngComponentOutletInjector]=\"item | toInjector\"\r\n ></ng-container>\r\n } @else {\r\n @if (item.html) {\r\n <div [innerHTML]=\"item.html\" (click)=\"item.action ? item.action() : null\"></div>\r\n } @else {\r\n @if (item.textTemplate) {\r\n <a (click)=\"item.action ? item.action() : null\" class=\"dropdown-item pointer\">\r\n @if (item.textTemplate.icon) {\r\n <i class=\"me-1 {{ item.textTemplate.icon }}\"></i>\r\n }\r\n {{ item.textTemplate.text | abpLocalization }}</a\r\n >\r\n }\r\n }\r\n }\r\n </li>\r\n </ng-container>\r\n }\r\n </div>\r\n </div>\r\n} @else {\r\n <a role=\"button\" class=\"nav-link pointer\" (click)=\"navigateToLogin()\">\r\n {{ 'AbpAccount::Login' | abpLocalization }}\r\n </a>\r\n}\r\n","import { ConfigStateService, LanguageInfo, SessionStateService } from '@abp/ng.core';\r\nimport { Component, inject } from '@angular/core';\r\nimport { DOCUMENT, AsyncPipe } from '@angular/common';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n selector: 'abp-languages',\r\n template: `\r\n @if (((dropdownLanguages$ | async)?.length || 0) > 0) {\r\n <div class=\"dropdown\" ngbDropdown #languageDropdown=\"ngbDropdown\" display=\"static\">\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 {{ defaultLanguage$ | async }}\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 && languageDropdown.isOpen()\"\r\n >\r\n @for (lang of dropdownLanguages$ | async; track $index) {\r\n <a\r\n href=\"javascript:void(0)\"\r\n class=\"dropdown-item\"\r\n (click)=\"onChangeLang(lang.cultureName || '')\"\r\n >{{ lang?.displayName }}</a\r\n >\r\n }\r\n </div>\r\n </div>\r\n }\r\n `,\r\n imports: [AsyncPipe, NgbDropdownModule],\r\n})\r\nexport class LanguagesComponent {\r\n private sessionState = inject(SessionStateService);\r\n private configState = inject(ConfigStateService);\r\n document = inject(DOCUMENT);\r\n\r\n get smallScreen(): boolean {\r\n return this.document.defaultView.innerWidth < 992;\r\n }\r\n\r\n languages$: Observable<LanguageInfo[]> = this.configState.getDeep$('localization.languages');\r\n\r\n get defaultLanguage$(): Observable<string> {\r\n return this.languages$.pipe(\r\n map(\r\n languages =>\r\n languages?.find(lang => lang.cultureName === this.selectedLangCulture)?.displayName || '',\r\n ),\r\n );\r\n }\r\n\r\n get dropdownLanguages$(): Observable<LanguageInfo[]> {\r\n return this.languages$.pipe(\r\n map(\r\n languages => languages?.filter(lang => lang.cultureName !== this.selectedLangCulture) || [],\r\n ),\r\n );\r\n }\r\n\r\n get selectedLangCulture(): string {\r\n return this.sessionState.getLanguage();\r\n }\r\n\r\n onChangeLang(cultureName: string) {\r\n this.sessionState.setLanguage(cultureName);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\r\nimport { Validation, ValidationErrorComponent as ErrorComponent } from '@ngx-validate/core';\r\nimport { LocalizationPipe } from '@abp/ng.core';\r\n\r\n@Component({\r\n selector: 'abp-validation-error',\r\n template: `\r\n @for (error of abpErrors; track $index) {\r\n <div class=\"invalid-feedback\">\r\n {{ error.message | abpLocalization: error.interpoliteParams }}\r\n </div>\r\n }\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [LocalizationPipe],\r\n})\r\nexport class ValidationErrorComponent extends ErrorComponent {\r\n get abpErrors(): (Validation.Error & { interpoliteParams?: string[] })[] {\r\n if (!this.errors || !this.errors.length) return [];\r\n\r\n return this.errors.map(error => {\r\n if (!error.message) return error;\r\n\r\n const index = error.message.indexOf('[');\r\n\r\n if (index > -1) {\r\n return {\r\n ...error,\r\n message: error.message.slice(0, index),\r\n interpoliteParams: error.message.slice(index + 1, error.message.length - 1).split(','),\r\n };\r\n }\r\n\r\n return error;\r\n });\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const LAZY_STYLES = new InjectionToken<string[]>('LAZY_STYLES');\r\n","import { LazyLoadService, LOADING_STRATEGY } from '@abp/ng.core';\r\nimport { DocumentDirHandlerService, LocaleDirection } from '@abp/ng.theme.shared';\r\nimport { Injectable, Injector, inject } from '@angular/core';\r\nimport { LAZY_STYLES } from '../tokens/lazy-styles.token';\r\nimport { DOCUMENT } from '@angular/common';\r\nexport const BOOTSTRAP = 'bootstrap-{{dir}}.min.css';\r\n\r\n@Injectable()\r\nexport class LazyStyleHandler {\r\n private document = inject(DOCUMENT);\r\n private lazyLoad!: LazyLoadService;\r\n private styles!: string[];\r\n private _dir: LocaleDirection = 'ltr';\r\n\r\n readonly loaded = new Map<string, HTMLLinkElement>();\r\n\r\n set dir(dir: LocaleDirection) {\r\n if (dir === this._dir) return;\r\n\r\n this.switchCSS(dir);\r\n this._dir = dir;\r\n }\r\n\r\n get dir(): LocaleDirection {\r\n return this._dir;\r\n }\r\n\r\n constructor() {\r\n const injector = inject(Injector);\r\n\r\n this.setStyles(injector);\r\n this.setLazyLoad(injector);\r\n this.listenToDirectionChanges(injector);\r\n }\r\n\r\n private getHrefFromLink(link: HTMLLinkElement | null | undefined): string {\r\n if (!link) return '';\r\n\r\n const a = this.document.createElement('a');\r\n a.href = link.href;\r\n return a.pathname.replace(/^\\//, '');\r\n }\r\n\r\n private getLoadedBootstrap(): LoadedStyle {\r\n const href = createLazyStyleHref(BOOTSTRAP, this.dir);\r\n const selector = `[href*=\"${href.replace(/\\.css$/, '')}\"]`;\r\n const link = this.document.querySelector<HTMLLinkElement>(selector);\r\n return { href, link };\r\n }\r\n\r\n private listenToDirectionChanges(injector: Injector) {\r\n const docDirHandler = injector.get(DocumentDirHandlerService);\r\n\r\n // will always listen, no need to unsubscribe\r\n docDirHandler.dir$.subscribe(dir => {\r\n this.dir = dir;\r\n });\r\n }\r\n\r\n private setLazyLoad(injector: Injector) {\r\n this.lazyLoad = injector.get(LazyLoadService);\r\n const { href, link } = this.getLoadedBootstrap();\r\n this.lazyLoad.loaded.set(href, link);\r\n }\r\n\r\n private setStyles(injector: Injector) {\r\n this.styles = injector.get(LAZY_STYLES, [BOOTSTRAP]);\r\n }\r\n\r\n private switchCSS(dir: LocaleDirection) {\r\n this.styles.forEach(style => {\r\n const oldHref = createLazyStyleHref(style, this.dir);\r\n const newHref = createLazyStyleHref(style, dir);\r\n const link = this.loaded.get(newHref);\r\n const href = this.getHrefFromLink(link) || newHref;\r\n\r\n const strategy = LOADING_STRATEGY.PrependAnonymousStyleToHead(href);\r\n this.lazyLoad.load(strategy).subscribe(() => {\r\n const oldLink = this.lazyLoad.loaded.get(oldHref) as HTMLLinkElement;\r\n this.loaded.delete(newHref);\r\n this.loaded.set(oldHref, oldLink);\r\n const newLink = this.lazyLoad.loaded.get(href) as HTMLLinkElement;\r\n this.lazyLoad.loaded.delete(href);\r\n this.lazyLoad.loaded.set(newHref, newLink);\r\n this.lazyLoad.remove(oldHref);\r\n });\r\n });\r\n }\r\n}\r\n\r\nexport function createLazyStyleHref(style: string, dir: string): string {\r\n return style.replace(/{{\\s*dir\\s*}}/g, dir);\r\n}\r\n\r\nexport function initLazyStyleHandler() {\r\n return () => new LazyStyleHandler();\r\n}\r\n\r\ninterface LoadedStyle {\r\n href: string;\r\n link: HTMLLinkElement | null;\r\n}\r\n","import { NavItemsService } from '@abp/ng.theme.shared';\r\nimport { inject, provideAppInitializer } from '@angular/core';\r\nimport { CurrentUserComponent } from '../components/nav-items/current-user.component';\r\nimport { LanguagesComponent } from '../components/nav-items/languages.component';\r\nimport { eThemeBasicComponents } from '../enums/components';\r\n\r\nexport const BASIC_THEME_NAV_ITEM_PROVIDERS = [\r\n provideAppInitializer(() => {\r\n configureNavItems();\r\n }),\r\n];\r\n\r\nexport function configureNavItems() {\r\n const navItems = inject(NavItemsService);\r\n navItems.addItems([\r\n {\r\n id: eThemeBasicComponents.Languages,\r\n order: 100,\r\n component: LanguagesComponent,\r\n },\r\n {\r\n id: eThemeBasicComponents.CurrentUser,\r\n order: 100,\r\n component: CurrentUserComponent,\r\n },\r\n ]);\r\n}\r\n","export default `\r\n.content-header-title {\r\n font-size: 24px;\r\n}\r\n.entry-row {\r\n margin-bottom: 15px;\r\n}\r\n#main-navbar-tools a.dropdown-toggle {\r\n text-decoration: none;\r\n color: #fff;\r\n}\r\n.navbar .dropdown-submenu {\r\n position: relative;\r\n}\r\n.navbar .dropdown-menu {\r\n margin: 0;\r\n padding: 0;\r\n}\r\n.navbar .dropdown-menu a {\r\n font-size: .9em;\r\n padding: 10px 15px;\r\n display: block;\r\n min-width: 210px;\r\n text-align: left;\r\n border-radius: 0.25rem;\r\n min-height: 44px;\r\n}\r\n[dir=rtl] .navbar .dropdown-menu a {\r\n text-align: right!important;\r\n}\r\n.navbar .dropdown-submenu a::after {\r\n transform: rotate(-90deg);\r\n position: absolute;\r\n right: 16px;\r\n top: 18px;\r\n}\r\n[dir=rtl] .navbar .dropdown-submenu a::after {\r\n transform: rotate(90deg);\r\n left: 16px;\r\n right: auto;\r\n top: 20px;\r\n}\r\n.navbar .dropdown-submenu .dropdown-menu {\r\n top: 0;\r\n left: 100%;\r\n}\r\n/* work around for rtl. Track https://github.com/ng-bootstrap/ng-bootstrap/issues/4100 issue */\r\n[dir=rtl] .navbar .dropdown-submenu .dropdown-menu {\r\n top: 0;\r\n right: 100%;\r\n}\r\n.card-header .btn {\r\n padding: 2px 6px;\r\n}\r\n.card-header h5 {\r\n margin: 0;\r\n}\r\n.container > .card {\r\n box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;\r\n}\r\n@media screen and (min-width: 992px) {\r\n .navbar .dropdown:hover > .dropdown-menu {\r\n display: block;\r\n }\r\n\r\n .navbar .dropdown-submenu:hover > .dropdown-menu {\r\n display: block;\r\n }\r\n}\r\n.input-validation-error {\r\n border-color: #dc3545;\r\n}\r\n.field-validation-error {\r\n font-size: 0.8em;\r\n}\r\n.ui-table .ui-table-tbody > tr.empty-row > div.empty-row-content {\r\n border: 1px solid #c8c8c8;\r\n }\r\n.abp-loading {\r\n background: rgba(0, 0, 0, 0.05);\r\n}\r\n.modal-backdrop {\r\nbackground-color: rgba(0, 0, 0, 0.6);\r\n}\r\n\r\n.confirmation .confirmation-backdrop {\r\n\t background: rgba(0, 0, 0, 0.7) !important;\r\n}\r\n .confirmation .confirmation-dialog {\r\n\t border: none;\r\n\t border-radius: 10px;\r\n\t background-color: #fff;\r\n\t box-shadow: 0 0 10px -5px rgba(0, 0, 0, 0.5);\r\n}\r\n .confirmation .confirmation-dialog .icon-container .icon {\r\n\t stroke: #fff;\r\n\t color: #fff;\r\n}\r\n .confirmation .confirmation-dialog .icon-container.info .icon {\r\n\t stroke: #2f96b4;\r\n\t color: #2f96b4;\r\n}\r\n .confirmation .confirmation-dialog .icon-container.success .icon {\r\n\t stroke: #51a351;\r\n\t color: #51a351;\r\n}\r\n .confirmation .confirmation-dialog .icon-container.warning .icon {\r\n\t stroke: #f89406;\r\n\t color: #f89406;\r\n}\r\n .confirmation .confirmation-dialog .icon-container.error .icon {\r\n\t stroke: #bd362f;\r\n\t color: #bd362f;\r\n}\r\n .confirmation .confirmation-dialog .content .title {\r\n\t color: #222;\r\n}\r\n .confirmation .confirmation-dialog .content .message {\r\n\t color: #777;\r\n}\r\n .confirmation .confirmation-dialog .footer {\r\n\t background: transparent;\r\n}\r\n .confirmation .confirmation-dialog .footer .confirmation-button {\r\n\t background-color: #eee;\r\n\t color: #777;\r\n}\r\n .confirmation .confirmation-dialog .footer .confirmation-button:hover, .confirmation .confirmation-dialog .footer .confirmation-button:focus, .confirmation .confirmation-dialog .footer .confirmation-button:active {\r\n\t background-color: #bbb;\r\n}\r\n .confirmation .confirmation-dialog .footer .confirmation-button--confirm {\r\n\t background-color: #2f96b4;\r\n\t color: #fff;\r\n}\r\n .confirmation .confirmation-dialog .footer .confirmation-button--confirm:hover {\r\n\t background-color: #2e819b;\r\n}\r\n.ui-table .pagination-wrapper {\r\n background-color: #f4f4f4;\r\n border: 1px solid #c8c8c8;\r\n}\r\n.bordered .datatable-body-row {\r\n border-top: 1px solid #eee;\r\n margin-top: -1px;\r\n}\r\n.breadcrumb {\r\n background-color: transparent;\r\n padding: 0.27rem;\r\n}\r\n\r\n.abp-md-form {\r\n max-width: 540px;\r\n}\r\n\r\nabp-chat-icon,\r\nabp-back-to-impersonator-nav-item {\r\n margin-inline: 0.4rem;\r\n}\r\n\r\nabp-chat-icon {\r\n .fa-comments:before {\r\n color: var(--bs-navbar-color);\r\n }\r\n}\r\n\r\nabp-back-to-impersonator-nav-item {\r\n .fa-undo {\r\n color: var(--bs-navbar-color);\r\n }\r\n}\r\n\r\n.ngx-datatable.material:has(.datatable-body-row) .datatable-footer {\r\n border-top: none;\r\n}\r\n\r\n.ngx-datatable.material:not(:has(.datatable-body-row)) .datatable-footer {\r\n border-top: 1px solid #dee2e6;\r\n}\r\n\r\n`;\r\n\r\n\r\n","import { CONTENT_STRATEGY, DomInsertionService, ReplaceableComponentsService } from '@abp/ng.core';\r\nimport { inject, provideAppInitializer } from '@angular/core';\r\nimport { AccountLayoutComponent } from '../components/account-layout/account-layout.component';\r\nimport { ApplicationLayoutComponent } from '../components/application-layout/application-layout.component';\r\nimport { EmptyLayoutComponent } from '../components/empty-layout/empty-layout.component';\r\nimport styles from '../constants/styles';\r\nimport { eThemeBasicComponents } from '../enums/components';\r\n\r\nexport const BASIC_THEME_STYLES_PROVIDERS = [\r\n provideAppInitializer(() => {\r\n const initializerFn = configureStyles(\r\n inject(DomInsertionService),\r\n inject(ReplaceableComponentsService),\r\n );\r\n return initializerFn();\r\n }),\r\n];\r\n\r\nexport function configureStyles(\r\n domInsertion: DomInsertionService,\r\n replaceableComponents: ReplaceableComponentsService,\r\n) {\r\n return () => {\r\n domInsertion.insertContent(CONTENT_STRATEGY.AppendStyleToHead(styles));\r\n\r\n initLayouts(replaceableComponents);\r\n };\r\n}\r\n\r\nfunction initLayouts(replaceableComponents: ReplaceableComponentsService) {\r\n replaceableComponents.add({\r\n key: eThemeBasicComponents.ApplicationLayout,\r\n component: ApplicationLayoutComponent,\r\n });\r\n replaceableComponents.add({\r\n key: eThemeBasicComponents.AccountLayout,\r\n component: AccountLayoutComponent,\r\n });\r\n replaceableComponents.add({\r\n key: eThemeBasicComponents.EmptyLayout,\r\n component: EmptyLayoutComponent,\r\n });\r\n}\r\n","import { AuthService, NAVIGATE_TO_MANAGE_PROFILE } from '@abp/ng.core';\r\nimport { UserMenuService } from '@abp/ng.theme.shared';\r\nimport { Injector, inject, provideAppInitializer } from '@angular/core';\r\nimport { eUserMenuItems } from '../enums/user-menu-items';\r\n\r\nexport const BASIC_THEME_USER_MENU_PROVIDERS = [\r\n provideAppInitializer(() => {\r\n const initializerFn = configureUserMenu(inject(Injector));\r\n return initializerFn();\r\n }),\r\n];\r\n\r\nexport function configureUserMenu(injector: Injector) {\r\n const userMenu = injector.get(UserMenuService);\r\n const authService = injector.get(AuthService);\r\n const navigateToManageProfile = injector.get(NAVIGATE_TO_MANAGE_PROFILE);\r\n\r\n return () => {\r\n userMenu.addItems([\r\n {\r\n id: eUserMenuItems.MyAccount,\r\n order: 100,\r\n textTemplate: {\r\n text: 'AbpAccount::MyAccount',\r\n icon: 'fa fa-cog',\r\n },\r\n action: () => navigateToManageProfile(),\r\n },\r\n {\r\n id: eUserMenuItems.Logout,\r\n order: 101,\r\n textTemplate: {\r\n text: 'AbpUi::Logout',\r\n icon: 'fa fa-power-off',\r\n },\r\n action: () => {\r\n authService.logout().subscribe();\r\n },\r\n },\r\n ]);\r\n };\r\n}\r\n","import { makeEnvironmentProviders, inject, provideAppInitializer } from '@angular/core';\r\n\r\nimport {\r\n VALIDATION_ERROR_TEMPLATE,\r\n VALIDATION_TARGET_SELECTOR,\r\n VALIDATION_INVALID_CLASSES,\r\n} from '@ngx-validate/core';\r\nimport { LazyStyleHandler } from '../handlers';\r\nimport { BASIC_THEME_NAV_ITEM_PROVIDERS } from './nav-item.provider';\r\nimport { BASIC_THEME_STYLES_PROVIDERS } from './styles.provider';\r\nimport { BASIC_THEME_USER_MENU_PROVIDERS } from './user-menu.provider';\r\nimport { ValidationErrorComponent } from '../components';\r\n\r\nexport function provideThemeBasicConfig() {\r\n return makeEnvironmentProviders([\r\n BASIC_THEME_NAV_ITEM_PROVIDERS,\r\n BASIC_THEME_USER_MENU_PROVIDERS,\r\n BASIC_THEME_STYLES_PROVIDERS,\r\n {\r\n provide: VALIDATION_ERROR_TEMPLATE,\r\n useValue: ValidationErrorComponent,\r\n },\r\n {\r\n provide: VALIDATION_TARGET_SELECTOR,\r\n useValue: '.form-group',\r\n },\r\n {\r\n provide: VALIDATION_INVALID_CLASSES,\r\n useValue: 'is-invalid',\r\n },\r\n LazyStyleHandler,\r\n provideAppInitializer(() => {\r\n inject(LazyStyleHandler);\r\n }),\r\n ]);\r\n}\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport {\r\n AccountLayoutComponent,\r\n AuthWrapperComponent,\r\n TenantBoxComponent,\r\n ApplicationLayoutComponent,\r\n EmptyLayoutComponent,\r\n LogoComponent,\r\n CurrentUserComponent,\r\n LanguagesComponent,\r\n NavItemsComponent,\r\n PageAlertContainerComponent,\r\n RoutesComponent,\r\n ValidationErrorComponent,\r\n} from './components';\r\nimport { provideThemeBasicConfig } from './providers';\r\n\r\nexport const LAYOUTS = [ApplicationLayoutComponent, AccountLayoutComponent, EmptyLayoutComponent];\r\n\r\nexport const THEME_BASIC_COMPONENTS = [\r\n ...LAYOUTS,\r\n ValidationErrorComponent,\r\n LogoComponent,\r\n NavItemsComponent,\r\n RoutesComponent,\r\n CurrentUserComponent,\r\n LanguagesComponent,\r\n PageAlertContainerComponent,\r\n AuthWrapperComponent,\r\n TenantBoxComponent,\r\n];\r\n\r\n@NgModule({\r\n declarations: [],\r\n exports: [...THEME_BASIC_COMPONENTS],\r\n imports: [...THEME_BASIC_COMPONENTS],\r\n})\r\nexport class BaseThemeBasicModule {}\r\n\r\n@NgModule({\r\n exports: [BaseThemeBasicModule],\r\n imports: [BaseThemeBasicModule],\r\n})\r\nexport class ThemeBasicModule {\r\n /**\r\n * @deprecated forRoot method is deprecated, use `provideThemeBasicConfig` *function* for config settings.\r\n */\r\n static forRoot(): ModuleWithProviders<ThemeBasicModule> {\r\n return {\r\n ngModule: ThemeBasicModule,\r\n providers: [provideThemeBasicConfig()],\r\n };\r\n }\r\n}\r\n","/*\r\n * Public API Surface of theme-basic\r\n */\r\n\r\nexport * from './lib/components';\r\nexport * from './lib/enums';\r\nexport * from './lib/handlers';\r\nexport * from './lib/models';\r\nexport * from './lib/providers';\r\nexport * from './lib/theme-basic.module';\r\nexport * from './lib/tokens';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","ErrorComponent"],"mappings":"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"}
1
+ {"version":3,"file":"abp-ng.theme.basic.mjs","sources":["../../../../packages/theme-basic/src/lib/services/layout.service.ts","../../../../packages/theme-basic/src/lib/components/logo/logo.component.ts","../../../../packages/theme-basic/src/lib/components/routes/routes.component.ts","../../../../packages/theme-basic/src/lib/components/routes/routes.component.html","../../../../packages/theme-basic/src/lib/components/nav-items/nav-items.component.ts","../../../../packages/theme-basic/src/lib/components/nav-items/nav-items.component.html","../../../../packages/theme-basic/src/lib/components/account-layout/tenant-box/tenant-box.component.ts","../../../../packages/theme-basic/src/lib/components/account-layout/tenant-box/tenant-box.component.html","../../../../packages/theme-basic/src/lib/components/account-layout/auth-wrapper/auth-wrapper.component.ts","../../../../packages/theme-basic/src/lib/components/account-layout/auth-wrapper/auth-wrapper.component.html","../../../../packages/theme-basic/src/lib/components/page-alert-container/page-alert-container.component.ts","../../../../packages/theme-basic/src/lib/components/page-alert-container/page-alert-container.component.html","../../../../packages/theme-basic/src/lib/components/account-layout/account-layout.component.ts","../../../../packages/theme-basic/src/lib/components/account-layout/account-layout.component.html","../../../../packages/theme-basic/src/lib/components/application-layout/application-layout.component.ts","../../../../packages/theme-basic/src/lib/components/application-layout/application-layout.component.html","../../../../packages/theme-basic/src/lib/components/empty-layout/empty-layout.component.ts","../../../../packages/theme-basic/src/lib/components/nav-items/current-user.component.ts","../../../../packages/theme-basic/src/lib/components/nav-items/current-user.component.html","../../../../packages/theme-basic/src/lib/components/nav-items/languages.component.ts","../../../../packages/theme-basic/src/lib/components/validation-error/validation-error.component.ts","../../../../packages/theme-basic/src/lib/tokens/lazy-styles.token.ts","../../../../packages/theme-basic/src/lib/handlers/lazy-style.handler.ts","../../../../packages/theme-basic/src/lib/providers/nav-item.provider.ts","../../../../packages/theme-basic/src/lib/constants/styles.ts","../../../../packages/theme-basic/src/lib/providers/styles.provider.ts","../../../../packages/theme-basic/src/lib/providers/user-menu.provider.ts","../../../../packages/theme-basic/src/lib/providers/theme-basic-config.provider.ts","../../../../packages/theme-basic/src/lib/theme-basic.module.ts","../../../../packages/theme-basic/src/public-api.ts","../../../../packages/theme-basic/src/abp-ng.theme.basic.ts"],"sourcesContent":["import {RouterEvents, SubscriptionService} from '@abp/ng.core';\r\nimport { ChangeDetectorRef, Injectable, inject } from '@angular/core';\r\nimport { fromEvent } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { eThemeBasicComponents } from '../enums';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Injectable()\r\nexport class LayoutService {\r\n private subscription = inject(SubscriptionService);\r\n private cdRef = inject(ChangeDetectorRef);\r\n\r\n document = inject(DOCUMENT);\r\n isCollapsed = true;\r\n\r\n smallScreen!: boolean; // do not set true or false\r\n\r\n logoComponentKey = eThemeBasicComponents.Logo;\r\n\r\n routesComponentKey = eThemeBasicComponents.Routes;\r\n\r\n navItemsComponentKey = eThemeBasicComponents.NavItems;\r\n\r\n constructor() {\r\n const subscription = this.subscription;\r\n const routerEvents = inject(RouterEvents);\r\n\r\n subscription.addOne(routerEvents.getNavigationEvents(\"End\"),() => {\r\n this.isCollapsed = true;\r\n })\r\n }\r\n\r\n private checkWindowWidth() {\r\n const isSmallScreen = this.document.defaultView.innerWidth < 992;\r\n if (isSmallScreen && this.smallScreen === false) {\r\n this.isCollapsed = false;\r\n setTimeout(() => {\r\n this.isCollapsed = true;\r\n }, 100);\r\n }\r\n this.smallScreen = isSmallScreen;\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n subscribeWindowSize() {\r\n this.checkWindowWidth();\r\n\r\n const resize$ = fromEvent(this.document.defaultView, 'resize').pipe(debounceTime(150));\r\n this.subscription.addOne(resize$, () => this.checkWindowWidth());\r\n }\r\n}\r\n","import { EnvironmentService } from '@abp/ng.core';\r\nimport { RouterLink } from '@angular/router';\r\nimport { Component, inject } from '@angular/core';\r\nimport { LOGO_APP_NAME_TOKEN, LOGO_URL_TOKEN } from '@abp/ng.theme.shared';\r\n\r\n@Component({\r\n selector: 'abp-logo',\r\n template: `\r\n <a class=\"navbar-brand\" routerLink=\"/\">\r\n @if (logoUrl) {\r\n <img [src]=\"logoUrl\" [alt]=\"appName\" width=\"100%\" height=\"auto\" />\r\n } @else {\r\n {{ appName }}\r\n }\r\n </a>\r\n `,\r\n standalone: true,\r\n imports: [RouterLink],\r\n})\r\nexport class LogoComponent {\r\n private environment = inject(EnvironmentService);\r\n\r\n private readonly providedLogoUrl = inject(LOGO_URL_TOKEN, { optional: true });\r\n private readonly providedAppName = inject(LOGO_APP_NAME_TOKEN, { optional: true });\r\n\r\n get logoUrl(): string {\r\n return (\r\n this.providedLogoUrl ?? this.environment.getEnvironment().application?.logoUrl\r\n );\r\n }\r\n\r\n get appName(): string {\r\n return (\r\n this.providedAppName ?? this.environment.getEnvironment().application?.name\r\n );\r\n }\r\n}\r\n","import {\r\n ABP,\r\n AsyncLocalizationPipe,\r\n LocalizationPipe,\r\n PermissionDirective,\r\n RoutesService,\r\n TreeNode,\r\n} from '@abp/ng.core';\r\nimport {\r\n Component,\r\n ElementRef,\r\n inject,\r\n Input,\r\n QueryList,\r\n Renderer2,\r\n TrackByFunction,\r\n ViewChildren,\r\n} from '@angular/core';\r\nimport { NgTemplateOutlet, NgClass, AsyncPipe } from '@angular/common';\r\nimport { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { RouterLink } from '@angular/router';\r\nimport { EllipsisDirective } from '@abp/ng.theme.shared';\r\n\r\n@Component({\r\n selector: 'abp-routes',\r\n templateUrl: 'routes.component.html',\r\n imports: [\r\n NgTemplateOutlet,\r\n NgClass,\r\n AsyncPipe,\r\n RouterLink,\r\n NgbDropdownModule,\r\n AsyncLocalizationPipe,\r\n PermissionDirective,\r\n EllipsisDirective,\r\n LocalizationPipe,\r\n ],\r\n})\r\nexport class RoutesComponent {\r\n public readonly routesService = inject(RoutesService);\r\n protected renderer = inject(Renderer2);\r\n\r\n @Input() smallScreen?: boolean;\r\n\r\n @ViewChildren('childrenContainer') childrenContainers!: QueryList<ElementRef<HTMLDivElement>>;\r\n\r\n rootDropdownExpand = {} as { [key: string]: boolean };\r\n\r\n trackByFn: TrackByFunction<TreeNode<ABP.Route>> = (_, item) => item.name;\r\n\r\n isDropdown(node: TreeNode<ABP.Route>) {\r\n return !node?.isLeaf || this.routesService.hasChildren(node.name);\r\n }\r\n\r\n closeDropdown() {\r\n this.childrenContainers.forEach(({ nativeElement }) => {\r\n this.renderer.addClass(nativeElement, 'd-none');\r\n setTimeout(() => this.renderer.removeClass(nativeElement, 'd-none'), 0);\r\n });\r\n }\r\n}\r\n","<ul class=\"navbar-nav\">\r\n @for (route of routesService.visible$ | async; track $index) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"isDropdown(route) ? dropdownLink : defaultLink\"\r\n [ngTemplateOutletContext]=\"{ $implicit: route }\"\r\n />\r\n }\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 @if (route.iconClass) {\r\n <i [ngClass]=\"route.iconClass\"></i>\r\n }\r\n {{ route.name | abpAsyncLocalization | async }}\r\n </a>\r\n </li>\r\n </ng-template>\r\n\r\n <ng-template #dropdownLink let-route>\r\n @if (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 @if (route.iconClass) {\r\n <i [ngClass]=\"route.iconClass\"></i>\r\n }\r\n {{ route.name | abpAsyncLocalization | async }}\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 *ngTemplateOutlet=\"forTemplate; context: { $implicit: route }\" />\r\n </div>\r\n </li>\r\n }\r\n </ng-template>\r\n\r\n <ng-template #forTemplate let-route>\r\n @for (child of route.children; track $index) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"child.children?.length ? dropdownChild : defaultChild\"\r\n [ngTemplateOutletContext]=\"{ $implicit: child }\"\r\n />\r\n }\r\n </ng-template>\r\n\r\n <ng-template #defaultChild let-child>\r\n @if (child.path) {\r\n <div class=\"dropdown-submenu\" *abpPermission=\"child.requiredPolicy\">\r\n <a class=\"dropdown-item\" [routerLink]=\"[child.path]\" (click)=\"closeDropdown()\">\r\n @if (child.iconClass) {\r\n <i [ngClass]=\"child.iconClass\"></i>\r\n }\r\n {{ child.name | abpLocalization }}</a\r\n >\r\n </div>\r\n }\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 @if (child.iconClass) {\r\n <i [ngClass]=\"child.iconClass\"></i>\r\n }\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 }\" />\r\n </div>\r\n </div>\r\n </ng-template>\r\n</ul>\r\n","import { AbpVisibleDirective, NavItem, NavItemsService } from '@abp/ng.theme.shared';\r\nimport { Component, TrackByFunction, inject, PLATFORM_ID } from '@angular/core';\r\nimport { NgComponentOutlet, AsyncPipe, isPlatformBrowser } from '@angular/common';\r\nimport { PermissionDirective, ToInjectorPipe } from '@abp/ng.core';\r\n\r\n@Component({\r\n selector: 'abp-nav-items',\r\n templateUrl: 'nav-items.component.html',\r\n imports: [NgComponentOutlet, AsyncPipe, AbpVisibleDirective, PermissionDirective, ToInjectorPipe],\r\n})\r\nexport class NavItemsComponent {\r\n readonly navItems = inject(NavItemsService);\r\n private platformId = inject(PLATFORM_ID);\r\n readonly isBrowser = isPlatformBrowser(this.platformId);\r\n\r\n trackByFn: TrackByFunction<NavItem> = (_, element) => element.id;\r\n}\r\n","<ul class=\"navbar-nav\">\r\n @if (isBrowser) {\r\n @for (item of navItems.items$ | async; track $index) {\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 @if (item.component) {\r\n <ng-container\r\n [ngComponentOutlet]=\"item.component\"\r\n [ngComponentOutletInjector]=\"item | toInjector\"\r\n ></ng-container>\r\n } @else {\r\n <div [innerHTML]=\"item.html\" (click)=\"item.action ? item.action() : null\"></div>\r\n }\r\n </li>\r\n </ng-container>\r\n }\r\n }\r\n</ul>\r\n","import { TenantBoxService } from '@abp/ng.account.core';\r\nimport { Component, inject } from '@angular/core';\r\nimport { AsyncPipe } from '@angular/common';\r\nimport { LocalizationPipe } from '@abp/ng.core';\r\nimport { ButtonComponent, ModalCloseDirective, ModalComponent } from '@abp/ng.theme.shared';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'abp-tenant-box',\r\n templateUrl: './tenant-box.component.html',\r\n providers: [TenantBoxService],\r\n imports: [\r\n AsyncPipe,\r\n FormsModule,\r\n ModalComponent,\r\n LocalizationPipe,\r\n ButtonComponent,\r\n ModalCloseDirective,\r\n ],\r\n})\r\nexport class TenantBoxComponent {\r\n service = inject(TenantBoxService);\r\n}\r\n","@if ((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-outline-primary\">\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}\r\n","import { AuthWrapperService } from '@abp/ng.account.core';\r\nimport { Component, inject } from '@angular/core';\r\nimport { AsyncPipe } from '@angular/common';\r\nimport { LocalizationPipe, ReplaceableTemplateDirective } from '@abp/ng.core';\r\nimport { TenantBoxComponent } from '../tenant-box/tenant-box.component';\r\n\r\n@Component({\r\n selector: 'abp-auth-wrapper',\r\n templateUrl: './auth-wrapper.component.html',\r\n providers: [AuthWrapperService],\r\n imports: [AsyncPipe, TenantBoxComponent, ReplaceableTemplateDirective, LocalizationPipe],\r\n})\r\nexport class AuthWrapperComponent {\r\n service = inject(AuthWrapperService);\r\n}","<div class=\"row\">\r\n <div class=\"mx-auto col col-md-5\">\r\n @if ((service.isMultiTenancyEnabled$ | async) && service.isTenantBoxVisible) {\r\n <abp-tenant-box\r\n *abpReplaceableTemplate=\"{ componentKey: service.tenantBoxKey }\"\r\n ></abp-tenant-box>\r\n }\r\n\r\n <div class=\"abp-account-container\">\r\n @if (service.enableLocalLogin$ | async) {\r\n <div class=\"card mt-3 shadow-sm rounded\">\r\n <div class=\"card-body p-5\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n } @else {\r\n <div class=\"alert alert-warning\">\r\n <strong>{{ 'AbpAccount::InvalidLoginRequest' | abpLocalization }}</strong>\r\n {{ 'AbpAccount::ThereAreNoLoginSchemesConfiguredForThisClient' | abpLocalization }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n","import { Component, ViewEncapsulation, inject } from '@angular/core';\r\nimport { PageAlertService } from '@abp/ng.theme.shared';\r\nimport { NgClass, AsyncPipe } from '@angular/common';\r\nimport { LocalizationPipe, SafeHtmlPipe } from '@abp/ng.core';\r\n\r\n@Component({\r\n selector: 'abp-page-alert-container',\r\n templateUrl: './page-alert-container.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [NgClass, AsyncPipe, LocalizationPipe, SafeHtmlPipe],\r\n})\r\nexport class PageAlertContainerComponent {\r\n service = inject(PageAlertService);\r\n}\r\n","@for (alert of service.alerts$ | async; track i; 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 @if (alert.title) {\r\n <h4\r\n class=\"alert-heading\"\r\n [innerHTML]=\"alert.title | abpSafeHtml | abpLocalization: alert.titleLocalizationParams\"\r\n ></h4>\r\n }\r\n <span\r\n [innerHTML]=\"alert.message | abpSafeHtml | abpLocalization: alert.messageLocalizationParams\"\r\n ></span>\r\n @if (alert.dismissible) {\r\n <button\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 }\r\n </div>\r\n}\r\n","import { AfterViewInit, Component, inject } from '@angular/core';\r\nimport { eLayoutType, ReplaceableTemplateDirective, SubscriptionService } from '@abp/ng.core';\r\nimport { LayoutService } from '../../services/layout.service';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { LogoComponent } from '../logo/logo.component';\r\nimport { RoutesComponent } from '../routes/routes.component';\r\nimport { NavItemsComponent } from '../nav-items/nav-items.component';\r\nimport { AuthWrapperComponent } from './auth-wrapper/auth-wrapper.component';\r\nimport { PageAlertContainerComponent } from '../page-alert-container/page-alert-container.component';\r\nimport { RouterOutlet } from '@angular/router';\r\nimport { collapseWithMargin } from '@abp/ng.theme.shared';\r\n\r\n@Component({\r\n selector: 'abp-layout-account',\r\n templateUrl: './account-layout.component.html',\r\n animations: [collapseWithMargin],\r\n providers: [LayoutService, SubscriptionService],\r\n imports: [\r\n NgTemplateOutlet,\r\n LogoComponent,\r\n RoutesComponent,\r\n NavItemsComponent,\r\n AuthWrapperComponent,\r\n PageAlertContainerComponent,\r\n ReplaceableTemplateDirective,\r\n RouterOutlet,\r\n ],\r\n})\r\nexport class AccountLayoutComponent implements AfterViewInit {\r\n service = inject(LayoutService);\r\n\r\n // required for dynamic component\r\n static type = eLayoutType.account;\r\n\r\n authWrapperKey = 'Account.AuthWrapperComponent';\r\n\r\n ngAfterViewInit() {\r\n this.service.subscribeWindowSize();\r\n }\r\n}\r\n","<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 @if (service.smallScreen) {\r\n <div\r\n [@collapseWithMargin]=\"service.isCollapsed ? 'collapsed' : 'expanded'\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"navigations\"></ng-container>\r\n </div>\r\n }\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","import { eLayoutType, ReplaceableTemplateDirective, SubscriptionService } from '@abp/ng.core';\r\nimport { collapseWithMargin, slideFromBottom } from '@abp/ng.theme.shared';\r\nimport { AfterViewInit, Component, inject } from '@angular/core';\r\nimport { LayoutService } from '../../services/layout.service';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { RouterOutlet } from '@angular/router';\r\nimport { LogoComponent } from '../logo/logo.component';\r\nimport { PageAlertContainerComponent } from '../page-alert-container/page-alert-container.component';\r\nimport { RoutesComponent } from '../routes/routes.component';\r\nimport { NavItemsComponent } from '../nav-items/nav-items.component';\r\n\r\n@Component({\r\n selector: 'abp-layout-application',\r\n templateUrl: './application-layout.component.html',\r\n animations: [slideFromBottom, collapseWithMargin],\r\n providers: [LayoutService, SubscriptionService],\r\n imports: [\r\n NgTemplateOutlet,\r\n LogoComponent,\r\n PageAlertContainerComponent,\r\n RoutesComponent,\r\n NavItemsComponent,\r\n ReplaceableTemplateDirective,\r\n RouterOutlet,\r\n ],\r\n})\r\nexport class ApplicationLayoutComponent implements AfterViewInit {\r\n public readonly service = inject(LayoutService);\r\n // required for dynamic component\r\n static type = eLayoutType.application;\r\n\r\n ngAfterViewInit() {\r\n this.service.subscribeWindowSize();\r\n }\r\n}\r\n","<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 @if (service.smallScreen) {\r\n <div [@collapseWithMargin]=\"service.isCollapsed ? 'collapsed' : 'expanded'\">\r\n <ng-container *ngTemplateOutlet=\"navigations\"></ng-container>\r\n </div>\r\n }\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","import { Component } from '@angular/core';\r\nimport { eLayoutType } from '@abp/ng.core';\r\nimport { RouterOutlet } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'abp-layout-empty',\r\n template: ` <router-outlet></router-outlet> `,\r\n imports: [RouterOutlet],\r\n})\r\nexport class EmptyLayoutComponent {\r\n static type = eLayoutType.empty;\r\n}\r\n","import {\r\n AuthService,\r\n ConfigStateService,\r\n CurrentUserDto,\r\n LocalizationPipe,\r\n NAVIGATE_TO_MANAGE_PROFILE,\r\n PermissionDirective,\r\n SessionStateService,\r\n ToInjectorPipe,\r\n} from '@abp/ng.core';\r\nimport { AbpVisibleDirective, UserMenu, UserMenuService } from '@abp/ng.theme.shared';\r\nimport { Component, TrackByFunction, inject } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { NgComponentOutlet, AsyncPipe, DOCUMENT } from '@angular/common';\r\nimport { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n selector: 'abp-current-user',\r\n templateUrl: './current-user.component.html',\r\n imports: [\r\n NgComponentOutlet,\r\n AsyncPipe,\r\n NgbDropdownModule,\r\n AbpVisibleDirective,\r\n PermissionDirective,\r\n ToInjectorPipe,\r\n LocalizationPipe,\r\n ],\r\n})\r\nexport class CurrentUserComponent {\r\n readonly navigateToManageProfile = inject(NAVIGATE_TO_MANAGE_PROFILE);\r\n readonly userMenu = inject(UserMenuService);\r\n private authService = inject(AuthService);\r\n private configState = inject(ConfigStateService);\r\n private sessionState = inject(SessionStateService);\r\n private document = inject(DOCUMENT);\r\n\r\n currentUser$: Observable<CurrentUserDto> = this.configState.getOne$('currentUser');\r\n selectedTenant$ = this.sessionState.getTenant$();\r\n trackByFn: TrackByFunction<UserMenu> = (_, element) => element.id;\r\n\r\n get smallScreen(): boolean {\r\n return this.document.defaultView?.innerWidth < 992;\r\n }\r\n\r\n navigateToLogin() {\r\n this.authService.navigateToLogin();\r\n }\r\n\r\n logout() {\r\n this.authService.logout().subscribe();\r\n }\r\n}\r\n","@if ((currentUser$ | async)?.isAuthenticated) {\r\n <div\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 @if ((selectedTenant$ | async)?.name; as tenantName) {\r\n <small\r\n ><i>{{ tenantName }}</i\r\n >\\</small\r\n >\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 @for (item of userMenu.items$ | async; track $index) {\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 @if (item.component) {\r\n <ng-container\r\n [ngComponentOutlet]=\"item.component\"\r\n [ngComponentOutletInjector]=\"item | toInjector\"\r\n ></ng-container>\r\n } @else {\r\n @if (item.html) {\r\n <div [innerHTML]=\"item.html\" (click)=\"item.action ? item.action() : null\"></div>\r\n } @else {\r\n @if (item.textTemplate) {\r\n <a (click)=\"item.action ? item.action() : null\" class=\"dropdown-item pointer\">\r\n @if (item.textTemplate.icon) {\r\n <i class=\"me-1 {{ item.textTemplate.icon }}\"></i>\r\n }\r\n {{ item.textTemplate.text | abpLocalization }}</a\r\n >\r\n }\r\n }\r\n }\r\n </li>\r\n </ng-container>\r\n }\r\n </div>\r\n </div>\r\n} @else {\r\n <a role=\"button\" class=\"nav-link pointer\" (click)=\"navigateToLogin()\">\r\n {{ 'AbpAccount::Login' | abpLocalization }}\r\n </a>\r\n}\r\n","import { ConfigStateService, LanguageInfo, SessionStateService } from '@abp/ng.core';\r\nimport { Component, inject } from '@angular/core';\r\nimport { DOCUMENT, AsyncPipe } from '@angular/common';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n selector: 'abp-languages',\r\n template: `\r\n @if (((dropdownLanguages$ | async)?.length || 0) > 0) {\r\n <div class=\"dropdown\" ngbDropdown #languageDropdown=\"ngbDropdown\" display=\"static\">\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 {{ defaultLanguage$ | async }}\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 && languageDropdown.isOpen()\"\r\n >\r\n @for (lang of dropdownLanguages$ | async; track $index) {\r\n <a\r\n href=\"javascript:void(0)\"\r\n class=\"dropdown-item\"\r\n (click)=\"onChangeLang(lang.cultureName || '')\"\r\n >{{ lang?.displayName }}</a\r\n >\r\n }\r\n </div>\r\n </div>\r\n }\r\n `,\r\n imports: [AsyncPipe, NgbDropdownModule],\r\n})\r\nexport class LanguagesComponent {\r\n private sessionState = inject(SessionStateService);\r\n private configState = inject(ConfigStateService);\r\n document = inject(DOCUMENT);\r\n\r\n get smallScreen(): boolean {\r\n return this.document.defaultView.innerWidth < 992;\r\n }\r\n\r\n languages$: Observable<LanguageInfo[]> = this.configState.getDeep$('localization.languages');\r\n\r\n get defaultLanguage$(): Observable<string> {\r\n return this.languages$.pipe(\r\n map(\r\n languages =>\r\n languages?.find(lang => lang.cultureName === this.selectedLangCulture)?.displayName || '',\r\n ),\r\n );\r\n }\r\n\r\n get dropdownLanguages$(): Observable<LanguageInfo[]> {\r\n return this.languages$.pipe(\r\n map(\r\n languages => languages?.filter(lang => lang.cultureName !== this.selectedLangCulture) || [],\r\n ),\r\n );\r\n }\r\n\r\n get selectedLangCulture(): string {\r\n return this.sessionState.getLanguage();\r\n }\r\n\r\n onChangeLang(cultureName: string) {\r\n this.sessionState.setLanguage(cultureName);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\r\nimport { Validation, ValidationErrorComponent as ErrorComponent } from '@ngx-validate/core';\r\nimport { LocalizationPipe } from '@abp/ng.core';\r\n\r\n@Component({\r\n selector: 'abp-validation-error',\r\n template: `\r\n @for (error of abpErrors; track $index) {\r\n <div class=\"invalid-feedback\">\r\n {{ error.message | abpLocalization: error.interpoliteParams }}\r\n </div>\r\n }\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [LocalizationPipe],\r\n})\r\nexport class ValidationErrorComponent extends ErrorComponent {\r\n get abpErrors(): (Validation.Error & { interpoliteParams?: string[] })[] {\r\n if (!this.errors || !this.errors.length) return [];\r\n\r\n return this.errors.map(error => {\r\n if (!error.message) return error;\r\n\r\n const index = error.message.indexOf('[');\r\n\r\n if (index > -1) {\r\n return {\r\n ...error,\r\n message: error.message.slice(0, index),\r\n interpoliteParams: error.message.slice(index + 1, error.message.length - 1).split(','),\r\n };\r\n }\r\n\r\n return error;\r\n });\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const LAZY_STYLES = new InjectionToken<string[]>('LAZY_STYLES');\r\n","import { LazyLoadService, LOADING_STRATEGY } from '@abp/ng.core';\r\nimport { DocumentDirHandlerService, LocaleDirection } from '@abp/ng.theme.shared';\r\nimport { Injectable, Injector, inject } from '@angular/core';\r\nimport { LAZY_STYLES } from '../tokens/lazy-styles.token';\r\nimport { DOCUMENT } from '@angular/common';\r\nexport const BOOTSTRAP = 'bootstrap-{{dir}}.min.css';\r\n\r\n@Injectable()\r\nexport class LazyStyleHandler {\r\n private document = inject(DOCUMENT);\r\n private lazyLoad!: LazyLoadService;\r\n private styles!: string[];\r\n private _dir: LocaleDirection = 'ltr';\r\n\r\n readonly loaded = new Map<string, HTMLLinkElement>();\r\n\r\n set dir(dir: LocaleDirection) {\r\n if (dir === this._dir) return;\r\n\r\n this.switchCSS(dir);\r\n this._dir = dir;\r\n }\r\n\r\n get dir(): LocaleDirection {\r\n return this._dir;\r\n }\r\n\r\n constructor() {\r\n const injector = inject(Injector);\r\n\r\n this.setStyles(injector);\r\n this.setLazyLoad(injector);\r\n this.listenToDirectionChanges(injector);\r\n }\r\n\r\n private getHrefFromLink(link: HTMLLinkElement | null | undefined): string {\r\n if (!link) return '';\r\n\r\n const a = this.document.createElement('a');\r\n a.href = link.href;\r\n return a.pathname.replace(/^\\//, '');\r\n }\r\n\r\n private getLoadedBootstrap(): LoadedStyle {\r\n const href = createLazyStyleHref(BOOTSTRAP, this.dir);\r\n const selector = `[href*=\"${href.replace(/\\.css$/, '')}\"]`;\r\n const link = this.document.querySelector<HTMLLinkElement>(selector);\r\n return { href, link };\r\n }\r\n\r\n private listenToDirectionChanges(injector: Injector) {\r\n const docDirHandler = injector.get(DocumentDirHandlerService);\r\n\r\n // will always listen, no need to unsubscribe\r\n docDirHandler.dir$.subscribe(dir => {\r\n this.dir = dir;\r\n });\r\n }\r\n\r\n private setLazyLoad(injector: Injector) {\r\n this.lazyLoad = injector.get(LazyLoadService);\r\n const { href, link } = this.getLoadedBootstrap();\r\n this.lazyLoad.loaded.set(href, link);\r\n }\r\n\r\n private setStyles(injector: Injector) {\r\n this.styles = injector.get(LAZY_STYLES, [BOOTSTRAP]);\r\n }\r\n\r\n private switchCSS(dir: LocaleDirection) {\r\n this.styles.forEach(style => {\r\n const oldHref = createLazyStyleHref(style, this.dir);\r\n const newHref = createLazyStyleHref(style, dir);\r\n const link = this.loaded.get(newHref);\r\n const href = this.getHrefFromLink(link) || newHref;\r\n\r\n const strategy = LOADING_STRATEGY.PrependAnonymousStyleToHead(href);\r\n this.lazyLoad.load(strategy).subscribe(() => {\r\n const oldLink = this.lazyLoad.loaded.get(oldHref) as HTMLLinkElement;\r\n this.loaded.delete(newHref);\r\n this.loaded.set(oldHref, oldLink);\r\n const newLink = this.lazyLoad.loaded.get(href) as HTMLLinkElement;\r\n this.lazyLoad.loaded.delete(href);\r\n this.lazyLoad.loaded.set(newHref, newLink);\r\n this.lazyLoad.remove(oldHref);\r\n });\r\n });\r\n }\r\n}\r\n\r\nexport function createLazyStyleHref(style: string, dir: string): string {\r\n return style.replace(/{{\\s*dir\\s*}}/g, dir);\r\n}\r\n\r\nexport function initLazyStyleHandler() {\r\n return () => new LazyStyleHandler();\r\n}\r\n\r\ninterface LoadedStyle {\r\n href: string;\r\n link: HTMLLinkElement | null;\r\n}\r\n","import { NavItemsService } from '@abp/ng.theme.shared';\r\nimport { inject, provideAppInitializer } from '@angular/core';\r\nimport { CurrentUserComponent } from '../components/nav-items/current-user.component';\r\nimport { LanguagesComponent } from '../components/nav-items/languages.component';\r\nimport { eThemeBasicComponents } from '../enums/components';\r\n\r\nexport const BASIC_THEME_NAV_ITEM_PROVIDERS = [\r\n provideAppInitializer(() => {\r\n configureNavItems();\r\n }),\r\n];\r\n\r\nexport function configureNavItems() {\r\n const navItems = inject(NavItemsService);\r\n navItems.addItems([\r\n {\r\n id: eThemeBasicComponents.Languages,\r\n order: 100,\r\n component: LanguagesComponent,\r\n },\r\n {\r\n id: eThemeBasicComponents.CurrentUser,\r\n order: 100,\r\n component: CurrentUserComponent,\r\n },\r\n ]);\r\n}\r\n","export default `\r\n.content-header-title {\r\n font-size: 24px;\r\n}\r\n.entry-row {\r\n margin-bottom: 15px;\r\n}\r\n#main-navbar-tools a.dropdown-toggle {\r\n text-decoration: none;\r\n color: #fff;\r\n}\r\n.navbar .dropdown-submenu {\r\n position: relative;\r\n}\r\n.navbar .dropdown-menu {\r\n margin: 0;\r\n padding: 0;\r\n}\r\n.navbar .dropdown-menu a {\r\n font-size: .9em;\r\n padding: 10px 15px;\r\n display: block;\r\n min-width: 210px;\r\n text-align: left;\r\n border-radius: 0.25rem;\r\n min-height: 44px;\r\n}\r\n[dir=rtl] .navbar .dropdown-menu a {\r\n text-align: right!important;\r\n}\r\n.navbar .dropdown-submenu a::after {\r\n transform: rotate(-90deg);\r\n position: absolute;\r\n right: 16px;\r\n top: 18px;\r\n}\r\n[dir=rtl] .navbar .dropdown-submenu a::after {\r\n transform: rotate(90deg);\r\n left: 16px;\r\n right: auto;\r\n top: 20px;\r\n}\r\n.navbar .dropdown-submenu .dropdown-menu {\r\n top: 0;\r\n left: 100%;\r\n}\r\n/* work around for rtl. Track https://github.com/ng-bootstrap/ng-bootstrap/issues/4100 issue */\r\n[dir=rtl] .navbar .dropdown-submenu .dropdown-menu {\r\n top: 0;\r\n right: 100%;\r\n}\r\n.card-header .btn {\r\n padding: 2px 6px;\r\n}\r\n.card-header h5 {\r\n margin: 0;\r\n}\r\n.container > .card {\r\n box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;\r\n}\r\n@media screen and (min-width: 992px) {\r\n .navbar .dropdown:hover > .dropdown-menu {\r\n display: block;\r\n }\r\n\r\n .navbar .dropdown-submenu:hover > .dropdown-menu {\r\n display: block;\r\n }\r\n}\r\n.input-validation-error {\r\n border-color: #dc3545;\r\n}\r\n.field-validation-error {\r\n font-size: 0.8em;\r\n}\r\n.ui-table .ui-table-tbody > tr.empty-row > div.empty-row-content {\r\n border: 1px solid #c8c8c8;\r\n }\r\n.abp-loading {\r\n background: rgba(0, 0, 0, 0.05);\r\n}\r\n.modal-backdrop {\r\nbackground-color: rgba(0, 0, 0, 0.6);\r\n}\r\n\r\n.confirmation .confirmation-backdrop {\r\n\t background: rgba(0, 0, 0, 0.7) !important;\r\n}\r\n .confirmation .confirmation-dialog {\r\n\t border: none;\r\n\t border-radius: 10px;\r\n\t background-color: #fff;\r\n\t box-shadow: 0 0 10px -5px rgba(0, 0, 0, 0.5);\r\n}\r\n .confirmation .confirmation-dialog .icon-container .icon {\r\n\t stroke: #fff;\r\n\t color: #fff;\r\n}\r\n .confirmation .confirmation-dialog .icon-container.info .icon {\r\n\t stroke: #2f96b4;\r\n\t color: #2f96b4;\r\n}\r\n .confirmation .confirmation-dialog .icon-container.success .icon {\r\n\t stroke: #51a351;\r\n\t color: #51a351;\r\n}\r\n .confirmation .confirmation-dialog .icon-container.warning .icon {\r\n\t stroke: #f89406;\r\n\t color: #f89406;\r\n}\r\n .confirmation .confirmation-dialog .icon-container.error .icon {\r\n\t stroke: #bd362f;\r\n\t color: #bd362f;\r\n}\r\n .confirmation .confirmation-dialog .content .title {\r\n\t color: #222;\r\n}\r\n .confirmation .confirmation-dialog .content .message {\r\n\t color: #777;\r\n}\r\n .confirmation .confirmation-dialog .footer {\r\n\t background: transparent;\r\n}\r\n .confirmation .confirmation-dialog .footer .confirmation-button {\r\n\t background-color: #eee;\r\n\t color: #777;\r\n}\r\n .confirmation .confirmation-dialog .footer .confirmation-button:hover, .confirmation .confirmation-dialog .footer .confirmation-button:focus, .confirmation .confirmation-dialog .footer .confirmation-button:active {\r\n\t background-color: #bbb;\r\n}\r\n .confirmation .confirmation-dialog .footer .confirmation-button--confirm {\r\n\t background-color: #2f96b4;\r\n\t color: #fff;\r\n}\r\n .confirmation .confirmation-dialog .footer .confirmation-button--confirm:hover {\r\n\t background-color: #2e819b;\r\n}\r\n.ui-table .pagination-wrapper {\r\n background-color: #f4f4f4;\r\n border: 1px solid #c8c8c8;\r\n}\r\n.bordered .datatable-body-row {\r\n border-top: 1px solid #eee;\r\n margin-top: -1px;\r\n}\r\n.breadcrumb {\r\n background-color: transparent;\r\n padding: 0.27rem;\r\n}\r\n\r\n.abp-md-form {\r\n max-width: 540px;\r\n}\r\n\r\nabp-chat-icon,\r\nabp-back-to-impersonator-nav-item {\r\n margin-inline: 0.4rem;\r\n}\r\n\r\nabp-chat-icon {\r\n .fa-comments:before {\r\n color: var(--bs-navbar-color);\r\n }\r\n}\r\n\r\nabp-back-to-impersonator-nav-item {\r\n .fa-undo {\r\n color: var(--bs-navbar-color);\r\n }\r\n}\r\n\r\n.ngx-datatable.material:has(.datatable-body-row) .datatable-footer {\r\n border-top: none;\r\n}\r\n\r\n.ngx-datatable.material:not(:has(.datatable-body-row)) .datatable-footer {\r\n border-top: 1px solid #dee2e6;\r\n}\r\n\r\n`;\r\n\r\n\r\n","import { CONTENT_STRATEGY, DomInsertionService, ReplaceableComponentsService } from '@abp/ng.core';\r\nimport { inject, provideAppInitializer } from '@angular/core';\r\nimport { AccountLayoutComponent } from '../components/account-layout/account-layout.component';\r\nimport { ApplicationLayoutComponent } from '../components/application-layout/application-layout.component';\r\nimport { EmptyLayoutComponent } from '../components/empty-layout/empty-layout.component';\r\nimport styles from '../constants/styles';\r\nimport { eThemeBasicComponents } from '../enums/components';\r\n\r\nexport const BASIC_THEME_STYLES_PROVIDERS = [\r\n provideAppInitializer(() => {\r\n const initializerFn = configureStyles(\r\n inject(DomInsertionService),\r\n inject(ReplaceableComponentsService),\r\n );\r\n return initializerFn();\r\n }),\r\n];\r\n\r\nexport function configureStyles(\r\n domInsertion: DomInsertionService,\r\n replaceableComponents: ReplaceableComponentsService,\r\n) {\r\n return () => {\r\n domInsertion.insertContent(CONTENT_STRATEGY.AppendStyleToHead(styles));\r\n\r\n initLayouts(replaceableComponents);\r\n };\r\n}\r\n\r\nfunction initLayouts(replaceableComponents: ReplaceableComponentsService) {\r\n replaceableComponents.add({\r\n key: eThemeBasicComponents.ApplicationLayout,\r\n component: ApplicationLayoutComponent,\r\n });\r\n replaceableComponents.add({\r\n key: eThemeBasicComponents.AccountLayout,\r\n component: AccountLayoutComponent,\r\n });\r\n replaceableComponents.add({\r\n key: eThemeBasicComponents.EmptyLayout,\r\n component: EmptyLayoutComponent,\r\n });\r\n}\r\n","import { AuthService, NAVIGATE_TO_MANAGE_PROFILE } from '@abp/ng.core';\r\nimport { UserMenuService } from '@abp/ng.theme.shared';\r\nimport { Injector, inject, provideAppInitializer } from '@angular/core';\r\nimport { eUserMenuItems } from '../enums/user-menu-items';\r\n\r\nexport const BASIC_THEME_USER_MENU_PROVIDERS = [\r\n provideAppInitializer(() => {\r\n const initializerFn = configureUserMenu(inject(Injector));\r\n return initializerFn();\r\n }),\r\n];\r\n\r\nexport function configureUserMenu(injector: Injector) {\r\n const userMenu = injector.get(UserMenuService);\r\n const authService = injector.get(AuthService);\r\n const navigateToManageProfile = injector.get(NAVIGATE_TO_MANAGE_PROFILE);\r\n\r\n return () => {\r\n userMenu.addItems([\r\n {\r\n id: eUserMenuItems.MyAccount,\r\n order: 100,\r\n textTemplate: {\r\n text: 'AbpAccount::MyAccount',\r\n icon: 'fa fa-cog',\r\n },\r\n action: () => navigateToManageProfile(),\r\n },\r\n {\r\n id: eUserMenuItems.Logout,\r\n order: 101,\r\n textTemplate: {\r\n text: 'AbpUi::Logout',\r\n icon: 'fa fa-power-off',\r\n },\r\n action: () => {\r\n authService.logout().subscribe();\r\n },\r\n },\r\n ]);\r\n };\r\n}\r\n","import { makeEnvironmentProviders, inject, provideAppInitializer } from '@angular/core';\r\n\r\nimport {\r\n VALIDATION_ERROR_TEMPLATE,\r\n VALIDATION_TARGET_SELECTOR,\r\n VALIDATION_INVALID_CLASSES,\r\n} from '@ngx-validate/core';\r\nimport { LazyStyleHandler } from '../handlers';\r\nimport { BASIC_THEME_NAV_ITEM_PROVIDERS } from './nav-item.provider';\r\nimport { BASIC_THEME_STYLES_PROVIDERS } from './styles.provider';\r\nimport { BASIC_THEME_USER_MENU_PROVIDERS } from './user-menu.provider';\r\nimport { ValidationErrorComponent } from '../components';\r\n\r\nexport function provideThemeBasicConfig() {\r\n return makeEnvironmentProviders([\r\n BASIC_THEME_NAV_ITEM_PROVIDERS,\r\n BASIC_THEME_USER_MENU_PROVIDERS,\r\n BASIC_THEME_STYLES_PROVIDERS,\r\n {\r\n provide: VALIDATION_ERROR_TEMPLATE,\r\n useValue: ValidationErrorComponent,\r\n },\r\n {\r\n provide: VALIDATION_TARGET_SELECTOR,\r\n useValue: '.form-group',\r\n },\r\n {\r\n provide: VALIDATION_INVALID_CLASSES,\r\n useValue: 'is-invalid',\r\n },\r\n LazyStyleHandler,\r\n provideAppInitializer(() => {\r\n inject(LazyStyleHandler);\r\n }),\r\n ]);\r\n}\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport {\r\n AccountLayoutComponent,\r\n AuthWrapperComponent,\r\n TenantBoxComponent,\r\n ApplicationLayoutComponent,\r\n EmptyLayoutComponent,\r\n LogoComponent,\r\n CurrentUserComponent,\r\n LanguagesComponent,\r\n NavItemsComponent,\r\n PageAlertContainerComponent,\r\n RoutesComponent,\r\n ValidationErrorComponent,\r\n} from './components';\r\nimport { provideThemeBasicConfig } from './providers';\r\n\r\nexport const LAYOUTS = [ApplicationLayoutComponent, AccountLayoutComponent, EmptyLayoutComponent];\r\n\r\nexport const THEME_BASIC_COMPONENTS = [\r\n ...LAYOUTS,\r\n ValidationErrorComponent,\r\n LogoComponent,\r\n NavItemsComponent,\r\n RoutesComponent,\r\n CurrentUserComponent,\r\n LanguagesComponent,\r\n PageAlertContainerComponent,\r\n AuthWrapperComponent,\r\n TenantBoxComponent,\r\n];\r\n\r\n@NgModule({\r\n declarations: [],\r\n exports: [...THEME_BASIC_COMPONENTS],\r\n imports: [...THEME_BASIC_COMPONENTS],\r\n})\r\nexport class BaseThemeBasicModule {}\r\n\r\n@NgModule({\r\n exports: [BaseThemeBasicModule],\r\n imports: [BaseThemeBasicModule],\r\n})\r\nexport class ThemeBasicModule {\r\n /**\r\n * @deprecated forRoot method is deprecated, use `provideThemeBasicConfig` *function* for config settings.\r\n */\r\n static forRoot(): ModuleWithProviders<ThemeBasicModule> {\r\n return {\r\n ngModule: ThemeBasicModule,\r\n providers: [provideThemeBasicConfig()],\r\n };\r\n }\r\n}\r\n","/*\r\n * Public API Surface of theme-basic\r\n */\r\n\r\nexport * from './lib/components';\r\nexport * from './lib/enums';\r\nexport * from './lib/handlers';\r\nexport * from './lib/models';\r\nexport * from './lib/providers';\r\nexport * from './lib/theme-basic.module';\r\nexport * from './lib/tokens';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","ErrorComponent"],"mappings":"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"}
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@abp/ng.theme.basic",
3
- "version": "10.1.0-rc.1",
3
+ "version": "10.1.0-rc.2",
4
4
  "homepage": "https://abp.io",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/abpframework/abp.git"
8
8
  },
9
9
  "dependencies": {
10
- "@abp/ng.account.core": "~10.1.0-rc.1",
11
- "@abp/ng.theme.shared": "~10.1.0-rc.1",
10
+ "@abp/ng.account.core": "~10.1.0-rc.2",
11
+ "@abp/ng.theme.shared": "~10.1.0-rc.2",
12
12
  "tslib": "^2.0.0"
13
13
  },
14
14
  "publishConfig": {