ngx-techlify-core 18.57.1 → 18.58.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/esm2022/lib/access-control-config/access-control-config.service.mjs +3 -3
  2. package/esm2022/lib/app-admin/admin-role/admin-role-list/admin-role-list.component.mjs +3 -3
  3. package/esm2022/lib/app-admin/admin-role/admin-role-permission-form/admin-role-permission-form.component.mjs +3 -3
  4. package/esm2022/lib/app-admin/admin-role/admin-role.service.mjs +3 -3
  5. package/esm2022/lib/app-admin/tenant/tenant-list-widget/tenant-list-widget.component.mjs +3 -3
  6. package/esm2022/lib/audit-log/audit-log-list/audit-log-list.component.mjs +35 -94
  7. package/esm2022/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.mjs +3 -12
  8. package/esm2022/lib/audit-log/audit-log.service.mjs +3 -3
  9. package/esm2022/lib/base-model/index.mjs +4 -4
  10. package/esm2022/lib/base-model/techlify-form-component.mjs +128 -0
  11. package/esm2022/lib/base-model/techlify-list-component.mjs +289 -0
  12. package/esm2022/lib/base-model/techlify-service.mjs +68 -0
  13. package/esm2022/lib/company-information/client.service.mjs +3 -3
  14. package/esm2022/lib/company-information/company-information/company-information.component.mjs +3 -3
  15. package/esm2022/lib/delete-button/techlify-delete-button.component.mjs +1 -1
  16. package/esm2022/lib/entity-files/entity-file.service.mjs +3 -3
  17. package/esm2022/lib/form-configuration/form-configuration-form-field.service.mjs +3 -3
  18. package/esm2022/lib/form-configuration/form-configuration-form.service.mjs +3 -3
  19. package/esm2022/lib/login/login-form-fields/login-form-fields.component.mjs +3 -3
  20. package/esm2022/lib/note/note-list/note-list.component.mjs +3 -3
  21. package/esm2022/lib/pdf-button/pdf-button.component.mjs +11 -7
  22. package/esm2022/lib/reset-password/reset-password.component.mjs +3 -3
  23. package/esm2022/lib/reset-password/reset-password.service.mjs +3 -3
  24. package/esm2022/lib/restrictors/restrictor-level-selector/restrictor-level.service.mjs +3 -3
  25. package/esm2022/lib/restrictors/restrictor-status-selector/restrictor-status.service.mjs +3 -3
  26. package/esm2022/lib/restrictors/restrictor-type-selector/restrictor-type.service.mjs +3 -3
  27. package/esm2022/lib/restrictors/restrictor.service.mjs +3 -3
  28. package/esm2022/lib/searchable-selector/searchable-selector.component.mjs +5 -5
  29. package/esm2022/lib/subscription/subscription-form/subscription-form.component.mjs +3 -3
  30. package/esm2022/lib/subscription/subscription-listing/subscription-listing.component.mjs +3 -3
  31. package/esm2022/lib/subscription/subscription-package-listing/subscription-package-listing.component.mjs +3 -3
  32. package/esm2022/lib/subscription/subscription-package.service.mjs +3 -3
  33. package/esm2022/lib/subscription/subscription.service.mjs +3 -3
  34. package/esm2022/lib/techlify-feature/techlify-feature.service.mjs +3 -3
  35. package/esm2022/lib/techlify-icon/techlify-icon.component.mjs +7 -2
  36. package/esm2022/lib/techlify-notifications/techlify-notification-for-user/techlify-notification-for-user.component.mjs +3 -3
  37. package/esm2022/lib/techlify-notifications/techlify-notification-for-user/techlify-notification-subscription.service.mjs +3 -3
  38. package/esm2022/lib/techlify-notifications/techlify-notification-for-user/techlify-notification-type.service.mjs +3 -3
  39. package/esm2022/lib/techlify-view/my-techlify-view-listing/my-techlify-view-listing.component.mjs +3 -3
  40. package/esm2022/lib/techlify-view/my-techlify-view-listing/my-techlify-view.service.mjs +3 -3
  41. package/esm2022/lib/techlify-view/techlify-view-form/techlify-view-form.component.mjs +3 -3
  42. package/esm2022/lib/techlify-view/techlify-view.service.mjs +3 -3
  43. package/esm2022/lib/timeline-activity/timeline-activity-list/timeline-activity-list.component.mjs +3 -3
  44. package/esm2022/lib/timeline-activity/timeline-activity.service.mjs +3 -3
  45. package/esm2022/lib/user/user-enable-button-component/user-enable-button.component.mjs +5 -5
  46. package/esm2022/lib/user/user-enable-button-component/user-enable-button.module.mjs +7 -3
  47. package/esm2022/lib/user/user-sessions/user-session.service.mjs +3 -3
  48. package/esm2022/lib/user/user-sessions/user-sessions/user-sessions.component.mjs +3 -3
  49. package/esm2022/lib/user/user.service.mjs +3 -3
  50. package/esm2022/lib/user/users-view-all.component.mjs +3 -3
  51. package/esm2022/lib/user-clients-list/user-client.service.mjs +3 -3
  52. package/esm2022/lib/user-clients-list/user-clients-list.component.mjs +3 -3
  53. package/fesm2022/ngx-techlify-core.mjs +197 -241
  54. package/fesm2022/ngx-techlify-core.mjs.map +1 -1
  55. package/lib/access-control-config/access-control-config.service.d.ts +2 -2
  56. package/lib/app-admin/admin-role/admin-role-list/admin-role-list.component.d.ts +2 -2
  57. package/lib/app-admin/admin-role/admin-role-permission-form/admin-role-permission-form.component.d.ts +2 -2
  58. package/lib/app-admin/admin-role/admin-role.service.d.ts +2 -2
  59. package/lib/app-admin/tenant/tenant-list-widget/tenant-list-widget.component.d.ts +2 -2
  60. package/lib/audit-log/audit-log-list/audit-log-list.component.d.ts +7 -11
  61. package/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.d.ts +0 -2
  62. package/lib/audit-log/audit-log.service.d.ts +2 -2
  63. package/lib/base-model/index.d.ts +3 -3
  64. package/lib/base-model/{techlify-form-component.class.d.ts → techlify-form-component.d.ts} +7 -6
  65. package/lib/base-model/{techlify-listing-component.class.d.ts → techlify-list-component.d.ts} +6 -6
  66. package/lib/base-model/{techlify-service.class.d.ts → techlify-service.d.ts} +1 -1
  67. package/lib/company-information/client.service.d.ts +2 -2
  68. package/lib/company-information/company-information/company-information.component.d.ts +2 -2
  69. package/lib/delete-button/techlify-delete-button.component.d.ts +2 -2
  70. package/lib/entity-files/entity-file.service.d.ts +2 -2
  71. package/lib/form-configuration/form-configuration-form-field.service.d.ts +2 -2
  72. package/lib/form-configuration/form-configuration-form.service.d.ts +2 -2
  73. package/lib/login/login-form-fields/login-form-fields.component.d.ts +2 -2
  74. package/lib/note/note-list/note-list.component.d.ts +2 -2
  75. package/lib/pdf-button/pdf-button.component.d.ts +2 -1
  76. package/lib/reset-password/reset-password.component.d.ts +2 -2
  77. package/lib/reset-password/reset-password.service.d.ts +2 -2
  78. package/lib/restrictors/restrictor-level-selector/restrictor-level.service.d.ts +2 -2
  79. package/lib/restrictors/restrictor-status-selector/restrictor-status.service.d.ts +2 -2
  80. package/lib/restrictors/restrictor-type-selector/restrictor-type.service.d.ts +2 -2
  81. package/lib/restrictors/restrictor.service.d.ts +2 -2
  82. package/lib/subscription/subscription-form/subscription-form.component.d.ts +2 -2
  83. package/lib/subscription/subscription-listing/subscription-listing.component.d.ts +2 -2
  84. package/lib/subscription/subscription-package-listing/subscription-package-listing.component.d.ts +2 -2
  85. package/lib/subscription/subscription-package.service.d.ts +2 -2
  86. package/lib/subscription/subscription.service.d.ts +2 -2
  87. package/lib/techlify-feature/techlify-feature.service.d.ts +2 -2
  88. package/lib/techlify-notifications/techlify-notification-for-user/techlify-notification-for-user.component.d.ts +2 -2
  89. package/lib/techlify-notifications/techlify-notification-for-user/techlify-notification-subscription.service.d.ts +2 -2
  90. package/lib/techlify-notifications/techlify-notification-for-user/techlify-notification-type.service.d.ts +2 -2
  91. package/lib/techlify-view/my-techlify-view-listing/my-techlify-view-listing.component.d.ts +2 -2
  92. package/lib/techlify-view/my-techlify-view-listing/my-techlify-view.service.d.ts +2 -2
  93. package/lib/techlify-view/techlify-view-form/techlify-view-form.component.d.ts +2 -2
  94. package/lib/techlify-view/techlify-view.service.d.ts +2 -2
  95. package/lib/timeline-activity/timeline-activity-list/timeline-activity-list.component.d.ts +2 -2
  96. package/lib/timeline-activity/timeline-activity.service.d.ts +2 -2
  97. package/lib/user/user-enable-button-component/user-enable-button.module.d.ts +2 -1
  98. package/lib/user/user-sessions/user-session.service.d.ts +2 -2
  99. package/lib/user/user-sessions/user-sessions/user-sessions.component.d.ts +2 -2
  100. package/lib/user/user.service.d.ts +2 -2
  101. package/lib/user/users-view-all.component.d.ts +2 -2
  102. package/lib/user-clients-list/user-client.service.d.ts +2 -2
  103. package/lib/user-clients-list/user-clients-list.component.d.ts +2 -2
  104. package/package.json +1 -1
  105. package/esm2022/lib/base-model/techlify-form-component.class.mjs +0 -119
  106. package/esm2022/lib/base-model/techlify-listing-component.class.mjs +0 -289
  107. 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 TechlifyServiceBaseClass {
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 TechlifyFormComponentInterface {
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
- this.success.emit(this.isUpdate ? res?.item : this.createdEntries);
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: TechlifyFormComponentInterface, deps: [{ token: FormValidatorService }, { token: TechlifyServiceBaseClass, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
372
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: TechlifyFormComponentInterface, inputs: { isUpdate: "isUpdate" }, outputs: { success: "success" }, ngImport: i0 }); }
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: TechlifyFormComponentInterface, decorators: [{
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: TechlifyServiceBaseClass, decorators: [{
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 TechlifyListingControllerInterface = class TechlifyListingControllerInterface {
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: TechlifyListingControllerInterface, deps: [{ token: TechlifyServiceBaseClass, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
782
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: TechlifyListingControllerInterface, ngImport: i0 }); }
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
- TechlifyListingControllerInterface = __decorate([
793
+ TechlifyListComponent = __decorate([
785
794
  UntilDestroy()
786
- ], TechlifyListingControllerInterface);
787
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TechlifyListingControllerInterface, decorators: [{
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: TechlifyServiceBaseClass, decorators: [{
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 TechlifyServiceBaseClass {
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 TechlifyServiceBaseClass {
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: 'fa-solid fa-arrow-rotate-right'
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 TechlifyListingControllerInterface {
3945
+ let UsersViewAllComponent = class UsersViewAllComponent extends TechlifyListComponent {
3932
3946
  constructor(alertService, currentUserService, userConfigService, dialog, service, fb) {
3933
3947
  super();
3934
3948
  this.alertService = alertService;
@@ -4496,7 +4510,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
4496
4510
  type: Input
4497
4511
  }] } });
4498
4512
 
4499
- class AuditLogService extends TechlifyServiceBaseClass {
4513
+ class AuditLogService extends TechlifyService {
4500
4514
  constructor(httpService) {
4501
4515
  super(httpService, 'audit-logs');
4502
4516
  }
@@ -4590,13 +4604,6 @@ let AuditLogListFilterComponent = class AuditLogListFilterComponent {
4590
4604
  }
4591
4605
  ngOnInit() {
4592
4606
  }
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
4607
  resetFieldValue(field) {
4601
4608
  this.filterForm.get(field).setValue('');
4602
4609
  }
@@ -4609,14 +4616,14 @@ let AuditLogListFilterComponent = class AuditLogListFilterComponent {
4609
4616
  ngOnDestroy() {
4610
4617
  }
4611
4618
  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\" [dateFrom]=\"filterForm.value?.date_from\"\n [dateTo]=\"filterForm.value?.date_to\" (selectionChange)=\"onDurationChange($event)\" [showClearButton]=\"true\"\n 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"] }] }); }
4619
+ 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
4620
  };
4614
4621
  AuditLogListFilterComponent = __decorate([
4615
4622
  UntilDestroy()
4616
4623
  ], AuditLogListFilterComponent);
4617
4624
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AuditLogListFilterComponent, decorators: [{
4618
4625
  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\" [dateFrom]=\"filterForm.value?.date_from\"\n [dateTo]=\"filterForm.value?.date_to\" (selectionChange)=\"onDurationChange($event)\" [showClearButton]=\"true\"\n 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>" }]
4626
+ 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
4627
  }], ctorParameters: () => [{ type: FormValidatorService }], propDecorators: { filterForm: [{
4621
4628
  type: Input
4622
4629
  }], objectId: [{
@@ -4627,19 +4634,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
4627
4634
  type: Output
4628
4635
  }] } });
4629
4636
 
4630
- let AuditLogListComponent = class AuditLogListComponent extends TechlifyListingControllerInterface {
4631
- constructor(router, sanitizer, formBuilder, auditLogService, activatedRoute) {
4637
+ let AuditLogListComponent = class AuditLogListComponent extends TechlifyListComponent {
4638
+ constructor(router, sanitizer, formBuilder, service, datePipe) {
4632
4639
  super();
4633
4640
  this.router = router;
4634
4641
  this.sanitizer = sanitizer;
4635
4642
  this.formBuilder = formBuilder;
4636
- this.auditLogService = auditLogService;
4637
- this.activatedRoute = activatedRoute;
4643
+ this.service = service;
4644
+ this.datePipe = datePipe;
4638
4645
  this.showFilter = true;
4639
4646
  this.showExportButtons = true;
4640
4647
  this.disableFilterPatchingFromUrl = false;
4641
4648
  this.scrollContainer = '.mat-sidenav-content';
4642
- this.filters = { sort_by: 'created_at|desc' };
4643
4649
  this.displayedColumns = [
4644
4650
  'index',
4645
4651
  'id',
@@ -4651,6 +4657,12 @@ let AuditLogListComponent = class AuditLogListComponent extends TechlifyListingC
4651
4657
  'user.email',
4652
4658
  'actions',
4653
4659
  ];
4660
+ this.filterFormConfiguration = {
4661
+ duration: { number: true },
4662
+ object_type: { multiple: true },
4663
+ action: { multiple: true },
4664
+ creator_ids: { multiple: true },
4665
+ };
4654
4666
  this.filterForm = this.formBuilder.group({
4655
4667
  action: [''],
4656
4668
  change_search: [''],
@@ -4667,42 +4679,10 @@ let AuditLogListComponent = class AuditLogListComponent extends TechlifyListingC
4667
4679
  }
4668
4680
  ngOnInit() {
4669
4681
  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
4682
  if (!this.disableFilterPatchingFromUrl) {
4675
- this.filterForm.valueChanges.subscribe({
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
- });
4683
+ this.patchFiltersFromRoute();
4705
4684
  }
4685
+ this.listenFilterChanges();
4706
4686
  }
4707
4687
  get excelData() {
4708
4688
  if (this.models.length > 0) {
@@ -4720,38 +4700,16 @@ let AuditLogListComponent = class AuditLogListComponent extends TechlifyListingC
4720
4700
  }
4721
4701
  return [];
4722
4702
  }
4723
- changeSort(event) {
4724
- if (event.direction) {
4725
- this.filters.sort_by = `${event.active}|${event.direction}`;
4726
- this.reload();
4727
- }
4728
- }
4729
4703
  logClicked(log) {
4730
4704
  this.router.navigate(['/system/audit-logs/log-view', log.id]);
4731
4705
  }
4732
4706
  initializeData() {
4733
- const filters = { ...this.filters };
4734
- if (this.objectType) {
4735
- filters.object_type = this.objectType;
4736
- }
4737
- if (this.objectId) {
4738
- filters.object_id = this.objectId;
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
- }
4707
+ if (this.objectType)
4708
+ this.filterForm.patchValue({ object_type: this.objectType });
4709
+ if (this.objectId)
4710
+ this.filterForm.patchValue({ object_id: this.objectId });
4711
+ if (this.userId)
4712
+ this.filterForm.patchValue({ user_id: this.userId });
4755
4713
  }
4756
4714
  getTransformedChanges(log) {
4757
4715
  if (log?.data?.changes) {
@@ -4770,31 +4728,26 @@ let AuditLogListComponent = class AuditLogListComponent extends TechlifyListingC
4770
4728
  // Needed for automatic unsubscribe with untilDestroyed
4771
4729
  }
4772
4730
  loadData() {
4773
- const params = {
4774
- ...this.requestHelperService.convertToFormData(this.filterForm.value),
4775
- page: this.page,
4776
- perPage: this.perPage,
4777
- };
4778
- this.isWorking = true;
4779
- this.auditLogService.index(params).subscribe({
4780
- next: (response) => {
4781
- this.isWorking = false;
4782
- this.models = this.models?.concat(response?.data);
4783
- this.lastPage = response?.last_page;
4784
- },
4785
- error: () => (this.isWorking = false)
4786
- });
4731
+ let filters = this.filterForm.value;
4732
+ filters.page = this.page;
4733
+ filters.per_page = this.perPage;
4734
+ filters.object_id = this.objectId ?? '';
4735
+ filters.object_type = this.objectType ?? '';
4736
+ filters.user_id = this.userId ?? '';
4737
+ filters.date_from = this.datePipe.transform(filters.date_from, 'yyyy-MM-dd') ?? '';
4738
+ filters.date_to = this.datePipe.transform(filters.date_to, 'yyyy-MM-dd') ?? '';
4739
+ super.loadData(filters);
4787
4740
  }
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: i1$2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
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" }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }], 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 (valueChange)=\"filterChange($event)\" [objectType]=\"objectType\"\n [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\">\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" }] }); }
4741
+ 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 }); }
4742
+ 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
4743
  };
4791
4744
  AuditLogListComponent = __decorate([
4792
4745
  UntilDestroy()
4793
4746
  ], AuditLogListComponent);
4794
4747
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AuditLogListComponent, decorators: [{
4795
4748
  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 (valueChange)=\"filterChange($event)\" [objectType]=\"objectType\"\n [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\">\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"] }]
4797
- }], ctorParameters: () => [{ type: i1$2.Router }, { type: i1$6.DomSanitizer }, { type: i1$5.FormBuilder }, { type: AuditLogService }, { type: i1$2.ActivatedRoute }], propDecorators: { objectId: [{
4749
+ 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"] }]
4750
+ }], ctorParameters: () => [{ type: i1$2.Router }, { type: i1$6.DomSanitizer }, { type: i1$5.FormBuilder }, { type: AuditLogService }, { type: i2$1.DatePipe }], propDecorators: { objectId: [{
4798
4751
  type: Input
4799
4752
  }], objectType: [{
4800
4753
  type: Input
@@ -4808,12 +4761,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
4808
4761
  type: Input
4809
4762
  }], scrollContainer: [{
4810
4763
  type: Input
4811
- }], sort: [{
4812
- type: ViewChild,
4813
- args: [MatSort, { static: true }]
4814
4764
  }] } });
4815
4765
 
4816
- class UserClientService extends TechlifyServiceBaseClass {
4766
+ class UserClientService extends TechlifyService {
4817
4767
  constructor(httpService) {
4818
4768
  super(httpService, 'user-clients');
4819
4769
  }
@@ -4879,7 +4829,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
4879
4829
  type: Output
4880
4830
  }] } });
4881
4831
 
4882
- class UserClientsListComponent extends TechlifyListingControllerInterface {
4832
+ class UserClientsListComponent extends TechlifyListComponent {
4883
4833
  constructor(service) {
4884
4834
  super();
4885
4835
  this.service = service;
@@ -4920,7 +4870,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
4920
4870
  type: Input
4921
4871
  }] } });
4922
4872
 
4923
- class UserSessionService extends TechlifyServiceBaseClass {
4873
+ class UserSessionService extends TechlifyService {
4924
4874
  constructor(httpService) {
4925
4875
  super(httpService, 'user-sessions');
4926
4876
  }
@@ -4934,7 +4884,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
4934
4884
  }]
4935
4885
  }], ctorParameters: () => [{ type: HttpService }] });
4936
4886
 
4937
- class UserSessionsComponent extends TechlifyListingControllerInterface {
4887
+ class UserSessionsComponent extends TechlifyListComponent {
4938
4888
  constructor(service) {
4939
4889
  super();
4940
4890
  this.service = service;
@@ -5653,7 +5603,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
5653
5603
  type: Output
5654
5604
  }] } });
5655
5605
 
5656
- class NoteListComponent extends TechlifyListingControllerInterface {
5606
+ class NoteListComponent extends TechlifyListComponent {
5657
5607
  constructor(noteService, dialog, alertService) {
5658
5608
  super();
5659
5609
  this.noteService = noteService;
@@ -6445,7 +6395,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
6445
6395
  }]
6446
6396
  }] });
6447
6397
 
6448
- class TechlifyNotificationTypeService extends TechlifyServiceBaseClass {
6398
+ class TechlifyNotificationTypeService extends TechlifyService {
6449
6399
  constructor(http) {
6450
6400
  super(http, 'tn-notification-types');
6451
6401
  }
@@ -6459,7 +6409,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
6459
6409
  }]
6460
6410
  }], ctorParameters: () => [{ type: HttpService }] });
6461
6411
 
6462
- class TechlifyNotificationSubscriptionService extends TechlifyServiceBaseClass {
6412
+ class TechlifyNotificationSubscriptionService extends TechlifyService {
6463
6413
  constructor(http) {
6464
6414
  super(http, 'tn-notification-subscriptions');
6465
6415
  }
@@ -6473,7 +6423,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
6473
6423
  }]
6474
6424
  }], ctorParameters: () => [{ type: HttpService }] });
6475
6425
 
6476
- class TechlifyNotificationForUserComponent extends TechlifyListingControllerInterface {
6426
+ class TechlifyNotificationForUserComponent extends TechlifyListComponent {
6477
6427
  constructor(techlifyNotificationTypeService, techlifyNotificationSubscriptionService) {
6478
6428
  super();
6479
6429
  this.techlifyNotificationTypeService = techlifyNotificationTypeService;
@@ -9613,7 +9563,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
9613
9563
  }]
9614
9564
  }] });
9615
9565
 
9616
- class TechlifyFeatureService extends TechlifyServiceBaseClass {
9566
+ class TechlifyFeatureService extends TechlifyService {
9617
9567
  constructor(http) {
9618
9568
  super(http, 'features');
9619
9569
  this.features = [];
@@ -9949,7 +9899,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
9949
9899
  }]
9950
9900
  }], ctorParameters: () => [] });
9951
9901
 
9952
- class AccessControlConfigService extends TechlifyServiceBaseClass {
9902
+ class AccessControlConfigService extends TechlifyService {
9953
9903
  constructor(http) {
9954
9904
  super(http, 'access-control-configs');
9955
9905
  this.http = http;
@@ -10253,7 +10203,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
10253
10203
  }]
10254
10204
  }] });
10255
10205
 
10256
- let LoginFormFieldsComponent = class LoginFormFieldsComponent extends TechlifyFormComponentInterface {
10206
+ let LoginFormFieldsComponent = class LoginFormFieldsComponent extends TechlifyFormComponent {
10257
10207
  constructor(fb, formValidatorService, config, credentialService, currentUserService, authService, router, route, userConfigService, errorHandler, ngxPermissionsService) {
10258
10208
  super(formValidatorService);
10259
10209
  this.fb = fb;
@@ -11450,7 +11400,7 @@ var roleView_module = /*#__PURE__*/Object.freeze({
11450
11400
  RoleViewModule: RoleViewModule
11451
11401
  });
11452
11402
 
11453
- class AdminRoleService extends TechlifyServiceBaseClass {
11403
+ class AdminRoleService extends TechlifyService {
11454
11404
  constructor(httpService) {
11455
11405
  super(httpService, 'roles');
11456
11406
  }
@@ -11470,7 +11420,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
11470
11420
  }]
11471
11421
  }], ctorParameters: () => [{ type: HttpService }] });
11472
11422
 
11473
- class AdminRolePermissionFormComponent extends TechlifyFormComponentInterface {
11423
+ class AdminRolePermissionFormComponent extends TechlifyFormComponent {
11474
11424
  get roleInfo() {
11475
11425
  return this._roleInfo;
11476
11426
  }
@@ -11541,7 +11491,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
11541
11491
  type: Input
11542
11492
  }] } });
11543
11493
 
11544
- let AdminRoleListComponent = class AdminRoleListComponent extends TechlifyListingControllerInterface {
11494
+ let AdminRoleListComponent = class AdminRoleListComponent extends TechlifyListComponent {
11545
11495
  constructor(roleService, filterService, activatedRoute, fb, dialog, spinnerService) {
11546
11496
  super();
11547
11497
  this.roleService = roleService;
@@ -11860,10 +11810,12 @@ class UserEnableButtonModule {
11860
11810
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UserEnableButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
11861
11811
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: UserEnableButtonModule, declarations: [UserEnableButtonComponent], imports: [CommonModule,
11862
11812
  MaterialModule,
11863
- FlexLayoutModule], exports: [UserEnableButtonComponent] }); }
11813
+ FlexLayoutModule,
11814
+ TechlifyIconModule], exports: [UserEnableButtonComponent] }); }
11864
11815
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UserEnableButtonModule, imports: [CommonModule,
11865
11816
  MaterialModule,
11866
- FlexLayoutModule] }); }
11817
+ FlexLayoutModule,
11818
+ TechlifyIconModule] }); }
11867
11819
  }
11868
11820
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UserEnableButtonModule, decorators: [{
11869
11821
  type: NgModule,
@@ -11873,6 +11825,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
11873
11825
  CommonModule,
11874
11826
  MaterialModule,
11875
11827
  FlexLayoutModule,
11828
+ TechlifyIconModule
11876
11829
  ],
11877
11830
  exports: [UserEnableButtonComponent]
11878
11831
  }]
@@ -12339,7 +12292,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
12339
12292
  }]
12340
12293
  }] });
12341
12294
 
12342
- class RestrictorService extends TechlifyServiceBaseClass {
12295
+ class RestrictorService extends TechlifyService {
12343
12296
  constructor(httpService) {
12344
12297
  super(httpService, 'restrictors');
12345
12298
  this.httpService = httpService;
@@ -12354,7 +12307,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
12354
12307
  }]
12355
12308
  }], ctorParameters: () => [{ type: HttpService }] });
12356
12309
 
12357
- class RestrictorTypeService extends TechlifyServiceBaseClass {
12310
+ class RestrictorTypeService extends TechlifyService {
12358
12311
  constructor(httpService) {
12359
12312
  super(httpService, 'restrictor-types');
12360
12313
  this.httpService = httpService;
@@ -12453,7 +12406,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
12453
12406
  type: Input
12454
12407
  }] } });
12455
12408
 
12456
- class RestrictorLevelService extends TechlifyServiceBaseClass {
12409
+ class RestrictorLevelService extends TechlifyService {
12457
12410
  constructor(httpService) {
12458
12411
  super(httpService, 'restrictor-levels');
12459
12412
  this.httpService = httpService;
@@ -12552,7 +12505,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
12552
12505
  type: Input
12553
12506
  }] } });
12554
12507
 
12555
- class RestrictorStatusService extends TechlifyServiceBaseClass {
12508
+ class RestrictorStatusService extends TechlifyService {
12556
12509
  constructor(httpService) {
12557
12510
  super(httpService, 'restrictor-statuses');
12558
12511
  this.httpService = httpService;
@@ -13707,7 +13660,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
13707
13660
  }]
13708
13661
  }] });
13709
13662
 
13710
- class ResetPasswordService extends TechlifyServiceBaseClass {
13663
+ class ResetPasswordService extends TechlifyService {
13711
13664
  constructor(http) {
13712
13665
  super(http, 'my-user/reset-password');
13713
13666
  this.http = http;
@@ -13728,7 +13681,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
13728
13681
  }]
13729
13682
  }], ctorParameters: () => [{ type: HttpService }] });
13730
13683
 
13731
- class ResetPasswordComponent extends TechlifyFormComponentInterface {
13684
+ class ResetPasswordComponent extends TechlifyFormComponent {
13732
13685
  constructor(resetPasswordService, router, currentUserService, fb, formValidatorService, userConfigService, activatedRoute) {
13733
13686
  super(formValidatorService);
13734
13687
  this.resetPasswordService = resetPasswordService;
@@ -13917,7 +13870,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
13917
13870
  type: Output
13918
13871
  }] } });
13919
13872
 
13920
- class ClientService extends TechlifyServiceBaseClass {
13873
+ class ClientService extends TechlifyService {
13921
13874
  constructor(httpService) {
13922
13875
  super(httpService, 'clients');
13923
13876
  this.httpService = httpService;
@@ -13932,7 +13885,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
13932
13885
  }]
13933
13886
  }], ctorParameters: () => [{ type: HttpService }] });
13934
13887
 
13935
- class CompanyInformationComponent extends TechlifyFormComponentInterface {
13888
+ class CompanyInformationComponent extends TechlifyFormComponent {
13936
13889
  constructor(formValidatorService, formBuilder, currentUserService, clientService, location) {
13937
13890
  super(formValidatorService);
13938
13891
  this.formBuilder = formBuilder;
@@ -14105,7 +14058,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
14105
14058
  type: Input
14106
14059
  }] } });
14107
14060
 
14108
- class TenantListWidgetComponent extends TechlifyListingControllerInterface {
14061
+ class TenantListWidgetComponent extends TechlifyListComponent {
14109
14062
  constructor(service) {
14110
14063
  super();
14111
14064
  this.service = service;
@@ -14374,6 +14327,7 @@ var appAdminUserView_module = /*#__PURE__*/Object.freeze({
14374
14327
 
14375
14328
  class PdfButtonComponent {
14376
14329
  constructor() {
14330
+ this.isUsePrintIcon = false;
14377
14331
  this.isLoading = new EventEmitter();
14378
14332
  }
14379
14333
  ngOnInit() { }
@@ -14390,12 +14344,14 @@ class PdfButtonComponent {
14390
14344
  };
14391
14345
  }
14392
14346
  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()\" matTooltip=\"PDF Export\">\n</app-techlify-icon>", styles: [":host{display:flex;align-content:center}\n"], dependencies: [{ 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"] }] }); }
14347
+ 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
14348
  }
14395
14349
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdfButtonComponent, decorators: [{
14396
14350
  type: Component,
14397
- args: [{ selector: 'pdf-button', template: "<app-techlify-icon name=\"pdf\" class=\"clickable d-print-none\" (click)=\"print()\" matTooltip=\"PDF Export\">\n</app-techlify-icon>", styles: [":host{display:flex;align-content:center}\n"] }]
14398
- }], ctorParameters: () => [], propDecorators: { isLoading: [{
14351
+ 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"] }]
14352
+ }], ctorParameters: () => [], propDecorators: { isUsePrintIcon: [{
14353
+ type: Input
14354
+ }], isLoading: [{
14399
14355
  type: Output
14400
14356
  }] } });
14401
14357
 
@@ -14515,7 +14471,7 @@ var SubscriptionStatus;
14515
14471
  SubscriptionStatus[SubscriptionStatus["INACTIVE"] = 2] = "INACTIVE";
14516
14472
  })(SubscriptionStatus || (SubscriptionStatus = {}));
14517
14473
 
14518
- class SubscriptionService extends TechlifyServiceBaseClass {
14474
+ class SubscriptionService extends TechlifyService {
14519
14475
  constructor(http) {
14520
14476
  super(http, 'tenant-subscriptions');
14521
14477
  this.subscriptions = [];
@@ -14550,7 +14506,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
14550
14506
  }]
14551
14507
  }], ctorParameters: () => [{ type: HttpService }] });
14552
14508
 
14553
- class SubscriptionFormComponent extends TechlifyFormComponentInterface {
14509
+ class SubscriptionFormComponent extends TechlifyFormComponent {
14554
14510
  get tenantSubscriptionInfo() {
14555
14511
  return this._tenantSubscriptionInfo;
14556
14512
  }
@@ -14710,7 +14666,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
14710
14666
  }]
14711
14667
  }] });
14712
14668
 
14713
- let SubscriptionListingComponent = class SubscriptionListingComponent extends TechlifyListingControllerInterface {
14669
+ let SubscriptionListingComponent = class SubscriptionListingComponent extends TechlifyListComponent {
14714
14670
  get isFilterPatchFromRoute() {
14715
14671
  return !this.subscriptionPackage?.id;
14716
14672
  }
@@ -14876,7 +14832,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
14876
14832
  }]
14877
14833
  }] });
14878
14834
 
14879
- class SubscriptionPackageService extends TechlifyServiceBaseClass {
14835
+ class SubscriptionPackageService extends TechlifyService {
14880
14836
  constructor(http) {
14881
14837
  super(http, 'subscription-packages');
14882
14838
  }
@@ -14893,7 +14849,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
14893
14849
  }]
14894
14850
  }], ctorParameters: () => [{ type: HttpService }] });
14895
14851
 
14896
- let SubscriptionPackageListingComponent = class SubscriptionPackageListingComponent extends TechlifyListingControllerInterface {
14852
+ let SubscriptionPackageListingComponent = class SubscriptionPackageListingComponent extends TechlifyListComponent {
14897
14853
  constructor(subscriptionPackageService, activatedRoute, filterService, router, dialog, fb) {
14898
14854
  super();
14899
14855
  this.subscriptionPackageService = subscriptionPackageService;
@@ -15182,7 +15138,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
15182
15138
  }]
15183
15139
  }] });
15184
15140
 
15185
- class TimelineActivityService extends TechlifyServiceBaseClass {
15141
+ class TimelineActivityService extends TechlifyService {
15186
15142
  constructor(httpService) {
15187
15143
  super(httpService, 'techlify-timeline-activities');
15188
15144
  }
@@ -15196,7 +15152,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
15196
15152
  }]
15197
15153
  }], ctorParameters: () => [{ type: HttpService }] });
15198
15154
 
15199
- class TimelineActivityListComponent extends TechlifyListingControllerInterface {
15155
+ class TimelineActivityListComponent extends TechlifyListComponent {
15200
15156
  constructor(timelineActivityService, datePipe) {
15201
15157
  super();
15202
15158
  this.timelineActivityService = timelineActivityService;
@@ -15423,7 +15379,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
15423
15379
  ], template: "<app-techlify-icon role=\"button\" [name]=\"model() ? 'edit' : 'add'\" (click)=\"open()\"></app-techlify-icon>\r\n" }]
15424
15380
  }], ctorParameters: () => [{ type: i1.MatDialog }] });
15425
15381
 
15426
- class FormConfigurationFormService extends TechlifyServiceBaseClass {
15382
+ class FormConfigurationFormService extends TechlifyService {
15427
15383
  constructor(http) {
15428
15384
  super(http, 'form-configuration-forms');
15429
15385
  }
@@ -15437,7 +15393,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
15437
15393
  }]
15438
15394
  }], ctorParameters: () => [{ type: HttpService }] });
15439
15395
 
15440
- class FormConfigurationFormFieldService extends TechlifyServiceBaseClass {
15396
+ class FormConfigurationFormFieldService extends TechlifyService {
15441
15397
  constructor(http) {
15442
15398
  super(http, 'form-configuration-form-fields');
15443
15399
  }
@@ -15610,7 +15566,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
15610
15566
  }]
15611
15567
  }] });
15612
15568
 
15613
- class MyTechlifyViewService extends TechlifyServiceBaseClass {
15569
+ class MyTechlifyViewService extends TechlifyService {
15614
15570
  constructor(http) {
15615
15571
  super(http, 'my-techlify-views');
15616
15572
  }
@@ -15624,7 +15580,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
15624
15580
  }]
15625
15581
  }], ctorParameters: () => [{ type: HttpService }] });
15626
15582
 
15627
- class TechlifyViewService extends TechlifyServiceBaseClass {
15583
+ class TechlifyViewService extends TechlifyService {
15628
15584
  constructor(http) {
15629
15585
  super(http, 'techlify-views');
15630
15586
  }
@@ -15638,7 +15594,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
15638
15594
  }]
15639
15595
  }], ctorParameters: () => [{ type: HttpService }] });
15640
15596
 
15641
- class TechlifyViewFormComponent extends TechlifyFormComponentInterface {
15597
+ class TechlifyViewFormComponent extends TechlifyFormComponent {
15642
15598
  get viewInfo() {
15643
15599
  return this._viewInfo;
15644
15600
  }
@@ -15717,7 +15673,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
15717
15673
  type: Input
15718
15674
  }] } });
15719
15675
 
15720
- class MyTechlifyViewListingComponent extends TechlifyListingControllerInterface {
15676
+ class MyTechlifyViewListingComponent extends TechlifyListComponent {
15721
15677
  //Used to expose public observable API in case of custom event implementation
15722
15678
  get viewChangedObservable() {
15723
15679
  return this.viewChanged;
@@ -15859,5 +15815,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
15859
15815
  * Generated bundle index. Do not edit.
15860
15816
  */
15861
15817
 
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, TechlifyFormComponentInterface, TechlifyIconComponent, TechlifyIconModule, TechlifyListingControllerInterface, TechlifyNotificationForUserComponent, TechlifyNotificationForUserModule, TechlifyNotificationForUserRoutingModule, TechlifyNotificationModule, TechlifyNotificationRoutingModule, TechlifyServiceBaseClass, 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 };
15818
+ 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
15819
  //# sourceMappingURL=ngx-techlify-core.mjs.map