@acorex/modules 18.0.5 → 18.0.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 (88) hide show
  1. package/README.md +7 -7
  2. package/auth/README.md +3 -3
  3. package/esm2022/auth/index.mjs +1 -1
  4. package/esm2022/auth/lib/account/account.module.mjs +1 -1
  5. package/esm2022/auth/lib/account/app-chooser/app-chooser-list.component.mjs +3 -3
  6. package/esm2022/auth/lib/account/app-chooser/app-chooser-slot.component.mjs +3 -3
  7. package/esm2022/auth/lib/account/app-chooser/app-chooser.component.mjs +3 -3
  8. package/esm2022/auth/lib/account/profile/profile-slot.component.mjs +3 -3
  9. package/esm2022/auth/lib/account/tenant-chooser/tenant-chooser-dropdown.component.mjs +3 -3
  10. package/esm2022/auth/lib/account/tenant-chooser/tenant-chooser.component.mjs +3 -3
  11. package/esm2022/auth/lib/auth.config.mjs +1 -1
  12. package/esm2022/auth/lib/auth.module.mjs +1 -1
  13. package/esm2022/auth/lib/auth.routes.mjs +1 -1
  14. package/esm2022/auth/lib/error-handler.mjs +1 -1
  15. package/esm2022/auth/lib/forgot/password/password.component.mjs +3 -3
  16. package/esm2022/auth/lib/forgot/routes.mjs +1 -1
  17. package/esm2022/auth/lib/login/login.module.mjs +1 -1
  18. package/esm2022/auth/lib/login/password/password.component.mjs +3 -3
  19. package/esm2022/auth/lib/shared/layouts/blank/blank.layout.mjs +1 -1
  20. package/esm2022/auth/lib/shared/layouts/master/master.layout.mjs +3 -3
  21. package/esm2022/auth/lib/shared/services/idle.service.mjs +1 -1
  22. package/esm2022/auth/lib/shared/services/index.mjs +1 -1
  23. package/esm2022/auth/lib/store/auth.effects.mjs +1 -1
  24. package/esm2022/auth/lib/store/index.mjs +1 -1
  25. package/esm2022/auth/lib/two-factor/two-factor-code/two-factor-code.component.mjs +3 -3
  26. package/esm2022/auth/lib/two-factor/two-factor.module.mjs +1 -1
  27. package/esm2022/backend/index.mjs +1 -1
  28. package/esm2022/backend/lib/auth/oidc/application.loader.mjs +1 -1
  29. package/esm2022/backend/lib/auth/oidc/configuration.service.mjs +1 -1
  30. package/esm2022/backend/lib/auth/oidc/feature.loader.mjs +1 -1
  31. package/esm2022/backend/lib/auth/oidc/index.mjs +1 -1
  32. package/esm2022/backend/lib/auth/oidc/oidc.strategy.mjs +1 -1
  33. package/esm2022/backend/lib/auth/oidc/permission.loader.mjs +1 -1
  34. package/esm2022/backend/lib/auth/oidc/signincallback.component.mjs +1 -1
  35. package/esm2022/backend/lib/auth/oidc/tenant.loader.mjs +1 -1
  36. package/esm2022/backend/lib/auth/oidc/usermanager.service.mjs +1 -1
  37. package/esm2022/backend/lib/backend.configs.mjs +1 -1
  38. package/esm2022/backend/lib/backend.module.mjs +1 -1
  39. package/esm2022/backend/lib/data/api/data-provider.mjs +1 -3
  40. package/esm2022/backend/lib/data/index.mjs +1 -1
  41. package/esm2022/backend/lib/data/local/data-Conditioner.mjs +1 -1
  42. package/esm2022/backend/lib/data/local/local-data-provider.mjs +1 -1
  43. package/esm2022/log-management/lib/audit-logs.entity.mjs +1 -1
  44. package/esm2022/notification/index.mjs +1 -1
  45. package/esm2022/notification/lib/notification.module.mjs +1 -1
  46. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-DeS0JelZ.mjs → acorex-modules-auth-acorex-modules-auth-DrgYCAJo.mjs} +17 -17
  47. package/fesm2022/acorex-modules-auth-acorex-modules-auth-DrgYCAJo.mjs.map +1 -0
  48. package/fesm2022/acorex-modules-auth-app-chooser.component-DaN9f4KF.mjs +70 -0
  49. package/fesm2022/acorex-modules-auth-app-chooser.component-DaN9f4KF.mjs.map +1 -0
  50. package/fesm2022/acorex-modules-auth-blank.layout-BOdRxDNv.mjs.map +1 -1
  51. package/fesm2022/{acorex-modules-auth-login.module-CsfZ__0S.mjs → acorex-modules-auth-login.module-CE5vC6u4.mjs} +4 -4
  52. package/fesm2022/acorex-modules-auth-login.module-CE5vC6u4.mjs.map +1 -0
  53. package/fesm2022/acorex-modules-auth-master.layout-paCatSJi.mjs +37 -0
  54. package/fesm2022/acorex-modules-auth-master.layout-paCatSJi.mjs.map +1 -0
  55. package/fesm2022/acorex-modules-auth-password.component-CPmueXNM.mjs +72 -0
  56. package/fesm2022/acorex-modules-auth-password.component-CPmueXNM.mjs.map +1 -0
  57. package/fesm2022/acorex-modules-auth-password.component-R0GpvJ4M.mjs +125 -0
  58. package/fesm2022/acorex-modules-auth-password.component-R0GpvJ4M.mjs.map +1 -0
  59. package/fesm2022/{acorex-modules-auth-routes--jOmlQkp.mjs → acorex-modules-auth-routes-e9VlDgFf.mjs} +2 -2
  60. package/fesm2022/acorex-modules-auth-routes-e9VlDgFf.mjs.map +1 -0
  61. package/fesm2022/acorex-modules-auth-tenant-chooser.component-CPAKVSwH.mjs +83 -0
  62. package/fesm2022/acorex-modules-auth-tenant-chooser.component-CPAKVSwH.mjs.map +1 -0
  63. package/fesm2022/acorex-modules-auth-two-factor-code.component-ChMhFBJL.mjs +40 -0
  64. package/fesm2022/acorex-modules-auth-two-factor-code.component-ChMhFBJL.mjs.map +1 -0
  65. package/fesm2022/{acorex-modules-auth-two-factor.module-CmSVriRz.mjs → acorex-modules-auth-two-factor.module-DPBqQHGS.mjs} +3 -3
  66. package/fesm2022/{acorex-modules-auth-two-factor.module-CmSVriRz.mjs.map → acorex-modules-auth-two-factor.module-DPBqQHGS.mjs.map} +1 -1
  67. package/fesm2022/acorex-modules-auth.mjs +1 -1
  68. package/fesm2022/acorex-modules-backend.mjs +0 -2
  69. package/fesm2022/acorex-modules-backend.mjs.map +1 -1
  70. package/fesm2022/acorex-modules-log-management.mjs.map +1 -1
  71. package/fesm2022/acorex-modules-notification.mjs.map +1 -1
  72. package/notification/README.md +3 -3
  73. package/package.json +1 -1
  74. package/fesm2022/acorex-modules-auth-acorex-modules-auth-DeS0JelZ.mjs.map +0 -1
  75. package/fesm2022/acorex-modules-auth-app-chooser.component-Bw4IumjA.mjs +0 -70
  76. package/fesm2022/acorex-modules-auth-app-chooser.component-Bw4IumjA.mjs.map +0 -1
  77. package/fesm2022/acorex-modules-auth-login.module-CsfZ__0S.mjs.map +0 -1
  78. package/fesm2022/acorex-modules-auth-master.layout-7OSbK7SF.mjs +0 -37
  79. package/fesm2022/acorex-modules-auth-master.layout-7OSbK7SF.mjs.map +0 -1
  80. package/fesm2022/acorex-modules-auth-password.component-V2IWBUZb.mjs +0 -125
  81. package/fesm2022/acorex-modules-auth-password.component-V2IWBUZb.mjs.map +0 -1
  82. package/fesm2022/acorex-modules-auth-password.component-qr9vkp8j.mjs +0 -72
  83. package/fesm2022/acorex-modules-auth-password.component-qr9vkp8j.mjs.map +0 -1
  84. package/fesm2022/acorex-modules-auth-routes--jOmlQkp.mjs.map +0 -1
  85. package/fesm2022/acorex-modules-auth-tenant-chooser.component-CjEiwASS.mjs +0 -83
  86. package/fesm2022/acorex-modules-auth-tenant-chooser.component-CjEiwASS.mjs.map +0 -1
  87. package/fesm2022/acorex-modules-auth-two-factor-code.component-C0JWM0rO.mjs +0 -40
  88. package/fesm2022/acorex-modules-auth-two-factor-code.component-C0JWM0rO.mjs.map +0 -1
@@ -1,83 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { inject, Component, ViewEncapsulation } from '@angular/core';
3
- import * as i3 from '@acorex/components/avatar';
4
- import { AXAvatarModule } from '@acorex/components/avatar';
5
- import * as i2 from '@acorex/components/button';
6
- import { AXButtonModule } from '@acorex/components/button';
7
- import { AXCheckBoxModule } from '@acorex/components/check-box';
8
- import * as i2$2 from '@acorex/components/decorators';
9
- import { AXDecoratorModule } from '@acorex/components/decorators';
10
- import { AXFormModule } from '@acorex/components/form';
11
- import * as i2$1 from '@acorex/components/image';
12
- import { AXImageModule } from '@acorex/components/image';
13
- import { AXLabelModule } from '@acorex/components/label';
14
- import * as i3$1 from '@acorex/components/loading';
15
- import { AXLoadingModule } from '@acorex/components/loading';
16
- import { AXTextBoxModule } from '@acorex/components/text-box';
17
- import * as i6 from '@acorex/core/translation';
18
- import { AXTranslationModule } from '@acorex/core/translation';
19
- import { AXPSessionService } from '@acorex/platform/auth';
20
- import { AXP_PLATFORM_CONFIG_TOKEN, AXPLogoComponent } from '@acorex/platform/common';
21
- import * as i1 from '@angular/common';
22
- import { CommonModule } from '@angular/common';
23
- import { Router } from '@angular/router';
24
- import { Subscription, first } from 'rxjs';
25
-
26
- class AXPAuthTenantChooserComponent {
27
- constructor() {
28
- this.router = inject(Router);
29
- this.platformConfig = inject(AXP_PLATFORM_CONFIG_TOKEN);
30
- this.sessionService = inject(AXPSessionService);
31
- this.subscription = new Subscription();
32
- this.user = this.sessionService.user;
33
- this.showAll = false;
34
- this.selectedTenant = null;
35
- this.displayedTenants = [];
36
- }
37
- async handleChooseTenant(item) {
38
- this.selectedTenant = item;
39
- await this.sessionService.setTenant(item);
40
- this.router.navigate(['/auth/account/app-chooser']);
41
- }
42
- ngOnInit() {
43
- this.sessionService.tenants$
44
- .pipe(first())
45
- .subscribe((tenants) => {
46
- this.displayedTenants = tenants.slice(0, 4);
47
- this.allTenants = tenants;
48
- });
49
- }
50
- showAllTenants() {
51
- this.showAll = !this.showAll;
52
- this.displayedTenants = this.showAll ? this.allTenants : this.allTenants.slice(0, 4);
53
- }
54
- async handleSignout() {
55
- await this.sessionService.signout();
56
- this.router.navigate(['/auth/login']);
57
- }
58
- ngOnDestroy() {
59
- this.subscription.unsubscribe();
60
- }
61
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXPAuthTenantChooserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
62
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: AXPAuthTenantChooserComponent, isStandalone: true, selector: "axp-auth-tenant-chooser", ngImport: i0, template: "<main *translate=\"let t\"\r\n class=\"ax-w-full ax-space-y-10 ax-h-[100vh] ax-flex ax-flex-col ax-items-center ax-justify-center ax-bg-surface md:ax-bg-default\">\r\n <section>\r\n <axp-logo [source]=\"platformConfig.logo?.colored\" [attr.alt]=\"platformConfig.title\"\r\n class=\"ax-w-36 ax-mx-auto ax-text-2xl ax-font-bold\"></axp-logo>\r\n </section>\r\n <section class=\"ax-flex ax-justify-center\">\r\n <div\r\n class=\"ax-flex ax-gap-2 ax-justify-center ax-text-center ax-flex-col ax-items-center ax-border ax-rounded-lg ax-shadow-lg ax-p-6 md:ax-w-96 ax-w-80\">\r\n <ax-avatar class=\"ax-rounded-full\" [size]=\"72\">\r\n @if(user?.avatar){\r\n <ax-image [src]=\"user?.avatar\"></ax-image>\r\n }\r\n </ax-avatar>\r\n <h2 class=\"md:ax-text-lg ax-font-medium\">{{ t('welcome') | async }}, {{ user?.title }}</h2>\r\n <p class=\"ax-text-neutral-500 ax-text-sm md:ax-text-base ax-font-medium\">\r\n {{ t('tenant-chooser.description', { scope: 'auth' }) | async }}\r\n </p>\r\n <div class=\"ax-mt-3 ax-w-full ax-overflow-auto ax-max-h-[300px] ax-pe-2\">\r\n @for(tenant of displayedTenants; track $index){\r\n <div\r\n class=\"ax-flex ax-gap-2 ax-justify-between ax-border-b last:ax-border-b-0 ax-py-3 ax-items-center ax-cursor-pointer\"\r\n (click)=\"handleChooseTenant(tenant)\">\r\n <div class=\"ax-flex ax-gap-2 ax-items-center ax-font-medium\">\r\n <div\r\n class=\"ax-w-12 ax-h-12 ax-flex ax-justify-center ax-items-center ax-rounded-full ax-bg-neutral-100 ax-m-auto\">\r\n <ax-icon class=\"fa-solid fa-building ax-text-neutral-500 ax-text-lg\"> </ax-icon>\r\n </div>\r\n <span class=\"md:ax-text-base ax-text-sm\">{{ tenant.title }}</span>\r\n </div>\r\n @if(tenant.name===selectedTenant?.name){\r\n <ax-loading></ax-loading>\r\n }@else {\r\n <ax-icon class=\"fa-solid fa-chevron-right ax-text-neutral-400\"> </ax-icon>\r\n }\r\n </div>\r\n }\r\n </div>\r\n @if(allTenants.length>4){\r\n <div class=\"ax-mt-6 ax-w-full ax-flex ax-justify-center\">\r\n <ax-button (onClick)=\"showAllTenants()\" class=\"ax-w-full\" look=\"outline\"\r\n [text]=\"showAll ? (t('viewLess') | async) : (t('viewAll') | async)\"></ax-button>\r\n </div>\r\n }\r\n </div>\r\n </section>\r\n <section>\r\n <p class=\"ax-text-neutral-400 ax-text-sm\">\r\n {{ t('tenant-chooser.footer', { scope: 'auth' }) | async }}\r\n <a (click)=\"handleSignout()\" class=\"ax-text-primary ax-cursor-pointer hover:ax-underline ax-font-medium\">\r\n {{ t('backLogin', { scope: 'auth' }) | async }}\r\n </a>\r\n </p>\r\n </section>\r\n</main>", styles: [":host{display:contents}.gradient{background:-webkit-linear-gradient(var(--ax-current-v1),var(--ax-current-v2));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "ngmodule", type: AXCheckBoxModule }, { kind: "ngmodule", type: AXAvatarModule }, { kind: "component", type: i3.AXAvatarComponent, selector: "ax-avatar", inputs: ["color", "size", "look"] }, { kind: "ngmodule", type: AXImageModule }, { kind: "component", type: i2$1.AXImageComponent, selector: "ax-image", inputs: ["overlayMode", "src", "alt", "priority", "lazy"], outputs: ["onLoad", "onError"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: AXPLogoComponent, selector: "axp-logo", inputs: ["source"] }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i3$1.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i6.AXTranslatorDirective, selector: "[translate]" }], encapsulation: i0.ViewEncapsulation.None }); }
63
- }
64
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXPAuthTenantChooserComponent, decorators: [{
65
- type: Component,
66
- args: [{ selector: 'axp-auth-tenant-chooser', imports: [
67
- CommonModule,
68
- AXFormModule,
69
- AXTextBoxModule,
70
- AXButtonModule,
71
- AXLabelModule,
72
- AXCheckBoxModule,
73
- AXAvatarModule,
74
- AXImageModule,
75
- AXDecoratorModule,
76
- AXPLogoComponent,
77
- AXLoadingModule,
78
- AXTranslationModule,
79
- ], encapsulation: ViewEncapsulation.None, standalone: true, template: "<main *translate=\"let t\"\r\n class=\"ax-w-full ax-space-y-10 ax-h-[100vh] ax-flex ax-flex-col ax-items-center ax-justify-center ax-bg-surface md:ax-bg-default\">\r\n <section>\r\n <axp-logo [source]=\"platformConfig.logo?.colored\" [attr.alt]=\"platformConfig.title\"\r\n class=\"ax-w-36 ax-mx-auto ax-text-2xl ax-font-bold\"></axp-logo>\r\n </section>\r\n <section class=\"ax-flex ax-justify-center\">\r\n <div\r\n class=\"ax-flex ax-gap-2 ax-justify-center ax-text-center ax-flex-col ax-items-center ax-border ax-rounded-lg ax-shadow-lg ax-p-6 md:ax-w-96 ax-w-80\">\r\n <ax-avatar class=\"ax-rounded-full\" [size]=\"72\">\r\n @if(user?.avatar){\r\n <ax-image [src]=\"user?.avatar\"></ax-image>\r\n }\r\n </ax-avatar>\r\n <h2 class=\"md:ax-text-lg ax-font-medium\">{{ t('welcome') | async }}, {{ user?.title }}</h2>\r\n <p class=\"ax-text-neutral-500 ax-text-sm md:ax-text-base ax-font-medium\">\r\n {{ t('tenant-chooser.description', { scope: 'auth' }) | async }}\r\n </p>\r\n <div class=\"ax-mt-3 ax-w-full ax-overflow-auto ax-max-h-[300px] ax-pe-2\">\r\n @for(tenant of displayedTenants; track $index){\r\n <div\r\n class=\"ax-flex ax-gap-2 ax-justify-between ax-border-b last:ax-border-b-0 ax-py-3 ax-items-center ax-cursor-pointer\"\r\n (click)=\"handleChooseTenant(tenant)\">\r\n <div class=\"ax-flex ax-gap-2 ax-items-center ax-font-medium\">\r\n <div\r\n class=\"ax-w-12 ax-h-12 ax-flex ax-justify-center ax-items-center ax-rounded-full ax-bg-neutral-100 ax-m-auto\">\r\n <ax-icon class=\"fa-solid fa-building ax-text-neutral-500 ax-text-lg\"> </ax-icon>\r\n </div>\r\n <span class=\"md:ax-text-base ax-text-sm\">{{ tenant.title }}</span>\r\n </div>\r\n @if(tenant.name===selectedTenant?.name){\r\n <ax-loading></ax-loading>\r\n }@else {\r\n <ax-icon class=\"fa-solid fa-chevron-right ax-text-neutral-400\"> </ax-icon>\r\n }\r\n </div>\r\n }\r\n </div>\r\n @if(allTenants.length>4){\r\n <div class=\"ax-mt-6 ax-w-full ax-flex ax-justify-center\">\r\n <ax-button (onClick)=\"showAllTenants()\" class=\"ax-w-full\" look=\"outline\"\r\n [text]=\"showAll ? (t('viewLess') | async) : (t('viewAll') | async)\"></ax-button>\r\n </div>\r\n }\r\n </div>\r\n </section>\r\n <section>\r\n <p class=\"ax-text-neutral-400 ax-text-sm\">\r\n {{ t('tenant-chooser.footer', { scope: 'auth' }) | async }}\r\n <a (click)=\"handleSignout()\" class=\"ax-text-primary ax-cursor-pointer hover:ax-underline ax-font-medium\">\r\n {{ t('backLogin', { scope: 'auth' }) | async }}\r\n </a>\r\n </p>\r\n </section>\r\n</main>", styles: [":host{display:contents}.gradient{background:-webkit-linear-gradient(var(--ax-current-v1),var(--ax-current-v2));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}\n"] }]
80
- }] });
81
-
82
- export { AXPAuthTenantChooserComponent };
83
- //# sourceMappingURL=acorex-modules-auth-tenant-chooser.component-CjEiwASS.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"acorex-modules-auth-tenant-chooser.component-CjEiwASS.mjs","sources":["../../../../libs/modules/auth/src/lib/account/tenant-chooser/tenant-chooser.component.ts","../../../../libs/modules/auth/src/lib/account/tenant-chooser/tenant-chooser.component.html"],"sourcesContent":["import { Component, OnDestroy, OnInit, ViewEncapsulation, inject } from '@angular/core';\r\n\r\nimport { AXAvatarModule } from '@acorex/components/avatar';\r\nimport { AXButtonModule } from '@acorex/components/button';\r\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\r\nimport { AXDecoratorModule } from '@acorex/components/decorators';\r\nimport { AXFormModule } from '@acorex/components/form';\r\nimport { AXImageModule } from '@acorex/components/image';\r\nimport { AXLabelModule } from '@acorex/components/label';\r\nimport { AXLoadingModule } from '@acorex/components/loading';\r\nimport { AXTextBoxModule } from '@acorex/components/text-box';\r\nimport { AXTranslationModule } from '@acorex/core/translation';\r\nimport { AXPSessionService, AXPTenant } from '@acorex/platform/auth';\r\nimport { AXPLogoComponent, AXP_PLATFORM_CONFIG_TOKEN } from '@acorex/platform/common';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Router } from '@angular/router';\r\nimport { Subscription, first } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'axp-auth-tenant-chooser',\r\n templateUrl: './tenant-chooser.component.html',\r\n styleUrls: ['./tenant-chooser.component.scss'],\r\n imports: [\r\n CommonModule,\r\n AXFormModule,\r\n AXTextBoxModule,\r\n AXButtonModule,\r\n AXLabelModule,\r\n AXCheckBoxModule,\r\n AXAvatarModule,\r\n AXImageModule,\r\n AXDecoratorModule,\r\n AXPLogoComponent,\r\n AXLoadingModule,\r\n AXTranslationModule,\r\n ],\r\n encapsulation: ViewEncapsulation.None,\r\n standalone: true,\r\n})\r\nexport class AXPAuthTenantChooserComponent implements OnInit, OnDestroy {\r\n private router = inject(Router);\r\n protected platformConfig = inject(AXP_PLATFORM_CONFIG_TOKEN);\r\n private sessionService = inject(AXPSessionService);\r\n\r\n private subscription = new Subscription();\r\n\r\n protected user = this.sessionService.user;\r\n\r\n protected showAll = false;\r\n protected selectedTenant: AXPTenant | null = null;\r\n protected displayedTenants: AXPTenant[] = [];\r\n protected allTenants!: AXPTenant[];\r\n\r\n protected async handleChooseTenant(item: AXPTenant) {\r\n this.selectedTenant = item;\r\n await this.sessionService.setTenant(item);\r\n this.router.navigate(['/auth/account/app-chooser']);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.sessionService.tenants$\r\n .pipe(first())\r\n .subscribe((tenants) => {\r\n this.displayedTenants = tenants.slice(0, 4);\r\n this.allTenants = tenants;\r\n });\r\n }\r\n\r\n showAllTenants() {\r\n this.showAll = !this.showAll;\r\n this.displayedTenants = this.showAll ? this.allTenants : this.allTenants.slice(0, 4);\r\n }\r\n\r\n async handleSignout() {\r\n await this.sessionService.signout();\r\n this.router.navigate(['/auth/login']);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n}\r\n","<main *translate=\"let t\"\r\n class=\"ax-w-full ax-space-y-10 ax-h-[100vh] ax-flex ax-flex-col ax-items-center ax-justify-center ax-bg-surface md:ax-bg-default\">\r\n <section>\r\n <axp-logo [source]=\"platformConfig.logo?.colored\" [attr.alt]=\"platformConfig.title\"\r\n class=\"ax-w-36 ax-mx-auto ax-text-2xl ax-font-bold\"></axp-logo>\r\n </section>\r\n <section class=\"ax-flex ax-justify-center\">\r\n <div\r\n class=\"ax-flex ax-gap-2 ax-justify-center ax-text-center ax-flex-col ax-items-center ax-border ax-rounded-lg ax-shadow-lg ax-p-6 md:ax-w-96 ax-w-80\">\r\n <ax-avatar class=\"ax-rounded-full\" [size]=\"72\">\r\n @if(user?.avatar){\r\n <ax-image [src]=\"user?.avatar\"></ax-image>\r\n }\r\n </ax-avatar>\r\n <h2 class=\"md:ax-text-lg ax-font-medium\">{{ t('welcome') | async }}, {{ user?.title }}</h2>\r\n <p class=\"ax-text-neutral-500 ax-text-sm md:ax-text-base ax-font-medium\">\r\n {{ t('tenant-chooser.description', { scope: 'auth' }) | async }}\r\n </p>\r\n <div class=\"ax-mt-3 ax-w-full ax-overflow-auto ax-max-h-[300px] ax-pe-2\">\r\n @for(tenant of displayedTenants; track $index){\r\n <div\r\n class=\"ax-flex ax-gap-2 ax-justify-between ax-border-b last:ax-border-b-0 ax-py-3 ax-items-center ax-cursor-pointer\"\r\n (click)=\"handleChooseTenant(tenant)\">\r\n <div class=\"ax-flex ax-gap-2 ax-items-center ax-font-medium\">\r\n <div\r\n class=\"ax-w-12 ax-h-12 ax-flex ax-justify-center ax-items-center ax-rounded-full ax-bg-neutral-100 ax-m-auto\">\r\n <ax-icon class=\"fa-solid fa-building ax-text-neutral-500 ax-text-lg\"> </ax-icon>\r\n </div>\r\n <span class=\"md:ax-text-base ax-text-sm\">{{ tenant.title }}</span>\r\n </div>\r\n @if(tenant.name===selectedTenant?.name){\r\n <ax-loading></ax-loading>\r\n }@else {\r\n <ax-icon class=\"fa-solid fa-chevron-right ax-text-neutral-400\"> </ax-icon>\r\n }\r\n </div>\r\n }\r\n </div>\r\n @if(allTenants.length>4){\r\n <div class=\"ax-mt-6 ax-w-full ax-flex ax-justify-center\">\r\n <ax-button (onClick)=\"showAllTenants()\" class=\"ax-w-full\" look=\"outline\"\r\n [text]=\"showAll ? (t('viewLess') | async) : (t('viewAll') | async)\"></ax-button>\r\n </div>\r\n }\r\n </div>\r\n </section>\r\n <section>\r\n <p class=\"ax-text-neutral-400 ax-text-sm\">\r\n {{ t('tenant-chooser.footer', { scope: 'auth' }) | async }}\r\n <a (click)=\"handleSignout()\" class=\"ax-text-primary ax-cursor-pointer hover:ax-underline ax-font-medium\">\r\n {{ t('backLogin', { scope: 'auth' }) | async }}\r\n </a>\r\n </p>\r\n </section>\r\n</main>"],"names":["i4","i5","i6","i7"],"mappings":"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"}
@@ -1,40 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { Component, ViewEncapsulation } from '@angular/core';
3
- import * as i2$1 from '@acorex/components/button';
4
- import { AXButtonModule } from '@acorex/components/button';
5
- import { AXDecoratorModule } from '@acorex/components/decorators';
6
- import * as i2 from '@acorex/components/form';
7
- import { AXFormModule } from '@acorex/components/form';
8
- import * as i6 from '@acorex/components/label';
9
- import { AXLabelModule } from '@acorex/components/label';
10
- import * as i4 from '@acorex/components/password-box';
11
- import { AXPasswordBoxModule } from '@acorex/components/password-box';
12
- import { AXTextBoxModule } from '@acorex/components/text-box';
13
- import * as i6$1 from '@acorex/core/translation';
14
- import { AXTranslationModule } from '@acorex/core/translation';
15
- import * as i1 from '@angular/common';
16
- import { CommonModule } from '@angular/common';
17
-
18
- class AXPAuthTwoFactorCodeComponent {
19
- ngOnInit() { }
20
- ngOnDestroy() { }
21
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXPAuthTwoFactorCodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
22
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: AXPAuthTwoFactorCodeComponent, isStandalone: true, selector: "axp-auth-two-factor-code", ngImport: i0, template: "<ng-container *translate=\"let t\">\r\n <div class=\"ax-text-center ax-mb-8\">\r\n <h1 class=\"ax-font-bold ax-text-xl ax-mb-2\">\r\n {{ t('auth.twofactor.title') | async }}\r\n </h1>\r\n <p class=\"ax-text-base ax-text-neutral-600 ax-mb-4\">\r\n {{ t('auth.twofactor.hint') | async }}\r\n </p>\r\n <p class=\"ax-text-base ax-font-medium\">**** *** 3320</p>\r\n </div>\r\n <div class=\"ax-w-80 lg:ax-w-96\">\r\n <ax-form>\r\n <div class=\"ax-flex ax-flex-col ax-gap-6\">\r\n <ax-form-field>\r\n <ax-label class=\"ax-text-start\">{{ t('auth.twofactor.textBoxHint') | async }}</ax-label>\r\n <ax-password-box></ax-password-box>\r\n </ax-form-field>\r\n <ax-button class=\"ax-w-full\" [text]=\"t('common.submit') | async\" color=\"primary\"> </ax-button>\r\n </div>\r\n </ax-form>\r\n </div>\r\n</ng-container>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i2.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "component", type: i2.AXFormComponent, selector: "ax-form", inputs: ["labelMode", "messageStyle", "updateOn"], outputs: ["onValidate", "updateOnChange"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i6.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXPasswordBoxModule }, { kind: "component", type: i4.AXPasswordBoxComponent, selector: "ax-password-box", inputs: ["readonly", "disabled", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "autoComplete", "showToggleButton", "class"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i6$1.AXTranslatorDirective, selector: "[translate]" }], encapsulation: i0.ViewEncapsulation.None }); }
23
- }
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AXPAuthTwoFactorCodeComponent, decorators: [{
25
- type: Component,
26
- args: [{ selector: 'axp-auth-two-factor-code', imports: [
27
- CommonModule,
28
- AXFormModule,
29
- AXButtonModule,
30
- AXDecoratorModule,
31
- AXFormModule,
32
- AXTextBoxModule,
33
- AXLabelModule,
34
- AXPasswordBoxModule,
35
- AXTranslationModule,
36
- ], encapsulation: ViewEncapsulation.None, standalone: true, template: "<ng-container *translate=\"let t\">\r\n <div class=\"ax-text-center ax-mb-8\">\r\n <h1 class=\"ax-font-bold ax-text-xl ax-mb-2\">\r\n {{ t('auth.twofactor.title') | async }}\r\n </h1>\r\n <p class=\"ax-text-base ax-text-neutral-600 ax-mb-4\">\r\n {{ t('auth.twofactor.hint') | async }}\r\n </p>\r\n <p class=\"ax-text-base ax-font-medium\">**** *** 3320</p>\r\n </div>\r\n <div class=\"ax-w-80 lg:ax-w-96\">\r\n <ax-form>\r\n <div class=\"ax-flex ax-flex-col ax-gap-6\">\r\n <ax-form-field>\r\n <ax-label class=\"ax-text-start\">{{ t('auth.twofactor.textBoxHint') | async }}</ax-label>\r\n <ax-password-box></ax-password-box>\r\n </ax-form-field>\r\n <ax-button class=\"ax-w-full\" [text]=\"t('common.submit') | async\" color=\"primary\"> </ax-button>\r\n </div>\r\n </ax-form>\r\n </div>\r\n</ng-container>" }]
37
- }] });
38
-
39
- export { AXPAuthTwoFactorCodeComponent };
40
- //# sourceMappingURL=acorex-modules-auth-two-factor-code.component-C0JWM0rO.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"acorex-modules-auth-two-factor-code.component-C0JWM0rO.mjs","sources":["../../../../libs/modules/auth/src/lib/two-factor/two-factor-code/two-factor-code.component.ts","../../../../libs/modules/auth/src/lib/two-factor/two-factor-code/two-factor-code.component.html"],"sourcesContent":["import { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\r\n\r\nimport { AXButtonModule } from '@acorex/components/button';\r\nimport { AXDecoratorModule } from '@acorex/components/decorators';\r\nimport { AXFormModule } from '@acorex/components/form';\r\nimport { AXLabelModule } from '@acorex/components/label';\r\nimport { AXPasswordBoxModule } from '@acorex/components/password-box';\r\nimport { AXTextBoxModule } from '@acorex/components/text-box';\r\nimport { AXTranslationModule } from '@acorex/core/translation';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n\r\n@Component({\r\n selector: 'axp-auth-two-factor-code',\r\n templateUrl: './two-factor-code.component.html',\r\n imports: [\r\n CommonModule,\r\n AXFormModule,\r\n AXButtonModule,\r\n AXDecoratorModule,\r\n AXFormModule,\r\n AXTextBoxModule,\r\n AXLabelModule,\r\n AXPasswordBoxModule,\r\n AXTranslationModule,\r\n ],\r\n encapsulation: ViewEncapsulation.None,\r\n standalone: true\r\n})\r\nexport class AXPAuthTwoFactorCodeComponent implements OnInit, OnDestroy {\r\n ngOnInit(): void { }\r\n\r\n ngOnDestroy(): void { }\r\n}\r\n","<ng-container *translate=\"let t\">\r\n <div class=\"ax-text-center ax-mb-8\">\r\n <h1 class=\"ax-font-bold ax-text-xl ax-mb-2\">\r\n {{ t('auth.twofactor.title') | async }}\r\n </h1>\r\n <p class=\"ax-text-base ax-text-neutral-600 ax-mb-4\">\r\n {{ t('auth.twofactor.hint') | async }}\r\n </p>\r\n <p class=\"ax-text-base ax-font-medium\">**** *** 3320</p>\r\n </div>\r\n <div class=\"ax-w-80 lg:ax-w-96\">\r\n <ax-form>\r\n <div class=\"ax-flex ax-flex-col ax-gap-6\">\r\n <ax-form-field>\r\n <ax-label class=\"ax-text-start\">{{ t('auth.twofactor.textBoxHint') | async }}</ax-label>\r\n <ax-password-box></ax-password-box>\r\n </ax-form-field>\r\n <ax-button class=\"ax-w-full\" [text]=\"t('common.submit') | async\" color=\"primary\"> </ax-button>\r\n </div>\r\n </ax-form>\r\n </div>\r\n</ng-container>"],"names":["i3","i4","i6"],"mappings":";;;;;;;;;;;;;;;;;MA6Ba,6BAA6B,CAAA;AACxC,IAAA,QAAQ,MAAY;AAEpB,IAAA,WAAW,MAAY;8GAHZ,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,oFC7B1C,63BAqBe,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDLX,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,cAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,EACd,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAiB,8BAEjB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,EACb,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,+ZACnB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAKV,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAjBzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,EAE3B,OAAA,EAAA;wBACP,YAAY;wBACZ,YAAY;wBACZ,cAAc;wBACd,iBAAiB;wBACjB,YAAY;wBACZ,eAAe;wBACf,aAAa;wBACb,mBAAmB;wBACnB,mBAAmB;AACpB,qBAAA,EAAA,aAAA,EACc,iBAAiB,CAAC,IAAI,EAAA,UAAA,EACzB,IAAI,EAAA,QAAA,EAAA,63BAAA,EAAA,CAAA;;;;;"}