@firestitch/app-acl 9.0.19 → 12.2.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 (88) hide show
  1. package/app/components/acl-entries/acl-entries.component.d.ts +7 -2
  2. package/app/components/acl-entry/acl-entry.component.d.ts +8 -2
  3. package/app/components/acl-object-roles/acl-object-roles.component.d.ts +5 -1
  4. package/app/components/acl-permission-popover/acl-permission-popover.component.d.ts +3 -0
  5. package/app/components/acl-role/acl-role.component.d.ts +6 -3
  6. package/app/components/acl-role-popover/acl-role-popover.component.d.ts +4 -1
  7. package/app/components/acl-roles/acl-roles.component.d.ts +6 -2
  8. package/app/consts/acl-role-accesses.d.ts +1 -1
  9. package/app/fs-app-acl.module.d.ts +29 -2
  10. package/app/services/app-acl.service.d.ts +6 -1
  11. package/bundles/firestitch-app-acl.umd.js +668 -538
  12. package/bundles/firestitch-app-acl.umd.js.map +1 -1
  13. package/esm2015/app/components/acl-entries/acl-entries.component.js +39 -50
  14. package/esm2015/app/components/acl-entry/acl-entry.component.js +28 -23
  15. package/esm2015/app/components/acl-object-roles/acl-object-roles.component.js +39 -45
  16. package/esm2015/app/components/acl-permission-popover/acl-permission-popover.component.js +18 -20
  17. package/esm2015/app/components/acl-role/acl-role.component.js +40 -29
  18. package/esm2015/app/components/acl-role-popover/acl-role-popover.component.js +22 -25
  19. package/esm2015/app/components/acl-roles/acl-roles.component.js +35 -47
  20. package/esm2015/app/consts/acl-role-accesses.js +2 -2
  21. package/esm2015/app/enums/acl-role-access.js +1 -1
  22. package/esm2015/app/fs-app-acl.module.js +81 -39
  23. package/esm2015/app/injectors/app-acl-config.injector.js +1 -1
  24. package/esm2015/app/interfaces/acl-entry-data.js +2 -1
  25. package/esm2015/app/interfaces/acl-entry.js +2 -1
  26. package/esm2015/app/interfaces/acl-level.js +2 -1
  27. package/esm2015/app/interfaces/acl-object-entry.js +2 -1
  28. package/esm2015/app/interfaces/acl-object-role.js +2 -1
  29. package/esm2015/app/interfaces/acl-object.js +2 -1
  30. package/esm2015/app/interfaces/acl-permission.js +2 -1
  31. package/esm2015/app/interfaces/acl-role.js +2 -1
  32. package/esm2015/app/interfaces/app-acl-config.js +2 -1
  33. package/esm2015/app/interfaces/name-value.js +2 -1
  34. package/esm2015/app/services/app-acl.service.js +14 -17
  35. package/esm2015/firestitch-app-acl.js +1 -7
  36. package/esm2015/public_api.js +9 -4
  37. package/fesm2015/firestitch-app-acl.js +293 -302
  38. package/fesm2015/firestitch-app-acl.js.map +1 -1
  39. package/firestitch-app-acl.d.ts +1 -7
  40. package/package.json +8 -9
  41. package/public_api.d.ts +18 -4
  42. package/app/components/acl-entry/index.d.ts +0 -1
  43. package/app/components/acl-permission-popover/index.d.ts +0 -1
  44. package/app/enums/index.d.ts +0 -1
  45. package/app/injectors/index.d.ts +0 -1
  46. package/app/interfaces/index.d.ts +0 -11
  47. package/app/services/index.d.ts +0 -1
  48. package/bundles/firestitch-app-acl.umd.min.js +0 -16
  49. package/bundles/firestitch-app-acl.umd.min.js.map +0 -1
  50. package/esm2015/app/components/acl-entry/index.js +0 -2
  51. package/esm2015/app/components/acl-permission-popover/index.js +0 -2
  52. package/esm2015/app/enums/index.js +0 -4
  53. package/esm2015/app/injectors/index.js +0 -4
  54. package/esm2015/app/interfaces/index.js +0 -2
  55. package/esm2015/app/services/index.js +0 -2
  56. package/esm5/app/components/acl-entries/acl-entries.component.js +0 -180
  57. package/esm5/app/components/acl-entry/acl-entry.component.js +0 -93
  58. package/esm5/app/components/acl-entry/index.js +0 -2
  59. package/esm5/app/components/acl-object-roles/acl-object-roles.component.js +0 -64
  60. package/esm5/app/components/acl-permission-popover/acl-permission-popover.component.js +0 -37
  61. package/esm5/app/components/acl-permission-popover/index.js +0 -2
  62. package/esm5/app/components/acl-role/acl-role.component.js +0 -201
  63. package/esm5/app/components/acl-role-popover/acl-role-popover.component.js +0 -43
  64. package/esm5/app/components/acl-roles/acl-roles.component.js +0 -163
  65. package/esm5/app/consts/acl-role-accesses.js +0 -8
  66. package/esm5/app/enums/acl-role-access.js +0 -8
  67. package/esm5/app/enums/index.js +0 -4
  68. package/esm5/app/fs-app-acl.module.js +0 -86
  69. package/esm5/app/injectors/app-acl-config.injector.js +0 -3
  70. package/esm5/app/injectors/index.js +0 -4
  71. package/esm5/app/interfaces/acl-entry-data.js +0 -1
  72. package/esm5/app/interfaces/acl-entry.js +0 -1
  73. package/esm5/app/interfaces/acl-level.js +0 -1
  74. package/esm5/app/interfaces/acl-object-entry.js +0 -1
  75. package/esm5/app/interfaces/acl-object-role.js +0 -1
  76. package/esm5/app/interfaces/acl-object.js +0 -1
  77. package/esm5/app/interfaces/acl-permission.js +0 -1
  78. package/esm5/app/interfaces/acl-role.js +0 -1
  79. package/esm5/app/interfaces/app-acl-config.js +0 -1
  80. package/esm5/app/interfaces/index.js +0 -2
  81. package/esm5/app/interfaces/name-value.js +0 -1
  82. package/esm5/app/services/app-acl.service.js +0 -86
  83. package/esm5/app/services/index.js +0 -2
  84. package/esm5/firestitch-app-acl.js +0 -11
  85. package/esm5/public_api.js +0 -6
  86. package/fesm5/firestitch-app-acl.js +0 -919
  87. package/fesm5/firestitch-app-acl.js.map +0 -1
  88. package/firestitch-app-acl.metadata.json +0 -1
@@ -1,32 +1,51 @@
1
- import { __decorate, __param, __metadata } from 'tslib';
2
1
  import { FlexLayoutModule } from '@angular/flex-layout';
2
+ import * as i18 from '@angular/material/input';
3
3
  import { MatInputModule } from '@angular/material/input';
4
+ import * as i8 from '@angular/material/radio';
4
5
  import { MatRadioModule } from '@angular/material/radio';
6
+ import * as i13 from '@angular/material/button';
5
7
  import { MatButtonModule } from '@angular/material/button';
8
+ import * as i10 from '@angular/material/select';
6
9
  import { MatSelectModule } from '@angular/material/select';
10
+ import * as i9 from '@angular/material/checkbox';
7
11
  import { MatCheckboxModule } from '@angular/material/checkbox';
8
- import { MatDialogRef, MAT_DIALOG_DATA, MatDialog, MatDialogModule } from '@angular/material/dialog';
9
- import { InjectionToken, Inject, ɵɵdefineInjectable, ɵɵinject, Injectable, ChangeDetectorRef, ViewChild, Component, ChangeDetectionStrategy, QueryList, Input, ViewChildren, EventEmitter, Output, NgModule } from '@angular/core';
12
+ import * as i2 from '@angular/material/dialog';
13
+ import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
14
+ import * as i0 from '@angular/core';
15
+ import { InjectionToken, Injectable, Inject, Component, ChangeDetectionStrategy, ViewChild, Input, QueryList, ViewChildren, EventEmitter, Output, NgModule } from '@angular/core';
16
+ import * as i7$1 from '@angular/common';
10
17
  import { CommonModule } from '@angular/common';
18
+ import * as i12 from '@firestitch/list';
11
19
  import { FsListComponent, FsListModule } from '@firestitch/list';
20
+ import * as i2$1 from '@firestitch/popover';
12
21
  import { FsPopoverModule } from '@firestitch/popover';
22
+ import * as i4 from '@firestitch/dialog';
13
23
  import { FsDialogModule } from '@firestitch/dialog';
24
+ import * as i15 from '@firestitch/form';
14
25
  import { FsFormModule } from '@firestitch/form';
26
+ import * as i6 from '@firestitch/label';
15
27
  import { FsLabelModule } from '@firestitch/label';
28
+ import * as i7 from '@firestitch/radiogroup';
16
29
  import { FsRadioGroupModule } from '@firestitch/radiogroup';
30
+ import * as i5$1 from '@firestitch/badge';
17
31
  import { FsBadgeModule } from '@firestitch/badge';
32
+ import * as i1 from '@firestitch/checkboxgroup';
18
33
  import { FsCheckboxGroupModule } from '@firestitch/checkboxgroup';
19
34
  import { map, tap, takeUntil, filter } from 'rxjs/operators';
20
35
  import { ItemType } from '@firestitch/filter';
21
36
  import { list } from '@firestitch/common';
22
37
  import { ReplaySubject, Subject, forkJoin, of, Observable } from 'rxjs';
23
- import { FsMessage } from '@firestitch/message';
38
+ import * as i3 from '@firestitch/message';
24
39
  import { isArray, groupBy, forOwn, sortBy } from 'lodash-es';
25
40
  import * as _snakecaseKeys from 'snakecase-keys';
26
41
  import * as _camelcaseKeys from 'camelcase-keys';
27
- import { FsPrompt } from '@firestitch/prompt';
28
- import { ControlContainer, NgForm, FormsModule } from '@angular/forms';
42
+ import * as i5 from '@angular/material/form-field';
29
43
  import { MatFormFieldModule } from '@angular/material/form-field';
44
+ import * as i11 from '@angular/material/core';
45
+ import * as i14 from '@angular/forms';
46
+ import { ControlContainer, NgForm, FormsModule } from '@angular/forms';
47
+ import * as i17 from '@angular/flex-layout/flex';
48
+ import * as i3$1 from '@firestitch/prompt';
30
49
 
31
50
  var AclRoleAccess;
32
51
  (function (AclRoleAccess) {
@@ -36,9 +55,6 @@ var AclRoleAccess;
36
55
  AclRoleAccess[AclRoleAccess["Full"] = 15] = "Full";
37
56
  })(AclRoleAccess || (AclRoleAccess = {}));
38
57
 
39
- // start:ng42.barrel
40
- // end:ng42.barrel
41
-
42
58
  const AclRoleAccesses = [
43
59
  { name: 'None', value: AclRoleAccess.None },
44
60
  { name: 'Read', value: AclRoleAccess.Read },
@@ -50,7 +66,7 @@ const FS_APP_ACL_CONFIG = new InjectionToken('fs-app-acl-config');
50
66
 
51
67
  const snakecaseKeys = _snakecaseKeys;
52
68
  const camelcaseKeys = _camelcaseKeys;
53
- let FsAppAclService = class FsAppAclService {
69
+ class FsAppAclService {
54
70
  constructor(_appAclConfig) {
55
71
  this._appAclConfig = _appAclConfig;
56
72
  }
@@ -104,20 +120,20 @@ let FsAppAclService = class FsAppAclService {
104
120
  return this._appAclConfig.case === 'snake' ? snakecaseKeys(data, { deep: true }) : data;
105
121
  }
106
122
  }
107
- };
108
- FsAppAclService.ctorParameters = () => [
109
- { type: undefined, decorators: [{ type: Inject, args: [FS_APP_ACL_CONFIG,] }] }
110
- ];
111
- FsAppAclService.ɵprov = ɵɵdefineInjectable({ factory: function FsAppAclService_Factory() { return new FsAppAclService(ɵɵinject(FS_APP_ACL_CONFIG)); }, token: FsAppAclService, providedIn: "root" });
112
- FsAppAclService = __decorate([
113
- Injectable({
114
- providedIn: 'root',
115
- }),
116
- __param(0, Inject(FS_APP_ACL_CONFIG)),
117
- __metadata("design:paramtypes", [Object])
118
- ], FsAppAclService);
123
+ }
124
+ FsAppAclService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsAppAclService, deps: [{ token: FS_APP_ACL_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable });
125
+ FsAppAclService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsAppAclService, providedIn: 'root' });
126
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsAppAclService, decorators: [{
127
+ type: Injectable,
128
+ args: [{
129
+ providedIn: 'root',
130
+ }]
131
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
132
+ type: Inject,
133
+ args: [FS_APP_ACL_CONFIG]
134
+ }] }]; } });
119
135
 
120
- let FsAclRoleComponent = class FsAclRoleComponent {
136
+ class FsAclRoleComponent {
121
137
  constructor(_appAclService, _dialogRef, _message, _data, _cdRef) {
122
138
  this._appAclService = _appAclService;
123
139
  this._dialogRef = _dialogRef;
@@ -273,31 +289,53 @@ let FsAclRoleComponent = class FsAclRoleComponent {
273
289
  this.aclRole.permissions[permission.value] = Math.max(...permission.accesses);
274
290
  });
275
291
  }
276
- };
277
- FsAclRoleComponent.ctorParameters = () => [
278
- { type: FsAppAclService },
279
- { type: MatDialogRef },
280
- { type: FsMessage },
281
- { type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] },
282
- { type: ChangeDetectorRef }
283
- ];
284
- __decorate([
285
- ViewChild(FsListComponent),
286
- __metadata("design:type", FsListComponent)
287
- ], FsAclRoleComponent.prototype, "list", void 0);
288
- FsAclRoleComponent = __decorate([
289
- Component({
290
- template: "<form fsForm [submit]=\"save\">\n <fs-dialog>\n <ng-container *ngIf=\"aclRole\">\n <div mat-dialog-title>{{ aclRole.id ? 'Edit' : 'Create' }} Role</div>\n <mat-dialog-content>\n <div fxLayout=\"row\" fxLayout.lt-md=\"column\" fxLayoutGap=\"40px\" fxLayoutGap.lt-md=\"0\">\n <div fxLayout=\"column\" fxFlex fxFlex.lt-md=\"0\">\n <mat-form-field>\n <input matInput placeholder=\"Name\" [(ngModel)]=\"aclRole.name\" name=\"name\" fsFormRequired>\n </mat-form-field>\n\n <fs-label-field *ngIf=\"aclRole.id || aclLevels.length === 1; else levels\">\n <fs-label>Level</fs-label>\n {{indexedAclLevels[aclRole.level]}}\n </fs-label-field>\n\n <ng-template #levels>\n <div class=\"level\">\n <fs-radio-group\n [(ngModel)]=\"aclRole.level\"\n (ngModelChange)=\"levelChange()\"\n fsFormRequired\n label=\"Level\"\n orientation=\"vertical\"\n name=\"level\">\n <mat-radio-button\n *ngFor=\"let item of aclLevels\"\n [value]=\"item.value\"\n [disabled]=\"!!aclRole.protected\">\n {{ item.name }}\n </mat-radio-button>\n </fs-radio-group>\n </div>\n </ng-template>\n\n <fs-label-field *ngIf=\"levelPermissions.length\">\n <fs-label>All Permissions</fs-label>\n <mat-checkbox\n [(ngModel)]=\"aclRole.allPermissions\"\n (ngModelChange)=\"allPermissionsChange($event)\"\n [disabled]=\"!!aclRole.protected\"\n name=\"allPermissions\">\n </mat-checkbox>\n </fs-label-field>\n\n <div fxLayout=\"column\" *ngFor=\"let config of levelAclRoleConfigs\">\n <fs-label-field *ngIf=\"config.interface === 'checkbox'\">\n <fs-label>{{config.name}}</fs-label>\n <mat-checkbox\n [(ngModel)]=\"config.data\"\n [name]=\"config.name\">\n </mat-checkbox>\n <fs-label-message>\n <mat-hint>{{config.description}}</mat-hint>\n </fs-label-message>\n </fs-label-field>\n\n <mat-form-field *ngIf=\"config.interface === 'select'\">\n <mat-select\n [(ngModel)]=\"config.data\"\n [name]=\"config.value\"\n [required]=\"config.required\"\n [placeholder]=\"config.name\">\n <mat-option\n *ngFor=\"let item of config.values\"\n [value]=\"item.value\">\n {{ item.name }}\n </mat-option>\n </mat-select>\n <mat-hint>{{config.description}}</mat-hint>\n </mat-form-field>\n </div>\n </div>\n\n <div fxLayout=\"column\" fxFlex=\"65\" fxFlex.lt-md=\"0\" *ngIf=\"aclRole.level\" [hidden]=\"!levelPermissions.length\" class=\"permissions\">\n\n <fs-list [config]=\"listConfig\">\n <fs-list-column title=\"Permissions\">\n <ng-template colspan=\"2\" fs-list-group-cell let-row=\"row\" class=\"permission-group\">\n <small><b>{{row.category || 'General'}}</b></small>\n </ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <div class=\"permission\">{{ row.name }}</div>\n <div class=\"description small\">{{ row.description }}</div>\n </ng-template>\n </fs-list-column>\n <fs-list-column title=\"Access\" width=\"1%\" class=\"access\">\n <ng-template fs-list-cell let-row=\"permission\" let-permission=\"row\">\n <span *ngIf=\"aclRole.allPermissions; else elseAll\">\n {{ indexedAccesses[aclRole.permissions[permission.value]] }}\n </span>\n <ng-template #elseAll>\n <mat-form-field>\n <mat-select\n [(ngModel)]=\"aclRole.permissions[permission.value]\"\n [disabled]=\"!!aclRole.protected\"\n fsFormRequired\n name=\"access-{{ permission.value }}\">\n <ng-container *ngFor=\"let access of AclRoleAccesses\">\n <mat-option\n *ngIf=\"access.value === 0 || permission.accesses.indexOf(access.value) !== -1\"\n [value]=\"access.value\">\n {{ access.name }}\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n </ng-template>\n </ng-template>\n </fs-list-column>\n </fs-list>\n </div>\n </div>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button mat-button type=\"submit\" color=\"primary\">{{ aclRole.id ? 'Save' : 'Create' }}</button>\n <button mat-button [mat-dialog-close]=\"null\" type=\"button\">Cancel</button>\n </mat-dialog-actions>\n </ng-container>\n </fs-dialog>\n</form>\n",
291
- changeDetection: ChangeDetectionStrategy.OnPush,
292
- styles: [":host .permissions ::ng-deep .fs-list-row-group{background-color:#f6f6f6}:host .permissions ::ng-deep fs-list .access{white-space:nowrap}:host .permissions ::ng-deep .mat-form-field{width:100px}:host .permissions ::ng-deep .mat-form-field .mat-form-field-wrapper{padding-bottom:0}:host .permissions ::ng-deep .mat-form-field .mat-form-field-infix{border-top:0}:host .permissions ::ng-deep .mat-form-field .mat-form-field-underline{bottom:0}:host ::ng-deep fs-radio-group{width:100%}:host ::ng-deep fs-label-field{width:100%}:host .level{width:100%}"]
293
- }),
294
- __param(3, Inject(MAT_DIALOG_DATA)),
295
- __metadata("design:paramtypes", [FsAppAclService,
296
- MatDialogRef,
297
- FsMessage, Object, ChangeDetectorRef])
298
- ], FsAclRoleComponent);
292
+ }
293
+ FsAclRoleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsAclRoleComponent, deps: [{ token: FsAppAclService }, { token: i2.MatDialogRef }, { token: i3.FsMessage }, { token: MAT_DIALOG_DATA }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
294
+ FsAclRoleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsAclRoleComponent, selector: "ng-component", viewQueries: [{ propertyName: "list", first: true, predicate: FsListComponent, descendants: true }], ngImport: i0, template: "<form fsForm [submit]=\"save\">\n <fs-dialog>\n <ng-container *ngIf=\"aclRole\">\n <div mat-dialog-title>{{ aclRole.id ? 'Edit' : 'Create' }} Role</div>\n <mat-dialog-content>\n <div fxLayout=\"row\" fxLayout.lt-md=\"column\" fxLayoutGap=\"40px\" fxLayoutGap.lt-md=\"0\">\n <div fxLayout=\"column\" fxFlex fxFlex.lt-md=\"0\">\n <mat-form-field>\n <input matInput placeholder=\"Name\" [(ngModel)]=\"aclRole.name\" name=\"name\" fsFormRequired>\n </mat-form-field>\n\n <fs-label-field *ngIf=\"aclRole.id || aclLevels.length === 1; else levels\">\n <fs-label>Level</fs-label>\n {{indexedAclLevels[aclRole.level]}}\n </fs-label-field>\n\n <ng-template #levels>\n <div class=\"level\">\n <fs-radio-group\n [(ngModel)]=\"aclRole.level\"\n (ngModelChange)=\"levelChange()\"\n fsFormRequired\n label=\"Level\"\n orientation=\"vertical\"\n name=\"level\">\n <mat-radio-button\n *ngFor=\"let item of aclLevels\"\n [value]=\"item.value\"\n [disabled]=\"!!aclRole.protected\">\n {{ item.name }}\n </mat-radio-button>\n </fs-radio-group>\n </div>\n </ng-template>\n\n <fs-label-field *ngIf=\"levelPermissions.length\">\n <fs-label>All Permissions</fs-label>\n <mat-checkbox\n [(ngModel)]=\"aclRole.allPermissions\"\n (ngModelChange)=\"allPermissionsChange($event)\"\n [disabled]=\"!!aclRole.protected\"\n name=\"allPermissions\">\n </mat-checkbox>\n </fs-label-field>\n\n <div fxLayout=\"column\" *ngFor=\"let config of levelAclRoleConfigs\">\n <fs-label-field *ngIf=\"config.interface === 'checkbox'\">\n <fs-label>{{config.name}}</fs-label>\n <mat-checkbox\n [(ngModel)]=\"config.data\"\n [name]=\"config.name\">\n </mat-checkbox>\n <fs-label-message>\n <mat-hint>{{config.description}}</mat-hint>\n </fs-label-message>\n </fs-label-field>\n\n <mat-form-field *ngIf=\"config.interface === 'select'\">\n <mat-select\n [(ngModel)]=\"config.data\"\n [name]=\"config.value\"\n [required]=\"config.required\"\n [placeholder]=\"config.name\">\n <mat-option\n *ngFor=\"let item of config.values\"\n [value]=\"item.value\">\n {{ item.name }}\n </mat-option>\n </mat-select>\n <mat-hint>{{config.description}}</mat-hint>\n </mat-form-field>\n </div>\n </div>\n\n <div fxLayout=\"column\" fxFlex=\"65\" fxFlex.lt-md=\"0\" *ngIf=\"aclRole.level\" [hidden]=\"!levelPermissions.length\" class=\"permissions\">\n\n <fs-list [config]=\"listConfig\">\n <fs-list-column title=\"Permissions\">\n <ng-template colspan=\"2\" fs-list-group-cell let-row=\"row\" class=\"permission-group\">\n <small><b>{{row.category || 'General'}}</b></small>\n </ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <div class=\"permission\">{{ row.name }}</div>\n <div class=\"description small\">{{ row.description }}</div>\n </ng-template>\n </fs-list-column>\n <fs-list-column title=\"Access\" width=\"1%\" class=\"access\">\n <ng-template fs-list-cell let-row=\"permission\" let-permission=\"row\">\n <span *ngIf=\"aclRole.allPermissions; else elseAll\">\n {{ indexedAccesses[aclRole.permissions[permission.value]] }}\n </span>\n <ng-template #elseAll>\n <mat-form-field>\n <mat-select\n [(ngModel)]=\"aclRole.permissions[permission.value]\"\n [disabled]=\"!!aclRole.protected\"\n fsFormRequired\n name=\"access-{{ permission.value }}\">\n <ng-container *ngFor=\"let access of AclRoleAccesses\">\n <mat-option\n *ngIf=\"access.value === 0 || permission.accesses.indexOf(access.value) !== -1\"\n [value]=\"access.value\">\n {{ access.name }}\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n </ng-template>\n </ng-template>\n </fs-list-column>\n </fs-list>\n </div>\n </div>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button mat-button type=\"submit\" color=\"primary\">{{ aclRole.id ? 'Save' : 'Create' }}</button>\n <button mat-button [mat-dialog-close]=\"null\" type=\"button\">Cancel</button>\n </mat-dialog-actions>\n </ng-container>\n </fs-dialog>\n</form>\n", styles: [":host .permissions ::ng-deep .fs-list-row-group{background-color:#f6f6f6}:host .permissions ::ng-deep fs-list .access{white-space:nowrap}:host .permissions ::ng-deep .mat-form-field{width:100px}:host .permissions ::ng-deep .mat-form-field .mat-form-field-wrapper{padding-bottom:0}:host .permissions ::ng-deep .mat-form-field .mat-form-field-infix{border-top:0}:host .permissions ::ng-deep .mat-form-field .mat-form-field-underline{bottom:0}:host ::ng-deep fs-radio-group{width:100%}:host ::ng-deep fs-label-field{width:100%}:host .level{width:100%}\n"], components: [{ type: i4.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode"] }, { type: i5.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i6.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }, { type: i6.FsLabelComponent, selector: "fs-label" }, { type: i7.FsRadioGroupComponent, selector: "fs-radio-group", inputs: ["orientation", "label", "name", "disabled", "radioPosition", "compareWith", "required"] }, { type: i8.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { type: i9.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i6.FsLabelMessageComponent, selector: "fs-label-message" }, { type: i10.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i11.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i12.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { type: i13.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i14.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i14.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i14.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i15.FsFormDirective, selector: "[fsForm]", inputs: ["wrapperSelector", "messageSelector", "hintSelector", "labelSelector", "autocomplete", "shortcuts", "confirm", "confirmDialog", "confirmDrawer", "confirmBrowser", "confirmTabs", "dirtySubmitButton", "submit", "successDelay", "errorDelay", "tabGroup"], outputs: ["fsForm", "invalid", "valid", "submitted", "reseted", "cleared"] }, { type: i7$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i17.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i17.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { type: i17.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i18.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i14.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i15.FsFormRequiredDirective, selector: "[fsFormRequired],[ngModel][required]", inputs: ["fsFormRequired", "required", "fsFormRequiredMessage"] }, { type: i14.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i14.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i7$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i14.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i12.FsListColumnDirective, selector: "fs-list-column", inputs: ["show", "title", "name", "customize", "sortable", "sortableDefault", "direction", "align", "width", "class"] }, { type: i12.FsListGroupHeaderDirective, selector: "[fs-list-group-cell],[fs-list-group-header]" }, { type: i12.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }, { type: i2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i15.FsSubmitButtonDirective, selector: "button[type=\"submit\"]", inputs: ["name", "dirtySubmit"] }, { type: i2.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["type", "mat-dialog-close", "aria-label", "matDialogClose"], exportAs: ["matDialogClose"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
295
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsAclRoleComponent, decorators: [{
296
+ type: Component,
297
+ args: [{
298
+ templateUrl: './acl-role.component.html',
299
+ styleUrls: ['./acl-role.component.scss'],
300
+ changeDetection: ChangeDetectionStrategy.OnPush,
301
+ }]
302
+ }], ctorParameters: function () { return [{ type: FsAppAclService }, { type: i2.MatDialogRef }, { type: i3.FsMessage }, { type: undefined, decorators: [{
303
+ type: Inject,
304
+ args: [MAT_DIALOG_DATA]
305
+ }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { list: [{
306
+ type: ViewChild,
307
+ args: [FsListComponent]
308
+ }] } });
309
+
310
+ class FsAclPermissionPopoverComponent {
311
+ constructor(_appAclService) {
312
+ this._appAclService = _appAclService;
313
+ }
314
+ ngOnInit() {
315
+ this._appAclService.getPermissions()
316
+ .subscribe(permissions => {
317
+ this.description = permissions.filter(item => {
318
+ return item.value === this.permission.value;
319
+ }).map(item => {
320
+ return item.description;
321
+ })[0];
322
+ });
323
+ }
324
+ }
325
+ FsAclPermissionPopoverComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsAclPermissionPopoverComponent, deps: [{ token: FsAppAclService }], target: i0.ɵɵFactoryTarget.Component });
326
+ FsAclPermissionPopoverComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsAclPermissionPopoverComponent, selector: "acl-permission-popover", inputs: { permission: "permission" }, ngImport: i0, template: "\n<fs-popover [template]=\"popover\" maxWidth=\"400\">\n <ng-content></ng-content>\n</fs-popover>\n\n<ng-template #popover>\n {{permission.name}}\n <div class=\"small\">{{description}}</div>\n</ng-template>\n\n", styles: [":host{cursor:pointer}\n"], components: [{ type: i2$1.FsPopoverComponent, selector: "fs-popover", inputs: ["template", "data", "leaveDelay", "showDelay", "maxWidth", "wrapperClass", "autoShow", "autoClose", "loadingDiameter", "loading", "indication", "position", "theme", "size", "trigger"] }] });
327
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsAclPermissionPopoverComponent, decorators: [{
328
+ type: Component,
329
+ args: [{
330
+ selector: 'acl-permission-popover',
331
+ templateUrl: './acl-permission-popover.component.html',
332
+ styleUrls: ['./acl-permission-popover.component.scss']
333
+ }]
334
+ }], ctorParameters: function () { return [{ type: FsAppAclService }]; }, propDecorators: { permission: [{
335
+ type: Input
336
+ }] } });
299
337
 
300
- let FsAclRolesComponent = class FsAclRolesComponent {
338
+ class FsAclRolesComponent {
301
339
  constructor(_appAclService, _dialog, _cdRef) {
302
340
  this._appAclService = _appAclService;
303
341
  this._dialog = _dialog;
@@ -402,80 +440,33 @@ let FsAclRolesComponent = class FsAclRolesComponent {
402
440
  },
403
441
  };
404
442
  }
405
- };
406
- FsAclRolesComponent.ctorParameters = () => [
407
- { type: FsAppAclService },
408
- { type: MatDialog },
409
- { type: ChangeDetectorRef }
410
- ];
411
- __decorate([
412
- Input(),
413
- __metadata("design:type", Function)
414
- ], FsAclRolesComponent.prototype, "deleteAclRole", void 0);
415
- __decorate([
416
- Input(),
417
- __metadata("design:type", Function)
418
- ], FsAclRolesComponent.prototype, "saveAclRole", void 0);
419
- __decorate([
420
- Input(),
421
- __metadata("design:type", Function)
422
- ], FsAclRolesComponent.prototype, "loadAclRoles", void 0);
423
- __decorate([
424
- Input(),
425
- __metadata("design:type", Function)
426
- ], FsAclRolesComponent.prototype, "loadAclRole", void 0);
427
- __decorate([
428
- Input(),
429
- __metadata("design:type", Array)
430
- ], FsAclRolesComponent.prototype, "aclLevels", void 0);
431
- __decorate([
432
- ViewChildren(FsListComponent),
433
- __metadata("design:type", Object)
434
- ], FsAclRolesComponent.prototype, "list", void 0);
435
- FsAclRolesComponent = __decorate([
436
- Component({
437
- selector: 'fs-acl-roles',
438
- template: "<fs-list [config]=\"listConfig\" *ngIf=\"listConfig\">\n <fs-list-column title=\"Name\" name=\"name\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openDialog(row)\">{{ row.name }}</a>\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"hierarchy\" title=\"Level\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n {{ indexedAclRoleLevels[row.level] }}\n </ng-template>\n </fs-list-column>\n <fs-list-column title=\"Permissions\">\n <ng-template fs-list-cell let-row=\"row\">\n <div class=\"permissions\">\n <ng-container *ngFor=\"let permission of row.permissions\">\n <span *ngIf=\"permission.access\" class=\"permission\">\n <acl-permission-popover [permission]=\"permission\">{{permission.name}}</acl-permission-popover>\n </span>\n </ng-container>\n </div>\n </ng-template>\n </fs-list-column>\n</fs-list>\n",
439
- changeDetection: ChangeDetectionStrategy.OnPush,
440
- styles: [".permissions .permission+.permission::before{content:\", \"}"]
441
- }),
442
- __metadata("design:paramtypes", [FsAppAclService,
443
- MatDialog,
444
- ChangeDetectorRef])
445
- ], FsAclRolesComponent);
443
+ }
444
+ FsAclRolesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsAclRolesComponent, deps: [{ token: FsAppAclService }, { token: i2.MatDialog }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
445
+ FsAclRolesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsAclRolesComponent, selector: "fs-acl-roles", inputs: { deleteAclRole: "deleteAclRole", saveAclRole: "saveAclRole", loadAclRoles: "loadAclRoles", loadAclRole: "loadAclRole", aclLevels: "aclLevels" }, viewQueries: [{ propertyName: "list", predicate: FsListComponent, descendants: true }], ngImport: i0, template: "<fs-list [config]=\"listConfig\" *ngIf=\"listConfig\">\n <fs-list-column title=\"Name\" name=\"name\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openDialog(row)\">{{ row.name }}</a>\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"hierarchy\" title=\"Level\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n {{ indexedAclRoleLevels[row.level] }}\n </ng-template>\n </fs-list-column>\n <fs-list-column title=\"Permissions\">\n <ng-template fs-list-cell let-row=\"row\">\n <div class=\"permissions\">\n <ng-container *ngFor=\"let permission of row.permissions\">\n <span *ngIf=\"permission.access\" class=\"permission\">\n <acl-permission-popover [permission]=\"permission\">{{permission.name}}</acl-permission-popover>\n </span>\n </ng-container>\n </div>\n </ng-template>\n </fs-list-column>\n</fs-list>\n", styles: [".permissions .permission+.permission:before{content:\", \"}\n"], components: [{ type: i12.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { type: FsAclPermissionPopoverComponent, selector: "acl-permission-popover", inputs: ["permission"] }], directives: [{ type: i7$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i12.FsListColumnDirective, selector: "fs-list-column", inputs: ["show", "title", "name", "customize", "sortable", "sortableDefault", "direction", "align", "width", "class"] }, { type: i12.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }, { type: i7$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
446
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsAclRolesComponent, decorators: [{
447
+ type: Component,
448
+ args: [{
449
+ selector: 'fs-acl-roles',
450
+ templateUrl: 'acl-roles.component.html',
451
+ styleUrls: ['acl-roles.component.scss'],
452
+ changeDetection: ChangeDetectionStrategy.OnPush,
453
+ }]
454
+ }], ctorParameters: function () { return [{ type: FsAppAclService }, { type: i2.MatDialog }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { deleteAclRole: [{
455
+ type: Input
456
+ }], saveAclRole: [{
457
+ type: Input
458
+ }], loadAclRoles: [{
459
+ type: Input
460
+ }], loadAclRole: [{
461
+ type: Input
462
+ }], aclLevels: [{
463
+ type: Input
464
+ }], list: [{
465
+ type: ViewChildren,
466
+ args: [FsListComponent]
467
+ }] } });
446
468
 
447
- let FsAclPermissionPopoverComponent = class FsAclPermissionPopoverComponent {
448
- constructor(_appAclService) {
449
- this._appAclService = _appAclService;
450
- }
451
- ngOnInit() {
452
- this._appAclService.getPermissions()
453
- .subscribe(permissions => {
454
- this.description = permissions.filter(item => {
455
- return item.value === this.permission.value;
456
- }).map(item => {
457
- return item.description;
458
- })[0];
459
- });
460
- }
461
- };
462
- FsAclPermissionPopoverComponent.ctorParameters = () => [
463
- { type: FsAppAclService }
464
- ];
465
- __decorate([
466
- Input(),
467
- __metadata("design:type", Object)
468
- ], FsAclPermissionPopoverComponent.prototype, "permission", void 0);
469
- FsAclPermissionPopoverComponent = __decorate([
470
- Component({
471
- selector: 'acl-permission-popover',
472
- template: "\n<fs-popover [template]=\"popover\" maxWidth=\"400\">\n <ng-content></ng-content>\n</fs-popover>\n\n<ng-template #popover>\n {{permission.name}}\n <div class=\"small\">{{description}}</div>\n</ng-template>\n\n",
473
- styles: [":host{cursor:pointer}"]
474
- }),
475
- __metadata("design:paramtypes", [FsAppAclService])
476
- ], FsAclPermissionPopoverComponent);
477
-
478
- let FsAclRolePopoverComponent = class FsAclRolePopoverComponent {
469
+ class FsAclRolePopoverComponent {
479
470
  constructor(_appAclService) {
480
471
  this._appAclService = _appAclService;
481
472
  this.permissions = [];
@@ -491,28 +482,69 @@ let FsAclRolePopoverComponent = class FsAclRolePopoverComponent {
491
482
  });
492
483
  });
493
484
  }
494
- };
495
- FsAclRolePopoverComponent.ctorParameters = () => [
496
- { type: FsAppAclService }
497
- ];
498
- __decorate([
499
- Input(),
500
- __metadata("design:type", Object)
501
- ], FsAclRolePopoverComponent.prototype, "aclRole", void 0);
502
- __decorate([
503
- Input(),
504
- __metadata("design:type", Object)
505
- ], FsAclRolePopoverComponent.prototype, "objectName", void 0);
506
- FsAclRolePopoverComponent = __decorate([
507
- Component({
508
- selector: 'fs-acl-role-popover',
509
- template: "\n<fs-popover [template]=\"popover\" maxWidth=\"400\">\n <ng-content></ng-content>\n</fs-popover>\n\n<ng-template #popover>\n <div class=\"name small\">{{aclRole.name}}<span *ngIf=\"objectName\">: {{objectName}}</span></div>\n\n <ng-container *ngIf=\"permissions.length; else nonePermission\">\n <div *ngFor=\"let permission of permissions\" class=\"permission\">\n <div>{{permission.name}}</div>\n <div class=\"small\">{{permission.description}}</div>\n </div>\n </ng-container>\n\n <ng-template #nonePermission>\n None\n </ng-template>\n</ng-template>\n",
510
- styles: [".name{padding-bottom:10px}.permission+.permission{padding-top:5px}:host{cursor:pointer}"]
511
- }),
512
- __metadata("design:paramtypes", [FsAppAclService])
513
- ], FsAclRolePopoverComponent);
485
+ }
486
+ FsAclRolePopoverComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsAclRolePopoverComponent, deps: [{ token: FsAppAclService }], target: i0.ɵɵFactoryTarget.Component });
487
+ FsAclRolePopoverComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsAclRolePopoverComponent, selector: "fs-acl-role-popover", inputs: { aclRole: "aclRole", objectName: "objectName" }, ngImport: i0, template: "\n<fs-popover [template]=\"popover\" maxWidth=\"400\">\n <ng-content></ng-content>\n</fs-popover>\n\n<ng-template #popover>\n <div class=\"name small\">{{aclRole.name}}<span *ngIf=\"objectName\">: {{objectName}}</span></div>\n\n <ng-container *ngIf=\"permissions.length; else nonePermission\">\n <div *ngFor=\"let permission of permissions\" class=\"permission\">\n <div>{{permission.name}}</div>\n <div class=\"small\">{{permission.description}}</div>\n </div>\n </ng-container>\n\n <ng-template #nonePermission>\n None\n </ng-template>\n</ng-template>\n", styles: [".name{padding-bottom:10px}.permission+.permission{padding-top:5px}:host{cursor:pointer}\n"], components: [{ type: i2$1.FsPopoverComponent, selector: "fs-popover", inputs: ["template", "data", "leaveDelay", "showDelay", "maxWidth", "wrapperClass", "autoShow", "autoClose", "loadingDiameter", "loading", "indication", "position", "theme", "size", "trigger"] }], directives: [{ type: i7$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
488
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsAclRolePopoverComponent, decorators: [{
489
+ type: Component,
490
+ args: [{
491
+ selector: 'fs-acl-role-popover',
492
+ templateUrl: './acl-role-popover.component.html',
493
+ styleUrls: ['./acl-role-popover.component.scss']
494
+ }]
495
+ }], ctorParameters: function () { return [{ type: FsAppAclService }]; }, propDecorators: { aclRole: [{
496
+ type: Input
497
+ }], objectName: [{
498
+ type: Input
499
+ }] } });
514
500
 
515
- let FsAclEntryComponent = class FsAclEntryComponent {
501
+ class FsAclObjectRolesComponent {
502
+ constructor() {
503
+ this.aclRoles = [];
504
+ this.required = false;
505
+ this.multiple = false;
506
+ this.disabled = false;
507
+ this.aclObjectRoles = [];
508
+ this.rolesLabel = 'Roles';
509
+ this.levelLabel = '';
510
+ this.change = new EventEmitter();
511
+ this.compareAclRole = (o1, o2) => {
512
+ return o1 && o2 && o1.id === o2.id;
513
+ };
514
+ }
515
+ changed() {
516
+ this.change.emit(this.aclObjectRoles);
517
+ }
518
+ }
519
+ FsAclObjectRolesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsAclObjectRolesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
520
+ FsAclObjectRolesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsAclObjectRolesComponent, selector: "fs-acl-object-roles", inputs: { aclRoles: "aclRoles", required: "required", multiple: "multiple", disabled: "disabled", aclObjectRoles: "aclObjectRoles", rolesLabel: "rolesLabel", levelLabel: "levelLabel" }, outputs: { change: "change" }, ngImport: i0, template: "<ng-container *ngIf=\"!multiple\">\n <ng-container *ngFor=\"let aclObjectRole of aclObjectRoles\">\n <fs-checkbox-group\n [(ngModel)]=\"aclObjectRole.aclRoles\"\n (ngModelChange)=\"changed()\"\n name=\"roles\"\n [compareWith]=\"compareAclRole\"\n [disabled]=\"disabled\"\n [label]=\"rolesLabel\"\n [fsFormRequired]=\"required\"\n orientation=\"vertical\">\n <mat-checkbox [disabled]=\"disabled\" *ngFor=\"let aclRole of aclRoles\" [value]=\"aclRole\">\n {{ aclRole.name }}\n </mat-checkbox>\n </fs-checkbox-group>\n </ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"multiple\">\n <table>\n <tr>\n <td>\n <small>{{levelLabel}}</small>\n </td>\n <td>\n <small>{{rolesLabel}}</small>\n </td>\n </tr>\n <tr *ngFor=\"let aclObjectRole of aclObjectRoles\">\n <td>{{aclObjectRole.object.name}}</td>\n <td>\n <mat-form-field class=\"form-field-padless\">\n <mat-select\n [(ngModel)]=\"aclObjectRole.aclRoles\"\n multiple=\"true\"\n [disabled]=\"disabled\"\n [compareWith]=\"compareAclRole\"\n (ngModelChange)=\"changed()\"\n name=\"aclRole_{{ aclObjectRole.object.id }}\">\n <mat-option *ngFor=\"let aclRole of aclRoles\" [value]=\"aclRole\">\n {{ aclRole.name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </td>\n </tr>\n </table>\n</ng-container>\n", styles: ["table tr td:first-child{padding-right:15px}\n"], components: [{ type: i1.FsCheckboxGroupComponent, selector: "fs-checkbox-group", inputs: ["orientation", "position", "label", "disabled", "compareWith"], outputs: ["change"] }, { type: i9.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i5.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i10.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i11.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i7$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i14.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i14.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i15.FsFormRequiredDirective, selector: "[fsFormRequired],[ngModel][required]", inputs: ["fsFormRequired", "required", "fsFormRequiredMessage"] }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
521
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsAclObjectRolesComponent, decorators: [{
522
+ type: Component,
523
+ args: [{
524
+ selector: 'fs-acl-object-roles',
525
+ templateUrl: './acl-object-roles.component.html',
526
+ styleUrls: ['./acl-object-roles.component.scss'],
527
+ viewProviders: [{ provide: ControlContainer, useExisting: NgForm }]
528
+ }]
529
+ }], propDecorators: { aclRoles: [{
530
+ type: Input
531
+ }], required: [{
532
+ type: Input
533
+ }], multiple: [{
534
+ type: Input
535
+ }], disabled: [{
536
+ type: Input
537
+ }], aclObjectRoles: [{
538
+ type: Input
539
+ }], rolesLabel: [{
540
+ type: Input
541
+ }], levelLabel: [{
542
+ type: Input
543
+ }], change: [{
544
+ type: Output
545
+ }] } });
546
+
547
+ class FsAclEntryComponent {
516
548
  constructor(_appAclService, _dialogRef, _message, _data) {
517
549
  var _a;
518
550
  this._appAclService = _appAclService;
@@ -532,7 +564,7 @@ let FsAclEntryComponent = class FsAclEntryComponent {
532
564
  });
533
565
  };
534
566
  this.aclObjectEntry = Object.assign({}, _data.aclObjectEntry);
535
- this.required = (_a = _data.required, (_a !== null && _a !== void 0 ? _a : true));
567
+ this.required = (_a = _data.required) !== null && _a !== void 0 ? _a : true;
536
568
  if (_data.titleEdit) {
537
569
  this.titleEdit = _data.titleEdit;
538
570
  }
@@ -574,25 +606,21 @@ let FsAclEntryComponent = class FsAclEntryComponent {
574
606
  close(data = null) {
575
607
  this._dialogRef.close(data);
576
608
  }
577
- };
578
- FsAclEntryComponent.ctorParameters = () => [
579
- { type: FsAppAclService },
580
- { type: MatDialogRef },
581
- { type: FsMessage },
582
- { type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] }
583
- ];
584
- FsAclEntryComponent = __decorate([
585
- Component({
586
- template: "<form fsForm [submit]=\"save\">\n <fs-dialog>\n <div mat-dialog-title>{{ titleEdit? titleEdit : titleAdd }}</div>\n <mat-dialog-content>\n <div *ngIf=\"aclObjectRole\">\n <fs-label-field *ngIf=\"aclObjectEntry.object\">\n <fs-label>{{indexedAclRoleLevels[aclObjectEntry.level]}}</fs-label>\n {{aclObjectEntry.object.name}}\n </fs-label-field>\n\n <fs-acl-object-roles\n [aclRoles]=\"aclRoles\"\n [aclObjectRoles]=\"[aclObjectRole]\"\n [required]=\"required\"\n (change)=\"aclObjectRoleChange($event)\">\n </fs-acl-object-roles>\n </div>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button mat-button type=\"submit\" color=\"primary\">Save</button>\n <button mat-button mat-dialog-close type=\"button\">Cancel</button>\n </mat-dialog-actions>\n </fs-dialog>\n</form>\n",
587
- styles: ["::ng-deep .account-roles-autocomplete-panel .mat-option{line-height:normal}::ng-deep .account-roles-autocomplete-panel .mat-option .mat-option-text{display:flex;flex-direction:row;align-items:center}::ng-deep .account-roles-autocomplete-panel .mat-option .mat-option-text fs-badge{margin-right:5px}"]
588
- }),
589
- __param(3, Inject(MAT_DIALOG_DATA)),
590
- __metadata("design:paramtypes", [FsAppAclService,
591
- MatDialogRef,
592
- FsMessage, Object])
593
- ], FsAclEntryComponent);
609
+ }
610
+ FsAclEntryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsAclEntryComponent, deps: [{ token: FsAppAclService }, { token: i2.MatDialogRef }, { token: i3.FsMessage }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
611
+ FsAclEntryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsAclEntryComponent, selector: "ng-component", ngImport: i0, template: "<form fsForm [submit]=\"save\">\n <fs-dialog>\n <div mat-dialog-title>{{ titleEdit? titleEdit : titleAdd }}</div>\n <mat-dialog-content>\n <div *ngIf=\"aclObjectRole\">\n <fs-label-field *ngIf=\"aclObjectEntry.object\">\n <fs-label>{{indexedAclRoleLevels[aclObjectEntry.level]}}</fs-label>\n {{aclObjectEntry.object.name}}\n </fs-label-field>\n\n <fs-acl-object-roles\n [aclRoles]=\"aclRoles\"\n [aclObjectRoles]=\"[aclObjectRole]\"\n [required]=\"required\"\n (change)=\"aclObjectRoleChange($event)\">\n </fs-acl-object-roles>\n </div>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button mat-button type=\"submit\" color=\"primary\">Save</button>\n <button mat-button mat-dialog-close type=\"button\">Cancel</button>\n </mat-dialog-actions>\n </fs-dialog>\n</form>\n", styles: ["::ng-deep .account-roles-autocomplete-panel .mat-option{line-height:normal}::ng-deep .account-roles-autocomplete-panel .mat-option .mat-option-text{display:flex;flex-direction:row;align-items:center}::ng-deep .account-roles-autocomplete-panel .mat-option .mat-option-text fs-badge{margin-right:5px}\n"], components: [{ type: i4.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode"] }, { type: i6.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }, { type: i6.FsLabelComponent, selector: "fs-label" }, { type: FsAclObjectRolesComponent, selector: "fs-acl-object-roles", inputs: ["aclRoles", "required", "multiple", "disabled", "aclObjectRoles", "rolesLabel", "levelLabel"], outputs: ["change"] }, { type: i13.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i14.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i14.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i14.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i15.FsFormDirective, selector: "[fsForm]", inputs: ["wrapperSelector", "messageSelector", "hintSelector", "labelSelector", "autocomplete", "shortcuts", "confirm", "confirmDialog", "confirmDrawer", "confirmBrowser", "confirmTabs", "dirtySubmitButton", "submit", "successDelay", "errorDelay", "tabGroup"], outputs: ["fsForm", "invalid", "valid", "submitted", "reseted", "cleared"] }, { type: i2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i7$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i15.FsSubmitButtonDirective, selector: "button[type=\"submit\"]", inputs: ["name", "dirtySubmit"] }, { type: i2.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["type", "mat-dialog-close", "aria-label", "matDialogClose"], exportAs: ["matDialogClose"] }] });
612
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsAclEntryComponent, decorators: [{
613
+ type: Component,
614
+ args: [{
615
+ templateUrl: './acl-entry.component.html',
616
+ styleUrls: ['./acl-entry.component.scss'],
617
+ }]
618
+ }], ctorParameters: function () { return [{ type: FsAppAclService }, { type: i2.MatDialogRef }, { type: i3.FsMessage }, { type: undefined, decorators: [{
619
+ type: Inject,
620
+ args: [MAT_DIALOG_DATA]
621
+ }] }]; } });
594
622
 
595
- let FsAclEntriesComponent = class FsAclEntriesComponent {
623
+ class FsAclEntriesComponent {
596
624
  constructor(_appAclService, _dialog, _confirm) {
597
625
  this._appAclService = _appAclService;
598
626
  this._dialog = _dialog;
@@ -713,121 +741,67 @@ let FsAclEntriesComponent = class FsAclEntriesComponent {
713
741
  reload() {
714
742
  this.aclEntriesList.reload();
715
743
  }
716
- };
717
- FsAclEntriesComponent.ctorParameters = () => [
718
- { type: FsAppAclService },
719
- { type: MatDialog },
720
- { type: FsPrompt }
721
- ];
722
- __decorate([
723
- Input(),
724
- __metadata("design:type", Function)
725
- ], FsAclEntriesComponent.prototype, "loadAclEntries", void 0);
726
- __decorate([
727
- Input(),
728
- __metadata("design:type", Function)
729
- ], FsAclEntriesComponent.prototype, "loadAclRoles", void 0);
730
- __decorate([
731
- Input(),
732
- __metadata("design:type", Function)
733
- ], FsAclEntriesComponent.prototype, "saveAclObjectEntry", void 0);
734
- __decorate([
735
- Input(),
736
- __metadata("design:type", Object)
737
- ], FsAclEntriesComponent.prototype, "environmentShow", void 0);
738
- __decorate([
739
- Input(),
740
- __metadata("design:type", Object)
741
- ], FsAclEntriesComponent.prototype, "environmentLabel", void 0);
742
- __decorate([
743
- Input(),
744
- __metadata("design:type", Array)
745
- ], FsAclEntriesComponent.prototype, "actions", void 0);
746
- __decorate([
747
- ViewChild(FsListComponent),
748
- __metadata("design:type", FsListComponent)
749
- ], FsAclEntriesComponent.prototype, "aclEntriesList", void 0);
750
- FsAclEntriesComponent = __decorate([
751
- Component({
752
- selector: 'fs-acl-entries',
753
- template: "\n<fs-list [config]=\"aclEntriesConfig\">\n <fs-list-column>\n <ng-template fs-list-header>Context</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <div\n *ngIf=\"row.object; else elseObject\"\n fxLayout=\"row\"\n fxLayoutAlign=\"start center\"\n fxLayoutGap=\"10px\">\n <fs-badge *ngIf=\"row.object.imageUrl\" shape=\"circle\" image=\"{{ row.object.imageUrl }}\"></fs-badge>\n <span>\n <div><small>{{ row.object.className }}</small></div>\n <a (click)=\"update(row)\">{{ row.object.name }}</a>\n </span>\n </div>\n\n <ng-template #elseObject>\n <a (click)=\"update(row)\">App</a>\n </ng-template>\n </ng-template>\n </fs-list-column>\n\n <fs-list-column [show]=\"environmentShow\">\n <ng-template fs-list-header>{{environmentLabel}}</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n {{row.environment?.name}}\n </ng-template>\n </fs-list-column>\n\n <fs-list-column>\n <ng-template fs-list-header>Roles</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <div fxLayout=\"column\" fxLayoutGap=\"10px\">\n <div div *ngFor=\"let aclEntry of row.aclEntries\">\n <ng-container [ngSwitch]=\"row.level\">\n <ng-container *ngSwitchCase=\"'app'\">\n <fs-acl-role-popover [aclRole]=\"aclEntry.aclRole\" objectName=\"App\">{{aclEntry.aclRole.name}}</fs-acl-role-popover>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <ng-container *ngIf=\"row.object\">\n <fs-acl-role-popover [aclRole]=\"aclEntry.aclRole\">{{aclEntry.aclRole.name}}</fs-acl-role-popover>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n </ng-template>\n </fs-list-column>\n</fs-list>\n",
754
- styles: [""]
755
- }),
756
- __metadata("design:paramtypes", [FsAppAclService,
757
- MatDialog,
758
- FsPrompt])
759
- ], FsAclEntriesComponent);
744
+ }
745
+ FsAclEntriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsAclEntriesComponent, deps: [{ token: FsAppAclService }, { token: i2.MatDialog }, { token: i3$1.FsPrompt }], target: i0.ɵɵFactoryTarget.Component });
746
+ FsAclEntriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsAclEntriesComponent, selector: "fs-acl-entries", inputs: { loadAclEntries: "loadAclEntries", loadAclRoles: "loadAclRoles", saveAclObjectEntry: "saveAclObjectEntry", environmentShow: "environmentShow", environmentLabel: "environmentLabel", actions: "actions" }, viewQueries: [{ propertyName: "aclEntriesList", first: true, predicate: FsListComponent, descendants: true }], ngImport: i0, template: "\n<fs-list [config]=\"aclEntriesConfig\">\n <fs-list-column>\n <ng-template fs-list-header>Context</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <div\n *ngIf=\"row.object; else elseObject\"\n fxLayout=\"row\"\n fxLayoutAlign=\"start center\"\n fxLayoutGap=\"10px\">\n <fs-badge *ngIf=\"row.object.imageUrl\" shape=\"circle\" image=\"{{ row.object.imageUrl }}\"></fs-badge>\n <span>\n <div><small>{{ row.object.className }}</small></div>\n <a (click)=\"update(row)\">{{ row.object.name }}</a>\n </span>\n </div>\n\n <ng-template #elseObject>\n <a (click)=\"update(row)\">App</a>\n </ng-template>\n </ng-template>\n </fs-list-column>\n\n <fs-list-column [show]=\"environmentShow\">\n <ng-template fs-list-header>{{environmentLabel}}</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n {{row.environment?.name}}\n </ng-template>\n </fs-list-column>\n\n <fs-list-column>\n <ng-template fs-list-header>Roles</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <div fxLayout=\"column\" fxLayoutGap=\"10px\">\n <div div *ngFor=\"let aclEntry of row.aclEntries\">\n <ng-container [ngSwitch]=\"row.level\">\n <ng-container *ngSwitchCase=\"'app'\">\n <fs-acl-role-popover [aclRole]=\"aclEntry.aclRole\" objectName=\"App\">{{aclEntry.aclRole.name}}</fs-acl-role-popover>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <ng-container *ngIf=\"row.object\">\n <fs-acl-role-popover [aclRole]=\"aclEntry.aclRole\">{{aclEntry.aclRole.name}}</fs-acl-role-popover>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n </ng-template>\n </fs-list-column>\n</fs-list>\n", styles: [""], components: [{ type: i12.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { type: i5$1.FsBadgeComponent, selector: "fs-badge", inputs: ["color", "text", "tooltip", "size", "shape", "image", "icon", "iconSize", "iconColor", "backgroundSize"] }, { type: FsAclRolePopoverComponent, selector: "fs-acl-role-popover", inputs: ["aclRole", "objectName"] }], directives: [{ type: i12.FsListColumnDirective, selector: "fs-list-column", inputs: ["show", "title", "name", "customize", "sortable", "sortableDefault", "direction", "align", "width", "class"] }, { type: i12.FsListHeaderDirective, selector: "[fs-list-header]", inputs: ["colspan", "align", "class"] }, { type: i12.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }, { type: i7$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i17.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i17.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i17.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { type: i7$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i7$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i7$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }] });
747
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsAclEntriesComponent, decorators: [{
748
+ type: Component,
749
+ args: [{
750
+ selector: 'fs-acl-entries',
751
+ templateUrl: './acl-entries.component.html',
752
+ styleUrls: ['./acl-entries.component.scss']
753
+ }]
754
+ }], ctorParameters: function () { return [{ type: FsAppAclService }, { type: i2.MatDialog }, { type: i3$1.FsPrompt }]; }, propDecorators: { loadAclEntries: [{
755
+ type: Input
756
+ }], loadAclRoles: [{
757
+ type: Input
758
+ }], saveAclObjectEntry: [{
759
+ type: Input
760
+ }], environmentShow: [{
761
+ type: Input
762
+ }], environmentLabel: [{
763
+ type: Input
764
+ }], actions: [{
765
+ type: Input
766
+ }], aclEntriesList: [{
767
+ type: ViewChild,
768
+ args: [FsListComponent]
769
+ }] } });
760
770
 
761
- let FsAclObjectRolesComponent = class FsAclObjectRolesComponent {
762
- constructor() {
763
- this.aclRoles = [];
764
- this.required = false;
765
- this.multiple = false;
766
- this.disabled = false;
767
- this.aclObjectRoles = [];
768
- this.rolesLabel = 'Roles';
769
- this.levelLabel = '';
770
- this.change = new EventEmitter();
771
- this.compareAclRole = (o1, o2) => {
772
- return o1 && o2 && o1.id === o2.id;
773
- };
774
- }
775
- changed() {
776
- this.change.emit(this.aclObjectRoles);
777
- }
778
- };
779
- __decorate([
780
- Input(),
781
- __metadata("design:type", Array)
782
- ], FsAclObjectRolesComponent.prototype, "aclRoles", void 0);
783
- __decorate([
784
- Input(),
785
- __metadata("design:type", Object)
786
- ], FsAclObjectRolesComponent.prototype, "required", void 0);
787
- __decorate([
788
- Input(),
789
- __metadata("design:type", Object)
790
- ], FsAclObjectRolesComponent.prototype, "multiple", void 0);
791
- __decorate([
792
- Input(),
793
- __metadata("design:type", Object)
794
- ], FsAclObjectRolesComponent.prototype, "disabled", void 0);
795
- __decorate([
796
- Input(),
797
- __metadata("design:type", Array)
798
- ], FsAclObjectRolesComponent.prototype, "aclObjectRoles", void 0);
799
- __decorate([
800
- Input(),
801
- __metadata("design:type", Object)
802
- ], FsAclObjectRolesComponent.prototype, "rolesLabel", void 0);
803
- __decorate([
804
- Input(),
805
- __metadata("design:type", Object)
806
- ], FsAclObjectRolesComponent.prototype, "levelLabel", void 0);
807
- __decorate([
808
- Output(),
809
- __metadata("design:type", Object)
810
- ], FsAclObjectRolesComponent.prototype, "change", void 0);
811
- FsAclObjectRolesComponent = __decorate([
812
- Component({
813
- selector: 'fs-acl-object-roles',
814
- template: "<ng-container *ngIf=\"!multiple\">\n <ng-container *ngFor=\"let aclObjectRole of aclObjectRoles\">\n <fs-checkbox-group\n [(ngModel)]=\"aclObjectRole.aclRoles\"\n (ngModelChange)=\"changed()\"\n name=\"roles\"\n [compareWith]=\"compareAclRole\"\n [disabled]=\"disabled\"\n [label]=\"rolesLabel\"\n [fsFormRequired]=\"required\"\n orientation=\"vertical\">\n <mat-checkbox [disabled]=\"disabled\" *ngFor=\"let aclRole of aclRoles\" [value]=\"aclRole\">\n {{ aclRole.name }}\n </mat-checkbox>\n </fs-checkbox-group>\n </ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"multiple\">\n <table>\n <tr>\n <td>\n <small>{{levelLabel}}</small>\n </td>\n <td>\n <small>{{rolesLabel}}</small>\n </td>\n </tr>\n <tr *ngFor=\"let aclObjectRole of aclObjectRoles\">\n <td>{{aclObjectRole.object.name}}</td>\n <td>\n <mat-form-field class=\"form-field-padless\">\n <mat-select\n [(ngModel)]=\"aclObjectRole.aclRoles\"\n multiple=\"true\"\n [disabled]=\"disabled\"\n [compareWith]=\"compareAclRole\"\n (ngModelChange)=\"changed()\"\n name=\"aclRole_{{ aclObjectRole.object.id }}\">\n <mat-option *ngFor=\"let aclRole of aclRoles\" [value]=\"aclRole\">\n {{ aclRole.name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </td>\n </tr>\n </table>\n</ng-container>\n",
815
- viewProviders: [{ provide: ControlContainer, useExisting: NgForm }],
816
- styles: ["table tr td:first-child{padding-right:15px}"]
817
- })
818
- ], FsAclObjectRolesComponent);
819
-
820
- var FsAppAclModule_1;
821
- let FsAppAclModule = FsAppAclModule_1 = class FsAppAclModule {
822
- static forRoot() {
823
- return {
824
- ngModule: FsAppAclModule_1,
825
- };
826
- }
827
- };
828
- FsAppAclModule = FsAppAclModule_1 = __decorate([
829
- NgModule({
830
- imports: [
771
+ class FsAppAclModule {
772
+ }
773
+ FsAppAclModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsAppAclModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
774
+ FsAppAclModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsAppAclModule, declarations: [FsAclRolesComponent,
775
+ FsAclPermissionPopoverComponent,
776
+ FsAclRoleComponent,
777
+ FsAclEntriesComponent,
778
+ FsAclRolePopoverComponent,
779
+ FsAclObjectRolesComponent,
780
+ FsAclEntryComponent], imports: [CommonModule,
781
+ FormsModule,
782
+ MatDialogModule,
783
+ MatFormFieldModule,
784
+ MatCheckboxModule,
785
+ MatSelectModule,
786
+ MatButtonModule,
787
+ MatRadioModule,
788
+ MatInputModule,
789
+ FlexLayoutModule,
790
+ FsListModule,
791
+ FsPopoverModule,
792
+ FsDialogModule,
793
+ FsFormModule,
794
+ FsLabelModule,
795
+ FsRadioGroupModule,
796
+ FsBadgeModule,
797
+ FsCheckboxGroupModule], exports: [FsAclRolesComponent,
798
+ FsAclPermissionPopoverComponent,
799
+ FsAclRoleComponent,
800
+ FsAclEntriesComponent,
801
+ FsAclRolePopoverComponent,
802
+ FsAclObjectRolesComponent,
803
+ FsAclEntryComponent] });
804
+ FsAppAclModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsAppAclModule, imports: [[
831
805
  CommonModule,
832
806
  FormsModule,
833
807
  MatDialogModule,
@@ -846,37 +820,54 @@ FsAppAclModule = FsAppAclModule_1 = __decorate([
846
820
  FsRadioGroupModule,
847
821
  FsBadgeModule,
848
822
  FsCheckboxGroupModule,
849
- ],
850
- declarations: [
851
- FsAclRolesComponent,
852
- FsAclPermissionPopoverComponent,
853
- FsAclRoleComponent,
854
- FsAclEntriesComponent,
855
- FsAclRolePopoverComponent,
856
- FsAclObjectRolesComponent,
857
- FsAclEntryComponent,
858
- ],
859
- exports: [
860
- FsAclRolesComponent,
861
- FsAclPermissionPopoverComponent,
862
- FsAclRoleComponent,
863
- FsAclEntriesComponent,
864
- FsAclRolePopoverComponent,
865
- FsAclObjectRolesComponent,
866
- FsAclEntryComponent,
867
- ],
868
- entryComponents: [
869
- FsAclRoleComponent
870
- ]
871
- })
872
- ], FsAppAclModule);
873
-
874
- // start:ng42.barrel
875
- // end:ng42.barrel
823
+ ]] });
824
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsAppAclModule, decorators: [{
825
+ type: NgModule,
826
+ args: [{
827
+ imports: [
828
+ CommonModule,
829
+ FormsModule,
830
+ MatDialogModule,
831
+ MatFormFieldModule,
832
+ MatCheckboxModule,
833
+ MatSelectModule,
834
+ MatButtonModule,
835
+ MatRadioModule,
836
+ MatInputModule,
837
+ FlexLayoutModule,
838
+ FsListModule,
839
+ FsPopoverModule,
840
+ FsDialogModule,
841
+ FsFormModule,
842
+ FsLabelModule,
843
+ FsRadioGroupModule,
844
+ FsBadgeModule,
845
+ FsCheckboxGroupModule,
846
+ ],
847
+ declarations: [
848
+ FsAclRolesComponent,
849
+ FsAclPermissionPopoverComponent,
850
+ FsAclRoleComponent,
851
+ FsAclEntriesComponent,
852
+ FsAclRolePopoverComponent,
853
+ FsAclObjectRolesComponent,
854
+ FsAclEntryComponent,
855
+ ],
856
+ exports: [
857
+ FsAclRolesComponent,
858
+ FsAclPermissionPopoverComponent,
859
+ FsAclRoleComponent,
860
+ FsAclEntriesComponent,
861
+ FsAclRolePopoverComponent,
862
+ FsAclObjectRolesComponent,
863
+ FsAclEntryComponent,
864
+ ],
865
+ }]
866
+ }] });
876
867
 
877
868
  /**
878
869
  * Generated bundle index. Do not edit.
879
870
  */
880
871
 
881
- export { FS_APP_ACL_CONFIG, FsAclEntriesComponent, FsAclRolesComponent, FsAppAclModule, FsAppAclService, FsAppAclService as ɵa, FsAclPermissionPopoverComponent as ɵb, FsAclRoleComponent as ɵc, FsAclRolePopoverComponent as ɵd, FsAclObjectRolesComponent as ɵe, FsAclEntryComponent as ɵf };
872
+ export { FS_APP_ACL_CONFIG, FsAclEntriesComponent, FsAclEntryComponent, FsAclObjectRolesComponent, FsAclPermissionPopoverComponent, FsAclRoleComponent, FsAclRolePopoverComponent, FsAclRolesComponent, FsAppAclModule, FsAppAclService };
882
873
  //# sourceMappingURL=firestitch-app-acl.js.map