ngx-techlify-core 14.7.0 → 14.8.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 (164) hide show
  1. package/esm2020/lib/access-control-config/access-control-config-form/access-control-config-form.component.mjs +127 -0
  2. package/esm2020/lib/access-control-config/access-control-config-routing.module.mjs +31 -0
  3. package/esm2020/lib/access-control-config/access-control-config.component.mjs +131 -0
  4. package/esm2020/lib/access-control-config/access-control-config.model.mjs +21 -0
  5. package/esm2020/lib/access-control-config/access-control-config.module.mjs +60 -0
  6. package/esm2020/lib/access-control-config/access-control-config.service.mjs +31 -0
  7. package/esm2020/lib/change-password/change-password-routing.module.mjs +24 -0
  8. package/esm2020/lib/change-password/change-password.component.mjs +87 -0
  9. package/esm2020/lib/change-password/change-password.module.mjs +48 -0
  10. package/esm2020/lib/entity-files/entity-files-view-all.component.mjs +7 -8
  11. package/esm2020/lib/forgot-password/forgot-password-routing.module.mjs +22 -0
  12. package/esm2020/lib/forgot-password/forgot-password.component.mjs +67 -0
  13. package/esm2020/lib/forgot-password/forgot-password.module.mjs +34 -0
  14. package/esm2020/lib/forgot-password/index.mjs +3 -0
  15. package/esm2020/lib/ip-address-selector/ip-address-selector.module.mjs +48 -0
  16. package/esm2020/lib/ip-address-selector/ip-range-selector/ip-range-selector.component.mjs +109 -0
  17. package/esm2020/lib/login/index.mjs +3 -0
  18. package/esm2020/lib/login/login-routing.module.mjs +23 -0
  19. package/esm2020/lib/login/login.component.mjs +153 -0
  20. package/esm2020/lib/login/login.module.mjs +50 -0
  21. package/esm2020/lib/ngx-techlify-users/ngx-techlify-users-routing.module.mjs +43 -0
  22. package/esm2020/lib/ngx-techlify-users/ngx-techlify-users.module.mjs +22 -0
  23. package/esm2020/lib/password-requirement-check/password-check-result.mjs +2 -0
  24. package/esm2020/lib/password-requirement-check/password-check.service.mjs +43 -0
  25. package/esm2020/lib/password-requirement-check/password-requirement-check/password-requirement-check.component.mjs +47 -0
  26. package/esm2020/lib/password-requirement-check/password-requirement-check.module.mjs +24 -0
  27. package/esm2020/lib/profile/index.mjs +3 -0
  28. package/esm2020/lib/profile/profile-edit.component.mjs +75 -0
  29. package/esm2020/lib/profile/profile-routing.module.mjs +23 -0
  30. package/esm2020/lib/profile/profile.module.mjs +36 -0
  31. package/esm2020/lib/restrictors/index.mjs +4 -0
  32. package/esm2020/lib/restrictors/restrictor-level-selector/restrictor-level-selector/restrictor-level-selector.component.mjs +91 -0
  33. package/esm2020/lib/restrictors/restrictor-level-selector/restrictor-level-selector.module.mjs +36 -0
  34. package/esm2020/lib/restrictors/restrictor-level-selector/restrictor-level.service.mjs +19 -0
  35. package/esm2020/lib/restrictors/restrictor-status-selector/restrictor-status-selector/restrictor-status-selector.component.mjs +91 -0
  36. package/esm2020/lib/restrictors/restrictor-status-selector/restrictor-status-selector.module.mjs +32 -0
  37. package/esm2020/lib/restrictors/restrictor-status-selector/restrictor-status.service.mjs +19 -0
  38. package/esm2020/lib/restrictors/restrictor-type-selector/restrictor-type-selector/restrictor-type-selector.component.mjs +92 -0
  39. package/esm2020/lib/restrictors/restrictor-type-selector/restrictor-type-selector.module.mjs +36 -0
  40. package/esm2020/lib/restrictors/restrictor-type-selector/restrictor-type.service.mjs +19 -0
  41. package/esm2020/lib/restrictors/restrictor.service.mjs +19 -0
  42. package/esm2020/lib/restrictors/restrictors-form/restrictors-form.component.mjs +102 -0
  43. package/esm2020/lib/restrictors/restrictors-form-page/restrictors-form-page.component.mjs +44 -0
  44. package/esm2020/lib/restrictors/restrictors-list-page/restrictors-list-page.component.mjs +145 -0
  45. package/esm2020/lib/restrictors/restrictors-routing.module.mjs +42 -0
  46. package/esm2020/lib/restrictors/restrictors.module.mjs +99 -0
  47. package/esm2020/lib/role/index.mjs +9 -0
  48. package/esm2020/lib/role/permission/permission.model.mjs +9 -0
  49. package/esm2020/lib/role/permission/permission.module.mjs +45 -0
  50. package/esm2020/lib/role/permission/permission.routes.mjs +26 -0
  51. package/esm2020/lib/role/permission/permissions-management.component.mjs +105 -0
  52. package/esm2020/lib/role/role-form.component.mjs +99 -0
  53. package/esm2020/lib/role/role-view/role-view.component.mjs +39 -0
  54. package/esm2020/lib/role/role.model.mjs +56 -0
  55. package/esm2020/lib/role/role.module.mjs +59 -0
  56. package/esm2020/lib/role/role.routes.mjs +28 -0
  57. package/esm2020/lib/role/role.service.mjs +26 -0
  58. package/esm2020/lib/role/roles-view-all.component.mjs +131 -0
  59. package/esm2020/lib/signup/index.mjs +3 -0
  60. package/esm2020/lib/signup/signup-routing.module.mjs +22 -0
  61. package/esm2020/lib/signup/signup.component.mjs +78 -0
  62. package/esm2020/lib/signup/signup.module.mjs +34 -0
  63. package/esm2020/lib/user/current-user.service.mjs +135 -0
  64. package/esm2020/lib/user/index.mjs +8 -0
  65. package/esm2020/lib/user/user-explore.component.mjs +50 -0
  66. package/esm2020/lib/user/user-form.component.mjs +219 -0
  67. package/esm2020/lib/user/user-view.component.mjs +68 -0
  68. package/esm2020/lib/user/user.model.mjs +30 -0
  69. package/esm2020/lib/user/user.module.mjs +99 -0
  70. package/esm2020/lib/user/user.routes.mjs +29 -0
  71. package/esm2020/lib/user/user.service.mjs +31 -0
  72. package/esm2020/lib/user/users-view-all.component.mjs +208 -0
  73. package/esm2020/lib/user-config/index.mjs +3 -0
  74. package/esm2020/lib/user-config/user-config.model.mjs +50 -0
  75. package/esm2020/lib/user-config/user-config.service.mjs +65 -0
  76. package/esm2020/lib/user-selector/index.mjs +3 -0
  77. package/esm2020/lib/user-selector/user-data.service.mjs +35 -0
  78. package/esm2020/lib/user-selector/user-selector.component.mjs +91 -0
  79. package/esm2020/lib/user-selector/user-selector.module.mjs +38 -0
  80. package/esm2020/public-api.mjs +24 -1
  81. package/fesm2015/ngx-techlify-core.mjs +3791 -170
  82. package/fesm2015/ngx-techlify-core.mjs.map +1 -1
  83. package/fesm2020/ngx-techlify-core.mjs +3759 -170
  84. package/fesm2020/ngx-techlify-core.mjs.map +1 -1
  85. package/lib/access-control-config/access-control-config-form/access-control-config-form.component.d.ts +44 -0
  86. package/lib/access-control-config/access-control-config-routing.module.d.ts +7 -0
  87. package/lib/access-control-config/access-control-config.component.d.ts +31 -0
  88. package/lib/access-control-config/access-control-config.model.d.ts +17 -0
  89. package/lib/access-control-config/access-control-config.module.d.ts +18 -0
  90. package/lib/access-control-config/access-control-config.service.d.ts +13 -0
  91. package/lib/change-password/change-password-routing.module.d.ts +7 -0
  92. package/lib/change-password/change-password.component.d.ts +27 -0
  93. package/lib/change-password/change-password.module.d.ts +14 -0
  94. package/lib/forgot-password/forgot-password-routing.module.d.ts +7 -0
  95. package/lib/forgot-password/forgot-password.component.d.ts +34 -0
  96. package/lib/forgot-password/forgot-password.module.d.ts +11 -0
  97. package/lib/forgot-password/index.d.ts +2 -0
  98. package/lib/ip-address-selector/ip-address-selector.module.d.ts +14 -0
  99. package/lib/ip-address-selector/ip-range-selector/ip-range-selector.component.d.ts +28 -0
  100. package/lib/login/index.d.ts +2 -0
  101. package/lib/login/login-routing.module.d.ts +7 -0
  102. package/lib/login/login.component.d.ts +53 -0
  103. package/lib/login/login.module.d.ts +15 -0
  104. package/lib/ngx-techlify-users/ngx-techlify-users-routing.module.d.ts +7 -0
  105. package/lib/ngx-techlify-users/ngx-techlify-users.module.d.ts +8 -0
  106. package/lib/password-requirement-check/password-check-result.d.ts +7 -0
  107. package/lib/password-requirement-check/password-check.service.d.ts +15 -0
  108. package/lib/password-requirement-check/password-requirement-check/password-requirement-check.component.d.ts +22 -0
  109. package/lib/password-requirement-check/password-requirement-check.module.d.ts +8 -0
  110. package/lib/profile/index.d.ts +2 -0
  111. package/lib/profile/profile-edit.component.d.ts +33 -0
  112. package/lib/profile/profile-routing.module.d.ts +7 -0
  113. package/lib/profile/profile.module.d.ts +11 -0
  114. package/lib/restrictors/index.d.ts +3 -0
  115. package/lib/restrictors/restrictor-level-selector/restrictor-level-selector/restrictor-level-selector.component.d.ts +34 -0
  116. package/lib/restrictors/restrictor-level-selector/restrictor-level-selector.module.d.ts +11 -0
  117. package/lib/restrictors/restrictor-level-selector/restrictor-level.service.d.ts +9 -0
  118. package/lib/restrictors/restrictor-status-selector/restrictor-status-selector/restrictor-status-selector.component.d.ts +34 -0
  119. package/lib/restrictors/restrictor-status-selector/restrictor-status-selector.module.d.ts +10 -0
  120. package/lib/restrictors/restrictor-status-selector/restrictor-status.service.d.ts +9 -0
  121. package/lib/restrictors/restrictor-type-selector/restrictor-type-selector/restrictor-type-selector.component.d.ts +34 -0
  122. package/lib/restrictors/restrictor-type-selector/restrictor-type-selector.module.d.ts +11 -0
  123. package/lib/restrictors/restrictor-type-selector/restrictor-type.service.d.ts +9 -0
  124. package/lib/restrictors/restrictor.service.d.ts +9 -0
  125. package/lib/restrictors/restrictors-form/restrictors-form.component.d.ts +30 -0
  126. package/lib/restrictors/restrictors-form-page/restrictors-form-page.component.d.ts +21 -0
  127. package/lib/restrictors/restrictors-list-page/restrictors-list-page.component.d.ts +51 -0
  128. package/lib/restrictors/restrictors-routing.module.d.ts +7 -0
  129. package/lib/restrictors/restrictors.module.d.ts +28 -0
  130. package/lib/role/index.d.ts +8 -0
  131. package/lib/role/permission/permission.model.d.ts +11 -0
  132. package/lib/role/permission/permission.module.d.ts +12 -0
  133. package/lib/role/permission/permission.routes.d.ts +7 -0
  134. package/lib/role/permission/permissions-management.component.d.ts +38 -0
  135. package/lib/role/role-form.component.d.ts +34 -0
  136. package/lib/role/role-view/role-view.component.d.ts +16 -0
  137. package/lib/role/role.model.d.ts +31 -0
  138. package/lib/role/role.module.d.ts +16 -0
  139. package/lib/role/role.routes.d.ts +7 -0
  140. package/lib/role/role.service.d.ts +11 -0
  141. package/lib/role/roles-view-all.component.d.ts +40 -0
  142. package/lib/signup/index.d.ts +2 -0
  143. package/lib/signup/signup-routing.module.d.ts +7 -0
  144. package/lib/signup/signup.component.d.ts +29 -0
  145. package/lib/signup/signup.module.d.ts +11 -0
  146. package/lib/user/current-user.service.d.ts +63 -0
  147. package/lib/user/index.d.ts +7 -0
  148. package/lib/user/user-explore.component.d.ts +26 -0
  149. package/lib/user/user-form.component.d.ts +52 -0
  150. package/lib/user/user-view.component.d.ts +31 -0
  151. package/lib/user/user.model.d.ts +29 -0
  152. package/lib/user/user.module.d.ts +26 -0
  153. package/lib/user/user.routes.d.ts +7 -0
  154. package/lib/user/user.service.d.ts +13 -0
  155. package/lib/user/users-view-all.component.d.ts +56 -0
  156. package/lib/user-config/index.d.ts +2 -0
  157. package/lib/user-config/user-config.model.d.ts +50 -0
  158. package/lib/user-config/user-config.service.d.ts +14 -0
  159. package/lib/user-selector/index.d.ts +2 -0
  160. package/lib/user-selector/user-data.service.d.ts +16 -0
  161. package/lib/user-selector/user-selector.component.d.ts +29 -0
  162. package/lib/user-selector/user-selector.module.d.ts +10 -0
  163. package/package.json +1 -1
  164. package/public-api.d.ts +23 -0
@@ -0,0 +1,99 @@
1
+ import { Component, Inject } from '@angular/core';
2
+ import { Validators, UntypedFormControl } from '@angular/forms';
3
+ import { MAT_DIALOG_DATA } from '@angular/material/dialog';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../core";
6
+ import * as i2 from "@angular/forms";
7
+ import * as i3 from "../user-config";
8
+ import * as i4 from "@angular/material/dialog";
9
+ import * as i5 from "./role.service";
10
+ import * as i6 from "@angular/common";
11
+ import * as i7 from "@angular/material/button";
12
+ import * as i8 from "@angular/material/checkbox";
13
+ import * as i9 from "@angular/material/form-field";
14
+ import * as i10 from "@angular/material/input";
15
+ import * as i11 from "@angular/material/core";
16
+ import * as i12 from "@angular/material/select";
17
+ import * as i13 from "@angular/flex-layout/flex";
18
+ const errorMessages = {
19
+ label: {
20
+ required: 'Role is required'
21
+ }
22
+ };
23
+ export class RoleFormComponent {
24
+ constructor(alertService, credentialsService, fb, formValidatorService, userConfigService, dialogRef, data, roleService) {
25
+ this.alertService = alertService;
26
+ this.credentialsService = credentialsService;
27
+ this.fb = fb;
28
+ this.formValidatorService = formValidatorService;
29
+ this.userConfigService = userConfigService;
30
+ this.dialogRef = dialogRef;
31
+ this.data = data;
32
+ this.roleService = roleService;
33
+ this.modules = [];
34
+ this.isWorking = false;
35
+ this.showModuleSelector = true;
36
+ this.isUpdateMode = false;
37
+ this.config = this.userConfigService.getConfig();
38
+ this.showModuleSelector = this.config.roleConfig.showModuleSelectorOnForm;
39
+ }
40
+ get isAdminUser() {
41
+ return (this.credentialsService.credentials?.user?.user_type_id === 1);
42
+ }
43
+ ngOnInit() {
44
+ this.roleForm = this.fb.group({
45
+ id: [''],
46
+ label: new UntypedFormControl('', Validators.compose([Validators.required])),
47
+ description: new UntypedFormControl(''),
48
+ module_code: [''],
49
+ is_editable: [true],
50
+ is_global: [false],
51
+ client_id: [this.data.client_id ? this.data.client_id : 1]
52
+ });
53
+ if (this.data.role) {
54
+ this.roleForm.patchValue(this.data.role);
55
+ this.isUpdateMode = true;
56
+ }
57
+ if (this.showModuleSelector) {
58
+ this.getSubscribedModules();
59
+ }
60
+ }
61
+ async save() {
62
+ if (!this.roleForm.valid) {
63
+ return;
64
+ }
65
+ this.isWorking = true;
66
+ if (this.data.module_code) {
67
+ this.roleForm.controls.module_code.setValue(this.data.module_code);
68
+ }
69
+ const result = this.isUpdateMode
70
+ ? await this.roleService.updateRole(this.roleForm.value)
71
+ : await this.roleService.createRole(this.roleForm.value);
72
+ this.alertService.addAlert('Successfully saved the role', 'success');
73
+ this.dialogRef.close(result);
74
+ this.isWorking = false;
75
+ }
76
+ async getSubscribedModules() {
77
+ let filters = {};
78
+ filters.client_id = this.data.client_id;
79
+ const result = await this.roleService.getClientSubscriptions(filters);
80
+ }
81
+ /** Method to evaluate form fields*/
82
+ isFieldValid(field) {
83
+ return this.formValidatorService.isFieldValid(field, this.roleForm);
84
+ }
85
+ /** Method to find error in form fields*/
86
+ getErrorMessage(field) {
87
+ return this.formValidatorService.getErrorMessage(field, this.roleForm, errorMessages);
88
+ }
89
+ }
90
+ RoleFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: RoleFormComponent, deps: [{ token: i1.AlertService }, { token: i1.CredentialsService }, { token: i2.UntypedFormBuilder }, { token: i1.FormValidatorService }, { token: i3.UserConfigService }, { token: i4.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i5.RoleService }], target: i0.ɵɵFactoryTarget.Component });
91
+ RoleFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: RoleFormComponent, selector: "role-form", ngImport: i0, template: "<form [formGroup]=\"roleForm\" (ngSubmit)=\"save()\">\n <div fxLayout=\"column\">\n <div mat-dialog-title class=\"text-center\">\n <div>Role Form</div>\n </div>\n <mat-form-field fxFlex=\"100%\">\n <input matInput formControlName=\"label\" placeholder=\"Role\" type=\"text\" autocomplete=\"off\" required />\n <mat-error *ngIf=\"isFieldValid('label')\">{{getErrorMessage('label')}}</mat-error>\n </mat-form-field>\n <mat-form-field fxFlex=\"100%\" *ngIf=\"showModuleSelector\">\n <mat-label>Module</mat-label>\n <mat-select formControlName=\"module_code\" required>\n <mat-option *ngFor=\"let module of modules\" [value]=\"module.package?.module.code\">\n {{module.package?.module.name}}</mat-option>\n </mat-select>\n <mat-error>Module is required</mat-error>\n </mat-form-field>\n <mat-form-field fxFlex=\"100%\">\n <textarea matInput placeholder=\"Description\" formControlName=\"description\"></textarea>\n </mat-form-field>\n\n <ng-container *ngIf=\"isAdminUser\">\n <mat-checkbox formControlName=\"is_editable\"> Is Editable</mat-checkbox>\n <mat-checkbox formControlName=\"is_global\"> Is Global</mat-checkbox>\n </ng-container>\n\n <div fxFlex=\"100%\" fxLayout fxLayoutAlign=\"end\" fxLayoutGap=\"1rem\">\n <button mat-button class=\"mt-2\" type=\"button\" (click)=\"dialogRef.close()\">\n Cancel\n </button>\n <button mat-raised-button color=\"primary\" class=\"mt-2\" type=\"submit\">\n Save\n </button>\n </div>\n </div>\n</form>", dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", 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"] }, { kind: "component", type: i8.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i4.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i9.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i9.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i9.MatLabel, selector: "mat-label" }, { kind: "directive", type: i10.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i11.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i12.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "directive", type: i13.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"] }, { kind: "directive", type: i13.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"] }, { kind: "directive", type: i13.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"] }, { kind: "directive", type: i13.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"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
92
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: RoleFormComponent, decorators: [{
93
+ type: Component,
94
+ args: [{ selector: 'role-form', template: "<form [formGroup]=\"roleForm\" (ngSubmit)=\"save()\">\n <div fxLayout=\"column\">\n <div mat-dialog-title class=\"text-center\">\n <div>Role Form</div>\n </div>\n <mat-form-field fxFlex=\"100%\">\n <input matInput formControlName=\"label\" placeholder=\"Role\" type=\"text\" autocomplete=\"off\" required />\n <mat-error *ngIf=\"isFieldValid('label')\">{{getErrorMessage('label')}}</mat-error>\n </mat-form-field>\n <mat-form-field fxFlex=\"100%\" *ngIf=\"showModuleSelector\">\n <mat-label>Module</mat-label>\n <mat-select formControlName=\"module_code\" required>\n <mat-option *ngFor=\"let module of modules\" [value]=\"module.package?.module.code\">\n {{module.package?.module.name}}</mat-option>\n </mat-select>\n <mat-error>Module is required</mat-error>\n </mat-form-field>\n <mat-form-field fxFlex=\"100%\">\n <textarea matInput placeholder=\"Description\" formControlName=\"description\"></textarea>\n </mat-form-field>\n\n <ng-container *ngIf=\"isAdminUser\">\n <mat-checkbox formControlName=\"is_editable\"> Is Editable</mat-checkbox>\n <mat-checkbox formControlName=\"is_global\"> Is Global</mat-checkbox>\n </ng-container>\n\n <div fxFlex=\"100%\" fxLayout fxLayoutAlign=\"end\" fxLayoutGap=\"1rem\">\n <button mat-button class=\"mt-2\" type=\"button\" (click)=\"dialogRef.close()\">\n Cancel\n </button>\n <button mat-raised-button color=\"primary\" class=\"mt-2\" type=\"submit\">\n Save\n </button>\n </div>\n </div>\n</form>" }]
95
+ }], ctorParameters: function () { return [{ type: i1.AlertService }, { type: i1.CredentialsService }, { type: i2.UntypedFormBuilder }, { type: i1.FormValidatorService }, { type: i3.UserConfigService }, { type: i4.MatDialogRef }, { type: undefined, decorators: [{
96
+ type: Inject,
97
+ args: [MAT_DIALOG_DATA]
98
+ }] }, { type: i5.RoleService }]; } });
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvcm9sZS9yb2xlLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9yb2xlL3JvbGUtZm9ybS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBd0MsVUFBVSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLdEcsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBR3pFLE1BQU0sYUFBYSxHQUFRO0lBQ3ZCLEtBQUssRUFBRTtRQUNILFFBQVEsRUFBRSxrQkFBa0I7S0FDL0I7Q0FDSixDQUFDO0FBTUYsTUFBTSxPQUFPLGlCQUFpQjtJQVExQixZQUNZLFlBQTBCLEVBQzFCLGtCQUFzQyxFQUN0QyxFQUFzQixFQUN0QixvQkFBMEMsRUFDM0MsaUJBQW9DLEVBQ3BDLFNBQTBDLEVBQ2pCLElBQVMsRUFDakMsV0FBd0I7UUFQeEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxPQUFFLEdBQUYsRUFBRSxDQUFvQjtRQUN0Qix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzNDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsY0FBUyxHQUFULFNBQVMsQ0FBaUM7UUFDakIsU0FBSSxHQUFKLElBQUksQ0FBSztRQUNqQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQWZwQyxZQUFPLEdBQVEsRUFBRSxDQUFDO1FBRWxCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFbEIs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QztJQUVELG9DQUFvQztJQUNwQyxZQUFZLENBQUMsS0FBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQseUNBQXlDO0lBQ3pDLGVBQWUsQ0FBQyxLQUFhO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUMxRixDQUFDOzs4R0FqRlEsaUJBQWlCLG1OQWVkLGVBQWU7a0dBZmxCLGlCQUFpQixpRENuQjlCLHV0REFtQ087MkZEaEJNLGlCQUFpQjtrQkFKN0IsU0FBUzsrQkFDSSxXQUFXOzswQkFrQmhCLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUdyb3VwLCBVbnR5cGVkRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMsIFVudHlwZWRGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlLCBDcmVkZW50aWFsc1NlcnZpY2UsIEZvcm1WYWxpZGF0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZSc7XG5pbXBvcnQgeyBVc2VyQ29uZmlnU2VydmljZSB9IGZyb20gJy4uL3VzZXItY29uZmlnJztcbmltcG9ydCB7IE11bHRpVXNlckNvbmZpZyB9IGZyb20gJy4uL3VzZXItY29uZmlnJztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IFJvbGVTZXJ2aWNlIH0gZnJvbSAnLi9yb2xlLnNlcnZpY2UnO1xuXG5jb25zdCBlcnJvck1lc3NhZ2VzOiBhbnkgPSB7XG4gICAgbGFiZWw6IHtcbiAgICAgICAgcmVxdWlyZWQ6ICdSb2xlIGlzIHJlcXVpcmVkJ1xuICAgIH1cbn07XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncm9sZS1mb3JtJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcm9sZS1mb3JtLmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBSb2xlRm9ybUNvbXBvbmVudCB7XG4gICAgbW9kdWxlczogYW55ID0gW107XG4gICAgY29uZmlnOiBNdWx0aVVzZXJDb25maWc7XG4gICAgaXNXb3JraW5nID0gZmFsc2U7XG4gICAgcm9sZUZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG4gICAgc2hvd01vZHVsZVNlbGVjdG9yID0gdHJ1ZTtcbiAgICBpc1VwZGF0ZU1vZGUgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNyZWRlbnRpYWxzU2VydmljZTogQ3JlZGVudGlhbHNTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGZiOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gICAgICAgIHByaXZhdGUgZm9ybVZhbGlkYXRvclNlcnZpY2U6IEZvcm1WYWxpZGF0b3JTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgdXNlckNvbmZpZ1NlcnZpY2U6IFVzZXJDb25maWdTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8Um9sZUZvcm1Db21wb25lbnQ+LFxuICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSxcbiAgICAgICAgcHJpdmF0ZSByb2xlU2VydmljZTogUm9sZVNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgdGhpcy5jb25maWcgPSB0aGlzLnVzZXJDb25maWdTZXJ2aWNlLmdldENvbmZpZygpO1xuICAgICAgICB0aGlzLnNob3dNb2R1bGVTZWxlY3RvciA9IHRoaXMuY29uZmlnLnJvbGVDb25maWcuc2hvd01vZHVsZVNlbGVjdG9yT25Gb3JtO1xuICAgIH1cblxuICAgIGdldCBpc0FkbWluVXNlcigpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLmNyZWRlbnRpYWxzU2VydmljZS5jcmVkZW50aWFscz8udXNlcj8udXNlcl90eXBlX2lkID09PSAxKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5yb2xlRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICAgICAgaWQ6IFsnJ10sXG4gICAgICAgICAgICBsYWJlbDogbmV3IFVudHlwZWRGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSkpLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woJycpLFxuICAgICAgICAgICAgbW9kdWxlX2NvZGU6IFsnJ10sXG4gICAgICAgICAgICBpc19lZGl0YWJsZTogW3RydWVdLFxuICAgICAgICAgICAgaXNfZ2xvYmFsOiBbZmFsc2VdLFxuICAgICAgICAgICAgY2xpZW50X2lkOiBbdGhpcy5kYXRhLmNsaWVudF9pZCA/IHRoaXMuZGF0YS5jbGllbnRfaWQgOiAxXVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRoaXMuZGF0YS5yb2xlKSB7XG4gICAgICAgICAgICB0aGlzLnJvbGVGb3JtLnBhdGNoVmFsdWUodGhpcy5kYXRhLnJvbGUpO1xuICAgICAgICAgICAgdGhpcy5pc1VwZGF0ZU1vZGUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnNob3dNb2R1bGVTZWxlY3Rvcikge1xuICAgICAgICAgICAgdGhpcy5nZXRTdWJzY3JpYmVkTW9kdWxlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgc2F2ZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnJvbGVGb3JtLnZhbGlkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc1dvcmtpbmcgPSB0cnVlO1xuICAgICAgICBpZiAodGhpcy5kYXRhLm1vZHVsZV9jb2RlKSB7XG4gICAgICAgICAgICB0aGlzLnJvbGVGb3JtLmNvbnRyb2xzLm1vZHVsZV9jb2RlLnNldFZhbHVlKHRoaXMuZGF0YS5tb2R1bGVfY29kZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5pc1VwZGF0ZU1vZGVcbiAgICAgICAgICAgID8gYXdhaXQgdGhpcy5yb2xlU2VydmljZS51cGRhdGVSb2xlKHRoaXMucm9sZUZvcm0udmFsdWUpXG4gICAgICAgICAgICA6IGF3YWl0IHRoaXMucm9sZVNlcnZpY2UuY3JlYXRlUm9sZSh0aGlzLnJvbGVGb3JtLnZhbHVlKTtcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkQWxlcnQoXG4gICAgICAgICAgICAnU3VjY2Vzc2Z1bGx5IHNhdmVkIHRoZSByb2xlJyxcbiAgICAgICAgICAgICdzdWNjZXNzJ1xuICAgICAgICApO1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShyZXN1bHQpO1xuICAgICAgICB0aGlzLmlzV29ya2luZyA9IGZhbHNlO1xuXG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0U3Vic2NyaWJlZE1vZHVsZXMoKSB7XG4gICAgICAgIGxldCBmaWx0ZXJzOiBhbnkgPSB7fTtcbiAgICAgICAgZmlsdGVycy5jbGllbnRfaWQgPSB0aGlzLmRhdGEuY2xpZW50X2lkO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucm9sZVNlcnZpY2UuZ2V0Q2xpZW50U3Vic2NyaXB0aW9ucyhmaWx0ZXJzKTtcblxuICAgIH1cblxuICAgIC8qKiBNZXRob2QgdG8gZXZhbHVhdGUgZm9ybSBmaWVsZHMqL1xuICAgIGlzRmllbGRWYWxpZChmaWVsZDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1WYWxpZGF0b3JTZXJ2aWNlLmlzRmllbGRWYWxpZChmaWVsZCwgdGhpcy5yb2xlRm9ybSk7XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCB0byBmaW5kIGVycm9yIGluIGZvcm0gZmllbGRzKi9cbiAgICBnZXRFcnJvck1lc3NhZ2UoZmllbGQ6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtVmFsaWRhdG9yU2VydmljZS5nZXRFcnJvck1lc3NhZ2UoZmllbGQsIHRoaXMucm9sZUZvcm0sIGVycm9yTWVzc2FnZXMpO1xuICAgIH1cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwicm9sZUZvcm1cIiAobmdTdWJtaXQpPVwic2F2ZSgpXCI+XG4gICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiPlxuICAgICAgICA8ZGl2IG1hdC1kaWFsb2ctdGl0bGUgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdj5Sb2xlIEZvcm08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBmeEZsZXg9XCIxMDAlXCI+XG4gICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwibGFiZWxcIiBwbGFjZWhvbGRlcj1cIlJvbGVcIiB0eXBlPVwidGV4dFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHJlcXVpcmVkIC8+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiaXNGaWVsZFZhbGlkKCdsYWJlbCcpXCI+e3tnZXRFcnJvck1lc3NhZ2UoJ2xhYmVsJyl9fTwvbWF0LWVycm9yPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgZnhGbGV4PVwiMTAwJVwiICpuZ0lmPVwic2hvd01vZHVsZVNlbGVjdG9yXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPk1vZHVsZTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwibW9kdWxlX2NvZGVcIiByZXF1aXJlZD5cbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgbW9kdWxlIG9mIG1vZHVsZXNcIiBbdmFsdWVdPVwibW9kdWxlLnBhY2thZ2U/Lm1vZHVsZS5jb2RlXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7bW9kdWxlLnBhY2thZ2U/Lm1vZHVsZS5uYW1lfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICA8bWF0LWVycm9yPk1vZHVsZSBpcyByZXF1aXJlZDwvbWF0LWVycm9yPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgZnhGbGV4PVwiMTAwJVwiPlxuICAgICAgICAgICAgPHRleHRhcmVhIG1hdElucHV0IHBsYWNlaG9sZGVyPVwiRGVzY3JpcHRpb25cIiBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiPjwvdGV4dGFyZWE+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzQWRtaW5Vc2VyXCI+XG4gICAgICAgICAgICA8bWF0LWNoZWNrYm94IGZvcm1Db250cm9sTmFtZT1cImlzX2VkaXRhYmxlXCI+IElzIEVkaXRhYmxlPC9tYXQtY2hlY2tib3g+XG4gICAgICAgICAgICA8bWF0LWNoZWNrYm94IGZvcm1Db250cm9sTmFtZT1cImlzX2dsb2JhbFwiPiBJcyBHbG9iYWw8L21hdC1jaGVja2JveD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPGRpdiBmeEZsZXg9XCIxMDAlXCIgZnhMYXlvdXQgZnhMYXlvdXRBbGlnbj1cImVuZFwiIGZ4TGF5b3V0R2FwPVwiMXJlbVwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNsYXNzPVwibXQtMlwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZGlhbG9nUmVmLmNsb3NlKClcIj5cbiAgICAgICAgICAgICAgICBDYW5jZWxcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cIm10LTJcIiB0eXBlPVwic3VibWl0XCI+XG4gICAgICAgICAgICAgICAgU2F2ZVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9mb3JtPiJdfQ==
@@ -0,0 +1,39 @@
1
+ import { Component } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../core";
4
+ import * as i2 from "@angular/router";
5
+ import * as i3 from "@angular/common";
6
+ import * as i4 from "@angular/material/card";
7
+ import * as i5 from "@angular/flex-layout/flex";
8
+ export class RoleViewComponent {
9
+ constructor(http, errorHandler, route) {
10
+ this.http = http;
11
+ this.errorHandler = errorHandler;
12
+ this.route = route;
13
+ }
14
+ ngOnInit() {
15
+ this.route.params.subscribe(params => {
16
+ if (params.id !== undefined) {
17
+ this.roleId = params.id;
18
+ this.getRole();
19
+ }
20
+ });
21
+ }
22
+ getRole() {
23
+ try {
24
+ this.http.get(`api/roles/${this.roleId}`).subscribe((result) => {
25
+ this.role = result.item;
26
+ });
27
+ }
28
+ catch (error) {
29
+ this.errorHandler.handleError(error);
30
+ }
31
+ }
32
+ }
33
+ RoleViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: RoleViewComponent, deps: [{ token: i1.HttpService }, { token: i1.ErrorHandlerService }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
34
+ RoleViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: RoleViewComponent, selector: "app-role-view", ngImport: i0, template: "<div fxLayout=\"column\" fxLayoutGap=\"1rem\" class=\"p-4\">\n <h3 fxLayoutAlign=\"center\" class=\"pb-4\">Role View</h3>\n <div fxLayout=\"row wrap\" fxLayoutGap=\"1rem grid\">\n <div fxFlex.lt-md=\"100%\" fxFlex=\"0 1 calc(50%-1rem)\">\n <mat-card fxFlex=\"100%\">\n <mat-card-title>Basic Info.</mat-card-title>\n <mat-card-content fxLayout=\"column wrap\" fxLayoutGap=\"1rem\">\n <div>\n <span class=\"font-weight-bold\">Role:</span> {{role?.label}}\n </div>\n <div>\n <span class=\"font-weight-bold\">Description:</span> {{role?.description}}\n </div>\n <div>\n <span class=\"font-weight-bold\">Is App Role:</span> {{role?.is_global ? 'Yes' : 'No'}}\n </div>\n <div>\n <span class=\"font-weight-bold\"># Users:</span> {{role?.role_users_count}}\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n <div fxFlex.lt-md=\"100%\" fxFlex=\"0 1 calc(50%-1rem)\">\n <mat-card fxFlex=\"100%\">\n <mat-card-title>Permissions ({{role?.permissions.length}})</mat-card-title>\n <mat-card-content style=\"height:400px;overflow-y: scroll;\">\n <div fxLayout=\"column wrap\">\n <div *ngFor=\"let permission of role?.permissions;let i=index;\">\n {{i+1}}. {{permission.label}}\n </div>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i4.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "directive", type: i4.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: i5.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"] }, { kind: "directive", type: i5.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"] }, { kind: "directive", type: i5.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"] }, { kind: "directive", type: i5.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"] }] });
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: RoleViewComponent, decorators: [{
36
+ type: Component,
37
+ args: [{ selector: 'app-role-view', template: "<div fxLayout=\"column\" fxLayoutGap=\"1rem\" class=\"p-4\">\n <h3 fxLayoutAlign=\"center\" class=\"pb-4\">Role View</h3>\n <div fxLayout=\"row wrap\" fxLayoutGap=\"1rem grid\">\n <div fxFlex.lt-md=\"100%\" fxFlex=\"0 1 calc(50%-1rem)\">\n <mat-card fxFlex=\"100%\">\n <mat-card-title>Basic Info.</mat-card-title>\n <mat-card-content fxLayout=\"column wrap\" fxLayoutGap=\"1rem\">\n <div>\n <span class=\"font-weight-bold\">Role:</span> {{role?.label}}\n </div>\n <div>\n <span class=\"font-weight-bold\">Description:</span> {{role?.description}}\n </div>\n <div>\n <span class=\"font-weight-bold\">Is App Role:</span> {{role?.is_global ? 'Yes' : 'No'}}\n </div>\n <div>\n <span class=\"font-weight-bold\"># Users:</span> {{role?.role_users_count}}\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n <div fxFlex.lt-md=\"100%\" fxFlex=\"0 1 calc(50%-1rem)\">\n <mat-card fxFlex=\"100%\">\n <mat-card-title>Permissions ({{role?.permissions.length}})</mat-card-title>\n <mat-card-content style=\"height:400px;overflow-y: scroll;\">\n <div fxLayout=\"column wrap\">\n <div *ngFor=\"let permission of role?.permissions;let i=index;\">\n {{i+1}}. {{permission.label}}\n </div>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n </div>\n</div>\n" }]
38
+ }], ctorParameters: function () { return [{ type: i1.HttpService }, { type: i1.ErrorHandlerService }, { type: i2.ActivatedRoute }]; } });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvcm9sZS9yb2xlLXZpZXcvcm9sZS12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvcm9sZS9yb2xlLXZpZXcvcm9sZS12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7QUFTbEQsTUFBTSxPQUFPLGlCQUFpQjtJQUk1QixZQUNVLElBQWlCLEVBQ2pCLFlBQWlDLEVBQ2pDLEtBQXFCO1FBRnJCLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLFVBQUssR0FBTCxLQUFLLENBQWdCO0lBQzNCLENBQUM7SUFFTCxRQUFRO1FBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ25DLElBQUksTUFBTSxDQUFDLEVBQUUsS0FBSyxTQUFTLEVBQUU7Z0JBQzNCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ2hCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUk7WUFDRixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFO2dCQUNsRSxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDMUIsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUNELE9BQU8sS0FBSyxFQUFFO1lBQ1osSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDdEM7SUFDSCxDQUFDOzs4R0E1QlUsaUJBQWlCO2tHQUFqQixpQkFBaUIscURDVDlCLHc5Q0FvQ0E7MkZEM0JhLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEVycm9ySGFuZGxlclNlcnZpY2UsIEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1yb2xlLXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vcm9sZS12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcm9sZS12aWV3LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUm9sZVZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICByb2xlOiBhbnk7XG4gIHJvbGVJZDogYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cDogSHR0cFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlcnJvckhhbmRsZXI6IEVycm9ySGFuZGxlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XG4gICAgICBpZiAocGFyYW1zLmlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5yb2xlSWQgPSBwYXJhbXMuaWQ7XG4gICAgICAgIHRoaXMuZ2V0Um9sZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0Um9sZSgpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5odHRwLmdldChgYXBpL3JvbGVzLyR7dGhpcy5yb2xlSWR9YCkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnJvbGUgPSByZXN1bHQuaXRlbTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuZXJyb3JIYW5kbGVyLmhhbmRsZUVycm9yKGVycm9yKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEdhcD1cIjFyZW1cIiBjbGFzcz1cInAtNFwiPlxuICA8aDMgZnhMYXlvdXRBbGlnbj1cImNlbnRlclwiIGNsYXNzPVwicGItNFwiPlJvbGUgVmlldzwvaDM+XG4gIDxkaXYgZnhMYXlvdXQ9XCJyb3cgd3JhcFwiIGZ4TGF5b3V0R2FwPVwiMXJlbSBncmlkXCI+XG4gICAgPGRpdiBmeEZsZXgubHQtbWQ9XCIxMDAlXCIgZnhGbGV4PVwiMCAxIGNhbGMoNTAlLTFyZW0pXCI+XG4gICAgICA8bWF0LWNhcmQgZnhGbGV4PVwiMTAwJVwiPlxuICAgICAgICA8bWF0LWNhcmQtdGl0bGU+QmFzaWMgSW5mby48L21hdC1jYXJkLXRpdGxlPlxuICAgICAgICA8bWF0LWNhcmQtY29udGVudCBmeExheW91dD1cImNvbHVtbiB3cmFwXCIgZnhMYXlvdXRHYXA9XCIxcmVtXCI+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC13ZWlnaHQtYm9sZFwiPlJvbGU6PC9zcGFuPiB7e3JvbGU/LmxhYmVsfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LXdlaWdodC1ib2xkXCI+RGVzY3JpcHRpb246PC9zcGFuPiB7e3JvbGU/LmRlc2NyaXB0aW9ufX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LXdlaWdodC1ib2xkXCI+SXMgQXBwIFJvbGU6PC9zcGFuPiB7e3JvbGU/LmlzX2dsb2JhbCA/ICdZZXMnIDogJ05vJ319XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC13ZWlnaHQtYm9sZFwiPiMgVXNlcnM6PC9zcGFuPiB7e3JvbGU/LnJvbGVfdXNlcnNfY291bnR9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICA8L21hdC1jYXJkPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgZnhGbGV4Lmx0LW1kPVwiMTAwJVwiIGZ4RmxleD1cIjAgMSBjYWxjKDUwJS0xcmVtKVwiPlxuICAgICAgPG1hdC1jYXJkIGZ4RmxleD1cIjEwMCVcIj5cbiAgICAgICAgPG1hdC1jYXJkLXRpdGxlPlBlcm1pc3Npb25zICh7e3JvbGU/LnBlcm1pc3Npb25zLmxlbmd0aH19KTwvbWF0LWNhcmQtdGl0bGU+XG4gICAgICAgIDxtYXQtY2FyZC1jb250ZW50IHN0eWxlPVwiaGVpZ2h0OjQwMHB4O292ZXJmbG93LXk6IHNjcm9sbDtcIj5cbiAgICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uIHdyYXBcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHBlcm1pc3Npb24gb2Ygcm9sZT8ucGVybWlzc2lvbnM7bGV0IGk9aW5kZXg7XCI+XG4gICAgICAgICAgICAgIHt7aSsxfX0uIHt7cGVybWlzc2lvbi5sYWJlbH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICAgICAgPC9tYXQtY2FyZD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Class representation of a Role
3
+ *
4
+ * @author Joshua Kissoon
5
+ * @since 20170710
6
+ */
7
+ export class Role {
8
+ constructor() {
9
+ this.permissionsModel = {};
10
+ this.permissions = new Array();
11
+ }
12
+ loadFromJson(data) {
13
+ this.id = data.id;
14
+ this.slug = data.slug;
15
+ this.label = data.label;
16
+ this.is_global = data.is_global;
17
+ this.is_editable = data.is_editable;
18
+ if (data.permissions != undefined) {
19
+ this.permissions = data.permissions;
20
+ }
21
+ }
22
+ hasPermission(perm) {
23
+ for (let i in this.permissions) {
24
+ let permission = this.permissions[i];
25
+ if (permission.slug == perm) {
26
+ return true;
27
+ }
28
+ }
29
+ return false;
30
+ }
31
+ removePermission(perm) {
32
+ for (let key in this.permissions) {
33
+ let permission = this.permissions[key];
34
+ if (permission.slug == perm.slug) {
35
+ let index = this.permissions.indexOf(permission);
36
+ this.permissions.splice(index, 1);
37
+ return;
38
+ }
39
+ }
40
+ }
41
+ addPermission(permission) {
42
+ this.permissions.push(permission);
43
+ }
44
+ /**
45
+ * Method that sets up a permissions variable to work as an ngModel
46
+ *
47
+ * @author Joshua Kissoon
48
+ * @since 20161014
49
+ */
50
+ setupBlankPermissionsForNgModel() {
51
+ for (let perm of this.permissions) {
52
+ this.permissionsModel[perm.slug] = true;
53
+ }
54
+ }
55
+ }
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvcm9sZS9yb2xlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFPLElBQUk7SUFjYjtRQUhBLHFCQUFnQixHQUFRLEVBQUUsQ0FBQztRQUl2QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksS0FBSyxFQUFjLENBQUM7SUFDL0MsQ0FBQztJQUVNLFlBQVksQ0FBQyxJQUFTO1FBQ3pCLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNoQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFFcEMsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLFNBQVMsRUFBRTtZQUMvQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7U0FDdkM7SUFFTCxDQUFDO0lBRUQsYUFBYSxDQUFDLElBQVk7UUFDdEIsS0FBSyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQzVCLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFckMsSUFBSSxVQUFVLENBQUMsSUFBSSxJQUFJLElBQUksRUFBRTtnQkFDekIsT0FBTyxJQUFJLENBQUM7YUFDZjtTQUNKO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQWdCO1FBQzdCLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUM5QixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRXZDLElBQUksVUFBVSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUM5QixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDakQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNsQyxPQUFPO2FBQ1Y7U0FDSjtJQUNMLENBQUM7SUFFRCxhQUFhLENBQUMsVUFBc0I7UUFDaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsK0JBQStCO1FBQzNCLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUMvQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztTQUMzQztJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBlcm1pc3Npb24gfSBmcm9tICcuL3Blcm1pc3Npb24vcGVybWlzc2lvbi5tb2RlbCc7XG5cbi8qKlxuICogQ2xhc3MgcmVwcmVzZW50YXRpb24gb2YgYSBSb2xlXG4gKlxuICogQGF1dGhvciBKb3NodWEgS2lzc29vblxuICogQHNpbmNlIDIwMTcwNzEwXG4gKi9cbmV4cG9ydCBjbGFzcyBSb2xlIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIHNsdWc6IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIG1vZHVsZV9pZDogbnVtYmVyO1xuICAgIHNlbGVjdGVkOiBib29sZWFuO1xuICAgIGlzX2dsb2JhbDogYm9vbGVhbjtcbiAgICBpc19lZGl0YWJsZTogYm9vbGVhbjtcblxuICAgIC8qIFJlbGF0ZWQgKi9cbiAgICBwZXJtaXNzaW9uczogUGVybWlzc2lvbltdO1xuICAgIHBlcm1pc3Npb25zTW9kZWw6IGFueSA9IHt9O1xuICAgIG1vZHVsZV9jb2RlOiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5wZXJtaXNzaW9ucyA9IG5ldyBBcnJheTxQZXJtaXNzaW9uPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBsb2FkRnJvbUpzb24oZGF0YTogYW55KSB7XG4gICAgICAgIHRoaXMuaWQgPSBkYXRhLmlkO1xuICAgICAgICB0aGlzLnNsdWcgPSBkYXRhLnNsdWc7XG4gICAgICAgIHRoaXMubGFiZWwgPSBkYXRhLmxhYmVsO1xuICAgICAgICB0aGlzLmlzX2dsb2JhbCA9IGRhdGEuaXNfZ2xvYmFsO1xuICAgICAgICB0aGlzLmlzX2VkaXRhYmxlID0gZGF0YS5pc19lZGl0YWJsZTtcblxuICAgICAgICBpZiAoZGF0YS5wZXJtaXNzaW9ucyAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMucGVybWlzc2lvbnMgPSBkYXRhLnBlcm1pc3Npb25zO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBoYXNQZXJtaXNzaW9uKHBlcm06IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBmb3IgKGxldCBpIGluIHRoaXMucGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgIGxldCBwZXJtaXNzaW9uID0gdGhpcy5wZXJtaXNzaW9uc1tpXTtcblxuICAgICAgICAgICAgaWYgKHBlcm1pc3Npb24uc2x1ZyA9PSBwZXJtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmVtb3ZlUGVybWlzc2lvbihwZXJtOiBQZXJtaXNzaW9uKSB7XG4gICAgICAgIGZvciAobGV0IGtleSBpbiB0aGlzLnBlcm1pc3Npb25zKSB7XG4gICAgICAgICAgICBsZXQgcGVybWlzc2lvbiA9IHRoaXMucGVybWlzc2lvbnNba2V5XTtcblxuICAgICAgICAgICAgaWYgKHBlcm1pc3Npb24uc2x1ZyA9PSBwZXJtLnNsdWcpIHtcbiAgICAgICAgICAgICAgICBsZXQgaW5kZXggPSB0aGlzLnBlcm1pc3Npb25zLmluZGV4T2YocGVybWlzc2lvbik7XG4gICAgICAgICAgICAgICAgdGhpcy5wZXJtaXNzaW9ucy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFkZFBlcm1pc3Npb24ocGVybWlzc2lvbjogUGVybWlzc2lvbikge1xuICAgICAgICB0aGlzLnBlcm1pc3Npb25zLnB1c2gocGVybWlzc2lvbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHRoYXQgc2V0cyB1cCBhIHBlcm1pc3Npb25zIHZhcmlhYmxlIHRvIHdvcmsgYXMgYW4gbmdNb2RlbFxuICAgICAqXG4gICAgICogQGF1dGhvciBKb3NodWEgS2lzc29vblxuICAgICAqIEBzaW5jZSAyMDE2MTAxNFxuICAgICAqL1xuICAgIHNldHVwQmxhbmtQZXJtaXNzaW9uc0Zvck5nTW9kZWwoKSB7XG4gICAgICAgIGZvciAobGV0IHBlcm0gb2YgdGhpcy5wZXJtaXNzaW9ucykge1xuICAgICAgICAgICAgdGhpcy5wZXJtaXNzaW9uc01vZGVsW3Blcm0uc2x1Z10gPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -0,0 +1,59 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ /* Components */
4
+ import { RolesViewAllComponent } from './roles-view-all.component';
5
+ /* Routing Provider */
6
+ import { RoleRoutingProvider } from './role.routes';
7
+ import { RoleFormComponent } from './role-form.component';
8
+ import { MaterialModule } from '../material.module';
9
+ import { FlexLayoutModule } from '@angular/flex-layout';
10
+ import { InfiniteScrollModule } from 'ngx-infinite-scroll';
11
+ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
12
+ import { RoleViewComponent } from './role-view/role-view.component';
13
+ import { MatProgressBarModule } from '@angular/material/progress-bar';
14
+ import * as i0 from "@angular/core";
15
+ export class RoleModule {
16
+ }
17
+ RoleModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: RoleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
18
+ RoleModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: RoleModule, declarations: [RoleFormComponent,
19
+ RolesViewAllComponent,
20
+ RoleViewComponent], imports: [CommonModule,
21
+ RoleRoutingProvider,
22
+ MaterialModule,
23
+ FlexLayoutModule,
24
+ FormsModule,
25
+ ReactiveFormsModule,
26
+ InfiniteScrollModule,
27
+ MatProgressBarModule], exports: [RolesViewAllComponent] });
28
+ RoleModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: RoleModule, imports: [CommonModule,
29
+ RoleRoutingProvider,
30
+ MaterialModule,
31
+ FlexLayoutModule,
32
+ FormsModule,
33
+ ReactiveFormsModule,
34
+ InfiniteScrollModule,
35
+ MatProgressBarModule] });
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: RoleModule, decorators: [{
37
+ type: NgModule,
38
+ args: [{
39
+ imports: [
40
+ CommonModule,
41
+ RoleRoutingProvider,
42
+ MaterialModule,
43
+ FlexLayoutModule,
44
+ FormsModule,
45
+ ReactiveFormsModule,
46
+ InfiniteScrollModule,
47
+ MatProgressBarModule
48
+ ],
49
+ declarations: [
50
+ RoleFormComponent,
51
+ RolesViewAllComponent,
52
+ RoleViewComponent
53
+ ],
54
+ exports: [
55
+ RolesViewAllComponent
56
+ ]
57
+ }]
58
+ }] });
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3JvbGUvcm9sZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsZ0JBQWdCO0FBQ2hCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRW5FLHNCQUFzQjtBQUN0QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzNELE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNwRSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFzQnBFLE1BQU0sT0FBTyxVQUFVOzt1R0FBVixVQUFVO3dHQUFWLFVBQVUsaUJBUmYsaUJBQWlCO1FBQ2pCLHFCQUFxQjtRQUNyQixpQkFBaUIsYUFaakIsWUFBWTtRQUNaLG1CQUFtQjtRQUNuQixjQUFjO1FBQ2QsZ0JBQWdCO1FBQ2hCLFdBQVc7UUFDWCxtQkFBbUI7UUFDbkIsb0JBQW9CO1FBQ3BCLG9CQUFvQixhQVFwQixxQkFBcUI7d0dBR2hCLFVBQVUsWUFsQmYsWUFBWTtRQUNaLG1CQUFtQjtRQUNuQixjQUFjO1FBQ2QsZ0JBQWdCO1FBQ2hCLFdBQVc7UUFDWCxtQkFBbUI7UUFDbkIsb0JBQW9CO1FBQ3BCLG9CQUFvQjsyRkFXZixVQUFVO2tCQXBCdEIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2QsZ0JBQWdCO3dCQUNoQixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsb0JBQW9CO3dCQUNwQixvQkFBb0I7cUJBQ3ZCO29CQUNELFlBQVksRUFBRTt3QkFDVixpQkFBaUI7d0JBQ2pCLHFCQUFxQjt3QkFDckIsaUJBQWlCO3FCQUNwQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ0wscUJBQXFCO3FCQUN4QjtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKiBDb21wb25lbnRzICovXG5pbXBvcnQgeyBSb2xlc1ZpZXdBbGxDb21wb25lbnQgfSBmcm9tICcuL3JvbGVzLXZpZXctYWxsLmNvbXBvbmVudCc7XG5cbi8qIFJvdXRpbmcgUHJvdmlkZXIgKi9cbmltcG9ydCB7IFJvbGVSb3V0aW5nUHJvdmlkZXIgfSBmcm9tICcuL3JvbGUucm91dGVzJztcbmltcG9ydCB7IFJvbGVGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9yb2xlLWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IE1hdGVyaWFsTW9kdWxlIH0gZnJvbSAnLi4vbWF0ZXJpYWwubW9kdWxlJztcbmltcG9ydCB7IEZsZXhMYXlvdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mbGV4LWxheW91dCc7XG5pbXBvcnQgeyBJbmZpbml0ZVNjcm9sbE1vZHVsZSB9IGZyb20gJ25neC1pbmZpbml0ZS1zY3JvbGwnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBSb2xlVmlld0NvbXBvbmVudCB9IGZyb20gJy4vcm9sZS12aWV3L3JvbGUtdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHtNYXRQcm9ncmVzc0Jhck1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3MtYmFyJztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgUm9sZVJvdXRpbmdQcm92aWRlcixcbiAgICAgICAgTWF0ZXJpYWxNb2R1bGUsXG4gICAgICAgIEZsZXhMYXlvdXRNb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBJbmZpbml0ZVNjcm9sbE1vZHVsZSxcbiAgICAgICAgTWF0UHJvZ3Jlc3NCYXJNb2R1bGVcbiAgICBdLFxuICAgIGRlY2xhcmF0aW9uczogW1xuICAgICAgICBSb2xlRm9ybUNvbXBvbmVudCxcbiAgICAgICAgUm9sZXNWaWV3QWxsQ29tcG9uZW50LFxuICAgICAgICBSb2xlVmlld0NvbXBvbmVudFxuICAgIF0sXG4gICAgZXhwb3J0czogW1xuICAgICAgICBSb2xlc1ZpZXdBbGxDb21wb25lbnRcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFJvbGVNb2R1bGUgeyB9XG4iXX0=
@@ -0,0 +1,28 @@
1
+ import { RoleViewComponent } from './role-view/role-view.component';
2
+ import { RouterModule } from '@angular/router';
3
+ import { NgModule } from '@angular/core';
4
+ /* Auth Guard */
5
+ import { AuthenticationGuard } from '../core';
6
+ /* Component */
7
+ import { RolesViewAllComponent } from './roles-view-all.component';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/router";
10
+ const routes = [
11
+ { path: '', component: RolesViewAllComponent, canActivate: [AuthenticationGuard] },
12
+ { path: ':id', component: RoleViewComponent, canActivate: [AuthenticationGuard] },
13
+ // fallback when no prior route found
14
+ { path: '**', redirectTo: '', pathMatch: 'full' },
15
+ ];
16
+ export class RoleRoutingProvider {
17
+ }
18
+ RoleRoutingProvider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: RoleRoutingProvider, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
19
+ RoleRoutingProvider.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.7", ngImport: i0, type: RoleRoutingProvider, imports: [i1.RouterModule], exports: [RouterModule] });
20
+ RoleRoutingProvider.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: RoleRoutingProvider, imports: [RouterModule.forChild(routes), RouterModule] });
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: RoleRoutingProvider, decorators: [{
22
+ type: NgModule,
23
+ args: [{
24
+ imports: [RouterModule.forChild(routes)],
25
+ exports: [RouterModule]
26
+ }]
27
+ }] });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS5yb3V0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3JvbGUvcm9sZS5yb3V0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsZ0JBQWdCO0FBQ2hCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUU5QyxlQUFlO0FBQ2YsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQUVuRSxNQUFNLE1BQU0sR0FBVztJQUNyQixFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFLFdBQVcsRUFBRSxDQUFDLG1CQUFtQixDQUFDLEVBQUU7SUFFbEYsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFO0lBRWpGLHFDQUFxQztJQUNyQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFO0NBQ2xELENBQUM7QUFNRixNQUFNLE9BQU8sbUJBQW1COztnSEFBbkIsbUJBQW1CO2lIQUFuQixtQkFBbUIsd0NBRnBCLFlBQVk7aUhBRVgsbUJBQW1CLFlBSHBCLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQzdCLFlBQVk7MkZBRVgsbUJBQW1CO2tCQUovQixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3hDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztpQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb2xlVmlld0NvbXBvbmVudCB9IGZyb20gJy4vcm9sZS12aWV3L3JvbGUtdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlLCBSb3V0ZXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyogQXV0aCBHdWFyZCAqL1xuaW1wb3J0IHsgQXV0aGVudGljYXRpb25HdWFyZCB9IGZyb20gJy4uL2NvcmUnO1xuXG4vKiBDb21wb25lbnQgKi9cbmltcG9ydCB7IFJvbGVzVmlld0FsbENvbXBvbmVudCB9IGZyb20gJy4vcm9sZXMtdmlldy1hbGwuY29tcG9uZW50JztcblxuY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gIHsgcGF0aDogJycsIGNvbXBvbmVudDogUm9sZXNWaWV3QWxsQ29tcG9uZW50LCBjYW5BY3RpdmF0ZTogW0F1dGhlbnRpY2F0aW9uR3VhcmRdIH0sXG5cbiAgeyBwYXRoOiAnOmlkJywgY29tcG9uZW50OiBSb2xlVmlld0NvbXBvbmVudCwgY2FuQWN0aXZhdGU6IFtBdXRoZW50aWNhdGlvbkd1YXJkXSB9LFxuXG4gIC8vIGZhbGxiYWNrIHdoZW4gbm8gcHJpb3Igcm91dGUgZm91bmRcbiAgeyBwYXRoOiAnKionLCByZWRpcmVjdFRvOiAnJywgcGF0aE1hdGNoOiAnZnVsbCcgfSxcbl07XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtSb3V0ZXJNb2R1bGUuZm9yQ2hpbGQocm91dGVzKV0sXG4gIGV4cG9ydHM6IFtSb3V0ZXJNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIFJvbGVSb3V0aW5nUHJvdmlkZXIgeyB9XG4iXX0=
@@ -0,0 +1,26 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../core";
4
+ export class RoleService {
5
+ constructor(http) {
6
+ this.http = http;
7
+ }
8
+ createRole(role) {
9
+ return this.http.post(`api/roles`, role).toPromise();
10
+ }
11
+ updateRole(role) {
12
+ return this.http.put(`api/roles/${role.id}`, role).toPromise();
13
+ }
14
+ getClientSubscriptions(filters) {
15
+ return this.http.get(`api/client-subscriptions`, { params: filters }).toPromise();
16
+ }
17
+ }
18
+ RoleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: RoleService, deps: [{ token: i1.HttpService }], target: i0.ɵɵFactoryTarget.Injectable });
19
+ RoleService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: RoleService, providedIn: 'root' });
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: RoleService, decorators: [{
21
+ type: Injectable,
22
+ args: [{
23
+ providedIn: 'root'
24
+ }]
25
+ }], ctorParameters: function () { return [{ type: i1.HttpService }]; } });
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9yb2xlL3JvbGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFNM0MsTUFBTSxPQUFPLFdBQVc7SUFFdEIsWUFBb0IsSUFBaUI7UUFBakIsU0FBSSxHQUFKLElBQUksQ0FBYTtJQUFJLENBQUM7SUFFMUMsVUFBVSxDQUFDLElBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDdkQsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFTO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDakUsQ0FBQztJQUVELHNCQUFzQixDQUFDLE9BQWE7UUFDbEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3BGLENBQUM7O3dHQWRVLFdBQVc7NEdBQVgsV0FBVyxjQUZWLE1BQU07MkZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4uL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBSb2xlU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwU2VydmljZSkgeyB9XG5cbiAgY3JlYXRlUm9sZShyb2xlOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYGFwaS9yb2xlc2AsIHJvbGUpLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgdXBkYXRlUm9sZShyb2xlOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChgYXBpL3JvbGVzLyR7cm9sZS5pZH1gLCByb2xlKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGdldENsaWVudFN1YnNjcmlwdGlvbnMoZmlsdGVycz86IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGBhcGkvY2xpZW50LXN1YnNjcmlwdGlvbnNgLCB7IHBhcmFtczogZmlsdGVycyB9KS50b1Byb21pc2UoKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,131 @@
1
+ /* tslint:disable:component-selector */
2
+ import { Component, Input } from '@angular/core';
3
+ import { RoleFormComponent } from './role-form.component';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../core";
6
+ import * as i2 from "@angular/router";
7
+ import * as i3 from "../user-config";
8
+ import * as i4 from "@angular/material/dialog";
9
+ import * as i5 from "../user";
10
+ import * as i6 from "@angular/common";
11
+ import * as i7 from "@angular/material/button";
12
+ import * as i8 from "@angular/material/icon";
13
+ import * as i9 from "@angular/material/table";
14
+ import * as i10 from "@angular/material/card";
15
+ import * as i11 from "@angular/flex-layout/extended";
16
+ import * as i12 from "ngx-infinite-scroll";
17
+ import * as i13 from "@angular/material/progress-bar";
18
+ /**
19
+ * Component used to view a set of roles
20
+ *
21
+ * @author Joshua Kissoon
22
+ * @since 20160818
23
+ */
24
+ export class RolesViewAllComponent {
25
+ constructor(http, route, credentialsService, userConfigService, dialog, currentUserService) {
26
+ this.http = http;
27
+ this.route = route;
28
+ this.credentialsService = credentialsService;
29
+ this.userConfigService = userConfigService;
30
+ this.dialog = dialog;
31
+ this.currentUserService = currentUserService;
32
+ this.roles = [];
33
+ this.displayedColumns = [
34
+ 'index',
35
+ 'label',
36
+ 'description',
37
+ 'module',
38
+ 'users',
39
+ 'permissions',
40
+ 'actions'
41
+ ];
42
+ this.totalItems = 0;
43
+ this.currentPage = 1;
44
+ this.isWorking = false;
45
+ this.moduleCode = null;
46
+ this.config = this.userConfigService.getConfig();
47
+ }
48
+ get isAdminUser() {
49
+ return (this.credentialsService.credentials?.user?.user_type_id === 1);
50
+ }
51
+ ngOnInit() {
52
+ this.route.params.subscribe(params => {
53
+ if (params.module_code !== undefined) {
54
+ this.moduleCode = params.module_code;
55
+ }
56
+ this.loadData();
57
+ });
58
+ if (this.isAdminUser) {
59
+ this.displayedColumns = [
60
+ 'index',
61
+ 'label',
62
+ 'description',
63
+ 'module',
64
+ 'editable',
65
+ 'is_global',
66
+ 'users',
67
+ 'actions',
68
+ 'permissions'
69
+ ];
70
+ }
71
+ if (!(this.config?.roleConfig?.showModuleSelectorOnForm)) {
72
+ this.displayedColumns = this.displayedColumns.filter(x => x !== 'module');
73
+ }
74
+ }
75
+ loadData() {
76
+ this.isWorking = true;
77
+ const filters = {
78
+ withCount: 'permissions'
79
+ };
80
+ if (this.moduleCode) {
81
+ filters.module_code = this.moduleCode;
82
+ }
83
+ if (this.clientId) {
84
+ filters.client_id = this.clientId;
85
+ }
86
+ this.http.get('api/roles', { params: filters }).toPromise().then((res) => {
87
+ this.isWorking = false;
88
+ this.totalItems = res.total;
89
+ this.roles = this.roles.concat(res.data);
90
+ }, () => {
91
+ this.isWorking = false;
92
+ });
93
+ }
94
+ reload() {
95
+ this.roles = [];
96
+ this.currentPage = 1;
97
+ if (!this.isWorking) {
98
+ this.loadData();
99
+ }
100
+ }
101
+ onScroll() {
102
+ if (!this.isWorking && this.totalItems > this.roles.length) {
103
+ this.currentPage += 1;
104
+ this.loadData();
105
+ }
106
+ }
107
+ createOrModifyRole(role) {
108
+ const dialogRef = this.dialog.open(RoleFormComponent, {
109
+ width: '400px',
110
+ data: {
111
+ role,
112
+ client_id: this.clientId,
113
+ module_code: this.moduleCode
114
+ }
115
+ });
116
+ dialogRef.afterClosed().subscribe(result => {
117
+ if (result) {
118
+ this.reload();
119
+ }
120
+ });
121
+ }
122
+ }
123
+ RolesViewAllComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: RolesViewAllComponent, deps: [{ token: i1.HttpService }, { token: i2.ActivatedRoute }, { token: i1.CredentialsService }, { token: i3.UserConfigService }, { token: i4.MatDialog }, { token: i5.CurrentUserService }], target: i0.ɵɵFactoryTarget.Component });
124
+ RolesViewAllComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: RolesViewAllComponent, selector: "roles-view-all", inputs: { clientId: "clientId" }, ngImport: i0, template: "<section class=\"col-sm-12 my-4\">\n <h3 class=\"page-title text-center\">\n Manage Roles\n <button mat-raised-button color=\"primary\" (click)=\"createOrModifyRole()\" class=\"mr-1\"\n *ngIf=\"!config.roleConfig.disableAddRole\">\n <mat-icon>add</mat-icon>\n New Role\n </button>\n\n <button mat-raised-button type=\"button\" [routerLink]=\"['../users']\" *ngIf=\"!config.roleConfig.disableUsers\"\n class=\"mr-1\">\n <mat-icon>people</mat-icon>\n Users\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../role-permissions']\"\n *ngIf=\"!config.roleConfig.disablePermissions\" class=\"mr-1\">\n <mat-icon>lock</mat-icon>\n Role Permissions\n </button>\n </h3>\n\n <mat-card class=\"mt-2 p-0\">\n <mat-card-content>\n <table mat-table [dataSource]=\"roles\"\n class=\"w-100\"\n infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\"\n aria-describedby=\"Roles\">\n\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let element; let i = index\"> {{ i+1 }} </td>\n </ng-container>\n\n <!-- Label Column -->\n <ng-container matColumnDef=\"label\">\n <th mat-header-cell *matHeaderCellDef> Label </th>\n <td mat-cell *matCellDef=\"let element\">\n <p class=\"mb-0\">{{element?.label}}</p>\n <span class=\"badge\"\n [ngClass]=\"{'badge-primary':element?.is_global, 'badge-secondary': !element?.is_global}\">\n {{element?.is_global ? 'App role' : 'Custom role'}}\n </span>\n </td>\n </ng-container>\n\n <!-- Description Column -->\n <ng-container matColumnDef=\"description\">\n <th mat-header-cell *matHeaderCellDef> Description </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.description }} </td>\n </ng-container>\n\n <!-- Module Column -->\n <ng-container matColumnDef=\"module\">\n <th mat-header-cell *matHeaderCellDef> Module </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.module?.name}} </td>\n </ng-container>\n\n <!-- Editable Column -->\n <ng-container matColumnDef=\"editable\">\n <th mat-header-cell *matHeaderCellDef> Editable </th>\n <td mat-cell *matCellDef=\"let element\">\n <span *ngIf=\"element?.is_editable\" class=\"btn btn-success btn-xs\">Yes</span>\n <span *ngIf=\"!element?.is_editable\" class=\"btn btn-danger btn-xs\">No</span>\n </td>\n </ng-container>\n\n <!-- GLobal Column -->\n <ng-container matColumnDef=\"is_global\">\n <th mat-header-cell *matHeaderCellDef> Global </th>\n <td mat-cell *matCellDef=\"let element\">\n <span *ngIf=\"element?.is_global\" class=\"btn btn-success btn-xs\">Yes</span>\n <span *ngIf=\"!element?.is_global\" class=\"btn btn-danger btn-xs\">No</span>\n </td>\n </ng-container>\n\n <!-- Users Column -->\n <ng-container matColumnDef=\"users\">\n <th mat-header-cell *matHeaderCellDef> # Users </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.role_users_count}} </td>\n </ng-container>\n\n <!-- Permissions Column -->\n <ng-container matColumnDef=\"permissions\">\n <th mat-header-cell *matHeaderCellDef> Permissions </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.permissions_count}} </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let role\" class=\"text-muted\">\n <button mat-icon-button type=\"button\" [routerLink]=\"['../roles/', role?.id]\">\n <mat-icon>remove_red_eye</mat-icon>\n </button>\n <button mat-icon-button\n *ngIf=\"(isAdminUser || role.is_editable) && currentUserService.hasPermission('role_update')\"\n (click)=\"createOrModifyRole(role)\">\n <mat-icon>edit</mat-icon>\n </button>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n </mat-card-content>\n </mat-card>\n\n</section>\n", dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", 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"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i9.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i9.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i9.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i9.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i9.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i9.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i9.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i9.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i9.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i10.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i10.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "directive", type: i11.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: i12.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "component", type: i13.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }] });
125
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: RolesViewAllComponent, decorators: [{
126
+ type: Component,
127
+ args: [{ selector: 'roles-view-all', template: "<section class=\"col-sm-12 my-4\">\n <h3 class=\"page-title text-center\">\n Manage Roles\n <button mat-raised-button color=\"primary\" (click)=\"createOrModifyRole()\" class=\"mr-1\"\n *ngIf=\"!config.roleConfig.disableAddRole\">\n <mat-icon>add</mat-icon>\n New Role\n </button>\n\n <button mat-raised-button type=\"button\" [routerLink]=\"['../users']\" *ngIf=\"!config.roleConfig.disableUsers\"\n class=\"mr-1\">\n <mat-icon>people</mat-icon>\n Users\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../role-permissions']\"\n *ngIf=\"!config.roleConfig.disablePermissions\" class=\"mr-1\">\n <mat-icon>lock</mat-icon>\n Role Permissions\n </button>\n </h3>\n\n <mat-card class=\"mt-2 p-0\">\n <mat-card-content>\n <table mat-table [dataSource]=\"roles\"\n class=\"w-100\"\n infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\"\n aria-describedby=\"Roles\">\n\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let element; let i = index\"> {{ i+1 }} </td>\n </ng-container>\n\n <!-- Label Column -->\n <ng-container matColumnDef=\"label\">\n <th mat-header-cell *matHeaderCellDef> Label </th>\n <td mat-cell *matCellDef=\"let element\">\n <p class=\"mb-0\">{{element?.label}}</p>\n <span class=\"badge\"\n [ngClass]=\"{'badge-primary':element?.is_global, 'badge-secondary': !element?.is_global}\">\n {{element?.is_global ? 'App role' : 'Custom role'}}\n </span>\n </td>\n </ng-container>\n\n <!-- Description Column -->\n <ng-container matColumnDef=\"description\">\n <th mat-header-cell *matHeaderCellDef> Description </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.description }} </td>\n </ng-container>\n\n <!-- Module Column -->\n <ng-container matColumnDef=\"module\">\n <th mat-header-cell *matHeaderCellDef> Module </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.module?.name}} </td>\n </ng-container>\n\n <!-- Editable Column -->\n <ng-container matColumnDef=\"editable\">\n <th mat-header-cell *matHeaderCellDef> Editable </th>\n <td mat-cell *matCellDef=\"let element\">\n <span *ngIf=\"element?.is_editable\" class=\"btn btn-success btn-xs\">Yes</span>\n <span *ngIf=\"!element?.is_editable\" class=\"btn btn-danger btn-xs\">No</span>\n </td>\n </ng-container>\n\n <!-- GLobal Column -->\n <ng-container matColumnDef=\"is_global\">\n <th mat-header-cell *matHeaderCellDef> Global </th>\n <td mat-cell *matCellDef=\"let element\">\n <span *ngIf=\"element?.is_global\" class=\"btn btn-success btn-xs\">Yes</span>\n <span *ngIf=\"!element?.is_global\" class=\"btn btn-danger btn-xs\">No</span>\n </td>\n </ng-container>\n\n <!-- Users Column -->\n <ng-container matColumnDef=\"users\">\n <th mat-header-cell *matHeaderCellDef> # Users </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.role_users_count}} </td>\n </ng-container>\n\n <!-- Permissions Column -->\n <ng-container matColumnDef=\"permissions\">\n <th mat-header-cell *matHeaderCellDef> Permissions </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.permissions_count}} </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let role\" class=\"text-muted\">\n <button mat-icon-button type=\"button\" [routerLink]=\"['../roles/', role?.id]\">\n <mat-icon>remove_red_eye</mat-icon>\n </button>\n <button mat-icon-button\n *ngIf=\"(isAdminUser || role.is_editable) && currentUserService.hasPermission('role_update')\"\n (click)=\"createOrModifyRole(role)\">\n <mat-icon>edit</mat-icon>\n </button>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n </mat-card-content>\n </mat-card>\n\n</section>\n" }]
128
+ }], ctorParameters: function () { return [{ type: i1.HttpService }, { type: i2.ActivatedRoute }, { type: i1.CredentialsService }, { type: i3.UserConfigService }, { type: i4.MatDialog }, { type: i5.CurrentUserService }]; }, propDecorators: { clientId: [{
129
+ type: Input
130
+ }] } });
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZXMtdmlldy1hbGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9yb2xlL3JvbGVzLXZpZXctYWxsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvcm9sZS9yb2xlcy12aWV3LWFsbC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVDQUF1QztBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU96RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBSTFEOzs7OztHQUtHO0FBS0gsTUFBTSxPQUFPLHFCQUFxQjtJQWtCaEMsWUFDVSxJQUFpQixFQUNqQixLQUFxQixFQUNyQixrQkFBc0MsRUFDdkMsaUJBQW9DLEVBQ25DLE1BQWlCLEVBQ2xCLGtCQUFzQztRQUxyQyxTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdkMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNuQyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2xCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUF2Qi9DLFVBQUssR0FBVyxFQUFFLENBQUM7UUFFbkIscUJBQWdCLEdBQWE7WUFDM0IsT0FBTztZQUNQLE9BQU87WUFDUCxhQUFhO1lBQ2IsUUFBUTtZQUNSLE9BQU87WUFDUCxhQUFhO1lBQ2IsU0FBUztTQUNWLENBQUM7UUFDRixlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFDaEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQVloQixJQUFJLENBQUMsVUFB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RyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUNwRCxLQUFLLEVBQUUsT0FBTztZQUNkLElBQUksRUFBRTtnQkFDSixJQUFJO2dCQUNKLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUTtnQkFDeEIsV0FBVyxFQUFFLElBQUksQ0FBQyxVQUFVO2FBQzdCO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN6QyxJQUFJLE1BQU0sRUFBRTtnQkFDVixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7YUFDZjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7a0hBakhVLHFCQUFxQjtzR0FBckIscUJBQXFCLHdGQ3RCbEMscXFKQWlIQTsyRkQzRmEscUJBQXFCO2tCQUpqQyxTQUFTOytCQUNFLGdCQUFnQjt5UEFrQmpCLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiB0c2xpbnQ6ZGlzYWJsZTpjb21wb25lbnQtc2VsZWN0b3IgKi9cbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBSb2xlIH0gZnJvbSAnLi9yb2xlLm1vZGVsJztcbmltcG9ydCB7IE11bHRpVXNlckNvbmZpZyB9IGZyb20gJy4uL3VzZXItY29uZmlnJztcbmltcG9ydCB7IFVzZXJDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vdXNlci1jb25maWcnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IFJvbGVGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9yb2xlLWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IENyZWRlbnRpYWxzU2VydmljZSwgSHR0cFNlcnZpY2UgfSBmcm9tICcuLi9jb3JlJztcbmltcG9ydCB7IEN1cnJlbnRVc2VyU2VydmljZSB9IGZyb20gJy4uL3VzZXInO1xuXG4vKipcbiAqIENvbXBvbmVudCB1c2VkIHRvIHZpZXcgYSBzZXQgb2Ygcm9sZXNcbiAqXG4gKiBAYXV0aG9yIEpvc2h1YSBLaXNzb29uXG4gKiBAc2luY2UgMjAxNjA4MThcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncm9sZXMtdmlldy1hbGwnLFxuICB0ZW1wbGF0ZVVybDogJy4vcm9sZXMtdmlldy1hbGwuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFJvbGVzVmlld0FsbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHJvbGVzOiBSb2xlW10gPSBbXTtcbiAgbW9kdWxlQ29kZTogc3RyaW5nO1xuICBkaXNwbGF5ZWRDb2x1bW5zOiBzdHJpbmdbXSA9IFtcbiAgICAnaW5kZXgnLFxuICAgICdsYWJlbCcsXG4gICAgJ2Rlc2NyaXB0aW9uJyxcbiAgICAnbW9kdWxlJyxcbiAgICAndXNlcnMnLFxuICAgICdwZXJtaXNzaW9ucycsXG4gICAgJ2FjdGlvbnMnXG4gIF07XG4gIHRvdGFsSXRlbXMgPSAwO1xuICBjdXJyZW50UGFnZSA9IDE7XG4gIGlzV29ya2luZyA9IGZhbHNlO1xuICBASW5wdXQoKSBjbGllbnRJZDogbnVtYmVyO1xuICBjb25maWc6IE11bHRpVXNlckNvbmZpZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgY3JlZGVudGlhbHNTZXJ2aWNlOiBDcmVkZW50aWFsc1NlcnZpY2UsXG4gICAgcHVibGljIHVzZXJDb25maWdTZXJ2aWNlOiBVc2VyQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHB1YmxpYyBjdXJyZW50VXNlclNlcnZpY2U6IEN1cnJlbnRVc2VyU2VydmljZVxuICApIHtcbiAgICB0aGlzLm1vZHVsZUNvZGUgPSBudWxsO1xuICAgIHRoaXMuY29uZmlnID0gdGhpcy51c2VyQ29uZmlnU2VydmljZS5nZXRDb25maWcoKTtcbiAgfVxuXG4gIGdldCBpc0FkbWluVXNlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMuY3JlZGVudGlhbHNTZXJ2aWNlLmNyZWRlbnRpYWxzPy51c2VyPy51c2VyX3R5cGVfaWQgPT09IDEpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XG4gICAgICBpZiAocGFyYW1zLm1vZHVsZV9jb2RlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5tb2R1bGVDb2RlID0gcGFyYW1zLm1vZHVsZV9jb2RlO1xuICAgICAgfVxuICAgICAgdGhpcy5sb2FkRGF0YSgpO1xuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuaXNBZG1pblVzZXIpIHtcbiAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IFtcbiAgICAgICAgJ2luZGV4JyxcbiAgICAgICAgJ2xhYmVsJyxcbiAgICAgICAgJ2Rlc2NyaXB0aW9uJyxcbiAgICAgICAgJ21vZHVsZScsXG4gICAgICAgICdlZGl0YWJsZScsXG4gICAgICAgICdpc19nbG9iYWwnLFxuICAgICAgICAndXNlcnMnLFxuICAgICAgICAnYWN0aW9ucycsXG4gICAgICAgICdwZXJtaXNzaW9ucydcbiAgICAgIF07XG4gICAgfVxuXG4gICAgaWYgKCEodGhpcy5jb25maWc/LnJvbGVDb25maWc/LnNob3dNb2R1bGVTZWxlY3Rvck9uRm9ybSkpIHtcbiAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IHRoaXMuZGlzcGxheWVkQ29sdW1ucy5maWx0ZXIoeCA9PiB4ICE9PSAnbW9kdWxlJyk7XG4gICAgfVxuICB9XG5cbiAgbG9hZERhdGEoKTogdm9pZCB7XG4gICAgdGhpcy5pc1dvcmtpbmcgPSB0cnVlO1xuICAgIGNvbnN0IGZpbHRlcnM6IGFueSA9IHtcbiAgICAgIHdpdGhDb3VudDogJ3Blcm1pc3Npb25zJ1xuICAgIH07XG4gICAgaWYgKHRoaXMubW9kdWxlQ29kZSkge1xuICAgICAgZmlsdGVycy5tb2R1bGVfY29kZSA9IHRoaXMubW9kdWxlQ29kZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY2xpZW50SWQpIHtcbiAgICAgIGZpbHRlcnMuY2xpZW50X2lkID0gdGhpcy5jbGllbnRJZDtcbiAgICB9XG4gICAgdGhpcy5odHRwLmdldCgnYXBpL3JvbGVzJywgeyBwYXJhbXM6IGZpbHRlcnMgfSkudG9Qcm9taXNlKCkudGhlbihcbiAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmlzV29ya2luZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnRvdGFsSXRlbXMgPSByZXMudG90YWw7XG4gICAgICAgIHRoaXMucm9sZXMgPSB0aGlzLnJvbGVzLmNvbmNhdChyZXMuZGF0YSk7XG4gICAgICB9LCAoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNXb3JraW5nID0gZmFsc2U7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHJlbG9hZCgpOiB2b2lkIHtcbiAgICB0aGlzLnJvbGVzID0gW107XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XG4gICAgaWYgKCF0aGlzLmlzV29ya2luZykge1xuICAgICAgdGhpcy5sb2FkRGF0YSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uU2Nyb2xsKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc1dvcmtpbmcgJiYgdGhpcy50b3RhbEl0ZW1zID4gdGhpcy5yb2xlcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgKz0gMTtcbiAgICAgIHRoaXMubG9hZERhdGEoKTtcbiAgICB9XG4gIH1cblxuICBjcmVhdGVPck1vZGlmeVJvbGUocm9sZT86IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oUm9sZUZvcm1Db21wb25lbnQsIHtcbiAgICAgIHdpZHRoOiAnNDAwcHgnLFxuICAgICAgZGF0YToge1xuICAgICAgICByb2xlLFxuICAgICAgICBjbGllbnRfaWQ6IHRoaXMuY2xpZW50SWQsXG4gICAgICAgIG1vZHVsZV9jb2RlOiB0aGlzLm1vZHVsZUNvZGVcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICB0aGlzLnJlbG9hZCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8c2VjdGlvbiBjbGFzcz1cImNvbC1zbS0xMiBteS00XCI+XG4gIDxoMyBjbGFzcz1cInBhZ2UtdGl0bGUgdGV4dC1jZW50ZXJcIj5cbiAgICBNYW5hZ2UgUm9sZXNcbiAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJjcmVhdGVPck1vZGlmeVJvbGUoKVwiIGNsYXNzPVwibXItMVwiXG4gICAgICAqbmdJZj1cIiFjb25maWcucm9sZUNvbmZpZy5kaXNhYmxlQWRkUm9sZVwiPlxuICAgICAgPG1hdC1pY29uPmFkZDwvbWF0LWljb24+XG4gICAgICBOZXcgUm9sZVxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW3JvdXRlckxpbmtdPVwiWycuLi91c2VycyddXCIgKm5nSWY9XCIhY29uZmlnLnJvbGVDb25maWcuZGlzYWJsZVVzZXJzXCJcbiAgICAgIGNsYXNzPVwibXItMVwiPlxuICAgICAgPG1hdC1pY29uPnBlb3BsZTwvbWF0LWljb24+XG4gICAgICBVc2Vyc1xuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIFtyb3V0ZXJMaW5rXT1cIlsnLi4vcm9sZS1wZXJtaXNzaW9ucyddXCJcbiAgICAgICpuZ0lmPVwiIWNvbmZpZy5yb2xlQ29uZmlnLmRpc2FibGVQZXJtaXNzaW9uc1wiIGNsYXNzPVwibXItMVwiPlxuICAgICAgPG1hdC1pY29uPmxvY2s8L21hdC1pY29uPlxuICAgICAgUm9sZSBQZXJtaXNzaW9uc1xuICAgIDwvYnV0dG9uPlxuICA8L2gzPlxuXG4gIDxtYXQtY2FyZCBjbGFzcz1cIm10LTIgcC0wXCI+XG4gICAgPG1hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICA8dGFibGUgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cInJvbGVzXCJcbiAgICAgICAgICAgICBjbGFzcz1cInctMTAwXCJcbiAgICAgICAgICAgICBpbmZpbml0ZVNjcm9sbCBbaW5maW5pdGVTY3JvbGxEaXN0YW5jZV09XCIyXCJcbiAgICAgICAgICAgICBbaW5maW5pdGVTY3JvbGxUaHJvdHRsZV09XCI1MFwiXG4gICAgICAgICAgICAgKHNjcm9sbGVkKT1cIm9uU2Nyb2xsKClcIlxuICAgICAgICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJSb2xlc1wiPlxuXG4gICAgICAgIDwhLS0gSW5kZXggQ29sdW1uIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImluZGV4XCI+XG4gICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gIyA8L3RoPlxuICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50OyBsZXQgaSA9IGluZGV4XCI+IHt7IGkrMSB9fSA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIExhYmVsIENvbHVtbiAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJsYWJlbFwiPlxuICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+IExhYmVsIDwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwibWItMFwiPnt7ZWxlbWVudD8ubGFiZWx9fTwvcD5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2VcIlxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydiYWRnZS1wcmltYXJ5JzplbGVtZW50Py5pc19nbG9iYWwsICdiYWRnZS1zZWNvbmRhcnknOiAhZWxlbWVudD8uaXNfZ2xvYmFsfVwiPlxuICAgICAgICAgICAgICB7e2VsZW1lbnQ/LmlzX2dsb2JhbCA/ICdBcHAgcm9sZScgOiAnQ3VzdG9tIHJvbGUnfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIERlc2NyaXB0aW9uIENvbHVtbiAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJkZXNjcmlwdGlvblwiPlxuICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+IERlc2NyaXB0aW9uIDwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj4ge3tlbGVtZW50Py5kZXNjcmlwdGlvbiB9fSA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIE1vZHVsZSBDb2x1bW4gLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwibW9kdWxlXCI+XG4gICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gTW9kdWxlIDwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj4ge3tlbGVtZW50Py5tb2R1bGU/Lm5hbWV9fSA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIEVkaXRhYmxlIENvbHVtbiAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJlZGl0YWJsZVwiPlxuICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+IEVkaXRhYmxlIDwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZWxlbWVudD8uaXNfZWRpdGFibGVcIiBjbGFzcz1cImJ0biBidG4tc3VjY2VzcyBidG4teHNcIj5ZZXM8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFlbGVtZW50Py5pc19lZGl0YWJsZVwiIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXIgYnRuLXhzXCI+Tm88L3NwYW4+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBHTG9iYWwgQ29sdW1uIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImlzX2dsb2JhbFwiPlxuICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+IEdsb2JhbCA8L3RoPlxuICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImVsZW1lbnQ/LmlzX2dsb2JhbFwiIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzIGJ0bi14c1wiPlllczwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWVsZW1lbnQ/LmlzX2dsb2JhbFwiIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXIgYnRuLXhzXCI+Tm88L3NwYW4+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBVc2VycyBDb2x1bW4gLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwidXNlcnNcIj5cbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiAjIFVzZXJzIDwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj4ge3tlbGVtZW50Py5yb2xlX3VzZXJzX2NvdW50fX0gPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBQZXJtaXNzaW9ucyBDb2x1bW4gLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwicGVybWlzc2lvbnNcIj5cbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBQZXJtaXNzaW9ucyA8L3RoPlxuICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+IHt7ZWxlbWVudD8ucGVybWlzc2lvbnNfY291bnR9fSA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIEFjdGlvbnMgQ29sdW1uIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImFjdGlvbnNcIj5cbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBBY3Rpb25zIDwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvbGVcIiBjbGFzcz1cInRleHQtbXV0ZWRcIj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiBbcm91dGVyTGlua109XCJbJy4uL3JvbGVzLycsIHJvbGU/LmlkXVwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24+cmVtb3ZlX3JlZF9leWU8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAqbmdJZj1cIihpc0FkbWluVXNlciB8fCByb2xlLmlzX2VkaXRhYmxlKSAmJiBjdXJyZW50VXNlclNlcnZpY2UuaGFzUGVybWlzc2lvbigncm9sZV91cGRhdGUnKVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjcmVhdGVPck1vZGlmeVJvbGUocm9sZSlcIj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uPmVkaXQ8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zXCI+PC90cj5cbiAgICAgICAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCI+PC90cj5cbiAgICAgIDwvdGFibGU+XG4gICAgICA8bWF0LXByb2dyZXNzLWJhciAqbmdJZj1cImlzV29ya2luZ1wiIG1vZGU9XCJpbmRldGVybWluYXRlXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxuICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgPC9tYXQtY2FyZD5cblxuPC9zZWN0aW9uPlxuIl19
@@ -0,0 +1,3 @@
1
+ export * from './signup.component';
2
+ export * from './signup-routing.module';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3NpZ251cC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMseUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NpZ251cC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zaWdudXAtcm91dGluZy5tb2R1bGUnO1xuIl19