@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.
- package/README.md +7 -0
- package/auth/README.md +3 -0
- package/auth/index.d.ts +3 -0
- package/auth/lib/account/account.module.d.ts +8 -0
- package/auth/lib/account/app-chooser/app-chooser-list.component.d.ts +11 -0
- package/auth/lib/account/app-chooser/app-chooser-slot.component.d.ts +12 -0
- package/auth/lib/account/app-chooser/app-chooser.component.d.ts +13 -0
- package/auth/lib/account/profile/profile-slot.component.d.ts +16 -0
- package/auth/lib/account/tenant-chooser/tenant-chooser-dropdown.component.d.ts +10 -0
- package/auth/lib/account/tenant-chooser/tenant-chooser.component.d.ts +21 -0
- package/auth/lib/auth.config.d.ts +23 -0
- package/auth/lib/auth.module.d.ts +14 -0
- package/auth/lib/auth.routes.d.ts +2 -0
- package/auth/lib/error-handler.d.ts +10 -0
- package/auth/lib/forgot/password/password.component.d.ts +11 -0
- package/auth/lib/forgot/routes.d.ts +3 -0
- package/auth/lib/login/login.module.d.ts +7 -0
- package/auth/lib/login/password/password.component.d.ts +22 -0
- package/auth/lib/register/email/email.component.d.ts +5 -0
- package/auth/lib/register/register.module.d.ts +7 -0
- package/auth/lib/register/result/result.component.d.ts +5 -0
- package/auth/lib/shared/layouts/blank/blank.layout.d.ts +8 -0
- package/auth/lib/shared/layouts/master/master.layout.d.ts +7 -0
- package/auth/lib/shared/services/idle.service.d.ts +17 -0
- package/auth/lib/shared/services/index.d.ts +1 -0
- package/auth/lib/store/auth.effects.d.ts +18 -0
- package/auth/lib/store/index.d.ts +1 -0
- package/auth/lib/two-factor/two-factor-code/two-factor-code.component.d.ts +8 -0
- package/auth/lib/two-factor/two-factor.module.d.ts +7 -0
- package/backend/README.md +4 -0
- package/backend/index.d.ts +2 -0
- package/backend/lib/auth/oidc/application.loader.d.ts +16 -0
- package/backend/lib/auth/oidc/feature.loader.d.ts +5 -0
- package/backend/lib/auth/oidc/index.d.ts +5 -0
- package/backend/lib/auth/oidc/oidc.strategy.d.ts +19 -0
- package/backend/lib/auth/oidc/permission.loader.d.ts +5 -0
- package/backend/lib/auth/oidc/signincallback.component.d.ts +13 -0
- package/backend/lib/auth/oidc/tenant.loader.d.ts +16 -0
- package/backend/lib/auth/oidc/usermanager.service.d.ts +12 -0
- package/backend/lib/auth/userpass/application.loader.d.ts +6 -0
- package/backend/lib/auth/userpass/index.d.ts +4 -0
- package/backend/lib/auth/userpass/permission.loader.d.ts +5 -0
- package/backend/lib/auth/userpass/tenant.loader.d.ts +6 -0
- package/backend/lib/auth/userpass/userpass.strategy.d.ts +12 -0
- package/backend/lib/backend.configs.d.ts +99 -0
- package/backend/lib/backend.module.d.ts +8 -0
- package/backend/lib/data/api/data-provider.d.ts +21 -0
- package/esm2022/acorex-modules.mjs +5 -0
- package/esm2022/auth/acorex-modules-auth.mjs +5 -0
- package/esm2022/auth/index.mjs +4 -0
- package/esm2022/auth/lib/account/account.module.mjs +106 -0
- package/esm2022/auth/lib/account/app-chooser/app-chooser-list.component.mjs +31 -0
- package/esm2022/auth/lib/account/app-chooser/app-chooser-slot.component.mjs +41 -0
- package/esm2022/auth/lib/account/app-chooser/app-chooser.component.mjs +62 -0
- package/esm2022/auth/lib/account/profile/profile-slot.component.mjs +56 -0
- package/esm2022/auth/lib/account/tenant-chooser/tenant-chooser-dropdown.component.mjs +26 -0
- package/esm2022/auth/lib/account/tenant-chooser/tenant-chooser.component.mjs +81 -0
- package/esm2022/auth/lib/auth.config.mjs +22 -0
- package/esm2022/auth/lib/auth.module.mjs +45 -0
- package/esm2022/auth/lib/auth.routes.mjs +38 -0
- package/esm2022/auth/lib/error-handler.mjs +41 -0
- package/esm2022/auth/lib/forgot/password/password.component.mjs +56 -0
- package/esm2022/auth/lib/forgot/routes.mjs +7 -0
- package/esm2022/auth/lib/login/login.module.mjs +53 -0
- package/esm2022/auth/lib/login/password/password.component.mjs +99 -0
- package/esm2022/auth/lib/register/email/email.component.mjs +42 -0
- package/esm2022/auth/lib/register/register.module.mjs +59 -0
- package/esm2022/auth/lib/register/result/result.component.mjs +33 -0
- package/esm2022/auth/lib/shared/layouts/blank/blank.layout.mjs +15 -0
- package/esm2022/auth/lib/shared/layouts/master/master.layout.mjs +21 -0
- package/esm2022/auth/lib/shared/services/idle.service.mjs +42 -0
- package/esm2022/auth/lib/shared/services/index.mjs +2 -0
- package/esm2022/auth/lib/store/auth.effects.mjs +90 -0
- package/esm2022/auth/lib/store/index.mjs +3 -0
- package/esm2022/auth/lib/two-factor/two-factor-code/two-factor-code.component.mjs +37 -0
- package/esm2022/auth/lib/two-factor/two-factor.module.mjs +42 -0
- package/esm2022/backend/acorex-modules-backend.mjs +5 -0
- package/esm2022/backend/index.mjs +3 -0
- package/esm2022/backend/lib/auth/oidc/application.loader.mjs +47 -0
- package/esm2022/backend/lib/auth/oidc/feature.loader.mjs +7 -0
- package/esm2022/backend/lib/auth/oidc/index.mjs +6 -0
- package/esm2022/backend/lib/auth/oidc/oidc.strategy.mjs +77 -0
- package/esm2022/backend/lib/auth/oidc/permission.loader.mjs +7 -0
- package/esm2022/backend/lib/auth/oidc/signincallback.component.mjs +26 -0
- package/esm2022/backend/lib/auth/oidc/tenant.loader.mjs +41 -0
- package/esm2022/backend/lib/auth/oidc/usermanager.service.mjs +35 -0
- package/esm2022/backend/lib/auth/userpass/application.loader.mjs +30 -0
- package/esm2022/backend/lib/auth/userpass/index.mjs +5 -0
- package/esm2022/backend/lib/auth/userpass/permission.loader.mjs +12 -0
- package/esm2022/backend/lib/auth/userpass/tenant.loader.mjs +26 -0
- package/esm2022/backend/lib/auth/userpass/userpass.strategy.mjs +40 -0
- package/esm2022/backend/lib/backend.configs.mjs +3 -0
- package/esm2022/backend/lib/backend.module.mjs +106 -0
- package/esm2022/backend/lib/data/api/data-provider.mjs +67 -0
- package/esm2022/index.mjs +2 -0
- package/esm2022/notification/acorex-modules-notification.mjs +5 -0
- package/esm2022/notification/index.mjs +2 -0
- package/esm2022/notification/lib/notification.module.mjs +16 -0
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-3tiGzryz.mjs +484 -0
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-3tiGzryz.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-app-chooser.component-Hh2T5orM.mjs +70 -0
- package/fesm2022/acorex-modules-auth-app-chooser.component-Hh2T5orM.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-blank.layout-0xNRyD5z.mjs +18 -0
- package/fesm2022/acorex-modules-auth-blank.layout-0xNRyD5z.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-email.component-ZbTwT8iu.mjs +45 -0
- package/fesm2022/acorex-modules-auth-email.component-ZbTwT8iu.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-login.module-lGs54nBU.mjs +71 -0
- package/fesm2022/acorex-modules-auth-login.module-lGs54nBU.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-master.layout-ytopPv2z.mjs +37 -0
- package/fesm2022/acorex-modules-auth-master.layout-ytopPv2z.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-password.component-Q9Me4kkK.mjs +72 -0
- package/fesm2022/acorex-modules-auth-password.component-Q9Me4kkK.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-password.component-p1Ks9S5q.mjs +110 -0
- package/fesm2022/acorex-modules-auth-password.component-p1Ks9S5q.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-register.module-ckbVm-yf.mjs +77 -0
- package/fesm2022/acorex-modules-auth-register.module-ckbVm-yf.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-result.component-ORUU7lkV.mjs +36 -0
- package/fesm2022/acorex-modules-auth-result.component-ORUU7lkV.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-routes-jgo2XGe0.mjs +9 -0
- package/fesm2022/acorex-modules-auth-routes-jgo2XGe0.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-tenant-chooser.component-PeGg21Im.mjs +84 -0
- package/fesm2022/acorex-modules-auth-tenant-chooser.component-PeGg21Im.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-two-factor-code.component-fP6CLq9T.mjs +40 -0
- package/fesm2022/acorex-modules-auth-two-factor-code.component-fP6CLq9T.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-two-factor.module--fcoNW-s.mjs +60 -0
- package/fesm2022/acorex-modules-auth-two-factor.module--fcoNW-s.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth.mjs +19 -0
- package/fesm2022/acorex-modules-auth.mjs.map +1 -0
- package/fesm2022/acorex-modules-backend.mjs +488 -0
- package/fesm2022/acorex-modules-backend.mjs.map +1 -0
- package/fesm2022/acorex-modules-notification.mjs +23 -0
- package/fesm2022/acorex-modules-notification.mjs.map +1 -0
- package/fesm2022/acorex-modules.mjs +6 -0
- package/fesm2022/acorex-modules.mjs.map +1 -0
- package/index.d.ts +2 -0
- package/notification/README.md +4 -0
- package/notification/index.d.ts +1 -0
- package/notification/lib/notification.module.d.ts +6 -0
- 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXV0aC9zcmMvbGliL2FjY291bnQvYWNjb3VudC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBeUMsTUFBTSxFQUFFLFlBQVksRUFBdUIsTUFBTSxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDbkksT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN0RixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7O0FBRy9FLE1BQU0sd0JBQXdCLEdBQzVCLEtBQUssRUFBRSxLQUE2QixFQUFFLEtBQTBCLEVBQUUsRUFBRTtJQUNsRSxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNqRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUIsTUFBTSxNQUFNLEdBQUcsTUFBTSxjQUFjLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzdELElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN2QixPQUFPLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFDRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDdkIsTUFBTSxjQUFjLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRCxPQUFPLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDO0FBR0osTUFBTSxxQkFBcUIsR0FDekIsS0FBSyxFQUFFLEtBQTZCLEVBQUUsS0FBMEIsRUFBRSxFQUFFO0lBQ2xFLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2pELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QixNQUFNLElBQUksR0FBRyxNQUFNLGNBQWMsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDaEUsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3JCLE9BQU8sTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUNELElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNyQixNQUFNLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDcEQsT0FBTyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUMsQ0FBQztBQUdKLFNBQVMsWUFBWTtJQUNuQixJQUFJLE1BQU0sR0FBVyxFQUFFLENBQUM7SUFDeEIsTUFBTSxHQUFHO1FBQ1A7WUFDRSxJQUFJLEVBQUUsZ0JBQWdCO1lBQ3RCLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FDbEIsTUFBTSxDQUFDLDJDQUEyQyxDQUFDLENBQUMsSUFBSSxDQUN0RCxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLDZCQUE2QixDQUN2QztZQUNILFdBQVcsRUFBRSxDQUFDLFlBQVksRUFBRSx3QkFBd0IsQ0FBQztTQUN0RDtRQUNEO1lBQ0UsSUFBSSxFQUFFLGFBQWE7WUFDbkIsYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUNsQixNQUFNLENBQUMscUNBQXFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQywwQkFBMEIsQ0FBQztZQUN6RixXQUFXLEVBQUUsQ0FBQyxZQUFZLEVBQUUscUJBQXFCLENBQUM7U0FDbkQ7S0FDRixDQUFDO0lBQ0YsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQTZCRCxNQUFNLE9BQU8sZ0JBQWdCOzhHQUFoQixnQkFBZ0I7K0dBQWhCLGdCQUFnQixZQXhCekIsWUFBWTsrR0F3QkgsZ0JBQWdCLGFBUmhCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLE1BQU07Z0JBQ2YsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsVUFBVSxFQUFFLFlBQVk7YUFDekI7U0FDRixZQXRCQyxZQUFZO1lBQ1osRUFBRTtZQUNGLHNCQUFzQixDQUFDLFFBQVEsQ0FBQztnQkFDOUIsWUFBWSxFQUFFO29CQUNaO3dCQUNFLElBQUksRUFBRSxZQUFZO3dCQUNsQixTQUFTLEVBQUUsMEJBQTBCO3FCQUN0QztvQkFDRDt3QkFDRSxJQUFJLEVBQUUsU0FBUzt3QkFDZixTQUFTLEVBQUUsMkJBQTJCO3FCQUN2QztpQkFDRjthQUNGLENBQUM7OzJGQVdPLGdCQUFnQjtrQkEzQjVCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLEVBQUU7d0JBQ0Ysc0JBQXNCLENBQUMsUUFBUSxDQUFDOzRCQUM5QixZQUFZLEVBQUU7Z0NBQ1o7b0NBQ0UsSUFBSSxFQUFFLFlBQVk7b0NBQ2xCLFNBQVMsRUFBRSwwQkFBMEI7aUNBQ3RDO2dDQUNEO29DQUNFLElBQUksRUFBRSxTQUFTO29DQUNmLFNBQVMsRUFBRSwyQkFBMkI7aUNBQ3ZDOzZCQUNGO3lCQUNGLENBQUM7cUJBQ0g7b0JBQ0QsT0FBTyxFQUFFLEVBQUU7b0JBQ1gsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxNQUFNOzRCQUNmLEtBQUssRUFBRSxJQUFJOzRCQUNYLFVBQVUsRUFBRSxZQUFZO3lCQUN6QjtxQkFDRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUEF1dGhHdWFyZCwgQVhQU2Vzc2lvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2F1dGgnO1xuaW1wb3J0IHsgQVhQQ29tcG9uZW50U2xvdE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IGluamVjdCwgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIENhbkFjdGl2YXRlRm4sIFJvdXRlciwgUm91dGVyTW9kdWxlLCBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBST1VURVMsIFJvdXRlcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVhNQXBwQ2hvb3NlclNsb3RDb21wb25lbnQgfSBmcm9tICcuL2FwcC1jaG9vc2VyL2FwcC1jaG9vc2VyLXNsb3QuY29tcG9uZW50JztcbmltcG9ydCB7IEFYTUF1dGhQcm9maWxlU2xvdENvbXBvbmVudCB9IGZyb20gJy4vcHJvZmlsZS9wcm9maWxlLXNsb3QuY29tcG9uZW50JztcblxuXG5jb25zdCBjYW5BY3RpdmF0ZVRlbmFudENob29zZXI6IENhbkFjdGl2YXRlRm4gPVxuICBhc3luYyAocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KSA9PiB7XG4gICAgY29uc3Qgc2Vzc2lvblNlcnZpY2UgPSBpbmplY3QoQVhQU2Vzc2lvblNlcnZpY2UpO1xuICAgIGNvbnN0IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICAgIGNvbnN0IHRlbmFudCA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHNlc3Npb25TZXJ2aWNlLnRlbmFudHMkKTtcbiAgICBpZiAodGVuYW50Lmxlbmd0aCA9PSAwKSB7XG4gICAgICByZXR1cm4gcm91dGVyLmNyZWF0ZVVybFRyZWUoWycvYXV0aC9sb2dpbiddKTtcbiAgICB9XG4gICAgaWYgKHRlbmFudC5sZW5ndGggPT0gMSkge1xuICAgICAgYXdhaXQgc2Vzc2lvblNlcnZpY2Uuc2VsZWN0VGVuYW50KHRlbmFudFswXS5uYW1lKTtcbiAgICAgIHJldHVybiByb3V0ZXIuY3JlYXRlVXJsVHJlZShbJy9hdXRoL2FjY291bnQvYXBwLWNob29zZXInXSk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG5cbmNvbnN0IGNhbkFjdGl2YXRlQXBwQ2hvb3NlcjogQ2FuQWN0aXZhdGVGbiA9XG4gIGFzeW5jIChyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpID0+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==
|