@unifylib/ui-lib 1.1.3 → 1.1.5

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 (286) hide show
  1. package/esm2022/iq-ui-lib.mjs +5 -0
  2. package/esm2022/lib/base-model/SearchStrConfig.mjs +11 -0
  3. package/esm2022/lib/base-model/api-response.mjs +2 -0
  4. package/esm2022/lib/base-model/audit-log-entry.mjs +3 -0
  5. package/esm2022/lib/base-model/button-action-settings.mjs +16 -0
  6. package/esm2022/lib/base-model/column-def.model.mjs +28 -0
  7. package/esm2022/lib/base-model/do-action-request.mjs +8 -0
  8. package/esm2022/lib/base-model/field-action.mjs +6 -0
  9. package/esm2022/lib/base-model/field-filter.model.mjs +3 -0
  10. package/esm2022/lib/base-model/field-info.mjs +57 -0
  11. package/esm2022/lib/base-model/field-predicate.model.mjs +10 -0
  12. package/esm2022/lib/base-model/filter-request.mjs +13 -0
  13. package/esm2022/lib/base-model/filter.model.mjs +25 -0
  14. package/esm2022/lib/base-model/get-items-list.mjs +10 -0
  15. package/esm2022/lib/base-model/index.mjs +12 -0
  16. package/esm2022/lib/base-model/items-total.model.mjs +8 -0
  17. package/esm2022/lib/base-model/line-item.model.mjs +11 -0
  18. package/esm2022/lib/base-model/lookupItem.mjs +16 -0
  19. package/esm2022/lib/base-model/page-info.mjs +17 -0
  20. package/esm2022/lib/base-model/report-request.model.mjs +17 -0
  21. package/esm2022/lib/base-model/response-envelop.model.mjs +10 -0
  22. package/esm2022/lib/base-model/snack-message.model.mjs +11 -0
  23. package/esm2022/lib/base-model/table-column.interface.mjs +2 -0
  24. package/esm2022/lib/base-model/table-page-user-action.interface.mjs +21 -0
  25. package/esm2022/lib/base-model/workflow/workflow-steps.model.mjs +9 -0
  26. package/esm2022/lib/base-model/workflow/workflow.model.mjs +42 -0
  27. package/esm2022/lib/components/action-comment/action-comment.component.mjs +101 -0
  28. package/esm2022/lib/components/action-confirmation/action-confirmation.component.mjs +55 -0
  29. package/esm2022/lib/components/activity-report-form/activity-report-form.component.mjs +499 -0
  30. package/esm2022/lib/components/advanced-filter/field-filter/field-filter.component.mjs +41 -0
  31. package/esm2022/lib/components/advanced-filter/filter-builder/filter-builder.component.mjs +162 -0
  32. package/esm2022/lib/components/audit-log-details-dialog/audit-log-details-dialog.component.mjs +70 -0
  33. package/esm2022/lib/components/audit-log-list/audit-log.component.mjs +99 -0
  34. package/esm2022/lib/components/auto-complete/auto-complete.component.mjs +292 -0
  35. package/esm2022/lib/components/base-form/base-form.component.mjs +297 -0
  36. package/esm2022/lib/components/base-form-canvas/base-form-canvas.component.mjs +591 -0
  37. package/esm2022/lib/components/base-input-dialog/base-input-dialog.component.mjs +72 -0
  38. package/esm2022/lib/components/base-table/base-table.component.mjs +514 -0
  39. package/esm2022/lib/components/button-actions/button-actions.component.mjs +70 -0
  40. package/esm2022/lib/components/editable-base-table/editable-base-table.component.mjs +496 -0
  41. package/esm2022/lib/components/equation-builder/equation-builder.component.mjs +112 -0
  42. package/esm2022/lib/components/item-line-editor/item-line-editor.component.mjs +299 -0
  43. package/esm2022/lib/components/multi-auto-complete/multi-auto-complete.component.mjs +278 -0
  44. package/esm2022/lib/components/paginator/paginator.component.mjs +91 -0
  45. package/esm2022/lib/components/report-details-dialog/report-details-dialog.component.mjs +102 -0
  46. package/esm2022/lib/components/report-form/report-form.component.mjs +498 -0
  47. package/esm2022/lib/components/search-bar/search-bar.component.mjs +62 -0
  48. package/esm2022/lib/components/section-form-canvas/section-form-canvas.component.mjs +81 -0
  49. package/esm2022/lib/components/shared/action-button/action-button.component.mjs +59 -0
  50. package/esm2022/lib/components/shared/action-card/action-card.component.mjs +93 -0
  51. package/esm2022/lib/components/shared/attachment-uploader/attachment-uploader.component.mjs +70 -0
  52. package/esm2022/lib/components/shared-list/shared-list.component.mjs +47 -0
  53. package/esm2022/lib/components/snackbar-static/snackbar-static.component.mjs +43 -0
  54. package/esm2022/lib/components/title-bar/title-bar.component.mjs +119 -0
  55. package/esm2022/lib/services/backend-service.mjs +240 -0
  56. package/esm2022/lib/services/index.mjs +4 -0
  57. package/esm2022/lib/services/top-panel.mjs +22 -0
  58. package/esm2022/lib/services/trigger-form.service.mjs +17 -0
  59. package/esm2022/lib/utils/base-utils.mjs +97 -0
  60. package/esm2022/lib/validators/date-range-validator.mjs +27 -0
  61. package/esm2022/lib/validators/index.mjs +4 -0
  62. package/esm2022/lib/validators/match-list.validator.mjs +9 -0
  63. package/esm2022/lib/validators/multi-email-validator.mjs +13 -0
  64. package/esm2022/public-api.mjs +29 -0
  65. package/esm2022/q-btech-ui-lib.mjs +5 -0
  66. package/esm2022/unifylib-ui-lib.mjs +5 -0
  67. package/fesm2022/iq-ui-lib.mjs +5625 -0
  68. package/fesm2022/iq-ui-lib.mjs.map +1 -0
  69. package/fesm2022/q-btech-ui-lib.mjs +5619 -0
  70. package/fesm2022/q-btech-ui-lib.mjs.map +1 -0
  71. package/fesm2022/unifylib-ui-lib.mjs +5625 -0
  72. package/fesm2022/unifylib-ui-lib.mjs.map +1 -0
  73. package/index.d.ts +5 -0
  74. package/lib/base-model/SearchStrConfig.d.ts +8 -0
  75. package/{src/lib/base-model/api-response.ts → lib/base-model/api-response.d.ts} +21 -23
  76. package/lib/base-model/audit-log-entry.d.ts +7 -0
  77. package/lib/base-model/button-action-settings.d.ts +15 -0
  78. package/lib/base-model/column-def.model.d.ts +11 -0
  79. package/lib/base-model/do-action-request.d.ts +10 -0
  80. package/lib/base-model/field-action.d.ts +6 -0
  81. package/lib/base-model/field-filter.model.d.ts +7 -0
  82. package/lib/base-model/field-info.d.ts +53 -0
  83. package/lib/base-model/field-predicate.model.d.ts +7 -0
  84. package/lib/base-model/filter-request.d.ts +15 -0
  85. package/lib/base-model/filter.model.d.ts +22 -0
  86. package/lib/base-model/get-items-list.d.ts +21 -0
  87. package/lib/base-model/index.d.ts +11 -0
  88. package/lib/base-model/items-total.model.d.ts +6 -0
  89. package/lib/base-model/line-item.model.d.ts +9 -0
  90. package/lib/base-model/lookupItem.d.ts +13 -0
  91. package/lib/base-model/page-info.d.ts +52 -0
  92. package/lib/base-model/report-request.model.d.ts +18 -0
  93. package/lib/base-model/response-envelop.model.d.ts +8 -0
  94. package/lib/base-model/snack-message.model.d.ts +7 -0
  95. package/lib/base-model/table-column.interface.d.ts +28 -0
  96. package/lib/base-model/table-page-user-action.interface.d.ts +14 -0
  97. package/lib/base-model/workflow/workflow-steps.model.d.ts +7 -0
  98. package/lib/base-model/workflow/workflow.model.d.ts +13 -0
  99. package/lib/components/action-comment/action-comment.component.d.ts +32 -0
  100. package/lib/components/action-confirmation/action-confirmation.component.d.ts +19 -0
  101. package/lib/components/activity-report-form/activity-report-form.component.d.ts +93 -0
  102. package/lib/components/advanced-filter/field-filter/field-filter.component.d.ts +20 -0
  103. package/lib/components/advanced-filter/filter-builder/filter-builder.component.d.ts +28 -0
  104. package/lib/components/audit-log-details-dialog/audit-log-details-dialog.component.d.ts +25 -0
  105. package/lib/components/audit-log-list/audit-log.component.d.ts +36 -0
  106. package/lib/components/auto-complete/auto-complete.component.d.ts +51 -0
  107. package/lib/components/base-form/base-form.component.d.ts +59 -0
  108. package/lib/components/base-form-canvas/base-form-canvas.component.d.ts +124 -0
  109. package/lib/components/base-input-dialog/base-input-dialog.component.d.ts +23 -0
  110. package/lib/components/base-table/base-table.component.d.ts +128 -0
  111. package/lib/components/button-actions/button-actions.component.d.ts +17 -0
  112. package/lib/components/editable-base-table/editable-base-table.component.d.ts +106 -0
  113. package/lib/components/equation-builder/equation-builder.component.d.ts +23 -0
  114. package/lib/components/item-line-editor/item-line-editor.component.d.ts +64 -0
  115. package/lib/components/multi-auto-complete/multi-auto-complete.component.d.ts +51 -0
  116. package/lib/components/paginator/paginator.component.d.ts +26 -0
  117. package/lib/components/report-details-dialog/report-details-dialog.component.d.ts +34 -0
  118. package/lib/components/report-form/report-form.component.d.ts +92 -0
  119. package/lib/components/search-bar/search-bar.component.d.ts +29 -0
  120. package/lib/components/section-form-canvas/section-form-canvas.component.d.ts +27 -0
  121. package/lib/components/shared/action-button/action-button.component.d.ts +17 -0
  122. package/lib/components/shared/action-card/action-card.component.d.ts +37 -0
  123. package/lib/components/shared/attachment-uploader/attachment-uploader.component.d.ts +16 -0
  124. package/lib/components/shared-list/shared-list.component.d.ts +21 -0
  125. package/lib/components/snackbar-static/snackbar-static.component.d.ts +15 -0
  126. package/lib/components/title-bar/title-bar.component.d.ts +42 -0
  127. package/lib/services/backend-service.d.ts +59 -0
  128. package/{src/lib/services/index.ts → lib/services/index.d.ts} +3 -3
  129. package/lib/services/top-panel.d.ts +8 -0
  130. package/lib/services/trigger-form.service.d.ts +7 -0
  131. package/lib/utils/base-utils.d.ts +13 -0
  132. package/lib/validators/date-range-validator.d.ts +2 -0
  133. package/{src/lib/validators/index.ts → lib/validators/index.d.ts} +3 -3
  134. package/lib/validators/match-list.validator.d.ts +4 -0
  135. package/lib/validators/multi-email-validator.d.ts +6 -0
  136. package/package.json +27 -14
  137. package/{src/public-api.ts → public-api.d.ts} +25 -29
  138. package/ng-package.json +0 -7
  139. package/src/lib/base-model/SearchStrConfig.ts +0 -12
  140. package/src/lib/base-model/audit-log-entry.ts +0 -7
  141. package/src/lib/base-model/button-action-settings.ts +0 -29
  142. package/src/lib/base-model/column-def.model.ts +0 -34
  143. package/src/lib/base-model/do-action-request.ts +0 -11
  144. package/src/lib/base-model/feature-item.ts +0 -9
  145. package/src/lib/base-model/field-action.ts +0 -7
  146. package/src/lib/base-model/field-filter.model.ts +0 -7
  147. package/src/lib/base-model/field-info.ts +0 -102
  148. package/src/lib/base-model/field-predicate.model.ts +0 -7
  149. package/src/lib/base-model/filter-request.ts +0 -27
  150. package/src/lib/base-model/filter.model.ts +0 -49
  151. package/src/lib/base-model/get-items-list.ts +0 -24
  152. package/src/lib/base-model/index.ts +0 -11
  153. package/src/lib/base-model/items-total.model.ts +0 -12
  154. package/src/lib/base-model/line-item.model.ts +0 -18
  155. package/src/lib/base-model/lookupItem.ts +0 -21
  156. package/src/lib/base-model/null-snackmessage.ts +0 -9
  157. package/src/lib/base-model/page-info.ts +0 -54
  158. package/src/lib/base-model/report-request.model.ts +0 -33
  159. package/src/lib/base-model/response-envelop.model.ts +0 -15
  160. package/src/lib/base-model/snack-message.model.ts +0 -14
  161. package/src/lib/base-model/snackmessage-interface.ts +0 -7
  162. package/src/lib/base-model/table-column.interface.ts +0 -29
  163. package/src/lib/base-model/table-page-user-action.interface.ts +0 -33
  164. package/src/lib/base-model/workflow/workflow-steps.model.ts +0 -9
  165. package/src/lib/base-model/workflow/workflow.model.ts +0 -52
  166. package/src/lib/components/action-comment/action-comment.component.css +0 -52
  167. package/src/lib/components/action-comment/action-comment.component.html +0 -47
  168. package/src/lib/components/action-comment/action-comment.component.spec.ts +0 -23
  169. package/src/lib/components/action-comment/action-comment.component.ts +0 -102
  170. package/src/lib/components/action-confirmation/action-confirmation.component.css +0 -46
  171. package/src/lib/components/action-confirmation/action-confirmation.component.html +0 -32
  172. package/src/lib/components/action-confirmation/action-confirmation.component.spec.ts +0 -23
  173. package/src/lib/components/action-confirmation/action-confirmation.component.ts +0 -58
  174. package/src/lib/components/activity-report-form/activity-report-form.component.html +0 -110
  175. package/src/lib/components/activity-report-form/activity-report-form.component.scss +0 -69
  176. package/src/lib/components/activity-report-form/activity-report-form.component.spec.ts +0 -25
  177. package/src/lib/components/activity-report-form/activity-report-form.component.ts +0 -616
  178. package/src/lib/components/advanced-filter/field-filter/field-filter.component.html +0 -8
  179. package/src/lib/components/advanced-filter/field-filter/field-filter.component.scss +0 -0
  180. package/src/lib/components/advanced-filter/field-filter/field-filter.component.spec.ts +0 -25
  181. package/src/lib/components/advanced-filter/field-filter/field-filter.component.ts +0 -55
  182. package/src/lib/components/advanced-filter/filter-builder/filter-builder.component.html +0 -36
  183. package/src/lib/components/advanced-filter/filter-builder/filter-builder.component.scss +0 -130
  184. package/src/lib/components/advanced-filter/filter-builder/filter-builder.component.spec.ts +0 -25
  185. package/src/lib/components/advanced-filter/filter-builder/filter-builder.component.ts +0 -186
  186. package/src/lib/components/audit-log-details-dialog/audit-log-details-dialog.component.css +0 -51
  187. package/src/lib/components/audit-log-details-dialog/audit-log-details-dialog.component.html +0 -23
  188. package/src/lib/components/audit-log-details-dialog/audit-log-details-dialog.component.spec.ts +0 -23
  189. package/src/lib/components/audit-log-details-dialog/audit-log-details-dialog.component.ts +0 -69
  190. package/src/lib/components/audit-log-list/audit-log.component.html +0 -26
  191. package/src/lib/components/audit-log-list/audit-log.component.scss +0 -50
  192. package/src/lib/components/audit-log-list/audit-log.component.spec.ts +0 -25
  193. package/src/lib/components/audit-log-list/audit-log.component.ts +0 -114
  194. package/src/lib/components/auto-complete/auto-complete.component.css +0 -55
  195. package/src/lib/components/auto-complete/auto-complete.component.html +0 -45
  196. package/src/lib/components/auto-complete/auto-complete.component.spec.ts +0 -23
  197. package/src/lib/components/auto-complete/auto-complete.component.ts +0 -331
  198. package/src/lib/components/base-form/base-form.component.html +0 -59
  199. package/src/lib/components/base-form/base-form.component.scss +0 -68
  200. package/src/lib/components/base-form/base-form.component.spec.ts +0 -25
  201. package/src/lib/components/base-form/base-form.component.ts +0 -323
  202. package/src/lib/components/base-form-canvas/base-form-canvas.component.css +0 -196
  203. package/src/lib/components/base-form-canvas/base-form-canvas.component.html +0 -1095
  204. package/src/lib/components/base-form-canvas/base-form-canvas.component.spec.ts +0 -23
  205. package/src/lib/components/base-form-canvas/base-form-canvas.component.ts +0 -680
  206. package/src/lib/components/base-input-dialog/base-input-dialog.component.css +0 -67
  207. package/src/lib/components/base-input-dialog/base-input-dialog.component.html +0 -47
  208. package/src/lib/components/base-input-dialog/base-input-dialog.component.spec.ts +0 -23
  209. package/src/lib/components/base-input-dialog/base-input-dialog.component.ts +0 -77
  210. package/src/lib/components/base-table/base-table.component.html +0 -268
  211. package/src/lib/components/base-table/base-table.component.scss +0 -140
  212. package/src/lib/components/base-table/base-table.component.spec.ts +0 -25
  213. package/src/lib/components/base-table/base-table.component.ts +0 -621
  214. package/src/lib/components/button-actions/button-actions.component.html +0 -27
  215. package/src/lib/components/button-actions/button-actions.component.scss +0 -101
  216. package/src/lib/components/button-actions/button-actions.component.spec.ts +0 -23
  217. package/src/lib/components/button-actions/button-actions.component.ts +0 -70
  218. package/src/lib/components/editable-base-table/editable-base-table.component.html +0 -337
  219. package/src/lib/components/editable-base-table/editable-base-table.component.scss +0 -126
  220. package/src/lib/components/editable-base-table/editable-base-table.component.spec.ts +0 -25
  221. package/src/lib/components/editable-base-table/editable-base-table.component.ts +0 -579
  222. package/src/lib/components/equation-builder/equation-builder.component.css +0 -39
  223. package/src/lib/components/equation-builder/equation-builder.component.html +0 -31
  224. package/src/lib/components/equation-builder/equation-builder.component.spec.ts +0 -23
  225. package/src/lib/components/equation-builder/equation-builder.component.ts +0 -119
  226. package/src/lib/components/item-line-editor/item-line-editor.component.html +0 -102
  227. package/src/lib/components/item-line-editor/item-line-editor.component.scss +0 -152
  228. package/src/lib/components/item-line-editor/item-line-editor.component.spec.ts +0 -23
  229. package/src/lib/components/item-line-editor/item-line-editor.component.ts +0 -306
  230. package/src/lib/components/multi-auto-complete/multi-auto-complete.component.css +0 -19
  231. package/src/lib/components/multi-auto-complete/multi-auto-complete.component.html +0 -38
  232. package/src/lib/components/multi-auto-complete/multi-auto-complete.component.spec.ts +0 -23
  233. package/src/lib/components/multi-auto-complete/multi-auto-complete.component.ts +0 -315
  234. package/src/lib/components/paginator/paginator.component.css +0 -65
  235. package/src/lib/components/paginator/paginator.component.html +0 -30
  236. package/src/lib/components/paginator/paginator.component.ts +0 -87
  237. package/src/lib/components/report-details-dialog/report-details-dialog.component.css +0 -17
  238. package/src/lib/components/report-details-dialog/report-details-dialog.component.html +0 -16
  239. package/src/lib/components/report-details-dialog/report-details-dialog.component.spec.ts +0 -23
  240. package/src/lib/components/report-details-dialog/report-details-dialog.component.ts +0 -111
  241. package/src/lib/components/report-form/report-form.component.html +0 -92
  242. package/src/lib/components/report-form/report-form.component.scss +0 -51
  243. package/src/lib/components/report-form/report-form.component.spec.ts +0 -25
  244. package/src/lib/components/report-form/report-form.component.ts +0 -599
  245. package/src/lib/components/search-bar/search-bar.component.html +0 -51
  246. package/src/lib/components/search-bar/search-bar.component.scss +0 -63
  247. package/src/lib/components/search-bar/search-bar.component.spec.ts +0 -25
  248. package/src/lib/components/search-bar/search-bar.component.ts +0 -68
  249. package/src/lib/components/section-form-canvas/section-form-canvas.component.html +0 -43
  250. package/src/lib/components/section-form-canvas/section-form-canvas.component.scss +0 -81
  251. package/src/lib/components/section-form-canvas/section-form-canvas.component.spec.ts +0 -23
  252. package/src/lib/components/section-form-canvas/section-form-canvas.component.ts +0 -67
  253. package/src/lib/components/shared/action-button/action-button.component.html +0 -12
  254. package/src/lib/components/shared/action-button/action-button.component.scss +0 -45
  255. package/src/lib/components/shared/action-button/action-button.component.ts +0 -51
  256. package/src/lib/components/shared/action-card/action-card.component.html +0 -78
  257. package/src/lib/components/shared/action-card/action-card.component.scss +0 -238
  258. package/src/lib/components/shared/action-card/action-card.component.ts +0 -56
  259. package/src/lib/components/shared/attachment-uploader/attachment-uploader.component.css +0 -135
  260. package/src/lib/components/shared/attachment-uploader/attachment-uploader.component.html +0 -36
  261. package/src/lib/components/shared/attachment-uploader/attachment-uploader.component.spec.ts +0 -23
  262. package/src/lib/components/shared/attachment-uploader/attachment-uploader.component.ts +0 -71
  263. package/src/lib/components/shared-list/shared-list.component.css +0 -0
  264. package/src/lib/components/shared-list/shared-list.component.html +0 -17
  265. package/src/lib/components/shared-list/shared-list.component.spec.ts +0 -23
  266. package/src/lib/components/shared-list/shared-list.component.ts +0 -53
  267. package/src/lib/components/snackbar-static/snackbar-static.component.html +0 -20
  268. package/src/lib/components/snackbar-static/snackbar-static.component.scss +0 -135
  269. package/src/lib/components/snackbar-static/snackbar-static.component.ts +0 -26
  270. package/src/lib/components/title-bar/title-bar.component.css +0 -0
  271. package/src/lib/components/title-bar/title-bar.component.css.map +0 -1
  272. package/src/lib/components/title-bar/title-bar.component.html +0 -35
  273. package/src/lib/components/title-bar/title-bar.component.scss +0 -126
  274. package/src/lib/components/title-bar/title-bar.component.spec.ts +0 -23
  275. package/src/lib/components/title-bar/title-bar.component.ts +0 -126
  276. package/src/lib/services/backend-service.ts +0 -287
  277. package/src/lib/services/top-panel.ts +0 -17
  278. package/src/lib/services/trigger-form.service.ts +0 -11
  279. package/src/lib/share-module/shared-module.ts +0 -10
  280. package/src/lib/utils/base-utils.ts +0 -102
  281. package/src/lib/validators/date-range-validator.ts +0 -31
  282. package/src/lib/validators/match-list.validator.ts +0 -10
  283. package/src/lib/validators/multi-email-validator.ts +0 -15
  284. package/tsconfig.lib.json +0 -15
  285. package/tsconfig.lib.prod.json +0 -11
  286. package/tsconfig.spec.json +0 -15
@@ -1,579 +0,0 @@
1
- import {
2
- Component,
3
- ElementRef,
4
- EventEmitter,
5
- Input,
6
- OnChanges,
7
- OnInit,
8
- Output,
9
- SimpleChanges,
10
- ViewChild
11
- } from "@angular/core";
12
- import {
13
- MatCell,
14
- MatCellDef,
15
- MatColumnDef,
16
- MatHeaderCell,
17
- MatHeaderCellDef,
18
- MatHeaderRow,
19
- MatHeaderRowDef,
20
- MatRow,
21
- MatRowDef,
22
- MatTable
23
- } from "@angular/material/table";
24
- import {TranslateModule} from "@ngx-translate/core";
25
- import {MatSortModule} from "@angular/material/sort";
26
- import {NgClass, NgForOf, NgIf, NgSwitch, NgSwitchCase, NgSwitchDefault} from "@angular/common";
27
- import {MatIcon} from "@angular/material/icon";
28
- import {MatButton, MatButtonModule} from "@angular/material/button";
29
- import {NgxPaginationModule} from "ngx-pagination";
30
- import {Router} from "@angular/router";
31
- import {AbstractControl, FormArray, FormBuilder, FormControl, FormGroup, ReactiveFormsModule} from "@angular/forms";
32
- import {MatError, MatFormField, MatInput, MatLabel, MatSuffix} from "@angular/material/input";
33
- import {BackendService} from "../../services";
34
- import {
35
- BaseUtils,
36
- buildFormFields,
37
- getNegativeWfActionKey,
38
- getPositiveWfActionKey,
39
- getWfActionId
40
- } from "../../utils/base-utils";
41
- import {
42
- EMPTY_PAGE_INFO,
43
- FieldInfo,
44
- Filter,
45
- FilterRequest,
46
- LookupItem,
47
- PageInfo,
48
- SELECT_RECORD_ACTION,
49
- SnackMessage,
50
- TableColumn
51
- } from "../../base-model";
52
- import {DoActionRequest, REJECT, SAVE} from "../../base-model/do-action-request";
53
- import {ActionCommentComponent} from "../action-comment/action-comment.component";
54
- import {MatDialog} from "@angular/material/dialog";
55
- import {MatDatepicker, MatDatepickerInput, MatDatepickerToggle} from "@angular/material/datepicker";
56
- import moment, {Moment} from 'moment';
57
- import {AutoCompleteComponent} from "../auto-complete/auto-complete.component";
58
- import {DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE, MatOption} from "@angular/material/core";
59
- import {MatChipListbox, MatChipOption} from "@angular/material/chips";
60
- import {TitleBarComponent} from "../title-bar/title-bar.component";
61
- import {PaginatorComponent} from "../paginator/paginator.component";
62
- import {Directionality} from "@angular/cdk/bidi";
63
- import {AttachmentUploaderComponent} from "../shared/attachment-uploader/attachment-uploader.component";
64
- import {EquationBuilderComponent} from "../equation-builder/equation-builder.component";
65
- import {MatSelect} from "@angular/material/select";
66
-
67
- import {BaseFormCanvasComponent} from "../base-form-canvas/base-form-canvas.component";
68
- import {MatCheckbox} from "@angular/material/checkbox";
69
- @Component({
70
- selector: 'app-editable-base-table',
71
- standalone: true,
72
- templateUrl: './editable-base-table.component.html',
73
- styleUrls: ['./editable-base-table.component.scss'],
74
- animations: [],
75
- imports: [
76
- NgClass,
77
- TranslateModule,
78
- MatIcon,
79
- MatSortModule,
80
- MatColumnDef,
81
- MatHeaderCellDef,
82
- NgIf,
83
- MatTable,
84
- MatHeaderCell,
85
- NgSwitch,
86
- MatButtonModule,
87
- MatCell,
88
- MatCellDef,
89
- NgxPaginationModule,
90
- MatRow,
91
- MatRowDef,
92
- MatHeaderRow,
93
- NgSwitchCase,
94
- NgSwitchDefault,
95
- MatHeaderRowDef,
96
- NgForOf,
97
- MatButton,
98
- ReactiveFormsModule,
99
- MatInput,
100
- AutoCompleteComponent,
101
- MatFormField,
102
- MatDatepicker,
103
- MatDatepickerInput,
104
- MatDatepickerToggle,
105
- MatLabel,
106
- MatSuffix,
107
- MatChipListbox,
108
- MatChipOption,
109
- TitleBarComponent,
110
- PaginatorComponent,
111
- AttachmentUploaderComponent,
112
- EquationBuilderComponent,
113
- MatSelect,
114
- MatOption,
115
- BaseFormCanvasComponent,
116
- MatCheckbox,
117
- ],
118
- providers: [
119
- // `MomentDateAdapter` can be automatically provided by importing `MomentDateModule` in your
120
- // application's root module. We provide it at the component level here, due to limitations of
121
- // our example generation script.
122
- // {
123
- // provide: DateAdapter,
124
- // useClass: MomentDateAdapter,
125
- // deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
126
- // },
127
-
128
- // { provide: MAT_DATE_FORMATS, useValue: MY_FORMATS },
129
- ],
130
- })
131
-
132
- export class EditableBaseTableComponent extends BaseUtils implements OnInit, OnChanges {
133
-
134
- collection = {count: 60, data: []};
135
- config = {
136
- itemsPerPage: 10,
137
- currentPage: 1,
138
- totalItems: this.collection.count
139
- };
140
- public maxSize: number = 7;
141
- public directionLinks: boolean = true;
142
- public autoHide: boolean = false;
143
- public responsive: boolean = true;
144
- public labels: any = {
145
- previousLabel: '<',
146
- nextLabel: '>',
147
- screenReaderPaginationLabel: 'Pagination',
148
- screenReaderPageLabel: 'page',
149
- screenReaderCurrentLabel: `You're on page`
150
- };
151
-
152
- private timer: any;
153
- dataElements: any[] = [];
154
- noDataFound = false;
155
- isLoaded: boolean = false;
156
- totalElements = 0;
157
- pagesCount = 0;
158
- pageIndex = 1;
159
- pageSize = 10;
160
- formParam: FormGroup;
161
- searchForm: FormGroup;
162
-
163
- @Input()
164
- filterRequest: FilterRequest;
165
-
166
- @Input()
167
- superDataElements: any[];
168
-
169
- @Input()
170
- override pageInfo: PageInfo = EMPTY_PAGE_INFO;
171
-
172
- @Input() //@ts-ignore
173
- enforceRefresh: boolean = false;
174
-
175
- @Input()
176
- isPending: boolean = false;
177
-
178
- @Input()
179
- isBulkItemsSupported: boolean = false;
180
-
181
- @Input()// @ts-ignore
182
- public fields: FieldInfo[] = [];
183
-
184
- @Input()// @ts-ignore
185
- public searchFormFields: FieldInfo[] = [];
186
-
187
- @Input() translationKey: string = 'addNew';
188
-
189
- @Output()
190
- formUpdated: EventEmitter<FormGroup> = new EventEmitter<FormGroup>();
191
-
192
- @Output()
193
- saveActionEmitter: EventEmitter<any> = new EventEmitter<any>();
194
- @Output()
195
- saveAttachmentEmitter: EventEmitter<any> = new EventEmitter<any>();
196
-
197
- @Input() actionRequestCallback!: (actionRequest: DoActionRequest) => DoActionRequest;
198
-
199
- @ViewChild('uploader') uploaderComponent!: AttachmentUploaderComponent;
200
-
201
- currentDirection: 'ltr' | 'rtl';
202
- selectedFileFromUploader: File | null = null;
203
- private selectedItem: any;
204
-
205
-
206
- constructor(
207
- private backendService: BackendService,
208
- private router: Router,
209
- private fb: FormBuilder,
210
- public dialog: MatDialog,
211
- private directionality: Directionality
212
- ) {
213
- super();
214
- }
215
-
216
- get dataFormArray(): FormArray {
217
- return this.formParam.get('dataFormArray') as FormArray;
218
- }
219
-
220
- extractFormat(column: TableColumn<any>) {
221
- return column?.format || 'd/M/yyyy, h:mm a';
222
- }
223
-
224
- get dataSource() {
225
- return this.dataFormArray.value;
226
- }
227
-
228
- ngOnInit(): void {
229
-
230
- this.currentDirection = this.directionality.value;
231
- this.directionality.change.subscribe((value) => {
232
- this.currentDirection = value;
233
- })
234
-
235
- if(this.superDataElements?.length>0){
236
- this.dataElements=this.superDataElements;
237
- this.buildForm();
238
- this.isLoaded = true;
239
- }else {
240
- this.loadData();
241
- }
242
- }
243
-
244
- private loadData() {
245
- this.fields.forEach(field => field.readonly = this.isPending);
246
-
247
- this.dataElements = [];
248
- this.totalElements = 0;
249
- this.pagesCount = 1;
250
- this.pageIndex = 1;
251
- this.noDataFound = true;
252
- this.isLoaded = true;
253
-
254
- this.filterRequest.pendingPage = this.isPending;
255
-
256
- if (!this.pageInfo.lazyLoadData) {
257
- this.backendService.getItemsByFilter(this.filterRequest, this.pageInfo.apiUri)
258
- .subscribe(resp => {
259
- this.dataElements = resp.body || [];
260
- this.totalElements = resp.totalSize || 0;
261
- this.pagesCount = Math.max(Math.ceil(this.totalElements / this.pageSize), 1);
262
- this.pageIndex = (this.filterRequest.pageIndex || 0) + 1;
263
- this.noDataFound = this.dataElements.length === 0;
264
- this.isLoaded = true;
265
- });
266
- }
267
-
268
- this.buildForm();
269
- }
270
-
271
- private buildForm() {
272
- this.formParam = this.fb.group({
273
- dataFormArray: this.fb.array(this.dataElements.map(item => this.fb.group(buildFormFields(this.fields, item)))),
274
- });
275
- this.formUpdated.next(this.formParam);
276
- }
277
-
278
- onPageChange(event: number) {
279
- this.pageIndex = event;
280
- this.getNext(this.pageIndex - 1);
281
- }
282
- getNext(pageIndex: number) {
283
- this.filterRequest.pageIndex = pageIndex;
284
- this.filterRequest.pageSize = this.pageSize;
285
- this.loadData();
286
- }
287
-
288
- onPageSizeChange(event: number) {
289
- this.pageSize = event;
290
- this.pageIndex = 1;
291
- this.filterRequest.pageSize = this.pageSize;
292
- this.getNext(0);
293
- }
294
-
295
-
296
- extractFieldName(element: any, property: string) {
297
- if (property.includes('.')) {
298
- return property.split('.').reduce((acc, part) => acc && acc[part], element);
299
- } else {
300
- return element[property];
301
- }
302
- }
303
-
304
- get visibleColumns() {
305
- return this.fields.filter(column => column.visible).map(column => column.property);
306
- }
307
-
308
-
309
- ngOnChanges(changes: SimpleChanges): void {
310
- if (changes["enforceRefresh"] && !changes["enforceRefresh"].isFirstChange() && changes["enforceRefresh"].currentValue === true) {
311
- // this.loadData();
312
- }
313
- }
314
-
315
- onSelectItem(row: any) {
316
- if (this.pageInfo.selfRouting) {
317
- const mode = this.isPending ? 'pending' : 'view';
318
- const url = `${this.pageInfo.listRoutePath || this.router.url}/${mode}`;
319
- this.router.navigate([`${url}`, row?.id]);
320
- }
321
- const action = SELECT_RECORD_ACTION;
322
- action.id = row?.id;
323
- // this.userAction.emit(action)
324
- this.selectedItem = row;
325
- }
326
-
327
- openNewTab(row) {
328
- if (!this.pageInfo.embededTableOnly) {
329
- const mode = this.isPending ? 'pending' : 'view';
330
- window.open(`${this.pageInfo.listRoutePath}/${mode}` + '/' + row?.id);
331
- }
332
- }
333
-
334
-
335
- getField(element, column: FieldInfo) {
336
- return element.controls[column.property];
337
- }
338
-
339
- fieldButtonEvent(column, element, actionId: number) {
340
- this.doSaveApproveAction(element, actionId);
341
- }
342
-
343
- patchLookupValue($event: LookupItem, property: string) {
344
- this.formUpdated.emit(this.selectedItem)
345
- }
346
-
347
- addNewItem() {
348
- const currentValues = this.formParam?.get('dataFormArray')?.value;
349
- if (currentValues) {
350
- this.dataElements = [...currentValues];
351
- }
352
- this.dataElements.push({});
353
- this.buildForm();
354
- }
355
-
356
-
357
- doSaveApproveAction(element, userActionId) {
358
- let actionId = getWfActionId(element.value.stateType);
359
- if (userActionId === REJECT && this.isPending) {
360
- actionId =3
361
- }
362
- let request = new DoActionRequest();
363
- request.actionId = actionId;
364
- request.subject = element.value;
365
-
366
- if (this.actionRequestCallback) {
367
- request = this.actionRequestCallback(request);
368
- if (request.subject.id === "") {
369
- request.subject.id = null;
370
- request.subject.stateType = "NEW";
371
- }
372
- }
373
-
374
- if (request.subject.id === "") {
375
- request.subject.id = null;
376
- request.subject.stateType = "NEW";
377
- }
378
-
379
-
380
- const dialogRef = this.dialog.open(ActionCommentComponent, {
381
- data: {label: userActionId === 2 ? 'save' : 'reject', isTermination: false},
382
- width: '600px',
383
- height: 'auto',
384
- direction: this.currentDirection
385
- });
386
- dialogRef.afterClosed().subscribe(result => {
387
- if (result) {
388
- request.comment = result.comment;
389
- this.backendService.doActionWithAttachments(request, [], this.pageInfo!).subscribe(resp => {
390
- if (resp.valid) {
391
- this.loadData();
392
- let message = '';
393
- if (actionId === 1 ) {
394
- message = 'saved_successfully' ;
395
- } else if (actionId ===2 ) {
396
- message = 'updated_successfully';
397
- } else if (actionId ===3 ) {
398
- message = 'successful_reject_message';
399
- } else if (actionId ===4 ) {
400
- message = 'approve_successfully';
401
- }
402
- this.backendService.topPanelMessage$.next(new SnackMessage(message, true, 'success'));
403
- }else {
404
- const x = resp.message?.length >0 ? resp.message[0].errorMessage : 'FAILED_CONTACT_ADMIN';
405
- this.backendService.topPanelMessage$.next(new SnackMessage(x, true, 'error'));
406
- }
407
- this.saveActionEmitter.emit({item:request.subject, resp});
408
- });
409
- }
410
- });
411
- }
412
- protected readonly getPositiveWfActionKey = getPositiveWfActionKey;
413
- protected readonly getNegativeWfActionKey = getNegativeWfActionKey;
414
- protected readonly SAVE = SAVE;
415
- protected readonly REJECT = REJECT;
416
-
417
-
418
- setMonthAndYear(normalizedMonthAndYear: Moment, picker: MatDatepicker<Moment>, element, column) {
419
- const date = new FormControl(moment());
420
- const ctrlValue = date.value;
421
- ctrlValue.year(normalizedMonthAndYear.year());
422
- ctrlValue.month(1);
423
- ctrlValue.dayOfYear(1);
424
- element.controls[column.property].setValue(ctrlValue);
425
- picker.close();
426
- }
427
-
428
- switchViewMode(b: boolean) {
429
- this.isPending = b;
430
- this.loadData();
431
- }
432
-
433
- addBulkItems() {
434
- const merged: any[] = [];
435
-
436
- this.dataFormArray.controls.forEach((group: AbstractControl) => {
437
- merged.push(group.value);
438
- });
439
-
440
- let request = new DoActionRequest();
441
- request.actionId = 1;
442
-
443
- request.subject = { invoices: merged };
444
-
445
- if (this.actionRequestCallback) {
446
- request = this.actionRequestCallback(request);
447
-
448
- request.subject.invoices = request.subject.invoices.map((item: any) => {
449
- if (item.id === "") {
450
- item.id = null;
451
- item.stateType = "NEW";
452
- }
453
- return item;
454
- });
455
- }
456
-
457
- request.subject.invoices = request.subject.invoices.map((item: any) => {
458
- if (item.id === "") {
459
- item.id = null;
460
- item.stateType = "NEW";
461
- }
462
- return item;
463
- });
464
-
465
-
466
-
467
- const dialogRef = this.dialog.open(ActionCommentComponent, {
468
- data: {label: 'save' , isTermination: false},
469
- width: '600px',
470
- height: 'auto',
471
- direction: this.currentDirection
472
- });
473
- dialogRef.afterClosed().subscribe(result => {
474
- if (result) {
475
- request.comment = result.comment;
476
- this.backendService.doActionWithAttachment(request, this.selectedFileFromUploader, this.pageInfo!).subscribe(resp => {
477
- if (resp.valid) {
478
- this.clearBulkItems();
479
- this.backendService.topPanelMessage$.next(new SnackMessage('saved_successfully', true, 'success'));
480
- this.loadData();
481
- }else {
482
- this.backendService.topPanelMessage$.next(new SnackMessage(this.pageInfo.labelsSection + '.' + resp.message?.[0]?.errorCode, true, 'error'));
483
- }
484
- this.saveAttachmentEmitter.emit({item:request.subject, resp});
485
- });
486
- }
487
- }); }
488
-
489
- @ViewChild('fileUpload') fileUpload: ElementRef<HTMLInputElement>;
490
-
491
- handleFileUpload($event: File) {
492
- let actionId = getWfActionId('NEW');
493
- let request = new DoActionRequest();
494
- request.actionId = actionId;
495
-
496
- this.selectedFileFromUploader = $event;
497
-
498
- }
499
-
500
- shouldDisableBulkAdd() {
501
- const hasFile = !!this.selectedFileFromUploader;
502
- return (!this.formParam?.valid || this.dataFormArray.controls.length === 0) && !hasFile;
503
- }
504
- handleEquationChange(event: { value: any[], valid: boolean }, element: FormGroup, column: any): void {
505
- element.value[column.property] = event.value;
506
- const { value, valid } = event;
507
- element.get(column.property)?.setValue(value);
508
- if (!valid) {
509
- element.get(column.property)?.setErrors({ invalidEquation: true });
510
- } else {
511
- element.get(column.property)?.setErrors(null);
512
- }
513
- }
514
-
515
- clearBulkItems() {
516
- this.dataElements = [];
517
- this.selectedFileFromUploader = null;
518
- this.uploaderComponent.clearFile();
519
- this.buildForm();
520
- this.formUpdated.emit(this.formParam);
521
- }
522
-
523
- hasDataToClear(): boolean {
524
- return (this.dataElements && this.dataElements.length > 0) || !!this.selectedFileFromUploader;
525
- }
526
- getOptionValue(item: any) {
527
- const value = typeof item === 'object' ?
528
- item.englishName : item;
529
- return value;
530
- }
531
-
532
- disabledSaveButton(element) {
533
- return !element.valid || (!this.isPending && element.value.stateType == 'PENDING');
534
- }
535
-
536
- doSearch() {
537
- if (this.searchForm.valid) {
538
- const rawValues = this.searchForm.getRawValue();
539
- this.filterRequest.pageIndex=0;
540
- this.filterRequest.filters = [];
541
- this.searchFormFields.forEach(x => {
542
- const value = rawValues[x.property];
543
- if (value !== null && value !== undefined && value !== '') {
544
- const filter = new Filter({
545
- key: 0,
546
- label: x.property,
547
- fieldName: x.searchAttribute,
548
- valueObject : x.searchAttribute.includes('.') ? value[x.searchAttribute.split('.').pop()] : value,
549
- operator: x.searchOperator,
550
- filterType: 'FILED_FILTER'
551
- });
552
- this.filterRequest.filters.push(filter);
553
- }
554
- });
555
- this.loadData();
556
- } else {
557
- this.backendService.topPanelMessage$.next(new SnackMessage('INVALID_SEARCH_FORM', true, 'error'));
558
- }
559
- }
560
-
561
- showSearch() {
562
- return this.searchFormFields?.length > 0;
563
- }
564
-
565
- clearSearch() {
566
- this.searchForm.get('sectorType').setValue({id:-100, englishName:'aaa', code:'aaa', arabicName:'aaa'});
567
- this.searchForm.reset();
568
- this.doSearch();
569
- }
570
-
571
- updateSearchForm($event: FormGroup) {
572
- this.searchForm = $event
573
- }
574
-
575
- validSearchData() {
576
- return !this.searchForm.valid || true;
577
- }
578
-
579
- }
@@ -1,39 +0,0 @@
1
- .flex-row {
2
- display: flex;
3
- flex-direction: row;
4
- }
5
-
6
- .flex-column {
7
- display: flex;
8
- flex-direction: column;
9
- }
10
-
11
- .flex-full {
12
- flex: 1 1 auto;
13
- }
14
-
15
- .flex-none {
16
- flex: 0 0 auto;
17
- }
18
-
19
- .fill {
20
- width: 100%;
21
- }
22
-
23
- .align-start-center {
24
- align-items: center;
25
- justify-content: flex-start;
26
- }
27
-
28
- .align-center-center {
29
- align-items: center;
30
- justify-content: center;
31
- }
32
-
33
- .gap-5 {
34
- gap: 5px;
35
- }
36
-
37
- .gap-10 {
38
- gap: 10px;
39
- }
@@ -1,31 +0,0 @@
1
- <div class="flex-row gap-10 fill align-start-center">
2
- <ng-container *ngFor="let item of items; let i = index">
3
- <div class="flex-row align-start-center gap-5">
4
- <ng-container [ngSwitch]="item.type">
5
- <ng-container *ngSwitchCase="'lookup'">
6
- <app-auto-complete
7
- class="flex-full"
8
- [field]="field"
9
- [form]="form"
10
- [defaultValue]="item.value"
11
- (selectedValue)="onLookupChange(i, $event)">
12
- </app-auto-complete>
13
- </ng-container>
14
-
15
- <ng-container *ngSwitchCase="'dropdown'">
16
- <mat-form-field class="flex-none" appearance="outline" style="width: 100px">
17
- <mat-select [disabled]="readOnly" [value]="item.value" (selectionChange)="onDropdownChange(i, $event.value)">
18
- <mat-option *ngFor="let opt of operators" [value]="opt.value">
19
- {{ opt.label }}
20
- </mat-option>
21
- </mat-select>
22
- </mat-form-field>
23
- </ng-container>
24
- </ng-container>
25
- </div>
26
- </ng-container>
27
-
28
- <button [disabled]="isPending" mat-icon-button color="warn" (click)="onClearAll()" *ngIf="items.length > 0" id="equation-clear-all-btn">
29
- <mat-icon>delete</mat-icon>
30
- </button>
31
- </div>
@@ -1,23 +0,0 @@
1
- import { ComponentFixture, TestBed } from '@angular/core/testing';
2
-
3
- import { EquationBuilderComponent } from './equation-builder.component';
4
-
5
- describe('EquationBuilderComponent', () => {
6
- let component: EquationBuilderComponent;
7
- let fixture: ComponentFixture<EquationBuilderComponent>;
8
-
9
- beforeEach(async () => {
10
- await TestBed.configureTestingModule({
11
- imports: [EquationBuilderComponent]
12
- })
13
- .compileComponents();
14
-
15
- fixture = TestBed.createComponent(EquationBuilderComponent);
16
- component = fixture.componentInstance;
17
- fixture.detectChanges();
18
- });
19
-
20
- it('should create', () => {
21
- expect(component).toBeTruthy();
22
- });
23
- });