ngx-techlify-core 18.57.1 → 18.58.1
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/esm2022/lib/access-control-config/access-control-config.service.mjs +3 -3
- package/esm2022/lib/app-admin/admin-role/admin-role-list/admin-role-list.component.mjs +3 -3
- package/esm2022/lib/app-admin/admin-role/admin-role-permission-form/admin-role-permission-form.component.mjs +3 -3
- package/esm2022/lib/app-admin/admin-role/admin-role.service.mjs +3 -3
- package/esm2022/lib/app-admin/tenant/tenant-list-widget/tenant-list-widget.component.mjs +3 -3
- package/esm2022/lib/audit-log/audit-log-list/audit-log-list.component.mjs +35 -94
- package/esm2022/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.mjs +3 -12
- package/esm2022/lib/audit-log/audit-log.service.mjs +3 -3
- package/esm2022/lib/base-model/index.mjs +4 -4
- package/esm2022/lib/base-model/techlify-form-component.mjs +128 -0
- package/esm2022/lib/base-model/techlify-list-component.mjs +289 -0
- package/esm2022/lib/base-model/techlify-service.mjs +68 -0
- package/esm2022/lib/company-information/client.service.mjs +3 -3
- package/esm2022/lib/company-information/company-information/company-information.component.mjs +3 -3
- package/esm2022/lib/delete-button/techlify-delete-button.component.mjs +1 -1
- package/esm2022/lib/entity-files/entity-file.service.mjs +3 -3
- package/esm2022/lib/form-configuration/form-configuration-form-field.service.mjs +3 -3
- package/esm2022/lib/form-configuration/form-configuration-form.service.mjs +3 -3
- package/esm2022/lib/login/login-form-fields/login-form-fields.component.mjs +3 -3
- package/esm2022/lib/note/note-list/note-list.component.mjs +3 -3
- package/esm2022/lib/pdf-button/pdf-button.component.mjs +11 -7
- package/esm2022/lib/reset-password/reset-password.component.mjs +3 -3
- package/esm2022/lib/reset-password/reset-password.service.mjs +3 -3
- package/esm2022/lib/restrictors/restrictor-level-selector/restrictor-level.service.mjs +3 -3
- package/esm2022/lib/restrictors/restrictor-status-selector/restrictor-status.service.mjs +3 -3
- package/esm2022/lib/restrictors/restrictor-type-selector/restrictor-type.service.mjs +3 -3
- package/esm2022/lib/restrictors/restrictor.service.mjs +3 -3
- package/esm2022/lib/searchable-selector/searchable-selector.component.mjs +5 -5
- package/esm2022/lib/subscription/subscription-form/subscription-form.component.mjs +3 -3
- package/esm2022/lib/subscription/subscription-listing/subscription-listing.component.mjs +3 -3
- package/esm2022/lib/subscription/subscription-package-listing/subscription-package-listing.component.mjs +3 -3
- package/esm2022/lib/subscription/subscription-package.service.mjs +3 -3
- package/esm2022/lib/subscription/subscription.service.mjs +3 -3
- package/esm2022/lib/techlify-feature/techlify-feature.service.mjs +3 -3
- package/esm2022/lib/techlify-icon/techlify-icon.component.mjs +7 -2
- package/esm2022/lib/techlify-notifications/techlify-notification-for-user/techlify-notification-for-user.component.mjs +3 -3
- package/esm2022/lib/techlify-notifications/techlify-notification-for-user/techlify-notification-subscription.service.mjs +3 -3
- package/esm2022/lib/techlify-notifications/techlify-notification-for-user/techlify-notification-type.service.mjs +3 -3
- package/esm2022/lib/techlify-view/my-techlify-view-listing/my-techlify-view-listing.component.mjs +3 -3
- package/esm2022/lib/techlify-view/my-techlify-view-listing/my-techlify-view.service.mjs +3 -3
- package/esm2022/lib/techlify-view/techlify-view-form/techlify-view-form.component.mjs +3 -3
- package/esm2022/lib/techlify-view/techlify-view.service.mjs +3 -3
- package/esm2022/lib/timeline-activity/timeline-activity-list/timeline-activity-list.component.mjs +3 -3
- package/esm2022/lib/timeline-activity/timeline-activity.service.mjs +3 -3
- package/esm2022/lib/user/user-enable-button-component/user-enable-button.component.mjs +5 -5
- package/esm2022/lib/user/user-enable-button-component/user-enable-button.module.mjs +7 -3
- package/esm2022/lib/user/user-sessions/user-session.service.mjs +3 -3
- package/esm2022/lib/user/user-sessions/user-sessions/user-sessions.component.mjs +3 -3
- package/esm2022/lib/user/user.service.mjs +3 -3
- package/esm2022/lib/user/users-view-all.component.mjs +13 -11
- package/esm2022/lib/user-clients-list/user-client.service.mjs +3 -3
- package/esm2022/lib/user-clients-list/user-clients-list.component.mjs +3 -3
- package/fesm2022/ngx-techlify-core.mjs +207 -249
- package/fesm2022/ngx-techlify-core.mjs.map +1 -1
- package/lib/access-control-config/access-control-config.service.d.ts +2 -2
- package/lib/app-admin/admin-role/admin-role-list/admin-role-list.component.d.ts +2 -2
- package/lib/app-admin/admin-role/admin-role-permission-form/admin-role-permission-form.component.d.ts +2 -2
- package/lib/app-admin/admin-role/admin-role.service.d.ts +2 -2
- package/lib/app-admin/tenant/tenant-list-widget/tenant-list-widget.component.d.ts +2 -2
- package/lib/audit-log/audit-log-list/audit-log-list.component.d.ts +7 -11
- package/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.d.ts +0 -2
- package/lib/audit-log/audit-log.service.d.ts +2 -2
- package/lib/base-model/index.d.ts +3 -3
- package/lib/base-model/{techlify-form-component.class.d.ts → techlify-form-component.d.ts} +7 -6
- package/lib/base-model/{techlify-listing-component.class.d.ts → techlify-list-component.d.ts} +6 -6
- package/lib/base-model/{techlify-service.class.d.ts → techlify-service.d.ts} +1 -1
- package/lib/company-information/client.service.d.ts +2 -2
- package/lib/company-information/company-information/company-information.component.d.ts +2 -2
- package/lib/delete-button/techlify-delete-button.component.d.ts +2 -2
- package/lib/entity-files/entity-file.service.d.ts +2 -2
- package/lib/form-configuration/form-configuration-form-field.service.d.ts +2 -2
- package/lib/form-configuration/form-configuration-form.service.d.ts +2 -2
- package/lib/login/login-form-fields/login-form-fields.component.d.ts +2 -2
- package/lib/note/note-list/note-list.component.d.ts +2 -2
- package/lib/pdf-button/pdf-button.component.d.ts +2 -1
- package/lib/reset-password/reset-password.component.d.ts +2 -2
- package/lib/reset-password/reset-password.service.d.ts +2 -2
- package/lib/restrictors/restrictor-level-selector/restrictor-level.service.d.ts +2 -2
- package/lib/restrictors/restrictor-status-selector/restrictor-status.service.d.ts +2 -2
- package/lib/restrictors/restrictor-type-selector/restrictor-type.service.d.ts +2 -2
- package/lib/restrictors/restrictor.service.d.ts +2 -2
- package/lib/subscription/subscription-form/subscription-form.component.d.ts +2 -2
- package/lib/subscription/subscription-listing/subscription-listing.component.d.ts +2 -2
- package/lib/subscription/subscription-package-listing/subscription-package-listing.component.d.ts +2 -2
- package/lib/subscription/subscription-package.service.d.ts +2 -2
- package/lib/subscription/subscription.service.d.ts +2 -2
- package/lib/techlify-feature/techlify-feature.service.d.ts +2 -2
- package/lib/techlify-notifications/techlify-notification-for-user/techlify-notification-for-user.component.d.ts +2 -2
- package/lib/techlify-notifications/techlify-notification-for-user/techlify-notification-subscription.service.d.ts +2 -2
- package/lib/techlify-notifications/techlify-notification-for-user/techlify-notification-type.service.d.ts +2 -2
- package/lib/techlify-view/my-techlify-view-listing/my-techlify-view-listing.component.d.ts +2 -2
- package/lib/techlify-view/my-techlify-view-listing/my-techlify-view.service.d.ts +2 -2
- package/lib/techlify-view/techlify-view-form/techlify-view-form.component.d.ts +2 -2
- package/lib/techlify-view/techlify-view.service.d.ts +2 -2
- package/lib/timeline-activity/timeline-activity-list/timeline-activity-list.component.d.ts +2 -2
- package/lib/timeline-activity/timeline-activity.service.d.ts +2 -2
- package/lib/user/user-enable-button-component/user-enable-button.module.d.ts +2 -1
- package/lib/user/user-sessions/user-session.service.d.ts +2 -2
- package/lib/user/user-sessions/user-sessions/user-sessions.component.d.ts +2 -2
- package/lib/user/user.service.d.ts +2 -2
- package/lib/user/users-view-all.component.d.ts +2 -2
- package/lib/user-clients-list/user-client.service.d.ts +2 -2
- package/lib/user-clients-list/user-clients-list.component.d.ts +2 -2
- package/package.json +1 -1
- package/esm2022/lib/base-model/techlify-form-component.class.mjs +0 -119
- package/esm2022/lib/base-model/techlify-listing-component.class.mjs +0 -289
- package/esm2022/lib/base-model/techlify-service.class.mjs +0 -68
|
@@ -209,7 +209,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
209
209
|
* - comments on more code
|
|
210
210
|
* - save time, save energy
|
|
211
211
|
*/
|
|
212
|
-
class
|
|
212
|
+
class TechlifyService {
|
|
213
213
|
constructor(http, baseUrl) {
|
|
214
214
|
this.http = http;
|
|
215
215
|
this.baseUrl = 'you-forgot-to-set-a-base-url';
|
|
@@ -281,7 +281,7 @@ class TechlifyServiceBaseClass {
|
|
|
281
281
|
* - comments on more code
|
|
282
282
|
* - save time, save energy
|
|
283
283
|
*/
|
|
284
|
-
class
|
|
284
|
+
class TechlifyFormComponent {
|
|
285
285
|
constructor(formValidatorService, service) {
|
|
286
286
|
this.formValidatorService = formValidatorService;
|
|
287
287
|
this.service = service;
|
|
@@ -291,6 +291,8 @@ class TechlifyFormComponentInterface {
|
|
|
291
291
|
this.createdEntries = [];
|
|
292
292
|
//Boolean to denote if form is in update mode
|
|
293
293
|
this.isUpdate = false;
|
|
294
|
+
//Boolean to denote if form has ability to create multiple entries
|
|
295
|
+
this.isAllowCreateAnother = true;
|
|
294
296
|
//Emits an event once form submit is success
|
|
295
297
|
this.success = new EventEmitter();
|
|
296
298
|
//Injected alert service
|
|
@@ -323,7 +325,12 @@ class TechlifyFormComponentInterface {
|
|
|
323
325
|
this.alertService.addAlert('Successfully Created', 'success');
|
|
324
326
|
return;
|
|
325
327
|
}
|
|
326
|
-
|
|
328
|
+
if (this.isUpdate) {
|
|
329
|
+
this.success.emit(res?.item);
|
|
330
|
+
}
|
|
331
|
+
else {
|
|
332
|
+
this.success.emit((this.createdEntries.length == 1) ? this.createdEntries[0] : this.createdEntries);
|
|
333
|
+
}
|
|
327
334
|
if (this.dialogRef) {
|
|
328
335
|
this.dialogRef.close(res.item);
|
|
329
336
|
}
|
|
@@ -368,15 +375,17 @@ class TechlifyFormComponentInterface {
|
|
|
368
375
|
getErrorMessage(field) {
|
|
369
376
|
return this.formValidatorService.getErrorMessage(field, this.form, this.errorMessages);
|
|
370
377
|
}
|
|
371
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type:
|
|
372
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type:
|
|
378
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TechlifyFormComponent, deps: [{ token: FormValidatorService }, { token: TechlifyService, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
379
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: TechlifyFormComponent, inputs: { isUpdate: "isUpdate", isAllowCreateAnother: "isAllowCreateAnother" }, outputs: { success: "success" }, ngImport: i0 }); }
|
|
373
380
|
}
|
|
374
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type:
|
|
381
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TechlifyFormComponent, decorators: [{
|
|
375
382
|
type: Directive
|
|
376
|
-
}], ctorParameters: () => [{ type: FormValidatorService }, { type:
|
|
383
|
+
}], ctorParameters: () => [{ type: FormValidatorService }, { type: TechlifyService, decorators: [{
|
|
377
384
|
type: Optional
|
|
378
385
|
}] }], propDecorators: { isUpdate: [{
|
|
379
386
|
type: Input
|
|
387
|
+
}], isAllowCreateAnother: [{
|
|
388
|
+
type: Input
|
|
380
389
|
}], success: [{
|
|
381
390
|
type: Output
|
|
382
391
|
}] } });
|
|
@@ -522,7 +531,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
522
531
|
* - comments on more code
|
|
523
532
|
* - save time, save energy
|
|
524
533
|
*/
|
|
525
|
-
let
|
|
534
|
+
let TechlifyListComponent = class TechlifyListComponent {
|
|
526
535
|
get isFilterPatchFromRoute() {
|
|
527
536
|
return this._isFilterPatchFromRoute;
|
|
528
537
|
}
|
|
@@ -778,15 +787,15 @@ let TechlifyListingControllerInterface = class TechlifyListingControllerInterfac
|
|
|
778
787
|
this.isViewLoaded = true;
|
|
779
788
|
}, 500);
|
|
780
789
|
}
|
|
781
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type:
|
|
782
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type:
|
|
790
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TechlifyListComponent, deps: [{ token: TechlifyService, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
791
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: TechlifyListComponent, ngImport: i0 }); }
|
|
783
792
|
};
|
|
784
|
-
|
|
793
|
+
TechlifyListComponent = __decorate([
|
|
785
794
|
UntilDestroy()
|
|
786
|
-
],
|
|
787
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type:
|
|
795
|
+
], TechlifyListComponent);
|
|
796
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TechlifyListComponent, decorators: [{
|
|
788
797
|
type: Directive
|
|
789
|
-
}], ctorParameters: () => [{ type:
|
|
798
|
+
}], ctorParameters: () => [{ type: TechlifyService, decorators: [{
|
|
790
799
|
type: Optional
|
|
791
800
|
}] }] });
|
|
792
801
|
|
|
@@ -1704,7 +1713,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
1704
1713
|
args: [HTTP_DYNAMIC_INTERCEPTORS]
|
|
1705
1714
|
}] }] });
|
|
1706
1715
|
|
|
1707
|
-
class EntityFileService extends
|
|
1716
|
+
class EntityFileService extends TechlifyService {
|
|
1708
1717
|
constructor(http) {
|
|
1709
1718
|
super(http, 'entity-files');
|
|
1710
1719
|
this.http = http;
|
|
@@ -2832,7 +2841,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
2832
2841
|
args: [MAT_DIALOG_DATA]
|
|
2833
2842
|
}] }] });
|
|
2834
2843
|
|
|
2835
|
-
class UserService extends
|
|
2844
|
+
class UserService extends TechlifyService {
|
|
2836
2845
|
constructor(http) {
|
|
2837
2846
|
super(http, 'users');
|
|
2838
2847
|
}
|
|
@@ -3356,16 +3365,16 @@ class SearchableSelectorComponent {
|
|
|
3356
3365
|
return ele;
|
|
3357
3366
|
}
|
|
3358
3367
|
_handleInput() {
|
|
3368
|
+
//Trigger on change only when initial event is false, to avoid double loading
|
|
3369
|
+
if (!this.isEmitInitialEvent) {
|
|
3370
|
+
this.onChange(this.value);
|
|
3371
|
+
}
|
|
3359
3372
|
if (this.multiple)
|
|
3360
3373
|
this.selectedValue = (this.value || []).map(x => this.dataItems.find(y => y[this.valueField] === x));
|
|
3361
3374
|
else
|
|
3362
3375
|
this.selectedValue = this.dataItems.find(x => x[this.valueField] === this.value);
|
|
3363
3376
|
this.selectedValueChange.emit(this.selectedValue);
|
|
3364
3377
|
this.selectionChange.emit(this.value);
|
|
3365
|
-
//Trigger on change only when initial event is false, to avoid double loading
|
|
3366
|
-
if (!this.isEmitInitialEvent) {
|
|
3367
|
-
this.onChange(this.value);
|
|
3368
|
-
}
|
|
3369
3378
|
}
|
|
3370
3379
|
get errorState() {
|
|
3371
3380
|
return (this.ngControl && this.ngControl.invalid && (this.ngControl.touched || this.ngControl.dirty));
|
|
@@ -3531,85 +3540,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
3531
3540
|
type: Input
|
|
3532
3541
|
}] } });
|
|
3533
3542
|
|
|
3534
|
-
let UserEnableButtonComponent = class UserEnableButtonComponent {
|
|
3535
|
-
constructor(service, alertService, currentUserService, dialog) {
|
|
3536
|
-
this.service = service;
|
|
3537
|
-
this.alertService = alertService;
|
|
3538
|
-
this.currentUserService = currentUserService;
|
|
3539
|
-
this.dialog = dialog;
|
|
3540
|
-
this.isUseIcons = false;
|
|
3541
|
-
this.onSave = new EventEmitter();
|
|
3542
|
-
}
|
|
3543
|
-
ngOnInit() {
|
|
3544
|
-
this.currentUser = this.currentUserService.getUser();
|
|
3545
|
-
}
|
|
3546
|
-
enableUser() {
|
|
3547
|
-
if (this.currentUser.id === this?.user?.id) {
|
|
3548
|
-
this.alertService.addAlert('Current user cannot be changed', 'warn');
|
|
3549
|
-
return;
|
|
3550
|
-
}
|
|
3551
|
-
const dialogRef = this.dialog.open(ActionPopupComponent, {
|
|
3552
|
-
width: "400px",
|
|
3553
|
-
data: {
|
|
3554
|
-
title: 'Enable User',
|
|
3555
|
-
message: 'This will re-enable the user’s account. Are you sure you want to continue?'
|
|
3556
|
-
},
|
|
3557
|
-
autoFocus: false
|
|
3558
|
-
});
|
|
3559
|
-
dialogRef.afterClosed().subscribe(async (result) => {
|
|
3560
|
-
if (result) {
|
|
3561
|
-
//Action confirmed
|
|
3562
|
-
this.service.enable(this.user).then(res => {
|
|
3563
|
-
this.onSave.emit(this.user);
|
|
3564
|
-
});
|
|
3565
|
-
}
|
|
3566
|
-
});
|
|
3567
|
-
}
|
|
3568
|
-
disableUser() {
|
|
3569
|
-
if (this.currentUser.id === this?.user?.id) {
|
|
3570
|
-
this.alertService.addAlert('Current user cannot be changed', 'warn');
|
|
3571
|
-
return;
|
|
3572
|
-
}
|
|
3573
|
-
const dialogRef = this.dialog.open(ActionPopupComponent, {
|
|
3574
|
-
width: "400px",
|
|
3575
|
-
data: {
|
|
3576
|
-
title: 'Disable User',
|
|
3577
|
-
message: 'Disabling this user’s account will restrict all of their their access to your company. Are you sure you want to continue?'
|
|
3578
|
-
},
|
|
3579
|
-
autoFocus: false
|
|
3580
|
-
});
|
|
3581
|
-
dialogRef.afterClosed().subscribe(async (result) => {
|
|
3582
|
-
if (result) {
|
|
3583
|
-
//Action confirmed
|
|
3584
|
-
this.service.disable(this.user).then(res => {
|
|
3585
|
-
this.onSave.emit(this.user);
|
|
3586
|
-
});
|
|
3587
|
-
}
|
|
3588
|
-
});
|
|
3589
|
-
}
|
|
3590
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UserEnableButtonComponent, deps: [{ token: UserService }, { token: AlertService }, { token: CurrentUserService }, { token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3591
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: UserEnableButtonComponent, selector: "app-user-enable-button", inputs: { user: "user", isUseIcons: "isUseIcons" }, outputs: { onSave: "onSave" }, ngImport: i0, template: "<ng-container *ngIf=\"!isUseIcons\">\n <button mat-stroked-button color=\"warn\" *ngIf=\"user?.user_client?.is_enabled\n && user?.id !== currentUser?.id\n && currentUserService.hasPermission('user_disable')\" (click)=\"disableUser()\">\n Disable\n </button>\n <button mat-raised-button color=\"primary\" *ngIf=\"!user?.user_client?.is_enabled\n&& user?.id !== currentUser?.id\n&& currentUserService.hasPermission('user_enable')\" (click)=\"enableUser()\">\n Enable\n </button>\n</ng-container>\n\n<ng-container *ngIf=\"isUseIcons\">\n <button mat-icon-button class=\"text-danger\" *ngIf=\"user?.user_client?.is_enabled\n && user?.id !== currentUser?.id\n && currentUserService.hasPermission('user_disable')\" (click)=\"disableUser()\" matTooltip=\"Disable User\">\n <mat-icon>person_off</mat-icon>\n </button>\n <button mat-icon-button class=\"text-success\" *ngIf=\"!user?.user_client?.is_enabled\n&& user?.id !== currentUser?.id\n&& currentUserService.hasPermission('user_enable')\" (click)=\"enableUser()\" matTooltip=\"Enable User\">\n <mat-icon>task_alt</mat-icon>\n </button>\n</ng-container>", dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i11$2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
|
|
3592
|
-
};
|
|
3593
|
-
UserEnableButtonComponent = __decorate([
|
|
3594
|
-
UntilDestroy()
|
|
3595
|
-
/**
|
|
3596
|
-
* Component to view the set of users
|
|
3597
|
-
*
|
|
3598
|
-
* @author Joshua Kissoon
|
|
3599
|
-
* @since 20170710
|
|
3600
|
-
*/
|
|
3601
|
-
], UserEnableButtonComponent);
|
|
3602
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UserEnableButtonComponent, decorators: [{
|
|
3603
|
-
type: Component,
|
|
3604
|
-
args: [{ selector: 'app-user-enable-button', template: "<ng-container *ngIf=\"!isUseIcons\">\n <button mat-stroked-button color=\"warn\" *ngIf=\"user?.user_client?.is_enabled\n && user?.id !== currentUser?.id\n && currentUserService.hasPermission('user_disable')\" (click)=\"disableUser()\">\n Disable\n </button>\n <button mat-raised-button color=\"primary\" *ngIf=\"!user?.user_client?.is_enabled\n&& user?.id !== currentUser?.id\n&& currentUserService.hasPermission('user_enable')\" (click)=\"enableUser()\">\n Enable\n </button>\n</ng-container>\n\n<ng-container *ngIf=\"isUseIcons\">\n <button mat-icon-button class=\"text-danger\" *ngIf=\"user?.user_client?.is_enabled\n && user?.id !== currentUser?.id\n && currentUserService.hasPermission('user_disable')\" (click)=\"disableUser()\" matTooltip=\"Disable User\">\n <mat-icon>person_off</mat-icon>\n </button>\n <button mat-icon-button class=\"text-success\" *ngIf=\"!user?.user_client?.is_enabled\n&& user?.id !== currentUser?.id\n&& currentUserService.hasPermission('user_enable')\" (click)=\"enableUser()\" matTooltip=\"Enable User\">\n <mat-icon>task_alt</mat-icon>\n </button>\n</ng-container>" }]
|
|
3605
|
-
}], ctorParameters: () => [{ type: UserService }, { type: AlertService }, { type: CurrentUserService }, { type: i1.MatDialog }], propDecorators: { user: [{
|
|
3606
|
-
type: Input
|
|
3607
|
-
}], isUseIcons: [{
|
|
3608
|
-
type: Input
|
|
3609
|
-
}], onSave: [{
|
|
3610
|
-
type: Output
|
|
3611
|
-
}] } });
|
|
3612
|
-
|
|
3613
3543
|
/**
|
|
3614
3544
|
* Registry file to maintain the custom icons SVGs
|
|
3615
3545
|
*/
|
|
@@ -3695,6 +3625,7 @@ class TechlifyIconComponent {
|
|
|
3695
3625
|
delete: 'fas fa-trash',
|
|
3696
3626
|
import: 'fas fa-file-import',
|
|
3697
3627
|
export: 'fas fa-file-excel',
|
|
3628
|
+
print: 'fas fa-print',
|
|
3698
3629
|
pdf: 'fas fa-file-pdf',
|
|
3699
3630
|
history: 'fas fa-clock',
|
|
3700
3631
|
copy: 'fas fa-copy',
|
|
@@ -3707,7 +3638,11 @@ class TechlifyIconComponent {
|
|
|
3707
3638
|
table: 'fas fa-table',
|
|
3708
3639
|
multi_calendar: 'fas fa-calendar-alt',
|
|
3709
3640
|
link: 'fas fa-link',
|
|
3710
|
-
reset: '
|
|
3641
|
+
reset: 'fas fa-redo',
|
|
3642
|
+
phone: 'fas fa-phone',
|
|
3643
|
+
location: 'fas fa-map-marker-alt',
|
|
3644
|
+
unlink: 'fas fa-unlink',
|
|
3645
|
+
disable_user: 'fas fa-user-slash'
|
|
3711
3646
|
};
|
|
3712
3647
|
// Map size input to CSS classes
|
|
3713
3648
|
this.sizeMap = {
|
|
@@ -3739,6 +3674,85 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
3739
3674
|
type: Input
|
|
3740
3675
|
}] } });
|
|
3741
3676
|
|
|
3677
|
+
let UserEnableButtonComponent = class UserEnableButtonComponent {
|
|
3678
|
+
constructor(service, alertService, currentUserService, dialog) {
|
|
3679
|
+
this.service = service;
|
|
3680
|
+
this.alertService = alertService;
|
|
3681
|
+
this.currentUserService = currentUserService;
|
|
3682
|
+
this.dialog = dialog;
|
|
3683
|
+
this.isUseIcons = false;
|
|
3684
|
+
this.onSave = new EventEmitter();
|
|
3685
|
+
}
|
|
3686
|
+
ngOnInit() {
|
|
3687
|
+
this.currentUser = this.currentUserService.getUser();
|
|
3688
|
+
}
|
|
3689
|
+
enableUser() {
|
|
3690
|
+
if (this.currentUser.id === this?.user?.id) {
|
|
3691
|
+
this.alertService.addAlert('Current user cannot be changed', 'warn');
|
|
3692
|
+
return;
|
|
3693
|
+
}
|
|
3694
|
+
const dialogRef = this.dialog.open(ActionPopupComponent, {
|
|
3695
|
+
width: "400px",
|
|
3696
|
+
data: {
|
|
3697
|
+
title: 'Enable User',
|
|
3698
|
+
message: 'This will re-enable the user’s account. Are you sure you want to continue?'
|
|
3699
|
+
},
|
|
3700
|
+
autoFocus: false
|
|
3701
|
+
});
|
|
3702
|
+
dialogRef.afterClosed().subscribe(async (result) => {
|
|
3703
|
+
if (result) {
|
|
3704
|
+
//Action confirmed
|
|
3705
|
+
this.service.enable(this.user).then(res => {
|
|
3706
|
+
this.onSave.emit(this.user);
|
|
3707
|
+
});
|
|
3708
|
+
}
|
|
3709
|
+
});
|
|
3710
|
+
}
|
|
3711
|
+
disableUser() {
|
|
3712
|
+
if (this.currentUser.id === this?.user?.id) {
|
|
3713
|
+
this.alertService.addAlert('Current user cannot be changed', 'warn');
|
|
3714
|
+
return;
|
|
3715
|
+
}
|
|
3716
|
+
const dialogRef = this.dialog.open(ActionPopupComponent, {
|
|
3717
|
+
width: "400px",
|
|
3718
|
+
data: {
|
|
3719
|
+
title: 'Disable User',
|
|
3720
|
+
message: 'Disabling this user’s account will restrict all of their their access to your company. Are you sure you want to continue?'
|
|
3721
|
+
},
|
|
3722
|
+
autoFocus: false
|
|
3723
|
+
});
|
|
3724
|
+
dialogRef.afterClosed().subscribe(async (result) => {
|
|
3725
|
+
if (result) {
|
|
3726
|
+
//Action confirmed
|
|
3727
|
+
this.service.disable(this.user).then(res => {
|
|
3728
|
+
this.onSave.emit(this.user);
|
|
3729
|
+
});
|
|
3730
|
+
}
|
|
3731
|
+
});
|
|
3732
|
+
}
|
|
3733
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UserEnableButtonComponent, deps: [{ token: UserService }, { token: AlertService }, { token: CurrentUserService }, { token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3734
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: UserEnableButtonComponent, selector: "app-user-enable-button", inputs: { user: "user", isUseIcons: "isUseIcons" }, outputs: { onSave: "onSave" }, ngImport: i0, template: "<ng-container *ngIf=\"!isUseIcons\">\n <button mat-stroked-button color=\"warn\" *ngIf=\"user?.user_client?.is_enabled\n && user?.id !== currentUser?.id\n && currentUserService.hasPermission('user_disable')\" (click)=\"disableUser()\">\n Disable\n </button>\n <button mat-raised-button color=\"primary\" *ngIf=\"!user?.user_client?.is_enabled\n&& user?.id !== currentUser?.id\n&& currentUserService.hasPermission('user_enable')\" (click)=\"enableUser()\">\n Enable\n </button>\n</ng-container>\n\n<ng-container *ngIf=\"isUseIcons\">\n <app-techlify-icon name=\"disable_user\" class=\"text-danger clickable\" *ngIf=\"user?.user_client?.is_enabled\n && user?.id !== currentUser?.id\n && currentUserService.hasPermission('user_disable')\" (click)=\"disableUser()\"\n matTooltip=\"Disable User\"></app-techlify-icon>\n <app-techlify-icon name=\"activate\" class=\"text-success clickable\" *ngIf=\"!user?.user_client?.is_enabled\n&& user?.id !== currentUser?.id\n&& currentUserService.hasPermission('user_enable')\" (click)=\"enableUser()\"\n matTooltip=\"Enable User\"></app-techlify-icon>\n</ng-container>", dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i11$2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: TechlifyIconComponent, selector: "app-techlify-icon", inputs: ["name", "size"] }] }); }
|
|
3735
|
+
};
|
|
3736
|
+
UserEnableButtonComponent = __decorate([
|
|
3737
|
+
UntilDestroy()
|
|
3738
|
+
/**
|
|
3739
|
+
* Component to view the set of users
|
|
3740
|
+
*
|
|
3741
|
+
* @author Joshua Kissoon
|
|
3742
|
+
* @since 20170710
|
|
3743
|
+
*/
|
|
3744
|
+
], UserEnableButtonComponent);
|
|
3745
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UserEnableButtonComponent, decorators: [{
|
|
3746
|
+
type: Component,
|
|
3747
|
+
args: [{ selector: 'app-user-enable-button', template: "<ng-container *ngIf=\"!isUseIcons\">\n <button mat-stroked-button color=\"warn\" *ngIf=\"user?.user_client?.is_enabled\n && user?.id !== currentUser?.id\n && currentUserService.hasPermission('user_disable')\" (click)=\"disableUser()\">\n Disable\n </button>\n <button mat-raised-button color=\"primary\" *ngIf=\"!user?.user_client?.is_enabled\n&& user?.id !== currentUser?.id\n&& currentUserService.hasPermission('user_enable')\" (click)=\"enableUser()\">\n Enable\n </button>\n</ng-container>\n\n<ng-container *ngIf=\"isUseIcons\">\n <app-techlify-icon name=\"disable_user\" class=\"text-danger clickable\" *ngIf=\"user?.user_client?.is_enabled\n && user?.id !== currentUser?.id\n && currentUserService.hasPermission('user_disable')\" (click)=\"disableUser()\"\n matTooltip=\"Disable User\"></app-techlify-icon>\n <app-techlify-icon name=\"activate\" class=\"text-success clickable\" *ngIf=\"!user?.user_client?.is_enabled\n&& user?.id !== currentUser?.id\n&& currentUserService.hasPermission('user_enable')\" (click)=\"enableUser()\"\n matTooltip=\"Enable User\"></app-techlify-icon>\n</ng-container>" }]
|
|
3748
|
+
}], ctorParameters: () => [{ type: UserService }, { type: AlertService }, { type: CurrentUserService }, { type: i1.MatDialog }], propDecorators: { user: [{
|
|
3749
|
+
type: Input
|
|
3750
|
+
}], isUseIcons: [{
|
|
3751
|
+
type: Input
|
|
3752
|
+
}], onSave: [{
|
|
3753
|
+
type: Output
|
|
3754
|
+
}] } });
|
|
3755
|
+
|
|
3742
3756
|
class MaterialModule {
|
|
3743
3757
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MaterialModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
3744
3758
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: MaterialModule, exports: [MatButtonModule,
|
|
@@ -3928,7 +3942,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
3928
3942
|
], template: "<app-techlify-icon role='button' name='delete' (click)=\"open()\"></app-techlify-icon>" }]
|
|
3929
3943
|
}], ctorParameters: () => [{ type: i1.MatDialog }, { type: AlertService }, { type: ErrorHandlerService }] });
|
|
3930
3944
|
|
|
3931
|
-
let UsersViewAllComponent = class UsersViewAllComponent extends
|
|
3945
|
+
let UsersViewAllComponent = class UsersViewAllComponent extends TechlifyListComponent {
|
|
3932
3946
|
constructor(alertService, currentUserService, userConfigService, dialog, service, fb) {
|
|
3933
3947
|
super();
|
|
3934
3948
|
this.alertService = alertService;
|
|
@@ -3958,6 +3972,14 @@ let UsersViewAllComponent = class UsersViewAllComponent extends TechlifyListingC
|
|
|
3958
3972
|
status: { multiple: true },
|
|
3959
3973
|
user_type_ids: { multiple: true }
|
|
3960
3974
|
};
|
|
3975
|
+
if (this.config?.scrollContainer) {
|
|
3976
|
+
// Set to null if scroll has to be done from root
|
|
3977
|
+
this.scrollContainer = this.config?.scrollContainer === 'root' ? null : this.config?.scrollContainer;
|
|
3978
|
+
}
|
|
3979
|
+
}
|
|
3980
|
+
ngOnInit() {
|
|
3981
|
+
//Initialize form in OnInit.
|
|
3982
|
+
//On constructor Input() variables will be null, that will introduce a issue for admin view
|
|
3961
3983
|
this.filterForm = this.fb.group({
|
|
3962
3984
|
search: [''],
|
|
3963
3985
|
role_ids: [''],
|
|
@@ -3968,12 +3990,6 @@ let UsersViewAllComponent = class UsersViewAllComponent extends TechlifyListingC
|
|
|
3968
3990
|
client_id: [this.clientId],
|
|
3969
3991
|
user_type_ids: this.userTypeIds.toString()
|
|
3970
3992
|
});
|
|
3971
|
-
if (this.config?.scrollContainer) {
|
|
3972
|
-
// Set to null if scroll has to be done from root
|
|
3973
|
-
this.scrollContainer = this.config?.scrollContainer === 'root' ? null : this.config?.scrollContainer;
|
|
3974
|
-
}
|
|
3975
|
-
}
|
|
3976
|
-
ngOnInit() {
|
|
3977
3993
|
this.currentUser = this.currentUserService.getUser();
|
|
3978
3994
|
this.patchFiltersFromRoute();
|
|
3979
3995
|
this.listenFilterChanges();
|
|
@@ -4045,14 +4061,14 @@ let UsersViewAllComponent = class UsersViewAllComponent extends TechlifyListingC
|
|
|
4045
4061
|
.subscribe(_ => this.alertService.addAlert('Password reset email sent', 'success'));
|
|
4046
4062
|
}
|
|
4047
4063
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UsersViewAllComponent, deps: [{ token: AlertService }, { token: CurrentUserService }, { token: UserConfigService }, { token: i1.MatDialog }, { token: UserService }, { token: i1$5.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4048
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: UsersViewAllComponent, selector: "app-users-view-all", inputs: { clientId: "clientId", userTypeIds: "userTypeIds", title: "title", isAppAdminUser: "isAppAdminUser" }, usesInheritance: true, ngImport: i0, template: "<div [ngClass]=\"{'m-4':config?.userConfig?.showDefaultMargin}\">\n <mat-card class=\"mb-2\">\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-2\">\n <section class=\"d-flex justify-content-start align-items-center gap-2\">\n <h5 class=\"mb-0\"> {{ title }} </h5>\n <mat-icon class=\"cursor-pointer\" matTooltip=\"New User\"\n *ngIf=\"config?.userConfig?.showAddUser && currentUserService?.hasPermission('user_create')\"\n (click)=\"createOrEditUser()\">add</mat-icon>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../import']\"\n *ngIf=\"config?.userConfig?.showImportButton && currentUserService?.hasPermission('user_create')\">\n Import User\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../roles']\" *ngIf=\"config?.userConfig?.showRoles\">\n <mat-icon>people</mat-icon>\n Roles\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../role-permissions']\"\n *ngIf=\"config?.userConfig?.showPermissions\">\n <mat-icon>lock</mat-icon>\n Role Permissions\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../configurations']\"\n *ngIf=\"config?.userConfig?.showConfigurations && currentUser?.user_type_id === 2\">\n <mat-icon>\n <span class=\"material-icons-outlined\">\n toggle_on\n </span>\n </mat-icon>\n Configurations\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../restrictors']\"\n *ngIf=\"config?.userConfig?.showRestrictors && currentUser?.user_type_id === 2\">\n <mat-icon>\n <span class=\"material-icons-outlined\">\n vpn_lock\n </span>\n </mat-icon>\n Restrictors\n </button>\n </section>\n <form [formGroup]=\"filterForm\" class=\"d-flex flex-row justify-content-center align-items-center gap-2\">\n <mat-form-field appearance=\"outline\" class='fl-md'>\n <mat-label>Search</mat-label>\n <input autocomplete=\"off\" matInput type=\"text\" name=\"search\" placeholder=\"Search by name, email\"\n formControlName=\"search\">\n </mat-form-field>\n <mat-form-field appearance=\"outline\" class='fl-sm'>\n <mat-label>Role</mat-label>\n <app-searchable-selector apiUrl=\"api/roles\" [multiple]=\"true\" formControlName=\"role_ids\"\n titleField=\"label\"></app-searchable-selector>\n </mat-form-field>\n <mat-button-toggle-group class='mb-3' [hideSingleSelectionIndicator]=\"true\" [hideMultipleSelectionIndicator]=\"true\"\n formControlName=\"status\" multiple>\n <mat-button-toggle value=\"enabled\">Enabled</mat-button-toggle>\n <mat-button-toggle value=\"disabled\">Disabled</mat-button-toggle>\n </mat-button-toggle-group>\n </form>\n </mat-card-content>\n </mat-card>\n <mat-card class=\"mt-2 p-0\">\n <mat-card-content>\n <table mat-table [dataSource]=\"models\" class=\"w-100\" aria-describedby=\"Users\" infiniteScroll\n [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\" [infiniteScrollContainer]=\"scrollContainer\"\n [fromRoot]=\"true\" (scrolled)=\"onScroll()\" matSort (matSortChange)=\"sortColumn($event)\">\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let element; let i = index;\"> {{ i + 1 }} </td>\n </ng-container>\n\n <!-- Name Column -->\n <ng-container matColumnDef=\"name\">\n <th mat-header-cell mat-sort-header=\"name\" *matHeaderCellDef> Name </th>\n <td mat-cell *matCellDef=\"let element\">\n <a [routerLink]=\"[element?.id]\" class=\"text-decoration-none\">\n {{ element.name }}\n </a>\n <p class=\"mb-0 text-secondary\">\n <!-- !element?.user_client condition added to check if user has user_client record -->\n {{ !element?.user_client ? '' : element?.user_client?.is_enabled ? 'Enabled' : 'Disabled' }}\n </p>\n </td>\n </ng-container>\n\n <!-- Email Column -->\n <ng-container matColumnDef=\"email\">\n <th mat-header-cell mat-sort-header=\"email\" *matHeaderCellDef> Email </th>\n <td mat-cell *matCellDef=\"let element\"> {{element.email}} </td>\n </ng-container>\n\n <!-- Type Column -->\n <ng-container matColumnDef=\"type\">\n <th mat-header-cell mat-sort-header=\"user_type_id\" *matHeaderCellDef> User Type </th>\n <td mat-cell *matCellDef=\"let element\"> {{ getUserType(element) }} </td>\n </ng-container>\n\n <!-- Roles Column -->\n <ng-container matColumnDef=\"roles\">\n <th mat-header-cell *matHeaderCellDef> Role </th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex justify-content-start align-items-center gap-1 flex-wrap text-light\">\n <span *ngFor=\"let role of element?.roles\" class=\"badge bg-secondary\">\n {{ role?.label }}\n </span>\n </div>\n </td>\n </ng-container>\n\n <!-- Last Login Column -->\n <ng-container matColumnDef=\"last_login\">\n <th mat-header-cell *matHeaderCellDef> Last Login </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.last_login | date:'medium' }}</td>\n </ng-container>\n\n <!-- Added By Column -->\n <ng-container matColumnDef=\"added_by\">\n <th mat-header-cell *matHeaderCellDef> Added By </th>\n <td mat-cell *matCellDef=\"let element\">\n <p class=\"mb-0\">{{ element?.creator?.name }}</p>\n <p class=\"text-secondary\">{{ element?.created_at | date }}</p>\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Action </th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex flex-row justify-content-start align-items-center gap-2 text-secondary\">\n <app-techlify-icon role='button' name=\"view\" class=\"clickable\" [routerLink]=\"[getUserViewRoute(element)]\"\n matTooltip=\"View\"></app-techlify-icon>\n\n <app-techlify-icon role='button' *ngIf=\"currentUserService.hasPermission('user_update')\" name=\"edit\"\n class=\"clickable\" (click)=\"createOrEditUser(element)\" matTooltip=\"Edit\"></app-techlify-icon>\n\n <app-techlify-delete-button\n *ngIf=\"currentUserService.hasPermission('user_delete') && element?.id !== currentUser?.id\"\n [model]=\"element\" [service]=\"service\" [data]=\"{title: element?.name, type: 'user'}\"\n (deleted)=\"reload()\"></app-techlify-delete-button>\n\n <app-techlify-icon role='button'\n *ngIf=\"currentUserService.hasPermission('techlify_rbac.user.reset_password')\" name=\"reset\"\n class=\"clickable\" (click)=\"resetPassword(element)\" matTooltip=\"Reset User Password\"></app-techlify-icon>\n\n <app-user-enable-button [user]=\"element\" (onSave)=\"reload()\"></app-user-enable-button>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n </mat-card-content>\n </mat-card>\n</div>", dependencies: [{ kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i7$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7$2.MatLabel, selector: "mat-label" }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i9$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i11.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i11.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i9.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i9.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i9.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i9.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i9.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i9.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i9.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i9.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i9.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i9.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i11$2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i3$1.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i3$1.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "component", type: i11$1.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i2.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: i1$5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i6$1.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "component", type: SearchableSelectorComponent, selector: "app-searchable-selector", inputs: ["valueField", "titleField", "subtitleField", "apiUrl", "multiple", "selectedValue", "enableSearch", "add", "addConfig", "edit", "editConfig", "sort", "sortBy", "searchField", "itemComponent", "items", "apiDataProperty", "cache", "perPage", "inDataSearch", "panelWidth", "focusSearchOnOpen", "isEmitInitialEvent", "required", "disabled", "value"], outputs: ["selectedValueChange", "selectionChange", "itemsChange"] }, { kind: "component", type: UserEnableButtonComponent, selector: "app-user-enable-button", inputs: ["user", "isUseIcons"], outputs: ["onSave"] }, { kind: "component", type: TechlifyIconComponent, selector: "app-techlify-icon", inputs: ["name", "size"] }, { kind: "component", type: TechlifyDeleteButtonComponent, selector: "app-techlify-delete-button", inputs: ["data", "model", "message", "service"], outputs: ["deleted"] }, { kind: "pipe", type: i2$1.DatePipe, name: "date" }] }); }
|
|
4064
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: UsersViewAllComponent, selector: "app-users-view-all", inputs: { clientId: "clientId", userTypeIds: "userTypeIds", title: "title", isAppAdminUser: "isAppAdminUser" }, usesInheritance: true, ngImport: i0, template: "<div [ngClass]=\"{'m-4':config?.userConfig?.showDefaultMargin}\">\n <mat-card class=\"mb-2\">\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-2\">\n <section class=\"d-flex justify-content-start align-items-center gap-2\">\n <h5 class=\"mb-0\"> {{ title }} </h5>\n <mat-icon class=\"cursor-pointer\" matTooltip=\"New User\"\n *ngIf=\"config?.userConfig?.showAddUser && currentUserService?.hasPermission('user_create')\"\n (click)=\"createOrEditUser()\">add</mat-icon>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../import']\"\n *ngIf=\"config?.userConfig?.showImportButton && currentUserService?.hasPermission('user_create')\">\n Import User\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../roles']\" *ngIf=\"config?.userConfig?.showRoles\">\n <mat-icon>people</mat-icon>\n Roles\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../role-permissions']\"\n *ngIf=\"config?.userConfig?.showPermissions\">\n <mat-icon>lock</mat-icon>\n Role Permissions\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../configurations']\"\n *ngIf=\"config?.userConfig?.showConfigurations && currentUser?.user_type_id === 2\">\n <mat-icon>\n <span class=\"material-icons-outlined\">\n toggle_on\n </span>\n </mat-icon>\n Configurations\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../restrictors']\"\n *ngIf=\"config?.userConfig?.showRestrictors && currentUser?.user_type_id === 2\">\n <mat-icon>\n <span class=\"material-icons-outlined\">\n vpn_lock\n </span>\n </mat-icon>\n Restrictors\n </button>\n </section>\n <form [formGroup]=\"filterForm\" class=\"d-flex flex-row justify-content-center align-items-center gap-2\">\n <mat-form-field appearance=\"outline\" class='fl-md'>\n <mat-label>Search</mat-label>\n <input autocomplete=\"off\" matInput type=\"text\" name=\"search\" placeholder=\"Search by name, email\"\n formControlName=\"search\">\n </mat-form-field>\n <mat-form-field appearance=\"outline\" class='fl-sm'>\n <mat-label>Role</mat-label>\n <app-searchable-selector apiUrl=\"api/roles\" [multiple]=\"true\" formControlName=\"role_ids\"\n titleField=\"label\"></app-searchable-selector>\n </mat-form-field>\n <mat-button-toggle-group class='mb-4' [hideSingleSelectionIndicator]=\"true\"\n [hideMultipleSelectionIndicator]=\"true\" formControlName=\"status\" multiple>\n <mat-button-toggle value=\"enabled\">Enabled</mat-button-toggle>\n <mat-button-toggle value=\"disabled\">Disabled</mat-button-toggle>\n </mat-button-toggle-group>\n </form>\n </mat-card-content>\n </mat-card>\n <mat-card class=\"mt-2 p-0\">\n <mat-card-content>\n <table mat-table [dataSource]=\"models\" class=\"w-100\" aria-describedby=\"Users\" infiniteScroll\n [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\" [infiniteScrollContainer]=\"scrollContainer\"\n [fromRoot]=\"true\" (scrolled)=\"onScroll()\" matSort (matSortChange)=\"sortColumn($event)\">\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let element; let i = index;\"> {{ i + 1 }} </td>\n </ng-container>\n\n <!-- Name Column -->\n <ng-container matColumnDef=\"name\">\n <th mat-header-cell mat-sort-header=\"name\" *matHeaderCellDef> Name </th>\n <td mat-cell *matCellDef=\"let element\">\n <a [routerLink]=\"[element?.id]\" class=\"text-decoration-none\">\n {{ element.name }}\n </a>\n <p class=\"mb-0 text-secondary\">\n <!-- !element?.user_client condition added to check if user has user_client record -->\n {{ !element?.user_client ? '' : element?.user_client?.is_enabled ? 'Enabled' : 'Disabled' }}\n </p>\n </td>\n </ng-container>\n\n <!-- Email Column -->\n <ng-container matColumnDef=\"email\">\n <th mat-header-cell mat-sort-header=\"email\" *matHeaderCellDef> Email </th>\n <td mat-cell *matCellDef=\"let element\"> {{element.email}} </td>\n </ng-container>\n\n <!-- Type Column -->\n <ng-container matColumnDef=\"type\">\n <th mat-header-cell mat-sort-header=\"user_type_id\" *matHeaderCellDef> User Type </th>\n <td mat-cell *matCellDef=\"let element\"> {{ getUserType(element) }} </td>\n </ng-container>\n\n <!-- Roles Column -->\n <ng-container matColumnDef=\"roles\">\n <th mat-header-cell *matHeaderCellDef> Role </th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex justify-content-start align-items-center gap-1 flex-wrap text-light\">\n <span *ngFor=\"let role of element?.roles\" class=\"badge bg-secondary\">\n {{ role?.label }}\n </span>\n </div>\n </td>\n </ng-container>\n\n <!-- Last Login Column -->\n <ng-container matColumnDef=\"last_login\">\n <th mat-header-cell *matHeaderCellDef> Last Login </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.last_login | date:'medium' }}</td>\n </ng-container>\n\n <!-- Added By Column -->\n <ng-container matColumnDef=\"added_by\">\n <th mat-header-cell *matHeaderCellDef> Added By </th>\n <td mat-cell *matCellDef=\"let element\">\n <p class=\"mb-0\">{{ element?.creator?.name }}</p>\n <p class=\"text-secondary\">{{ element?.created_at | date }}</p>\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Action </th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex flex-row justify-content-start align-items-center gap-2 text-secondary\">\n <app-techlify-icon role='button' name=\"view\" class=\"clickable\" [routerLink]=\"[getUserViewRoute(element)]\"\n matTooltip=\"View\"></app-techlify-icon>\n\n <app-techlify-icon role='button' *ngIf=\"currentUserService.hasPermission('user_update')\" name=\"edit\"\n class=\"clickable\" (click)=\"createOrEditUser(element)\" matTooltip=\"Edit\"></app-techlify-icon>\n\n <app-techlify-delete-button\n *ngIf=\"currentUserService.hasPermission('user_delete') && element?.id !== currentUser?.id\"\n [model]=\"element\" [service]=\"service\" [data]=\"{title: element?.name, type: 'user'}\"\n (deleted)=\"reload()\"></app-techlify-delete-button>\n\n <app-techlify-icon role='button'\n *ngIf=\"currentUserService.hasPermission('techlify_rbac.user.reset_password')\" name=\"reset\"\n class=\"clickable\" (click)=\"resetPassword(element)\" matTooltip=\"Reset User Password\"></app-techlify-icon>\n\n <app-user-enable-button [user]=\"element\" (onSave)=\"reload()\"></app-user-enable-button>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n </mat-card-content>\n </mat-card>\n</div>", dependencies: [{ kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i7$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7$2.MatLabel, selector: "mat-label" }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i9$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i11.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i11.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i9.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i9.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i9.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i9.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i9.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i9.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i9.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i9.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i9.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i9.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i11$2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i3$1.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i3$1.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "component", type: i11$1.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i2.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: i1$5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i6$1.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "component", type: SearchableSelectorComponent, selector: "app-searchable-selector", inputs: ["valueField", "titleField", "subtitleField", "apiUrl", "multiple", "selectedValue", "enableSearch", "add", "addConfig", "edit", "editConfig", "sort", "sortBy", "searchField", "itemComponent", "items", "apiDataProperty", "cache", "perPage", "inDataSearch", "panelWidth", "focusSearchOnOpen", "isEmitInitialEvent", "required", "disabled", "value"], outputs: ["selectedValueChange", "selectionChange", "itemsChange"] }, { kind: "component", type: UserEnableButtonComponent, selector: "app-user-enable-button", inputs: ["user", "isUseIcons"], outputs: ["onSave"] }, { kind: "component", type: TechlifyIconComponent, selector: "app-techlify-icon", inputs: ["name", "size"] }, { kind: "component", type: TechlifyDeleteButtonComponent, selector: "app-techlify-delete-button", inputs: ["data", "model", "message", "service"], outputs: ["deleted"] }, { kind: "pipe", type: i2$1.DatePipe, name: "date" }] }); }
|
|
4049
4065
|
};
|
|
4050
4066
|
UsersViewAllComponent = __decorate([
|
|
4051
4067
|
UntilDestroy()
|
|
4052
4068
|
], UsersViewAllComponent);
|
|
4053
4069
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UsersViewAllComponent, decorators: [{
|
|
4054
4070
|
type: Component,
|
|
4055
|
-
args: [{ selector: 'app-users-view-all', template: "<div [ngClass]=\"{'m-4':config?.userConfig?.showDefaultMargin}\">\n <mat-card class=\"mb-2\">\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-2\">\n <section class=\"d-flex justify-content-start align-items-center gap-2\">\n <h5 class=\"mb-0\"> {{ title }} </h5>\n <mat-icon class=\"cursor-pointer\" matTooltip=\"New User\"\n *ngIf=\"config?.userConfig?.showAddUser && currentUserService?.hasPermission('user_create')\"\n (click)=\"createOrEditUser()\">add</mat-icon>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../import']\"\n *ngIf=\"config?.userConfig?.showImportButton && currentUserService?.hasPermission('user_create')\">\n Import User\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../roles']\" *ngIf=\"config?.userConfig?.showRoles\">\n <mat-icon>people</mat-icon>\n Roles\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../role-permissions']\"\n *ngIf=\"config?.userConfig?.showPermissions\">\n <mat-icon>lock</mat-icon>\n Role Permissions\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../configurations']\"\n *ngIf=\"config?.userConfig?.showConfigurations && currentUser?.user_type_id === 2\">\n <mat-icon>\n <span class=\"material-icons-outlined\">\n toggle_on\n </span>\n </mat-icon>\n Configurations\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../restrictors']\"\n *ngIf=\"config?.userConfig?.showRestrictors && currentUser?.user_type_id === 2\">\n <mat-icon>\n <span class=\"material-icons-outlined\">\n vpn_lock\n </span>\n </mat-icon>\n Restrictors\n </button>\n </section>\n <form [formGroup]=\"filterForm\" class=\"d-flex flex-row justify-content-center align-items-center gap-2\">\n <mat-form-field appearance=\"outline\" class='fl-md'>\n <mat-label>Search</mat-label>\n <input autocomplete=\"off\" matInput type=\"text\" name=\"search\" placeholder=\"Search by name, email\"\n formControlName=\"search\">\n </mat-form-field>\n <mat-form-field appearance=\"outline\" class='fl-sm'>\n <mat-label>Role</mat-label>\n <app-searchable-selector apiUrl=\"api/roles\" [multiple]=\"true\" formControlName=\"role_ids\"\n titleField=\"label\"></app-searchable-selector>\n </mat-form-field>\n <mat-button-toggle-group class='mb-
|
|
4071
|
+
args: [{ selector: 'app-users-view-all', template: "<div [ngClass]=\"{'m-4':config?.userConfig?.showDefaultMargin}\">\n <mat-card class=\"mb-2\">\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-2\">\n <section class=\"d-flex justify-content-start align-items-center gap-2\">\n <h5 class=\"mb-0\"> {{ title }} </h5>\n <mat-icon class=\"cursor-pointer\" matTooltip=\"New User\"\n *ngIf=\"config?.userConfig?.showAddUser && currentUserService?.hasPermission('user_create')\"\n (click)=\"createOrEditUser()\">add</mat-icon>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../import']\"\n *ngIf=\"config?.userConfig?.showImportButton && currentUserService?.hasPermission('user_create')\">\n Import User\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../roles']\" *ngIf=\"config?.userConfig?.showRoles\">\n <mat-icon>people</mat-icon>\n Roles\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../role-permissions']\"\n *ngIf=\"config?.userConfig?.showPermissions\">\n <mat-icon>lock</mat-icon>\n Role Permissions\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../configurations']\"\n *ngIf=\"config?.userConfig?.showConfigurations && currentUser?.user_type_id === 2\">\n <mat-icon>\n <span class=\"material-icons-outlined\">\n toggle_on\n </span>\n </mat-icon>\n Configurations\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../restrictors']\"\n *ngIf=\"config?.userConfig?.showRestrictors && currentUser?.user_type_id === 2\">\n <mat-icon>\n <span class=\"material-icons-outlined\">\n vpn_lock\n </span>\n </mat-icon>\n Restrictors\n </button>\n </section>\n <form [formGroup]=\"filterForm\" class=\"d-flex flex-row justify-content-center align-items-center gap-2\">\n <mat-form-field appearance=\"outline\" class='fl-md'>\n <mat-label>Search</mat-label>\n <input autocomplete=\"off\" matInput type=\"text\" name=\"search\" placeholder=\"Search by name, email\"\n formControlName=\"search\">\n </mat-form-field>\n <mat-form-field appearance=\"outline\" class='fl-sm'>\n <mat-label>Role</mat-label>\n <app-searchable-selector apiUrl=\"api/roles\" [multiple]=\"true\" formControlName=\"role_ids\"\n titleField=\"label\"></app-searchable-selector>\n </mat-form-field>\n <mat-button-toggle-group class='mb-4' [hideSingleSelectionIndicator]=\"true\"\n [hideMultipleSelectionIndicator]=\"true\" formControlName=\"status\" multiple>\n <mat-button-toggle value=\"enabled\">Enabled</mat-button-toggle>\n <mat-button-toggle value=\"disabled\">Disabled</mat-button-toggle>\n </mat-button-toggle-group>\n </form>\n </mat-card-content>\n </mat-card>\n <mat-card class=\"mt-2 p-0\">\n <mat-card-content>\n <table mat-table [dataSource]=\"models\" class=\"w-100\" aria-describedby=\"Users\" infiniteScroll\n [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\" [infiniteScrollContainer]=\"scrollContainer\"\n [fromRoot]=\"true\" (scrolled)=\"onScroll()\" matSort (matSortChange)=\"sortColumn($event)\">\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let element; let i = index;\"> {{ i + 1 }} </td>\n </ng-container>\n\n <!-- Name Column -->\n <ng-container matColumnDef=\"name\">\n <th mat-header-cell mat-sort-header=\"name\" *matHeaderCellDef> Name </th>\n <td mat-cell *matCellDef=\"let element\">\n <a [routerLink]=\"[element?.id]\" class=\"text-decoration-none\">\n {{ element.name }}\n </a>\n <p class=\"mb-0 text-secondary\">\n <!-- !element?.user_client condition added to check if user has user_client record -->\n {{ !element?.user_client ? '' : element?.user_client?.is_enabled ? 'Enabled' : 'Disabled' }}\n </p>\n </td>\n </ng-container>\n\n <!-- Email Column -->\n <ng-container matColumnDef=\"email\">\n <th mat-header-cell mat-sort-header=\"email\" *matHeaderCellDef> Email </th>\n <td mat-cell *matCellDef=\"let element\"> {{element.email}} </td>\n </ng-container>\n\n <!-- Type Column -->\n <ng-container matColumnDef=\"type\">\n <th mat-header-cell mat-sort-header=\"user_type_id\" *matHeaderCellDef> User Type </th>\n <td mat-cell *matCellDef=\"let element\"> {{ getUserType(element) }} </td>\n </ng-container>\n\n <!-- Roles Column -->\n <ng-container matColumnDef=\"roles\">\n <th mat-header-cell *matHeaderCellDef> Role </th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex justify-content-start align-items-center gap-1 flex-wrap text-light\">\n <span *ngFor=\"let role of element?.roles\" class=\"badge bg-secondary\">\n {{ role?.label }}\n </span>\n </div>\n </td>\n </ng-container>\n\n <!-- Last Login Column -->\n <ng-container matColumnDef=\"last_login\">\n <th mat-header-cell *matHeaderCellDef> Last Login </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.last_login | date:'medium' }}</td>\n </ng-container>\n\n <!-- Added By Column -->\n <ng-container matColumnDef=\"added_by\">\n <th mat-header-cell *matHeaderCellDef> Added By </th>\n <td mat-cell *matCellDef=\"let element\">\n <p class=\"mb-0\">{{ element?.creator?.name }}</p>\n <p class=\"text-secondary\">{{ element?.created_at | date }}</p>\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Action </th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex flex-row justify-content-start align-items-center gap-2 text-secondary\">\n <app-techlify-icon role='button' name=\"view\" class=\"clickable\" [routerLink]=\"[getUserViewRoute(element)]\"\n matTooltip=\"View\"></app-techlify-icon>\n\n <app-techlify-icon role='button' *ngIf=\"currentUserService.hasPermission('user_update')\" name=\"edit\"\n class=\"clickable\" (click)=\"createOrEditUser(element)\" matTooltip=\"Edit\"></app-techlify-icon>\n\n <app-techlify-delete-button\n *ngIf=\"currentUserService.hasPermission('user_delete') && element?.id !== currentUser?.id\"\n [model]=\"element\" [service]=\"service\" [data]=\"{title: element?.name, type: 'user'}\"\n (deleted)=\"reload()\"></app-techlify-delete-button>\n\n <app-techlify-icon role='button'\n *ngIf=\"currentUserService.hasPermission('techlify_rbac.user.reset_password')\" name=\"reset\"\n class=\"clickable\" (click)=\"resetPassword(element)\" matTooltip=\"Reset User Password\"></app-techlify-icon>\n\n <app-user-enable-button [user]=\"element\" (onSave)=\"reload()\"></app-user-enable-button>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n </mat-card-content>\n </mat-card>\n</div>" }]
|
|
4056
4072
|
}], ctorParameters: () => [{ type: AlertService }, { type: CurrentUserService }, { type: UserConfigService }, { type: i1.MatDialog }, { type: UserService }, { type: i1$5.UntypedFormBuilder }], propDecorators: { clientId: [{
|
|
4057
4073
|
type: Input
|
|
4058
4074
|
}], userTypeIds: [{
|
|
@@ -4496,7 +4512,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4496
4512
|
type: Input
|
|
4497
4513
|
}] } });
|
|
4498
4514
|
|
|
4499
|
-
class AuditLogService extends
|
|
4515
|
+
class AuditLogService extends TechlifyService {
|
|
4500
4516
|
constructor(httpService) {
|
|
4501
4517
|
super(httpService, 'audit-logs');
|
|
4502
4518
|
}
|
|
@@ -4590,13 +4606,6 @@ let AuditLogListFilterComponent = class AuditLogListFilterComponent {
|
|
|
4590
4606
|
}
|
|
4591
4607
|
ngOnInit() {
|
|
4592
4608
|
}
|
|
4593
|
-
onDurationChange(timelineValue) {
|
|
4594
|
-
const { date_to, date_from } = timelineValue;
|
|
4595
|
-
this.filterForm.patchValue({
|
|
4596
|
-
date_from: date_from ? moment(date_from).format('YYYY-MM-DD') : '',
|
|
4597
|
-
date_to: date_to ? moment(date_to).format('YYYY-MM-DD') : ''
|
|
4598
|
-
});
|
|
4599
|
-
}
|
|
4600
4609
|
resetFieldValue(field) {
|
|
4601
4610
|
this.filterForm.get(field).setValue('');
|
|
4602
4611
|
}
|
|
@@ -4609,14 +4618,14 @@ let AuditLogListFilterComponent = class AuditLogListFilterComponent {
|
|
|
4609
4618
|
ngOnDestroy() {
|
|
4610
4619
|
}
|
|
4611
4620
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AuditLogListFilterComponent, deps: [{ token: FormValidatorService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4612
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AuditLogListFilterComponent, selector: "app-audit-log-list-filter", inputs: { filterForm: "filterForm", objectId: "objectId", objectType: "objectType" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<form [formGroup]=\"filterForm\" class=\"d-flex justify-content-end align-items-center gap-2 w-100\">\n <mat-form-field class='fl-md'>\n <mat-label>Search Changes</mat-label>\n <input type=\"text\" matInput formControlName=\"change_search\" />\n <button *ngIf=\"getFieldValue('change_search')\" matSuffix mat-icon-button (click)=\"resetFieldValue('change_search')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <app-timeline-filter class='fl-sm' labelText=\"Activity Date\" formControlName=\"duration\"
|
|
4621
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AuditLogListFilterComponent, selector: "app-audit-log-list-filter", inputs: { filterForm: "filterForm", objectId: "objectId", objectType: "objectType" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<form [formGroup]=\"filterForm\" class=\"d-flex justify-content-end align-items-center gap-2 w-100\">\n <mat-form-field class='fl-md'>\n <mat-label>Search Changes</mat-label>\n <input type=\"text\" matInput formControlName=\"change_search\" />\n <button *ngIf=\"getFieldValue('change_search')\" matSuffix mat-icon-button (click)=\"resetFieldValue('change_search')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <app-timeline-filter class='fl-sm' labelText=\"Activity Date\" formControlName=\"duration\"\n [form]=\"filterForm\" [showClearButton]=\"true\" appearance=\"outline\"></app-timeline-filter>\n\n <mat-form-field class='fl-sm'>\n <mat-label>Action</mat-label>\n <mat-select formControlName=\"action\" [multiple]=\"true\">\n <mat-option value=\"created\">Created</mat-option>\n <mat-option value=\"updated\">Updated</mat-option>\n <mat-option value=\"deleted\">Deleted</mat-option>\n </mat-select>\n <button *ngIf=\"getFieldValue('action')\" matSuffix mat-icon-button (click)=\"resetFieldValue('action')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <mat-form-field class='fl-sm' *ngIf=\"showObjectFilter\">\n <mat-label>Model Type</mat-label>\n <app-searchable-selector formControlName=\"object_type\" apiUrl=\"api/audit-log-types\" titleField=\"object_type\"\n valueField=\"object_type\" [sort]=\"false\" [multiple]=\"true\">\n </app-searchable-selector>\n <button *ngIf=\"getFieldValue('object_type')\" matSuffix mat-icon-button (click)=\"resetFieldValue('object_type')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <mat-form-field class='fl-sm'>\n <mat-label>Model #</mat-label>\n <input type=\"text\" matInput formControlName=\"model_search\" />\n <button *ngIf=\"getFieldValue('model_search')\" matSuffix mat-icon-button (click)=\"resetFieldValue('model_search')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <mat-form-field class='fl-sm'>\n <mat-label>Creator</mat-label>\n <app-searchable-selector formControlName=\"creator_ids\" [multiple]=\"true\" apiUrl=\"api/users\"\n titleField=\"name\"></app-searchable-selector>\n <button *ngIf=\"getFieldValue('creator_ids')\" matSuffix mat-icon-button (click)=\"resetFieldValue('creator_ids')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n</form>", styles: [""], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i7$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7$2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i9$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i6$2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i9$2.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: SearchableSelectorComponent, selector: "app-searchable-selector", inputs: ["valueField", "titleField", "subtitleField", "apiUrl", "multiple", "selectedValue", "enableSearch", "add", "addConfig", "edit", "editConfig", "sort", "sortBy", "searchField", "itemComponent", "items", "apiDataProperty", "cache", "perPage", "inDataSearch", "panelWidth", "focusSearchOnOpen", "isEmitInitialEvent", "required", "disabled", "value"], outputs: ["selectedValueChange", "selectionChange", "itemsChange"] }, { kind: "component", type: TimelineFilterComponent, selector: "app-timeline-filter", inputs: ["defaultValue", "required", "disabled", "value", "timelines", "dateFrom", "dateTo", "appearance", "showClearButton", "form", "labelText"], outputs: ["selectionChange"] }] }); }
|
|
4613
4622
|
};
|
|
4614
4623
|
AuditLogListFilterComponent = __decorate([
|
|
4615
4624
|
UntilDestroy()
|
|
4616
4625
|
], AuditLogListFilterComponent);
|
|
4617
4626
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AuditLogListFilterComponent, decorators: [{
|
|
4618
4627
|
type: Component,
|
|
4619
|
-
args: [{ selector: 'app-audit-log-list-filter', template: "<form [formGroup]=\"filterForm\" class=\"d-flex justify-content-end align-items-center gap-2 w-100\">\n <mat-form-field class='fl-md'>\n <mat-label>Search Changes</mat-label>\n <input type=\"text\" matInput formControlName=\"change_search\" />\n <button *ngIf=\"getFieldValue('change_search')\" matSuffix mat-icon-button (click)=\"resetFieldValue('change_search')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <app-timeline-filter class='fl-sm' labelText=\"Activity Date\" formControlName=\"duration\"
|
|
4628
|
+
args: [{ selector: 'app-audit-log-list-filter', template: "<form [formGroup]=\"filterForm\" class=\"d-flex justify-content-end align-items-center gap-2 w-100\">\n <mat-form-field class='fl-md'>\n <mat-label>Search Changes</mat-label>\n <input type=\"text\" matInput formControlName=\"change_search\" />\n <button *ngIf=\"getFieldValue('change_search')\" matSuffix mat-icon-button (click)=\"resetFieldValue('change_search')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <app-timeline-filter class='fl-sm' labelText=\"Activity Date\" formControlName=\"duration\"\n [form]=\"filterForm\" [showClearButton]=\"true\" appearance=\"outline\"></app-timeline-filter>\n\n <mat-form-field class='fl-sm'>\n <mat-label>Action</mat-label>\n <mat-select formControlName=\"action\" [multiple]=\"true\">\n <mat-option value=\"created\">Created</mat-option>\n <mat-option value=\"updated\">Updated</mat-option>\n <mat-option value=\"deleted\">Deleted</mat-option>\n </mat-select>\n <button *ngIf=\"getFieldValue('action')\" matSuffix mat-icon-button (click)=\"resetFieldValue('action')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <mat-form-field class='fl-sm' *ngIf=\"showObjectFilter\">\n <mat-label>Model Type</mat-label>\n <app-searchable-selector formControlName=\"object_type\" apiUrl=\"api/audit-log-types\" titleField=\"object_type\"\n valueField=\"object_type\" [sort]=\"false\" [multiple]=\"true\">\n </app-searchable-selector>\n <button *ngIf=\"getFieldValue('object_type')\" matSuffix mat-icon-button (click)=\"resetFieldValue('object_type')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <mat-form-field class='fl-sm'>\n <mat-label>Model #</mat-label>\n <input type=\"text\" matInput formControlName=\"model_search\" />\n <button *ngIf=\"getFieldValue('model_search')\" matSuffix mat-icon-button (click)=\"resetFieldValue('model_search')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <mat-form-field class='fl-sm'>\n <mat-label>Creator</mat-label>\n <app-searchable-selector formControlName=\"creator_ids\" [multiple]=\"true\" apiUrl=\"api/users\"\n titleField=\"name\"></app-searchable-selector>\n <button *ngIf=\"getFieldValue('creator_ids')\" matSuffix mat-icon-button (click)=\"resetFieldValue('creator_ids')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n</form>" }]
|
|
4620
4629
|
}], ctorParameters: () => [{ type: FormValidatorService }], propDecorators: { filterForm: [{
|
|
4621
4630
|
type: Input
|
|
4622
4631
|
}], objectId: [{
|
|
@@ -4627,19 +4636,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4627
4636
|
type: Output
|
|
4628
4637
|
}] } });
|
|
4629
4638
|
|
|
4630
|
-
let AuditLogListComponent = class AuditLogListComponent extends
|
|
4631
|
-
constructor(router, sanitizer, formBuilder,
|
|
4639
|
+
let AuditLogListComponent = class AuditLogListComponent extends TechlifyListComponent {
|
|
4640
|
+
constructor(router, sanitizer, formBuilder, service, datePipe) {
|
|
4632
4641
|
super();
|
|
4633
4642
|
this.router = router;
|
|
4634
4643
|
this.sanitizer = sanitizer;
|
|
4635
4644
|
this.formBuilder = formBuilder;
|
|
4636
|
-
this.
|
|
4637
|
-
this.
|
|
4645
|
+
this.service = service;
|
|
4646
|
+
this.datePipe = datePipe;
|
|
4638
4647
|
this.showFilter = true;
|
|
4639
4648
|
this.showExportButtons = true;
|
|
4640
4649
|
this.disableFilterPatchingFromUrl = false;
|
|
4641
4650
|
this.scrollContainer = '.mat-sidenav-content';
|
|
4642
|
-
this.filters = { sort_by: 'created_at|desc' };
|
|
4643
4651
|
this.displayedColumns = [
|
|
4644
4652
|
'index',
|
|
4645
4653
|
'id',
|
|
@@ -4651,6 +4659,12 @@ let AuditLogListComponent = class AuditLogListComponent extends TechlifyListingC
|
|
|
4651
4659
|
'user.email',
|
|
4652
4660
|
'actions',
|
|
4653
4661
|
];
|
|
4662
|
+
this.filterFormConfiguration = {
|
|
4663
|
+
duration: { number: true },
|
|
4664
|
+
object_type: { multiple: true },
|
|
4665
|
+
action: { multiple: true },
|
|
4666
|
+
creator_ids: { multiple: true },
|
|
4667
|
+
};
|
|
4654
4668
|
this.filterForm = this.formBuilder.group({
|
|
4655
4669
|
action: [''],
|
|
4656
4670
|
change_search: [''],
|
|
@@ -4667,42 +4681,10 @@ let AuditLogListComponent = class AuditLogListComponent extends TechlifyListingC
|
|
|
4667
4681
|
}
|
|
4668
4682
|
ngOnInit() {
|
|
4669
4683
|
this.initializeData();
|
|
4670
|
-
/**
|
|
4671
|
-
* Disable filter patching from URL so that when this component
|
|
4672
|
-
* is used in a dialog, it doesn't interact with the URL
|
|
4673
|
-
*/
|
|
4674
4684
|
if (!this.disableFilterPatchingFromUrl) {
|
|
4675
|
-
this.
|
|
4676
|
-
next: (value) => {
|
|
4677
|
-
const params = this.requestHelperService.convertToFormData(value);
|
|
4678
|
-
this.requestHelperService.updateQueryParams(params);
|
|
4679
|
-
}
|
|
4680
|
-
});
|
|
4681
|
-
// update form with query params
|
|
4682
|
-
this.requestHelperService.updateFormWithQueryParams(this.filterForm, {
|
|
4683
|
-
duration: { number: true },
|
|
4684
|
-
object_type: { multiple: true },
|
|
4685
|
-
action: { multiple: true },
|
|
4686
|
-
creator_ids: { multiple: true },
|
|
4687
|
-
});
|
|
4688
|
-
}
|
|
4689
|
-
else {
|
|
4690
|
-
this.filterForm.valueChanges.pipe(debounceTime(800)).subscribe(() => {
|
|
4691
|
-
this.reload();
|
|
4692
|
-
});
|
|
4693
|
-
}
|
|
4694
|
-
// listen for route change
|
|
4695
|
-
this.activatedRoute.queryParams
|
|
4696
|
-
.pipe(debounceTime(800), distinctUntilChanged())
|
|
4697
|
-
.subscribe((val) => {
|
|
4698
|
-
this.reload();
|
|
4699
|
-
});
|
|
4700
|
-
if (this.sort) {
|
|
4701
|
-
this.sort.sortChange.pipe(untilDestroyed(this))
|
|
4702
|
-
.subscribe((value) => {
|
|
4703
|
-
this.changeSort(value);
|
|
4704
|
-
});
|
|
4685
|
+
this.patchFiltersFromRoute();
|
|
4705
4686
|
}
|
|
4687
|
+
this.listenFilterChanges();
|
|
4706
4688
|
}
|
|
4707
4689
|
get excelData() {
|
|
4708
4690
|
if (this.models.length > 0) {
|
|
@@ -4720,38 +4702,16 @@ let AuditLogListComponent = class AuditLogListComponent extends TechlifyListingC
|
|
|
4720
4702
|
}
|
|
4721
4703
|
return [];
|
|
4722
4704
|
}
|
|
4723
|
-
changeSort(event) {
|
|
4724
|
-
if (event.direction) {
|
|
4725
|
-
this.filters.sort_by = `${event.active}|${event.direction}`;
|
|
4726
|
-
this.reload();
|
|
4727
|
-
}
|
|
4728
|
-
}
|
|
4729
4705
|
logClicked(log) {
|
|
4730
4706
|
this.router.navigate(['/system/audit-logs/log-view', log.id]);
|
|
4731
4707
|
}
|
|
4732
4708
|
initializeData() {
|
|
4733
|
-
|
|
4734
|
-
|
|
4735
|
-
|
|
4736
|
-
|
|
4737
|
-
if (this.
|
|
4738
|
-
|
|
4739
|
-
}
|
|
4740
|
-
if (this.userId) {
|
|
4741
|
-
filters.user_id = this.userId;
|
|
4742
|
-
}
|
|
4743
|
-
this.filterForm.patchValue(filters);
|
|
4744
|
-
}
|
|
4745
|
-
filterChange(event) {
|
|
4746
|
-
if (this.showFilter) {
|
|
4747
|
-
this.filters = {
|
|
4748
|
-
...this.filters,
|
|
4749
|
-
...event,
|
|
4750
|
-
object_type: this.objectType || event?.object_type || '',
|
|
4751
|
-
object_id: this.objectId || '',
|
|
4752
|
-
};
|
|
4753
|
-
this.reload();
|
|
4754
|
-
}
|
|
4709
|
+
if (this.objectType)
|
|
4710
|
+
this.filterForm.patchValue({ object_type: this.objectType });
|
|
4711
|
+
if (this.objectId)
|
|
4712
|
+
this.filterForm.patchValue({ object_id: this.objectId });
|
|
4713
|
+
if (this.userId)
|
|
4714
|
+
this.filterForm.patchValue({ user_id: this.userId });
|
|
4755
4715
|
}
|
|
4756
4716
|
getTransformedChanges(log) {
|
|
4757
4717
|
if (log?.data?.changes) {
|
|
@@ -4770,31 +4730,26 @@ let AuditLogListComponent = class AuditLogListComponent extends TechlifyListingC
|
|
|
4770
4730
|
// Needed for automatic unsubscribe with untilDestroyed
|
|
4771
4731
|
}
|
|
4772
4732
|
loadData() {
|
|
4773
|
-
|
|
4774
|
-
|
|
4775
|
-
|
|
4776
|
-
|
|
4777
|
-
|
|
4778
|
-
|
|
4779
|
-
this.
|
|
4780
|
-
|
|
4781
|
-
|
|
4782
|
-
this.models = this.models?.concat(response?.data);
|
|
4783
|
-
this.lastPage = response?.last_page;
|
|
4784
|
-
},
|
|
4785
|
-
error: () => (this.isWorking = false)
|
|
4786
|
-
});
|
|
4733
|
+
let filters = this.filterForm.value;
|
|
4734
|
+
filters.page = this.page;
|
|
4735
|
+
filters.per_page = this.perPage;
|
|
4736
|
+
filters.object_id = this.objectId ?? '';
|
|
4737
|
+
filters.object_type = this.objectType ?? '';
|
|
4738
|
+
filters.user_id = this.userId ?? '';
|
|
4739
|
+
filters.date_from = this.datePipe.transform(filters.date_from, 'yyyy-MM-dd') ?? '';
|
|
4740
|
+
filters.date_to = this.datePipe.transform(filters.date_to, 'yyyy-MM-dd') ?? '';
|
|
4741
|
+
super.loadData(filters);
|
|
4787
4742
|
}
|
|
4788
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AuditLogListComponent, deps: [{ token: i1$2.Router }, { token: i1$6.DomSanitizer }, { token: i1$5.FormBuilder }, { token: AuditLogService }, { token:
|
|
4789
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AuditLogListComponent, selector: "app-audit-log-list", inputs: { objectId: "objectId", objectType: "objectType", showFilter: "showFilter", showExportButtons: "showExportButtons", userId: "userId", disableFilterPatchingFromUrl: "disableFilterPatchingFromUrl", scrollContainer: "scrollContainer" },
|
|
4743
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AuditLogListComponent, deps: [{ token: i1$2.Router }, { token: i1$6.DomSanitizer }, { token: i1$5.FormBuilder }, { token: AuditLogService }, { token: i2$1.DatePipe }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4744
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AuditLogListComponent, selector: "app-audit-log-list", inputs: { objectId: "objectId", objectType: "objectType", showFilter: "showFilter", showExportButtons: "showExportButtons", userId: "userId", disableFilterPatchingFromUrl: "disableFilterPatchingFromUrl", scrollContainer: "scrollContainer" }, usesInheritance: true, ngImport: i0, template: "<mat-card class=\"m-2\">\n <mat-card-content>\n <div class=\"d-flex justify-content-between align-items-center gap-3\">\n <div class=\"d-flex justify-content-start align-items-center gap-2\" style=\"min-width: 200px\">\n <h5 class=\"mb-0\"> Audit Logs </h5>\n <app-export-excel-button *ngIf=\"showExportButtons\" matTooltip=\"Export\" elementId=\"audit-logs-table\" class=\"mt-1\"\n name=\"AuditLogs\" [data]=\"excelData\">\n </app-export-excel-button>\n </div>\n\n <app-audit-log-list-filter class=\"w-100\" *ngIf=\"showFilter\" [filterForm]=\"filterForm\"\n [objectType]=\"objectType\" [objectId]=\"objectId\"></app-audit-log-list-filter>\n </div>\n </mat-card-content>\n</mat-card>\n\n<mat-card class=\"mt-2\">\n <mat-card-content>\n <table mat-table [dataSource]=\"models\" matSort class=\"w-100\" infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\" [infiniteScrollContainer]=\"scrollContainer\" (scrolled)=\"onScroll()\"\n [fromRoot]=\"true\" (matSortChange)=\"sortColumn($event)\">\n\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let i = index\"> {{ i+1 }} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"id\">\n <th mat-header-cell *matHeaderCellDef> Log # </th>\n <td mat-cell *matCellDef=\"let auditLog\">\n {{auditLog?.id}}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"object_type\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Model Type </th>\n <td mat-cell *matCellDef=\"let auditLog;\"> {{ auditLog.object_type }} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"object_id\">\n <th mat-header-cell *matHeaderCellDef> Model # </th>\n <td mat-cell *matCellDef=\"let auditLog\">\n {{auditLog?.object_id}}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"action\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Action </th>\n <td mat-cell *matCellDef=\"let auditLog;\"> {{ auditLog?.action }} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"created_at\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Created At </th>\n <td mat-cell *matCellDef=\"let auditLog\">\n {{auditLog?.created_at | date:'medium'}}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"user.email\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Created By </th>\n <td mat-cell *matCellDef=\"let auditLog\">\n <p class=\"mb-0\">{{auditLog?.user?.name}}</p>\n <small class=\"text-secondary\">{{ auditLog?.user?.email }}</small>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"changes\">\n <th mat-header-cell *matHeaderCellDef> Changes</th>\n <td mat-cell *matCellDef=\"let auditLog\">\n <div class=\"px-3\" [innerHtml]=\"sanitizer.bypassSecurityTrustHtml(getTransformedChanges(auditLog))\">\n </div>\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let auditLog\">\n <div class=\"text-secondary\">\n <app-techlify-icon role=\"button\" name=\"view\" class=\"clickable\"\n (click)=\"logClicked(auditLog);$event.stopPropagation();\" matTooltip=\"View\"></app-techlify-icon>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky:true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n </mat-card-content>\n</mat-card>", styles: ["tr.row-hover:hover{background-color:#dcdcdc}.scroll-container{height:800px;overflow-y:auto}:host ::ng-deep #old-value{margin-right:5px;background-color:#f08080}:host ::ng-deep #new-value{background-color:#98fb98}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ExportExcelButtonComponent, selector: "app-export-excel-button", inputs: ["isCSV", "fileName", "data", "tableId"], outputs: ["isExportingToExcel"] }, { kind: "directive", type: i11.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i11.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i9.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i9.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i9.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i9.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i9.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i9.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i9.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i9.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i9.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i9.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i11$2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i11$1.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i6$1.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "component", type: AuditLogListFilterComponent, selector: "app-audit-log-list-filter", inputs: ["filterForm", "objectId", "objectType"], outputs: ["valueChange"] }, { kind: "component", type: TechlifyIconComponent, selector: "app-techlify-icon", inputs: ["name", "size"] }, { kind: "pipe", type: i2$1.DatePipe, name: "date" }] }); }
|
|
4790
4745
|
};
|
|
4791
4746
|
AuditLogListComponent = __decorate([
|
|
4792
4747
|
UntilDestroy()
|
|
4793
4748
|
], AuditLogListComponent);
|
|
4794
4749
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AuditLogListComponent, decorators: [{
|
|
4795
4750
|
type: Component,
|
|
4796
|
-
args: [{ selector: 'app-audit-log-list', template: "<mat-card class=\"m-2\">\n <mat-card-content>\n <div class=\"d-flex justify-content-between align-items-center gap-3\">\n <div class=\"d-flex justify-content-start align-items-center gap-2\" style=\"min-width: 200px\">\n <h5 class=\"mb-0\"> Audit Logs </h5>\n <app-export-excel-button *ngIf=\"showExportButtons\" matTooltip=\"Export\" elementId=\"audit-logs-table\" class=\"mt-1\"\n name=\"AuditLogs\" [data]=\"excelData\">\n </app-export-excel-button>\n </div>\n\n <app-audit-log-list-filter class=\"w-100\" *ngIf=\"showFilter\" [filterForm]=\"filterForm\"\n
|
|
4797
|
-
}], ctorParameters: () => [{ type: i1$2.Router }, { type: i1$6.DomSanitizer }, { type: i1$5.FormBuilder }, { type: AuditLogService }, { type:
|
|
4751
|
+
args: [{ selector: 'app-audit-log-list', template: "<mat-card class=\"m-2\">\n <mat-card-content>\n <div class=\"d-flex justify-content-between align-items-center gap-3\">\n <div class=\"d-flex justify-content-start align-items-center gap-2\" style=\"min-width: 200px\">\n <h5 class=\"mb-0\"> Audit Logs </h5>\n <app-export-excel-button *ngIf=\"showExportButtons\" matTooltip=\"Export\" elementId=\"audit-logs-table\" class=\"mt-1\"\n name=\"AuditLogs\" [data]=\"excelData\">\n </app-export-excel-button>\n </div>\n\n <app-audit-log-list-filter class=\"w-100\" *ngIf=\"showFilter\" [filterForm]=\"filterForm\"\n [objectType]=\"objectType\" [objectId]=\"objectId\"></app-audit-log-list-filter>\n </div>\n </mat-card-content>\n</mat-card>\n\n<mat-card class=\"mt-2\">\n <mat-card-content>\n <table mat-table [dataSource]=\"models\" matSort class=\"w-100\" infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\" [infiniteScrollContainer]=\"scrollContainer\" (scrolled)=\"onScroll()\"\n [fromRoot]=\"true\" (matSortChange)=\"sortColumn($event)\">\n\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let i = index\"> {{ i+1 }} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"id\">\n <th mat-header-cell *matHeaderCellDef> Log # </th>\n <td mat-cell *matCellDef=\"let auditLog\">\n {{auditLog?.id}}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"object_type\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Model Type </th>\n <td mat-cell *matCellDef=\"let auditLog;\"> {{ auditLog.object_type }} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"object_id\">\n <th mat-header-cell *matHeaderCellDef> Model # </th>\n <td mat-cell *matCellDef=\"let auditLog\">\n {{auditLog?.object_id}}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"action\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Action </th>\n <td mat-cell *matCellDef=\"let auditLog;\"> {{ auditLog?.action }} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"created_at\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Created At </th>\n <td mat-cell *matCellDef=\"let auditLog\">\n {{auditLog?.created_at | date:'medium'}}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"user.email\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Created By </th>\n <td mat-cell *matCellDef=\"let auditLog\">\n <p class=\"mb-0\">{{auditLog?.user?.name}}</p>\n <small class=\"text-secondary\">{{ auditLog?.user?.email }}</small>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"changes\">\n <th mat-header-cell *matHeaderCellDef> Changes</th>\n <td mat-cell *matCellDef=\"let auditLog\">\n <div class=\"px-3\" [innerHtml]=\"sanitizer.bypassSecurityTrustHtml(getTransformedChanges(auditLog))\">\n </div>\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let auditLog\">\n <div class=\"text-secondary\">\n <app-techlify-icon role=\"button\" name=\"view\" class=\"clickable\"\n (click)=\"logClicked(auditLog);$event.stopPropagation();\" matTooltip=\"View\"></app-techlify-icon>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky:true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n </mat-card-content>\n</mat-card>", styles: ["tr.row-hover:hover{background-color:#dcdcdc}.scroll-container{height:800px;overflow-y:auto}:host ::ng-deep #old-value{margin-right:5px;background-color:#f08080}:host ::ng-deep #new-value{background-color:#98fb98}\n"] }]
|
|
4752
|
+
}], ctorParameters: () => [{ type: i1$2.Router }, { type: i1$6.DomSanitizer }, { type: i1$5.FormBuilder }, { type: AuditLogService }, { type: i2$1.DatePipe }], propDecorators: { objectId: [{
|
|
4798
4753
|
type: Input
|
|
4799
4754
|
}], objectType: [{
|
|
4800
4755
|
type: Input
|
|
@@ -4808,12 +4763,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4808
4763
|
type: Input
|
|
4809
4764
|
}], scrollContainer: [{
|
|
4810
4765
|
type: Input
|
|
4811
|
-
}], sort: [{
|
|
4812
|
-
type: ViewChild,
|
|
4813
|
-
args: [MatSort, { static: true }]
|
|
4814
4766
|
}] } });
|
|
4815
4767
|
|
|
4816
|
-
class UserClientService extends
|
|
4768
|
+
class UserClientService extends TechlifyService {
|
|
4817
4769
|
constructor(httpService) {
|
|
4818
4770
|
super(httpService, 'user-clients');
|
|
4819
4771
|
}
|
|
@@ -4879,7 +4831,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4879
4831
|
type: Output
|
|
4880
4832
|
}] } });
|
|
4881
4833
|
|
|
4882
|
-
class UserClientsListComponent extends
|
|
4834
|
+
class UserClientsListComponent extends TechlifyListComponent {
|
|
4883
4835
|
constructor(service) {
|
|
4884
4836
|
super();
|
|
4885
4837
|
this.service = service;
|
|
@@ -4920,7 +4872,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4920
4872
|
type: Input
|
|
4921
4873
|
}] } });
|
|
4922
4874
|
|
|
4923
|
-
class UserSessionService extends
|
|
4875
|
+
class UserSessionService extends TechlifyService {
|
|
4924
4876
|
constructor(httpService) {
|
|
4925
4877
|
super(httpService, 'user-sessions');
|
|
4926
4878
|
}
|
|
@@ -4934,7 +4886,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4934
4886
|
}]
|
|
4935
4887
|
}], ctorParameters: () => [{ type: HttpService }] });
|
|
4936
4888
|
|
|
4937
|
-
class UserSessionsComponent extends
|
|
4889
|
+
class UserSessionsComponent extends TechlifyListComponent {
|
|
4938
4890
|
constructor(service) {
|
|
4939
4891
|
super();
|
|
4940
4892
|
this.service = service;
|
|
@@ -5653,7 +5605,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
5653
5605
|
type: Output
|
|
5654
5606
|
}] } });
|
|
5655
5607
|
|
|
5656
|
-
class NoteListComponent extends
|
|
5608
|
+
class NoteListComponent extends TechlifyListComponent {
|
|
5657
5609
|
constructor(noteService, dialog, alertService) {
|
|
5658
5610
|
super();
|
|
5659
5611
|
this.noteService = noteService;
|
|
@@ -6445,7 +6397,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
6445
6397
|
}]
|
|
6446
6398
|
}] });
|
|
6447
6399
|
|
|
6448
|
-
class TechlifyNotificationTypeService extends
|
|
6400
|
+
class TechlifyNotificationTypeService extends TechlifyService {
|
|
6449
6401
|
constructor(http) {
|
|
6450
6402
|
super(http, 'tn-notification-types');
|
|
6451
6403
|
}
|
|
@@ -6459,7 +6411,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
6459
6411
|
}]
|
|
6460
6412
|
}], ctorParameters: () => [{ type: HttpService }] });
|
|
6461
6413
|
|
|
6462
|
-
class TechlifyNotificationSubscriptionService extends
|
|
6414
|
+
class TechlifyNotificationSubscriptionService extends TechlifyService {
|
|
6463
6415
|
constructor(http) {
|
|
6464
6416
|
super(http, 'tn-notification-subscriptions');
|
|
6465
6417
|
}
|
|
@@ -6473,7 +6425,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
6473
6425
|
}]
|
|
6474
6426
|
}], ctorParameters: () => [{ type: HttpService }] });
|
|
6475
6427
|
|
|
6476
|
-
class TechlifyNotificationForUserComponent extends
|
|
6428
|
+
class TechlifyNotificationForUserComponent extends TechlifyListComponent {
|
|
6477
6429
|
constructor(techlifyNotificationTypeService, techlifyNotificationSubscriptionService) {
|
|
6478
6430
|
super();
|
|
6479
6431
|
this.techlifyNotificationTypeService = techlifyNotificationTypeService;
|
|
@@ -9613,7 +9565,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
9613
9565
|
}]
|
|
9614
9566
|
}] });
|
|
9615
9567
|
|
|
9616
|
-
class TechlifyFeatureService extends
|
|
9568
|
+
class TechlifyFeatureService extends TechlifyService {
|
|
9617
9569
|
constructor(http) {
|
|
9618
9570
|
super(http, 'features');
|
|
9619
9571
|
this.features = [];
|
|
@@ -9949,7 +9901,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
9949
9901
|
}]
|
|
9950
9902
|
}], ctorParameters: () => [] });
|
|
9951
9903
|
|
|
9952
|
-
class AccessControlConfigService extends
|
|
9904
|
+
class AccessControlConfigService extends TechlifyService {
|
|
9953
9905
|
constructor(http) {
|
|
9954
9906
|
super(http, 'access-control-configs');
|
|
9955
9907
|
this.http = http;
|
|
@@ -10253,7 +10205,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
10253
10205
|
}]
|
|
10254
10206
|
}] });
|
|
10255
10207
|
|
|
10256
|
-
let LoginFormFieldsComponent = class LoginFormFieldsComponent extends
|
|
10208
|
+
let LoginFormFieldsComponent = class LoginFormFieldsComponent extends TechlifyFormComponent {
|
|
10257
10209
|
constructor(fb, formValidatorService, config, credentialService, currentUserService, authService, router, route, userConfigService, errorHandler, ngxPermissionsService) {
|
|
10258
10210
|
super(formValidatorService);
|
|
10259
10211
|
this.fb = fb;
|
|
@@ -11450,7 +11402,7 @@ var roleView_module = /*#__PURE__*/Object.freeze({
|
|
|
11450
11402
|
RoleViewModule: RoleViewModule
|
|
11451
11403
|
});
|
|
11452
11404
|
|
|
11453
|
-
class AdminRoleService extends
|
|
11405
|
+
class AdminRoleService extends TechlifyService {
|
|
11454
11406
|
constructor(httpService) {
|
|
11455
11407
|
super(httpService, 'roles');
|
|
11456
11408
|
}
|
|
@@ -11470,7 +11422,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
11470
11422
|
}]
|
|
11471
11423
|
}], ctorParameters: () => [{ type: HttpService }] });
|
|
11472
11424
|
|
|
11473
|
-
class AdminRolePermissionFormComponent extends
|
|
11425
|
+
class AdminRolePermissionFormComponent extends TechlifyFormComponent {
|
|
11474
11426
|
get roleInfo() {
|
|
11475
11427
|
return this._roleInfo;
|
|
11476
11428
|
}
|
|
@@ -11541,7 +11493,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
11541
11493
|
type: Input
|
|
11542
11494
|
}] } });
|
|
11543
11495
|
|
|
11544
|
-
let AdminRoleListComponent = class AdminRoleListComponent extends
|
|
11496
|
+
let AdminRoleListComponent = class AdminRoleListComponent extends TechlifyListComponent {
|
|
11545
11497
|
constructor(roleService, filterService, activatedRoute, fb, dialog, spinnerService) {
|
|
11546
11498
|
super();
|
|
11547
11499
|
this.roleService = roleService;
|
|
@@ -11860,10 +11812,12 @@ class UserEnableButtonModule {
|
|
|
11860
11812
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UserEnableButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
11861
11813
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: UserEnableButtonModule, declarations: [UserEnableButtonComponent], imports: [CommonModule,
|
|
11862
11814
|
MaterialModule,
|
|
11863
|
-
FlexLayoutModule
|
|
11815
|
+
FlexLayoutModule,
|
|
11816
|
+
TechlifyIconModule], exports: [UserEnableButtonComponent] }); }
|
|
11864
11817
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UserEnableButtonModule, imports: [CommonModule,
|
|
11865
11818
|
MaterialModule,
|
|
11866
|
-
FlexLayoutModule
|
|
11819
|
+
FlexLayoutModule,
|
|
11820
|
+
TechlifyIconModule] }); }
|
|
11867
11821
|
}
|
|
11868
11822
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UserEnableButtonModule, decorators: [{
|
|
11869
11823
|
type: NgModule,
|
|
@@ -11873,6 +11827,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
11873
11827
|
CommonModule,
|
|
11874
11828
|
MaterialModule,
|
|
11875
11829
|
FlexLayoutModule,
|
|
11830
|
+
TechlifyIconModule
|
|
11876
11831
|
],
|
|
11877
11832
|
exports: [UserEnableButtonComponent]
|
|
11878
11833
|
}]
|
|
@@ -12339,7 +12294,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
12339
12294
|
}]
|
|
12340
12295
|
}] });
|
|
12341
12296
|
|
|
12342
|
-
class RestrictorService extends
|
|
12297
|
+
class RestrictorService extends TechlifyService {
|
|
12343
12298
|
constructor(httpService) {
|
|
12344
12299
|
super(httpService, 'restrictors');
|
|
12345
12300
|
this.httpService = httpService;
|
|
@@ -12354,7 +12309,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
12354
12309
|
}]
|
|
12355
12310
|
}], ctorParameters: () => [{ type: HttpService }] });
|
|
12356
12311
|
|
|
12357
|
-
class RestrictorTypeService extends
|
|
12312
|
+
class RestrictorTypeService extends TechlifyService {
|
|
12358
12313
|
constructor(httpService) {
|
|
12359
12314
|
super(httpService, 'restrictor-types');
|
|
12360
12315
|
this.httpService = httpService;
|
|
@@ -12453,7 +12408,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
12453
12408
|
type: Input
|
|
12454
12409
|
}] } });
|
|
12455
12410
|
|
|
12456
|
-
class RestrictorLevelService extends
|
|
12411
|
+
class RestrictorLevelService extends TechlifyService {
|
|
12457
12412
|
constructor(httpService) {
|
|
12458
12413
|
super(httpService, 'restrictor-levels');
|
|
12459
12414
|
this.httpService = httpService;
|
|
@@ -12552,7 +12507,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
12552
12507
|
type: Input
|
|
12553
12508
|
}] } });
|
|
12554
12509
|
|
|
12555
|
-
class RestrictorStatusService extends
|
|
12510
|
+
class RestrictorStatusService extends TechlifyService {
|
|
12556
12511
|
constructor(httpService) {
|
|
12557
12512
|
super(httpService, 'restrictor-statuses');
|
|
12558
12513
|
this.httpService = httpService;
|
|
@@ -13707,7 +13662,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
13707
13662
|
}]
|
|
13708
13663
|
}] });
|
|
13709
13664
|
|
|
13710
|
-
class ResetPasswordService extends
|
|
13665
|
+
class ResetPasswordService extends TechlifyService {
|
|
13711
13666
|
constructor(http) {
|
|
13712
13667
|
super(http, 'my-user/reset-password');
|
|
13713
13668
|
this.http = http;
|
|
@@ -13728,7 +13683,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
13728
13683
|
}]
|
|
13729
13684
|
}], ctorParameters: () => [{ type: HttpService }] });
|
|
13730
13685
|
|
|
13731
|
-
class ResetPasswordComponent extends
|
|
13686
|
+
class ResetPasswordComponent extends TechlifyFormComponent {
|
|
13732
13687
|
constructor(resetPasswordService, router, currentUserService, fb, formValidatorService, userConfigService, activatedRoute) {
|
|
13733
13688
|
super(formValidatorService);
|
|
13734
13689
|
this.resetPasswordService = resetPasswordService;
|
|
@@ -13917,7 +13872,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
13917
13872
|
type: Output
|
|
13918
13873
|
}] } });
|
|
13919
13874
|
|
|
13920
|
-
class ClientService extends
|
|
13875
|
+
class ClientService extends TechlifyService {
|
|
13921
13876
|
constructor(httpService) {
|
|
13922
13877
|
super(httpService, 'clients');
|
|
13923
13878
|
this.httpService = httpService;
|
|
@@ -13932,7 +13887,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
13932
13887
|
}]
|
|
13933
13888
|
}], ctorParameters: () => [{ type: HttpService }] });
|
|
13934
13889
|
|
|
13935
|
-
class CompanyInformationComponent extends
|
|
13890
|
+
class CompanyInformationComponent extends TechlifyFormComponent {
|
|
13936
13891
|
constructor(formValidatorService, formBuilder, currentUserService, clientService, location) {
|
|
13937
13892
|
super(formValidatorService);
|
|
13938
13893
|
this.formBuilder = formBuilder;
|
|
@@ -14105,7 +14060,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
14105
14060
|
type: Input
|
|
14106
14061
|
}] } });
|
|
14107
14062
|
|
|
14108
|
-
class TenantListWidgetComponent extends
|
|
14063
|
+
class TenantListWidgetComponent extends TechlifyListComponent {
|
|
14109
14064
|
constructor(service) {
|
|
14110
14065
|
super();
|
|
14111
14066
|
this.service = service;
|
|
@@ -14374,6 +14329,7 @@ var appAdminUserView_module = /*#__PURE__*/Object.freeze({
|
|
|
14374
14329
|
|
|
14375
14330
|
class PdfButtonComponent {
|
|
14376
14331
|
constructor() {
|
|
14332
|
+
this.isUsePrintIcon = false;
|
|
14377
14333
|
this.isLoading = new EventEmitter();
|
|
14378
14334
|
}
|
|
14379
14335
|
ngOnInit() { }
|
|
@@ -14390,12 +14346,14 @@ class PdfButtonComponent {
|
|
|
14390
14346
|
};
|
|
14391
14347
|
}
|
|
14392
14348
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdfButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
14393
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PdfButtonComponent, selector: "pdf-button", outputs: { isLoading: "isLoading" }, ngImport: i0, template: "<app-techlify-icon name=\"pdf\" class=\"clickable d-print-none\" (click)=\"print()\"
|
|
14349
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PdfButtonComponent, selector: "pdf-button", inputs: { isUsePrintIcon: "isUsePrintIcon" }, outputs: { isLoading: "isLoading" }, ngImport: i0, template: "<app-techlify-icon *ngIf=\"!isUsePrintIcon\" name=\"pdf\" class=\"clickable d-print-none\" (click)=\"print()\"\n matTooltip=\"PDF Export\">\n</app-techlify-icon>\n\n<app-techlify-icon *ngIf=\"isUsePrintIcon\" name=\"print\" class=\"clickable d-print-none\" (click)=\"print()\"\n matTooltip=\"Print\">\n</app-techlify-icon>", styles: [":host{display:flex;align-content:center}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TechlifyIconComponent, selector: "app-techlify-icon", inputs: ["name", "size"] }, { kind: "directive", type: i11$2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
|
|
14394
14350
|
}
|
|
14395
14351
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdfButtonComponent, decorators: [{
|
|
14396
14352
|
type: Component,
|
|
14397
|
-
args: [{ selector: 'pdf-button', template: "<app-techlify-icon name=\"pdf\" class=\"clickable d-print-none\" (click)=\"print()\"
|
|
14398
|
-
}], ctorParameters: () => [], propDecorators: {
|
|
14353
|
+
args: [{ selector: 'pdf-button', template: "<app-techlify-icon *ngIf=\"!isUsePrintIcon\" name=\"pdf\" class=\"clickable d-print-none\" (click)=\"print()\"\n matTooltip=\"PDF Export\">\n</app-techlify-icon>\n\n<app-techlify-icon *ngIf=\"isUsePrintIcon\" name=\"print\" class=\"clickable d-print-none\" (click)=\"print()\"\n matTooltip=\"Print\">\n</app-techlify-icon>", styles: [":host{display:flex;align-content:center}\n"] }]
|
|
14354
|
+
}], ctorParameters: () => [], propDecorators: { isUsePrintIcon: [{
|
|
14355
|
+
type: Input
|
|
14356
|
+
}], isLoading: [{
|
|
14399
14357
|
type: Output
|
|
14400
14358
|
}] } });
|
|
14401
14359
|
|
|
@@ -14515,7 +14473,7 @@ var SubscriptionStatus;
|
|
|
14515
14473
|
SubscriptionStatus[SubscriptionStatus["INACTIVE"] = 2] = "INACTIVE";
|
|
14516
14474
|
})(SubscriptionStatus || (SubscriptionStatus = {}));
|
|
14517
14475
|
|
|
14518
|
-
class SubscriptionService extends
|
|
14476
|
+
class SubscriptionService extends TechlifyService {
|
|
14519
14477
|
constructor(http) {
|
|
14520
14478
|
super(http, 'tenant-subscriptions');
|
|
14521
14479
|
this.subscriptions = [];
|
|
@@ -14550,7 +14508,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
14550
14508
|
}]
|
|
14551
14509
|
}], ctorParameters: () => [{ type: HttpService }] });
|
|
14552
14510
|
|
|
14553
|
-
class SubscriptionFormComponent extends
|
|
14511
|
+
class SubscriptionFormComponent extends TechlifyFormComponent {
|
|
14554
14512
|
get tenantSubscriptionInfo() {
|
|
14555
14513
|
return this._tenantSubscriptionInfo;
|
|
14556
14514
|
}
|
|
@@ -14710,7 +14668,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
14710
14668
|
}]
|
|
14711
14669
|
}] });
|
|
14712
14670
|
|
|
14713
|
-
let SubscriptionListingComponent = class SubscriptionListingComponent extends
|
|
14671
|
+
let SubscriptionListingComponent = class SubscriptionListingComponent extends TechlifyListComponent {
|
|
14714
14672
|
get isFilterPatchFromRoute() {
|
|
14715
14673
|
return !this.subscriptionPackage?.id;
|
|
14716
14674
|
}
|
|
@@ -14876,7 +14834,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
14876
14834
|
}]
|
|
14877
14835
|
}] });
|
|
14878
14836
|
|
|
14879
|
-
class SubscriptionPackageService extends
|
|
14837
|
+
class SubscriptionPackageService extends TechlifyService {
|
|
14880
14838
|
constructor(http) {
|
|
14881
14839
|
super(http, 'subscription-packages');
|
|
14882
14840
|
}
|
|
@@ -14893,7 +14851,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
14893
14851
|
}]
|
|
14894
14852
|
}], ctorParameters: () => [{ type: HttpService }] });
|
|
14895
14853
|
|
|
14896
|
-
let SubscriptionPackageListingComponent = class SubscriptionPackageListingComponent extends
|
|
14854
|
+
let SubscriptionPackageListingComponent = class SubscriptionPackageListingComponent extends TechlifyListComponent {
|
|
14897
14855
|
constructor(subscriptionPackageService, activatedRoute, filterService, router, dialog, fb) {
|
|
14898
14856
|
super();
|
|
14899
14857
|
this.subscriptionPackageService = subscriptionPackageService;
|
|
@@ -15182,7 +15140,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
15182
15140
|
}]
|
|
15183
15141
|
}] });
|
|
15184
15142
|
|
|
15185
|
-
class TimelineActivityService extends
|
|
15143
|
+
class TimelineActivityService extends TechlifyService {
|
|
15186
15144
|
constructor(httpService) {
|
|
15187
15145
|
super(httpService, 'techlify-timeline-activities');
|
|
15188
15146
|
}
|
|
@@ -15196,7 +15154,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
15196
15154
|
}]
|
|
15197
15155
|
}], ctorParameters: () => [{ type: HttpService }] });
|
|
15198
15156
|
|
|
15199
|
-
class TimelineActivityListComponent extends
|
|
15157
|
+
class TimelineActivityListComponent extends TechlifyListComponent {
|
|
15200
15158
|
constructor(timelineActivityService, datePipe) {
|
|
15201
15159
|
super();
|
|
15202
15160
|
this.timelineActivityService = timelineActivityService;
|
|
@@ -15423,7 +15381,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
15423
15381
|
], template: "<app-techlify-icon role=\"button\" [name]=\"model() ? 'edit' : 'add'\" (click)=\"open()\"></app-techlify-icon>\r\n" }]
|
|
15424
15382
|
}], ctorParameters: () => [{ type: i1.MatDialog }] });
|
|
15425
15383
|
|
|
15426
|
-
class FormConfigurationFormService extends
|
|
15384
|
+
class FormConfigurationFormService extends TechlifyService {
|
|
15427
15385
|
constructor(http) {
|
|
15428
15386
|
super(http, 'form-configuration-forms');
|
|
15429
15387
|
}
|
|
@@ -15437,7 +15395,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
15437
15395
|
}]
|
|
15438
15396
|
}], ctorParameters: () => [{ type: HttpService }] });
|
|
15439
15397
|
|
|
15440
|
-
class FormConfigurationFormFieldService extends
|
|
15398
|
+
class FormConfigurationFormFieldService extends TechlifyService {
|
|
15441
15399
|
constructor(http) {
|
|
15442
15400
|
super(http, 'form-configuration-form-fields');
|
|
15443
15401
|
}
|
|
@@ -15610,7 +15568,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
15610
15568
|
}]
|
|
15611
15569
|
}] });
|
|
15612
15570
|
|
|
15613
|
-
class MyTechlifyViewService extends
|
|
15571
|
+
class MyTechlifyViewService extends TechlifyService {
|
|
15614
15572
|
constructor(http) {
|
|
15615
15573
|
super(http, 'my-techlify-views');
|
|
15616
15574
|
}
|
|
@@ -15624,7 +15582,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
15624
15582
|
}]
|
|
15625
15583
|
}], ctorParameters: () => [{ type: HttpService }] });
|
|
15626
15584
|
|
|
15627
|
-
class TechlifyViewService extends
|
|
15585
|
+
class TechlifyViewService extends TechlifyService {
|
|
15628
15586
|
constructor(http) {
|
|
15629
15587
|
super(http, 'techlify-views');
|
|
15630
15588
|
}
|
|
@@ -15638,7 +15596,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
15638
15596
|
}]
|
|
15639
15597
|
}], ctorParameters: () => [{ type: HttpService }] });
|
|
15640
15598
|
|
|
15641
|
-
class TechlifyViewFormComponent extends
|
|
15599
|
+
class TechlifyViewFormComponent extends TechlifyFormComponent {
|
|
15642
15600
|
get viewInfo() {
|
|
15643
15601
|
return this._viewInfo;
|
|
15644
15602
|
}
|
|
@@ -15717,7 +15675,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
15717
15675
|
type: Input
|
|
15718
15676
|
}] } });
|
|
15719
15677
|
|
|
15720
|
-
class MyTechlifyViewListingComponent extends
|
|
15678
|
+
class MyTechlifyViewListingComponent extends TechlifyListComponent {
|
|
15721
15679
|
//Used to expose public observable API in case of custom event implementation
|
|
15722
15680
|
get viewChangedObservable() {
|
|
15723
15681
|
return this.viewChanged;
|
|
@@ -15859,5 +15817,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
15859
15817
|
* Generated bundle index. Do not edit.
|
|
15860
15818
|
*/
|
|
15861
15819
|
|
|
15862
|
-
export { AccessControlConfigModule, ActionPopup, ActionPopupComponent, ActionPopupModule, AdminRoleListComponent, AdminRoleListModule, AdminRolePermissionFormComponent, AdminRolePermissionFormModule, AdminRoleService, AlertService, ApiPrefixInterceptor, AppAdminHomeComponent, AppAdminModule, AppAdminUserViewComponent, AppAdminUserViewModule, AuditLogForModelComponent, AuditLogForModelModule, AuditLogForModelRoutingModule, AuditLogListComponent, AuditLogListFilterComponent, AuditLogListFilterModule, AuditLogListFilterRoutingModule, AuditLogListModule, AuditLogListRoutingModule, AuditLogModule, AuditLogRoutingModule, AuditLogViewComponent, AuditLogViewModelComponent, AuditLogViewModelModule, AuditLogViewModelRoutingModule, AuditLogViewModule, AuditLogViewRoutingModule, AuditLogsViewModelComponent, AuditLogsViewModelModule, AuditLogsViewModelRoutingModule, AuthenticationGuard, AuthenticationService, CacheInterceptor, ChangePasswordModule, ClientService, ColumnConfig, ColumnSelectorComponent, ColumnSelectorModule, CommentFormComponent, CompanyInfoDisplayComponent, CompanyInformationComponent, ConfigService, CoreModule, CredentialsService, CurrentUserService, CustomIconComponent, CustomIconModule, DEFAULT_SELECTED_VALUE, DataManager, DataTable, DataTableComponent, DataTableModule, DateUtils, DateValidator, DocumentViewerComponent, DocumentViewerModule, EmailSubscriptionForUserComponent, EmailSubscriptionForUserModule, EmailSubscriptionForUserRoutingModule, EmailSubscriptionModule, EmailSubscriptionRoutingModule, EmailSubscriptionTypeFormComponent, EmailSubscriptionTypeFormModule, EmailSubscriptionTypeFormRoutingModule, EmailSubscriptionTypeListComponent, EmailSubscriptionTypeListModule, EmailSubscriptionTypeListRoutingModule, EmailSubscriptionTypeModule, EmailSubscriptionTypeRoutingModule, EmailSubscriptionUserFormComponent, EmailSubscriptionUserFormModule, EmailSubscriptionUserFormRoutingModule, EmailSubscriptionUserListComponent, EmailSubscriptionUserListFilterComponent, EmailSubscriptionUserListFilterModule, EmailSubscriptionUserListFilterRoutingModule, EmailSubscriptionUserListModule, EmailSubscriptionUserListRoutingModule, EmailSubscriptionUserModule, EmailSubscriptionUserRoutingModule, EntityFileFormComponent, EntityFileService, EntityFilesViewAllComponent, EntityFilesViewAllModule, EnvironmentService, ErrorHandlerInterceptor, ErrorHandlerService, ErrorSnackComponent, ExportExcelButtonComponent, ExportExcelModule, FileDragdropUploaderComponent, FileDragdropUploaderModule, FileDropperComponent, FileDropperConfig, FileDropperModule, FilterService, ForgotPasswordComponent, ForgotPasswordModule, ForgotPasswordRoutingModule, FormConfigurationFieldFormComponent, FormConfigurationFieldFormModule, FormConfigurationFieldFormRoutingModule, FormConfigurationForFormComponent, FormConfigurationForFormModule, FormConfigurationFormFieldService, FormConfigurationFormService, FormConfigurationUtilityService, FormValidatorService, HTTP_DYNAMIC_INTERCEPTORS, HttpCacheService, HttpService, ImportCsvComponent, ImportCsvModule, LoaderComponent, LoaderModule, LogLevel, Logger, LoginComponent, LoginFormFieldsComponent, LoginHistoryForUserComponent, LoginHistoryForUserModule, LoginHistoryForUserRoutingModule, LoginModule, LoginRoutingModule, MaterialModule, MultiUserConfig, MyTechlifyViewListingComponent, MyTechlifyViewListingModule, MyTechlifyViewService, NgxTechlifyUsersModule, NoteFormComponent, NoteListComponent, NoteModule, NumItemsSelector, NumberInputButtonComponent, NumberInputButtonModule, NumberSelector, PageEvent, PdfButtonComponent, PdfButtonModule, Permission, PermissionModule, PermissionRoutingProvider, PermissionsManagementComponent, ProfileEditComponent, ProfileModule, ProfileRoutingModule, ReadMoreComponent, ReadMoreModule, RequestHelperService, ResetPasswordComponent, ResetPasswordModule, ResetPasswordRoutingModule, ResetPasswordService, RestrictorTypeSelectorComponent, RestrictorTypeSelectorModule, RestrictorsModule, Role, RoleFormButtonComponent, RoleFormComponent, RoleModule, RoleRoutingProvider, RoleService, RoleViewComponent, RoleViewModule, RolesViewAllComponent, RouteReusableStrategy, SearchableSelectorComponent, SearchableSelectorModule, SignUpComponent, SignupModule, SignupRoutingModule, SnackModule, StorageService, SubscriptionFormComponent, SubscriptionFormModule, SubscriptionListingComponent, SubscriptionListingModule, SubscriptionPackageListingComponent, SubscriptionPackageListingModule, SubscriptionPackageViewComponent, SubscriptionPackageViewModule, SubscriptionService, SuccessSnackComponent, TechlifyAppSelectorComponent, TechlifyAppSelectorModule, TechlifyCompanySwitcherComponent, TechlifyCompanySwitcherModule, TechlifyConfig, TechlifyDeleteButtonComponent, TechlifyFeatureDirectiveModule, TechlifyFeatureEnabledDirective, TechlifyFeatureListingComponent, TechlifyFeatureModule, TechlifyFeatureRoutes, TechlifyFeatureService, TechlifyFormButtonComponent,
|
|
15820
|
+
export { AccessControlConfigModule, ActionPopup, ActionPopupComponent, ActionPopupModule, AdminRoleListComponent, AdminRoleListModule, AdminRolePermissionFormComponent, AdminRolePermissionFormModule, AdminRoleService, AlertService, ApiPrefixInterceptor, AppAdminHomeComponent, AppAdminModule, AppAdminUserViewComponent, AppAdminUserViewModule, AuditLogForModelComponent, AuditLogForModelModule, AuditLogForModelRoutingModule, AuditLogListComponent, AuditLogListFilterComponent, AuditLogListFilterModule, AuditLogListFilterRoutingModule, AuditLogListModule, AuditLogListRoutingModule, AuditLogModule, AuditLogRoutingModule, AuditLogViewComponent, AuditLogViewModelComponent, AuditLogViewModelModule, AuditLogViewModelRoutingModule, AuditLogViewModule, AuditLogViewRoutingModule, AuditLogsViewModelComponent, AuditLogsViewModelModule, AuditLogsViewModelRoutingModule, AuthenticationGuard, AuthenticationService, CacheInterceptor, ChangePasswordModule, ClientService, ColumnConfig, ColumnSelectorComponent, ColumnSelectorModule, CommentFormComponent, CompanyInfoDisplayComponent, CompanyInformationComponent, ConfigService, CoreModule, CredentialsService, CurrentUserService, CustomIconComponent, CustomIconModule, DEFAULT_SELECTED_VALUE, DataManager, DataTable, DataTableComponent, DataTableModule, DateUtils, DateValidator, DocumentViewerComponent, DocumentViewerModule, EmailSubscriptionForUserComponent, EmailSubscriptionForUserModule, EmailSubscriptionForUserRoutingModule, EmailSubscriptionModule, EmailSubscriptionRoutingModule, EmailSubscriptionTypeFormComponent, EmailSubscriptionTypeFormModule, EmailSubscriptionTypeFormRoutingModule, EmailSubscriptionTypeListComponent, EmailSubscriptionTypeListModule, EmailSubscriptionTypeListRoutingModule, EmailSubscriptionTypeModule, EmailSubscriptionTypeRoutingModule, EmailSubscriptionUserFormComponent, EmailSubscriptionUserFormModule, EmailSubscriptionUserFormRoutingModule, EmailSubscriptionUserListComponent, EmailSubscriptionUserListFilterComponent, EmailSubscriptionUserListFilterModule, EmailSubscriptionUserListFilterRoutingModule, EmailSubscriptionUserListModule, EmailSubscriptionUserListRoutingModule, EmailSubscriptionUserModule, EmailSubscriptionUserRoutingModule, EntityFileFormComponent, EntityFileService, EntityFilesViewAllComponent, EntityFilesViewAllModule, EnvironmentService, ErrorHandlerInterceptor, ErrorHandlerService, ErrorSnackComponent, ExportExcelButtonComponent, ExportExcelModule, FileDragdropUploaderComponent, FileDragdropUploaderModule, FileDropperComponent, FileDropperConfig, FileDropperModule, FilterService, ForgotPasswordComponent, ForgotPasswordModule, ForgotPasswordRoutingModule, FormConfigurationFieldFormComponent, FormConfigurationFieldFormModule, FormConfigurationFieldFormRoutingModule, FormConfigurationForFormComponent, FormConfigurationForFormModule, FormConfigurationFormFieldService, FormConfigurationFormService, FormConfigurationUtilityService, FormValidatorService, HTTP_DYNAMIC_INTERCEPTORS, HttpCacheService, HttpService, ImportCsvComponent, ImportCsvModule, LoaderComponent, LoaderModule, LogLevel, Logger, LoginComponent, LoginFormFieldsComponent, LoginHistoryForUserComponent, LoginHistoryForUserModule, LoginHistoryForUserRoutingModule, LoginModule, LoginRoutingModule, MaterialModule, MultiUserConfig, MyTechlifyViewListingComponent, MyTechlifyViewListingModule, MyTechlifyViewService, NgxTechlifyUsersModule, NoteFormComponent, NoteListComponent, NoteModule, NumItemsSelector, NumberInputButtonComponent, NumberInputButtonModule, NumberSelector, PageEvent, PdfButtonComponent, PdfButtonModule, Permission, PermissionModule, PermissionRoutingProvider, PermissionsManagementComponent, ProfileEditComponent, ProfileModule, ProfileRoutingModule, ReadMoreComponent, ReadMoreModule, RequestHelperService, ResetPasswordComponent, ResetPasswordModule, ResetPasswordRoutingModule, ResetPasswordService, RestrictorTypeSelectorComponent, RestrictorTypeSelectorModule, RestrictorsModule, Role, RoleFormButtonComponent, RoleFormComponent, RoleModule, RoleRoutingProvider, RoleService, RoleViewComponent, RoleViewModule, RolesViewAllComponent, RouteReusableStrategy, SearchableSelectorComponent, SearchableSelectorModule, SignUpComponent, SignupModule, SignupRoutingModule, SnackModule, StorageService, SubscriptionFormComponent, SubscriptionFormModule, SubscriptionListingComponent, SubscriptionListingModule, SubscriptionPackageListingComponent, SubscriptionPackageListingModule, SubscriptionPackageViewComponent, SubscriptionPackageViewModule, SubscriptionService, SuccessSnackComponent, TechlifyAppSelectorComponent, TechlifyAppSelectorModule, TechlifyCompanySwitcherComponent, TechlifyCompanySwitcherModule, TechlifyConfig, TechlifyDeleteButtonComponent, TechlifyFeatureDirectiveModule, TechlifyFeatureEnabledDirective, TechlifyFeatureListingComponent, TechlifyFeatureModule, TechlifyFeatureRoutes, TechlifyFeatureService, TechlifyFormButtonComponent, TechlifyFormComponent, TechlifyIconComponent, TechlifyIconModule, TechlifyListComponent, TechlifyNotificationForUserComponent, TechlifyNotificationForUserModule, TechlifyNotificationForUserRoutingModule, TechlifyNotificationModule, TechlifyNotificationRoutingModule, TechlifyService, TechlifySubscriptionDirective, TechlifySubscriptionDirectiveModule, TechlifyTaggerTagFormConfigModel, TechlifyTaggerTagFormFieldComponent, TechlifyTaggerTagFormFieldModule, TechlifyTaggerTagSelectorComponent, TechlifyTaggerTagSelectorModule, TechlifyUpdateHistoryModule, TechlifyUpdateModule, TechlifyUpdateService, TechlifyUpdatesTeaserComponent, TechlifyUpdatesTeaserModule, TechlifyViewFormComponent, TechlifyViewFormModule, TechlifyViewService, TenantFormButtonComponent, TenantListWidgetComponent, Timeline, TimelineActivityButtonComponent, TimelineActivityButtonModule, TimelineActivityListComponent, TimelineActivityListModule, TimelineFilterComponent, TimelineFilterModule, TokenInterceptor, UpdateNotifierComponent, UpdateNotifierModule, User, UserClientEnableDisableButtonComponent, UserClientEnableDisableButtonModule, UserClientsListComponent, UserClientsListModule, UserConfig, UserConfigService, UserDataService, UserEnableButtonComponent, UserEnableButtonModule, UserExploreComponent, UserFormComponent, UserListPageConfig, UserMenuComponent, UserMenuModule, UserModule, UserRoutingProvider, UserSelectorComponent, UserSelectorModule, UserService, UserSessionsComponent, UserSessionsModule, UserViewComponent, UsersViewAllComponent, UtilityModule, ViewerConfig, WrapPipe, calculateTimeline, esfur, estlr, esulr, parseLocalDate };
|
|
15863
15821
|
//# sourceMappingURL=ngx-techlify-core.mjs.map
|