tin-spa 10.0.0 → 14.3.11

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 (204) hide show
  1. package/README.md +24 -24
  2. package/esm2020/lib/classes/Classes.mjs +265 -0
  3. package/esm2020/lib/classes/TinCore.mjs +401 -0
  4. package/esm2020/lib/components/accounts/accountDialog.component.mjs +56 -0
  5. package/esm2020/lib/components/accounts/accounts.component.mjs +70 -0
  6. package/esm2020/lib/components/activity/activity.component.mjs +24 -0
  7. package/esm2020/lib/components/alert/alert.component.mjs +29 -0
  8. package/esm2020/lib/components/attach/attach.component.mjs +86 -0
  9. package/esm2020/lib/components/bug/bug.component.mjs +14 -0
  10. package/esm2020/lib/components/change-password/change-password.component.mjs +92 -0
  11. package/esm2020/lib/components/check/check.component.mjs +67 -0
  12. package/esm2020/lib/components/chips/chips.component.mjs +58 -0
  13. package/esm2020/lib/components/create-account/create-account.component.mjs +109 -0
  14. package/esm2020/lib/components/customers/customers.component.mjs +60 -0
  15. package/esm2020/lib/components/date/date.component.mjs +101 -0
  16. package/esm2020/lib/components/datetime/datetime.component.mjs +52 -0
  17. package/esm2020/lib/components/departments/departments.component.mjs +24 -0
  18. package/esm2020/lib/components/employees/employees.component.mjs +21 -0
  19. package/esm2020/lib/components/filter/filter.component.mjs +54 -0
  20. package/esm2020/lib/components/form/form.component.mjs +191 -0
  21. package/esm2020/lib/components/grades/grades.component.mjs +14 -0
  22. package/esm2020/lib/components/inventory/inventory.component.mjs +99 -0
  23. package/esm2020/lib/components/inventory/quantityDialog.component.mjs +53 -0
  24. package/esm2020/lib/components/invitations/invitations.component.mjs +14 -0
  25. package/esm2020/lib/components/invitations-table/invitations-table.component.mjs +70 -0
  26. package/esm2020/lib/components/label/label.component.mjs +25 -0
  27. package/esm2020/lib/components/list-dialog/list-dialog.component.mjs +68 -0
  28. package/esm2020/lib/components/loader/loader.component.mjs +25 -0
  29. package/esm2020/lib/components/login/login.component.mjs +127 -0
  30. package/esm2020/lib/components/logs/logs.component.mjs +37 -0
  31. package/esm2020/lib/components/membership/membership.component.mjs +48 -0
  32. package/esm2020/lib/components/message/messageDialog.component.mjs +33 -0
  33. package/esm2020/lib/components/money/currency-input-mask.directive.mjs +185 -0
  34. package/esm2020/lib/components/money/currency-input-mask.module.mjs +28 -0
  35. package/esm2020/lib/components/money/money.component.mjs +120 -0
  36. package/esm2020/lib/components/nav-menu/nav-menu.component.mjs +84 -0
  37. package/esm2020/lib/components/notifications/notifications.component.mjs +14 -0
  38. package/esm2020/lib/components/number/number.component.mjs +116 -0
  39. package/esm2020/lib/components/option/option.component.mjs +67 -0
  40. package/esm2020/lib/components/plans/plans.component.mjs +47 -0
  41. package/esm2020/lib/components/positions/positions.component.mjs +21 -0
  42. package/esm2020/lib/components/profile/profile.component.mjs +92 -0
  43. package/esm2020/lib/components/recover-account/recover-account.component.mjs +46 -0
  44. package/esm2020/lib/components/roles/addRoleDialog.component.mjs +60 -0
  45. package/esm2020/lib/components/roles/roles.component.mjs +91 -0
  46. package/esm2020/lib/components/search/search.component.mjs +31 -0
  47. package/esm2020/lib/components/select/select.component.mjs +138 -0
  48. package/esm2020/lib/components/settings/settings.component.mjs +62 -0
  49. package/esm2020/lib/components/signup/signup.component.mjs +50 -0
  50. package/esm2020/lib/components/steps/steps.component.mjs +90 -0
  51. package/esm2020/lib/components/suppliers/suppliers.component.mjs +50 -0
  52. package/esm2020/lib/components/table/detailsDialog.component.mjs +232 -0
  53. package/esm2020/lib/components/table/table.component.mjs +406 -0
  54. package/esm2020/lib/components/table-action/table-action.component.mjs +46 -0
  55. package/esm2020/lib/components/table-header/table-header.component.mjs +76 -0
  56. package/esm2020/lib/components/table-internal/detailsDialog-internal.component.mjs +226 -0
  57. package/esm2020/lib/components/table-internal/table-internal.component.mjs +406 -0
  58. package/esm2020/lib/components/table-row/table-row.component.mjs +58 -0
  59. package/esm2020/lib/components/tasks/tasks.component.mjs +86 -0
  60. package/esm2020/lib/components/tenant-settings/inviteDialog.component.mjs +60 -0
  61. package/esm2020/lib/components/tenant-settings/tenant-settings.component.mjs +155 -0
  62. package/esm2020/lib/components/tenants/tenants.component.mjs +47 -0
  63. package/esm2020/lib/components/text/text.component.mjs +181 -0
  64. package/esm2020/lib/components/tiles/tiles.component.mjs +81 -0
  65. package/esm2020/lib/components/tin-spa.component.mjs +19 -0
  66. package/esm2020/lib/components/transactions/transactDialog.component.mjs +80 -0
  67. package/esm2020/lib/components/transactions/transactions.component.mjs +101 -0
  68. package/esm2020/lib/components/users/users.component.mjs +118 -0
  69. package/esm2020/lib/components/viewer/viewer.component.mjs +79 -0
  70. package/esm2020/lib/components/viewer/viewerDialog.component.mjs +88 -0
  71. package/esm2020/lib/components/welcome/welcome.component.mjs +86 -0
  72. package/esm2020/lib/modules/admin/admin-routing.module.mjs +61 -0
  73. package/esm2020/lib/modules/admin/admin.module.mjs +26 -0
  74. package/esm2020/lib/modules/index/index-routing.module.mjs +27 -0
  75. package/esm2020/lib/modules/index/index.module.mjs +26 -0
  76. package/esm2020/lib/modules/spa-admin.module.mjs +71 -0
  77. package/esm2020/lib/modules/spa-index.module.mjs +54 -0
  78. package/esm2020/lib/modules/spa-mat.module.mjs +84 -0
  79. package/esm2020/lib/modules/spa-user.module.mjs +47 -0
  80. package/esm2020/lib/modules/user/user-routing.module.mjs +23 -0
  81. package/esm2020/lib/modules/user/user.module.mjs +26 -0
  82. package/esm2020/lib/pipes/camelToWords.pipe.mjs +17 -0
  83. package/esm2020/lib/services/auth.service.mjs +174 -0
  84. package/esm2020/lib/services/button.service.mjs +102 -0
  85. package/esm2020/lib/services/condition.service.mjs +32 -0
  86. package/esm2020/lib/services/datalib.service.mjs +387 -0
  87. package/esm2020/lib/services/dialog.service.mjs +81 -0
  88. package/esm2020/lib/services/export.service.mjs +16 -0
  89. package/esm2020/lib/services/http.service.mjs +79 -0
  90. package/esm2020/lib/services/loader-interceptor.service.mjs +86 -0
  91. package/esm2020/lib/services/loader.service.mjs +17 -0
  92. package/esm2020/lib/services/log.service.mjs +77 -0
  93. package/esm2020/lib/services/message.service.mjs +59 -0
  94. package/esm2020/lib/services/storage.service.mjs +34 -0
  95. package/esm2020/lib/services/table-config.service.mjs +30 -0
  96. package/esm2020/lib/services/tin-spa.service.mjs +14 -0
  97. package/esm2020/lib/tin-spa.module.mjs +183 -0
  98. package/esm2020/public-api.mjs +80 -0
  99. package/esm2020/tin-spa.mjs +5 -0
  100. package/fesm2015/tin-spa.mjs +7454 -0
  101. package/fesm2015/tin-spa.mjs.map +1 -0
  102. package/fesm2020/tin-spa.mjs +7410 -0
  103. package/fesm2020/tin-spa.mjs.map +1 -0
  104. package/index.d.ts +5 -3408
  105. package/lib/classes/Classes.d.ts +431 -0
  106. package/lib/classes/TinCore.d.ts +48 -0
  107. package/lib/components/accounts/accountDialog.component.d.ts +27 -0
  108. package/lib/components/accounts/accounts.component.d.ts +25 -0
  109. package/lib/components/activity/activity.component.d.ts +11 -0
  110. package/lib/components/alert/alert.component.d.ts +14 -0
  111. package/lib/components/attach/attach.component.d.ts +23 -0
  112. package/lib/components/bug/bug.component.d.ts +8 -0
  113. package/lib/components/change-password/change-password.component.d.ts +27 -0
  114. package/lib/components/check/check.component.d.ts +24 -0
  115. package/lib/components/chips/chips.component.d.ts +18 -0
  116. package/lib/components/create-account/create-account.component.d.ts +33 -0
  117. package/lib/components/customers/customers.component.d.ts +18 -0
  118. package/lib/components/date/date.component.d.ts +29 -0
  119. package/lib/components/datetime/datetime.component.d.ts +18 -0
  120. package/lib/components/departments/departments.component.d.ts +14 -0
  121. package/lib/components/employees/employees.component.d.ts +12 -0
  122. package/lib/components/filter/filter.component.d.ts +19 -0
  123. package/lib/components/form/form.component.d.ts +36 -0
  124. package/lib/components/grades/grades.component.d.ts +8 -0
  125. package/lib/components/inventory/inventory.component.d.ts +25 -0
  126. package/lib/components/inventory/quantityDialog.component.d.ts +23 -0
  127. package/lib/components/invitations/invitations.component.d.ts +8 -0
  128. package/lib/components/invitations-table/invitations-table.component.d.ts +19 -0
  129. package/lib/components/label/label.component.d.ts +11 -0
  130. package/lib/components/list-dialog/list-dialog.component.d.ts +23 -0
  131. package/lib/components/loader/loader.component.d.ts +12 -0
  132. package/lib/components/login/login.component.d.ts +39 -0
  133. package/lib/components/logs/logs.component.d.ts +18 -0
  134. package/lib/components/membership/membership.component.d.ts +17 -0
  135. package/lib/components/message/messageDialog.component.d.ts +15 -0
  136. package/lib/components/money/currency-input-mask.directive.d.ts +41 -0
  137. package/lib/components/money/currency-input-mask.module.d.ts +9 -0
  138. package/lib/components/money/money.component.d.ts +33 -0
  139. package/lib/components/nav-menu/nav-menu.component.d.ts +34 -0
  140. package/lib/components/notifications/notifications.component.d.ts +8 -0
  141. package/lib/components/number/number.component.d.ts +35 -0
  142. package/lib/components/option/option.component.d.ts +23 -0
  143. package/lib/components/plans/plans.component.d.ts +17 -0
  144. package/lib/components/positions/positions.component.d.ts +12 -0
  145. package/lib/components/profile/profile.component.d.ts +34 -0
  146. package/lib/components/recover-account/recover-account.component.d.ts +18 -0
  147. package/lib/components/roles/addRoleDialog.component.d.ts +24 -0
  148. package/lib/components/roles/roles.component.d.ts +30 -0
  149. package/lib/components/search/search.component.d.ts +13 -0
  150. package/lib/components/select/select.component.d.ts +42 -0
  151. package/lib/components/settings/settings.component.d.ts +19 -0
  152. package/lib/components/signup/signup.component.d.ts +23 -0
  153. package/lib/components/steps/steps.component.d.ts +18 -0
  154. package/lib/components/suppliers/suppliers.component.d.ts +17 -0
  155. package/lib/components/table/detailsDialog.component.d.ts +64 -0
  156. package/lib/components/table/table.component.d.ts +82 -0
  157. package/lib/components/table-action/table-action.component.d.ts +22 -0
  158. package/lib/components/table-header/table-header.component.d.ts +31 -0
  159. package/lib/components/table-internal/detailsDialog-internal.component.d.ts +64 -0
  160. package/lib/components/table-internal/table-internal.component.d.ts +82 -0
  161. package/lib/components/table-row/table-row.component.d.ts +28 -0
  162. package/lib/components/tasks/tasks.component.d.ts +27 -0
  163. package/lib/components/tenant-settings/inviteDialog.component.d.ts +28 -0
  164. package/lib/components/tenant-settings/tenant-settings.component.d.ts +42 -0
  165. package/lib/components/tenants/tenants.component.d.ts +17 -0
  166. package/lib/components/text/text.component.d.ts +46 -0
  167. package/lib/components/tiles/tiles.component.d.ts +25 -0
  168. package/lib/components/tin-spa.component.d.ts +5 -0
  169. package/lib/components/transactions/transactDialog.component.d.ts +26 -0
  170. package/lib/components/transactions/transactions.component.d.ts +31 -0
  171. package/lib/components/users/users.component.d.ts +36 -0
  172. package/lib/components/viewer/viewer.component.d.ts +25 -0
  173. package/lib/components/viewer/viewerDialog.component.d.ts +22 -0
  174. package/lib/components/welcome/welcome.component.d.ts +25 -0
  175. package/lib/modules/admin/admin-routing.module.d.ts +7 -0
  176. package/lib/modules/admin/admin.module.d.ts +9 -0
  177. package/lib/modules/index/index-routing.module.d.ts +7 -0
  178. package/lib/modules/index/index.module.d.ts +9 -0
  179. package/lib/modules/spa-admin.module.d.ts +15 -0
  180. package/lib/modules/spa-index.module.d.ts +13 -0
  181. package/lib/modules/spa-mat.module.d.ts +38 -0
  182. package/lib/modules/spa-user.module.d.ts +11 -0
  183. package/lib/modules/user/user-routing.module.d.ts +7 -0
  184. package/lib/modules/user/user.module.d.ts +9 -0
  185. package/lib/pipes/camelToWords.pipe.d.ts +7 -0
  186. package/lib/services/auth.service.d.ts +61 -0
  187. package/lib/services/button.service.d.ts +27 -0
  188. package/lib/services/condition.service.d.ts +10 -0
  189. package/lib/services/datalib.service.d.ts +77 -0
  190. package/lib/services/dialog.service.d.ts +19 -0
  191. package/lib/services/export.service.d.ts +6 -0
  192. package/lib/services/http.service.d.ts +22 -0
  193. package/lib/services/loader-interceptor.service.d.ts +22 -0
  194. package/lib/services/loader.service.d.ts +8 -0
  195. package/lib/services/log.service.d.ts +19 -0
  196. package/lib/services/message.service.d.ts +16 -0
  197. package/lib/services/storage.service.d.ts +10 -0
  198. package/lib/services/table-config.service.d.ts +9 -0
  199. package/lib/services/tin-spa.service.d.ts +6 -0
  200. package/lib/tin-spa.module.d.ts +66 -0
  201. package/package.json +13 -8
  202. package/public-api.d.ts +69 -0
  203. package/fesm2022/tin-spa.mjs +0 -12474
  204. package/fesm2022/tin-spa.mjs.map +0 -1
@@ -0,0 +1,91 @@
1
+ import { AppConfig } from './../../classes/Classes';
2
+ import { Component } from "@angular/core";
3
+ import { addRoleDialog } from "./addRoleDialog.component";
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../services/http.service";
6
+ import * as i2 from "@angular/router";
7
+ import * as i3 from "../../services/auth.service";
8
+ import * as i4 from "../../services/datalib.service";
9
+ import * as i5 from "@angular/material/dialog";
10
+ import * as i6 from "../../services/message.service";
11
+ import * as i7 from "@angular/forms";
12
+ import * as i8 from "@angular/common";
13
+ import * as i9 from "@angular/material/checkbox";
14
+ import * as i10 from "@angular/material/button";
15
+ import * as i11 from "@angular/material/icon";
16
+ import * as i12 from "@angular/material/card";
17
+ import * as i13 from "@angular/material/tooltip";
18
+ export class RolesComponent {
19
+ constructor(httpService, router, authService, dataService, dialog, messageService) {
20
+ this.httpService = httpService;
21
+ this.router = router;
22
+ this.authService = authService;
23
+ this.dataService = dataService;
24
+ this.dialog = dialog;
25
+ this.messageService = messageService;
26
+ this.isProcessing = false;
27
+ this.appConfig = new AppConfig();
28
+ }
29
+ ngOnInit() {
30
+ this.authService.isAuthorised(this.dataService.capRoles.name);
31
+ this.loadRoles();
32
+ this.dataService.appConfigObserv.subscribe(x => this.appConfig = x);
33
+ }
34
+ loadRoles() {
35
+ this.dataService.GetRole("all", "").subscribe((apiResponse) => {
36
+ this.roles = apiResponse;
37
+ });
38
+ }
39
+ refresh() {
40
+ this.loadRoles();
41
+ }
42
+ addRole() {
43
+ const dialogRef = this.dialog.open(addRoleDialog, {
44
+ width: "1100px",
45
+ data: this.appConfig.capItems,
46
+ });
47
+ dialogRef.afterClosed().subscribe((result) => {
48
+ if (result == "success") {
49
+ this.loadRoles();
50
+ }
51
+ });
52
+ }
53
+ updateRole(role) {
54
+ this.messageService.confirm(`UPDATE ${role.roleName} ?`).subscribe((result) => {
55
+ if (result == "yes") {
56
+ this.dataService.PostRole(role, "edit").subscribe((apiResponse) => {
57
+ if (apiResponse.success) {
58
+ this.messageService.toast("Role Updated");
59
+ this.loadRoles();
60
+ }
61
+ else {
62
+ this.messageService.toast("Error: " + apiResponse);
63
+ }
64
+ });
65
+ }
66
+ });
67
+ }
68
+ ;
69
+ deleteRole(role) {
70
+ this.messageService.confirm(`DELETE ${role.roleName} ?`).subscribe((result) => {
71
+ if (result == "yes") {
72
+ this.dataService.PostRole(role, "delete").subscribe((apiResponse) => {
73
+ if (apiResponse.success) {
74
+ this.messageService.toast("Role Deleted");
75
+ this.loadRoles();
76
+ }
77
+ else {
78
+ this.messageService.toast("Error: " + apiResponse);
79
+ }
80
+ });
81
+ }
82
+ });
83
+ }
84
+ }
85
+ RolesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: RolesComponent, deps: [{ token: i1.HttpService }, { token: i2.Router }, { token: i3.AuthService }, { token: i4.DataServiceLib }, { token: i5.MatDialog }, { token: i6.MessageService }], target: i0.ɵɵFactoryTarget.Component });
86
+ RolesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: RolesComponent, selector: "spa-roles", ngImport: i0, template: "<h4> Roles </h4>\r\n<hr />\r\n\r\n<div class=\"container-fluid mb-5\">\r\n\r\n <div class=\"d-flex justify-content-between mb-2\">\r\n\r\n <div >\r\n <button id=\"btnNewRole\" mat-raised-button color=\"primary\" (click)=\"addRole()\">New Role</button>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-end\">\r\n <button id=\"btnRefresh\" mat-mini-fab color=\"primary\" (click)=\"refresh()\" matTooltip=\"refresh data\" matTooltipPosition=\"right\"><mat-icon class=\"refreshIcon\">refresh</mat-icon></button>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <div class=\"row mt-2 mb-1\" *ngFor=\"let role of roles\">\r\n\r\n <mat-card class=\"mat-elevation-z8\" style=\"width:100%\">\r\n\r\n <h4>{{role.roleName}}</h4>\r\n <hr />\r\n\r\n <div class=\"tin-row\" style=\" font-size:12px;\">\r\n\r\n\r\n <div class=\"tin-row\" *ngFor=\"let capItem of appConfig.capItems\">\r\n\r\n <mat-checkbox color=\"primary\" style=\"min-width: 100px;\" [(ngModel)]=\"role[capItem.name]\">{{capItem.display}}</mat-checkbox>\r\n\r\n <div class=\"tin-row\" *ngFor=\"let capSubItem of capItem.capSubItems\">\r\n\r\n <mat-checkbox color=\"primary\" style=\"min-width: 100px;\" [(ngModel)]=\"role[capSubItem.name]\">{{capSubItem.display}}</mat-checkbox>\r\n\r\n <div class=\"tin-row\" *ngFor=\"let capSubSubItem of capSubItem.capSubItems\">\r\n\r\n <mat-checkbox color=\"primary\" style=\"min-width: 100px;\" [(ngModel)]=\"role[capSubSubItem.name]\">{{capSubSubItem.display}}</mat-checkbox>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <mat-card-actions>\r\n\r\n <button mat-mini-fab color=\"primary\" (click)=\"updateRole(role)\" style=\"margin-right:10px;\">\r\n <mat-icon>done_all</mat-icon>\r\n </button>\r\n\r\n <button mat-mini-fab color=\"warn\" (click)=\"deleteRole(role)\" style=\"margin-right:10px\">\r\n <mat-icon>delete</mat-icon>\r\n </button>\r\n\r\n </mat-card-actions>\r\n\r\n </mat-card>\r\n\r\n </div>\r\n\r\n\r\n</div>\r\n\r\n", styles: [".mat-mini-fab{width:32px;height:32px}.mat-mini-fab mat-icon{font-size:16px;margin-top:-3px}.refreshIcon{font-size:22px!important;margin-top:-7px!important}\n"], dependencies: [{ kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i9.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i10.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: i11.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i12.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i12.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i13.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
87
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: RolesComponent, decorators: [{
88
+ type: Component,
89
+ args: [{ selector: "spa-roles", template: "<h4> Roles </h4>\r\n<hr />\r\n\r\n<div class=\"container-fluid mb-5\">\r\n\r\n <div class=\"d-flex justify-content-between mb-2\">\r\n\r\n <div >\r\n <button id=\"btnNewRole\" mat-raised-button color=\"primary\" (click)=\"addRole()\">New Role</button>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-end\">\r\n <button id=\"btnRefresh\" mat-mini-fab color=\"primary\" (click)=\"refresh()\" matTooltip=\"refresh data\" matTooltipPosition=\"right\"><mat-icon class=\"refreshIcon\">refresh</mat-icon></button>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <div class=\"row mt-2 mb-1\" *ngFor=\"let role of roles\">\r\n\r\n <mat-card class=\"mat-elevation-z8\" style=\"width:100%\">\r\n\r\n <h4>{{role.roleName}}</h4>\r\n <hr />\r\n\r\n <div class=\"tin-row\" style=\" font-size:12px;\">\r\n\r\n\r\n <div class=\"tin-row\" *ngFor=\"let capItem of appConfig.capItems\">\r\n\r\n <mat-checkbox color=\"primary\" style=\"min-width: 100px;\" [(ngModel)]=\"role[capItem.name]\">{{capItem.display}}</mat-checkbox>\r\n\r\n <div class=\"tin-row\" *ngFor=\"let capSubItem of capItem.capSubItems\">\r\n\r\n <mat-checkbox color=\"primary\" style=\"min-width: 100px;\" [(ngModel)]=\"role[capSubItem.name]\">{{capSubItem.display}}</mat-checkbox>\r\n\r\n <div class=\"tin-row\" *ngFor=\"let capSubSubItem of capSubItem.capSubItems\">\r\n\r\n <mat-checkbox color=\"primary\" style=\"min-width: 100px;\" [(ngModel)]=\"role[capSubSubItem.name]\">{{capSubSubItem.display}}</mat-checkbox>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <mat-card-actions>\r\n\r\n <button mat-mini-fab color=\"primary\" (click)=\"updateRole(role)\" style=\"margin-right:10px;\">\r\n <mat-icon>done_all</mat-icon>\r\n </button>\r\n\r\n <button mat-mini-fab color=\"warn\" (click)=\"deleteRole(role)\" style=\"margin-right:10px\">\r\n <mat-icon>delete</mat-icon>\r\n </button>\r\n\r\n </mat-card-actions>\r\n\r\n </mat-card>\r\n\r\n </div>\r\n\r\n\r\n</div>\r\n\r\n", styles: [".mat-mini-fab{width:32px;height:32px}.mat-mini-fab mat-icon{font-size:16px;margin-top:-3px}.refreshIcon{font-size:22px!important;margin-top:-7px!important}\n"] }]
90
+ }], ctorParameters: function () { return [{ type: i1.HttpService }, { type: i2.Router }, { type: i3.AuthService }, { type: i4.DataServiceLib }, { type: i5.MatDialog }, { type: i6.MessageService }]; } });
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvcm9sZXMvcm9sZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvcm9sZXMvcm9sZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxTQUFTLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBSXpELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBWTFELE1BQU0sT0FBTyxjQUFjO0lBQ3pCLFlBQW9CLFdBQXdCLEVBQVUsTUFBYyxFQUFVLFdBQXdCLEVBQVUsV0FBMkIsRUFBUyxNQUFpQixFQUFVLGNBQThCO1FBQXpMLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQVMsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQVE3TSxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUdyQixjQUFTLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQztJQVhxTCxDQUFDO0lBRWxOLFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBT0QsU0FBUztRQUNQLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUM1RCxJQUFJLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxPQUFPO1FBQ0wsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ2hELEtBQUssRUFBRSxRQUFRO1lBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUTtTQUM5QixDQUFDLENBQUM7UUFFSCxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDM0MsSUFBSSxNQUFNLElBQUksU0FBUyxFQUFFO2dCQUN2QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7YUFDbEI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBVTtRQUVuQixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxVQUFVLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBRTVFLElBQUksTUFBTSxJQUFJLEtBQUssRUFBRTtnQkFFbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO29CQUVoRSxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUU7d0JBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO3dCQUMxQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7cUJBQ2xCO3lCQUFNO3dCQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUMsQ0FBQztxQkFDcEQ7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7YUFFSjtRQUVILENBQUMsQ0FBQyxDQUFBO0lBR0osQ0FBQztJQUFBLENBQUM7SUFFRixVQUFVLENBQUMsSUFBVTtRQUVuQixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxVQUFVLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBRTVFLElBQUksTUFBTSxJQUFJLEtBQUssRUFBRTtnQkFFbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO29CQUNsRSxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUU7d0JBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO3dCQUMxQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7cUJBQ2xCO3lCQUFNO3dCQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUMsQ0FBQztxQkFDcEQ7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7YUFFSjtRQUVILENBQUMsQ0FBQyxDQUFBO0lBRUosQ0FBQzs7MkdBL0VVLGNBQWM7K0ZBQWQsY0FBYyxpRENqQjNCLHFtRUFvRUE7MkZEbkRhLGNBQWM7a0JBTDFCLFNBQVM7K0JBQ0UsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcENvbmZpZyB9IGZyb20gJy4vLi4vLi4vY2xhc3Nlcy9DbGFzc2VzJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQgeyBEYXRhU2VydmljZUxpYiB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9kYXRhbGliLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgUm9sZSwgQ2FwSXRlbSB9IGZyb20gXCIuLi8uLi9jbGFzc2VzL0NsYXNzZXNcIjtcclxuaW1wb3J0IHsgYWRkUm9sZURpYWxvZyB9IGZyb20gXCIuL2FkZFJvbGVEaWFsb2cuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tZXNzYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaHR0cC5zZXJ2aWNlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJzcGEtcm9sZXNcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3JvbGVzLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL3JvbGVzLmNvbXBvbmVudC5jc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSb2xlc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwU2VydmljZTogSHR0cFNlcnZpY2UsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLCBwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZUxpYiwgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLCBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5pc0F1dGhvcmlzZWQodGhpcy5kYXRhU2VydmljZS5jYXBSb2xlcy5uYW1lKTtcclxuICAgIHRoaXMubG9hZFJvbGVzKCk7XHJcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLmFwcENvbmZpZ09ic2Vydi5zdWJzY3JpYmUoeCA9PiB0aGlzLmFwcENvbmZpZyA9IHgpO1xyXG4gIH1cclxuXHJcbiAgaXNQcm9jZXNzaW5nID0gZmFsc2U7XHJcbiAgcm9sZXM6IFJvbGVbXTtcclxuXHJcbiAgYXBwQ29uZmlnID0gbmV3IEFwcENvbmZpZygpO1xyXG5cclxuICBsb2FkUm9sZXMoKSB7XHJcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLkdldFJvbGUoXCJhbGxcIiwgXCJcIikuc3Vic2NyaWJlKChhcGlSZXNwb25zZSkgPT4ge1xyXG4gICAgICB0aGlzLnJvbGVzID0gYXBpUmVzcG9uc2U7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlZnJlc2goKSB7XHJcbiAgICB0aGlzLmxvYWRSb2xlcygpO1xyXG4gIH1cclxuXHJcbiAgYWRkUm9sZSgpIHtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oYWRkUm9sZURpYWxvZywge1xyXG4gICAgICB3aWR0aDogXCIxMTAwcHhcIixcclxuICAgICAgZGF0YTogdGhpcy5hcHBDb25maWcuY2FwSXRlbXMsXHJcbiAgICB9KTtcclxuXHJcbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0ID09IFwic3VjY2Vzc1wiKSB7XHJcbiAgICAgICAgdGhpcy5sb2FkUm9sZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVSb2xlKHJvbGU6IFJvbGUpIHtcclxuXHJcbiAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmNvbmZpcm0oYFVQREFURSAke3JvbGUucm9sZU5hbWV9ID9gKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG5cclxuICAgICAgaWYgKHJlc3VsdCA9PSBcInllc1wiKSB7XHJcblxyXG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuUG9zdFJvbGUocm9sZSwgXCJlZGl0XCIpLnN1YnNjcmliZSgoYXBpUmVzcG9uc2UpID0+IHtcclxuXHJcbiAgICAgICAgICBpZiAoYXBpUmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiUm9sZSBVcGRhdGVkXCIpO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRSb2xlcygpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChcIkVycm9yOiBcIiArIGFwaVJlc3BvbnNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIH1cclxuXHJcbiAgICB9KVxyXG5cclxuXHJcbiAgfTtcclxuXHJcbiAgZGVsZXRlUm9sZShyb2xlOiBSb2xlKSB7XHJcblxyXG4gICAgdGhpcy5tZXNzYWdlU2VydmljZS5jb25maXJtKGBERUxFVEUgJHtyb2xlLnJvbGVOYW1lfSA/YCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuXHJcbiAgICAgIGlmIChyZXN1bHQgPT0gXCJ5ZXNcIikge1xyXG5cclxuICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLlBvc3RSb2xlKHJvbGUsIFwiZGVsZXRlXCIpLnN1YnNjcmliZSgoYXBpUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIGlmIChhcGlSZXNwb25zZS5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoXCJSb2xlIERlbGV0ZWRcIik7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZFJvbGVzKCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiRXJyb3I6IFwiICsgYXBpUmVzcG9uc2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgfVxyXG5cclxuICAgIH0pXHJcblxyXG4gIH1cclxufVxyXG4iLCI8aDQ+IFJvbGVzIDwvaDQ+XHJcbjxociAvPlxyXG5cclxuPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZCBtYi01XCI+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbWItMlwiPlxyXG5cclxuICAgIDxkaXYgPlxyXG4gICAgICA8YnV0dG9uIGlkPVwiYnRuTmV3Um9sZVwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJhZGRSb2xlKClcIj5OZXcgUm9sZTwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgIDxidXR0b24gaWQ9XCJidG5SZWZyZXNoXCIgbWF0LW1pbmktZmFiIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJyZWZyZXNoKClcIiAgbWF0VG9vbHRpcD1cInJlZnJlc2ggZGF0YVwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCI+PG1hdC1pY29uIGNsYXNzPVwicmVmcmVzaEljb25cIj5yZWZyZXNoPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8L2Rpdj5cclxuXHJcblxyXG4gIDxkaXYgY2xhc3M9XCJyb3cgbXQtMiBtYi0xXCIgICpuZ0Zvcj1cImxldCByb2xlIG9mIHJvbGVzXCI+XHJcblxyXG4gICAgPG1hdC1jYXJkIGNsYXNzPVwibWF0LWVsZXZhdGlvbi16OFwiIHN0eWxlPVwid2lkdGg6MTAwJVwiPlxyXG5cclxuICAgICAgPGg0Pnt7cm9sZS5yb2xlTmFtZX19PC9oND5cclxuICAgICAgPGhyIC8+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGluLXJvd1wiIHN0eWxlPVwiIGZvbnQtc2l6ZToxMnB4O1wiPlxyXG5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpbi1yb3dcIiAgKm5nRm9yPVwibGV0IGNhcEl0ZW0gb2YgYXBwQ29uZmlnLmNhcEl0ZW1zXCI+XHJcblxyXG4gICAgICAgICAgPG1hdC1jaGVja2JveCBjb2xvcj1cInByaW1hcnlcIiBzdHlsZT1cIm1pbi13aWR0aDogMTAwcHg7XCIgWyhuZ01vZGVsKV09XCJyb2xlW2NhcEl0ZW0ubmFtZV1cIj57e2NhcEl0ZW0uZGlzcGxheX19PC9tYXQtY2hlY2tib3g+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRpbi1yb3dcIiAgKm5nRm9yPVwibGV0IGNhcFN1Ykl0ZW0gb2YgY2FwSXRlbS5jYXBTdWJJdGVtc1wiPlxyXG5cclxuICAgICAgICAgICAgPG1hdC1jaGVja2JveCBjb2xvcj1cInByaW1hcnlcIiBzdHlsZT1cIm1pbi13aWR0aDogMTAwcHg7XCIgWyhuZ01vZGVsKV09XCJyb2xlW2NhcFN1Ykl0ZW0ubmFtZV1cIj57e2NhcFN1Ykl0ZW0uZGlzcGxheX19PC9tYXQtY2hlY2tib3g+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGluLXJvd1wiICAqbmdGb3I9XCJsZXQgY2FwU3ViU3ViSXRlbSBvZiBjYXBTdWJJdGVtLmNhcFN1Ykl0ZW1zXCI+XHJcblxyXG4gICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggY29sb3I9XCJwcmltYXJ5XCIgc3R5bGU9XCJtaW4td2lkdGg6IDEwMHB4O1wiIFsobmdNb2RlbCldPVwicm9sZVtjYXBTdWJTdWJJdGVtLm5hbWVdXCI+e3tjYXBTdWJTdWJJdGVtLmRpc3BsYXl9fTwvbWF0LWNoZWNrYm94PlxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgPG1hdC1jYXJkLWFjdGlvbnM+XHJcblxyXG4gICAgICAgIDxidXR0b24gIG1hdC1taW5pLWZhYiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwidXBkYXRlUm9sZShyb2xlKVwiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OjEwcHg7XCI+XHJcbiAgICAgICAgICAgPG1hdC1pY29uPmRvbmVfYWxsPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtbWluaS1mYWIgY29sb3I9XCJ3YXJuXCIgKGNsaWNrKT1cImRlbGV0ZVJvbGUocm9sZSlcIiBzdHlsZT1cIm1hcmdpbi1yaWdodDoxMHB4XCI+XHJcbiAgICAgICAgICA8bWF0LWljb24+ZGVsZXRlPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgIDwvbWF0LWNhcmQtYWN0aW9ucz5cclxuXHJcbiAgICA8L21hdC1jYXJkPlxyXG5cclxuICA8L2Rpdj5cclxuXHJcblxyXG48L2Rpdj5cclxuXHJcbiJdfQ==
@@ -0,0 +1,31 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { Core } from '../../classes/TinCore';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "@angular/material/button";
6
+ import * as i3 from "@angular/material/icon";
7
+ import * as i4 from "@angular/material/tooltip";
8
+ import * as i5 from "../option/option.component";
9
+ import * as i6 from "../../pipes/camelToWords.pipe";
10
+ export class SearchComponent {
11
+ constructor() {
12
+ this.searchClick = new EventEmitter();
13
+ }
14
+ ngOnInit() {
15
+ this.data = Core.generateObject(this.config.fields);
16
+ }
17
+ search() {
18
+ this.searchClick.emit(this.data);
19
+ }
20
+ }
21
+ SearchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SearchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
22
+ SearchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: SearchComponent, selector: "spa-search", inputs: { config: "config" }, outputs: { searchClick: "searchClick" }, ngImport: i0, template: "\n<div class=\"tin-between\">\n\n<div class=\"col tin-row\">\n\n <div *ngFor=\"let field of config.fields\">\n\n <spa-option [type]=\"field.type\" [show]=\"field.show\" [display]=\"field.alias ?? field.name | camelToWords\" [options]=\"field.options\" [optionDisplay]=\"field.optionDisplay\" [optionValue]=\"field.optionValue\" [(value)]=\"data[field.name]\" (enterPress)=\"search()\"></spa-option>\n\n </div>\n\n</div>\n\n<div class=\"col-1 tin-end\">\n <button mat-fab color=\"primary\" (click)=\"search()\" matTooltip=\"Search\" matTooltipPosition=\"right\">\n <mat-icon>search</mat-icon>\n </button>\n</div>\n\n\n\n</div>\n\n\n\n", styles: [".tin-row{column-gap:30px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i2.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: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i5.OptionComponent, selector: "spa-option", inputs: ["options", "optionValue", "optionDisplay", "readonly", "type", "value", "display", "show"], outputs: ["valueChange", "enterPress"] }, { kind: "pipe", type: i6.CamelToWordsPipe, name: "camelToWords" }] });
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SearchComponent, decorators: [{
24
+ type: Component,
25
+ args: [{ selector: 'spa-search', template: "\n<div class=\"tin-between\">\n\n<div class=\"col tin-row\">\n\n <div *ngFor=\"let field of config.fields\">\n\n <spa-option [type]=\"field.type\" [show]=\"field.show\" [display]=\"field.alias ?? field.name | camelToWords\" [options]=\"field.options\" [optionDisplay]=\"field.optionDisplay\" [optionValue]=\"field.optionValue\" [(value)]=\"data[field.name]\" (enterPress)=\"search()\"></spa-option>\n\n </div>\n\n</div>\n\n<div class=\"col-1 tin-end\">\n <button mat-fab color=\"primary\" (click)=\"search()\" matTooltip=\"Search\" matTooltipPosition=\"right\">\n <mat-icon>search</mat-icon>\n </button>\n</div>\n\n\n\n</div>\n\n\n\n", styles: [".tin-row{column-gap:30px}\n"] }]
26
+ }], ctorParameters: function () { return []; }, propDecorators: { config: [{
27
+ type: Input
28
+ }], searchClick: [{
29
+ type: Output
30
+ }] } });
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9jb21wb25lbnRzL3NlYXJjaC9zZWFyY2guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvc2VhcmNoL3NlYXJjaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9FLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7QUFPN0MsTUFBTSxPQUFPLGVBQWU7SUFFMUI7UUFVVSxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFWM0IsQ0FBQztJQUVqQixRQUFRO1FBRU4sSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7SUFFckQsQ0FBQztJQU1ELE1BQU07UUFDSixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQzs7NEdBaEJVLGVBQWU7Z0dBQWYsZUFBZSx5SENUNUIscW9CQXlCQTsyRkRoQmEsZUFBZTtrQkFMM0IsU0FBUzsrQkFDRSxZQUFZOzBFQWViLE1BQU07c0JBQWQsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmllbGQsIFNlYXJjaENvbmZpZyB9IGZyb20gJy4uLy4uL2NsYXNzZXMvQ2xhc3Nlcyc7XG5pbXBvcnQgeyBDb3JlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9UaW5Db3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3BhLXNlYXJjaCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2guY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcblxuICAgIHRoaXMuZGF0YSA9IENvcmUuZ2VuZXJhdGVPYmplY3QodGhpcy5jb25maWcuZmllbGRzKVxuXG4gIH1cblxuICBkYXRhO1xuICBASW5wdXQoKSBjb25maWc6IFNlYXJjaENvbmZpZztcbiAgQE91dHB1dCgpIHNlYXJjaENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHNlYXJjaCgpe1xuICAgIHRoaXMuc2VhcmNoQ2xpY2suZW1pdCh0aGlzLmRhdGEpO1xuICB9XG59XG4iLCJcbjxkaXYgY2xhc3M9XCJ0aW4tYmV0d2VlblwiPlxuXG48ZGl2IGNsYXNzPVwiY29sIHRpbi1yb3dcIj5cblxuICA8ZGl2ICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBjb25maWcuZmllbGRzXCI+XG5cbiAgICA8c3BhLW9wdGlvbiBbdHlwZV09XCJmaWVsZC50eXBlXCIgW3Nob3ddPVwiZmllbGQuc2hvd1wiIFtkaXNwbGF5XT1cImZpZWxkLmFsaWFzID8/IGZpZWxkLm5hbWUgfCBjYW1lbFRvV29yZHNcIiBbb3B0aW9uc109XCJmaWVsZC5vcHRpb25zXCIgW29wdGlvbkRpc3BsYXldPVwiZmllbGQub3B0aW9uRGlzcGxheVwiIFtvcHRpb25WYWx1ZV09XCJmaWVsZC5vcHRpb25WYWx1ZVwiIFsodmFsdWUpXT1cImRhdGFbZmllbGQubmFtZV1cIiAoZW50ZXJQcmVzcyk9XCJzZWFyY2goKVwiPjwvc3BhLW9wdGlvbj5cblxuICA8L2Rpdj5cblxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJjb2wtMSB0aW4tZW5kXCI+XG4gIDxidXR0b24gbWF0LWZhYiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwic2VhcmNoKClcIiBtYXRUb29sdGlwPVwiU2VhcmNoXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIj5cbiAgICA8bWF0LWljb24+c2VhcmNoPC9tYXQtaWNvbj5cbiAgPC9idXR0b24+XG48L2Rpdj5cblxuXG5cbjwvZGl2PlxuXG5cblxuIl19
@@ -0,0 +1,138 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../services/message.service";
4
+ import * as i2 from "../../services/dialog.service";
5
+ import * as i3 from "@angular/common";
6
+ import * as i4 from "@angular/material/button";
7
+ import * as i5 from "@angular/material/icon";
8
+ import * as i6 from "@angular/material/form-field";
9
+ import * as i7 from "@angular/material/select";
10
+ import * as i8 from "@angular/material/core";
11
+ import * as i9 from "@angular/material/tooltip";
12
+ export class SelectComponent {
13
+ constructor(messageService, dialogService) {
14
+ this.messageService = messageService;
15
+ this.dialogService = dialogService;
16
+ this.isHovered = false;
17
+ this.width = "100%";
18
+ this.readonly = false;
19
+ this.required = true;
20
+ this.defaultFirstValue = false;
21
+ this.readonlyMode = "";
22
+ this.hint = "";
23
+ this.placeholder = "";
24
+ this.multiple = false;
25
+ this.display = "";
26
+ this.optionValue = "";
27
+ this.optionDisplay = "";
28
+ this.optionDisplayExtra = "";
29
+ this.nullable = false;
30
+ this.valueChange = new EventEmitter();
31
+ this.infoClick = new EventEmitter();
32
+ }
33
+ ngOnInit() {
34
+ // this.displayValue = this.options.filter((m) => m.optionValue == this.value)
35
+ // this.displayValue = this.value
36
+ if (this.placeholder == "") {
37
+ this.placeholder = "Select " + this.display;
38
+ }
39
+ if (this.defaultFirstValue && this.options && this.options.length > 0 && (this.value == null || this.value == undefined || (typeof (this.value) == 'string' && this.value == '') || (typeof (this.value) == 'number' && this.value == 0))) {
40
+ this.value = this.options[0][this.optionValue];
41
+ this.changed();
42
+ }
43
+ }
44
+ ngOnChanges() {
45
+ if (this.readonlyMode != "" && this.options.length > 0) {
46
+ this.displayValue = this.options.filter((m) => m[`${this.optionValue}`] == this.value)[0][`${this.optionDisplay}`];
47
+ }
48
+ //add a null option
49
+ if (this.nullable && this.options && this.options.length > 0 && this.options[0][this.optionValue] != null) {
50
+ this.options.unshift({ [this.optionValue]: null, [this.optionDisplay]: "None" });
51
+ }
52
+ }
53
+ changed() {
54
+ this.valueChange.emit(this.value);
55
+ }
56
+ onMouseEnter() {
57
+ this.isHovered = true;
58
+ }
59
+ onMouseLeave() {
60
+ this.isHovered = false;
61
+ }
62
+ onAddClick(event) {
63
+ event.stopPropagation();
64
+ // if (this.peekConfig && this.peekConfig.create && this.value) {
65
+ // const dynamicData = { [this.peekConfig.detailsConfig.heroField]: this.value };
66
+ // this.dialogService.openConfiguredDetailsDialog( "create", dynamicData, this.peekConfig.detailsConfig, DetailsDialog ).subscribe(result => {
67
+ // console.log(result);
68
+ // });
69
+ // } else {
70
+ // this.messageService.toast("Configuration Error");
71
+ // }
72
+ }
73
+ onViewClick(event) {
74
+ event.stopPropagation();
75
+ // if (this.peekConfig && this.peekConfig.view && this.value) {
76
+ // const dynamicData = { [this.peekConfig.detailsConfig.heroField]: this.value };
77
+ // this.dialogService.openConfiguredDetailsDialog( "view", dynamicData, this.peekConfig.detailsConfig, DetailsDialogInternal ).subscribe(result => {
78
+ // console.log(result);
79
+ // });
80
+ // } else {
81
+ // this.messageService.toast("Configuration Error");
82
+ // }
83
+ }
84
+ onInfoClick(event) {
85
+ event.stopPropagation();
86
+ this.infoClick.emit();
87
+ if (this.infoMessage) {
88
+ this.messageService.info(this.infoMessage);
89
+ }
90
+ }
91
+ }
92
+ SelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SelectComponent, deps: [{ token: i1.MessageService }, { token: i2.DialogService }], target: i0.ɵɵFactoryTarget.Component });
93
+ SelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: SelectComponent, selector: "spa-select", inputs: { width: "width", readonly: "readonly", required: "required", defaultFirstValue: "defaultFirstValue", readonlyMode: "readonlyMode", hint: "hint", placeholder: "placeholder", multiple: "multiple", display: "display", value: "value", options: "options", masterOptions: "masterOptions", optionValue: "optionValue", optionDisplay: "optionDisplay", optionDisplayExtra: "optionDisplayExtra", nullable: "nullable", peekConfig: "peekConfig", infoMessage: "infoMessage" }, outputs: { valueChange: "valueChange", infoClick: "infoClick" }, usesOnChanges: true, ngImport: i0, template: "\r\n<mat-form-field *ngIf=\"readonlyMode==''\" floatLabel=\"always\" [hintLabel]=\"hint\" [ngStyle]=\"{'width':width}\" [hideRequiredMarker]=\"!required\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\r\n\r\n <mat-label>{{display}}</mat-label>\r\n <mat-select [(value)]=\"value\" (selectionChange)=\"changed()\" [multiple]=\"multiple\" [disabled]=\"readonly\" [placeholder]=\"placeholder\" >\r\n <mat-option *ngFor=\"let row of options\" [value]=\"row[optionValue]\">\r\n {{row[optionDisplay]}} <label *ngIf=\"optionDisplayExtra!='' && row[optionDisplayExtra] && row[optionDisplayExtra] != ''\">({{row[optionDisplayExtra]}})</label>\r\n </mat-option>\r\n </mat-select>\r\n\r\n <div matSuffix class=\"suffix-icons\">\r\n <button mat-icon-button *ngIf=\"peekConfig && peekConfig.create && isHovered && value\" (click)=\"onAddClick($event)\" matTooltip=\"Add\" matTooltipPosition=\"above\" >\r\n <mat-icon style=\"color: green;\">add</mat-icon>\r\n </button>\r\n <button mat-icon-button *ngIf=\"peekConfig && peekConfig.view && isHovered && value\" (click)=\"onViewClick($event)\" matTooltip=\"View\" matTooltipPosition=\"above\" >\r\n <mat-icon color=\"primary\">launch</mat-icon>\r\n </button>\r\n <button mat-icon-button *ngIf=\"infoMessage\" (click)=\"onInfoClick($event)\" matTooltip=\"Info\" matTooltipPosition=\"above\" >\r\n <mat-icon style=\"color: steelblue;\">info</mat-icon>\r\n </button>\r\n </div>\r\n\r\n</mat-form-field>\r\n", styles: [".suffix-icons{display:flex;align-items:center}.suffix-icons button{opacity:0;transition:opacity .3s ease}:host:hover .suffix-icons button{opacity:1}.suffix-icons button:last-child{opacity:1}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i4.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: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatSuffix, selector: "[matSuffix]" }, { kind: "component", type: i7.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i8.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
94
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SelectComponent, decorators: [{
95
+ type: Component,
96
+ args: [{ selector: 'spa-select', template: "\r\n<mat-form-field *ngIf=\"readonlyMode==''\" floatLabel=\"always\" [hintLabel]=\"hint\" [ngStyle]=\"{'width':width}\" [hideRequiredMarker]=\"!required\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\r\n\r\n <mat-label>{{display}}</mat-label>\r\n <mat-select [(value)]=\"value\" (selectionChange)=\"changed()\" [multiple]=\"multiple\" [disabled]=\"readonly\" [placeholder]=\"placeholder\" >\r\n <mat-option *ngFor=\"let row of options\" [value]=\"row[optionValue]\">\r\n {{row[optionDisplay]}} <label *ngIf=\"optionDisplayExtra!='' && row[optionDisplayExtra] && row[optionDisplayExtra] != ''\">({{row[optionDisplayExtra]}})</label>\r\n </mat-option>\r\n </mat-select>\r\n\r\n <div matSuffix class=\"suffix-icons\">\r\n <button mat-icon-button *ngIf=\"peekConfig && peekConfig.create && isHovered && value\" (click)=\"onAddClick($event)\" matTooltip=\"Add\" matTooltipPosition=\"above\" >\r\n <mat-icon style=\"color: green;\">add</mat-icon>\r\n </button>\r\n <button mat-icon-button *ngIf=\"peekConfig && peekConfig.view && isHovered && value\" (click)=\"onViewClick($event)\" matTooltip=\"View\" matTooltipPosition=\"above\" >\r\n <mat-icon color=\"primary\">launch</mat-icon>\r\n </button>\r\n <button mat-icon-button *ngIf=\"infoMessage\" (click)=\"onInfoClick($event)\" matTooltip=\"Info\" matTooltipPosition=\"above\" >\r\n <mat-icon style=\"color: steelblue;\">info</mat-icon>\r\n </button>\r\n </div>\r\n\r\n</mat-form-field>\r\n", styles: [".suffix-icons{display:flex;align-items:center}.suffix-icons button{opacity:0;transition:opacity .3s ease}:host:hover .suffix-icons button{opacity:1}.suffix-icons button:last-child{opacity:1}\n"] }]
97
+ }], ctorParameters: function () { return [{ type: i1.MessageService }, { type: i2.DialogService }]; }, propDecorators: { width: [{
98
+ type: Input
99
+ }], readonly: [{
100
+ type: Input
101
+ }], required: [{
102
+ type: Input
103
+ }], defaultFirstValue: [{
104
+ type: Input
105
+ }], readonlyMode: [{
106
+ type: Input
107
+ }], hint: [{
108
+ type: Input
109
+ }], placeholder: [{
110
+ type: Input
111
+ }], multiple: [{
112
+ type: Input
113
+ }], display: [{
114
+ type: Input
115
+ }], value: [{
116
+ type: Input
117
+ }], options: [{
118
+ type: Input
119
+ }], masterOptions: [{
120
+ type: Input
121
+ }], optionValue: [{
122
+ type: Input
123
+ }], optionDisplay: [{
124
+ type: Input
125
+ }], optionDisplayExtra: [{
126
+ type: Input
127
+ }], nullable: [{
128
+ type: Input
129
+ }], peekConfig: [{
130
+ type: Input
131
+ }], infoMessage: [{
132
+ type: Input
133
+ }], valueChange: [{
134
+ type: Output
135
+ }], infoClick: [{
136
+ type: Output
137
+ }] } });
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9jb21wb25lbnRzL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7OztBQVUvRSxNQUFNLE9BQU8sZUFBZTtJQUUxQixZQUFvQixjQUE4QixFQUFVLGFBQTRCO1FBQXBFLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBNkJ4RixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRVQsVUFBSyxHQUFHLE1BQU0sQ0FBQTtRQUNkLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsYUFBUSxHQUFHLElBQUksQ0FBQztRQUNoQixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDMUIsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUNWLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFMUIsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUliLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ25CLHVCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUN4QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBS2hCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqQyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQXJENkMsQ0FBQztJQUU3RixRQUFRO1FBQ04sOEVBQThFO1FBQzlFLGlDQUFpQztRQUNqQyxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksRUFBRSxFQUFFO1lBQzFCLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDN0M7UUFFRCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksU0FBUyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksUUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBQztZQUN4TyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1lBQzlDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUNoQjtJQUNILENBQUM7SUFFRCxXQUFXO1FBRVQsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUM7WUFDckQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUE7U0FDbkg7UUFFRCxtQkFBbUI7UUFDbkIsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksRUFBQztZQUN4RyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFBO1NBQ2pGO0lBRUgsQ0FBQztJQStCRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWlCO1FBQzFCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV4QixpRUFBaUU7UUFFakUsbUZBQW1GO1FBRW5GLGdKQUFnSjtRQUNoSiwyQkFBMkI7UUFDM0IsUUFBUTtRQUNSLFdBQVc7UUFDWCxzREFBc0Q7UUFDdEQsSUFBSTtJQUNOLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBaUI7UUFDM0IsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXhCLCtEQUErRDtRQUUvRCxtRkFBbUY7UUFFbkYsc0pBQXNKO1FBQ3RKLDJCQUEyQjtRQUMzQixRQUFRO1FBQ1IsV0FBVztRQUNYLHNEQUFzRDtRQUN0RCxJQUFJO0lBQ04sQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFpQjtRQUMzQixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUV0QixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQzVDO0lBQ0gsQ0FBQzs7NEdBNUdVLGVBQWU7Z0dBQWYsZUFBZSxnbUJDVjVCLHErQ0F1QkE7MkZEYmEsZUFBZTtrQkFMM0IsU0FBUzsrQkFDRSxZQUFZO2lJQXFDYixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgIFBlZWtEaWFsb2dDb25maWcgfSBmcm9tICcuLi8uLi9jbGFzc2VzL0NsYXNzZXMnO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21lc3NhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kaWFsb2cuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NwYS1zZWxlY3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NlbGVjdC5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFNlbGVjdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLCBwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIC8vIHRoaXMuZGlzcGxheVZhbHVlID0gdGhpcy5vcHRpb25zLmZpbHRlcigobSkgPT4gbS5vcHRpb25WYWx1ZSA9PSB0aGlzLnZhbHVlKVxyXG4gICAgLy8gdGhpcy5kaXNwbGF5VmFsdWUgPSB0aGlzLnZhbHVlXHJcbiAgICBpZiAodGhpcy5wbGFjZWhvbGRlciA9PSBcIlwiKSB7XHJcbiAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSBcIlNlbGVjdCBcIiArIHRoaXMuZGlzcGxheTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5kZWZhdWx0Rmlyc3RWYWx1ZSAmJiB0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLmxlbmd0aCA+IDAgJiYgKHRoaXMudmFsdWUgPT0gbnVsbCB8fCB0aGlzLnZhbHVlID09IHVuZGVmaW5lZCB8fCAodHlwZW9mICh0aGlzLnZhbHVlKSA9PSAnc3RyaW5nJyAmJiB0aGlzLnZhbHVlID09ICcnKSB8fCAodHlwZW9mICh0aGlzLnZhbHVlKSA9PSAnbnVtYmVyJyAmJiB0aGlzLnZhbHVlID09IDApKSl7XHJcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLm9wdGlvbnNbMF1bdGhpcy5vcHRpb25WYWx1ZV1cclxuICAgICAgdGhpcy5jaGFuZ2VkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcygpIHtcclxuXHJcbiAgICBpZiAodGhpcy5yZWFkb25seU1vZGUgIT0gXCJcIiAmJiB0aGlzLm9wdGlvbnMubGVuZ3RoID4gMCl7XHJcbiAgICAgIHRoaXMuZGlzcGxheVZhbHVlID0gdGhpcy5vcHRpb25zLmZpbHRlcigobSkgPT4gbVtgJHt0aGlzLm9wdGlvblZhbHVlfWBdID09IHRoaXMudmFsdWUpWzBdW2Ake3RoaXMub3B0aW9uRGlzcGxheX1gXVxyXG4gICAgfVxyXG5cclxuICAgIC8vYWRkIGEgbnVsbCBvcHRpb25cclxuICAgIGlmICh0aGlzLm51bGxhYmxlICYmIHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMubGVuZ3RoID4gMCAmJiB0aGlzLm9wdGlvbnNbMF1bdGhpcy5vcHRpb25WYWx1ZV0gIT0gbnVsbCl7XHJcbiAgICAgIHRoaXMub3B0aW9ucy51bnNoaWZ0KHsgW3RoaXMub3B0aW9uVmFsdWVdOiBudWxsLCBbdGhpcy5vcHRpb25EaXNwbGF5XTogXCJOb25lXCIgfSlcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBkaXNwbGF5VmFsdWU7XHJcbiAgaXNIb3ZlcmVkID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHdpZHRoID0gXCIxMDAlXCJcclxuICBASW5wdXQoKSByZWFkb25seSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHJlcXVpcmVkID0gdHJ1ZTtcclxuICBASW5wdXQoKSBkZWZhdWx0Rmlyc3RWYWx1ZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHJlYWRvbmx5TW9kZSA9IFwiXCI7XHJcbiAgQElucHV0KCkgaGludCA9IFwiXCI7XHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIG11bHRpcGxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIGRpc3BsYXkgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIHZhbHVlIDtcclxuICBASW5wdXQoKSBvcHRpb25zOiBhbnk7XHJcbiAgQElucHV0KCkgbWFzdGVyT3B0aW9uczogYW55O1xyXG4gIEBJbnB1dCgpIG9wdGlvblZhbHVlID0gXCJcIjtcclxuICBASW5wdXQoKSBvcHRpb25EaXNwbGF5ID0gXCJcIjtcclxuICBASW5wdXQoKSBvcHRpb25EaXNwbGF5RXh0cmEgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIG51bGxhYmxlID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHBlZWtDb25maWc6IFBlZWtEaWFsb2dDb25maWc7XHJcbiAgQElucHV0KCkgaW5mb01lc3NhZ2U6IHN0cmluZztcclxuXHJcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBpbmZvQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG5cclxuXHJcbiAgY2hhbmdlZCgpe1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgb25Nb3VzZUVudGVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc0hvdmVyZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgb25Nb3VzZUxlYXZlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc0hvdmVyZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIG9uQWRkQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIC8vIGlmICh0aGlzLnBlZWtDb25maWcgJiYgdGhpcy5wZWVrQ29uZmlnLmNyZWF0ZSAmJiB0aGlzLnZhbHVlKSB7XHJcblxyXG4gICAgLy8gICBjb25zdCBkeW5hbWljRGF0YSA9IHsgW3RoaXMucGVla0NvbmZpZy5kZXRhaWxzQ29uZmlnLmhlcm9GaWVsZF06IHRoaXMudmFsdWUgfTtcclxuXHJcbiAgICAvLyAgIHRoaXMuZGlhbG9nU2VydmljZS5vcGVuQ29uZmlndXJlZERldGFpbHNEaWFsb2coIFwiY3JlYXRlXCIsIGR5bmFtaWNEYXRhLCB0aGlzLnBlZWtDb25maWcuZGV0YWlsc0NvbmZpZywgRGV0YWlsc0RpYWxvZyApLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgLy8gICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XHJcbiAgICAvLyAgIH0pO1xyXG4gICAgLy8gfSBlbHNlIHtcclxuICAgIC8vICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChcIkNvbmZpZ3VyYXRpb24gRXJyb3JcIik7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG5cclxuICBvblZpZXdDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgLy8gaWYgKHRoaXMucGVla0NvbmZpZyAmJiB0aGlzLnBlZWtDb25maWcudmlldyAmJiB0aGlzLnZhbHVlKSB7XHJcblxyXG4gICAgLy8gICBjb25zdCBkeW5hbWljRGF0YSA9IHsgW3RoaXMucGVla0NvbmZpZy5kZXRhaWxzQ29uZmlnLmhlcm9GaWVsZF06IHRoaXMudmFsdWUgfTtcclxuXHJcbiAgICAvLyAgIHRoaXMuZGlhbG9nU2VydmljZS5vcGVuQ29uZmlndXJlZERldGFpbHNEaWFsb2coIFwidmlld1wiLCBkeW5hbWljRGF0YSwgdGhpcy5wZWVrQ29uZmlnLmRldGFpbHNDb25maWcsIERldGFpbHNEaWFsb2dJbnRlcm5hbCApLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgLy8gICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XHJcbiAgICAvLyAgIH0pO1xyXG4gICAgLy8gfSBlbHNlIHtcclxuICAgIC8vICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChcIkNvbmZpZ3VyYXRpb24gRXJyb3JcIik7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG5cclxuICBvbkluZm9DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLmluZm9DbGljay5lbWl0KCk7XHJcblxyXG4gICAgaWYgKHRoaXMuaW5mb01lc3NhZ2UpIHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5pbmZvKHRoaXMuaW5mb01lc3NhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbiIsIlxyXG48bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJyZWFkb25seU1vZGU9PScnXCIgIGZsb2F0TGFiZWw9XCJhbHdheXNcIiBbaGludExhYmVsXT1cImhpbnRcIiBbbmdTdHlsZV09XCJ7J3dpZHRoJzp3aWR0aH1cIiBbaGlkZVJlcXVpcmVkTWFya2VyXT1cIiFyZXF1aXJlZFwiIChtb3VzZWVudGVyKT1cIm9uTW91c2VFbnRlcigpXCIgKG1vdXNlbGVhdmUpPVwib25Nb3VzZUxlYXZlKClcIj5cclxuXHJcbiAgPG1hdC1sYWJlbD57e2Rpc3BsYXl9fTwvbWF0LWxhYmVsPlxyXG4gIDxtYXQtc2VsZWN0IFsodmFsdWUpXT1cInZhbHVlXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJjaGFuZ2VkKClcIiBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIiBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiAgPlxyXG4gICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHJvdyBvZiBvcHRpb25zXCIgW3ZhbHVlXT1cInJvd1tvcHRpb25WYWx1ZV1cIj5cclxuICAgICAge3tyb3dbb3B0aW9uRGlzcGxheV19fSA8bGFiZWwgKm5nSWY9XCJvcHRpb25EaXNwbGF5RXh0cmEhPScnICYmIHJvd1tvcHRpb25EaXNwbGF5RXh0cmFdICYmIHJvd1tvcHRpb25EaXNwbGF5RXh0cmFdICE9ICcnXCI+KHt7cm93W29wdGlvbkRpc3BsYXlFeHRyYV19fSk8L2xhYmVsPlxyXG4gICAgPC9tYXQtb3B0aW9uPlxyXG4gIDwvbWF0LXNlbGVjdD5cclxuXHJcbiAgPGRpdiBtYXRTdWZmaXggY2xhc3M9XCJzdWZmaXgtaWNvbnNcIj5cclxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uICpuZ0lmPVwicGVla0NvbmZpZyAmJiBwZWVrQ29uZmlnLmNyZWF0ZSAmJiBpc0hvdmVyZWQgJiYgdmFsdWVcIiAoY2xpY2spPVwib25BZGRDbGljaygkZXZlbnQpXCIgbWF0VG9vbHRpcD1cIkFkZFwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCIgPlxyXG4gICAgICA8bWF0LWljb24gc3R5bGU9XCJjb2xvcjogZ3JlZW47XCI+YWRkPC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKm5nSWY9XCJwZWVrQ29uZmlnICYmIHBlZWtDb25maWcudmlldyAmJiBpc0hvdmVyZWQgJiYgdmFsdWVcIiAoY2xpY2spPVwib25WaWV3Q2xpY2soJGV2ZW50KVwiIG1hdFRvb2x0aXA9XCJWaWV3XCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIiA+XHJcbiAgICAgIDxtYXQtaWNvbiBjb2xvcj1cInByaW1hcnlcIj5sYXVuY2g8L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAqbmdJZj1cImluZm9NZXNzYWdlXCIgKGNsaWNrKT1cIm9uSW5mb0NsaWNrKCRldmVudClcIiBtYXRUb29sdGlwPVwiSW5mb1wiIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCIgPlxyXG4gICAgICA8bWF0LWljb24gc3R5bGU9XCJjb2xvcjogc3RlZWxibHVlO1wiPmluZm88L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcblxyXG48L21hdC1mb3JtLWZpZWxkPlxyXG4iXX0=
@@ -0,0 +1,62 @@
1
+ import { Component } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../services/datalib.service";
4
+ import * as i2 from "../../services/message.service";
5
+ import * as i3 from "@angular/forms";
6
+ import * as i4 from "@angular/common";
7
+ import * as i5 from "@angular/material/button";
8
+ import * as i6 from "@angular/material/icon";
9
+ import * as i7 from "@angular/material/form-field";
10
+ import * as i8 from "@angular/material/input";
11
+ export class SettingsComponent {
12
+ constructor(dataService, messageService) {
13
+ this.dataService = dataService;
14
+ this.messageService = messageService;
15
+ this._filterText = "";
16
+ this.isProcessing = false;
17
+ }
18
+ ngOnInit() {
19
+ this.loadSettings();
20
+ }
21
+ applyFilter(filterValue) {
22
+ this.settings.filter = filterValue.trim().toLowerCase();
23
+ }
24
+ loadSettings() {
25
+ this.dataService.GetSetting("all", "").subscribe((apiResponse) => {
26
+ this.settings = apiResponse;
27
+ });
28
+ }
29
+ updateSetting(setting) {
30
+ this.isProcessing = true;
31
+ this.dataService.UpdateSetting(setting, "edit").subscribe((apiResponse) => {
32
+ this.isProcessing = false;
33
+ if (apiResponse.success) {
34
+ this.messageService.toast(`Setting ${setting.sName} Updated`);
35
+ this.loadSettings();
36
+ }
37
+ else {
38
+ this.messageService.toast("Error: " + apiResponse.message);
39
+ }
40
+ });
41
+ }
42
+ ;
43
+ addSetting() {
44
+ // const dialogRef = this.dialog.open(addRoleDialog, {
45
+ // width: "1100px",
46
+ // data: "",
47
+ // });
48
+ // dialogRef.afterClosed().subscribe((result) => {
49
+ // if (result == "success") {
50
+ // this.loadRoles();
51
+ // }
52
+ // });
53
+ this.messageService.toast("Feature not Available");
54
+ }
55
+ }
56
+ SettingsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SettingsComponent, deps: [{ token: i1.DataServiceLib }, { token: i2.MessageService }], target: i0.ɵɵFactoryTarget.Component });
57
+ SettingsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: SettingsComponent, selector: "spa-settings", ngImport: i0, template: "<h4>Settings</h4>\r\n<hr>\r\n\r\n<div class=\"container\">\r\n\r\n <div class=\"row justify-content-between\" style=\"padding-bottom: 10px;padding-left:10px\">\r\n\r\n <div class=\"col-2\">\r\n <!-- <button mat-raised-button (click)=\"addSetting()\">New Setting</button> -->\r\n </div>\r\n <div class=\"col-2\">\r\n <button mat-raised-button (click)=\"loadSettings()\">Refresh</button>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"tin-row align-items-center mt-1 mb-1\" style=\"margin-left:10px\" *ngFor=\"let setting of settings\">\r\n\r\n <mat-form-field style=\"width: 500px; font-size: 14px;\">\r\n <mat-label>{{setting.sName}}</mat-label>\r\n <input matInput autocomplete=\"off\" [(ngModel)]=\"setting.sValue\" >\r\n </mat-form-field>\r\n\r\n <button mat-mini-fab color=\"primary\" (click)=\"updateSetting(setting)\" style=\"margin-right:10px;\"><mat-icon>done_all</mat-icon></button>\r\n\r\n <mat-label style=\"font-size: small;\">Last Updated by {{setting.updatedBy}} on {{setting.updatedDate | date: 'dd MMM yy HH:mm'}}</mat-label>\r\n\r\n </div>\r\n\r\n</div>\r\n\r\n", styles: [".mat-mini-fab{width:32px;height:32px}.mat-mini-fab mat-icon{font-size:16px;margin-top:-3px}\n"], dependencies: [{ kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.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: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i8.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: "pipe", type: i4.DatePipe, name: "date" }] });
58
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SettingsComponent, decorators: [{
59
+ type: Component,
60
+ args: [{ selector: 'spa-settings', template: "<h4>Settings</h4>\r\n<hr>\r\n\r\n<div class=\"container\">\r\n\r\n <div class=\"row justify-content-between\" style=\"padding-bottom: 10px;padding-left:10px\">\r\n\r\n <div class=\"col-2\">\r\n <!-- <button mat-raised-button (click)=\"addSetting()\">New Setting</button> -->\r\n </div>\r\n <div class=\"col-2\">\r\n <button mat-raised-button (click)=\"loadSettings()\">Refresh</button>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"tin-row align-items-center mt-1 mb-1\" style=\"margin-left:10px\" *ngFor=\"let setting of settings\">\r\n\r\n <mat-form-field style=\"width: 500px; font-size: 14px;\">\r\n <mat-label>{{setting.sName}}</mat-label>\r\n <input matInput autocomplete=\"off\" [(ngModel)]=\"setting.sValue\" >\r\n </mat-form-field>\r\n\r\n <button mat-mini-fab color=\"primary\" (click)=\"updateSetting(setting)\" style=\"margin-right:10px;\"><mat-icon>done_all</mat-icon></button>\r\n\r\n <mat-label style=\"font-size: small;\">Last Updated by {{setting.updatedBy}} on {{setting.updatedDate | date: 'dd MMM yy HH:mm'}}</mat-label>\r\n\r\n </div>\r\n\r\n</div>\r\n\r\n", styles: [".mat-mini-fab{width:32px;height:32px}.mat-mini-fab mat-icon{font-size:16px;margin-top:-3px}\n"] }]
61
+ }], ctorParameters: function () { return [{ type: i1.DataServiceLib }, { type: i2.MessageService }]; } });
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvc2V0dGluZ3Mvc2V0dGluZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvc2V0dGluZ3Mvc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7OztBQVVsRCxNQUFNLE9BQU8saUJBQWlCO0lBRTVCLFlBQW9CLFdBQTJCLEVBQVUsY0FBOEI7UUFBbkUsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBTXZGLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBRWpCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO0lBUnNFLENBQUM7SUFFNUYsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBTUQsV0FBVyxDQUFDLFdBQW1CO1FBQzdCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMxRCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUM3RCxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQztRQUM5QixDQUFDLENBQ0YsQ0FBQztJQUVKLENBQUM7SUFFRCxhQUFhLENBQUMsT0FBTztRQUVuQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBd0IsRUFBRSxFQUFFO1lBQ3JGLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1lBRTFCLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRTtnQkFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsV0FBVyxPQUFPLENBQUMsS0FBSyxVQUFVLENBQUMsQ0FBQztnQkFDOUQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2FBRXJCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDNUQ7UUFFSCxDQUFDLENBQUMsQ0FBQztJQUVMLENBQUM7SUFBQSxDQUFDO0lBRUYsVUFBVTtRQUVSLHNEQUFzRDtRQUN0RCxxQkFBcUI7UUFDckIsY0FBYztRQUNkLE1BQU07UUFFTixrREFBa0Q7UUFDbEQsK0JBQStCO1FBQy9CLHdCQUF3QjtRQUN4QixNQUFNO1FBQ04sTUFBTTtRQUNOLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFFckQsQ0FBQzs7OEdBeERVLGlCQUFpQjtrR0FBakIsaUJBQWlCLG9EQ1Y5Qix3bUNBK0JBOzJGRHJCYSxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0UsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERhdGFTZXJ2aWNlTGliIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGF0YWxpYi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tZXNzYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcGlSZXNwb25zZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvQ2xhc3Nlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NwYS1zZXR0aW5ncycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NldHRpbmdzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zZXR0aW5ncy5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFNldHRpbmdzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkYXRhU2VydmljZTogRGF0YVNlcnZpY2VMaWIsIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvYWRTZXR0aW5ncygpO1xyXG4gIH1cclxuXHJcbiAgX2ZpbHRlclRleHQgPSBcIlwiO1xyXG4gIHNldHRpbmdzO1xyXG4gIGlzUHJvY2Vzc2luZyA9IGZhbHNlO1xyXG5cclxuICBhcHBseUZpbHRlcihmaWx0ZXJWYWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnNldHRpbmdzLmZpbHRlciA9IGZpbHRlclZhbHVlLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xyXG4gIH1cclxuXHJcbiAgbG9hZFNldHRpbmdzKCl7XHJcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLkdldFNldHRpbmcoXCJhbGxcIiwgXCJcIikuc3Vic2NyaWJlKChhcGlSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MgPSBhcGlSZXNwb25zZTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgfVxyXG5cclxuICB1cGRhdGVTZXR0aW5nKHNldHRpbmcpIHtcclxuXHJcbiAgICB0aGlzLmlzUHJvY2Vzc2luZyA9IHRydWU7XHJcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLlVwZGF0ZVNldHRpbmcoc2V0dGluZywgXCJlZGl0XCIpLnN1YnNjcmliZSgoYXBpUmVzcG9uc2U6IEFwaVJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIHRoaXMuaXNQcm9jZXNzaW5nID0gZmFsc2U7XHJcblxyXG4gICAgICBpZiAoYXBpUmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoYFNldHRpbmcgJHtzZXR0aW5nLnNOYW1lfSBVcGRhdGVkYCk7XHJcbiAgICAgICAgdGhpcy5sb2FkU2V0dGluZ3MoKTtcclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChcIkVycm9yOiBcIiArIGFwaVJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfSk7XHJcblxyXG4gIH07XHJcblxyXG4gIGFkZFNldHRpbmcoKSB7XHJcblxyXG4gICAgLy8gY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihhZGRSb2xlRGlhbG9nLCB7XHJcbiAgICAvLyAgIHdpZHRoOiBcIjExMDBweFwiLFxyXG4gICAgLy8gICBkYXRhOiBcIlwiLFxyXG4gICAgLy8gfSk7XHJcblxyXG4gICAgLy8gZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgIC8vICAgaWYgKHJlc3VsdCA9PSBcInN1Y2Nlc3NcIikge1xyXG4gICAgLy8gICAgIHRoaXMubG9hZFJvbGVzKCk7XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH0pO1xyXG4gICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChcIkZlYXR1cmUgbm90IEF2YWlsYWJsZVwiKTtcclxuXHJcbiAgfVxyXG5cclxufVxyXG4iLCI8aDQ+U2V0dGluZ3M8L2g0PlxyXG48aHI+XHJcblxyXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LWJldHdlZW5cIiBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAxMHB4O3BhZGRpbmctbGVmdDoxMHB4XCI+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC0yXCI+XHJcbiAgICAgIDwhLS0gPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiYWRkU2V0dGluZygpXCI+TmV3IFNldHRpbmc8L2J1dHRvbj4gLS0+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMlwiPlxyXG4gICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJsb2FkU2V0dGluZ3MoKVwiPlJlZnJlc2g8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInRpbi1yb3cgYWxpZ24taXRlbXMtY2VudGVyIG10LTEgbWItMVwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6MTBweFwiICpuZ0Zvcj1cImxldCBzZXR0aW5nIG9mIHNldHRpbmdzXCI+XHJcblxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIHN0eWxlPVwid2lkdGg6IDUwMHB4OyBmb250LXNpemU6IDE0cHg7XCI+XHJcbiAgICAgIDxtYXQtbGFiZWw+e3tzZXR0aW5nLnNOYW1lfX08L21hdC1sYWJlbD5cclxuICAgICAgPGlucHV0IG1hdElucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIFsobmdNb2RlbCldPVwic2V0dGluZy5zVmFsdWVcIiA+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICAgIDxidXR0b24gbWF0LW1pbmktZmFiIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJ1cGRhdGVTZXR0aW5nKHNldHRpbmcpXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6MTBweDtcIj48bWF0LWljb24+ZG9uZV9hbGw8L21hdC1pY29uPjwvYnV0dG9uPlxyXG5cclxuICAgIDxtYXQtbGFiZWwgc3R5bGU9XCJmb250LXNpemU6IHNtYWxsO1wiPkxhc3QgVXBkYXRlZCBieSB7e3NldHRpbmcudXBkYXRlZEJ5fX0gb24ge3tzZXR0aW5nLnVwZGF0ZWREYXRlIHwgZGF0ZTogJ2RkIE1NTSB5eSBISDptbSd9fTwvbWF0LWxhYmVsPlxyXG5cclxuICA8L2Rpdj5cclxuXHJcbjwvZGl2PlxyXG5cclxuIl19
@@ -0,0 +1,50 @@
1
+ import { Component } from '@angular/core';
2
+ import { User, Profile, Account } from '../../classes/Classes';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../services/http.service";
5
+ import * as i2 from "../../services/message.service";
6
+ import * as i3 from "../../services/datalib.service";
7
+ import * as i4 from "../../services/auth.service";
8
+ import * as i5 from "@angular/material/button";
9
+ import * as i6 from "../text/text.component";
10
+ export class SignupComponent {
11
+ constructor(httpService, messageService, dataService, authService) {
12
+ this.httpService = httpService;
13
+ this.messageService = messageService;
14
+ this.dataService = dataService;
15
+ this.authService = authService;
16
+ this.isProcessing = false;
17
+ this.user = new User();
18
+ this.profile = new Profile();
19
+ this.account = new Account();
20
+ }
21
+ ngOnInit() {
22
+ this.account.user = this.user;
23
+ this.account.profile = this.profile;
24
+ }
25
+ create() {
26
+ this.profile.userName = this.user.userName;
27
+ this.isProcessing = true;
28
+ this.dataService.RegisterAccount(this.account).subscribe((apiResponse) => {
29
+ this.isProcessing = false;
30
+ if (apiResponse.message == "success") {
31
+ this.messageService.toast("Account Created");
32
+ this.user = new User();
33
+ this.profile = new Profile();
34
+ }
35
+ else {
36
+ this.messageService.toast("Error: " + apiResponse.message);
37
+ }
38
+ }, (error) => {
39
+ this.isProcessing = false;
40
+ this.messageService.toast(this.httpService.Error(error));
41
+ });
42
+ }
43
+ }
44
+ SignupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SignupComponent, deps: [{ token: i1.HttpService }, { token: i2.MessageService }, { token: i3.DataServiceLib }, { token: i4.AuthService }], target: i0.ɵɵFactoryTarget.Component });
45
+ SignupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: SignupComponent, selector: "spa-signup", ngImport: i0, template: "\r\n<h4 style=\"padding-top: 30px;\">Sign up</h4>\r\n\r\n<hr/>\r\n\r\n\r\n<div class=\"container tin-grid\" style=\"font-size:14px;\">\r\n\r\n <spa-text display=\"FirstName\" [(value)]=\"account.profile.firstName\" ></spa-text>\r\n\r\n <spa-text display=\"LastName\" [(value)]=\"account.profile.lastName\" ></spa-text>\r\n\r\n <spa-text display=\"Username\" [(value)]=\"account.profile.userName\"></spa-text>\r\n\r\n &nbsp;\r\n\r\n <spa-text display=\"Password\" [(value)]=\"account.profile.password\" format=\"password\" ></spa-text>\r\n\r\n <spa-text display=\"Confirm Password\" [(value)]=\"confirmPassword\" format=\"password\" ></spa-text>\r\n\r\n <div class=\"span-col-center\">\r\n <button mat-raised-button color=\"primary\" (click)=\"create()\" cdkFocusInitial>Submit</button>\r\n </div>\r\n\r\n\r\n</div>\r\n\r\n\r\n", styles: [""], dependencies: [{ kind: "component", type: i5.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: i6.TextComponent, selector: "spa-text", inputs: ["readonly", "hint", "display", "placeholder", "value", "format", "type", "rows", "width", "options", "optionValue", "required", "min", "max", "regex", "suffix", "infoMessage"], outputs: ["valueChange", "leave", "enterPress", "infoClick"] }] });
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SignupComponent, decorators: [{
47
+ type: Component,
48
+ args: [{ selector: 'spa-signup', template: "\r\n<h4 style=\"padding-top: 30px;\">Sign up</h4>\r\n\r\n<hr/>\r\n\r\n\r\n<div class=\"container tin-grid\" style=\"font-size:14px;\">\r\n\r\n <spa-text display=\"FirstName\" [(value)]=\"account.profile.firstName\" ></spa-text>\r\n\r\n <spa-text display=\"LastName\" [(value)]=\"account.profile.lastName\" ></spa-text>\r\n\r\n <spa-text display=\"Username\" [(value)]=\"account.profile.userName\"></spa-text>\r\n\r\n &nbsp;\r\n\r\n <spa-text display=\"Password\" [(value)]=\"account.profile.password\" format=\"password\" ></spa-text>\r\n\r\n <spa-text display=\"Confirm Password\" [(value)]=\"confirmPassword\" format=\"password\" ></spa-text>\r\n\r\n <div class=\"span-col-center\">\r\n <button mat-raised-button color=\"primary\" (click)=\"create()\" cdkFocusInitial>Submit</button>\r\n </div>\r\n\r\n\r\n</div>\r\n\r\n\r\n" }]
49
+ }], ctorParameters: function () { return [{ type: i1.HttpService }, { type: i2.MessageService }, { type: i3.DataServiceLib }, { type: i4.AuthService }]; } });
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbnVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9jb21wb25lbnRzL3NpZ251cC9zaWdudXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvc2lnbnVwL3NpZ251cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBS2xELE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBZSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7OztBQVE1RSxNQUFNLE9BQU8sZUFBZTtJQUcxQixZQUFvQixXQUF3QixFQUFVLGNBQThCLEVBQVUsV0FBMkIsRUFBVSxXQUF3QjtRQUF2SSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBUTNKLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBQzlCLFNBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2xCLFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRXhCLFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBWndJLENBQUM7SUFFakssUUFBUTtRQUVOLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QyxDQUFDO0lBV0gsTUFBTTtRQUVKLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBRTNDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQ3RELENBQUMsV0FBd0IsRUFBRSxFQUFFO1lBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1lBRTFCLElBQUksV0FBVyxDQUFDLE9BQU8sSUFBSSxTQUFTLEVBQUU7Z0JBQ3BDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBRTdDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO2FBRTlCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDNUQ7UUFDSCxDQUFDLEVBQ0QsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNSLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1lBQzFCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDM0QsQ0FBQyxDQUNGLENBQUM7SUFDTixDQUFDOzs0R0E1Q1ksZUFBZTtnR0FBZixlQUFlLGtEQ2I1Qiw0MUJBNEJBOzJGRGZhLGVBQWU7a0JBTDNCLFNBQVM7K0JBQ0UsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbi8vIGltcG9ydCB7IEh0dHBTZXJ2aWNlLCBBcGlSZXNwb25zZSB9IGZyb20gJ3Rpbi1jb3JlJztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tZXNzYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEYXRhU2VydmljZUxpYiB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RhdGFsaWIuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXNlciwgUHJvZmlsZSwgQWNjb3VudCwgQXBpUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9jbGFzc2VzL0NsYXNzZXMnO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2h0dHAuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NwYS1zaWdudXAnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zaWdudXAuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NpZ251cC5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFNpZ251cENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHBTZXJ2aWNlOiBIdHRwU2VydmljZSwgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsIHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlTGliLCBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSwpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuXHJcbiAgICB0aGlzLmFjY291bnQudXNlciA9IHRoaXMudXNlcjtcclxuICAgIHRoaXMuYWNjb3VudC5wcm9maWxlID0gdGhpcy5wcm9maWxlO1xyXG4gIH1cclxuXHJcbiAgaXNQcm9jZXNzaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdXNlciA9IG5ldyBVc2VyKCk7XHJcbiAgcHJvZmlsZSA9IG5ldyBQcm9maWxlKCk7XHJcblxyXG4gIGFjY291bnQgPSBuZXcgQWNjb3VudCgpO1xyXG5cclxuICBjb25maXJtUGFzc3dvcmQ6IHN0cmluZztcclxuXHJcblxyXG5jcmVhdGUoKXtcclxuXHJcbiAgdGhpcy5wcm9maWxlLnVzZXJOYW1lID0gdGhpcy51c2VyLnVzZXJOYW1lO1xyXG5cclxuICB0aGlzLmlzUHJvY2Vzc2luZyA9IHRydWU7XHJcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLlJlZ2lzdGVyQWNjb3VudCh0aGlzLmFjY291bnQpLnN1YnNjcmliZShcclxuICAgICAgKGFwaVJlc3BvbnNlOiBBcGlSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNQcm9jZXNzaW5nID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGlmIChhcGlSZXNwb25zZS5tZXNzYWdlID09IFwic3VjY2Vzc1wiKSB7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiQWNjb3VudCBDcmVhdGVkXCIpO1xyXG5cclxuICAgICAgICAgIHRoaXMudXNlciA9IG5ldyBVc2VyKCk7XHJcbiAgICAgICAgICB0aGlzLnByb2ZpbGUgPSBuZXcgUHJvZmlsZSgpO1xyXG5cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChcIkVycm9yOiBcIiArIGFwaVJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1Byb2Nlc3NpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KHRoaXMuaHR0cFNlcnZpY2UuRXJyb3IoZXJyb3IpKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxufVxyXG5cclxuXHJcblxyXG59XHJcbiIsIlxyXG48aDQgc3R5bGU9XCJwYWRkaW5nLXRvcDogMzBweDtcIj5TaWduIHVwPC9oND5cclxuXHJcbjxoci8+XHJcblxyXG5cclxuPGRpdiBjbGFzcz1cImNvbnRhaW5lciB0aW4tZ3JpZFwiICBzdHlsZT1cImZvbnQtc2l6ZToxNHB4O1wiPlxyXG5cclxuICAgIDxzcGEtdGV4dCBkaXNwbGF5PVwiRmlyc3ROYW1lXCIgWyh2YWx1ZSldPVwiYWNjb3VudC5wcm9maWxlLmZpcnN0TmFtZVwiID48L3NwYS10ZXh0PlxyXG5cclxuICAgIDxzcGEtdGV4dCBkaXNwbGF5PVwiTGFzdE5hbWVcIiBbKHZhbHVlKV09XCJhY2NvdW50LnByb2ZpbGUubGFzdE5hbWVcIiA+PC9zcGEtdGV4dD5cclxuXHJcbiAgICA8c3BhLXRleHQgZGlzcGxheT1cIlVzZXJuYW1lXCIgWyh2YWx1ZSldPVwiYWNjb3VudC5wcm9maWxlLnVzZXJOYW1lXCI+PC9zcGEtdGV4dD5cclxuXHJcbiAgICAmbmJzcDtcclxuXHJcbiAgICA8c3BhLXRleHQgZGlzcGxheT1cIlBhc3N3b3JkXCIgWyh2YWx1ZSldPVwiYWNjb3VudC5wcm9maWxlLnBhc3N3b3JkXCIgZm9ybWF0PVwicGFzc3dvcmRcIiA+PC9zcGEtdGV4dD5cclxuXHJcbiAgICA8c3BhLXRleHQgZGlzcGxheT1cIkNvbmZpcm0gUGFzc3dvcmRcIiBbKHZhbHVlKV09XCJjb25maXJtUGFzc3dvcmRcIiBmb3JtYXQ9XCJwYXNzd29yZFwiID48L3NwYS10ZXh0PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJzcGFuLWNvbC1jZW50ZXJcIj5cclxuICAgICAgPGJ1dHRvbiAgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImNyZWF0ZSgpXCIgIGNka0ZvY3VzSW5pdGlhbD5TdWJtaXQ8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuXHJcbjwvZGl2PlxyXG5cclxuXHJcbiJdfQ==
@@ -0,0 +1,90 @@
1
+ import { Component, Input, ViewChild } from '@angular/core';
2
+ import { STEPPER_GLOBAL_OPTIONS } from '@angular/cdk/stepper';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "@angular/material/stepper";
6
+ export class StepsComponent {
7
+ constructor() {
8
+ this.value = "";
9
+ }
10
+ ngOnInit() {
11
+ }
12
+ ngAfterViewInit() {
13
+ }
14
+ ngOnChanges() {
15
+ this.pushSteps();
16
+ }
17
+ setStepper() {
18
+ if (this.value == "")
19
+ return;
20
+ this.stepper.selectedIndex = 0;
21
+ switch (this.value) {
22
+ case "Draft":
23
+ this.stepper.selectedIndex = 0;
24
+ break;
25
+ case "Head Approval":
26
+ this.pushStepper(1);
27
+ break;
28
+ case "CE Approval":
29
+ this.pushStepper(2);
30
+ break;
31
+ case "Booking":
32
+ this.pushStepper(3);
33
+ break;
34
+ case "BTA Approval":
35
+ this.pushStepper(4);
36
+ break;
37
+ case "Travel":
38
+ this.pushStepper(5);
39
+ break;
40
+ case "BTR Approval":
41
+ this.pushStepper(6);
42
+ break;
43
+ case "Travel Closure":
44
+ this.pushStepper(7);
45
+ break;
46
+ }
47
+ }
48
+ pushStepper(count) {
49
+ for (let index = 0; index < count + 1; index++) {
50
+ // const element = array[index];
51
+ this.stepper.selectedIndex = index;
52
+ }
53
+ }
54
+ pushSteps() {
55
+ if (this.steps.length == 0)
56
+ return;
57
+ if (this.value == "")
58
+ return;
59
+ this.stepper.selectedIndex = 0;
60
+ let i = 0;
61
+ for (let step of this.steps) {
62
+ if (step.name != this.value) {
63
+ this.stepper.selectedIndex = i;
64
+ i++;
65
+ }
66
+ else {
67
+ this.stepper.selectedIndex = i;
68
+ break;
69
+ }
70
+ }
71
+ }
72
+ }
73
+ StepsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: StepsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
74
+ StepsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: StepsComponent, selector: "spa-steps", inputs: { value: "value", steps: "steps" }, providers: [{
75
+ provide: STEPPER_GLOBAL_OPTIONS, useValue: { displayDefaultIndicatorType: false }
76
+ }], viewQueries: [{ propertyName: "stepper", first: true, predicate: ["stepper"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "\r\n\r\n\r\n<!-- <mat-horizontal-stepper class=\"test\" labelPosition=\"bottom\" #stepper>\r\n <mat-step [editable]=\"false\" label=\"Draft\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"Head Approval\" > </mat-step>\r\n <mat-step [editable]=\"false\" label=\"CE Approval\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"Booking\" state=\"booking\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"BTA Approval\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"Travel\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"BTR Approval\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"Closure\"> </mat-step>\r\n <ng-template matStepperIcon=\"booking\"> <mat-icon>forum</mat-icon> </ng-template>\r\n</mat-horizontal-stepper> -->\r\n\r\n<mat-horizontal-stepper class=\"transparent\" labelPosition=\"bottom\" #stepper>\r\n\r\n <mat-step *ngFor=\"let row of steps\"\r\n [editable]=\"false\" [label]=\"row.name\">\r\n </mat-step>\r\n\r\n <!-- <ng-template *ngFor=\"let row of steps\"\r\n [matStepperIcon]=\"row.name\"> <mat-icon>{{row.icon}}</mat-icon>\r\n </ng-template> -->\r\n\r\n <!-- <ng-template matStepperIcon=\"booking\">\r\n <mat-icon>call_end</mat-icon>\r\n </ng-template> -->\r\n\r\n <!-- <ng-template ngFor let-xb [ngForOf]=\"steps\" matStepperIcon=\"Booking\"> <mat-icon>forum</mat-icon>\r\n\r\n </ng-template> -->\r\n\r\n</mat-horizontal-stepper>\r\n", styles: [".transparent{background-color:#0000}:host ::ng-deep .mat-step-header{padding:5px!important}:host ::ng-deep .mat-stepper-horizontal-line{min-width:5px!important}:host ::ng-deep .mat-horizontal-content-container{padding:0!important}:host ::ng-deep .mat-horizontal-stepper-header{pointer-events:none!important}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i2.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { kind: "component", type: i2.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["selectedIndex", "disableRipple", "color", "labelPosition", "headerPosition", "animationDuration"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }] });
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: StepsComponent, decorators: [{
78
+ type: Component,
79
+ args: [{ selector: 'spa-steps', providers: [{
80
+ provide: STEPPER_GLOBAL_OPTIONS, useValue: { displayDefaultIndicatorType: false }
81
+ }], template: "\r\n\r\n\r\n<!-- <mat-horizontal-stepper class=\"test\" labelPosition=\"bottom\" #stepper>\r\n <mat-step [editable]=\"false\" label=\"Draft\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"Head Approval\" > </mat-step>\r\n <mat-step [editable]=\"false\" label=\"CE Approval\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"Booking\" state=\"booking\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"BTA Approval\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"Travel\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"BTR Approval\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"Closure\"> </mat-step>\r\n <ng-template matStepperIcon=\"booking\"> <mat-icon>forum</mat-icon> </ng-template>\r\n</mat-horizontal-stepper> -->\r\n\r\n<mat-horizontal-stepper class=\"transparent\" labelPosition=\"bottom\" #stepper>\r\n\r\n <mat-step *ngFor=\"let row of steps\"\r\n [editable]=\"false\" [label]=\"row.name\">\r\n </mat-step>\r\n\r\n <!-- <ng-template *ngFor=\"let row of steps\"\r\n [matStepperIcon]=\"row.name\"> <mat-icon>{{row.icon}}</mat-icon>\r\n </ng-template> -->\r\n\r\n <!-- <ng-template matStepperIcon=\"booking\">\r\n <mat-icon>call_end</mat-icon>\r\n </ng-template> -->\r\n\r\n <!-- <ng-template ngFor let-xb [ngForOf]=\"steps\" matStepperIcon=\"Booking\"> <mat-icon>forum</mat-icon>\r\n\r\n </ng-template> -->\r\n\r\n</mat-horizontal-stepper>\r\n", styles: [".transparent{background-color:#0000}:host ::ng-deep .mat-step-header{padding:5px!important}:host ::ng-deep .mat-stepper-horizontal-line{min-width:5px!important}:host ::ng-deep .mat-horizontal-content-container{padding:0!important}:host ::ng-deep .mat-horizontal-stepper-header{pointer-events:none!important}\n"] }]
82
+ }], ctorParameters: function () { return []; }, propDecorators: { stepper: [{
83
+ type: ViewChild,
84
+ args: ['stepper']
85
+ }], value: [{
86
+ type: Input
87
+ }], steps: [{
88
+ type: Input
89
+ }] } });
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvc3RlcHMvc3RlcHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvc3RlcHMvc3RlcHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7OztBQVc5RCxNQUFNLE9BQU8sY0FBYztJQUV6QjtRQWVTLFVBQUssR0FBRyxFQUFFLENBQUM7SUFmSixDQUFDO0lBRWpCLFFBQVE7SUFFUixDQUFDO0lBRUQsZUFBZTtJQUVmLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFNRCxVQUFVO1FBRVIsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFBRSxPQUFPO1FBRzdCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQztRQUUvQixRQUFRLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFJbEIsS0FBSyxPQUFPO2dCQUNWLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQztnQkFDL0IsTUFBTTtZQUVSLEtBQUssZUFBZTtnQkFDbEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtnQkFDbkIsTUFBTTtZQUVSLEtBQUssYUFBYTtnQkFDaEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtnQkFDbkIsTUFBTTtZQUVSLEtBQUssU0FBUztnQkFDWixJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFBO2dCQUNuQixNQUFNO1lBRVIsS0FBSyxjQUFjO2dCQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFBO2dCQUNuQixNQUFNO1lBRVIsS0FBSyxRQUFRO2dCQUNYLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBQ25CLE1BQU07WUFFUixLQUFLLGNBQWM7Z0JBQ2pCLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBQ25CLE1BQU07WUFFUixLQUFLLGdCQUFnQjtnQkFDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtnQkFDbkIsTUFBTTtTQUVUO0lBRUgsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFhO1FBRXZCLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQzlDLGdDQUFnQztZQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7U0FDcEM7SUFFSCxDQUFDO0lBRUQsU0FBUztRQUVQLElBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQztZQUFFLE9BQU87UUFDbEMsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFBRSxPQUFPO1FBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQztRQUcvQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFVixLQUFLLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFFM0IsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBRTNCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQztnQkFDL0IsQ0FBQyxFQUFFLENBQUM7YUFFTDtpQkFBTTtnQkFFTCxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUM7Z0JBQy9CLE1BQU07YUFFUDtTQUNGO0lBRUgsQ0FBQzs7MkdBcEdVLGNBQWM7K0ZBQWQsY0FBYyxnRkFKZCxDQUFDO1lBQ1YsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFFBQVEsRUFBRSxFQUFFLDJCQUEyQixFQUFFLEtBQUssRUFBRTtTQUNsRixDQUFDLG1KQ1hKLDg1Q0FrQ0E7MkZEckJhLGNBQWM7a0JBUjFCLFNBQVM7K0JBQ0UsV0FBVyxhQUdWLENBQUM7NEJBQ1YsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFFBQVEsRUFBRSxFQUFFLDJCQUEyQixFQUFFLEtBQUssRUFBRTt5QkFDbEYsQ0FBQzswRUFrQm9CLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkFDWCxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0U3RlcHBlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3N0ZXBwZXInO1xyXG5pbXBvcnQgeyBTVEVQUEVSX0dMT0JBTF9PUFRJT05TIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3N0ZXBwZXInO1xyXG5pbXBvcnQgeyBTdGVwIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9DbGFzc2VzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc3BhLXN0ZXBzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc3RlcHMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3N0ZXBzLmNvbXBvbmVudC5jc3MnXSxcclxuICBwcm92aWRlcnM6IFt7XHJcbiAgICBwcm92aWRlOiBTVEVQUEVSX0dMT0JBTF9PUFRJT05TLCB1c2VWYWx1ZTogeyBkaXNwbGF5RGVmYXVsdEluZGljYXRvclR5cGU6IGZhbHNlIH1cclxuICB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3RlcHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoKSB7XHJcbiAgICB0aGlzLnB1c2hTdGVwcygpO1xyXG4gIH1cclxuXHJcbiAgQFZpZXdDaGlsZCgnc3RlcHBlcicpIHN0ZXBwZXI6IE1hdFN0ZXBwZXI7XHJcbiAgQElucHV0KCkgdmFsdWUgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIHN0ZXBzOiBTdGVwW107XHJcblxyXG4gIHNldFN0ZXBwZXIoKSB7XHJcblxyXG4gICAgaWYgKHRoaXMudmFsdWUgPT0gXCJcIikgcmV0dXJuO1xyXG5cclxuXHJcbiAgICB0aGlzLnN0ZXBwZXIuc2VsZWN0ZWRJbmRleCA9IDA7XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLnZhbHVlKSB7XHJcblxyXG5cclxuXHJcbiAgICAgIGNhc2UgXCJEcmFmdFwiOlxyXG4gICAgICAgIHRoaXMuc3RlcHBlci5zZWxlY3RlZEluZGV4ID0gMDtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgXCJIZWFkIEFwcHJvdmFsXCI6XHJcbiAgICAgICAgdGhpcy5wdXNoU3RlcHBlcigxKVxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBcIkNFIEFwcHJvdmFsXCI6XHJcbiAgICAgICAgdGhpcy5wdXNoU3RlcHBlcigyKVxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBcIkJvb2tpbmdcIjpcclxuICAgICAgICB0aGlzLnB1c2hTdGVwcGVyKDMpXHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFwiQlRBIEFwcHJvdmFsXCI6XHJcbiAgICAgICAgdGhpcy5wdXNoU3RlcHBlcig0KVxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBcIlRyYXZlbFwiOlxyXG4gICAgICAgIHRoaXMucHVzaFN0ZXBwZXIoNSlcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgXCJCVFIgQXBwcm92YWxcIjpcclxuICAgICAgICB0aGlzLnB1c2hTdGVwcGVyKDYpXHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFwiVHJhdmVsIENsb3N1cmVcIjpcclxuICAgICAgICB0aGlzLnB1c2hTdGVwcGVyKDcpXHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHB1c2hTdGVwcGVyKGNvdW50OiBudW1iZXIpIHtcclxuXHJcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQgKyAxOyBpbmRleCsrKSB7XHJcbiAgICAgIC8vIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XHJcbiAgICAgIHRoaXMuc3RlcHBlci5zZWxlY3RlZEluZGV4ID0gaW5kZXg7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcHVzaFN0ZXBzKCl7XHJcblxyXG4gICAgaWYodGhpcy5zdGVwcy5sZW5ndGggPT0gMCkgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMudmFsdWUgPT0gXCJcIikgcmV0dXJuO1xyXG4gICAgdGhpcy5zdGVwcGVyLnNlbGVjdGVkSW5kZXggPSAwO1xyXG5cclxuXHJcbiAgICBsZXQgaSA9IDA7XHJcblxyXG4gICAgZm9yIChsZXQgc3RlcCBvZiB0aGlzLnN0ZXBzKSB7XHJcblxyXG4gICAgICBpZiAoc3RlcC5uYW1lICE9IHRoaXMudmFsdWUpIHtcclxuXHJcbiAgICAgICAgdGhpcy5zdGVwcGVyLnNlbGVjdGVkSW5kZXggPSBpO1xyXG4gICAgICAgIGkrKztcclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgIHRoaXMuc3RlcHBlci5zZWxlY3RlZEluZGV4ID0gaTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxufVxyXG4iLCJcclxuXHJcblxyXG48IS0tIDxtYXQtaG9yaXpvbnRhbC1zdGVwcGVyIGNsYXNzPVwidGVzdFwiIGxhYmVsUG9zaXRpb249XCJib3R0b21cIiAgI3N0ZXBwZXI+XHJcbiAgPG1hdC1zdGVwIFtlZGl0YWJsZV09XCJmYWxzZVwiIGxhYmVsPVwiRHJhZnRcIj4gPC9tYXQtc3RlcD5cclxuICA8bWF0LXN0ZXAgW2VkaXRhYmxlXT1cImZhbHNlXCIgbGFiZWw9XCJIZWFkIEFwcHJvdmFsXCIgPiA8L21hdC1zdGVwPlxyXG4gIDxtYXQtc3RlcCBbZWRpdGFibGVdPVwiZmFsc2VcIiBsYWJlbD1cIkNFIEFwcHJvdmFsXCI+IDwvbWF0LXN0ZXA+XHJcbiAgPG1hdC1zdGVwIFtlZGl0YWJsZV09XCJmYWxzZVwiIGxhYmVsPVwiQm9va2luZ1wiIHN0YXRlPVwiYm9va2luZ1wiPiA8L21hdC1zdGVwPlxyXG4gIDxtYXQtc3RlcCBbZWRpdGFibGVdPVwiZmFsc2VcIiBsYWJlbD1cIkJUQSBBcHByb3ZhbFwiPiA8L21hdC1zdGVwPlxyXG4gIDxtYXQtc3RlcCBbZWRpdGFibGVdPVwiZmFsc2VcIiBsYWJlbD1cIlRyYXZlbFwiPiA8L21hdC1zdGVwPlxyXG4gIDxtYXQtc3RlcCBbZWRpdGFibGVdPVwiZmFsc2VcIiBsYWJlbD1cIkJUUiBBcHByb3ZhbFwiPiA8L21hdC1zdGVwPlxyXG4gIDxtYXQtc3RlcCBbZWRpdGFibGVdPVwiZmFsc2VcIiBsYWJlbD1cIkNsb3N1cmVcIj4gPC9tYXQtc3RlcD5cclxuICA8bmctdGVtcGxhdGUgbWF0U3RlcHBlckljb249XCJib29raW5nXCI+IDxtYXQtaWNvbj5mb3J1bTwvbWF0LWljb24+IDwvbmctdGVtcGxhdGU+XHJcbjwvbWF0LWhvcml6b250YWwtc3RlcHBlcj4gLS0+XHJcblxyXG48bWF0LWhvcml6b250YWwtc3RlcHBlciBjbGFzcz1cInRyYW5zcGFyZW50XCIgbGFiZWxQb3NpdGlvbj1cImJvdHRvbVwiICAgI3N0ZXBwZXI+XHJcblxyXG4gIDxtYXQtc3RlcCAqbmdGb3I9XCJsZXQgcm93IG9mIHN0ZXBzXCJcclxuICAgIFtlZGl0YWJsZV09XCJmYWxzZVwiICBbbGFiZWxdPVwicm93Lm5hbWVcIj5cclxuICA8L21hdC1zdGVwPlxyXG5cclxuICA8IS0tIDxuZy10ZW1wbGF0ZSAqbmdGb3I9XCJsZXQgcm93IG9mIHN0ZXBzXCJcclxuICAgIFttYXRTdGVwcGVySWNvbl09XCJyb3cubmFtZVwiPiA8bWF0LWljb24+e3tyb3cuaWNvbn19PC9tYXQtaWNvbj5cclxuICA8L25nLXRlbXBsYXRlPiAtLT5cclxuXHJcbiAgPCEtLSA8bmctdGVtcGxhdGUgbWF0U3RlcHBlckljb249XCJib29raW5nXCI+XHJcbiAgICA8bWF0LWljb24+Y2FsbF9lbmQ8L21hdC1pY29uPlxyXG4gIDwvbmctdGVtcGxhdGU+IC0tPlxyXG5cclxuICA8IS0tIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQteGIgW25nRm9yT2ZdPVwic3RlcHNcIiBtYXRTdGVwcGVySWNvbj1cIkJvb2tpbmdcIj4gPG1hdC1pY29uPmZvcnVtPC9tYXQtaWNvbj5cclxuXHJcbiAgPC9uZy10ZW1wbGF0ZT4gLS0+XHJcblxyXG48L21hdC1ob3Jpem9udGFsLXN0ZXBwZXI+XHJcbiJdfQ==