@acorex/modules 19.1.14 → 19.1.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/application-management/lib/menu.provider.d.ts +0 -1
- package/auth/lib/pages/account/avatar/avatar.component.d.ts +20 -0
- package/auth/lib/pages/account/profile/profile-slot.component.d.ts +2 -9
- package/auth/lib/pages/account/user-profile-card/user-profile-card.component.d.ts +26 -0
- package/fesm2022/{acorex-modules-application-management-module-designer.component-DjX4Ixc9.mjs → acorex-modules-application-management-module-designer.component-uLfQYtpy.mjs} +3 -3
- package/fesm2022/{acorex-modules-application-management-module-designer.component-DjX4Ixc9.mjs.map → acorex-modules-application-management-module-designer.component-uLfQYtpy.mjs.map} +1 -1
- package/fesm2022/acorex-modules-application-management.mjs +14 -21
- package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-BukQhL3i.mjs → acorex-modules-auth-acorex-modules-auth-DnTshxIU.mjs} +164 -36
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-DnTshxIU.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-app-chooser.component-Co9UVNs7.mjs → acorex-modules-auth-app-chooser.component-Dx-ehe1v.mjs} +6 -6
- package/fesm2022/acorex-modules-auth-app-chooser.component-Dx-ehe1v.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-login.module-DF8O2Xsc.mjs → acorex-modules-auth-login.module-DERpkzkP.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-login.module-DF8O2Xsc.mjs.map → acorex-modules-auth-login.module-DERpkzkP.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth-master.layout-CzDJVkRY.mjs +23 -0
- package/fesm2022/acorex-modules-auth-master.layout-CzDJVkRY.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-password.component-4qadgU3K.mjs → acorex-modules-auth-password.component-B7P-Z5__.mjs} +5 -5
- package/fesm2022/{acorex-modules-auth-password.component-4qadgU3K.mjs.map → acorex-modules-auth-password.component-B7P-Z5__.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-C7dIOlgw.mjs → acorex-modules-auth-password.component-BeuD87_s.mjs} +5 -5
- package/fesm2022/{acorex-modules-auth-password.component-C7dIOlgw.mjs.map → acorex-modules-auth-password.component-BeuD87_s.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-routes-CGtWtEQI.mjs → acorex-modules-auth-routes-BtJMFRjd.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-routes-CGtWtEQI.mjs.map → acorex-modules-auth-routes-BtJMFRjd.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth-tenant-chooser.component-Cx3fK__H.mjs +83 -0
- package/fesm2022/acorex-modules-auth-tenant-chooser.component-Cx3fK__H.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-two-factor-code.component-BEsTVMeC.mjs → acorex-modules-auth-two-factor-code.component-YhAHhKIr.mjs} +3 -3
- package/fesm2022/{acorex-modules-auth-two-factor-code.component-BEsTVMeC.mjs.map → acorex-modules-auth-two-factor-code.component-YhAHhKIr.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-two-factor.module-CqzFrEEK.mjs → acorex-modules-auth-two-factor.module-CC27kfrm.mjs} +3 -3
- package/fesm2022/{acorex-modules-auth-two-factor.module-CqzFrEEK.mjs.map → acorex-modules-auth-two-factor.module-CC27kfrm.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth.mjs +1 -1
- package/fesm2022/acorex-modules-conversation.mjs +9 -9
- package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
- package/fesm2022/acorex-modules-form-template-management-template-picker.component-DW0iMqAA.mjs +126 -0
- package/fesm2022/acorex-modules-form-template-management-template-picker.component-DW0iMqAA.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-template.entity-C1xoo-tl.mjs → acorex-modules-form-template-management-template.entity-BpApQcvG.mjs} +18 -28
- package/fesm2022/acorex-modules-form-template-management-template.entity-BpApQcvG.mjs.map +1 -0
- package/fesm2022/acorex-modules-form-template-management.mjs +6 -6
- package/fesm2022/acorex-modules-form-template-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-notification-management.mjs +14 -14
- package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-managment-branch.entity-kuZxLStS.mjs +212 -0
- package/fesm2022/acorex-modules-organization-managment-branch.entity-kuZxLStS.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-managment-department.entity-6imtSXqS.mjs → acorex-modules-organization-managment-department.entity-C1PxLx6p.mjs} +16 -3
- package/fesm2022/acorex-modules-organization-managment-department.entity-C1PxLx6p.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-managment-division.entity-DHVnrP38.mjs +212 -0
- package/fesm2022/acorex-modules-organization-managment-division.entity-DHVnrP38.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-managment-employee.entity-oo5Tyyp2.mjs +301 -0
- package/fesm2022/acorex-modules-organization-managment-employee.entity-oo5Tyyp2.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-managment-employment.entity-BYwBhrym.mjs → acorex-modules-organization-managment-employment-type.entity-Cgbezwio.mjs} +23 -10
- package/fesm2022/acorex-modules-organization-managment-employment-type.entity-Cgbezwio.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-managment-org-chart.page-ubxepOmw.mjs +55 -0
- package/fesm2022/acorex-modules-organization-managment-org-chart.page-ubxepOmw.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-managment-position.entity-CJNG3UPf.mjs → acorex-modules-organization-managment-position.entity-Bbb5KAkm.mjs} +15 -2
- package/fesm2022/acorex-modules-organization-managment-position.entity-Bbb5KAkm.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-managment.mjs +268 -149
- package/fesm2022/acorex-modules-organization-managment.mjs.map +1 -1
- package/fesm2022/acorex-modules-platform-management.mjs +115 -60
- package/fesm2022/acorex-modules-platform-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-scheduler-job-management.mjs +2 -2
- package/fesm2022/acorex-modules-scheduler-job-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-security-management.mjs +8 -8
- package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-text-template-management.mjs +7 -7
- package/fesm2022/acorex-modules-text-template-management.mjs.map +1 -1
- package/organization-managment/index.d.ts +1 -6
- package/organization-managment/lib/const.d.ts +25 -1
- package/organization-managment/lib/entities/{employment/employment.module.d.ts → branch/branch.module.d.ts} +4 -4
- package/organization-managment/lib/entities/branch/branch.service.d.ts +10 -0
- package/organization-managment/lib/entities/branch/branch.types.d.ts +4 -0
- package/organization-managment/lib/entities/branch/index.d.ts +3 -0
- package/organization-managment/lib/entities/chart/chart.types.d.ts +12 -2
- package/organization-managment/lib/entities/chart/index.d.ts +3 -0
- package/organization-managment/lib/entities/company/index.d.ts +3 -0
- package/organization-managment/lib/entities/department/index.d.ts +3 -0
- package/organization-managment/lib/entities/division/division.entity.d.ts +3 -0
- package/organization-managment/lib/entities/division/division.module.d.ts +6 -0
- package/organization-managment/lib/entities/division/division.service.d.ts +10 -0
- package/organization-managment/lib/entities/division/division.types.d.ts +4 -0
- package/organization-managment/lib/entities/division/index.d.ts +3 -0
- package/organization-managment/lib/entities/employee/employee.entity.d.ts +3 -0
- package/organization-managment/lib/entities/employee/employee.module.d.ts +6 -0
- package/organization-managment/lib/entities/employee/employee.service.d.ts +10 -0
- package/organization-managment/lib/entities/employee/employee.types.d.ts +7 -0
- package/organization-managment/lib/entities/employee/index.d.ts +3 -0
- package/organization-managment/lib/entities/employment-type/employment-type.entity.d.ts +3 -0
- package/organization-managment/lib/entities/employment-type/employment-type.module.d.ts +6 -0
- package/organization-managment/lib/entities/employment-type/employment-type.service.d.ts +10 -0
- package/organization-managment/lib/entities/employment-type/employment-type.types.d.ts +4 -0
- package/organization-managment/lib/entities/employment-type/index.d.ts +3 -0
- package/organization-managment/lib/entities/index.d.ts +8 -5
- package/organization-managment/lib/entities/position/index.d.ts +3 -0
- package/organization-managment/lib/menu.provider.d.ts +1 -0
- package/organization-managment/lib/organization-managment.module.d.ts +7 -5
- package/organization-managment/lib/pages/org-chart/org-chart.page.d.ts +8 -0
- package/package.json +5 -5
- package/platform-management/lib/entities/app-version/check-version.d.ts +11 -0
- package/platform-management/lib/entities/app-version/workflow/test/test.component.d.ts +13 -4
- package/platform-management/lib/platform-management.module.d.ts +5 -0
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-BukQhL3i.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-app-chooser.component-Co9UVNs7.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-master.layout-Bql93CSW.mjs +0 -23
- package/fesm2022/acorex-modules-auth-master.layout-Bql93CSW.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-tenant-chooser.component-CFT3i6iA.mjs +0 -83
- package/fesm2022/acorex-modules-auth-tenant-chooser.component-CFT3i6iA.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-template-picker.component-vh_xdN7Z.mjs +0 -126
- package/fesm2022/acorex-modules-form-template-management-template-picker.component-vh_xdN7Z.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-template.entity-C1xoo-tl.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-managment-chart-design.page-eE-nOaMw.mjs +0 -305
- package/fesm2022/acorex-modules-organization-managment-chart-design.page-eE-nOaMw.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-managment-department.entity-6imtSXqS.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-managment-employment.entity-BYwBhrym.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-managment-position.entity-CJNG3UPf.mjs.map +0 -1
- package/organization-managment/lib/entities/employment/employment.service.d.ts +0 -10
- package/organization-managment/lib/entities/employment/employment.types.d.ts +0 -4
- package/organization-managment/lib/pages/chart-design/add-item/add-item.component.d.ts +0 -14
- package/organization-managment/lib/pages/chart-design/chart-design.page.d.ts +0 -26
- package/organization-managment/lib/pages/chart-design/chart-design.service.d.ts +0 -23
- package/organization-managment/lib/pages/chart-design/chart.type.d.ts +0 -9
- package/organization-managment/lib/workflows/chart.workflow.d.ts +0 -12
- /package/organization-managment/lib/entities/{employment/employment.entity.d.ts → branch/branch.entity.d.ts} +0 -0
@@ -2,30 +2,33 @@ import { AXPUnauthorizedError, AXPUnauthenticatedError, AXPSessionService, AXPAu
|
|
2
2
|
import { AXPLayoutThemeService } from '@acorex/platform/themes/shared';
|
3
3
|
import { HttpErrorResponse } from '@angular/common/http';
|
4
4
|
import * as i0 from '@angular/core';
|
5
|
-
import { inject, isDevMode, Injectable, InjectionToken, Component, signal, ViewChild, NgModule } from '@angular/core';
|
6
|
-
import * as i2$
|
5
|
+
import { inject, isDevMode, Injectable, InjectionToken, Component, signal, input, ChangeDetectionStrategy, ViewEncapsulation, ViewChild, NgModule } from '@angular/core';
|
6
|
+
import * as i2$2 from '@angular/router';
|
7
7
|
import { Router, RouterModule, ROUTES } from '@angular/router';
|
8
|
-
import * as i1$
|
8
|
+
import * as i1$2 from '@acorex/platform/common';
|
9
9
|
import { AXPDataProvider, AXPComponentSlotModule, AXPSignOutAction, AXPSignInAction, AXP_MENU_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER, AXPCommonModule } from '@acorex/platform/common';
|
10
10
|
import * as i1 from '@angular/common';
|
11
|
-
import { CommonModule } from '@angular/common';
|
12
|
-
import * as i1$
|
11
|
+
import { CommonModule, AsyncPipe } from '@angular/common';
|
12
|
+
import * as i1$3 from '@ngrx/effects';
|
13
13
|
import { createEffect, ofType, EffectsModule } from '@ngrx/effects';
|
14
14
|
import { of, first, firstValueFrom, Subject, timer, switchMap as switchMap$1, tap as tap$1 } from 'rxjs';
|
15
15
|
import * as i2 from '@acorex/components/button';
|
16
16
|
import { AXButtonModule } from '@acorex/components/button';
|
17
|
-
import * as
|
17
|
+
import * as i1$1 from '@acorex/components/decorators';
|
18
18
|
import { AXDecoratorModule } from '@acorex/components/decorators';
|
19
19
|
import * as i3$1 from '@acorex/components/popover';
|
20
20
|
import { AXPopoverModule } from '@acorex/components/popover';
|
21
21
|
import * as i3 from '@acorex/components/loading';
|
22
22
|
import { AXLoadingModule } from '@acorex/components/loading';
|
23
|
-
import * as
|
23
|
+
import * as i2$1 from '@acorex/components/avatar';
|
24
24
|
import { AXAvatarModule } from '@acorex/components/avatar';
|
25
25
|
import * as i3$2 from '@acorex/components/image';
|
26
26
|
import { AXImageModule } from '@acorex/components/image';
|
27
|
-
import * as
|
27
|
+
import * as i6 from '@acorex/core/translation';
|
28
28
|
import { AXTranslationModule } from '@acorex/core/translation';
|
29
|
+
import { AXChipsModule } from '@acorex/components/chips';
|
30
|
+
import { AXTagModule } from '@acorex/components/tag';
|
31
|
+
import { MXBaseComponent } from '@acorex/components/common';
|
29
32
|
import { AXDialogService } from '@acorex/components/dialog';
|
30
33
|
import { startWith, switchMap, tap } from 'rxjs/operators';
|
31
34
|
|
@@ -103,18 +106,18 @@ const routes = [
|
|
103
106
|
},
|
104
107
|
{
|
105
108
|
path: '',
|
106
|
-
loadComponent: () => import('./acorex-modules-auth-master.layout-
|
107
|
-
loadChildren: () => import('./acorex-modules-auth-login.module-
|
109
|
+
loadComponent: () => import('./acorex-modules-auth-master.layout-CzDJVkRY.mjs').then((c) => c.AXPAuthMasterLayoutComponent),
|
110
|
+
loadChildren: () => import('./acorex-modules-auth-login.module-DERpkzkP.mjs').then((c) => c.AXPSignInModule),
|
108
111
|
},
|
109
112
|
{
|
110
113
|
path: '',
|
111
|
-
loadComponent: () => import('./acorex-modules-auth-master.layout-
|
112
|
-
loadChildren: () => import('./acorex-modules-auth-two-factor.module-
|
114
|
+
loadComponent: () => import('./acorex-modules-auth-master.layout-CzDJVkRY.mjs').then((c) => c.AXPAuthMasterLayoutComponent),
|
115
|
+
loadChildren: () => import('./acorex-modules-auth-two-factor.module-CC27kfrm.mjs').then((c) => c.AXPTwoFactorModule),
|
113
116
|
},
|
114
117
|
{
|
115
118
|
path: '',
|
116
|
-
loadComponent: () => import('./acorex-modules-auth-master.layout-
|
117
|
-
loadChildren: () => import('./acorex-modules-auth-routes-
|
119
|
+
loadComponent: () => import('./acorex-modules-auth-master.layout-CzDJVkRY.mjs').then((c) => c.AXPAuthMasterLayoutComponent),
|
120
|
+
loadChildren: () => import('./acorex-modules-auth-routes-BtJMFRjd.mjs').then((c) => c),
|
118
121
|
},
|
119
122
|
{
|
120
123
|
path: 'account',
|
@@ -141,17 +144,17 @@ class AXMSecurityManagmentModuleMenuProvider {
|
|
141
144
|
{
|
142
145
|
text: `t('profile.title', {scope: "${scope}"})`,
|
143
146
|
name: 'user-profile',
|
144
|
-
icon: 'fa-
|
147
|
+
icon: 'fa-light fa-user',
|
145
148
|
children: [
|
146
149
|
{
|
147
150
|
text: `t('profile.edit', {scope: "${scope}"})`,
|
148
151
|
name: 'edit-profile',
|
149
|
-
icon: 'fa-
|
152
|
+
icon: 'fa-light fa-address-card',
|
150
153
|
},
|
151
154
|
{
|
152
155
|
text: `t('settings.user.title', {scope: "platform-management"})`,
|
153
156
|
name: 'user-settings',
|
154
|
-
icon: 'fa-
|
157
|
+
icon: 'fa-light fa-gear',
|
155
158
|
path: `/${this.sessionService.application?.name}/settings/user`,
|
156
159
|
},
|
157
160
|
],
|
@@ -173,7 +176,7 @@ class AXPAppChooserListComponent {
|
|
173
176
|
this.router.navigate([`/${item.name}/home`]);
|
174
177
|
}
|
175
178
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPAppChooserListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
176
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXPAppChooserListComponent, isStandalone: true, selector: "axp-app-chooser-list", ngImport: i0, template: "<div class=\" ax-w-full ax-overflow-auto ax-max-h-[300px] ax-pe-2\">\n @for(application of (applications$ | async); track $index){\n <div class=\"ax-flex ax-gap-2 ax-justify-between ax-border-b last:ax-border-b-0 ax-py-3 ax-items-start ax-cursor-pointer\"\n (click)=\"chooseApplication(application)\">\n <div class=\"ax-flex ax-flex-1 ax-gap-2 ax-items-center ax-justify-center ax-font-medium\">\n <div\n class=\"ax-w-12 ax-h-12 ax-flex ax-justify-center ax-items-center ax-rounded-full ax-bg-neutral-100 ax-m-auto\">\n <ax-icon class=\"fa-solid fa-computer ax-text-neutral-500 ax-text-lg\"> </ax-icon>\n <!-- TODO: logo instead of application icon -->\n <!-- <axp-logo [source]=\"application.logo\" [attr.alt]=\"application.title\"\n class=\"!ax-flex ax-items-center ax-justify-center !ax-text-sm ax-mx-auto ax-w-10 ax-h-10 ax-bg-neutral-200 ax-rounded-full\"></axp-logo> -->\n </div>\n <span class=\"ax-flex-1 ax-text-start md:ax-text-base ax-text-sm\">{{ application.title }}</span>\n <span class=\"ax-text-gray-500 md:ax-text-sm ax-text-xs\">{{application.editionName}}</span>\n @if(application.name===selectedApplication?.name){\n <ax-loading></ax-loading>\n }@else {\n <ax-icon class=\"fa-solid fa-chevron-right ax-text-neutral-400\"> </ax-icon>\n }\n </div>\n </div>\n }\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type:
|
179
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXPAppChooserListComponent, isStandalone: true, selector: "axp-app-chooser-list", ngImport: i0, template: "<div class=\" ax-w-full ax-overflow-auto ax-max-h-[300px] ax-pe-2\">\n @for(application of (applications$ | async); track $index){\n <div class=\"ax-flex ax-gap-2 ax-justify-between ax-border-b last:ax-border-b-0 ax-py-3 ax-items-start ax-cursor-pointer\"\n (click)=\"chooseApplication(application)\">\n <div class=\"ax-flex ax-flex-1 ax-gap-2 ax-items-center ax-justify-center ax-font-medium\">\n <div\n class=\"ax-w-12 ax-h-12 ax-flex ax-justify-center ax-items-center ax-rounded-full ax-bg-neutral-100 ax-m-auto\">\n <ax-icon class=\"fa-solid fa-computer ax-text-neutral-500 ax-text-lg\"> </ax-icon>\n <!-- TODO: logo instead of application icon -->\n <!-- <axp-logo [source]=\"application.logo\" [attr.alt]=\"application.title\"\n class=\"!ax-flex ax-items-center ax-justify-center !ax-text-sm ax-mx-auto ax-w-10 ax-h-10 ax-bg-neutral-200 ax-rounded-full\"></axp-logo> -->\n </div>\n <span class=\"ax-flex-1 ax-text-start md:ax-text-base ax-text-sm\">{{ application.title }}</span>\n <span class=\"ax-text-gray-500 md:ax-text-sm ax-text-xs\">{{application.editionName}}</span>\n @if(application.name===selectedApplication?.name){\n <ax-loading></ax-loading>\n }@else {\n <ax-icon class=\"fa-solid fa-chevron-right ax-text-neutral-400\"> </ax-icon>\n }\n </div>\n </div>\n }\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i3.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }] }); }
|
177
180
|
}
|
178
181
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPAppChooserListComponent, decorators: [{
|
179
182
|
type: Component,
|
@@ -193,11 +196,11 @@ class AXMAppChooserSlotComponent {
|
|
193
196
|
this.router.navigate([`/${item.name}/home`]);
|
194
197
|
}
|
195
198
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMAppChooserSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
196
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXMAppChooserSlotComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "@if(((applications$ | async)?.length ?? 0) > 1)\n{\n<ax-button color=\"default\" look=\"blank\" #appChooser>\n <ax-icon>\n <i class=\"fa-solid fa-grid-2 ax-text-slate-400 dark:ax-text-slate-200\"></i>\n </ax-icon>\n</ax-button>\n<ax-popover [target]=\"appChooser\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\" [adaptivityEnabled]=\"true\">\n <div
|
199
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXMAppChooserSlotComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "@if(((applications$ | async)?.length ?? 0) > 1)\n{\n<ax-button color=\"default\" look=\"blank\" #appChooser>\n <ax-icon>\n <i class=\"fa-solid fa-grid-2 ax-text-slate-400 dark:ax-text-slate-200\"></i>\n </ax-icon>\n</ax-button>\n<ax-popover [target]=\"appChooser\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\" [adaptivityEnabled]=\"true\">\n <div\n class=\"ax-bg-surface-lowest ax-border ax-overflow-hidden ax-rounded-md ax-shadow-md ax-w-full ax-min-w-64 ax-p-3\">\n <axp-app-chooser-list></axp-app-chooser-list>\n </div>\n</ax-popover>\n}", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i3$1.AXPopoverComponent, selector: "ax-popover", inputs: ["offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: AXPAppChooserListComponent, selector: "axp-app-chooser-list" }] }); }
|
197
200
|
}
|
198
201
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMAppChooserSlotComponent, decorators: [{
|
199
202
|
type: Component,
|
200
|
-
args: [{ imports: [CommonModule, AXButtonModule, AXPopoverModule, AXDecoratorModule, AXPAppChooserListComponent], template: "@if(((applications$ | async)?.length ?? 0) > 1)\n{\n<ax-button color=\"default\" look=\"blank\" #appChooser>\n <ax-icon>\n <i class=\"fa-solid fa-grid-2 ax-text-slate-400 dark:ax-text-slate-200\"></i>\n </ax-icon>\n</ax-button>\n<ax-popover [target]=\"appChooser\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\" [adaptivityEnabled]=\"true\">\n <div
|
203
|
+
args: [{ imports: [CommonModule, AXButtonModule, AXPopoverModule, AXDecoratorModule, AXPAppChooserListComponent], template: "@if(((applications$ | async)?.length ?? 0) > 1)\n{\n<ax-button color=\"default\" look=\"blank\" #appChooser>\n <ax-icon>\n <i class=\"fa-solid fa-grid-2 ax-text-slate-400 dark:ax-text-slate-200\"></i>\n </ax-icon>\n</ax-button>\n<ax-popover [target]=\"appChooser\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\" [adaptivityEnabled]=\"true\">\n <div\n class=\"ax-bg-surface-lowest ax-border ax-overflow-hidden ax-rounded-md ax-shadow-md ax-w-full ax-min-w-64 ax-p-3\">\n <axp-app-chooser-list></axp-app-chooser-list>\n </div>\n</ax-popover>\n}" }]
|
201
204
|
}] });
|
202
205
|
|
203
206
|
class AXPTenantChooserDropdownComponent {
|
@@ -211,14 +214,124 @@ class AXPTenantChooserDropdownComponent {
|
|
211
214
|
this.router.navigate(['/auth/account/tenant-chooser']);
|
212
215
|
}
|
213
216
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPTenantChooserDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
214
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXPTenantChooserDropdownComponent, isStandalone: true, selector: "axp-tenant-chooser-dropdown", ngImport: i0, template: "<ng-container *ngIf=\"tenants$ | async as tenants\">\n @if(tenants.length>1){\n <div (click)=\"tenantChooser()\"\n class=\"ax-flex ax-items-center ax-border ax-rounded-full ax-px-4 ax-py-1 ax-gap-2 ax-cursor-pointer\">\n <ax-icon class=\"fa-solid fa-building ax-text-neutral-500 ax-text-xs\"></ax-icon>\n <p class=\"ax-text-neutral-500 ax-text-sm ax-font-medium\">\n {{ tenant?.title }}\n </p>\n <ax-icon class=\"fa-regular fa-chevron-down ax-text-neutral-400\"></ax-icon>\n </div>\n }@else {\n <div class=\"ax-flex ax-items-center ax-border ax-rounded-full ax-px-4 ax-py-1 ax-gap-2 ax-cursor-pointer\">\n <ax-icon class=\"fa-solid fa-building ax-text-neutral-500\"></ax-icon>\n <p class=\"ax-text-neutral-500 ax-text-sm ax-font-medium\">\n {{ tenant?.title }}\n </p>\n </div>\n }\n</ng-container>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type:
|
217
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXPTenantChooserDropdownComponent, isStandalone: true, selector: "axp-tenant-chooser-dropdown", ngImport: i0, template: "<!-- <ng-container *ngIf=\"tenants$ | async as tenants\">\n @if(tenants.length>1){\n <div (click)=\"tenantChooser()\"\n class=\"ax-flex ax-items-center ax-border ax-rounded-full ax-px-4 ax-py-1 ax-gap-2 ax-cursor-pointer\">\n <ax-icon class=\"fa-solid fa-building ax-text-neutral-500 ax-text-xs\"></ax-icon>\n <p class=\"ax-text-neutral-500 ax-text-sm ax-font-medium\">\n {{ tenant?.title }}\n </p>\n <ax-icon class=\"fa-regular fa-chevron-down ax-text-neutral-400\"></ax-icon>\n </div>\n }@else {\n <div class=\"ax-flex ax-items-center ax-border ax-rounded-full ax-px-4 ax-py-1 ax-gap-2 ax-cursor-pointer\">\n <ax-icon class=\"fa-solid fa-building ax-text-neutral-500\"></ax-icon>\n <p class=\"ax-text-neutral-500 ax-text-sm ax-font-medium\">\n {{ tenant?.title }}\n </p>\n </div>\n }\n</ng-container> -->\n\n<ng-container *ngIf=\"tenants$ | async as tenants\">\n <ax-button [text]=\"tenant?.title ?? ''\" class=\"ax-xs\" look=\"blank\">\n @if(tenants.length > 1){\n <ax-suffix>\n <ax-icon class=\"fa-solid fa-caret-down\"></ax-icon>\n </ax-suffix>\n }\n </ax-button>\n</ng-container>", dependencies: [{ kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i1$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXChipsModule }, { kind: "ngmodule", type: AXTagModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }] }); }
|
215
218
|
}
|
216
219
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPTenantChooserDropdownComponent, decorators: [{
|
217
220
|
type: Component,
|
218
|
-
args: [{ selector: 'axp-tenant-chooser-dropdown', imports: [CommonModule,
|
221
|
+
args: [{ selector: 'axp-tenant-chooser-dropdown', imports: [AXDecoratorModule, AXChipsModule, AXTagModule, CommonModule, AXButtonModule], template: "<!-- <ng-container *ngIf=\"tenants$ | async as tenants\">\n @if(tenants.length>1){\n <div (click)=\"tenantChooser()\"\n class=\"ax-flex ax-items-center ax-border ax-rounded-full ax-px-4 ax-py-1 ax-gap-2 ax-cursor-pointer\">\n <ax-icon class=\"fa-solid fa-building ax-text-neutral-500 ax-text-xs\"></ax-icon>\n <p class=\"ax-text-neutral-500 ax-text-sm ax-font-medium\">\n {{ tenant?.title }}\n </p>\n <ax-icon class=\"fa-regular fa-chevron-down ax-text-neutral-400\"></ax-icon>\n </div>\n }@else {\n <div class=\"ax-flex ax-items-center ax-border ax-rounded-full ax-px-4 ax-py-1 ax-gap-2 ax-cursor-pointer\">\n <ax-icon class=\"fa-solid fa-building ax-text-neutral-500\"></ax-icon>\n <p class=\"ax-text-neutral-500 ax-text-sm ax-font-medium\">\n {{ tenant?.title }}\n </p>\n </div>\n }\n</ng-container> -->\n\n<ng-container *ngIf=\"tenants$ | async as tenants\">\n <ax-button [text]=\"tenant?.title ?? ''\" class=\"ax-xs\" look=\"blank\">\n @if(tenants.length > 1){\n <ax-suffix>\n <ax-icon class=\"fa-solid fa-caret-down\"></ax-icon>\n </ax-suffix>\n }\n </ax-button>\n</ng-container>" }]
|
219
222
|
}] });
|
220
223
|
|
224
|
+
class AXMAvatarComponent extends MXBaseComponent {
|
225
|
+
constructor() {
|
226
|
+
super();
|
227
|
+
this.sessionService = inject(AXPSessionService);
|
228
|
+
this.dataService = inject(AXPDataProvider, { optional: true });
|
229
|
+
this.hasPicture = signal(false);
|
230
|
+
this.avatarText = signal('');
|
231
|
+
this.size = input(48);
|
232
|
+
this.color = input('ghost');
|
233
|
+
this.look = input('twotone');
|
234
|
+
this.user$ = this.sessionService.user$;
|
235
|
+
this.getAvatarText = () => {
|
236
|
+
this.user$.pipe(first()).subscribe((user) => {
|
237
|
+
const names = user?.title.split(' ');
|
238
|
+
if (names?.length && names?.length > 1) {
|
239
|
+
this.avatarText.set(`${names[0][0].toUpperCase()}${names[names.length - 1][0].toUpperCase()}`);
|
240
|
+
}
|
241
|
+
else
|
242
|
+
return this.avatarText.set('AC');
|
243
|
+
});
|
244
|
+
};
|
245
|
+
this.loadImage();
|
246
|
+
this.getAvatarText();
|
247
|
+
}
|
248
|
+
onImageError(event) {
|
249
|
+
this.hasPicture.set(false);
|
250
|
+
}
|
251
|
+
onImageLoad(event) {
|
252
|
+
this.hasPicture.set(true);
|
253
|
+
}
|
254
|
+
async loadImage() {
|
255
|
+
try {
|
256
|
+
const url = this.sessionService.user?.avatar;
|
257
|
+
if (url?.toLowerCase().startsWith('http')) {
|
258
|
+
this.src = url;
|
259
|
+
}
|
260
|
+
else if (this.sessionService.user?.avatar != 'null' && this.dataService) {
|
261
|
+
const blob = await this.dataService.viewFile(url, '');
|
262
|
+
this.src = URL.createObjectURL(blob);
|
263
|
+
}
|
264
|
+
else {
|
265
|
+
//this.src = this.mockerService.avatar();
|
266
|
+
}
|
267
|
+
}
|
268
|
+
catch (error) {
|
269
|
+
this.hasPicture.set(false);
|
270
|
+
console.error('Failed to load image by ID:', error);
|
271
|
+
this.src = '';
|
272
|
+
}
|
273
|
+
}
|
274
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMAvatarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
275
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXMAvatarComponent, isStandalone: true, selector: "axp-avatar", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, look: { classPropertyName: "look", publicName: "look", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: "<ax-avatar #avatar (error)=\"this.src = 'path/to/default-image.jpg'\" [size]=\"size()\" [color]=\"color()\" [look]=\"look()\"\n class=\"ax-cursor-pointer\">\n @if(hasPicture()){\n <ax-image (onError)=\"onImageError($event)\" (onLoad)=\"onImageLoad($event)\" [src]=\"src\"></ax-image>\n }@else{\n <ax-text>\n <small class=\"ax-text-xs ax-font-semibold\">{{ avatarText() }}</small>\n </ax-text>\n }\n</ax-avatar>", dependencies: [{ kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXAvatarModule }, { kind: "component", type: i2$1.AXAvatarComponent, selector: "ax-avatar", inputs: ["color", "size", "shape", "look"], outputs: ["sizeChange"] }, { kind: "ngmodule", type: AXImageModule }, { kind: "component", type: i3$2.AXImageComponent, selector: "ax-image", inputs: ["overlayMode", "src", "alt", "priority", "lazy"], outputs: ["onLoad", "onError"] }] }); }
|
276
|
+
}
|
277
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMAvatarComponent, decorators: [{
|
278
|
+
type: Component,
|
279
|
+
args: [{ selector: 'axp-avatar', imports: [AXDecoratorModule, AXAvatarModule, AXImageModule], template: "<ax-avatar #avatar (error)=\"this.src = 'path/to/default-image.jpg'\" [size]=\"size()\" [color]=\"color()\" [look]=\"look()\"\n class=\"ax-cursor-pointer\">\n @if(hasPicture()){\n <ax-image (onError)=\"onImageError($event)\" (onLoad)=\"onImageLoad($event)\" [src]=\"src\"></ax-image>\n }@else{\n <ax-text>\n <small class=\"ax-text-xs ax-font-semibold\">{{ avatarText() }}</small>\n </ax-text>\n }\n</ax-avatar>" }]
|
280
|
+
}], ctorParameters: () => [] });
|
281
|
+
|
221
282
|
class AXMAuthProfileSlotComponent {
|
283
|
+
constructor() {
|
284
|
+
this.router = inject(Router);
|
285
|
+
this.sessionService = inject(AXPSessionService);
|
286
|
+
this.themeService = inject(AXPLayoutThemeService);
|
287
|
+
this.isDarkMode = this.themeService.isDarkMode;
|
288
|
+
this.user$ = this.sessionService.user$;
|
289
|
+
this.tenant$ = this.sessionService.tenant$;
|
290
|
+
this.isAuthenticated$ = this.sessionService.isAuthenticated$;
|
291
|
+
this.appName = () => this.sessionService.application?.name;
|
292
|
+
}
|
293
|
+
editProfile() {
|
294
|
+
this.router.navigate([`/${this.appName()}/m/SecurityManagement/e/profile/0/view`]);
|
295
|
+
}
|
296
|
+
async logOut() {
|
297
|
+
await this.sessionService.signout();
|
298
|
+
}
|
299
|
+
toggleProfileMenu() {
|
300
|
+
this.profilePopover.open();
|
301
|
+
}
|
302
|
+
handleSignIn() {
|
303
|
+
this.router.navigate(['/auth/login']);
|
304
|
+
}
|
305
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMAuthProfileSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
306
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXMAuthProfileSlotComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "profilePopover", first: true, predicate: ["profilePopover"], descendants: true }], ngImport: i0, template: "@if((isAuthenticated$ | async)) {\n<div class=\"ax-size-fit ax-px-2\">\n <axp-avatar #avatar [size]=\"36\" [color]=\"isDarkMode() ? 'primary':'ghost'\"></axp-avatar>\n <ax-popover [target]=\"avatar\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\" #p>\n <div\n class=\"ax-bg-surface-lowest ax-border ax-border-surface-lowest ax-rounded-md ax-shadow-md ax-w-full ax-min-w-64\">\n <div class=\"ax-flex ax-flex-col ax-items-center ax-p-4 ax-border-b\">\n <axp-avatar [size]=\"64\" color=\"primary\"></axp-avatar>\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-mt-2 ax-gap-1\">\n <div class=\"ax-text-base ax-font-bold\">{{ (user$ | async)?.title }}</div>\n <axp-tenant-chooser-dropdown></axp-tenant-chooser-dropdown>\n </div>\n </div>\n <div class=\"axp-profile-slot-menus\">\n <ul>\n <li>\n <a (click)=\"editProfile()\">\n <i class=\"fa-light fa-user\"></i>\n <span>{{ 'profile.edit' | translate : { scope: 'auth' } | async }}</span>\n </a>\n </li>\n </ul>\n <ul>\n <li>\n <a (click)=\"p.close()\" [routerLink]=\"['/', appName(), 'settings', 'user']\">\n <i class=\"fa-light fa-gear\"></i>\n <span>{{ 'profile.settings' | translate : { scope: 'auth' } | async }}</span>\n </a>\n </li>\n </ul>\n <ul>\n <li class=\"ax-text-danger-500\">\n <a (click)=\"logOut()\">\n <i class=\"fa-light fa-arrow-right-from-bracket\"></i>\n <span>{{ 'profile.logout' | translate : { scope: 'auth' } | async }}</span>\n </a>\n </li>\n </ul>\n </div>\n </div>\n </ax-popover>\n</div>\n\n} @else {\n<ax-button color=\"default\" look=\"blank\" text=\"Sign Up / Sign In\" (click)=\"handleSignIn()\">\n <ax-icon>\n <i class=\"fa-solid fa-user ax-text-slate-400 dark:ax-text-slate-200\"></i>\n </ax-icon>\n</ax-button>\n}", styles: [".axp-profile-slot-menus ul{margin-top:.5rem;border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-border-color),var(--tw-border-opacity, 1));padding-left:.5rem;padding-right:.5rem}.axp-profile-slot-menus ul:last-child{border-width:0px}.axp-profile-slot-menus ul li{display:flex;cursor:pointer;border-radius:.375rem}.axp-profile-slot-menus ul li:last-child{margin-bottom:.5rem}.axp-profile-slot-menus ul li:hover{--tw-bg-opacity: 1;background-color:rgb(241 245 249 / var(--tw-bg-opacity, 1))}.axp-profile-slot-menus ul li:hover:is(.ax-dark *){--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.axp-profile-slot-menus ul li i{margin-inline-end:.75rem;display:grid;height:1.5rem;width:1.5rem;place-items:center;font-size:1.25rem;line-height:1.75rem}.axp-profile-slot-menus ul li a{display:flex;height:100%;width:100%;align-items:center;padding:.5rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type:
|
307
|
+
//
|
308
|
+
AXImageModule }, { kind: "ngmodule", type: AXAvatarModule }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i3$1.AXPopoverComponent, selector: "ax-popover", inputs: ["offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i6.AXTranslatorPipe, name: "translate" }, { kind: "component", type:
|
309
|
+
//
|
310
|
+
AXPTenantChooserDropdownComponent, selector: "axp-tenant-chooser-dropdown" }, { kind: "component", type: AXMAvatarComponent, selector: "axp-avatar", inputs: ["size", "color", "look"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
311
|
+
}
|
312
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMAuthProfileSlotComponent, decorators: [{
|
313
|
+
type: Component,
|
314
|
+
args: [{ imports: [
|
315
|
+
CommonModule,
|
316
|
+
RouterModule,
|
317
|
+
//
|
318
|
+
AXImageModule,
|
319
|
+
AXAvatarModule,
|
320
|
+
AXPopoverModule,
|
321
|
+
AXButtonModule,
|
322
|
+
AXDecoratorModule,
|
323
|
+
AXLoadingModule,
|
324
|
+
AXTranslationModule,
|
325
|
+
//
|
326
|
+
AXPTenantChooserDropdownComponent,
|
327
|
+
AXMAvatarComponent
|
328
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "@if((isAuthenticated$ | async)) {\n<div class=\"ax-size-fit ax-px-2\">\n <axp-avatar #avatar [size]=\"36\" [color]=\"isDarkMode() ? 'primary':'ghost'\"></axp-avatar>\n <ax-popover [target]=\"avatar\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\" #p>\n <div\n class=\"ax-bg-surface-lowest ax-border ax-border-surface-lowest ax-rounded-md ax-shadow-md ax-w-full ax-min-w-64\">\n <div class=\"ax-flex ax-flex-col ax-items-center ax-p-4 ax-border-b\">\n <axp-avatar [size]=\"64\" color=\"primary\"></axp-avatar>\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-mt-2 ax-gap-1\">\n <div class=\"ax-text-base ax-font-bold\">{{ (user$ | async)?.title }}</div>\n <axp-tenant-chooser-dropdown></axp-tenant-chooser-dropdown>\n </div>\n </div>\n <div class=\"axp-profile-slot-menus\">\n <ul>\n <li>\n <a (click)=\"editProfile()\">\n <i class=\"fa-light fa-user\"></i>\n <span>{{ 'profile.edit' | translate : { scope: 'auth' } | async }}</span>\n </a>\n </li>\n </ul>\n <ul>\n <li>\n <a (click)=\"p.close()\" [routerLink]=\"['/', appName(), 'settings', 'user']\">\n <i class=\"fa-light fa-gear\"></i>\n <span>{{ 'profile.settings' | translate : { scope: 'auth' } | async }}</span>\n </a>\n </li>\n </ul>\n <ul>\n <li class=\"ax-text-danger-500\">\n <a (click)=\"logOut()\">\n <i class=\"fa-light fa-arrow-right-from-bracket\"></i>\n <span>{{ 'profile.logout' | translate : { scope: 'auth' } | async }}</span>\n </a>\n </li>\n </ul>\n </div>\n </div>\n </ax-popover>\n</div>\n\n} @else {\n<ax-button color=\"default\" look=\"blank\" text=\"Sign Up / Sign In\" (click)=\"handleSignIn()\">\n <ax-icon>\n <i class=\"fa-solid fa-user ax-text-slate-400 dark:ax-text-slate-200\"></i>\n </ax-icon>\n</ax-button>\n}", styles: [".axp-profile-slot-menus ul{margin-top:.5rem;border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-border-color),var(--tw-border-opacity, 1));padding-left:.5rem;padding-right:.5rem}.axp-profile-slot-menus ul:last-child{border-width:0px}.axp-profile-slot-menus ul li{display:flex;cursor:pointer;border-radius:.375rem}.axp-profile-slot-menus ul li:last-child{margin-bottom:.5rem}.axp-profile-slot-menus ul li:hover{--tw-bg-opacity: 1;background-color:rgb(241 245 249 / var(--tw-bg-opacity, 1))}.axp-profile-slot-menus ul li:hover:is(.ax-dark *){--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.axp-profile-slot-menus ul li i{margin-inline-end:.75rem;display:grid;height:1.5rem;width:1.5rem;place-items:center;font-size:1.25rem;line-height:1.75rem}.axp-profile-slot-menus ul li a{display:flex;height:100%;width:100%;align-items:center;padding:.5rem}\n"] }]
|
329
|
+
}], propDecorators: { profilePopover: [{
|
330
|
+
type: ViewChild,
|
331
|
+
args: ['profilePopover']
|
332
|
+
}] } });
|
333
|
+
|
334
|
+
class AXMUserProfileCardSlotComponent {
|
222
335
|
constructor() {
|
223
336
|
this.router = inject(Router);
|
224
337
|
this.sessionService = inject(AXPSessionService);
|
@@ -277,17 +390,16 @@ class AXMAuthProfileSlotComponent {
|
|
277
390
|
this.src = '';
|
278
391
|
}
|
279
392
|
}
|
280
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type:
|
281
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type:
|
393
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMUserProfileCardSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
394
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXMUserProfileCardSlotComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "profilePopover", first: true, predicate: ["profilePopover"], descendants: true }], ngImport: i0, template: "@if((isAuthenticated$ | async)) {\n<div class=\"ax-bg-surface-lowest ax-p-3 ax-flex ax-gap-1 ax-border-b ax-border-surface-lowest\">\n <axp-avatar [size]=\"48\" color=\"primary\"></axp-avatar>\n <div class=\"ax-flex ax-flex-col ax-gap-1\">\n <ax-title class=\"ax-text-sm ax-font-medium ax-px-3\">{{ (user$ |async)?.title}}</ax-title>\n <axp-tenant-chooser-dropdown />\n </div>\n</div>\n}", dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type:
|
282
395
|
//
|
283
|
-
AXImageModule }, { kind: "
|
396
|
+
AXImageModule }, { kind: "ngmodule", type: AXAvatarModule }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type:
|
284
397
|
//
|
285
|
-
AXPTenantChooserDropdownComponent, selector: "axp-tenant-chooser-dropdown" }] }); }
|
398
|
+
AXPTenantChooserDropdownComponent, selector: "axp-tenant-chooser-dropdown" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: AXMAvatarComponent, selector: "axp-avatar", inputs: ["size", "color", "look"] }] }); }
|
286
399
|
}
|
287
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type:
|
400
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMUserProfileCardSlotComponent, decorators: [{
|
288
401
|
type: Component,
|
289
402
|
args: [{ imports: [
|
290
|
-
CommonModule,
|
291
403
|
RouterModule,
|
292
404
|
//
|
293
405
|
AXImageModule,
|
@@ -299,7 +411,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
|
|
299
411
|
AXTranslationModule,
|
300
412
|
//
|
301
413
|
AXPTenantChooserDropdownComponent,
|
302
|
-
|
414
|
+
AsyncPipe,
|
415
|
+
AXMAvatarComponent
|
416
|
+
], template: "@if((isAuthenticated$ | async)) {\n<div class=\"ax-bg-surface-lowest ax-p-3 ax-flex ax-gap-1 ax-border-b ax-border-surface-lowest\">\n <axp-avatar [size]=\"48\" color=\"primary\"></axp-avatar>\n <div class=\"ax-flex ax-flex-col ax-gap-1\">\n <ax-title class=\"ax-text-sm ax-font-medium ax-px-3\">{{ (user$ |async)?.title}}</ax-title>\n <axp-tenant-chooser-dropdown />\n </div>\n</div>\n}" }]
|
303
417
|
}], ctorParameters: () => [], propDecorators: { profilePopover: [{
|
304
418
|
type: ViewChild,
|
305
419
|
args: ['profilePopover']
|
@@ -336,12 +450,12 @@ function routesFacory() {
|
|
336
450
|
routes = [
|
337
451
|
{
|
338
452
|
path: 'tenant-chooser',
|
339
|
-
loadComponent: () => import('./acorex-modules-auth-tenant-chooser.component-
|
453
|
+
loadComponent: () => import('./acorex-modules-auth-tenant-chooser.component-Cx3fK__H.mjs').then((c) => c.AXPAuthTenantChooserComponent),
|
340
454
|
canActivate: [AXPAuthGuard, canActivateTenantChooser],
|
341
455
|
},
|
342
456
|
{
|
343
457
|
path: 'app-chooser',
|
344
|
-
loadComponent: () => import('./acorex-modules-auth-app-chooser.component-
|
458
|
+
loadComponent: () => import('./acorex-modules-auth-app-chooser.component-Dx-ehe1v.mjs').then((c) => c.AXPAuthAppChooserComponent),
|
345
459
|
canActivate: [AXPAuthGuard, canActivateAppChooser],
|
346
460
|
},
|
347
461
|
];
|
@@ -349,7 +463,7 @@ function routesFacory() {
|
|
349
463
|
}
|
350
464
|
class AXPAccountModule {
|
351
465
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPAccountModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
352
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.3", ngImport: i0, type: AXPAccountModule, imports: [RouterModule, i1$
|
466
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.3", ngImport: i0, type: AXPAccountModule, imports: [RouterModule, i1$2.AXPComponentSlotModule] }); }
|
353
467
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPAccountModule, providers: [
|
354
468
|
{
|
355
469
|
provide: ROUTES,
|
@@ -359,6 +473,13 @@ class AXPAccountModule {
|
|
359
473
|
], imports: [RouterModule,
|
360
474
|
//
|
361
475
|
AXPComponentSlotModule.forChild({
|
476
|
+
'side-menu-header': [
|
477
|
+
{
|
478
|
+
priority: 1,
|
479
|
+
name: 'user-card',
|
480
|
+
component: AXMUserProfileCardSlotComponent
|
481
|
+
}
|
482
|
+
],
|
362
483
|
'header-end': [
|
363
484
|
{
|
364
485
|
priority: 98,
|
@@ -381,6 +502,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
|
|
381
502
|
RouterModule,
|
382
503
|
//
|
383
504
|
AXPComponentSlotModule.forChild({
|
505
|
+
'side-menu-header': [
|
506
|
+
{
|
507
|
+
priority: 1,
|
508
|
+
name: 'user-card',
|
509
|
+
component: AXMUserProfileCardSlotComponent
|
510
|
+
}
|
511
|
+
],
|
384
512
|
'header-end': [
|
385
513
|
{
|
386
514
|
priority: 98,
|
@@ -519,18 +647,18 @@ class AXPAuthEffects {
|
|
519
647
|
}
|
520
648
|
})), { dispatch: false });
|
521
649
|
}
|
522
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPAuthEffects, deps: [{ token: i1$
|
650
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPAuthEffects, deps: [{ token: i1$3.Actions }, { token: i2$2.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
523
651
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPAuthEffects }); }
|
524
652
|
}
|
525
653
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPAuthEffects, decorators: [{
|
526
654
|
type: Injectable
|
527
|
-
}], ctorParameters: () => [{ type: i1$
|
655
|
+
}], ctorParameters: () => [{ type: i1$3.Actions }, { type: i2$2.Router }] });
|
528
656
|
|
529
657
|
//export * from './auth.actions';
|
530
658
|
|
531
659
|
class AXMAuthModule {
|
532
660
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMAuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
533
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.3", ngImport: i0, type: AXMAuthModule, imports: [CommonModule, i1$
|
661
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.3", ngImport: i0, type: AXMAuthModule, imports: [CommonModule, i1$2.AXPCommonModule, i2$2.RouterModule, i1$3.EffectsFeatureModule, AXPAccountModule] }); }
|
534
662
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMAuthModule, providers: [
|
535
663
|
AXMAuthErrorHandler,
|
536
664
|
{
|
@@ -586,4 +714,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
|
|
586
714
|
*/
|
587
715
|
|
588
716
|
export { AXM_AUTH_CONFIG_TOKEN as A, AXMAuthenticationTypes as a, AXPTenantChooserDropdownComponent as b, AXPAppChooserListComponent as c, AXMAuthErrorHandler as d, AXMDefaultAuthConfigs as e, configAuthModule as f, AXMAuthModule as g, AXPIdleService as h };
|
589
|
-
//# sourceMappingURL=acorex-modules-auth-acorex-modules-auth-
|
717
|
+
//# sourceMappingURL=acorex-modules-auth-acorex-modules-auth-DnTshxIU.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"acorex-modules-auth-acorex-modules-auth-DnTshxIU.mjs","sources":["../../../../libs/modules/auth/src/lib/error-handler.ts","../../../../libs/modules/auth/src/lib/auth.config.ts","../../../../libs/modules/auth/src/lib/auth.routes.ts","../../../../libs/modules/auth/src/lib/menu.provider.ts","../../../../libs/modules/auth/src/lib/pages/account/app-chooser/app-chooser-list.component.ts","../../../../libs/modules/auth/src/lib/pages/account/app-chooser/app-chooser-list.component.html","../../../../libs/modules/auth/src/lib/pages/account/app-chooser/app-chooser-slot.component.ts","../../../../libs/modules/auth/src/lib/pages/account/app-chooser/app-chooser-slot.component.html","../../../../libs/modules/auth/src/lib/pages/account/tenant-chooser/tenant-chooser-dropdown.component.ts","../../../../libs/modules/auth/src/lib/pages/account/tenant-chooser/tenant-chooser-dropdown.component.html","../../../../libs/modules/auth/src/lib/pages/account/avatar/avatar.component.ts","../../../../libs/modules/auth/src/lib/pages/account/avatar/avatar.component.html","../../../../libs/modules/auth/src/lib/pages/account/profile/profile-slot.component.ts","../../../../libs/modules/auth/src/lib/pages/account/profile/profile-slot.component.html","../../../../libs/modules/auth/src/lib/pages/account/user-profile-card/user-profile-card.component.ts","../../../../libs/modules/auth/src/lib/pages/account/user-profile-card/user-profile-card.component.html","../../../../libs/modules/auth/src/lib/pages/account/account.module.ts","../../../../libs/modules/auth/src/lib/shared/services/idle.service.ts","../../../../libs/modules/auth/src/lib/store/auth.effects.ts","../../../../libs/modules/auth/src/lib/store/index.ts","../../../../libs/modules/auth/src/lib/auth.module.ts","../../../../libs/modules/auth/src/acorex-modules-auth.ts"],"sourcesContent":["import { AXPUnauthenticatedError, AXPUnauthorizedError } from '@acorex/platform/auth';\nimport { AXPErrorHandler } from '@acorex/platform/common';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable, NgZone, inject, isDevMode } from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Injectable()\nexport class AXMAuthErrorHandler implements AXPErrorHandler {\n private router = inject(Router);\n private layoutService = inject(AXPLayoutThemeService);\n\n handleError(error: Error, next: (error: any) => void): void {\n if (error instanceof HttpErrorResponse) {\n // if (error.status == 401) {\n // this.router.navigate(['/auth/login']);\n // }\n // else if (error.status == 404) {\n // this.router.navigate(['/404']);\n // }\n } else if (error instanceof AXPUnauthorizedError) {\n const redirectUrl = error.data?.redirectUrl;\n console.error(error.message);\n this.router.navigate(['/401'], { queryParams: redirectUrl ? { redirectUrl: redirectUrl } : null });\n } else if (error instanceof AXPUnauthenticatedError) {\n console.error(error.message);\n const redirectUrl = error.data?.redirectUrl;\n this.router.navigate(['/auth/login'], { queryParams: redirectUrl ? { redirectUrl: redirectUrl } : null });\n } else {\n if (isDevMode()) {\n next(error); // Pass the error to the next handler\n } else {\n next(error); // maybe we need a error page\n }\n }\n this.layoutService.setNavigationLoading(false);\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { AuthConfig } from 'angular-oauth2-oidc';\n\nexport enum AXMAuthenticationTypes {\n UsernamePassword,\n UsernameEmailPassword,\n EmailPassword,\n MobilePassword,\n EmailCode,\n MobileCode,\n}\n\nexport const AXM_AUTH_CONFIG_TOKEN = new InjectionToken<AXMAuthConfigs>('app-module-auth-config', {\n providedIn: 'root',\n factory: () => {\n return AXMDefaultAuthConfigs;\n },\n});\n\nexport interface AXMAuthConfigs {\n type: AXMAuthenticationTypes;\n // oidc_settings?: UserManagerSettings;\n authConfig?: AuthConfig;\n end_url?: string;\n signup?: {\n enable: boolean;\n url?: string;\n };\n signin_google?: boolean;\n signin_apple?: boolean;\n signinPage?: {\n description: string;\n slogan: string;\n };\n idleTimeout?: number;\n}\n\nexport const AXMDefaultAuthConfigs: AXMAuthConfigs = {\n type: AXMAuthenticationTypes.UsernamePassword,\n};\n\nexport function configAuthModule(config: Partial<AXMAuthConfigs> = AXMDefaultAuthConfigs): AXMAuthConfigs {\n return { ...AXMDefaultAuthConfigs, ...config };\n}\n","import { Route } from '@angular/router';\nexport const routes: Route[] = [\n {\n path: 'auth',\n children: [\n {\n path: '',\n pathMatch: 'full',\n redirectTo: 'login',\n },\n {\n path: '',\n loadComponent: () =>\n import('./shared/layouts/master/master.layout').then((c) => c.AXPAuthMasterLayoutComponent),\n loadChildren: () => import('./pages/login/login.module').then((c) => c.AXPSignInModule),\n },\n {\n path: '',\n loadComponent: () =>\n import('./shared/layouts/master/master.layout').then((c) => c.AXPAuthMasterLayoutComponent),\n loadChildren: () => import('./pages/two-factor/two-factor.module').then((c) => c.AXPTwoFactorModule),\n },\n {\n path: '',\n loadComponent: () =>\n import('./shared/layouts/master/master.layout').then((c) => c.AXPAuthMasterLayoutComponent),\n loadChildren: () => import('./pages/forgot/routes').then((c) => c),\n },\n {\n path: 'account',\n loadComponent: () => import('./shared/layouts/blank/blank.layout').then((c) => c.AXPAuthBlankLayoutComponent),\n loadChildren: () => import('./pages/account/account.module').then((c) => c.AXPAccountModule),\n },\n // {\n // path: '',\n // loadComponent: () =>\n // import('./shared/layouts/master/master.layout').then((c) => c.AXPAuthMasterLayoutComponent),\n // loadChildren: () => import('./register/register.module').then((c) => c.AXPRegisterModule),\n // },\n ],\n },\n];\n","import { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPMenuProvider, AXPMenuProviderContext } from '@acorex/platform/common';\nimport { inject } from '@angular/core';\n\nexport class AXMSecurityManagmentModuleMenuProvider implements AXPMenuProvider {\n private sessionService = inject(AXPSessionService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const scope = 'auth';\n context.addItems([\n {\n text: `t('profile.title', {scope: \"${scope}\"})`,\n name: 'user-profile',\n icon: 'fa-light fa-user',\n children: [\n {\n text: `t('profile.edit', {scope: \"${scope}\"})`,\n name: 'edit-profile',\n icon: 'fa-light fa-address-card',\n },\n {\n text: `t('settings.user.title', {scope: \"platform-management\"})`,\n name: 'user-settings',\n icon: 'fa-light fa-gear',\n path: `/${this.sessionService.application?.name}/settings/user`,\n },\n ],\n },\n ]);\n }\n}\n","import { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPApplication, AXPSessionService } from '@acorex/platform/auth';\nimport { CommonModule } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'axp-app-chooser-list',\n templateUrl: 'app-chooser-list.component.html',\n imports: [CommonModule, AXDecoratorModule, AXLoadingModule],\n})\nexport class AXPAppChooserListComponent {\n private router = inject(Router);\n private sessionService = inject(AXPSessionService);\n\n protected selectedApplication: AXPApplication | null = null;\n protected applications$ = this.sessionService.applications$;\n\n async chooseApplication(item: AXPApplication) {\n this.selectedApplication = item;\n await this.sessionService.setApplication(item);\n this.router.navigate([`/${item.name}/home`]);\n }\n}\n","<div class=\" ax-w-full ax-overflow-auto ax-max-h-[300px] ax-pe-2\">\n @for(application of (applications$ | async); track $index){\n <div class=\"ax-flex ax-gap-2 ax-justify-between ax-border-b last:ax-border-b-0 ax-py-3 ax-items-start ax-cursor-pointer\"\n (click)=\"chooseApplication(application)\">\n <div class=\"ax-flex ax-flex-1 ax-gap-2 ax-items-center ax-justify-center ax-font-medium\">\n <div\n class=\"ax-w-12 ax-h-12 ax-flex ax-justify-center ax-items-center ax-rounded-full ax-bg-neutral-100 ax-m-auto\">\n <ax-icon class=\"fa-solid fa-computer ax-text-neutral-500 ax-text-lg\"> </ax-icon>\n <!-- TODO: logo instead of application icon -->\n <!-- <axp-logo [source]=\"application.logo\" [attr.alt]=\"application.title\"\n class=\"!ax-flex ax-items-center ax-justify-center !ax-text-sm ax-mx-auto ax-w-10 ax-h-10 ax-bg-neutral-200 ax-rounded-full\"></axp-logo> -->\n </div>\n <span class=\"ax-flex-1 ax-text-start md:ax-text-base ax-text-sm\">{{ application.title }}</span>\n <span class=\"ax-text-gray-500 md:ax-text-sm ax-text-xs\">{{application.editionName}}</span>\n @if(application.name===selectedApplication?.name){\n <ax-loading></ax-loading>\n }@else {\n <ax-icon class=\"fa-solid fa-chevron-right ax-text-neutral-400\"> </ax-icon>\n }\n </div>\n </div>\n }\n</div>","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXPApplication, AXPSessionService } from '@acorex/platform/auth';\nimport { CommonModule } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { of } from 'rxjs';\nimport { AXPAppChooserListComponent } from './app-chooser-list.component';\n\n@Component({\n templateUrl: './app-chooser-slot.component.html',\n imports: [CommonModule, AXButtonModule, AXPopoverModule, AXDecoratorModule, AXPAppChooserListComponent],\n})\nexport class AXMAppChooserSlotComponent {\n private sessionService = inject(AXPSessionService);\n protected tenant$ = this.sessionService.tenant$;\n\n protected application$ = this.sessionService.application$;\n protected applications$ = of([]);\n\n private router = inject(Router);\n\n async chooseApplication(item: AXPApplication) {\n //await this.sessionService.selectApplication(item.name);\n this.router.navigate([`/${item.name}/home`]);\n }\n}\n","@if(((applications$ | async)?.length ?? 0) > 1)\n{\n<ax-button color=\"default\" look=\"blank\" #appChooser>\n <ax-icon>\n <i class=\"fa-solid fa-grid-2 ax-text-slate-400 dark:ax-text-slate-200\"></i>\n </ax-icon>\n</ax-button>\n<ax-popover [target]=\"appChooser\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\" [adaptivityEnabled]=\"true\">\n <div\n class=\"ax-bg-surface-lowest ax-border ax-overflow-hidden ax-rounded-md ax-shadow-md ax-w-full ax-min-w-64 ax-p-3\">\n <axp-app-chooser-list></axp-app-chooser-list>\n </div>\n</ax-popover>\n}","import { AXChipsModule } from '@acorex/components/chips';\nimport { AXTagModule } from '@acorex/components/tag';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AsyncPipe, CommonModule, NgIf } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AXButtonModule } from '@acorex/components/button';\n\n@Component({\n selector: 'axp-tenant-chooser-dropdown',\n templateUrl: 'tenant-chooser-dropdown.component.html',\n imports: [AXDecoratorModule, AXChipsModule, AXTagModule, CommonModule, AXButtonModule]\n})\nexport class AXPTenantChooserDropdownComponent {\n private router = inject(Router);\n private sessionService = inject(AXPSessionService);\n protected tenants$ = this.sessionService.tenants$;\n protected tenant = this.sessionService.tenant;\n\n tenantChooser() {\n this.router.navigate(['/auth/account/tenant-chooser']);\n }\n}\n","<!-- <ng-container *ngIf=\"tenants$ | async as tenants\">\n @if(tenants.length>1){\n <div (click)=\"tenantChooser()\"\n class=\"ax-flex ax-items-center ax-border ax-rounded-full ax-px-4 ax-py-1 ax-gap-2 ax-cursor-pointer\">\n <ax-icon class=\"fa-solid fa-building ax-text-neutral-500 ax-text-xs\"></ax-icon>\n <p class=\"ax-text-neutral-500 ax-text-sm ax-font-medium\">\n {{ tenant?.title }}\n </p>\n <ax-icon class=\"fa-regular fa-chevron-down ax-text-neutral-400\"></ax-icon>\n </div>\n }@else {\n <div class=\"ax-flex ax-items-center ax-border ax-rounded-full ax-px-4 ax-py-1 ax-gap-2 ax-cursor-pointer\">\n <ax-icon class=\"fa-solid fa-building ax-text-neutral-500\"></ax-icon>\n <p class=\"ax-text-neutral-500 ax-text-sm ax-font-medium\">\n {{ tenant?.title }}\n </p>\n </div>\n }\n</ng-container> -->\n\n<ng-container *ngIf=\"tenants$ | async as tenants\">\n <ax-button [text]=\"tenant?.title ?? ''\" class=\"ax-xs\" look=\"blank\">\n @if(tenants.length > 1){\n <ax-suffix>\n <ax-icon class=\"fa-solid fa-caret-down\"></ax-icon>\n </ax-suffix>\n }\n </ax-button>\n</ng-container>","import { AXAvatarModule } from '@acorex/components/avatar';\nimport { AXHtmlEvent, AXStyleColorType, MXBaseComponent } from '@acorex/components/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXImageModule } from '@acorex/components/image';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPDataProvider } from '@acorex/platform/common';\nimport { Component, inject, input, OnInit, signal } from '@angular/core';\nimport { first } from 'rxjs';\n\n@Component({\n selector: 'axp-avatar',\n templateUrl: './avatar.component.html',\n imports: [AXDecoratorModule, AXAvatarModule, AXImageModule]\n})\nexport class AXMAvatarComponent extends MXBaseComponent {\n private sessionService = inject(AXPSessionService);\n private dataService = inject(AXPDataProvider, { optional: true });\n\n protected hasPicture = signal(false);\n protected avatarText = signal<string>('');\n protected src!: string;\n\n public size = input<number>(48)\n public color = input<AXStyleColorType>('ghost');\n public look = input<'twotone' | 'solid'>('twotone');\n\n protected user$ = this.sessionService.user$;\n\n constructor() {\n super()\n this.loadImage();\n this.getAvatarText()\n }\n\n protected onImageError(event: AXHtmlEvent<ErrorEvent>) {\n this.hasPicture.set(false);\n }\n\n protected onImageLoad(event: AXHtmlEvent<Event>) {\n this.hasPicture.set(true)\n }\n\n private async loadImage() {\n try {\n const url = this.sessionService.user?.avatar as string;\n if (url?.toLowerCase().startsWith('http')) {\n this.src = url;\n } else if (this.sessionService.user?.avatar != 'null' && this.dataService) {\n const blob = await this.dataService.viewFile(url, '');\n this.src = URL.createObjectURL(blob);\n } else {\n //this.src = this.mockerService.avatar();\n }\n } catch (error) {\n this.hasPicture.set(false);\n console.error('Failed to load image by ID:', error);\n this.src = '';\n }\n }\n\n protected getAvatarText = () => {\n this.user$.pipe(first()).subscribe((user) => {\n const names = user?.title.split(' ');\n if (names?.length && names?.length > 1) {\n this.avatarText.set(`${names[0][0].toUpperCase()}${names[names.length - 1][0].toUpperCase()}`);\n } else return this.avatarText.set('AC');\n });\n };\n}\n","<ax-avatar #avatar (error)=\"this.src = 'path/to/default-image.jpg'\" [size]=\"size()\" [color]=\"color()\" [look]=\"look()\"\n class=\"ax-cursor-pointer\">\n @if(hasPicture()){\n <ax-image (onError)=\"onImageError($event)\" (onLoad)=\"onImageLoad($event)\" [src]=\"src\"></ax-image>\n }@else{\n <ax-text>\n <small class=\"ax-text-xs ax-font-semibold\">{{ avatarText() }}</small>\n </ax-text>\n }\n</ax-avatar>","import { AXAvatarModule } from '@acorex/components/avatar';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXHtmlEvent } from '@acorex/components/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXImageModule } from '@acorex/components/image';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopoverComponent, AXPopoverModule } from '@acorex/components/popover';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ViewChild, ViewEncapsulation, inject, signal } from '@angular/core';\nimport { Router, RouterModule } from '@angular/router';\nimport { AXPTenantChooserDropdownComponent } from '../tenant-chooser/tenant-chooser-dropdown.component';\nimport { AXMAvatarComponent } from '../avatar/avatar.component';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\n\n@Component({\n templateUrl: './profile-slot.component.html',\n styleUrl: './profile-slot.component.scss',\n imports: [\n CommonModule,\n RouterModule,\n //\n AXImageModule,\n AXAvatarModule,\n AXPopoverModule,\n AXButtonModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXTranslationModule,\n //\n\n AXPTenantChooserDropdownComponent,\n AXMAvatarComponent\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class AXMAuthProfileSlotComponent {\n private router = inject(Router);\n private sessionService = inject(AXPSessionService);\n private themeService = inject(AXPLayoutThemeService);\n\n protected isDarkMode = this.themeService.isDarkMode;\n\n\n protected user$ = this.sessionService.user$;\n protected tenant$ = this.sessionService.tenant$;\n\n protected isAuthenticated$ = this.sessionService.isAuthenticated$;\n\n protected appName = () => this.sessionService.application?.name;\n\n @ViewChild('profilePopover') profilePopover!: AXPopoverComponent;\n\n editProfile() {\n this.router.navigate([`/${this.appName()}/m/SecurityManagement/e/profile/0/view`]);\n }\n\n async logOut() {\n await this.sessionService.signout();\n }\n\n toggleProfileMenu() {\n this.profilePopover.open();\n }\n\n protected handleSignIn() {\n this.router.navigate(['/auth/login']);\n }\n}\n","@if((isAuthenticated$ | async)) {\n<div class=\"ax-size-fit ax-px-2\">\n <axp-avatar #avatar [size]=\"36\" [color]=\"isDarkMode() ? 'primary':'ghost'\"></axp-avatar>\n <ax-popover [target]=\"avatar\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\" #p>\n <div\n class=\"ax-bg-surface-lowest ax-border ax-border-surface-lowest ax-rounded-md ax-shadow-md ax-w-full ax-min-w-64\">\n <div class=\"ax-flex ax-flex-col ax-items-center ax-p-4 ax-border-b\">\n <axp-avatar [size]=\"64\" color=\"primary\"></axp-avatar>\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-mt-2 ax-gap-1\">\n <div class=\"ax-text-base ax-font-bold\">{{ (user$ | async)?.title }}</div>\n <axp-tenant-chooser-dropdown></axp-tenant-chooser-dropdown>\n </div>\n </div>\n <div class=\"axp-profile-slot-menus\">\n <ul>\n <li>\n <a (click)=\"editProfile()\">\n <i class=\"fa-light fa-user\"></i>\n <span>{{ 'profile.edit' | translate : { scope: 'auth' } | async }}</span>\n </a>\n </li>\n </ul>\n <ul>\n <li>\n <a (click)=\"p.close()\" [routerLink]=\"['/', appName(), 'settings', 'user']\">\n <i class=\"fa-light fa-gear\"></i>\n <span>{{ 'profile.settings' | translate : { scope: 'auth' } | async }}</span>\n </a>\n </li>\n </ul>\n <ul>\n <li class=\"ax-text-danger-500\">\n <a (click)=\"logOut()\">\n <i class=\"fa-light fa-arrow-right-from-bracket\"></i>\n <span>{{ 'profile.logout' | translate : { scope: 'auth' } | async }}</span>\n </a>\n </li>\n </ul>\n </div>\n </div>\n </ax-popover>\n</div>\n\n} @else {\n<ax-button color=\"default\" look=\"blank\" text=\"Sign Up / Sign In\" (click)=\"handleSignIn()\">\n <ax-icon>\n <i class=\"fa-solid fa-user ax-text-slate-400 dark:ax-text-slate-200\"></i>\n </ax-icon>\n</ax-button>\n}","import { AXAvatarModule } from '@acorex/components/avatar';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXHtmlEvent } from '@acorex/components/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXImageModule } from '@acorex/components/image';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopoverComponent, AXPopoverModule } from '@acorex/components/popover';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPDataProvider } from '@acorex/platform/common';\nimport { AsyncPipe, CommonModule } from '@angular/common';\nimport { Component, ViewChild, inject, signal } from '@angular/core';\nimport { Router, RouterModule } from '@angular/router';\nimport { first } from 'rxjs';\nimport { AXPTenantChooserDropdownComponent } from '../tenant-chooser/tenant-chooser-dropdown.component';\nimport { AXChipsModule } from '@acorex/components/chips';\nimport { AXMAvatarComponent } from '../avatar/avatar.component';\n\n@Component({\n templateUrl: './user-profile-card.component.html',\n imports: [\n RouterModule,\n //\n AXImageModule,\n AXAvatarModule,\n AXPopoverModule,\n AXButtonModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXTranslationModule,\n //\n AXPTenantChooserDropdownComponent,\n AsyncPipe,\n AXMAvatarComponent\n ],\n})\nexport class AXMUserProfileCardSlotComponent {\n private router = inject(Router);\n private sessionService = inject(AXPSessionService);\n private dataService = inject(AXPDataProvider, { optional: true });\n\n protected hasPicture = signal(true);\n protected avatarText = signal<string>('');\n\n constructor() {\n this.loadImage();\n this.getAvatarText();\n }\n protected src!: string;\n protected user$ = this.sessionService.user$;\n protected tenant$ = this.sessionService.tenant$;\n\n protected isAuthenticated$ = this.sessionService.isAuthenticated$;\n\n protected appName = () => this.sessionService.application?.name;\n\n @ViewChild('profilePopover') profilePopover!: AXPopoverComponent;\n\n editProfile() {\n this.router.navigate([`/${this.appName()}/m/securityManagement/e/profile/0/view`]);\n }\n\n async logOut() {\n await this.sessionService.signout();\n }\n\n toggleProfileMenu() {\n this.profilePopover.open();\n }\n\n protected handleSignIn() {\n this.router.navigate(['/auth/login']);\n }\n\n protected onImageError(event: AXHtmlEvent<ErrorEvent>) {\n this.hasPicture.set(false);\n }\n\n protected getAvatarText = () => {\n this.user$.pipe(first()).subscribe((user) => {\n const names = user?.title.split(' ');\n if (names?.length && names?.length > 1) {\n this.avatarText.set(`${names[0][0].toUpperCase()}${names[names.length - 1][0].toUpperCase()}`);\n } else return this.avatarText.set('AC');\n });\n };\n\n private async loadImage() {\n try {\n const url = this.sessionService.user?.avatar as string;\n if (url?.toLowerCase().startsWith('http')) {\n this.src = url;\n } else if (this.sessionService.user?.avatar != 'null' && this.dataService) {\n const blob = await this.dataService.viewFile(url, '');\n this.src = URL.createObjectURL(blob);\n } else {\n //this.src = this.mockerService.avatar();\n }\n } catch (error) {\n this.hasPicture.set(false);\n console.error('Failed to load image by ID:', error);\n this.src = '';\n }\n }\n}\n","@if((isAuthenticated$ | async)) {\n<div class=\"ax-bg-surface-lowest ax-p-3 ax-flex ax-gap-1 ax-border-b ax-border-surface-lowest\">\n <axp-avatar [size]=\"48\" color=\"primary\"></axp-avatar>\n <div class=\"ax-flex ax-flex-col ax-gap-1\">\n <ax-title class=\"ax-text-sm ax-font-medium ax-px-3\">{{ (user$ |async)?.title}}</ax-title>\n <axp-tenant-chooser-dropdown />\n </div>\n</div>\n}","import { AXPAuthGuard, AXPSessionService } from '@acorex/platform/auth';\nimport { AXPComponentSlotModule } from '@acorex/platform/common';\nimport { NgModule, inject } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n CanActivateFn,\n ROUTES,\n Router,\n RouterModule,\n RouterStateSnapshot,\n Routes,\n} from '@angular/router';\nimport { firstValueFrom } from 'rxjs';\nimport { AXMAppChooserSlotComponent } from './app-chooser/app-chooser-slot.component';\nimport { AXMAuthProfileSlotComponent } from './profile/profile-slot.component';\nimport { AXMUserProfileCardSlotComponent } from './user-profile-card/user-profile-card.component';\n\nconst canActivateTenantChooser: CanActivateFn = async (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\n const sessionService = inject(AXPSessionService);\n const router = inject(Router);\n\n const tenants = await firstValueFrom(sessionService.tenants$);\n if (tenants.length == 0) {\n return router.createUrlTree(['/auth/login']);\n }\n if (tenants.length == 1) {\n await sessionService.setTenant(tenants[0]);\n return router.createUrlTree(['/auth/account/app-chooser']);\n }\n return true;\n};\n\nconst canActivateAppChooser: CanActivateFn = async (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\n const sessionService = inject(AXPSessionService);\n const router = inject(Router);\n const apps = await firstValueFrom(sessionService.applications$);\n if (apps.length == 0) {\n return router.createUrlTree(['/auth/login']);\n }\n if (apps.length == 1) {\n await sessionService.setApplication(apps[0]);\n return router.createUrlTree([`/${apps[0].name}/home`]);\n }\n return true;\n};\n\nfunction routesFacory() {\n let routes: Routes = [];\n routes = [\n {\n path: 'tenant-chooser',\n loadComponent: () =>\n import('./tenant-chooser/tenant-chooser.component').then((c) => c.AXPAuthTenantChooserComponent),\n canActivate: [AXPAuthGuard, canActivateTenantChooser],\n },\n {\n path: 'app-chooser',\n loadComponent: () => import('./app-chooser/app-chooser.component').then((c) => c.AXPAuthAppChooserComponent),\n canActivate: [AXPAuthGuard, canActivateAppChooser],\n },\n ];\n return routes;\n}\n\n@NgModule({\n declarations: [],\n imports: [\n RouterModule,\n //\n AXPComponentSlotModule.forChild({\n 'side-menu-header': [\n {\n priority: 1,\n name: 'user-card',\n component: AXMUserProfileCardSlotComponent\n }\n ],\n 'header-end': [\n {\n priority: 98,\n name: 'app-choser',\n component: AXMAppChooserSlotComponent,\n },\n {\n priority: 99,\n name: 'profile',\n component: AXMAuthProfileSlotComponent,\n },\n ],\n }),\n ],\n exports: [],\n providers: [\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFacory,\n },\n ],\n})\nexport class AXPAccountModule { }\n","import { Injectable, inject } from '@angular/core';\nimport { Subject, Observable, timer, Subscription } from 'rxjs';\nimport { startWith, switchMap, tap } from 'rxjs/operators';\nimport { AXM_AUTH_CONFIG_TOKEN } from '../../auth.config';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPIdleService {\n private configs = inject(AXM_AUTH_CONFIG_TOKEN);\n private idle$ = new Subject<void>();\n private timeoutDuration = this.configs.idleTimeout ?? 10 * 60 * 1000;\n private userActivity$ = new Subject<void>();\n private idleSubscription: Subscription | null = null;\n\n constructor() {\n this.setupActivityListeners();\n }\n\n get idleState$(): Observable<void> {\n return this.idle$.asObservable();\n }\n\n private setupActivityListeners() {\n const activityEvents = ['mousemove', 'keydown', 'wheel'];\n activityEvents.forEach(event =>\n document.addEventListener(event, () => this.resetTimer())\n );\n }\n\n startWatching() {\n this.stopWatching(); // Stop any existing subscription\n this.idleSubscription = this.userActivity$.pipe(\n startWith(null),\n switchMap(() => timer(this.timeoutDuration)),\n tap(() => this.idle$.next()),\n ).subscribe();\n }\n\n resetTimer() {\n this.userActivity$.next();\n }\n\n stopWatching() {\n if (this.idleSubscription) {\n this.idleSubscription.unsubscribe();\n this.idleSubscription = null;\n }\n }\n}\n","import { AXDialogButtonItem, AXDialogService } from \"@acorex/components/dialog\";\nimport { AXPSessionService } from \"@acorex/platform/auth\";\nimport { AXPSignInAction, AXPSignOutAction } from \"@acorex/platform/common\";\nimport { Injectable, inject } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\nimport { Actions, createEffect, ofType } from \"@ngrx/effects\";\nimport { of, switchMap, tap } from \"rxjs\";\nimport { AXPIdleService } from \"../shared/services\";\nimport { AXM_AUTH_CONFIG_TOKEN } from \"../auth.config\";\n\n@Injectable()\nexport class AXPAuthEffects {\n\n private configs = inject(AXM_AUTH_CONFIG_TOKEN);\n private sessionService = inject(AXPSessionService);\n private idleService = inject(AXPIdleService);\n private dialogService = inject(AXDialogService);\n private dialogAlreadyOpen = false;\n\n constructor(private actions$: Actions, private router: Router) { }\n\n signout$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(AXPSignOutAction),\n switchMap((action) => {\n this.idleService.stopWatching();\n this.router.navigate(['/auth/login']);\n return of();\n })\n ),\n { dispatch: false }\n );\n\n signin$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(AXPSignInAction),\n switchMap((action) => {\n if (this.configs.idleTimeout) {\n this.idleService.startWatching();\n }\n return of();\n })\n ),\n { dispatch: false }\n );\n\n\n idle$ = createEffect(\n () =>\n this.idleService.idleState$.pipe(\n tap(() => {\n if (!this.dialogAlreadyOpen) {\n let time = 60;\n let intervalId: number;\n const buttonText = (time: number) => `Stay Sign In (${time})`;\n const stayButton: AXDialogButtonItem = {\n text: buttonText(time),\n color: 'primary',\n autofocus: true,\n onClick: () => {\n this.idleService.resetTimer();\n dialog.close();\n this.dialogAlreadyOpen = false;\n clearInterval(intervalId);\n }\n }\n const dialog = this.dialogService.open({\n title: \"Session Timeout\",\n content: \"You're being timed out due to inactivity. Please choose to stay signed in or to sign off. Otherwise, you will signed off automatically.\",\n type: 'warning',\n buttons: [\n {\n text: \"Sign Off\",\n color: 'ghost',\n onClick: async () => {\n await this.sessionService.signout();\n dialog.close();\n this.dialogAlreadyOpen = false;\n clearInterval(intervalId);\n }\n },\n stayButton,\n ]\n });\n this.dialogAlreadyOpen = true;\n // Automatically close dialog and sign out after additional time\n intervalId = setInterval(() => {\n if (time > 0) {\n stayButton.text = buttonText(--time);\n } else {\n clearInterval(intervalId);\n this.sessionService.signout();\n dialog.close();\n this.dialogAlreadyOpen = false;\n }\n }, 1000);\n //\n }\n })\n ),\n { dispatch: false }\n );\n\n}\n","export * from './auth.effects';\n//export * from './auth.actions';","import { AXP_MENU_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER, AXPCommonModule } from '@acorex/platform/common';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { EffectsModule } from '@ngrx/effects';\nimport { routes } from './auth.routes';\nimport { AXMAuthErrorHandler } from './error-handler';\nimport { AXMSecurityManagmentModuleMenuProvider } from './menu.provider';\nimport { AXPAccountModule } from './pages/account/account.module';\nimport { AXPAuthEffects } from './store';\n\n@NgModule({\n imports: [\n CommonModule,\n AXPCommonModule.forChild({ errorHandlers: [AXMAuthErrorHandler] }),\n RouterModule.forChild(routes),\n EffectsModule.forFeature([AXPAuthEffects]),\n AXPAccountModule,\n ],\n providers: [\n AXMAuthErrorHandler,\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMSecurityManagmentModuleMenuProvider,\n multi: true,\n },\n {\n provide: AXP_SETTING_DEFINITION_PROVIDER,\n useFactory: async () => {\n const provider = (await import('./setting.provider')).AXMSettingProvider;\n return new provider();\n },\n multi: true,\n },\n ],\n})\nexport class AXMAuthModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3","i4","i1","i2","i5","switchMap","tap"],"mappings":"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"}
|