@abp/ng.theme.lepton-x 4.0.5 → 4.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.
Files changed (63) hide show
  1. package/account/account-layout/account-layout.module.d.ts +2 -2
  2. package/account/account-layout/components/auth-layout/auth-wrapper.component.d.ts +1 -1
  3. package/account/account-layout/components/tenant-box/tenant-box.component.d.ts +1 -1
  4. package/fesm2022/abp-ng.theme.lepton-x-account.mjs +31 -40
  5. package/fesm2022/abp-ng.theme.lepton-x-account.mjs.map +1 -1
  6. package/fesm2022/abp-ng.theme.lepton-x-layouts.mjs +65 -75
  7. package/fesm2022/abp-ng.theme.lepton-x-layouts.mjs.map +1 -1
  8. package/fesm2022/abp-ng.theme.lepton-x.mjs +58 -85
  9. package/fesm2022/abp-ng.theme.lepton-x.mjs.map +1 -1
  10. package/layouts/side-menu-layout/providers/layout.provider.d.ts +2 -3
  11. package/layouts/side-menu-layout/providers/nav-item.provider.d.ts +2 -3
  12. package/lib/providers/init-service.provider.d.ts +1 -3
  13. package/lib/providers/language.provider.d.ts +1 -9
  14. package/lib/providers/user-menu-service.provider.d.ts +2 -8
  15. package/lib/providers/user.provider.d.ts +1 -9
  16. package/package.json +6 -12
  17. package/esm2022/abp-ng.theme.lepton-x.mjs +0 -5
  18. package/esm2022/account/abp-ng.theme.lepton-x-account.mjs +0 -5
  19. package/esm2022/account/account-layout/account-layout.component.mjs +0 -14
  20. package/esm2022/account/account-layout/account-layout.module.mjs +0 -72
  21. package/esm2022/account/account-layout/components/auth-layout/auth-wrapper.component.mjs +0 -31
  22. package/esm2022/account/account-layout/components/tenant-box/tenant-box.component.mjs +0 -22
  23. package/esm2022/account/account-layout/index.mjs +0 -3
  24. package/esm2022/account/account-layout/services/account-layout.service.mjs +0 -80
  25. package/esm2022/account/public-api.mjs +0 -2
  26. package/esm2022/index.mjs +0 -9
  27. package/esm2022/layouts/abp-ng.theme.lepton-x-layouts.mjs +0 -5
  28. package/esm2022/layouts/empty-layout/empty-layout.component.mjs +0 -19
  29. package/esm2022/layouts/empty-layout/index.mjs +0 -2
  30. package/esm2022/layouts/public-api.mjs +0 -6
  31. package/esm2022/layouts/side-menu-layout/components/index.mjs +0 -5
  32. package/esm2022/layouts/side-menu-layout/components/language-selection/index.mjs +0 -2
  33. package/esm2022/layouts/side-menu-layout/components/language-selection/language-selection.component.mjs +0 -16
  34. package/esm2022/layouts/side-menu-layout/components/nav-items/index.mjs +0 -2
  35. package/esm2022/layouts/side-menu-layout/components/nav-items/nav-items.component.mjs +0 -19
  36. package/esm2022/layouts/side-menu-layout/components/navigate-to-login/navigate-to-login.component.mjs +0 -33
  37. package/esm2022/layouts/side-menu-layout/components/user-profile/index.mjs +0 -2
  38. package/esm2022/layouts/side-menu-layout/components/user-profile/user-profile.component.mjs +0 -16
  39. package/esm2022/layouts/side-menu-layout/index.mjs +0 -5
  40. package/esm2022/layouts/side-menu-layout/providers/index.mjs +0 -3
  41. package/esm2022/layouts/side-menu-layout/providers/layout.provider.mjs +0 -24
  42. package/esm2022/layouts/side-menu-layout/providers/nav-item.provider.mjs +0 -37
  43. package/esm2022/layouts/side-menu-layout/side-menu-application-layout/index.mjs +0 -2
  44. package/esm2022/layouts/side-menu-layout/side-menu-application-layout/side-menu-application-layout.component.mjs +0 -32
  45. package/esm2022/layouts/side-menu-layout/side-menu-layout.module.mjs +0 -81
  46. package/esm2022/lib/components/index.mjs +0 -2
  47. package/esm2022/lib/components/validation-error/index.mjs +0 -3
  48. package/esm2022/lib/components/validation-error/validation-error.component.mjs +0 -49
  49. package/esm2022/lib/components/validation-error/validation-error.module.mjs +0 -39
  50. package/esm2022/lib/enums/components.mjs +0 -2
  51. package/esm2022/lib/enums/index.mjs +0 -3
  52. package/esm2022/lib/enums/user-menu-items.mjs +0 -6
  53. package/esm2022/lib/providers/index.mjs +0 -6
  54. package/esm2022/lib/providers/init-service.provider.mjs +0 -16
  55. package/esm2022/lib/providers/language.provider.mjs +0 -15
  56. package/esm2022/lib/providers/translate.provider.mjs +0 -7
  57. package/esm2022/lib/providers/user-menu-service.provider.mjs +0 -38
  58. package/esm2022/lib/providers/user.provider.mjs +0 -15
  59. package/esm2022/lib/services/index.mjs +0 -4
  60. package/esm2022/lib/services/language.service.mjs +0 -43
  61. package/esm2022/lib/services/translate.service.mjs +0 -39
  62. package/esm2022/lib/services/user-profile.service.mjs +0 -63
  63. package/esm2022/lib/theme-lepton-x.module.mjs +0 -54
@@ -1,4 +1,4 @@
1
- import { Injector, ModuleWithProviders } from '@angular/core';
1
+ import { ModuleWithProviders } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "./account-layout.component";
4
4
  import * as i2 from "@angular/router";
@@ -15,4 +15,4 @@ export declare class AccountLayoutModule {
15
15
  static ɵmod: i0.ɵɵNgModuleDeclaration<AccountLayoutModule, [typeof i1.AccountLayoutComponent], [typeof i2.RouterModule, typeof i3.CoreModule, typeof i4.LpxSideMenuLayoutModule, typeof i5.ThemeSharedModule, typeof i6.PageAlertContainerModule, typeof i7.LanguageSelectionModule, typeof i8.TenantBoxComponent, typeof i9.AuthWrapperComponent], never>;
16
16
  static ɵinj: i0.ɵɵInjectorDeclaration<AccountLayoutModule>;
17
17
  }
18
- export declare function initAccountLayout(injector: Injector): () => void;
18
+ export declare function initAccountLayout(): void;
@@ -1,4 +1,4 @@
1
- import { AccountLayoutService } from "../../services/account-layout.service";
1
+ import { AccountLayoutService } from '../../services/account-layout.service';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class AuthWrapperComponent {
4
4
  service: AccountLayoutService;
@@ -1,4 +1,4 @@
1
- import { AccountLayoutService } from "../../services/account-layout.service";
1
+ import { AccountLayoutService } from '../../services/account-layout.service';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class TenantBoxComponent {
4
4
  service: AccountLayoutService;
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, signal, Injectable, Component, APP_INITIALIZER, Injector, NgModule } from '@angular/core';
2
+ import { inject, signal, Injectable, Component, provideAppInitializer, NgModule } from '@angular/core';
3
3
  import * as i1$1 from '@angular/router';
4
- import { ActivatedRoute, RouterOutlet, RouterModule } from '@angular/router';
4
+ import { ActivatedRoute, RouterModule } from '@angular/router';
5
5
  import * as i2$1 from '@volo/abp.ng.lepton-x.core';
6
6
  import { PageAlertContainerModule } from '@volo/abp.ng.lepton-x.core';
7
7
  import * as i1 from '@angular/common';
@@ -83,10 +83,10 @@ class AccountLayoutService {
83
83
  messageLocalizationParams: [this.name()],
84
84
  });
85
85
  }
86
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: AccountLayoutService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
87
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: AccountLayoutService }); }
86
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: AccountLayoutService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
87
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: AccountLayoutService }); }
88
88
  }
89
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: AccountLayoutService, decorators: [{
89
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: AccountLayoutService, decorators: [{
90
90
  type: Injectable
91
91
  }] });
92
92
 
@@ -94,40 +94,39 @@ class TenantBoxComponent {
94
94
  constructor() {
95
95
  this.service = inject(AccountLayoutService);
96
96
  }
97
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TenantBoxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
98
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.5", type: TenantBoxComponent, isStandalone: true, selector: "lpx-tenant-box", ngImport: i0, template: "@if ((service.currentTenant$ | async) || {}; 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>{{\r\n currentTenant.name ||\r\n ('AbpUiMultiTenancy::NotSelected' | abpLocalization)\r\n }}</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\r\n size=\"md\"\r\n [(visible)]=\"service.isModalVisible\"\r\n [busy]=\"service.modalBusy\"\r\n >\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=\"form-group\">\r\n <label for=\"name\">{{\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: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "pipe", type: i3.LocalizationPipe, name: "abpLocalization" }, { kind: "directive", type: i3.AutofocusDirective, selector: "[autofocus]", inputs: ["autofocus"] }, { kind: "ngmodule", type: ThemeSharedModule }, { kind: "component", type: i4.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "component", type: i4.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "directive", type: i4.ModalCloseDirective, selector: "[abpClose]" }] }); }
97
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: TenantBoxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
98
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.5", type: TenantBoxComponent, isStandalone: true, selector: "lpx-tenant-box", ngImport: i0, template: "@if ((service.currentTenant$ | async) || {}; 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>{{\r\n currentTenant.name ||\r\n ('AbpUiMultiTenancy::NotSelected' | abpLocalization)\r\n }}</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\r\n size=\"md\"\r\n [(visible)]=\"service.isModalVisible\"\r\n [busy]=\"service.modalBusy\"\r\n >\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=\"form-group\">\r\n <label for=\"name\">{{\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: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "pipe", type: i3.LocalizationPipe, name: "abpLocalization" }, { kind: "directive", type: i3.AutofocusDirective, selector: "[autofocus]", inputs: ["autofocus"] }, { kind: "ngmodule", type: ThemeSharedModule }, { kind: "component", type: i4.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "component", type: i4.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "directive", type: i4.ModalCloseDirective, selector: "[abpClose]" }] }); }
99
99
  }
100
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TenantBoxComponent, decorators: [{
100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: TenantBoxComponent, decorators: [{
101
101
  type: Component,
102
- args: [{ selector: 'lpx-tenant-box', standalone: true, imports: [CommonModule, CoreModule, ThemeSharedModule], template: "@if ((service.currentTenant$ | async) || {}; 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>{{\r\n currentTenant.name ||\r\n ('AbpUiMultiTenancy::NotSelected' | abpLocalization)\r\n }}</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\r\n size=\"md\"\r\n [(visible)]=\"service.isModalVisible\"\r\n [busy]=\"service.modalBusy\"\r\n >\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=\"form-group\">\r\n <label for=\"name\">{{\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" }]
102
+ args: [{ selector: 'lpx-tenant-box', imports: [CommonModule, CoreModule, ThemeSharedModule], template: "@if ((service.currentTenant$ | async) || {}; 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>{{\r\n currentTenant.name ||\r\n ('AbpUiMultiTenancy::NotSelected' | abpLocalization)\r\n }}</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\r\n size=\"md\"\r\n [(visible)]=\"service.isModalVisible\"\r\n [busy]=\"service.modalBusy\"\r\n >\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=\"form-group\">\r\n <label for=\"name\">{{\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" }]
103
103
  }] });
104
104
 
105
105
  class AuthWrapperComponent {
106
106
  constructor() {
107
107
  this.service = inject(AccountLayoutService);
108
108
  }
109
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: AuthWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
110
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.5", type: AuthWrapperComponent, isStandalone: true, selector: "lpx-auth-wrapper", providers: [AccountLayoutService], ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"mx-auto col col-md-5\">\r\n @if (\r\n (service.isMultiTenancyEnabled$ | async) && service.isTenantBoxVisible\r\n ) {\r\n <lpx-tenant-box\r\n *abpReplaceableTemplate=\"{ componentKey: service.tenantBoxKey }\"\r\n ></lpx-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 <lpx-language-selection class=\"float-end\"></lpx-language-selection>\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>{{\r\n 'AbpAccount::InvalidLoginRequest' | abpLocalization\r\n }}</strong>\r\n {{\r\n 'AbpAccount::ThereAreNoLoginSchemesConfiguredForThisClient'\r\n | abpLocalization\r\n }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CoreModule }, { kind: "pipe", type: i3.LocalizationPipe, name: "abpLocalization" }, { kind: "directive", type: i3.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { kind: "ngmodule", type: ThemeSharedModule }, { kind: "component", type: TenantBoxComponent, selector: "lpx-tenant-box" }, { kind: "ngmodule", type: LanguageSelectionModule }, { kind: "component", type: i3$1.LanguageSelectionComponent, selector: "lpx-language-selection" }] }); }
109
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: AuthWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
110
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.5", type: AuthWrapperComponent, isStandalone: true, selector: "lpx-auth-wrapper", providers: [AccountLayoutService], ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"mx-auto col col-md-5\">\r\n @if (\r\n (service.isMultiTenancyEnabled$ | async) && service.isTenantBoxVisible\r\n ) {\r\n <lpx-tenant-box\r\n *abpReplaceableTemplate=\"{ componentKey: service.tenantBoxKey }\"\r\n ></lpx-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 <lpx-language-selection class=\"float-end\"></lpx-language-selection>\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>{{\r\n 'AbpAccount::InvalidLoginRequest' | abpLocalization\r\n }}</strong>\r\n {{\r\n 'AbpAccount::ThereAreNoLoginSchemesConfiguredForThisClient'\r\n | abpLocalization\r\n }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CoreModule }, { kind: "pipe", type: i3.LocalizationPipe, name: "abpLocalization" }, { kind: "directive", type: i3.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { kind: "ngmodule", type: ThemeSharedModule }, { kind: "component", type: TenantBoxComponent, selector: "lpx-tenant-box" }, { kind: "ngmodule", type: LanguageSelectionModule }, { kind: "component", type: i3$1.LanguageSelectionComponent, selector: "lpx-language-selection" }] }); }
111
111
  }
112
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: AuthWrapperComponent, decorators: [{
112
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: AuthWrapperComponent, decorators: [{
113
113
  type: Component,
114
- args: [{ selector: 'lpx-auth-wrapper', standalone: true, imports: [
114
+ args: [{ selector: 'lpx-auth-wrapper', imports: [
115
115
  CommonModule,
116
116
  CoreModule,
117
117
  ThemeSharedModule,
118
118
  TenantBoxComponent,
119
119
  LanguageSelectionModule,
120
- RouterOutlet
121
120
  ], providers: [AccountLayoutService], template: "<div class=\"row\">\r\n <div class=\"mx-auto col col-md-5\">\r\n @if (\r\n (service.isMultiTenancyEnabled$ | async) && service.isTenantBoxVisible\r\n ) {\r\n <lpx-tenant-box\r\n *abpReplaceableTemplate=\"{ componentKey: service.tenantBoxKey }\"\r\n ></lpx-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 <lpx-language-selection class=\"float-end\"></lpx-language-selection>\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>{{\r\n 'AbpAccount::InvalidLoginRequest' | abpLocalization\r\n }}</strong>\r\n {{\r\n 'AbpAccount::ThereAreNoLoginSchemesConfiguredForThisClient'\r\n | abpLocalization\r\n }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n" }]
122
121
  }] });
123
122
 
124
123
  class AccountLayoutComponent {
125
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: AccountLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
126
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.5", type: AccountLayoutComponent, selector: "abp-account-layout", ngImport: i0, template: "<div class=\"container d-flex flex-column vh-100 justify-content-center\">\r\n <abp-page-alert-container></abp-page-alert-container>\r\n <lpx-auth-wrapper>\r\n <router-outlet></router-outlet>\r\n </lpx-auth-wrapper>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i1$1.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i2$1.PageAlertContainerComponent, selector: "abp-page-alert-container" }, { kind: "component", type: AuthWrapperComponent, selector: "lpx-auth-wrapper" }] }); }
124
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: AccountLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
125
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: AccountLayoutComponent, isStandalone: false, selector: "abp-account-layout", ngImport: i0, template: "<div class=\"container d-flex flex-column vh-100 justify-content-center\">\r\n <abp-page-alert-container></abp-page-alert-container>\r\n <lpx-auth-wrapper>\r\n <router-outlet></router-outlet>\r\n </lpx-auth-wrapper>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i1$1.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i2$1.PageAlertContainerComponent, selector: "abp-page-alert-container" }, { kind: "component", type: AuthWrapperComponent, selector: "lpx-auth-wrapper" }] }); }
127
126
  }
128
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: AccountLayoutComponent, decorators: [{
127
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: AccountLayoutComponent, decorators: [{
129
128
  type: Component,
130
- args: [{ selector: 'abp-account-layout', template: "<div class=\"container d-flex flex-column vh-100 justify-content-center\">\r\n <abp-page-alert-container></abp-page-alert-container>\r\n <lpx-auth-wrapper>\r\n <router-outlet></router-outlet>\r\n </lpx-auth-wrapper>\r\n</div>\r\n" }]
129
+ args: [{ standalone: false, selector: 'abp-account-layout', template: "<div class=\"container d-flex flex-column vh-100 justify-content-center\">\r\n <abp-page-alert-container></abp-page-alert-container>\r\n <lpx-auth-wrapper>\r\n <router-outlet></router-outlet>\r\n </lpx-auth-wrapper>\r\n</div>\r\n" }]
131
130
  }] });
132
131
 
133
132
  class AccountLayoutModule {
@@ -135,17 +134,14 @@ class AccountLayoutModule {
135
134
  return {
136
135
  ngModule: AccountLayoutModule,
137
136
  providers: [
138
- {
139
- provide: APP_INITIALIZER,
140
- useFactory: initAccountLayout,
141
- deps: [Injector],
142
- multi: true,
143
- },
137
+ provideAppInitializer(() => {
138
+ initAccountLayout();
139
+ }),
144
140
  ],
145
141
  };
146
142
  }
147
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: AccountLayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
148
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.5", ngImport: i0, type: AccountLayoutModule, declarations: [AccountLayoutComponent], imports: [RouterModule,
143
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: AccountLayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
144
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.1.5", ngImport: i0, type: AccountLayoutModule, declarations: [AccountLayoutComponent], imports: [RouterModule,
149
145
  CoreModule,
150
146
  LpxSideMenuLayoutModule,
151
147
  ThemeSharedModule,
@@ -153,7 +149,7 @@ class AccountLayoutModule {
153
149
  LanguageSelectionModule,
154
150
  TenantBoxComponent,
155
151
  AuthWrapperComponent] }); }
156
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: AccountLayoutModule, imports: [RouterModule,
152
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: AccountLayoutModule, imports: [RouterModule,
157
153
  CoreModule,
158
154
  LpxSideMenuLayoutModule,
159
155
  ThemeSharedModule,
@@ -162,12 +158,10 @@ class AccountLayoutModule {
162
158
  TenantBoxComponent,
163
159
  AuthWrapperComponent] }); }
164
160
  }
165
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: AccountLayoutModule, decorators: [{
161
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: AccountLayoutModule, decorators: [{
166
162
  type: NgModule,
167
163
  args: [{
168
- declarations: [
169
- AccountLayoutComponent,
170
- ],
164
+ declarations: [AccountLayoutComponent],
171
165
  imports: [
172
166
  RouterModule,
173
167
  CoreModule,
@@ -180,15 +174,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImpor
180
174
  ],
181
175
  }]
182
176
  }] });
183
- function initAccountLayout(injector) {
184
- function init() {
185
- const replaceableComponents = injector.get(ReplaceableComponentsService);
186
- replaceableComponents.add({
187
- key: 'Theme.AccountLayoutComponent',
188
- component: AccountLayoutComponent,
189
- });
190
- }
191
- return init;
177
+ function initAccountLayout() {
178
+ const replaceableComponents = inject(ReplaceableComponentsService);
179
+ replaceableComponents.add({
180
+ key: 'Theme.AccountLayoutComponent',
181
+ component: AccountLayoutComponent,
182
+ });
192
183
  }
193
184
 
194
185
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"abp-ng.theme.lepton-x-account.mjs","sources":["../../../../libs/abp-lepton-x/account/src/account-layout/services/account-layout.service.ts","../../../../libs/abp-lepton-x/account/src/account-layout/components/tenant-box/tenant-box.component.ts","../../../../libs/abp-lepton-x/account/src/account-layout/components/tenant-box/tenant-box.component.html","../../../../libs/abp-lepton-x/account/src/account-layout/components/auth-layout/auth-wrapper.component.ts","../../../../libs/abp-lepton-x/account/src/account-layout/components/auth-layout/auth-wrapper.component.html","../../../../libs/abp-lepton-x/account/src/account-layout/account-layout.component.ts","../../../../libs/abp-lepton-x/account/src/account-layout/account-layout.component.html","../../../../libs/abp-lepton-x/account/src/account-layout/account-layout.module.ts","../../../../libs/abp-lepton-x/account/src/abp-ng.theme.lepton-x-account.ts"],"sourcesContent":["import {inject, Injectable, signal} from '@angular/core';\r\nimport {finalize} from \"rxjs\";\r\nimport {map} from \"rxjs/operators\";\r\nimport {ActivatedRoute} from \"@angular/router\";\r\nimport {\r\n AbpTenantService,\r\n ConfigStateService,\r\n CurrentTenantDto,\r\n MultiTenancyService,\r\n SessionStateService\r\n} from \"@abp/ng.core\";\r\nimport {ToasterService} from \"@abp/ng.theme.shared\";\r\n\r\n@Injectable()\r\nexport class AccountLayoutService {\r\n\r\n private configState = inject(ConfigStateService);\r\n private multiTenancy = inject(MultiTenancyService);\r\n private toasterService = inject(ToasterService);\r\n private tenantService = inject(AbpTenantService);\r\n private sessionState = inject(SessionStateService);\r\n\r\n\r\n isMultiTenancyEnabled$ = this.configState.getDeep$('multiTenancy.isEnabled');\r\n enableLocalLogin$ = this.configState.getSetting$('Abp.Account.EnableLocalLogin')\r\n .pipe(map(value => value?.toLowerCase() !== 'false'));\r\n\r\n tenantBoxKey = 'Account.TenantBoxComponent';\r\n route: ActivatedRoute = inject(ActivatedRoute);\r\n\r\n\r\n get isTenantBoxVisibleForCurrentRoute() {\r\n return this.getMostInnerChild().data.tenantBoxVisible ?? true;\r\n }\r\n\r\n get isTenantBoxVisible() {\r\n return this.isTenantBoxVisibleForCurrentRoute && this.multiTenancy.isTenantBoxVisible;\r\n }\r\n\r\n\r\n private getMostInnerChild() {\r\n let child = this.route.snapshot;\r\n let depth = 0;\r\n const depthLimit = 10;\r\n while (child.firstChild && depth < depthLimit) {\r\n child = child.firstChild;\r\n depth++;\r\n }\r\n return child;\r\n }\r\n\r\n //\r\n currentTenant$ = this.sessionState.getTenant$();\r\n name = signal('')\r\n isModalVisible!: boolean;\r\n modalBusy!: boolean;\r\n\r\n onSwitch() {\r\n const tenant = this.sessionState.getTenant();\r\n this.name.set(tenant?.name || '')\r\n this.isModalVisible = true;\r\n }\r\n\r\n save() {\r\n const name = this.name()\r\n if (!name) {\r\n this.setTenant(null);\r\n this.isModalVisible = false;\r\n return;\r\n }\r\n\r\n this.modalBusy = true;\r\n this.tenantService\r\n .findTenantByName(name)\r\n .pipe(finalize(() => (this.modalBusy = false)))\r\n .subscribe(({success, tenantId: id, ...tenant}) => {\r\n if (!success) {\r\n this.showError();\r\n return;\r\n }\r\n\r\n this.setTenant({...tenant, id, isAvailable: true});\r\n this.isModalVisible = false;\r\n });\r\n }\r\n\r\n private setTenant(tenant: CurrentTenantDto | null) {\r\n this.sessionState.setTenant(tenant);\r\n this.configState.refreshAppState();\r\n }\r\n\r\n private showError() {\r\n this.toasterService.error('AbpUiMultiTenancy::GivenTenantIsNotAvailable', 'AbpUi::Error', {\r\n messageLocalizationParams: [this.name()],\r\n });\r\n }\r\n\r\n}\r\n\r\n\r\n","import {Component, inject} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {CoreModule} from '@abp/ng.core';\r\nimport {ThemeSharedModule} from '@abp/ng.theme.shared';\r\nimport {AccountLayoutService} from \"../../services/account-layout.service\";\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: 'lpx-tenant-box',\r\n templateUrl: './tenant-box.component.html',\r\n standalone: true,\r\n imports: [CommonModule, CoreModule, ThemeSharedModule],\r\n})\r\nexport class TenantBoxComponent {\r\n public service = inject(AccountLayoutService)\r\n}\r\n","@if ((service.currentTenant$ | async) || {}; 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>{{\r\n currentTenant.name ||\r\n ('AbpUiMultiTenancy::NotSelected' | abpLocalization)\r\n }}</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\r\n size=\"md\"\r\n [(visible)]=\"service.isModalVisible\"\r\n [busy]=\"service.modalBusy\"\r\n >\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=\"form-group\">\r\n <label for=\"name\">{{\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 {Component, inject} from '@angular/core';\r\nimport {AuthWrapperService} from '@abp/ng.account.core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {TenantBoxComponent} from '../tenant-box/tenant-box.component';\r\nimport {LanguageSelectionModule} from '@volo/ngx-lepton-x.lite';\r\nimport {CoreModule, SubscriptionService} from '@abp/ng.core';\r\nimport {ThemeSharedModule} from '@abp/ng.theme.shared';\r\nimport {RouterOutlet} from '@angular/router';\r\nimport {AccountLayoutService} from \"../../services/account-layout.service\";\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: 'lpx-auth-wrapper',\r\n templateUrl: './auth-wrapper.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n CoreModule,\r\n ThemeSharedModule,\r\n TenantBoxComponent,\r\n LanguageSelectionModule,\r\n RouterOutlet\r\n ],\r\n providers: [AccountLayoutService],\r\n})\r\nexport class AuthWrapperComponent {\r\n service = inject(AccountLayoutService)\r\n}\r\n","<div class=\"row\">\r\n <div class=\"mx-auto col col-md-5\">\r\n @if (\r\n (service.isMultiTenancyEnabled$ | async) && service.isTenantBoxVisible\r\n ) {\r\n <lpx-tenant-box\r\n *abpReplaceableTemplate=\"{ componentKey: service.tenantBoxKey }\"\r\n ></lpx-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 <lpx-language-selection class=\"float-end\"></lpx-language-selection>\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>{{\r\n 'AbpAccount::InvalidLoginRequest' | abpLocalization\r\n }}</strong>\r\n {{\r\n 'AbpAccount::ThereAreNoLoginSchemesConfiguredForThisClient'\r\n | abpLocalization\r\n }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n","import {Component} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'abp-account-layout',\r\n templateUrl: './account-layout.component.html'\r\n})\r\nexport class AccountLayoutComponent {}\r\n","<div class=\"container d-flex flex-column vh-100 justify-content-center\">\r\n <abp-page-alert-container></abp-page-alert-container>\r\n <lpx-auth-wrapper>\r\n <router-outlet></router-outlet>\r\n </lpx-auth-wrapper>\r\n</div>\r\n","import {\r\n APP_INITIALIZER,\r\n Injector,\r\n ModuleWithProviders,\r\n NgModule,\r\n} from '@angular/core';\r\nimport { AccountLayoutComponent } from './account-layout.component';\r\nimport { TenantBoxComponent } from './components/tenant-box/tenant-box.component';\r\nimport { AuthWrapperComponent } from './components/auth-layout/auth-wrapper.component';\r\nimport { CoreModule, ReplaceableComponentsService } from '@abp/ng.core';\r\nimport { LpxSideMenuLayoutModule } from '@volo/ngx-lepton-x.lite/layouts';\r\nimport { LanguageSelectionModule } from '@volo/ngx-lepton-x.lite';\r\nimport { RouterModule } from '@angular/router';\r\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\r\nimport { PageAlertContainerModule } from '@volo/abp.ng.lepton-x.core';\r\n\r\n@NgModule({\r\n declarations: [\r\n AccountLayoutComponent,\r\n ],\r\n imports: [\r\n RouterModule,\r\n CoreModule,\r\n LpxSideMenuLayoutModule,\r\n ThemeSharedModule,\r\n PageAlertContainerModule,\r\n LanguageSelectionModule,\r\n TenantBoxComponent,\r\n AuthWrapperComponent,\r\n ],\r\n})\r\nexport class AccountLayoutModule {\r\n static forRoot(): ModuleWithProviders<AccountLayoutModule> {\r\n return {\r\n ngModule: AccountLayoutModule,\r\n providers: [\r\n {\r\n provide: APP_INITIALIZER,\r\n useFactory: initAccountLayout,\r\n deps: [Injector],\r\n multi: true,\r\n },\r\n ],\r\n };\r\n }\r\n}\r\n\r\nexport function initAccountLayout(injector: Injector) {\r\n function init() {\r\n const replaceableComponents = injector.get(ReplaceableComponentsService);\r\n replaceableComponents.add({\r\n key: 'Theme.AccountLayoutComponent',\r\n component: AccountLayoutComponent,\r\n });\r\n }\r\n\r\n return init;\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i1","i3.AuthWrapperComponent"],"mappings":"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"}
1
+ {"version":3,"file":"abp-ng.theme.lepton-x-account.mjs","sources":["../../../../libs/abp-lepton-x/account/src/account-layout/services/account-layout.service.ts","../../../../libs/abp-lepton-x/account/src/account-layout/components/tenant-box/tenant-box.component.ts","../../../../libs/abp-lepton-x/account/src/account-layout/components/tenant-box/tenant-box.component.html","../../../../libs/abp-lepton-x/account/src/account-layout/components/auth-layout/auth-wrapper.component.ts","../../../../libs/abp-lepton-x/account/src/account-layout/components/auth-layout/auth-wrapper.component.html","../../../../libs/abp-lepton-x/account/src/account-layout/account-layout.component.ts","../../../../libs/abp-lepton-x/account/src/account-layout/account-layout.component.html","../../../../libs/abp-lepton-x/account/src/account-layout/account-layout.module.ts","../../../../libs/abp-lepton-x/account/src/abp-ng.theme.lepton-x-account.ts"],"sourcesContent":["import {inject, Injectable, signal} from '@angular/core';\r\nimport {finalize} from \"rxjs\";\r\nimport {map} from \"rxjs/operators\";\r\nimport {ActivatedRoute} from \"@angular/router\";\r\nimport {\r\n AbpTenantService,\r\n ConfigStateService,\r\n CurrentTenantDto,\r\n MultiTenancyService,\r\n SessionStateService\r\n} from \"@abp/ng.core\";\r\nimport {ToasterService} from \"@abp/ng.theme.shared\";\r\n\r\n@Injectable()\r\nexport class AccountLayoutService {\r\n\r\n private configState = inject(ConfigStateService);\r\n private multiTenancy = inject(MultiTenancyService);\r\n private toasterService = inject(ToasterService);\r\n private tenantService = inject(AbpTenantService);\r\n private sessionState = inject(SessionStateService);\r\n\r\n\r\n isMultiTenancyEnabled$ = this.configState.getDeep$('multiTenancy.isEnabled');\r\n enableLocalLogin$ = this.configState.getSetting$('Abp.Account.EnableLocalLogin')\r\n .pipe(map(value => value?.toLowerCase() !== 'false'));\r\n\r\n tenantBoxKey = 'Account.TenantBoxComponent';\r\n route: ActivatedRoute = inject(ActivatedRoute);\r\n\r\n\r\n get isTenantBoxVisibleForCurrentRoute() {\r\n return this.getMostInnerChild().data.tenantBoxVisible ?? true;\r\n }\r\n\r\n get isTenantBoxVisible() {\r\n return this.isTenantBoxVisibleForCurrentRoute && this.multiTenancy.isTenantBoxVisible;\r\n }\r\n\r\n\r\n private getMostInnerChild() {\r\n let child = this.route.snapshot;\r\n let depth = 0;\r\n const depthLimit = 10;\r\n while (child.firstChild && depth < depthLimit) {\r\n child = child.firstChild;\r\n depth++;\r\n }\r\n return child;\r\n }\r\n\r\n //\r\n currentTenant$ = this.sessionState.getTenant$();\r\n name = signal('')\r\n isModalVisible!: boolean;\r\n modalBusy!: boolean;\r\n\r\n onSwitch() {\r\n const tenant = this.sessionState.getTenant();\r\n this.name.set(tenant?.name || '')\r\n this.isModalVisible = true;\r\n }\r\n\r\n save() {\r\n const name = this.name()\r\n if (!name) {\r\n this.setTenant(null);\r\n this.isModalVisible = false;\r\n return;\r\n }\r\n\r\n this.modalBusy = true;\r\n this.tenantService\r\n .findTenantByName(name)\r\n .pipe(finalize(() => (this.modalBusy = false)))\r\n .subscribe(({success, tenantId: id, ...tenant}) => {\r\n if (!success) {\r\n this.showError();\r\n return;\r\n }\r\n\r\n this.setTenant({...tenant, id, isAvailable: true});\r\n this.isModalVisible = false;\r\n });\r\n }\r\n\r\n private setTenant(tenant: CurrentTenantDto | null) {\r\n this.sessionState.setTenant(tenant);\r\n this.configState.refreshAppState();\r\n }\r\n\r\n private showError() {\r\n this.toasterService.error('AbpUiMultiTenancy::GivenTenantIsNotAvailable', 'AbpUi::Error', {\r\n messageLocalizationParams: [this.name()],\r\n });\r\n }\r\n\r\n}\r\n\r\n\r\n","import { Component, inject } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CoreModule } from '@abp/ng.core';\r\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\r\nimport { AccountLayoutService } from '../../services/account-layout.service';\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: 'lpx-tenant-box',\r\n templateUrl: './tenant-box.component.html',\r\n imports: [CommonModule, CoreModule, ThemeSharedModule],\r\n})\r\nexport class TenantBoxComponent {\r\n public service = inject(AccountLayoutService);\r\n}\r\n","@if ((service.currentTenant$ | async) || {}; 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>{{\r\n currentTenant.name ||\r\n ('AbpUiMultiTenancy::NotSelected' | abpLocalization)\r\n }}</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\r\n size=\"md\"\r\n [(visible)]=\"service.isModalVisible\"\r\n [busy]=\"service.modalBusy\"\r\n >\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=\"form-group\">\r\n <label for=\"name\">{{\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 { Component, inject } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TenantBoxComponent } from '../tenant-box/tenant-box.component';\r\nimport { LanguageSelectionModule } from '@volo/ngx-lepton-x.lite';\r\nimport { CoreModule } from '@abp/ng.core';\r\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\r\nimport { AccountLayoutService } from '../../services/account-layout.service';\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: 'lpx-auth-wrapper',\r\n templateUrl: './auth-wrapper.component.html',\r\n imports: [\r\n CommonModule,\r\n CoreModule,\r\n ThemeSharedModule,\r\n TenantBoxComponent,\r\n LanguageSelectionModule,\r\n ],\r\n providers: [AccountLayoutService],\r\n})\r\nexport class AuthWrapperComponent {\r\n service = inject(AccountLayoutService);\r\n}\r\n","<div class=\"row\">\r\n <div class=\"mx-auto col col-md-5\">\r\n @if (\r\n (service.isMultiTenancyEnabled$ | async) && service.isTenantBoxVisible\r\n ) {\r\n <lpx-tenant-box\r\n *abpReplaceableTemplate=\"{ componentKey: service.tenantBoxKey }\"\r\n ></lpx-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 <lpx-language-selection class=\"float-end\"></lpx-language-selection>\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>{{\r\n 'AbpAccount::InvalidLoginRequest' | abpLocalization\r\n }}</strong>\r\n {{\r\n 'AbpAccount::ThereAreNoLoginSchemesConfiguredForThisClient'\r\n | abpLocalization\r\n }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'abp-account-layout',\r\n templateUrl: './account-layout.component.html',\r\n})\r\nexport class AccountLayoutComponent {}\r\n","<div class=\"container d-flex flex-column vh-100 justify-content-center\">\r\n <abp-page-alert-container></abp-page-alert-container>\r\n <lpx-auth-wrapper>\r\n <router-outlet></router-outlet>\r\n </lpx-auth-wrapper>\r\n</div>\r\n","import {\r\n ModuleWithProviders,\r\n NgModule,\r\n inject,\r\n provideAppInitializer,\r\n} from '@angular/core';\r\nimport { AccountLayoutComponent } from './account-layout.component';\r\nimport { TenantBoxComponent } from './components/tenant-box/tenant-box.component';\r\nimport { AuthWrapperComponent } from './components/auth-layout/auth-wrapper.component';\r\nimport { CoreModule, ReplaceableComponentsService } from '@abp/ng.core';\r\nimport { LpxSideMenuLayoutModule } from '@volo/ngx-lepton-x.lite/layouts';\r\nimport { LanguageSelectionModule } from '@volo/ngx-lepton-x.lite';\r\nimport { RouterModule } from '@angular/router';\r\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\r\nimport { PageAlertContainerModule } from '@volo/abp.ng.lepton-x.core';\r\n\r\n@NgModule({\r\n declarations: [AccountLayoutComponent],\r\n imports: [\r\n RouterModule,\r\n CoreModule,\r\n LpxSideMenuLayoutModule,\r\n ThemeSharedModule,\r\n PageAlertContainerModule,\r\n LanguageSelectionModule,\r\n TenantBoxComponent,\r\n AuthWrapperComponent,\r\n ],\r\n})\r\nexport class AccountLayoutModule {\r\n static forRoot(): ModuleWithProviders<AccountLayoutModule> {\r\n return {\r\n ngModule: AccountLayoutModule,\r\n providers: [\r\n provideAppInitializer(() => {\r\n initAccountLayout();\r\n }),\r\n ],\r\n };\r\n }\r\n}\r\n\r\nexport function initAccountLayout() {\r\n const replaceableComponents = inject(ReplaceableComponentsService);\r\n replaceableComponents.add({\r\n key: 'Theme.AccountLayoutComponent',\r\n component: AccountLayoutComponent,\r\n });\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i1","i3.AuthWrapperComponent"],"mappings":"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"}