@flusys/ng-auth 7.1.0 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/flusys-ng-auth.mjs +924 -283
- package/fesm2022/flusys-ng-auth.mjs.map +1 -1
- package/package.json +5 -5
- package/types/flusys-ng-auth.d.ts +107 -14
|
@@ -1,20 +1,18 @@
|
|
|
1
1
|
import { HttpClient } from '@angular/common/http';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { inject,
|
|
3
|
+
import { inject, Service, signal, computed, effect, PLATFORM_ID, InjectionToken, Component, input, output, untracked, viewChild, DestroyRef, DOCUMENT, Injector, resource, makeStateKey, TransferState } from '@angular/core';
|
|
4
4
|
import { APP_CONFIG, getServiceUrl, isCompanyFeatureEnabled, isServiceEnabled, isSignUpEnabled, getPermissionMode, getDefaultCompanySlug, getDefaultBranchSlug } from '@flusys/ng-core';
|
|
5
|
-
import { of, timeout, switchMap, map, tap, catchError, shareReplay, finalize, BehaviorSubject, throwError, filter, take, from,
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
8
|
-
import { PlatformService, TranslateService, PermissionValidatorService, ApiResourceService, CookieService, USER_PERMISSIONS, COMPANY_PERMISSIONS, BRANCH_PERMISSIONS, SOCIAL_AUTH_CONFIG_PERMISSIONS, resolveTranslationModule, SHARED_MESSAGES, permissionGuard, USER_PROVIDER, COMPANY_API_PROVIDER, USER_PERMISSION_PROVIDER, AUTH_STATE_PROVIDER, RouterTabsComponent, TranslatePipe, AngularModule, HasPermissionDirective, BaseFormComponent, BaseListComponent, BaseListTemplateDirective, FileUrlService, FILE_PROVIDER, PROFILE_PERMISSION_PROVIDER, FileUploaderComponent } from '@flusys/ng-shared';
|
|
5
|
+
import { of, timeout, switchMap, map, tap, catchError, shareReplay, finalize, BehaviorSubject, throwError, filter, take, from, firstValueFrom, forkJoin } from 'rxjs';
|
|
6
|
+
import { Router, RouterOutlet, ActivatedRoute, RouterLink } from '@angular/router';
|
|
7
|
+
import { PlatformService, PermissionValidatorService, ApiResourceService, CookieService, TranslateService, USER_PERMISSIONS, COMPANY_PERMISSIONS, BRANCH_PERMISSIONS, SOCIAL_AUTH_CONFIG_PERMISSIONS, resolveTranslationModule, SHARED_MESSAGES, permissionGuard, USER_PROVIDER, COMPANY_API_PROVIDER, USER_PERMISSION_PROVIDER, AUTH_STATE_PROVIDER, RouterTabsComponent, TranslatePipe, HasPermissionDirective, BaseFormComponent, BaseListComponent, BaseListTemplateDirective, FileUrlService, FILE_PROVIDER, PROFILE_PERMISSION_PROVIDER, FileUploaderComponent } from '@flusys/ng-shared';
|
|
9
8
|
import { map as map$1, catchError as catchError$1, tap as tap$1 } from 'rxjs/operators';
|
|
10
|
-
import
|
|
11
|
-
import {
|
|
12
|
-
import * as i1$1 from '@flusys/ng-ui';
|
|
13
|
-
import { MessageService, UiModule, ConfirmationService } from '@flusys/ng-ui';
|
|
9
|
+
import { isPlatformBrowser, NgComponentOutlet, NgTemplateOutlet } from '@angular/common';
|
|
10
|
+
import { MessageService, CardComponent, CheckboxComponent, FButtonDirective, InputTextDirective, SelectComponent, UiIconComponent, ConfirmationService, DialogComponent, ProgressSpinnerComponent, TooltipDirective, TableComponent, TagComponent, PasswordComponent, AvatarComponent, SkeletonComponent, TextareaDirective, ToggleSwitchComponent } from '@flusys/ng-ui';
|
|
14
11
|
import { LAYOUT_AUTH_STATE, LAYOUT_AUTH_API, AppFloatingConfigurator } from '@flusys/ng-layout';
|
|
15
12
|
import { toSignal, takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
16
13
|
import { form, required, FormField, email, minLength } from '@angular/forms/signals';
|
|
17
14
|
import * as i1 from '@angular/forms';
|
|
15
|
+
import { FormsModule } from '@angular/forms';
|
|
18
16
|
|
|
19
17
|
var SocialProviderEnum;
|
|
20
18
|
(function (SocialProviderEnum) {
|
|
@@ -90,12 +88,11 @@ class AuthApiService {
|
|
|
90
88
|
verifyEmail(token) {
|
|
91
89
|
return this.http.post(`${this.baseUrl}/verify-email`, { token });
|
|
92
90
|
}
|
|
93
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
94
|
-
static ɵprov = i0.ɵɵ
|
|
91
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: AuthApiService, deps: [], target: i0.ɵɵFactoryTarget.Service });
|
|
92
|
+
static ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.1.5", ngImport: i0, type: AuthApiService });
|
|
95
93
|
}
|
|
96
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
97
|
-
type:
|
|
98
|
-
args: [{ providedIn: 'root' }]
|
|
94
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: AuthApiService, decorators: [{
|
|
95
|
+
type: Service
|
|
99
96
|
}], ctorParameters: () => [] });
|
|
100
97
|
|
|
101
98
|
/**
|
|
@@ -118,9 +115,6 @@ class AuthStateService {
|
|
|
118
115
|
appConfig = inject(APP_CONFIG);
|
|
119
116
|
router = inject(Router);
|
|
120
117
|
platform = inject(PlatformService);
|
|
121
|
-
translateAdapter = inject(TranslateService, {
|
|
122
|
-
optional: true,
|
|
123
|
-
});
|
|
124
118
|
permissionValidator = inject(PermissionValidatorService);
|
|
125
119
|
// Core State (private writable, public readonly)
|
|
126
120
|
_user = signal(null, /* @ts-ignore */
|
|
@@ -319,12 +313,11 @@ class AuthStateService {
|
|
|
319
313
|
if (!this.platform.isServer)
|
|
320
314
|
localStorage.removeItem(key);
|
|
321
315
|
}
|
|
322
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
323
|
-
static ɵprov = i0.ɵɵ
|
|
316
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: AuthStateService, deps: [], target: i0.ɵɵFactoryTarget.Service });
|
|
317
|
+
static ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.1.5", ngImport: i0, type: AuthStateService });
|
|
324
318
|
}
|
|
325
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
326
|
-
type:
|
|
327
|
-
args: [{ providedIn: 'root' }]
|
|
319
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: AuthStateService, decorators: [{
|
|
320
|
+
type: Service
|
|
328
321
|
}], ctorParameters: () => [] });
|
|
329
322
|
|
|
330
323
|
class AuthInitService {
|
|
@@ -394,12 +387,11 @@ class AuthInitService {
|
|
|
394
387
|
}));
|
|
395
388
|
return this.initializationCache$;
|
|
396
389
|
}
|
|
397
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
398
|
-
static ɵprov = i0.ɵɵ
|
|
390
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: AuthInitService, deps: [], target: i0.ɵɵFactoryTarget.Service });
|
|
391
|
+
static ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.1.5", ngImport: i0, type: AuthInitService });
|
|
399
392
|
}
|
|
400
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
401
|
-
type:
|
|
402
|
-
args: [{ providedIn: 'root' }]
|
|
393
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: AuthInitService, decorators: [{
|
|
394
|
+
type: Service
|
|
403
395
|
}] });
|
|
404
396
|
|
|
405
397
|
/**
|
|
@@ -413,12 +405,11 @@ class BranchApiService extends ApiResourceService {
|
|
|
413
405
|
fetchByCompany(companyId, search = '') {
|
|
414
406
|
this.fetchList(search, { filter: { companyId } });
|
|
415
407
|
}
|
|
416
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
417
|
-
static ɵprov = i0.ɵɵ
|
|
408
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: BranchApiService, deps: [], target: i0.ɵɵFactoryTarget.Service });
|
|
409
|
+
static ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.1.5", ngImport: i0, type: BranchApiService });
|
|
418
410
|
}
|
|
419
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
420
|
-
type:
|
|
421
|
-
args: [{ providedIn: 'root' }]
|
|
411
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: BranchApiService, decorators: [{
|
|
412
|
+
type: Service
|
|
422
413
|
}], ctorParameters: () => [] });
|
|
423
414
|
|
|
424
415
|
/**
|
|
@@ -429,12 +420,11 @@ class CompanyApiService extends ApiResourceService {
|
|
|
429
420
|
constructor() {
|
|
430
421
|
super('company', 'administration');
|
|
431
422
|
}
|
|
432
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
433
|
-
static ɵprov = i0.ɵɵ
|
|
423
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: CompanyApiService, deps: [], target: i0.ɵɵFactoryTarget.Service });
|
|
424
|
+
static ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.1.5", ngImport: i0, type: CompanyApiService });
|
|
434
425
|
}
|
|
435
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
436
|
-
type:
|
|
437
|
-
args: [{ providedIn: 'root' }]
|
|
426
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: CompanyApiService, decorators: [{
|
|
427
|
+
type: Service
|
|
438
428
|
}], ctorParameters: () => [] });
|
|
439
429
|
|
|
440
430
|
/**
|
|
@@ -501,24 +491,22 @@ class SocialAuthApiService {
|
|
|
501
491
|
callback(request) {
|
|
502
492
|
return this.http.post(`${this.baseUrl}/social/callback`, request);
|
|
503
493
|
}
|
|
504
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
505
|
-
static ɵprov = i0.ɵɵ
|
|
494
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: SocialAuthApiService, deps: [], target: i0.ɵɵFactoryTarget.Service });
|
|
495
|
+
static ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.1.5", ngImport: i0, type: SocialAuthApiService });
|
|
506
496
|
}
|
|
507
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
508
|
-
type:
|
|
509
|
-
args: [{ providedIn: 'root' }]
|
|
497
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: SocialAuthApiService, decorators: [{
|
|
498
|
+
type: Service
|
|
510
499
|
}] });
|
|
511
500
|
|
|
512
501
|
class SocialAuthConfigApiService extends ApiResourceService {
|
|
513
502
|
constructor() {
|
|
514
503
|
super('social-config', 'auth');
|
|
515
504
|
}
|
|
516
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
517
|
-
static ɵprov = i0.ɵɵ
|
|
505
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: SocialAuthConfigApiService, deps: [], target: i0.ɵɵFactoryTarget.Service });
|
|
506
|
+
static ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.1.5", ngImport: i0, type: SocialAuthConfigApiService });
|
|
518
507
|
}
|
|
519
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
520
|
-
type:
|
|
521
|
-
args: [{ providedIn: 'root' }]
|
|
508
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: SocialAuthConfigApiService, decorators: [{
|
|
509
|
+
type: Service
|
|
522
510
|
}], ctorParameters: () => [] });
|
|
523
511
|
|
|
524
512
|
/**
|
|
@@ -543,12 +531,11 @@ class TokenRefreshStateService {
|
|
|
543
531
|
failRefresh() {
|
|
544
532
|
this._isRefreshing.set(false);
|
|
545
533
|
}
|
|
546
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
547
|
-
static ɵprov = i0.ɵɵ
|
|
534
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: TokenRefreshStateService, deps: [], target: i0.ɵɵFactoryTarget.Service });
|
|
535
|
+
static ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.1.5", ngImport: i0, type: TokenRefreshStateService });
|
|
548
536
|
}
|
|
549
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
550
|
-
type:
|
|
551
|
-
args: [{ providedIn: 'root' }]
|
|
537
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: TokenRefreshStateService, decorators: [{
|
|
538
|
+
type: Service
|
|
552
539
|
}] });
|
|
553
540
|
|
|
554
541
|
/**
|
|
@@ -566,12 +553,11 @@ class UserApiService extends ApiResourceService {
|
|
|
566
553
|
const params = search ? { q: search } : undefined;
|
|
567
554
|
return this.http.post(`${this.baseUrl}/lookup`, filter, params ? { params } : undefined);
|
|
568
555
|
}
|
|
569
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
570
|
-
static ɵprov = i0.ɵɵ
|
|
556
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: UserApiService, deps: [], target: i0.ɵɵFactoryTarget.Service });
|
|
557
|
+
static ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.1.5", ngImport: i0, type: UserApiService });
|
|
571
558
|
}
|
|
572
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
573
|
-
type:
|
|
574
|
-
args: [{ providedIn: 'root' }]
|
|
559
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: UserApiService, decorators: [{
|
|
560
|
+
type: Service
|
|
575
561
|
}], ctorParameters: () => [] });
|
|
576
562
|
|
|
577
563
|
/**
|
|
@@ -612,12 +598,22 @@ class UserPermissionApiService {
|
|
|
612
598
|
...(companyId && { companyId }),
|
|
613
599
|
});
|
|
614
600
|
}
|
|
615
|
-
|
|
616
|
-
|
|
601
|
+
// Reverse Lookups (target -> users)
|
|
602
|
+
getCompanyUsers(companyId) {
|
|
603
|
+
return this.http.post(`${this.baseUrl}/get-company-users`, {
|
|
604
|
+
companyId,
|
|
605
|
+
});
|
|
606
|
+
}
|
|
607
|
+
getBranchUsers(branchId) {
|
|
608
|
+
return this.http.post(`${this.baseUrl}/get-branch-users`, {
|
|
609
|
+
branchId,
|
|
610
|
+
});
|
|
611
|
+
}
|
|
612
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: UserPermissionApiService, deps: [], target: i0.ɵɵFactoryTarget.Service });
|
|
613
|
+
static ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.1.5", ngImport: i0, type: UserPermissionApiService });
|
|
617
614
|
}
|
|
618
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
619
|
-
type:
|
|
620
|
-
args: [{ providedIn: 'root' }]
|
|
615
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: UserPermissionApiService, decorators: [{
|
|
616
|
+
type: Service
|
|
621
617
|
}] });
|
|
622
618
|
|
|
623
619
|
function isValidReturnUrl(url) {
|
|
@@ -626,7 +622,7 @@ function isValidReturnUrl(url) {
|
|
|
626
622
|
return url.startsWith('/') && !url.includes('://') && !url.startsWith('//');
|
|
627
623
|
}
|
|
628
624
|
/** Protects routes requiring authentication */
|
|
629
|
-
const authGuard = (
|
|
625
|
+
const authGuard = (_route, state) => {
|
|
630
626
|
const authState = inject(AuthStateService);
|
|
631
627
|
const router = inject(Router);
|
|
632
628
|
const appConfig = inject(APP_CONFIG);
|
|
@@ -1068,6 +1064,11 @@ const AUTH_MESSAGES = {
|
|
|
1068
1064
|
'administrative.company.add': 'Add Company',
|
|
1069
1065
|
'administrative.branch.view.branches': 'View Branches',
|
|
1070
1066
|
'administrative.company.delete.title': 'Delete Company',
|
|
1067
|
+
// components/company-permitted-users-dialog.component.ts, components/branch-permitted-users-dialog.component.ts
|
|
1068
|
+
'administrative.permission.view.users': 'View Users',
|
|
1069
|
+
'administrative.permission.no.users': 'No users found',
|
|
1070
|
+
'administrative.permission.remove': 'Remove Access',
|
|
1071
|
+
'administrative.permission.remove.confirm': 'Remove access for {{name}}?',
|
|
1071
1072
|
// pages/users/user-form.component.ts
|
|
1072
1073
|
'administrative.user.edit': 'Edit User',
|
|
1073
1074
|
'administrative.user.new': 'New User',
|
|
@@ -1373,12 +1374,11 @@ class AuthLayoutStateAdapter {
|
|
|
1373
1374
|
return null;
|
|
1374
1375
|
}, /* @ts-ignore */
|
|
1375
1376
|
...(ngDevMode ? [{ debugName: "loginUserData" }] : /* istanbul ignore next */ []));
|
|
1376
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
1377
|
-
static ɵprov = i0.ɵɵ
|
|
1377
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: AuthLayoutStateAdapter, deps: [], target: i0.ɵɵFactoryTarget.Service });
|
|
1378
|
+
static ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.1.5", ngImport: i0, type: AuthLayoutStateAdapter });
|
|
1378
1379
|
}
|
|
1379
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
1380
|
-
type:
|
|
1381
|
-
args: [{ providedIn: 'root' }]
|
|
1380
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: AuthLayoutStateAdapter, decorators: [{
|
|
1381
|
+
type: Service
|
|
1382
1382
|
}] });
|
|
1383
1383
|
// =============================================================================
|
|
1384
1384
|
// Layout API Adapter
|
|
@@ -1446,12 +1446,11 @@ class AuthLayoutApiAdapter {
|
|
|
1446
1446
|
imageId: branch.logoId ?? undefined,
|
|
1447
1447
|
}))));
|
|
1448
1448
|
}
|
|
1449
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
1450
|
-
static ɵprov = i0.ɵɵ
|
|
1449
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: AuthLayoutApiAdapter, deps: [], target: i0.ɵɵFactoryTarget.Service });
|
|
1450
|
+
static ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.1.5", ngImport: i0, type: AuthLayoutApiAdapter });
|
|
1451
1451
|
}
|
|
1452
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
1453
|
-
type:
|
|
1454
|
-
args: [{ providedIn: 'root' }]
|
|
1452
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: AuthLayoutApiAdapter, decorators: [{
|
|
1453
|
+
type: Service
|
|
1455
1454
|
}] });
|
|
1456
1455
|
|
|
1457
1456
|
/**
|
|
@@ -1498,11 +1497,35 @@ class AuthUserProviderAdapter {
|
|
|
1498
1497
|
meta: response.meta,
|
|
1499
1498
|
})));
|
|
1500
1499
|
}
|
|
1501
|
-
|
|
1502
|
-
|
|
1500
|
+
getUsersByIds(ids) {
|
|
1501
|
+
if (ids.length === 0) {
|
|
1502
|
+
const empty = {
|
|
1503
|
+
success: true,
|
|
1504
|
+
message: '',
|
|
1505
|
+
data: [],
|
|
1506
|
+
meta: { total: 0, page: 0, pageSize: 0, count: 0 },
|
|
1507
|
+
};
|
|
1508
|
+
return from(Promise.resolve(empty));
|
|
1509
|
+
}
|
|
1510
|
+
return from(this.userApi.findByIds(ids, ['id', 'name', 'email'])).pipe(map((response) => ({
|
|
1511
|
+
success: response.success,
|
|
1512
|
+
message: response.message,
|
|
1513
|
+
messageKey: response.messageKey,
|
|
1514
|
+
messageVariables: response.messageVariables,
|
|
1515
|
+
data: (response.data ?? []).map((user) => ({
|
|
1516
|
+
id: user.id,
|
|
1517
|
+
name: user.name || user.email,
|
|
1518
|
+
email: user.email,
|
|
1519
|
+
})),
|
|
1520
|
+
meta: response.meta,
|
|
1521
|
+
})));
|
|
1522
|
+
}
|
|
1523
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: AuthUserProviderAdapter, deps: [], target: i0.ɵɵFactoryTarget.Service });
|
|
1524
|
+
static ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.1.5", ngImport: i0, type: AuthUserProviderAdapter, autoProvided: false });
|
|
1503
1525
|
}
|
|
1504
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
1505
|
-
type:
|
|
1526
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: AuthUserProviderAdapter, decorators: [{
|
|
1527
|
+
type: Service,
|
|
1528
|
+
args: [{ autoProvided: false }]
|
|
1506
1529
|
}] });
|
|
1507
1530
|
// =============================================================================
|
|
1508
1531
|
// Company API Provider Adapter
|
|
@@ -1530,11 +1553,12 @@ class AuthCompanyApiProviderAdapter {
|
|
|
1530
1553
|
meta: response.meta,
|
|
1531
1554
|
})));
|
|
1532
1555
|
}
|
|
1533
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
1534
|
-
static ɵprov = i0.ɵɵ
|
|
1556
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: AuthCompanyApiProviderAdapter, deps: [], target: i0.ɵɵFactoryTarget.Service });
|
|
1557
|
+
static ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.1.5", ngImport: i0, type: AuthCompanyApiProviderAdapter, autoProvided: false });
|
|
1535
1558
|
}
|
|
1536
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
1537
|
-
type:
|
|
1559
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: AuthCompanyApiProviderAdapter, decorators: [{
|
|
1560
|
+
type: Service,
|
|
1561
|
+
args: [{ autoProvided: false }]
|
|
1538
1562
|
}] });
|
|
1539
1563
|
// =============================================================================
|
|
1540
1564
|
// User Permission Provider Adapter
|
|
@@ -1550,11 +1574,12 @@ class AuthUserPermissionProviderAdapter {
|
|
|
1550
1574
|
data: (response.data ?? []).map((c) => ({ id: c.companyId, name: c.companyName })),
|
|
1551
1575
|
})));
|
|
1552
1576
|
}
|
|
1553
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
1554
|
-
static ɵprov = i0.ɵɵ
|
|
1577
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: AuthUserPermissionProviderAdapter, deps: [], target: i0.ɵɵFactoryTarget.Service });
|
|
1578
|
+
static ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.1.5", ngImport: i0, type: AuthUserPermissionProviderAdapter, autoProvided: false });
|
|
1555
1579
|
}
|
|
1556
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
1557
|
-
type:
|
|
1580
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: AuthUserPermissionProviderAdapter, decorators: [{
|
|
1581
|
+
type: Service,
|
|
1582
|
+
args: [{ autoProvided: false }]
|
|
1558
1583
|
}] });
|
|
1559
1584
|
// =============================================================================
|
|
1560
1585
|
// Auth State Provider Adapter
|
|
@@ -1568,11 +1593,12 @@ class AuthStateProviderAdapter {
|
|
|
1568
1593
|
initialize() {
|
|
1569
1594
|
return this.authInit.initialize().pipe(map(() => undefined));
|
|
1570
1595
|
}
|
|
1571
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
1572
|
-
static ɵprov = i0.ɵɵ
|
|
1596
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: AuthStateProviderAdapter, deps: [], target: i0.ɵɵFactoryTarget.Service });
|
|
1597
|
+
static ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.1.5", ngImport: i0, type: AuthStateProviderAdapter, autoProvided: false });
|
|
1573
1598
|
}
|
|
1574
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
1575
|
-
type:
|
|
1599
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: AuthStateProviderAdapter, decorators: [{
|
|
1600
|
+
type: Service,
|
|
1601
|
+
args: [{ autoProvided: false }]
|
|
1576
1602
|
}] });
|
|
1577
1603
|
|
|
1578
1604
|
/** Provides auth integration for ng-layout */
|
|
@@ -1705,8 +1731,8 @@ class AdministrationPageComponent {
|
|
|
1705
1731
|
}));
|
|
1706
1732
|
}, /* @ts-ignore */
|
|
1707
1733
|
...(ngDevMode ? [{ debugName: "visibleTabs" }] : /* istanbul ignore next */ []));
|
|
1708
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
1709
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.
|
|
1734
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: AdministrationPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1735
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.5", type: AdministrationPageComponent, isStandalone: true, selector: "lib-administration-page", ngImport: i0, template: `
|
|
1710
1736
|
<div class="p-4">
|
|
1711
1737
|
<div class="mb-4">
|
|
1712
1738
|
<h1 class="text-2xl font-bold m-0">{{ 'administrative.title' | translate }}</h1>
|
|
@@ -1721,7 +1747,7 @@ class AdministrationPageComponent {
|
|
|
1721
1747
|
</div>
|
|
1722
1748
|
`, isInline: true, dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: RouterTabsComponent, selector: "lib-router-tabs", inputs: ["tabs"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
1723
1749
|
}
|
|
1724
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
1750
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: AdministrationPageComponent, decorators: [{
|
|
1725
1751
|
type: Component,
|
|
1726
1752
|
args: [{
|
|
1727
1753
|
selector: 'lib-administration-page',
|
|
@@ -1875,7 +1901,8 @@ class BranchFormComponent {
|
|
|
1875
1901
|
this.formModel.update((m) => ({ ...m, slug }));
|
|
1876
1902
|
}
|
|
1877
1903
|
}
|
|
1878
|
-
async onSubmit() {
|
|
1904
|
+
async onSubmit(event) {
|
|
1905
|
+
event.preventDefault();
|
|
1879
1906
|
if (!this.isFormValid()) {
|
|
1880
1907
|
this.messageService.add({
|
|
1881
1908
|
severity: 'error',
|
|
@@ -1951,8 +1978,8 @@ class BranchFormComponent {
|
|
|
1951
1978
|
queryParams: companyId ? { companyId } : {},
|
|
1952
1979
|
});
|
|
1953
1980
|
}
|
|
1954
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
1955
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.
|
|
1981
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: BranchFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1982
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: BranchFormComponent, isStandalone: true, selector: "lib-branch-form", ngImport: i0, template: `
|
|
1956
1983
|
<f-card>
|
|
1957
1984
|
<ng-template #header>
|
|
1958
1985
|
<div class="flex justify-between items-center p-4">
|
|
@@ -1967,7 +1994,7 @@ class BranchFormComponent {
|
|
|
1967
1994
|
</ng-template>
|
|
1968
1995
|
|
|
1969
1996
|
<form
|
|
1970
|
-
(
|
|
1997
|
+
(submit)="onSubmit($event)"
|
|
1971
1998
|
class="grid grid-cols-1 md:grid-cols-2 gap-4"
|
|
1972
1999
|
>
|
|
1973
2000
|
<!-- Company Selection -->
|
|
@@ -2088,13 +2115,22 @@ class BranchFormComponent {
|
|
|
2088
2115
|
</div>
|
|
2089
2116
|
</form>
|
|
2090
2117
|
</f-card>
|
|
2091
|
-
`, isInline: true, dependencies: [{ kind: "
|
|
2118
|
+
`, isInline: true, dependencies: [{ kind: "component", type: CardComponent, selector: "f-card", inputs: ["header", "subheader", "styleClass", "style"] }, { kind: "component", type: CheckboxComponent, selector: "f-checkbox", inputs: ["label", "binary", "disabled", "readonly", "inputId", "invalid", "indeterminate", "variant", "size", "touched", "styleClass", "style", "checked"], outputs: ["onChange", "onBlur", "touch", "checkedChange"] }, { kind: "directive", type: FButtonDirective, selector: "[fButton]", inputs: ["severity", "text", "outlined", "link", "variant", "rounded", "raised", "fluid", "disabled", "loading", "loadingIcon", "size", "label", "icon", "iconPos", "ariaLabel", "plain"] }, { kind: "directive", type: InputTextDirective, selector: "[fInputText]", inputs: ["invalid", "touched", "variant", "size", "fluid"] }, { kind: "component", type: SelectComponent, selector: "f-select", inputs: ["options", "optionLabel", "optionValue", "placeholder", "disabled", "filter", "filterBy", "filterMatchMode", "filterLocale", "filterPlaceholder", "resetFilterOnHide", "autofocusFilter", "emptyMessage", "emptyFilterMessage", "showClear", "loading", "loadingIcon", "dropdownIcon", "clearIcon", "inputId", "invalid", "touched", "styleClass", "style", "appendTo", "editable", "readonly", "autofocus", "checkmark", "group", "optionGroupLabel", "optionGroupChildren", "virtualScroll", "virtualScrollItemSize", "lazy"], outputs: ["onFilter", "onChange", "onShow", "onHide", "onBlur", "onFocus", "onClear", "onLazyLoad"] }, { kind: "component", type: UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "spin", "fill", "severity"] }, { kind: "directive", type: FormField, selector: "[formField]", inputs: ["formField"], exportAs: ["formField"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
2092
2119
|
}
|
|
2093
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
2120
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: BranchFormComponent, decorators: [{
|
|
2094
2121
|
type: Component,
|
|
2095
2122
|
args: [{
|
|
2096
2123
|
selector: 'lib-branch-form',
|
|
2097
|
-
imports: [
|
|
2124
|
+
imports: [
|
|
2125
|
+
CardComponent,
|
|
2126
|
+
CheckboxComponent,
|
|
2127
|
+
FButtonDirective,
|
|
2128
|
+
InputTextDirective,
|
|
2129
|
+
SelectComponent,
|
|
2130
|
+
UiIconComponent,
|
|
2131
|
+
FormField,
|
|
2132
|
+
TranslatePipe,
|
|
2133
|
+
],
|
|
2098
2134
|
template: `
|
|
2099
2135
|
<f-card>
|
|
2100
2136
|
<ng-template #header>
|
|
@@ -2110,7 +2146,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
|
|
|
2110
2146
|
</ng-template>
|
|
2111
2147
|
|
|
2112
2148
|
<form
|
|
2113
|
-
(
|
|
2149
|
+
(submit)="onSubmit($event)"
|
|
2114
2150
|
class="grid grid-cols-1 md:grid-cols-2 gap-4"
|
|
2115
2151
|
>
|
|
2116
2152
|
<!-- Company Selection -->
|
|
@@ -2240,9 +2276,245 @@ var branchForm_component = /*#__PURE__*/Object.freeze({
|
|
|
2240
2276
|
BranchFormComponent: BranchFormComponent
|
|
2241
2277
|
});
|
|
2242
2278
|
|
|
2279
|
+
/**
|
|
2280
|
+
* Read-only viewer for users permitted against a branch, with a remove-only
|
|
2281
|
+
* action per user. Assigning new users stays on the user-centric permission
|
|
2282
|
+
* flow (`UserBranchPermissionDialogComponent`) — this dialog intentionally
|
|
2283
|
+
* has no "add" affordance.
|
|
2284
|
+
*/
|
|
2285
|
+
class BranchPermittedUsersDialogComponent {
|
|
2286
|
+
USER_PERMISSIONS = USER_PERMISSIONS;
|
|
2287
|
+
permissionApi = inject(UserPermissionApiService);
|
|
2288
|
+
confirmationService = inject(ConfirmationService);
|
|
2289
|
+
messageService = inject(MessageService);
|
|
2290
|
+
translateAdapter = inject(TranslateService, {
|
|
2291
|
+
optional: true,
|
|
2292
|
+
});
|
|
2293
|
+
t(key, params) {
|
|
2294
|
+
return this.translateAdapter?.translate(key, params) ?? key;
|
|
2295
|
+
}
|
|
2296
|
+
visible = input.required(/* @ts-ignore */
|
|
2297
|
+
...(ngDevMode ? [{ debugName: "visible" }] : /* istanbul ignore next */ []));
|
|
2298
|
+
branch = input.required(/* @ts-ignore */
|
|
2299
|
+
...(ngDevMode ? [{ debugName: "branch" }] : /* istanbul ignore next */ []));
|
|
2300
|
+
closed = output();
|
|
2301
|
+
isLoading = signal(false, /* @ts-ignore */
|
|
2302
|
+
...(ngDevMode ? [{ debugName: "isLoading" }] : /* istanbul ignore next */ []));
|
|
2303
|
+
isRemoving = signal(false, /* @ts-ignore */
|
|
2304
|
+
...(ngDevMode ? [{ debugName: "isRemoving" }] : /* istanbul ignore next */ []));
|
|
2305
|
+
users = signal([], /* @ts-ignore */
|
|
2306
|
+
...(ngDevMode ? [{ debugName: "users" }] : /* istanbul ignore next */ []));
|
|
2307
|
+
constructor() {
|
|
2308
|
+
effect(() => {
|
|
2309
|
+
if (this.visible() && this.branch()) {
|
|
2310
|
+
this.loadUsers();
|
|
2311
|
+
}
|
|
2312
|
+
});
|
|
2313
|
+
}
|
|
2314
|
+
async loadUsers() {
|
|
2315
|
+
const branch = this.branch();
|
|
2316
|
+
if (!branch)
|
|
2317
|
+
return;
|
|
2318
|
+
this.isLoading.set(true);
|
|
2319
|
+
try {
|
|
2320
|
+
const response = await firstValueFrom(this.permissionApi.getBranchUsers(branch.id));
|
|
2321
|
+
this.users.set(response.data ?? []);
|
|
2322
|
+
}
|
|
2323
|
+
catch {
|
|
2324
|
+
// Error toast handled by global interceptor
|
|
2325
|
+
}
|
|
2326
|
+
finally {
|
|
2327
|
+
this.isLoading.set(false);
|
|
2328
|
+
}
|
|
2329
|
+
}
|
|
2330
|
+
onRemove(user) {
|
|
2331
|
+
const branch = this.branch();
|
|
2332
|
+
if (!branch)
|
|
2333
|
+
return;
|
|
2334
|
+
this.confirmationService.confirm({
|
|
2335
|
+
message: this.t('administrative.permission.remove.confirm', {
|
|
2336
|
+
name: user.userName,
|
|
2337
|
+
}),
|
|
2338
|
+
header: this.t('administrative.permission.remove'),
|
|
2339
|
+
icon: 'exclamation-triangle',
|
|
2340
|
+
acceptButtonStyleClass: 'p-button-danger',
|
|
2341
|
+
accept: async () => {
|
|
2342
|
+
this.isRemoving.set(true);
|
|
2343
|
+
try {
|
|
2344
|
+
const response = await firstValueFrom(this.permissionApi.revokeUserFromBranch(user.userId, branch.id));
|
|
2345
|
+
if (response.success) {
|
|
2346
|
+
this.users.update((list) => list.filter((u) => u.id !== user.id));
|
|
2347
|
+
this.messageService.add({
|
|
2348
|
+
severity: 'success',
|
|
2349
|
+
summary: this.t('shared.success'),
|
|
2350
|
+
detail: response?.messageKey
|
|
2351
|
+
? this.t(response.messageKey, response.messageVariables)
|
|
2352
|
+
: (response?.message ?? ''),
|
|
2353
|
+
});
|
|
2354
|
+
}
|
|
2355
|
+
}
|
|
2356
|
+
catch {
|
|
2357
|
+
// Error toast handled by global interceptor
|
|
2358
|
+
}
|
|
2359
|
+
finally {
|
|
2360
|
+
this.isRemoving.set(false);
|
|
2361
|
+
}
|
|
2362
|
+
},
|
|
2363
|
+
});
|
|
2364
|
+
}
|
|
2365
|
+
onClose() {
|
|
2366
|
+
this.closed.emit();
|
|
2367
|
+
}
|
|
2368
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: BranchPermittedUsersDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2369
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: BranchPermittedUsersDialogComponent, isStandalone: true, selector: "lib-branch-permitted-users-dialog", inputs: { visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: true, transformFunction: null }, branch: { classPropertyName: "branch", publicName: "branch", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { closed: "closed" }, ngImport: i0, template: `
|
|
2370
|
+
<f-dialog
|
|
2371
|
+
[visible]="visible()"
|
|
2372
|
+
[modal]="true"
|
|
2373
|
+
[closable]="true"
|
|
2374
|
+
[breakpoints]="{ '960px': '90vw', '640px': '95vw' }"
|
|
2375
|
+
[style]="{ width: '50vw', maxWidth: '600px' }"
|
|
2376
|
+
[header]="'administrative.permission.view.users' | translate"
|
|
2377
|
+
(onHide)="onClose()"
|
|
2378
|
+
>
|
|
2379
|
+
<div class="mb-4">
|
|
2380
|
+
<p class="text-sm text-muted-color">
|
|
2381
|
+
{{ 'administrative.branch.title' | translate }}:
|
|
2382
|
+
<strong>{{ branch()?.name }}</strong>
|
|
2383
|
+
</p>
|
|
2384
|
+
</div>
|
|
2385
|
+
|
|
2386
|
+
@if (isLoading()) {
|
|
2387
|
+
<div class="flex justify-center items-center py-8">
|
|
2388
|
+
<f-progressspinner />
|
|
2389
|
+
</div>
|
|
2390
|
+
} @else {
|
|
2391
|
+
<div class="flex flex-col gap-3">
|
|
2392
|
+
@for (user of users(); track user.id) {
|
|
2393
|
+
<div
|
|
2394
|
+
class="flex items-center justify-between p-3 border border-surface rounded"
|
|
2395
|
+
>
|
|
2396
|
+
<div>
|
|
2397
|
+
<div class="font-semibold">{{ user.userName }}</div>
|
|
2398
|
+
<div class="text-sm text-muted-color">{{ user.userEmail }}</div>
|
|
2399
|
+
</div>
|
|
2400
|
+
<button
|
|
2401
|
+
fButton
|
|
2402
|
+
*hasPermission="USER_PERMISSIONS.UPDATE"
|
|
2403
|
+
[text]="true"
|
|
2404
|
+
severity="danger"
|
|
2405
|
+
size="small"
|
|
2406
|
+
[disabled]="isRemoving()"
|
|
2407
|
+
[fTooltip]="'shared.remove' | translate"
|
|
2408
|
+
(click)="onRemove(user)"
|
|
2409
|
+
>
|
|
2410
|
+
<ui-icon pButtonIcon name="trash"></ui-icon>
|
|
2411
|
+
</button>
|
|
2412
|
+
</div>
|
|
2413
|
+
} @empty {
|
|
2414
|
+
<div class="text-center py-4 text-muted-color">
|
|
2415
|
+
{{ 'administrative.permission.no.users' | translate }}
|
|
2416
|
+
</div>
|
|
2417
|
+
}
|
|
2418
|
+
</div>
|
|
2419
|
+
}
|
|
2420
|
+
|
|
2421
|
+
<ng-template #footer>
|
|
2422
|
+
<button
|
|
2423
|
+
fButton
|
|
2424
|
+
severity="secondary"
|
|
2425
|
+
[outlined]="true"
|
|
2426
|
+
(click)="onClose()"
|
|
2427
|
+
>
|
|
2428
|
+
<span pButtonLabel>{{ 'shared.close' | translate }}</span>
|
|
2429
|
+
</button>
|
|
2430
|
+
</ng-template>
|
|
2431
|
+
</f-dialog>
|
|
2432
|
+
`, isInline: true, dependencies: [{ kind: "component", type: DialogComponent, selector: "f-dialog", inputs: ["header", "visible", "modal", "closable", "closeOnEscape", "dismissableMask", "resizable", "draggable", "maximizable", "blockScroll", "returnFocusOnClose", "position", "style", "styleClass", "breakpoints"], outputs: ["visibleChange", "onShow", "onHide", "onMaximize"] }, { kind: "directive", type: FButtonDirective, selector: "[fButton]", inputs: ["severity", "text", "outlined", "link", "variant", "rounded", "raised", "fluid", "disabled", "loading", "loadingIcon", "size", "label", "icon", "iconPos", "ariaLabel", "plain"] }, { kind: "component", type: ProgressSpinnerComponent, selector: "f-progressspinner", inputs: ["size", "strokeWidth", "animationDuration", "styleClass", "ariaLabel"] }, { kind: "directive", type: TooltipDirective, selector: "[fTooltip]", inputs: ["fTooltip", "tooltipPosition", "positionStyle", "tooltipStyleClass", "disabled", "tooltipEvent", "showDelay", "hideDelay", "life", "autoHide", "positionTop", "positionLeft", "escape"] }, { kind: "component", type: UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "spin", "fill", "severity"] }, { kind: "directive", type: HasPermissionDirective, selector: "[hasPermission]", inputs: ["hasPermission"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
2433
|
+
}
|
|
2434
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: BranchPermittedUsersDialogComponent, decorators: [{
|
|
2435
|
+
type: Component,
|
|
2436
|
+
args: [{
|
|
2437
|
+
selector: 'lib-branch-permitted-users-dialog',
|
|
2438
|
+
imports: [
|
|
2439
|
+
DialogComponent,
|
|
2440
|
+
FButtonDirective,
|
|
2441
|
+
ProgressSpinnerComponent,
|
|
2442
|
+
TooltipDirective,
|
|
2443
|
+
UiIconComponent,
|
|
2444
|
+
HasPermissionDirective,
|
|
2445
|
+
TranslatePipe,
|
|
2446
|
+
],
|
|
2447
|
+
template: `
|
|
2448
|
+
<f-dialog
|
|
2449
|
+
[visible]="visible()"
|
|
2450
|
+
[modal]="true"
|
|
2451
|
+
[closable]="true"
|
|
2452
|
+
[breakpoints]="{ '960px': '90vw', '640px': '95vw' }"
|
|
2453
|
+
[style]="{ width: '50vw', maxWidth: '600px' }"
|
|
2454
|
+
[header]="'administrative.permission.view.users' | translate"
|
|
2455
|
+
(onHide)="onClose()"
|
|
2456
|
+
>
|
|
2457
|
+
<div class="mb-4">
|
|
2458
|
+
<p class="text-sm text-muted-color">
|
|
2459
|
+
{{ 'administrative.branch.title' | translate }}:
|
|
2460
|
+
<strong>{{ branch()?.name }}</strong>
|
|
2461
|
+
</p>
|
|
2462
|
+
</div>
|
|
2463
|
+
|
|
2464
|
+
@if (isLoading()) {
|
|
2465
|
+
<div class="flex justify-center items-center py-8">
|
|
2466
|
+
<f-progressspinner />
|
|
2467
|
+
</div>
|
|
2468
|
+
} @else {
|
|
2469
|
+
<div class="flex flex-col gap-3">
|
|
2470
|
+
@for (user of users(); track user.id) {
|
|
2471
|
+
<div
|
|
2472
|
+
class="flex items-center justify-between p-3 border border-surface rounded"
|
|
2473
|
+
>
|
|
2474
|
+
<div>
|
|
2475
|
+
<div class="font-semibold">{{ user.userName }}</div>
|
|
2476
|
+
<div class="text-sm text-muted-color">{{ user.userEmail }}</div>
|
|
2477
|
+
</div>
|
|
2478
|
+
<button
|
|
2479
|
+
fButton
|
|
2480
|
+
*hasPermission="USER_PERMISSIONS.UPDATE"
|
|
2481
|
+
[text]="true"
|
|
2482
|
+
severity="danger"
|
|
2483
|
+
size="small"
|
|
2484
|
+
[disabled]="isRemoving()"
|
|
2485
|
+
[fTooltip]="'shared.remove' | translate"
|
|
2486
|
+
(click)="onRemove(user)"
|
|
2487
|
+
>
|
|
2488
|
+
<ui-icon pButtonIcon name="trash"></ui-icon>
|
|
2489
|
+
</button>
|
|
2490
|
+
</div>
|
|
2491
|
+
} @empty {
|
|
2492
|
+
<div class="text-center py-4 text-muted-color">
|
|
2493
|
+
{{ 'administrative.permission.no.users' | translate }}
|
|
2494
|
+
</div>
|
|
2495
|
+
}
|
|
2496
|
+
</div>
|
|
2497
|
+
}
|
|
2498
|
+
|
|
2499
|
+
<ng-template #footer>
|
|
2500
|
+
<button
|
|
2501
|
+
fButton
|
|
2502
|
+
severity="secondary"
|
|
2503
|
+
[outlined]="true"
|
|
2504
|
+
(click)="onClose()"
|
|
2505
|
+
>
|
|
2506
|
+
<span pButtonLabel>{{ 'shared.close' | translate }}</span>
|
|
2507
|
+
</button>
|
|
2508
|
+
</ng-template>
|
|
2509
|
+
</f-dialog>
|
|
2510
|
+
`,
|
|
2511
|
+
}]
|
|
2512
|
+
}], ctorParameters: () => [], propDecorators: { visible: [{ type: i0.Input, args: [{ isSignal: true, alias: "visible", required: true }] }], branch: [{ type: i0.Input, args: [{ isSignal: true, alias: "branch", required: true }] }], closed: [{ type: i0.Output, args: ["closed"] }] } });
|
|
2513
|
+
|
|
2243
2514
|
class BranchListComponent {
|
|
2244
2515
|
// Permission constants for template
|
|
2245
2516
|
BRANCH_PERMISSIONS = BRANCH_PERMISSIONS;
|
|
2517
|
+
USER_PERMISSIONS = USER_PERMISSIONS;
|
|
2246
2518
|
router = inject(Router);
|
|
2247
2519
|
route = inject(ActivatedRoute);
|
|
2248
2520
|
messageService = inject(MessageService);
|
|
@@ -2269,6 +2541,10 @@ class BranchListComponent {
|
|
|
2269
2541
|
isLoading = this.branchService.isLoading;
|
|
2270
2542
|
/** Total count from service */
|
|
2271
2543
|
total = this.branchService.total;
|
|
2544
|
+
permittedUsersDialogVisible = signal(false, /* @ts-ignore */
|
|
2545
|
+
...(ngDevMode ? [{ debugName: "permittedUsersDialogVisible" }] : /* istanbul ignore next */ []));
|
|
2546
|
+
selectedBranch = signal(null, /* @ts-ignore */
|
|
2547
|
+
...(ngDevMode ? [{ debugName: "selectedBranch" }] : /* istanbul ignore next */ []));
|
|
2272
2548
|
constructor() {
|
|
2273
2549
|
effect(() => {
|
|
2274
2550
|
const params = this.queryParamMap();
|
|
@@ -2315,6 +2591,10 @@ class BranchListComponent {
|
|
|
2315
2591
|
onEdit(branch) {
|
|
2316
2592
|
this.router.navigate(['/administration/branch', branch.id]);
|
|
2317
2593
|
}
|
|
2594
|
+
onViewUsers(branch) {
|
|
2595
|
+
this.selectedBranch.set(branch);
|
|
2596
|
+
this.permittedUsersDialogVisible.set(true);
|
|
2597
|
+
}
|
|
2318
2598
|
onDelete(branch) {
|
|
2319
2599
|
this.confirmationService.confirm({
|
|
2320
2600
|
message: this.translate('shared.confirm.delete.item', {
|
|
@@ -2344,8 +2624,8 @@ class BranchListComponent {
|
|
|
2344
2624
|
},
|
|
2345
2625
|
});
|
|
2346
2626
|
}
|
|
2347
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
2348
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.
|
|
2627
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: BranchListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2628
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: BranchListComponent, isStandalone: true, selector: "lib-branch-list", ngImport: i0, template: `
|
|
2349
2629
|
<f-card>
|
|
2350
2630
|
<ng-template #header>
|
|
2351
2631
|
<div
|
|
@@ -2436,6 +2716,17 @@ class BranchListComponent {
|
|
|
2436
2716
|
>
|
|
2437
2717
|
<ui-icon pButtonIcon name="pencil"></ui-icon>
|
|
2438
2718
|
</button>
|
|
2719
|
+
<button
|
|
2720
|
+
fButton
|
|
2721
|
+
*hasPermission="USER_PERMISSIONS.READ"
|
|
2722
|
+
[rounded]="true"
|
|
2723
|
+
[text]="true"
|
|
2724
|
+
severity="secondary"
|
|
2725
|
+
[fTooltip]="'administrative.permission.view.users' | translate"
|
|
2726
|
+
(click)="onViewUsers(branch)"
|
|
2727
|
+
>
|
|
2728
|
+
<ui-icon pButtonIcon name="users"></ui-icon>
|
|
2729
|
+
</button>
|
|
2439
2730
|
@if (!branch.readOnly) {
|
|
2440
2731
|
<button
|
|
2441
2732
|
fButton
|
|
@@ -2467,13 +2758,31 @@ class BranchListComponent {
|
|
|
2467
2758
|
</f-table>
|
|
2468
2759
|
</div>
|
|
2469
2760
|
</f-card>
|
|
2470
|
-
|
|
2761
|
+
|
|
2762
|
+
<lib-branch-permitted-users-dialog
|
|
2763
|
+
[visible]="permittedUsersDialogVisible()"
|
|
2764
|
+
[branch]="selectedBranch()"
|
|
2765
|
+
(closed)="permittedUsersDialogVisible.set(false)"
|
|
2766
|
+
/>
|
|
2767
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CardComponent, selector: "f-card", inputs: ["header", "subheader", "styleClass", "style"] }, { kind: "directive", type: FButtonDirective, selector: "[fButton]", inputs: ["severity", "text", "outlined", "link", "variant", "rounded", "raised", "fluid", "disabled", "loading", "loadingIcon", "size", "label", "icon", "iconPos", "ariaLabel", "plain"] }, { kind: "component", type: SelectComponent, selector: "f-select", inputs: ["options", "optionLabel", "optionValue", "placeholder", "disabled", "filter", "filterBy", "filterMatchMode", "filterLocale", "filterPlaceholder", "resetFilterOnHide", "autofocusFilter", "emptyMessage", "emptyFilterMessage", "showClear", "loading", "loadingIcon", "dropdownIcon", "clearIcon", "inputId", "invalid", "touched", "styleClass", "style", "appendTo", "editable", "readonly", "autofocus", "checkmark", "group", "optionGroupLabel", "optionGroupChildren", "virtualScroll", "virtualScrollItemSize", "lazy"], outputs: ["onFilter", "onChange", "onShow", "onHide", "onBlur", "onFocus", "onClear", "onLazyLoad"] }, { kind: "component", type: TableComponent, selector: "f-table", inputs: ["value", "lazy", "loading", "rows", "totalRecords", "rowHover", "dataKey", "scrollable", "scrollHeight", "paginator", "first", "rowsPerPageOptions", "showCurrentPageReport", "currentPageReportTemplate", "tableStyle", "styleClass", "globalFilterFields", "filterDelay", "responsiveLayout", "selectionMode", "sortMode", "rowExpandMode", "resizableColumns", "rowStyleClass", "virtualScroll", "virtualScrollItemSize", "sortField", "sortOrder", "multiSortMeta", "filters", "selection", "expandedRowKeys", "contextMenuSelection"], outputs: ["sortFieldChange", "sortOrderChange", "multiSortMetaChange", "filtersChange", "selectionChange", "expandedRowKeysChange", "contextMenuSelectionChange", "onLazyLoad", "onSort", "onFilter", "onRowSelect", "onRowUnselect", "onSelectAllChange", "onRowExpand", "onRowCollapse", "onColResize", "onRowContextMenu"] }, { kind: "component", type: TagComponent, selector: "f-tag", inputs: ["value", "severity", "icon", "rounded", "color", "styleClass", "style"] }, { kind: "directive", type: TooltipDirective, selector: "[fTooltip]", inputs: ["fTooltip", "tooltipPosition", "positionStyle", "tooltipStyleClass", "disabled", "tooltipEvent", "showDelay", "hideDelay", "life", "autoHide", "positionTop", "positionLeft", "escape"] }, { kind: "component", type: UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "spin", "fill", "severity"] }, { kind: "directive", type: HasPermissionDirective, selector: "[hasPermission]", inputs: ["hasPermission"] }, { kind: "component", type: BranchPermittedUsersDialogComponent, selector: "lib-branch-permitted-users-dialog", inputs: ["visible", "branch"], outputs: ["closed"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
2471
2768
|
}
|
|
2472
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
2769
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: BranchListComponent, decorators: [{
|
|
2473
2770
|
type: Component,
|
|
2474
2771
|
args: [{
|
|
2475
2772
|
selector: 'lib-branch-list',
|
|
2476
|
-
imports: [
|
|
2773
|
+
imports: [
|
|
2774
|
+
FormsModule,
|
|
2775
|
+
CardComponent,
|
|
2776
|
+
FButtonDirective,
|
|
2777
|
+
SelectComponent,
|
|
2778
|
+
TableComponent,
|
|
2779
|
+
TagComponent,
|
|
2780
|
+
TooltipDirective,
|
|
2781
|
+
UiIconComponent,
|
|
2782
|
+
HasPermissionDirective,
|
|
2783
|
+
BranchPermittedUsersDialogComponent,
|
|
2784
|
+
TranslatePipe,
|
|
2785
|
+
],
|
|
2477
2786
|
template: `
|
|
2478
2787
|
<f-card>
|
|
2479
2788
|
<ng-template #header>
|
|
@@ -2565,6 +2874,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
|
|
|
2565
2874
|
>
|
|
2566
2875
|
<ui-icon pButtonIcon name="pencil"></ui-icon>
|
|
2567
2876
|
</button>
|
|
2877
|
+
<button
|
|
2878
|
+
fButton
|
|
2879
|
+
*hasPermission="USER_PERMISSIONS.READ"
|
|
2880
|
+
[rounded]="true"
|
|
2881
|
+
[text]="true"
|
|
2882
|
+
severity="secondary"
|
|
2883
|
+
[fTooltip]="'administrative.permission.view.users' | translate"
|
|
2884
|
+
(click)="onViewUsers(branch)"
|
|
2885
|
+
>
|
|
2886
|
+
<ui-icon pButtonIcon name="users"></ui-icon>
|
|
2887
|
+
</button>
|
|
2568
2888
|
@if (!branch.readOnly) {
|
|
2569
2889
|
<button
|
|
2570
2890
|
fButton
|
|
@@ -2596,6 +2916,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
|
|
|
2596
2916
|
</f-table>
|
|
2597
2917
|
</div>
|
|
2598
2918
|
</f-card>
|
|
2919
|
+
|
|
2920
|
+
<lib-branch-permitted-users-dialog
|
|
2921
|
+
[visible]="permittedUsersDialogVisible()"
|
|
2922
|
+
[branch]="selectedBranch()"
|
|
2923
|
+
(closed)="permittedUsersDialogVisible.set(false)"
|
|
2924
|
+
/>
|
|
2599
2925
|
`,
|
|
2600
2926
|
}]
|
|
2601
2927
|
}], ctorParameters: () => [] });
|
|
@@ -2696,8 +3022,8 @@ class CompanyFormComponent {
|
|
|
2696
3022
|
t(key, vars) {
|
|
2697
3023
|
return this.translateAdapter?.translate(key, vars) ?? key;
|
|
2698
3024
|
}
|
|
2699
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
2700
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.
|
|
3025
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: CompanyFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3026
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.1.5", type: CompanyFormComponent, isStandalone: true, selector: "lib-company-form", viewQueries: [{ propertyName: "formRef", first: true, predicate: BaseFormComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
2701
3027
|
<lib-base-form
|
|
2702
3028
|
[fields]="fields"
|
|
2703
3029
|
[service]="companyService"
|
|
@@ -2712,7 +3038,7 @@ class CompanyFormComponent {
|
|
|
2712
3038
|
/>
|
|
2713
3039
|
`, isInline: true, dependencies: [{ kind: "component", type: BaseFormComponent, selector: "lib-base-form", inputs: ["fields", "title", "createTitle", "editTitle", "columns", "submitLabel", "cancelLabel", "isLoading", "isEditMode", "initialValue", "service", "editId", "cancelRoute", "navigateOnSuccess", "mapToRequest", "mapFromEntity"], outputs: ["onSubmit", "onCancel", "onValueChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
2714
3040
|
}
|
|
2715
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
3041
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: CompanyFormComponent, decorators: [{
|
|
2716
3042
|
type: Component,
|
|
2717
3043
|
args: [{
|
|
2718
3044
|
selector: 'lib-company-form',
|
|
@@ -2739,6 +3065,241 @@ var companyForm_component = /*#__PURE__*/Object.freeze({
|
|
|
2739
3065
|
CompanyFormComponent: CompanyFormComponent
|
|
2740
3066
|
});
|
|
2741
3067
|
|
|
3068
|
+
/**
|
|
3069
|
+
* Read-only viewer for users permitted against a company, with a remove-only
|
|
3070
|
+
* action per user. Assigning new users stays on the user-centric permission
|
|
3071
|
+
* flow (`UserCompanyPermissionDialogComponent`) — this dialog intentionally
|
|
3072
|
+
* has no "add" affordance.
|
|
3073
|
+
*/
|
|
3074
|
+
class CompanyPermittedUsersDialogComponent {
|
|
3075
|
+
USER_PERMISSIONS = USER_PERMISSIONS;
|
|
3076
|
+
permissionApi = inject(UserPermissionApiService);
|
|
3077
|
+
confirmationService = inject(ConfirmationService);
|
|
3078
|
+
messageService = inject(MessageService);
|
|
3079
|
+
translateAdapter = inject(TranslateService, {
|
|
3080
|
+
optional: true,
|
|
3081
|
+
});
|
|
3082
|
+
t(key, params) {
|
|
3083
|
+
return this.translateAdapter?.translate(key, params) ?? key;
|
|
3084
|
+
}
|
|
3085
|
+
visible = input.required(/* @ts-ignore */
|
|
3086
|
+
...(ngDevMode ? [{ debugName: "visible" }] : /* istanbul ignore next */ []));
|
|
3087
|
+
company = input.required(/* @ts-ignore */
|
|
3088
|
+
...(ngDevMode ? [{ debugName: "company" }] : /* istanbul ignore next */ []));
|
|
3089
|
+
closed = output();
|
|
3090
|
+
isLoading = signal(false, /* @ts-ignore */
|
|
3091
|
+
...(ngDevMode ? [{ debugName: "isLoading" }] : /* istanbul ignore next */ []));
|
|
3092
|
+
isRemoving = signal(false, /* @ts-ignore */
|
|
3093
|
+
...(ngDevMode ? [{ debugName: "isRemoving" }] : /* istanbul ignore next */ []));
|
|
3094
|
+
users = signal([], /* @ts-ignore */
|
|
3095
|
+
...(ngDevMode ? [{ debugName: "users" }] : /* istanbul ignore next */ []));
|
|
3096
|
+
constructor() {
|
|
3097
|
+
effect(() => {
|
|
3098
|
+
if (this.visible() && this.company()) {
|
|
3099
|
+
this.loadUsers();
|
|
3100
|
+
}
|
|
3101
|
+
});
|
|
3102
|
+
}
|
|
3103
|
+
async loadUsers() {
|
|
3104
|
+
const company = this.company();
|
|
3105
|
+
if (!company)
|
|
3106
|
+
return;
|
|
3107
|
+
this.isLoading.set(true);
|
|
3108
|
+
try {
|
|
3109
|
+
const response = await firstValueFrom(this.permissionApi.getCompanyUsers(company.id));
|
|
3110
|
+
this.users.set(response.data ?? []);
|
|
3111
|
+
}
|
|
3112
|
+
catch {
|
|
3113
|
+
// Error toast handled by global interceptor
|
|
3114
|
+
}
|
|
3115
|
+
finally {
|
|
3116
|
+
this.isLoading.set(false);
|
|
3117
|
+
}
|
|
3118
|
+
}
|
|
3119
|
+
onRemove(user) {
|
|
3120
|
+
const company = this.company();
|
|
3121
|
+
if (!company)
|
|
3122
|
+
return;
|
|
3123
|
+
this.confirmationService.confirm({
|
|
3124
|
+
message: this.t('administrative.permission.remove.confirm', {
|
|
3125
|
+
name: user.userName,
|
|
3126
|
+
}),
|
|
3127
|
+
header: this.t('administrative.permission.remove'),
|
|
3128
|
+
icon: 'exclamation-triangle',
|
|
3129
|
+
acceptButtonStyleClass: 'p-button-danger',
|
|
3130
|
+
accept: async () => {
|
|
3131
|
+
this.isRemoving.set(true);
|
|
3132
|
+
try {
|
|
3133
|
+
const response = await firstValueFrom(this.permissionApi.revokeUserFromCompany(user.userId, company.id));
|
|
3134
|
+
if (response.success) {
|
|
3135
|
+
this.users.update((list) => list.filter((u) => u.id !== user.id));
|
|
3136
|
+
this.messageService.add({
|
|
3137
|
+
severity: 'success',
|
|
3138
|
+
summary: this.t('shared.success'),
|
|
3139
|
+
detail: response?.messageKey
|
|
3140
|
+
? this.t(response.messageKey, response.messageVariables)
|
|
3141
|
+
: (response?.message ?? ''),
|
|
3142
|
+
});
|
|
3143
|
+
}
|
|
3144
|
+
}
|
|
3145
|
+
catch {
|
|
3146
|
+
// Error toast handled by global interceptor
|
|
3147
|
+
}
|
|
3148
|
+
finally {
|
|
3149
|
+
this.isRemoving.set(false);
|
|
3150
|
+
}
|
|
3151
|
+
},
|
|
3152
|
+
});
|
|
3153
|
+
}
|
|
3154
|
+
onClose() {
|
|
3155
|
+
this.closed.emit();
|
|
3156
|
+
}
|
|
3157
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: CompanyPermittedUsersDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3158
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: CompanyPermittedUsersDialogComponent, isStandalone: true, selector: "lib-company-permitted-users-dialog", inputs: { visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: true, transformFunction: null }, company: { classPropertyName: "company", publicName: "company", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { closed: "closed" }, ngImport: i0, template: `
|
|
3159
|
+
<f-dialog
|
|
3160
|
+
[visible]="visible()"
|
|
3161
|
+
[modal]="true"
|
|
3162
|
+
[closable]="true"
|
|
3163
|
+
[breakpoints]="{ '960px': '90vw', '640px': '95vw' }"
|
|
3164
|
+
[style]="{ width: '50vw', maxWidth: '600px' }"
|
|
3165
|
+
[header]="'administrative.permission.view.users' | translate"
|
|
3166
|
+
(onHide)="onClose()"
|
|
3167
|
+
>
|
|
3168
|
+
<div class="mb-4">
|
|
3169
|
+
<p class="text-sm text-muted-color">
|
|
3170
|
+
{{ 'administrative.company.title' | translate }}:
|
|
3171
|
+
<strong>{{ company()?.name }}</strong>
|
|
3172
|
+
</p>
|
|
3173
|
+
</div>
|
|
3174
|
+
|
|
3175
|
+
@if (isLoading()) {
|
|
3176
|
+
<div class="flex justify-center items-center py-8">
|
|
3177
|
+
<f-progressspinner />
|
|
3178
|
+
</div>
|
|
3179
|
+
} @else {
|
|
3180
|
+
<div class="flex flex-col gap-3">
|
|
3181
|
+
@for (user of users(); track user.id) {
|
|
3182
|
+
<div
|
|
3183
|
+
class="flex items-center justify-between p-3 border border-surface rounded"
|
|
3184
|
+
>
|
|
3185
|
+
<div>
|
|
3186
|
+
<div class="font-semibold">{{ user.userName }}</div>
|
|
3187
|
+
<div class="text-sm text-muted-color">{{ user.userEmail }}</div>
|
|
3188
|
+
</div>
|
|
3189
|
+
<button
|
|
3190
|
+
fButton
|
|
3191
|
+
*hasPermission="USER_PERMISSIONS.UPDATE"
|
|
3192
|
+
[text]="true"
|
|
3193
|
+
severity="danger"
|
|
3194
|
+
size="small"
|
|
3195
|
+
[disabled]="isRemoving()"
|
|
3196
|
+
[fTooltip]="'shared.remove' | translate"
|
|
3197
|
+
(click)="onRemove(user)"
|
|
3198
|
+
>
|
|
3199
|
+
<ui-icon pButtonIcon name="trash"></ui-icon>
|
|
3200
|
+
</button>
|
|
3201
|
+
</div>
|
|
3202
|
+
} @empty {
|
|
3203
|
+
<div class="text-center py-4 text-muted-color">
|
|
3204
|
+
{{ 'administrative.permission.no.users' | translate }}
|
|
3205
|
+
</div>
|
|
3206
|
+
}
|
|
3207
|
+
</div>
|
|
3208
|
+
}
|
|
3209
|
+
|
|
3210
|
+
<ng-template #footer>
|
|
3211
|
+
<button
|
|
3212
|
+
fButton
|
|
3213
|
+
severity="secondary"
|
|
3214
|
+
[outlined]="true"
|
|
3215
|
+
(click)="onClose()"
|
|
3216
|
+
>
|
|
3217
|
+
<span pButtonLabel>{{ 'shared.close' | translate }}</span>
|
|
3218
|
+
</button>
|
|
3219
|
+
</ng-template>
|
|
3220
|
+
</f-dialog>
|
|
3221
|
+
`, isInline: true, dependencies: [{ kind: "component", type: DialogComponent, selector: "f-dialog", inputs: ["header", "visible", "modal", "closable", "closeOnEscape", "dismissableMask", "resizable", "draggable", "maximizable", "blockScroll", "returnFocusOnClose", "position", "style", "styleClass", "breakpoints"], outputs: ["visibleChange", "onShow", "onHide", "onMaximize"] }, { kind: "directive", type: FButtonDirective, selector: "[fButton]", inputs: ["severity", "text", "outlined", "link", "variant", "rounded", "raised", "fluid", "disabled", "loading", "loadingIcon", "size", "label", "icon", "iconPos", "ariaLabel", "plain"] }, { kind: "component", type: ProgressSpinnerComponent, selector: "f-progressspinner", inputs: ["size", "strokeWidth", "animationDuration", "styleClass", "ariaLabel"] }, { kind: "directive", type: TooltipDirective, selector: "[fTooltip]", inputs: ["fTooltip", "tooltipPosition", "positionStyle", "tooltipStyleClass", "disabled", "tooltipEvent", "showDelay", "hideDelay", "life", "autoHide", "positionTop", "positionLeft", "escape"] }, { kind: "component", type: UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "spin", "fill", "severity"] }, { kind: "directive", type: HasPermissionDirective, selector: "[hasPermission]", inputs: ["hasPermission"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
3222
|
+
}
|
|
3223
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: CompanyPermittedUsersDialogComponent, decorators: [{
|
|
3224
|
+
type: Component,
|
|
3225
|
+
args: [{
|
|
3226
|
+
selector: 'lib-company-permitted-users-dialog',
|
|
3227
|
+
imports: [
|
|
3228
|
+
DialogComponent,
|
|
3229
|
+
FButtonDirective,
|
|
3230
|
+
ProgressSpinnerComponent,
|
|
3231
|
+
TooltipDirective,
|
|
3232
|
+
UiIconComponent,
|
|
3233
|
+
HasPermissionDirective,
|
|
3234
|
+
TranslatePipe,
|
|
3235
|
+
],
|
|
3236
|
+
template: `
|
|
3237
|
+
<f-dialog
|
|
3238
|
+
[visible]="visible()"
|
|
3239
|
+
[modal]="true"
|
|
3240
|
+
[closable]="true"
|
|
3241
|
+
[breakpoints]="{ '960px': '90vw', '640px': '95vw' }"
|
|
3242
|
+
[style]="{ width: '50vw', maxWidth: '600px' }"
|
|
3243
|
+
[header]="'administrative.permission.view.users' | translate"
|
|
3244
|
+
(onHide)="onClose()"
|
|
3245
|
+
>
|
|
3246
|
+
<div class="mb-4">
|
|
3247
|
+
<p class="text-sm text-muted-color">
|
|
3248
|
+
{{ 'administrative.company.title' | translate }}:
|
|
3249
|
+
<strong>{{ company()?.name }}</strong>
|
|
3250
|
+
</p>
|
|
3251
|
+
</div>
|
|
3252
|
+
|
|
3253
|
+
@if (isLoading()) {
|
|
3254
|
+
<div class="flex justify-center items-center py-8">
|
|
3255
|
+
<f-progressspinner />
|
|
3256
|
+
</div>
|
|
3257
|
+
} @else {
|
|
3258
|
+
<div class="flex flex-col gap-3">
|
|
3259
|
+
@for (user of users(); track user.id) {
|
|
3260
|
+
<div
|
|
3261
|
+
class="flex items-center justify-between p-3 border border-surface rounded"
|
|
3262
|
+
>
|
|
3263
|
+
<div>
|
|
3264
|
+
<div class="font-semibold">{{ user.userName }}</div>
|
|
3265
|
+
<div class="text-sm text-muted-color">{{ user.userEmail }}</div>
|
|
3266
|
+
</div>
|
|
3267
|
+
<button
|
|
3268
|
+
fButton
|
|
3269
|
+
*hasPermission="USER_PERMISSIONS.UPDATE"
|
|
3270
|
+
[text]="true"
|
|
3271
|
+
severity="danger"
|
|
3272
|
+
size="small"
|
|
3273
|
+
[disabled]="isRemoving()"
|
|
3274
|
+
[fTooltip]="'shared.remove' | translate"
|
|
3275
|
+
(click)="onRemove(user)"
|
|
3276
|
+
>
|
|
3277
|
+
<ui-icon pButtonIcon name="trash"></ui-icon>
|
|
3278
|
+
</button>
|
|
3279
|
+
</div>
|
|
3280
|
+
} @empty {
|
|
3281
|
+
<div class="text-center py-4 text-muted-color">
|
|
3282
|
+
{{ 'administrative.permission.no.users' | translate }}
|
|
3283
|
+
</div>
|
|
3284
|
+
}
|
|
3285
|
+
</div>
|
|
3286
|
+
}
|
|
3287
|
+
|
|
3288
|
+
<ng-template #footer>
|
|
3289
|
+
<button
|
|
3290
|
+
fButton
|
|
3291
|
+
severity="secondary"
|
|
3292
|
+
[outlined]="true"
|
|
3293
|
+
(click)="onClose()"
|
|
3294
|
+
>
|
|
3295
|
+
<span pButtonLabel>{{ 'shared.close' | translate }}</span>
|
|
3296
|
+
</button>
|
|
3297
|
+
</ng-template>
|
|
3298
|
+
</f-dialog>
|
|
3299
|
+
`,
|
|
3300
|
+
}]
|
|
3301
|
+
}], ctorParameters: () => [], propDecorators: { visible: [{ type: i0.Input, args: [{ isSignal: true, alias: "visible", required: true }] }], company: [{ type: i0.Input, args: [{ isSignal: true, alias: "company", required: true }] }], closed: [{ type: i0.Output, args: ["closed"] }] } });
|
|
3302
|
+
|
|
2742
3303
|
class CompanyListComponent {
|
|
2743
3304
|
permissionValidator = inject(PermissionValidatorService);
|
|
2744
3305
|
translateAdapter = inject(TranslateService, {
|
|
@@ -2751,7 +3312,11 @@ class CompanyListComponent {
|
|
|
2751
3312
|
canEditFn = (_item) => this.permissionValidator.hasPermission(COMPANY_PERMISSIONS.UPDATE);
|
|
2752
3313
|
canDeleteFn = (item) => !item.readOnly &&
|
|
2753
3314
|
this.permissionValidator.hasPermission(COMPANY_PERMISSIONS.DELETE);
|
|
2754
|
-
|
|
3315
|
+
permittedUsersDialogVisible = signal(false, /* @ts-ignore */
|
|
3316
|
+
...(ngDevMode ? [{ debugName: "permittedUsersDialogVisible" }] : /* istanbul ignore next */ []));
|
|
3317
|
+
selectedCompany = signal(null, /* @ts-ignore */
|
|
3318
|
+
...(ngDevMode ? [{ debugName: "selectedCompany" }] : /* istanbul ignore next */ []));
|
|
3319
|
+
rowActions = [
|
|
2755
3320
|
{
|
|
2756
3321
|
icon: 'building',
|
|
2757
3322
|
tooltip: 'administrative.branch.view.branches',
|
|
@@ -2761,6 +3326,16 @@ class CompanyListComponent {
|
|
|
2761
3326
|
queryParams: { companyId: c.id },
|
|
2762
3327
|
}),
|
|
2763
3328
|
},
|
|
3329
|
+
{
|
|
3330
|
+
icon: 'users',
|
|
3331
|
+
tooltip: 'administrative.permission.view.users',
|
|
3332
|
+
severity: 'secondary',
|
|
3333
|
+
show: () => this.permissionValidator.hasPermission(USER_PERMISSIONS.READ),
|
|
3334
|
+
handler: (c) => {
|
|
3335
|
+
this.selectedCompany.set(c);
|
|
3336
|
+
this.permittedUsersDialogVisible.set(true);
|
|
3337
|
+
},
|
|
3338
|
+
},
|
|
2764
3339
|
];
|
|
2765
3340
|
columns = [
|
|
2766
3341
|
{
|
|
@@ -2791,11 +3366,11 @@ class CompanyListComponent {
|
|
|
2791
3366
|
t(key) {
|
|
2792
3367
|
return this.translateAdapter?.translate(key) ?? key;
|
|
2793
3368
|
}
|
|
2794
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
2795
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.
|
|
3369
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: CompanyListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3370
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.5", type: CompanyListComponent, isStandalone: true, selector: "lib-company-list", ngImport: i0, template: `
|
|
2796
3371
|
<lib-base-list
|
|
2797
3372
|
[columns]="columns"
|
|
2798
|
-
[actions]="
|
|
3373
|
+
[actions]="rowActions"
|
|
2799
3374
|
[service]="companyService"
|
|
2800
3375
|
[title]="'administrative.company.title' | translate"
|
|
2801
3376
|
[showCreateButton]="canCreate()"
|
|
@@ -2818,22 +3393,29 @@ class CompanyListComponent {
|
|
|
2818
3393
|
/>
|
|
2819
3394
|
</ng-template>
|
|
2820
3395
|
</lib-base-list>
|
|
2821
|
-
|
|
3396
|
+
|
|
3397
|
+
<lib-company-permitted-users-dialog
|
|
3398
|
+
[visible]="permittedUsersDialogVisible()"
|
|
3399
|
+
[company]="selectedCompany()"
|
|
3400
|
+
(closed)="permittedUsersDialogVisible.set(false)"
|
|
3401
|
+
/>
|
|
3402
|
+
`, isInline: true, dependencies: [{ kind: "component", type: BaseListComponent, selector: "lib-base-list", inputs: ["columns", "actions", "title", "showCreateButton", "searchable", "pageSize", "scrollHeight", "emptyMessage", "createButtonLabel", "createButtonIcon", "data", "total", "isLoading", "service", "filter", "createRoute", "editRoute", "deleteConfirmField", "deleteType", "idField", "canEdit", "canDelete"], outputs: ["onCreate", "onLazyLoad", "onSearch"] }, { kind: "directive", type: BaseListTemplateDirective, selector: "ng-template[baseListTemplate]", inputs: ["baseListTemplate"] }, { kind: "component", type: TagComponent, selector: "f-tag", inputs: ["value", "severity", "icon", "rounded", "color", "styleClass", "style"] }, { kind: "component", type: CompanyPermittedUsersDialogComponent, selector: "lib-company-permitted-users-dialog", inputs: ["visible", "company"], outputs: ["closed"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
2822
3403
|
}
|
|
2823
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
3404
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: CompanyListComponent, decorators: [{
|
|
2824
3405
|
type: Component,
|
|
2825
3406
|
args: [{
|
|
2826
3407
|
selector: 'lib-company-list',
|
|
2827
3408
|
imports: [
|
|
2828
3409
|
BaseListComponent,
|
|
2829
3410
|
BaseListTemplateDirective,
|
|
2830
|
-
|
|
3411
|
+
TagComponent,
|
|
3412
|
+
CompanyPermittedUsersDialogComponent,
|
|
2831
3413
|
TranslatePipe,
|
|
2832
3414
|
],
|
|
2833
3415
|
template: `
|
|
2834
3416
|
<lib-base-list
|
|
2835
3417
|
[columns]="columns"
|
|
2836
|
-
[actions]="
|
|
3418
|
+
[actions]="rowActions"
|
|
2837
3419
|
[service]="companyService"
|
|
2838
3420
|
[title]="'administrative.company.title' | translate"
|
|
2839
3421
|
[showCreateButton]="canCreate()"
|
|
@@ -2856,6 +3438,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
|
|
|
2856
3438
|
/>
|
|
2857
3439
|
</ng-template>
|
|
2858
3440
|
</lib-base-list>
|
|
3441
|
+
|
|
3442
|
+
<lib-company-permitted-users-dialog
|
|
3443
|
+
[visible]="permittedUsersDialogVisible()"
|
|
3444
|
+
[company]="selectedCompany()"
|
|
3445
|
+
(closed)="permittedUsersDialogVisible.set(false)"
|
|
3446
|
+
/>
|
|
2859
3447
|
`,
|
|
2860
3448
|
}]
|
|
2861
3449
|
}] });
|
|
@@ -2893,7 +3481,8 @@ class ForgotPasswordPageComponent {
|
|
|
2893
3481
|
});
|
|
2894
3482
|
isFormValid = computed(() => this.forgotForm().valid(), /* @ts-ignore */
|
|
2895
3483
|
...(ngDevMode ? [{ debugName: "isFormValid" }] : /* istanbul ignore next */ []));
|
|
2896
|
-
onSubmit() {
|
|
3484
|
+
onSubmit(event) {
|
|
3485
|
+
event.preventDefault();
|
|
2897
3486
|
if (!this.isFormValid()) {
|
|
2898
3487
|
this.messageService.add({
|
|
2899
3488
|
severity: 'error',
|
|
@@ -2921,8 +3510,8 @@ class ForgotPasswordPageComponent {
|
|
|
2921
3510
|
this.submittedEmail.set('');
|
|
2922
3511
|
this.formModel.set({ email: '' });
|
|
2923
3512
|
}
|
|
2924
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
2925
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.
|
|
3513
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: ForgotPasswordPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3514
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: ForgotPasswordPageComponent, isStandalone: true, selector: "lib-forgot-password-page", ngImport: i0, template: `
|
|
2926
3515
|
<app-floating-configurator />
|
|
2927
3516
|
<div
|
|
2928
3517
|
class="bg-surface-ground flex items-center justify-center min-h-screen"
|
|
@@ -2948,7 +3537,7 @@ class ForgotPasswordPageComponent {
|
|
|
2948
3537
|
</span>
|
|
2949
3538
|
</div>
|
|
2950
3539
|
|
|
2951
|
-
<form (
|
|
3540
|
+
<form (submit)="onSubmit($event)">
|
|
2952
3541
|
<label
|
|
2953
3542
|
for="email"
|
|
2954
3543
|
class="block text-lg font-medium mb-2 text-color"
|
|
@@ -3024,15 +3613,17 @@ class ForgotPasswordPageComponent {
|
|
|
3024
3613
|
</div>
|
|
3025
3614
|
</div>
|
|
3026
3615
|
</div>
|
|
3027
|
-
`, isInline: true, dependencies: [{ kind: "
|
|
3616
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "directive", type: FButtonDirective, selector: "[fButton]", inputs: ["severity", "text", "outlined", "link", "variant", "rounded", "raised", "fluid", "disabled", "loading", "loadingIcon", "size", "label", "icon", "iconPos", "ariaLabel", "plain"] }, { kind: "directive", type: InputTextDirective, selector: "[fInputText]", inputs: ["invalid", "touched", "variant", "size", "fluid"] }, { kind: "component", type: UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "spin", "fill", "severity"] }, { kind: "directive", type: FormField, selector: "[formField]", inputs: ["formField"], exportAs: ["formField"] }, { kind: "component", type: AppFloatingConfigurator, selector: "app-floating-configurator" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
3028
3617
|
}
|
|
3029
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
3618
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: ForgotPasswordPageComponent, decorators: [{
|
|
3030
3619
|
type: Component,
|
|
3031
3620
|
args: [{
|
|
3032
3621
|
selector: 'lib-forgot-password-page',
|
|
3033
3622
|
imports: [
|
|
3034
|
-
|
|
3035
|
-
|
|
3623
|
+
RouterLink,
|
|
3624
|
+
FButtonDirective,
|
|
3625
|
+
InputTextDirective,
|
|
3626
|
+
UiIconComponent,
|
|
3036
3627
|
FormField,
|
|
3037
3628
|
AppFloatingConfigurator,
|
|
3038
3629
|
TranslatePipe,
|
|
@@ -3063,7 +3654,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
|
|
|
3063
3654
|
</span>
|
|
3064
3655
|
</div>
|
|
3065
3656
|
|
|
3066
|
-
<form (
|
|
3657
|
+
<form (submit)="onSubmit($event)">
|
|
3067
3658
|
<label
|
|
3068
3659
|
for="email"
|
|
3069
3660
|
class="block text-lg font-medium mb-2 text-color"
|
|
@@ -3224,8 +3815,8 @@ class SocialLoginButtonsComponent {
|
|
|
3224
3815
|
translate(key, vars) {
|
|
3225
3816
|
return this.translateAdapter?.translate(key, vars) ?? key;
|
|
3226
3817
|
}
|
|
3227
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
3228
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.
|
|
3818
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: SocialLoginButtonsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3819
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: SocialLoginButtonsComponent, isStandalone: true, selector: "lib-social-login-buttons", inputs: { returnUrl: { classPropertyName: "returnUrl", publicName: "returnUrl", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
3229
3820
|
@if (providers().length) {
|
|
3230
3821
|
<div class="mt-6">
|
|
3231
3822
|
<div class="flex items-center gap-3 mb-4">
|
|
@@ -3298,13 +3889,13 @@ class SocialLoginButtonsComponent {
|
|
|
3298
3889
|
</div>
|
|
3299
3890
|
</div>
|
|
3300
3891
|
}
|
|
3301
|
-
`, isInline: true, dependencies: [{ kind: "
|
|
3892
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: FButtonDirective, selector: "[fButton]", inputs: ["severity", "text", "outlined", "link", "variant", "rounded", "raised", "fluid", "disabled", "loading", "loadingIcon", "size", "label", "icon", "iconPos", "ariaLabel", "plain"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
3302
3893
|
}
|
|
3303
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
3894
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: SocialLoginButtonsComponent, decorators: [{
|
|
3304
3895
|
type: Component,
|
|
3305
3896
|
args: [{
|
|
3306
3897
|
selector: 'lib-social-login-buttons',
|
|
3307
|
-
imports: [
|
|
3898
|
+
imports: [FButtonDirective, TranslatePipe],
|
|
3308
3899
|
template: `
|
|
3309
3900
|
@if (providers().length) {
|
|
3310
3901
|
<div class="mt-6">
|
|
@@ -3514,7 +4105,8 @@ class LoginPageComponent {
|
|
|
3514
4105
|
this.autoSelectIfSingle();
|
|
3515
4106
|
}
|
|
3516
4107
|
}
|
|
3517
|
-
onSubmit() {
|
|
4108
|
+
onSubmit(event) {
|
|
4109
|
+
event.preventDefault();
|
|
3518
4110
|
if (!this.isLoginFormValid()) {
|
|
3519
4111
|
this.messageService.add({
|
|
3520
4112
|
severity: 'error',
|
|
@@ -3593,7 +4185,8 @@ class LoginPageComponent {
|
|
|
3593
4185
|
}));
|
|
3594
4186
|
}
|
|
3595
4187
|
}
|
|
3596
|
-
onSelectCompany() {
|
|
4188
|
+
onSelectCompany(event) {
|
|
4189
|
+
event.preventDefault();
|
|
3597
4190
|
if (!this.isSelectionFormValid()) {
|
|
3598
4191
|
this.messageService.add({
|
|
3599
4192
|
severity: 'warn',
|
|
@@ -3706,8 +4299,8 @@ class LoginPageComponent {
|
|
|
3706
4299
|
}
|
|
3707
4300
|
}
|
|
3708
4301
|
}
|
|
3709
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
3710
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.
|
|
4302
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: LoginPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4303
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: LoginPageComponent, isStandalone: true, selector: "lib-login-page", inputs: { returnUrl: { classPropertyName: "returnUrl", publicName: "returnUrl", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
3711
4304
|
<app-floating-configurator />
|
|
3712
4305
|
<div
|
|
3713
4306
|
class="bg-surface-ground flex items-center justify-center min-h-screen"
|
|
@@ -3774,7 +4367,7 @@ class LoginPageComponent {
|
|
|
3774
4367
|
}}</span>
|
|
3775
4368
|
</div>
|
|
3776
4369
|
|
|
3777
|
-
<form (
|
|
4370
|
+
<form (submit)="onSubmit($event)">
|
|
3778
4371
|
<label
|
|
3779
4372
|
for="email"
|
|
3780
4373
|
class="block text-lg font-medium mb-2 text-color"
|
|
@@ -3908,7 +4501,7 @@ class LoginPageComponent {
|
|
|
3908
4501
|
</div>
|
|
3909
4502
|
</div>
|
|
3910
4503
|
|
|
3911
|
-
<form (
|
|
4504
|
+
<form (submit)="onSelectCompany($event)">
|
|
3912
4505
|
<label
|
|
3913
4506
|
for="company"
|
|
3914
4507
|
class="block text-lg font-medium mb-2 text-color"
|
|
@@ -3978,17 +4571,25 @@ class LoginPageComponent {
|
|
|
3978
4571
|
</div>
|
|
3979
4572
|
</div>
|
|
3980
4573
|
</div>
|
|
3981
|
-
`, isInline: true, dependencies: [{ kind: "
|
|
4574
|
+
`, isInline: true, dependencies: [{ kind: "component", type: CheckboxComponent, selector: "f-checkbox", inputs: ["label", "binary", "disabled", "readonly", "inputId", "invalid", "indeterminate", "variant", "size", "touched", "styleClass", "style", "checked"], outputs: ["onChange", "onBlur", "touch", "checkedChange"] }, { kind: "directive", type: FButtonDirective, selector: "[fButton]", inputs: ["severity", "text", "outlined", "link", "variant", "rounded", "raised", "fluid", "disabled", "loading", "loadingIcon", "size", "label", "icon", "iconPos", "ariaLabel", "plain"] }, { kind: "directive", type: InputTextDirective, selector: "[fInputText]", inputs: ["invalid", "touched", "variant", "size", "fluid"] }, { kind: "component", type: PasswordComponent, selector: "f-password", inputs: ["toggleMask", "feedback", "disabled", "placeholder", "inputId", "invalid", "touched", "inputStyleClass", "styleClass", "style", "ariaDescribedby", "autocomplete", "variant", "size", "fluid", "appendTo", "promptLabel", "weakLabel", "mediumLabel", "strongLabel", "mediumRegex", "strongRegex"], outputs: ["onBlur", "onFocus"] }, { kind: "component", type: SelectComponent, selector: "f-select", inputs: ["options", "optionLabel", "optionValue", "placeholder", "disabled", "filter", "filterBy", "filterMatchMode", "filterLocale", "filterPlaceholder", "resetFilterOnHide", "autofocusFilter", "emptyMessage", "emptyFilterMessage", "showClear", "loading", "loadingIcon", "dropdownIcon", "clearIcon", "inputId", "invalid", "touched", "styleClass", "style", "appendTo", "editable", "readonly", "autofocus", "checkmark", "group", "optionGroupLabel", "optionGroupChildren", "virtualScroll", "virtualScrollItemSize", "lazy"], outputs: ["onFilter", "onChange", "onShow", "onHide", "onBlur", "onFocus", "onClear", "onLazyLoad"] }, { kind: "component", type: UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "spin", "fill", "severity"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "directive", type: FormField, selector: "[formField]", inputs: ["formField"], exportAs: ["formField"] }, { kind: "component", type: AppFloatingConfigurator, selector: "app-floating-configurator" }, { kind: "component", type: SocialLoginButtonsComponent, selector: "lib-social-login-buttons", inputs: ["returnUrl"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
3982
4575
|
}
|
|
3983
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
4576
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: LoginPageComponent, decorators: [{
|
|
3984
4577
|
type: Component,
|
|
3985
4578
|
args: [{
|
|
3986
4579
|
selector: 'lib-login-page',
|
|
3987
|
-
imports: [
|
|
4580
|
+
imports: [
|
|
4581
|
+
CheckboxComponent,
|
|
4582
|
+
FButtonDirective,
|
|
4583
|
+
InputTextDirective,
|
|
4584
|
+
PasswordComponent,
|
|
4585
|
+
SelectComponent,
|
|
4586
|
+
UiIconComponent,
|
|
4587
|
+
RouterLink,
|
|
3988
4588
|
FormField,
|
|
3989
4589
|
AppFloatingConfigurator,
|
|
3990
4590
|
SocialLoginButtonsComponent,
|
|
3991
|
-
TranslatePipe,
|
|
4591
|
+
TranslatePipe,
|
|
4592
|
+
],
|
|
3992
4593
|
template: `
|
|
3993
4594
|
<app-floating-configurator />
|
|
3994
4595
|
<div
|
|
@@ -4056,7 +4657,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
|
|
|
4056
4657
|
}}</span>
|
|
4057
4658
|
</div>
|
|
4058
4659
|
|
|
4059
|
-
<form (
|
|
4660
|
+
<form (submit)="onSubmit($event)">
|
|
4060
4661
|
<label
|
|
4061
4662
|
for="email"
|
|
4062
4663
|
class="block text-lg font-medium mb-2 text-color"
|
|
@@ -4190,7 +4791,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
|
|
|
4190
4791
|
</div>
|
|
4191
4792
|
</div>
|
|
4192
4793
|
|
|
4193
|
-
<form (
|
|
4794
|
+
<form (submit)="onSelectCompany($event)">
|
|
4194
4795
|
<label
|
|
4195
4796
|
for="company"
|
|
4196
4797
|
class="block text-lg font-medium mb-2 text-color"
|
|
@@ -4468,6 +5069,14 @@ class ProfilePageComponent {
|
|
|
4468
5069
|
confirmPassword: '',
|
|
4469
5070
|
}, /* @ts-ignore */
|
|
4470
5071
|
...(ngDevMode ? [{ debugName: "passwordModel" }] : /* istanbul ignore next */ []));
|
|
5072
|
+
passwordForm = form(this.passwordModel, (f) => {
|
|
5073
|
+
required(f.currentPassword, {
|
|
5074
|
+
message: this.translate('profile.current.password.required'),
|
|
5075
|
+
});
|
|
5076
|
+
required(f.newPassword, {
|
|
5077
|
+
message: this.translate('profile.new.password.required'),
|
|
5078
|
+
});
|
|
5079
|
+
});
|
|
4471
5080
|
isPasswordLoading = signal(false, /* @ts-ignore */
|
|
4472
5081
|
...(ngDevMode ? [{ debugName: "isPasswordLoading" }] : /* istanbul ignore next */ []));
|
|
4473
5082
|
isPasswordFormValid = computed(() => {
|
|
@@ -4700,8 +5309,8 @@ class ProfilePageComponent {
|
|
|
4700
5309
|
error: () => { },
|
|
4701
5310
|
});
|
|
4702
5311
|
}
|
|
4703
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
4704
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.
|
|
5312
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: ProfilePageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5313
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: ProfilePageComponent, isStandalone: true, selector: "lib-profile-page", ngImport: i0, template: `
|
|
4705
5314
|
<div class="mb-4 md:mb-6">
|
|
4706
5315
|
<h1 class="text-2xl font-bold text-color mb-2">
|
|
4707
5316
|
{{ 'profile.title' | translate }}
|
|
@@ -4814,10 +5423,8 @@ class ProfilePageComponent {
|
|
|
4814
5423
|
</label>
|
|
4815
5424
|
@if (field.component) {
|
|
4816
5425
|
<ng-container
|
|
4817
|
-
|
|
4818
|
-
|
|
4819
|
-
injector: getFieldInjector(field)
|
|
4820
|
-
"
|
|
5426
|
+
[ngComponentOutlet]="field.component"
|
|
5427
|
+
[ngComponentOutletInjector]="getFieldInjector(field)"
|
|
4821
5428
|
/>
|
|
4822
5429
|
} @else if (field.template) {
|
|
4823
5430
|
<ng-container
|
|
@@ -5032,9 +5639,7 @@ class ProfilePageComponent {
|
|
|
5032
5639
|
>
|
|
5033
5640
|
<f-password
|
|
5034
5641
|
[inputId]="'currentPassword'"
|
|
5035
|
-
|
|
5036
|
-
[ngModel]="passwordModel().currentPassword"
|
|
5037
|
-
(ngModelChange)="updatePasswordField('currentPassword', $event)"
|
|
5642
|
+
[formField]="passwordForm.currentPassword"
|
|
5038
5643
|
[placeholder]="'profile.current.password.placeholder' | translate"
|
|
5039
5644
|
class="w-full"
|
|
5040
5645
|
autocomplete="current-password"
|
|
@@ -5047,9 +5652,7 @@ class ProfilePageComponent {
|
|
|
5047
5652
|
>
|
|
5048
5653
|
<f-password
|
|
5049
5654
|
[inputId]="'newPassword'"
|
|
5050
|
-
|
|
5051
|
-
[ngModel]="passwordModel().newPassword"
|
|
5052
|
-
(ngModelChange)="updatePasswordField('newPassword', $event)"
|
|
5655
|
+
[formField]="passwordForm.newPassword"
|
|
5053
5656
|
[placeholder]="'shared.min.characters' | translate: { count: 6 }"
|
|
5054
5657
|
class="w-full"
|
|
5055
5658
|
autocomplete="new-password"
|
|
@@ -5062,9 +5665,7 @@ class ProfilePageComponent {
|
|
|
5062
5665
|
>
|
|
5063
5666
|
<f-password
|
|
5064
5667
|
[inputId]="'confirmPassword'"
|
|
5065
|
-
|
|
5066
|
-
[ngModel]="passwordModel().confirmPassword"
|
|
5067
|
-
(ngModelChange)="updatePasswordField('confirmPassword', $event)"
|
|
5668
|
+
[formField]="passwordForm.confirmPassword"
|
|
5068
5669
|
[placeholder]="'profile.confirm.password.placeholder' | translate"
|
|
5069
5670
|
class="w-full"
|
|
5070
5671
|
autocomplete="new-password"
|
|
@@ -5109,7 +5710,7 @@ class ProfilePageComponent {
|
|
|
5109
5710
|
</div>
|
|
5110
5711
|
<div class="section-content">
|
|
5111
5712
|
@if (section.component) {
|
|
5112
|
-
<ng-container
|
|
5713
|
+
<ng-container [ngComponentOutlet]="section.component" />
|
|
5113
5714
|
}
|
|
5114
5715
|
</div>
|
|
5115
5716
|
</div>
|
|
@@ -5125,7 +5726,7 @@ class ProfilePageComponent {
|
|
|
5125
5726
|
</div>
|
|
5126
5727
|
<div class="section-content">
|
|
5127
5728
|
@if (section.component) {
|
|
5128
|
-
<ng-container
|
|
5729
|
+
<ng-container [ngComponentOutlet]="section.component" />
|
|
5129
5730
|
}
|
|
5130
5731
|
</div>
|
|
5131
5732
|
</div>
|
|
@@ -5244,15 +5845,26 @@ class ProfilePageComponent {
|
|
|
5244
5845
|
}
|
|
5245
5846
|
</div>
|
|
5246
5847
|
}
|
|
5247
|
-
`, isInline: true, dependencies: [{ kind: "
|
|
5848
|
+
`, isInline: true, dependencies: [{ kind: "component", type: AvatarComponent, selector: "f-avatar", inputs: ["label", "icon", "image", "shape", "size", "color", "styleClass", "ariaLabel", "ariaLabelledBy"], outputs: ["onImageError"] }, { kind: "component", type: CheckboxComponent, selector: "f-checkbox", inputs: ["label", "binary", "disabled", "readonly", "inputId", "invalid", "indeterminate", "variant", "size", "touched", "styleClass", "style", "checked"], outputs: ["onChange", "onBlur", "touch", "checkedChange"] }, { kind: "directive", type: FButtonDirective, selector: "[fButton]", inputs: ["severity", "text", "outlined", "link", "variant", "rounded", "raised", "fluid", "disabled", "loading", "loadingIcon", "size", "label", "icon", "iconPos", "ariaLabel", "plain"] }, { kind: "directive", type: InputTextDirective, selector: "[fInputText]", inputs: ["invalid", "touched", "variant", "size", "fluid"] }, { kind: "component", type: PasswordComponent, selector: "f-password", inputs: ["toggleMask", "feedback", "disabled", "placeholder", "inputId", "invalid", "touched", "inputStyleClass", "styleClass", "style", "ariaDescribedby", "autocomplete", "variant", "size", "fluid", "appendTo", "promptLabel", "weakLabel", "mediumLabel", "strongLabel", "mediumRegex", "strongRegex"], outputs: ["onBlur", "onFocus"] }, { kind: "component", type: SelectComponent, selector: "f-select", inputs: ["options", "optionLabel", "optionValue", "placeholder", "disabled", "filter", "filterBy", "filterMatchMode", "filterLocale", "filterPlaceholder", "resetFilterOnHide", "autofocusFilter", "emptyMessage", "emptyFilterMessage", "showClear", "loading", "loadingIcon", "dropdownIcon", "clearIcon", "inputId", "invalid", "touched", "styleClass", "style", "appendTo", "editable", "readonly", "autofocus", "checkmark", "group", "optionGroupLabel", "optionGroupChildren", "virtualScroll", "virtualScrollItemSize", "lazy"], outputs: ["onFilter", "onChange", "onShow", "onHide", "onBlur", "onFocus", "onClear", "onLazyLoad"] }, { kind: "component", type: SkeletonComponent, selector: "f-skeleton", inputs: ["width", "height", "size", "borderRadius", "shape", "animation", "styleClass"] }, { kind: "component", type: TagComponent, selector: "f-tag", inputs: ["value", "severity", "icon", "rounded", "color", "styleClass", "style"] }, { kind: "directive", type: TextareaDirective, selector: "[fTextarea]", inputs: ["invalid", "touched", "variant", "fluid", "autoResize"], outputs: ["onResize"] }, { kind: "component", type: UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "spin", "fill", "severity"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]):not([formArray]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: FormField, selector: "[formField]", inputs: ["formField"], exportAs: ["formField"] }, { kind: "component", type: FileUploaderComponent, selector: "lib-file-uploader", inputs: ["uploadFile", "uploadMultipleFiles", "acceptTypes", "multiple", "maxFiles", "maxSizeMb", "uploadOptions", "disabled", "showPreview", "autoUpload"], outputs: ["fileUploaded", "filesUploaded", "onError", "fileSelected"] }, { kind: "directive", type: HasPermissionDirective, selector: "[hasPermission]", inputs: ["hasPermission"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
5248
5849
|
}
|
|
5249
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
5850
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: ProfilePageComponent, decorators: [{
|
|
5250
5851
|
type: Component,
|
|
5251
5852
|
args: [{
|
|
5252
5853
|
selector: 'lib-profile-page',
|
|
5253
5854
|
imports: [
|
|
5254
|
-
|
|
5255
|
-
|
|
5855
|
+
AvatarComponent,
|
|
5856
|
+
CheckboxComponent,
|
|
5857
|
+
FButtonDirective,
|
|
5858
|
+
InputTextDirective,
|
|
5859
|
+
PasswordComponent,
|
|
5860
|
+
SelectComponent,
|
|
5861
|
+
SkeletonComponent,
|
|
5862
|
+
TagComponent,
|
|
5863
|
+
TextareaDirective,
|
|
5864
|
+
UiIconComponent,
|
|
5865
|
+
FormsModule,
|
|
5866
|
+
NgComponentOutlet,
|
|
5867
|
+
NgTemplateOutlet,
|
|
5256
5868
|
FormField,
|
|
5257
5869
|
FileUploaderComponent,
|
|
5258
5870
|
HasPermissionDirective,
|
|
@@ -5371,10 +5983,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
|
|
|
5371
5983
|
</label>
|
|
5372
5984
|
@if (field.component) {
|
|
5373
5985
|
<ng-container
|
|
5374
|
-
|
|
5375
|
-
|
|
5376
|
-
injector: getFieldInjector(field)
|
|
5377
|
-
"
|
|
5986
|
+
[ngComponentOutlet]="field.component"
|
|
5987
|
+
[ngComponentOutletInjector]="getFieldInjector(field)"
|
|
5378
5988
|
/>
|
|
5379
5989
|
} @else if (field.template) {
|
|
5380
5990
|
<ng-container
|
|
@@ -5589,9 +6199,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
|
|
|
5589
6199
|
>
|
|
5590
6200
|
<f-password
|
|
5591
6201
|
[inputId]="'currentPassword'"
|
|
5592
|
-
|
|
5593
|
-
[ngModel]="passwordModel().currentPassword"
|
|
5594
|
-
(ngModelChange)="updatePasswordField('currentPassword', $event)"
|
|
6202
|
+
[formField]="passwordForm.currentPassword"
|
|
5595
6203
|
[placeholder]="'profile.current.password.placeholder' | translate"
|
|
5596
6204
|
class="w-full"
|
|
5597
6205
|
autocomplete="current-password"
|
|
@@ -5604,9 +6212,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
|
|
|
5604
6212
|
>
|
|
5605
6213
|
<f-password
|
|
5606
6214
|
[inputId]="'newPassword'"
|
|
5607
|
-
|
|
5608
|
-
[ngModel]="passwordModel().newPassword"
|
|
5609
|
-
(ngModelChange)="updatePasswordField('newPassword', $event)"
|
|
6215
|
+
[formField]="passwordForm.newPassword"
|
|
5610
6216
|
[placeholder]="'shared.min.characters' | translate: { count: 6 }"
|
|
5611
6217
|
class="w-full"
|
|
5612
6218
|
autocomplete="new-password"
|
|
@@ -5619,9 +6225,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
|
|
|
5619
6225
|
>
|
|
5620
6226
|
<f-password
|
|
5621
6227
|
[inputId]="'confirmPassword'"
|
|
5622
|
-
|
|
5623
|
-
[ngModel]="passwordModel().confirmPassword"
|
|
5624
|
-
(ngModelChange)="updatePasswordField('confirmPassword', $event)"
|
|
6228
|
+
[formField]="passwordForm.confirmPassword"
|
|
5625
6229
|
[placeholder]="'profile.confirm.password.placeholder' | translate"
|
|
5626
6230
|
class="w-full"
|
|
5627
6231
|
autocomplete="new-password"
|
|
@@ -5666,7 +6270,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
|
|
|
5666
6270
|
</div>
|
|
5667
6271
|
<div class="section-content">
|
|
5668
6272
|
@if (section.component) {
|
|
5669
|
-
<ng-container
|
|
6273
|
+
<ng-container [ngComponentOutlet]="section.component" />
|
|
5670
6274
|
}
|
|
5671
6275
|
</div>
|
|
5672
6276
|
</div>
|
|
@@ -5682,7 +6286,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
|
|
|
5682
6286
|
</div>
|
|
5683
6287
|
<div class="section-content">
|
|
5684
6288
|
@if (section.component) {
|
|
5685
|
-
<ng-container
|
|
6289
|
+
<ng-container [ngComponentOutlet]="section.component" />
|
|
5686
6290
|
}
|
|
5687
6291
|
</div>
|
|
5688
6292
|
</div>
|
|
@@ -6136,8 +6740,8 @@ class RegisterPageComponent {
|
|
|
6136
6740
|
},
|
|
6137
6741
|
});
|
|
6138
6742
|
}
|
|
6139
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
6140
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.
|
|
6743
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: RegisterPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6744
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: RegisterPageComponent, isStandalone: true, selector: "lib-register-page", inputs: { returnUrl: { classPropertyName: "returnUrl", publicName: "returnUrl", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
6141
6745
|
<app-floating-configurator />
|
|
6142
6746
|
<div
|
|
6143
6747
|
class="bg-surface-ground flex items-center justify-center min-h-screen py-8"
|
|
@@ -6264,10 +6868,8 @@ class RegisterPageComponent {
|
|
|
6264
6868
|
</label>
|
|
6265
6869
|
@if (field.component) {
|
|
6266
6870
|
<ng-container
|
|
6267
|
-
|
|
6268
|
-
|
|
6269
|
-
injector: getFieldInjector(field)
|
|
6270
|
-
"
|
|
6871
|
+
[ngComponentOutlet]="field.component"
|
|
6872
|
+
[ngComponentOutletInjector]="getFieldInjector(field)"
|
|
6271
6873
|
></ng-container>
|
|
6272
6874
|
} @else if (field.template) {
|
|
6273
6875
|
<ng-container
|
|
@@ -6605,15 +7207,24 @@ class RegisterPageComponent {
|
|
|
6605
7207
|
</div>
|
|
6606
7208
|
</div>
|
|
6607
7209
|
</div>
|
|
6608
|
-
`, isInline: true, dependencies: [{ kind: "
|
|
7210
|
+
`, isInline: true, dependencies: [{ kind: "component", type: CheckboxComponent, selector: "f-checkbox", inputs: ["label", "binary", "disabled", "readonly", "inputId", "invalid", "indeterminate", "variant", "size", "touched", "styleClass", "style", "checked"], outputs: ["onChange", "onBlur", "touch", "checkedChange"] }, { kind: "directive", type: FButtonDirective, selector: "[fButton]", inputs: ["severity", "text", "outlined", "link", "variant", "rounded", "raised", "fluid", "disabled", "loading", "loadingIcon", "size", "label", "icon", "iconPos", "ariaLabel", "plain"] }, { kind: "directive", type: InputTextDirective, selector: "[fInputText]", inputs: ["invalid", "touched", "variant", "size", "fluid"] }, { kind: "component", type: PasswordComponent, selector: "f-password", inputs: ["toggleMask", "feedback", "disabled", "placeholder", "inputId", "invalid", "touched", "inputStyleClass", "styleClass", "style", "ariaDescribedby", "autocomplete", "variant", "size", "fluid", "appendTo", "promptLabel", "weakLabel", "mediumLabel", "strongLabel", "mediumRegex", "strongRegex"], outputs: ["onBlur", "onFocus"] }, { kind: "component", type: SelectComponent, selector: "f-select", inputs: ["options", "optionLabel", "optionValue", "placeholder", "disabled", "filter", "filterBy", "filterMatchMode", "filterLocale", "filterPlaceholder", "resetFilterOnHide", "autofocusFilter", "emptyMessage", "emptyFilterMessage", "showClear", "loading", "loadingIcon", "dropdownIcon", "clearIcon", "inputId", "invalid", "touched", "styleClass", "style", "appendTo", "editable", "readonly", "autofocus", "checkmark", "group", "optionGroupLabel", "optionGroupChildren", "virtualScroll", "virtualScrollItemSize", "lazy"], outputs: ["onFilter", "onChange", "onShow", "onHide", "onBlur", "onFocus", "onClear", "onLazyLoad"] }, { kind: "directive", type: TextareaDirective, selector: "[fTextarea]", inputs: ["invalid", "touched", "variant", "fluid", "autoResize"], outputs: ["onResize"] }, { kind: "component", type: UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "spin", "fill", "severity"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]):not([formArray]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "directive", type: FormField, selector: "[formField]", inputs: ["formField"], exportAs: ["formField"] }, { kind: "component", type: AppFloatingConfigurator, selector: "app-floating-configurator" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
6609
7211
|
}
|
|
6610
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
7212
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: RegisterPageComponent, decorators: [{
|
|
6611
7213
|
type: Component,
|
|
6612
7214
|
args: [{
|
|
6613
7215
|
selector: 'lib-register-page',
|
|
6614
7216
|
imports: [
|
|
6615
|
-
|
|
6616
|
-
|
|
7217
|
+
CheckboxComponent,
|
|
7218
|
+
FButtonDirective,
|
|
7219
|
+
InputTextDirective,
|
|
7220
|
+
PasswordComponent,
|
|
7221
|
+
SelectComponent,
|
|
7222
|
+
TextareaDirective,
|
|
7223
|
+
UiIconComponent,
|
|
7224
|
+
FormsModule,
|
|
7225
|
+
NgComponentOutlet,
|
|
7226
|
+
NgTemplateOutlet,
|
|
7227
|
+
RouterLink,
|
|
6617
7228
|
FormField,
|
|
6618
7229
|
AppFloatingConfigurator,
|
|
6619
7230
|
TranslatePipe,
|
|
@@ -6745,10 +7356,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
|
|
|
6745
7356
|
</label>
|
|
6746
7357
|
@if (field.component) {
|
|
6747
7358
|
<ng-container
|
|
6748
|
-
|
|
6749
|
-
|
|
6750
|
-
injector: getFieldInjector(field)
|
|
6751
|
-
"
|
|
7359
|
+
[ngComponentOutlet]="field.component"
|
|
7360
|
+
[ngComponentOutletInjector]="getFieldInjector(field)"
|
|
6752
7361
|
></ng-container>
|
|
6753
7362
|
} @else if (field.template) {
|
|
6754
7363
|
<ng-container
|
|
@@ -7151,7 +7760,8 @@ class ResetPasswordPageComponent {
|
|
|
7151
7760
|
}
|
|
7152
7761
|
});
|
|
7153
7762
|
}
|
|
7154
|
-
onSubmit() {
|
|
7763
|
+
onSubmit(event) {
|
|
7764
|
+
event.preventDefault();
|
|
7155
7765
|
if (!this.canSubmit()) {
|
|
7156
7766
|
this.messageService.add({
|
|
7157
7767
|
severity: 'error',
|
|
@@ -7191,8 +7801,8 @@ class ResetPasswordPageComponent {
|
|
|
7191
7801
|
},
|
|
7192
7802
|
});
|
|
7193
7803
|
}
|
|
7194
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
7195
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.
|
|
7804
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: ResetPasswordPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7805
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: ResetPasswordPageComponent, isStandalone: true, selector: "lib-reset-password-page", ngImport: i0, template: `
|
|
7196
7806
|
<app-floating-configurator />
|
|
7197
7807
|
<div
|
|
7198
7808
|
class="bg-surface-ground flex items-center justify-center min-h-screen"
|
|
@@ -7219,7 +7829,7 @@ class ResetPasswordPageComponent {
|
|
|
7219
7829
|
</span>
|
|
7220
7830
|
</div>
|
|
7221
7831
|
|
|
7222
|
-
<form (
|
|
7832
|
+
<form (submit)="onSubmit($event)">
|
|
7223
7833
|
<label
|
|
7224
7834
|
for="newPassword"
|
|
7225
7835
|
class="block text-lg font-medium mb-2 text-color"
|
|
@@ -7340,15 +7950,17 @@ class ResetPasswordPageComponent {
|
|
|
7340
7950
|
</div>
|
|
7341
7951
|
</div>
|
|
7342
7952
|
</div>
|
|
7343
|
-
`, isInline: true, dependencies: [{ kind: "
|
|
7953
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "directive", type: FButtonDirective, selector: "[fButton]", inputs: ["severity", "text", "outlined", "link", "variant", "rounded", "raised", "fluid", "disabled", "loading", "loadingIcon", "size", "label", "icon", "iconPos", "ariaLabel", "plain"] }, { kind: "component", type: PasswordComponent, selector: "f-password", inputs: ["toggleMask", "feedback", "disabled", "placeholder", "inputId", "invalid", "touched", "inputStyleClass", "styleClass", "style", "ariaDescribedby", "autocomplete", "variant", "size", "fluid", "appendTo", "promptLabel", "weakLabel", "mediumLabel", "strongLabel", "mediumRegex", "strongRegex"], outputs: ["onBlur", "onFocus"] }, { kind: "component", type: UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "spin", "fill", "severity"] }, { kind: "directive", type: FormField, selector: "[formField]", inputs: ["formField"], exportAs: ["formField"] }, { kind: "component", type: AppFloatingConfigurator, selector: "app-floating-configurator" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
7344
7954
|
}
|
|
7345
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
7955
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: ResetPasswordPageComponent, decorators: [{
|
|
7346
7956
|
type: Component,
|
|
7347
7957
|
args: [{
|
|
7348
7958
|
selector: 'lib-reset-password-page',
|
|
7349
7959
|
imports: [
|
|
7350
|
-
|
|
7351
|
-
|
|
7960
|
+
RouterLink,
|
|
7961
|
+
FButtonDirective,
|
|
7962
|
+
PasswordComponent,
|
|
7963
|
+
UiIconComponent,
|
|
7352
7964
|
FormField,
|
|
7353
7965
|
AppFloatingConfigurator,
|
|
7354
7966
|
TranslatePipe,
|
|
@@ -7380,7 +7992,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
|
|
|
7380
7992
|
</span>
|
|
7381
7993
|
</div>
|
|
7382
7994
|
|
|
7383
|
-
<form (
|
|
7995
|
+
<form (submit)="onSubmit($event)">
|
|
7384
7996
|
<label
|
|
7385
7997
|
for="newPassword"
|
|
7386
7998
|
class="block text-lg font-medium mb-2 text-color"
|
|
@@ -7597,8 +8209,8 @@ class SocialCallbackPageComponent {
|
|
|
7597
8209
|
translate(key, vars) {
|
|
7598
8210
|
return this.translateAdapter?.translate(key, vars) ?? key;
|
|
7599
8211
|
}
|
|
7600
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
7601
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.
|
|
8212
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: SocialCallbackPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8213
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: SocialCallbackPageComponent, isStandalone: true, selector: "lib-social-callback-page", ngImport: i0, template: `
|
|
7602
8214
|
<app-floating-configurator />
|
|
7603
8215
|
<div class="bg-surface-ground flex items-center justify-center min-h-screen">
|
|
7604
8216
|
<div class="flex flex-col items-center gap-4 text-center px-4">
|
|
@@ -7619,13 +8231,13 @@ class SocialCallbackPageComponent {
|
|
|
7619
8231
|
}
|
|
7620
8232
|
</div>
|
|
7621
8233
|
</div>
|
|
7622
|
-
`, isInline: true, dependencies: [{ kind: "
|
|
8234
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: FButtonDirective, selector: "[fButton]", inputs: ["severity", "text", "outlined", "link", "variant", "rounded", "raised", "fluid", "disabled", "loading", "loadingIcon", "size", "label", "icon", "iconPos", "ariaLabel", "plain"] }, { kind: "component", type: UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "spin", "fill", "severity"] }, { kind: "component", type: AppFloatingConfigurator, selector: "app-floating-configurator" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
7623
8235
|
}
|
|
7624
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
8236
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: SocialCallbackPageComponent, decorators: [{
|
|
7625
8237
|
type: Component,
|
|
7626
8238
|
args: [{
|
|
7627
8239
|
selector: 'lib-social-callback-page',
|
|
7628
|
-
imports: [
|
|
8240
|
+
imports: [FButtonDirective, UiIconComponent, TranslatePipe, AppFloatingConfigurator],
|
|
7629
8241
|
template: `
|
|
7630
8242
|
<app-floating-configurator />
|
|
7631
8243
|
<div class="bg-surface-ground flex items-center justify-center min-h-screen">
|
|
@@ -7733,8 +8345,8 @@ class SocialConfigPageComponent {
|
|
|
7733
8345
|
translate(key, vars) {
|
|
7734
8346
|
return this.translateAdapter?.translate(key, vars) ?? key;
|
|
7735
8347
|
}
|
|
7736
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
7737
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.
|
|
8348
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: SocialConfigPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8349
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: SocialConfigPageComponent, isStandalone: true, selector: "lib-social-config-page", providers: [MessageService], ngImport: i0, template: `
|
|
7738
8350
|
<div class="card">
|
|
7739
8351
|
<div class="flex flex-col sm:flex-row justify-between items-start sm:items-center gap-3 mb-4">
|
|
7740
8352
|
<div>
|
|
@@ -7853,13 +8465,21 @@ class SocialConfigPageComponent {
|
|
|
7853
8465
|
</div>
|
|
7854
8466
|
}
|
|
7855
8467
|
</div>
|
|
7856
|
-
`, isInline: true, dependencies: [{ kind: "
|
|
8468
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: FButtonDirective, selector: "[fButton]", inputs: ["severity", "text", "outlined", "link", "variant", "rounded", "raised", "fluid", "disabled", "loading", "loadingIcon", "size", "label", "icon", "iconPos", "ariaLabel", "plain"] }, { kind: "directive", type: InputTextDirective, selector: "[fInputText]", inputs: ["invalid", "touched", "variant", "size", "fluid"] }, { kind: "component", type: PasswordComponent, selector: "f-password", inputs: ["toggleMask", "feedback", "disabled", "placeholder", "inputId", "invalid", "touched", "inputStyleClass", "styleClass", "style", "ariaDescribedby", "autocomplete", "variant", "size", "fluid", "appendTo", "promptLabel", "weakLabel", "mediumLabel", "strongLabel", "mediumRegex", "strongRegex"], outputs: ["onBlur", "onFocus"] }, { kind: "component", type: ToggleSwitchComponent, selector: "f-toggleswitch", inputs: ["disabled", "readonly", "invalid", "ariaLabel", "trueValue", "falseValue", "inputId", "size", "tabindex", "styleClass", "style"] }, { kind: "component", type: UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "spin", "fill", "severity"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
7857
8469
|
}
|
|
7858
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
8470
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: SocialConfigPageComponent, decorators: [{
|
|
7859
8471
|
type: Component,
|
|
7860
8472
|
args: [{
|
|
7861
8473
|
selector: 'lib-social-config-page',
|
|
7862
|
-
imports: [
|
|
8474
|
+
imports: [
|
|
8475
|
+
FButtonDirective,
|
|
8476
|
+
InputTextDirective,
|
|
8477
|
+
PasswordComponent,
|
|
8478
|
+
ToggleSwitchComponent,
|
|
8479
|
+
UiIconComponent,
|
|
8480
|
+
FormsModule,
|
|
8481
|
+
TranslatePipe,
|
|
8482
|
+
],
|
|
7863
8483
|
providers: [MessageService],
|
|
7864
8484
|
template: `
|
|
7865
8485
|
<div class="card">
|
|
@@ -8355,8 +8975,8 @@ class UserFormComponent {
|
|
|
8355
8975
|
onCancel() {
|
|
8356
8976
|
this.router.navigate(['/administration/users']);
|
|
8357
8977
|
}
|
|
8358
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
8359
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.
|
|
8978
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: UserFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8979
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: UserFormComponent, isStandalone: true, selector: "lib-user-form", ngImport: i0, template: `
|
|
8360
8980
|
<f-card>
|
|
8361
8981
|
<ng-template #header>
|
|
8362
8982
|
<div class="flex justify-between items-center p-4">
|
|
@@ -8451,10 +9071,8 @@ class UserFormComponent {
|
|
|
8451
9071
|
</label>
|
|
8452
9072
|
@if (field.component) {
|
|
8453
9073
|
<ng-container
|
|
8454
|
-
|
|
8455
|
-
|
|
8456
|
-
injector: getFieldInjector(field)
|
|
8457
|
-
"
|
|
9074
|
+
[ngComponentOutlet]="field.component"
|
|
9075
|
+
[ngComponentOutletInjector]="getFieldInjector(field)"
|
|
8458
9076
|
/>
|
|
8459
9077
|
} @else if (field.template) {
|
|
8460
9078
|
<ng-container
|
|
@@ -8651,13 +9269,28 @@ class UserFormComponent {
|
|
|
8651
9269
|
</div>
|
|
8652
9270
|
</form>
|
|
8653
9271
|
</f-card>
|
|
8654
|
-
`, isInline: true, dependencies: [{ kind: "
|
|
9272
|
+
`, isInline: true, dependencies: [{ kind: "component", type: CardComponent, selector: "f-card", inputs: ["header", "subheader", "styleClass", "style"] }, { kind: "component", type: CheckboxComponent, selector: "f-checkbox", inputs: ["label", "binary", "disabled", "readonly", "inputId", "invalid", "indeterminate", "variant", "size", "touched", "styleClass", "style", "checked"], outputs: ["onChange", "onBlur", "touch", "checkedChange"] }, { kind: "directive", type: FButtonDirective, selector: "[fButton]", inputs: ["severity", "text", "outlined", "link", "variant", "rounded", "raised", "fluid", "disabled", "loading", "loadingIcon", "size", "label", "icon", "iconPos", "ariaLabel", "plain"] }, { kind: "directive", type: InputTextDirective, selector: "[fInputText]", inputs: ["invalid", "touched", "variant", "size", "fluid"] }, { kind: "component", type: PasswordComponent, selector: "f-password", inputs: ["toggleMask", "feedback", "disabled", "placeholder", "inputId", "invalid", "touched", "inputStyleClass", "styleClass", "style", "ariaDescribedby", "autocomplete", "variant", "size", "fluid", "appendTo", "promptLabel", "weakLabel", "mediumLabel", "strongLabel", "mediumRegex", "strongRegex"], outputs: ["onBlur", "onFocus"] }, { kind: "component", type: SelectComponent, selector: "f-select", inputs: ["options", "optionLabel", "optionValue", "placeholder", "disabled", "filter", "filterBy", "filterMatchMode", "filterLocale", "filterPlaceholder", "resetFilterOnHide", "autofocusFilter", "emptyMessage", "emptyFilterMessage", "showClear", "loading", "loadingIcon", "dropdownIcon", "clearIcon", "inputId", "invalid", "touched", "styleClass", "style", "appendTo", "editable", "readonly", "autofocus", "checkmark", "group", "optionGroupLabel", "optionGroupChildren", "virtualScroll", "virtualScrollItemSize", "lazy"], outputs: ["onFilter", "onChange", "onShow", "onHide", "onBlur", "onFocus", "onClear", "onLazyLoad"] }, { kind: "component", type: SkeletonComponent, selector: "f-skeleton", inputs: ["width", "height", "size", "borderRadius", "shape", "animation", "styleClass"] }, { kind: "directive", type: TextareaDirective, selector: "[fTextarea]", inputs: ["invalid", "touched", "variant", "fluid", "autoResize"], outputs: ["onResize"] }, { kind: "component", type: UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "spin", "fill", "severity"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]):not([formArray]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: FormField, selector: "[formField]", inputs: ["formField"], exportAs: ["formField"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
8655
9273
|
}
|
|
8656
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
9274
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: UserFormComponent, decorators: [{
|
|
8657
9275
|
type: Component,
|
|
8658
9276
|
args: [{
|
|
8659
9277
|
selector: 'lib-user-form',
|
|
8660
|
-
imports: [
|
|
9278
|
+
imports: [
|
|
9279
|
+
CardComponent,
|
|
9280
|
+
CheckboxComponent,
|
|
9281
|
+
FButtonDirective,
|
|
9282
|
+
InputTextDirective,
|
|
9283
|
+
PasswordComponent,
|
|
9284
|
+
SelectComponent,
|
|
9285
|
+
SkeletonComponent,
|
|
9286
|
+
TextareaDirective,
|
|
9287
|
+
UiIconComponent,
|
|
9288
|
+
FormsModule,
|
|
9289
|
+
NgComponentOutlet,
|
|
9290
|
+
NgTemplateOutlet,
|
|
9291
|
+
FormField,
|
|
9292
|
+
TranslatePipe,
|
|
9293
|
+
],
|
|
8661
9294
|
template: `
|
|
8662
9295
|
<f-card>
|
|
8663
9296
|
<ng-template #header>
|
|
@@ -8753,10 +9386,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
|
|
|
8753
9386
|
</label>
|
|
8754
9387
|
@if (field.component) {
|
|
8755
9388
|
<ng-container
|
|
8756
|
-
|
|
8757
|
-
|
|
8758
|
-
injector: getFieldInjector(field)
|
|
8759
|
-
"
|
|
9389
|
+
[ngComponentOutlet]="field.component"
|
|
9390
|
+
[ngComponentOutletInjector]="getFieldInjector(field)"
|
|
8760
9391
|
/>
|
|
8761
9392
|
} @else if (field.template) {
|
|
8762
9393
|
<ng-container
|
|
@@ -9069,8 +9700,8 @@ class UserBranchPermissionDialogComponent {
|
|
|
9069
9700
|
onClose() {
|
|
9070
9701
|
this.closed.emit();
|
|
9071
9702
|
}
|
|
9072
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
9073
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.
|
|
9703
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: UserBranchPermissionDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9704
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: UserBranchPermissionDialogComponent, isStandalone: true, selector: "lib-user-branch-permission-dialog", inputs: { visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: true, transformFunction: null }, user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { closed: "closed", permissionsChanged: "permissionsChanged" }, ngImport: i0, template: `
|
|
9074
9705
|
<f-dialog
|
|
9075
9706
|
[visible]="visible()"
|
|
9076
9707
|
[modal]="true"
|
|
@@ -9157,15 +9788,19 @@ class UserBranchPermissionDialogComponent {
|
|
|
9157
9788
|
</button>
|
|
9158
9789
|
</ng-template>
|
|
9159
9790
|
</f-dialog>
|
|
9160
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type:
|
|
9791
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CheckboxComponent, selector: "f-checkbox", inputs: ["label", "binary", "disabled", "readonly", "inputId", "invalid", "indeterminate", "variant", "size", "touched", "styleClass", "style", "checked"], outputs: ["onChange", "onBlur", "touch", "checkedChange"] }, { kind: "component", type: DialogComponent, selector: "f-dialog", inputs: ["header", "visible", "modal", "closable", "closeOnEscape", "dismissableMask", "resizable", "draggable", "maximizable", "blockScroll", "returnFocusOnClose", "position", "style", "styleClass", "breakpoints"], outputs: ["visibleChange", "onShow", "onHide", "onMaximize"] }, { kind: "directive", type: FButtonDirective, selector: "[fButton]", inputs: ["severity", "text", "outlined", "link", "variant", "rounded", "raised", "fluid", "disabled", "loading", "loadingIcon", "size", "label", "icon", "iconPos", "ariaLabel", "plain"] }, { kind: "component", type: ProgressSpinnerComponent, selector: "f-progressspinner", inputs: ["size", "strokeWidth", "animationDuration", "styleClass", "ariaLabel"] }, { kind: "component", type: SelectComponent, selector: "f-select", inputs: ["options", "optionLabel", "optionValue", "placeholder", "disabled", "filter", "filterBy", "filterMatchMode", "filterLocale", "filterPlaceholder", "resetFilterOnHide", "autofocusFilter", "emptyMessage", "emptyFilterMessage", "showClear", "loading", "loadingIcon", "dropdownIcon", "clearIcon", "inputId", "invalid", "touched", "styleClass", "style", "appendTo", "editable", "readonly", "autofocus", "checkmark", "group", "optionGroupLabel", "optionGroupChildren", "virtualScroll", "virtualScrollItemSize", "lazy"], outputs: ["onFilter", "onChange", "onShow", "onHide", "onBlur", "onFocus", "onClear", "onLazyLoad"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
9161
9792
|
}
|
|
9162
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
9793
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: UserBranchPermissionDialogComponent, decorators: [{
|
|
9163
9794
|
type: Component,
|
|
9164
9795
|
args: [{
|
|
9165
9796
|
selector: 'lib-user-branch-permission-dialog',
|
|
9166
9797
|
imports: [
|
|
9167
|
-
|
|
9168
|
-
|
|
9798
|
+
FormsModule,
|
|
9799
|
+
CheckboxComponent,
|
|
9800
|
+
DialogComponent,
|
|
9801
|
+
FButtonDirective,
|
|
9802
|
+
ProgressSpinnerComponent,
|
|
9803
|
+
SelectComponent,
|
|
9169
9804
|
TranslatePipe,
|
|
9170
9805
|
],
|
|
9171
9806
|
template: `
|
|
@@ -9320,43 +9955,34 @@ class UserCompanyPermissionDialogComponent {
|
|
|
9320
9955
|
this.isLoading.set(false);
|
|
9321
9956
|
}
|
|
9322
9957
|
}
|
|
9323
|
-
async onCompanyToggle(company) {
|
|
9958
|
+
async onCompanyToggle(company, isAssigned) {
|
|
9324
9959
|
const currentUser = this.user();
|
|
9325
9960
|
if (!currentUser)
|
|
9326
9961
|
return;
|
|
9327
9962
|
this.isSaving.set(true);
|
|
9328
9963
|
try {
|
|
9329
|
-
|
|
9330
|
-
|
|
9331
|
-
|
|
9964
|
+
const response = isAssigned
|
|
9965
|
+
? await firstValueFrom(this.permissionApi.assignUserToCompany(currentUser.id, company.id))
|
|
9966
|
+
: await firstValueFrom(this.permissionApi.revokeUserFromCompany(currentUser.id, company.id));
|
|
9967
|
+
if (response.success) {
|
|
9968
|
+
if (isAssigned)
|
|
9332
9969
|
this.assignedCompanyIds.add(company.id);
|
|
9333
|
-
|
|
9334
|
-
severity: 'success',
|
|
9335
|
-
summary: this.t('shared.success'),
|
|
9336
|
-
detail: response?.messageKey
|
|
9337
|
-
? this.t(response.messageKey, response.messageVariables)
|
|
9338
|
-
: (response?.message ?? ''),
|
|
9339
|
-
});
|
|
9340
|
-
this.permissionsChanged.emit();
|
|
9341
|
-
}
|
|
9342
|
-
}
|
|
9343
|
-
else {
|
|
9344
|
-
const response = await firstValueFrom(this.permissionApi.revokeUserFromCompany(currentUser.id, company.id));
|
|
9345
|
-
if (response.success) {
|
|
9970
|
+
else
|
|
9346
9971
|
this.assignedCompanyIds.delete(company.id);
|
|
9347
|
-
|
|
9348
|
-
|
|
9349
|
-
|
|
9350
|
-
|
|
9351
|
-
|
|
9352
|
-
|
|
9353
|
-
|
|
9354
|
-
|
|
9355
|
-
|
|
9972
|
+
this.companies.update((list) => list.map((c) => (c.id === company.id ? { ...c, isAssigned } : c)));
|
|
9973
|
+
this.messageService.add({
|
|
9974
|
+
severity: 'success',
|
|
9975
|
+
summary: this.t('shared.success'),
|
|
9976
|
+
detail: response?.messageKey
|
|
9977
|
+
? this.t(response.messageKey, response.messageVariables)
|
|
9978
|
+
: (response?.message ?? ''),
|
|
9979
|
+
});
|
|
9980
|
+
this.permissionsChanged.emit();
|
|
9356
9981
|
}
|
|
9357
9982
|
}
|
|
9358
9983
|
catch {
|
|
9359
|
-
|
|
9984
|
+
// Signal was never optimistically updated, so the checkbox already
|
|
9985
|
+
// reflects the pre-toggle state once change detection re-runs below.
|
|
9360
9986
|
}
|
|
9361
9987
|
finally {
|
|
9362
9988
|
this.isSaving.set(false);
|
|
@@ -9365,8 +9991,8 @@ class UserCompanyPermissionDialogComponent {
|
|
|
9365
9991
|
onClose() {
|
|
9366
9992
|
this.closed.emit();
|
|
9367
9993
|
}
|
|
9368
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
9369
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.
|
|
9994
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: UserCompanyPermissionDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9995
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: UserCompanyPermissionDialogComponent, isStandalone: true, selector: "lib-user-company-permission-dialog", inputs: { visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: true, transformFunction: null }, user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { closed: "closed", permissionsChanged: "permissionsChanged" }, ngImport: i0, template: `
|
|
9370
9996
|
<f-dialog
|
|
9371
9997
|
[visible]="visible()"
|
|
9372
9998
|
[modal]="true"
|
|
@@ -9392,11 +10018,11 @@ class UserCompanyPermissionDialogComponent {
|
|
|
9392
10018
|
@for (company of companies(); track company.id) {
|
|
9393
10019
|
<div class="flex items-center p-3 border border-surface rounded">
|
|
9394
10020
|
<f-checkbox
|
|
9395
|
-
[
|
|
10021
|
+
[ngModel]="company.isAssigned"
|
|
9396
10022
|
[binary]="true"
|
|
9397
10023
|
[inputId]="'company-' + company.id"
|
|
9398
10024
|
[disabled]="isSaving()"
|
|
9399
|
-
(onChange)="onCompanyToggle(company)"
|
|
10025
|
+
(onChange)="onCompanyToggle(company, $event.checked)"
|
|
9400
10026
|
/>
|
|
9401
10027
|
<label
|
|
9402
10028
|
[for]="'company-' + company.id"
|
|
@@ -9426,15 +10052,18 @@ class UserCompanyPermissionDialogComponent {
|
|
|
9426
10052
|
</button>
|
|
9427
10053
|
</ng-template>
|
|
9428
10054
|
</f-dialog>
|
|
9429
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type:
|
|
10055
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CheckboxComponent, selector: "f-checkbox", inputs: ["label", "binary", "disabled", "readonly", "inputId", "invalid", "indeterminate", "variant", "size", "touched", "styleClass", "style", "checked"], outputs: ["onChange", "onBlur", "touch", "checkedChange"] }, { kind: "component", type: DialogComponent, selector: "f-dialog", inputs: ["header", "visible", "modal", "closable", "closeOnEscape", "dismissableMask", "resizable", "draggable", "maximizable", "blockScroll", "returnFocusOnClose", "position", "style", "styleClass", "breakpoints"], outputs: ["visibleChange", "onShow", "onHide", "onMaximize"] }, { kind: "directive", type: FButtonDirective, selector: "[fButton]", inputs: ["severity", "text", "outlined", "link", "variant", "rounded", "raised", "fluid", "disabled", "loading", "loadingIcon", "size", "label", "icon", "iconPos", "ariaLabel", "plain"] }, { kind: "component", type: ProgressSpinnerComponent, selector: "f-progressspinner", inputs: ["size", "strokeWidth", "animationDuration", "styleClass", "ariaLabel"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
9430
10056
|
}
|
|
9431
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
10057
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: UserCompanyPermissionDialogComponent, decorators: [{
|
|
9432
10058
|
type: Component,
|
|
9433
10059
|
args: [{
|
|
9434
10060
|
selector: 'lib-user-company-permission-dialog',
|
|
9435
10061
|
imports: [
|
|
9436
|
-
|
|
9437
|
-
|
|
10062
|
+
FormsModule,
|
|
10063
|
+
CheckboxComponent,
|
|
10064
|
+
DialogComponent,
|
|
10065
|
+
FButtonDirective,
|
|
10066
|
+
ProgressSpinnerComponent,
|
|
9438
10067
|
TranslatePipe,
|
|
9439
10068
|
],
|
|
9440
10069
|
template: `
|
|
@@ -9463,11 +10092,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
|
|
|
9463
10092
|
@for (company of companies(); track company.id) {
|
|
9464
10093
|
<div class="flex items-center p-3 border border-surface rounded">
|
|
9465
10094
|
<f-checkbox
|
|
9466
|
-
[
|
|
10095
|
+
[ngModel]="company.isAssigned"
|
|
9467
10096
|
[binary]="true"
|
|
9468
10097
|
[inputId]="'company-' + company.id"
|
|
9469
10098
|
[disabled]="isSaving()"
|
|
9470
|
-
(onChange)="onCompanyToggle(company)"
|
|
10099
|
+
(onChange)="onCompanyToggle(company, $event.checked)"
|
|
9471
10100
|
/>
|
|
9472
10101
|
<label
|
|
9473
10102
|
[for]="'company-' + company.id"
|
|
@@ -9641,8 +10270,8 @@ class UserListComponent {
|
|
|
9641
10270
|
},
|
|
9642
10271
|
});
|
|
9643
10272
|
}
|
|
9644
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
9645
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.
|
|
10273
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: UserListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10274
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: UserListComponent, isStandalone: true, selector: "lib-user-list", ngImport: i0, template: `
|
|
9646
10275
|
<f-card>
|
|
9647
10276
|
<ng-template #header>
|
|
9648
10277
|
<div
|
|
@@ -9932,17 +10561,26 @@ class UserListComponent {
|
|
|
9932
10561
|
}
|
|
9933
10562
|
</f-dialog>
|
|
9934
10563
|
}
|
|
9935
|
-
`, isInline: true, dependencies: [{ kind: "
|
|
10564
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: CardComponent, selector: "f-card", inputs: ["header", "subheader", "styleClass", "style"] }, { kind: "component", type: DialogComponent, selector: "f-dialog", inputs: ["header", "visible", "modal", "closable", "closeOnEscape", "dismissableMask", "resizable", "draggable", "maximizable", "blockScroll", "returnFocusOnClose", "position", "style", "styleClass", "breakpoints"], outputs: ["visibleChange", "onShow", "onHide", "onMaximize"] }, { kind: "directive", type: FButtonDirective, selector: "[fButton]", inputs: ["severity", "text", "outlined", "link", "variant", "rounded", "raised", "fluid", "disabled", "loading", "loadingIcon", "size", "label", "icon", "iconPos", "ariaLabel", "plain"] }, { kind: "component", type: TableComponent, selector: "f-table", inputs: ["value", "lazy", "loading", "rows", "totalRecords", "rowHover", "dataKey", "scrollable", "scrollHeight", "paginator", "first", "rowsPerPageOptions", "showCurrentPageReport", "currentPageReportTemplate", "tableStyle", "styleClass", "globalFilterFields", "filterDelay", "responsiveLayout", "selectionMode", "sortMode", "rowExpandMode", "resizableColumns", "rowStyleClass", "virtualScroll", "virtualScrollItemSize", "sortField", "sortOrder", "multiSortMeta", "filters", "selection", "expandedRowKeys", "contextMenuSelection"], outputs: ["sortFieldChange", "sortOrderChange", "multiSortMetaChange", "filtersChange", "selectionChange", "expandedRowKeysChange", "contextMenuSelectionChange", "onLazyLoad", "onSort", "onFilter", "onRowSelect", "onRowUnselect", "onSelectAllChange", "onRowExpand", "onRowCollapse", "onColResize", "onRowContextMenu"] }, { kind: "component", type: TagComponent, selector: "f-tag", inputs: ["value", "severity", "icon", "rounded", "color", "styleClass", "style"] }, { kind: "directive", type: TooltipDirective, selector: "[fTooltip]", inputs: ["fTooltip", "tooltipPosition", "positionStyle", "tooltipStyleClass", "disabled", "tooltipEvent", "showDelay", "hideDelay", "life", "autoHide", "positionTop", "positionLeft", "escape"] }, { kind: "component", type: UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "spin", "fill", "severity"] }, { kind: "directive", type: HasPermissionDirective, selector: "[hasPermission]", inputs: ["hasPermission"] }, { kind: "component", type: UserCompanyPermissionDialogComponent, selector: "lib-user-company-permission-dialog", inputs: ["visible", "user"], outputs: ["closed", "permissionsChanged"] }, { kind: "component", type: UserBranchPermissionDialogComponent, selector: "lib-user-branch-permission-dialog", inputs: ["visible", "user"], outputs: ["closed", "permissionsChanged"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
9936
10565
|
}
|
|
9937
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
10566
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: UserListComponent, decorators: [{
|
|
9938
10567
|
type: Component,
|
|
9939
10568
|
args: [{
|
|
9940
10569
|
selector: 'lib-user-list',
|
|
9941
|
-
imports: [
|
|
10570
|
+
imports: [
|
|
10571
|
+
NgTemplateOutlet,
|
|
10572
|
+
CardComponent,
|
|
10573
|
+
DialogComponent,
|
|
10574
|
+
FButtonDirective,
|
|
10575
|
+
TableComponent,
|
|
10576
|
+
TagComponent,
|
|
10577
|
+
TooltipDirective,
|
|
10578
|
+
UiIconComponent,
|
|
9942
10579
|
HasPermissionDirective,
|
|
9943
10580
|
TranslatePipe,
|
|
9944
10581
|
UserCompanyPermissionDialogComponent,
|
|
9945
|
-
UserBranchPermissionDialogComponent,
|
|
10582
|
+
UserBranchPermissionDialogComponent,
|
|
10583
|
+
],
|
|
9946
10584
|
template: `
|
|
9947
10585
|
<f-card>
|
|
9948
10586
|
<ng-template #header>
|
|
@@ -10338,7 +10976,8 @@ class VerifyEmailPageComponent {
|
|
|
10338
10976
|
this.pageState.set('resend');
|
|
10339
10977
|
this.resendSuccess.set(false);
|
|
10340
10978
|
}
|
|
10341
|
-
onResend() {
|
|
10979
|
+
onResend(event) {
|
|
10980
|
+
event.preventDefault();
|
|
10342
10981
|
if (!this.isResendFormValid()) {
|
|
10343
10982
|
this.messageService.add({
|
|
10344
10983
|
severity: 'error',
|
|
@@ -10371,8 +11010,8 @@ class VerifyEmailPageComponent {
|
|
|
10371
11010
|
this.submittedEmail.set(email);
|
|
10372
11011
|
this.resendSuccess.set(true);
|
|
10373
11012
|
}
|
|
10374
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
10375
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.
|
|
11013
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: VerifyEmailPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
11014
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: VerifyEmailPageComponent, isStandalone: true, selector: "lib-verify-email-page", ngImport: i0, template: `
|
|
10376
11015
|
<app-floating-configurator />
|
|
10377
11016
|
<div
|
|
10378
11017
|
class="bg-surface-ground flex items-center justify-center min-h-screen"
|
|
@@ -10465,7 +11104,7 @@ class VerifyEmailPageComponent {
|
|
|
10465
11104
|
</div>
|
|
10466
11105
|
|
|
10467
11106
|
@if (!resendSuccess()) {
|
|
10468
|
-
<form (
|
|
11107
|
+
<form (submit)="onResend($event)">
|
|
10469
11108
|
<label
|
|
10470
11109
|
for="email"
|
|
10471
11110
|
class="block text-lg font-medium mb-2 text-color"
|
|
@@ -10525,15 +11164,17 @@ class VerifyEmailPageComponent {
|
|
|
10525
11164
|
</div>
|
|
10526
11165
|
</div>
|
|
10527
11166
|
</div>
|
|
10528
|
-
`, isInline: true, dependencies: [{ kind: "
|
|
11167
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "directive", type: FButtonDirective, selector: "[fButton]", inputs: ["severity", "text", "outlined", "link", "variant", "rounded", "raised", "fluid", "disabled", "loading", "loadingIcon", "size", "label", "icon", "iconPos", "ariaLabel", "plain"] }, { kind: "directive", type: InputTextDirective, selector: "[fInputText]", inputs: ["invalid", "touched", "variant", "size", "fluid"] }, { kind: "component", type: UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "spin", "fill", "severity"] }, { kind: "directive", type: FormField, selector: "[formField]", inputs: ["formField"], exportAs: ["formField"] }, { kind: "component", type: AppFloatingConfigurator, selector: "app-floating-configurator" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
10529
11168
|
}
|
|
10530
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
11169
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: VerifyEmailPageComponent, decorators: [{
|
|
10531
11170
|
type: Component,
|
|
10532
11171
|
args: [{
|
|
10533
11172
|
selector: 'lib-verify-email-page',
|
|
10534
11173
|
imports: [
|
|
10535
|
-
|
|
10536
|
-
|
|
11174
|
+
RouterLink,
|
|
11175
|
+
FButtonDirective,
|
|
11176
|
+
InputTextDirective,
|
|
11177
|
+
UiIconComponent,
|
|
10537
11178
|
FormField,
|
|
10538
11179
|
AppFloatingConfigurator,
|
|
10539
11180
|
TranslatePipe,
|
|
@@ -10631,7 +11272,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
|
|
|
10631
11272
|
</div>
|
|
10632
11273
|
|
|
10633
11274
|
@if (!resendSuccess()) {
|
|
10634
|
-
<form (
|
|
11275
|
+
<form (submit)="onResend($event)">
|
|
10635
11276
|
<label
|
|
10636
11277
|
for="email"
|
|
10637
11278
|
class="block text-lg font-medium mb-2 text-color"
|
|
@@ -10709,5 +11350,5 @@ var verifyEmailPage_component = /*#__PURE__*/Object.freeze({
|
|
|
10709
11350
|
* Generated bundle index. Do not edit.
|
|
10710
11351
|
*/
|
|
10711
11352
|
|
|
10712
|
-
export { ADMINISTRATION_ROUTES, AUTH_ENDPOINTS, AUTH_MESSAGES, AUTH_PROFILE_EXTENSION, AUTH_REGISTRATION_EXTENSION, AUTH_ROUTES, AUTH_USER_DETAIL_CONFIG, AUTH_USER_FORM_EXTENSION, AUTH_USER_LIST_EXTENSION, AUTH_VALIDATION_CONFIG, AdministrationPageComponent, AuthApiService, AuthCompanyApiProviderAdapter, AuthInitService, AuthLayoutApiAdapter, AuthLayoutStateAdapter, AuthStateProviderAdapter, AuthStateService, AuthUserPermissionProviderAdapter, AuthUserProviderAdapter, BranchApiService, BranchFormComponent, BranchListComponent, CompanyApiService, CompanyFormComponent, CompanyListComponent, ForgotPasswordPageComponent, LoginPageComponent, PROFILE_FIELD_CONTEXT, PROFILE_ROUTES, ProfilePageComponent, REGISTRATION_FIELD_CONTEXT, RegisterPageComponent, ResetPasswordPageComponent, SOCIAL_PROVIDERS, SOCIAL_RETURN_URL_KEY, SocialAuthApiService, SocialAuthConfigApiService, SocialCallbackPageComponent, SocialConfigPageComponent, SocialLoginButtonsComponent, SocialProviderEnum, TokenRefreshStateService, USER_FORM_FIELD_CONTEXT, UserApiService, UserBranchPermissionDialogComponent, UserCompanyPermissionDialogComponent, UserFormComponent, UserListComponent, UserPermissionApiService, VerifyEmailPageComponent, authGuard, authInterceptor, companyFeatureGuard, emailFeatureGuard, guestGuard, isCompanySelectionResponse, isEmailVerificationRequired, isEndpoint, isLoginResponse, provideAuthLayoutIntegration, provideAuthProviders, signUpFeatureGuard, tokenRefreshInterceptor, validateEmail, validatePassword };
|
|
11353
|
+
export { ADMINISTRATION_ROUTES, AUTH_ENDPOINTS, AUTH_MESSAGES, AUTH_PROFILE_EXTENSION, AUTH_REGISTRATION_EXTENSION, AUTH_ROUTES, AUTH_USER_DETAIL_CONFIG, AUTH_USER_FORM_EXTENSION, AUTH_USER_LIST_EXTENSION, AUTH_VALIDATION_CONFIG, AdministrationPageComponent, AuthApiService, AuthCompanyApiProviderAdapter, AuthInitService, AuthLayoutApiAdapter, AuthLayoutStateAdapter, AuthStateProviderAdapter, AuthStateService, AuthUserPermissionProviderAdapter, AuthUserProviderAdapter, BranchApiService, BranchFormComponent, BranchListComponent, BranchPermittedUsersDialogComponent, CompanyApiService, CompanyFormComponent, CompanyListComponent, CompanyPermittedUsersDialogComponent, ForgotPasswordPageComponent, LoginPageComponent, PROFILE_FIELD_CONTEXT, PROFILE_ROUTES, ProfilePageComponent, REGISTRATION_FIELD_CONTEXT, RegisterPageComponent, ResetPasswordPageComponent, SOCIAL_PROVIDERS, SOCIAL_RETURN_URL_KEY, SocialAuthApiService, SocialAuthConfigApiService, SocialCallbackPageComponent, SocialConfigPageComponent, SocialLoginButtonsComponent, SocialProviderEnum, TokenRefreshStateService, USER_FORM_FIELD_CONTEXT, UserApiService, UserBranchPermissionDialogComponent, UserCompanyPermissionDialogComponent, UserFormComponent, UserListComponent, UserPermissionApiService, VerifyEmailPageComponent, authGuard, authInterceptor, companyFeatureGuard, emailFeatureGuard, guestGuard, isCompanySelectionResponse, isEmailVerificationRequired, isEndpoint, isLoginResponse, provideAuthLayoutIntegration, provideAuthProviders, signUpFeatureGuard, tokenRefreshInterceptor, validateEmail, validatePassword };
|
|
10713
11354
|
//# sourceMappingURL=flusys-ng-auth.mjs.map
|