@firestitch/app-acl 12.2.0 → 12.3.2

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 (53) hide show
  1. package/app/components/acl-entries/acl-entries.component.d.ts +32 -32
  2. package/app/components/acl-entry/acl-entry.component.d.ts +31 -29
  3. package/app/components/acl-object-roles/acl-object-roles.component.d.ts +18 -18
  4. package/app/components/acl-permission-popover/acl-permission-popover.component.d.ts +12 -12
  5. package/app/components/acl-role/acl-role.component.d.ts +46 -46
  6. package/app/components/acl-role-popover/acl-role-popover.component.d.ts +13 -13
  7. package/app/components/acl-roles/acl-roles.component.d.ts +35 -35
  8. package/app/consts/acl-role-accesses.d.ts +5 -5
  9. package/app/enums/acl-role-access.d.ts +6 -6
  10. package/app/fs-app-acl.module.d.ts +31 -31
  11. package/app/injectors/app-acl-config.injector.d.ts +2 -2
  12. package/app/interfaces/acl-entry-data.d.ts +11 -11
  13. package/app/interfaces/acl-entry.d.ts +18 -18
  14. package/app/interfaces/acl-level.d.ts +3 -3
  15. package/app/interfaces/acl-object-entry.d.ts +11 -11
  16. package/app/interfaces/acl-object-role.d.ts +6 -6
  17. package/app/interfaces/acl-object.d.ts +4 -4
  18. package/app/interfaces/acl-permission.d.ts +7 -7
  19. package/app/interfaces/acl-role.d.ts +15 -15
  20. package/app/interfaces/app-acl-config.d.ts +7 -7
  21. package/app/interfaces/name-value.d.ts +4 -4
  22. package/app/services/app-acl.service.d.ts +16 -18
  23. package/bundles/firestitch-app-acl.umd.js +1130 -1158
  24. package/bundles/firestitch-app-acl.umd.js.map +1 -1
  25. package/esm2015/app/components/acl-entries/acl-entries.component.js +164 -166
  26. package/esm2015/app/components/acl-entry/acl-entry.component.js +90 -93
  27. package/esm2015/app/components/acl-object-roles/acl-object-roles.component.js +56 -56
  28. package/esm2015/app/components/acl-permission-popover/acl-permission-popover.component.js +32 -32
  29. package/esm2015/app/components/acl-role/acl-role.component.js +201 -202
  30. package/esm2015/app/components/acl-role-popover/acl-role-popover.component.js +37 -37
  31. package/esm2015/app/components/acl-roles/acl-roles.component.js +146 -146
  32. package/esm2015/app/consts/acl-role-accesses.js +7 -7
  33. package/esm2015/app/enums/acl-role-access.js +7 -7
  34. package/esm2015/app/fs-app-acl.module.js +123 -123
  35. package/esm2015/app/injectors/app-acl-config.injector.js +2 -2
  36. package/esm2015/app/interfaces/acl-entry-data.js +1 -1
  37. package/esm2015/app/interfaces/acl-entry.js +1 -1
  38. package/esm2015/app/interfaces/acl-level.js +1 -1
  39. package/esm2015/app/interfaces/acl-object-entry.js +1 -1
  40. package/esm2015/app/interfaces/acl-object-role.js +1 -1
  41. package/esm2015/app/interfaces/acl-object.js +1 -1
  42. package/esm2015/app/interfaces/acl-permission.js +1 -1
  43. package/esm2015/app/interfaces/acl-role.js +1 -1
  44. package/esm2015/app/interfaces/app-acl-config.js +1 -1
  45. package/esm2015/app/interfaces/name-value.js +1 -1
  46. package/esm2015/app/services/app-acl.service.js +55 -78
  47. package/esm2015/firestitch-app-acl.js +4 -4
  48. package/esm2015/public_api.js +10 -10
  49. package/fesm2015/firestitch-app-acl.js +770 -797
  50. package/fesm2015/firestitch-app-acl.js.map +1 -1
  51. package/firestitch-app-acl.d.ts +5 -5
  52. package/package.json +1 -1
  53. package/public_api.d.ts +20 -20
@@ -1,93 +1,90 @@
1
- import { Component, Inject } from '@angular/core';
2
- import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
3
- import { FsMessage } from '@firestitch/message';
4
- import { map } from 'rxjs/operators';
5
- import { forkJoin } from 'rxjs';
6
- import { FsAppAclService } from './../../services/app-acl.service';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "./../../services/app-acl.service";
9
- import * as i2 from "@angular/material/dialog";
10
- import * as i3 from "@firestitch/message";
11
- import * as i4 from "@firestitch/dialog";
12
- import * as i5 from "@firestitch/label";
13
- import * as i6 from "../acl-object-roles/acl-object-roles.component";
14
- import * as i7 from "@angular/material/button";
15
- import * as i8 from "@angular/forms";
16
- import * as i9 from "@firestitch/form";
17
- import * as i10 from "@angular/common";
18
- export class FsAclEntryComponent {
19
- constructor(_appAclService, _dialogRef, _message, _data) {
20
- var _a;
21
- this._appAclService = _appAclService;
22
- this._dialogRef = _dialogRef;
23
- this._message = _message;
24
- this._data = _data;
25
- this.aclRoles = [];
26
- this.indexedAclRoleLevels = {};
27
- this.titleEdit = 'Edit Roles';
28
- this.titleAdd = 'Assign Roles';
29
- this.required = true;
30
- this.save = () => {
31
- return this._data.saveAclObjectEntry(this._appAclService.output(this.aclObjectEntry))
32
- .subscribe((data) => {
33
- this._message.success('Saved Changes');
34
- this.close(data);
35
- });
36
- };
37
- this.aclObjectEntry = Object.assign({}, _data.aclObjectEntry);
38
- this.required = (_a = _data.required) !== null && _a !== void 0 ? _a : true;
39
- if (_data.titleEdit) {
40
- this.titleEdit = _data.titleEdit;
41
- }
42
- if (_data.titleAdd) {
43
- this.titleAdd = _data.titleAdd;
44
- }
45
- }
46
- ngOnInit() {
47
- forkJoin(this._data.loadAclRoles({
48
- level: this.aclObjectEntry.level,
49
- environmentId: this.aclObjectEntry.environmentId,
50
- })
51
- .pipe(map((data) => this._appAclService.input(data))), this._appAclService.getIndexedLevels())
52
- .subscribe(([aclRoles, levels,]) => {
53
- this.aclRoles = aclRoles;
54
- this.indexedAclRoleLevels = levels;
55
- this.aclObjectRole = {
56
- object: this.aclObjectEntry.object,
57
- aclRoles: this.aclObjectEntry.aclEntries
58
- .map((aclEntry) => {
59
- return aclEntry.aclRole;
60
- })
61
- };
62
- });
63
- }
64
- aclObjectRoleChange(aclObjectRoles) {
65
- this.aclObjectEntry.aclEntries = aclObjectRoles.reduce((aclEntries, aclObjectRole) => {
66
- aclObjectRole.aclRoles.forEach(aclRole => {
67
- aclEntries.push({
68
- aclRoleId: aclRole.id,
69
- aclRole: aclRole,
70
- objectId: aclObjectRole.object ? aclObjectRole.object.id : null,
71
- object: aclObjectRole.object || null
72
- });
73
- });
74
- return aclEntries;
75
- }, []);
76
- }
77
- close(data = null) {
78
- this._dialogRef.close(data);
79
- }
80
- }
81
- FsAclEntryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsAclEntryComponent, deps: [{ token: i1.FsAppAclService }, { token: i2.MatDialogRef }, { token: i3.FsMessage }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
82
- 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: i5.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }, { type: i5.FsLabelComponent, selector: "fs-label" }, { type: i6.FsAclObjectRolesComponent, selector: "fs-acl-object-roles", inputs: ["aclRoles", "required", "multiple", "disabled", "aclObjectRoles", "rolesLabel", "levelLabel"], outputs: ["change"] }, { type: i7.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: i8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i8.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.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: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i9.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"] }] });
83
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsAclEntryComponent, decorators: [{
84
- type: Component,
85
- args: [{
86
- templateUrl: './acl-entry.component.html',
87
- styleUrls: ['./acl-entry.component.scss'],
88
- }]
89
- }], ctorParameters: function () { return [{ type: i1.FsAppAclService }, { type: i2.MatDialogRef }, { type: i3.FsMessage }, { type: undefined, decorators: [{
90
- type: Inject,
91
- args: [MAT_DIALOG_DATA]
92
- }] }]; } });
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNsLWVudHJ5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9hY2wtZW50cnkvYWNsLWVudHJ5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9hY2wtZW50cnkvYWNsLWVudHJ5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFekUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWhELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBT2hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7Ozs7O0FBT25FLE1BQU0sT0FBTyxtQkFBbUI7SUFVOUIsWUFDbUIsY0FBK0IsRUFDL0IsVUFBNkMsRUFDN0MsUUFBbUIsRUFDTSxLQUFtQjs7UUFINUMsbUJBQWMsR0FBZCxjQUFjLENBQWlCO1FBQy9CLGVBQVUsR0FBVixVQUFVLENBQW1DO1FBQzdDLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDTSxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBWnhELGFBQVEsR0FBYyxFQUFFLENBQUM7UUFHekIseUJBQW9CLEdBQUcsRUFBRSxDQUFDO1FBQzFCLGNBQVMsR0FBRyxZQUFZLENBQUM7UUFDekIsYUFBUSxHQUFHLGNBQWMsQ0FBQztRQUMxQixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBb0JoQixTQUFJLEdBQUcsR0FBRyxFQUFFO1lBQ2pCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7aUJBQ3BGLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDdkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuQixDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUMsQ0FBQTtRQWxCQyxJQUFJLENBQUMsY0FBYyxxQkFBUSxLQUFLLENBQUMsY0FBYyxDQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFBLEtBQUssQ0FBQyxRQUFRLG1DQUFJLElBQUksQ0FBQztRQUV2QyxJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO1NBQ2xDO1FBRUQsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztTQUNoQztJQUNILENBQUM7SUFVTSxRQUFRO1FBQ2IsUUFBUSxDQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO1lBQ3RCLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUs7WUFDaEMsYUFBYSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYTtTQUNqRCxDQUFDO2FBQ0MsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDL0MsRUFDSCxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixFQUFFLENBQ3ZDO2FBQ0UsU0FBUyxDQUFDLENBQUMsQ0FDVixRQUFRLEVBQ1IsTUFBTSxFQUNQLEVBQUUsRUFBRTtZQUVILElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxNQUFNLENBQUM7WUFFbkMsSUFBSSxDQUFDLGFBQWEsR0FBRztnQkFDbkIsTUFBTSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTTtnQkFDbEMsUUFBUSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVTtxQkFDN0IsR0FBRyxDQUFDLENBQUMsUUFBa0IsRUFBRSxFQUFFO29CQUMxQixPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUM7Z0JBQzFCLENBQUMsQ0FBQzthQUNiLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxjQUErQjtRQUV4RCxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxFQUFFLGFBQWEsRUFBRSxFQUFFO1lBQ25GLGFBQWEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUN2QyxVQUFVLENBQUMsSUFBSSxDQUFDO29CQUNkLFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBRTtvQkFDckIsT0FBTyxFQUFFLE9BQU87b0JBQ2hCLFFBQVEsRUFBRSxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSTtvQkFDL0QsTUFBTSxFQUFFLGFBQWEsQ0FBQyxNQUFNLElBQUksSUFBSTtpQkFDckMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7WUFFSCxPQUFPLFVBQVUsQ0FBQztRQUNwQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDVCxDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJO1FBQ3RCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7O2lIQW5GVSxtQkFBbUIsc0dBY3BCLGVBQWU7cUdBZGQsbUJBQW1CLG9EQ3BCaEMsNjNCQXdCQTs0RkRKYSxtQkFBbUI7a0JBSi9CLFNBQVM7bUJBQUM7b0JBQ1QsV0FBVyxFQUFFLDRCQUE0QjtvQkFDekMsU0FBUyxFQUFFLENBQUMsNEJBQTRCLENBQUM7aUJBQzFDOzswQkFlSSxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IEZzTWVzc2FnZSB9IGZyb20gJ0BmaXJlc3RpdGNoL21lc3NhZ2UnO1xuXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBmb3JrSm9pbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBBY2xSb2xlfSBmcm9tICcuLy4uLy4uL2ludGVyZmFjZXMvYWNsLXJvbGUnO1xuaW1wb3J0IHsgQWNsRW50cnlEYXRhIH0gZnJvbSAnLi8uLi8uLi9pbnRlcmZhY2VzL2FjbC1lbnRyeS1kYXRhJztcbmltcG9ydCB7IEFjbE9iamVjdFJvbGUgfSBmcm9tICcuLy4uLy4uL2ludGVyZmFjZXMvYWNsLW9iamVjdC1yb2xlJztcbmltcG9ydCB7IEFjbE9iamVjdEVudHJ5IH0gZnJvbSAnLi8uLi8uLi9pbnRlcmZhY2VzL2FjbC1vYmplY3QtZW50cnknO1xuaW1wb3J0IHsgQWNsRW50cnkgfSBmcm9tICcuLy4uLy4uL2ludGVyZmFjZXMvYWNsLWVudHJ5JztcbmltcG9ydCB7IEZzQXBwQWNsU2VydmljZSB9IGZyb20gJy4vLi4vLi4vc2VydmljZXMvYXBwLWFjbC5zZXJ2aWNlJztcblxuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuL2FjbC1lbnRyeS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FjbC1lbnRyeS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBGc0FjbEVudHJ5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBwdWJsaWMgYWNsUm9sZXM6IEFjbFJvbGVbXSA9IFtdO1xuICBwdWJsaWMgYWNsT2JqZWN0RW50cnk6IEFjbE9iamVjdEVudHJ5O1xuICBwdWJsaWMgYWNsT2JqZWN0Um9sZTogQWNsT2JqZWN0Um9sZTtcbiAgcHVibGljIGluZGV4ZWRBY2xSb2xlTGV2ZWxzID0ge307XG4gIHB1YmxpYyB0aXRsZUVkaXQgPSAnRWRpdCBSb2xlcyc7XG4gIHB1YmxpYyB0aXRsZUFkZCA9ICdBc3NpZ24gUm9sZXMnO1xuICBwdWJsaWMgcmVxdWlyZWQgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2FwcEFjbFNlcnZpY2U6IEZzQXBwQWNsU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxGc0FjbEVudHJ5Q29tcG9uZW50PixcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9tZXNzYWdlOiBGc01lc3NhZ2UsXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHByaXZhdGUgcmVhZG9ubHkgX2RhdGE6IEFjbEVudHJ5RGF0YVxuICApIHtcbiAgICB0aGlzLmFjbE9iamVjdEVudHJ5ID0geyAuLi5fZGF0YS5hY2xPYmplY3RFbnRyeSB9O1xuICAgIHRoaXMucmVxdWlyZWQgPSBfZGF0YS5yZXF1aXJlZCA/PyB0cnVlO1xuXG4gICAgaWYgKF9kYXRhLnRpdGxlRWRpdCkge1xuICAgICAgdGhpcy50aXRsZUVkaXQgPSBfZGF0YS50aXRsZUVkaXQ7XG4gICAgfVxuXG4gICAgaWYgKF9kYXRhLnRpdGxlQWRkKSB7XG4gICAgICB0aGlzLnRpdGxlQWRkID0gX2RhdGEudGl0bGVBZGQ7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNhdmUgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGEuc2F2ZUFjbE9iamVjdEVudHJ5KHRoaXMuX2FwcEFjbFNlcnZpY2Uub3V0cHV0KHRoaXMuYWNsT2JqZWN0RW50cnkpKVxuICAgIC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnU2F2ZWQgQ2hhbmdlcycpO1xuICAgICAgdGhpcy5jbG9zZShkYXRhKTtcbiAgICB9KVxuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIGZvcmtKb2luKFxuICAgICAgdGhpcy5fZGF0YS5sb2FkQWNsUm9sZXMoe1xuICAgICAgICBsZXZlbDogdGhpcy5hY2xPYmplY3RFbnRyeS5sZXZlbCxcbiAgICAgICAgZW52aXJvbm1lbnRJZDogdGhpcy5hY2xPYmplY3RFbnRyeS5lbnZpcm9ubWVudElkLFxuICAgICAgfSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChkYXRhKSA9PiB0aGlzLl9hcHBBY2xTZXJ2aWNlLmlucHV0KGRhdGEpKSxcbiAgICAgICAgKSxcbiAgICAgIHRoaXMuX2FwcEFjbFNlcnZpY2UuZ2V0SW5kZXhlZExldmVscygpXG4gICAgKVxuICAgICAgLnN1YnNjcmliZSgoW1xuICAgICAgICBhY2xSb2xlcyxcbiAgICAgICAgbGV2ZWxzLFxuICAgICAgXSkgPT4ge1xuXG4gICAgICAgIHRoaXMuYWNsUm9sZXMgPSBhY2xSb2xlcztcbiAgICAgICAgdGhpcy5pbmRleGVkQWNsUm9sZUxldmVscyA9IGxldmVscztcblxuICAgICAgICB0aGlzLmFjbE9iamVjdFJvbGUgPSB7XG4gICAgICAgICAgb2JqZWN0OiB0aGlzLmFjbE9iamVjdEVudHJ5Lm9iamVjdCxcbiAgICAgICAgICBhY2xSb2xlczogdGhpcy5hY2xPYmplY3RFbnRyeS5hY2xFbnRyaWVzXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKGFjbEVudHJ5OiBBY2xFbnRyeSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhY2xFbnRyeS5hY2xSb2xlO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICB9O1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYWNsT2JqZWN0Um9sZUNoYW5nZShhY2xPYmplY3RSb2xlczogQWNsT2JqZWN0Um9sZVtdKSB7XG5cbiAgICB0aGlzLmFjbE9iamVjdEVudHJ5LmFjbEVudHJpZXMgPSBhY2xPYmplY3RSb2xlcy5yZWR1Y2UoKGFjbEVudHJpZXMsIGFjbE9iamVjdFJvbGUpID0+IHtcbiAgICAgIGFjbE9iamVjdFJvbGUuYWNsUm9sZXMuZm9yRWFjaChhY2xSb2xlID0+IHtcbiAgICAgICAgYWNsRW50cmllcy5wdXNoKHtcbiAgICAgICAgICBhY2xSb2xlSWQ6IGFjbFJvbGUuaWQsXG4gICAgICAgICAgYWNsUm9sZTogYWNsUm9sZSxcbiAgICAgICAgICBvYmplY3RJZDogYWNsT2JqZWN0Um9sZS5vYmplY3QgPyBhY2xPYmplY3RSb2xlLm9iamVjdC5pZCA6IG51bGwsXG4gICAgICAgICAgb2JqZWN0OiBhY2xPYmplY3RSb2xlLm9iamVjdCB8fCBudWxsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBhY2xFbnRyaWVzO1xuICAgIH0sIFtdKTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZShkYXRhID0gbnVsbCkge1xuICAgIHRoaXMuX2RpYWxvZ1JlZi5jbG9zZShkYXRhKTtcbiAgfVxuXG59XG4iLCI8Zm9ybSBmc0Zvcm0gW3N1Ym1pdF09XCJzYXZlXCI+XG4gIDxmcy1kaWFsb2c+XG4gICAgPGRpdiBtYXQtZGlhbG9nLXRpdGxlPnt7IHRpdGxlRWRpdD8gdGl0bGVFZGl0IDogdGl0bGVBZGQgfX08L2Rpdj5cbiAgICA8bWF0LWRpYWxvZy1jb250ZW50PlxuICAgICAgPGRpdiAqbmdJZj1cImFjbE9iamVjdFJvbGVcIj5cbiAgICAgICAgPGZzLWxhYmVsLWZpZWxkICpuZ0lmPVwiYWNsT2JqZWN0RW50cnkub2JqZWN0XCI+XG4gICAgICAgICAgPGZzLWxhYmVsPnt7aW5kZXhlZEFjbFJvbGVMZXZlbHNbYWNsT2JqZWN0RW50cnkubGV2ZWxdfX08L2ZzLWxhYmVsPlxuICAgICAgICAgIHt7YWNsT2JqZWN0RW50cnkub2JqZWN0Lm5hbWV9fVxuICAgICAgICA8L2ZzLWxhYmVsLWZpZWxkPlxuXG4gICAgICAgIDxmcy1hY2wtb2JqZWN0LXJvbGVzXG4gICAgICAgICAgW2FjbFJvbGVzXT1cImFjbFJvbGVzXCJcbiAgICAgICAgICBbYWNsT2JqZWN0Um9sZXNdPVwiW2FjbE9iamVjdFJvbGVdXCJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgIChjaGFuZ2UpPVwiYWNsT2JqZWN0Um9sZUNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICAgIDwvZnMtYWNsLW9iamVjdC1yb2xlcz5cbiAgICAgIDwvZGl2PlxuICAgIDwvbWF0LWRpYWxvZy1jb250ZW50PlxuICAgIDxtYXQtZGlhbG9nLWFjdGlvbnM+XG4gICAgICA8YnV0dG9uIG1hdC1idXR0b24gdHlwZT1cInN1Ym1pdFwiIGNvbG9yPVwicHJpbWFyeVwiPlNhdmU8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBtYXQtZGlhbG9nLWNsb3NlIHR5cGU9XCJidXR0b25cIj5DYW5jZWw8L2J1dHRvbj5cbiAgICA8L21hdC1kaWFsb2ctYWN0aW9ucz5cbiAgPC9mcy1kaWFsb2c+XG48L2Zvcm0+XG4iXX0=
1
+ import { Component, Inject } from '@angular/core';
2
+ import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
3
+ import { FsMessage } from '@firestitch/message';
4
+ import { forkJoin } from 'rxjs';
5
+ import { FsAppAclService } from './../../services/app-acl.service';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "./../../services/app-acl.service";
8
+ import * as i2 from "@angular/material/dialog";
9
+ import * as i3 from "@firestitch/message";
10
+ import * as i4 from "@firestitch/dialog";
11
+ import * as i5 from "@firestitch/label";
12
+ import * as i6 from "../acl-object-roles/acl-object-roles.component";
13
+ import * as i7 from "@angular/material/button";
14
+ import * as i8 from "@angular/forms";
15
+ import * as i9 from "@firestitch/form";
16
+ import * as i10 from "@angular/common";
17
+ export class FsAclEntryComponent {
18
+ constructor(_appAclService, _dialogRef, _message, _data) {
19
+ var _a;
20
+ this._appAclService = _appAclService;
21
+ this._dialogRef = _dialogRef;
22
+ this._message = _message;
23
+ this._data = _data;
24
+ this.aclRoles = [];
25
+ this.aclEntries = [];
26
+ this.indexedAclRoleLevels = {};
27
+ this.titleEdit = 'Edit Roles';
28
+ this.titleAdd = 'Assign Roles';
29
+ this.required = true;
30
+ this.save = () => {
31
+ const aclObjectEntry = Object.assign(Object.assign({}, this.aclObjectEntry), { aclEntries: this.aclEntries });
32
+ return this._data.saveAclObjectEntry(aclObjectEntry)
33
+ .subscribe((data) => {
34
+ this._message.success('Saved Changes');
35
+ this.close(data);
36
+ });
37
+ };
38
+ this.aclObjectEntry = Object.assign({}, _data.aclObjectEntry);
39
+ this.required = (_a = _data.required) !== null && _a !== void 0 ? _a : true;
40
+ if (_data.titleEdit) {
41
+ this.titleEdit = _data.titleEdit;
42
+ }
43
+ if (_data.titleAdd) {
44
+ this.titleAdd = _data.titleAdd;
45
+ }
46
+ }
47
+ ngOnInit() {
48
+ forkJoin(this._data.loadAclRoles(this.aclObjectEntry), this._appAclService.getIndexedLevels())
49
+ .subscribe(([aclRoles, levels,]) => {
50
+ this.aclRoles = aclRoles;
51
+ this.indexedAclRoleLevels = levels;
52
+ this.aclObjectRole = {
53
+ object: this.aclObjectEntry.object,
54
+ aclRoles: this.aclObjectEntry.aclEntries
55
+ .map((aclEntry) => {
56
+ return aclEntry.aclRole;
57
+ }),
58
+ };
59
+ });
60
+ }
61
+ aclObjectRoleChange(aclObjectRoles) {
62
+ this.aclEntries = aclObjectRoles.reduce((aclEntries, aclObjectRole) => {
63
+ aclObjectRole.aclRoles.forEach(aclRole => {
64
+ aclEntries.push({
65
+ aclRoleId: aclRole.id,
66
+ aclRole: aclRole,
67
+ objectId: aclObjectRole.object ? aclObjectRole.object.id : null,
68
+ object: aclObjectRole.object || null
69
+ });
70
+ });
71
+ return aclEntries;
72
+ }, []);
73
+ }
74
+ close(data = null) {
75
+ this._dialogRef.close(data);
76
+ }
77
+ }
78
+ FsAclEntryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsAclEntryComponent, deps: [{ token: i1.FsAppAclService }, { token: i2.MatDialogRef }, { token: i3.FsMessage }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
79
+ 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: i5.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }, { type: i5.FsLabelComponent, selector: "fs-label" }, { type: i6.FsAclObjectRolesComponent, selector: "fs-acl-object-roles", inputs: ["aclRoles", "required", "multiple", "disabled", "aclObjectRoles", "rolesLabel", "levelLabel"], outputs: ["change"] }, { type: i7.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: i8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i8.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.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: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i9.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"] }] });
80
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsAclEntryComponent, decorators: [{
81
+ type: Component,
82
+ args: [{
83
+ templateUrl: './acl-entry.component.html',
84
+ styleUrls: ['./acl-entry.component.scss'],
85
+ }]
86
+ }], ctorParameters: function () { return [{ type: i1.FsAppAclService }, { type: i2.MatDialogRef }, { type: i3.FsMessage }, { type: undefined, decorators: [{
87
+ type: Inject,
88
+ args: [MAT_DIALOG_DATA]
89
+ }] }]; } });
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNsLWVudHJ5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9hY2wtZW50cnkvYWNsLWVudHJ5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9hY2wtZW50cnkvYWNsLWVudHJ5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFekUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWhELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFPaEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7Ozs7Ozs7QUFPbkUsTUFBTSxPQUFPLG1CQUFtQjtJQVc5QixZQUNtQixjQUErQixFQUMvQixVQUE2QyxFQUM3QyxRQUFtQixFQUNNLEtBQW1COztRQUg1QyxtQkFBYyxHQUFkLGNBQWMsQ0FBaUI7UUFDL0IsZUFBVSxHQUFWLFVBQVUsQ0FBbUM7UUFDN0MsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNNLFVBQUssR0FBTCxLQUFLLENBQWM7UUFieEQsYUFBUSxHQUFjLEVBQUUsQ0FBQztRQUd6QixlQUFVLEdBQWUsRUFBRSxDQUFDO1FBQzVCLHlCQUFvQixHQUFHLEVBQUUsQ0FBQztRQUMxQixjQUFTLEdBQUcsWUFBWSxDQUFDO1FBQ3pCLGFBQVEsR0FBRyxjQUFjLENBQUM7UUFDMUIsYUFBUSxHQUFHLElBQUksQ0FBQztRQTBEaEIsU0FBSSxHQUFHLEdBQUcsRUFBRTtZQUNqQixNQUFNLGNBQWMsbUNBQ2YsSUFBSSxDQUFDLGNBQWMsS0FDdEIsVUFBVSxFQUFFLElB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fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuaW1wb3J0IHsgRnNNZXNzYWdlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvbWVzc2FnZSc7XG5cbmltcG9ydCB7IGZvcmtKb2luIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEFjbFJvbGV9IGZyb20gJy4vLi4vLi4vaW50ZXJmYWNlcy9hY2wtcm9sZSc7XG5pbXBvcnQgeyBBY2xFbnRyeURhdGEgfSBmcm9tICcuLy4uLy4uL2ludGVyZmFjZXMvYWNsLWVudHJ5LWRhdGEnO1xuaW1wb3J0IHsgQWNsT2JqZWN0Um9sZSB9IGZyb20gJy4vLi4vLi4vaW50ZXJmYWNlcy9hY2wtb2JqZWN0LXJvbGUnO1xuaW1wb3J0IHsgQWNsT2JqZWN0RW50cnkgfSBmcm9tICcuLy4uLy4uL2ludGVyZmFjZXMvYWNsLW9iamVjdC1lbnRyeSc7XG5pbXBvcnQgeyBBY2xFbnRyeSB9IGZyb20gJy4vLi4vLi4vaW50ZXJmYWNlcy9hY2wtZW50cnknO1xuaW1wb3J0IHsgRnNBcHBBY2xTZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi9zZXJ2aWNlcy9hcHAtYWNsLnNlcnZpY2UnO1xuXG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vYWNsLWVudHJ5LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYWNsLWVudHJ5LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZzQWNsRW50cnlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIHB1YmxpYyBhY2xSb2xlczogQWNsUm9sZVtdID0gW107XG4gIHB1YmxpYyBhY2xPYmplY3RFbnRyeTogQWNsT2JqZWN0RW50cnk7XG4gIHB1YmxpYyBhY2xPYmplY3RSb2xlOiBBY2xPYmplY3RSb2xlO1xuICBwdWJsaWMgYWNsRW50cmllczogQWNsRW50cnlbXSA9IFtdO1xuICBwdWJsaWMgaW5kZXhlZEFjbFJvbGVMZXZlbHMgPSB7fTtcbiAgcHVibGljIHRpdGxlRWRpdCA9ICdFZGl0IFJvbGVzJztcbiAgcHVibGljIHRpdGxlQWRkID0gJ0Fzc2lnbiBSb2xlcyc7XG4gIHB1YmxpYyByZXF1aXJlZCA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBfYXBwQWNsU2VydmljZTogRnNBcHBBY2xTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2RpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPEZzQWNsRW50cnlDb21wb25lbnQ+LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX21lc3NhZ2U6IEZzTWVzc2FnZSxcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHJpdmF0ZSByZWFkb25seSBfZGF0YTogQWNsRW50cnlEYXRhXG4gICkge1xuICAgIHRoaXMuYWNsT2JqZWN0RW50cnkgPSB7IC4uLl9kYXRhLmFjbE9iamVjdEVudHJ5IH07XG4gICAgdGhpcy5yZXF1aXJlZCA9IF9kYXRhLnJlcXVpcmVkID8/IHRydWU7XG5cbiAgICBpZiAoX2RhdGEudGl0bGVFZGl0KSB7XG4gICAgICB0aGlzLnRpdGxlRWRpdCA9IF9kYXRhLnRpdGxlRWRpdDtcbiAgICB9XG5cbiAgICBpZiAoX2RhdGEudGl0bGVBZGQpIHtcbiAgICAgIHRoaXMudGl0bGVBZGQgPSBfZGF0YS50aXRsZUFkZDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgZm9ya0pvaW4oXG4gICAgICB0aGlzLl9kYXRhLmxvYWRBY2xSb2xlcyh0aGlzLmFjbE9iamVjdEVudHJ5KSxcbiAgICAgIHRoaXMuX2FwcEFjbFNlcnZpY2UuZ2V0SW5kZXhlZExldmVscygpXG4gICAgKVxuICAgICAgLnN1YnNjcmliZSgoW1xuICAgICAgICBhY2xSb2xlcyxcbiAgICAgICAgbGV2ZWxzLFxuICAgICAgXSkgPT4ge1xuXG4gICAgICAgIHRoaXMuYWNsUm9sZXMgPSBhY2xSb2xlcztcbiAgICAgICAgdGhpcy5pbmRleGVkQWNsUm9sZUxldmVscyA9IGxldmVscztcblxuICAgICAgICB0aGlzLmFjbE9iamVjdFJvbGUgPSB7XG4gICAgICAgICAgb2JqZWN0OiB0aGlzLmFjbE9iamVjdEVudHJ5Lm9iamVjdCxcbiAgICAgICAgICBhY2xSb2xlczogdGhpcy5hY2xPYmplY3RFbnRyeS5hY2xFbnRyaWVzXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKGFjbEVudHJ5OiBBY2xFbnRyeSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhY2xFbnRyeS5hY2xSb2xlO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFjbE9iamVjdFJvbGVDaGFuZ2UoYWNsT2JqZWN0Um9sZXM6IEFjbE9iamVjdFJvbGVbXSkge1xuICAgIHRoaXMuYWNsRW50cmllcyA9IGFjbE9iamVjdFJvbGVzLnJlZHVjZSgoYWNsRW50cmllcywgYWNsT2JqZWN0Um9sZSkgPT4ge1xuICAgICAgYWNsT2JqZWN0Um9sZS5hY2xSb2xlcy5mb3JFYWNoKGFjbFJvbGUgPT4ge1xuICAgICAgICBhY2xFbnRyaWVzLnB1c2goe1xuICAgICAgICAgIGFjbFJvbGVJZDogYWNsUm9sZS5pZCxcbiAgICAgICAgICBhY2xSb2xlOiBhY2xSb2xlLFxuICAgICAgICAgIG9iamVjdElkOiBhY2xPYmplY3RSb2xlLm9iamVjdCA/IGFjbE9iamVjdFJvbGUub2JqZWN0LmlkIDogbnVsbCxcbiAgICAgICAgICBvYmplY3Q6IGFjbE9iamVjdFJvbGUub2JqZWN0IHx8IG51bGxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGFjbEVudHJpZXM7XG4gICAgfSwgW10pO1xuICB9XG5cbiAgcHVibGljIHNhdmUgPSAoKSA9PiB7XG4gICAgY29uc3QgYWNsT2JqZWN0RW50cnkgPSB7XG4gICAgICAuLi50aGlzLmFjbE9iamVjdEVudHJ5LFxuICAgICAgYWNsRW50cmllczogdGhpcy5hY2xFbnRyaWVzLFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5fZGF0YS5zYXZlQWNsT2JqZWN0RW50cnkoYWNsT2JqZWN0RW50cnkpXG4gICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnU2F2ZWQgQ2hhbmdlcycpO1xuICAgICAgICB0aGlzLmNsb3NlKGRhdGEpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgY2xvc2UoZGF0YSA9IG51bGwpIHtcbiAgICB0aGlzLl9kaWFsb2dSZWYuY2xvc2UoZGF0YSk7XG4gIH1cblxufVxuIiwiPGZvcm0gZnNGb3JtIFtzdWJtaXRdPVwic2F2ZVwiPlxuICA8ZnMtZGlhbG9nPlxuICAgIDxkaXYgbWF0LWRpYWxvZy10aXRsZT57eyB0aXRsZUVkaXQ/IHRpdGxlRWRpdCA6IHRpdGxlQWRkIH19PC9kaXY+XG4gICAgPG1hdC1kaWFsb2ctY29udGVudD5cbiAgICAgIDxkaXYgKm5nSWY9XCJhY2xPYmplY3RSb2xlXCI+XG4gICAgICAgIDxmcy1sYWJlbC1maWVsZCAqbmdJZj1cImFjbE9iamVjdEVudHJ5Lm9iamVjdFwiPlxuICAgICAgICAgIDxmcy1sYWJlbD57e2luZGV4ZWRBY2xSb2xlTGV2ZWxzW2FjbE9iamVjdEVudHJ5LmxldmVsXX19PC9mcy1sYWJlbD5cbiAgICAgICAgICB7e2FjbE9iamVjdEVudHJ5Lm9iamVjdC5uYW1lfX1cbiAgICAgICAgPC9mcy1sYWJlbC1maWVsZD5cblxuICAgICAgICA8ZnMtYWNsLW9iamVjdC1yb2xlc1xuICAgICAgICAgIFthY2xSb2xlc109XCJhY2xSb2xlc1wiXG4gICAgICAgICAgW2FjbE9iamVjdFJvbGVzXT1cIlthY2xPYmplY3RSb2xlXVwiXG4gICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAoY2hhbmdlKT1cImFjbE9iamVjdFJvbGVDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgICA8L2ZzLWFjbC1vYmplY3Qtcm9sZXM+XG4gICAgICA8L2Rpdj5cbiAgICA8L21hdC1kaWFsb2ctY29udGVudD5cbiAgICA8bWF0LWRpYWxvZy1hY3Rpb25zPlxuICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjb2xvcj1cInByaW1hcnlcIj5TYXZlPC9idXR0b24+XG4gICAgICA8YnV0dG9uIG1hdC1idXR0b24gbWF0LWRpYWxvZy1jbG9zZSB0eXBlPVwiYnV0dG9uXCI+Q2FuY2VsPC9idXR0b24+XG4gICAgPC9tYXQtZGlhbG9nLWFjdGlvbnM+XG4gIDwvZnMtZGlhbG9nPlxuPC9mb3JtPlxuIl19
@@ -1,57 +1,57 @@
1
- import { ControlContainer, NgForm } from '@angular/forms';
2
- import { Component, Input, EventEmitter, Output } from '@angular/core';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@firestitch/checkboxgroup";
5
- import * as i2 from "@angular/material/checkbox";
6
- import * as i3 from "@angular/material/form-field";
7
- import * as i4 from "@angular/material/select";
8
- import * as i5 from "@angular/material/core";
9
- import * as i6 from "@angular/common";
10
- import * as i7 from "@angular/forms";
11
- import * as i8 from "@firestitch/form";
12
- export class FsAclObjectRolesComponent {
13
- constructor() {
14
- this.aclRoles = [];
15
- this.required = false;
16
- this.multiple = false;
17
- this.disabled = false;
18
- this.aclObjectRoles = [];
19
- this.rolesLabel = 'Roles';
20
- this.levelLabel = '';
21
- this.change = new EventEmitter();
22
- this.compareAclRole = (o1, o2) => {
23
- return o1 && o2 && o1.id === o2.id;
24
- };
25
- }
26
- changed() {
27
- this.change.emit(this.aclObjectRoles);
28
- }
29
- }
30
- FsAclObjectRolesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsAclObjectRolesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
31
- 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: i2.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: i3.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i8.FsFormRequiredDirective, selector: "[fsFormRequired],[ngModel][required]", inputs: ["fsFormRequired", "required", "fsFormRequiredMessage"] }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsAclObjectRolesComponent, decorators: [{
33
- type: Component,
34
- args: [{
35
- selector: 'fs-acl-object-roles',
36
- templateUrl: './acl-object-roles.component.html',
37
- styleUrls: ['./acl-object-roles.component.scss'],
38
- viewProviders: [{ provide: ControlContainer, useExisting: NgForm }]
39
- }]
40
- }], propDecorators: { aclRoles: [{
41
- type: Input
42
- }], required: [{
43
- type: Input
44
- }], multiple: [{
45
- type: Input
46
- }], disabled: [{
47
- type: Input
48
- }], aclObjectRoles: [{
49
- type: Input
50
- }], rolesLabel: [{
51
- type: Input
52
- }], levelLabel: [{
53
- type: Input
54
- }], change: [{
55
- type: Output
56
- }] } });
1
+ import { ControlContainer, NgForm } from '@angular/forms';
2
+ import { Component, Input, EventEmitter, Output } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@firestitch/checkboxgroup";
5
+ import * as i2 from "@angular/material/checkbox";
6
+ import * as i3 from "@angular/material/form-field";
7
+ import * as i4 from "@angular/material/select";
8
+ import * as i5 from "@angular/material/core";
9
+ import * as i6 from "@angular/common";
10
+ import * as i7 from "@angular/forms";
11
+ import * as i8 from "@firestitch/form";
12
+ export class FsAclObjectRolesComponent {
13
+ constructor() {
14
+ this.aclRoles = [];
15
+ this.required = false;
16
+ this.multiple = false;
17
+ this.disabled = false;
18
+ this.aclObjectRoles = [];
19
+ this.rolesLabel = 'Roles';
20
+ this.levelLabel = '';
21
+ this.change = new EventEmitter();
22
+ this.compareAclRole = (o1, o2) => {
23
+ return o1 && o2 && o1.id === o2.id;
24
+ };
25
+ }
26
+ changed() {
27
+ this.change.emit(this.aclObjectRoles);
28
+ }
29
+ }
30
+ FsAclObjectRolesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsAclObjectRolesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
31
+ 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: i2.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: i3.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i8.FsFormRequiredDirective, selector: "[fsFormRequired],[ngModel][required]", inputs: ["fsFormRequired", "required", "fsFormRequiredMessage"] }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsAclObjectRolesComponent, decorators: [{
33
+ type: Component,
34
+ args: [{
35
+ selector: 'fs-acl-object-roles',
36
+ templateUrl: './acl-object-roles.component.html',
37
+ styleUrls: ['./acl-object-roles.component.scss'],
38
+ viewProviders: [{ provide: ControlContainer, useExisting: NgForm }]
39
+ }]
40
+ }], propDecorators: { aclRoles: [{
41
+ type: Input
42
+ }], required: [{
43
+ type: Input
44
+ }], multiple: [{
45
+ type: Input
46
+ }], disabled: [{
47
+ type: Input
48
+ }], aclObjectRoles: [{
49
+ type: Input
50
+ }], rolesLabel: [{
51
+ type: Input
52
+ }], levelLabel: [{
53
+ type: Input
54
+ }], change: [{
55
+ type: Output
56
+ }] } });
57
57
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNsLW9iamVjdC1yb2xlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvYWNsLW9iamVjdC1yb2xlcy9hY2wtb2JqZWN0LXJvbGVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9hY2wtb2JqZWN0LXJvbGVzL2FjbC1vYmplY3Qtcm9sZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7QUFZdkUsTUFBTSxPQUFPLHlCQUF5QjtJQU50QztRQVFXLGFBQVEsR0FBYyxFQUFFLENBQUM7UUFDekIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsbUJBQWMsR0FBb0IsRUFBRSxDQUFDO1FBQ3JDLGVBQVUsR0FBRyxPQUFPLENBQUM7UUFDckIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNmLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztRQUVoRCxtQkFBYyxHQUFHLENBQUMsRUFBTyxFQUFFLEVBQU8sRUFBRSxFQUFFO1lBQzNDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDckMsQ0FBQyxDQUFBO0tBS0Y7SUFIUSxPQUFPO1FBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7O3VIQWpCVSx5QkFBeUI7MkdBQXpCLHlCQUF5QixvUkNidEMsby9DQWdEQSxnaUREckNpQixDQUFFLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBRTs0RkFFMUQseUJBQXlCO2tCQU5yQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFdBQVcsRUFBRSxtQ0FBbUM7b0JBQ2hELFNBQVMsRUFBRSxDQUFDLG1DQUFtQyxDQUFDO29CQUNoRCxhQUFhLEVBQUUsQ0FBRSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUU7aUJBQ3RFOzhCQUdVLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0ksTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udHJvbENvbnRhaW5lciwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQWNsT2JqZWN0Um9sZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYWNsLW9iamVjdC1yb2xlJztcbmltcG9ydCB7IEFjbFJvbGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2FjbC1yb2xlJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy1hY2wtb2JqZWN0LXJvbGVzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FjbC1vYmplY3Qtcm9sZXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hY2wtb2JqZWN0LXJvbGVzLmNvbXBvbmVudC5zY3NzJ10sXG4gIHZpZXdQcm92aWRlcnM6IFsgeyBwcm92aWRlOiBDb250cm9sQ29udGFpbmVyLCB1c2VFeGlzdGluZzogTmdGb3JtIH0gXVxufSlcbmV4cG9ydCBjbGFzcyBGc0FjbE9iamVjdFJvbGVzQ29tcG9uZW50IHtcblxuICBASW5wdXQoKSBhY2xSb2xlczogQWNsUm9sZVtdID0gW107XG4gIEBJbnB1dCgpIHJlcXVpcmVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIG11bHRpcGxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGFjbE9iamVjdFJvbGVzOiBBY2xPYmplY3RSb2xlW10gPSBbXTtcbiAgQElucHV0KCkgcm9sZXNMYWJlbCA9ICdSb2xlcyc7XG4gIEBJbnB1dCgpIGxldmVsTGFiZWwgPSAnJztcbiAgQE91dHB1dCgpIGNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8QWNsT2JqZWN0Um9sZVtdPigpO1xuXG4gIHB1YmxpYyBjb21wYXJlQWNsUm9sZSA9IChvMTogYW55LCBvMjogYW55KSA9PiB7XG4gICAgcmV0dXJuIG8xICYmIG8yICYmIG8xLmlkID09PSBvMi5pZDtcbiAgfVxuXG4gIHB1YmxpYyBjaGFuZ2VkKCkge1xuICAgIHRoaXMuY2hhbmdlLmVtaXQodGhpcy5hY2xPYmplY3RSb2xlcyk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIhbXVsdGlwbGVcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWNsT2JqZWN0Um9sZSBvZiBhY2xPYmplY3RSb2xlc1wiPlxuICAgIDxmcy1jaGVja2JveC1ncm91cFxuICAgICAgWyhuZ01vZGVsKV09XCJhY2xPYmplY3RSb2xlLmFjbFJvbGVzXCJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZWQoKVwiXG4gICAgICBuYW1lPVwicm9sZXNcIlxuICAgICAgW2NvbXBhcmVXaXRoXT1cImNvbXBhcmVBY2xSb2xlXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBbbGFiZWxdPVwicm9sZXNMYWJlbFwiXG4gICAgICBbZnNGb3JtUmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgb3JpZW50YXRpb249XCJ2ZXJ0aWNhbFwiPlxuICAgICAgPG1hdC1jaGVja2JveCBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiAqbmdGb3I9XCJsZXQgYWNsUm9sZSBvZiBhY2xSb2xlc1wiIFt2YWx1ZV09XCJhY2xSb2xlXCI+XG4gICAgICAgIHt7IGFjbFJvbGUubmFtZSB9fVxuICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgPC9mcy1jaGVja2JveC1ncm91cD5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIm11bHRpcGxlXCI+XG4gIDx0YWJsZT5cbiAgICA8dHI+XG4gICAgICA8dGQ+XG4gICAgICAgIDxzbWFsbD57e2xldmVsTGFiZWx9fTwvc21hbGw+XG4gICAgICA8L3RkPlxuICAgICAgPHRkPlxuICAgICAgICA8c21hbGw+e3tyb2xlc0xhYmVsfX08L3NtYWxsPlxuICAgICAgPC90ZD5cbiAgICA8L3RyPlxuICAgIDx0ciAqbmdGb3I9XCJsZXQgYWNsT2JqZWN0Um9sZSBvZiBhY2xPYmplY3RSb2xlc1wiPlxuICAgICAgPHRkPnt7YWNsT2JqZWN0Um9sZS5vYmplY3QubmFtZX19PC90ZD5cbiAgICAgIDx0ZD5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZm9ybS1maWVsZC1wYWRsZXNzXCI+XG4gICAgICAgICAgPG1hdC1zZWxlY3RcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiYWNsT2JqZWN0Um9sZS5hY2xSb2xlc1wiXG4gICAgICAgICAgICBtdWx0aXBsZT1cInRydWVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIFtjb21wYXJlV2l0aF09XCJjb21wYXJlQWNsUm9sZVwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VkKClcIlxuICAgICAgICAgICAgbmFtZT1cImFjbFJvbGVfe3sgYWNsT2JqZWN0Um9sZS5vYmplY3QuaWQgfX1cIj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBhY2xSb2xlIG9mIGFjbFJvbGVzXCIgW3ZhbHVlXT1cImFjbFJvbGVcIj5cbiAgICAgICAgICAgICAge3sgYWNsUm9sZS5uYW1lIH19XG4gICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgPC90ZD5cbiAgICA8L3RyPlxuICA8L3RhYmxlPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -1,33 +1,33 @@
1
- import { Component, Input } from '@angular/core';
2
- import { FsAppAclService } from './../../services/app-acl.service';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "./../../services/app-acl.service";
5
- import * as i2 from "@firestitch/popover";
6
- export class FsAclPermissionPopoverComponent {
7
- constructor(_appAclService) {
8
- this._appAclService = _appAclService;
9
- }
10
- ngOnInit() {
11
- this._appAclService.getPermissions()
12
- .subscribe(permissions => {
13
- this.description = permissions.filter(item => {
14
- return item.value === this.permission.value;
15
- }).map(item => {
16
- return item.description;
17
- })[0];
18
- });
19
- }
20
- }
21
- FsAclPermissionPopoverComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsAclPermissionPopoverComponent, deps: [{ token: i1.FsAppAclService }], target: i0.ɵɵFactoryTarget.Component });
22
- 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.FsPopoverComponent, selector: "fs-popover", inputs: ["template", "data", "leaveDelay", "showDelay", "maxWidth", "wrapperClass", "autoShow", "autoClose", "loadingDiameter", "loading", "indication", "position", "theme", "size", "trigger"] }] });
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsAclPermissionPopoverComponent, decorators: [{
24
- type: Component,
25
- args: [{
26
- selector: 'acl-permission-popover',
27
- templateUrl: './acl-permission-popover.component.html',
28
- styleUrls: ['./acl-permission-popover.component.scss']
29
- }]
30
- }], ctorParameters: function () { return [{ type: i1.FsAppAclService }]; }, propDecorators: { permission: [{
31
- type: Input
32
- }] } });
1
+ import { Component, Input } from '@angular/core';
2
+ import { FsAppAclService } from './../../services/app-acl.service';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./../../services/app-acl.service";
5
+ import * as i2 from "@firestitch/popover";
6
+ export class FsAclPermissionPopoverComponent {
7
+ constructor(_appAclService) {
8
+ this._appAclService = _appAclService;
9
+ }
10
+ ngOnInit() {
11
+ this._appAclService.getPermissions()
12
+ .subscribe(permissions => {
13
+ this.description = permissions.filter(item => {
14
+ return item.value === this.permission.value;
15
+ }).map(item => {
16
+ return item.description;
17
+ })[0];
18
+ });
19
+ }
20
+ }
21
+ FsAclPermissionPopoverComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsAclPermissionPopoverComponent, deps: [{ token: i1.FsAppAclService }], target: i0.ɵɵFactoryTarget.Component });
22
+ 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.FsPopoverComponent, selector: "fs-popover", inputs: ["template", "data", "leaveDelay", "showDelay", "maxWidth", "wrapperClass", "autoShow", "autoClose", "loadingDiameter", "loading", "indication", "position", "theme", "size", "trigger"] }] });
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsAclPermissionPopoverComponent, decorators: [{
24
+ type: Component,
25
+ args: [{
26
+ selector: 'acl-permission-popover',
27
+ templateUrl: './acl-permission-popover.component.html',
28
+ styleUrls: ['./acl-permission-popover.component.scss']
29
+ }]
30
+ }], ctorParameters: function () { return [{ type: i1.FsAppAclService }]; }, propDecorators: { permission: [{
31
+ type: Input
32
+ }] } });
33
33
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNsLXBlcm1pc3Npb24tcG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvYWNsLXBlcm1pc3Npb24tcG9wb3Zlci9hY2wtcGVybWlzc2lvbi1wb3BvdmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9hY2wtcGVybWlzc2lvbi1wb3BvdmVyL2FjbC1wZXJtaXNzaW9uLXBvcG92ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7O0FBT25FLE1BQU0sT0FBTywrQkFBK0I7SUFNMUMsWUFDVSxjQUErQjtRQUEvQixtQkFBYyxHQUFkLGNBQWMsQ0FBaUI7SUFDckMsQ0FBQztJQUVFLFFBQVE7UUFDYixJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRTthQUNuQyxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUMzQyxPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7WUFDOUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUMxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNSLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7NkhBbkJVLCtCQUErQjtpSEFBL0IsK0JBQStCLG9HQ1I1Qyx1TkFVQTs0RkRGYSwrQkFBK0I7a0JBTDNDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHdCQUF3QjtvQkFDbEMsV0FBVyxFQUFFLHlDQUF5QztvQkFDdEQsU0FBUyxFQUFFLENBQUMseUNBQXlDLENBQUM7aUJBQ3ZEO3NHQUdVLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRnNBcHBBY2xTZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi9zZXJ2aWNlcy9hcHAtYWNsLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY2wtcGVybWlzc2lvbi1wb3BvdmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FjbC1wZXJtaXNzaW9uLXBvcG92ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hY2wtcGVybWlzc2lvbi1wb3BvdmVyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRnNBY2xQZXJtaXNzaW9uUG9wb3ZlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgcGVybWlzc2lvbjtcblxuICBwdWJsaWMgZGVzY3JpcHRpb247XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2FwcEFjbFNlcnZpY2U6IEZzQXBwQWNsU2VydmljZVxuICApIHsgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLl9hcHBBY2xTZXJ2aWNlLmdldFBlcm1pc3Npb25zKClcbiAgICAuc3Vic2NyaWJlKHBlcm1pc3Npb25zID0+IHtcbiAgICAgIHRoaXMuZGVzY3JpcHRpb24gPSBwZXJtaXNzaW9ucy5maWx0ZXIoaXRlbSA9PiB7XG4gICAgICAgIHJldHVybiBpdGVtLnZhbHVlID09PSB0aGlzLnBlcm1pc3Npb24udmFsdWU7XG4gICAgICB9KS5tYXAoaXRlbSA9PiB7XG4gICAgICAgIHJldHVybiBpdGVtLmRlc2NyaXB0aW9uO1xuICAgICAgfSlbMF07XG4gICAgfSk7XG4gIH1cbn1cbiIsIlxuPGZzLXBvcG92ZXIgW3RlbXBsYXRlXT1cInBvcG92ZXJcIiBtYXhXaWR0aD1cIjQwMFwiPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2ZzLXBvcG92ZXI+XG5cbjxuZy10ZW1wbGF0ZSAjcG9wb3Zlcj5cbiAge3twZXJtaXNzaW9uLm5hbWV9fVxuICA8ZGl2IGNsYXNzPVwic21hbGxcIj57e2Rlc2NyaXB0aW9ufX08L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbiJdfQ==