@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 { PROFILE_PICTURE, NAVIGATE_TO_MY_SECURITY_LOGS, OPEN_MY_LINK_USERS_MODAL, PROFILE_PICTURE_PROVIDERS } from '@volo/abp.commercial.ng.ui/config';
15
15
  import * as i2$1 from '@volo/ngx-lepton-x.core';
16
- import { LPX_TRANSLATE_SERVICE_TOKEN } from '@volo/ngx-lepton-x.core';
16
+ import { flatArrayDeepToObject, LPX_TRANSLATE_SERVICE_TOKEN, LanguageTranslateKeys } from '@volo/ngx-lepton-x.core';
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() {
@@ -37,15 +36,15 @@ class AbpValidationErrorComponent extends ValidationErrorComponent {
37
36
  });
38
37
  }
39
38
  }
40
- AbpValidationErrorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: AbpValidationErrorComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
41
- AbpValidationErrorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.2", type: AbpValidationErrorComponent, selector: "abp-validation-error", usesInheritance: true, ngImport: i0, template: `
39
+ AbpValidationErrorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AbpValidationErrorComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
40
+ AbpValidationErrorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: AbpValidationErrorComponent, selector: "abp-validation-error", usesInheritance: true, ngImport: i0, template: `
42
41
  <span class="text-danger" data-valmsg-for="Role.Name" data-valmsg-replace="true"
43
42
  ><span *ngFor="let error of abpErrors; trackBy: trackByFn">
44
43
  {{ error.message | abpLocalization: error.interpoliteParams }}</span
45
44
  ></span
46
45
  >
47
- `, 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 });
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: AbpValidationErrorComponent, decorators: [{
46
+ `, 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 });
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AbpValidationErrorComponent, decorators: [{
49
48
  type: Component,
50
49
  args: [{
51
50
  selector: 'abp-validation-error',
@@ -83,10 +82,10 @@ class AbpValidationErrorModule {
83
82
  };
84
83
  }
85
84
  }
86
- AbpValidationErrorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: AbpValidationErrorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
87
- 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] });
88
- AbpValidationErrorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: AbpValidationErrorModule, imports: [[CommonModule, CoreModule, NgxValidateCoreModule], NgxValidateCoreModule] });
89
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: AbpValidationErrorModule, decorators: [{
85
+ AbpValidationErrorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AbpValidationErrorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
86
+ 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] });
87
+ AbpValidationErrorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AbpValidationErrorModule, imports: [CommonModule, CoreModule, NgxValidateCoreModule, NgxValidateCoreModule] });
88
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AbpValidationErrorModule, decorators: [{
90
89
  type: NgModule,
91
90
  args: [{
92
91
  declarations: [AbpValidationErrorComponent],
@@ -128,9 +127,9 @@ class HttpErrorComponent {
128
127
  }
129
128
  }
130
129
  }
131
- HttpErrorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: HttpErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
132
- 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 } });
133
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: HttpErrorComponent, decorators: [{
130
+ HttpErrorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: HttpErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
131
+ 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" }] });
132
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: HttpErrorComponent, decorators: [{
134
133
  type: Component,
135
134
  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" }]
136
135
  }] });
@@ -143,10 +142,10 @@ class HttpErrorModule {
143
142
  };
144
143
  }
145
144
  }
146
- HttpErrorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: HttpErrorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
147
- HttpErrorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: HttpErrorModule, declarations: [HttpErrorComponent], imports: [CoreModule, CommonModule], exports: [HttpErrorComponent] });
148
- HttpErrorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: HttpErrorModule, imports: [[CoreModule, CommonModule]] });
149
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: HttpErrorModule, decorators: [{
145
+ HttpErrorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: HttpErrorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
146
+ HttpErrorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.0", ngImport: i0, type: HttpErrorModule, declarations: [HttpErrorComponent], imports: [CoreModule, CommonModule], exports: [HttpErrorComponent] });
147
+ HttpErrorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: HttpErrorModule, imports: [CoreModule, CommonModule] });
148
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: HttpErrorModule, decorators: [{
150
149
  type: NgModule,
151
150
  args: [{
152
151
  declarations: [HttpErrorComponent],
@@ -160,19 +159,19 @@ class PageAlertContainerComponent {
160
159
  this.service = service;
161
160
  }
162
161
  }
163
- 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 });
164
- 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 } });
165
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: PageAlertContainerComponent, decorators: [{
162
+ 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 });
163
+ 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" }] });
164
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: PageAlertContainerComponent, decorators: [{
166
165
  type: Component,
167
166
  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" }]
168
167
  }], ctorParameters: function () { return [{ type: i1$2.PageAlertService }]; } });
169
168
 
170
169
  class PageAlertContainerModule {
171
170
  }
172
- PageAlertContainerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: PageAlertContainerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
173
- PageAlertContainerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: PageAlertContainerModule, declarations: [PageAlertContainerComponent], imports: [ThemeSharedModule, CoreModule], exports: [PageAlertContainerComponent] });
174
- PageAlertContainerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: PageAlertContainerModule, imports: [[ThemeSharedModule, CoreModule]] });
175
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: PageAlertContainerModule, decorators: [{
171
+ PageAlertContainerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: PageAlertContainerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
172
+ PageAlertContainerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.0", ngImport: i0, type: PageAlertContainerModule, declarations: [PageAlertContainerComponent], imports: [ThemeSharedModule, CoreModule], exports: [PageAlertContainerComponent] });
173
+ PageAlertContainerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: PageAlertContainerModule, imports: [ThemeSharedModule, CoreModule] });
174
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: PageAlertContainerModule, decorators: [{
176
175
  type: NgModule,
177
176
  args: [{
178
177
  declarations: [PageAlertContainerComponent],
@@ -181,8 +180,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImpor
181
180
  }]
182
181
  }] });
183
182
 
183
+ var eUserMenuItems;
184
+ (function (eUserMenuItems) {
185
+ eUserMenuItems["LinkedAccounts"] = "LinkedAccounts";
186
+ eUserMenuItems["MyAccount"] = "MyAccount";
187
+ eUserMenuItems["Logout"] = "Logout";
188
+ eUserMenuItems["SecurityLogs"] = "SecurityLogs";
189
+ })(eUserMenuItems || (eUserMenuItems = {}));
190
+
184
191
  class AbpSettingsService {
185
- constructor(sessionService, configStateService, languageService, authService, userProfileService, profilePicture$, navigateToManageProfile, navigateToMySecurityLogs, openMyLinkUsersModal, localizationService) {
192
+ constructor(sessionService, configStateService, languageService, authService, userProfileService, profilePicture$, navigateToManageProfile, navigateToMySecurityLogs, openMyLinkUsersModal, localizationService, userMenuService) {
186
193
  this.sessionService = sessionService;
187
194
  this.configStateService = configStateService;
188
195
  this.languageService = languageService;
@@ -193,6 +200,7 @@ class AbpSettingsService {
193
200
  this.navigateToMySecurityLogs = navigateToMySecurityLogs;
194
201
  this.openMyLinkUsersModal = openMyLinkUsersModal;
195
202
  this.localizationService = localizationService;
203
+ this.userMenuService = userMenuService;
196
204
  }
197
205
  setUpListeners() {
198
206
  this.listenToLangChange();
@@ -215,44 +223,24 @@ class AbpSettingsService {
215
223
  }));
216
224
  }
217
225
  setUserMenuGroups() {
218
- 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]) => {
226
+ this.userMenuService.items$.subscribe((userMenu) => {
227
+ const userActionGroups = userMenu.reduce((acc, curr, index) => {
228
+ var _a, _b;
229
+ const menuItem = {
230
+ icon: (_a = curr.textTemplate) === null || _a === void 0 ? void 0 : _a.icon,
231
+ text: (_b = curr.textTemplate) === null || _b === void 0 ? void 0 : _b.text,
232
+ component: curr === null || curr === void 0 ? void 0 : curr.component,
233
+ action: () => {
234
+ curr.action();
235
+ return of(true);
236
+ },
237
+ };
238
+ const setIndex = index === userMenu.length - 1 ? 1 : 0;
239
+ acc[setIndex].push(menuItem);
240
+ return acc;
241
+ }, [[], []]);
219
242
  this.userProfileService.patchUser({
220
- userActionGroups: [
221
- [
222
- ...(this.openMyLinkUsersModal
223
- ? [
224
- {
225
- icon: 'bi bi-link',
226
- text: linkedAccountsText,
227
- action: () => this.openMyLinkUsersModal(),
228
- },
229
- ]
230
- : []),
231
- {
232
- icon: 'bi bi-sliders',
233
- text: myAccountText,
234
- action: () => {
235
- this.navigateToManageProfile();
236
- return of(true);
237
- },
238
- },
239
- {
240
- icon: 'bi bi-list-ul',
241
- text: mySecurityLogsText,
242
- action: () => {
243
- this.navigateToMySecurityLogs();
244
- return of(true);
245
- },
246
- },
247
- ],
248
- [
249
- {
250
- icon: 'bi bi-box-arrow-right',
251
- text: logoutText,
252
- action: () => this.authService.logout(),
253
- },
254
- ],
255
- ],
243
+ userActionGroups,
256
244
  });
257
245
  });
258
246
  }
@@ -273,6 +261,7 @@ class AbpSettingsService {
273
261
  cultureName,
274
262
  displayName,
275
263
  selected: cultureName === currentLang,
264
+ isRTL: getLocaleDirection(cultureName) === 'rtl',
276
265
  }))))))
277
266
  .subscribe((settings) => {
278
267
  this.languageService.setLanguages(settings);
@@ -286,13 +275,13 @@ class AbpSettingsService {
286
275
  });
287
276
  }
288
277
  }
289
- 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 });
290
- AbpSettingsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: AbpSettingsService, providedIn: 'root' });
291
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: AbpSettingsService, decorators: [{
278
+ 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 });
279
+ AbpSettingsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AbpSettingsService, providedIn: 'root' });
280
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AbpSettingsService, decorators: [{
292
281
  type: Injectable,
293
282
  args: [{ providedIn: 'root' }]
294
283
  }], ctorParameters: function () {
295
- return [{ type: i1.SessionStateService }, { type: i1.ConfigStateService }, { type: i2$1.LanguageService }, { type: i1.AuthService }, { type: i2$1.UserProfileService }, { type: i3.BehaviorSubject, decorators: [{
284
+ return [{ type: i1.SessionStateService }, { type: i1.ConfigStateService }, { type: i2$1.LanguageService }, { type: i1.AuthService }, { type: i2$1.UserProfileService }, { type: i4.BehaviorSubject, decorators: [{
296
285
  type: Inject,
297
286
  args: [PROFILE_PICTURE]
298
287
  }] }, { type: undefined, decorators: [{
@@ -306,7 +295,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImpor
306
295
  }, {
307
296
  type: Inject,
308
297
  args: [OPEN_MY_LINK_USERS_MODAL]
309
- }] }, { type: i1.LocalizationService }];
298
+ }] }, { type: i1.LocalizationService }, { type: i1$2.UserMenuService }];
310
299
  } });
311
300
 
312
301
  class AbpToolbarService {
@@ -323,43 +312,66 @@ class AbpToolbarService {
323
312
  });
324
313
  }
325
314
  }
326
- 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 });
327
- AbpToolbarService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: AbpToolbarService, providedIn: 'root' });
328
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: AbpToolbarService, decorators: [{
315
+ 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 });
316
+ AbpToolbarService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AbpToolbarService, providedIn: 'root' });
317
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AbpToolbarService, decorators: [{
329
318
  type: Injectable,
330
319
  args: [{
331
320
  providedIn: 'root',
332
321
  }]
333
322
  }], ctorParameters: function () { return [{ type: i1$3.ToolbarService }, { type: i1$2.NavItemsService }, { type: i1.PermissionService }]; } });
334
323
 
324
+ const LPX_TRANSLATE_KEY_MAP_TOKEN = new InjectionToken('LPX_TRANSLATE_KEY_MAP_TOKEN');
325
+
335
326
  class AbpTranslateService {
336
- constructor(localization) {
327
+ constructor(localization, translateKeys) {
337
328
  this.localization = localization;
329
+ this.translateKeys = translateKeys;
338
330
  }
339
331
  get(key, defaultValue) {
340
- return this.localization.instant({
341
- key: `ThemeLeptonX::${key}`,
342
- defaultValue,
343
- });
332
+ const keyToTranslate = this.getKey(key);
333
+ if (keyToTranslate) {
334
+ return this.localization.instant({
335
+ key: keyToTranslate,
336
+ defaultValue,
337
+ });
338
+ }
339
+ return defaultValue || key;
344
340
  }
345
341
  get$(key, defaultValue) {
346
- return this.localization.get({ key: `ThemeLeptonX::${key}`, defaultValue });
342
+ const keyToTranslate = this.getKey(key);
343
+ if (keyToTranslate) {
344
+ return this.localization.get({
345
+ key: keyToTranslate,
346
+ defaultValue,
347
+ });
348
+ }
349
+ return of(defaultValue || key);
350
+ }
351
+ getKey(key) {
352
+ const keys = flatArrayDeepToObject(this.translateKeys);
353
+ return keys[key] ? keys[key] : key.includes('::') ? key : undefined;
347
354
  }
348
355
  }
349
- AbpTranslateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: AbpTranslateService, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Injectable });
350
- AbpTranslateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: AbpTranslateService });
351
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: AbpTranslateService, decorators: [{
356
+ 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 });
357
+ AbpTranslateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AbpTranslateService });
358
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AbpTranslateService, decorators: [{
352
359
  type: Injectable
353
- }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });
360
+ }], ctorParameters: function () {
361
+ return [{ type: i1.LocalizationService }, { type: Array, decorators: [{
362
+ type: Inject,
363
+ args: [LPX_TRANSLATE_KEY_MAP_TOKEN]
364
+ }] }];
365
+ } });
354
366
 
355
367
  class LeptonXPageRenderService {
356
368
  shouldRender(type) {
357
369
  return type !== PageParts.breadcrumb;
358
370
  }
359
371
  }
360
- LeptonXPageRenderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: LeptonXPageRenderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
361
- LeptonXPageRenderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: LeptonXPageRenderService });
362
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: LeptonXPageRenderService, decorators: [{
372
+ LeptonXPageRenderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: LeptonXPageRenderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
373
+ LeptonXPageRenderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: LeptonXPageRenderService });
374
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: LeptonXPageRenderService, decorators: [{
363
375
  type: Injectable
364
376
  }] });
365
377
 
@@ -373,9 +385,9 @@ class AbpAuthService {
373
385
  this.authService.navigateToLogin();
374
386
  }
375
387
  }
376
- 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 });
377
- AbpAuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: AbpAuthService });
378
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: AbpAuthService, decorators: [{
388
+ 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 });
389
+ AbpAuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AbpAuthService });
390
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AbpAuthService, decorators: [{
379
391
  type: Injectable
380
392
  }], ctorParameters: function () { return [{ type: i2$1.UserProfileService }, { type: i1.AuthService }]; } });
381
393
 
@@ -419,8 +431,80 @@ const PAGE_RENDER_PROVIDER = {
419
431
  const LPX_TRANSLATE_PROVIDER = {
420
432
  provide: LPX_TRANSLATE_SERVICE_TOKEN,
421
433
  useClass: AbpTranslateService,
434
+ };
435
+ const translateKeys = {
436
+ [LanguageTranslateKeys.SettingsTitle]: 'LeptonX::Language',
437
+ [ThemeTranslateKeys.AppearanceTitle]: 'LeptonX::Appearance',
438
+ [ThemeTranslateKeys.DarkMode]: 'LeptonX::Theme:dark',
439
+ [ThemeTranslateKeys.LightMode]: 'LeptonX::Theme:light',
440
+ [ThemeTranslateKeys.SemiDarkMode]: 'LeptonX::Theme:dim',
441
+ [ThemeTranslateKeys.System]: 'LeptonX::Theme:system',
442
+ };
443
+ const LPX_TRANSLATE_KEYS_PROVIDER = {
444
+ provide: LPX_TRANSLATE_KEY_MAP_TOKEN,
445
+ multi: true,
446
+ useValue: translateKeys,
422
447
  };
423
448
 
449
+ const LEPTON_X_USER_MENU_PROVIDERS = [
450
+ {
451
+ provide: APP_INITIALIZER,
452
+ useFactory: configureUserMenu,
453
+ deps: [Injector],
454
+ multi: true,
455
+ },
456
+ ];
457
+ function configureUserMenu(injector, router) {
458
+ const userMenu = injector.get(UserMenuService);
459
+ const authService = injector.get(AuthService);
460
+ const navigateToManageProfile = injector.get(NAVIGATE_TO_MANAGE_PROFILE);
461
+ const navigateToMySecurityLogs = injector.get(NAVIGATE_TO_MY_SECURITY_LOGS);
462
+ const openMyLinkUsersModal = injector.get(OPEN_MY_LINK_USERS_MODAL, null);
463
+ return () => {
464
+ userMenu.addItems([
465
+ {
466
+ id: eUserMenuItems.LinkedAccounts,
467
+ order: 100,
468
+ textTemplate: {
469
+ icon: 'bi bi-link',
470
+ text: 'AbpAccount::LinkedAccounts',
471
+ },
472
+ action: () => openMyLinkUsersModal(),
473
+ visible: () => !!openMyLinkUsersModal,
474
+ },
475
+ {
476
+ id: eUserMenuItems.MyAccount,
477
+ order: 100,
478
+ textTemplate: {
479
+ icon: 'bi bi-sliders',
480
+ text: 'AbpAccount::MyAccount',
481
+ },
482
+ action: () => navigateToManageProfile(),
483
+ },
484
+ {
485
+ id: eUserMenuItems.SecurityLogs,
486
+ order: 100,
487
+ textTemplate: {
488
+ icon: 'bi bi-list-ul',
489
+ text: 'AbpAccount::MySecurityLogs',
490
+ },
491
+ action: () => navigateToMySecurityLogs(),
492
+ },
493
+ {
494
+ id: eUserMenuItems.Logout,
495
+ order: 101,
496
+ textTemplate: {
497
+ icon: 'bi bi-box-arrow-right',
498
+ text: 'AbpUi::Logout',
499
+ },
500
+ action: () => {
501
+ authService.logout().subscribe();
502
+ },
503
+ },
504
+ ]);
505
+ };
506
+ }
507
+
424
508
  class ThemeLeptonXModule {
425
509
  static forRoot(options) {
426
510
  return {
@@ -428,20 +512,23 @@ class ThemeLeptonXModule {
428
512
  providers: [
429
513
  LPX_STYLE_PROVIDER,
430
514
  PROFILE_PICTURE_PROVIDERS,
515
+ LEPTON_X_USER_MENU_PROVIDERS,
431
516
  INIT_SERVICE_PROVIDER,
432
517
  PAGE_RENDER_PROVIDER,
433
518
  AbpValidationErrorModule.forRoot().providers,
434
519
  // TODO: muhammed: Create an injection token for theme settings
435
520
  LpxModule.forRoot(Object.assign({}, createLpxModuleOptions(options))).providers,
521
+ LPX_TRANSLATE_KEYS_PROVIDER,
436
522
  LPX_TRANSLATE_PROVIDER,
523
+ LeptonXAbpCoreModule.forRoot().providers,
437
524
  ],
438
525
  };
439
526
  }
440
527
  }
441
- ThemeLeptonXModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: ThemeLeptonXModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
442
- ThemeLeptonXModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: ThemeLeptonXModule, imports: [HttpErrorModule], exports: [HttpErrorModule] });
443
- ThemeLeptonXModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: ThemeLeptonXModule, imports: [[HttpErrorModule], HttpErrorModule] });
444
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: ThemeLeptonXModule, decorators: [{
528
+ ThemeLeptonXModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ThemeLeptonXModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
529
+ ThemeLeptonXModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.0", ngImport: i0, type: ThemeLeptonXModule, imports: [HttpErrorModule], exports: [HttpErrorModule] });
530
+ ThemeLeptonXModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ThemeLeptonXModule, imports: [HttpErrorModule, HttpErrorModule] });
531
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ThemeLeptonXModule, decorators: [{
445
532
  type: NgModule,
446
533
  args: [{
447
534
  imports: [HttpErrorModule],
@@ -452,7 +539,6 @@ function createLpxModuleOptions(options) {
452
539
  return Object.assign(Object.assign({}, options), { styleFactory: (styles) => {
453
540
  styles.push({
454
541
  bundleName: 'abp-bundle',
455
- handler: themeLeptonXStyleLoader,
456
542
  });
457
543
  if (options === null || options === void 0 ? void 0 : options.styleFactory) {
458
544
  return options.styleFactory(styles);
@@ -465,5 +551,5 @@ function createLpxModuleOptions(options) {
465
551
  * Generated bundle index. Do not edit.
466
552
  */
467
553
 
468
- export { AbpAuthService, AbpSettingsService, AbpToolbarService, AbpTranslateService, AbpValidationErrorComponent, AbpValidationErrorModule, HttpErrorComponent, HttpErrorModule, LeptonXPageRenderService, PageAlertContainerComponent, PageAlertContainerModule, ThemeLeptonXModule };
554
+ export { AbpAuthService, AbpSettingsService, AbpToolbarService, AbpTranslateService, AbpValidationErrorComponent, AbpValidationErrorModule, HttpErrorComponent, HttpErrorModule, LPX_TRANSLATE_KEY_MAP_TOKEN, LeptonXPageRenderService, PageAlertContainerComponent, PageAlertContainerModule, ThemeLeptonXModule, eUserMenuItems };
469
555
  //# sourceMappingURL=volosoft-abp.ng.theme.lepton-x.mjs.map