@acorex-platform/module-auth-client 0.0.70 → 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.
Files changed (60) hide show
  1. 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
  2. package/fesm2022/acorex-platform-module-auth-client-acorex-platform-module-auth-client-CBRlR1xT.mjs.map +1 -0
  3. 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
  4. 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
  5. package/fesm2022/{acorex-platform-module-auth-client-change-password.command-Bman8avz.mjs → acorex-platform-module-auth-client-change-password.command-Bt4yOMMt.mjs} +2 -2
  6. 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
  7. package/fesm2022/{acorex-platform-module-auth-client-change-photo.command-DFS8TE__.mjs → acorex-platform-module-auth-client-change-photo.command-tZ3TnzBz.mjs} +2 -2
  8. 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
  9. 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
  10. 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
  11. package/fesm2022/{acorex-platform-module-auth-client-lock-screen.command-CUs7Q6yh.mjs → acorex-platform-module-auth-client-lock-screen.command-QXW3UCik.mjs} +2 -2
  12. 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
  13. package/fesm2022/{acorex-platform-module-auth-client-login.module-DFWtA7S3.mjs → acorex-platform-module-auth-client-login.module-dy4_aiwN.mjs} +3 -3
  14. 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
  15. 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
  16. 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
  17. package/fesm2022/{acorex-platform-module-auth-client-open-sessions.command-DToDT9eb.mjs → acorex-platform-module-auth-client-open-sessions.command-ZG33hlfh.mjs} +3 -3
  18. 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
  19. package/fesm2022/{acorex-platform-module-auth-client-password.component-DAp_-zko.mjs → acorex-platform-module-auth-client-password.component-D0pwQEaB.mjs} +2 -2
  20. 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
  21. 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
  22. 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
  23. 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
  24. 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
  25. package/fesm2022/{acorex-platform-module-auth-client-profile-page.component-Dc7gRTQD.mjs → acorex-platform-module-auth-client-profile-page.component-BM6a4K1A.mjs} +2 -2
  26. 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
  27. 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
  28. 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
  29. package/fesm2022/{acorex-platform-module-auth-client-register.module-Dz-SOKXN.mjs → acorex-platform-module-auth-client-register.module-BLQWaJky.mjs} +3 -3
  30. 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
  31. 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
  32. 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
  33. package/fesm2022/{acorex-platform-module-auth-client-routes-Dw8YhBrw.mjs → acorex-platform-module-auth-client-routes-DAwpb1Ca.mjs} +2 -2
  34. package/fesm2022/{acorex-platform-module-auth-client-routes-Dw8YhBrw.mjs.map → acorex-platform-module-auth-client-routes-DAwpb1Ca.mjs.map} +1 -1
  35. 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
  36. 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
  37. 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
  38. 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
  39. 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
  40. 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
  41. 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
  42. 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
  43. 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
  44. 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
  45. 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
  46. 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
  47. package/fesm2022/{acorex-platform-module-auth-client-two-factor.module-BC8AJTp4.mjs → acorex-platform-module-auth-client-two-factor.module-xzAzTU4n.mjs} +2 -2
  48. 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
  49. 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
  50. 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
  51. 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
  52. 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
  53. package/fesm2022/{acorex-platform-module-auth-client-welcome-onboarding.command-D8cyXb5q.mjs → acorex-platform-module-auth-client-welcome-onboarding.command-BNOEiB5l.mjs} +2 -2
  54. 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
  55. package/fesm2022/acorex-platform-module-auth-client.mjs +1 -1
  56. package/i18n/en-AU/auth.json +2 -1
  57. package/i18n/en-US/auth.json +2 -1
  58. package/i18n/fa-IR/auth.json +2 -1
  59. package/package.json +3 -3
  60. 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, AXPDataProvider, AXPCommonSettings, AXPSettingDefinitionProviderService, 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, AXPAuthStrategyRegistryService, storeSessionLimitPendingTenant, isMaxActiveDeviceSessionsError, traceAuthGuard, AXPAuthGuard, AXPSessionStatus } from '@acorex-platform/framework-client/auth';
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 { AXTranslationModule, AXTranslationService, resolveMultiLanguageString } from '@acorex/core/translation';
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-DFWtA7S3.mjs').then((c) => c.AXPSignInModule),
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-BC8AJTp4.mjs').then((c) => c.AXPTwoFactorModule),
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-Dw8YhBrw.mjs').then((c) => c),
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-Dz-SOKXN.mjs').then((c) => c.AXPRegisterModule),
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-cRTVB-7T.mjs').then((c) => c.AXPAuthTenantChooserComponent),
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-nSUtqF_D.mjs').then((c) => c.AXPAuthAppChooserComponent),
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-CQUpjsZw.mjs').then((c) => c.AXPAuthWelcomeOnboardingPageComponent),
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-PQ91EQjh.mjs');
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
- ...payload,
3716
- items: [
3717
- ...payload.items,
3718
- {
3719
- name: 'presence-available',
3720
- title: '@auth:profile.presence-available',
3721
- icon: 'fa-solid fa-circle text-success',
3722
- break: { before: true },
3723
- command: { name: PRESENCE_SET_AVAILABILITY, options: { status: 'online' } },
3724
- },
3725
- {
3726
- name: 'presence-away',
3727
- title: '@auth:profile.presence-away',
3728
- icon: 'fa-solid fa-circle text-warning',
3729
- command: { name: PRESENCE_SET_AVAILABILITY, options: { status: 'away' } },
3730
- },
3731
- {
3732
- name: 'presence-busy',
3733
- title: '@auth:profile.presence-busy',
3734
- icon: 'fa-solid fa-circle text-danger',
3735
- break: { after: true },
3736
- command: { name: PRESENCE_SET_AVAILABILITY, options: { status: 'busy' } },
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-Dc7gRTQD.mjs').then((c) => c.AXMUserProfilePageComponent);
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-D5xhGDPH.mjs').then((module) => module.AXMProfilePageComponentProvider)),
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-ZTJMfhir.mjs').then((c) => c.AXMGetUserActivityQuery),
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-DToDT9eb.mjs').then((c) => c.AXPOpenSessionsCommand),
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-CUs7Q6yh.mjs').then((c) => c.AXPLockScreenCommand),
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-DFS8TE__.mjs').then((c) => c.AXPChangePhotoCommand),
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-Bman8avz.mjs').then((c) => c.AXPChangePasswordCommand),
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-BXK7Lvpw.mjs').then((c) => c.AXPManageTwoFactorCommand),
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-BdtPwfLH.mjs').then((c) => c.AXPSetPinCodeCommand),
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-LKjypQTk.mjs').then((c) => c.AXPRemovePinCodeCommand),
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-EHXTmZtV.mjs').then((c) => c.AXPViewLoginHistoryCommand),
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-D8cyXb5q.mjs').then((c) => c.AXPWelcomeOnboardingCommand),
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-D5xhGDPH.mjs').then((module) => module.AXMProfilePageComponentProvider)),
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-ZTJMfhir.mjs').then((c) => c.AXMGetUserActivityQuery),
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-DToDT9eb.mjs').then((c) => c.AXPOpenSessionsCommand),
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-CUs7Q6yh.mjs').then((c) => c.AXPLockScreenCommand),
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-DFS8TE__.mjs').then((c) => c.AXPChangePhotoCommand),
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-Bman8avz.mjs').then((c) => c.AXPChangePasswordCommand),
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-BXK7Lvpw.mjs').then((c) => c.AXPManageTwoFactorCommand),
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-BdtPwfLH.mjs').then((c) => c.AXPSetPinCodeCommand),
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-LKjypQTk.mjs').then((c) => c.AXPRemovePinCodeCommand),
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-EHXTmZtV.mjs').then((c) => c.AXPViewLoginHistoryCommand),
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-D8cyXb5q.mjs').then((c) => c.AXPWelcomeOnboardingCommand),
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-Dgo6MzxI.mjs.map
4718
+ //# sourceMappingURL=acorex-platform-module-auth-client-acorex-platform-module-auth-client-CBRlR1xT.mjs.map