@volosoft/abp.ng.theme.lepton-x 1.0.0-rc.4 → 1.0.0-rc.6

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 (81) hide show
  1. package/account/account/account-layout.component.d.ts +1 -1
  2. package/account/account/components/auth-wrapper/auth-wrapper.component.d.ts +1 -1
  3. package/account/account/components/tenant-box/tenant-box.component.d.ts +1 -1
  4. package/assets/css/abp-bundle.rtl.css +165 -0
  5. package/esm2020/account/account/account-layout.component.mjs +5 -5
  6. package/esm2020/account/account/account-layout.module.mjs +11 -13
  7. package/esm2020/account/account/components/auth-wrapper/auth-wrapper.component.mjs +7 -7
  8. package/esm2020/account/account/components/tenant-box/tenant-box.component.mjs +7 -7
  9. package/esm2020/layouts/side-menu/layout/index.mjs +2 -1
  10. package/esm2020/layouts/side-menu/layout/providers/index.mjs +2 -0
  11. package/esm2020/layouts/side-menu/layout/providers/translate.provider.mjs +17 -0
  12. package/esm2020/layouts/side-menu/layout/side-menu-application-layout.component.mjs +12 -12
  13. package/esm2020/layouts/side-menu/layout/side-menu-layout.module.mjs +9 -7
  14. package/esm2020/lib/components/abp-validation-error/abp-validation-error.component.mjs +4 -4
  15. package/esm2020/lib/components/abp-validation-error/abp-validation-error.module.mjs +5 -5
  16. package/esm2020/lib/components/http-error/http-error.component.mjs +3 -3
  17. package/esm2020/lib/components/http-error/http-error.module.mjs +5 -5
  18. package/esm2020/lib/components/page-alert-container/page-alert-container.component.mjs +3 -3
  19. package/esm2020/lib/components/page-alert-container/page-alert-container.module.mjs +5 -5
  20. package/esm2020/lib/enums/index.mjs +2 -1
  21. package/esm2020/lib/enums/user-menu-items.mjs +8 -0
  22. package/esm2020/lib/index.mjs +2 -1
  23. package/esm2020/lib/lepton-x.module.mjs +11 -8
  24. package/esm2020/lib/providers/translate.provider.mjs +17 -2
  25. package/esm2020/lib/providers/user-menu-service.provider.mjs +64 -0
  26. package/esm2020/lib/services/abp-auth.service.mjs +3 -3
  27. package/esm2020/lib/services/abp-settings.service.mjs +30 -47
  28. package/esm2020/lib/services/abp-toolbar.service.mjs +3 -3
  29. package/esm2020/lib/services/abp-translate.service.mjs +34 -12
  30. package/esm2020/lib/services/page-render-strategy.service.mjs +3 -3
  31. package/esm2020/lib/tokens/index.mjs +2 -0
  32. package/esm2020/lib/tokens/translate-key-map.mjs +3 -0
  33. package/fesm2015/volosoft-abp.ng.theme.lepton-x-account.mjs +25 -27
  34. package/fesm2015/volosoft-abp.ng.theme.lepton-x-account.mjs.map +1 -1
  35. package/fesm2015/volosoft-abp.ng.theme.lepton-x-layouts.mjs +36 -20
  36. package/fesm2015/volosoft-abp.ng.theme.lepton-x-layouts.mjs.map +1 -1
  37. package/fesm2015/volosoft-abp.ng.theme.lepton-x.mjs +185 -99
  38. package/fesm2015/volosoft-abp.ng.theme.lepton-x.mjs.map +1 -1
  39. package/fesm2020/volosoft-abp.ng.theme.lepton-x-account.mjs +25 -27
  40. package/fesm2020/volosoft-abp.ng.theme.lepton-x-account.mjs.map +1 -1
  41. package/fesm2020/volosoft-abp.ng.theme.lepton-x-layouts.mjs +36 -20
  42. package/fesm2020/volosoft-abp.ng.theme.lepton-x-layouts.mjs.map +1 -1
  43. package/fesm2020/volosoft-abp.ng.theme.lepton-x.mjs +182 -99
  44. package/fesm2020/volosoft-abp.ng.theme.lepton-x.mjs.map +1 -1
  45. package/layouts/side-menu/layout/index.d.ts +1 -0
  46. package/layouts/side-menu/layout/providers/index.d.ts +1 -0
  47. package/layouts/side-menu/layout/providers/translate.provider.d.ts +2 -0
  48. package/layouts/side-menu/layout/side-menu-application-layout.component.d.ts +1 -1
  49. package/lib/components/abp-validation-error/abp-validation-error.component.d.ts +1 -1
  50. package/lib/components/http-error/http-error.component.d.ts +1 -1
  51. package/lib/components/page-alert-container/page-alert-container.component.d.ts +1 -1
  52. package/lib/enums/index.d.ts +1 -0
  53. package/lib/enums/user-menu-items.d.ts +6 -0
  54. package/lib/index.d.ts +1 -0
  55. package/lib/providers/translate.provider.d.ts +4 -0
  56. package/lib/providers/user-menu-service.provider.d.ts +9 -0
  57. package/lib/services/abp-settings.service.d.ts +4 -2
  58. package/lib/services/abp-translate.service.d.ts +3 -1
  59. package/lib/tokens/index.d.ts +1 -0
  60. package/lib/tokens/translate-key-map.d.ts +4 -0
  61. package/package.json +11 -30
  62. package/account/package.json +0 -10
  63. package/account/volosoft-abp.ng.theme.lepton-x-account.d.ts +0 -5
  64. package/esm2020/styles/index.mjs +0 -2
  65. package/esm2020/styles/lib/handler/index.mjs +0 -2
  66. package/esm2020/styles/lib/handler/style-load.handler.mjs +0 -17
  67. package/esm2020/styles/lib/index.mjs +0 -2
  68. package/esm2020/styles/volosoft-abp.ng.theme.lepton-x-styles.mjs +0 -5
  69. package/fesm2015/volosoft-abp.ng.theme.lepton-x-styles.mjs +0 -23
  70. package/fesm2015/volosoft-abp.ng.theme.lepton-x-styles.mjs.map +0 -1
  71. package/fesm2020/volosoft-abp.ng.theme.lepton-x-styles.mjs +0 -23
  72. package/fesm2020/volosoft-abp.ng.theme.lepton-x-styles.mjs.map +0 -1
  73. package/layouts/package.json +0 -10
  74. package/layouts/volosoft-abp.ng.theme.lepton-x-layouts.d.ts +0 -5
  75. package/styles/index.d.ts +0 -1
  76. package/styles/lib/handler/index.d.ts +0 -1
  77. package/styles/lib/handler/style-load.handler.d.ts +0 -3
  78. package/styles/lib/index.d.ts +0 -1
  79. package/styles/package.json +0 -10
  80. package/styles/volosoft-abp.ng.theme.lepton-x-styles.d.ts +0 -5
  81. package/volosoft-abp.ng.theme.lepton-x.d.ts +0 -5
@@ -1,24 +1,23 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, ChangeDetectionStrategy, ViewEncapsulation, NgModule, Injectable, Inject, Optional, APP_INITIALIZER } from '@angular/core';
2
+ import { Component, ChangeDetectionStrategy, ViewEncapsulation, NgModule, Injectable, Inject, Optional, InjectionToken, APP_INITIALIZER, Injector } from '@angular/core';
3
3
  import { ValidationErrorComponent, VALIDATION_ERROR_TEMPLATE, VALIDATION_INVALID_CLASSES, VALIDATION_TARGET_SELECTOR, NgxValidateCoreModule } from '@ngx-validate/core';
4
4
  import * as i2 from '@angular/common';
5
5
  import { CommonModule } from '@angular/common';
6
6
  import * as i1 from '@abp/ng.core';
7
- import { CoreModule, NAVIGATE_TO_MANAGE_PROFILE } from '@abp/ng.core';
7
+ import { CoreModule, getLocaleDirection, NAVIGATE_TO_MANAGE_PROFILE, AuthService } from '@abp/ng.core';
8
8
  import * as i1$1 from '@angular/router';
9
9
  import * as i1$2 from '@abp/ng.theme.shared';
10
- import { ThemeSharedModule } from '@abp/ng.theme.shared';
10
+ import { ThemeSharedModule, UserMenuService } from '@abp/ng.theme.shared';
11
11
  import { filter, switchMap, map } from 'rxjs/operators';
12
- import * as i3 from 'rxjs';
13
- import { zip, of } from 'rxjs';
12
+ import * as i4 from 'rxjs';
13
+ import { of } from 'rxjs';
14
14
  import * as i2$1 from '@volo/ngx-lepton-x.core';
15
- import { LPX_TRANSLATE_SERVICE_TOKEN } from '@volo/ngx-lepton-x.core';
15
+ import { flatArrayDeepToObject, LPX_TRANSLATE_SERVICE_TOKEN, LanguageTranslateKeys } from '@volo/ngx-lepton-x.core';
16
16
  import { PROFILE_PICTURE, NAVIGATE_TO_MY_SECURITY_LOGS, OPEN_MY_LINK_USERS_MODAL, PROFILE_PICTURE_PROVIDERS } from '@volo/abp.commercial.ng.ui/config';
17
17
  import * as i1$3 from '@volosoft/ngx-lepton-x/layouts';
18
18
  import { PageParts, PAGE_RENDER_STRATEGY } from '@abp/ng.components/page';
19
- import { LpxModule } from '@volosoft/ngx-lepton-x';
20
- import { themeLeptonXStyleLoader } from '@volosoft/abp.ng.theme.lepton-x/styles';
21
- import { AbpNavbarService } from '@volo/abp.ng.lepton-x.core';
19
+ import { ThemeTranslateKeys, LpxModule } from '@volosoft/ngx-lepton-x';
20
+ import { AbpNavbarService, LeptonXAbpCoreModule } from '@volo/abp.ng.lepton-x.core';
22
21
 
23
22
  class AbpValidationErrorComponent extends ValidationErrorComponent {
24
23
  get abpErrors() {
@@ -41,15 +40,15 @@ class AbpValidationErrorComponent extends ValidationErrorComponent {
41
40
  });
42
41
  }
43
42
  }
44
- AbpValidationErrorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: AbpValidationErrorComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
45
- AbpValidationErrorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.2", type: AbpValidationErrorComponent, selector: "abp-validation-error", usesInheritance: true, ngImport: i0, template: `
43
+ AbpValidationErrorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AbpValidationErrorComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
44
+ AbpValidationErrorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: AbpValidationErrorComponent, selector: "abp-validation-error", usesInheritance: true, ngImport: i0, template: `
46
45
  <span class="text-danger" data-valmsg-for="Role.Name" data-valmsg-replace="true"
47
46
  ><span *ngFor="let error of abpErrors; trackBy: trackByFn">
48
47
  {{ error.message | abpLocalization: error.interpoliteParams }}</span
49
48
  ></span
50
49
  >
51
- `, isInline: true, directives: [{ type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "abpLocalization": i1.LocalizationPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
52
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: AbpValidationErrorComponent, decorators: [{
50
+ `, isInline: true, dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AbpValidationErrorComponent, decorators: [{
53
52
  type: Component,
54
53
  args: [{
55
54
  selector: 'abp-validation-error',
@@ -87,10 +86,10 @@ class AbpValidationErrorModule {
87
86
  };
88
87
  }
89
88
  }
90
- AbpValidationErrorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: AbpValidationErrorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
91
- AbpValidationErrorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: AbpValidationErrorModule, declarations: [AbpValidationErrorComponent], imports: [CommonModule, CoreModule, NgxValidateCoreModule], exports: [AbpValidationErrorComponent, NgxValidateCoreModule] });
92
- AbpValidationErrorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: AbpValidationErrorModule, imports: [[CommonModule, CoreModule, NgxValidateCoreModule], NgxValidateCoreModule] });
93
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: AbpValidationErrorModule, decorators: [{
89
+ AbpValidationErrorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AbpValidationErrorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
90
+ AbpValidationErrorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.0", ngImport: i0, type: AbpValidationErrorModule, declarations: [AbpValidationErrorComponent], imports: [CommonModule, CoreModule, NgxValidateCoreModule], exports: [AbpValidationErrorComponent, NgxValidateCoreModule] });
91
+ AbpValidationErrorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AbpValidationErrorModule, imports: [CommonModule, CoreModule, NgxValidateCoreModule, NgxValidateCoreModule] });
92
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AbpValidationErrorModule, decorators: [{
94
93
  type: NgModule,
95
94
  args: [{
96
95
  declarations: [AbpValidationErrorComponent],
@@ -132,9 +131,9 @@ class HttpErrorComponent {
132
131
  }
133
132
  }
134
133
  }
135
- HttpErrorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: HttpErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
136
- HttpErrorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.2", type: HttpErrorComponent, selector: "abp-http-error", ngImport: i0, template: "<div class=\"error-page-container\">\r\n <div class=\"row\">\r\n <div class=\"col col-auto\">\r\n <div class=\"status-icon\">\r\n <i class=\"fa fa-frown-o text-danger\" aria-hidden=\"true\"></i>\r\n <span></span>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"status-content\">\r\n <h1>{{ errorStatus }}</h1>\r\n <h2 class=\"text-danger mb-0\">\r\n {{ errorStatusText | abpLocalization\r\n }}<small class=\"text-muted\">{{\r\n errorDetail | abpLocalization\r\n }}</small>\r\n </h2>\r\n <p class=\"mt-3 mb-4\"></p>\r\n <a (click)=\"destroy$.next()\" routerLink=\"/\" class=\"btn btn-primary\">{{\r\n 'AbpUi::GoHomePage' | abpLocalization\r\n }}</a>\r\n <a\r\n href=\"javascript:void(0)\"\r\n class=\"mt-4 mb-1 d-block\"\r\n (click)=\"destroy$.next()\"\r\n ><i class=\"fa fa-long-arrow-left me-1\"></i\r\n >{{ 'AbpUi::GoBack' | abpLocalization }}</a\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", directives: [{ type: i1$1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }], pipes: { "abpLocalization": i1.LocalizationPipe } });
137
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: HttpErrorComponent, decorators: [{
134
+ HttpErrorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: HttpErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
135
+ HttpErrorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: HttpErrorComponent, selector: "abp-http-error", ngImport: i0, template: "<div class=\"error-page-container\">\r\n <div class=\"row\">\r\n <div class=\"col col-auto\">\r\n <div class=\"status-icon\">\r\n <i class=\"fa fa-frown-o text-danger\" aria-hidden=\"true\"></i>\r\n <span></span>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"status-content\">\r\n <h1>{{ errorStatus }}</h1>\r\n <h2 class=\"text-danger mb-0\">\r\n {{ errorStatusText | abpLocalization\r\n }}<small class=\"text-muted\">{{\r\n errorDetail | abpLocalization\r\n }}</small>\r\n </h2>\r\n <p class=\"mt-3 mb-4\"></p>\r\n <a (click)=\"destroy$.next()\" routerLink=\"/\" class=\"btn btn-primary\">{{\r\n 'AbpUi::GoHomePage' | abpLocalization\r\n }}</a>\r\n <a\r\n href=\"javascript:void(0)\"\r\n class=\"mt-4 mb-1 d-block\"\r\n (click)=\"destroy$.next()\"\r\n ><i class=\"fa fa-long-arrow-left me-1\"></i\r\n >{{ 'AbpUi::GoBack' | abpLocalization }}</a\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i1$1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }] });
136
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: HttpErrorComponent, decorators: [{
138
137
  type: Component,
139
138
  args: [{ selector: 'abp-http-error', template: "<div class=\"error-page-container\">\r\n <div class=\"row\">\r\n <div class=\"col col-auto\">\r\n <div class=\"status-icon\">\r\n <i class=\"fa fa-frown-o text-danger\" aria-hidden=\"true\"></i>\r\n <span></span>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"status-content\">\r\n <h1>{{ errorStatus }}</h1>\r\n <h2 class=\"text-danger mb-0\">\r\n {{ errorStatusText | abpLocalization\r\n }}<small class=\"text-muted\">{{\r\n errorDetail | abpLocalization\r\n }}</small>\r\n </h2>\r\n <p class=\"mt-3 mb-4\"></p>\r\n <a (click)=\"destroy$.next()\" routerLink=\"/\" class=\"btn btn-primary\">{{\r\n 'AbpUi::GoHomePage' | abpLocalization\r\n }}</a>\r\n <a\r\n href=\"javascript:void(0)\"\r\n class=\"mt-4 mb-1 d-block\"\r\n (click)=\"destroy$.next()\"\r\n ><i class=\"fa fa-long-arrow-left me-1\"></i\r\n >{{ 'AbpUi::GoBack' | abpLocalization }}</a\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n" }]
140
139
  }] });
@@ -147,10 +146,10 @@ class HttpErrorModule {
147
146
  };
148
147
  }
149
148
  }
150
- HttpErrorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: HttpErrorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
151
- HttpErrorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: HttpErrorModule, declarations: [HttpErrorComponent], imports: [CoreModule, CommonModule], exports: [HttpErrorComponent] });
152
- HttpErrorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: HttpErrorModule, imports: [[CoreModule, CommonModule]] });
153
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: HttpErrorModule, decorators: [{
149
+ HttpErrorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: HttpErrorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
150
+ HttpErrorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.0", ngImport: i0, type: HttpErrorModule, declarations: [HttpErrorComponent], imports: [CoreModule, CommonModule], exports: [HttpErrorComponent] });
151
+ HttpErrorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: HttpErrorModule, imports: [CoreModule, CommonModule] });
152
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: HttpErrorModule, decorators: [{
154
153
  type: NgModule,
155
154
  args: [{
156
155
  declarations: [HttpErrorComponent],
@@ -164,19 +163,19 @@ class PageAlertContainerComponent {
164
163
  this.service = service;
165
164
  }
166
165
  }
167
- PageAlertContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: PageAlertContainerComponent, deps: [{ token: i1$2.PageAlertService }], target: i0.ɵɵFactoryTarget.Component });
168
- PageAlertContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.2", type: PageAlertContainerComponent, selector: "abp-page-alert-container", ngImport: i0, template: "<ng-container *ngFor=\"let alert of service.alerts$ | async; let i = index\">\r\n <div\r\n class=\"alert alert-{{ alert.type }} fade show\"\r\n [ngClass]=\"{ 'alert-dismissible fade show': alert.dismissible }\"\r\n role=\"alert\"\r\n >\r\n <h4 class=\"alert-heading\" *ngIf=\"alert.title\">\r\n {{ alert.title | abpLocalization: alert.titleLocalizationParams }}\r\n </h4>\r\n {{ alert.message | abpLocalization: alert.messageLocalizationParams }}\r\n <button\r\n *ngIf=\"alert.dismissible\"\r\n type=\"button\"\r\n class=\"close\"\r\n data-dismiss=\"alert\"\r\n aria-label=\"Close\"\r\n (click)=\"service.remove(i)\"\r\n >\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n </div>\r\n</ng-container>\r\n", directives: [{ type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i2.AsyncPipe, "abpLocalization": i1.LocalizationPipe } });
169
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: PageAlertContainerComponent, decorators: [{
166
+ PageAlertContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: PageAlertContainerComponent, deps: [{ token: i1$2.PageAlertService }], target: i0.ɵɵFactoryTarget.Component });
167
+ PageAlertContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: PageAlertContainerComponent, selector: "abp-page-alert-container", ngImport: i0, template: "<ng-container *ngFor=\"let alert of service.alerts$ | async; let i = index\">\r\n <div\r\n class=\"alert alert-{{ alert.type }} fade show\"\r\n [ngClass]=\"{ 'alert-dismissible fade show': alert.dismissible }\"\r\n role=\"alert\"\r\n >\r\n <h4 class=\"alert-heading\" *ngIf=\"alert.title\">\r\n {{ alert.title | abpLocalization: alert.titleLocalizationParams }}\r\n </h4>\r\n {{ alert.message | abpLocalization: alert.messageLocalizationParams }}\r\n <button\r\n *ngIf=\"alert.dismissible\"\r\n type=\"button\"\r\n class=\"close\"\r\n data-dismiss=\"alert\"\r\n aria-label=\"Close\"\r\n (click)=\"service.remove(i)\"\r\n >\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n </div>\r\n</ng-container>\r\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }] });
168
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: PageAlertContainerComponent, decorators: [{
170
169
  type: Component,
171
170
  args: [{ selector: 'abp-page-alert-container', template: "<ng-container *ngFor=\"let alert of service.alerts$ | async; let i = index\">\r\n <div\r\n class=\"alert alert-{{ alert.type }} fade show\"\r\n [ngClass]=\"{ 'alert-dismissible fade show': alert.dismissible }\"\r\n role=\"alert\"\r\n >\r\n <h4 class=\"alert-heading\" *ngIf=\"alert.title\">\r\n {{ alert.title | abpLocalization: alert.titleLocalizationParams }}\r\n </h4>\r\n {{ alert.message | abpLocalization: alert.messageLocalizationParams }}\r\n <button\r\n *ngIf=\"alert.dismissible\"\r\n type=\"button\"\r\n class=\"close\"\r\n data-dismiss=\"alert\"\r\n aria-label=\"Close\"\r\n (click)=\"service.remove(i)\"\r\n >\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n </div>\r\n</ng-container>\r\n" }]
172
171
  }], ctorParameters: function () { return [{ type: i1$2.PageAlertService }]; } });
173
172
 
174
173
  class PageAlertContainerModule {
175
174
  }
176
- PageAlertContainerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: PageAlertContainerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
177
- PageAlertContainerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: PageAlertContainerModule, declarations: [PageAlertContainerComponent], imports: [ThemeSharedModule, CoreModule], exports: [PageAlertContainerComponent] });
178
- PageAlertContainerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: PageAlertContainerModule, imports: [[ThemeSharedModule, CoreModule]] });
179
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: PageAlertContainerModule, decorators: [{
175
+ PageAlertContainerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: PageAlertContainerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
176
+ PageAlertContainerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.0", ngImport: i0, type: PageAlertContainerModule, declarations: [PageAlertContainerComponent], imports: [ThemeSharedModule, CoreModule], exports: [PageAlertContainerComponent] });
177
+ PageAlertContainerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: PageAlertContainerModule, imports: [ThemeSharedModule, CoreModule] });
178
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: PageAlertContainerModule, decorators: [{
180
179
  type: NgModule,
181
180
  args: [{
182
181
  declarations: [PageAlertContainerComponent],
@@ -185,8 +184,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImpor
185
184
  }]
186
185
  }] });
187
186
 
187
+ var eUserMenuItems;
188
+ (function (eUserMenuItems) {
189
+ eUserMenuItems["LinkedAccounts"] = "LinkedAccounts";
190
+ eUserMenuItems["MyAccount"] = "MyAccount";
191
+ eUserMenuItems["Logout"] = "Logout";
192
+ eUserMenuItems["SecurityLogs"] = "SecurityLogs";
193
+ })(eUserMenuItems || (eUserMenuItems = {}));
194
+
188
195
  class AbpSettingsService {
189
- constructor(sessionService, configStateService, languageService, authService, userProfileService, profilePicture$, navigateToManageProfile, navigateToMySecurityLogs, openMyLinkUsersModal, localizationService) {
196
+ constructor(sessionService, configStateService, languageService, authService, userProfileService, profilePicture$, navigateToManageProfile, navigateToMySecurityLogs, openMyLinkUsersModal, localizationService, userMenuService) {
190
197
  this.sessionService = sessionService;
191
198
  this.configStateService = configStateService;
192
199
  this.languageService = languageService;
@@ -197,6 +204,7 @@ class AbpSettingsService {
197
204
  this.navigateToMySecurityLogs = navigateToMySecurityLogs;
198
205
  this.openMyLinkUsersModal = openMyLinkUsersModal;
199
206
  this.localizationService = localizationService;
207
+ this.userMenuService = userMenuService;
200
208
  }
201
209
  setUpListeners() {
202
210
  this.listenToLangChange();
@@ -219,44 +227,23 @@ class AbpSettingsService {
219
227
  }));
220
228
  }
221
229
  setUserMenuGroups() {
222
- zip(this.localizationService.get('AbpAccount::LinkedAccounts'), this.localizationService.get('AbpAccount::MyAccount'), this.localizationService.get('AbpAccount::MySecurityLogs'), this.localizationService.get('AbpUi::Logout')).subscribe(([linkedAccountsText, myAccountText, mySecurityLogsText, logoutText]) => {
230
+ this.userMenuService.items$.subscribe((userMenu) => {
231
+ const userActionGroups = userMenu.reduce((acc, curr, index) => {
232
+ const menuItem = {
233
+ icon: curr.textTemplate?.icon,
234
+ text: curr.textTemplate?.text,
235
+ component: curr?.component,
236
+ action: () => {
237
+ curr.action();
238
+ return of(true);
239
+ },
240
+ };
241
+ const setIndex = index === userMenu.length - 1 ? 1 : 0;
242
+ acc[setIndex].push(menuItem);
243
+ return acc;
244
+ }, [[], []]);
223
245
  this.userProfileService.patchUser({
224
- userActionGroups: [
225
- [
226
- ...(this.openMyLinkUsersModal
227
- ? [
228
- {
229
- icon: 'bi bi-link',
230
- text: linkedAccountsText,
231
- action: () => this.openMyLinkUsersModal(),
232
- },
233
- ]
234
- : []),
235
- {
236
- icon: 'bi bi-sliders',
237
- text: myAccountText,
238
- action: () => {
239
- this.navigateToManageProfile();
240
- return of(true);
241
- },
242
- },
243
- {
244
- icon: 'bi bi-list-ul',
245
- text: mySecurityLogsText,
246
- action: () => {
247
- this.navigateToMySecurityLogs();
248
- return of(true);
249
- },
250
- },
251
- ],
252
- [
253
- {
254
- icon: 'bi bi-box-arrow-right',
255
- text: logoutText,
256
- action: () => this.authService.logout(),
257
- },
258
- ],
259
- ],
246
+ userActionGroups,
260
247
  });
261
248
  });
262
249
  }
@@ -277,6 +264,7 @@ class AbpSettingsService {
277
264
  cultureName,
278
265
  displayName,
279
266
  selected: cultureName === currentLang,
267
+ isRTL: getLocaleDirection(cultureName) === 'rtl',
280
268
  }))))))
281
269
  .subscribe((settings) => {
282
270
  this.languageService.setLanguages(settings);
@@ -290,12 +278,12 @@ class AbpSettingsService {
290
278
  });
291
279
  }
292
280
  }
293
- AbpSettingsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: AbpSettingsService, deps: [{ token: i1.SessionStateService }, { token: i1.ConfigStateService }, { token: i2$1.LanguageService }, { token: i1.AuthService }, { token: i2$1.UserProfileService }, { token: PROFILE_PICTURE }, { token: NAVIGATE_TO_MANAGE_PROFILE }, { token: NAVIGATE_TO_MY_SECURITY_LOGS }, { token: OPEN_MY_LINK_USERS_MODAL, optional: true }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Injectable });
294
- AbpSettingsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: AbpSettingsService, providedIn: 'root' });
295
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: AbpSettingsService, decorators: [{
281
+ AbpSettingsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AbpSettingsService, deps: [{ token: i1.SessionStateService }, { token: i1.ConfigStateService }, { token: i2$1.LanguageService }, { token: i1.AuthService }, { token: i2$1.UserProfileService }, { token: PROFILE_PICTURE }, { token: NAVIGATE_TO_MANAGE_PROFILE }, { token: NAVIGATE_TO_MY_SECURITY_LOGS }, { token: OPEN_MY_LINK_USERS_MODAL, optional: true }, { token: i1.LocalizationService }, { token: i1$2.UserMenuService }], target: i0.ɵɵFactoryTarget.Injectable });
282
+ AbpSettingsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AbpSettingsService, providedIn: 'root' });
283
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AbpSettingsService, decorators: [{
296
284
  type: Injectable,
297
285
  args: [{ providedIn: 'root' }]
298
- }], ctorParameters: function () { return [{ type: i1.SessionStateService }, { type: i1.ConfigStateService }, { type: i2$1.LanguageService }, { type: i1.AuthService }, { type: i2$1.UserProfileService }, { type: i3.BehaviorSubject, decorators: [{
286
+ }], ctorParameters: function () { return [{ type: i1.SessionStateService }, { type: i1.ConfigStateService }, { type: i2$1.LanguageService }, { type: i1.AuthService }, { type: i2$1.UserProfileService }, { type: i4.BehaviorSubject, decorators: [{
299
287
  type: Inject,
300
288
  args: [PROFILE_PICTURE]
301
289
  }] }, { type: undefined, decorators: [{
@@ -309,7 +297,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImpor
309
297
  }, {
310
298
  type: Inject,
311
299
  args: [OPEN_MY_LINK_USERS_MODAL]
312
- }] }, { type: i1.LocalizationService }]; } });
300
+ }] }, { type: i1.LocalizationService }, { type: i1$2.UserMenuService }]; } });
313
301
 
314
302
  class AbpToolbarService {
315
303
  constructor(toolbar, navItems, permissionService) {
@@ -325,43 +313,64 @@ class AbpToolbarService {
325
313
  });
326
314
  }
327
315
  }
328
- AbpToolbarService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: AbpToolbarService, deps: [{ token: i1$3.ToolbarService }, { token: i1$2.NavItemsService }, { token: i1.PermissionService }], target: i0.ɵɵFactoryTarget.Injectable });
329
- AbpToolbarService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: AbpToolbarService, providedIn: 'root' });
330
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: AbpToolbarService, decorators: [{
316
+ AbpToolbarService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AbpToolbarService, deps: [{ token: i1$3.ToolbarService }, { token: i1$2.NavItemsService }, { token: i1.PermissionService }], target: i0.ɵɵFactoryTarget.Injectable });
317
+ AbpToolbarService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AbpToolbarService, providedIn: 'root' });
318
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AbpToolbarService, decorators: [{
331
319
  type: Injectable,
332
320
  args: [{
333
321
  providedIn: 'root',
334
322
  }]
335
323
  }], ctorParameters: function () { return [{ type: i1$3.ToolbarService }, { type: i1$2.NavItemsService }, { type: i1.PermissionService }]; } });
336
324
 
325
+ const LPX_TRANSLATE_KEY_MAP_TOKEN = new InjectionToken('LPX_TRANSLATE_KEY_MAP_TOKEN');
326
+
337
327
  class AbpTranslateService {
338
- constructor(localization) {
328
+ constructor(localization, translateKeys) {
339
329
  this.localization = localization;
330
+ this.translateKeys = translateKeys;
340
331
  }
341
332
  get(key, defaultValue) {
342
- return this.localization.instant({
343
- key: `ThemeLeptonX::${key}`,
344
- defaultValue,
345
- });
333
+ const keyToTranslate = this.getKey(key);
334
+ if (keyToTranslate) {
335
+ return this.localization.instant({
336
+ key: keyToTranslate,
337
+ defaultValue,
338
+ });
339
+ }
340
+ return defaultValue || key;
346
341
  }
347
342
  get$(key, defaultValue) {
348
- return this.localization.get({ key: `ThemeLeptonX::${key}`, defaultValue });
343
+ const keyToTranslate = this.getKey(key);
344
+ if (keyToTranslate) {
345
+ return this.localization.get({
346
+ key: keyToTranslate,
347
+ defaultValue,
348
+ });
349
+ }
350
+ return of(defaultValue || key);
351
+ }
352
+ getKey(key) {
353
+ const keys = flatArrayDeepToObject(this.translateKeys);
354
+ return keys[key] ? keys[key] : key.includes('::') ? key : undefined;
349
355
  }
350
356
  }
351
- AbpTranslateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: AbpTranslateService, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Injectable });
352
- AbpTranslateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: AbpTranslateService });
353
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: AbpTranslateService, decorators: [{
357
+ AbpTranslateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AbpTranslateService, deps: [{ token: i1.LocalizationService }, { token: LPX_TRANSLATE_KEY_MAP_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable });
358
+ AbpTranslateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AbpTranslateService });
359
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AbpTranslateService, decorators: [{
354
360
  type: Injectable
355
- }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });
361
+ }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: Array, decorators: [{
362
+ type: Inject,
363
+ args: [LPX_TRANSLATE_KEY_MAP_TOKEN]
364
+ }] }]; } });
356
365
 
357
366
  class LeptonXPageRenderService {
358
367
  shouldRender(type) {
359
368
  return type !== PageParts.breadcrumb;
360
369
  }
361
370
  }
362
- LeptonXPageRenderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: LeptonXPageRenderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
363
- LeptonXPageRenderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: LeptonXPageRenderService });
364
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: LeptonXPageRenderService, decorators: [{
371
+ LeptonXPageRenderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: LeptonXPageRenderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
372
+ LeptonXPageRenderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: LeptonXPageRenderService });
373
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: LeptonXPageRenderService, decorators: [{
365
374
  type: Injectable
366
375
  }] });
367
376
 
@@ -375,9 +384,9 @@ class AbpAuthService {
375
384
  this.authService.navigateToLogin();
376
385
  }
377
386
  }
378
- AbpAuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: AbpAuthService, deps: [{ token: i2$1.UserProfileService }, { token: i1.AuthService }], target: i0.ɵɵFactoryTarget.Injectable });
379
- AbpAuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: AbpAuthService });
380
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: AbpAuthService, decorators: [{
387
+ AbpAuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AbpAuthService, deps: [{ token: i2$1.UserProfileService }, { token: i1.AuthService }], target: i0.ɵɵFactoryTarget.Injectable });
388
+ AbpAuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AbpAuthService });
389
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AbpAuthService, decorators: [{
381
390
  type: Injectable
382
391
  }], ctorParameters: function () { return [{ type: i2$1.UserProfileService }, { type: i1.AuthService }]; } });
383
392
 
@@ -421,8 +430,80 @@ const PAGE_RENDER_PROVIDER = {
421
430
  const LPX_TRANSLATE_PROVIDER = {
422
431
  provide: LPX_TRANSLATE_SERVICE_TOKEN,
423
432
  useClass: AbpTranslateService,
433
+ };
434
+ const translateKeys = {
435
+ [LanguageTranslateKeys.SettingsTitle]: 'LeptonX::Language',
436
+ [ThemeTranslateKeys.AppearanceTitle]: 'LeptonX::Appearance',
437
+ [ThemeTranslateKeys.DarkMode]: 'LeptonX::Theme:dark',
438
+ [ThemeTranslateKeys.LightMode]: 'LeptonX::Theme:light',
439
+ [ThemeTranslateKeys.SemiDarkMode]: 'LeptonX::Theme:dim',
440
+ [ThemeTranslateKeys.System]: 'LeptonX::Theme:system',
441
+ };
442
+ const LPX_TRANSLATE_KEYS_PROVIDER = {
443
+ provide: LPX_TRANSLATE_KEY_MAP_TOKEN,
444
+ multi: true,
445
+ useValue: translateKeys,
424
446
  };
425
447
 
448
+ const LEPTON_X_USER_MENU_PROVIDERS = [
449
+ {
450
+ provide: APP_INITIALIZER,
451
+ useFactory: configureUserMenu,
452
+ deps: [Injector],
453
+ multi: true,
454
+ },
455
+ ];
456
+ function configureUserMenu(injector, router) {
457
+ const userMenu = injector.get(UserMenuService);
458
+ const authService = injector.get(AuthService);
459
+ const navigateToManageProfile = injector.get(NAVIGATE_TO_MANAGE_PROFILE);
460
+ const navigateToMySecurityLogs = injector.get(NAVIGATE_TO_MY_SECURITY_LOGS);
461
+ const openMyLinkUsersModal = injector.get(OPEN_MY_LINK_USERS_MODAL, null);
462
+ return () => {
463
+ userMenu.addItems([
464
+ {
465
+ id: eUserMenuItems.LinkedAccounts,
466
+ order: 100,
467
+ textTemplate: {
468
+ icon: 'bi bi-link',
469
+ text: 'AbpAccount::LinkedAccounts',
470
+ },
471
+ action: () => openMyLinkUsersModal(),
472
+ visible: () => !!openMyLinkUsersModal,
473
+ },
474
+ {
475
+ id: eUserMenuItems.MyAccount,
476
+ order: 100,
477
+ textTemplate: {
478
+ icon: 'bi bi-sliders',
479
+ text: 'AbpAccount::MyAccount',
480
+ },
481
+ action: () => navigateToManageProfile(),
482
+ },
483
+ {
484
+ id: eUserMenuItems.SecurityLogs,
485
+ order: 100,
486
+ textTemplate: {
487
+ icon: 'bi bi-list-ul',
488
+ text: 'AbpAccount::MySecurityLogs',
489
+ },
490
+ action: () => navigateToMySecurityLogs(),
491
+ },
492
+ {
493
+ id: eUserMenuItems.Logout,
494
+ order: 101,
495
+ textTemplate: {
496
+ icon: 'bi bi-box-arrow-right',
497
+ text: 'AbpUi::Logout',
498
+ },
499
+ action: () => {
500
+ authService.logout().subscribe();
501
+ },
502
+ },
503
+ ]);
504
+ };
505
+ }
506
+
426
507
  class ThemeLeptonXModule {
427
508
  static forRoot(options) {
428
509
  return {
@@ -430,6 +511,7 @@ class ThemeLeptonXModule {
430
511
  providers: [
431
512
  LPX_STYLE_PROVIDER,
432
513
  PROFILE_PICTURE_PROVIDERS,
514
+ LEPTON_X_USER_MENU_PROVIDERS,
433
515
  INIT_SERVICE_PROVIDER,
434
516
  PAGE_RENDER_PROVIDER,
435
517
  AbpValidationErrorModule.forRoot().providers,
@@ -437,15 +519,17 @@ class ThemeLeptonXModule {
437
519
  LpxModule.forRoot({
438
520
  ...createLpxModuleOptions(options),
439
521
  }).providers,
522
+ LPX_TRANSLATE_KEYS_PROVIDER,
440
523
  LPX_TRANSLATE_PROVIDER,
524
+ LeptonXAbpCoreModule.forRoot().providers,
441
525
  ],
442
526
  };
443
527
  }
444
528
  }
445
- ThemeLeptonXModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: ThemeLeptonXModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
446
- ThemeLeptonXModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: ThemeLeptonXModule, imports: [HttpErrorModule], exports: [HttpErrorModule] });
447
- ThemeLeptonXModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: ThemeLeptonXModule, imports: [[HttpErrorModule], HttpErrorModule] });
448
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: ThemeLeptonXModule, decorators: [{
529
+ ThemeLeptonXModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ThemeLeptonXModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
530
+ ThemeLeptonXModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.0", ngImport: i0, type: ThemeLeptonXModule, imports: [HttpErrorModule], exports: [HttpErrorModule] });
531
+ ThemeLeptonXModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ThemeLeptonXModule, imports: [HttpErrorModule, HttpErrorModule] });
532
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ThemeLeptonXModule, decorators: [{
449
533
  type: NgModule,
450
534
  args: [{
451
535
  imports: [HttpErrorModule],
@@ -458,7 +542,6 @@ function createLpxModuleOptions(options) {
458
542
  styleFactory: (styles) => {
459
543
  styles.push({
460
544
  bundleName: 'abp-bundle',
461
- handler: themeLeptonXStyleLoader,
462
545
  });
463
546
  if (options?.styleFactory) {
464
547
  return options.styleFactory(styles);
@@ -472,5 +555,5 @@ function createLpxModuleOptions(options) {
472
555
  * Generated bundle index. Do not edit.
473
556
  */
474
557
 
475
- export { AbpAuthService, AbpSettingsService, AbpToolbarService, AbpTranslateService, AbpValidationErrorComponent, AbpValidationErrorModule, HttpErrorComponent, HttpErrorModule, LeptonXPageRenderService, PageAlertContainerComponent, PageAlertContainerModule, ThemeLeptonXModule };
558
+ export { AbpAuthService, AbpSettingsService, AbpToolbarService, AbpTranslateService, AbpValidationErrorComponent, AbpValidationErrorModule, HttpErrorComponent, HttpErrorModule, LPX_TRANSLATE_KEY_MAP_TOKEN, LeptonXPageRenderService, PageAlertContainerComponent, PageAlertContainerModule, ThemeLeptonXModule, eUserMenuItems };
476
559
  //# sourceMappingURL=volosoft-abp.ng.theme.lepton-x.mjs.map