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,26 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { UserRoutingModule } from './user-routing.module';
4
+ import { SpaUserModule } from '../spa-user.module';
5
+ import * as i0 from "@angular/core";
6
+ export class UserModule {
7
+ }
8
+ UserModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: UserModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
+ UserModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: UserModule, imports: [CommonModule,
10
+ UserRoutingModule,
11
+ SpaUserModule] });
12
+ UserModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: UserModule, imports: [CommonModule,
13
+ UserRoutingModule,
14
+ SpaUserModule] });
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: UserModule, decorators: [{
16
+ type: NgModule,
17
+ args: [{
18
+ declarations: [],
19
+ imports: [
20
+ CommonModule,
21
+ UserRoutingModule,
22
+ SpaUserModule
23
+ ]
24
+ }]
25
+ }] });
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90aW4tc3BhL3NyYy9saWIvbW9kdWxlcy91c2VyL3VzZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFVbkQsTUFBTSxPQUFPLFVBQVU7O3VHQUFWLFVBQVU7d0dBQVYsVUFBVSxZQUxuQixZQUFZO1FBQ1osaUJBQWlCO1FBQ2pCLGFBQWE7d0dBR0osVUFBVSxZQUxuQixZQUFZO1FBQ1osaUJBQWlCO1FBQ2pCLGFBQWE7MkZBR0osVUFBVTtrQkFSdEIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsRUFBRTtvQkFDaEIsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osaUJBQWlCO3dCQUNqQixhQUFhO3FCQUNkO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFVzZXJSb3V0aW5nTW9kdWxlIH0gZnJvbSAnLi91c2VyLXJvdXRpbmcubW9kdWxlJztcclxuaW1wb3J0IHsgU3BhVXNlck1vZHVsZSB9IGZyb20gJy4uL3NwYS11c2VyLm1vZHVsZSc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW10sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgVXNlclJvdXRpbmdNb2R1bGUsXHJcbiAgICBTcGFVc2VyTW9kdWxlXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVXNlck1vZHVsZSB7IH1cclxuIl19
@@ -0,0 +1,17 @@
1
+ import { Pipe } from '@angular/core';
2
+ import { Core } from '../classes/TinCore';
3
+ import * as i0 from "@angular/core";
4
+ export class CamelToWordsPipe {
5
+ transform(value) {
6
+ return Core.camelToWords(value);
7
+ }
8
+ }
9
+ CamelToWordsPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CamelToWordsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
10
+ CamelToWordsPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: CamelToWordsPipe, name: "camelToWords" });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CamelToWordsPipe, decorators: [{
12
+ type: Pipe,
13
+ args: [{
14
+ name: 'camelToWords'
15
+ }]
16
+ }] });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FtZWxUb1dvcmRzLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90aW4tc3BhL3NyYy9saWIvcGlwZXMvY2FtZWxUb1dvcmRzLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQUsxQyxNQUFNLE9BQU8sZ0JBQWdCO0lBRTNCLFNBQVMsQ0FBQyxLQUFhO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDOzs2R0FKVSxnQkFBZ0I7MkdBQWhCLGdCQUFnQjsyRkFBaEIsZ0JBQWdCO2tCQUg1QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxjQUFjO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29yZSB9IGZyb20gJy4uL2NsYXNzZXMvVGluQ29yZSc7XHJcblxyXG5AUGlwZSh7XHJcbiAgbmFtZTogJ2NhbWVsVG9Xb3JkcydcclxufSlcclxuZXhwb3J0IGNsYXNzIENhbWVsVG9Xb3Jkc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuXHJcbiAgdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIENvcmUuY2FtZWxUb1dvcmRzKHZhbHVlKTtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,174 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { BehaviorSubject } from 'rxjs';
3
+ import { Role, Constants } from '../classes/Classes';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/router";
6
+ import * as i2 from "@abacritt/angularx-social-login";
7
+ import * as i3 from "./storage.service";
8
+ import * as i4 from "./http.service";
9
+ import * as i5 from "./message.service";
10
+ import * as i6 from "./log.service";
11
+ export class AuthService {
12
+ constructor(_route, socialService, storage, router, httpService, messageService, logService) {
13
+ this._route = _route;
14
+ this.socialService = socialService;
15
+ this.storage = storage;
16
+ this.router = router;
17
+ this.httpService = httpService;
18
+ this.messageService = messageService;
19
+ this.logService = logService;
20
+ //Logged in
21
+ this.loggedin = false;
22
+ this.loggedinSource = new BehaviorSubject(this.loggedin);
23
+ this.loggedinObserv = this.loggedinSource.asObservable();
24
+ //autoLogin
25
+ this.autoLogin = false;
26
+ this.autoLoginSource = new BehaviorSubject(this.autoLogin);
27
+ this.autoLoginObserv = this.autoLoginSource.asObservable();
28
+ //Token
29
+ this.token = "";
30
+ this.tokenSource = new BehaviorSubject(this.token);
31
+ this.tokenObserv = this.tokenSource.asObservable();
32
+ //TokenExpire
33
+ this.tokenExpire = "";
34
+ this.tokenExpireSource = new BehaviorSubject(this.tokenExpire);
35
+ this.tokenExpireObserv = this.tokenExpireSource.asObservable();
36
+ //Current User
37
+ this.currentUser = "tnyagato";
38
+ this.currentUserSource = new BehaviorSubject(this.currentUser);
39
+ this.currentUserObserv = this.currentUserSource.asObservable();
40
+ //Line Manager
41
+ this.islineManager = false;
42
+ this.isLineManagerSource = new BehaviorSubject(this.islineManager);
43
+ this.isLineManagerObserv = this.isLineManagerSource.asObservable();
44
+ //Roles
45
+ this.currentRole = new Role;
46
+ this.currentRoleSource = new BehaviorSubject(this.currentRole);
47
+ this.myRoleObserv = this.currentRoleSource.asObservable();
48
+ //Logged in FirstName
49
+ this.loggedUserSource = new BehaviorSubject("tnyagato");
50
+ this.loggedUserFullName = this.loggedUserSource.asObservable();
51
+ //TenantName
52
+ this.tenantNameSource = new BehaviorSubject("Tenant Name");
53
+ this.tenantNameObserv = this.tenantNameSource.asObservable();
54
+ }
55
+ clearSession() {
56
+ this.Updateloggedin(false);
57
+ this.UpdateAutoLogin(false);
58
+ this.UpdateRole(new Role());
59
+ this.storage.clear();
60
+ this.socialService.signOut();
61
+ }
62
+ sessionExpired() {
63
+ this.clearSession();
64
+ let url = new URL(window.location.href);
65
+ let path = url.hash.replace("#/", "");
66
+ this.router.navigate(["login"], {
67
+ relativeTo: this._route,
68
+ queryParams: { redirectTo: path },
69
+ queryParamsHandling: 'merge',
70
+ skipLocationChange: false
71
+ });
72
+ }
73
+ logoff() {
74
+ this.clearSession();
75
+ this.router.navigate(["login"]);
76
+ }
77
+ Updateloggedin(loggedin) {
78
+ this.loggedinSource.next(loggedin);
79
+ this.loggedin = loggedin;
80
+ }
81
+ UpdateAutoLogin(autoLogin) {
82
+ this.autoLoginSource.next(autoLogin);
83
+ this.autoLogin = autoLogin;
84
+ }
85
+ UpdateToken(newToken) {
86
+ this.tokenSource.next(newToken);
87
+ }
88
+ UpdateTokenExpire(newTokenExpire) {
89
+ this.tokenExpireSource.next(newTokenExpire);
90
+ }
91
+ UpdateCurrentUser(newUser) {
92
+ this.currentUserSource.next(newUser.toLocaleLowerCase());
93
+ this.currentUser = newUser.toLocaleLowerCase();
94
+ }
95
+ UpdateIsLineManager(manager) {
96
+ this.isLineManagerSource.next(manager);
97
+ }
98
+ UpdateRole(role) {
99
+ this.currentRoleSource.next(role);
100
+ }
101
+ updateLoggedUserFullName(userName) {
102
+ this.loggedUserSource.next(userName);
103
+ }
104
+ updateTenantName(tenantName) {
105
+ this.tenantNameSource.next(tenantName);
106
+ }
107
+ //Authorisation
108
+ isAuthorised(capName) {
109
+ if (!this.currentRoleSource.value[capName]) {
110
+ // this.logService.info(`authorise: ${this.currentRoleSource.value.roleName} not authorised for ${capName}`);
111
+ this.router.navigate(["home"]);
112
+ this.messageService.toast(`Unauthorised: ${capName}`);
113
+ return false;
114
+ }
115
+ else {
116
+ return true;
117
+ }
118
+ }
119
+ isValidToken() {
120
+ let tokenExpire = new Date(this.tokenExpireSource.value);
121
+ let nowDate = new Date();
122
+ let valid = tokenExpire > nowDate;
123
+ if (!valid) {
124
+ this.sessionExpired();
125
+ this.messageService.toast(`Expired Session`);
126
+ }
127
+ return valid;
128
+ }
129
+ canActivate() {
130
+ if (this.loggedin && this.isValidToken()) {
131
+ // this.logService.info("authentication: logged in");
132
+ return true;
133
+ }
134
+ if (localStorage.getItem(Constants.AUTH_USER) === null) {
135
+ // this.logService.info("authentication: not logged and no cache");
136
+ this.sessionExpired();
137
+ return false;
138
+ }
139
+ else {
140
+ // this.logService.info("authentication: not logged but allowed login");
141
+ this.Updateloggedin(true);
142
+ this.storage.get(Constants.AUTH_USER).then((resp) => {
143
+ this.UpdateCurrentUser(resp);
144
+ });
145
+ this.storage.get(Constants.AUTH_NAME).then((resp) => {
146
+ this.updateLoggedUserFullName(resp);
147
+ });
148
+ this.storage.get(Constants.AUTH_ROLES).then((resp) => {
149
+ let ret = JSON.parse(resp);
150
+ this.UpdateRole(ret);
151
+ });
152
+ this.storage.get(Constants.AUTH_TOKEN).then((resp) => {
153
+ this.UpdateToken(resp);
154
+ });
155
+ this.storage.get(Constants.AUTH_TOKEN_EXPIRE).then((resp) => {
156
+ this.UpdateTokenExpire(resp);
157
+ this.isValidToken();
158
+ });
159
+ this.storage.get(Constants.AUTH_TENANT_NAME).then((resp) => {
160
+ this.updateTenantName(resp);
161
+ });
162
+ return true;
163
+ }
164
+ }
165
+ }
166
+ AuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AuthService, deps: [{ token: i1.ActivatedRoute }, { token: i2.SocialAuthService }, { token: i3.StorageService }, { token: i1.Router }, { token: i4.HttpService }, { token: i5.MessageService }, { token: i6.LogService }], target: i0.ɵɵFactoryTarget.Injectable });
167
+ AuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AuthService, providedIn: 'root' });
168
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AuthService, decorators: [{
169
+ type: Injectable,
170
+ args: [{
171
+ providedIn: 'root'
172
+ }]
173
+ }], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.SocialAuthService }, { type: i3.StorageService }, { type: i1.Router }, { type: i4.HttpService }, { type: i5.MessageService }, { type: i6.LogService }]; } });
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL3NlcnZpY2VzL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHdkMsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7Ozs7QUFRckQsTUFBTSxPQUFPLFdBQVc7SUFFdEIsWUFBb0IsTUFBc0IsRUFBVSxhQUFnQyxFQUFVLE9BQXVCLEVBQVMsTUFBYyxFQUFVLFdBQXdCLEVBQVUsY0FBOEIsRUFBVSxVQUFzQjtRQUFsTyxXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUFtQjtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQVMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVUsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQWtDdFAsV0FBVztRQUNILGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckQsbUJBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBTTNELFdBQVc7UUFDSCxjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZELG9CQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQU83RCxPQUFPO1FBQ0MsVUFBSyxHQUFX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QUMsQ0FBQztZQUM5QixDQUFDLENBQUMsQ0FBQztZQUVILE9BQU8sSUFBSSxDQUFDO1NBQ2I7SUFDSCxDQUFDOzt3R0FqTVUsV0FBVzs0R0FBWCxXQUFXLGNBSFYsTUFBTTsyRkFHUCxXQUFXO2tCQUp2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9tZXNzYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciwgQ2FuQWN0aXZhdGUsIEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9zdG9yYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMb2dTZXJ2aWNlIH0gZnJvbSAnLi9sb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IFJvbGUsIENvbnN0YW50cyB9IGZyb20gJy4uL2NsYXNzZXMvQ2xhc3Nlcyc7XHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi9odHRwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTb2NpYWxBdXRoU2VydmljZSB9IGZyb20gJ0BhYmFjcml0dC9hbmd1bGFyeC1zb2NpYWwtbG9naW4nO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIEF1dGhTZXJ2aWNlIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9yb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgc29jaWFsU2VydmljZTogU29jaWFsQXV0aFNlcnZpY2UsIHByaXZhdGUgc3RvcmFnZTogU3RvcmFnZVNlcnZpY2UsIHB1YmxpYyByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBodHRwU2VydmljZTogSHR0cFNlcnZpY2UsIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLCBwcml2YXRlIGxvZ1NlcnZpY2U6IExvZ1NlcnZpY2UpIHsgfVxyXG5cclxuICBjbGVhclNlc3Npb24oKXtcclxuXHJcbiAgICB0aGlzLlVwZGF0ZWxvZ2dlZGluKGZhbHNlKTtcclxuICAgIHRoaXMuVXBkYXRlQXV0b0xvZ2luKGZhbHNlKTtcclxuICAgIHRoaXMuVXBkYXRlUm9sZShuZXcgUm9sZSgpKTtcclxuICAgIHRoaXMuc3RvcmFnZS5jbGVhcigpO1xyXG4gICAgdGhpcy5zb2NpYWxTZXJ2aWNlLnNpZ25PdXQoKTtcclxuXHJcbiAgfVxyXG5cclxuICBzZXNzaW9uRXhwaXJlZCgpe1xyXG5cclxuICAgIHRoaXMuY2xlYXJTZXNzaW9uKClcclxuXHJcbiAgICBsZXQgdXJsID0gbmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZik7XHJcbiAgICBsZXQgcGF0aCA9IHVybC5oYXNoLnJlcGxhY2UoXCIjL1wiLCBcIlwiKTtcclxuXHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJsb2dpblwiXSwge1xyXG4gICAgICByZWxhdGl2ZVRvOiB0aGlzLl9yb3V0ZSxcclxuICAgICAgcXVlcnlQYXJhbXM6IHsgcmVkaXJlY3RUbzogcGF0aCB9LFxyXG4gICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnLFxyXG4gICAgICBza2lwTG9jYXRpb25DaGFuZ2U6IGZhbHNlXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBsb2dvZmYoKSB7XHJcbiAgICB0aGlzLmNsZWFyU2Vzc2lvbigpXHJcblxyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wibG9naW5cIl0pO1xyXG4gIH1cclxuXHJcbiAgLy9Mb2dnZWQgaW5cclxuICBwcml2YXRlIGxvZ2dlZGluOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBsb2dnZWRpblNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3QodGhpcy5sb2dnZWRpbik7XHJcbiAgcHVibGljIGxvZ2dlZGluT2JzZXJ2ID0gdGhpcy5sb2dnZWRpblNvdXJjZS5hc09ic2VydmFibGUoKTtcclxuICBVcGRhdGVsb2dnZWRpbihsb2dnZWRpbjogYm9vbGVhbikge1xyXG4gICAgdGhpcy5sb2dnZWRpblNvdXJjZS5uZXh0KGxvZ2dlZGluKTtcclxuICAgIHRoaXMubG9nZ2VkaW4gPSBsb2dnZWRpbjtcclxuICB9XHJcblxyXG4gIC8vYXV0b0xvZ2luXHJcbiAgcHJpdmF0ZSBhdXRvTG9naW46IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIGF1dG9Mb2dpblNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3QodGhpcy5hdXRvTG9naW4pO1xyXG4gIHB1YmxpYyBhdXRvTG9naW5PYnNlcnYgPSB0aGlzLmF1dG9Mb2dpblNvdXJjZS5hc09ic2VydmFibGUoKTtcclxuICBVcGRhdGVBdXRvTG9naW4oYXV0b0xvZ2luOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmF1dG9Mb2dpblNvdXJjZS5uZXh0KGF1dG9Mb2dpbik7XHJcbiAgICB0aGlzLmF1dG9Mb2dpbiA9IGF1dG9Mb2dpbjtcclxuICB9XHJcblxyXG5cclxuICAvL1Rva2VuXHJcbiAgcHJpdmF0ZSB0b2tlbjogc3RyaW5nID0gXCJcIjtcclxuICBwdWJsaWMgdG9rZW5Tb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRoaXMudG9rZW4pO1xyXG4gIHB1YmxpYyB0b2tlbk9ic2VydiA9IHRoaXMudG9rZW5Tb3VyY2UuYXNPYnNlcnZhYmxlKCk7XHJcbiAgVXBkYXRlVG9rZW4obmV3VG9rZW46IHN0cmluZykge1xyXG4gICAgdGhpcy50b2tlblNvdXJjZS5uZXh0KG5ld1Rva2VuKTtcclxuXHJcbiAgfVxyXG5cclxuICAvL1Rva2VuRXhwaXJlXHJcbiAgcHJpdmF0ZSB0b2tlbkV4cGlyZTogc3RyaW5nID0gXCJcIjtcclxuICBwdWJsaWMgdG9rZW5FeHBpcmVTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRoaXMudG9rZW5FeHBpcmUpO1xyXG4gIHB1YmxpYyB0b2tlbkV4cGlyZU9ic2VydiA9IHRoaXMudG9rZW5FeHBpcmVTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XHJcbiAgVXBkYXRlVG9rZW5FeHBpcmUobmV3VG9rZW5FeHBpcmU6IHN0cmluZykge1xyXG4gICAgdGhpcy50b2tlbkV4cGlyZVNvdXJjZS5uZXh0KG5ld1Rva2VuRXhwaXJlKTtcclxuXHJcbiAgfVxyXG5cclxuICAvL0N1cnJlbnQgVXNlclxyXG4gIHB1YmxpYyBjdXJyZW50VXNlcjogc3RyaW5nID0gXCJ0bnlhZ2F0b1wiO1xyXG4gIHByaXZhdGUgY3VycmVudFVzZXJTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRoaXMuY3VycmVudFVzZXIpO1xyXG4gIHB1YmxpYyBjdXJyZW50VXNlck9ic2VydiA9IHRoaXMuY3VycmVudFVzZXJTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XHJcbiAgVXBkYXRlQ3VycmVudFVzZXIobmV3VXNlcjogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRVc2VyU291cmNlLm5leHQobmV3VXNlci50b0xvY2FsZUxvd2VyQ2FzZSgpKTtcclxuICAgIHRoaXMuY3VycmVudFVzZXIgPSBuZXdVc2VyLnRvTG9jYWxlTG93ZXJDYXNlKCk7XHJcbiAgfVxyXG5cclxuICAvL0xpbmUgTWFuYWdlclxyXG4gIHByaXZhdGUgaXNsaW5lTWFuYWdlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgaXNMaW5lTWFuYWdlclNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3QodGhpcy5pc2xpbmVNYW5hZ2VyKTtcclxuICBwdWJsaWMgaXNMaW5lTWFuYWdlck9ic2VydiA9IHRoaXMuaXNMaW5lTWFuYWdlclNvdXJjZS5hc09ic2VydmFibGUoKTtcclxuICBVcGRhdGVJc0xpbmVNYW5hZ2VyKG1hbmFnZXI6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuaXNMaW5lTWFuYWdlclNvdXJjZS5uZXh0KG1hbmFnZXIpO1xyXG4gIH1cclxuXHJcbiAgLy9Sb2xlc1xyXG4gIHByaXZhdGUgY3VycmVudFJvbGUgPSBuZXcgUm9sZTtcclxuICBwdWJsaWMgY3VycmVudFJvbGVTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRoaXMuY3VycmVudFJvbGUpO1xyXG4gIHB1YmxpYyBteVJvbGVPYnNlcnYgPSB0aGlzLmN1cnJlbnRSb2xlU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIFVwZGF0ZVJvbGUocm9sZSkge1xyXG4gICAgdGhpcy5jdXJyZW50Um9sZVNvdXJjZS5uZXh0KHJvbGUpO1xyXG4gIH1cclxuXHJcbiAgLy9Mb2dnZWQgaW4gRmlyc3ROYW1lXHJcbiAgcHJpdmF0ZSBsb2dnZWRVc2VyU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdChcInRueWFnYXRvXCIpO1xyXG4gIHB1YmxpYyBsb2dnZWRVc2VyRnVsbE5hbWUgPSB0aGlzLmxvZ2dlZFVzZXJTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XHJcbiAgdXBkYXRlTG9nZ2VkVXNlckZ1bGxOYW1lKHVzZXJOYW1lOiBzdHJpbmcpIHtcclxuICAgIHRoaXMubG9nZ2VkVXNlclNvdXJjZS5uZXh0KHVzZXJOYW1lKTtcclxuICB9XHJcblxyXG4gIC8vVGVuYW50TmFtZVxyXG4gIHByaXZhdGUgdGVuYW50TmFtZVNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3QoXCJUZW5hbnQgTmFtZVwiKTtcclxuICBwdWJsaWMgdGVuYW50TmFtZU9ic2VydiA9IHRoaXMudGVuYW50TmFtZVNvdXJjZS5hc09ic2VydmFibGUoKTtcclxuICB1cGRhdGVUZW5hbnROYW1lKHRlbmFudE5hbWU6IHN0cmluZykge1xyXG4gICAgdGhpcy50ZW5hbnROYW1lU291cmNlLm5leHQodGVuYW50TmFtZSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy9BdXRob3Jpc2F0aW9uXHJcbiAgaXNBdXRob3Jpc2VkKGNhcE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG5cclxuICAgIGlmICghdGhpcy5jdXJyZW50Um9sZVNvdXJjZS52YWx1ZVtjYXBOYW1lXSkge1xyXG4gICAgICAvLyB0aGlzLmxvZ1NlcnZpY2UuaW5mbyhgYXV0aG9yaXNlOiAke3RoaXMuY3VycmVudFJvbGVTb3VyY2UudmFsdWUucm9sZU5hbWV9IG5vdCBhdXRob3Jpc2VkIGZvciAke2NhcE5hbWV9YCk7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcImhvbWVcIl0pO1xyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KGBVbmF1dGhvcmlzZWQ6ICR7Y2FwTmFtZX1gKTtcclxuXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGlzVmFsaWRUb2tlbigpIHtcclxuXHJcbiAgICBsZXQgdG9rZW5FeHBpcmU6IERhdGUgPSBuZXcgRGF0ZSh0aGlzLnRva2VuRXhwaXJlU291cmNlLnZhbHVlKTtcclxuICAgIGxldCBub3dEYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcclxuXHJcbiAgICBsZXQgdmFsaWQ6IGJvb2xlYW4gPSB0b2tlbkV4cGlyZSA+IG5vd0RhdGU7XHJcblxyXG4gICAgaWYgKCF2YWxpZCkge1xyXG5cclxuICAgICAgdGhpcy5zZXNzaW9uRXhwaXJlZCgpXHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoYEV4cGlyZWQgU2Vzc2lvbmApO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdmFsaWRcclxuICB9XHJcblxyXG4gIGNhbkFjdGl2YXRlKCkge1xyXG5cclxuICAgIGlmICh0aGlzLmxvZ2dlZGluICYmIHRoaXMuaXNWYWxpZFRva2VuKCkpIHtcclxuICAgICAgLy8gdGhpcy5sb2dTZXJ2aWNlLmluZm8oXCJhdXRoZW50aWNhdGlvbjogbG9nZ2VkIGluXCIpO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oQ29uc3RhbnRzLkFVVEhfVVNFUikgPT09IG51bGwpIHtcclxuICAgICAgLy8gdGhpcy5sb2dTZXJ2aWNlLmluZm8oXCJhdXRoZW50aWNhdGlvbjogbm90IGxvZ2dlZCBhbmQgbm8gY2FjaGVcIik7XHJcblxyXG4gICAgICB0aGlzLnNlc3Npb25FeHBpcmVkKCk7XHJcblxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gdGhpcy5sb2dTZXJ2aWNlLmluZm8oXCJhdXRoZW50aWNhdGlvbjogbm90IGxvZ2dlZCBidXQgYWxsb3dlZCBsb2dpblwiKTtcclxuXHJcbiAgICAgIHRoaXMuVXBkYXRlbG9nZ2VkaW4odHJ1ZSk7XHJcblxyXG4gICAgICB0aGlzLnN0b3JhZ2UuZ2V0KENvbnN0YW50cy5BVVRIX1VTRVIpLnRoZW4oKHJlc3A6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuVXBkYXRlQ3VycmVudFVzZXIocmVzcCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5zdG9yYWdlLmdldChDb25zdGFudHMuQVVUSF9OQU1FKS50aGVuKChyZXNwOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxvZ2dlZFVzZXJGdWxsTmFtZShyZXNwKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLnN0b3JhZ2UuZ2V0KENvbnN0YW50cy5BVVRIX1JPTEVTKS50aGVuKChyZXNwKSA9PiB7XHJcbiAgICAgICAgbGV0IHJldCA9IEpTT04ucGFyc2UocmVzcCk7XHJcblxyXG4gICAgICAgIHRoaXMuVXBkYXRlUm9sZShyZXQpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuc3RvcmFnZS5nZXQoQ29uc3RhbnRzLkFVVEhfVE9LRU4pLnRoZW4oKHJlc3A6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuVXBkYXRlVG9rZW4ocmVzcCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5zdG9yYWdlLmdldChDb25zdGFudHMuQVVUSF9UT0tFTl9FWFBJUkUpLnRoZW4oKHJlc3A6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuVXBkYXRlVG9rZW5FeHBpcmUocmVzcCk7XHJcbiAgICAgICAgdGhpcy5pc1ZhbGlkVG9rZW4oKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLnN0b3JhZ2UuZ2V0KENvbnN0YW50cy5BVVRIX1RFTkFOVF9OQU1FKS50aGVuKChyZXNwOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnVwZGF0ZVRlbmFudE5hbWUocmVzcCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,102 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class ButtonService {
4
+ getButton(buttons, name) {
5
+ return buttons?.find(x => x.name === name) || null;
6
+ }
7
+ getButtonProperties(button, row, config) {
8
+ return {
9
+ color: this.getButtonColor(button, row),
10
+ icon: this.getIcon(button, config),
11
+ disabled: this.testDisabled(button, row),
12
+ visible: this.testVisible(button, row),
13
+ tip: button.tip || button.name
14
+ };
15
+ }
16
+ getButtonColor(button, row) {
17
+ if (this.isButtonDisabled(button, row))
18
+ return 'lightgray';
19
+ if (button?.color)
20
+ return button.color;
21
+ if (button.icon?.color)
22
+ return button.icon.color;
23
+ const colorMap = {
24
+ 'delete': '#F44336',
25
+ 'create': 'green'
26
+ };
27
+ return colorMap[button.name] || '#4050B5';
28
+ }
29
+ isButtonDisabled(button, row) {
30
+ return button?.disabled ? button.disabled(row) : false;
31
+ }
32
+ isButtonVisible(button, row, isLoadComplete) {
33
+ if (!isLoadComplete)
34
+ return false;
35
+ return button?.visible ? button.visible(row) : true;
36
+ }
37
+ getTitleAction(mode, buttons) {
38
+ const modeMap = {
39
+ 'view': 'View',
40
+ 'edit': buttons.find(b => b.name === 'edit')?.display || 'Edit',
41
+ 'create': buttons.find(b => b.name === 'create')?.display || 'Create'
42
+ };
43
+ return modeMap[mode] || '';
44
+ }
45
+ isTabVisible(tableConfig) {
46
+ return tableConfig.hideTabCondition ? !tableConfig.hideTabCondition(tableConfig.parentData) : true;
47
+ }
48
+ getIcon(button, config) {
49
+ if (button.icon) {
50
+ return button.icon.name;
51
+ }
52
+ return this.getDefaultIcon(button.name, config.flatButtons);
53
+ }
54
+ testDisabled(button, row) {
55
+ return button.disabled ? button.disabled(row) : false;
56
+ }
57
+ testVisible(button, row) {
58
+ return button.visible ? button.visible(row) : true;
59
+ }
60
+ getDefaultColor(buttonName) {
61
+ switch (buttonName) {
62
+ case 'delete': return '#F44336';
63
+ case 'create': return 'green';
64
+ default: return '#4050B5';
65
+ }
66
+ }
67
+ getDefaultIcon(buttonName, flatButtons) {
68
+ switch (buttonName) {
69
+ case 'view':
70
+ return flatButtons ? 'open_in_new' : 'pageview';
71
+ case 'edit': return 'edit';
72
+ case 'delete': return 'delete';
73
+ case 'create': return 'add';
74
+ default: return 'more_horiz';
75
+ }
76
+ }
77
+ getCreateButton(buttons) {
78
+ return buttons?.find(button => button?.name === 'create');
79
+ }
80
+ getDisplayedButtons(buttons, isSmallScreen, minButtons) {
81
+ const nonCreateButtons = buttons?.filter(x => x.name !== 'create' && !x.inHeader);
82
+ if (isSmallScreen) {
83
+ if (minButtons) {
84
+ return nonCreateButtons.filter(x => minButtons.includes(x.name));
85
+ }
86
+ return nonCreateButtons.slice(0, 1);
87
+ }
88
+ return nonCreateButtons;
89
+ }
90
+ getActionsWidth(buttons) {
91
+ return `${buttons.length * 40 + 20}px`;
92
+ }
93
+ }
94
+ ButtonService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ButtonService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
95
+ ButtonService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ButtonService, providedIn: 'root' });
96
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ButtonService, decorators: [{
97
+ type: Injectable,
98
+ args: [{
99
+ providedIn: 'root'
100
+ }]
101
+ }] });
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90aW4tc3BhL3NyYy9saWIvc2VydmljZXMvYnV0dG9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNM0MsTUFBTSxPQUFPLGFBQWE7SUFDeEIsU0FBUyxDQUFDLE9BQWlCLEVBQUUsSUFBWTtRQUN2QyxPQUFPLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQztJQUNyRCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsTUFBYyxFQUFFLEdBQVEsRUFBRSxNQUFtQjtRQU8vRCxPQUFPO1lBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQztZQUN2QyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDO1lBQ2xDLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUM7WUFDeEMsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQztZQUN0QyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSTtTQUMvQixDQUFDO0lBQ0osQ0FBQztJQUVELGNBQWMsQ0FBQyxNQUFjLEVBQUUsR0FBUTtRQUNyQyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDO1lBQUUsT0FBTyxXQUFXLENBQUM7UUFFM0QsSUFBSSxNQUFNLEVBQUUsS0FBSztZQUFFLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQztRQUN2QyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUs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dCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQnV0dG9uLCBUYWJsZUNvbmZpZyB9IGZyb20gJy4uL2NsYXNzZXMvQ2xhc3Nlcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCdXR0b25TZXJ2aWNlIHtcclxuICBnZXRCdXR0b24oYnV0dG9uczogQnV0dG9uW10sIG5hbWU6IHN0cmluZyk6IEJ1dHRvbiB8IG51bGwge1xyXG4gICAgcmV0dXJuIGJ1dHRvbnM/LmZpbmQoeCA9PiB4Lm5hbWUgPT09IG5hbWUpIHx8IG51bGw7XHJcbiAgfVxyXG5cclxuICBnZXRCdXR0b25Qcm9wZXJ0aWVzKGJ1dHRvbjogQnV0dG9uLCByb3c6IGFueSwgY29uZmlnOiBUYWJsZUNvbmZpZyk6IHtcclxuICAgIGNvbG9yOiBzdHJpbmcsXHJcbiAgICBpY29uOiBzdHJpbmcsXHJcbiAgICBkaXNhYmxlZDogYm9vbGVhbixcclxuICAgIHZpc2libGU6IGJvb2xlYW4sXHJcbiAgICB0aXA6IHN0cmluZ1xyXG4gIH0ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgY29sb3I6IHRoaXMuZ2V0QnV0dG9uQ29sb3IoYnV0dG9uLCByb3cpLFxyXG4gICAgICBpY29uOiB0aGlzLmdldEljb24oYnV0dG9uLCBjb25maWcpLFxyXG4gICAgICBkaXNhYmxlZDogdGhpcy50ZXN0RGlzYWJsZWQoYnV0dG9uLCByb3cpLFxyXG4gICAgICB2aXNpYmxlOiB0aGlzLnRlc3RWaXNpYmxlKGJ1dHRvbiwgcm93KSxcclxuICAgICAgdGlwOiBidXR0b24udGlwIHx8IGJ1dHRvbi5uYW1lXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0QnV0dG9uQ29sb3IoYnV0dG9uOiBCdXR0b24sIHJvdzogYW55KTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLmlzQnV0dG9uRGlzYWJsZWQoYnV0dG9uLCByb3cpKSByZXR1cm4gJ2xpZ2h0Z3JheSc7XHJcblxyXG4gICAgaWYgKGJ1dHRvbj8uY29sb3IpIHJldHVybiBidXR0b24uY29sb3I7XHJcbiAgICBpZiAoYnV0dG9uLmljb24/LmNvbG9yKSByZXR1cm4gYnV0dG9uLmljb24uY29sb3I7XHJcblxyXG4gICAgY29uc3QgY29sb3JNYXAgPSB7XHJcbiAgICAgICdkZWxldGUnOiAnI0Y0NDMzNicsXHJcbiAgICAgICdjcmVhdGUnOiAnZ3JlZW4nXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBjb2xvck1hcFtidXR0b24ubmFtZV0gfHwgJyM0MDUwQjUnO1xyXG4gIH1cclxuXHJcbiAgaXNCdXR0b25EaXNhYmxlZChidXR0b246IEJ1dHRvbiwgcm93OiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBidXR0b24/LmRpc2FibGVkID8gYnV0dG9uLmRpc2FibGVkKHJvdykgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGlzQnV0dG9uVmlzaWJsZShidXR0b246IEJ1dHRvbiwgcm93OiBhbnksIGlzTG9hZENvbXBsZXRlOiBib29sZWFuKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIWlzTG9hZENvbXBsZXRlKSByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gYnV0dG9uPy52aXNpYmxlID8gYnV0dG9uLnZpc2libGUocm93KSA6IHRydWU7XHJcbiAgfVxyXG5cclxuICBnZXRUaXRsZUFjdGlvbihtb2RlOiBzdHJpbmcsIGJ1dHRvbnM6IEJ1dHRvbltdKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IG1vZGVNYXAgPSB7XHJcbiAgICAgICd2aWV3JzogJ1ZpZXcnLFxyXG4gICAgICAnZWRpdCc6IGJ1dHRvbnMuZmluZChiID0+IGIubmFtZSA9PT0gJ2VkaXQnKT8uZGlzcGxheSB8fCAnRWRpdCcsXHJcbiAgICAgICdjcmVhdGUnOiBidXR0b25zLmZpbmQoYiA9PiBiLm5hbWUgPT09ICdjcmVhdGUnKT8uZGlzcGxheSB8fCAnQ3JlYXRlJ1xyXG4gICAgfTtcclxuICAgIHJldHVybiBtb2RlTWFwW21vZGVdIHx8ICcnO1xyXG4gIH1cclxuXHJcbiAgaXNUYWJWaXNpYmxlKHRhYmxlQ29uZmlnOiBUYWJsZUNvbmZpZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRhYmxlQ29uZmlnLmhpZGVUYWJDb25kaXRpb24gPyAhdGFibGVDb25maWcuaGlkZVRhYkNvbmRpdGlvbih0YWJsZUNvbmZpZy5wYXJlbnREYXRhKSA6IHRydWU7XHJcbiAgfVxyXG5cclxuICBnZXRJY29uKGJ1dHRvbjogQnV0dG9uLCBjb25maWc6IFRhYmxlQ29uZmlnKTogc3RyaW5nIHtcclxuICAgIGlmIChidXR0b24uaWNvbikge1xyXG4gICAgICByZXR1cm4gYnV0dG9uLmljb24ubmFtZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmdldERlZmF1bHRJY29uKGJ1dHRvbi5uYW1lLCBjb25maWcuZmxhdEJ1dHRvbnMpO1xyXG4gIH1cclxuXHJcbiAgdGVzdERpc2FibGVkKGJ1dHRvbjogQnV0dG9uLCByb3c6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGJ1dHRvbi5kaXNhYmxlZCA/IGJ1dHRvbi5kaXNhYmxlZChyb3cpIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICB0ZXN0VmlzaWJsZShidXR0b246IEJ1dHRvbiwgcm93OiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBidXR0b24udmlzaWJsZSA/IGJ1dHRvbi52aXNpYmxlKHJvdykgOiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXREZWZhdWx0Q29sb3IoYnV0dG9uTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHN3aXRjaCAoYnV0dG9uTmFtZSkge1xyXG4gICAgICBjYXNlICdkZWxldGUnOiByZXR1cm4gJyNGNDQzMzYnO1xyXG4gICAgICBjYXNlICdjcmVhdGUnOiByZXR1cm4gJ2dyZWVuJztcclxuICAgICAgZGVmYXVsdDogcmV0dXJuICcjNDA1MEI1JztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RGVmYXVsdEljb24oYnV0dG9uTmFtZTogc3RyaW5nLCBmbGF0QnV0dG9uczogYm9vbGVhbik6IHN0cmluZyB7XHJcbiAgICBzd2l0Y2ggKGJ1dHRvbk5hbWUpIHtcclxuICAgICAgY2FzZSAndmlldyc6XHJcbiAgICAgICAgcmV0dXJuIGZsYXRCdXR0b25zID8gJ29wZW5faW5fbmV3JyA6ICdwYWdldmlldyc7XHJcbiAgICAgIGNhc2UgJ2VkaXQnOiByZXR1cm4gJ2VkaXQnO1xyXG4gICAgICBjYXNlICdkZWxldGUnOiByZXR1cm4gJ2RlbGV0ZSc7XHJcbiAgICAgIGNhc2UgJ2NyZWF0ZSc6IHJldHVybiAnYWRkJztcclxuICAgICAgZGVmYXVsdDogcmV0dXJuICdtb3JlX2hvcml6JztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldENyZWF0ZUJ1dHRvbihidXR0b25zOiBCdXR0b25bXSk6IEJ1dHRvbiB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gYnV0dG9ucz8uZmluZChidXR0b24gPT4gYnV0dG9uPy5uYW1lID09PSAnY3JlYXRlJyk7XHJcbiAgfVxyXG5cclxuICBnZXREaXNwbGF5ZWRCdXR0b25zKGJ1dHRvbnM6IEJ1dHRvbltdLCBpc1NtYWxsU2NyZWVuOiBib29sZWFuLCBtaW5CdXR0b25zPzogc3RyaW5nW10pOiBCdXR0b25bXSB7XHJcbiAgICBjb25zdCBub25DcmVhdGVCdXR0b25zID0gYnV0dG9ucz8uZmlsdGVyKHggPT4geC5uYW1lICE9PSAnY3JlYXRlJyAmJiAheC5pbkhlYWRlcik7XHJcblxyXG4gICAgaWYgKGlzU21hbGxTY3JlZW4pIHtcclxuICAgICAgaWYgKG1pbkJ1dHRvbnMpIHtcclxuICAgICAgICByZXR1cm4gbm9uQ3JlYXRlQnV0dG9ucy5maWx0ZXIoeCA9PiBtaW5CdXR0b25zLmluY2x1ZGVzKHgubmFtZSkpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBub25DcmVhdGVCdXR0b25zLnNsaWNlKDAsIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBub25DcmVhdGVCdXR0b25zO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWN0aW9uc1dpZHRoKGJ1dHRvbnM6IEJ1dHRvbltdKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHtidXR0b25zLmxlbmd0aCAqIDQwICsgMjB9cHhgO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,32 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class ConditionService {
4
+ testIconCondition(icon, row) {
5
+ if (!icon)
6
+ return false;
7
+ return icon.condition ? icon.condition(row) : true;
8
+ }
9
+ testColorCondition(color, row) {
10
+ if (!color)
11
+ return false;
12
+ return color.condition ? color.condition(row) : true;
13
+ }
14
+ getColor(value, options) {
15
+ if (!options)
16
+ return 'lightgrey';
17
+ const option = options.find(opt => opt.value === value);
18
+ return option ? option.color : 'lightgrey';
19
+ }
20
+ testCondition(condition, value) {
21
+ return condition ? condition(value) : true;
22
+ }
23
+ }
24
+ ConditionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ConditionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
25
+ ConditionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ConditionService, providedIn: 'root' });
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ConditionService, decorators: [{
27
+ type: Injectable,
28
+ args: [{
29
+ providedIn: 'root'
30
+ }]
31
+ }] });
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90aW4tc3BhL3NyYy9saWIvc2VydmljZXMvY29uZGl0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNM0MsTUFBTSxPQUFPLGdCQUFnQjtJQUczQixpQkFBaUIsQ0FBQyxJQUFVLEVBQUUsR0FBUTtRQUNwQyxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3JELENBQUM7SUFHRCxrQkFBa0IsQ0FBQyxLQUFZLEVBQUUsR0FBUTtRQUN2QyxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ3pCLE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3ZELENBQUM7SUFHRCxRQUFRLENBQUMsS0FBVSxFQUFFLE9BQWM7UUFDakMsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPLFdBQVcsQ0FBQztRQUNqQyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQztRQUN4RCxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO0lBQzdDLENBQUM7SUFHRCxhQUFhLENBQUMsU0FBa0MsRUFBRSxLQUFVO1FBQzFELE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM3QyxDQUFDOzs2R0F4QlUsZ0JBQWdCO2lIQUFoQixnQkFBZ0IsY0FGZixNQUFNOzJGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEljb24sIENvbG9yIH0gZnJvbSAnLi4vY2xhc3Nlcy9DbGFzc2VzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbmRpdGlvblNlcnZpY2Uge1xyXG5cclxuXHJcbiAgdGVzdEljb25Db25kaXRpb24oaWNvbjogSWNvbiwgcm93OiBhbnkpOiBib29sZWFuIHtcclxuICAgIGlmICghaWNvbikgcmV0dXJuIGZhbHNlO1xyXG4gICAgcmV0dXJuIGljb24uY29uZGl0aW9uID8gaWNvbi5jb25kaXRpb24ocm93KSA6IHRydWU7XHJcbiAgfVxyXG5cclxuXHJcbiAgdGVzdENvbG9yQ29uZGl0aW9uKGNvbG9yOiBDb2xvciwgcm93OiBhbnkpOiBib29sZWFuIHtcclxuICAgIGlmICghY29sb3IpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiBjb2xvci5jb25kaXRpb24gPyBjb2xvci5jb25kaXRpb24ocm93KSA6IHRydWU7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0Q29sb3IodmFsdWU6IGFueSwgb3B0aW9uczogYW55W10pOiBzdHJpbmcge1xyXG4gICAgaWYgKCFvcHRpb25zKSByZXR1cm4gJ2xpZ2h0Z3JleSc7XHJcbiAgICBjb25zdCBvcHRpb24gPSBvcHRpb25zLmZpbmQob3B0ID0+IG9wdC52YWx1ZSA9PT0gdmFsdWUpO1xyXG4gICAgcmV0dXJuIG9wdGlvbiA/IG9wdGlvbi5jb2xvciA6ICdsaWdodGdyZXknO1xyXG4gIH1cclxuXHJcblxyXG4gIHRlc3RDb25kaXRpb24oY29uZGl0aW9uOiAodmFsdWU6IGFueSkgPT4gYm9vbGVhbiwgdmFsdWU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGNvbmRpdGlvbiA/IGNvbmRpdGlvbih2YWx1ZSkgOiB0cnVlO1xyXG4gIH1cclxufVxyXG4iXX0=