@acorex-platform/module-auth-client 0.0.28 → 0.0.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/{acorex-platform-module-auth-client-acorex-platform-module-auth-client-CYmUn-lw.mjs → acorex-platform-module-auth-client-acorex-platform-module-auth-client-CPmffSrQ.mjs} +185 -52
- package/fesm2022/acorex-platform-module-auth-client-acorex-platform-module-auth-client-CPmffSrQ.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-auth-client-app-chooser.component-BVbu-f8h.mjs → acorex-platform-module-auth-client-app-chooser.component-BfOgjNxw.mjs} +3 -3
- package/fesm2022/{acorex-platform-module-auth-client-app-chooser.component-BVbu-f8h.mjs.map → acorex-platform-module-auth-client-app-chooser.component-BfOgjNxw.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-change-password.command-DIM_d7RO.mjs → acorex-platform-module-auth-client-change-password.command-BcBbN5hX.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-change-password.command-DIM_d7RO.mjs.map → acorex-platform-module-auth-client-change-password.command-BcBbN5hX.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-change-photo.command-CYGqrJV0.mjs → acorex-platform-module-auth-client-change-photo.command-DfHUPj7p.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-change-photo.command-CYGqrJV0.mjs.map → acorex-platform-module-auth-client-change-photo.command-DfHUPj7p.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-get-user-activity.query-BTpibxe9.mjs → acorex-platform-module-auth-client-get-user-activity.query-D9fyLuBy.mjs} +16 -6
- package/fesm2022/acorex-platform-module-auth-client-get-user-activity.query-D9fyLuBy.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-auth-client-lock-screen.command-Br9O4b5c.mjs → acorex-platform-module-auth-client-lock-screen.command-DUZ255VK.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-lock-screen.command-Br9O4b5c.mjs.map → acorex-platform-module-auth-client-lock-screen.command-DUZ255VK.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-login.module-DJVL3bAF.mjs → acorex-platform-module-auth-client-login.module-uRv9Gwea.mjs} +7 -7
- package/fesm2022/acorex-platform-module-auth-client-login.module-uRv9Gwea.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-auth-client-master.layout-DZUYm22p.mjs → acorex-platform-module-auth-client-master.layout-Cu8mQN9B.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-master.layout-DZUYm22p.mjs.map → acorex-platform-module-auth-client-master.layout-Cu8mQN9B.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-open-sessions.command-LZKM9fgo.mjs → acorex-platform-module-auth-client-open-sessions.command-BlPxfa3v.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-open-sessions.command-LZKM9fgo.mjs.map → acorex-platform-module-auth-client-open-sessions.command-BlPxfa3v.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-password.component-CNKRWfuG.mjs → acorex-platform-module-auth-client-password.component-5-0kaY5J.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-password.component-CNKRWfuG.mjs.map → acorex-platform-module-auth-client-password.component-5-0kaY5J.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-auth-client-profile-activity-chart.component-kBmoYwRh.mjs +229 -0
- package/fesm2022/acorex-platform-module-auth-client-profile-activity-chart.component-kBmoYwRh.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-auth-client-profile-page-component.provider-6lNx6bKI.mjs → acorex-platform-module-auth-client-profile-page-component.provider-Bz1mdVCM.mjs} +3 -3
- package/fesm2022/{acorex-platform-module-auth-client-profile-page-component.provider-6lNx6bKI.mjs.map → acorex-platform-module-auth-client-profile-page-component.provider-Bz1mdVCM.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-profile-page.component-CdxseoJX.mjs → acorex-platform-module-auth-client-profile-page.component-w2SYmCyc.mjs} +7 -3
- package/fesm2022/acorex-platform-module-auth-client-profile-page.component-w2SYmCyc.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-auth-client-register-password.component-D-tBrCJv.mjs → acorex-platform-module-auth-client-register-password.component-BtDgEnmo.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-register-password.component-D-tBrCJv.mjs.map → acorex-platform-module-auth-client-register-password.component-BtDgEnmo.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-register.module-BrXqva0B.mjs → acorex-platform-module-auth-client-register.module-DCWoPb0u.mjs} +7 -7
- package/fesm2022/acorex-platform-module-auth-client-register.module-DCWoPb0u.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-auth-client-remove-pin-code.command-uK04-h15.mjs → acorex-platform-module-auth-client-remove-pin-code.command-DJeSHCLL.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-remove-pin-code.command-uK04-h15.mjs.map → acorex-platform-module-auth-client-remove-pin-code.command-DJeSHCLL.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-session-lock-overlay.component-BhsTAmVe.mjs → acorex-platform-module-auth-client-session-lock-overlay.component-3HJEmCYI.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-session-lock-overlay.component-BhsTAmVe.mjs.map → acorex-platform-module-auth-client-session-lock-overlay.component-3HJEmCYI.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.command-BJT7F-xz.mjs → acorex-platform-module-auth-client-set-pin-code.command-C2kCGuQW.mjs} +3 -3
- package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.command-BJT7F-xz.mjs.map → acorex-platform-module-auth-client-set-pin-code.command-C2kCGuQW.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.component-Cq4skm_3.mjs → acorex-platform-module-auth-client-set-pin-code.component-Dpdgw4KT.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.component-Cq4skm_3.mjs.map → acorex-platform-module-auth-client-set-pin-code.component-Dpdgw4KT.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-tenant-chooser.component-CHmg7D5H.mjs → acorex-platform-module-auth-client-tenant-chooser.component-1Kv-LGZc.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-tenant-chooser.component-CHmg7D5H.mjs.map → acorex-platform-module-auth-client-tenant-chooser.component-1Kv-LGZc.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-two-factor.module-_jYo6xXr.mjs → acorex-platform-module-auth-client-two-factor.module-BnH72Bob.mjs} +5 -5
- package/fesm2022/acorex-platform-module-auth-client-two-factor.module-BnH72Bob.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-auth-client-view-login-history.command-ovj5rdHL.mjs → acorex-platform-module-auth-client-view-login-history.command-C_T4l61M.mjs} +2 -5
- package/fesm2022/{acorex-platform-module-auth-client-view-login-history.command-ovj5rdHL.mjs.map → acorex-platform-module-auth-client-view-login-history.command-C_T4l61M.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-auth-client.mjs +1 -1
- package/package.json +2 -2
- package/types/acorex-platform-module-auth-client.d.ts +37 -7
- package/fesm2022/acorex-platform-module-auth-client-acorex-platform-module-auth-client-CYmUn-lw.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-auth-client-get-user-activity.query-BTpibxe9.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-auth-client-login.module-DJVL3bAF.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-auth-client-profile-activity-chart.component-CtSrYARX.mjs +0 -150
- package/fesm2022/acorex-platform-module-auth-client-profile-activity-chart.component-CtSrYARX.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-auth-client-profile-page.component-CdxseoJX.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-auth-client-register.module-BrXqva0B.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-auth-client-two-factor.module-_jYo6xXr.mjs.map +0 -1
|
@@ -3,10 +3,10 @@ import { AXPFileStorageService, AXPHomePageService, AXPPlatformSettingsLoadState
|
|
|
3
3
|
import { AXPSessionService, AXPUnauthorizedError, AXPUnauthenticatedError, 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, verifyPassword } from '@acorex-platform/framework-shared/core';
|
|
6
|
-
import { RootConfig } from '@acorex-platform/module-security-management-client/contracts';
|
|
6
|
+
import { RootConfig, AXPSecurityManagementFeatureKeys } from '@acorex-platform/module-security-management-client/contracts';
|
|
7
7
|
import { AXPEntityService, AXP_ENTITY_STORAGE_MIDDLEWARE } from '@acorex-platform/framework-client/layout/entity';
|
|
8
8
|
import * as i0 from '@angular/core';
|
|
9
|
-
import { inject, Injectable, isDevMode, InjectionToken, NgModule, input, output, viewChild, viewChildren, signal, computed, effect, ChangeDetectionStrategy, Component, DestroyRef, ViewEncapsulation, ViewChild, Injector, afterNextRender, ApplicationRef } from '@angular/core';
|
|
9
|
+
import { inject, Injectable, isDevMode, InjectionToken, NgModule, input, output, viewChild, viewChildren, signal, computed, effect, ChangeDetectionStrategy, Component, Input, DestroyRef, ViewEncapsulation, ViewChild, Injector, afterNextRender, ApplicationRef } from '@angular/core';
|
|
10
10
|
import { AXPLayoutThemeService, AXPMenuVerticalMode } from '@acorex-platform/framework-client/themes/shared';
|
|
11
11
|
import { HttpErrorResponse } from '@angular/common/http';
|
|
12
12
|
import * as i1$6 from '@angular/router';
|
|
@@ -267,12 +267,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
267
267
|
//#region ---- User activity helpers ----
|
|
268
268
|
//#region ---- Constants ----
|
|
269
269
|
const AUTH_USER_ACTIVITY_DEFAULT_WEEKS = 53;
|
|
270
|
+
/** Ignore an older sign-in cluster when the gap to the next newer day exceeds this. */
|
|
271
|
+
const AUTH_USER_ACTIVITY_CLUSTER_GAP_DAYS = 14;
|
|
272
|
+
/** Week / month / quarter / year heatmap windows, smallest first. */
|
|
273
|
+
const AUTH_USER_ACTIVITY_WEEK_PRESETS = [1, 2, 5, 13, 53];
|
|
270
274
|
const LEVEL_THRESHOLDS = [0, 3, 8, 15, 30];
|
|
275
|
+
const MS_PER_DAY = 24 * 60 * 60 * 1000;
|
|
271
276
|
//#endregion
|
|
272
277
|
//#region ---- Date range ----
|
|
278
|
+
function startOfLocalDay(date) {
|
|
279
|
+
const value = new Date(date);
|
|
280
|
+
value.setHours(0, 0, 0, 0);
|
|
281
|
+
return value;
|
|
282
|
+
}
|
|
283
|
+
function calendarDaysBetween(newer, older) {
|
|
284
|
+
return Math.round((startOfLocalDay(newer).getTime() - startOfLocalDay(older).getTime()) / MS_PER_DAY);
|
|
285
|
+
}
|
|
273
286
|
function resolveDefaultUserActivityDateRange(weeksToShow = AUTH_USER_ACTIVITY_DEFAULT_WEEKS, referenceDate = new Date()) {
|
|
274
|
-
const today =
|
|
275
|
-
today.setHours(0, 0, 0, 0);
|
|
287
|
+
const today = startOfLocalDay(referenceDate);
|
|
276
288
|
const endSunday = new Date(today);
|
|
277
289
|
endSunday.setDate(today.getDate() + (6 - today.getDay()));
|
|
278
290
|
const startDate = new Date(endSunday);
|
|
@@ -280,6 +292,80 @@ function resolveDefaultUserActivityDateRange(weeksToShow = AUTH_USER_ACTIVITY_DE
|
|
|
280
292
|
startDate.setHours(0, 0, 0, 0);
|
|
281
293
|
return { startDate, endDate: endSunday };
|
|
282
294
|
}
|
|
295
|
+
function collectUserSignInDays(sessions, userId, lookbackStart, lookbackEnd) {
|
|
296
|
+
const days = new Map();
|
|
297
|
+
const rangeStart = startOfLocalDay(lookbackStart);
|
|
298
|
+
const rangeEnd = startOfLocalDay(lookbackEnd);
|
|
299
|
+
for (const session of sessions) {
|
|
300
|
+
if (session.userId !== userId || session.lastLoginDate == null) {
|
|
301
|
+
continue;
|
|
302
|
+
}
|
|
303
|
+
const day = startOfLocalDay(new Date(session.lastLoginDate));
|
|
304
|
+
if (Number.isNaN(day.getTime()) || day < rangeStart || day > rangeEnd) {
|
|
305
|
+
continue;
|
|
306
|
+
}
|
|
307
|
+
days.set(day.getTime(), day);
|
|
308
|
+
}
|
|
309
|
+
return [...days.values()].sort((left, right) => right.getTime() - left.getTime());
|
|
310
|
+
}
|
|
311
|
+
function resolveRecentSignInCluster(activityDaysNewestFirst, gapDays) {
|
|
312
|
+
if (activityDaysNewestFirst.length === 0) {
|
|
313
|
+
return [];
|
|
314
|
+
}
|
|
315
|
+
const cluster = [activityDaysNewestFirst[0]];
|
|
316
|
+
for (let index = 1; index < activityDaysNewestFirst.length; index += 1) {
|
|
317
|
+
const newer = activityDaysNewestFirst[index - 1];
|
|
318
|
+
const older = activityDaysNewestFirst[index];
|
|
319
|
+
if (calendarDaysBetween(newer, older) > gapDays) {
|
|
320
|
+
break;
|
|
321
|
+
}
|
|
322
|
+
cluster.push(older);
|
|
323
|
+
}
|
|
324
|
+
return cluster;
|
|
325
|
+
}
|
|
326
|
+
function pickWeeksToCoverCluster(oldestDay, referenceDate) {
|
|
327
|
+
const oldest = startOfLocalDay(oldestDay);
|
|
328
|
+
for (const weeks of AUTH_USER_ACTIVITY_WEEK_PRESETS) {
|
|
329
|
+
const { startDate } = resolveDefaultUserActivityDateRange(weeks, referenceDate);
|
|
330
|
+
if (startDate <= oldest) {
|
|
331
|
+
return weeks;
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
return AUTH_USER_ACTIVITY_DEFAULT_WEEKS;
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Auto heatmap window from recent sign-in days.
|
|
338
|
+
* Walks backward from the latest sign-in and drops an older cluster when the gap
|
|
339
|
+
* exceeds {@link AUTH_USER_ACTIVITY_CLUSTER_GAP_DAYS}. Empty users get one week.
|
|
340
|
+
*/
|
|
341
|
+
function resolveSmartUserActivityDateRange(sessions, userId, referenceDate = new Date()) {
|
|
342
|
+
const lookback = resolveDefaultUserActivityDateRange(AUTH_USER_ACTIVITY_DEFAULT_WEEKS, referenceDate);
|
|
343
|
+
const activityDays = collectUserSignInDays(sessions, userId, lookback.startDate, lookback.endDate);
|
|
344
|
+
const cluster = resolveRecentSignInCluster(activityDays, AUTH_USER_ACTIVITY_CLUSTER_GAP_DAYS);
|
|
345
|
+
if (cluster.length === 0) {
|
|
346
|
+
return resolveDefaultUserActivityDateRange(1, referenceDate);
|
|
347
|
+
}
|
|
348
|
+
if (cluster.length === 1) {
|
|
349
|
+
return resolveDayDateRange(cluster[0]);
|
|
350
|
+
}
|
|
351
|
+
const oldest = cluster[cluster.length - 1];
|
|
352
|
+
return resolveDefaultUserActivityDateRange(pickWeeksToCoverCluster(oldest, referenceDate), referenceDate);
|
|
353
|
+
}
|
|
354
|
+
function resolveDayDateRange(day) {
|
|
355
|
+
const startDate = startOfLocalDay(day);
|
|
356
|
+
return { startDate, endDate: new Date(startDate) };
|
|
357
|
+
}
|
|
358
|
+
function resolveUserActivityHeatmapLayout(startDate, endDate) {
|
|
359
|
+
const { rangeStart, rangeEnd } = normalizeDateRange(startDate, endDate);
|
|
360
|
+
const spanDays = calendarDaysBetween(rangeEnd, rangeStart) + 1;
|
|
361
|
+
if (spanDays <= 1) {
|
|
362
|
+
return 'hours';
|
|
363
|
+
}
|
|
364
|
+
if (spanDays <= 35) {
|
|
365
|
+
return 'days';
|
|
366
|
+
}
|
|
367
|
+
return 'calendar';
|
|
368
|
+
}
|
|
283
369
|
//#endregion
|
|
284
370
|
//#region ---- Session aggregation ----
|
|
285
371
|
function normalizeDateRange(startDate, endDate) {
|
|
@@ -320,6 +406,33 @@ function aggregateDailySessionCounts(sessions, params) {
|
|
|
320
406
|
}
|
|
321
407
|
return counts;
|
|
322
408
|
}
|
|
409
|
+
/** Counts sign-in events per local hour from device session rows. */
|
|
410
|
+
function aggregateHourlySessionCounts(sessions, params) {
|
|
411
|
+
const { rangeStart, rangeEnd } = normalizeDateRange(params.startDate, params.endDate);
|
|
412
|
+
const counts = Array.from({ length: 24 }, () => 0);
|
|
413
|
+
for (const session of sessions) {
|
|
414
|
+
if (session.userId !== params.userId || session.lastLoginDate == null) {
|
|
415
|
+
continue;
|
|
416
|
+
}
|
|
417
|
+
const login = new Date(session.lastLoginDate);
|
|
418
|
+
if (Number.isNaN(login.getTime())) {
|
|
419
|
+
continue;
|
|
420
|
+
}
|
|
421
|
+
const day = startOfLocalDay(login);
|
|
422
|
+
if (day < rangeStart || day > rangeEnd) {
|
|
423
|
+
continue;
|
|
424
|
+
}
|
|
425
|
+
counts[login.getHours()] += 1;
|
|
426
|
+
}
|
|
427
|
+
return counts;
|
|
428
|
+
}
|
|
429
|
+
function buildUserActivityHours(hourlyCounts) {
|
|
430
|
+
return hourlyCounts.map((count, hour) => ({
|
|
431
|
+
hour,
|
|
432
|
+
count,
|
|
433
|
+
level: countToActivityLevel(count),
|
|
434
|
+
}));
|
|
435
|
+
}
|
|
323
436
|
//#endregion
|
|
324
437
|
//#region ---- Week grid ----
|
|
325
438
|
function countToActivityLevel(count) {
|
|
@@ -395,12 +508,16 @@ function computeUserActivityStats(weeks) {
|
|
|
395
508
|
function buildUserActivityDataSourceItem(params, sessions) {
|
|
396
509
|
const dailyCounts = aggregateDailySessionCounts(sessions, params);
|
|
397
510
|
const weeks = buildUserActivityWeeks(params, dailyCounts);
|
|
511
|
+
const layout = resolveUserActivityHeatmapLayout(params.startDate, params.endDate);
|
|
512
|
+
const hours = layout === 'hours' ? buildUserActivityHours(aggregateHourlySessionCounts(sessions, params)) : [];
|
|
398
513
|
return {
|
|
399
514
|
id: `${params.userId}:${toIsoDate(params.startDate)}:${toIsoDate(params.endDate)}`,
|
|
400
515
|
userId: params.userId,
|
|
401
516
|
startDate: toIsoDate(params.startDate),
|
|
402
517
|
endDate: toIsoDate(params.endDate),
|
|
518
|
+
layout,
|
|
403
519
|
weeks,
|
|
520
|
+
hours,
|
|
404
521
|
stats: computeUserActivityStats(weeks),
|
|
405
522
|
};
|
|
406
523
|
}
|
|
@@ -877,17 +994,17 @@ const routes = [
|
|
|
877
994
|
},
|
|
878
995
|
{
|
|
879
996
|
path: '',
|
|
880
|
-
loadComponent: () => import('./acorex-platform-module-auth-client-master.layout-
|
|
881
|
-
loadChildren: () => import('./acorex-platform-module-auth-client-login.module-
|
|
997
|
+
loadComponent: () => import('./acorex-platform-module-auth-client-master.layout-Cu8mQN9B.mjs').then((c) => c.AXPAuthMasterLayoutComponent),
|
|
998
|
+
loadChildren: () => import('./acorex-platform-module-auth-client-login.module-uRv9Gwea.mjs').then((c) => c.AXPSignInModule),
|
|
882
999
|
},
|
|
883
1000
|
{
|
|
884
1001
|
path: '',
|
|
885
|
-
loadComponent: () => import('./acorex-platform-module-auth-client-master.layout-
|
|
886
|
-
loadChildren: () => import('./acorex-platform-module-auth-client-two-factor.module-
|
|
1002
|
+
loadComponent: () => import('./acorex-platform-module-auth-client-master.layout-Cu8mQN9B.mjs').then((c) => c.AXPAuthMasterLayoutComponent),
|
|
1003
|
+
loadChildren: () => import('./acorex-platform-module-auth-client-two-factor.module-BnH72Bob.mjs').then((c) => c.AXPTwoFactorModule),
|
|
887
1004
|
},
|
|
888
1005
|
{
|
|
889
1006
|
path: '',
|
|
890
|
-
loadComponent: () => import('./acorex-platform-module-auth-client-master.layout-
|
|
1007
|
+
loadComponent: () => import('./acorex-platform-module-auth-client-master.layout-Cu8mQN9B.mjs').then((c) => c.AXPAuthMasterLayoutComponent),
|
|
891
1008
|
loadChildren: () => import('./acorex-platform-module-auth-client-routes-IX2qmeqU.mjs').then((c) => c),
|
|
892
1009
|
},
|
|
893
1010
|
{
|
|
@@ -901,8 +1018,8 @@ const routes = [
|
|
|
901
1018
|
},
|
|
902
1019
|
{
|
|
903
1020
|
path: '',
|
|
904
|
-
loadComponent: () => import('./acorex-platform-module-auth-client-master.layout-
|
|
905
|
-
loadChildren: () => import('./acorex-platform-module-auth-client-register.module-
|
|
1021
|
+
loadComponent: () => import('./acorex-platform-module-auth-client-master.layout-Cu8mQN9B.mjs').then((c) => c.AXPAuthMasterLayoutComponent),
|
|
1022
|
+
loadChildren: () => import('./acorex-platform-module-auth-client-register.module-DCWoPb0u.mjs').then((c) => c.AXPRegisterModule),
|
|
906
1023
|
},
|
|
907
1024
|
],
|
|
908
1025
|
},
|
|
@@ -1104,6 +1221,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
1104
1221
|
class AXMAppChooserSlotComponent {
|
|
1105
1222
|
constructor() {
|
|
1106
1223
|
this.sessionService = inject(AXPSessionService);
|
|
1224
|
+
this.themeStore = inject(AXPLayoutThemeService);
|
|
1107
1225
|
this.applications$ = this.sessionService.applications$;
|
|
1108
1226
|
this.appPopover = viewChild('appPopover', /* @ts-ignore */
|
|
1109
1227
|
...(ngDevMode ? [{ debugName: "appPopover" }] : /* istanbul ignore next */ []));
|
|
@@ -1112,11 +1230,11 @@ class AXMAppChooserSlotComponent {
|
|
|
1112
1230
|
this.appPopover()?.close();
|
|
1113
1231
|
}
|
|
1114
1232
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMAppChooserSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1115
|
-
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=\"
|
|
1233
|
+
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", "size", "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", "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: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
|
|
1116
1234
|
}
|
|
1117
1235
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMAppChooserSlotComponent, decorators: [{
|
|
1118
1236
|
type: Component,
|
|
1119
|
-
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=\"
|
|
1237
|
+
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" }]
|
|
1120
1238
|
}], propDecorators: { appPopover: [{ type: i0.ViewChild, args: ['appPopover', { isSignal: true }] }] } });
|
|
1121
1239
|
|
|
1122
1240
|
class AXPTenantChooserListComponent {
|
|
@@ -1318,6 +1436,7 @@ class AXPTenantChooserDropdownComponent {
|
|
|
1318
1436
|
constructor() {
|
|
1319
1437
|
//#region ----- Services & Dependencies -----
|
|
1320
1438
|
this.sessionService = inject(AXPSessionService);
|
|
1439
|
+
this.router = inject(Router);
|
|
1321
1440
|
//#endregion
|
|
1322
1441
|
//#region ----- State Signals -----
|
|
1323
1442
|
this.tenants$ = this.sessionService.tenants$;
|
|
@@ -1326,6 +1445,13 @@ class AXPTenantChooserDropdownComponent {
|
|
|
1326
1445
|
...(ngDevMode ? [{ debugName: "tenantsLoading" }] : /* istanbul ignore next */ []));
|
|
1327
1446
|
this.tenantPopover = viewChild('tenantPopover', /* @ts-ignore */
|
|
1328
1447
|
...(ngDevMode ? [{ debugName: "tenantPopover" }] : /* istanbul ignore next */ []));
|
|
1448
|
+
//#endregion
|
|
1449
|
+
//#region ----- Inputs -----
|
|
1450
|
+
/**
|
|
1451
|
+
* When true, renders a plain inline tenant text (no popover).
|
|
1452
|
+
* When multiple tenants are available, the text is clickable.
|
|
1453
|
+
*/
|
|
1454
|
+
this.inline = false;
|
|
1329
1455
|
}
|
|
1330
1456
|
//#endregion
|
|
1331
1457
|
//#region ----- Lifecycle -----
|
|
@@ -1339,8 +1465,12 @@ class AXPTenantChooserDropdownComponent {
|
|
|
1339
1465
|
closePopover() {
|
|
1340
1466
|
this.tenantPopover()?.close();
|
|
1341
1467
|
}
|
|
1468
|
+
openTenantChooser() {
|
|
1469
|
+
// Route registered in `AXPAccountModule` as `/auth/account/tenant-chooser`.
|
|
1470
|
+
void this.router.navigate(['/auth/account/tenant-chooser']);
|
|
1471
|
+
}
|
|
1342
1472
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPTenantChooserDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1343
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPTenantChooserDropdownComponent, isStandalone: true, selector: "axp-tenant-chooser-dropdown", 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 (tenants.length > 1) {\n <ax-button\n
|
|
1473
|
+
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\n class=\"bg-lightest border overflow-hidden rounded-md shadow-md w-full min-w-64 p-1\"\n >\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 class=\"ax-sm\"\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\n class=\"bg-lightest border overflow-hidden rounded-md shadow-md w-full min-w-64 p-1\"\n >\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", "size", "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", "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: i1$2.AXSkeletonComponent, selector: "ax-skeleton", inputs: ["animated"] }, { kind: "component", type: AXPTenantChooserListComponent, selector: "axp-tenant-chooser-list", inputs: ["simple"], outputs: ["tenantChosen", "loadingChange"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i5$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
|
|
1344
1474
|
}
|
|
1345
1475
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPTenantChooserDropdownComponent, decorators: [{
|
|
1346
1476
|
type: Component,
|
|
@@ -1352,8 +1482,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
1352
1482
|
AXDecoratorModule,
|
|
1353
1483
|
AXSkeletonModule,
|
|
1354
1484
|
AXPTenantChooserListComponent,
|
|
1355
|
-
], 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 (tenants.length > 1) {\n <ax-button\n
|
|
1356
|
-
}], propDecorators: { tenantPopover: [{ type: i0.ViewChild, args: ['tenantPopover', { isSignal: true }] }]
|
|
1485
|
+
], 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\n class=\"bg-lightest border overflow-hidden rounded-md shadow-md w-full min-w-64 p-1\"\n >\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 class=\"ax-sm\"\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\n class=\"bg-lightest border overflow-hidden rounded-md shadow-md w-full min-w-64 p-1\"\n >\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" }]
|
|
1486
|
+
}], propDecorators: { tenantPopover: [{ type: i0.ViewChild, args: ['tenantPopover', { isSignal: true }] }], inline: [{
|
|
1487
|
+
type: Input
|
|
1488
|
+
}] } });
|
|
1357
1489
|
|
|
1358
1490
|
//#region ---- Profile slot menu hook ----
|
|
1359
1491
|
const PROFILE_SLOT_MENU_ITEMS_HOOK = 'profile-slot.menu-items';
|
|
@@ -1486,7 +1618,7 @@ class AXMAuthProfileSlotComponent {
|
|
|
1486
1618
|
// AXKBDItemComponent,
|
|
1487
1619
|
AXLoadingModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXPUserAvatarComponent, selector: "axp-user-avatar", inputs: ["size", "userId", "showPresence", "displayName", "displayAvatar"] }, { kind: "component", type:
|
|
1488
1620
|
//
|
|
1489
|
-
AXPTenantChooserDropdownComponent, selector: "axp-tenant-chooser-dropdown" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i5$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1621
|
+
AXPTenantChooserDropdownComponent, selector: "axp-tenant-chooser-dropdown", inputs: ["inline"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i5$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1490
1622
|
}
|
|
1491
1623
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMAuthProfileSlotComponent, decorators: [{
|
|
1492
1624
|
type: Component,
|
|
@@ -1521,6 +1653,10 @@ class AXMUserProfileCardSlotComponent {
|
|
|
1521
1653
|
return this.themeStore.effectiveMenuVerticalMode() === AXPMenuVerticalMode.Compact;
|
|
1522
1654
|
}, /* @ts-ignore */
|
|
1523
1655
|
...(ngDevMode ? [{ debugName: "isCompactMode" }] : /* istanbul ignore next */ []));
|
|
1656
|
+
this.isMenuDark = computed(() => this.themeStore.menuDarkEnabled() ||
|
|
1657
|
+
(this.themeStore.menuAppearance() === 'brand-light' &&
|
|
1658
|
+
this.themeStore.isDarkMode()), /* @ts-ignore */
|
|
1659
|
+
...(ngDevMode ? [{ debugName: "isMenuDark" }] : /* istanbul ignore next */ []));
|
|
1524
1660
|
this.hasPicture = signal(true, /* @ts-ignore */
|
|
1525
1661
|
...(ngDevMode ? [{ debugName: "hasPicture" }] : /* istanbul ignore next */ []));
|
|
1526
1662
|
this.avatarText = signal('', /* @ts-ignore */
|
|
@@ -1532,8 +1668,8 @@ class AXMUserProfileCardSlotComponent {
|
|
|
1532
1668
|
this.getAvatarText = () => {
|
|
1533
1669
|
this.user$.pipe(first()).subscribe((user) => {
|
|
1534
1670
|
const names = user?.title.split(' ');
|
|
1535
|
-
if (names?.length && names?.
|
|
1536
|
-
this.avatarText.set(
|
|
1671
|
+
if (names?.length && names[0]?.[0]) {
|
|
1672
|
+
this.avatarText.set(names[0][0].toUpperCase());
|
|
1537
1673
|
}
|
|
1538
1674
|
else
|
|
1539
1675
|
return this.avatarText.set('AC');
|
|
@@ -1578,11 +1714,11 @@ class AXMUserProfileCardSlotComponent {
|
|
|
1578
1714
|
}
|
|
1579
1715
|
}
|
|
1580
1716
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMUserProfileCardSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1581
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMUserProfileCardSlotComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "profilePopover", first: true, predicate: ["profilePopover"], descendants: true }], ngImport: i0, template: "@if((isAuthenticated$ | async)) {\n<div
|
|
1717
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMUserProfileCardSlotComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "profilePopover", first: true, predicate: ["profilePopover"], descendants: true }], ngImport: i0, template: "@if((isAuthenticated$ | async)) {\n<div\n class=\"p-3 flex items-center gap-1 border-b\"\n [class.border-white/7]=\"isMenuDark()\"\n [class.border-black/7]=\"!isMenuDark()\"\n [class.justify-center]=\"isCompactMode()\"\n>\n <div #avatar>\n <axp-user-avatar\n [size]=\"48\"\n [userId]=\"$safeNavigationMigration((user$ | async)?.id)!\"\n [showPresence]=\"false\"\n ></axp-user-avatar>\n </div>\n @if (!isCompactMode()) {\n <div class=\"flex flex-col\">\n <ax-title class=\"text-sm font-medium px-3\">{{ (user$ | async)?.title }}</ax-title>\n <axp-tenant-chooser-dropdown [inline]=\"true\" />\n </div>\n }\n</div>\n}\n", dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type:
|
|
1582
1718
|
//
|
|
1583
1719
|
AXImageModule }, { kind: "ngmodule", type: AXAvatarModule }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "ngmodule", type: AXDecoratorModule }, { 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: AXLoadingModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type:
|
|
1584
1720
|
//
|
|
1585
|
-
AXPTenantChooserDropdownComponent, selector: "axp-tenant-chooser-dropdown" }, { kind: "component", type: AXPUserAvatarComponent, selector: "axp-user-avatar", inputs: ["size", "userId", "showPresence", "displayName", "displayAvatar"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
|
|
1721
|
+
AXPTenantChooserDropdownComponent, selector: "axp-tenant-chooser-dropdown", inputs: ["inline"] }, { kind: "component", type: AXPUserAvatarComponent, selector: "axp-user-avatar", inputs: ["size", "userId", "showPresence", "displayName", "displayAvatar"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
|
|
1586
1722
|
}
|
|
1587
1723
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMUserProfileCardSlotComponent, decorators: [{
|
|
1588
1724
|
type: Component,
|
|
@@ -1600,7 +1736,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
1600
1736
|
AXPTenantChooserDropdownComponent,
|
|
1601
1737
|
AsyncPipe,
|
|
1602
1738
|
AXPUserAvatarComponent,
|
|
1603
|
-
], template: "@if((isAuthenticated$ | async)) {\n<div
|
|
1739
|
+
], template: "@if((isAuthenticated$ | async)) {\n<div\n class=\"p-3 flex items-center gap-1 border-b\"\n [class.border-white/7]=\"isMenuDark()\"\n [class.border-black/7]=\"!isMenuDark()\"\n [class.justify-center]=\"isCompactMode()\"\n>\n <div #avatar>\n <axp-user-avatar\n [size]=\"48\"\n [userId]=\"$safeNavigationMigration((user$ | async)?.id)!\"\n [showPresence]=\"false\"\n ></axp-user-avatar>\n </div>\n @if (!isCompactMode()) {\n <div class=\"flex flex-col\">\n <ax-title class=\"text-sm font-medium px-3\">{{ (user$ | async)?.title }}</ax-title>\n <axp-tenant-chooser-dropdown [inline]=\"true\" />\n </div>\n }\n</div>\n}\n" }]
|
|
1604
1740
|
}], ctorParameters: () => [], propDecorators: { profilePopover: [{
|
|
1605
1741
|
type: ViewChild,
|
|
1606
1742
|
args: ['profilePopover']
|
|
@@ -1778,12 +1914,12 @@ function routesFacory() {
|
|
|
1778
1914
|
routes = [
|
|
1779
1915
|
{
|
|
1780
1916
|
path: 'tenant-chooser',
|
|
1781
|
-
loadComponent: () => import('./acorex-platform-module-auth-client-tenant-chooser.component-
|
|
1917
|
+
loadComponent: () => import('./acorex-platform-module-auth-client-tenant-chooser.component-1Kv-LGZc.mjs').then((c) => c.AXPAuthTenantChooserComponent),
|
|
1782
1918
|
canActivate: [AXPAuthGuard, canActivateTenantChooser],
|
|
1783
1919
|
},
|
|
1784
1920
|
{
|
|
1785
1921
|
path: 'app-chooser',
|
|
1786
|
-
loadComponent: () => import('./acorex-platform-module-auth-client-app-chooser.component-
|
|
1922
|
+
loadComponent: () => import('./acorex-platform-module-auth-client-app-chooser.component-BfOgjNxw.mjs').then((c) => c.AXPAuthAppChooserComponent),
|
|
1787
1923
|
canActivate: [AXPAuthGuard, canActivateAppChooser],
|
|
1788
1924
|
},
|
|
1789
1925
|
];
|
|
@@ -1791,7 +1927,7 @@ function routesFacory() {
|
|
|
1791
1927
|
}
|
|
1792
1928
|
class AXPAccountModule {
|
|
1793
1929
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPAccountModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1794
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXPAccountModule, imports: [
|
|
1930
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXPAccountModule, imports: [i1$4.AXPComponentSlotModule] }); }
|
|
1795
1931
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPAccountModule, providers: [
|
|
1796
1932
|
{
|
|
1797
1933
|
provide: ROUTES,
|
|
@@ -1802,9 +1938,7 @@ class AXPAccountModule {
|
|
|
1802
1938
|
provide: AXMUserDeviceSessionsService,
|
|
1803
1939
|
useClass: AXMUserDeviceSessionsServiceImp,
|
|
1804
1940
|
},
|
|
1805
|
-
], imports: [
|
|
1806
|
-
//
|
|
1807
|
-
AXPComponentSlotModule.forChild({
|
|
1941
|
+
], imports: [AXPComponentSlotModule.forChild({
|
|
1808
1942
|
'root-side-menu-header': [
|
|
1809
1943
|
{
|
|
1810
1944
|
priority: 1,
|
|
@@ -1831,8 +1965,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
1831
1965
|
args: [{
|
|
1832
1966
|
declarations: [],
|
|
1833
1967
|
imports: [
|
|
1834
|
-
RouterModule,
|
|
1835
|
-
//
|
|
1836
1968
|
AXPComponentSlotModule.forChild({
|
|
1837
1969
|
'root-side-menu-header': [
|
|
1838
1970
|
{
|
|
@@ -2175,7 +2307,7 @@ class AXPIdleLockService {
|
|
|
2175
2307
|
this.overlayOpening = true;
|
|
2176
2308
|
this.locked.set(true);
|
|
2177
2309
|
try {
|
|
2178
|
-
const { AXMSessionLockOverlayComponent: overlayComponent } = await import('./acorex-platform-module-auth-client-session-lock-overlay.component-
|
|
2310
|
+
const { AXMSessionLockOverlayComponent: overlayComponent } = await import('./acorex-platform-module-auth-client-session-lock-overlay.component-3HJEmCYI.mjs');
|
|
2179
2311
|
const panelClasses = ['axm-session-lock-overlay-shell'];
|
|
2180
2312
|
if (this.platform.isDark()) {
|
|
2181
2313
|
panelClasses.push('ax-dark');
|
|
@@ -2489,6 +2621,7 @@ const CoreProfileSectionsHookProvider = {
|
|
|
2489
2621
|
id: 'delete-account',
|
|
2490
2622
|
groupId: 'account',
|
|
2491
2623
|
priority: 100,
|
|
2624
|
+
feature: AXPSecurityManagementFeatureKeys.DeleteAccount,
|
|
2492
2625
|
content: {
|
|
2493
2626
|
mode: 'component',
|
|
2494
2627
|
componentKey: PROFILE_DELETE_ACCOUNT_DANGER_ZONE_COMPONENT_KEY,
|
|
@@ -2998,7 +3131,7 @@ const userAvatarCacheRefreshMiddleware = {
|
|
|
2998
3131
|
//#endregion
|
|
2999
3132
|
|
|
3000
3133
|
function profileRoutesFactory() {
|
|
3001
|
-
const loadProfilePage = () => import('./acorex-platform-module-auth-client-profile-page.component-
|
|
3134
|
+
const loadProfilePage = () => import('./acorex-platform-module-auth-client-profile-page.component-w2SYmCyc.mjs').then((c) => c.AXMUserProfilePageComponent);
|
|
3002
3135
|
return [
|
|
3003
3136
|
{
|
|
3004
3137
|
path: ':app/profile',
|
|
@@ -3114,11 +3247,11 @@ class AXMAuthModule {
|
|
|
3114
3247
|
AXMAuthErrorHandler,
|
|
3115
3248
|
provideLazyProvider(AXP_MENU_PROVIDER, () => import('./acorex-platform-module-auth-client-menu.provider-Bz-kRip4.mjs').then(m => m.AXMSecurityManagementModuleMenuProvider)),
|
|
3116
3249
|
provideLazyProvider(AXP_SETTING_DEFINITION_PROVIDER, () => import('./acorex-platform-module-auth-client-settings.provider-Yaoz8yp3.mjs').then(m => m.AXMSettingProvider)),
|
|
3117
|
-
provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-platform-module-auth-client-profile-page-component.provider-
|
|
3250
|
+
provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-platform-module-auth-client-profile-page-component.provider-Bz1mdVCM.mjs').then((module) => module.AXMProfilePageComponentProvider)),
|
|
3118
3251
|
provideQuerySetups([
|
|
3119
3252
|
{
|
|
3120
3253
|
key: 'Auth:GetUserActivity',
|
|
3121
|
-
loader: () => import('./acorex-platform-module-auth-client-get-user-activity.query-
|
|
3254
|
+
loader: () => import('./acorex-platform-module-auth-client-get-user-activity.query-D9fyLuBy.mjs').then((c) => c.AXMGetUserActivityQuery),
|
|
3122
3255
|
},
|
|
3123
3256
|
]),
|
|
3124
3257
|
{
|
|
@@ -3142,15 +3275,15 @@ class AXMAuthModule {
|
|
|
3142
3275
|
},
|
|
3143
3276
|
{
|
|
3144
3277
|
key: AXMAuthCommandKeys.Session.OpenSessions,
|
|
3145
|
-
command: () => import('./acorex-platform-module-auth-client-open-sessions.command-
|
|
3278
|
+
command: () => import('./acorex-platform-module-auth-client-open-sessions.command-BlPxfa3v.mjs').then((c) => c.AXPOpenSessionsCommand),
|
|
3146
3279
|
},
|
|
3147
3280
|
{
|
|
3148
3281
|
key: AXMAuthCommandKeys.Session.LockScreen,
|
|
3149
|
-
command: () => import('./acorex-platform-module-auth-client-lock-screen.command-
|
|
3282
|
+
command: () => import('./acorex-platform-module-auth-client-lock-screen.command-DUZ255VK.mjs').then((c) => c.AXPLockScreenCommand),
|
|
3150
3283
|
},
|
|
3151
3284
|
{
|
|
3152
3285
|
key: AXMAuthCommandKeys.Profile.ChangePhoto,
|
|
3153
|
-
command: () => import('./acorex-platform-module-auth-client-change-photo.command-
|
|
3286
|
+
command: () => import('./acorex-platform-module-auth-client-change-photo.command-DfHUPj7p.mjs').then((c) => c.AXPChangePhotoCommand),
|
|
3154
3287
|
},
|
|
3155
3288
|
{
|
|
3156
3289
|
key: AXMAuthCommandKeys.Profile.EditAccountInfo,
|
|
@@ -3158,19 +3291,19 @@ class AXMAuthModule {
|
|
|
3158
3291
|
},
|
|
3159
3292
|
{
|
|
3160
3293
|
key: AXMAuthCommandKeys.Security.ChangePassword,
|
|
3161
|
-
command: () => import('./acorex-platform-module-auth-client-change-password.command-
|
|
3294
|
+
command: () => import('./acorex-platform-module-auth-client-change-password.command-BcBbN5hX.mjs').then((c) => c.AXPChangePasswordCommand),
|
|
3162
3295
|
},
|
|
3163
3296
|
{
|
|
3164
3297
|
key: AXMAuthCommandKeys.Security.SetPinCode,
|
|
3165
|
-
command: () => import('./acorex-platform-module-auth-client-set-pin-code.command-
|
|
3298
|
+
command: () => import('./acorex-platform-module-auth-client-set-pin-code.command-C2kCGuQW.mjs').then((c) => c.AXPSetPinCodeCommand),
|
|
3166
3299
|
},
|
|
3167
3300
|
{
|
|
3168
3301
|
key: AXMAuthCommandKeys.Security.RemovePinCode,
|
|
3169
|
-
command: () => import('./acorex-platform-module-auth-client-remove-pin-code.command-
|
|
3302
|
+
command: () => import('./acorex-platform-module-auth-client-remove-pin-code.command-DJeSHCLL.mjs').then((c) => c.AXPRemovePinCodeCommand),
|
|
3170
3303
|
},
|
|
3171
3304
|
{
|
|
3172
3305
|
key: AXMAuthCommandKeys.Security.ViewLoginHistory,
|
|
3173
|
-
command: () => import('./acorex-platform-module-auth-client-view-login-history.command-
|
|
3306
|
+
command: () => import('./acorex-platform-module-auth-client-view-login-history.command-C_T4l61M.mjs').then((c) => c.AXPViewLoginHistoryCommand),
|
|
3174
3307
|
},
|
|
3175
3308
|
{
|
|
3176
3309
|
key: AXMAuthCommandKeys.Security.EditSignature,
|
|
@@ -3323,11 +3456,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
3323
3456
|
AXMAuthErrorHandler,
|
|
3324
3457
|
provideLazyProvider(AXP_MENU_PROVIDER, () => import('./acorex-platform-module-auth-client-menu.provider-Bz-kRip4.mjs').then(m => m.AXMSecurityManagementModuleMenuProvider)),
|
|
3325
3458
|
provideLazyProvider(AXP_SETTING_DEFINITION_PROVIDER, () => import('./acorex-platform-module-auth-client-settings.provider-Yaoz8yp3.mjs').then(m => m.AXMSettingProvider)),
|
|
3326
|
-
provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-platform-module-auth-client-profile-page-component.provider-
|
|
3459
|
+
provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-platform-module-auth-client-profile-page-component.provider-Bz1mdVCM.mjs').then((module) => module.AXMProfilePageComponentProvider)),
|
|
3327
3460
|
provideQuerySetups([
|
|
3328
3461
|
{
|
|
3329
3462
|
key: 'Auth:GetUserActivity',
|
|
3330
|
-
loader: () => import('./acorex-platform-module-auth-client-get-user-activity.query-
|
|
3463
|
+
loader: () => import('./acorex-platform-module-auth-client-get-user-activity.query-D9fyLuBy.mjs').then((c) => c.AXMGetUserActivityQuery),
|
|
3331
3464
|
},
|
|
3332
3465
|
]),
|
|
3333
3466
|
{
|
|
@@ -3351,15 +3484,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
3351
3484
|
},
|
|
3352
3485
|
{
|
|
3353
3486
|
key: AXMAuthCommandKeys.Session.OpenSessions,
|
|
3354
|
-
command: () => import('./acorex-platform-module-auth-client-open-sessions.command-
|
|
3487
|
+
command: () => import('./acorex-platform-module-auth-client-open-sessions.command-BlPxfa3v.mjs').then((c) => c.AXPOpenSessionsCommand),
|
|
3355
3488
|
},
|
|
3356
3489
|
{
|
|
3357
3490
|
key: AXMAuthCommandKeys.Session.LockScreen,
|
|
3358
|
-
command: () => import('./acorex-platform-module-auth-client-lock-screen.command-
|
|
3491
|
+
command: () => import('./acorex-platform-module-auth-client-lock-screen.command-DUZ255VK.mjs').then((c) => c.AXPLockScreenCommand),
|
|
3359
3492
|
},
|
|
3360
3493
|
{
|
|
3361
3494
|
key: AXMAuthCommandKeys.Profile.ChangePhoto,
|
|
3362
|
-
command: () => import('./acorex-platform-module-auth-client-change-photo.command-
|
|
3495
|
+
command: () => import('./acorex-platform-module-auth-client-change-photo.command-DfHUPj7p.mjs').then((c) => c.AXPChangePhotoCommand),
|
|
3363
3496
|
},
|
|
3364
3497
|
{
|
|
3365
3498
|
key: AXMAuthCommandKeys.Profile.EditAccountInfo,
|
|
@@ -3367,19 +3500,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
3367
3500
|
},
|
|
3368
3501
|
{
|
|
3369
3502
|
key: AXMAuthCommandKeys.Security.ChangePassword,
|
|
3370
|
-
command: () => import('./acorex-platform-module-auth-client-change-password.command-
|
|
3503
|
+
command: () => import('./acorex-platform-module-auth-client-change-password.command-BcBbN5hX.mjs').then((c) => c.AXPChangePasswordCommand),
|
|
3371
3504
|
},
|
|
3372
3505
|
{
|
|
3373
3506
|
key: AXMAuthCommandKeys.Security.SetPinCode,
|
|
3374
|
-
command: () => import('./acorex-platform-module-auth-client-set-pin-code.command-
|
|
3507
|
+
command: () => import('./acorex-platform-module-auth-client-set-pin-code.command-C2kCGuQW.mjs').then((c) => c.AXPSetPinCodeCommand),
|
|
3375
3508
|
},
|
|
3376
3509
|
{
|
|
3377
3510
|
key: AXMAuthCommandKeys.Security.RemovePinCode,
|
|
3378
|
-
command: () => import('./acorex-platform-module-auth-client-remove-pin-code.command-
|
|
3511
|
+
command: () => import('./acorex-platform-module-auth-client-remove-pin-code.command-DJeSHCLL.mjs').then((c) => c.AXPRemovePinCodeCommand),
|
|
3379
3512
|
},
|
|
3380
3513
|
{
|
|
3381
3514
|
key: AXMAuthCommandKeys.Security.ViewLoginHistory,
|
|
3382
|
-
command: () => import('./acorex-platform-module-auth-client-view-login-history.command-
|
|
3515
|
+
command: () => import('./acorex-platform-module-auth-client-view-login-history.command-C_T4l61M.mjs').then((c) => c.AXPViewLoginHistoryCommand),
|
|
3383
3516
|
},
|
|
3384
3517
|
{
|
|
3385
3518
|
key: AXMAuthCommandKeys.Security.EditSignature,
|
|
@@ -3502,5 +3635,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
3502
3635
|
* Generated bundle index. Do not edit.
|
|
3503
3636
|
*/
|
|
3504
3637
|
|
|
3505
|
-
export { AXMUserDeviceSessionsService as A,
|
|
3506
|
-
//# sourceMappingURL=acorex-platform-module-auth-client-acorex-platform-module-auth-client-
|
|
3638
|
+
export { resolveDayDateRange as $, AXMUserDeviceSessionsService as A, AXPLoginExternalProvidersComponent as B, CHANGE_PASSWORD_SECTION_ID as C, AXMAuthenticationTypes as D, AUTH_LOGIN_EXTERNAL_PROVIDERS_SLOT as E, AUTH_USER_ACTIVITY_CLUSTER_GAP_DAYS as F, AUTH_USER_ACTIVITY_DEFAULT_WEEKS as G, AUTH_USER_ACTIVITY_WEEK_PRESETS as H, AXMAuthErrorHandler as I, AXMAuthModule as J, AXMDefaultAuthConfigs as K, AXM_AUTH_CONFIG_TOKEN as L, aggregateDailySessionCounts as M, aggregateHourlySessionCounts as N, buildUserActivityHours as O, PROFILE_PAGE_GROUPS_HOOK as P, buildUserActivityWeeks as Q, canActivateLogin as R, computeUserActivityStats as S, configAuthModule as T, countToActivityLevel as U, extractUserActivityEndDate as V, extractUserActivityStartDate as W, extractUserActivityUserId as X, isUserProfileGroupComponent as Y, isUserProfileSectionsGroupRequested as Z, parseAuthCredentialType as _, PROFILE_PAGE_SECTIONS_HOOK as a, resolveUserActivityHeatmapLayout as a0, 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, AXPLoginHistoryService as s, AXMAuthPlatformSettingsService as t, AXM_LOGIN_GUARD_TOKEN as u, visibleUserProfileSectionActions as v, AXPTenantChooserListComponent as w, AXPTenantChooserDropdownComponent as x, AXPAppChooserListComponent as y, formatCompactActivityCount as z };
|
|
3639
|
+
//# sourceMappingURL=acorex-platform-module-auth-client-acorex-platform-module-auth-client-CPmffSrQ.mjs.map
|