@acorex/modules 1.0.0

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 (139) hide show
  1. package/README.md +7 -0
  2. package/auth/README.md +3 -0
  3. package/auth/index.d.ts +3 -0
  4. package/auth/lib/account/account.module.d.ts +8 -0
  5. package/auth/lib/account/app-chooser/app-chooser-list.component.d.ts +11 -0
  6. package/auth/lib/account/app-chooser/app-chooser-slot.component.d.ts +12 -0
  7. package/auth/lib/account/app-chooser/app-chooser.component.d.ts +13 -0
  8. package/auth/lib/account/profile/profile-slot.component.d.ts +16 -0
  9. package/auth/lib/account/tenant-chooser/tenant-chooser-dropdown.component.d.ts +10 -0
  10. package/auth/lib/account/tenant-chooser/tenant-chooser.component.d.ts +21 -0
  11. package/auth/lib/auth.config.d.ts +23 -0
  12. package/auth/lib/auth.module.d.ts +14 -0
  13. package/auth/lib/auth.routes.d.ts +2 -0
  14. package/auth/lib/error-handler.d.ts +10 -0
  15. package/auth/lib/forgot/password/password.component.d.ts +11 -0
  16. package/auth/lib/forgot/routes.d.ts +3 -0
  17. package/auth/lib/login/login.module.d.ts +7 -0
  18. package/auth/lib/login/password/password.component.d.ts +22 -0
  19. package/auth/lib/register/email/email.component.d.ts +5 -0
  20. package/auth/lib/register/register.module.d.ts +7 -0
  21. package/auth/lib/register/result/result.component.d.ts +5 -0
  22. package/auth/lib/shared/layouts/blank/blank.layout.d.ts +8 -0
  23. package/auth/lib/shared/layouts/master/master.layout.d.ts +7 -0
  24. package/auth/lib/shared/services/idle.service.d.ts +17 -0
  25. package/auth/lib/shared/services/index.d.ts +1 -0
  26. package/auth/lib/store/auth.effects.d.ts +18 -0
  27. package/auth/lib/store/index.d.ts +1 -0
  28. package/auth/lib/two-factor/two-factor-code/two-factor-code.component.d.ts +8 -0
  29. package/auth/lib/two-factor/two-factor.module.d.ts +7 -0
  30. package/backend/README.md +4 -0
  31. package/backend/index.d.ts +2 -0
  32. package/backend/lib/auth/oidc/application.loader.d.ts +16 -0
  33. package/backend/lib/auth/oidc/feature.loader.d.ts +5 -0
  34. package/backend/lib/auth/oidc/index.d.ts +5 -0
  35. package/backend/lib/auth/oidc/oidc.strategy.d.ts +19 -0
  36. package/backend/lib/auth/oidc/permission.loader.d.ts +5 -0
  37. package/backend/lib/auth/oidc/signincallback.component.d.ts +13 -0
  38. package/backend/lib/auth/oidc/tenant.loader.d.ts +16 -0
  39. package/backend/lib/auth/oidc/usermanager.service.d.ts +12 -0
  40. package/backend/lib/auth/userpass/application.loader.d.ts +6 -0
  41. package/backend/lib/auth/userpass/index.d.ts +4 -0
  42. package/backend/lib/auth/userpass/permission.loader.d.ts +5 -0
  43. package/backend/lib/auth/userpass/tenant.loader.d.ts +6 -0
  44. package/backend/lib/auth/userpass/userpass.strategy.d.ts +12 -0
  45. package/backend/lib/backend.configs.d.ts +99 -0
  46. package/backend/lib/backend.module.d.ts +8 -0
  47. package/backend/lib/data/api/data-provider.d.ts +21 -0
  48. package/esm2022/acorex-modules.mjs +5 -0
  49. package/esm2022/auth/acorex-modules-auth.mjs +5 -0
  50. package/esm2022/auth/index.mjs +4 -0
  51. package/esm2022/auth/lib/account/account.module.mjs +106 -0
  52. package/esm2022/auth/lib/account/app-chooser/app-chooser-list.component.mjs +31 -0
  53. package/esm2022/auth/lib/account/app-chooser/app-chooser-slot.component.mjs +41 -0
  54. package/esm2022/auth/lib/account/app-chooser/app-chooser.component.mjs +62 -0
  55. package/esm2022/auth/lib/account/profile/profile-slot.component.mjs +56 -0
  56. package/esm2022/auth/lib/account/tenant-chooser/tenant-chooser-dropdown.component.mjs +26 -0
  57. package/esm2022/auth/lib/account/tenant-chooser/tenant-chooser.component.mjs +81 -0
  58. package/esm2022/auth/lib/auth.config.mjs +22 -0
  59. package/esm2022/auth/lib/auth.module.mjs +45 -0
  60. package/esm2022/auth/lib/auth.routes.mjs +38 -0
  61. package/esm2022/auth/lib/error-handler.mjs +41 -0
  62. package/esm2022/auth/lib/forgot/password/password.component.mjs +56 -0
  63. package/esm2022/auth/lib/forgot/routes.mjs +7 -0
  64. package/esm2022/auth/lib/login/login.module.mjs +53 -0
  65. package/esm2022/auth/lib/login/password/password.component.mjs +99 -0
  66. package/esm2022/auth/lib/register/email/email.component.mjs +42 -0
  67. package/esm2022/auth/lib/register/register.module.mjs +59 -0
  68. package/esm2022/auth/lib/register/result/result.component.mjs +33 -0
  69. package/esm2022/auth/lib/shared/layouts/blank/blank.layout.mjs +15 -0
  70. package/esm2022/auth/lib/shared/layouts/master/master.layout.mjs +21 -0
  71. package/esm2022/auth/lib/shared/services/idle.service.mjs +42 -0
  72. package/esm2022/auth/lib/shared/services/index.mjs +2 -0
  73. package/esm2022/auth/lib/store/auth.effects.mjs +90 -0
  74. package/esm2022/auth/lib/store/index.mjs +3 -0
  75. package/esm2022/auth/lib/two-factor/two-factor-code/two-factor-code.component.mjs +37 -0
  76. package/esm2022/auth/lib/two-factor/two-factor.module.mjs +42 -0
  77. package/esm2022/backend/acorex-modules-backend.mjs +5 -0
  78. package/esm2022/backend/index.mjs +3 -0
  79. package/esm2022/backend/lib/auth/oidc/application.loader.mjs +47 -0
  80. package/esm2022/backend/lib/auth/oidc/feature.loader.mjs +7 -0
  81. package/esm2022/backend/lib/auth/oidc/index.mjs +6 -0
  82. package/esm2022/backend/lib/auth/oidc/oidc.strategy.mjs +77 -0
  83. package/esm2022/backend/lib/auth/oidc/permission.loader.mjs +7 -0
  84. package/esm2022/backend/lib/auth/oidc/signincallback.component.mjs +26 -0
  85. package/esm2022/backend/lib/auth/oidc/tenant.loader.mjs +41 -0
  86. package/esm2022/backend/lib/auth/oidc/usermanager.service.mjs +35 -0
  87. package/esm2022/backend/lib/auth/userpass/application.loader.mjs +30 -0
  88. package/esm2022/backend/lib/auth/userpass/index.mjs +5 -0
  89. package/esm2022/backend/lib/auth/userpass/permission.loader.mjs +12 -0
  90. package/esm2022/backend/lib/auth/userpass/tenant.loader.mjs +26 -0
  91. package/esm2022/backend/lib/auth/userpass/userpass.strategy.mjs +40 -0
  92. package/esm2022/backend/lib/backend.configs.mjs +3 -0
  93. package/esm2022/backend/lib/backend.module.mjs +106 -0
  94. package/esm2022/backend/lib/data/api/data-provider.mjs +67 -0
  95. package/esm2022/index.mjs +2 -0
  96. package/esm2022/notification/acorex-modules-notification.mjs +5 -0
  97. package/esm2022/notification/index.mjs +2 -0
  98. package/esm2022/notification/lib/notification.module.mjs +16 -0
  99. package/fesm2022/acorex-modules-auth-acorex-modules-auth-3tiGzryz.mjs +484 -0
  100. package/fesm2022/acorex-modules-auth-acorex-modules-auth-3tiGzryz.mjs.map +1 -0
  101. package/fesm2022/acorex-modules-auth-app-chooser.component-Hh2T5orM.mjs +70 -0
  102. package/fesm2022/acorex-modules-auth-app-chooser.component-Hh2T5orM.mjs.map +1 -0
  103. package/fesm2022/acorex-modules-auth-blank.layout-0xNRyD5z.mjs +18 -0
  104. package/fesm2022/acorex-modules-auth-blank.layout-0xNRyD5z.mjs.map +1 -0
  105. package/fesm2022/acorex-modules-auth-email.component-ZbTwT8iu.mjs +45 -0
  106. package/fesm2022/acorex-modules-auth-email.component-ZbTwT8iu.mjs.map +1 -0
  107. package/fesm2022/acorex-modules-auth-login.module-lGs54nBU.mjs +71 -0
  108. package/fesm2022/acorex-modules-auth-login.module-lGs54nBU.mjs.map +1 -0
  109. package/fesm2022/acorex-modules-auth-master.layout-ytopPv2z.mjs +37 -0
  110. package/fesm2022/acorex-modules-auth-master.layout-ytopPv2z.mjs.map +1 -0
  111. package/fesm2022/acorex-modules-auth-password.component-Q9Me4kkK.mjs +72 -0
  112. package/fesm2022/acorex-modules-auth-password.component-Q9Me4kkK.mjs.map +1 -0
  113. package/fesm2022/acorex-modules-auth-password.component-p1Ks9S5q.mjs +110 -0
  114. package/fesm2022/acorex-modules-auth-password.component-p1Ks9S5q.mjs.map +1 -0
  115. package/fesm2022/acorex-modules-auth-register.module-ckbVm-yf.mjs +77 -0
  116. package/fesm2022/acorex-modules-auth-register.module-ckbVm-yf.mjs.map +1 -0
  117. package/fesm2022/acorex-modules-auth-result.component-ORUU7lkV.mjs +36 -0
  118. package/fesm2022/acorex-modules-auth-result.component-ORUU7lkV.mjs.map +1 -0
  119. package/fesm2022/acorex-modules-auth-routes-jgo2XGe0.mjs +9 -0
  120. package/fesm2022/acorex-modules-auth-routes-jgo2XGe0.mjs.map +1 -0
  121. package/fesm2022/acorex-modules-auth-tenant-chooser.component-PeGg21Im.mjs +84 -0
  122. package/fesm2022/acorex-modules-auth-tenant-chooser.component-PeGg21Im.mjs.map +1 -0
  123. package/fesm2022/acorex-modules-auth-two-factor-code.component-fP6CLq9T.mjs +40 -0
  124. package/fesm2022/acorex-modules-auth-two-factor-code.component-fP6CLq9T.mjs.map +1 -0
  125. package/fesm2022/acorex-modules-auth-two-factor.module--fcoNW-s.mjs +60 -0
  126. package/fesm2022/acorex-modules-auth-two-factor.module--fcoNW-s.mjs.map +1 -0
  127. package/fesm2022/acorex-modules-auth.mjs +19 -0
  128. package/fesm2022/acorex-modules-auth.mjs.map +1 -0
  129. package/fesm2022/acorex-modules-backend.mjs +488 -0
  130. package/fesm2022/acorex-modules-backend.mjs.map +1 -0
  131. package/fesm2022/acorex-modules-notification.mjs +23 -0
  132. package/fesm2022/acorex-modules-notification.mjs.map +1 -0
  133. package/fesm2022/acorex-modules.mjs +6 -0
  134. package/fesm2022/acorex-modules.mjs.map +1 -0
  135. package/index.d.ts +2 -0
  136. package/notification/README.md +4 -0
  137. package/notification/index.d.ts +1 -0
  138. package/notification/lib/notification.module.d.ts +6 -0
  139. package/package.json +44 -0
@@ -0,0 +1,4 @@
1
+ export * from './lib/auth.config';
2
+ export * from './lib/auth.module';
3
+ export * from './lib/shared/services';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXV0aC9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9hdXRoLmNvbmZpZyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdXRoLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvc2VydmljZXMnO1xuIl19
@@ -0,0 +1,106 @@
1
+ import { AXPAuthGuard, AXPSessionService } from '@acorex/platform/auth';
2
+ import { AXPComponentSlotModule } from '@acorex/platform/common';
3
+ import { inject, NgModule } from '@angular/core';
4
+ import { Router, RouterModule, ROUTES } from '@angular/router';
5
+ import { firstValueFrom } from 'rxjs';
6
+ import { AXMAppChooserSlotComponent } from './app-chooser/app-chooser-slot.component';
7
+ import { AXMAuthProfileSlotComponent } from './profile/profile-slot.component';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@acorex/platform/common";
10
+ const canActivateTenantChooser = async (route, state) => {
11
+ const sessionService = inject(AXPSessionService);
12
+ const router = inject(Router);
13
+ const tenant = await firstValueFrom(sessionService.tenants$);
14
+ if (tenant.length == 0) {
15
+ return router.createUrlTree(['/auth/login']);
16
+ }
17
+ if (tenant.length == 1) {
18
+ await sessionService.selectTenant(tenant[0].name);
19
+ return router.createUrlTree(['/auth/account/app-chooser']);
20
+ }
21
+ return true;
22
+ };
23
+ const canActivateAppChooser = async (route, state) => {
24
+ const sessionService = inject(AXPSessionService);
25
+ const router = inject(Router);
26
+ const apps = await firstValueFrom(sessionService.applications$);
27
+ if (apps.length == 0) {
28
+ return router.createUrlTree(['/auth/login']);
29
+ }
30
+ if (apps.length == 1) {
31
+ await sessionService.selectApplication(apps[0].name);
32
+ return router.createUrlTree([`/${apps[0].name}/home`]);
33
+ }
34
+ return true;
35
+ };
36
+ function routesFacory() {
37
+ let routes = [];
38
+ routes = [
39
+ {
40
+ path: 'tenant-chooser',
41
+ loadComponent: () => import('./tenant-chooser/tenant-chooser.component').then((c) => c.AXPAuthTenantChooserComponent),
42
+ canActivate: [AXPAuthGuard, canActivateTenantChooser]
43
+ },
44
+ {
45
+ path: 'app-chooser',
46
+ loadComponent: () => import('./app-chooser/app-chooser.component').then((c) => c.AXPAuthAppChooserComponent),
47
+ canActivate: [AXPAuthGuard, canActivateAppChooser]
48
+ },
49
+ ];
50
+ return routes;
51
+ }
52
+ export class AXPAccountModule {
53
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXPAccountModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
54
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.2", ngImport: i0, type: AXPAccountModule, imports: [RouterModule, i1.AXPComponentSlotModule] }); }
55
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXPAccountModule, providers: [
56
+ {
57
+ provide: ROUTES,
58
+ multi: true,
59
+ useFactory: routesFacory,
60
+ },
61
+ ], imports: [RouterModule,
62
+ //
63
+ AXPComponentSlotModule.forChild({
64
+ "header-end": [
65
+ {
66
+ name: "app-choser",
67
+ component: AXMAppChooserSlotComponent,
68
+ },
69
+ {
70
+ name: "profile",
71
+ component: AXMAuthProfileSlotComponent,
72
+ },
73
+ ]
74
+ })] }); }
75
+ }
76
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXPAccountModule, decorators: [{
77
+ type: NgModule,
78
+ args: [{
79
+ declarations: [],
80
+ imports: [
81
+ RouterModule,
82
+ //
83
+ AXPComponentSlotModule.forChild({
84
+ "header-end": [
85
+ {
86
+ name: "app-choser",
87
+ component: AXMAppChooserSlotComponent,
88
+ },
89
+ {
90
+ name: "profile",
91
+ component: AXMAuthProfileSlotComponent,
92
+ },
93
+ ]
94
+ })
95
+ ],
96
+ exports: [],
97
+ providers: [
98
+ {
99
+ provide: ROUTES,
100
+ multi: true,
101
+ useFactory: routesFacory,
102
+ },
103
+ ],
104
+ }]
105
+ }] });
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXV0aC9zcmMvbGliL2FjY291bnQvYWNjb3VudC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBeUMsTUFBTSxFQUFFLFlBQVksRUFBdUIsTUFBTSxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDbkksT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN0RixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7O0FBRy9FLE1BQU0sd0JBQXdCLEdBQzVCLEtBQUssRUFBRSxLQUE2QixFQUFFLEtBQTBCLEVBQUUsRUFBRTtJQUNsRSxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNqRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUIsTUFBTSxNQUFNLEdBQUcsTUFBTSxjQUFjLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzdELElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN2QixPQUFPLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFDRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDdkIsTUFBTSxj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QUksRUFBRSxTQUFTO29DQUNmLFNBQVMsRUFBRSwyQkFBMkI7aUNBQ3ZDOzZCQUNGO3lCQUNGLENBQUM7cUJBQ0g7b0JBQ0QsT0FBTyxFQUFFLEVBQUU7b0JBQ1gsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxNQUFNOzRCQUNmLEtBQUssRUFBRSxJQUFJOzRCQUNYLFVBQVUsRUFBRSxZQUFZO3lCQUN6QjtxQkFDRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUEF1dGhHdWFyZCwgQVhQU2Vzc2lvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2F1dGgnO1xuaW1wb3J0IHsgQVhQQ29tcG9uZW50U2xvdE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IGluamVjdCwgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIENhbkFjdGl2YXRlRm4sIFJvdXRlciwgUm91dGVyTW9kdWxlLCBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBST1VURVMsIFJvdXRlcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVhNQXBwQ2hvb3NlclNsb3RDb21wb25lbnQgfSBmcm9tICcuL2FwcC1jaG9vc2VyL2FwcC1jaG9vc2VyLXNsb3QuY29tcG9uZW50JztcbmltcG9ydCB7IEFYTUF1dGhQcm9maWxlU2xvdENvbXBvbmVudCB9IGZyb20gJy4vcHJvZmlsZS9wcm9maWxlLXNsb3QuY29tcG9uZW50JztcblxuXG5jb25zdCBjYW5BY3RpdmF0ZVRlbmFudENob29zZXI6IENhbkFjdGl2YXRlRm4gPVxuICBhc3luYyAocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KSA9PiB7XG4gICAgY29uc3Qgc2Vzc2lvblNlcnZpY2UgPSBpbmplY3QoQVhQU2Vzc2lvblNlcnZpY2UpO1xuICAgIGNvbnN0IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICAgIGNvbnN0IHRlbmFudCA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHNlc3Npb25TZXJ2aWNlLnRlbmFudHMkKTtcbiAgICBpZiAodGVuYW50Lmxlbmd0aCA9PSAwKSB7XG4gICAgICByZXR1cm4gcm91dGVyLmNyZWF0ZVVybFRyZWUoWycvYXV0aC9sb2dpbiddKTtcbiAgICB9XG4gICAgaWYgKHRlbmFudC5sZW5ndGggPT0gMSkge1xuICAgICAgYXdhaXQgc2Vzc2lvblNlcnZpY2Uuc2VsZWN0VGVuYW50KHRlbmFudFswXS5uYW1lKTtcbiAgICAgIHJldHVybiByb3V0ZXIuY3JlYXRlVXJsVHJlZShbJy9hdXRoL2FjY291bnQvYXBwLWNob29zZXInXSk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG5cbmNvbnN0IGNhbkFjdGl2YXRlQXBwQ2hvb3NlcjogQ2FuQWN0aXZhdGVGbiA9XG4gIGFzeW5jIChyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpID0+IHtcbiAgICBjb25zdCBzZXNzaW9uU2VydmljZSA9IGluamVjdChBWFBTZXNzaW9uU2VydmljZSk7XG4gICAgY29uc3Qgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gICAgY29uc3QgYXBwcyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHNlc3Npb25TZXJ2aWNlLmFwcGxpY2F0aW9ucyQpO1xuICAgIGlmIChhcHBzLmxlbmd0aCA9PSAwKSB7XG4gICAgICByZXR1cm4gcm91dGVyLmNyZWF0ZVVybFRyZWUoWycvYXV0aC9sb2dpbiddKTtcbiAgICB9XG4gICAgaWYgKGFwcHMubGVuZ3RoID09IDEpIHtcbiAgICAgIGF3YWl0IHNlc3Npb25TZXJ2aWNlLnNlbGVjdEFwcGxpY2F0aW9uKGFwcHNbMF0ubmFtZSlcbiAgICAgIHJldHVybiByb3V0ZXIuY3JlYXRlVXJsVHJlZShbYC8ke2FwcHNbMF0ubmFtZX0vaG9tZWBdKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWVcbiAgfTtcblxuXG5mdW5jdGlvbiByb3V0ZXNGYWNvcnkoKSB7XG4gIGxldCByb3V0ZXM6IFJvdXRlcyA9IFtdO1xuICByb3V0ZXMgPSBbXG4gICAge1xuICAgICAgcGF0aDogJ3RlbmFudC1jaG9vc2VyJyxcbiAgICAgIGxvYWRDb21wb25lbnQ6ICgpID0+XG4gICAgICAgIGltcG9ydCgnLi90ZW5hbnQtY2hvb3Nlci90ZW5hbnQtY2hvb3Nlci5jb21wb25lbnQnKS50aGVuKFxuICAgICAgICAgIChjKSA9PiBjLkFYUEF1dGhUZW5hbnRDaG9vc2VyQ29tcG9uZW50XG4gICAgICAgICksXG4gICAgICBjYW5BY3RpdmF0ZTogW0FYUEF1dGhHdWFyZCwgY2FuQWN0aXZhdGVUZW5hbnRDaG9vc2VyXVxuICAgIH0sXG4gICAge1xuICAgICAgcGF0aDogJ2FwcC1jaG9vc2VyJyxcbiAgICAgIGxvYWRDb21wb25lbnQ6ICgpID0+XG4gICAgICAgIGltcG9ydCgnLi9hcHAtY2hvb3Nlci9hcHAtY2hvb3Nlci5jb21wb25lbnQnKS50aGVuKChjKSA9PiBjLkFYUEF1dGhBcHBDaG9vc2VyQ29tcG9uZW50KSxcbiAgICAgIGNhbkFjdGl2YXRlOiBbQVhQQXV0aEd1YXJkLCBjYW5BY3RpdmF0ZUFwcENob29zZXJdXG4gICAgfSxcbiAgXTtcbiAgcmV0dXJuIHJvdXRlcztcbn1cblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXSxcbiAgaW1wb3J0czogW1xuICAgIFJvdXRlck1vZHVsZSxcbiAgICAvL1xuICAgIEFYUENvbXBvbmVudFNsb3RNb2R1bGUuZm9yQ2hpbGQoe1xuICAgICAgXCJoZWFkZXItZW5kXCI6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwiYXBwLWNob3NlclwiLFxuICAgICAgICAgIGNvbXBvbmVudDogQVhNQXBwQ2hvb3NlclNsb3RDb21wb25lbnQsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcInByb2ZpbGVcIixcbiAgICAgICAgICBjb21wb25lbnQ6IEFYTUF1dGhQcm9maWxlU2xvdENvbXBvbmVudCxcbiAgICAgICAgfSxcbiAgICAgIF1cbiAgICB9KVxuICBdLFxuICBleHBvcnRzOiBbXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogUk9VVEVTLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VGYWN0b3J5OiByb3V0ZXNGYWNvcnksXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQQWNjb3VudE1vZHVsZSB7IH1cbiJdfQ==
@@ -0,0 +1,31 @@
1
+ import { AXDecoratorModule } from '@acorex/components/decorators';
2
+ import { AXLoadingModule } from '@acorex/components/loading';
3
+ import { AXPSessionService } from '@acorex/platform/auth';
4
+ import { AXPLogoComponent } from '@acorex/platform/layouts';
5
+ import { CommonModule } from '@angular/common';
6
+ import { Component, inject } from '@angular/core';
7
+ import { Router } from '@angular/router';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/common";
10
+ import * as i2 from "@acorex/components/decorators";
11
+ import * as i3 from "@acorex/components/loading";
12
+ export class AXPAppChooserListComponent {
13
+ constructor() {
14
+ this.router = inject(Router);
15
+ this.sessionService = inject(AXPSessionService);
16
+ this.selectedApplication = null;
17
+ this.applications$ = this.sessionService.applications$;
18
+ }
19
+ async chooseApplication(item) {
20
+ this.selectedApplication = item;
21
+ await this.sessionService.selectApplication(item.name);
22
+ this.router.navigate([`/${item.name}/home`]);
23
+ }
24
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXPAppChooserListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
25
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: AXPAppChooserListComponent, isStandalone: true, selector: "axp-app-chooser-list", ngImport: i0, template: "<div class=\" ax-w-full ax-overflow-auto ax-max-h-[300px] ax-pe-2\">\n @for(application of (applications$ | async); track $index){\n <div\n class=\"ax-flex ax-gap-2 ax-justify-between ax-border-b last:ax-border-b-0 ax-py-3 ax-items-start ax-cursor-pointer\"\n (click)=\"chooseApplication(application)\"\n >\n <div class=\"ax-flex ax-flex-1 ax-gap-2 ax-items-center ax-justify-center ax-font-medium\">\n <div 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\">\n <ax-icon class=\"fa-solid fa-computer ax-text-neutral-500 ax-text-lg\"> </ax-icon>\n <!-- TODO: logo instead of application icon -->\n <!-- <axp-logo [source]=\"application.logo\" [attr.alt]=\"application.title\"\n class=\"!ax-flex ax-items-center ax-justify-center !ax-text-sm ax-mx-auto ax-w-10 ax-h-10 ax-bg-neutral-200 ax-rounded-full\"></axp-logo> -->\n </div>\n <span class=\"ax-flex-1 ax-text-start md:ax-text-base ax-text-sm\">{{ application.title }}</span>\n <span class=\"ax-text-gray-500 md:ax-text-sm ax-text-xs\">{{application.editionName}}</span>\n @if(application.name===selectedApplication?.name){\n <ax-loading></ax-loading>\n }@else {\n <ax-icon class=\"fa-solid fa-chevron-right ax-text-neutral-400\"> </ax-icon>\n }\n </div>\n </div>\n }\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i3.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }] }); }
26
+ }
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXPAppChooserListComponent, decorators: [{
28
+ type: Component,
29
+ args: [{ selector: 'axp-app-chooser-list', standalone: true, imports: [CommonModule, AXDecoratorModule, AXPLogoComponent, AXLoadingModule], template: "<div class=\" ax-w-full ax-overflow-auto ax-max-h-[300px] ax-pe-2\">\n @for(application of (applications$ | async); track $index){\n <div\n class=\"ax-flex ax-gap-2 ax-justify-between ax-border-b last:ax-border-b-0 ax-py-3 ax-items-start ax-cursor-pointer\"\n (click)=\"chooseApplication(application)\"\n >\n <div class=\"ax-flex ax-flex-1 ax-gap-2 ax-items-center ax-justify-center ax-font-medium\">\n <div 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\">\n <ax-icon class=\"fa-solid fa-computer ax-text-neutral-500 ax-text-lg\"> </ax-icon>\n <!-- TODO: logo instead of application icon -->\n <!-- <axp-logo [source]=\"application.logo\" [attr.alt]=\"application.title\"\n class=\"!ax-flex ax-items-center ax-justify-center !ax-text-sm ax-mx-auto ax-w-10 ax-h-10 ax-bg-neutral-200 ax-rounded-full\"></axp-logo> -->\n </div>\n <span class=\"ax-flex-1 ax-text-start md:ax-text-base ax-text-sm\">{{ application.title }}</span>\n <span class=\"ax-text-gray-500 md:ax-text-sm ax-text-xs\">{{application.editionName}}</span>\n @if(application.name===selectedApplication?.name){\n <ax-loading></ax-loading>\n }@else {\n <ax-icon class=\"fa-solid fa-chevron-right ax-text-neutral-400\"> </ax-icon>\n }\n </div>\n </div>\n }\n</div>" }]
30
+ }] });
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWNob29zZXItbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXV0aC9zcmMvbGliL2FjY291bnQvYXBwLWNob29zZXIvYXBwLWNob29zZXItbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXV0aC9zcmMvbGliL2FjY291bnQvYXBwLWNob29zZXIvYXBwLWNob29zZXItbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFrQixpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBUXpDLE1BQU0sT0FBTywwQkFBMEI7SUFOdkM7UUFPVSxXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hCLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFekMsd0JBQW1CLEdBQTBCLElBQUksQ0FBQztRQUNsRCxrQkFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDO0tBTzdEO0lBTEMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQW9CO1FBQzFDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7UUFDaEMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQztJQUMvQyxDQUFDOzhHQVhVLDBCQUEwQjtrR0FBMUIsMEJBQTBCLGdGQ2R2Qyw2NkNBdUJNLDJDRFhNLFlBQVksbUZBQUUsaUJBQWlCLCtIQUFvQixlQUFlOzsyRkFFakUsMEJBQTBCO2tCQU50QyxTQUFTOytCQUNFLHNCQUFzQixjQUVwQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWExvYWRpbmdNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbG9hZGluZyc7XG5pbXBvcnQgeyBBWFBBcHBsaWNhdGlvbiwgQVhQU2Vzc2lvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2F1dGgnO1xuaW1wb3J0IHsgQVhQTG9nb0NvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0cyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4cC1hcHAtY2hvb3Nlci1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICdhcHAtY2hvb3Nlci1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQVhEZWNvcmF0b3JNb2R1bGUsIEFYUExvZ29Db21wb25lbnQsIEFYTG9hZGluZ01vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIEFYUEFwcENob29zZXJMaXN0Q29tcG9uZW50IHtcbiAgcHJpdmF0ZSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHJpdmF0ZSBzZXNzaW9uU2VydmljZSA9IGluamVjdChBWFBTZXNzaW9uU2VydmljZSk7XG5cbiAgcHJvdGVjdGVkIHNlbGVjdGVkQXBwbGljYXRpb246IEFYUEFwcGxpY2F0aW9uIHwgbnVsbCA9IG51bGw7XG4gIHByb3RlY3RlZCBhcHBsaWNhdGlvbnMkID0gdGhpcy5zZXNzaW9uU2VydmljZS5hcHBsaWNhdGlvbnMkO1xuXG4gIGFzeW5jIGNob29zZUFwcGxpY2F0aW9uKGl0ZW06IEFYUEFwcGxpY2F0aW9uKSB7XG4gICAgdGhpcy5zZWxlY3RlZEFwcGxpY2F0aW9uID0gaXRlbTtcbiAgICBhd2FpdCB0aGlzLnNlc3Npb25TZXJ2aWNlLnNlbGVjdEFwcGxpY2F0aW9uKGl0ZW0ubmFtZSk7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2AvJHtpdGVtLm5hbWV9L2hvbWVgXSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCIgYXgtdy1mdWxsIGF4LW92ZXJmbG93LWF1dG8gYXgtbWF4LWgtWzMwMHB4XSBheC1wZS0yXCI+XG4gICAgQGZvcihhcHBsaWNhdGlvbiBvZiAoYXBwbGljYXRpb25zJCB8IGFzeW5jKTsgdHJhY2sgJGluZGV4KXtcbiAgICA8ZGl2XG4gICAgIGNsYXNzPVwiYXgtZmxleCBheC1nYXAtMiBheC1qdXN0aWZ5LWJldHdlZW4gYXgtYm9yZGVyLWIgbGFzdDpheC1ib3JkZXItYi0wIGF4LXB5LTMgYXgtaXRlbXMtc3RhcnQgYXgtY3Vyc29yLXBvaW50ZXJcIlxuICAgIChjbGljayk9XCJjaG9vc2VBcHBsaWNhdGlvbihhcHBsaWNhdGlvbilcIlxuICAgID5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LTEgYXgtZ2FwLTIgYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktY2VudGVyIGF4LWZvbnQtbWVkaXVtXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC13LTEyIGF4LWgtMTIgYXgtZmxleCBheC1qdXN0aWZ5LWNlbnRlciBheC1pdGVtcy1jZW50ZXIgYXgtcm91bmRlZC1mdWxsIGF4LWJnLW5ldXRyYWwtMTAwIGF4LW0tYXV0b1wiPlxuICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImZhLXNvbGlkIGZhLWNvbXB1dGVyIGF4LXRleHQtbmV1dHJhbC01MDAgYXgtdGV4dC1sZ1wiPiA8L2F4LWljb24+XG4gICAgICAgIDwhLS0gVE9ETzogbG9nbyBpbnN0ZWFkIG9mIGFwcGxpY2F0aW9uIGljb24gLS0+XG4gICAgICAgIDwhLS0gPGF4cC1sb2dvIFtzb3VyY2VdPVwiYXBwbGljYXRpb24ubG9nb1wiIFthdHRyLmFsdF09XCJhcHBsaWNhdGlvbi50aXRsZVwiXG4gICAgICAgICAgICBjbGFzcz1cIiFheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWNlbnRlciAhYXgtdGV4dC1zbSBheC1teC1hdXRvIGF4LXctMTAgYXgtaC0xMCBheC1iZy1uZXV0cmFsLTIwMCBheC1yb3VuZGVkLWZ1bGxcIj48L2F4cC1sb2dvPiAtLT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LWZsZXgtMSBheC10ZXh0LXN0YXJ0IG1kOmF4LXRleHQtYmFzZSBheC10ZXh0LXNtXCI+e3sgYXBwbGljYXRpb24udGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LXRleHQtZ3JheS01MDAgbWQ6YXgtdGV4dC1zbSBheC10ZXh0LXhzXCI+e3thcHBsaWNhdGlvbi5lZGl0aW9uTmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgQGlmKGFwcGxpY2F0aW9uLm5hbWU9PT1zZWxlY3RlZEFwcGxpY2F0aW9uPy5uYW1lKXtcbiAgICAgICAgICAgICAgICA8YXgtbG9hZGluZz48L2F4LWxvYWRpbmc+XG4gICAgICAgICAgICB9QGVsc2Uge1xuICAgICAgICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtc29saWQgZmEtY2hldnJvbi1yaWdodCBheC10ZXh0LW5ldXRyYWwtNDAwXCI+IDwvYXgtaWNvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgfVxuPC9kaXY+Il19
@@ -0,0 +1,41 @@
1
+ import { AXButtonModule } from "@acorex/components/button";
2
+ import { AXDecoratorModule } from "@acorex/components/decorators";
3
+ import { AXPopoverModule } from "@acorex/components/popover";
4
+ import { AXPSessionService } from "@acorex/platform/auth";
5
+ import { AXPLogoComponent } from "@acorex/platform/layouts";
6
+ import { CommonModule } from "@angular/common";
7
+ import { Component, inject } from "@angular/core";
8
+ import { Router } from "@angular/router";
9
+ import { AXPAppChooserListComponent } from "./app-chooser-list.component";
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@angular/common";
12
+ import * as i2 from "@acorex/components/button";
13
+ import * as i3 from "@acorex/components/popover";
14
+ import * as i4 from "@acorex/components/decorators";
15
+ export class AXMAppChooserSlotComponent {
16
+ constructor() {
17
+ this.sessionService = inject(AXPSessionService);
18
+ this.tenant$ = this.sessionService.tenant$;
19
+ this.application$ = this.sessionService.application$;
20
+ this.applications$ = this.sessionService.applications$;
21
+ this.router = inject(Router);
22
+ }
23
+ async chooseApplication(item) {
24
+ await this.sessionService.selectApplication(item.name);
25
+ this.router.navigate([`/${item.name}/home`]);
26
+ }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMAppChooserSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
28
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: AXMAppChooserSlotComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "@if(((applications$ | async)?.length ?? 0) > 1)\n{\n<ax-button color=\"default\" look=\"blank\" #appChooser>\n <ax-icon>\n <i class=\"fa-solid fa-grid-2 ax-text-slate-400 dark:ax-text-slate-200\"></i>\n </ax-icon>\n</ax-button>\n<ax-popover [target]=\"appChooser\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\" [adaptivityEnabled]=\"true\">\n <div class=\"ax-bg-surface ax-border ax-overflow-hidden ax-rounded-md ax-shadow-md ax-w-full ax-min-w-64 ax-p-3\">\n <axp-app-chooser-list></axp-app-chooser-list>\n </div>\n</ax-popover>\n}", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { 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: AXPopoverModule }, { kind: "component", type: i3.AXPopoverComponent, selector: "ax-popover", inputs: ["offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "backdropClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i4.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: AXPAppChooserListComponent, selector: "axp-app-chooser-list" }] }); }
29
+ }
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMAppChooserSlotComponent, decorators: [{
31
+ type: Component,
32
+ args: [{ standalone: true, imports: [
33
+ CommonModule,
34
+ AXButtonModule,
35
+ AXPopoverModule,
36
+ AXDecoratorModule,
37
+ AXPLogoComponent,
38
+ AXPAppChooserListComponent
39
+ ], template: "@if(((applications$ | async)?.length ?? 0) > 1)\n{\n<ax-button color=\"default\" look=\"blank\" #appChooser>\n <ax-icon>\n <i class=\"fa-solid fa-grid-2 ax-text-slate-400 dark:ax-text-slate-200\"></i>\n </ax-icon>\n</ax-button>\n<ax-popover [target]=\"appChooser\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\" [adaptivityEnabled]=\"true\">\n <div class=\"ax-bg-surface ax-border ax-overflow-hidden ax-rounded-md ax-shadow-md ax-w-full ax-min-w-64 ax-p-3\">\n <axp-app-chooser-list></axp-app-chooser-list>\n </div>\n</ax-popover>\n}" }]
40
+ }] });
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWNob29zZXItc2xvdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXV0aC9zcmMvbGliL2FjY291bnQvYXBwLWNob29zZXIvYXBwLWNob29zZXItc2xvdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXV0aC9zcmMvbGliL2FjY291bnQvYXBwLWNob29zZXIvYXBwLWNob29zZXItc2xvdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBa0IsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7QUFjMUUsTUFBTSxPQUFPLDBCQUEwQjtJQVp2QztRQWFZLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDekMsWUFBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDO1FBRXRDLGlCQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUM7UUFDaEQsa0JBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQztRQUVwRCxXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBU25DO0lBTkcsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQW9CO1FBQ3hDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDakQsQ0FBQzs4R0FiUSwwQkFBMEI7a0dBQTFCLDBCQUEwQix3RUN0QnZDLGlqQkFZQywyQ0RFTyxZQUFZLG1GQUNaLGNBQWMsNlVBQ2QsZUFBZSxvVEFDZixpQkFBaUIsZ0lBRWpCLDBCQUEwQjs7MkZBR3JCLDBCQUEwQjtrQkFadEMsU0FBUztpQ0FFTSxJQUFJLFdBQ1A7d0JBQ0wsWUFBWTt3QkFDWixjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsaUJBQWlCO3dCQUNqQixnQkFBZ0I7d0JBQ2hCLDBCQUEwQjtxQkFDN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gXCJAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uXCI7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gXCJAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgQVhQb3BvdmVyTW9kdWxlIH0gZnJvbSBcIkBhY29yZXgvY29tcG9uZW50cy9wb3BvdmVyXCI7XG5pbXBvcnQgeyBBWFBBcHBsaWNhdGlvbiwgQVhQU2Vzc2lvblNlcnZpY2UgfSBmcm9tIFwiQGFjb3JleC9wbGF0Zm9ybS9hdXRoXCI7XG5pbXBvcnQgeyBBWFBMb2dvQ29tcG9uZW50IH0gZnJvbSBcIkBhY29yZXgvcGxhdGZvcm0vbGF5b3V0c1wiO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHsgQVhQQXBwQ2hvb3Nlckxpc3RDb21wb25lbnQgfSBmcm9tIFwiLi9hcHAtY2hvb3Nlci1saXN0LmNvbXBvbmVudFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogJy4vYXBwLWNob29zZXItc2xvdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgQVhCdXR0b25Nb2R1bGUsXG4gICAgICAgIEFYUG9wb3Zlck1vZHVsZSxcbiAgICAgICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgICAgIEFYUExvZ29Db21wb25lbnQsXG4gICAgICAgIEFYUEFwcENob29zZXJMaXN0Q29tcG9uZW50XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBBWE1BcHBDaG9vc2VyU2xvdENvbXBvbmVudCB7XG4gICAgcHJpdmF0ZSBzZXNzaW9uU2VydmljZSA9IGluamVjdChBWFBTZXNzaW9uU2VydmljZSk7XG4gICAgcHJvdGVjdGVkIHRlbmFudCQgPSB0aGlzLnNlc3Npb25TZXJ2aWNlLnRlbmFudCQ7XG5cbiAgICBwcm90ZWN0ZWQgYXBwbGljYXRpb24kID0gdGhpcy5zZXNzaW9uU2VydmljZS5hcHBsaWNhdGlvbiQ7XG4gICAgcHJvdGVjdGVkIGFwcGxpY2F0aW9ucyQgPSB0aGlzLnNlc3Npb25TZXJ2aWNlLmFwcGxpY2F0aW9ucyQ7XG5cbiAgICBwcml2YXRlIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuXG5cbiAgICBhc3luYyBjaG9vc2VBcHBsaWNhdGlvbihpdGVtOiBBWFBBcHBsaWNhdGlvbikge1xuICAgICAgICBhd2FpdCB0aGlzLnNlc3Npb25TZXJ2aWNlLnNlbGVjdEFwcGxpY2F0aW9uKGl0ZW0ubmFtZSk7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtgLyR7aXRlbS5uYW1lfS9ob21lYF0pO1xuICAgIH1cblxuXG59IiwiQGlmKCgoYXBwbGljYXRpb25zJCB8IGFzeW5jKT8ubGVuZ3RoID8/IDApID4gMSlcbntcbjxheC1idXR0b24gY29sb3I9XCJkZWZhdWx0XCIgbG9vaz1cImJsYW5rXCIgI2FwcENob29zZXI+XG4gICAgPGF4LWljb24+XG4gICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtZ3JpZC0yIGF4LXRleHQtc2xhdGUtNDAwIGRhcms6YXgtdGV4dC1zbGF0ZS0yMDBcIj48L2k+XG4gICAgPC9heC1pY29uPlxuPC9heC1idXR0b24+XG48YXgtcG9wb3ZlciBbdGFyZ2V0XT1cImFwcENob29zZXJcIiBbb3Blbk9uXT1cIid0b2dnbGUnXCIgW2Nsb3NlT25dPVwiJ2NsaWNrT3V0J1wiIFthZGFwdGl2aXR5RW5hYmxlZF09XCJ0cnVlXCI+XG4gICAgPGRpdiBjbGFzcz1cImF4LWJnLXN1cmZhY2UgYXgtYm9yZGVyIGF4LW92ZXJmbG93LWhpZGRlbiBheC1yb3VuZGVkLW1kIGF4LXNoYWRvdy1tZCBheC13LWZ1bGwgYXgtbWluLXctNjQgYXgtcC0zXCI+XG4gICAgICAgIDxheHAtYXBwLWNob29zZXItbGlzdD48L2F4cC1hcHAtY2hvb3Nlci1saXN0PlxuICAgIDwvZGl2PlxuPC9heC1wb3BvdmVyPlxufSJdfQ==
@@ -0,0 +1,62 @@
1
+ import { Component, ViewEncapsulation, inject } from '@angular/core';
2
+ import { AXAvatarModule } from '@acorex/components/avatar';
3
+ import { AXButtonModule } from '@acorex/components/button';
4
+ import { AXCheckBoxModule } from '@acorex/components/check-box';
5
+ import { AXDecoratorModule } from '@acorex/components/decorators';
6
+ import { AXFormModule } from '@acorex/components/form';
7
+ import { AXImageModule } from '@acorex/components/image';
8
+ import { AXLabelModule } from '@acorex/components/label';
9
+ import { AXLoadingModule } from '@acorex/components/loading';
10
+ import { AXTextBoxModule } from '@acorex/components/text-box';
11
+ import { AXTranslationModule } from '@acorex/core/translation';
12
+ import { AXPSessionService } from '@acorex/platform/auth';
13
+ import { AXP_PLATFORM_CONFIG_TOKEN } from '@acorex/platform/common';
14
+ import { AXPLogoComponent } from '@acorex/platform/layouts';
15
+ import { CommonModule } from '@angular/common';
16
+ import { Router } from '@angular/router';
17
+ import { AXPTenantChooserDropdownComponent } from '../tenant-chooser/tenant-chooser-dropdown.component';
18
+ import { AXPAppChooserListComponent } from './app-chooser-list.component';
19
+ import * as i0 from "@angular/core";
20
+ import * as i1 from "@angular/common";
21
+ import * as i2 from "@acorex/components/avatar";
22
+ import * as i3 from "@acorex/components/image";
23
+ import * as i4 from "@acorex/core/translation";
24
+ export class AXPAuthAppChooserComponent {
25
+ constructor() {
26
+ this.router = inject(Router);
27
+ this.platformConfig = inject(AXP_PLATFORM_CONFIG_TOKEN);
28
+ this.sessionService = inject(AXPSessionService);
29
+ this.user = this.sessionService.user;
30
+ this.tenants$ = this.sessionService.tenants$;
31
+ this.tenant = this.sessionService.tenant;
32
+ }
33
+ tenantChooser() {
34
+ this.router.navigate(['/auth/account/tenant-chooser']);
35
+ }
36
+ async handleSignout() {
37
+ await this.sessionService.signout();
38
+ this.router.navigate(['/auth/login']);
39
+ }
40
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXPAuthAppChooserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
41
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: AXPAuthAppChooserComponent, isStandalone: true, selector: "axp-auth-app-chooser", ngImport: i0, template: "<main \n *translate=\"let t\"\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\"\n >\n <section>\n <axp-logo \n [source]=\"platformConfig.logo?.colored\"\n [attr.alt]=\"platformConfig.title\"\n class=\"ax-w-36 ax-mx-auto\"\n ></axp-logo>\n </section>\n <section class=\"ax-flex ax-justify-center\">\n <div\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\"\n >\n <ax-avatar class=\"ax-rounded-full\" [size]=\"72\">\n @if(user?.avatar){\n <ax-image [src]=\"user?.avatar\"></ax-image>\n }\n </ax-avatar>\n <h2 class=\"md:ax-text-lg ax-font-medium\">{{ t('welcome') | async }}, {{ user?.title }}</h2>\n <axp-tenant-chooser-dropdown></axp-tenant-chooser-dropdown>\n <p class=\"ax-text-neutral-500 ax-text-sm md:ax-text-base ax-font-medium\">\n {{ t('application-chooser.description', { scope: 'auth' }) | async }}\n </p>\n <div class=\"ax-mt-3 ax-w-full ax-overflow-auto ax-max-h-[300px] ax-pe-2\">\n <axp-app-chooser-list></axp-app-chooser-list>\n </div>\n </div>\n </section>\n <section>\n <p class=\"ax-text-neutral-400 ax-text-sm\">\n {{ t('application-chooser.footer', { scope: 'auth' }) | async }}\n <ng-container *ngIf=\"tenants$ | async as tenants\">\n @if(tenants.length > 1){\n <a (click)=\"tenantChooser()\" class=\"ax-text-primary-500 ax-cursor-pointer ax-font-medium hover:ax-underline\">\n {{ t('application-chooser.backCompany', { scope: 'auth' }) | async }}\n </a>\n } @else {\n <a (click)=\"handleSignout()\" class=\"ax-text-primary-500 ax-font-medium ax-cursor-pointer hover:ax-underline\">\n {{ t('backLogin', { scope: 'auth' }) | async }}\n </a>\n }\n </ng-container>\n </p>\n </section>\n</main>", styles: [".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: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "ngmodule", type: AXLabelModule }, { kind: "ngmodule", type: AXCheckBoxModule }, { kind: "ngmodule", type: AXAvatarModule }, { kind: "component", type: i2.AXAvatarComponent, selector: "ax-avatar", inputs: ["color", "size", "look"] }, { kind: "ngmodule", type: AXImageModule }, { kind: "component", type: i3.AXImageComponent, selector: "ax-image", inputs: ["overlayMode", "src", "alt", "priority", "lazy"], outputs: ["onLoad", "onError"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: AXPLogoComponent, selector: "axp-logo", inputs: ["source"] }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i4.AXTranslatorDirective, selector: "[translate]" }, { kind: "component", type: AXPTenantChooserDropdownComponent, selector: "axp-tenant-chooser-dropdown" }, { kind: "component", type: AXPAppChooserListComponent, selector: "axp-app-chooser-list" }], encapsulation: i0.ViewEncapsulation.None }); }
42
+ }
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXPAuthAppChooserComponent, decorators: [{
44
+ type: Component,
45
+ args: [{ selector: 'axp-auth-app-chooser', imports: [
46
+ CommonModule,
47
+ AXFormModule,
48
+ AXTextBoxModule,
49
+ AXButtonModule,
50
+ AXLabelModule,
51
+ AXCheckBoxModule,
52
+ AXAvatarModule,
53
+ AXImageModule,
54
+ AXDecoratorModule,
55
+ AXPLogoComponent,
56
+ AXLoadingModule,
57
+ AXTranslationModule,
58
+ AXPTenantChooserDropdownComponent,
59
+ AXPAppChooserListComponent
60
+ ], encapsulation: ViewEncapsulation.None, standalone: true, template: "<main \n *translate=\"let t\"\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\"\n >\n <section>\n <axp-logo \n [source]=\"platformConfig.logo?.colored\"\n [attr.alt]=\"platformConfig.title\"\n class=\"ax-w-36 ax-mx-auto\"\n ></axp-logo>\n </section>\n <section class=\"ax-flex ax-justify-center\">\n <div\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\"\n >\n <ax-avatar class=\"ax-rounded-full\" [size]=\"72\">\n @if(user?.avatar){\n <ax-image [src]=\"user?.avatar\"></ax-image>\n }\n </ax-avatar>\n <h2 class=\"md:ax-text-lg ax-font-medium\">{{ t('welcome') | async }}, {{ user?.title }}</h2>\n <axp-tenant-chooser-dropdown></axp-tenant-chooser-dropdown>\n <p class=\"ax-text-neutral-500 ax-text-sm md:ax-text-base ax-font-medium\">\n {{ t('application-chooser.description', { scope: 'auth' }) | async }}\n </p>\n <div class=\"ax-mt-3 ax-w-full ax-overflow-auto ax-max-h-[300px] ax-pe-2\">\n <axp-app-chooser-list></axp-app-chooser-list>\n </div>\n </div>\n </section>\n <section>\n <p class=\"ax-text-neutral-400 ax-text-sm\">\n {{ t('application-chooser.footer', { scope: 'auth' }) | async }}\n <ng-container *ngIf=\"tenants$ | async as tenants\">\n @if(tenants.length > 1){\n <a (click)=\"tenantChooser()\" class=\"ax-text-primary-500 ax-cursor-pointer ax-font-medium hover:ax-underline\">\n {{ t('application-chooser.backCompany', { scope: 'auth' }) | async }}\n </a>\n } @else {\n <a (click)=\"handleSignout()\" class=\"ax-text-primary-500 ax-font-medium ax-cursor-pointer hover:ax-underline\">\n {{ t('backLogin', { scope: 'auth' }) | async }}\n </a>\n }\n </ng-container>\n </p>\n </section>\n</main>", styles: [".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"] }]
61
+ }] });
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWNob29zZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2F1dGgvc3JjL2xpYi9hY2NvdW50L2FwcC1jaG9vc2VyL2FwcC1jaG9vc2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hdXRoL3NyYy9saWIvYWNjb3VudC9hcHAtY2hvb3Nlci9hcHAtY2hvb3Nlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUN4RyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7O0FBeUIxRSxNQUFNLE9BQU8sMEJBQTBCO0lBdkJ2QztRQXlCVSxXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RCLG1CQUFjLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDckQsbUJBQWMsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUV6QyxTQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7UUFDaEMsYUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO1FBQ3hDLFdBQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQztLQWEvQztJQVZDLGFBQWE7UUFDWCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWE7UUFDakIsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUN4QyxDQUFDOzhHQWxCVSwwQkFBMEI7a0dBQTFCLDBCQUEwQixnRkMzQ3ZDLDA5REE4Q08seU9EckJILFlBQVksdUxBQ1osWUFBWSw4QkFDWixlQUFlLDhCQUNmLGNBQWMsOEJBQ2QsYUFBYSw4QkFDYixnQkFBZ0IsOEJBQ2hCLGNBQWMsMklBQ2QsYUFBYSxpTUFDYixpQkFBaUIsK0JBQ2pCLGdCQUFnQix3RUFDaEIsZUFBZSw4QkFDZixtQkFBbUIsK0dBQ25CLGlDQUFpQyx3RUFDakMsMEJBQTBCOzsyRkFLakIsMEJBQTBCO2tCQXZCdEMsU0FBUzsrQkFDRSxzQkFBc0IsV0FHdkI7d0JBQ1AsWUFBWTt3QkFDWixZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLGlCQUFpQjt3QkFDakIsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIsaUNBQWlDO3dCQUNqQywwQkFBMEI7cUJBQzNCLGlCQUNjLGlCQUFpQixDQUFDLElBQUksY0FDekIsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24sIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBWEF2YXRhck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9hdmF0YXInO1xuaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYQ2hlY2tCb3hNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY2hlY2stYm94JztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhGb3JtTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Zvcm0nO1xuaW1wb3J0IHsgQVhJbWFnZU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9pbWFnZSc7XG5pbXBvcnQgeyBBWExhYmVsTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xhYmVsJztcbmltcG9ydCB7IEFYTG9hZGluZ01vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sb2FkaW5nJztcbmltcG9ydCB7IEFYVGV4dEJveE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90ZXh0LWJveCc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEFYUFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9hdXRoJztcbmltcG9ydCB7IEFYUF9QTEFURk9STV9DT05GSUdfVE9LRU4gfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBBWFBMb2dvQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXRzJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQVhQVGVuYW50Q2hvb3NlckRyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi4vdGVuYW50LWNob29zZXIvdGVuYW50LWNob29zZXItZHJvcGRvd24uY29tcG9uZW50JztcbmltcG9ydCB7IEFYUEFwcENob29zZXJMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9hcHAtY2hvb3Nlci1saXN0LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4cC1hdXRoLWFwcC1jaG9vc2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FwcC1jaG9vc2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXBwLWNob29zZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBBWEZvcm1Nb2R1bGUsXG4gICAgQVhUZXh0Qm94TW9kdWxlLFxuICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgIEFYTGFiZWxNb2R1bGUsXG4gICAgQVhDaGVja0JveE1vZHVsZSxcbiAgICBBWEF2YXRhck1vZHVsZSxcbiAgICBBWEltYWdlTW9kdWxlLFxuICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgIEFYUExvZ29Db21wb25lbnQsXG4gICAgQVhMb2FkaW5nTW9kdWxlLFxuICAgIEFYVHJhbnNsYXRpb25Nb2R1bGUsXG4gICAgQVhQVGVuYW50Q2hvb3NlckRyb3Bkb3duQ29tcG9uZW50LFxuICAgIEFYUEFwcENob29zZXJMaXN0Q29tcG9uZW50XG4gIF0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEFYUEF1dGhBcHBDaG9vc2VyQ29tcG9uZW50IHtcblxuICBwcml2YXRlIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcm90ZWN0ZWQgcGxhdGZvcm1Db25maWcgPSBpbmplY3QoQVhQX1BMQVRGT1JNX0NPTkZJR19UT0tFTik7XG4gIHByaXZhdGUgc2Vzc2lvblNlcnZpY2UgPSBpbmplY3QoQVhQU2Vzc2lvblNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCB1c2VyID0gdGhpcy5zZXNzaW9uU2VydmljZS51c2VyO1xuICBwcm90ZWN0ZWQgdGVuYW50cyQgPSB0aGlzLnNlc3Npb25TZXJ2aWNlLnRlbmFudHMkO1xuICBwcm90ZWN0ZWQgdGVuYW50ID0gdGhpcy5zZXNzaW9uU2VydmljZS50ZW5hbnQ7XG5cblxuICB0ZW5hbnRDaG9vc2VyKCkge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2F1dGgvYWNjb3VudC90ZW5hbnQtY2hvb3NlciddKTtcbiAgfVxuXG4gIGFzeW5jIGhhbmRsZVNpZ25vdXQoKSB7XG4gICAgYXdhaXQgdGhpcy5zZXNzaW9uU2VydmljZS5zaWdub3V0KCk7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvYXV0aC9sb2dpbiddKTtcbiAgfVxuXG5cbn1cbiIsIjxtYWluIFxuICAqdHJhbnNsYXRlPVwibGV0IHRcIlxuICBjbGFzcz1cImF4LXctZnVsbCBheC1zcGFjZS15LTEwIGF4LWgtWzEwMHZoXSBheC1mbGV4IGF4LWZsZXgtY29sIGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWNlbnRlciBheC1iZy1zdXJmYWNlIG1kOmF4LWJnLWRlZmF1bHRcIlxuICA+XG4gIDxzZWN0aW9uPlxuICAgIDxheHAtbG9nbyBcbiAgICBbc291cmNlXT1cInBsYXRmb3JtQ29uZmlnLmxvZ28/LmNvbG9yZWRcIlxuICAgIFthdHRyLmFsdF09XCJwbGF0Zm9ybUNvbmZpZy50aXRsZVwiXG4gICAgY2xhc3M9XCJheC13LTM2IGF4LW14LWF1dG9cIlxuICAgID48L2F4cC1sb2dvPlxuICA8L3NlY3Rpb24+XG4gIDxzZWN0aW9uIGNsYXNzPVwiYXgtZmxleCBheC1qdXN0aWZ5LWNlbnRlclwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiYXgtZmxleCBheC1nYXAtMiBheC1qdXN0aWZ5LWNlbnRlciBheC10ZXh0LWNlbnRlciBheC1mbGV4LWNvbCBheC1pdGVtcy1jZW50ZXIgYXgtYm9yZGVyIGF4LXJvdW5kZWQtbGcgYXgtc2hhZG93LWxnIGF4LXAtNiBtZDpheC13LTk2IGF4LXctODBcIlxuICAgICAgPlxuICAgICAgPGF4LWF2YXRhciBjbGFzcz1cImF4LXJvdW5kZWQtZnVsbFwiIFtzaXplXT1cIjcyXCI+XG4gICAgICAgIEBpZih1c2VyPy5hdmF0YXIpe1xuICAgICAgICAgIDxheC1pbWFnZSBbc3JjXT1cInVzZXI/LmF2YXRhclwiPjwvYXgtaW1hZ2U+XG4gICAgICAgICAgfVxuICAgICAgICA8L2F4LWF2YXRhcj5cbiAgICAgICAgPGgyIGNsYXNzPVwibWQ6YXgtdGV4dC1sZyBheC1mb250LW1lZGl1bVwiPnt7IHQoJ3dlbGNvbWUnKSB8IGFzeW5jIH19LCB7eyB1c2VyPy50aXRsZSB9fTwvaDI+XG4gICAgICA8YXhwLXRlbmFudC1jaG9vc2VyLWRyb3Bkb3duPjwvYXhwLXRlbmFudC1jaG9vc2VyLWRyb3Bkb3duPlxuICAgICAgPHAgY2xhc3M9XCJheC10ZXh0LW5ldXRyYWwtNTAwIGF4LXRleHQtc20gbWQ6YXgtdGV4dC1iYXNlIGF4LWZvbnQtbWVkaXVtXCI+XG4gICAgICAgIHt7IHQoJ2FwcGxpY2F0aW9uLWNob29zZXIuZGVzY3JpcHRpb24nLCB7IHNjb3BlOiAnYXV0aCcgfSkgfCBhc3luYyB9fVxuICAgICAgPC9wPlxuICAgICAgPGRpdiBjbGFzcz1cImF4LW10LTMgYXgtdy1mdWxsIGF4LW92ZXJmbG93LWF1dG8gYXgtbWF4LWgtWzMwMHB4XSBheC1wZS0yXCI+XG4gICAgICAgIDxheHAtYXBwLWNob29zZXItbGlzdD48L2F4cC1hcHAtY2hvb3Nlci1saXN0PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvc2VjdGlvbj5cbiAgPHNlY3Rpb24+XG4gICAgPHAgY2xhc3M9XCJheC10ZXh0LW5ldXRyYWwtNDAwIGF4LXRleHQtc21cIj5cbiAgICAgIHt7IHQoJ2FwcGxpY2F0aW9uLWNob29zZXIuZm9vdGVyJywgeyBzY29wZTogJ2F1dGgnIH0pIHwgYXN5bmMgfX1cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0ZW5hbnRzJCB8IGFzeW5jIGFzIHRlbmFudHNcIj5cbiAgICAgICAgQGlmKHRlbmFudHMubGVuZ3RoID4gMSl7XG4gICAgICAgIDxhIChjbGljayk9XCJ0ZW5hbnRDaG9vc2VyKClcIiBjbGFzcz1cImF4LXRleHQtcHJpbWFyeS01MDAgYXgtY3Vyc29yLXBvaW50ZXIgYXgtZm9udC1tZWRpdW0gaG92ZXI6YXgtdW5kZXJsaW5lXCI+XG4gICAgICAgICAge3sgdCgnYXBwbGljYXRpb24tY2hvb3Nlci5iYWNrQ29tcGFueScsIHsgc2NvcGU6ICdhdXRoJyB9KSB8IGFzeW5jIH19XG4gICAgICAgIDwvYT5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxhIChjbGljayk9XCJoYW5kbGVTaWdub3V0KClcIiBjbGFzcz1cImF4LXRleHQtcHJpbWFyeS01MDAgYXgtZm9udC1tZWRpdW0gYXgtY3Vyc29yLXBvaW50ZXIgaG92ZXI6YXgtdW5kZXJsaW5lXCI+XG4gICAgICAgICAge3sgdCgnYmFja0xvZ2luJywgeyBzY29wZTogJ2F1dGgnIH0pIHwgYXN5bmMgfX1cbiAgICAgICAgPC9hPlxuICAgICAgICB9XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3A+XG4gIDwvc2VjdGlvbj5cbjwvbWFpbj4iXX0=
@@ -0,0 +1,56 @@
1
+ import { AXAvatarModule } from "@acorex/components/avatar";
2
+ import { AXButtonModule } from "@acorex/components/button";
3
+ import { AXDecoratorModule } from "@acorex/components/decorators";
4
+ import { AXImageModule } from "@acorex/components/image";
5
+ import { AXPopoverComponent, AXPopoverModule } from "@acorex/components/popover";
6
+ import { AXPSessionService } from "@acorex/platform/auth";
7
+ import { CommonModule } from "@angular/common";
8
+ import { Component, ViewChild, inject } from "@angular/core";
9
+ import { Router } from "@angular/router";
10
+ import { AXPTenantChooserDropdownComponent } from '../tenant-chooser/tenant-chooser-dropdown.component';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "@angular/common";
13
+ import * as i2 from "@acorex/components/image";
14
+ import * as i3 from "@acorex/components/avatar";
15
+ import * as i4 from "@acorex/components/popover";
16
+ import * as i5 from "@acorex/components/button";
17
+ import * as i6 from "@acorex/components/decorators";
18
+ export class AXMAuthProfileSlotComponent {
19
+ constructor() {
20
+ this.router = inject(Router);
21
+ this.sessionService = inject(AXPSessionService);
22
+ this.user$ = this.sessionService.user$;
23
+ this.tenant$ = this.sessionService.tenant$;
24
+ this.isAuthenticated$ = this.sessionService.isAuthenticated$;
25
+ }
26
+ editProfile() {
27
+ this.router.navigate(['/asc/profile/e/profile/0/view']);
28
+ }
29
+ async logOut() {
30
+ await this.sessionService.signout();
31
+ }
32
+ toggleProfileMenu() {
33
+ this.profilePopover.open();
34
+ }
35
+ handleSignIn() {
36
+ this.router.navigate(["/auth/login"]);
37
+ }
38
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMAuthProfileSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
39
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: AXMAuthProfileSlotComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "profilePopover", first: true, predicate: ["profilePopover"], descendants: true }], ngImport: i0, template: "@if((isAuthenticated$ | async))\n{\n<ax-avatar #avatar color=\"secondary\" [size]=\"32\" class=\"ax-cursor-pointer ax-ms-4\">\n <ax-image [src]=\"(user$ | async)?.avatar\"></ax-image>\n</ax-avatar>\n<ax-popover [target]=\"avatar\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\">\n <div class=\"ax-bg-surface ax-border ax-border-default ax-rounded-md ax-shadow-md ax-w-full ax-min-w-64\">\n <div class=\"ax-flex ax-flex-col ax-items-center ax-p-4 ax-border-b\">\n <ax-avatar [size]=\"60\">\n <ax-image [src]=\"(user$ | async)?.avatar\"></ax-image>\n </ax-avatar>\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-mt-2 ax-gap-1\">\n <div class=\"ax-text-base ax-font-bold\">{{ (user$ | async)?.title }}</div>\n <axp-tenant-chooser-dropdown></axp-tenant-chooser-dropdown>\n </div>\n </div>\n <div class=\"profile-menus ax-text-slate-500\">\n <!-- <ul>\n <li>\n <i class=\"fa-solid fa-folder-open\"></i>\n <span> Project Management </span>\n </li>\n <li>\n <i class=\"fa-solid fa-envelope-open-text\"></i>\n <span>Email Config</span>\n </li>\n <li>\n <i class=\"fa-solid fa-gear\"></i>\n <span>Setting</span>\n </li>\n </ul> -->\n <ul>\n <!-- <li>\n <i class=\"fa-solid fa-gem ax-text-primary-500\"></i>\n <span> Upgrade account </span>\n </li> -->\n <li (click)=\"editProfile()\">\n <i class=\"fa-solid fa-user\"></i>\n <span>Edit profile</span>\n </li>\n </ul>\n <ul>\n <li class=\"ax-text-danger-500\" (click)=\"logOut()\">\n <i class=\"fa-solid fa-arrow-right-from-bracket\"></i>\n <span> Logout </span>\n </li>\n </ul>\n </div>\n </div>\n</ax-popover>\n} @else {\n<ax-button color=\"default\" look=\"blank\" text=\"Sign Up / Sign In\" (click)=\"handleSignIn()\">\n <ax-icon>\n <i class=\"fa-solid fa-user ax-text-slate-400 dark:ax-text-slate-200\"></i>\n </ax-icon>\n</ax-button>\n<!-- <ax-popover [target]=\"signIn\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\">\n <div class=\"ax-bg-surface ax-border ax-border-default ax-rounded-md ax-shadow-md ax-w-full ax-p-4\">\n Test\n </div>\n</ax-popover> -->\n}", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXImageModule }, { kind: "component", type: i2.AXImageComponent, selector: "ax-image", inputs: ["overlayMode", "src", "alt", "priority", "lazy"], outputs: ["onLoad", "onError"] }, { kind: "ngmodule", type: AXAvatarModule }, { kind: "component", type: i3.AXAvatarComponent, selector: "ax-avatar", inputs: ["color", "size", "look"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i4.AXPopoverComponent, selector: "ax-popover", inputs: ["offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "backdropClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i5.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: "component", type: i6.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: AXPTenantChooserDropdownComponent, selector: "axp-tenant-chooser-dropdown" }] }); }
40
+ }
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXMAuthProfileSlotComponent, decorators: [{
42
+ type: Component,
43
+ args: [{ standalone: true, imports: [
44
+ CommonModule,
45
+ AXImageModule,
46
+ AXAvatarModule,
47
+ AXPopoverModule,
48
+ AXButtonModule,
49
+ AXDecoratorModule,
50
+ AXPTenantChooserDropdownComponent
51
+ ], template: "@if((isAuthenticated$ | async))\n{\n<ax-avatar #avatar color=\"secondary\" [size]=\"32\" class=\"ax-cursor-pointer ax-ms-4\">\n <ax-image [src]=\"(user$ | async)?.avatar\"></ax-image>\n</ax-avatar>\n<ax-popover [target]=\"avatar\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\">\n <div class=\"ax-bg-surface ax-border ax-border-default ax-rounded-md ax-shadow-md ax-w-full ax-min-w-64\">\n <div class=\"ax-flex ax-flex-col ax-items-center ax-p-4 ax-border-b\">\n <ax-avatar [size]=\"60\">\n <ax-image [src]=\"(user$ | async)?.avatar\"></ax-image>\n </ax-avatar>\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-mt-2 ax-gap-1\">\n <div class=\"ax-text-base ax-font-bold\">{{ (user$ | async)?.title }}</div>\n <axp-tenant-chooser-dropdown></axp-tenant-chooser-dropdown>\n </div>\n </div>\n <div class=\"profile-menus ax-text-slate-500\">\n <!-- <ul>\n <li>\n <i class=\"fa-solid fa-folder-open\"></i>\n <span> Project Management </span>\n </li>\n <li>\n <i class=\"fa-solid fa-envelope-open-text\"></i>\n <span>Email Config</span>\n </li>\n <li>\n <i class=\"fa-solid fa-gear\"></i>\n <span>Setting</span>\n </li>\n </ul> -->\n <ul>\n <!-- <li>\n <i class=\"fa-solid fa-gem ax-text-primary-500\"></i>\n <span> Upgrade account </span>\n </li> -->\n <li (click)=\"editProfile()\">\n <i class=\"fa-solid fa-user\"></i>\n <span>Edit profile</span>\n </li>\n </ul>\n <ul>\n <li class=\"ax-text-danger-500\" (click)=\"logOut()\">\n <i class=\"fa-solid fa-arrow-right-from-bracket\"></i>\n <span> Logout </span>\n </li>\n </ul>\n </div>\n </div>\n</ax-popover>\n} @else {\n<ax-button color=\"default\" look=\"blank\" text=\"Sign Up / Sign In\" (click)=\"handleSignIn()\">\n <ax-icon>\n <i class=\"fa-solid fa-user ax-text-slate-400 dark:ax-text-slate-200\"></i>\n </ax-icon>\n</ax-button>\n<!-- <ax-popover [target]=\"signIn\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\">\n <div class=\"ax-bg-surface ax-border ax-border-default ax-rounded-md ax-shadow-md ax-w-full ax-p-4\">\n Test\n </div>\n</ax-popover> -->\n}" }]
52
+ }], propDecorators: { profilePopover: [{
53
+ type: ViewChild,
54
+ args: ['profilePopover']
55
+ }] } });
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS1zbG90LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hdXRoL3NyYy9saWIvYWNjb3VudC9wcm9maWxlL3Byb2ZpbGUtc2xvdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXV0aC9zcmMvbGliL2FjY291bnQvcHJvZmlsZS9wcm9maWxlLXNsb3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHFEQUFxRCxDQUFDOzs7Ozs7OztBQWV4RyxNQUFNLE9BQU8sMkJBQTJCO0lBYnhDO1FBY1ksV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixtQkFBYyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3pDLFVBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQztRQUNsQyxZQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUM7UUFHdEMscUJBQWdCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQztLQW9CckU7SUFoQkcsV0FBVztRQUNQLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsK0JBQStCLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTTtRQUNSLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsaUJBQWlCO1FBQ2IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBR1MsWUFBWTtRQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDMUMsQ0FBQzs4R0ExQlEsMkJBQTJCO2tHQUEzQiwyQkFBMkIsMExDeEJ4QyxrZ0ZBNkRDLDJDRDlDTyxZQUFZLG1GQUNaLGFBQWEsaU1BQ2IsY0FBYywySUFDZCxlQUFlLG9UQUNmLGNBQWMsNlVBQ2QsaUJBQWlCLGdJQUNqQixpQ0FBaUM7OzJGQUc1QiwyQkFBMkI7a0JBYnZDLFNBQVM7aUNBRU0sSUFBSSxXQUNQO3dCQUNMLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLGlDQUFpQztxQkFDcEM7OEJBVzRCLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhBdmF0YXJNb2R1bGUgfSBmcm9tIFwiQGFjb3JleC9jb21wb25lbnRzL2F2YXRhclwiO1xuaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tIFwiQGFjb3JleC9jb21wb25lbnRzL2J1dHRvblwiO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tIFwiQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnNcIjtcbmltcG9ydCB7IEFYSW1hZ2VNb2R1bGUgfSBmcm9tIFwiQGFjb3JleC9jb21wb25lbnRzL2ltYWdlXCI7XG5pbXBvcnQgeyBBWFBvcG92ZXJDb21wb25lbnQsIEFYUG9wb3Zlck1vZHVsZSB9IGZyb20gXCJAYWNvcmV4L2NvbXBvbmVudHMvcG9wb3ZlclwiO1xuaW1wb3J0IHsgQVhQU2Vzc2lvblNlcnZpY2UgfSBmcm9tIFwiQGFjb3JleC9wbGF0Zm9ybS9hdXRoXCI7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBDb21wb25lbnQsIFZpZXdDaGlsZCwgaW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7IEFYUFRlbmFudENob29zZXJEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4uL3RlbmFudC1jaG9vc2VyL3RlbmFudC1jaG9vc2VyLWRyb3Bkb3duLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlVXJsOiAnLi9wcm9maWxlLXNsb3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEFYSW1hZ2VNb2R1bGUsXG4gICAgICAgIEFYQXZhdGFyTW9kdWxlLFxuICAgICAgICBBWFBvcG92ZXJNb2R1bGUsXG4gICAgICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgICAgICBBWERlY29yYXRvck1vZHVsZSxcbiAgICAgICAgQVhQVGVuYW50Q2hvb3NlckRyb3Bkb3duQ29tcG9uZW50XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBBWE1BdXRoUHJvZmlsZVNsb3RDb21wb25lbnQge1xuICAgIHByaXZhdGUgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gICAgcHJpdmF0ZSBzZXNzaW9uU2VydmljZSA9IGluamVjdChBWFBTZXNzaW9uU2VydmljZSk7XG4gICAgcHJvdGVjdGVkIHVzZXIkID0gdGhpcy5zZXNzaW9uU2VydmljZS51c2VyJDtcbiAgICBwcm90ZWN0ZWQgdGVuYW50JCA9IHRoaXMuc2Vzc2lvblNlcnZpY2UudGVuYW50JDtcblxuXG4gICAgcHJvdGVjdGVkIGlzQXV0aGVudGljYXRlZCQgPSB0aGlzLnNlc3Npb25TZXJ2aWNlLmlzQXV0aGVudGljYXRlZCQ7XG5cbiAgICBAVmlld0NoaWxkKCdwcm9maWxlUG9wb3ZlcicpIHByb2ZpbGVQb3BvdmVyITogQVhQb3BvdmVyQ29tcG9uZW50O1xuXG4gICAgZWRpdFByb2ZpbGUoKSB7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2FzYy9wcm9maWxlL2UvcHJvZmlsZS8wL3ZpZXcnXSk7XG4gICAgfVxuXG4gICAgYXN5bmMgbG9nT3V0KCkge1xuICAgICAgICBhd2FpdCB0aGlzLnNlc3Npb25TZXJ2aWNlLnNpZ25vdXQoKTtcbiAgICB9XG5cbiAgICB0b2dnbGVQcm9maWxlTWVudSgpIHtcbiAgICAgICAgdGhpcy5wcm9maWxlUG9wb3Zlci5vcGVuKCk7XG4gICAgfVxuXG5cbiAgICBwcm90ZWN0ZWQgaGFuZGxlU2lnbkluKCkge1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCIvYXV0aC9sb2dpblwiXSk7XG4gICAgfVxufSIsIkBpZigoaXNBdXRoZW50aWNhdGVkJCB8IGFzeW5jKSlcbntcbjxheC1hdmF0YXIgI2F2YXRhciBjb2xvcj1cInNlY29uZGFyeVwiIFtzaXplXT1cIjMyXCIgY2xhc3M9XCJheC1jdXJzb3ItcG9pbnRlciBheC1tcy00XCI+XG4gICAgPGF4LWltYWdlIFtzcmNdPVwiKHVzZXIkIHwgYXN5bmMpPy5hdmF0YXJcIj48L2F4LWltYWdlPlxuPC9heC1hdmF0YXI+XG48YXgtcG9wb3ZlciBbdGFyZ2V0XT1cImF2YXRhclwiIFtvcGVuT25dPVwiJ3RvZ2dsZSdcIiBbY2xvc2VPbl09XCInY2xpY2tPdXQnXCI+XG4gICAgPGRpdiBjbGFzcz1cImF4LWJnLXN1cmZhY2UgYXgtYm9yZGVyIGF4LWJvcmRlci1kZWZhdWx0IGF4LXJvdW5kZWQtbWQgYXgtc2hhZG93LW1kIGF4LXctZnVsbCBheC1taW4tdy02NFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1pdGVtcy1jZW50ZXIgYXgtcC00IGF4LWJvcmRlci1iXCI+XG4gICAgICAgICAgICA8YXgtYXZhdGFyIFtzaXplXT1cIjYwXCI+XG4gICAgICAgICAgICAgICAgPGF4LWltYWdlIFtzcmNdPVwiKHVzZXIkIHwgYXN5bmMpPy5hdmF0YXJcIj48L2F4LWltYWdlPlxuICAgICAgICAgICAgPC9heC1hdmF0YXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1pdGVtcy1jZW50ZXIgYXgtanVzdGlmeS1jZW50ZXIgYXgtbXQtMiBheC1nYXAtMVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC10ZXh0LWJhc2UgYXgtZm9udC1ib2xkXCI+e3sgKHVzZXIkIHwgYXN5bmMpPy50aXRsZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDxheHAtdGVuYW50LWNob29zZXItZHJvcGRvd24+PC9heHAtdGVuYW50LWNob29zZXItZHJvcGRvd24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcm9maWxlLW1lbnVzIGF4LXRleHQtc2xhdGUtNTAwXCI+XG4gICAgICAgICAgICA8IS0tIDx1bD5cbiAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtZm9sZGVyLW9wZW5cIj48L2k+XG4gICAgICAgICAgICA8c3Bhbj4gUHJvamVjdCBNYW5hZ2VtZW50IDwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWVudmVsb3BlLW9wZW4tdGV4dFwiPjwvaT5cbiAgICAgICAgICAgIDxzcGFuPkVtYWlsIENvbmZpZzwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWdlYXJcIj48L2k+XG4gICAgICAgICAgICA8c3Bhbj5TZXR0aW5nPC9zcGFuPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgPC91bD4gLS0+XG4gICAgICAgICAgICA8dWw+XG4gICAgICAgICAgICAgICAgPCEtLSA8bGk+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWdlbSBheC10ZXh0LXByaW1hcnktNTAwXCI+PC9pPlxuICAgICAgICAgICAgPHNwYW4+IFVwZ3JhZGUgYWNjb3VudCA8L3NwYW4+XG4gICAgICAgICAgICA8L2xpPiAtLT5cbiAgICAgICAgICAgICAgICA8bGkgKGNsaWNrKT1cImVkaXRQcm9maWxlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS11c2VyXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5FZGl0IHByb2ZpbGU8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8dWw+XG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiYXgtdGV4dC1kYW5nZXItNTAwXCIgKGNsaWNrKT1cImxvZ091dCgpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtYXJyb3ctcmlnaHQtZnJvbS1icmFja2V0XCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj4gTG9nb3V0IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2F4LXBvcG92ZXI+XG59IEBlbHNlIHtcbjxheC1idXR0b24gY29sb3I9XCJkZWZhdWx0XCIgbG9vaz1cImJsYW5rXCIgdGV4dD1cIlNpZ24gVXAgLyBTaWduIEluXCIgKGNsaWNrKT1cImhhbmRsZVNpZ25JbigpXCI+XG4gICAgPGF4LWljb24+XG4gICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtdXNlciBheC10ZXh0LXNsYXRlLTQwMCBkYXJrOmF4LXRleHQtc2xhdGUtMjAwXCI+PC9pPlxuICAgIDwvYXgtaWNvbj5cbjwvYXgtYnV0dG9uPlxuPCEtLSA8YXgtcG9wb3ZlciBbdGFyZ2V0XT1cInNpZ25JblwiIFtvcGVuT25dPVwiJ3RvZ2dsZSdcIiBbY2xvc2VPbl09XCInY2xpY2tPdXQnXCI+XG4gICAgPGRpdiBjbGFzcz1cImF4LWJnLXN1cmZhY2UgYXgtYm9yZGVyIGF4LWJvcmRlci1kZWZhdWx0IGF4LXJvdW5kZWQtbWQgYXgtc2hhZG93LW1kIGF4LXctZnVsbCBheC1wLTRcIj5cbiAgICAgICAgVGVzdFxuICAgIDwvZGl2PlxuPC9heC1wb3BvdmVyPiAtLT5cbn0iXX0=
@@ -0,0 +1,26 @@
1
+ import { Component, inject } from '@angular/core';
2
+ import { Router } from '@angular/router';
3
+ import { AXPSessionService } from '@acorex/platform/auth';
4
+ import { AXDecoratorModule } from '@acorex/components/decorators';
5
+ import { CommonModule } from '@angular/common';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common";
8
+ import * as i2 from "@acorex/components/decorators";
9
+ export class AXPTenantChooserDropdownComponent {
10
+ constructor() {
11
+ this.router = inject(Router);
12
+ this.sessionService = inject(AXPSessionService);
13
+ this.tenants$ = this.sessionService.tenants$;
14
+ this.tenant = this.sessionService.tenant;
15
+ }
16
+ tenantChooser() {
17
+ this.router.navigate(['/auth/account/tenant-chooser']);
18
+ }
19
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXPTenantChooserDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
20
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: AXPTenantChooserDropdownComponent, isStandalone: true, selector: "axp-tenant-chooser-dropdown", ngImport: i0, template: "<ng-container *ngIf=\"tenants$ | async as tenants\">\n @if(tenants.length>1){\n <div (click)=\"tenantChooser()\"\n class=\"ax-flex ax-items-center ax-border ax-rounded-full ax-px-4 ax-py-1 ax-gap-2 ax-cursor-pointer\">\n <ax-icon class=\"fa-solid fa-building ax-text-neutral-500 ax-text-xs\"></ax-icon>\n <p class=\"ax-text-neutral-500 ax-text-sm ax-font-medium\">\n {{ tenant?.title }}\n </p>\n <ax-icon class=\"fa-regular fa-chevron-down ax-text-neutral-400\"></ax-icon>\n </div>\n }@else {\n <div class=\"ax-flex ax-items-center ax-border ax-rounded-full ax-px-4 ax-py-1 ax-gap-2 ax-cursor-pointer\">\n <ax-icon class=\"fa-solid fa-building ax-text-neutral-500\"></ax-icon>\n <p class=\"ax-text-neutral-500 ax-text-sm ax-font-medium\">\n {{ tenant?.title }}\n </p>\n </div>\n }\n</ng-container>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }] }); }
21
+ }
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXPTenantChooserDropdownComponent, decorators: [{
23
+ type: Component,
24
+ args: [{ selector: 'axp-tenant-chooser-dropdown', standalone: true, imports: [CommonModule, AXDecoratorModule], template: "<ng-container *ngIf=\"tenants$ | async as tenants\">\n @if(tenants.length>1){\n <div (click)=\"tenantChooser()\"\n class=\"ax-flex ax-items-center ax-border ax-rounded-full ax-px-4 ax-py-1 ax-gap-2 ax-cursor-pointer\">\n <ax-icon class=\"fa-solid fa-building ax-text-neutral-500 ax-text-xs\"></ax-icon>\n <p class=\"ax-text-neutral-500 ax-text-sm ax-font-medium\">\n {{ tenant?.title }}\n </p>\n <ax-icon class=\"fa-regular fa-chevron-down ax-text-neutral-400\"></ax-icon>\n </div>\n }@else {\n <div class=\"ax-flex ax-items-center ax-border ax-rounded-full ax-px-4 ax-py-1 ax-gap-2 ax-cursor-pointer\">\n <ax-icon class=\"fa-solid fa-building ax-text-neutral-500\"></ax-icon>\n <p class=\"ax-text-neutral-500 ax-text-sm ax-font-medium\">\n {{ tenant?.title }}\n </p>\n </div>\n }\n</ng-container>" }]
25
+ }] });
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LWNob29zZXItZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2F1dGgvc3JjL2xpYi9hY2NvdW50L3RlbmFudC1jaG9vc2VyL3RlbmFudC1jaG9vc2VyLWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hdXRoL3NyYy9saWIvYWNjb3VudC90ZW5hbnQtY2hvb3Nlci90ZW5hbnQtY2hvb3Nlci1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBUS9DLE1BQU0sT0FBTyxpQ0FBaUM7SUFOOUM7UUFRWSxXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hCLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDekMsYUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO1FBQ3hDLFdBQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQztLQU9qRDtJQUxHLGFBQWE7UUFDVCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDOzhHQVRRLGlDQUFpQztrR0FBakMsaUNBQWlDLHVGQ1o5QyxrNEJBa0JlLDJDRFJELFlBQVksdUxBQUUsaUJBQWlCOzsyRkFFaEMsaUNBQWlDO2tCQU43QyxTQUFTOytCQUNJLDZCQUE2QixjQUUzQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEFYUFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9hdXRoJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdheHAtdGVuYW50LWNob29zZXItZHJvcGRvd24nLFxuICAgIHRlbXBsYXRlVXJsOiAndGVuYW50LWNob29zZXItZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQVhEZWNvcmF0b3JNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIEFYUFRlbmFudENob29zZXJEcm9wZG93bkNvbXBvbmVudCB7XG5cbiAgICBwcml2YXRlIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICAgIHByaXZhdGUgc2Vzc2lvblNlcnZpY2UgPSBpbmplY3QoQVhQU2Vzc2lvblNlcnZpY2UpO1xuICAgIHByb3RlY3RlZCB0ZW5hbnRzJCA9IHRoaXMuc2Vzc2lvblNlcnZpY2UudGVuYW50cyQ7XG4gICAgcHJvdGVjdGVkIHRlbmFudCA9IHRoaXMuc2Vzc2lvblNlcnZpY2UudGVuYW50O1xuXG4gICAgdGVuYW50Q2hvb3NlcigpIHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvYXV0aC9hY2NvdW50L3RlbmFudC1jaG9vc2VyJ10pO1xuICAgIH1cblxuXG59IiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInRlbmFudHMkIHwgYXN5bmMgYXMgdGVuYW50c1wiPlxuICAgIEBpZih0ZW5hbnRzLmxlbmd0aD4xKXtcbiAgICA8ZGl2IChjbGljayk9XCJ0ZW5hbnRDaG9vc2VyKClcIlxuICAgICAgICBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWJvcmRlciBheC1yb3VuZGVkLWZ1bGwgYXgtcHgtNCBheC1weS0xIGF4LWdhcC0yIGF4LWN1cnNvci1wb2ludGVyXCI+XG4gICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtc29saWQgZmEtYnVpbGRpbmcgYXgtdGV4dC1uZXV0cmFsLTUwMCBheC10ZXh0LXhzXCI+PC9heC1pY29uPlxuICAgICAgICA8cCBjbGFzcz1cImF4LXRleHQtbmV1dHJhbC01MDAgYXgtdGV4dC1zbSBheC1mb250LW1lZGl1bVwiPlxuICAgICAgICAgICAge3sgdGVuYW50Py50aXRsZSB9fVxuICAgICAgICA8L3A+XG4gICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtcmVndWxhciBmYS1jaGV2cm9uLWRvd24gYXgtdGV4dC1uZXV0cmFsLTQwMFwiPjwvYXgtaWNvbj5cbiAgICA8L2Rpdj5cbiAgICB9QGVsc2Uge1xuICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1ib3JkZXIgYXgtcm91bmRlZC1mdWxsIGF4LXB4LTQgYXgtcHktMSBheC1nYXAtMiBheC1jdXJzb3ItcG9pbnRlclwiPlxuICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImZhLXNvbGlkIGZhLWJ1aWxkaW5nIGF4LXRleHQtbmV1dHJhbC01MDBcIj48L2F4LWljb24+XG4gICAgICAgIDxwIGNsYXNzPVwiYXgtdGV4dC1uZXV0cmFsLTUwMCBheC10ZXh0LXNtIGF4LWZvbnQtbWVkaXVtXCI+XG4gICAgICAgICAgICB7eyB0ZW5hbnQ/LnRpdGxlIH19XG4gICAgICAgIDwvcD5cbiAgICA8L2Rpdj5cbiAgICB9XG48L25nLWNvbnRhaW5lcj4iXX0=
@@ -0,0 +1,81 @@
1
+ import { Component, ViewEncapsulation, inject } from '@angular/core';
2
+ import { AXAvatarModule } from '@acorex/components/avatar';
3
+ import { AXButtonModule } from '@acorex/components/button';
4
+ import { AXCheckBoxModule } from '@acorex/components/check-box';
5
+ import { AXDecoratorModule } from '@acorex/components/decorators';
6
+ import { AXFormModule } from '@acorex/components/form';
7
+ import { AXImageModule } from '@acorex/components/image';
8
+ import { AXLabelModule } from '@acorex/components/label';
9
+ import { AXLoadingModule } from '@acorex/components/loading';
10
+ import { AXTextBoxModule } from '@acorex/components/text-box';
11
+ import { AXTranslationModule } from '@acorex/core/translation';
12
+ import { AXPSessionService } from '@acorex/platform/auth';
13
+ import { AXP_PLATFORM_CONFIG_TOKEN } from '@acorex/platform/common';
14
+ import { AXPLogoComponent } from '@acorex/platform/layouts';
15
+ import { CommonModule } from '@angular/common';
16
+ import { Router } from '@angular/router';
17
+ import { Subscription, first } from 'rxjs';
18
+ import * as i0 from "@angular/core";
19
+ import * as i1 from "@angular/common";
20
+ import * as i2 from "@acorex/components/button";
21
+ import * as i3 from "@acorex/components/avatar";
22
+ import * as i4 from "@acorex/components/image";
23
+ import * as i5 from "@acorex/components/decorators";
24
+ import * as i6 from "@acorex/components/loading";
25
+ import * as i7 from "@acorex/core/translation";
26
+ export 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.selectTenant(item.name);
40
+ this.router.navigate(['/auth/account/app-chooser']);
41
+ }
42
+ ngOnInit() {
43
+ this.subscription = 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: "17.1.2", ngImport: i0, type: AXPAuthTenantChooserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
62
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: AXPAuthTenantChooserComponent, isStandalone: true, selector: "axp-auth-tenant-chooser", ngImport: i0, template: "<main\n *translate=\"let t\"\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\"\n>\n <section>\n <axp-logo\n [source]=\"platformConfig.logo?.colored\"\n [attr.alt]=\"platformConfig.title\"\n class=\"ax-w-36 ax-mx-auto\"\n ></axp-logo>\n </section>\n <section class=\"ax-flex ax-justify-center\">\n <div\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\"\n >\n <ax-avatar class=\"ax-rounded-full\" [size]=\"72\">\n @if(user?.avatar){\n <ax-image [src]=\"user?.avatar\"></ax-image>\n }\n </ax-avatar>\n <h2 class=\"md:ax-text-lg ax-font-medium\">{{ t('welcome') | async }}, {{ user?.title }}</h2>\n <p class=\"ax-text-neutral-500 ax-text-sm md:ax-text-base ax-font-medium\">\n {{ t('tenant-chooser.description', { scope: 'auth' }) | async }}\n </p>\n <div class=\"ax-mt-3 ax-w-full ax-overflow-auto ax-max-h-[300px] ax-pe-2\">\n @for(tenant of displayedTenants; track $index){\n <div\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\"\n (click)=\"handleChooseTenant(tenant)\"\n >\n <div class=\"ax-flex ax-gap-2 ax-items-center ax-font-medium\">\n <div\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\"\n >\n <ax-icon class=\"fa-solid fa-building ax-text-neutral-500 ax-text-lg\"> </ax-icon>\n </div>\n <span class=\"md:ax-text-base ax-text-sm\">{{ tenant.title }}</span>\n </div>\n @if(tenant.name===selectedTenant?.name){\n <ax-loading></ax-loading>\n }@else {\n <ax-icon class=\"fa-solid fa-chevron-right ax-text-neutral-400\"> </ax-icon>\n }\n </div>\n }\n </div>\n @if(allTenants.length>4){\n <div class=\"ax-mt-6 ax-w-full ax-flex ax-justify-center\">\n <ax-button\n (onClick)=\"showAllTenants()\"\n class=\"ax-w-full\"\n look=\"outline\"\n [text]=\"showAll ? (t('viewLess') | async) : (t('viewAll') | async)\"\n ></ax-button>\n </div>\n }\n </div>\n </section>\n <section>\n <p class=\"ax-text-neutral-400 ax-text-sm\">\n {{ t('tenant-chooser.footer', { scope: 'auth' }) | async }}\n <a (click)=\"handleSignout()\" class=\"ax-text-primary ax-cursor-pointer hover:ax-underline ax-font-medium\">\n {{ t('backLogin', { scope: 'auth' }) | async }}\n </a>\n </p>\n </section>\n</main>\n", 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: i4.AXImageComponent, selector: "ax-image", inputs: ["overlayMode", "src", "alt", "priority", "lazy"], outputs: ["onLoad", "onError"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i5.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: AXPLogoComponent, selector: "axp-logo", inputs: ["source"] }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i6.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i7.AXTranslatorDirective, selector: "[translate]" }], encapsulation: i0.ViewEncapsulation.None }); }
63
+ }
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.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\n *translate=\"let t\"\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\"\n>\n <section>\n <axp-logo\n [source]=\"platformConfig.logo?.colored\"\n [attr.alt]=\"platformConfig.title\"\n class=\"ax-w-36 ax-mx-auto\"\n ></axp-logo>\n </section>\n <section class=\"ax-flex ax-justify-center\">\n <div\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\"\n >\n <ax-avatar class=\"ax-rounded-full\" [size]=\"72\">\n @if(user?.avatar){\n <ax-image [src]=\"user?.avatar\"></ax-image>\n }\n </ax-avatar>\n <h2 class=\"md:ax-text-lg ax-font-medium\">{{ t('welcome') | async }}, {{ user?.title }}</h2>\n <p class=\"ax-text-neutral-500 ax-text-sm md:ax-text-base ax-font-medium\">\n {{ t('tenant-chooser.description', { scope: 'auth' }) | async }}\n </p>\n <div class=\"ax-mt-3 ax-w-full ax-overflow-auto ax-max-h-[300px] ax-pe-2\">\n @for(tenant of displayedTenants; track $index){\n <div\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\"\n (click)=\"handleChooseTenant(tenant)\"\n >\n <div class=\"ax-flex ax-gap-2 ax-items-center ax-font-medium\">\n <div\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\"\n >\n <ax-icon class=\"fa-solid fa-building ax-text-neutral-500 ax-text-lg\"> </ax-icon>\n </div>\n <span class=\"md:ax-text-base ax-text-sm\">{{ tenant.title }}</span>\n </div>\n @if(tenant.name===selectedTenant?.name){\n <ax-loading></ax-loading>\n }@else {\n <ax-icon class=\"fa-solid fa-chevron-right ax-text-neutral-400\"> </ax-icon>\n }\n </div>\n }\n </div>\n @if(allTenants.length>4){\n <div class=\"ax-mt-6 ax-w-full ax-flex ax-justify-center\">\n <ax-button\n (onClick)=\"showAllTenants()\"\n class=\"ax-w-full\"\n look=\"outline\"\n [text]=\"showAll ? (t('viewLess') | async) : (t('viewAll') | async)\"\n ></ax-button>\n </div>\n }\n </div>\n </section>\n <section>\n <p class=\"ax-text-neutral-400 ax-text-sm\">\n {{ t('tenant-chooser.footer', { scope: 'auth' }) | async }}\n <a (click)=\"handleSignout()\" class=\"ax-text-primary ax-cursor-pointer hover:ax-underline ax-font-medium\">\n {{ t('backLogin', { scope: 'auth' }) | async }}\n </a>\n </p>\n </section>\n</main>\n", 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
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LWNob29zZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2F1dGgvc3JjL2xpYi9hY2NvdW50L3RlbmFudC1jaG9vc2VyL3RlbmFudC1jaG9vc2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hdXRoL3NyYy9saWIvYWNjb3VudC90ZW5hbnQtY2hvb3Nlci90ZW5hbnQtY2hvb3Nlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixpQkFBaUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBYSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FB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QkFBaUIsQ0FBQyxJQUFJLGNBQ3pCLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFYQXZhdGFyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2F2YXRhcic7XG5pbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhDaGVja0JveE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jaGVjay1ib3gnO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWEZvcm1Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZm9ybSc7XG5pbXBvcnQgeyBBWEltYWdlTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2ltYWdlJztcbmltcG9ydCB7IEFYTGFiZWxNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbGFiZWwnO1xuaW1wb3J0IHsgQVhMb2FkaW5nTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xvYWRpbmcnO1xuaW1wb3J0IHsgQVhUZXh0Qm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3RleHQtYm94JztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhQU2Vzc2lvblNlcnZpY2UsIEFYUFRlbmFudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vYXV0aCc7XG5pbXBvcnQgeyBBWFBfUExBVEZPUk1fQ09ORklHX1RPS0VOIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQTG9nb0NvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0cyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgZmlyc3QgfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXhwLWF1dGgtdGVuYW50LWNob29zZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vdGVuYW50LWNob29zZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90ZW5hbnQtY2hvb3Nlci5jb21wb25lbnQuc2NzcyddLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEFYRm9ybU1vZHVsZSxcbiAgICBBWFRleHRCb3hNb2R1bGUsXG4gICAgQVhCdXR0b25Nb2R1bGUsXG4gICAgQVhMYWJlbE1vZHVsZSxcbiAgICBBWENoZWNrQm94TW9kdWxlLFxuICAgIEFYQXZhdGFyTW9kdWxlLFxuICAgIEFYSW1hZ2VNb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgQVhQTG9nb0NvbXBvbmVudCxcbiAgICBBWExvYWRpbmdNb2R1bGUsXG4gICAgQVhUcmFuc2xhdGlvbk1vZHVsZSxcbiAgXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQQXV0aFRlbmFudENob29zZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByb3RlY3RlZCBwbGF0Zm9ybUNvbmZpZyA9IGluamVjdChBWFBfUExBVEZPUk1fQ09ORklHX1RPS0VOKTtcbiAgcHJpdmF0ZSBzZXNzaW9uU2VydmljZSA9IGluamVjdChBWFBTZXNzaW9uU2VydmljZSk7XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgcHJvdGVjdGVkIHVzZXIgPSB0aGlzLnNlc3Npb25TZXJ2aWNlLnVzZXI7XG5cbiAgcHJvdGVjdGVkIHNob3dBbGwgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkVGVuYW50OiBBWFBUZW5hbnQgfCBudWxsID0gbnVsbDtcbiAgcHJvdGVjdGVkIGRpc3BsYXllZFRlbmFudHM6IEFYUFRlbmFudFtdID0gW107XG4gIHByb3RlY3RlZCBhbGxUZW5hbnRzITogQVhQVGVuYW50W107XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZUNob29zZVRlbmFudChpdGVtOiBBWFBUZW5hbnQpIHtcbiAgICB0aGlzLnNlbGVjdGVkVGVuYW50ID0gaXRlbTtcbiAgICBhd2FpdCB0aGlzLnNlc3Npb25TZXJ2aWNlLnNlbGVjdFRlbmFudChpdGVtLm5hbWUpO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2F1dGgvYWNjb3VudC9hcHAtY2hvb3NlciddKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5zZXNzaW9uU2VydmljZS50ZW5hbnRzJFxuICAgICAgLnBpcGUoZmlyc3QoKSlcbiAgICAgIC5zdWJzY3JpYmUoKHRlbmFudHMpID0+IHtcbiAgICAgICAgdGhpcy5kaXNwbGF5ZWRUZW5hbnRzID0gdGVuYW50cy5zbGljZSgwLCA0KTtcbiAgICAgICAgdGhpcy5hbGxUZW5hbnRzID0gdGVuYW50cztcbiAgICAgIH0pO1xuICB9XG5cbiAgc2hvd0FsbFRlbmFudHMoKSB7XG4gICAgdGhpcy5zaG93QWxsID0gIXRoaXMuc2hvd0FsbDtcbiAgICB0aGlzLmRpc3BsYXllZFRlbmFudHMgPSB0aGlzLnNob3dBbGwgPyB0aGlzLmFsbFRlbmFudHMgOiB0aGlzLmFsbFRlbmFudHMuc2xpY2UoMCwgNCk7XG4gIH1cblxuICBhc3luYyBoYW5kbGVTaWdub3V0KCkge1xuICAgIGF3YWl0IHRoaXMuc2Vzc2lvblNlcnZpY2Uuc2lnbm91dCgpO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2F1dGgvbG9naW4nXSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8bWFpblxuICAqdHJhbnNsYXRlPVwibGV0IHRcIlxuICBjbGFzcz1cImF4LXctZnVsbCBheC1zcGFjZS15LTEwIGF4LWgtWzEwMHZoXSBheC1mbGV4IGF4LWZsZXgtY29sIGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWNlbnRlciBheC1iZy1zdXJmYWNlIG1kOmF4LWJnLWRlZmF1bHRcIlxuPlxuICA8c2VjdGlvbj5cbiAgICA8YXhwLWxvZ29cbiAgICAgIFtzb3VyY2VdPVwicGxhdGZvcm1Db25maWcubG9nbz8uY29sb3JlZFwiXG4gICAgICBbYXR0ci5hbHRdPVwicGxhdGZvcm1Db25maWcudGl0bGVcIlxuICAgICAgY2xhc3M9XCJheC13LTM2IGF4LW14LWF1dG9cIlxuICAgID48L2F4cC1sb2dvPlxuICA8L3NlY3Rpb24+XG4gIDxzZWN0aW9uIGNsYXNzPVwiYXgtZmxleCBheC1qdXN0aWZ5LWNlbnRlclwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiYXgtZmxleCBheC1nYXAtMiBheC1qdXN0aWZ5LWNlbnRlciBheC10ZXh0LWNlbnRlciBheC1mbGV4LWNvbCBheC1pdGVtcy1jZW50ZXIgYXgtYm9yZGVyIGF4LXJvdW5kZWQtbGcgYXgtc2hhZG93LWxnIGF4LXAtNiBtZDpheC13LTk2IGF4LXctODBcIlxuICAgID5cbiAgICAgIDxheC1hdmF0YXIgY2xhc3M9XCJheC1yb3VuZGVkLWZ1bGxcIiBbc2l6ZV09XCI3MlwiPlxuICAgICAgICBAaWYodXNlcj8uYXZhdGFyKXtcbiAgICAgICAgPGF4LWltYWdlIFtzcmNdPVwidXNlcj8uYXZhdGFyXCI+PC9heC1pbWFnZT5cbiAgICAgICAgfVxuICAgICAgPC9heC1hdmF0YXI+XG4gICAgICA8aDIgY2xhc3M9XCJtZDpheC10ZXh0LWxnIGF4LWZvbnQtbWVkaXVtXCI+e3sgdCgnd2VsY29tZScpIHwgYXN5bmMgfX0sIHt7IHVzZXI/LnRpdGxlIH19PC9oMj5cbiAgICAgIDxwIGNsYXNzPVwiYXgtdGV4dC1uZXV0cmFsLTUwMCBheC10ZXh0LXNtIG1kOmF4LXRleHQtYmFzZSBheC1mb250LW1lZGl1bVwiPlxuICAgICAgICB7eyB0KCd0ZW5hbnQtY2hvb3Nlci5kZXNjcmlwdGlvbicsIHsgc2NvcGU6ICdhdXRoJyB9KSB8IGFzeW5jIH19XG4gICAgICA8L3A+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtbXQtMyBheC13LWZ1bGwgYXgtb3ZlcmZsb3ctYXV0byBheC1tYXgtaC1bMzAwcHhdIGF4LXBlLTJcIj5cbiAgICAgICAgQGZvcih0ZW5hbnQgb2YgZGlzcGxheWVkVGVuYW50czsgdHJhY2sgJGluZGV4KXtcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiYXgtZmxleCBheC1nYXAtMiBheC1qdXN0aWZ5LWJldHdlZW4gYXgtYm9yZGVyLWIgbGFzdDpheC1ib3JkZXItYi0wIGF4LXB5LTMgYXgtaXRlbXMtY2VudGVyIGF4LWN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlQ2hvb3NlVGVuYW50KHRlbmFudClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZ2FwLTIgYXgtaXRlbXMtY2VudGVyIGF4LWZvbnQtbWVkaXVtXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiYXgtdy0xMiBheC1oLTEyIGF4LWZsZXggYXgtanVzdGlmeS1jZW50ZXIgYXgtaXRlbXMtY2VudGVyIGF4LXJvdW5kZWQtZnVsbCBheC1iZy1uZXV0cmFsLTEwMCBheC1tLWF1dG9cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImZhLXNvbGlkIGZhLWJ1aWxkaW5nIGF4LXRleHQtbmV1dHJhbC01MDAgYXgtdGV4dC1sZ1wiPiA8L2F4LWljb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWQ6YXgtdGV4dC1iYXNlIGF4LXRleHQtc21cIj57eyB0ZW5hbnQudGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgQGlmKHRlbmFudC5uYW1lPT09c2VsZWN0ZWRUZW5hbnQ/Lm5hbWUpe1xuICAgICAgICAgIDxheC1sb2FkaW5nPjwvYXgtbG9hZGluZz5cbiAgICAgICAgICB9QGVsc2Uge1xuICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtc29saWQgZmEtY2hldnJvbi1yaWdodCBheC10ZXh0LW5ldXRyYWwtNDAwXCI+IDwvYXgtaWNvbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICAgIEBpZihhbGxUZW5hbnRzLmxlbmd0aD40KXtcbiAgICAgIDxkaXYgY2xhc3M9XCJheC1tdC02IGF4LXctZnVsbCBheC1mbGV4IGF4LWp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgIDxheC1idXR0b25cbiAgICAgICAgICAob25DbGljayk9XCJzaG93QWxsVGVuYW50cygpXCJcbiAgICAgICAgICBjbGFzcz1cImF4LXctZnVsbFwiXG4gICAgICAgICAgbG9vaz1cIm91dGxpbmVcIlxuICAgICAgICAgIFt0ZXh0XT1cInNob3dBbGwgPyAodCgndmlld0xlc3MnKSB8IGFzeW5jKSA6ICh0KCd2aWV3QWxsJykgfCBhc3luYylcIlxuICAgICAgICA+PC9heC1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgPC9zZWN0aW9uPlxuICA8c2VjdGlvbj5cbiAgICA8cCBjbGFzcz1cImF4LXRleHQtbmV1dHJhbC00MDAgYXgtdGV4dC1zbVwiPlxuICAgICAge3sgdCgndGVuYW50LWNob29zZXIuZm9vdGVyJywgeyBzY29wZTogJ2F1dGgnIH0pIHwgYXN5bmMgfX1cbiAgICAgIDxhIChjbGljayk9XCJoYW5kbGVTaWdub3V0KClcIiBjbGFzcz1cImF4LXRleHQtcHJpbWFyeSBheC1jdXJzb3ItcG9pbnRlciBob3ZlcjpheC11bmRlcmxpbmUgYXgtZm9udC1tZWRpdW1cIj5cbiAgICAgICAge3sgdCgnYmFja0xvZ2luJywgeyBzY29wZTogJ2F1dGgnIH0pIHwgYXN5bmMgfX1cbiAgICAgIDwvYT5cbiAgICA8L3A+XG4gIDwvc2VjdGlvbj5cbjwvbWFpbj5cbiJdfQ==