@unipin/angular-applet 18.9.4 → 18.9.6

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 (484) hide show
  1. package/README.md +8 -11
  2. package/esm2022/graphql/generated.mjs +938 -0
  3. package/esm2022/lib/components/approval/detail/approval-detail.component.mjs +78 -0
  4. package/esm2022/lib/components/approval/form/approval-form.component.mjs +128 -0
  5. package/esm2022/lib/components/approval/index.mjs +5 -0
  6. package/esm2022/lib/components/approval/list/approval-list.component.mjs +114 -0
  7. package/esm2022/lib/components/approval/list/provide-approval-entities.util.mjs +9 -0
  8. package/esm2022/lib/components/approval/services/approval.service.mjs +46 -0
  9. package/esm2022/lib/components/audit/detail/audit-detail.component.mjs +123 -0
  10. package/esm2022/lib/components/audit/index.mjs +3 -0
  11. package/esm2022/lib/components/audit/list/audit-list.component.mjs +81 -0
  12. package/esm2022/lib/components/audit/service/audit.service.mjs +49 -0
  13. package/esm2022/lib/components/audit/types/audit-detail-form.type.mjs +2 -0
  14. package/esm2022/lib/components/buttons/group/btn-group.component.mjs +43 -0
  15. package/esm2022/lib/components/buttons/group/interfaces/btn-group-config.interface.mjs +2 -0
  16. package/esm2022/lib/components/buttons/index.mjs +3 -0
  17. package/esm2022/lib/components/buttons/loading/btn-loading.component.mjs +48 -0
  18. package/esm2022/lib/components/containers/applet-container/applet-container.component.mjs +55 -0
  19. package/esm2022/lib/components/containers/applet-container/provide-applet-config.util.mjs +9 -0
  20. package/esm2022/lib/components/containers/colum-header-container/column-header-container.component.mjs +23 -0
  21. package/esm2022/lib/components/containers/column-container/column-container.component.mjs +79 -0
  22. package/esm2022/lib/components/containers/column-container/directives/lazy-route.directive.mjs +57 -0
  23. package/esm2022/lib/components/containers/index.mjs +7 -0
  24. package/esm2022/lib/components/containers/list-container/index.mjs +3 -0
  25. package/esm2022/lib/components/containers/list-container/interfaces/list-container-config.interface.mjs +2 -0
  26. package/esm2022/lib/components/containers/list-container/list-pagination-container/list-pagination-container.component.mjs +58 -0
  27. package/esm2022/lib/components/containers/list-container/list-snapshot-container/list-snapshot-container.component.mjs +57 -0
  28. package/esm2022/lib/components/containers/modal-container/modal-container.component.mjs +40 -0
  29. package/esm2022/lib/components/filter/filter.component.mjs +222 -0
  30. package/esm2022/lib/components/filter/index.mjs +2 -0
  31. package/esm2022/lib/components/filter/interfaces/filter-config.interface.mjs +2 -0
  32. package/esm2022/lib/components/filter/interfaces/filter-field.interface.mjs +2 -0
  33. package/esm2022/lib/components/filter/interfaces/filter-search-event.interface.mjs +2 -0
  34. package/esm2022/lib/components/forms/country-input/form-country-input.component.mjs +122 -0
  35. package/esm2022/lib/components/forms/currency-input/form-currency-input.component.mjs +157 -0
  36. package/esm2022/lib/components/forms/date/form-date.component.mjs +117 -0
  37. package/esm2022/lib/components/forms/image-picker/directives/drag-n-drop.directive.mjs +49 -0
  38. package/esm2022/lib/components/forms/image-picker/form-image-picker.component.mjs +68 -0
  39. package/esm2022/lib/components/forms/index.mjs +12 -0
  40. package/esm2022/lib/components/forms/input/form-input.component.mjs +98 -0
  41. package/esm2022/lib/components/forms/number/form-number.component.mjs +97 -0
  42. package/esm2022/lib/components/forms/number/pipes/locale-number.pipe.mjs +33 -0
  43. package/esm2022/lib/components/forms/password/form-password.component.mjs +100 -0
  44. package/esm2022/lib/components/forms/rate-group-code-input/form-rate-group-code-input.component.mjs +135 -0
  45. package/esm2022/lib/components/forms/searchable-select/form-searchable-select.component.mjs +138 -0
  46. package/esm2022/lib/components/forms/select/form-select.component.mjs +119 -0
  47. package/esm2022/lib/components/forms/textarea/form-textarea.component.mjs +88 -0
  48. package/esm2022/lib/components/grids/grid-pagination/grid-pagination.component.mjs +111 -0
  49. package/esm2022/lib/components/grids/grid-snapshot/grid-snapshot.component.mjs +109 -0
  50. package/esm2022/lib/components/grids/index.mjs +4 -0
  51. package/esm2022/lib/components/grids/interfaces/grid-config.interface.mjs +2 -0
  52. package/esm2022/lib/components/grids/services/grid.service.mjs +25 -0
  53. package/esm2022/lib/components/index.mjs +9 -0
  54. package/esm2022/lib/components/infinite-scroll/directive/infinite-scroll.directive.mjs +43 -0
  55. package/esm2022/lib/components/infinite-scroll/index.mjs +3 -0
  56. package/esm2022/lib/components/infinite-scroll/infinite-scroll.component.mjs +36 -0
  57. package/esm2022/lib/components/tabs/index.mjs +3 -0
  58. package/esm2022/lib/components/tabs/tab-content/tab-content.component.mjs +37 -0
  59. package/esm2022/lib/components/tabs/tab-group/tab-group.component.mjs +47 -0
  60. package/esm2022/lib/guards/auth/auth.guard.mjs +10 -0
  61. package/esm2022/lib/guards/index.mjs +2 -0
  62. package/esm2022/lib/interceptors/header/header.interceptor.mjs +29 -0
  63. package/esm2022/lib/interceptors/index.mjs +3 -0
  64. package/esm2022/lib/interceptors/refresh-token/refresh-token.interceptor.mjs +83 -0
  65. package/esm2022/lib/interfaces/index.mjs +2 -0
  66. package/esm2022/lib/interfaces/user/user.interface.mjs +2 -0
  67. package/esm2022/lib/modules/index.mjs +3 -0
  68. package/esm2022/lib/modules/micro-frontend/index.mjs +2 -0
  69. package/esm2022/lib/modules/micro-frontend/utils/mf-bootstrap.util.mjs +55 -0
  70. package/esm2022/lib/modules/micro-frontend/utils/mf-global-state.util.mjs +14 -0
  71. package/esm2022/lib/modules/permission/directive/permission.directive.mjs +41 -0
  72. package/esm2022/lib/modules/permission/guards/permission.guard.mjs +26 -0
  73. package/esm2022/lib/modules/permission/index.mjs +7 -0
  74. package/esm2022/lib/modules/permission/pages/401/unauthorized.page.mjs +15 -0
  75. package/esm2022/lib/modules/permission/pages/loading/loading.page.mjs +65 -0
  76. package/esm2022/lib/modules/permission/pages/loading/provide-loading-config.util.mjs +9 -0
  77. package/esm2022/lib/modules/permission/services/permission.service.mjs +50 -0
  78. package/esm2022/lib/resolvers/auth/auth.resolver.mjs +87 -0
  79. package/esm2022/lib/resolvers/index.mjs +2 -0
  80. package/esm2022/lib/services/auth/auth.service.mjs +171 -0
  81. package/esm2022/lib/services/country/country.service.mjs +43 -0
  82. package/esm2022/lib/services/currency/currency.service.mjs +40 -0
  83. package/esm2022/lib/services/index.mjs +6 -0
  84. package/esm2022/lib/services/profile/profile.service.mjs +82 -0
  85. package/esm2022/lib/services/rate-group-code/rate-group-code.service.mjs +31 -0
  86. package/esm2022/lib/utils/contrast-color-generator/contrast-color-generator.util.mjs +16 -0
  87. package/esm2022/lib/utils/form-error-message/form-error-message.util.mjs +21 -0
  88. package/esm2022/lib/utils/format-capitalize/format-capitalize.util.mjs +18 -0
  89. package/esm2022/lib/utils/index.mjs +5 -0
  90. package/esm2022/lib/utils/redirect-to-first-menu/redirect-to-first-menu.util.mjs +9 -0
  91. package/esm2022/public-api.mjs +10 -0
  92. package/esm2022/unipin-angular-applet.mjs +2 -0
  93. package/fesm2022/unipin-angular-applet.mjs +4620 -0
  94. package/fesm2022/unipin-angular-applet.mjs.map +1 -0
  95. package/graphql/generated.d.ts +16225 -0
  96. package/index.d.ts +2 -0
  97. package/lib/components/approval/detail/approval-detail.component.d.ts +26 -0
  98. package/lib/components/approval/form/approval-form.component.d.ts +33 -0
  99. package/{projects/unipin-angular/src/lib/components/approval/index.ts → lib/components/approval/index.d.ts} +0 -1
  100. package/lib/components/approval/list/approval-list.component.d.ts +33 -0
  101. package/lib/components/approval/list/provide-approval-entities.util.d.ts +3 -0
  102. package/lib/components/approval/services/approval.service.d.ts +18 -0
  103. package/lib/components/audit/detail/audit-detail.component.d.ts +33 -0
  104. package/lib/components/audit/list/audit-list.component.d.ts +31 -0
  105. package/lib/components/audit/service/audit.service.d.ts +15 -0
  106. package/lib/components/audit/types/audit-detail-form.type.d.ts +12 -0
  107. package/lib/components/buttons/group/btn-group.component.d.ts +18 -0
  108. package/lib/components/buttons/group/interfaces/btn-group-config.interface.d.ts +11 -0
  109. package/lib/components/buttons/loading/btn-loading.component.d.ts +19 -0
  110. package/lib/components/containers/applet-container/applet-container.component.d.ts +22 -0
  111. package/lib/components/containers/applet-container/provide-applet-config.util.d.ts +15 -0
  112. package/lib/components/containers/colum-header-container/column-header-container.component.d.ts +7 -0
  113. package/lib/components/containers/column-container/column-container.component.d.ts +26 -0
  114. package/lib/components/containers/column-container/directives/lazy-route.directive.d.ts +17 -0
  115. package/{projects/unipin-angular/src/lib/components/containers/index.ts → lib/components/containers/index.d.ts} +0 -1
  116. package/{projects/unipin-angular/src/lib/components/containers/list-container/interfaces/list-container-config.interface.ts → lib/components/containers/list-container/interfaces/list-container-config.interface.d.ts} +4 -5
  117. package/lib/components/containers/list-container/list-pagination-container/list-pagination-container.component.d.ts +23 -0
  118. package/lib/components/containers/list-container/list-snapshot-container/list-snapshot-container.component.d.ts +23 -0
  119. package/lib/components/containers/modal-container/modal-container.component.d.ts +16 -0
  120. package/lib/components/filter/filter.component.d.ts +44 -0
  121. package/{projects/unipin-angular/src/lib/components/filter/index.ts → lib/components/filter/index.d.ts} +1 -1
  122. package/lib/components/filter/interfaces/filter-config.interface.d.ts +5 -0
  123. package/lib/components/filter/interfaces/filter-field.interface.d.ts +24 -0
  124. package/lib/components/filter/interfaces/filter-search-event.interface.d.ts +4 -0
  125. package/lib/components/forms/country-input/form-country-input.component.d.ts +41 -0
  126. package/lib/components/forms/currency-input/form-currency-input.component.d.ts +52 -0
  127. package/lib/components/forms/date/form-date.component.d.ts +33 -0
  128. package/lib/components/forms/image-picker/directives/drag-n-drop.directive.d.ts +10 -0
  129. package/lib/components/forms/image-picker/form-image-picker.component.d.ts +21 -0
  130. package/lib/components/forms/input/form-input.component.d.ts +31 -0
  131. package/lib/components/forms/number/form-number.component.d.ts +27 -0
  132. package/lib/components/forms/number/pipes/locale-number.pipe.d.ts +8 -0
  133. package/lib/components/forms/password/form-password.component.d.ts +27 -0
  134. package/lib/components/forms/rate-group-code-input/form-rate-group-code-input.component.d.ts +41 -0
  135. package/lib/components/forms/searchable-select/form-searchable-select.component.d.ts +42 -0
  136. package/lib/components/forms/select/form-select.component.d.ts +34 -0
  137. package/lib/components/forms/textarea/form-textarea.component.d.ts +26 -0
  138. package/lib/components/grids/grid-pagination/grid-pagination.component.d.ts +33 -0
  139. package/lib/components/grids/grid-snapshot/grid-snapshot.component.d.ts +36 -0
  140. package/lib/components/grids/interfaces/grid-config.interface.d.ts +16 -0
  141. package/lib/components/grids/services/grid.service.d.ts +12 -0
  142. package/{projects/unipin-angular/src/lib/components/index.ts → lib/components/index.d.ts} +2 -14
  143. package/lib/components/infinite-scroll/directive/infinite-scroll.directive.d.ts +15 -0
  144. package/lib/components/infinite-scroll/infinite-scroll.component.d.ts +12 -0
  145. package/{projects/unipin-angular/src/lib/components/tabs/index.ts → lib/components/tabs/index.d.ts} +2 -3
  146. package/lib/components/tabs/tab-content/tab-content.component.d.ts +14 -0
  147. package/lib/components/tabs/tab-group/tab-group.component.d.ts +18 -0
  148. package/lib/guards/auth/auth.guard.d.ts +1 -0
  149. package/lib/interceptors/header/header.interceptor.d.ts +9 -0
  150. package/lib/interceptors/refresh-token/refresh-token.interceptor.d.ts +14 -0
  151. package/lib/interfaces/user/user.interface.d.ts +27 -0
  152. package/lib/modules/index.d.ts +2 -0
  153. package/lib/modules/micro-frontend/utils/mf-bootstrap.util.d.ts +9 -0
  154. package/lib/modules/micro-frontend/utils/mf-global-state.util.d.ts +4 -0
  155. package/lib/modules/permission/directive/permission.directive.d.ts +16 -0
  156. package/lib/modules/permission/guards/permission.guard.d.ts +2 -0
  157. package/{projects/unipin-angular/src/lib/modules/permission/index.ts → lib/modules/permission/index.d.ts} +0 -1
  158. package/lib/modules/permission/pages/401/unauthorized.page.d.ts +5 -0
  159. package/lib/modules/permission/pages/loading/loading.page.d.ts +18 -0
  160. package/lib/modules/permission/pages/loading/provide-loading-config.util.d.ts +10 -0
  161. package/lib/modules/permission/services/permission.service.d.ts +21 -0
  162. package/lib/resolvers/auth/auth.resolver.d.ts +14 -0
  163. package/lib/services/auth/auth.service.d.ts +39 -0
  164. package/lib/services/country/country.service.d.ts +16 -0
  165. package/lib/services/currency/currency.service.d.ts +16 -0
  166. package/lib/services/profile/profile.service.d.ts +12 -0
  167. package/lib/services/rate-group-code/rate-group-code.service.d.ts +14 -0
  168. package/lib/utils/contrast-color-generator/contrast-color-generator.util.d.ts +4 -0
  169. package/lib/utils/form-error-message/form-error-message.util.d.ts +2 -0
  170. package/lib/utils/format-capitalize/format-capitalize.util.d.ts +1 -0
  171. package/lib/utils/redirect-to-first-menu/redirect-to-first-menu.util.d.ts +2 -0
  172. package/package.json +38 -86
  173. package/public-api.d.ts +11 -0
  174. package/.editorconfig +0 -16
  175. package/.eslintrc.json +0 -72
  176. package/.github/ISSUE_TEMPLATE/bug_fix.yml +0 -60
  177. package/.github/ISSUE_TEMPLATE/dependency_update.yml +0 -20
  178. package/.github/ISSUE_TEMPLATE/documentation.yml +0 -13
  179. package/.github/ISSUE_TEMPLATE/engineering.yml +0 -22
  180. package/.github/ISSUE_TEMPLATE/feature_request.yml +0 -38
  181. package/.github/ISSUE_TEMPLATE/testing.yml +0 -38
  182. package/.github/dependabot.yml +0 -11
  183. package/.github/pull_request_template.md +0 -77
  184. package/.github/workflows/npm_publish.yml +0 -52
  185. package/.storybook/main.ts +0 -28
  186. package/.storybook/preview.ts +0 -19
  187. package/.storybook/test-runner.ts +0 -29
  188. package/.storybook/tsconfig.json +0 -14
  189. package/.storybook/typings.d.ts +0 -4
  190. package/.vscode/extensions.json +0 -7
  191. package/.vscode/launch.json +0 -20
  192. package/.vscode/settings.json +0 -16
  193. package/.vscode/tasks.json +0 -42
  194. package/angular.json +0 -102
  195. package/codegen.yml +0 -8
  196. package/projects/unipin-angular/README.md +0 -24
  197. package/projects/unipin-angular/documentation.json +0 -116258
  198. package/projects/unipin-angular/ng-package.json +0 -19
  199. package/projects/unipin-angular/package-lock.json +0 -23
  200. package/projects/unipin-angular/package.json +0 -32
  201. package/projects/unipin-angular/src/assets/private/scss/bootstrap/_accordion.scss +0 -149
  202. package/projects/unipin-angular/src/assets/private/scss/bootstrap/_alert.scss +0 -71
  203. package/projects/unipin-angular/src/assets/private/scss/bootstrap/_badge.scss +0 -38
  204. package/projects/unipin-angular/src/assets/private/scss/bootstrap/_breadcrumb.scss +0 -40
  205. package/projects/unipin-angular/src/assets/private/scss/bootstrap/_button-group.scss +0 -142
  206. package/projects/unipin-angular/src/assets/private/scss/bootstrap/_buttons.scss +0 -209
  207. package/projects/unipin-angular/src/assets/private/scss/bootstrap/_card.scss +0 -234
  208. package/projects/unipin-angular/src/assets/private/scss/bootstrap/_carousel.scss +0 -226
  209. package/projects/unipin-angular/src/assets/private/scss/bootstrap/_close.scss +0 -40
  210. package/projects/unipin-angular/src/assets/private/scss/bootstrap/_containers.scss +0 -41
  211. package/projects/unipin-angular/src/assets/private/scss/bootstrap/_dropdown.scss +0 -249
  212. package/projects/unipin-angular/src/assets/private/scss/bootstrap/_forms.scss +0 -9
  213. package/projects/unipin-angular/src/assets/private/scss/bootstrap/_functions.scss +0 -302
  214. package/projects/unipin-angular/src/assets/private/scss/bootstrap/_grid.scss +0 -33
  215. package/projects/unipin-angular/src/assets/private/scss/bootstrap/_helpers.scss +0 -10
  216. package/projects/unipin-angular/src/assets/private/scss/bootstrap/_images.scss +0 -42
  217. package/projects/unipin-angular/src/assets/private/scss/bootstrap/_list-group.scss +0 -192
  218. package/projects/unipin-angular/src/assets/private/scss/bootstrap/_maps.scss +0 -54
  219. package/projects/unipin-angular/src/assets/private/scss/bootstrap/_mixins.scss +0 -43
  220. package/projects/unipin-angular/src/assets/private/scss/bootstrap/_modal.scss +0 -237
  221. package/projects/unipin-angular/src/assets/private/scss/bootstrap/_nav.scss +0 -172
  222. package/projects/unipin-angular/src/assets/private/scss/bootstrap/_navbar.scss +0 -278
  223. package/projects/unipin-angular/src/assets/private/scss/bootstrap/_offcanvas.scss +0 -144
  224. package/projects/unipin-angular/src/assets/private/scss/bootstrap/_pagination.scss +0 -109
  225. package/projects/unipin-angular/src/assets/private/scss/bootstrap/_placeholders.scss +0 -51
  226. package/projects/unipin-angular/src/assets/private/scss/bootstrap/_popover.scss +0 -196
  227. package/projects/unipin-angular/src/assets/private/scss/bootstrap/_progress.scss +0 -59
  228. package/projects/unipin-angular/src/assets/private/scss/bootstrap/_reboot.scss +0 -610
  229. package/projects/unipin-angular/src/assets/private/scss/bootstrap/_root.scss +0 -73
  230. package/projects/unipin-angular/src/assets/private/scss/bootstrap/_spinners.scss +0 -85
  231. package/projects/unipin-angular/src/assets/private/scss/bootstrap/_tables.scss +0 -164
  232. package/projects/unipin-angular/src/assets/private/scss/bootstrap/_toasts.scss +0 -73
  233. package/projects/unipin-angular/src/assets/private/scss/bootstrap/_tooltip.scss +0 -120
  234. package/projects/unipin-angular/src/assets/private/scss/bootstrap/_transitions.scss +0 -27
  235. package/projects/unipin-angular/src/assets/private/scss/bootstrap/_type.scss +0 -106
  236. package/projects/unipin-angular/src/assets/private/scss/bootstrap/_utilities.scss +0 -647
  237. package/projects/unipin-angular/src/assets/private/scss/bootstrap/_variables.scss +0 -1634
  238. package/projects/unipin-angular/src/assets/private/scss/bootstrap/bootstrap-grid.scss +0 -64
  239. package/projects/unipin-angular/src/assets/private/scss/bootstrap/bootstrap-reboot.scss +0 -9
  240. package/projects/unipin-angular/src/assets/private/scss/bootstrap/bootstrap-utilities.scss +0 -18
  241. package/projects/unipin-angular/src/assets/private/scss/bootstrap/bootstrap.scss +0 -24
  242. package/projects/unipin-angular/src/assets/private/scss/bootstrap/forms/_floating-labels.scss +0 -75
  243. package/projects/unipin-angular/src/assets/private/scss/bootstrap/forms/_form-check.scss +0 -175
  244. package/projects/unipin-angular/src/assets/private/scss/bootstrap/forms/_form-control.scss +0 -195
  245. package/projects/unipin-angular/src/assets/private/scss/bootstrap/forms/_form-range.scss +0 -91
  246. package/projects/unipin-angular/src/assets/private/scss/bootstrap/forms/_form-select.scss +0 -71
  247. package/projects/unipin-angular/src/assets/private/scss/bootstrap/forms/_form-text.scss +0 -11
  248. package/projects/unipin-angular/src/assets/private/scss/bootstrap/forms/_input-group.scss +0 -132
  249. package/projects/unipin-angular/src/assets/private/scss/bootstrap/forms/_labels.scss +0 -36
  250. package/projects/unipin-angular/src/assets/private/scss/bootstrap/forms/_validation.scss +0 -12
  251. package/projects/unipin-angular/src/assets/private/scss/bootstrap/helpers/_clearfix.scss +0 -3
  252. package/projects/unipin-angular/src/assets/private/scss/bootstrap/helpers/_color-bg.scss +0 -10
  253. package/projects/unipin-angular/src/assets/private/scss/bootstrap/helpers/_colored-links.scss +0 -12
  254. package/projects/unipin-angular/src/assets/private/scss/bootstrap/helpers/_position.scss +0 -36
  255. package/projects/unipin-angular/src/assets/private/scss/bootstrap/helpers/_ratio.scss +0 -26
  256. package/projects/unipin-angular/src/assets/private/scss/bootstrap/helpers/_stacks.scss +0 -15
  257. package/projects/unipin-angular/src/assets/private/scss/bootstrap/helpers/_stretched-link.scss +0 -15
  258. package/projects/unipin-angular/src/assets/private/scss/bootstrap/helpers/_text-truncation.scss +0 -7
  259. package/projects/unipin-angular/src/assets/private/scss/bootstrap/helpers/_visually-hidden.scss +0 -8
  260. package/projects/unipin-angular/src/assets/private/scss/bootstrap/helpers/_vr.scss +0 -8
  261. package/projects/unipin-angular/src/assets/private/scss/bootstrap/mixins/_alert.scss +0 -15
  262. package/projects/unipin-angular/src/assets/private/scss/bootstrap/mixins/_backdrop.scss +0 -14
  263. package/projects/unipin-angular/src/assets/private/scss/bootstrap/mixins/_banner.scss +0 -9
  264. package/projects/unipin-angular/src/assets/private/scss/bootstrap/mixins/_border-radius.scss +0 -78
  265. package/projects/unipin-angular/src/assets/private/scss/bootstrap/mixins/_box-shadow.scss +0 -18
  266. package/projects/unipin-angular/src/assets/private/scss/bootstrap/mixins/_breakpoints.scss +0 -127
  267. package/projects/unipin-angular/src/assets/private/scss/bootstrap/mixins/_buttons.scss +0 -70
  268. package/projects/unipin-angular/src/assets/private/scss/bootstrap/mixins/_caret.scss +0 -64
  269. package/projects/unipin-angular/src/assets/private/scss/bootstrap/mixins/_clearfix.scss +0 -9
  270. package/projects/unipin-angular/src/assets/private/scss/bootstrap/mixins/_color-scheme.scss +0 -7
  271. package/projects/unipin-angular/src/assets/private/scss/bootstrap/mixins/_container.scss +0 -11
  272. package/projects/unipin-angular/src/assets/private/scss/bootstrap/mixins/_deprecate.scss +0 -10
  273. package/projects/unipin-angular/src/assets/private/scss/bootstrap/mixins/_forms.scss +0 -152
  274. package/projects/unipin-angular/src/assets/private/scss/bootstrap/mixins/_gradients.scss +0 -47
  275. package/projects/unipin-angular/src/assets/private/scss/bootstrap/mixins/_grid.scss +0 -151
  276. package/projects/unipin-angular/src/assets/private/scss/bootstrap/mixins/_image.scss +0 -16
  277. package/projects/unipin-angular/src/assets/private/scss/bootstrap/mixins/_list-group.scss +0 -24
  278. package/projects/unipin-angular/src/assets/private/scss/bootstrap/mixins/_lists.scss +0 -7
  279. package/projects/unipin-angular/src/assets/private/scss/bootstrap/mixins/_pagination.scss +0 -10
  280. package/projects/unipin-angular/src/assets/private/scss/bootstrap/mixins/_reset-text.scss +0 -17
  281. package/projects/unipin-angular/src/assets/private/scss/bootstrap/mixins/_resize.scss +0 -6
  282. package/projects/unipin-angular/src/assets/private/scss/bootstrap/mixins/_table-variants.scss +0 -24
  283. package/projects/unipin-angular/src/assets/private/scss/bootstrap/mixins/_text-truncate.scss +0 -8
  284. package/projects/unipin-angular/src/assets/private/scss/bootstrap/mixins/_transition.scss +0 -26
  285. package/projects/unipin-angular/src/assets/private/scss/bootstrap/mixins/_utilities.scss +0 -97
  286. package/projects/unipin-angular/src/assets/private/scss/bootstrap/mixins/_visually-hidden.scss +0 -29
  287. package/projects/unipin-angular/src/assets/private/scss/bootstrap/utilities/_api.scss +0 -47
  288. package/projects/unipin-angular/src/assets/private/scss/bootstrap/vendor/_rfs.scss +0 -354
  289. package/projects/unipin-angular/src/assets/private/scss/theme/variables.scss +0 -59
  290. package/projects/unipin-angular/src/graphql/generated.d.ts +0 -715
  291. package/projects/unipin-angular/src/graphql/generated.mjs +0 -49
  292. package/projects/unipin-angular/src/graphql/generated.ts +0 -19998
  293. package/projects/unipin-angular/src/lib/components/approval/detail/approval-detail.component.html +0 -14
  294. package/projects/unipin-angular/src/lib/components/approval/detail/approval-detail.component.scss +0 -0
  295. package/projects/unipin-angular/src/lib/components/approval/detail/approval-detail.component.ts +0 -90
  296. package/projects/unipin-angular/src/lib/components/approval/detail/approval-detail.stories.ts +0 -61
  297. package/projects/unipin-angular/src/lib/components/approval/form/approval-form.component.html +0 -41
  298. package/projects/unipin-angular/src/lib/components/approval/form/approval-form.component.scss +0 -0
  299. package/projects/unipin-angular/src/lib/components/approval/form/approval-form.component.ts +0 -152
  300. package/projects/unipin-angular/src/lib/components/approval/form/approval-form.stories.ts +0 -111
  301. package/projects/unipin-angular/src/lib/components/approval/list/approval-list.component.html +0 -15
  302. package/projects/unipin-angular/src/lib/components/approval/list/approval-list.component.scss +0 -0
  303. package/projects/unipin-angular/src/lib/components/approval/list/approval-list.component.ts +0 -136
  304. package/projects/unipin-angular/src/lib/components/approval/list/approval-list.stories.ts +0 -141
  305. package/projects/unipin-angular/src/lib/components/approval/list/provide-approval-entities.util.ts +0 -10
  306. package/projects/unipin-angular/src/lib/components/approval/services/approval.service.ts +0 -46
  307. package/projects/unipin-angular/src/lib/components/audit/detail/audit-detail.component.html +0 -50
  308. package/projects/unipin-angular/src/lib/components/audit/detail/audit-detail.component.scss +0 -4
  309. package/projects/unipin-angular/src/lib/components/audit/detail/audit-detail.component.spec.ts +0 -51
  310. package/projects/unipin-angular/src/lib/components/audit/detail/audit-detail.component.ts +0 -141
  311. package/projects/unipin-angular/src/lib/components/audit/detail/audit-detail.stories.ts +0 -126
  312. package/projects/unipin-angular/src/lib/components/audit/list/audit-list.component.html +0 -5
  313. package/projects/unipin-angular/src/lib/components/audit/list/audit-list.component.scss +0 -0
  314. package/projects/unipin-angular/src/lib/components/audit/list/audit-list.component.ts +0 -85
  315. package/projects/unipin-angular/src/lib/components/audit/list/audit-list.stories.ts +0 -170
  316. package/projects/unipin-angular/src/lib/components/audit/service/audit.service.ts +0 -48
  317. package/projects/unipin-angular/src/lib/components/audit/types/audit-detail-form.type.ts +0 -13
  318. package/projects/unipin-angular/src/lib/components/buttons/group/btn-group.component.html +0 -42
  319. package/projects/unipin-angular/src/lib/components/buttons/group/btn-group.component.scss +0 -19
  320. package/projects/unipin-angular/src/lib/components/buttons/group/btn-group.component.ts +0 -72
  321. package/projects/unipin-angular/src/lib/components/buttons/group/btn-group.stories.ts +0 -132
  322. package/projects/unipin-angular/src/lib/components/buttons/group/interfaces/btn-group-config.interface.ts +0 -63
  323. package/projects/unipin-angular/src/lib/components/buttons/loading/btn-loading.component.html +0 -9
  324. package/projects/unipin-angular/src/lib/components/buttons/loading/btn-loading.component.scss +0 -8
  325. package/projects/unipin-angular/src/lib/components/buttons/loading/btn-loading.component.ts +0 -87
  326. package/projects/unipin-angular/src/lib/components/buttons/loading/btn-loading.stories.ts +0 -188
  327. package/projects/unipin-angular/src/lib/components/containers/applet-container/applet-container.component.html +0 -39
  328. package/projects/unipin-angular/src/lib/components/containers/applet-container/applet-container.component.scss +0 -68
  329. package/projects/unipin-angular/src/lib/components/containers/applet-container/applet-container.component.ts +0 -98
  330. package/projects/unipin-angular/src/lib/components/containers/applet-container/provide-applet-config.util.ts +0 -23
  331. package/projects/unipin-angular/src/lib/components/containers/colum-header-container/column-header-container.component.html +0 -17
  332. package/projects/unipin-angular/src/lib/components/containers/colum-header-container/column-header-container.component.scss +0 -4
  333. package/projects/unipin-angular/src/lib/components/containers/colum-header-container/column-header-container.component.ts +0 -32
  334. package/projects/unipin-angular/src/lib/components/containers/colum-header-container/column-header.stories.ts +0 -77
  335. package/projects/unipin-angular/src/lib/components/containers/column-container/column-container.component.html +0 -17
  336. package/projects/unipin-angular/src/lib/components/containers/column-container/column-container.component.scss +0 -0
  337. package/projects/unipin-angular/src/lib/components/containers/column-container/column-container.component.ts +0 -139
  338. package/projects/unipin-angular/src/lib/components/containers/column-container/directives/lazy-route.directive.ts +0 -86
  339. package/projects/unipin-angular/src/lib/components/containers/list-container/list-pagination-container/list-pagination-container.component.html +0 -19
  340. package/projects/unipin-angular/src/lib/components/containers/list-container/list-pagination-container/list-pagination-container.component.scss +0 -7
  341. package/projects/unipin-angular/src/lib/components/containers/list-container/list-pagination-container/list-pagination-container.component.ts +0 -113
  342. package/projects/unipin-angular/src/lib/components/containers/list-container/list-pagination-container/list-pagination-container.stories.ts +0 -207
  343. package/projects/unipin-angular/src/lib/components/containers/list-container/list-snapshot-container/list-snapshot-container.component.html +0 -19
  344. package/projects/unipin-angular/src/lib/components/containers/list-container/list-snapshot-container/list-snapshot-container.component.scss +0 -7
  345. package/projects/unipin-angular/src/lib/components/containers/list-container/list-snapshot-container/list-snapshot-container.component.ts +0 -114
  346. package/projects/unipin-angular/src/lib/components/containers/list-container/list-snapshot-container/list-snapshot-container.stories.ts +0 -212
  347. package/projects/unipin-angular/src/lib/components/containers/modal-container/modal-container.component.html +0 -15
  348. package/projects/unipin-angular/src/lib/components/containers/modal-container/modal-container.component.scss +0 -2
  349. package/projects/unipin-angular/src/lib/components/containers/modal-container/modal-container.component.ts +0 -88
  350. package/projects/unipin-angular/src/lib/components/containers/modal-container/modal-container.stories.ts +0 -66
  351. package/projects/unipin-angular/src/lib/components/filter/filter.component.html +0 -112
  352. package/projects/unipin-angular/src/lib/components/filter/filter.component.scss +0 -28
  353. package/projects/unipin-angular/src/lib/components/filter/filter.component.ts +0 -329
  354. package/projects/unipin-angular/src/lib/components/filter/filter.stories.ts +0 -176
  355. package/projects/unipin-angular/src/lib/components/filter/interfaces/filter-config.interface.ts +0 -17
  356. package/projects/unipin-angular/src/lib/components/filter/interfaces/filter-field.interface.ts +0 -73
  357. package/projects/unipin-angular/src/lib/components/filter/interfaces/filter-search-event.interface.ts +0 -15
  358. package/projects/unipin-angular/src/lib/components/forms/country-input/form-country-input.component.html +0 -19
  359. package/projects/unipin-angular/src/lib/components/forms/country-input/form-country-input.component.scss +0 -0
  360. package/projects/unipin-angular/src/lib/components/forms/country-input/form-country-input.component.ts +0 -210
  361. package/projects/unipin-angular/src/lib/components/forms/country-input/form-country-input.stories.ts +0 -175
  362. package/projects/unipin-angular/src/lib/components/forms/currency-input/form-currency-input.component.html +0 -42
  363. package/projects/unipin-angular/src/lib/components/forms/currency-input/form-currency-input.component.scss +0 -4
  364. package/projects/unipin-angular/src/lib/components/forms/currency-input/form-currency-input.component.ts +0 -285
  365. package/projects/unipin-angular/src/lib/components/forms/currency-input/form-currency-input.spec.ts +0 -119
  366. package/projects/unipin-angular/src/lib/components/forms/currency-input/form-currency-input.stories.ts +0 -243
  367. package/projects/unipin-angular/src/lib/components/forms/date/form-date.component.html +0 -27
  368. package/projects/unipin-angular/src/lib/components/forms/date/form-date.component.scss +0 -7
  369. package/projects/unipin-angular/src/lib/components/forms/date/form-date.component.ts +0 -225
  370. package/projects/unipin-angular/src/lib/components/forms/date/form-date.stories.ts +0 -201
  371. package/projects/unipin-angular/src/lib/components/forms/image-picker/directives/drag-n-drop.directive.ts +0 -40
  372. package/projects/unipin-angular/src/lib/components/forms/image-picker/form-image-picker.component.html +0 -29
  373. package/projects/unipin-angular/src/lib/components/forms/image-picker/form-image-picker.component.scss +0 -40
  374. package/projects/unipin-angular/src/lib/components/forms/image-picker/form-image-picker.component.ts +0 -109
  375. package/projects/unipin-angular/src/lib/components/forms/image-picker/form-image-picker.stories.ts +0 -133
  376. package/projects/unipin-angular/src/lib/components/forms/input/form-input.component.html +0 -22
  377. package/projects/unipin-angular/src/lib/components/forms/input/form-input.component.scss +0 -0
  378. package/projects/unipin-angular/src/lib/components/forms/input/form-input.component.ts +0 -177
  379. package/projects/unipin-angular/src/lib/components/forms/input/form-input.stories.ts +0 -185
  380. package/projects/unipin-angular/src/lib/components/forms/number/form-number.component.html +0 -6
  381. package/projects/unipin-angular/src/lib/components/forms/number/form-number.component.scss +0 -0
  382. package/projects/unipin-angular/src/lib/components/forms/number/form-number.component.ts +0 -176
  383. package/projects/unipin-angular/src/lib/components/forms/number/form-number.spec.ts +0 -62
  384. package/projects/unipin-angular/src/lib/components/forms/number/form-number.stories.ts +0 -150
  385. package/projects/unipin-angular/src/lib/components/forms/number/pipes/locale-number.pipe.ts +0 -32
  386. package/projects/unipin-angular/src/lib/components/forms/password/form-password.component.html +0 -11
  387. package/projects/unipin-angular/src/lib/components/forms/password/form-password.component.scss +0 -5
  388. package/projects/unipin-angular/src/lib/components/forms/password/form-password.component.ts +0 -177
  389. package/projects/unipin-angular/src/lib/components/forms/password/form-password.stories.ts +0 -151
  390. package/projects/unipin-angular/src/lib/components/forms/rate-group-code-input/form-rate-group-code-input.component.html +0 -30
  391. package/projects/unipin-angular/src/lib/components/forms/rate-group-code-input/form-rate-group-code-input.component.scss +0 -0
  392. package/projects/unipin-angular/src/lib/components/forms/rate-group-code-input/form-rate-group-code-input.component.ts +0 -271
  393. package/projects/unipin-angular/src/lib/components/forms/rate-group-code-input/form-rate-group-code-input.stories.ts +0 -248
  394. package/projects/unipin-angular/src/lib/components/forms/searchable-select/form-searchable-select.component.html +0 -28
  395. package/projects/unipin-angular/src/lib/components/forms/searchable-select/form-searchable-select.component.scss +0 -0
  396. package/projects/unipin-angular/src/lib/components/forms/searchable-select/form-searchable-select.component.ts +0 -281
  397. package/projects/unipin-angular/src/lib/components/forms/searchable-select/form-searchable-select.stories.ts +0 -267
  398. package/projects/unipin-angular/src/lib/components/forms/select/form-select.component.html +0 -24
  399. package/projects/unipin-angular/src/lib/components/forms/select/form-select.component.scss +0 -1
  400. package/projects/unipin-angular/src/lib/components/forms/select/form-select.component.ts +0 -216
  401. package/projects/unipin-angular/src/lib/components/forms/select/form-select.stories.ts +0 -220
  402. package/projects/unipin-angular/src/lib/components/forms/textarea/form-textarea.component.html +0 -9
  403. package/projects/unipin-angular/src/lib/components/forms/textarea/form-textarea.component.scss +0 -0
  404. package/projects/unipin-angular/src/lib/components/forms/textarea/form-textarea.component.ts +0 -146
  405. package/projects/unipin-angular/src/lib/components/forms/textarea/form-textarea.stories.ts +0 -163
  406. package/projects/unipin-angular/src/lib/components/grids/grid-pagination/grid-pagination.component.html +0 -17
  407. package/projects/unipin-angular/src/lib/components/grids/grid-pagination/grid-pagination.component.scss +0 -8
  408. package/projects/unipin-angular/src/lib/components/grids/grid-pagination/grid-pagination.component.ts +0 -224
  409. package/projects/unipin-angular/src/lib/components/grids/grid-pagination/grid-pagination.stories.ts +0 -219
  410. package/projects/unipin-angular/src/lib/components/grids/grid-snapshot/grid-snapshot.component.html +0 -17
  411. package/projects/unipin-angular/src/lib/components/grids/grid-snapshot/grid-snapshot.component.scss +0 -8
  412. package/projects/unipin-angular/src/lib/components/grids/grid-snapshot/grid-snapshot.component.ts +0 -229
  413. package/projects/unipin-angular/src/lib/components/grids/grid-snapshot/grid-snapshot.stories.ts +0 -173
  414. package/projects/unipin-angular/src/lib/components/grids/interfaces/grid-config.interface.ts +0 -44
  415. package/projects/unipin-angular/src/lib/components/grids/services/grid.service.ts +0 -23
  416. package/projects/unipin-angular/src/lib/components/infinite-scroll/directive/infinite-scroll.directive.ts +0 -72
  417. package/projects/unipin-angular/src/lib/components/infinite-scroll/infinite-scroll.component.html +0 -13
  418. package/projects/unipin-angular/src/lib/components/infinite-scroll/infinite-scroll.component.scss +0 -10
  419. package/projects/unipin-angular/src/lib/components/infinite-scroll/infinite-scroll.component.ts +0 -61
  420. package/projects/unipin-angular/src/lib/components/infinite-scroll/infinite-scroll.stories.ts +0 -80
  421. package/projects/unipin-angular/src/lib/components/tabs/tab-content/tab-content.component.html +0 -3
  422. package/projects/unipin-angular/src/lib/components/tabs/tab-content/tab-content.component.scss +0 -6
  423. package/projects/unipin-angular/src/lib/components/tabs/tab-content/tab-content.component.ts +0 -56
  424. package/projects/unipin-angular/src/lib/components/tabs/tab-group/tab-group.component.html +0 -24
  425. package/projects/unipin-angular/src/lib/components/tabs/tab-group/tab-group.component.scss +0 -39
  426. package/projects/unipin-angular/src/lib/components/tabs/tab-group/tab-group.component.ts +0 -92
  427. package/projects/unipin-angular/src/lib/components/tabs/tab.stories.ts +0 -117
  428. package/projects/unipin-angular/src/lib/guards/auth/auth.guard.ts +0 -11
  429. package/projects/unipin-angular/src/lib/interceptors/header/header.interceptor.ts +0 -36
  430. package/projects/unipin-angular/src/lib/interceptors/refresh-token/refresh-token.interceptor.ts +0 -123
  431. package/projects/unipin-angular/src/lib/interfaces/user/user.interface.ts +0 -27
  432. package/projects/unipin-angular/src/lib/modules/index.ts +0 -11
  433. package/projects/unipin-angular/src/lib/modules/micro-frontend/utils/mf-bootstrap.util.ts +0 -74
  434. package/projects/unipin-angular/src/lib/modules/micro-frontend/utils/mf-global-state.util.ts +0 -20
  435. package/projects/unipin-angular/src/lib/modules/permission/directive/permission.directive.spec.ts +0 -50
  436. package/projects/unipin-angular/src/lib/modules/permission/directive/permission.directive.ts +0 -68
  437. package/projects/unipin-angular/src/lib/modules/permission/guards/permission.guard.spec.ts +0 -76
  438. package/projects/unipin-angular/src/lib/modules/permission/guards/permission.guard.ts +0 -30
  439. package/projects/unipin-angular/src/lib/modules/permission/pages/401/unauthorized.page.html +0 -3
  440. package/projects/unipin-angular/src/lib/modules/permission/pages/401/unauthorized.page.scss +0 -3
  441. package/projects/unipin-angular/src/lib/modules/permission/pages/401/unauthorized.page.ts +0 -14
  442. package/projects/unipin-angular/src/lib/modules/permission/pages/loading/loading.page.html +0 -2
  443. package/projects/unipin-angular/src/lib/modules/permission/pages/loading/loading.page.scss +0 -4
  444. package/projects/unipin-angular/src/lib/modules/permission/pages/loading/loading.page.ts +0 -76
  445. package/projects/unipin-angular/src/lib/modules/permission/pages/loading/provide-loading-config.util.ts +0 -18
  446. package/projects/unipin-angular/src/lib/modules/permission/services/permission.service.spec.ts +0 -62
  447. package/projects/unipin-angular/src/lib/modules/permission/services/permission.service.ts +0 -78
  448. package/projects/unipin-angular/src/lib/resolvers/auth/auth.resolver.spec.ts +0 -46
  449. package/projects/unipin-angular/src/lib/resolvers/auth/auth.resolver.ts +0 -144
  450. package/projects/unipin-angular/src/lib/services/auth/auth.service.ts +0 -243
  451. package/projects/unipin-angular/src/lib/services/country/country.service.ts +0 -47
  452. package/projects/unipin-angular/src/lib/services/currency/currency.service.ts +0 -44
  453. package/projects/unipin-angular/src/lib/services/profile/profile.service.ts +0 -86
  454. package/projects/unipin-angular/src/lib/services/rate-group-code/rate-group-code.service.ts +0 -29
  455. package/projects/unipin-angular/src/lib/utils/contrast-color-generator/contrast-color-generator.util.spec.ts +0 -19
  456. package/projects/unipin-angular/src/lib/utils/contrast-color-generator/contrast-color-generator.util.ts +0 -28
  457. package/projects/unipin-angular/src/lib/utils/form-error-message/form-error-message.util.spec.ts +0 -58
  458. package/projects/unipin-angular/src/lib/utils/form-error-message/form-error-message.util.ts +0 -30
  459. package/projects/unipin-angular/src/lib/utils/format-capitalize/format-capitalize.util.spec.ts +0 -30
  460. package/projects/unipin-angular/src/lib/utils/format-capitalize/format-capitalize.util.ts +0 -22
  461. package/projects/unipin-angular/src/lib/utils/redirect-to-first-menu/redirect-to-first-menu.util.ts +0 -15
  462. package/projects/unipin-angular/src/public-api.ts +0 -126
  463. package/projects/unipin-angular/tsconfig.lib.json +0 -14
  464. package/projects/unipin-angular/tsconfig.lib.prod.json +0 -10
  465. package/projects/unipin-angular/tsconfig.spec.json +0 -14
  466. package/snapshot-serializer.js +0 -12
  467. package/test-runner-jest.config.js +0 -13
  468. package/tsconfig.json +0 -51
  469. /package/{projects/unipin-angular/src/lib/components/audit/index.ts → lib/components/audit/index.d.ts} +0 -0
  470. /package/{projects/unipin-angular/src/lib/components/buttons/index.ts → lib/components/buttons/index.d.ts} +0 -0
  471. /package/{projects/unipin-angular/src/lib/components/containers/list-container/index.ts → lib/components/containers/list-container/index.d.ts} +0 -0
  472. /package/{projects/unipin-angular/src/lib/components/forms/index.ts → lib/components/forms/index.d.ts} +0 -0
  473. /package/{projects/unipin-angular/src/lib/components/grids/index.ts → lib/components/grids/index.d.ts} +0 -0
  474. /package/{projects/unipin-angular/src/lib/components/infinite-scroll/index.ts → lib/components/infinite-scroll/index.d.ts} +0 -0
  475. /package/{projects/unipin-angular/src/lib/guards/index.ts → lib/guards/index.d.ts} +0 -0
  476. /package/{projects/unipin-angular/src/lib/interceptors/index.ts → lib/interceptors/index.d.ts} +0 -0
  477. /package/{projects/unipin-angular/src/lib/interfaces/index.ts → lib/interfaces/index.d.ts} +0 -0
  478. /package/{projects/unipin-angular/src/lib/modules/micro-frontend/index.ts → lib/modules/micro-frontend/index.d.ts} +0 -0
  479. /package/{projects/unipin-angular/src/lib/resolvers/index.ts → lib/resolvers/index.d.ts} +0 -0
  480. /package/{projects/unipin-angular/src/lib/services/index.ts → lib/services/index.d.ts} +0 -0
  481. /package/{projects/unipin-angular/src/lib/utils/index.ts → lib/utils/index.d.ts} +0 -0
  482. /package/{projects/unipin-angular/src → src}/assets/scss/forms.scss +0 -0
  483. /package/{projects/unipin-angular/src → src}/assets/scss/grid.scss +0 -0
  484. /package/{projects/unipin-angular/src → src}/assets/scss/select.scss +0 -0
@@ -0,0 +1,78 @@
1
+ import { ChangeDetectionStrategy, Component, ViewChild } from '@angular/core';
2
+ import { NavigationEnd } from '@angular/router';
3
+ import { filter } from 'rxjs';
4
+ import { IonicModule } from '@ionic/angular';
5
+ import { TabContentComponent, TabGroupComponent } from '../../tabs';
6
+ import { ApprovalFormComponent } from '../form/approval-form.component';
7
+ import { ButtonGroupComponent } from '../../buttons/group/btn-group.component';
8
+ import { ColumnHeaderContainerComponent } from '../../containers/colum-header-container/column-header-container.component';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "@angular/router";
11
+ import * as i2 from "@ionic/angular";
12
+ export class ApprovalDetailComponent {
13
+ constructor(router, activatedRoute) {
14
+ this.router = router;
15
+ this.activatedRoute = activatedRoute;
16
+ this.btnConfig = [];
17
+ this.guid = '';
18
+ }
19
+ ngOnInit() {
20
+ this.sub = this.activatedRoute.queryParams.subscribe((params) => {
21
+ if (params) {
22
+ this.guids = params['guids'];
23
+ this.isApprove = params['isApprove'] === 'true';
24
+ this.approvalGroupGuid = params['approvalGroupGuid'];
25
+ }
26
+ });
27
+ }
28
+ ngAfterViewInit() {
29
+ if (this.guids) {
30
+ this.setChildGuid(this.guids);
31
+ this.changeTab({ fragment: this.activatedRoute.snapshot.fragment, index: 0 });
32
+ }
33
+ else {
34
+ this.setChildGuid([this.activatedRoute.children[0].snapshot.params['guid']]);
35
+ this.changeTab({ fragment: this.activatedRoute.snapshot.fragment, index: 0 });
36
+ this.sub = this.router.events.pipe(filter((e) => e instanceof NavigationEnd)).subscribe({
37
+ next: () => {
38
+ const newGuid = this.activatedRoute.children[0].snapshot.params['guid'];
39
+ if (this.guid !== newGuid) {
40
+ this.guid = newGuid;
41
+ this.setChildGuid([this.guid]);
42
+ }
43
+ }
44
+ });
45
+ }
46
+ }
47
+ ngOnDestroy() {
48
+ this.sub.unsubscribe();
49
+ }
50
+ changeTab({ fragment }) {
51
+ switch (fragment) {
52
+ default:
53
+ this.btnConfig = this.formComponent?.btnConfig ?? [];
54
+ }
55
+ }
56
+ setChildGuid(guids) {
57
+ this.formComponent?.setGuid(guids, this.approvalGroupGuid, this.isApprove);
58
+ }
59
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApprovalDetailComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
60
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ApprovalDetailComponent, isStandalone: true, selector: "up-approval-detail", host: { classAttribute: "d-block h-100" }, viewQueries: [{ propertyName: "formComponent", first: true, predicate: ApprovalFormComponent, descendants: true }], ngImport: i0, template: "<up-column-header-container header=\"Approval Detail\" prevUrl=\"/approval\" class=\"bg-white\">\n @if (!formComponent?.isLoading) {\n <up-btn-group id=\"approval-detail-button\" [config]=\"btnConfig\" button />\n }\n @else {\n <ion-skeleton-text class=\"m-0 sk-btn\" button />\n }\n\n <up-tab-group class=\"h-100\" (onChange)=\"changeTab($event)\">\n <up-tab-content header=\"Detail\" fragment=\"detail\">\n <up-approval-form />\n </up-tab-content>\n </up-tab-group>\n</up-column-header-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: IonicModule }, { kind: "component", type: i2.IonSkeletonText, selector: "ion-skeleton-text", inputs: ["animated"] }, { kind: "component", type: TabGroupComponent, selector: "up-tab-group", outputs: ["onChange", "changed"] }, { kind: "component", type: TabContentComponent, selector: "up-tab-content", inputs: ["header"] }, { kind: "component", type: ButtonGroupComponent, selector: "up-btn-group", inputs: ["config"] }, { kind: "component", type: ColumnHeaderContainerComponent, selector: "up-column-header-container", inputs: ["header", "prevUrl"] }, { kind: "component", type: ApprovalFormComponent, selector: "up-approval-form", inputs: ["isLoading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
61
+ }
62
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApprovalDetailComponent, decorators: [{
63
+ type: Component,
64
+ args: [{ standalone: true, selector: 'up-approval-detail', changeDetection: ChangeDetectionStrategy.OnPush, host: {
65
+ class: 'd-block h-100'
66
+ }, imports: [
67
+ IonicModule,
68
+ TabGroupComponent,
69
+ TabContentComponent,
70
+ ButtonGroupComponent,
71
+ ColumnHeaderContainerComponent,
72
+ ApprovalFormComponent
73
+ ], template: "<up-column-header-container header=\"Approval Detail\" prevUrl=\"/approval\" class=\"bg-white\">\n @if (!formComponent?.isLoading) {\n <up-btn-group id=\"approval-detail-button\" [config]=\"btnConfig\" button />\n }\n @else {\n <ion-skeleton-text class=\"m-0 sk-btn\" button />\n }\n\n <up-tab-group class=\"h-100\" (onChange)=\"changeTab($event)\">\n <up-tab-content header=\"Detail\" fragment=\"detail\">\n <up-approval-form />\n </up-tab-content>\n </up-tab-group>\n</up-column-header-container>\n" }]
74
+ }], ctorParameters: () => [{ type: i1.Router }, { type: i1.ActivatedRoute }], propDecorators: { formComponent: [{
75
+ type: ViewChild,
76
+ args: [ApprovalFormComponent]
77
+ }] } });
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaXBpbi1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9hcHByb3ZhbC9kZXRhaWwvYXBwcm92YWwtZGV0YWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaXBpbi1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9hcHByb3ZhbC9kZXRhaWwvYXBwcm92YWwtZGV0YWlsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsdUJBQXVCLEVBQUUsU0FBUyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEgsT0FBTyxFQUFrQixhQUFhLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsTUFBTSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM1QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFvQixNQUFNLFlBQVksQ0FBQztBQUV0RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwyRUFBMkUsQ0FBQzs7OztBQW9CM0gsTUFBTSxPQUFPLHVCQUF1QjtJQVVsQyxZQUNxQixNQUFjLEVBQ2QsY0FBOEI7UUFEOUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQVQ1QyxjQUFTLEdBQXdCLEVBQUUsQ0FBQztRQUVqQyxTQUFJLEdBQVcsRUFBRSxDQUFDO0lBUXhCLENBQUM7SUFFRSxRQUFRO1FBQ2IsSUFB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Q0osS0FBSyxFQUFFLGVBQWU7cUJBQ3ZCLFdBQ1E7d0JBQ1AsV0FBVzt3QkFDWCxpQkFBaUI7d0JBQ2pCLG1CQUFtQjt3QkFDbkIsb0JBQW9CO3dCQUNwQiw4QkFBOEI7d0JBQzlCLHFCQUFxQjtxQkFDdEI7d0dBSXdDLGFBQWE7c0JBQXJELFNBQVM7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBmaWx0ZXIsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSW9uaWNNb2R1bGUgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBUYWJDb250ZW50Q29tcG9uZW50LCBUYWJHcm91cENvbXBvbmVudCwgVGFic0NoYW5nZWRFdmVudCB9IGZyb20gJy4uLy4uL3RhYnMnO1xuaW1wb3J0IHsgQnV0dG9uR3JvdXBDb25maWcgfSBmcm9tICcuLi8uLi9idXR0b25zL2dyb3VwL2ludGVyZmFjZXMvYnRuLWdyb3VwLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQXBwcm92YWxGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS9hcHByb3ZhbC1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25Hcm91cENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2J1dHRvbnMvZ3JvdXAvYnRuLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb2x1bW5IZWFkZXJDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb250YWluZXJzL2NvbHVtLWhlYWRlci1jb250YWluZXIvY29sdW1uLWhlYWRlci1jb250YWluZXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAndXAtYXBwcm92YWwtZGV0YWlsJyxcbiAgc3R5bGVVcmw6ICcuL2FwcHJvdmFsLWRldGFpbC5jb21wb25lbnQuc2NzcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHByb3ZhbC1kZXRhaWwuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnZC1ibG9jayBoLTEwMCdcbiAgfSxcbiAgaW1wb3J0czogW1xuICAgIElvbmljTW9kdWxlLFxuICAgIFRhYkdyb3VwQ29tcG9uZW50LFxuICAgIFRhYkNvbnRlbnRDb21wb25lbnQsXG4gICAgQnV0dG9uR3JvdXBDb21wb25lbnQsXG4gICAgQ29sdW1uSGVhZGVyQ29udGFpbmVyQ29tcG9uZW50LFxuICAgIEFwcHJvdmFsRm9ybUNvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEFwcHJvdmFsRGV0YWlsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBWaWV3Q2hpbGQoQXBwcm92YWxGb3JtQ29tcG9uZW50KSBwdWJsaWMgZm9ybUNvbXBvbmVudD86IEFwcHJvdmFsRm9ybUNvbXBvbmVudDtcbiAgcHVibGljIGJ0bkNvbmZpZzogQnV0dG9uR3JvdXBDb25maWdbXSA9IFtdO1xuICBwcm90ZWN0ZWQgZ3VpZHM/OiBzdHJpbmdbXTtcbiAgcHJvdGVjdGVkIGd1aWQ6IHN0cmluZyA9ICcnO1xuICBwcm90ZWN0ZWQgc3ViITogU3Vic2NyaXB0aW9uOyAgXG4gIHByb3RlY3RlZCBpc0FwcHJvdmU/OiBib29sZWFuO1xuICBwcm90ZWN0ZWQgYXBwcm92YWxHcm91cEd1aWQ/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByb3RlY3RlZCByZWFkb25seSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGVcbiAgKSB7IH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWIgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XG4gICAgICBpZiAocGFyYW1zKSB7XG4gICAgICAgIHRoaXMuZ3VpZHMgPSBwYXJhbXNbJ2d1aWRzJ107XG4gICAgICAgIHRoaXMuaXNBcHByb3ZlID0gcGFyYW1zWydpc0FwcHJvdmUnXSA9PT0gJ3RydWUnO1xuXG4gICAgICAgIHRoaXMuYXBwcm92YWxHcm91cEd1aWQgPSBwYXJhbXNbJ2FwcHJvdmFsR3JvdXBHdWlkJ107XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWR7XG4gICAgaWYgKHRoaXMuZ3VpZHMpIHtcbiAgICAgIHRoaXMuc2V0Q2hpbGRHdWlkKHRoaXMuZ3VpZHMpO1xuICAgICAgdGhpcy5jaGFuZ2VUYWIoeyBmcmFnbWVudDogdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5mcmFnbWVudCwgaW5kZXg6IDAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0Q2hpbGRHdWlkKFt0aGlzLmFjdGl2YXRlZFJvdXRlLmNoaWxkcmVuWzBdLnNuYXBzaG90LnBhcmFtc1snZ3VpZCddXSk7XG4gICAgICB0aGlzLmNoYW5nZVRhYih7IGZyYWdtZW50OiB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LmZyYWdtZW50LCBpbmRleDogMCB9KTtcblxuICAgICAgdGhpcy5zdWIgPSB0aGlzLnJvdXRlci5ldmVudHMucGlwZShmaWx0ZXIoKGUpID0+IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld0d1aWQ6IHN0cmluZyA9IHRoaXMuYWN0aXZhdGVkUm91dGUuY2hpbGRyZW5bMF0uc25hcHNob3QucGFyYW1zWydndWlkJ107XG5cbiAgICAgICAgICBpZiAodGhpcy5ndWlkICE9PSBuZXdHdWlkKSB7XG4gICAgICAgICAgICB0aGlzLmd1aWQgPSBuZXdHdWlkO1xuICAgICAgICAgICAgdGhpcy5zZXRDaGlsZEd1aWQoWyB0aGlzLmd1aWQgXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZHsgXG4gICAgdGhpcy5zdWIudW5zdWJzY3JpYmUoKTsgXG4gIH1cblxuICBwdWJsaWMgY2hhbmdlVGFiKHsgZnJhZ21lbnQgfTogVGFic0NoYW5nZWRFdmVudCk6IHZvaWR7XG4gICAgc3dpdGNoIChmcmFnbWVudCkge1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5idG5Db25maWcgPSB0aGlzLmZvcm1Db21wb25lbnQ/LmJ0bkNvbmZpZz8/IFtdO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRDaGlsZEd1aWQoZ3VpZHM6IHN0cmluZ1tdKTogdm9pZHtcbiAgICB0aGlzLmZvcm1Db21wb25lbnQ/LnNldEd1aWQoZ3VpZHMsIHRoaXMuYXBwcm92YWxHcm91cEd1aWQsIHRoaXMuaXNBcHByb3ZlKTtcbiAgfVxufVxuIiwiPHVwLWNvbHVtbi1oZWFkZXItY29udGFpbmVyIGhlYWRlcj1cIkFwcHJvdmFsIERldGFpbFwiIHByZXZVcmw9XCIvYXBwcm92YWxcIiBjbGFzcz1cImJnLXdoaXRlXCI+XG4gICAgQGlmICghZm9ybUNvbXBvbmVudD8uaXNMb2FkaW5nKSB7XG4gICAgICAgIDx1cC1idG4tZ3JvdXAgaWQ9XCJhcHByb3ZhbC1kZXRhaWwtYnV0dG9uXCIgW2NvbmZpZ109XCJidG5Db25maWdcIiBidXR0b24gLz5cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgICA8aW9uLXNrZWxldG9uLXRleHQgY2xhc3M9XCJtLTAgc2stYnRuXCIgYnV0dG9uIC8+XG4gICAgfVxuXG4gICAgPHVwLXRhYi1ncm91cCBjbGFzcz1cImgtMTAwXCIgKG9uQ2hhbmdlKT1cImNoYW5nZVRhYigkZXZlbnQpXCI+XG4gICAgICAgIDx1cC10YWItY29udGVudCBoZWFkZXI9XCJEZXRhaWxcIiBmcmFnbWVudD1cImRldGFpbFwiPlxuICAgICAgICAgICAgPHVwLWFwcHJvdmFsLWZvcm0gLz5cbiAgICAgICAgPC91cC10YWItY29udGVudD5cbiAgICA8L3VwLXRhYi1ncm91cD5cbjwvdXAtY29sdW1uLWhlYWRlci1jb250YWluZXI+XG4iXX0=
@@ -0,0 +1,128 @@
1
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
+ import { DatePipe, JsonPipe } from '@angular/common';
3
+ import { IonicModule } from '@ionic/angular';
4
+ import { ApprovalStatusEnum } from '../../../../graphql/generated';
5
+ import { FormInputComponent } from '../../forms/input/form-input.component';
6
+ import { FormTextareaComponent } from '../../forms/textarea/form-textarea.component';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/router";
9
+ import * as i2 from "../services/approval.service";
10
+ import * as i3 from "../../grids/services/grid.service";
11
+ import * as i4 from "@ionic/angular";
12
+ import * as i5 from "../../../modules/permission/services/permission.service";
13
+ export class ApprovalFormComponent {
14
+ constructor(router, ch, service, gridService, alertCtrl, permService) {
15
+ this.router = router;
16
+ this.ch = ch;
17
+ this.service = service;
18
+ this.gridService = gridService;
19
+ this.alertCtrl = alertCtrl;
20
+ this.permService = permService;
21
+ this.isLoading = true;
22
+ this.btnConfig = [];
23
+ this.data = [];
24
+ }
25
+ ngOnDestroy() {
26
+ this.sub?.unsubscribe();
27
+ }
28
+ setGuid(guids, approvalGroupGuid, isApprove) {
29
+ this.guids = guids;
30
+ if (approvalGroupGuid) {
31
+ this.approvalGroupGuid = approvalGroupGuid;
32
+ }
33
+ this.btnConfig.length = 0;
34
+ this.setLoading(true);
35
+ this.sub = this.service.query({ guids, status: [ApprovalStatusEnum.Approved, ApprovalStatusEnum.Declined, ApprovalStatusEnum.Pending] }, 'data permission reason').subscribe({
36
+ next: ({ data: { approvalMsApprovals: { data } } }) => {
37
+ if (!data || data.length === 0) {
38
+ this.router.navigateByUrl('approval');
39
+ return;
40
+ }
41
+ this.data = data;
42
+ if (data.length === 1) {
43
+ const { status, permission } = data[0];
44
+ if (status === ApprovalStatusEnum.Pending) {
45
+ const perm = permission.split('.');
46
+ if (this.permService.checkPermission(perm[0], perm[1], perm[2])) {
47
+ this.btnConfig.push({ label: 'Approve', icon: 'checkmark', description: 'Approve the approval', disabled: false, onClick: this.request.bind(this) }, { label: 'Decline', icon: 'close', description: 'Decline the approval', color: 'danger', disabled: false, onClick: this.request.bind(this) });
48
+ }
49
+ }
50
+ }
51
+ else {
52
+ let dataCount = 0;
53
+ data.map(({ permission, status }) => {
54
+ if (status === ApprovalStatusEnum.Pending) {
55
+ const perm = permission.split('.');
56
+ if (this.permService.checkPermission(perm[0], perm[1], perm[2])) {
57
+ dataCount++;
58
+ }
59
+ if (dataCount === data.length) {
60
+ if (isApprove) {
61
+ this.btnConfig.push({ label: 'Approve', icon: 'checkmark', description: 'Approve the approval(s)', disabled: false, onClick: this.request.bind(this) });
62
+ }
63
+ else {
64
+ this.btnConfig.push({ label: 'Decline', icon: 'close', description: 'Decline the approval', color: 'danger', disabled: false, onClick: this.request.bind(this) });
65
+ }
66
+ }
67
+ }
68
+ });
69
+ }
70
+ this.setLoading(false);
71
+ },
72
+ error: ({ message }) => {
73
+ this.showAlert('Error', message);
74
+ this.router.navigateByUrl('approval');
75
+ }
76
+ });
77
+ }
78
+ request(btn) {
79
+ const isApprove = btn.color !== 'danger';
80
+ this.showAlert('Confirm', `Are you sure want to ${isApprove ? 'approve the approval?' : 'decline the approval? Please input the reason if you want to decline.'}`, [
81
+ { text: 'Cancel', handler: () => btn.toggleLoading() },
82
+ {
83
+ text: `${isApprove ? 'Approve' : 'Decline'}`,
84
+ handler: ({ reason }) => {
85
+ this.sub?.unsubscribe();
86
+ this.sub = this.service.request({
87
+ reason,
88
+ isApprove,
89
+ guids: this.guids,
90
+ approvalGroupGuid: this.approvalGroupGuid
91
+ }).subscribe({
92
+ next: () => {
93
+ this.showAlert('Success', `Approval ${isApprove ? 'approved' : 'declined'}`);
94
+ this.router.navigateByUrl('approval');
95
+ this.gridService.refreshGridCache('grid-approval-list');
96
+ },
97
+ error: ({ message }) => {
98
+ btn.toggleLoading();
99
+ this.showAlert('Error', message);
100
+ }
101
+ });
102
+ }
103
+ }
104
+ ], [{ name: 'reason', type: 'textarea', placeholder: 'Reason' }]);
105
+ }
106
+ setLoading(b) {
107
+ this.isLoading = b;
108
+ this.ch.markForCheck();
109
+ }
110
+ async showAlert(header, message, buttons = ['OK'], inputs = []) { (await this.alertCtrl.create({ header, message, buttons, inputs })).present(); }
111
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApprovalFormComponent, deps: [{ token: i1.Router }, { token: i0.ChangeDetectorRef }, { token: i2.ApprovalService }, { token: i3.GridService }, { token: i4.AlertController }, { token: i5.PermissionService }], target: i0.ɵɵFactoryTarget.Component }); }
112
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ApprovalFormComponent, isStandalone: true, selector: "up-approval-form", inputs: { isLoading: "isLoading" }, host: { classAttribute: "px-4 pb-4 d-block" }, ngImport: i0, template: "@if (isLoading) {\n <div class=\"d-flex flex-column flex-lg-row gap-4\">\n <div class=\"flex-grow-1\">\n <ion-skeleton-text class=\"m-0 mb-4 sk-input\" />\n <ion-skeleton-text class=\"m-0 mb-4 sk-input\" />\n </div>\n\n <div class=\"flex-grow-1\">\n <ion-skeleton-text class=\"m-0 mb-4 sk-input\" />\n <ion-skeleton-text class=\"m-0 mb-4 sk-input\" />\n </div>\n </div>\n \n <ion-skeleton-text class=\"m-0 mb-4 sk-input\" />\n <ion-skeleton-text class=\"m-0 sk-input\" />\n}\n@else {\n @for (d of data; track $index) {\n @if (data.length > 1) {\n <div class=\"d-flex align-items-center gap-2 pb-3 pt-2\">\n <ion-icon name=\"document\" />\n <h5 class=\"m-0\">Approval {{ $index + 1 }}</h5>\n </div>\n }\n \n <div class=\"d-flex flex-column flex-lg-row gap-4\">\n <div class=\"flex-grow-1\">\n <up-input class=\"mb-4\" label=\"Entity\" [disabled]=\"true\" [value]=\"d.entity\" />\n <up-input class=\"mb-4\" label=\"Remark\" [disabled]=\"true\" [value]=\"d.remark\" />\n </div>\n\n <div class=\"flex-grow-1\">\n <up-input class=\"mb-4\" label=\"Created At\" [disabled]=\"true\" [value]=\"d.createdAt | date:'dd MMM yyyy HH:mm'\" />\n <up-input class=\"mb-4\" label=\"Status\" [disabled]=\"true\" [value]=\"d.status\" />\n </div>\n </div>\n\n <up-textarea label=\"JSON\" [disabled]=\"true\" [value]=\"d.data | json\" />\n <up-textarea class=\"mt-4\" label=\"Reason\" [disabled]=\"true\" [value]=\"d.reason\" *ngIf=\"d.status !== 'PENDING'\" />\n }\n}\n", styles: [""], dependencies: [{ kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: JsonPipe, name: "json" }, { kind: "ngmodule", type: IonicModule }, { kind: "component", type: i4.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i4.IonSkeletonText, selector: "ion-skeleton-text", inputs: ["animated"] }, { kind: "component", type: FormInputComponent, selector: "up-input", inputs: ["label", "value", "required", "disabled", "min", "max"], outputs: ["onInput"] }, { kind: "component", type: FormTextareaComponent, selector: "up-textarea", inputs: ["value", "required", "disabled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
113
+ }
114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApprovalFormComponent, decorators: [{
115
+ type: Component,
116
+ args: [{ standalone: true, selector: 'up-approval-form', changeDetection: ChangeDetectionStrategy.OnPush, host: {
117
+ class: 'px-4 pb-4 d-block'
118
+ }, imports: [
119
+ DatePipe,
120
+ JsonPipe,
121
+ IonicModule,
122
+ FormInputComponent,
123
+ FormTextareaComponent
124
+ ], template: "@if (isLoading) {\n <div class=\"d-flex flex-column flex-lg-row gap-4\">\n <div class=\"flex-grow-1\">\n <ion-skeleton-text class=\"m-0 mb-4 sk-input\" />\n <ion-skeleton-text class=\"m-0 mb-4 sk-input\" />\n </div>\n\n <div class=\"flex-grow-1\">\n <ion-skeleton-text class=\"m-0 mb-4 sk-input\" />\n <ion-skeleton-text class=\"m-0 mb-4 sk-input\" />\n </div>\n </div>\n \n <ion-skeleton-text class=\"m-0 mb-4 sk-input\" />\n <ion-skeleton-text class=\"m-0 sk-input\" />\n}\n@else {\n @for (d of data; track $index) {\n @if (data.length > 1) {\n <div class=\"d-flex align-items-center gap-2 pb-3 pt-2\">\n <ion-icon name=\"document\" />\n <h5 class=\"m-0\">Approval {{ $index + 1 }}</h5>\n </div>\n }\n \n <div class=\"d-flex flex-column flex-lg-row gap-4\">\n <div class=\"flex-grow-1\">\n <up-input class=\"mb-4\" label=\"Entity\" [disabled]=\"true\" [value]=\"d.entity\" />\n <up-input class=\"mb-4\" label=\"Remark\" [disabled]=\"true\" [value]=\"d.remark\" />\n </div>\n\n <div class=\"flex-grow-1\">\n <up-input class=\"mb-4\" label=\"Created At\" [disabled]=\"true\" [value]=\"d.createdAt | date:'dd MMM yyyy HH:mm'\" />\n <up-input class=\"mb-4\" label=\"Status\" [disabled]=\"true\" [value]=\"d.status\" />\n </div>\n </div>\n\n <up-textarea label=\"JSON\" [disabled]=\"true\" [value]=\"d.data | json\" />\n <up-textarea class=\"mt-4\" label=\"Reason\" [disabled]=\"true\" [value]=\"d.reason\" *ngIf=\"d.status !== 'PENDING'\" />\n }\n}\n" }]
125
+ }], ctorParameters: () => [{ type: i1.Router }, { type: i0.ChangeDetectorRef }, { type: i2.ApprovalService }, { type: i3.GridService }, { type: i4.AlertController }, { type: i5.PermissionService }], propDecorators: { isLoading: [{
126
+ type: Input
127
+ }] } });
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91bmlwaW4tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvYXBwcm92YWwvZm9ybS9hcHByb3ZhbC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaXBpbi1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9hcHByb3ZhbC9mb3JtL2FwcHJvdmFsLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHckQsT0FBTyxFQUFnQyxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRSxPQUFPLEVBQVksa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUs3RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUU1RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7Ozs7OztBQW1CckYsTUFBTSxPQUFPLHFCQUFxQjtJQVNoQyxZQUNxQixNQUFjLEVBQ2QsRUFBcUIsRUFDckIsT0FBd0IsRUFDeEIsV0FBd0IsRUFDeEIsU0FBMEIsRUFDMUIsV0FBOEI7UUFMOUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ3JCLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBQ3hCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBQzFCLGdCQUFXLEdBQVgsV0FBVyxDQUFtQjtRQWJuQyxjQUFTLEdBQVksSUFBSSxD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bnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGVQaXBlLCBKc29uUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBbGVydEJ1dHRvbiwgQWxlcnRDb250cm9sbGVyLCBJb25pY01vZHVsZSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IEFwcHJvdmFsLCBBcHByb3ZhbFN0YXR1c0VudW0gfSBmcm9tICcuLi8uLi8uLi8uLi9ncmFwaHFsL2dlbmVyYXRlZCc7XG5pbXBvcnQgeyBCdXR0b25Hcm91cENvbmZpZyB9IGZyb20gJy4uLy4uL2J1dHRvbnMvZ3JvdXAvaW50ZXJmYWNlcy9idG4tZ3JvdXAtY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBBcHByb3ZhbFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hcHByb3ZhbC5zZXJ2aWNlJztcbmltcG9ydCB7IEdyaWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZ3JpZHMvc2VydmljZXMvZ3JpZC5zZXJ2aWNlJztcbmltcG9ydCB7IFBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vbW9kdWxlcy9wZXJtaXNzaW9uL3NlcnZpY2VzL3Blcm1pc3Npb24uc2VydmljZSc7XG5pbXBvcnQgeyBGb3JtSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9mb3Jtcy9pbnB1dC9mb3JtLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25Mb2FkaW5nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYnV0dG9ucy9sb2FkaW5nL2J0bi1sb2FkaW5nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtVGV4dGFyZWFDb21wb25lbnQgfSBmcm9tICcuLi8uLi9mb3Jtcy90ZXh0YXJlYS9mb3JtLXRleHRhcmVhLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ3VwLWFwcHJvdmFsLWZvcm0nLFxuICBzdHlsZVVybDogJy4vYXBwcm92YWwtZm9ybS5jb21wb25lbnQuc2NzcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHByb3ZhbC1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ3B4LTQgcGItNCBkLWJsb2NrJ1xuICB9LFxuICBpbXBvcnRzOiBbXG4gICAgRGF0ZVBpcGUsXG4gICAgSnNvblBpcGUsXG4gICAgSW9uaWNNb2R1bGUsXG4gICAgRm9ybUlucHV0Q29tcG9uZW50LFxuICAgIEZvcm1UZXh0YXJlYUNvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEFwcHJvdmFsRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KCkgcHVibGljIGlzTG9hZGluZzogYm9vbGVhbiA9IHRydWU7XG4gIHB1YmxpYyByZWFkb25seSBidG5Db25maWc6IEJ1dHRvbkdyb3VwQ29uZmlnW10gPSBbXTtcbiAgcHVibGljIGRhdGE6IEFwcHJvdmFsW10gPSBbXTtcbiAgcHJvdGVjdGVkIGd1aWRzITogc3RyaW5nW107XG4gIHByb3RlY3RlZCBzdWI/OiBTdWJzY3JpcHRpb247XG4gIHByb3RlY3RlZCBhcHByb3ZhbEdyb3VwR3VpZD86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VydmljZTogQXBwcm92YWxTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCByZWFkb25seSBncmlkU2VydmljZTogR3JpZFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGFsZXJ0Q3RybDogQWxlcnRDb250cm9sbGVyLFxuICAgIHByb3RlY3RlZCByZWFkb25seSBwZXJtU2VydmljZTogUGVybWlzc2lvblNlcnZpY2VcbiAgKSB7IH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZHtcbiAgICB0aGlzLnN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRHdWlkKGd1aWRzOiBzdHJpbmdbXSwgYXBwcm92YWxHcm91cEd1aWQ/OiBzdHJpbmcsIGlzQXBwcm92ZT86IGJvb2xlYW4pOiB2b2lke1xuICAgIHRoaXMuZ3VpZHMgPSBndWlkcztcbiAgICBpZiAoYXBwcm92YWxHcm91cEd1aWQpIHtcbiAgICAgIHRoaXMuYXBwcm92YWxHcm91cEd1aWQgPSBhcHByb3ZhbEdyb3VwR3VpZDtcbiAgICB9XG5cbiAgICB0aGlzLmJ0bkNvbmZpZy5sZW5ndGggPSAwO1xuICAgIHRoaXMuc2V0TG9hZGluZyh0cnVlKTtcblxuICAgIHRoaXMuc3ViID0gdGhpcy5zZXJ2aWNlLnF1ZXJ5KHsgZ3VpZHMsIHN0YXR1czogWyBBcHByb3ZhbFN0YXR1c0VudW0uQXBwcm92ZWQsIEFwcHJvdmFsU3RhdHVzRW51bS5EZWNsaW5lZCwgQXBwcm92YWxTdGF0dXNFbnVtLlBlbmRpbmcgXSB9LCAnZGF0YSBwZXJtaXNzaW9uIHJlYXNvbicpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoeyBkYXRhOiB7IGFwcHJvdmFsTXNBcHByb3ZhbHM6IHsgZGF0YSB9fX0pID0+IHtcbiAgICAgICAgaWYgKCFkYXRhIHx8IGRhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnYXBwcm92YWwnKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRhdGEgPSBkYXRhIGFzIGFueTtcbiAgICAgICAgaWYgKGRhdGEubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgY29uc3QgeyBzdGF0dXMsIHBlcm1pc3Npb24gfSA9IGRhdGFbMF0gYXMgYW55O1xuXG4gICAgICAgICAgaWYgKHN0YXR1cyA9PT0gQXBwcm92YWxTdGF0dXNFbnVtLlBlbmRpbmcpIHtcbiAgICAgICAgICAgIGNvbnN0IHBlcm06IHN0cmluZ1tdID0gcGVybWlzc2lvbiEuc3BsaXQoJy4nKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMucGVybVNlcnZpY2UuY2hlY2tQZXJtaXNzaW9uKHBlcm1bMF0sIHBlcm1bMV0sIHBlcm1bMl0pKSB7XG4gICAgICAgICAgICAgIHRoaXMuYnRuQ29uZmlnLnB1c2goXG4gICAgICAgICAgICAgICAgeyBsYWJlbDogJ0FwcHJvdmUnLCBpY29uOiAnY2hlY2ttYXJrJywgZGVzY3JpcHRpb246ICdBcHByb3ZlIHRoZSBhcHByb3ZhbCcgLCBkaXNhYmxlZDogZmFsc2UsIG9uQ2xpY2s6IHRoaXMucmVxdWVzdC5iaW5kKHRoaXMpIH0sXG4gICAgICAgICAgICAgICAgeyBsYWJlbDogJ0RlY2xpbmUnLCBpY29uOiAnY2xvc2UnLCBkZXNjcmlwdGlvbjogJ0RlY2xpbmUgdGhlIGFwcHJvdmFsJywgY29sb3I6ICdkYW5nZXInLCBkaXNhYmxlZDogZmFsc2UsIG9uQ2xpY2s6IHRoaXMucmVxdWVzdC5iaW5kKHRoaXMpIH1cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGV0IGRhdGFDb3VudDogbnVtYmVyID0gMDtcblxuICAgICAgICAgIGRhdGEubWFwKCh7IHBlcm1pc3Npb24sIHN0YXR1cyB9OiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChzdGF0dXMgPT09IEFwcHJvdmFsU3RhdHVzRW51bS5QZW5kaW5nKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHBlcm06IHN0cmluZ1tdID0gcGVybWlzc2lvbi5zcGxpdCgnLicpO1xuXG4gICAgICAgICAgICAgIGlmICh0aGlzLnBlcm1TZXJ2aWNlLmNoZWNrUGVybWlzc2lvbihwZXJtWzBdLCBwZXJtWzFdLCBwZXJtWzJdKSkge1xuICAgICAgICAgICAgICAgIGRhdGFDb3VudCsrO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGRhdGFDb3VudCA9PT0gZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNBcHByb3ZlKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLmJ0bkNvbmZpZy5wdXNoKHsgbGFiZWw6ICdBcHByb3ZlJywgaWNvbjogJ2NoZWNrbWFyaycsIGRlc2NyaXB0aW9uOiAnQXBwcm92ZSB0aGUgYXBwcm92YWwocyknICwgZGlzYWJsZWQ6IGZhbHNlLCBvbkNsaWNrOiB0aGlzLnJlcXVlc3QuYmluZCh0aGlzKSB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgdGhpcy5idG5Db25maWcucHVzaCh7IGxhYmVsOiAnRGVjbGluZScsIGljb246ICdjbG9zZScsIGRlc2NyaXB0aW9uOiAnRGVjbGluZSB0aGUgYXBwcm92YWwnLCBjb2xvcjogJ2RhbmdlcicsIGRpc2FibGVkOiBmYWxzZSwgb25DbGljazogdGhpcy5yZXF1ZXN0LmJpbmQodGhpcykgfSlcbiAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRMb2FkaW5nKGZhbHNlKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKHsgbWVzc2FnZSB9KSA9PiB7XG4gICAgICAgIHRoaXMuc2hvd0FsZXJ0KCdFcnJvcicsIG1lc3NhZ2UpO1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCdhcHByb3ZhbCcpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlcXVlc3QoYnRuOiBCdXR0b25Mb2FkaW5nQ29tcG9uZW50KTogdm9pZHtcbiAgICBjb25zdCBpc0FwcHJvdmU6IGJvb2xlYW4gPSBidG4uY29sb3IgIT09ICdkYW5nZXInO1xuXG4gICAgdGhpcy5zaG93QWxlcnQoJ0NvbmZpcm0nLCBgQXJlIHlvdSBzdXJlIHdhbnQgdG8gJHsgaXNBcHByb3ZlPyAnYXBwcm92ZSB0aGUgYXBwcm92YWw/JyA6ICdkZWNsaW5lIHRoZSBhcHByb3ZhbD8gUGxlYXNlIGlucHV0IHRoZSByZWFzb24gaWYgeW91IHdhbnQgdG8gZGVjbGluZS4nIH1gLCBbXG4gICAgICB7IHRleHQ6ICdDYW5jZWwnLCBoYW5kbGVyOiAoKSA9PiBidG4udG9nZ2xlTG9hZGluZygpIH0sXG4gICAgICB7XG4gICAgICAgIHRleHQ6IGAkeyBpc0FwcHJvdmU/ICdBcHByb3ZlJyA6ICdEZWNsaW5lJyB9YCxcbiAgICAgICAgaGFuZGxlcjogKHsgcmVhc29uIH0pID0+IHtcbiAgICAgICAgICB0aGlzLnN1Yj8udW5zdWJzY3JpYmUoKTtcblxuICAgICAgICAgIHRoaXMuc3ViID0gdGhpcy5zZXJ2aWNlLnJlcXVlc3Qoe1xuICAgICAgICAgICAgcmVhc29uLFxuICAgICAgICAgICAgaXNBcHByb3ZlLFxuICAgICAgICAgICAgZ3VpZHM6IHRoaXMuZ3VpZHMsXG4gICAgICAgICAgICBhcHByb3ZhbEdyb3VwR3VpZDogdGhpcy5hcHByb3ZhbEdyb3VwR3VpZFxuICAgICAgICAgIH0pLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuc2hvd0FsZXJ0KCdTdWNjZXNzJywgYEFwcHJvdmFsICR7IGlzQXBwcm92ZT8gJ2FwcHJvdmVkJyA6ICdkZWNsaW5lZCcgfWApO1xuICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCdhcHByb3ZhbCcpO1xuXG4gICAgICAgICAgICAgIHRoaXMuZ3JpZFNlcnZpY2UucmVmcmVzaEdyaWRDYWNoZSgnZ3JpZC1hcHByb3ZhbC1saXN0Jyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyb3I6ICh7IG1lc3NhZ2UgfTogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGJ0bi50b2dnbGVMb2FkaW5nKCk7XG4gICAgICAgICAgICAgIHRoaXMuc2hvd0FsZXJ0KCdFcnJvcicsIG1lc3NhZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgXSwgW3sgbmFtZTogJ3JlYXNvbicsIHR5cGU6ICd0ZXh0YXJlYScsIHBsYWNlaG9sZGVyOiAnUmVhc29uJyB9XSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0TG9hZGluZyhiOiBib29sZWFuKTogdm9pZHtcbiAgICB0aGlzLmlzTG9hZGluZyA9IGI7XG4gICAgdGhpcy5jaC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBzaG93QWxlcnQoaGVhZGVyOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZywgYnV0dG9uczogKEFsZXJ0QnV0dG9uIHwgc3RyaW5nKVtdID0gWydPSyddLCBpbnB1dHM6IGFueVtdID0gW10pOiBQcm9taXNlPHZvaWQ+eyAoYXdhaXQgdGhpcy5hbGVydEN0cmwuY3JlYXRlKHsgaGVhZGVyLCBtZXNzYWdlLCBidXR0b25zLCBpbnB1dHMgfSkpLnByZXNlbnQoKTsgfVxufVxuIiwiQGlmIChpc0xvYWRpbmcpIHtcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGZsZXgtbGctcm93IGdhcC00XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMVwiPlxuICAgICAgICAgICAgPGlvbi1za2VsZXRvbi10ZXh0IGNsYXNzPVwibS0wIG1iLTQgc2staW5wdXRcIiAvPlxuICAgICAgICAgICAgPGlvbi1za2VsZXRvbi10ZXh0IGNsYXNzPVwibS0wIG1iLTQgc2staW5wdXRcIiAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTFcIj5cbiAgICAgICAgICAgIDxpb24tc2tlbGV0b24tdGV4dCBjbGFzcz1cIm0tMCBtYi00IHNrLWlucHV0XCIgLz5cbiAgICAgICAgICAgIDxpb24tc2tlbGV0b24tdGV4dCBjbGFzcz1cIm0tMCBtYi00IHNrLWlucHV0XCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgXG4gICAgPGlvbi1za2VsZXRvbi10ZXh0IGNsYXNzPVwibS0wIG1iLTQgc2staW5wdXRcIiAvPlxuICAgIDxpb24tc2tlbGV0b24tdGV4dCBjbGFzcz1cIm0tMCBzay1pbnB1dFwiIC8+XG59XG5AZWxzZSB7XG4gICAgQGZvciAoZCBvZiBkYXRhOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgQGlmIChkYXRhLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIHBiLTMgcHQtMlwiPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiZG9jdW1lbnRcIiAvPlxuICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cIm0tMFwiPkFwcHJvdmFsIHt7ICRpbmRleCArIDEgfX08L2g1PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICBcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBmbGV4LWxnLXJvdyBnYXAtNFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xXCI+XG4gICAgICAgICAgICAgICAgPHVwLWlucHV0IGNsYXNzPVwibWItNFwiIGxhYmVsPVwiRW50aXR5XCIgW2Rpc2FibGVkXT1cInRydWVcIiBbdmFsdWVdPVwiZC5lbnRpdHlcIiAvPlxuICAgICAgICAgICAgICAgIDx1cC1pbnB1dCBjbGFzcz1cIm1iLTRcIiBsYWJlbD1cIlJlbWFya1wiIFtkaXNhYmxlZF09XCJ0cnVlXCIgW3ZhbHVlXT1cImQucmVtYXJrXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTFcIj5cbiAgICAgICAgICAgICAgICA8dXAtaW5wdXQgY2xhc3M9XCJtYi00XCIgbGFiZWw9XCJDcmVhdGVkIEF0XCIgW2Rpc2FibGVkXT1cInRydWVcIiBbdmFsdWVdPVwiZC5jcmVhdGVkQXQgfCBkYXRlOidkZCBNTU0geXl5eSBISDptbSdcIiAvPlxuICAgICAgICAgICAgICAgIDx1cC1pbnB1dCBjbGFzcz1cIm1iLTRcIiBsYWJlbD1cIlN0YXR1c1wiIFtkaXNhYmxlZF09XCJ0cnVlXCIgW3ZhbHVlXT1cImQuc3RhdHVzXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8dXAtdGV4dGFyZWEgbGFiZWw9XCJKU09OXCIgW2Rpc2FibGVkXT1cInRydWVcIiBbdmFsdWVdPVwiZC5kYXRhIHwganNvblwiIC8+XG4gICAgICAgIDx1cC10ZXh0YXJlYSBjbGFzcz1cIm10LTRcIiBsYWJlbD1cIlJlYXNvblwiIFtkaXNhYmxlZF09XCJ0cnVlXCIgW3ZhbHVlXT1cImQucmVhc29uXCIgKm5nSWY9XCJkLnN0YXR1cyAhPT0gJ1BFTkRJTkcnXCIgLz5cbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,5 @@
1
+ export { ApprovalService } from './services/approval.service';
2
+ export { ApprovalListComponent } from './list/approval-list.component';
3
+ export { provideApprovalEntities, APPROVAL_ENTITIES } from './list/provide-approval-entities.util';
4
+ export { ApprovalDetailComponent } from './detail/approval-detail.component';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91bmlwaW4tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvYXBwcm92YWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRW5HLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgQXBwcm92YWxTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9hcHByb3ZhbC5zZXJ2aWNlJztcbmV4cG9ydCB7IEFwcHJvdmFsTGlzdENvbXBvbmVudCB9IGZyb20gJy4vbGlzdC9hcHByb3ZhbC1saXN0LmNvbXBvbmVudCc7XG5leHBvcnQgeyBwcm92aWRlQXBwcm92YWxFbnRpdGllcywgQVBQUk9WQUxfRU5USVRJRVMgfSBmcm9tICcuL2xpc3QvcHJvdmlkZS1hcHByb3ZhbC1lbnRpdGllcy51dGlsJztcblxuZXhwb3J0IHsgQXBwcm92YWxEZXRhaWxDb21wb25lbnQgfSBmcm9tICcuL2RldGFpbC9hcHByb3ZhbC1kZXRhaWwuY29tcG9uZW50JztcbiJdfQ==
@@ -0,0 +1,114 @@
1
+ import { ChangeDetectionStrategy, Component, Inject } from '@angular/core';
2
+ import { formatDate } from '@angular/common';
3
+ import { map } from 'rxjs';
4
+ import { ApprovalStatusEnum } from '../../../../graphql/generated';
5
+ import { APPROVAL_ENTITIES } from './provide-approval-entities.util';
6
+ import { FilterComponent } from '../../filter/filter.component';
7
+ import { ButtonGroupComponent } from '../../buttons/group/btn-group.component';
8
+ import { GridPaginationComponent } from '../../grids/grid-pagination/grid-pagination.component';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "@angular/router";
11
+ import * as i2 from "../services/approval.service";
12
+ import * as i3 from "@ionic/angular";
13
+ export class ApprovalListComponent {
14
+ constructor(entities, router, route, service, alertCtrl) {
15
+ this.entities = entities;
16
+ this.router = router;
17
+ this.route = route;
18
+ this.service = service;
19
+ this.alertCtrl = alertCtrl;
20
+ this.gridConfig = {
21
+ noRowText: 'Approval not found',
22
+ colDefs: [
23
+ { headerName: 'Entity', field: 'entity', checkboxSelection: ({ data: d }) => this.isCheckboxSelectable(d?.approvalGroup) },
24
+ { headerName: 'Remark', field: 'remark' },
25
+ { headerName: 'Source Platform', field: 'sourcePlatform' },
26
+ { headerName: 'Status', field: 'status', maxWidth: 100, cellRenderer: ({ value }) => value ? `<div class="badge m-auto bg-${value === ApprovalStatusEnum.Pending ? 'warning' : value === ApprovalStatusEnum.Approved ? 'success' : 'danger'}">${value}</div>` : '' },
27
+ { headerName: 'Type', field: 'type', maxWidth: 100 },
28
+ { headerName: 'Created Date', field: 'createdAt', sort: 'desc', valueFormatter: ({ value }) => value ? formatDate(value, 'dd MMM yyyy HH:mm', 'en-US') : '' }
29
+ ],
30
+ getData: (page, pageSize, sortBy, dir) => {
31
+ const policy = this.input.page === page ? 'no-cache' : undefined;
32
+ this.input.page = page;
33
+ this.input.sortBy = sortBy;
34
+ this.input.pageSize = pageSize;
35
+ this.input.sortDirection = dir;
36
+ return this.service.query(this.input, '', policy).pipe(map(({ data: { approvalMsApprovals: { data, totalRecord: t } } }) => ({ data, totalRecord: t })));
37
+ }
38
+ };
39
+ this.filterConfig = {
40
+ mode: 'advanced',
41
+ fields: [
42
+ { key: 'status', label: 'Status', type: 'select', initialValue: ['PENDING'], options: [
43
+ { label: 'Approved', value: ['APPROVED'] },
44
+ { label: 'Declined', value: ['DECLINED'] },
45
+ { label: 'Pending', value: ['PENDING'] }
46
+ ] },
47
+ { key: 'type', label: 'Type', type: 'select', options: [
48
+ { label: 'Creation', value: ['CREATION'] },
49
+ { label: 'Deletion', value: ['DELETION'] },
50
+ { label: 'Linkage', value: ['LINKAGE'] },
51
+ { label: 'Unlink', value: ['UNLINK'] },
52
+ { label: 'Update', value: ['UPDATE'] }
53
+ ] }
54
+ ]
55
+ };
56
+ this.btnConfig = [
57
+ { label: 'Approve', icon: 'checkmark', description: 'Approve the approvals', disabled: true, onClick: this.multipleApproval.bind(this) },
58
+ { label: 'Decline', icon: 'close', description: 'Decline the approvals', color: 'danger', disabled: true, onClick: this.multipleApproval.bind(this) }
59
+ ];
60
+ this.input = { page: 0, pageSize: 50, entity: this.entities };
61
+ }
62
+ setGridApi({ api }) {
63
+ this.gridApi = api;
64
+ }
65
+ openDetail({ guid }) {
66
+ this.router.navigate([`/approval/${guid}`], { preserveFragment: true });
67
+ }
68
+ selectApprovals() {
69
+ const dataGrid = this.gridApi.getSelectedRows();
70
+ this.btnConfig[0].disabled = this.btnConfig[1].disabled = dataGrid.length < 1;
71
+ this.selectedApprovalGroupGuid = dataGrid.length === 0 ? undefined : dataGrid[0].approvalGroup.guid;
72
+ this.gridApi.refreshCells({ force: true });
73
+ }
74
+ search({ data }) {
75
+ this.input.type = data?.type;
76
+ this.input.status = data?.status;
77
+ this.gridApi.getSelectedNodes().forEach((e) => e.setSelected(false));
78
+ this.gridApi.refreshInfiniteCache();
79
+ }
80
+ isCheckboxSelectable(approvalGroup) {
81
+ if (!approvalGroup)
82
+ return false;
83
+ if (approvalGroup.guid === this.selectedApprovalGroupGuid)
84
+ return true;
85
+ return true;
86
+ }
87
+ multipleApproval(btn) {
88
+ btn.toggleLoading();
89
+ this.router.navigate([`/approval/approval-group`], {
90
+ preserveFragment: true,
91
+ queryParams: {
92
+ isApprove: btn.color !== 'danger',
93
+ approvalGroupGuid: this.selectedApprovalGroupGuid,
94
+ guids: this.gridApi.getSelectedRows().map(({ guid }) => guid)
95
+ }
96
+ });
97
+ }
98
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApprovalListComponent, deps: [{ token: APPROVAL_ENTITIES }, { token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.ApprovalService }, { token: i3.AlertController }], target: i0.ɵɵFactoryTarget.Component }); }
99
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ApprovalListComponent, isStandalone: true, selector: "up-approval-list", host: { classAttribute: "d-flex flex-column h-100 w-100" }, ngImport: i0, template: "<div class=\"d-flex align-items-center justify-content-between gap-4 p-4 flex-shrink-0 flex-wrap\">\n <div class=\"flex-grow-1 d-flex align-items-center gap-3\">\n <h3 class=\"m-0\">Approval</h3>\n\n <up-btn-group id=\"approval-list\" [config]=\"btnConfig\" />\n </div>\n\n <div class=\"flex-shrink-0 flex-grow-1\">\n <up-filter placeholder=\"Type to search\" id=\"filter-approval-list\" [config]=\"filterConfig\" (onSearch)=\"search($event)\" />\n </div>\n</div>\n\n<div class=\"flex-grow-1 px-1 pb-1\">\n <up-pagination-grid [config]=\"gridConfig\" id=\"grid-approval-list\" rowSelection=\"multiple\" (onGridReady)=\"setGridApi($event)\" (onRowClick)=\"openDetail($event)\" (onSelectionChanged)=\"selectApprovals()\" />\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: FilterComponent, selector: "up-filter", inputs: ["id", "config"], outputs: ["onSearch"] }, { kind: "component", type: ButtonGroupComponent, selector: "up-btn-group", inputs: ["config"] }, { kind: "component", type: GridPaginationComponent, selector: "up-pagination-grid", inputs: ["config", "rowData", "id", "rowModelType", "rowSelection", "getRowClass"], outputs: ["onRowClick", "onGridReady", "onSelectionChanged"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
100
+ }
101
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApprovalListComponent, decorators: [{
102
+ type: Component,
103
+ args: [{ standalone: true, selector: 'up-approval-list', changeDetection: ChangeDetectionStrategy.OnPush, host: {
104
+ class: 'd-flex flex-column h-100 w-100'
105
+ }, imports: [
106
+ FilterComponent,
107
+ ButtonGroupComponent,
108
+ GridPaginationComponent
109
+ ], template: "<div class=\"d-flex align-items-center justify-content-between gap-4 p-4 flex-shrink-0 flex-wrap\">\n <div class=\"flex-grow-1 d-flex align-items-center gap-3\">\n <h3 class=\"m-0\">Approval</h3>\n\n <up-btn-group id=\"approval-list\" [config]=\"btnConfig\" />\n </div>\n\n <div class=\"flex-shrink-0 flex-grow-1\">\n <up-filter placeholder=\"Type to search\" id=\"filter-approval-list\" [config]=\"filterConfig\" (onSearch)=\"search($event)\" />\n </div>\n</div>\n\n<div class=\"flex-grow-1 px-1 pb-1\">\n <up-pagination-grid [config]=\"gridConfig\" id=\"grid-approval-list\" rowSelection=\"multiple\" (onGridReady)=\"setGridApi($event)\" (onRowClick)=\"openDetail($event)\" (onSelectionChanged)=\"selectApprovals()\" />\n</div>\n" }]
110
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
111
+ type: Inject,
112
+ args: [APPROVAL_ENTITIES]
113
+ }] }, { type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.ApprovalService }, { type: i3.AlertController }] });
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91bmlwaW4tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvYXBwcm92YWwvbGlzdC9hcHByb3ZhbC1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaXBpbi1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9hcHByb3ZhbC9saXN0L2FwcHJvdmFsLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFJdkMsT0FBTyxFQUFtQyxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBS3BHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXJFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUUvRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQzs7Ozs7QUFpQmhHLE1BQU0sT0FBTyxxQkFBcUI7SUFrRGhDLFlBQzZDLFFBQWtCLEVBQzFDLE1BQWMsRUFDZCxLQUFxQixFQUNyQixPQUF3QixFQUN4QixTQUEwQjtRQUpGLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDMUMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBQ3hCLGNBQVMsR0FBVCxT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QUNmLG9CQUFvQjt3QkFDcEIsdUJBQXVCO3FCQUN4Qjs7MEJBcURFLE1BQU07MkJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBbGVydENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBGZXRjaFBvbGljeSB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUnO1xuaW1wb3J0IHsgR3JpZEFwaSwgR3JpZFJlYWR5RXZlbnQgfSBmcm9tICdAYWctZ3JpZC1jb21tdW5pdHkvY29yZSc7XG5pbXBvcnQgeyBBcHByb3ZhbENyaXRlcmlhLCBBcHByb3ZhbEdyb3VwLCBBcHByb3ZhbFN0YXR1c0VudW0gfSBmcm9tICcuLi8uLi8uLi8uLi9ncmFwaHFsL2dlbmVyYXRlZCc7XG5pbXBvcnQgeyBHcmlkQ29uZmlnIH0gZnJvbSAnLi4vLi4vZ3JpZHMvaW50ZXJmYWNlcy9ncmlkLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmlsdGVyQ29uZmlnIH0gZnJvbSAnLi4vLi4vZmlsdGVyL2ludGVyZmFjZXMvZmlsdGVyLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmlsdGVyU2VhcmNoRXZlbnQgfSBmcm9tICcuLi8uLi9maWx0ZXIvaW50ZXJmYWNlcy9maWx0ZXItc2VhcmNoLWV2ZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBCdXR0b25Hcm91cENvbmZpZyB9IGZyb20gJy4uLy4uL2J1dHRvbnMvZ3JvdXAvaW50ZXJmYWNlcy9idG4tZ3JvdXAtY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBBUFBST1ZBTF9FTlRJVElFUyB9IGZyb20gJy4vcHJvdmlkZS1hcHByb3ZhbC1lbnRpdGllcy51dGlsJztcbmltcG9ydCB7IEFwcHJvdmFsU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2FwcHJvdmFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZmlsdGVyL2ZpbHRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uR3JvdXBDb21wb25lbnQgfSBmcm9tICcuLi8uLi9idXR0b25zL2dyb3VwL2J0bi1ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uTG9hZGluZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2J1dHRvbnMvbG9hZGluZy9idG4tbG9hZGluZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgR3JpZFBhZ2luYXRpb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9ncmlkcy9ncmlkLXBhZ2luYXRpb24vZ3JpZC1wYWdpbmF0aW9uLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ3VwLWFwcHJvdmFsLWxpc3QnLFxuICBzdHlsZVVybDogJy4vYXBwcm92YWwtbGlzdC5jb21wb25lbnQuc2NzcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHByb3ZhbC1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2QtZmxleCBmbGV4LWNvbHVtbiBoLTEwMCB3LTEwMCdcbiAgfSxcbiAgaW1wb3J0czogW1xuICAgIEZpbHRlckNvbXBvbmVudCxcbiAgICBCdXR0b25Hcm91cENvbXBvbmVudCxcbiAgICBHcmlkUGFnaW5hdGlvbkNvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEFwcHJvdmFsTGlzdENvbXBvbmVudCB7XG5cbiAgcHVibGljIHJlYWRvbmx5IGdyaWRDb25maWc6IEdyaWRDb25maWcgPSB7XG4gICAgbm9Sb3dUZXh0OiAnQXBwcm92YWwgbm90IGZvdW5kJyxcbiAgICBjb2xEZWZzOiBbXG4gICAgICB7IGhlYWRlck5hbWU6ICdFbnRpdHknLCBmaWVsZDogJ2VudGl0eScsIGNoZWNrYm94U2VsZWN0aW9uOiAoeyBkYXRhOiBkIH0pID0+IHRoaXMuaXNDaGVja2JveFNlbGVjdGFibGUoZD8uYXBwcm92YWxHcm91cCkgfSxcbiAgICAgIHsgaGVhZGVyTmFtZTogJ1JlbWFyaycsIGZpZWxkOiAncmVtYXJrJyB9LFxuICAgICAgeyBoZWFkZXJOYW1lOiAnU291cmNlIFBsYXRmb3JtJywgZmllbGQ6ICdzb3VyY2VQbGF0Zm9ybScgfSxcbiAgICAgIHsgaGVhZGVyTmFtZTogJ1N0YXR1cycsIGZpZWxkOiAnc3RhdHVzJywgbWF4V2lkdGg6IDEwMCwgY2VsbFJlbmRlcmVyOiAoeyB2YWx1ZSB9OiBhbnkpID0+IHZhbHVlPyBgPGRpdiBjbGFzcz1cImJhZGdlIG0tYXV0byBiZy0keyB2YWx1ZSA9PT0gQXBwcm92YWxTdGF0dXNFbnVtLlBlbmRpbmc/ICd3YXJuaW5nJyA6IHZhbHVlID09PSBBcHByb3ZhbFN0YXR1c0VudW0uQXBwcm92ZWQ/ICdzdWNjZXNzJyA6ICdkYW5nZXInfVwiPiR7IHZhbHVlIH08L2Rpdj5gIDogJycgfSxcbiAgICAgIHsgaGVhZGVyTmFtZTogJ1R5cGUnLCBmaWVsZDogJ3R5cGUnLCBtYXhXaWR0aDogMTAwIH0sXG4gICAgICB7IGhlYWRlck5hbWU6ICdDcmVhdGVkIERhdGUnLCBmaWVsZDogJ2NyZWF0ZWRBdCcsIHNvcnQ6ICdkZXNjJywgdmFsdWVGb3JtYXR0ZXI6ICh7IHZhbHVlIH0pID0+IHZhbHVlPyBmb3JtYXREYXRlKHZhbHVlLCAnZGQgTU1NIHl5eXkgSEg6bW0nLCAnZW4tVVMnKSA6ICcnIH1cbiAgICBdLFxuICAgIGdldERhdGE6IChwYWdlOiBudW1iZXIsIHBhZ2VTaXplOiBudW1iZXIsIHNvcnRCeTogc3RyaW5nLCBkaXI6ICdhc2MnIHwgJ2Rlc2MnKTogT2JzZXJ2YWJsZTx7IGRhdGE6IGFueSwgdG90YWxSZWNvcmQ6IG51bWJlciB9PiA9PiB7XG4gICAgICBjb25zdCBwb2xpY3k6IEZldGNoUG9saWN5IHwgdW5kZWZpbmVkID0gdGhpcy5pbnB1dC5wYWdlID09PSBwYWdlPyAnbm8tY2FjaGUnIDogdW5kZWZpbmVkO1xuXG4gICAgICB0aGlzLmlucHV0LnBhZ2UgPSBwYWdlO1xuICAgICAgdGhpcy5pbnB1dC5zb3J0QnkgPSBzb3J0Qnk7XG4gICAgICB0aGlzLmlucHV0LnBhZ2VTaXplID0gcGFnZVNpemU7XG4gICAgICB0aGlzLmlucHV0LnNvcnREaXJlY3Rpb24gPSBkaXI7XG5cbiAgICAgIHJldHVybiB0aGlzLnNlcnZpY2UucXVlcnkodGhpcy5pbnB1dCwgJycsIHBvbGljeSkucGlwZShcbiAgICAgICAgbWFwKCh7IGRhdGE6IHsgYXBwcm92YWxNc0FwcHJvdmFsczogeyBkYXRhLCB0b3RhbFJlY29yZDogdCB9IH19KSA9PiAoeyBkYXRhLCB0b3RhbFJlY29yZDogdCEgfSkpXG4gICAgICApO1xuICAgIH1cbiAgfTtcbiAgcHVibGljIHJlYWRvbmx5IGZpbHRlckNvbmZpZzogRmlsdGVyQ29uZmlnID0ge1xuICAgIG1vZGU6ICdhZHZhbmNlZCcsXG4gICAgZmllbGRzOiBbXG4gICAgICB7IGtleTogJ3N0YXR1cycsIGxhYmVsOiAnU3RhdHVzJywgdHlwZTogJ3NlbGVjdCcsIGluaXRpYWxWYWx1ZTogWyAnUEVORElORycgXSwgb3B0aW9uczogW1xuICAgICAgICB7IGxhYmVsOiAnQXBwcm92ZWQnLCB2YWx1ZTogWyAnQVBQUk9WRUQnIF0gYXMgYW55IH0sXG4gICAgICAgIHsgbGFiZWw6ICdEZWNsaW5lZCcsIHZhbHVlOiBbICdERUNMSU5FRCcgXSBhcyBhbnkgfSxcbiAgICAgICAgeyBsYWJlbDogJ1BlbmRpbmcnLCB2YWx1ZTogWyAnUEVORElORycgXSBhcyBhbnkgfVxuICAgICAgXX0sXG4gICAgICB7IGtleTogJ3R5cGUnLCBsYWJlbDogJ1R5cGUnLCB0eXBlOiAnc2VsZWN0Jywgb3B0aW9uczogW1xuICAgICAgICB7IGxhYmVsOiAnQ3JlYXRpb24nLCB2YWx1ZTogWyAnQ1JFQVRJT04nIF0gYXMgYW55IH0sXG4gICAgICAgIHsgbGFiZWw6ICdEZWxldGlvbicsIHZhbHVlOiBbICdERUxFVElPTicgXSBhcyBhbnkgfSxcbiAgICAgICAgeyBsYWJlbDogJ0xpbmthZ2UnLCB2YWx1ZTogWyAnTElOS0FHRScgXSBhcyBhbnkgfSxcbiAgICAgICAgeyBsYWJlbDogJ1VubGluaycsIHZhbHVlOiBbICdVTkxJTksnIF0gYXMgYW55IH0sXG4gICAgICAgIHsgbGFiZWw6ICdVcGRhdGUnLCB2YWx1ZTogWyAnVVBEQVRFJyBdIGFzIGFueSB9XG4gICAgICBdfVxuICAgIF1cbiAgfTtcbiAgcHVibGljIGJ0bkNvbmZpZzogQnV0dG9uR3JvdXBDb25maWdbXSA9IFtcbiAgICB7IGxhYmVsOiAnQXBwcm92ZScsIGljb246ICdjaGVja21hcmsnLCBkZXNjcmlwdGlvbjogJ0FwcHJvdmUgdGhlIGFwcHJvdmFscycgLCBkaXNhYmxlZDogdHJ1ZSwgb25DbGljazogdGhpcy5tdWx0aXBsZUFwcHJvdmFsLmJpbmQodGhpcykgfSxcbiAgICB7IGxhYmVsOiAnRGVjbGluZScsIGljb246ICdjbG9zZScsIGRlc2NyaXB0aW9uOiAnRGVjbGluZSB0aGUgYXBwcm92YWxzJywgY29sb3I6ICdkYW5nZXInLCBkaXNhYmxlZDogdHJ1ZSwgb25DbGljazogdGhpcy5tdWx0aXBsZUFwcHJvdmFsLmJpbmQodGhpcykgfVxuICBdO1xuICBwcm90ZWN0ZWQgZ3JpZEFwaSE6IEdyaWRBcGk7XG4gIHByb3RlY3RlZCBzZWxlY3RlZEFwcHJvdmFsR3JvdXBHdWlkPzogc3RyaW5nO1xuICBwcm90ZWN0ZWQgaW5wdXQ6IEFwcHJvdmFsQ3JpdGVyaWEgPSB7IHBhZ2U6IDAsIHBhZ2VTaXplOiA1MCwgZW50aXR5OiB0aGlzLmVudGl0aWVzIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChBUFBST1ZBTF9FTlRJVElFUykgcHVibGljIHJlYWRvbmx5IGVudGl0aWVzOiBzdHJpbmdbXSxcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VydmljZTogQXBwcm92YWxTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCByZWFkb25seSBhbGVydEN0cmw6IEFsZXJ0Q29udHJvbGxlclxuICApIHsgfVxuXG4gIHB1YmxpYyBzZXRHcmlkQXBpKHsgYXBpIH06IEdyaWRSZWFkeUV2ZW50KTogdm9pZHsgXG4gICAgdGhpcy5ncmlkQXBpID0gYXBpOyBcbiAgfVxuXG4gIHB1YmxpYyBvcGVuRGV0YWlsKHsgZ3VpZCB9OiBhbnkpOiB2b2lkeyBcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbIGAvYXBwcm92YWwvJHsgZ3VpZCB9YCBdLCB7IHByZXNlcnZlRnJhZ21lbnQ6IHRydWUgfSk7IFxuICB9XG5cbiAgcHVibGljIHNlbGVjdEFwcHJvdmFscygpOiB2b2lke1xuICAgIGNvbnN0IGRhdGFHcmlkOiBhbnlbXSA9IHRoaXMuZ3JpZEFwaS5nZXRTZWxlY3RlZFJvd3MoKTtcblxuICAgIHRoaXMuYnRuQ29uZmlnWzBdLmRpc2FibGVkID0gdGhpcy5idG5Db25maWdbMV0uZGlzYWJsZWQgPSBkYXRhR3JpZC5sZW5ndGggPCAxO1xuXG4gICAgdGhpcy5zZWxlY3RlZEFwcHJvdmFsR3JvdXBHdWlkID0gZGF0YUdyaWQubGVuZ3RoID09PSAwPyB1bmRlZmluZWQgOiBkYXRhR3JpZFswXS5hcHByb3ZhbEdyb3VwLmd1aWQ7XG4gICAgdGhpcy5ncmlkQXBpLnJlZnJlc2hDZWxscyh7IGZvcmNlOiB0cnVlIH0pO1xuICB9XG5cbiAgcHVibGljIHNlYXJjaCh7IGRhdGEgfTogRmlsdGVyU2VhcmNoRXZlbnQpOiB2b2lke1xuICAgIHRoaXMuaW5wdXQudHlwZSA9IGRhdGE/LnR5cGU7XG4gICAgdGhpcy5pbnB1dC5zdGF0dXMgPSBkYXRhPy5zdGF0dXM7XG5cbiAgICB0aGlzLmdyaWRBcGkuZ2V0U2VsZWN0ZWROb2RlcygpLmZvckVhY2goKGUpID0+IGUuc2V0U2VsZWN0ZWQoZmFsc2UpKTtcbiAgICB0aGlzLmdyaWRBcGkucmVmcmVzaEluZmluaXRlQ2FjaGUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc0NoZWNrYm94U2VsZWN0YWJsZShhcHByb3ZhbEdyb3VwPzogQXBwcm92YWxHcm91cCk6IGJvb2xlYW57XG4gICAgaWYgKCFhcHByb3ZhbEdyb3VwKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGFwcHJvdmFsR3JvdXAuZ3VpZCA9PT0gdGhpcy5zZWxlY3RlZEFwcHJvdmFsR3JvdXBHdWlkKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBtdWx0aXBsZUFwcHJvdmFsKGJ0bjogQnV0dG9uTG9hZGluZ0NvbXBvbmVudCk6IHZvaWR7XG4gICAgYnRuLnRvZ2dsZUxvYWRpbmcoKTtcblxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsgYC9hcHByb3ZhbC9hcHByb3ZhbC1ncm91cGAgXSwge1xuICAgICAgcHJlc2VydmVGcmFnbWVudDogdHJ1ZSxcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgIGlzQXBwcm92ZTogYnRuLmNvbG9yICE9PSAnZGFuZ2VyJyxcbiAgICAgICAgYXBwcm92YWxHcm91cEd1aWQ6IHRoaXMuc2VsZWN0ZWRBcHByb3ZhbEdyb3VwR3VpZCxcbiAgICAgICAgZ3VpZHM6IHRoaXMuZ3JpZEFwaS5nZXRTZWxlY3RlZFJvd3MoKS5tYXAoKHsgZ3VpZCB9KSA9PiBndWlkKVxuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBnYXAtNCBwLTQgZmxleC1zaHJpbmstMCBmbGV4LXdyYXBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTEgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAgICA8aDMgY2xhc3M9XCJtLTBcIj5BcHByb3ZhbDwvaDM+XG5cbiAgICAgICAgPHVwLWJ0bi1ncm91cCBpZD1cImFwcHJvdmFsLWxpc3RcIiBbY29uZmlnXT1cImJ0bkNvbmZpZ1wiIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleC1zaHJpbmstMCBmbGV4LWdyb3ctMVwiPlxuICAgICAgICA8dXAtZmlsdGVyIHBsYWNlaG9sZGVyPVwiVHlwZSB0byBzZWFyY2hcIiBpZD1cImZpbHRlci1hcHByb3ZhbC1saXN0XCIgW2NvbmZpZ109XCJmaWx0ZXJDb25maWdcIiAob25TZWFyY2gpPVwic2VhcmNoKCRldmVudClcIiAvPlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMSBweC0xIHBiLTFcIj5cbiAgICA8dXAtcGFnaW5hdGlvbi1ncmlkIFtjb25maWddPVwiZ3JpZENvbmZpZ1wiIGlkPVwiZ3JpZC1hcHByb3ZhbC1saXN0XCIgcm93U2VsZWN0aW9uPVwibXVsdGlwbGVcIiAob25HcmlkUmVhZHkpPVwic2V0R3JpZEFwaSgkZXZlbnQpXCIgKG9uUm93Q2xpY2spPVwib3BlbkRldGFpbCgkZXZlbnQpXCIgKG9uU2VsZWN0aW9uQ2hhbmdlZCk9XCJzZWxlY3RBcHByb3ZhbHMoKVwiIC8+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,9 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export const APPROVAL_ENTITIES = new InjectionToken('APPROVAL_ENTITIES');
3
+ export function provideApprovalEntities(entities) {
4
+ return {
5
+ provide: APPROVAL_ENTITIES,
6
+ useValue: entities
7
+ };
8
+ }
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS1hcHByb3ZhbC1lbnRpdGllcy51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdW5pcGluLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2FwcHJvdmFsL2xpc3QvcHJvdmlkZS1hcHByb3ZhbC1lbnRpdGllcy51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQVksTUFBTSxlQUFlLENBQUM7QUFFekQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxjQUFjLENBQVcsbUJBQW1CLENBQUMsQ0FBQztBQUVuRixNQUFNLFVBQVUsdUJBQXVCLENBQUMsUUFBa0I7SUFDeEQsT0FBTztRQUNMLE9BQU8sRUFBRSxpQkFBaUI7UUFDMUIsUUFBUSxFQUFFLFFBQVE7S0FDbkIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNvbnN0IEFQUFJPVkFMX0VOVElUSUVTID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZ1tdPignQVBQUk9WQUxfRU5USVRJRVMnKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVBcHByb3ZhbEVudGl0aWVzKGVudGl0aWVzOiBzdHJpbmdbXSk6IFByb3ZpZGVye1xuICByZXR1cm4geyBcbiAgICBwcm92aWRlOiBBUFBST1ZBTF9FTlRJVElFUywgXG4gICAgdXNlVmFsdWU6IGVudGl0aWVzIFxuICB9O1xufVxuIl19
@@ -0,0 +1,46 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { gql } from 'apollo-angular';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "apollo-angular";
5
+ export class ApprovalService {
6
+ constructor(apollo) {
7
+ this.apollo = apollo;
8
+ this.baseAttr = `guid createdAt entity remark sourcePlatform status type approvalGroup { guid }`;
9
+ }
10
+ query(input, extraAttr = '', fetchPolicy) {
11
+ return this.apollo.query({
12
+ fetchPolicy,
13
+ variables: { input },
14
+ query: gql `
15
+ query QueryApproval($input: ApprovalCriteria) {
16
+ approvalMsApprovals(input: $input) {
17
+ data {
18
+ ${this.baseAttr}
19
+ ${extraAttr}
20
+ }
21
+ ${input.page === 0 ? 'totalRecord' : ''}
22
+ }
23
+ }
24
+ `
25
+ });
26
+ }
27
+ request(variables) {
28
+ return this.apollo.mutate({
29
+ variables,
30
+ mutation: gql `
31
+ mutation ${variables.isApprove ? 'ApproveApproval' : 'DeclineApproval'}($approvalGroupGuid: String, $guids: [String], $isApprove: Boolean, $reason: String) {
32
+ approvalMsApproveOrDeclineRequest(approvalGroupGuid: $approvalGroupGuid, guids: $guids, isApprove: $isApprove, reason: $reason)
33
+ }
34
+ `
35
+ });
36
+ }
37
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApprovalService, deps: [{ token: i1.Apollo }], target: i0.ɵɵFactoryTarget.Injectable }); }
38
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApprovalService, providedIn: 'root' }); }
39
+ }
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApprovalService, decorators: [{
41
+ type: Injectable,
42
+ args: [{
43
+ providedIn: 'root'
44
+ }]
45
+ }], ctorParameters: () => [{ type: i1.Apollo }] });
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaXBpbi1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9hcHByb3ZhbC9zZXJ2aWNlcy9hcHByb3ZhbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFVLEdBQUcsRUFBa0IsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBTTdELE1BQU0sT0FBTyxlQUFlO0lBSTFCLFlBQ3FCLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBSGhCLGFBQVEsR0FBVyxnRkFBZ0YsQ0FBQztJQUluSCxDQUFDO0lBRUUsS0FBSyxDQUFDLEtBQXVCLEVBQUUsWUFBb0IsRUFBRSxFQUFFLFdBQXlCO1FBQ3JGLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDdkIsV0FBVztZQUNYLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRTtZQUNwQixLQUFLLEVBQUUsR0FBRyxDQUFBOzs7O2dCQUlDLElBQUksQ0FBQyxRQUFTO2dCQUNkLFNBQVU7O2NBRVosS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUEsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRzs7O09BRzdDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLE9BQU8sQ0FBQyxTQUF3RDtRQUNyRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQ3hCLFNBQVM7WUFDVCxRQUFRLEVBQUUsR0FBRyxDQUFBO21CQUNDLFNBQVMsQ0FBQyxTQUFTLENBQUEsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxpQkFBa0I7OztPQUd4RTtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBbkNVLGVBQWU7bUhBQWYsZUFBZSxjQUZkLE1BQU07OzRGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXBvbGxvUXVlcnlSZXN1bHQsIEZldGNoUG9saWN5IH0gZnJvbSAnQGFwb2xsby9jbGllbnQvY29yZSc7XG5pbXBvcnQgeyBBcG9sbG8sIGdxbCwgTXV0YXRpb25SZXN1bHQgfSBmcm9tICdhcG9sbG8tYW5ndWxhcic7XG5pbXBvcnQgeyBBcHByb3ZhbENyaXRlcmlhLCBQYWdlYWJsZVJlc3BvbnNlLCBNdXRhdGlvbkFwcHJvdmFsTXNBcHByb3ZlT3JEZWNsaW5lUmVxdWVzdEFyZ3MgfSBmcm9tICcuLy4uLy4uLy4uLy4uL2dyYXBocWwvZ2VuZXJhdGVkJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQXBwcm92YWxTZXJ2aWNlIHtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYmFzZUF0dHI6IHN0cmluZyA9IGBndWlkIGNyZWF0ZWRBdCBlbnRpdHkgcmVtYXJrIHNvdXJjZVBsYXRmb3JtIHN0YXR1cyB0eXBlIGFwcHJvdmFsR3JvdXAgeyBndWlkIH1gO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCByZWFkb25seSBhcG9sbG86IEFwb2xsb1xuICApIHsgfVxuXG4gIHB1YmxpYyBxdWVyeShpbnB1dDogQXBwcm92YWxDcml0ZXJpYSwgZXh0cmFBdHRyOiBzdHJpbmcgPSAnJywgZmV0Y2hQb2xpY3k/OiBGZXRjaFBvbGljeSk6IE9ic2VydmFibGU8QXBvbGxvUXVlcnlSZXN1bHQ8eyBhcHByb3ZhbE1zQXBwcm92YWxzOiBQYWdlYWJsZVJlc3BvbnNlIH0+PntcbiAgICByZXR1cm4gdGhpcy5hcG9sbG8ucXVlcnkoe1xuICAgICAgZmV0Y2hQb2xpY3ksXG4gICAgICB2YXJpYWJsZXM6IHsgaW5wdXQgfSxcbiAgICAgIHF1ZXJ5OiBncWxgXG4gICAgICAgIHF1ZXJ5IFF1ZXJ5QXBwcm92YWwoJGlucHV0OiBBcHByb3ZhbENyaXRlcmlhKSB7XG4gICAgICAgICAgYXBwcm92YWxNc0FwcHJvdmFscyhpbnB1dDogJGlucHV0KSB7XG4gICAgICAgICAgICBkYXRhIHtcbiAgICAgICAgICAgICAgJHsgdGhpcy5iYXNlQXR0ciB9XG4gICAgICAgICAgICAgICR7IGV4dHJhQXR0ciB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAkeyBpbnB1dC5wYWdlID09PSAwPyAndG90YWxSZWNvcmQnIDogJycgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgYFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHJlcXVlc3QodmFyaWFibGVzOiBNdXRhdGlvbkFwcHJvdmFsTXNBcHByb3ZlT3JEZWNsaW5lUmVxdWVzdEFyZ3MpOiBPYnNlcnZhYmxlPE11dGF0aW9uUmVzdWx0PHsgYXBwcm92YWxNc0FwcHJvdmVPckRlY2xpbmVSZXF1ZXN0OiBzdHJpbmcgfT4+e1xuICAgIHJldHVybiB0aGlzLmFwb2xsby5tdXRhdGUoe1xuICAgICAgdmFyaWFibGVzLFxuICAgICAgbXV0YXRpb246IGdxbGBcbiAgICAgICAgbXV0YXRpb24gJHsgdmFyaWFibGVzLmlzQXBwcm92ZT8gJ0FwcHJvdmVBcHByb3ZhbCcgOiAnRGVjbGluZUFwcHJvdmFsJyB9KCRhcHByb3ZhbEdyb3VwR3VpZDogU3RyaW5nLCAkZ3VpZHM6IFtTdHJpbmddLCAkaXNBcHByb3ZlOiBCb29sZWFuLCAkcmVhc29uOiBTdHJpbmcpIHtcbiAgICAgICAgICBhcHByb3ZhbE1zQXBwcm92ZU9yRGVjbGluZVJlcXVlc3QoYXBwcm92YWxHcm91cEd1aWQ6ICRhcHByb3ZhbEdyb3VwR3VpZCwgZ3VpZHM6ICRndWlkcywgaXNBcHByb3ZlOiAkaXNBcHByb3ZlLCByZWFzb246ICRyZWFzb24pXG4gICAgICAgIH1cbiAgICAgIGBcbiAgICB9KTtcbiAgfVxufVxuIl19