@acorex-platform/module-auth-client 1.0.1 → 1.0.2
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/fesm2022/{acorex-platform-module-auth-client-acorex-platform-module-auth-client-Dgo6MzxI.mjs → acorex-platform-module-auth-client-acorex-platform-module-auth-client-CBRlR1xT.mjs} +106 -80
- package/fesm2022/acorex-platform-module-auth-client-acorex-platform-module-auth-client-CBRlR1xT.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-auth-client-app-chooser.component-nSUtqF_D.mjs → acorex-platform-module-auth-client-app-chooser.component-DpGdObrH.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-app-chooser.component-nSUtqF_D.mjs.map → acorex-platform-module-auth-client-app-chooser.component-DpGdObrH.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-change-password.command-Bman8avz.mjs → acorex-platform-module-auth-client-change-password.command-Bt4yOMMt.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-change-password.command-Bman8avz.mjs.map → acorex-platform-module-auth-client-change-password.command-Bt4yOMMt.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-change-photo.command-DFS8TE__.mjs → acorex-platform-module-auth-client-change-photo.command-tZ3TnzBz.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-change-photo.command-DFS8TE__.mjs.map → acorex-platform-module-auth-client-change-photo.command-tZ3TnzBz.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-get-user-activity.query-ZTJMfhir.mjs → acorex-platform-module-auth-client-get-user-activity.query-BxoUkan6.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-get-user-activity.query-ZTJMfhir.mjs.map → acorex-platform-module-auth-client-get-user-activity.query-BxoUkan6.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-lock-screen.command-CUs7Q6yh.mjs → acorex-platform-module-auth-client-lock-screen.command-QXW3UCik.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-lock-screen.command-CUs7Q6yh.mjs.map → acorex-platform-module-auth-client-lock-screen.command-QXW3UCik.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-login.module-DFWtA7S3.mjs → acorex-platform-module-auth-client-login.module-dy4_aiwN.mjs} +3 -3
- package/fesm2022/{acorex-platform-module-auth-client-login.module-DFWtA7S3.mjs.map → acorex-platform-module-auth-client-login.module-dy4_aiwN.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-manage-two-factor.command-BXK7Lvpw.mjs → acorex-platform-module-auth-client-manage-two-factor.command-Cal6EJe0.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-manage-two-factor.command-BXK7Lvpw.mjs.map → acorex-platform-module-auth-client-manage-two-factor.command-Cal6EJe0.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-open-sessions.command-DToDT9eb.mjs → acorex-platform-module-auth-client-open-sessions.command-ZG33hlfh.mjs} +3 -3
- package/fesm2022/{acorex-platform-module-auth-client-open-sessions.command-DToDT9eb.mjs.map → acorex-platform-module-auth-client-open-sessions.command-ZG33hlfh.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-password.component-DAp_-zko.mjs → acorex-platform-module-auth-client-password.component-D0pwQEaB.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-password.component-DAp_-zko.mjs.map → acorex-platform-module-auth-client-password.component-D0pwQEaB.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-profile-activity-chart.component-CLW52NUu.mjs → acorex-platform-module-auth-client-profile-activity-chart.component-DJKJdwUC.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-profile-activity-chart.component-CLW52NUu.mjs.map → acorex-platform-module-auth-client-profile-activity-chart.component-DJKJdwUC.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-profile-page-component.provider-D5xhGDPH.mjs → acorex-platform-module-auth-client-profile-page-component.provider-CSNCpJTo.mjs} +3 -3
- package/fesm2022/{acorex-platform-module-auth-client-profile-page-component.provider-D5xhGDPH.mjs.map → acorex-platform-module-auth-client-profile-page-component.provider-CSNCpJTo.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-profile-page.component-Dc7gRTQD.mjs → acorex-platform-module-auth-client-profile-page.component-BM6a4K1A.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-profile-page.component-Dc7gRTQD.mjs.map → acorex-platform-module-auth-client-profile-page.component-BM6a4K1A.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-register-password.component-C4zu5hpL.mjs → acorex-platform-module-auth-client-register-password.component-BxQNY-Nh.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-register-password.component-C4zu5hpL.mjs.map → acorex-platform-module-auth-client-register-password.component-BxQNY-Nh.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-register.module-Dz-SOKXN.mjs → acorex-platform-module-auth-client-register.module-BLQWaJky.mjs} +3 -3
- package/fesm2022/{acorex-platform-module-auth-client-register.module-Dz-SOKXN.mjs.map → acorex-platform-module-auth-client-register.module-BLQWaJky.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-remove-pin-code.command-LKjypQTk.mjs → acorex-platform-module-auth-client-remove-pin-code.command-DyO4Oj2C.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-remove-pin-code.command-LKjypQTk.mjs.map → acorex-platform-module-auth-client-remove-pin-code.command-DyO4Oj2C.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-routes-Dw8YhBrw.mjs → acorex-platform-module-auth-client-routes-DAwpb1Ca.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-routes-Dw8YhBrw.mjs.map → acorex-platform-module-auth-client-routes-DAwpb1Ca.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-session-lock-overlay.component-PQ91EQjh.mjs → acorex-platform-module-auth-client-session-lock-overlay.component-5opoeMsk.mjs} +3 -3
- package/fesm2022/{acorex-platform-module-auth-client-session-lock-overlay.component-PQ91EQjh.mjs.map → acorex-platform-module-auth-client-session-lock-overlay.component-5opoeMsk.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.command-BdtPwfLH.mjs → acorex-platform-module-auth-client-set-pin-code.command-CRb8NATb.mjs} +3 -3
- package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.command-BdtPwfLH.mjs.map → acorex-platform-module-auth-client-set-pin-code.command-CRb8NATb.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.component-L3DlTawo.mjs → acorex-platform-module-auth-client-set-pin-code.component-6NqaEKMs.mjs} +3 -3
- package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.component-L3DlTawo.mjs.map → acorex-platform-module-auth-client-set-pin-code.component-6NqaEKMs.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-tenant-chooser.component-cRTVB-7T.mjs → acorex-platform-module-auth-client-tenant-chooser.component-C8AopfZ4.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-tenant-chooser.component-cRTVB-7T.mjs.map → acorex-platform-module-auth-client-tenant-chooser.component-C8AopfZ4.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-tenant-request.component-B-qx-HIi.mjs → acorex-platform-module-auth-client-tenant-request.component-CG74dqMX.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-tenant-request.component-B-qx-HIi.mjs.map → acorex-platform-module-auth-client-tenant-request.component-CG74dqMX.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-two-factor-code.component-DDzjCHid.mjs → acorex-platform-module-auth-client-two-factor-code.component-DAMphXPJ.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-two-factor-code.component-DDzjCHid.mjs.map → acorex-platform-module-auth-client-two-factor-code.component-DAMphXPJ.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-two-factor.module-BC8AJTp4.mjs → acorex-platform-module-auth-client-two-factor.module-xzAzTU4n.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-two-factor.module-BC8AJTp4.mjs.map → acorex-platform-module-auth-client-two-factor.module-xzAzTU4n.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-view-login-history.command-EHXTmZtV.mjs → acorex-platform-module-auth-client-view-login-history.command-CLWGDmsI.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-view-login-history.command-EHXTmZtV.mjs.map → acorex-platform-module-auth-client-view-login-history.command-CLWGDmsI.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-welcome-onboarding-page.component-CQUpjsZw.mjs → acorex-platform-module-auth-client-welcome-onboarding-page.component-CdgoC07Q.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-welcome-onboarding-page.component-CQUpjsZw.mjs.map → acorex-platform-module-auth-client-welcome-onboarding-page.component-CdgoC07Q.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-welcome-onboarding.command-D8cyXb5q.mjs → acorex-platform-module-auth-client-welcome-onboarding.command-BNOEiB5l.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-welcome-onboarding.command-D8cyXb5q.mjs.map → acorex-platform-module-auth-client-welcome-onboarding.command-BNOEiB5l.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-auth-client.mjs +1 -1
- package/i18n/en-AU/auth.json +2 -1
- package/i18n/en-US/auth.json +2 -1
- package/i18n/fa-IR/auth.json +2 -1
- package/package.json +3 -3
- package/fesm2022/acorex-platform-module-auth-client-acorex-platform-module-auth-client-Dgo6MzxI.mjs.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i1$4 from '@acorex-platform/framework-client/common';
|
|
2
|
-
import { AXPFileStorageService, AXPHomePageService, AXPPlatformSettingsLoadState, AXPSettingsService,
|
|
3
|
-
import { AXPSessionService, AXPUnauthorizedError, AXPUnauthenticatedError,
|
|
2
|
+
import { AXPFileStorageService, AXPHomePageService, AXPPlatformSettingsLoadState, AXPSettingsService, AXPCommonSettings, AXPDataProvider, AXPSettingDefinitionProviderService, AXPUserStatusFeatureService, AXP_PROTECTED_ROUTE_GUARDS, AXPCommonModule, AXPPlatformSettingsOfflineBootstrapService, AXP_MENU_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER, AXPPlatformBrandingService } from '@acorex-platform/framework-client/common';
|
|
3
|
+
import { AXPSessionService, AXPUnauthorizedError, AXPUnauthenticatedError, storeSessionLimitPendingTenant, isMaxActiveDeviceSessionsError, AXPAuthStrategyRegistryService, traceAuthGuard, AXPAuthGuard, AXPSessionStatus } from '@acorex-platform/framework-client/auth';
|
|
4
4
|
import { AXPUserAvatarService, AXPUserAvatarComponent, AXP_PAGE_COMPONENT_PROVIDER } from '@acorex-platform/framework-client/layout/components';
|
|
5
5
|
import { AXPFileStorageStatus, coerceUnknownToTrimmedString, AXPPlatformScope, AXPKeyboardShortcutPriority, AXPRegionalSetting, verifyPassword, runtimeCommandPayloadData } from '@acorex-platform/framework-shared/core';
|
|
6
6
|
import { RootConfig, AXMSessionStatusTypes, AXPSecurityManagementFeatureKeys, AXMSecurityManagementServerCommands } from '@acorex-platform/module-security-management-client/contracts';
|
|
@@ -36,8 +36,9 @@ import * as i2 from '@acorex/components/loading';
|
|
|
36
36
|
import { AXLoadingModule } from '@acorex/components/loading';
|
|
37
37
|
import * as i3 from '@acorex/components/skeleton';
|
|
38
38
|
import { AXSkeletonModule } from '@acorex/components/skeleton';
|
|
39
|
+
import { AXToastService } from '@acorex/components/toast';
|
|
39
40
|
import * as i5$1 from '@acorex/core/translation';
|
|
40
|
-
import {
|
|
41
|
+
import { AXTranslationService, AXTranslationModule, resolveMultiLanguageString } from '@acorex/core/translation';
|
|
41
42
|
import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';
|
|
42
43
|
import { AXAvatarModule } from '@acorex/components/avatar';
|
|
43
44
|
import { AXImageModule } from '@acorex/components/image';
|
|
@@ -45,7 +46,6 @@ import * as i6 from '@acorex/components/search-box';
|
|
|
45
46
|
import { AXSearchBoxModule } from '@acorex/components/search-box';
|
|
46
47
|
import * as i1$2 from '@angular/forms';
|
|
47
48
|
import { FormsModule } from '@angular/forms';
|
|
48
|
-
import { AXToastService } from '@acorex/components/toast';
|
|
49
49
|
import { AXPLayoutBuilderService } from '@acorex-platform/framework-client/layout/builder';
|
|
50
50
|
import { AXOverlayService } from '@acorex/cdk/overlay';
|
|
51
51
|
import { AXPlatform } from '@acorex/core/platform';
|
|
@@ -996,17 +996,17 @@ const routes = [
|
|
|
996
996
|
{
|
|
997
997
|
path: '',
|
|
998
998
|
loadComponent: () => Promise.resolve().then(function () { return master_layout; }).then((c) => c.AXPAuthMasterLayoutComponent),
|
|
999
|
-
loadChildren: () => import('./acorex-platform-module-auth-client-login.module-
|
|
999
|
+
loadChildren: () => import('./acorex-platform-module-auth-client-login.module-dy4_aiwN.mjs').then((c) => c.AXPSignInModule),
|
|
1000
1000
|
},
|
|
1001
1001
|
{
|
|
1002
1002
|
path: '',
|
|
1003
1003
|
loadComponent: () => Promise.resolve().then(function () { return master_layout; }).then((c) => c.AXPAuthMasterLayoutComponent),
|
|
1004
|
-
loadChildren: () => import('./acorex-platform-module-auth-client-two-factor.module-
|
|
1004
|
+
loadChildren: () => import('./acorex-platform-module-auth-client-two-factor.module-xzAzTU4n.mjs').then((c) => c.AXPTwoFactorModule),
|
|
1005
1005
|
},
|
|
1006
1006
|
{
|
|
1007
1007
|
path: '',
|
|
1008
1008
|
loadComponent: () => Promise.resolve().then(function () { return master_layout; }).then((c) => c.AXPAuthMasterLayoutComponent),
|
|
1009
|
-
loadChildren: () => import('./acorex-platform-module-auth-client-routes-
|
|
1009
|
+
loadChildren: () => import('./acorex-platform-module-auth-client-routes-DAwpb1Ca.mjs').then((c) => c),
|
|
1010
1010
|
},
|
|
1011
1011
|
{
|
|
1012
1012
|
path: 'oauth-callback',
|
|
@@ -1020,12 +1020,24 @@ const routes = [
|
|
|
1020
1020
|
{
|
|
1021
1021
|
path: '',
|
|
1022
1022
|
loadComponent: () => Promise.resolve().then(function () { return master_layout; }).then((c) => c.AXPAuthMasterLayoutComponent),
|
|
1023
|
-
loadChildren: () => import('./acorex-platform-module-auth-client-register.module-
|
|
1023
|
+
loadChildren: () => import('./acorex-platform-module-auth-client-register.module-BLQWaJky.mjs').then((c) => c.AXPRegisterModule),
|
|
1024
1024
|
},
|
|
1025
1025
|
],
|
|
1026
1026
|
},
|
|
1027
1027
|
];
|
|
1028
1028
|
|
|
1029
|
+
//#region ----- Session limit navigation -----
|
|
1030
|
+
async function navigateToSessionLimitChooser(router, tenant) {
|
|
1031
|
+
storeSessionLimitPendingTenant(tenant);
|
|
1032
|
+
return router.navigate(['/auth/account/session-limit'], {
|
|
1033
|
+
state: { tenant },
|
|
1034
|
+
});
|
|
1035
|
+
}
|
|
1036
|
+
function isSessionLimitBindError(error) {
|
|
1037
|
+
return isMaxActiveDeviceSessionsError(error);
|
|
1038
|
+
}
|
|
1039
|
+
//#endregion
|
|
1040
|
+
|
|
1029
1041
|
class AXPAppChooserListComponent {
|
|
1030
1042
|
//#endregion
|
|
1031
1043
|
//#region ---- Computed Properties ----
|
|
@@ -1043,6 +1055,9 @@ class AXPAppChooserListComponent {
|
|
|
1043
1055
|
this.sessionService = inject(AXPSessionService);
|
|
1044
1056
|
this.homePageService = inject(AXPHomePageService);
|
|
1045
1057
|
this.authStrategyRegistry = inject(AXPAuthStrategyRegistryService);
|
|
1058
|
+
this.toastService = inject(AXToastService);
|
|
1059
|
+
this.translationService = inject(AXTranslationService);
|
|
1060
|
+
this.router = inject(Router);
|
|
1046
1061
|
this.logoRegistration = inject(AXPEntityLogoRegistrationService);
|
|
1047
1062
|
this.applicationService = this.entityService.withEntity(RootConfig$1.module.name, RootConfig$1.entities.application.name).data();
|
|
1048
1063
|
this.strategyName = this.sessionService.getSessionData()?.strategy;
|
|
@@ -1198,6 +1213,22 @@ class AXPAppChooserListComponent {
|
|
|
1198
1213
|
this.applicationChosen.emit();
|
|
1199
1214
|
await this.homePageService.navigateTo();
|
|
1200
1215
|
}
|
|
1216
|
+
catch (error) {
|
|
1217
|
+
const tenant = this.sessionService.tenant;
|
|
1218
|
+
if (tenant?.id && isSessionLimitBindError(error)) {
|
|
1219
|
+
await navigateToSessionLimitChooser(this.router, tenant);
|
|
1220
|
+
return;
|
|
1221
|
+
}
|
|
1222
|
+
if (!this.sessionService.hasSessionCredentials()) {
|
|
1223
|
+
await this.router.navigate(['/auth/login']);
|
|
1224
|
+
return;
|
|
1225
|
+
}
|
|
1226
|
+
this.toastService.show({
|
|
1227
|
+
color: 'danger',
|
|
1228
|
+
content: await this.translationService.translateAsync('@auth:application-chooser.open-failed'),
|
|
1229
|
+
timeOut: 5000,
|
|
1230
|
+
});
|
|
1231
|
+
}
|
|
1201
1232
|
finally {
|
|
1202
1233
|
this.isChoosing.set(false);
|
|
1203
1234
|
this.choosingId.set(null);
|
|
@@ -1215,7 +1246,7 @@ class AXPAppChooserListComponent {
|
|
|
1215
1246
|
}
|
|
1216
1247
|
}
|
|
1217
1248
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPAppChooserListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1218
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPAppChooserListComponent, isStandalone: true, selector: "axp-app-chooser-list", inputs: { simple: { classPropertyName: "simple", publicName: "simple", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { applicationChosen: "applicationChosen", loadingChange: "loadingChange" }, viewQueries: [{ propertyName: "listNav", first: true, predicate: AXListNavigationDirective, descendants: true, isSignal: true }, { propertyName: "listItems", predicate: AXListNavigationItemDirective, descendants: true, isSignal: true }], ngImport: i0, template: "@if (isLoading()) {\n <div class=\"w-full flex flex-col gap-3\">\n @for (item of skeletonItems; track item) {\n <div class=\"flex gap-3 items-center p-2\">\n <ax-skeleton [animated]=\"true\" class=\"size-10 rounded-lg shrink-0\"></ax-skeleton>\n <ax-skeleton [animated]=\"true\" class=\"flex-1 h-5 rounded-md\"></ax-skeleton>\n <ax-skeleton [animated]=\"true\" class=\"w-16 h-4 rounded-md shrink-0\"></ax-skeleton>\n </div>\n }\n </div>\n} @else if (useSelectBox()) {\n <div\n class=\"w-full flex flex-col gap-4\"\n [class.pointer-events-none]=\"isChoosing()\"\n [class.opacity-60]=\"isChoosing()\"\n (keydown.capture)=\"handleSelectBoxKeyDown($event)\"\n >\n <ax-lookup\n class=\"w-full\"\n mode=\"drop-down-list\"\n [dataSource]=\"allApplications()\"\n textField=\"title\"\n valueField=\"id\"\n [value]=\"selectedApplication()?.id\"\n [itemHeight]=\"56\"\n [searchable]=\"true\"\n [placeholder]=\"('@auth:application-chooser.select-placeholder' | translate | async) ?? ''\"\n [itemTemplate]=\"applicationItemTemplate\"\n [selectedTemplate]=\"applicationItemTemplate\"\n (onOpened)=\"handleSelectBoxOpened()\"\n (onClosed)=\"handleSelectBoxClosed()\"\n (onValueChanged)=\"handleApplicationSelect($event)\"\n (onSelectionChanged)=\"handleApplicationSelectionChanged($event)\"\n >\n </ax-lookup>\n <ax-button\n class=\"w-full\"\n color=\"primary\"\n [disabled]=\"!canApply() || isChoosing()\"\n [text]=\"('@general:actions.apply.title' | translate | async) ?? ''\"\n (onClick)=\"applySelection()\"\n >\n @if (isChoosing()) {\n <ax-loading></ax-loading>\n }\n </ax-button>\n </div>\n} @else {\n <div\n axListNavigation\n #listNav=\"axListNavigation\"\n class=\"w-full overflow-auto max-h-[300px] flex flex-col divide-y divide-neutral-100 dark:divide-neutral-800\"\n role=\"listbox\"\n [class.pointer-events-none]=\"isChoosing()\"\n >\n @for (application of allApplications(); track application.id) {\n <div\n axListNavigationItem\n #navItem=\"axListNavigationItem\"\n tabindex=\"0\"\n role=\"option\"\n [attr.aria-selected]=\"isApplicationSelected(application)\"\n [attr.aria-busy]=\"choosingId() === application.id\"\n class=\"flex gap-2 items-center p-2 cursor-pointer rounded-md transition-colors outline-none hover:bg-primary-lightest hover:dark:bg-primary-dark focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary\"\n [class.bg-primary-lighter]=\"isApplicationSelected(application)\"\n [class.dark:bg-primary-darker]=\"isApplicationSelected(application)\"\n [class.text-primary-on-lighter]=\"isApplicationSelected(application)\"\n [class.dark:text-primary-on-darker]=\"isApplicationSelected(application)\"\n [class.opacity-50]=\"isChoosing() && choosingId() !== application.id\"\n [class.cursor-wait]=\"isChoosing()\"\n (click)=\"chooseApplication(application)\"\n (keydown)=\"handleListItemKeyDown($event, application)\"\n >\n <div class=\"flex flex-1 gap-3 items-center min-w-0\">\n <div class=\"shrink-0 size-12 overflow-hidden rounded-lg\">\n <axp-logo\n [logoKey]=\"applicationLogoKey(application)\"\n appearance=\"colored\"\n [size]=\"42\"\n [attr.alt]=\"(application.title | translate | async) ?? ''\"\n class=\"size-12 overflow-hidden rounded-lg\"\n ></axp-logo>\n </div>\n <span class=\"flex-1 min-w-0 text-start md:text-base text-sm break-words md:truncate\">{{\n application.title | translate | async\n }}</span>\n @if (application.edition?.title) {\n <span class=\"text-muted text-xs shrink-0\">{{\n application.edition?.title | translate | async\n }}</span>\n }\n </div>\n @if (choosingId() === application.id) {\n <ax-loading class=\"shrink-0\"></ax-loading>\n }\n </div>\n }\n </div>\n}\n\n<ng-template #applicationItemTemplate let-item>\n <div class=\"flex gap-3 items-center p-2\">\n <div class=\"size-12 overflow-hidden rounded-lg shrink-0\">\n <axp-logo\n [logoKey]=\"applicationLogoKey(item)\"\n appearance=\"colored\"\n [size]=\"42\"\n [attr.alt]=\"(item.title | translate | async) ?? ''\"\n class=\"size-12 overflow-hidden rounded-lg\"\n ></axp-logo>\n </div>\n <span class=\"flex-1 text-start md:text-base text-sm\">{{ item.title | translate | async }}</span>\n @if (item.edition?.title) {\n <span class=\"text-muted text-xs\">{{ item.edition.title | translate | async }}</span>\n }\n </div>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i2.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXSkeletonModule }, { kind: "component", type: i3.AXSkeletonComponent, selector: "ax-skeleton", inputs: ["animated"] }, { kind: "component", type: AXLookupComponent, selector: "ax-lookup", inputs: ["name", "mode", "dataSource", "treeDataSource", "valueField", "textField", "disabledField", "columns", "treeParentField", "hasChildrenField", "searchable", "adaptivityEnabled", "caption", "alternate", "searchPlaceholder", "placeholder", "disabled", "readonly", "look", "itemHeight", "maxVisibleItems", "treeSelectionBehavior", "highlightSearch", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "value", "valueItems"], outputs: ["lookChange", "valueChange", "onValueChanged", "onSelectionChanged", "onFocus", "onBlur", "onItemClick", "onItemSelected", "onOpened", "onClosed"] }, { kind: "ngmodule", type: AXListNavigationModule }, { kind: "directive", type: i4.AXListNavigationDirective, selector: "[axListNavigation]", inputs: ["orientation"], outputs: ["onNavigationChanged", "onKeypress"], exportAs: ["axListNavigation"] }, { kind: "directive", type: i4.AXListNavigationItemDirective, selector: "[axListNavigationItem]", outputs: ["onKeypress"], exportAs: ["axListNavigationItem"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXPLogoComponent, selector: "axp-logo", inputs: ["logoKey", "appearance", "size", "format"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i5$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1249
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPAppChooserListComponent, isStandalone: true, selector: "axp-app-chooser-list", inputs: { simple: { classPropertyName: "simple", publicName: "simple", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { applicationChosen: "applicationChosen", loadingChange: "loadingChange" }, viewQueries: [{ propertyName: "listNav", first: true, predicate: AXListNavigationDirective, descendants: true, isSignal: true }, { propertyName: "listItems", predicate: AXListNavigationItemDirective, descendants: true, isSignal: true }], ngImport: i0, template: "@if (isLoading()) {\n <div class=\"w-full flex flex-col gap-3\">\n @for (item of skeletonItems; track item) {\n <div class=\"flex gap-3 items-center p-2\">\n <ax-skeleton [animated]=\"true\" class=\"size-10 rounded-lg shrink-0\"></ax-skeleton>\n <ax-skeleton [animated]=\"true\" class=\"flex-1 h-5 rounded-md\"></ax-skeleton>\n <ax-skeleton [animated]=\"true\" class=\"w-16 h-4 rounded-md shrink-0\"></ax-skeleton>\n </div>\n }\n </div>\n} @else if (useSelectBox()) {\n <div\n class=\"w-full flex flex-col gap-4\"\n [class.pointer-events-none]=\"isChoosing()\"\n [class.opacity-60]=\"isChoosing()\"\n (keydown.capture)=\"handleSelectBoxKeyDown($event)\"\n >\n <ax-lookup\n class=\"w-full\"\n mode=\"drop-down-list\"\n [dataSource]=\"allApplications()\"\n textField=\"title\"\n valueField=\"id\"\n [value]=\"selectedApplication()?.id\"\n [itemHeight]=\"56\"\n [searchable]=\"true\"\n [placeholder]=\"('@auth:application-chooser.select-placeholder' | translate | async) ?? ''\"\n [itemTemplate]=\"applicationItemTemplate\"\n [selectedTemplate]=\"applicationItemTemplate\"\n (onOpened)=\"handleSelectBoxOpened()\"\n (onClosed)=\"handleSelectBoxClosed()\"\n (onValueChanged)=\"handleApplicationSelect($event)\"\n (onSelectionChanged)=\"handleApplicationSelectionChanged($event)\"\n >\n </ax-lookup>\n <ax-button\n class=\"w-full\"\n color=\"primary\"\n [disabled]=\"!canApply() || isChoosing()\"\n [text]=\"('@general:actions.apply.title' | translate | async) ?? ''\"\n (onClick)=\"applySelection()\"\n >\n @if (isChoosing()) {\n <ax-loading></ax-loading>\n }\n </ax-button>\n </div>\n} @else {\n <div\n axListNavigation\n #listNav=\"axListNavigation\"\n class=\"w-full overflow-auto max-h-[300px] flex flex-col divide-y divide-neutral-100 dark:divide-neutral-800\"\n role=\"listbox\"\n [class.pointer-events-none]=\"isChoosing()\"\n >\n @for (application of allApplications(); track application.id) {\n <div\n axListNavigationItem\n #navItem=\"axListNavigationItem\"\n tabindex=\"0\"\n role=\"option\"\n [attr.aria-selected]=\"isApplicationSelected(application)\"\n [attr.aria-busy]=\"choosingId() === application.id\"\n class=\"flex gap-2 items-center p-2 cursor-pointer rounded-md transition-colors outline-none hover:bg-primary-lightest hover:dark:bg-primary-dark focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary\"\n [class.bg-primary-lighter]=\"isApplicationSelected(application)\"\n [class.dark:bg-primary-darker]=\"isApplicationSelected(application)\"\n [class.text-primary-on-lighter]=\"isApplicationSelected(application)\"\n [class.dark:text-primary-on-darker]=\"isApplicationSelected(application)\"\n [class.opacity-50]=\"isChoosing() && choosingId() !== application.id\"\n [class.cursor-wait]=\"isChoosing()\"\n (click)=\"chooseApplication(application)\"\n (keydown)=\"handleListItemKeyDown($event, application)\"\n >\n <div class=\"flex flex-1 gap-3 items-center min-w-0\">\n <div class=\"shrink-0 size-12 overflow-hidden rounded-lg\">\n <axp-logo\n [logoKey]=\"applicationLogoKey(application)\"\n appearance=\"colored\"\n [size]=\"42\"\n [attr.alt]=\"(application.title | translate | async) ?? ''\"\n class=\"size-12 overflow-hidden rounded-lg\"\n ></axp-logo>\n </div>\n <span class=\"flex-1 min-w-0 text-start md:text-base text-sm break-words md:truncate\">{{\n application.title | translate | async\n }}</span>\n @if (application.edition?.title) {\n <span class=\"text-muted text-xs shrink-0\">{{\n application.edition?.title | translate | async\n }}</span>\n }\n </div>\n @if (choosingId() === application.id) {\n <ax-loading class=\"shrink-0\"></ax-loading>\n }\n </div>\n }\n </div>\n}\n\n<ng-template #applicationItemTemplate let-item>\n <div class=\"flex gap-3 items-center p-2\">\n <div class=\"size-12 overflow-hidden rounded-lg shrink-0\">\n <axp-logo\n [logoKey]=\"applicationLogoKey(item)\"\n appearance=\"colored\"\n [size]=\"42\"\n [attr.alt]=\"(item.title | translate | async) ?? ''\"\n class=\"size-12 overflow-hidden rounded-lg\"\n ></axp-logo>\n </div>\n <span class=\"flex-1 text-start md:text-base text-sm\">{{ item.title | translate | async }}</span>\n @if (item.edition?.title) {\n <span class=\"text-muted text-xs\">{{ item.edition.title | translate | async }}</span>\n }\n </div>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i2.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXSkeletonModule }, { kind: "component", type: i3.AXSkeletonComponent, selector: "ax-skeleton", inputs: ["animated"] }, { kind: "component", type: AXLookupComponent, selector: "ax-lookup", inputs: ["name", "mode", "dataSource", "treeDataSource", "valueField", "textField", "disabledField", "columns", "treeParentField", "hasChildrenField", "searchable", "adaptivityEnabled", "caption", "alternate", "searchPlaceholder", "placeholder", "disabled", "readonly", "look", "itemHeight", "maxVisibleItems", "treeSelectionBehavior", "highlightSearch", "allowSelectAll", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "value", "valueItems", "prefetch"], outputs: ["lookChange", "valueChange", "onValueChanged", "onSelectionChanged", "onFocus", "onBlur", "onItemClick", "onItemSelected", "onOpened", "onClosed"] }, { kind: "ngmodule", type: AXListNavigationModule }, { kind: "directive", type: i4.AXListNavigationDirective, selector: "[axListNavigation]", inputs: ["orientation"], outputs: ["onNavigationChanged", "onKeypress"], exportAs: ["axListNavigation"] }, { kind: "directive", type: i4.AXListNavigationItemDirective, selector: "[axListNavigationItem]", outputs: ["onKeypress"], exportAs: ["axListNavigationItem"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXPLogoComponent, selector: "axp-logo", inputs: ["logoKey", "appearance", "size", "format"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i5$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1219
1250
|
}
|
|
1220
1251
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPAppChooserListComponent, decorators: [{
|
|
1221
1252
|
type: Component,
|
|
@@ -1244,25 +1275,13 @@ class AXMAppChooserSlotComponent {
|
|
|
1244
1275
|
this.appPopover()?.close();
|
|
1245
1276
|
}
|
|
1246
1277
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMAppChooserSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1247
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMAppChooserSlotComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "appPopover", first: true, predicate: ["appPopover"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (applications$ | async; as applications) {\n @if (applications.length > 1) {\n <ax-button [color]=\"themeStore.headerButtonColor()\" [look]=\"themeStore.headerButtonLook()\" #appChooser>\n <ax-icon class=\"fa-regular fa-grid-2\"> </ax-icon>\n </ax-button>\n <ax-popover [target]=\"appChooser\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\" #appPopover>\n <div class=\"bg-lightest border overflow-hidden rounded-md shadow-md w-full min-w-64 p-1\">\n <axp-app-chooser-list [simple]=\"true\" (applicationChosen)=\"closePopover()\"></axp-app-chooser-list>\n </div>\n </ax-popover>\n }\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i2$1.AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disablePanelClass", "visualContextScope", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "closeOnScroll", "closeOnNavigation", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: AXPAppChooserListComponent, selector: "axp-app-chooser-list", inputs: ["simple"], outputs: ["applicationChosen", "loadingChange"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
|
|
1278
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMAppChooserSlotComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "appPopover", first: true, predicate: ["appPopover"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (applications$ | async; as applications) {\n @if (applications.length > 1) {\n <ax-button [color]=\"themeStore.headerButtonColor()\" [look]=\"themeStore.headerButtonLook()\" #appChooser>\n <ax-icon class=\"fa-regular fa-grid-2\"> </ax-icon>\n </ax-button>\n <ax-popover [target]=\"appChooser\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\" #appPopover>\n <div class=\"bg-lightest border overflow-hidden rounded-md shadow-md w-full min-w-64 p-1\">\n <axp-app-chooser-list [simple]=\"true\" (applicationChosen)=\"closePopover()\"></axp-app-chooser-list>\n </div>\n </ax-popover>\n }\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i2$1.AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disablePanelClass", "visualContextScope", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "restoreFocusOnClose", "openAfter", "closeAfter", "closeOnScroll", "closeOnNavigation", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: AXPAppChooserListComponent, selector: "axp-app-chooser-list", inputs: ["simple"], outputs: ["applicationChosen", "loadingChange"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
|
|
1248
1279
|
}
|
|
1249
1280
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMAppChooserSlotComponent, decorators: [{
|
|
1250
1281
|
type: Component,
|
|
1251
1282
|
args: [{ changeDetection: ChangeDetectionStrategy.Eager, imports: [CommonModule, AXButtonModule, AXPopoverModule, AXDecoratorModule, AXPAppChooserListComponent], template: "@if (applications$ | async; as applications) {\n @if (applications.length > 1) {\n <ax-button [color]=\"themeStore.headerButtonColor()\" [look]=\"themeStore.headerButtonLook()\" #appChooser>\n <ax-icon class=\"fa-regular fa-grid-2\"> </ax-icon>\n </ax-button>\n <ax-popover [target]=\"appChooser\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\" #appPopover>\n <div class=\"bg-lightest border overflow-hidden rounded-md shadow-md w-full min-w-64 p-1\">\n <axp-app-chooser-list [simple]=\"true\" (applicationChosen)=\"closePopover()\"></axp-app-chooser-list>\n </div>\n </ax-popover>\n }\n}\n" }]
|
|
1252
1283
|
}], propDecorators: { appPopover: [{ type: i0.ViewChild, args: ['appPopover', { isSignal: true }] }] } });
|
|
1253
1284
|
|
|
1254
|
-
//#region ----- Session limit navigation -----
|
|
1255
|
-
async function navigateToSessionLimitChooser(router, tenant) {
|
|
1256
|
-
storeSessionLimitPendingTenant(tenant);
|
|
1257
|
-
return router.navigate(['/auth/account/session-limit'], {
|
|
1258
|
-
state: { tenant },
|
|
1259
|
-
});
|
|
1260
|
-
}
|
|
1261
|
-
function isSessionLimitBindError(error) {
|
|
1262
|
-
return isMaxActiveDeviceSessionsError(error);
|
|
1263
|
-
}
|
|
1264
|
-
//#endregion
|
|
1265
|
-
|
|
1266
1285
|
class AXPTenantChooserListComponent {
|
|
1267
1286
|
tenantLogoKey(tenant) {
|
|
1268
1287
|
return axpTenantLogoKey(tenant.id);
|
|
@@ -1463,7 +1482,7 @@ class AXPTenantChooserListComponent {
|
|
|
1463
1482
|
}
|
|
1464
1483
|
}
|
|
1465
1484
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPTenantChooserListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1466
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPTenantChooserListComponent, isStandalone: true, selector: "axp-tenant-chooser-list", inputs: { simple: { classPropertyName: "simple", publicName: "simple", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { tenantChosen: "tenantChosen", loadingChange: "loadingChange" }, viewQueries: [{ propertyName: "listNav", first: true, predicate: AXListNavigationDirective, descendants: true, isSignal: true }, { propertyName: "listItems", predicate: AXListNavigationItemDirective, descendants: true, isSignal: true }], ngImport: i0, template: "@if (isLoading()) {\n <!--->\n <!-- ----- Compact dropdown skeleton ----- -->\n @if (simple()) {\n <div class=\"w-full flex flex-col gap-1\">\n @for (item of skeletonItems; track item) {\n <div class=\"flex gap-2 items-center p-2\">\n <ax-skeleton [animated]=\"true\" class=\"size-6 rounded-md shrink-0\"></ax-skeleton>\n <ax-skeleton [animated]=\"true\" class=\"flex-1 h-4 rounded-md\"></ax-skeleton>\n </div>\n }\n </div>\n }\n <!-- ----- Full chooser skeleton ----- -->\n @else {\n <div class=\"w-full flex flex-col gap-3\">\n @for (item of skeletonItems; track item) {\n <div class=\"flex gap-3 items-center p-2\">\n <ax-skeleton [animated]=\"true\" class=\"size-12 rounded-lg shrink-0\"></ax-skeleton>\n <ax-skeleton [animated]=\"true\" class=\"flex-1 h-5 rounded-md\"></ax-skeleton>\n </div>\n }\n </div>\n }\n}\n<!-- ----- Compact list for header/sidebar dropdowns ----- -->\n@else if (simple()) {\n <div\n class=\"w-full overflow-auto max-h-[300px] flex flex-col gap-1\"\n [class.pointer-events-none]=\"isChoosing()\"\n >\n @for (tenant of allTenants(); track tenant.id) {\n <div\n class=\"flex gap-2 items-center p-2 cursor-pointer rounded-md transition-colors hover:bg-primary-lightest hover:dark:bg-primary-dark\"\n [class.bg-primary-lighter]=\"isTenantSelected(tenant)\"\n [class.dark:bg-primary-darker]=\"isTenantSelected(tenant)\"\n [class.opacity-50]=\"isChoosing() && choosingId() !== tenant.id\"\n [class.cursor-wait]=\"isChoosing()\"\n [attr.aria-busy]=\"choosingId() === tenant.id\"\n (click)=\"chooseTenant(tenant)\"\n >\n <div class=\"flex flex-1 gap-2 items-center min-w-0\">\n <div class=\"shrink-0 size-6 overflow-hidden rounded-md grid place-items-center\">\n <axp-logo\n [logoKey]=\"tenantLogoKey(tenant)\"\n appearance=\"colored\"\n [size]=\"24\"\n [attr.alt]=\"(tenant.title | translate | async) ?? ''\"\n class=\"size-6 overflow-hidden\"\n ></axp-logo>\n </div>\n <span class=\"flex-1 truncate text-start text-sm\">{{\n tenant.title | translate | async\n }}</span>\n </div>\n <!--->\n <!-- ----- Choosing indicator for this tenant ----- -->\n @if (choosingId() === tenant.id) {\n <ax-loading class=\"shrink-0\"></ax-loading>\n }\n </div>\n }\n </div>\n}\n<!-- ----- Lookup when the catalog is long ----- -->\n@else if (useSelectBox()) {\n <div\n class=\"w-full flex flex-col gap-4\"\n [class.pointer-events-none]=\"isChoosing()\"\n [class.opacity-60]=\"isChoosing()\"\n (keydown.capture)=\"handleSelectBoxKeyDown($event)\"\n >\n <ax-lookup\n class=\"w-full\"\n mode=\"drop-down-list\"\n [dataSource]=\"allTenants()\"\n textField=\"title\"\n valueField=\"id\"\n [value]=\"selectedTenant()?.id\"\n [itemHeight]=\"56\"\n [searchable]=\"true\"\n [placeholder]=\"('@auth:tenant-chooser.select-placeholder' | translate | async) ?? ''\"\n [itemTemplate]=\"tenantItemTemplate\"\n [selectedTemplate]=\"tenantItemTemplate\"\n (onOpened)=\"handleSelectBoxOpened()\"\n (onClosed)=\"handleSelectBoxClosed()\"\n (onValueChanged)=\"handleTenantSelect($event)\"\n (onSelectionChanged)=\"handleTenantSelectionChanged($event)\"\n >\n </ax-lookup>\n <ax-button\n class=\"w-full\"\n color=\"primary\"\n [disabled]=\"!canApply() || isChoosing()\"\n [text]=\"('@general:actions.apply.title' | translate | async) ?? ''\"\n (onClick)=\"applySelection()\"\n >\n @if (isChoosing()) {\n <ax-loading></ax-loading>\n }\n </ax-button>\n </div>\n}\n<!-- ----- Full list on the login tenant chooser ----- -->\n@else {\n @if (showSearchAndViewAll()) {\n <ax-search-box\n [placeholder]=\"'@general:search.title' | translate | async\"\n [ngModel]=\"searchValue()\"\n (ngModelChange)=\"handleSearch($event)\"\n class=\"w-full\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n }\n <div\n axListNavigation\n #listNav=\"axListNavigation\"\n class=\"w-full overflow-auto max-h-[300px] flex flex-col divide-y divide-neutral-100 dark:divide-neutral-800\"\n role=\"listbox\"\n [class.pointer-events-none]=\"isChoosing()\"\n >\n @for (tenant of displayedTenants(); track tenant.id) {\n <div\n axListNavigationItem\n #navItem=\"axListNavigationItem\"\n tabindex=\"0\"\n role=\"option\"\n [attr.aria-selected]=\"isTenantSelected(tenant)\"\n [attr.aria-busy]=\"choosingId() === tenant.id\"\n class=\"flex gap-2 items-center p-2 cursor-pointer rounded-md transition-colors outline-none hover:bg-primary-lightest hover:dark:bg-primary-dark focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary\"\n [class.bg-primary-lighter]=\"isTenantSelected(tenant)\"\n [class.dark:bg-primary-darker]=\"isTenantSelected(tenant)\"\n [class.text-primary-on-lighter]=\"isTenantSelected(tenant)\"\n [class.dark:text-primary-on-darker]=\"isTenantSelected(tenant)\"\n [class.opacity-50]=\"isChoosing() && choosingId() !== tenant.id\"\n [class.cursor-wait]=\"isChoosing()\"\n (click)=\"chooseTenant(tenant)\"\n (keydown)=\"handleListItemKeyDown($event, tenant)\"\n >\n <div class=\"flex flex-1 gap-3 items-center min-w-0\">\n <div class=\"shrink-0 size-12 overflow-hidden rounded-lg\">\n <axp-logo\n [logoKey]=\"tenantLogoKey(tenant)\"\n appearance=\"colored\"\n [size]=\"42\"\n [attr.alt]=\"(tenant.title | translate | async) ?? ''\"\n class=\"size-12 overflow-hidden rounded-lg\"\n ></axp-logo>\n </div>\n <span class=\"flex-1 truncate text-start md:text-base text-sm\">{{\n tenant.title | translate | async\n }}</span>\n </div>\n @if (choosingId() === tenant.id) {\n <ax-loading class=\"shrink-0\"></ax-loading>\n }\n </div>\n }\n </div>\n @if (showSearchAndViewAll()) {\n <div class=\"mt-6 w-full flex justify-center\">\n <ax-button\n (onClick)=\"showAllTenants()\"\n class=\"w-full\"\n look=\"outline\"\n [disabled]=\"isChoosing()\"\n [text]=\"\n showAll()\n ? ('@general:actions.view-less.title' | translate | async)\n : ('@general:actions.view-all.title' | translate | async)\n \"\n ></ax-button>\n </div>\n }\n}\n\n<ng-template #tenantItemTemplate let-item>\n <div class=\"flex gap-3 items-center p-2\">\n <div class=\"size-12 overflow-hidden rounded-lg shrink-0\">\n <axp-logo\n [logoKey]=\"tenantLogoKey(item)\"\n appearance=\"colored\"\n [size]=\"42\"\n [attr.alt]=\"(item.title | translate | async) ?? ''\"\n class=\"size-12 overflow-hidden rounded-lg\"\n ></axp-logo>\n </div>\n <span class=\"text-start md:text-base text-sm\">{{ item.title | translate | async }}</span>\n </div>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3$1.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i2.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXSkeletonModule }, { kind: "component", type: i3.AXSkeletonComponent, selector: "ax-skeleton", inputs: ["animated"] }, { kind: "component", type: AXLookupComponent, selector: "ax-lookup", inputs: ["name", "mode", "dataSource", "treeDataSource", "valueField", "textField", "disabledField", "columns", "treeParentField", "hasChildrenField", "searchable", "adaptivityEnabled", "caption", "alternate", "searchPlaceholder", "placeholder", "disabled", "readonly", "look", "itemHeight", "maxVisibleItems", "treeSelectionBehavior", "highlightSearch", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "value", "valueItems"], outputs: ["lookChange", "valueChange", "onValueChanged", "onSelectionChanged", "onFocus", "onBlur", "onItemClick", "onItemSelected", "onOpened", "onClosed"] }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i6.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type", "autoSearch"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXListNavigationModule }, { kind: "directive", type: i4.AXListNavigationDirective, selector: "[axListNavigation]", inputs: ["orientation"], outputs: ["onNavigationChanged", "onKeypress"], exportAs: ["axListNavigation"] }, { kind: "directive", type: i4.AXListNavigationItemDirective, selector: "[axListNavigationItem]", outputs: ["onKeypress"], exportAs: ["axListNavigationItem"] }, { kind: "component", type: AXPLogoComponent, selector: "axp-logo", inputs: ["logoKey", "appearance", "size", "format"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i5$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1485
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPTenantChooserListComponent, isStandalone: true, selector: "axp-tenant-chooser-list", inputs: { simple: { classPropertyName: "simple", publicName: "simple", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { tenantChosen: "tenantChosen", loadingChange: "loadingChange" }, viewQueries: [{ propertyName: "listNav", first: true, predicate: AXListNavigationDirective, descendants: true, isSignal: true }, { propertyName: "listItems", predicate: AXListNavigationItemDirective, descendants: true, isSignal: true }], ngImport: i0, template: "@if (isLoading()) {\n <!--->\n <!-- ----- Compact dropdown skeleton ----- -->\n @if (simple()) {\n <div class=\"w-full flex flex-col gap-1\">\n @for (item of skeletonItems; track item) {\n <div class=\"flex gap-2 items-center p-2\">\n <ax-skeleton [animated]=\"true\" class=\"size-6 rounded-md shrink-0\"></ax-skeleton>\n <ax-skeleton [animated]=\"true\" class=\"flex-1 h-4 rounded-md\"></ax-skeleton>\n </div>\n }\n </div>\n }\n <!-- ----- Full chooser skeleton ----- -->\n @else {\n <div class=\"w-full flex flex-col gap-3\">\n @for (item of skeletonItems; track item) {\n <div class=\"flex gap-3 items-center p-2\">\n <ax-skeleton [animated]=\"true\" class=\"size-12 rounded-lg shrink-0\"></ax-skeleton>\n <ax-skeleton [animated]=\"true\" class=\"flex-1 h-5 rounded-md\"></ax-skeleton>\n </div>\n }\n </div>\n }\n}\n<!-- ----- Compact list for header/sidebar dropdowns ----- -->\n@else if (simple()) {\n <div\n class=\"w-full overflow-auto max-h-[300px] flex flex-col gap-1\"\n [class.pointer-events-none]=\"isChoosing()\"\n >\n @for (tenant of allTenants(); track tenant.id) {\n <div\n class=\"flex gap-2 items-center p-2 cursor-pointer rounded-md transition-colors hover:bg-primary-lightest hover:dark:bg-primary-dark\"\n [class.bg-primary-lighter]=\"isTenantSelected(tenant)\"\n [class.dark:bg-primary-darker]=\"isTenantSelected(tenant)\"\n [class.opacity-50]=\"isChoosing() && choosingId() !== tenant.id\"\n [class.cursor-wait]=\"isChoosing()\"\n [attr.aria-busy]=\"choosingId() === tenant.id\"\n (click)=\"chooseTenant(tenant)\"\n >\n <div class=\"flex flex-1 gap-2 items-center min-w-0\">\n <div class=\"shrink-0 size-6 overflow-hidden rounded-md grid place-items-center\">\n <axp-logo\n [logoKey]=\"tenantLogoKey(tenant)\"\n appearance=\"colored\"\n [size]=\"24\"\n [attr.alt]=\"(tenant.title | translate | async) ?? ''\"\n class=\"size-6 overflow-hidden\"\n ></axp-logo>\n </div>\n <span class=\"flex-1 truncate text-start text-sm\">{{\n tenant.title | translate | async\n }}</span>\n </div>\n <!--->\n <!-- ----- Choosing indicator for this tenant ----- -->\n @if (choosingId() === tenant.id) {\n <ax-loading class=\"shrink-0\"></ax-loading>\n }\n </div>\n }\n </div>\n}\n<!-- ----- Lookup when the catalog is long ----- -->\n@else if (useSelectBox()) {\n <div\n class=\"w-full flex flex-col gap-4\"\n [class.pointer-events-none]=\"isChoosing()\"\n [class.opacity-60]=\"isChoosing()\"\n (keydown.capture)=\"handleSelectBoxKeyDown($event)\"\n >\n <ax-lookup\n class=\"w-full\"\n mode=\"drop-down-list\"\n [dataSource]=\"allTenants()\"\n textField=\"title\"\n valueField=\"id\"\n [value]=\"selectedTenant()?.id\"\n [itemHeight]=\"56\"\n [searchable]=\"true\"\n [placeholder]=\"('@auth:tenant-chooser.select-placeholder' | translate | async) ?? ''\"\n [itemTemplate]=\"tenantItemTemplate\"\n [selectedTemplate]=\"tenantItemTemplate\"\n (onOpened)=\"handleSelectBoxOpened()\"\n (onClosed)=\"handleSelectBoxClosed()\"\n (onValueChanged)=\"handleTenantSelect($event)\"\n (onSelectionChanged)=\"handleTenantSelectionChanged($event)\"\n >\n </ax-lookup>\n <ax-button\n class=\"w-full\"\n color=\"primary\"\n [disabled]=\"!canApply() || isChoosing()\"\n [text]=\"('@general:actions.apply.title' | translate | async) ?? ''\"\n (onClick)=\"applySelection()\"\n >\n @if (isChoosing()) {\n <ax-loading></ax-loading>\n }\n </ax-button>\n </div>\n}\n<!-- ----- Full list on the login tenant chooser ----- -->\n@else {\n @if (showSearchAndViewAll()) {\n <ax-search-box\n [placeholder]=\"'@general:search.title' | translate | async\"\n [ngModel]=\"searchValue()\"\n (ngModelChange)=\"handleSearch($event)\"\n class=\"w-full\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n }\n <div\n axListNavigation\n #listNav=\"axListNavigation\"\n class=\"w-full overflow-auto max-h-[300px] flex flex-col divide-y divide-neutral-100 dark:divide-neutral-800\"\n role=\"listbox\"\n [class.pointer-events-none]=\"isChoosing()\"\n >\n @for (tenant of displayedTenants(); track tenant.id) {\n <div\n axListNavigationItem\n #navItem=\"axListNavigationItem\"\n tabindex=\"0\"\n role=\"option\"\n [attr.aria-selected]=\"isTenantSelected(tenant)\"\n [attr.aria-busy]=\"choosingId() === tenant.id\"\n class=\"flex gap-2 items-center p-2 cursor-pointer rounded-md transition-colors outline-none hover:bg-primary-lightest hover:dark:bg-primary-dark focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary\"\n [class.bg-primary-lighter]=\"isTenantSelected(tenant)\"\n [class.dark:bg-primary-darker]=\"isTenantSelected(tenant)\"\n [class.text-primary-on-lighter]=\"isTenantSelected(tenant)\"\n [class.dark:text-primary-on-darker]=\"isTenantSelected(tenant)\"\n [class.opacity-50]=\"isChoosing() && choosingId() !== tenant.id\"\n [class.cursor-wait]=\"isChoosing()\"\n (click)=\"chooseTenant(tenant)\"\n (keydown)=\"handleListItemKeyDown($event, tenant)\"\n >\n <div class=\"flex flex-1 gap-3 items-center min-w-0\">\n <div class=\"shrink-0 size-12 overflow-hidden rounded-lg\">\n <axp-logo\n [logoKey]=\"tenantLogoKey(tenant)\"\n appearance=\"colored\"\n [size]=\"42\"\n [attr.alt]=\"(tenant.title | translate | async) ?? ''\"\n class=\"size-12 overflow-hidden rounded-lg\"\n ></axp-logo>\n </div>\n <span class=\"flex-1 truncate text-start md:text-base text-sm\">{{\n tenant.title | translate | async\n }}</span>\n </div>\n @if (choosingId() === tenant.id) {\n <ax-loading class=\"shrink-0\"></ax-loading>\n }\n </div>\n }\n </div>\n @if (showSearchAndViewAll()) {\n <div class=\"mt-6 w-full flex justify-center\">\n <ax-button\n (onClick)=\"showAllTenants()\"\n class=\"w-full\"\n look=\"outline\"\n [disabled]=\"isChoosing()\"\n [text]=\"\n showAll()\n ? ('@general:actions.view-less.title' | translate | async)\n : ('@general:actions.view-all.title' | translate | async)\n \"\n ></ax-button>\n </div>\n }\n}\n\n<ng-template #tenantItemTemplate let-item>\n <div class=\"flex gap-3 items-center p-2\">\n <div class=\"size-12 overflow-hidden rounded-lg shrink-0\">\n <axp-logo\n [logoKey]=\"tenantLogoKey(item)\"\n appearance=\"colored\"\n [size]=\"42\"\n [attr.alt]=\"(item.title | translate | async) ?? ''\"\n class=\"size-12 overflow-hidden rounded-lg\"\n ></axp-logo>\n </div>\n <span class=\"text-start md:text-base text-sm\">{{ item.title | translate | async }}</span>\n </div>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3$1.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i2.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXSkeletonModule }, { kind: "component", type: i3.AXSkeletonComponent, selector: "ax-skeleton", inputs: ["animated"] }, { kind: "component", type: AXLookupComponent, selector: "ax-lookup", inputs: ["name", "mode", "dataSource", "treeDataSource", "valueField", "textField", "disabledField", "columns", "treeParentField", "hasChildrenField", "searchable", "adaptivityEnabled", "caption", "alternate", "searchPlaceholder", "placeholder", "disabled", "readonly", "look", "itemHeight", "maxVisibleItems", "treeSelectionBehavior", "highlightSearch", "allowSelectAll", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "value", "valueItems", "prefetch"], outputs: ["lookChange", "valueChange", "onValueChanged", "onSelectionChanged", "onFocus", "onBlur", "onItemClick", "onItemSelected", "onOpened", "onClosed"] }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i6.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type", "autoSearch"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXListNavigationModule }, { kind: "directive", type: i4.AXListNavigationDirective, selector: "[axListNavigation]", inputs: ["orientation"], outputs: ["onNavigationChanged", "onKeypress"], exportAs: ["axListNavigation"] }, { kind: "directive", type: i4.AXListNavigationItemDirective, selector: "[axListNavigationItem]", outputs: ["onKeypress"], exportAs: ["axListNavigationItem"] }, { kind: "component", type: AXPLogoComponent, selector: "axp-logo", inputs: ["logoKey", "appearance", "size", "format"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i5$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1467
1486
|
}
|
|
1468
1487
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPTenantChooserListComponent, decorators: [{
|
|
1469
1488
|
type: Component,
|
|
@@ -1524,7 +1543,7 @@ class AXPTenantChooserDropdownComponent {
|
|
|
1524
1543
|
void this.router.navigate(['/auth/account/tenant-chooser']);
|
|
1525
1544
|
}
|
|
1526
1545
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPTenantChooserDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1527
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPTenantChooserDropdownComponent, isStandalone: true, selector: "axp-tenant-chooser-dropdown", inputs: { inline: "inline" }, viewQueries: [{ propertyName: "tenantPopover", first: true, predicate: ["tenantPopover"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (tenantsLoading()) {\n <ax-skeleton [animated]=\"true\" class=\"h-5 w-32 max-w-full\"></ax-skeleton>\n} @else if (tenants$ | async; as tenants) {\n @if (inline) {\n @if (tenants.length > 1) {\n <!-- ----- Inline dropdown for multi-tenant ----- -->\n <span\n class=\"text-xs font-medium px-3 cursor-pointer inline-flex items-center gap-1\"\n #inlineTenantTrigger\n >\n {{ ((tenant$ | async)?.title | translate | async) ?? '' }}\n <i class=\"fa-solid fa-caret-down text-2xs opacity-60\"></i>\n </span>\n <ax-popover\n [target]=\"inlineTenantTrigger\"\n [openOn]=\"'toggle'\"\n [closeOn]=\"'clickOut'\"\n [adaptivityEnabled]=\"true\"\n #tenantPopover\n >\n <div [class]=\"popupPanelClass\">\n <axp-tenant-chooser-list\n [simple]=\"true\"\n (tenantChosen)=\"closePopover()\"\n ></axp-tenant-chooser-list>\n </div>\n </ax-popover>\n } @else {\n <!-- ----- Plain text for single tenant ----- -->\n <span class=\"text-xs font-medium px-3\">\n {{ ((tenant$ | async)?.title | translate | async) ?? '' }}\n </span>\n }\n } @else {\n @if (tenants.length > 1) {\n <ax-button\n [text]=\"((tenant$ | async)?.title | translate | async) ?? ''\"\n look=\"blank\"\n #tenantChooser\n >\n <ax-suffix>\n <ax-icon class=\"fa-solid fa-caret-down\"></ax-icon>\n </ax-suffix>\n </ax-button>\n <ax-popover\n [target]=\"tenantChooser\"\n [openOn]=\"'toggle'\"\n [closeOn]=\"'clickOut'\"\n [adaptivityEnabled]=\"true\"\n #tenantPopover\n >\n <div [class]=\"popupPanelClass\">\n <axp-tenant-chooser-list\n [simple]=\"true\"\n (tenantChosen)=\"closePopover()\"\n ></axp-tenant-chooser-list>\n </div>\n </ax-popover>\n } @else {\n <ax-button\n [text]=\"((tenant$ | async)?.title | translate | async) ?? ''\"\n class=\"ax-sm\"\n look=\"blank\"\n ></ax-button>\n }\n }\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i2$1.AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disablePanelClass", "visualContextScope", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "closeOnScroll", "closeOnNavigation", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXSkeletonModule }, { kind: "component", type: i3.AXSkeletonComponent, selector: "ax-skeleton", inputs: ["animated"] }, { kind: "component", type: AXPTenantChooserListComponent, selector: "axp-tenant-chooser-list", inputs: ["simple"], outputs: ["tenantChosen", "loadingChange"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i5$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
|
|
1546
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPTenantChooserDropdownComponent, isStandalone: true, selector: "axp-tenant-chooser-dropdown", inputs: { inline: "inline" }, viewQueries: [{ propertyName: "tenantPopover", first: true, predicate: ["tenantPopover"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (tenantsLoading()) {\n <ax-skeleton [animated]=\"true\" class=\"h-5 w-32 max-w-full\"></ax-skeleton>\n} @else if (tenants$ | async; as tenants) {\n @if (inline) {\n @if (tenants.length > 1) {\n <!-- ----- Inline dropdown for multi-tenant ----- -->\n <span\n class=\"text-xs font-medium px-3 cursor-pointer inline-flex items-center gap-1\"\n #inlineTenantTrigger\n >\n {{ ((tenant$ | async)?.title | translate | async) ?? '' }}\n <i class=\"fa-solid fa-caret-down text-2xs opacity-60\"></i>\n </span>\n <ax-popover\n [target]=\"inlineTenantTrigger\"\n [openOn]=\"'toggle'\"\n [closeOn]=\"'clickOut'\"\n [adaptivityEnabled]=\"true\"\n #tenantPopover\n >\n <div [class]=\"popupPanelClass\">\n <axp-tenant-chooser-list\n [simple]=\"true\"\n (tenantChosen)=\"closePopover()\"\n ></axp-tenant-chooser-list>\n </div>\n </ax-popover>\n } @else {\n <!-- ----- Plain text for single tenant ----- -->\n <span class=\"text-xs font-medium px-3\">\n {{ ((tenant$ | async)?.title | translate | async) ?? '' }}\n </span>\n }\n } @else {\n @if (tenants.length > 1) {\n <ax-button\n [text]=\"((tenant$ | async)?.title | translate | async) ?? ''\"\n look=\"blank\"\n #tenantChooser\n >\n <ax-suffix>\n <ax-icon class=\"fa-solid fa-caret-down\"></ax-icon>\n </ax-suffix>\n </ax-button>\n <ax-popover\n [target]=\"tenantChooser\"\n [openOn]=\"'toggle'\"\n [closeOn]=\"'clickOut'\"\n [adaptivityEnabled]=\"true\"\n #tenantPopover\n >\n <div [class]=\"popupPanelClass\">\n <axp-tenant-chooser-list\n [simple]=\"true\"\n (tenantChosen)=\"closePopover()\"\n ></axp-tenant-chooser-list>\n </div>\n </ax-popover>\n } @else {\n <ax-button\n [text]=\"((tenant$ | async)?.title | translate | async) ?? ''\"\n class=\"ax-sm\"\n look=\"blank\"\n ></ax-button>\n }\n }\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i2$1.AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disablePanelClass", "visualContextScope", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "restoreFocusOnClose", "openAfter", "closeAfter", "closeOnScroll", "closeOnNavigation", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXSkeletonModule }, { kind: "component", type: i3.AXSkeletonComponent, selector: "ax-skeleton", inputs: ["animated"] }, { kind: "component", type: AXPTenantChooserListComponent, selector: "axp-tenant-chooser-list", inputs: ["simple"], outputs: ["tenantChosen", "loadingChange"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i5$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
|
|
1528
1547
|
}
|
|
1529
1548
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPTenantChooserDropdownComponent, decorators: [{
|
|
1530
1549
|
type: Component,
|
|
@@ -1600,7 +1619,8 @@ class AXMAuthProfileSlotComponent {
|
|
|
1600
1619
|
//#region ---- Private Methods ----
|
|
1601
1620
|
bindLockMenuSettingsReload() {
|
|
1602
1621
|
this.settingsService.onChanged.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event) => {
|
|
1603
|
-
if (!event.keys.includes(AXPAuthSettings.LockWhenIdleEnabled)
|
|
1622
|
+
if (!event.keys.includes(AXPAuthSettings.LockWhenIdleEnabled) &&
|
|
1623
|
+
!event.keys.includes(AXPCommonSettings.UserStatusEnabled)) {
|
|
1604
1624
|
return;
|
|
1605
1625
|
}
|
|
1606
1626
|
void this.loadMenuItems();
|
|
@@ -1660,7 +1680,7 @@ class AXMAuthProfileSlotComponent {
|
|
|
1660
1680
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMAuthProfileSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1661
1681
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMAuthProfileSlotComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "@if (isAuthenticated$ | async) {\n <div class=\"size-fit\">\n <div #avatar>\n <axp-user-avatar\n [size]=\"36\"\n [userId]=\"$safeNavigationMigration((user$ | async)?.id)!\"\n [showPresence]=\"true\"\n ></axp-user-avatar>\n </div>\n\n <ax-popover\n [target]=\"avatar\"\n [openOn]=\"'toggle'\"\n [closeOn]=\"'clickOut'\"\n [adaptivityEnabled]=\"false\"\n #p\n >\n <div\n class=\"bg-lightest border border-lightest rounded-md shadow-md w-80\"\n >\n <div class=\"flex flex-col items-center p-4 border-b\">\n <axp-user-avatar\n [size]=\"64\"\n [userId]=\"$safeNavigationMigration((user$ | async)?.id)!\"\n [showPresence]=\"false\"\n ></axp-user-avatar>\n\n <div class=\"flex flex-col items-center justify-center mt-2\">\n <div class=\"text-base font-bold \">{{ (user$ | async)?.title }}</div>\n @if (!deviceService.isSmall()) {\n <axp-tenant-chooser-dropdown class=\"mt-1\"></axp-tenant-chooser-dropdown>\n }\n </div>\n </div>\n <div class=\"axp-profile-slot-menus\">\n <ul>\n @for (item of menuItems(); track item.name ?? item.title) {\n @if (item.visible != false) {\n @if (hasProfileSlotMenuBreakBefore(item.break)) {\n <li class=\"axp-profile-slot-menu-break\" role=\"separator\"></li>\n }\n <li [class]=\"menuItemClass(item)\">\n <a (click)=\"handleMenuItemClick(item, p)\">\n <i [class]=\"item.icon\"></i>\n <span class=\"flex-1\">{{\n item.title | translate | async\n }}</span>\n </a>\n </li>\n @if (hasProfileSlotMenuBreakAfter(item.break)) {\n <li class=\"axp-profile-slot-menu-break\" role=\"separator\"></li>\n }\n }\n }\n </ul>\n </div>\n </div>\n </ax-popover>\n </div>\n} @else {\n <ax-button\n color=\"default\"\n look=\"blank\"\n [text]=\"('@auth:profile-page.profile-slot.sign-up-sign-in' | translate | async) ?? ''\"\n (click)=\"handleSignIn()\"\n >\n <ax-icon>\n <i class=\"fa-solid fa-user text-slate-400 dark:text-slate-200\"></i>\n </ax-icon>\n </ax-button>\n}\n", styles: ["@layer properties;.axp-profile-slot-menus ul{margin-top:calc(var(--spacing, .25rem) * 2);display:flex;flex-direction:column;gap:var(--spacing, .25rem);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--color-border-default);padding-inline:calc(var(--spacing, .25rem) * 2)}.axp-profile-slot-menus ul:last-child{border-style:var(--tw-border-style);border-width:0px}.axp-profile-slot-menus ul li{display:flex;cursor:pointer;border-radius:var(--radius-md, .375rem)}.axp-profile-slot-menus ul li:last-child{margin-bottom:calc(var(--spacing, .25rem) * 2)}.axp-profile-slot-menus ul li:hover{background-color:rgba(var(--ax-sys-color-dark-surface))}.axp-profile-slot-menus ul li.axp-profile-slot-menu-break{pointer-events:none;margin-inline:calc(var(--spacing, .25rem) * 2);margin-block:var(--spacing, .25rem);height:0px;min-height:0px;cursor:default;border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--color-border-default);padding:0}.axp-profile-slot-menus ul li.axp-profile-slot-menu-break:hover{background-color:transparent}.axp-profile-slot-menus ul li i{margin-inline-end:calc(var(--spacing, .25rem) * 3);display:grid;height:calc(var(--spacing, .25rem) * 6);width:calc(var(--spacing, .25rem) * 6);place-items:center;font-size:var(--text-xl, 1.25rem);line-height:var(--tw-leading, var(--text-xl--line-height, calc(1.75 / 1.25)))}.axp-profile-slot-menus ul li a{display:flex;height:100%;width:100%;align-items:center;gap:calc(var(--spacing, .25rem) * 2);padding:calc(var(--spacing, .25rem) * 2)}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type:
|
|
1662
1682
|
//
|
|
1663
|
-
AXImageModule }, { kind: "ngmodule", type: AXAvatarModule }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i2$1.AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disablePanelClass", "visualContextScope", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "closeOnScroll", "closeOnNavigation", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type:
|
|
1683
|
+
AXImageModule }, { kind: "ngmodule", type: AXAvatarModule }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i2$1.AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disablePanelClass", "visualContextScope", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "restoreFocusOnClose", "openAfter", "closeAfter", "closeOnScroll", "closeOnNavigation", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type:
|
|
1664
1684
|
// AXKBDComponent,
|
|
1665
1685
|
// AXKBDItemComponent,
|
|
1666
1686
|
AXLoadingModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXPUserAvatarComponent, selector: "axp-user-avatar", inputs: ["size", "userId", "showPresence", "displayName", "displayAvatar"] }, { kind: "component", type:
|
|
@@ -2418,7 +2438,7 @@ function routesFacory() {
|
|
|
2418
2438
|
routes = [
|
|
2419
2439
|
{
|
|
2420
2440
|
path: 'tenant-chooser',
|
|
2421
|
-
loadComponent: () => import('./acorex-platform-module-auth-client-tenant-chooser.component-
|
|
2441
|
+
loadComponent: () => import('./acorex-platform-module-auth-client-tenant-chooser.component-C8AopfZ4.mjs').then((c) => c.AXPAuthTenantChooserComponent),
|
|
2422
2442
|
canActivate: [AXPAuthGuard, canActivateTenantChooser],
|
|
2423
2443
|
},
|
|
2424
2444
|
{
|
|
@@ -2433,12 +2453,12 @@ function routesFacory() {
|
|
|
2433
2453
|
},
|
|
2434
2454
|
{
|
|
2435
2455
|
path: 'app-chooser',
|
|
2436
|
-
loadComponent: () => import('./acorex-platform-module-auth-client-app-chooser.component-
|
|
2456
|
+
loadComponent: () => import('./acorex-platform-module-auth-client-app-chooser.component-DpGdObrH.mjs').then((c) => c.AXPAuthAppChooserComponent),
|
|
2437
2457
|
canActivate: [AXPAuthGuard, canActivateAppChooser],
|
|
2438
2458
|
},
|
|
2439
2459
|
{
|
|
2440
2460
|
path: 'welcome-onboarding',
|
|
2441
|
-
loadComponent: () => import('./acorex-platform-module-auth-client-welcome-onboarding-page.component-
|
|
2461
|
+
loadComponent: () => import('./acorex-platform-module-auth-client-welcome-onboarding-page.component-CdgoC07Q.mjs').then((c) => c.AXPAuthWelcomeOnboardingPageComponent),
|
|
2442
2462
|
canActivate: [AXPAuthGuard, canActivateWelcomeOnboarding],
|
|
2443
2463
|
},
|
|
2444
2464
|
];
|
|
@@ -2826,7 +2846,7 @@ class AXPIdleLockService {
|
|
|
2826
2846
|
this.overlayOpening = true;
|
|
2827
2847
|
this.locked.set(true);
|
|
2828
2848
|
try {
|
|
2829
|
-
const { AXMSessionLockOverlayComponent: overlayComponent } = await import('./acorex-platform-module-auth-client-session-lock-overlay.component-
|
|
2849
|
+
const { AXMSessionLockOverlayComponent: overlayComponent } = await import('./acorex-platform-module-auth-client-session-lock-overlay.component-5opoeMsk.mjs');
|
|
2830
2850
|
const panelClasses = ['axm-session-lock-overlay-shell'];
|
|
2831
2851
|
if (this.platform.isDark()) {
|
|
2832
2852
|
panelClasses.push('ax-dark');
|
|
@@ -3711,32 +3731,38 @@ const ProfileSlotLockMenuHookProvider = {
|
|
|
3711
3731
|
const ProfileSlotPresenceMenuHookProvider = {
|
|
3712
3732
|
key: PROFILE_SLOT_MENU_ITEMS_HOOK,
|
|
3713
3733
|
priority: 40,
|
|
3714
|
-
execute: (payload) =>
|
|
3715
|
-
|
|
3716
|
-
|
|
3717
|
-
|
|
3718
|
-
|
|
3719
|
-
|
|
3720
|
-
|
|
3721
|
-
|
|
3722
|
-
|
|
3723
|
-
|
|
3724
|
-
|
|
3725
|
-
|
|
3726
|
-
|
|
3727
|
-
|
|
3728
|
-
|
|
3729
|
-
|
|
3730
|
-
|
|
3731
|
-
|
|
3732
|
-
|
|
3733
|
-
|
|
3734
|
-
|
|
3735
|
-
|
|
3736
|
-
|
|
3737
|
-
|
|
3738
|
-
|
|
3739
|
-
|
|
3734
|
+
execute: async (payload) => {
|
|
3735
|
+
const userStatus = inject(AXPUserStatusFeatureService);
|
|
3736
|
+
if (!(await userStatus.isEnabled())) {
|
|
3737
|
+
return payload;
|
|
3738
|
+
}
|
|
3739
|
+
return {
|
|
3740
|
+
...payload,
|
|
3741
|
+
items: [
|
|
3742
|
+
...payload.items,
|
|
3743
|
+
{
|
|
3744
|
+
name: 'presence-available',
|
|
3745
|
+
title: '@auth:profile.presence-available',
|
|
3746
|
+
icon: 'fa-solid fa-circle text-success',
|
|
3747
|
+
break: { before: true },
|
|
3748
|
+
command: { name: PRESENCE_SET_AVAILABILITY, options: { status: 'online' } },
|
|
3749
|
+
},
|
|
3750
|
+
{
|
|
3751
|
+
name: 'presence-away',
|
|
3752
|
+
title: '@auth:profile.presence-away',
|
|
3753
|
+
icon: 'fa-solid fa-circle text-warning',
|
|
3754
|
+
command: { name: PRESENCE_SET_AVAILABILITY, options: { status: 'away' } },
|
|
3755
|
+
},
|
|
3756
|
+
{
|
|
3757
|
+
name: 'presence-busy',
|
|
3758
|
+
title: '@auth:profile.presence-busy',
|
|
3759
|
+
icon: 'fa-solid fa-circle text-danger',
|
|
3760
|
+
break: { after: true },
|
|
3761
|
+
command: { name: PRESENCE_SET_AVAILABILITY, options: { status: 'busy' } },
|
|
3762
|
+
},
|
|
3763
|
+
],
|
|
3764
|
+
};
|
|
3765
|
+
},
|
|
3740
3766
|
};
|
|
3741
3767
|
//#endregion
|
|
3742
3768
|
|
|
@@ -4081,7 +4107,7 @@ function provideAuthSecurityAlertRealtime() {
|
|
|
4081
4107
|
//#endregion
|
|
4082
4108
|
|
|
4083
4109
|
function profileRoutesFactory() {
|
|
4084
|
-
const loadProfilePage = () => import('./acorex-platform-module-auth-client-profile-page.component-
|
|
4110
|
+
const loadProfilePage = () => import('./acorex-platform-module-auth-client-profile-page.component-BM6a4K1A.mjs').then((c) => c.AXMUserProfilePageComponent);
|
|
4085
4111
|
return [
|
|
4086
4112
|
{
|
|
4087
4113
|
path: ':app/profile',
|
|
@@ -4199,11 +4225,11 @@ class AXMAuthModule {
|
|
|
4199
4225
|
AXMAuthErrorHandler,
|
|
4200
4226
|
provideLazyProvider(AXP_MENU_PROVIDER, () => import('./acorex-platform-module-auth-client-menu.provider-Bz-kRip4.mjs').then(m => m.AXMSecurityManagementModuleMenuProvider)),
|
|
4201
4227
|
provideLazyProvider(AXP_SETTING_DEFINITION_PROVIDER, () => import('./acorex-platform-module-auth-client-settings.provider-DsKsZrOC.mjs').then(m => m.AXMSettingProvider)),
|
|
4202
|
-
provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-platform-module-auth-client-profile-page-component.provider-
|
|
4228
|
+
provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-platform-module-auth-client-profile-page-component.provider-CSNCpJTo.mjs').then((module) => module.AXMProfilePageComponentProvider)),
|
|
4203
4229
|
provideQuerySetups([
|
|
4204
4230
|
{
|
|
4205
4231
|
key: 'Auth:GetUserActivity',
|
|
4206
|
-
loader: () => import('./acorex-platform-module-auth-client-get-user-activity.query-
|
|
4232
|
+
loader: () => import('./acorex-platform-module-auth-client-get-user-activity.query-BxoUkan6.mjs').then((c) => c.AXMGetUserActivityQuery),
|
|
4207
4233
|
},
|
|
4208
4234
|
]),
|
|
4209
4235
|
{
|
|
@@ -4227,15 +4253,15 @@ class AXMAuthModule {
|
|
|
4227
4253
|
},
|
|
4228
4254
|
{
|
|
4229
4255
|
key: AXMAuthCommandKeys.Session.OpenSessions,
|
|
4230
|
-
command: () => import('./acorex-platform-module-auth-client-open-sessions.command-
|
|
4256
|
+
command: () => import('./acorex-platform-module-auth-client-open-sessions.command-ZG33hlfh.mjs').then((c) => c.AXPOpenSessionsCommand),
|
|
4231
4257
|
},
|
|
4232
4258
|
{
|
|
4233
4259
|
key: AXMAuthCommandKeys.Session.LockScreen,
|
|
4234
|
-
command: () => import('./acorex-platform-module-auth-client-lock-screen.command-
|
|
4260
|
+
command: () => import('./acorex-platform-module-auth-client-lock-screen.command-QXW3UCik.mjs').then((c) => c.AXPLockScreenCommand),
|
|
4235
4261
|
},
|
|
4236
4262
|
{
|
|
4237
4263
|
key: AXMAuthCommandKeys.Profile.ChangePhoto,
|
|
4238
|
-
command: () => import('./acorex-platform-module-auth-client-change-photo.command-
|
|
4264
|
+
command: () => import('./acorex-platform-module-auth-client-change-photo.command-tZ3TnzBz.mjs').then((c) => c.AXPChangePhotoCommand),
|
|
4239
4265
|
},
|
|
4240
4266
|
{
|
|
4241
4267
|
key: AXMAuthCommandKeys.Profile.EditAccountInfo,
|
|
@@ -4243,23 +4269,23 @@ class AXMAuthModule {
|
|
|
4243
4269
|
},
|
|
4244
4270
|
{
|
|
4245
4271
|
key: AXMAuthCommandKeys.Security.ChangePassword,
|
|
4246
|
-
command: () => import('./acorex-platform-module-auth-client-change-password.command-
|
|
4272
|
+
command: () => import('./acorex-platform-module-auth-client-change-password.command-Bt4yOMMt.mjs').then((c) => c.AXPChangePasswordCommand),
|
|
4247
4273
|
},
|
|
4248
4274
|
{
|
|
4249
4275
|
key: AXMAuthCommandKeys.Security.ManageTwoFactor,
|
|
4250
|
-
command: () => import('./acorex-platform-module-auth-client-manage-two-factor.command-
|
|
4276
|
+
command: () => import('./acorex-platform-module-auth-client-manage-two-factor.command-Cal6EJe0.mjs').then((c) => c.AXPManageTwoFactorCommand),
|
|
4251
4277
|
},
|
|
4252
4278
|
{
|
|
4253
4279
|
key: AXMAuthCommandKeys.Security.SetPinCode,
|
|
4254
|
-
command: () => import('./acorex-platform-module-auth-client-set-pin-code.command-
|
|
4280
|
+
command: () => import('./acorex-platform-module-auth-client-set-pin-code.command-CRb8NATb.mjs').then((c) => c.AXPSetPinCodeCommand),
|
|
4255
4281
|
},
|
|
4256
4282
|
{
|
|
4257
4283
|
key: AXMAuthCommandKeys.Security.RemovePinCode,
|
|
4258
|
-
command: () => import('./acorex-platform-module-auth-client-remove-pin-code.command-
|
|
4284
|
+
command: () => import('./acorex-platform-module-auth-client-remove-pin-code.command-DyO4Oj2C.mjs').then((c) => c.AXPRemovePinCodeCommand),
|
|
4259
4285
|
},
|
|
4260
4286
|
{
|
|
4261
4287
|
key: AXMAuthCommandKeys.Security.ViewLoginHistory,
|
|
4262
|
-
command: () => import('./acorex-platform-module-auth-client-view-login-history.command-
|
|
4288
|
+
command: () => import('./acorex-platform-module-auth-client-view-login-history.command-CLWGDmsI.mjs').then((c) => c.AXPViewLoginHistoryCommand),
|
|
4263
4289
|
},
|
|
4264
4290
|
{
|
|
4265
4291
|
key: AXMAuthCommandKeys.Security.EditSignature,
|
|
@@ -4271,7 +4297,7 @@ class AXMAuthModule {
|
|
|
4271
4297
|
},
|
|
4272
4298
|
{
|
|
4273
4299
|
key: AXMAuthCommandKeys.Onboarding.Welcome,
|
|
4274
|
-
command: () => import('./acorex-platform-module-auth-client-welcome-onboarding.command-
|
|
4300
|
+
command: () => import('./acorex-platform-module-auth-client-welcome-onboarding.command-BNOEiB5l.mjs').then((c) => c.AXPWelcomeOnboardingCommand),
|
|
4275
4301
|
},
|
|
4276
4302
|
{
|
|
4277
4303
|
key: AXMAuthCommandKeys.Account.OpenWaitingRoom,
|
|
@@ -4437,11 +4463,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
4437
4463
|
AXMAuthErrorHandler,
|
|
4438
4464
|
provideLazyProvider(AXP_MENU_PROVIDER, () => import('./acorex-platform-module-auth-client-menu.provider-Bz-kRip4.mjs').then(m => m.AXMSecurityManagementModuleMenuProvider)),
|
|
4439
4465
|
provideLazyProvider(AXP_SETTING_DEFINITION_PROVIDER, () => import('./acorex-platform-module-auth-client-settings.provider-DsKsZrOC.mjs').then(m => m.AXMSettingProvider)),
|
|
4440
|
-
provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-platform-module-auth-client-profile-page-component.provider-
|
|
4466
|
+
provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-platform-module-auth-client-profile-page-component.provider-CSNCpJTo.mjs').then((module) => module.AXMProfilePageComponentProvider)),
|
|
4441
4467
|
provideQuerySetups([
|
|
4442
4468
|
{
|
|
4443
4469
|
key: 'Auth:GetUserActivity',
|
|
4444
|
-
loader: () => import('./acorex-platform-module-auth-client-get-user-activity.query-
|
|
4470
|
+
loader: () => import('./acorex-platform-module-auth-client-get-user-activity.query-BxoUkan6.mjs').then((c) => c.AXMGetUserActivityQuery),
|
|
4445
4471
|
},
|
|
4446
4472
|
]),
|
|
4447
4473
|
{
|
|
@@ -4465,15 +4491,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
4465
4491
|
},
|
|
4466
4492
|
{
|
|
4467
4493
|
key: AXMAuthCommandKeys.Session.OpenSessions,
|
|
4468
|
-
command: () => import('./acorex-platform-module-auth-client-open-sessions.command-
|
|
4494
|
+
command: () => import('./acorex-platform-module-auth-client-open-sessions.command-ZG33hlfh.mjs').then((c) => c.AXPOpenSessionsCommand),
|
|
4469
4495
|
},
|
|
4470
4496
|
{
|
|
4471
4497
|
key: AXMAuthCommandKeys.Session.LockScreen,
|
|
4472
|
-
command: () => import('./acorex-platform-module-auth-client-lock-screen.command-
|
|
4498
|
+
command: () => import('./acorex-platform-module-auth-client-lock-screen.command-QXW3UCik.mjs').then((c) => c.AXPLockScreenCommand),
|
|
4473
4499
|
},
|
|
4474
4500
|
{
|
|
4475
4501
|
key: AXMAuthCommandKeys.Profile.ChangePhoto,
|
|
4476
|
-
command: () => import('./acorex-platform-module-auth-client-change-photo.command-
|
|
4502
|
+
command: () => import('./acorex-platform-module-auth-client-change-photo.command-tZ3TnzBz.mjs').then((c) => c.AXPChangePhotoCommand),
|
|
4477
4503
|
},
|
|
4478
4504
|
{
|
|
4479
4505
|
key: AXMAuthCommandKeys.Profile.EditAccountInfo,
|
|
@@ -4481,23 +4507,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
4481
4507
|
},
|
|
4482
4508
|
{
|
|
4483
4509
|
key: AXMAuthCommandKeys.Security.ChangePassword,
|
|
4484
|
-
command: () => import('./acorex-platform-module-auth-client-change-password.command-
|
|
4510
|
+
command: () => import('./acorex-platform-module-auth-client-change-password.command-Bt4yOMMt.mjs').then((c) => c.AXPChangePasswordCommand),
|
|
4485
4511
|
},
|
|
4486
4512
|
{
|
|
4487
4513
|
key: AXMAuthCommandKeys.Security.ManageTwoFactor,
|
|
4488
|
-
command: () => import('./acorex-platform-module-auth-client-manage-two-factor.command-
|
|
4514
|
+
command: () => import('./acorex-platform-module-auth-client-manage-two-factor.command-Cal6EJe0.mjs').then((c) => c.AXPManageTwoFactorCommand),
|
|
4489
4515
|
},
|
|
4490
4516
|
{
|
|
4491
4517
|
key: AXMAuthCommandKeys.Security.SetPinCode,
|
|
4492
|
-
command: () => import('./acorex-platform-module-auth-client-set-pin-code.command-
|
|
4518
|
+
command: () => import('./acorex-platform-module-auth-client-set-pin-code.command-CRb8NATb.mjs').then((c) => c.AXPSetPinCodeCommand),
|
|
4493
4519
|
},
|
|
4494
4520
|
{
|
|
4495
4521
|
key: AXMAuthCommandKeys.Security.RemovePinCode,
|
|
4496
|
-
command: () => import('./acorex-platform-module-auth-client-remove-pin-code.command-
|
|
4522
|
+
command: () => import('./acorex-platform-module-auth-client-remove-pin-code.command-DyO4Oj2C.mjs').then((c) => c.AXPRemovePinCodeCommand),
|
|
4497
4523
|
},
|
|
4498
4524
|
{
|
|
4499
4525
|
key: AXMAuthCommandKeys.Security.ViewLoginHistory,
|
|
4500
|
-
command: () => import('./acorex-platform-module-auth-client-view-login-history.command-
|
|
4526
|
+
command: () => import('./acorex-platform-module-auth-client-view-login-history.command-CLWGDmsI.mjs').then((c) => c.AXPViewLoginHistoryCommand),
|
|
4501
4527
|
},
|
|
4502
4528
|
{
|
|
4503
4529
|
key: AXMAuthCommandKeys.Security.EditSignature,
|
|
@@ -4509,7 +4535,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
4509
4535
|
},
|
|
4510
4536
|
{
|
|
4511
4537
|
key: AXMAuthCommandKeys.Onboarding.Welcome,
|
|
4512
|
-
command: () => import('./acorex-platform-module-auth-client-welcome-onboarding.command-
|
|
4538
|
+
command: () => import('./acorex-platform-module-auth-client-welcome-onboarding.command-BNOEiB5l.mjs').then((c) => c.AXPWelcomeOnboardingCommand),
|
|
4513
4539
|
},
|
|
4514
4540
|
{
|
|
4515
4541
|
key: AXMAuthCommandKeys.Account.OpenWaitingRoom,
|
|
@@ -4689,4 +4715,4 @@ var master_layout = /*#__PURE__*/Object.freeze({
|
|
|
4689
4715
|
*/
|
|
4690
4716
|
|
|
4691
4717
|
export { configAuthModule as $, AXMUserDeviceSessionsService as A, AXPAppChooserListComponent as B, CHANGE_PASSWORD_SECTION_ID as C, AXPOnboardingProgressService as D, formatCompactActivityCount as E, AXPLoginExternalProvidersComponent as F, AXMAuthenticationTypes as G, AUTH_LOGIN_EXTERNAL_PROVIDERS_SLOT as H, AUTH_USER_ACTIVITY_CLUSTER_GAP_DAYS as I, AUTH_USER_ACTIVITY_DEFAULT_WEEKS as J, AUTH_USER_ACTIVITY_WEEK_PRESETS as K, AXMAuthErrorHandler as L, AXMAuthModule as M, AXMDefaultAuthConfigs as N, AXM_AUTH_CONFIG_TOKEN as O, PROFILE_PAGE_GROUPS_HOOK as P, AXPAuthMasterLayoutComponent as Q, ONBOARDING_STEPS_HOOK as R, ONBOARDING_WELCOME_SETTING_KEY as S, TWO_FACTOR_SECTION_ID$1 as T, PROFILE_SLOT_MENU_ITEMS_HOOK as U, aggregateDailySessionCounts as V, aggregateHourlySessionCounts as W, buildUserActivityHours as X, buildUserActivityWeeks as Y, canActivateLogin as Z, computeUserActivityStats as _, PROFILE_PAGE_SECTIONS_HOOK as a, countToActivityLevel as a0, extractUserActivityEndDate as a1, extractUserActivityStartDate as a2, extractUserActivityUserId as a3, hasProfileSlotMenuBreakAfter as a4, hasProfileSlotMenuBreakBefore as a5, isUserProfileGroupComponent as a6, isUserProfileSectionsGroupRequested as a7, parseAuthCredentialType as a8, resolveDayDateRange as a9, resolveUserActivityHeatmapLayout as aa, PROFILE_PAGE_HEADER_META_HOOK as b, resolveUserProfileSectionContent as c, PROFILE_SECTION_INSIGHTS_PATCH_METADATA_KEY as d, PROFILE_ACTIVITY_CHART_COMPONENT_KEY as e, PROFILE_DELETE_ACCOUNT_DANGER_ZONE_COMPONENT_KEY as f, resolveDefaultUserActivityDateRange as g, resolveSmartUserActivityDateRange as h, buildUserActivityDataSourceItem as i, AXPIdleLockService as j, AXPUserAvatarSyncService as k, AXPAuthPasswordComplexityService as l, AXPAuthPasswordChangeTrackingService as m, getPasswordComplexityHintKey as n, getPasswordComplexityValidationMessageKey as o, validatePasswordAgainstComplexity as p, buildPasswordLastChangedInsights as q, resolveDefaultUserProfileSectionAction as r, buildTwoFactorStatusInsights as s, AXPLoginHistoryService as t, AXPWelcomeOnboardingFlowService as u, visibleUserProfileSectionActions as v, AXM_LOGIN_GUARD_TOKEN as w, AXMAuthPlatformSettingsService as x, AXPTenantChooserListComponent as y, AXPTenantChooserDropdownComponent as z };
|
|
4692
|
-
//# sourceMappingURL=acorex-platform-module-auth-client-acorex-platform-module-auth-client-
|
|
4718
|
+
//# sourceMappingURL=acorex-platform-module-auth-client-acorex-platform-module-auth-client-CBRlR1xT.mjs.map
|