@mediusinc/mng-commons 5.0.0-rc.0 → 5.0.0-rc.1

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 (245) hide show
  1. package/core/data-list/data-list-params-helpers.d.ts +82 -0
  2. package/core/descriptors/action.descriptor.d.ts +3 -3
  3. package/core/descriptors/column.descriptor.d.ts +1 -1
  4. package/core/descriptors/editor.descriptor.d.ts +6 -6
  5. package/core/descriptors/enum.descriptor.d.ts +6 -0
  6. package/core/descriptors/filter.descriptor.d.ts +1 -1
  7. package/core/descriptors/model.descriptor.d.ts +1 -1
  8. package/core/descriptors/table.descriptor.d.ts +6 -6
  9. package/core/descriptors/tableview.descriptor.d.ts +10 -10
  10. package/core/enum/enum-helpers.d.ts +49 -0
  11. package/core/error/error-helpers.d.ts +114 -0
  12. package/core/helpers/date.d.ts +14 -0
  13. package/core/helpers/object.d.ts +27 -0
  14. package/core/helpers/route.d.ts +35 -0
  15. package/core/helpers/string.d.ts +7 -0
  16. package/core/helpers/templates.d.ts +3 -0
  17. package/core/i18n/i18n-common.d.ts +6 -0
  18. package/core/i18n/i18n-error.d.ts +4 -0
  19. package/core/i18n/i18n-type.d.ts +20 -0
  20. package/core/index.d.ts +15 -9
  21. package/{model → core}/pipes/enum.pipe.d.ts +2 -2
  22. package/core/pipes/enumerate.pipe.d.ts +3 -3
  23. package/{model → core}/pipes/i18n-property.pipe.d.ts +2 -2
  24. package/core/pipes/template.pipe.d.ts +0 -2
  25. package/core/router/route-builder.d.ts +2 -4
  26. package/core/router/routes-builder.d.ts +5 -6
  27. package/core/security/permission-helpers.d.ts +3 -0
  28. package/core/security/permissions.model.d.ts +2 -2
  29. package/esm2022/core/components/notification/notification-wrapper.component.mjs +4 -4
  30. package/esm2022/core/components/pages/error/error.page.component.mjs +3 -3
  31. package/esm2022/core/components/pages/not-found/not-found.page.component.mjs +3 -3
  32. package/esm2022/core/data-list/data-list-params-helpers.mjs +415 -0
  33. package/esm2022/core/data-list/filter-match.model.mjs +1 -1
  34. package/esm2022/core/data-providers/base.data-provider.mjs +1 -1
  35. package/esm2022/core/descriptors/action.descriptor.mjs +1 -1
  36. package/esm2022/core/descriptors/column.descriptor.mjs +1 -1
  37. package/esm2022/core/descriptors/editor.descriptor.mjs +1 -1
  38. package/esm2022/core/descriptors/enum.descriptor.mjs +2 -0
  39. package/esm2022/core/descriptors/filter.descriptor.mjs +1 -1
  40. package/esm2022/core/descriptors/model.descriptor.mjs +1 -1
  41. package/esm2022/core/descriptors/table.descriptor.mjs +1 -1
  42. package/esm2022/core/descriptors/tableview.descriptor.mjs +1 -1
  43. package/esm2022/core/directives/component.directive.mjs +4 -4
  44. package/esm2022/core/directives/dialog-keydown-handler.directive.mjs +4 -4
  45. package/esm2022/core/directives/template.directive.mjs +3 -3
  46. package/esm2022/core/enum/enum-helpers.mjs +81 -0
  47. package/esm2022/core/error/error-handler.mjs +3 -3
  48. package/esm2022/core/error/error-helpers.mjs +247 -0
  49. package/esm2022/core/helpers/coercion.mjs +1 -1
  50. package/esm2022/core/helpers/date.mjs +119 -0
  51. package/esm2022/core/helpers/object.mjs +145 -0
  52. package/esm2022/core/helpers/route.mjs +58 -0
  53. package/esm2022/core/helpers/string.mjs +57 -0
  54. package/esm2022/core/helpers/templates.mjs +4 -0
  55. package/esm2022/core/i18n/i18n-common.mjs +24 -0
  56. package/esm2022/core/i18n/i18n-error.mjs +27 -0
  57. package/esm2022/core/i18n/i18n-type.mjs +79 -0
  58. package/esm2022/core/index.mjs +17 -11
  59. package/esm2022/core/log/log-publisher-console.service.mjs +3 -3
  60. package/esm2022/core/log/logger.service.mjs +3 -3
  61. package/esm2022/core/pipes/boolean.pipe.mjs +4 -4
  62. package/esm2022/core/pipes/class-map.pipe.mjs +4 -4
  63. package/esm2022/core/pipes/enum.pipe.mjs +27 -0
  64. package/esm2022/core/pipes/enumerate-async.pipe.mjs +8 -8
  65. package/esm2022/core/pipes/enumerate.pipe.mjs +10 -10
  66. package/esm2022/core/pipes/getter.pipe.mjs +4 -4
  67. package/esm2022/core/pipes/i18n-property.pipe.mjs +19 -0
  68. package/esm2022/core/pipes/json-path.pipe.mjs +6 -6
  69. package/esm2022/core/pipes/parametrize.pipe.mjs +6 -6
  70. package/esm2022/core/pipes/template.pipe.mjs +7 -8
  71. package/esm2022/core/provide.mjs +1 -21
  72. package/esm2022/core/reflect/type-enum-metadata.mjs +1 -1
  73. package/esm2022/core/registry/type-registry.mjs +1 -1
  74. package/esm2022/core/router/route-builder.mjs +8 -24
  75. package/esm2022/core/router/routes-builder.mjs +17 -16
  76. package/esm2022/core/security/permission-helpers.mjs +14 -0
  77. package/esm2022/core/security/permission.guard.mjs +1 -1
  78. package/esm2022/core/security/permission.service.mjs +6 -6
  79. package/esm2022/core/security/permissions.model.mjs +1 -1
  80. package/esm2022/core/services/commons-configuration.service.mjs +6 -6
  81. package/esm2022/core/services/commons-init.service.mjs +4 -4
  82. package/esm2022/core/services/commons-router.service.mjs +4 -4
  83. package/esm2022/core/services/commons.service.mjs +4 -4
  84. package/esm2022/core/services/local-storage-config.service.mjs +4 -4
  85. package/esm2022/filter/descriptors/filter-lookup.descriptor.mjs +9 -10
  86. package/esm2022/filter/descriptors/filter.descriptor.mjs +1 -1
  87. package/esm2022/form/api/data-providers/lookup.data-provider.mjs +1 -1
  88. package/esm2022/form/api/descriptors/button-style.builder.mjs +1 -1
  89. package/esm2022/form/components/autocomplete/autocomplete.component.mjs +7 -7
  90. package/esm2022/form/components/date-range/date-range.component.mjs +4 -4
  91. package/esm2022/form/components/dropdown/dropdown.component.mjs +7 -7
  92. package/esm2022/form/directives/input-trim.directive.mjs +4 -4
  93. package/esm2022/model/descriptors/enum.descriptor.mjs +1 -1
  94. package/esm2022/model/descriptors/model.descriptor.mjs +4 -4
  95. package/esm2022/model/helpers/i18n.mjs +45 -0
  96. package/esm2022/model/helpers/model.mjs +71 -0
  97. package/esm2022/model/index.mjs +4 -7
  98. package/esm2022/table/api/data-providers/table.data-provider.mjs +1 -1
  99. package/esm2022/table/api/descriptors/column.descriptor.mjs +1 -1
  100. package/esm2022/table/api/descriptors/table.descriptor.mjs +36 -8
  101. package/esm2022/table/api/helpers/class-attribute-converter.mjs +1 -1
  102. package/esm2022/table/components/column-filter-full/column-filter-full.component.mjs +9 -9
  103. package/esm2022/table/components/column-value/column-value.component.mjs +12 -14
  104. package/esm2022/table/components/table/table.component.mjs +20 -37
  105. package/esm2022/table/helpers/notification.mjs +4 -4
  106. package/esm2022/table/pipes/locale-default-row-class.pipe.mjs +4 -4
  107. package/esm2022/table/pipes/table-column-filter-class.pipe.mjs +4 -4
  108. package/esm2022/table/services/data-list.service.mjs +3 -3
  109. package/esm2022/tableview/action/components/action/action.component.mjs +9 -9
  110. package/esm2022/tableview/action/components/editor/action-editor.component.mjs +4 -4
  111. package/esm2022/tableview/action/components/editor/injector-context/action-editor-injector-context.component.mjs +6 -6
  112. package/esm2022/tableview/action/components/localization/data-language-dropdown.component.mjs +3 -3
  113. package/esm2022/tableview/action/components/route/action-route.component.mjs +4 -4
  114. package/esm2022/tableview/action/components/table/action-table.component.mjs +12 -24
  115. package/esm2022/tableview/action/helpers/i18n.mjs +82 -0
  116. package/esm2022/tableview/action/helpers/notification.mjs +8 -8
  117. package/esm2022/tableview/action/helpers/styles.mjs +1 -1
  118. package/esm2022/tableview/action/models/execution/action-context.model.mjs +1 -1
  119. package/esm2022/tableview/action/models/execution/action-instance.model.mjs +1 -1
  120. package/esm2022/tableview/action/services/action-error-mapper.service.mjs +1 -1
  121. package/esm2022/tableview/action/services/action-executor.service.mjs +9 -8
  122. package/esm2022/tableview/action/services/component-action-executor.service.mjs +3 -3
  123. package/esm2022/tableview/action/services/data-provider-executor.service.mjs +3 -3
  124. package/esm2022/tableview/action/services/navigation.service.mjs +4 -4
  125. package/esm2022/tableview/action/services/providers/provide-view-container.mjs +1 -1
  126. package/esm2022/tableview/action/services/root-action-executor.service.mjs +3 -3
  127. package/esm2022/tableview/action/services/view-container.service.mjs +3 -3
  128. package/esm2022/tableview/api/action/descriptors/action-confirmation.descriptor.mjs +1 -1
  129. package/esm2022/tableview/api/action/descriptors/action-editor.descriptor.mjs +1 -1
  130. package/esm2022/tableview/api/action/descriptors/action.descriptor.mjs +1 -1
  131. package/esm2022/tableview/api/action/helpers/data-provider-executors.mjs +1 -1
  132. package/esm2022/tableview/api/editor/data-providers/editor.data-provider.mjs +1 -1
  133. package/esm2022/tableview/api/editor/descriptors/editor.descriptor.mjs +4 -4
  134. package/esm2022/tableview/api/editor/descriptors/field-action.descriptor.mjs +1 -1
  135. package/esm2022/tableview/api/editor/descriptors/field-base.descriptor.mjs +3 -3
  136. package/esm2022/tableview/api/editor/descriptors/field-group.descriptor.mjs +1 -1
  137. package/esm2022/tableview/api/editor/descriptors/field-lookup.descriptor.mjs +8 -8
  138. package/esm2022/tableview/api/editor/descriptors/field-many.descriptor.mjs +1 -1
  139. package/esm2022/tableview/api/editor/descriptors/field.descriptor.mjs +4 -4
  140. package/esm2022/tableview/api/editor/helpers/class-attribute-converter.mjs +1 -1
  141. package/esm2022/tableview/api/editor/helpers/field-validators.mjs +1 -1
  142. package/esm2022/tableview/api/editor/models/editor-fields.model.mjs +1 -1
  143. package/esm2022/tableview/api/editor/models/formly-custom-field.model.mjs +3 -3
  144. package/esm2022/tableview/api/tableview/data-providers/tableview.data-provider.mjs +1 -1
  145. package/esm2022/tableview/api/tableview/descriptors/tableview.descriptor.mjs +4 -4
  146. package/esm2022/tableview/api/tableview/helpers/class-attribute-converter.mjs +1 -1
  147. package/esm2022/tableview/api/tableview/helpers/files-export.mjs +1 -1
  148. package/esm2022/tableview/api/tableview/helpers/tableview-default-actions.mjs +4 -4
  149. package/esm2022/tableview/api/tableview/helpers/tableview-input-builder.mjs +1 -1
  150. package/esm2022/tableview/editor/components/editor/form-editor.component.mjs +9 -9
  151. package/esm2022/tableview/editor/components/formly/fields/formly-field-action/formly-field-action.component.mjs +4 -4
  152. package/esm2022/tableview/editor/components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +4 -4
  153. package/esm2022/tableview/editor/components/formly/fields/formly-field-custom/formly-field-custom.component.mjs +3 -3
  154. package/esm2022/tableview/editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +4 -4
  155. package/esm2022/tableview/editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +3 -3
  156. package/esm2022/tableview/editor/components/formly/fields/formly-field-input/formly-field-input.component.mjs +4 -4
  157. package/esm2022/tableview/editor/components/formly/fields/formly-field-label/formly-field-label.component.mjs +3 -3
  158. package/esm2022/tableview/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +7 -7
  159. package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +4 -4
  160. package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +9 -9
  161. package/esm2022/tableview/editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +3 -3
  162. package/esm2022/tableview/editor/components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.mjs +4 -4
  163. package/esm2022/tableview/editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +4 -4
  164. package/esm2022/tableview/editor/helpers/editor-formly.mjs +335 -0
  165. package/esm2022/tableview/editor/helpers/formly-config.mjs +1 -1
  166. package/esm2022/tableview/editor/services/formly-config.provider.mjs +1 -1
  167. package/esm2022/tableview/index.mjs +3 -5
  168. package/esm2022/tableview/provide.mjs +2 -1
  169. package/esm2022/tableview/tableview/components/route/tableview-route.component.mjs +3 -3
  170. package/esm2022/tableview/tableview/components/tableview/tableview.component.mjs +10 -19
  171. package/esm2022/tableview/tableview/router/tableview-route-builder.mjs +1 -1
  172. package/fesm2022/mediusinc-mng-commons-core.mjs +1367 -1389
  173. package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -1
  174. package/fesm2022/mediusinc-mng-commons-filter.mjs +8 -9
  175. package/fesm2022/mediusinc-mng-commons-filter.mjs.map +1 -1
  176. package/fesm2022/mediusinc-mng-commons-form-api.mjs.map +1 -1
  177. package/fesm2022/mediusinc-mng-commons-form.mjs +17 -17
  178. package/fesm2022/mediusinc-mng-commons-form.mjs.map +1 -1
  179. package/fesm2022/mediusinc-mng-commons-model.mjs +99 -148
  180. package/fesm2022/mediusinc-mng-commons-model.mjs.map +1 -1
  181. package/fesm2022/mediusinc-mng-commons-table-api.mjs +35 -7
  182. package/fesm2022/mediusinc-mng-commons-table-api.mjs.map +1 -1
  183. package/fesm2022/mediusinc-mng-commons-table.mjs +48 -65
  184. package/fesm2022/mediusinc-mng-commons-table.mjs.map +1 -1
  185. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +19 -19
  186. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
  187. package/fesm2022/mediusinc-mng-commons-tableview.mjs +507 -572
  188. package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
  189. package/filter/descriptors/filter.descriptor.d.ts +2 -2
  190. package/model/descriptors/model.descriptor.d.ts +2 -2
  191. package/model/helpers/i18n.d.ts +10 -0
  192. package/model/helpers/model.d.ts +5 -0
  193. package/model/index.d.ts +2 -4
  194. package/package.json +7 -7
  195. package/table/api/descriptors/table.descriptor.d.ts +10 -0
  196. package/table/components/column-value/column-value.component.d.ts +3 -4
  197. package/table/components/table/table.component.d.ts +13 -13
  198. package/tableview/action/components/table/action-table.component.d.ts +6 -6
  199. package/tableview/action/helpers/i18n.d.ts +22 -0
  200. package/tableview/action/models/execution/action-instance-state.model.d.ts +21 -21
  201. package/tableview/action/services/action-executor.service.d.ts +1 -1
  202. package/tableview/api/action/descriptors/action-editor.descriptor.d.ts +1 -1
  203. package/tableview/api/action/descriptors/action.descriptor.d.ts +3 -3
  204. package/tableview/api/action/models/action.type.d.ts +2 -2
  205. package/tableview/api/action/models/execution/action-instance-state.model.d.ts +21 -21
  206. package/tableview/api/editor/descriptors/editor.descriptor.d.ts +2 -2
  207. package/tableview/api/editor/descriptors/field-action.descriptor.d.ts +2 -2
  208. package/tableview/api/editor/descriptors/field-base.descriptor.d.ts +5 -5
  209. package/tableview/api/editor/descriptors/field-group.descriptor.d.ts +4 -4
  210. package/tableview/api/editor/descriptors/field-lookup.descriptor.d.ts +4 -4
  211. package/tableview/api/editor/descriptors/field-many.descriptor.d.ts +4 -4
  212. package/tableview/api/editor/descriptors/field.descriptor.d.ts +2 -2
  213. package/tableview/api/editor/models/editor-fields.model.d.ts +3 -3
  214. package/tableview/api/tableview/descriptors/tableview.descriptor.d.ts +2 -2
  215. package/tableview/editor/helpers/editor-formly.d.ts +10 -0
  216. package/tableview/index.d.ts +2 -2
  217. package/tableview/tableview/components/tableview/tableview.component.d.ts +5 -5
  218. package/core/data-list/data-list-params.util.d.ts +0 -84
  219. package/core/enum/enum.util.d.ts +0 -51
  220. package/core/error/error.util.d.ts +0 -116
  221. package/core/security/permission.util.d.ts +0 -5
  222. package/core/utils/date.util.d.ts +0 -20
  223. package/core/utils/i18n.util.d.ts +0 -36
  224. package/core/utils/object.util.d.ts +0 -31
  225. package/core/utils/route.util.d.ts +0 -37
  226. package/core/utils/string.util.d.ts +0 -9
  227. package/esm2022/core/data-list/data-list-params.util.mjs +0 -417
  228. package/esm2022/core/enum/enum.util.mjs +0 -83
  229. package/esm2022/core/error/error.util.mjs +0 -249
  230. package/esm2022/core/security/permission.util.mjs +0 -16
  231. package/esm2022/core/utils/date.util.mjs +0 -136
  232. package/esm2022/core/utils/i18n.util.mjs +0 -137
  233. package/esm2022/core/utils/object.util.mjs +0 -147
  234. package/esm2022/core/utils/route.util.mjs +0 -60
  235. package/esm2022/core/utils/string.util.mjs +0 -59
  236. package/esm2022/model/pipes/enum.pipe.mjs +0 -26
  237. package/esm2022/model/pipes/i18n-property.pipe.mjs +0 -19
  238. package/esm2022/model/utils/i18n.util.mjs +0 -51
  239. package/esm2022/model/utils/model.util.mjs +0 -73
  240. package/esm2022/tableview/action/utils/i18n.util.mjs +0 -126
  241. package/esm2022/tableview/editor/utils/editor-formly.util.mjs +0 -337
  242. package/model/utils/i18n.util.d.ts +0 -15
  243. package/model/utils/model.util.d.ts +0 -8
  244. package/tableview/action/utils/i18n.util.d.ts +0 -48
  245. package/tableview/editor/utils/editor-formly.util.d.ts +0 -12
@@ -1 +1 @@
1
- {"version":3,"file":"mediusinc-mng-commons-tableview.mjs","sources":["../../tableview/src/action/models/execution/action-instance-state.model.ts","../../tableview/src/tableview/services/tableview-feature-config.token.ts","../../tableview/src/action/utils/i18n.util.ts","../../tableview/src/action/helpers/notification.ts","../../tableview/src/action/models/execution/action-context.model.ts","../../tableview/src/action/models/execution/action-instance.model.ts","../../tableview/src/action/services/action-error-mapper.service.ts","../../tableview/src/action/services/navigation.service.ts","../../tableview/src/action/services/tokens/action-editor.token.ts","../../tableview/src/action/services/view-container.service.ts","../../tableview/src/action/services/action-executor.service.ts","../../tableview/src/action/services/root-action-executor.service.ts","../../tableview/src/action/services/component-action-executor.service.ts","../../tableview/src/action/services/providers/provide-action-executor.ts","../../tableview/src/action/components/action/action.component.ts","../../tableview/src/action/components/action/action.component.html","../../tableview/src/editor/helpers/notification.ts","../../tableview/src/editor/utils/editor-formly.util.ts","../../tableview/src/editor/components/editor/form-editor.component.ts","../../tableview/src/editor/components/editor/form-editor.component.html","../../tableview/src/action/components/editor/injector-context/action-editor-injector-context.component.ts","../../tableview/src/action/components/editor/injector-context/action-editor-injector-context.component.html","../../tableview/src/action/components/editor/action-editor.component.ts","../../tableview/src/action/components/editor/action-editor.component.html","../../tableview/src/action/components/localization/data-language-dropdown.component.ts","../../tableview/src/action/components/localization/data-language-dropdown.component.html","../../tableview/src/action/components/route/action-route.component.ts","../../tableview/src/action/components/route/action-route.component.html","../../tableview/src/action/helpers/styles.ts","../../tableview/src/action/components/table/action-table.component.ts","../../tableview/src/action/components/table/action-table.component.html","../../tableview/src/action/guards/unsaved-changes.guard.ts","../../tableview/src/action/services/providers/provide-view-container.ts","../../tableview/src/action/services/data-provider-executor.service.ts","../../tableview/src/editor/components/formly/fields/formly-field-action/formly-field-action.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-action/formly-field-action.component.html","../../tableview/src/editor/components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.html","../../tableview/src/editor/components/formly/fields/formly-field-custom/formly-field-custom.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component.html","../../tableview/src/editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component.html","../../tableview/src/editor/components/formly/fields/formly-field-input/formly-field-input.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-input/formly-field-input.component.html","../../tableview/src/editor/components/formly/fields/formly-field-label/formly-field-label.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-label/formly-field-label.component.html","../../tableview/src/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.html","../../tableview/src/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.html","../../tableview/src/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.html","../../tableview/src/editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component.html","../../tableview/src/editor/components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.ts","../../tableview/src/editor/components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.html","../../tableview/src/editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.ts","../../tableview/src/editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.html","../../tableview/src/editor/helpers/formly-config.ts","../../tableview/src/editor/services/formly-config.provider.ts","../../tableview/src/tableview/components/tableview/tableview.component.ts","../../tableview/src/tableview/components/tableview/tableview.component.html","../../tableview/src/tableview/components/route/tableview-route.component.ts","../../tableview/src/tableview/components/route/tableview-route.component.html","../../tableview/src/tableview/router/tableview-route-builder.ts","../../tableview/src/provide.ts","../../tableview/src/index.ts","../../tableview/src/mediusinc-mng-commons-tableview.ts"],"sourcesContent":["/**\n * States of action. Enums ending with `*Final` are supposed to be final.\n */\nexport enum ActionInstanceStateEnum {\n TriggerStart, // action was triggered (click or direct)\n TriggerEnd,\n ActivationStart, // action activation started (direct, event or editor)\n ActivationEnd, // action activation ended\n FetchStart, // fetch started\n FetchEnd, // fetch ended\n FetchError, // fetch error\n RunConfirmationStart, // confirmation for run is started\n RunConfirmationEndAccept, // confirmation accepted\n RunConfirmationEndReject, // confirmation rejected\n RunStart, // action was run by calling main function\n RunEnd, // action run function executed\n RunError, // action run function executed with error\n NextActionStart, // next action started\n NextActionEnd, // next action finished\n ErrorActionStart, // error action started\n ErrorActionEnd, // error action finished\n FinishSuccessFinal, // action executed successfully\n FinishErrorFinal, // action executed with error\n FinishDismissedFinal, // action was dismissed by user\n FinishSuccessReactivateFinal, // action executed successfully, another instance will directly start from previous\n FinishComponentDestroyFinal, // action was dismissed by destroying component that was executing it\n FinishRouteUntriggerStart,\n FinishRouteUntriggerEndFinal,\n FinishRouteUntriggerTimeoutFinal\n}\n","import {InjectionToken} from '@angular/core';\n\nimport {ValidatorOption, WrapperOption} from '@ngx-formly/core/lib/models';\nimport {TranslateService} from '@ngx-translate/core';\n\nimport {CommonsFormlyTypeConfig} from '../../editor/models/formly-config.model';\n\nexport interface TableviewFeatureConfig {\n formly?: {\n skip?: boolean;\n merge?: boolean;\n types?: CommonsFormlyTypeConfig[];\n wrappers?: WrapperOption[];\n validators?: ValidatorOption[];\n getValidationMessages?: (translate: TranslateService) => any[];\n };\n actions?: {\n debugInstances?: boolean;\n };\n}\n\nexport const COMMONS_TABLEVIEW_FEATURE_CONFIG_IT = new InjectionToken<TableviewFeatureConfig>('COMMONS_TABLEVIEW_FEATURE_CONFIG');\n","import {TranslateService} from '@ngx-translate/core';\nimport {Observable} from 'rxjs';\nimport {map, mergeMap} from 'rxjs/operators';\n\nimport {ErrorUtil, I18nMissingTranslationStrategy, I18nUtils as I18nUtilsCommon, ICommonsError} from '@mediusinc/mng-commons/core';\nimport {I18nUtils as I18nUtilsModel} from '@mediusinc/mng-commons/model';\nimport {ActionDescriptorInst, ActionEditorDescriptorInst} from '@mediusinc/mng-commons/tableview/api';\n\nexport namespace I18nUtils {\n export class Action {\n /**\n * Returns translation for action with given keys and params\n * @param translate TranslateService\n * @param action action descriptor\n * @param actionPathKeys action path keys\n * @param customKey custom key\n * @param item\n * @param fallbackKey fallback key\n * @param params additional params for translation\n * @param missingTranslationStrategy strategy when no translation is found\n */\n public static get(\n translate: TranslateService,\n action: ActionDescriptorInst<any>,\n actionPathKeys: string | Array<string>,\n customKey?: string,\n item?: any,\n fallbackKey?: string,\n params?: any,\n missingTranslationStrategy: I18nMissingTranslationStrategy = 'returnFirstKey'\n ): string | null {\n const keys = I18nUtils.Action.getKeysByPriority(action, actionPathKeys, customKey, fallbackKey);\n const i18nParams = I18nUtils.Action.getParams(translate, action, item, params);\n const i18nValue = I18nUtilsCommon.Common.get(translate, i18nParams, ...keys);\n return this.getTranslationDependingOnStrategy(missingTranslationStrategy, {i18nValue, firstKey: keys[0], fallbackKey});\n }\n\n /**\n * Returns async translation for given keys with given params.\n * @param translate TranslateService\n * @param action action descriptor\n * @param actionPathKeys action path keys\n * @param customKey custom key\n * @param item item\n * @param fallbackKey fallback key, used as fallback key\n * @param params additional params for translation\n * @param missingTranslationStrategy strategy when no translation is found\n */\n public static getAsync(\n translate: TranslateService,\n action: ActionDescriptorInst<any>,\n actionPathKeys: string | Array<string>,\n customKey?: string,\n item?: any,\n fallbackKey?: string,\n params?: any,\n missingTranslationStrategy: I18nMissingTranslationStrategy = 'returnFirstKey'\n ): Observable<string | null> {\n return I18nUtils.Action.getParamsAsync(translate, action, item, params).pipe(\n mergeMap(i18nParams => {\n const keys = I18nUtils.Action.getKeysByPriority(action, actionPathKeys, customKey, fallbackKey);\n return I18nUtilsCommon.Common.getAsync(translate, i18nParams, ...keys).pipe(\n map(i18nValue => this.getTranslationDependingOnStrategy(missingTranslationStrategy, {i18nValue, firstKey: keys[0], fallbackKey}))\n );\n })\n );\n }\n\n /**\n * Returns translation depending on missingTranslationStrategy\n * @param missingTranslationStrategy strategy when no translation is found\n * @param values object with values, i18nValue is translation, firstKey is first key in array of keys, fallbackKey is fallback key\n */\n private static getTranslationDependingOnStrategy(\n missingTranslationStrategy: I18nMissingTranslationStrategy,\n {i18nValue, firstKey, fallbackKey}: {i18nValue: string | null; firstKey?: string; fallbackKey?: string}\n ): string | null {\n if (i18nValue !== null) {\n return i18nValue;\n } else {\n switch (missingTranslationStrategy) {\n case 'returnNull':\n return null;\n case 'returnFallbackKey':\n return fallbackKey ?? null;\n case 'returnFirstKey':\n return firstKey ?? null;\n }\n }\n }\n\n public static getTitleAsync(translate: TranslateService, action: ActionDescriptorInst<any>, item?: any): Observable<string | null> {\n return I18nUtils.Action.getAsync(translate, action, 'title', undefined, item);\n }\n\n public static getEditorTitleAsync(translate: TranslateService, action: ActionEditorDescriptorInst<any>, item?: any): Observable<string | null> {\n return I18nUtils.Action.getAsync(translate, action, ['editor.title', 'title'], action.editorTitle ?? undefined, item, undefined, action.editorTitleParams ?? undefined);\n }\n\n public static getParams(translate: TranslateService, action: ActionDescriptorInst<any>, item?: any, params: any = {}): any {\n const i18nParams = I18nUtilsModel.Model.getParams(translate, action.model ?? undefined, item, params);\n return I18nUtils.Action.populateParams(i18nParams);\n }\n\n public static getParamsAsync(translate: TranslateService, action: ActionDescriptorInst<any>, item?: any, params: any = {}): Observable<any> {\n return I18nUtilsModel.Model.getParamsAsync(translate, action.model ?? undefined, item, params).pipe(map(i18nParams => I18nUtils.Action.populateParams(i18nParams)));\n }\n\n public static populateParams(params: any = {}): any {\n params = {...params};\n return params;\n }\n\n private static getKeysByPriority(action: ActionDescriptorInst<any>, actionPathKeys: string | Array<string>, customKey?: string, fallbackKey?: string) {\n const keys = [];\n if (customKey) {\n keys.push(customKey);\n }\n if (!Array.isArray(actionPathKeys)) {\n actionPathKeys = [actionPathKeys];\n }\n actionPathKeys.forEach(k => {\n const modelActionKey = `${action.i18nModelActionBaseKey}.${k}`;\n const actionKey = `${action.actionName}.${k}`;\n keys.push(modelActionKey, actionKey);\n });\n if (fallbackKey) {\n keys.push(fallbackKey);\n }\n return keys;\n }\n }\n\n export class Error {\n public static get(translate: TranslateService, error: ICommonsError, params: any = {}): string | null {\n const i18nParams = I18nUtils.Error.getParams(error, params);\n if (error.messageCode) {\n const keys = [`errors.${error.messageCode}`, `messages.${error.messageCode}`];\n const i18n = I18nUtilsCommon.Common.get(translate, i18nParams, ...keys);\n if (i18n) {\n return i18n;\n }\n }\n return I18nUtilsCommon.Common.get(translate, i18nParams, error.message);\n }\n\n public static getParams(error: ICommonsError, params: any = {}) {\n const paramsRes = {...params};\n paramsRes.errorStatus = '';\n paramsRes.errorMessage = '';\n\n if (ErrorUtil.isHttpErrorResponse(error)) {\n const httpError = ErrorUtil.getHttpErrorResponse(error);\n paramsRes.errorStatus = httpError?.status;\n paramsRes.errorMessage = httpError?.message;\n paramsRes.errorStatusDescription = httpError?.statusText;\n }\n\n paramsRes.error = error;\n return paramsRes;\n }\n }\n}\n","import {TranslateService} from '@ngx-translate/core';\nimport {Message, MessageService} from 'primeng/api';\n\nimport {ICommonsError, toastMessage} from '@mediusinc/mng-commons/core';\nimport {ActionDescriptorInst} from '@mediusinc/mng-commons/tableview/api';\n\nimport {I18nUtils} from '../utils/i18n.util';\n\nexport function actionNotificationSuccess(\n translate: TranslateService,\n action: ActionDescriptorInst<any>,\n functionName: string,\n messageService: MessageService,\n customTitleKey?: string,\n customMessageKey?: string,\n item?: any\n): Message {\n const actionSuccessTitle = I18nUtils.Action.get(translate, action, 'success.title', customTitleKey, item, 'general.success', functionName) ?? undefined;\n const actionSuccessMessage = I18nUtils.Action.get(translate, action, 'success.message', customMessageKey, item, 'general.successMessage', functionName) ?? undefined;\n return toastMessage(messageService, actionSuccessTitle, actionSuccessMessage);\n}\n\nexport function actionNotificationError(\n translate: TranslateService,\n action: ActionDescriptorInst<any>,\n error: ICommonsError,\n functionName: string,\n messageService: MessageService,\n item?: any,\n severity: 'warn' | 'error' = 'error'\n): Message {\n const params = {\n errorMessage: I18nUtils.Error.get(translate, error) ?? error.message\n };\n const actionErrorTitle =\n I18nUtils.Action.get(translate, action, [`error.${functionName}.title`, 'error.title'], action.runNotificationErrorTitle, item, 'general.error', params) ?? undefined;\n const actionErrorMessage =\n I18nUtils.Action.get(translate, action, [`error.${functionName}.message`, 'error.message'], action.runNotificationErrorMessage, item, 'general.errorMessage', params) ??\n undefined;\n return toastMessage(messageService, actionErrorTitle, actionErrorMessage, severity, 'pi-exclamation-triangle');\n}\n","import {Injector} from '@angular/core';\n\nimport {Confirmation, Message} from 'primeng/api';\nimport {BehaviorSubject, ReplaySubject, Subscription, distinctUntilChanged} from 'rxjs';\n\nimport {ActionParameters, ICommonsError, IDataProvider, LoggerService} from '@mediusinc/mng-commons/core';\nimport {IActionContext, IActionInstance} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ViewContainer} from '../../services/view-container.service';\nimport {ActionInstance} from './action-instance.model';\n\n/**\n * Class containing all main data for action to be executed in run/fetch/submit states.\n */\nexport class ActionContext<Item, Service = undefined> implements IActionContext<Item, Service, ActionInstance<Item, Service>, ViewContainer<Item, Service>> {\n private readonly logger = LoggerService.get().create('ActionContext');\n public readonly contextLongName: string;\n public previousActionInstance?: IActionInstance<any, any>;\n public confirmation?: Confirmation;\n public notification?: Message;\n public runSubscription?: Subscription;\n\n constructor(\n public readonly injector: Injector,\n public readonly instance: ActionInstance<Item, Service>,\n public readonly parameters: ActionParameters<Item>,\n public readonly functionName: 'run' | 'fetch' | 'submit',\n public readonly serviceInstance: Service,\n public readonly dataProvider?: IDataProvider<Item, Service>,\n public readonly viewContainer?: ViewContainer<Item, Service>,\n private readonly executionSubject = new ReplaySubject<Item | null | undefined>(1),\n private readonly executionIsRunningSubject = new BehaviorSubject(false)\n ) {\n this.contextLongName = `${this.instance.instanceLongName}_${functionName}`;\n }\n\n public get execution$() {\n return this.executionSubject.asObservable();\n }\n\n public get executionIsRunning$() {\n return this.executionIsRunningSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n public executionStart() {\n this.logger.trace(`Context ${this.contextLongName} - execution start`);\n this.executionIsRunningSubject.next(true);\n }\n\n public executionNext(next: Item | null | undefined, finish = true) {\n this.logger.trace(`Context ${this.contextLongName} - execution next event`, next, finish);\n\n this.executionSubject.next(next);\n if (finish) {\n this.executionComplete();\n }\n }\n\n public executionComplete() {\n this.logger.trace(`Context ${this.contextLongName} - execution complete`);\n\n this.executionSubject.complete();\n this.executionIsRunningSubject.next(false);\n }\n\n public executionError(err: ICommonsError) {\n this.logger.trace(`Context ${this.contextLongName} - execution error`, err);\n this.executionSubject.error(err);\n this.executionIsRunningSubject.next(false);\n }\n\n public finish() {\n this.runSubscription?.unsubscribe();\n this.executionSubject.complete();\n this.executionIsRunningSubject.complete();\n }\n\n public isClosed() {\n return this.executionSubject.isStopped && this.executionIsRunningSubject.isStopped && (this.runSubscription?.closed ?? true);\n }\n}\n","import {DynamicDialogRef} from 'primeng/dynamicdialog';\nimport {BehaviorSubject, Observable, ReplaySubject, Subject, Subscription, distinctUntilChanged, take} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nimport {ActionParameters, LoggerService} from '@mediusinc/mng-commons/core';\nimport {\n ActionActivationTriggerEnum,\n ActionDescriptorInst,\n ActionExecutionError,\n ActionTypeEnum,\n IActionEditorComponent,\n IActionInstance\n} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ActionContext} from './action-context.model';\nimport {ActionInstanceStateEnum} from './action-instance-state.model';\n\n/**\n * Action execution instance containing data about execution state of action\n */\nexport class ActionInstance<Item, Service = undefined> implements IActionInstance<Item, Service> {\n public readonly instanceId: string;\n public readonly instanceLongName: string;\n public readonly action: ActionDescriptorInst<Item>;\n public readonly createdDate: Date = new Date();\n private readonly logger = LoggerService.get().create('ActionInstance');\n\n // function execution\n public readonly isRunLoadingSubject = new BehaviorSubject(false);\n\n // parameters, contexts, states\n public triggerParameters?: ActionParameters<Item>;\n public activationParameters?: ActionParameters<Item>;\n private readonly contexts: Array<ActionContext<Item, Service>> = [];\n private readonly executionSubject = new Subject<Item | null | undefined>();\n private readonly executionIsRunningSubject = new BehaviorSubject(false);\n private readonly stateSubject = new BehaviorSubject<ActionInstanceStateEnum>(1);\n private readonly resultSubject = new ReplaySubject<Item | null>(1);\n private readonly errorSubject = new ReplaySubject<ActionExecutionError>(1);\n\n private contextExecutionSubscriptions: Array<Subscription> = [];\n\n // result or error\n private _result?: Item | null;\n private _error?: ActionExecutionError;\n\n // additional data from trigger/activation\n public activationDialogRef?: DynamicDialogRef;\n public activationEditorComponentRef?: IActionEditorComponent;\n\n // linked actions\n private _reactivationInstanceSubject = new BehaviorSubject<IActionInstance<Item, Service> | undefined>(undefined); // editor action with resubmit enabled\n public previousInstance?: IActionInstance<Item, Service>;\n public nextActionInstance?: IActionInstance<any, any>; // as defined in action descriptor\n public errorActionInstance?: IActionInstance<Item, Service>; // error action must rely on same type, as defined in action descriptor\n\n constructor(action: ActionDescriptorInst<Item>, state = ActionInstanceStateEnum.TriggerStart) {\n this.instanceId = Math.random().toString(36).substring(2);\n this.instanceLongName = `${action.actionNameLong}_${this.instanceId}`;\n this.action = action;\n this.state = state;\n }\n\n public get isRunLoading$() {\n return this.isRunLoadingSubject.asObservable();\n }\n\n public get context() {\n return this.contexts.length === 0 ? undefined : this.contexts[this.contexts.length - 1];\n }\n\n public get execution$() {\n return this.executionSubject.asObservable();\n }\n\n public get executionIsRunning$() {\n return this.executionIsRunningSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n public get state() {\n return this.stateSubject.value;\n }\n\n public set state(state: ActionInstanceStateEnum) {\n if (state > this.stateSubject.value || (this.stateSubject.value === ActionInstanceStateEnum.RunError && state === ActionInstanceStateEnum.RunStart)) {\n this.logger.trace(`Instance ${this.instanceLongName} - state #${state}: ${ActionInstanceStateEnum[state]}`);\n this.stateSubject.next(state);\n switch (state) {\n case ActionInstanceStateEnum.FinishSuccessFinal:\n case ActionInstanceStateEnum.FinishErrorFinal:\n case ActionInstanceStateEnum.FinishDismissedFinal:\n if (this.action.activationTrigger === ActionActivationTriggerEnum.OnClick) {\n this.finish();\n }\n break;\n case ActionInstanceStateEnum.FinishSuccessReactivateFinal:\n // partially finish reactivation because new instance event must still be emitted\n if (this.action.type === ActionTypeEnum.Editor) {\n this.finish(true);\n }\n break;\n case ActionInstanceStateEnum.FinishComponentDestroyFinal:\n this.finish();\n break;\n case ActionInstanceStateEnum.FinishRouteUntriggerEndFinal:\n case ActionInstanceStateEnum.FinishRouteUntriggerTimeoutFinal:\n if (this.action.activationTrigger === ActionActivationTriggerEnum.OnRoute) {\n this.finish();\n }\n break;\n }\n }\n }\n\n public get state$() {\n return this.stateSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n public get result() {\n return this._result;\n }\n\n public set result(result: Item | null | undefined) {\n if (typeof result === 'undefined') {\n return;\n }\n\n this.logger.trace(`Instance ${this.instanceLongName} - result`, result);\n\n this._result = result;\n this.resultSubject.next(result);\n }\n\n public get result$() {\n return this.resultSubject.asObservable();\n }\n\n public get error() {\n return this._error;\n }\n\n public set error(error: ActionExecutionError | undefined) {\n if (typeof error === 'undefined') {\n return;\n }\n\n this.logger.trace(`Instance ${this.instanceLongName} - error`, error);\n\n this._error = error;\n this.errorSubject.next(error);\n }\n\n public get error$() {\n return this.errorSubject.asObservable();\n }\n\n public set reactivationInstance(instance: IActionInstance<Item, Service> | undefined) {\n // this is allowed to only be executed once for subject and must be in correct status!\n if (this.state !== ActionInstanceStateEnum.FinishSuccessReactivateFinal) {\n return;\n }\n this._reactivationInstanceSubject.next(instance);\n this._reactivationInstanceSubject.complete();\n }\n\n public get reactivationInstance() {\n return this._reactivationInstanceSubject.value;\n }\n\n public get reactivationInstance$(): Observable<IActionInstance<Item, Service>> {\n return this._reactivationInstanceSubject.asObservable().pipe(\n filter(i => !!i), // ignore undefined events (usually initial)\n map(i => i!),\n take(1)\n );\n }\n\n public contextAt(idx: number) {\n return idx < this.contexts.length ? this.contexts[idx] : undefined;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public newContext(context: ActionContext<Item, Service>, finishPrevious = true) {\n this.logger.trace(`Instance ${this.instanceLongName} - new context ${context.contextLongName}`);\n\n const currentContext = this.context;\n if (currentContext) {\n currentContext.executionComplete();\n }\n this.contextExecutionSubscriptions.forEach(s => s.unsubscribe());\n this.contextExecutionSubscriptions = [];\n this.contextExecutionSubscriptions.push(\n context.execution$.subscribe({\n next: next => this.executionSubject.next(next),\n error: error => this.executionSubject.error(error)\n })\n );\n this.contextExecutionSubscriptions.push(\n context.executionIsRunning$.subscribe({\n next: next => this.executionIsRunningSubject.next(next)\n })\n );\n this.contexts.push(context);\n }\n\n public forceFinish() {\n this.logger.warn(`Force finishing instance '${this.instanceLongName}'. Try completing instance with states instead.`);\n this.state = ActionInstanceStateEnum.FinishDismissedFinal;\n this.finish();\n }\n\n private finish(reactivate = false) {\n // complete all subjects\n this.contexts.forEach(c => c.finish());\n this.executionSubject.complete();\n this.executionIsRunningSubject.complete();\n this.stateSubject.complete();\n this.resultSubject.complete();\n this.errorSubject.complete();\n if (!reactivate) {\n // allow reactivation instance to be emitted separately\n this._reactivationInstanceSubject.complete();\n }\n }\n\n public isClosed(): boolean {\n return (\n this.executionSubject.isStopped &&\n this.executionIsRunningSubject.isStopped &&\n this.stateSubject.isStopped &&\n this.resultSubject.isStopped &&\n this.errorSubject.isStopped &&\n this._reactivationInstanceSubject.isStopped &&\n this.contextExecutionSubscriptions.every(s => s.closed) &&\n this.contexts.every(c => c.isClosed())\n );\n }\n}\n","import {ICommonsError} from '@mediusinc/mng-commons/core';\n\n/**\n * Service for transforming errors in action execution.\n * Can be used to transform errors to Commons Error interface for correct error message display.\n */\nexport abstract class ActionErrorMapperService {\n /**\n * Can be used to enrich data from error and make it more \"stable\". Most use cases cover extracting message or message code of an\n * error out of http response body/headers.\n *\n * @param error Original error (cause).\n * @param commonsError Commons error that wraps original error.\n */\n abstract toCommonsError(error?: any, commonsError?: ICommonsError): ICommonsError;\n}\n\nexport class DefaultActionErrorMapperService extends ActionErrorMapperService {\n toCommonsError(error?: any, commonsError?: ICommonsError): ICommonsError {\n if (!commonsError) {\n commonsError = {\n type: 'CommonsActionError',\n name: error?.name ?? 'UnknownError',\n message: error.message ?? 'Unknown error',\n cause: error\n };\n }\n\n return commonsError;\n }\n}\n","import {Location} from '@angular/common';\nimport {Injectable} from '@angular/core';\nimport {NavigationEnd, Router} from '@angular/router';\n\n@Injectable()\nexport class NavigationService {\n private history: Array<string> = [];\n\n constructor(\n private router: Router,\n private location: Location\n ) {\n this.router.events.subscribe(event => {\n if (event instanceof NavigationEnd) {\n this.history.push(event.urlAfterRedirects);\n }\n });\n }\n\n public getCurrentLocationFromHistory(): string | null {\n if (this.history.length > 0) {\n return this.history[this.history.length - 1];\n } else {\n return null;\n }\n }\n\n public getCurrentLocationFromUrl() {\n return this.location.path(true);\n }\n\n public getPreviousLocationFromHistory(): string | null {\n if (this.history.length > 1) {\n return this.history[this.history.length - 2];\n } else {\n return null;\n }\n }\n\n public back(): void {\n this.history.pop();\n if (this.history.length > 0) {\n this.location.back();\n } else {\n this.router.navigateByUrl('/');\n }\n }\n}\n","import {InjectionToken, Type} from '@angular/core';\n\nexport const ACTION_EDITOR_COMPONENT_IT: InjectionToken<Type<any>> = new InjectionToken<Type<any>>('ACTION_EDITOR_COMPONENT');\n","import {Injectable} from '@angular/core';\n\nimport {Observable, Subject} from 'rxjs';\n\nimport {IDataProvider} from '@mediusinc/mng-commons/core';\nimport {\n ActionDescriptorInst,\n IViewContainer,\n ViewContainerEditorCloseEvent,\n ViewContainerEditorResetEvent,\n ViewContainerTableReloadEvent\n} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ActionInstance} from '../models/execution/action-instance.model';\n\n/**\n * Should be used with providers defined within component.\n */\n@Injectable()\nexport class ViewContainer<Item, Service = undefined> implements IViewContainer<Item, Service, ActionInstance<Item, Service>> {\n private _dataProvider?: IDataProvider<Item, Service>;\n private _routeTriggeredActionInstance?: ActionInstance<Item, Service>;\n private _actions: Array<ActionDescriptorInst<Item>> = [];\n\n private _tableReloadSubject: Subject<ViewContainerTableReloadEvent> = new Subject();\n private _editorResetSubject: Subject<ViewContainerEditorResetEvent<Item>> = new Subject();\n private _editorCloseSubject: Subject<ViewContainerEditorCloseEvent<Item>> = new Subject();\n\n public set dataProvider(dataProvider: IDataProvider<Item, Service>) {\n this._dataProvider = dataProvider;\n }\n\n public get dataProvider(): IDataProvider<Item, Service> | undefined {\n return this._dataProvider;\n }\n\n public get actions(): Array<ActionDescriptorInst<Item>> {\n return this._actions;\n }\n\n public set actions(actions: Array<ActionDescriptorInst<Item>>) {\n this._actions = actions;\n }\n\n public get tableReload$(): Observable<ViewContainerTableReloadEvent> {\n return this._tableReloadSubject.asObservable();\n }\n\n public reloadTable(event?: ViewContainerTableReloadEvent): void {\n this._tableReloadSubject.next(event ?? {});\n }\n\n public get editorReset$(): Observable<ViewContainerEditorResetEvent<Item>> {\n return this._editorResetSubject.asObservable();\n }\n\n public resetEditor(event?: ViewContainerEditorResetEvent<Item> | undefined): void {\n this._editorResetSubject.next(event ?? {});\n }\n\n public get editorClose$(): Observable<ViewContainerEditorCloseEvent<Item>> {\n return this._editorCloseSubject.asObservable();\n }\n\n public closeEditor(event?: ViewContainerEditorCloseEvent<Item>): void {\n this._editorCloseSubject.next(event ?? {});\n }\n\n public get routeTriggeredActionInstance(): ActionInstance<Item, Service> | undefined {\n return this._routeTriggeredActionInstance;\n }\n\n public set routeTriggeredActionInstance(instance: ActionInstance<Item, Service> | undefined) {\n this._routeTriggeredActionInstance = instance;\n }\n}\n","import {HttpErrorResponse} from '@angular/common/http';\nimport {Injector, inject} from '@angular/core';\nimport {Router, UrlTree} from '@angular/router';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {Confirmation, ConfirmationService, MessageService} from 'primeng/api';\nimport {DialogService, DynamicDialogConfig} from 'primeng/dynamicdialog';\nimport {Observable, from, mergeMap, of, switchMap, take, timeout} from 'rxjs';\nimport {catchError, filter, first, map, startWith} from 'rxjs/operators';\n\nimport {\n ActionParameters,\n CommonsHttpError,\n CommonsInternalError,\n CommonsService,\n ICommonsError,\n IDataProvider,\n LoggerService,\n ParametrizePipe,\n StringUtil,\n StyleSizeEnum,\n toObservable\n} from '@mediusinc/mng-commons/core';\nimport {\n ActionActivationTriggerEnum,\n ActionConfirmationDescriptor,\n ActionContextValidation,\n ActionDeleteDescriptorInst,\n ActionDescriptorInst,\n ActionEditorAddDescriptorInst,\n ActionEditorDescriptorInst,\n ActionEditorEditDescriptorInst,\n ActionRunFnType,\n ActionTypeEnum,\n CommonsActionError,\n CommonsActionErrorOptions,\n DataProviderExecutor,\n IActionEditorComponent,\n IActionInstance\n} from '@mediusinc/mng-commons/tableview/api';\n\nimport {COMMONS_TABLEVIEW_FEATURE_CONFIG_IT} from '../../tableview/services/tableview-feature-config.token';\nimport {actionNotificationError, actionNotificationSuccess} from '../helpers/notification';\nimport {ActionEditorDialogData} from '../models/action-editor-dialog-data.model';\nimport {ActionContext} from '../models/execution/action-context.model';\nimport {ActionInstanceStateEnum} from '../models/execution/action-instance-state.model';\nimport {ActionInstance} from '../models/execution/action-instance.model';\nimport {I18nUtils} from '../utils/i18n.util';\nimport {ActionErrorMapperService} from './action-error-mapper.service';\nimport {NavigationService} from './navigation.service';\nimport {ACTION_EDITOR_COMPONENT_IT} from './tokens/action-editor.token';\nimport {ViewContainer} from './view-container.service';\n\nexport abstract class ActionExecutorService {\n protected readonly injector = inject(Injector);\n protected readonly router = inject(Router);\n protected readonly dialogService = inject(DialogService);\n protected readonly translate = inject(TranslateService);\n protected readonly commons = inject(CommonsService);\n protected readonly dataProviderExecutor = inject(DataProviderExecutor);\n protected readonly navigationService = inject(NavigationService);\n protected readonly errorMapper = inject(ActionErrorMapperService);\n protected readonly parametrize = inject(ParametrizePipe);\n protected readonly config = inject(COMMONS_TABLEVIEW_FEATURE_CONFIG_IT, {optional: true});\n protected readonly defaultEditorDialogComponent = inject(ACTION_EDITOR_COMPONENT_IT);\n protected readonly messageService = inject(MessageService);\n protected readonly confirmationService = inject(ConfirmationService);\n protected readonly viewContainer = inject(ViewContainer, {optional: true});\n\n protected readonly instancesBufferMax = 100;\n protected logger = inject(LoggerService).create('ActionExecutorService');\n\n public abstract get instances(): ActionInstance<any, any>[];\n\n /**\n * Prepares action context for usage in validation.\n * @param action Action descriptor.\n * @param parameters Action parameters.\n * @param dataProvider Data provider.\n */\n public prepareActionContextValidation<Item, Service>(\n action: ActionDescriptorInst<Item>,\n parameters: ActionParameters<Item>,\n dataProvider?: IDataProvider<Item, Service>\n ): ActionContextValidation<Item, Service> {\n const ctxDataProvider = dataProvider ?? action.dataProvider ?? this.viewContainer?.dataProvider;\n return <ActionContextValidation<Item, Service>>{\n descriptor: action,\n parameters: parameters,\n serviceInstance: this.dataProviderExecutor.getDataProviderService(this.injector, ctxDataProvider) ?? undefined,\n dataProvider: ctxDataProvider\n };\n }\n\n /**\n * Runs action context by submitting execution results/errors to context, watching over instance results/errors, displaying notifications,\n * running next/error action and triggering dismiss of action. Confirmation is also processed here.\n *\n * @param ctx Action context to run.\n */\n public run<Item, Service = undefined>(ctx: ActionContext<Item, Service>) {\n const isMainRunFn = ctx.functionName === 'submit' || ctx.functionName === 'run';\n\n // if (ctx.instance.action.type === ActionTypeEnum.Direct && ctx.instance.action.hasRunConfirmation) {\n if (isMainRunFn && ctx.instance.action.hasRunConfirmation) {\n // only direct action can be configured with run confirmation\n // if editor, then run confirmation is mapped to submit action and ignored as editor run\n const confirmationDescriptor = ctx.instance.action.runConfirmationDialogDescriptor as ActionConfirmationDescriptor<Item>;\n\n const item = ctx.parameters.item;\n let confirmParams: Confirmation = {\n icon: confirmationDescriptor.icon,\n acceptVisible: true,\n acceptIcon: confirmationDescriptor.acceptButton.icon ?? undefined,\n acceptButtonStyleClass: confirmationDescriptor.acceptButton.styleClass.build(),\n rejectVisible: true,\n rejectIcon: confirmationDescriptor.rejectButton?.icon ?? undefined,\n rejectButtonStyleClass: confirmationDescriptor.rejectButton?.styleClass.build(),\n closeOnEscape: confirmationDescriptor.closeOnEscape\n };\n\n if (confirmationDescriptor.title !== null) {\n confirmParams.header =\n I18nUtils.Action.get(this.translate, ctx.instance.action, 'confirm.title', confirmationDescriptor.title, item, 'general.confirmation') ?? undefined;\n }\n\n if (confirmationDescriptor.message !== null) {\n confirmParams.message =\n I18nUtils.Action.get(\n this.translate,\n ctx.instance.action,\n 'confirm.message',\n confirmationDescriptor.message,\n StringUtil.escapeHtmlAny(item),\n 'general.confirmation'\n ) ?? undefined;\n }\n\n if (confirmationDescriptor.acceptButton.label !== null) {\n confirmParams.acceptLabel =\n I18nUtils.Action.get(this.translate, ctx.instance.action, 'confirm.accept', confirmationDescriptor.acceptButton.label, item, 'general.yes') ?? undefined;\n }\n\n if (confirmationDescriptor.acceptButton.icon !== null) {\n confirmParams.acceptIcon = confirmationDescriptor.acceptButton.icon;\n }\n\n if (confirmationDescriptor.rejectButton?.icon !== null) {\n confirmParams.rejectIcon = confirmationDescriptor.rejectButton?.icon;\n }\n\n if (confirmationDescriptor.rejectButton?.label !== null) {\n confirmParams.rejectLabel =\n I18nUtils.Action.get(this.translate, ctx.instance.action, 'confirm.reject', confirmationDescriptor.rejectButton?.label, item, 'general.no') ?? undefined;\n }\n\n if (confirmationDescriptor.rejectButton == null || (confirmationDescriptor.rejectButton.label === null && confirmationDescriptor.rejectButton.icon === null)) {\n confirmParams.rejectVisible = false;\n }\n\n confirmParams.accept = () => {\n ctx.instance.state = ActionInstanceStateEnum.RunConfirmationEndAccept;\n this.runWithoutConfirmation(ctx);\n };\n\n confirmParams.reject = () => {\n ctx.instance.state = ActionInstanceStateEnum.RunConfirmationEndReject;\n if (ctx.instance.action.type !== ActionTypeEnum.Editor) {\n // if not editor, the it can be closed\n this.finishAction(ctx.instance);\n }\n };\n\n if (confirmationDescriptor.runConfirmationConfigMapFn) {\n confirmParams = confirmationDescriptor.runConfirmationConfigMapFn(ctx, confirmParams);\n }\n\n ctx.confirmation = confirmParams;\n ctx.instance.state = ActionInstanceStateEnum.RunConfirmationStart;\n\n this.confirmationService.confirm(confirmParams);\n } else {\n this.runWithoutConfirmation(ctx);\n }\n }\n\n /**\n * Runs action context by submitting execution results/errors to context, watching over instance results/errors, displaying notifications,\n * running next/error action and triggering dismiss of action. Confirmation\n *\n * @param ctx Action context to run.\n *\n * @returns Action context for submit (=run) function.\n */\n private runWithoutConfirmation<Item, Service = undefined>(ctx: ActionContext<Item, Service>): Observable<Item | null | undefined> {\n const isMainRunFn = ctx.functionName === 'submit' || ctx.functionName === 'run';\n const isErrorCriticalRunFn = ctx.functionName === 'run';\n let actionEditor: ActionEditorDescriptorInst<Item>;\n\n let fnObs: ActionRunFnType<Item, Service>;\n switch (ctx.functionName) {\n case 'submit':\n actionEditor = ctx.instance.action as ActionEditorDescriptorInst<Item>;\n if (typeof actionEditor.submitFunction !== 'function') {\n if (actionEditor instanceof ActionEditorAddDescriptorInst) {\n fnObs = this.dataProviderExecutor.runCreateOrFail.bind(this.dataProviderExecutor);\n } else if (actionEditor instanceof ActionEditorEditDescriptorInst) {\n fnObs = this.dataProviderExecutor.runUpdateOrFail.bind(this.dataProviderExecutor);\n } else {\n // try to guess this one\n const defaultSubmit = of(ctx.parameters?.item ? ctx.parameters.item : undefined);\n fnObs = ctx => {\n if (ctx.parameters.itemId) {\n return this.dataProviderExecutor.runUpdate(ctx, defaultSubmit);\n } else {\n return this.dataProviderExecutor.runCreate(ctx, defaultSubmit);\n }\n };\n }\n } else {\n fnObs = actionEditor.submitFunction;\n }\n break;\n case 'fetch':\n actionEditor = ctx.instance.action as ActionEditorDescriptorInst<Item>;\n if (typeof actionEditor.fetchFunction !== 'function') {\n if (actionEditor instanceof ActionEditorEditDescriptorInst) {\n fnObs = this.dataProviderExecutor.runFetchOrFail.bind(this.dataProviderExecutor);\n } else {\n const defaultFetch = of(ctx.parameters?.item ? ctx.parameters.item : undefined);\n fnObs = ctx => {\n if (ctx.parameters.itemId || typeof ctx.parameters.item === 'object') {\n return this.dataProviderExecutor.runFetch(ctx, defaultFetch);\n }\n return defaultFetch;\n };\n }\n } else {\n fnObs = actionEditor.fetchFunction;\n }\n break;\n case 'run':\n default:\n if (!ctx.instance.action.hasRunFunction && ctx.instance.action instanceof ActionDeleteDescriptorInst) {\n fnObs = this.dataProviderExecutor.runDeleteOrFail.bind(this.dataProviderExecutor);\n } else {\n fnObs = ctx.instance.action.runFunction;\n }\n break;\n }\n\n const retObs = of(void 0).pipe(\n take(1),\n switchMap(() => {\n if (isMainRunFn) {\n // if main run function, also set loading to true\n ctx.instance.state = ActionInstanceStateEnum.RunStart;\n ctx.instance.isRunLoadingSubject.next(true);\n } else {\n ctx.instance.state = ActionInstanceStateEnum.FetchStart;\n }\n // start context execution to mark execution loading\n ctx.executionStart();\n\n return toObservable(fnObs(ctx));\n }),\n mergeMap(runResult => {\n // set next state depending on run\n ctx.instance.state = isMainRunFn ? ActionInstanceStateEnum.RunEnd : ActionInstanceStateEnum.FetchEnd;\n // set execution result\n ctx.executionNext(runResult, isMainRunFn);\n\n if (isMainRunFn) {\n // set instance final result on main run execution\n ctx.instance.result = runResult;\n ctx.instance.isRunLoadingSubject.next(false);\n\n // handle notification\n if (ctx.instance.action.hasRunNotificationSuccess) {\n ctx.notification = actionNotificationSuccess(\n this.translate,\n ctx.instance.action,\n ctx.functionName,\n this.messageService,\n ctx.instance.action.runNotificationSuccessTitle,\n ctx.instance.action.runNotificationSuccessMessage,\n {\n ...ctx.parameters?.item,\n ...runResult\n }\n );\n }\n\n // handle possible after run action\n if (ctx.instance.action.afterRunAction) {\n // mark new state for next action start\n const afterRunAction =\n typeof ctx.instance.action.afterRunAction === 'function' ? ctx.instance.action.afterRunAction(ctx) : ctx.instance.action.afterRunAction;\n const nextActionInstance = this.activateAction(\n afterRunAction,\n <ActionParameters<unknown>>{\n itemId: ctx.parameters.itemId,\n item: runResult,\n actionData: ctx.parameters.actionData,\n route: ctx.parameters.route,\n sourceComponent: ctx.parameters.sourceComponent\n },\n undefined,\n ctx.instance as ActionInstance<unknown, unknown>,\n true\n );\n ctx.instance.nextActionInstance = nextActionInstance;\n\n ctx.instance.state = ActionInstanceStateEnum.NextActionStart;\n\n // finish current action when next action finishes\n return nextActionInstance.state$.pipe(\n startWith(nextActionInstance.state), // provide first state cause it might be finished already\n filter(state => state >= ActionInstanceStateEnum.FinishSuccessFinal),\n take(1),\n map(() => {\n ctx.instance.state = ActionInstanceStateEnum.NextActionEnd;\n return runResult;\n })\n );\n }\n } else {\n if (actionEditor.hasFetchNotificationSuccess) {\n actionNotificationSuccess(\n this.translate,\n actionEditor,\n 'fetch',\n this.messageService,\n actionEditor.fetchNotificationSuccessTitle,\n actionEditor.fetchNotificationSuccessMessage,\n ctx.parameters.item\n );\n }\n }\n\n return of(runResult);\n }),\n map(runResult => {\n if (isMainRunFn) {\n // deactivate action\n this.finishAction(ctx.instance);\n }\n return runResult;\n }),\n catchError(err => {\n // transform error to action error\n const actionError = this.toActionError(err, ctx);\n\n // set instance state to error\n ctx.instance.state = isMainRunFn ? ActionInstanceStateEnum.RunError : ActionInstanceStateEnum.FetchError;\n // mark execution error on context\n ctx.executionError(actionError);\n\n if (ctx.instance.action.hasRunNotificationError) {\n actionNotificationError(this.translate, ctx.instance.action, actionError, 'fetch', this.messageService, ctx.parameters.item);\n }\n\n let errorObs = of(void 0);\n if (isMainRunFn) {\n ctx.instance.error = err;\n ctx.instance.isRunLoadingSubject.next(false);\n\n // handle possible error action if run\n if (isMainRunFn && ctx.instance.action.onRunErrorAction) {\n const onRunErrorAction =\n typeof ctx.instance.action.onRunErrorAction === 'function' ? ctx.instance.action.onRunErrorAction(ctx) : ctx.instance.action.onRunErrorAction;\n // cannot start with trigger, because routing might be problematic (lousing previous results etc.)\n const errorActionInstance = this.activateAction<Item, Service>(\n onRunErrorAction,\n <ActionParameters<Item>>{\n itemId: ctx.parameters.itemId,\n item: ctx.parameters.item,\n actionData: ctx.parameters.actionData,\n route: ctx.parameters.route,\n sourceComponent: ctx.parameters.sourceComponent\n },\n undefined,\n undefined,\n true\n );\n ctx.instance.errorActionInstance = errorActionInstance;\n\n ctx.instance.state = ActionInstanceStateEnum.ErrorActionStart;\n\n errorObs = errorActionInstance.state$.pipe(\n startWith(errorActionInstance.state), // provide first state cause it might be finished already\n filter(state => state >= ActionInstanceStateEnum.FinishSuccessFinal),\n take(1),\n map(() => {\n ctx.instance.state = ActionInstanceStateEnum.ErrorActionEnd;\n return void 0;\n })\n );\n }\n }\n\n // list and map only to mark instance state as finished error state\n return errorObs.pipe(\n map(() => {\n // deactivate action only if critical (fetch on editor or run on button actions)\n if (isErrorCriticalRunFn) {\n this.finishAction(ctx.instance);\n }\n // rethrow error to propagate further\n throw actionError;\n })\n );\n })\n );\n\n ctx.runSubscription = retObs.subscribe({\n next: res => {\n this.logger.debug(`ActionContext ${ctx.contextLongName} execution next event`, res);\n },\n error: err => {\n if ((err as ICommonsError | undefined)?.type !== 'CommonsActionError') {\n this.logger.error(`Non action error occurred`, err);\n } else {\n this.logger.debug(`Action context ${ctx.contextLongName} execution error event`, err);\n }\n }\n });\n\n return retObs;\n }\n\n /**\n * Prepares editor action's fetch function by creating new action context for action instance.\n *\n * @param action Action descriptor.\n * @param parameters Action parameters for context.\n * @param dataProvider Editor data provider for context.\n * @param instance Optional existing action instance (if non provided, new will be created).\n * @param previousActionInstance Optional previous action instance to link in next instance.\n *\n * @returns Action context for fetch function.\n */\n public prepareContextForEditorFetch<Item, Service>(\n action: ActionEditorDescriptorInst<Item>,\n parameters: ActionParameters<Item>,\n dataProvider?: IDataProvider<Item, Service>,\n instance?: ActionInstance<Item, Service>,\n previousActionInstance?: IActionInstance<any, any>\n ): ActionContext<Item, Service> {\n instance = this.getOrCreateInstance(instance, action, parameters, ActionInstanceStateEnum.ActivationEnd);\n return this.prepareContextForEditor(instance, parameters, 'fetch', dataProvider, previousActionInstance);\n }\n\n /**\n * Runs editor action's submit (=main run) function by creating new action context for action instance.\n *\n * @param action Action descriptor.\n * @param parameters Action parameters for context.\n * @param dataProvider Editor data provider for context.\n * @param instance Optional existing action instance (if non provided, new will be created).\n * @param previousActionInstance Optional previous action instance to link in next instance.\n *\n * @returns Action context for submit (=run) function.\n */\n public prepareContextForEditorSubmit<Item, Service>(\n action: ActionEditorDescriptorInst<Item>,\n parameters: ActionParameters<Item>,\n dataProvider?: IDataProvider<Item, Service>,\n instance?: ActionInstance<Item, Service>,\n previousActionInstance?: IActionInstance<any, any>\n ): ActionContext<Item, Service> {\n instance = this.getOrCreateInstance(instance, action, parameters, ActionInstanceStateEnum.ActivationEnd);\n return this.prepareContextForEditor(instance, parameters, 'submit', dataProvider, previousActionInstance);\n }\n\n /**\n * Prepares action exec context for action of type editor.\n *\n * @param instance Action instance.\n * @param parameters Action parameters for context.\n * @param functionName Action function name parameter.\n * @param dataProvider Optional data provider. If not provided data provider from either the action editor or view container will be used.\n * @param previousActionInstance Optional previous action instance to link in next instance.\n */\n private prepareContextForEditor<Item, Service>(\n instance: ActionInstance<Item, Service>,\n parameters: ActionParameters<Item>,\n functionName: 'submit' | 'fetch',\n dataProvider?: IDataProvider,\n previousActionInstance?: IActionInstance<any, any>\n ): ActionContext<Item, Service> {\n if (instance.action.type !== ActionTypeEnum.Editor) {\n throw new CommonsInternalError(`Cannot create editor context for action ${instance.action.actionNameLong} of type ${instance.action.type}.`);\n }\n const editorAction = instance.action as ActionEditorDescriptorInst<Item>;\n let ctxDataProvider = dataProvider;\n if (!ctxDataProvider && editorAction.dataProvider) {\n ctxDataProvider = editorAction.dataProvider;\n }\n if (!ctxDataProvider) {\n const viewContainerDataProvider = this.viewContainer?.dataProvider;\n if (viewContainerDataProvider) {\n ctxDataProvider = viewContainerDataProvider;\n }\n }\n const ctx = new ActionContext<Item, Service>(\n this.injector,\n instance,\n parameters,\n functionName,\n this.dataProviderExecutor.getDataProviderService(this.injector, ctxDataProvider) ?? undefined,\n ctxDataProvider,\n this.viewContainer ?? undefined\n );\n ctx.previousActionInstance = previousActionInstance;\n instance.newContext(ctx);\n return ctx;\n }\n\n /**\n * Runs action's main run function by creating new action context for action instance.\n *\n * @param action Action descriptor.\n * @param parameters Action parameters for context run.\n * @param dataProvider Data provider for context run.\n * @param instance Optional existing action instance (if non provided, new will be created).\n * @param previousActionInstance Optional previous action instance to link in next instance.\n *\n * @returns Action context for run function.\n */\n private prepareContext<Item, Service = undefined>(\n action: ActionDescriptorInst<Item, Service>,\n parameters: ActionParameters<Item>,\n dataProvider?: IDataProvider<Item, Service>,\n instance?: ActionInstance<Item, Service>,\n previousActionInstance?: ActionInstance<any, any>\n ): ActionContext<Item, Service> {\n instance = this.getOrCreateInstance<Item, Service>(instance, action, parameters, ActionInstanceStateEnum.ActivationEnd);\n\n const ctxDataProvider = dataProvider ?? instance.action.dataProvider ?? this.viewContainer?.dataProvider;\n let service: Service | undefined = undefined;\n if (ctxDataProvider != null) {\n const dataProviderService = this.dataProviderExecutor.getDataProviderService<Item, Service>(this.injector, ctxDataProvider);\n if (!dataProviderService) {\n throw new CommonsInternalError('');\n }\n service = dataProviderService;\n }\n const ctx = new ActionContext<Item, Service>(this.injector, instance, parameters, 'run', service as Service, ctxDataProvider, this.viewContainer ?? undefined);\n ctx.previousActionInstance = previousActionInstance;\n instance.newContext(ctx);\n\n return ctx;\n }\n\n /**\n * Activates action (in case of dialog, dialog will be opened).\n *\n * @param action Action descriptor.\n * @param parameters Action parameters for activation of action instance.\n * @param instance Optional existing action instance (if non provided, new will be created).\n * @param previousActionInstance Optional previous action instance to link in next instance.\n * @param runContext Marks if context should be run.\n *\n * @returns Action instance - if non provided in parameters, the newly created will be returned.\n */\n public activateAction<Item, Service = undefined>(\n action: ActionDescriptorInst<Item>,\n parameters: ActionParameters<Item>,\n instance?: ActionInstance<Item, Service>,\n previousActionInstance?: ActionInstance<any, any>,\n runContext = false\n ): ActionInstance<Item, Service> {\n instance = this.getOrCreateInstance<Item, Service>(instance, action, parameters, ActionInstanceStateEnum.ActivationStart);\n instance.state = ActionInstanceStateEnum.ActivationStart;\n instance.activationParameters = parameters;\n // start activation instance\n if (action.type === ActionTypeEnum.Editor) {\n let dialogComponent = this.defaultEditorDialogComponent;\n const dialogClassNames = ['mng-dialog'];\n const dialogConfig: DynamicDialogConfig = {\n duplicate: true\n };\n\n if (action instanceof ActionEditorDescriptorInst) {\n dialogClassNames.push(action.dialogClassName ?? 'mng-action-editor-dialog');\n switch (action.dialogSize) {\n case StyleSizeEnum.ExtraSmall:\n dialogClassNames.push('mng-dialog-xs');\n break;\n case StyleSizeEnum.Small:\n dialogClassNames.push('mng-dialog-sm');\n break;\n case StyleSizeEnum.Large:\n dialogClassNames.push('mng-dialog-lg');\n break;\n case StyleSizeEnum.ExtraLarge:\n dialogClassNames.push('mng-dialog-xl');\n break;\n case StyleSizeEnum.Normal:\n default:\n break;\n }\n if (action.editorComponent) {\n dialogComponent = action.editorComponent;\n }\n dialogConfig.data = <ActionEditorDialogData<Item, Service>>{\n action: {\n descriptor: action,\n instance: instance,\n previousInstance: previousActionInstance\n },\n injector: this.injector\n };\n }\n\n dialogConfig.styleClass = dialogClassNames.join(' ');\n\n if (action.activationTrigger === ActionActivationTriggerEnum.OnRoute) {\n dialogConfig.closable = false;\n dialogConfig.closeOnEscape = false;\n }\n\n const dialogRef = this.dialogService.open(dialogComponent, dialogConfig);\n dialogRef.onClose.pipe(take(1)).subscribe(() => {\n // to close dialog on 'X' click or esc button\n this.finishAction(instance!);\n });\n instance.activationDialogRef = dialogRef;\n return instance;\n } else {\n // directly execute action\n instance.state = ActionInstanceStateEnum.ActivationEnd;\n const context = this.prepareContext<Item, Service>(action, parameters, undefined, instance, previousActionInstance);\n\n if (runContext) {\n this.run(context);\n }\n\n return context.instance;\n }\n }\n\n /**\n * To be called when action editor is initialized to correctly activate action.\n * @param action Action descriptor.\n * @param instance Action instance (if available).\n * @param componentRef Optional action editor component reference.\n */\n public onActionEditorInit<T, S>(action: ActionDescriptorInst<T>, instance?: ActionInstance<T, S>, componentRef?: IActionEditorComponent): ActionInstance<T, S> {\n if (action.type !== ActionTypeEnum.Editor) {\n throw new Error(`Action ${action.actionName} is not of type editor, cannot be activated through \"onActionEditorOnInit\"`);\n }\n if (instance && action.activationTrigger === ActionActivationTriggerEnum.OnRoute) {\n const triggeredInstance = this.viewContainer?.routeTriggeredActionInstance;\n if (triggeredInstance && triggeredInstance.instanceLongName !== instance.instanceLongName) {\n this.logger.debug(\n `WARNING: Found triggered parameters view container instance ${triggeredInstance.instanceLongName} and it does not match instance ${instance.instanceLongName} retrieved on editor init.`\n );\n }\n }\n instance = this.getOrCreateInstance(instance, action, undefined, ActionInstanceStateEnum.ActivationStart);\n instance.state = ActionInstanceStateEnum.ActivationEnd;\n instance.activationEditorComponentRef = componentRef;\n\n return instance;\n }\n\n /**\n * To be called when action editor cmp is being destroyed to correctly finish action.\n * @param instance Action instance.\n */\n public onActionDestroy<T, S>(instance?: ActionInstance<T, S>): void {\n if (!instance) {\n return;\n }\n instance = this.getOrCreateInstance(instance);\n if (instance.action.activationTrigger !== ActionActivationTriggerEnum.OnClick) {\n return;\n }\n this.finishAction(instance, true);\n }\n\n /**\n * To be called when action editor cmp is being destroyed to correctly finish action.\n * @param instance Action instance.\n */\n public onActionEditorDestroy<T, S>(instance?: ActionInstance<T, S>): void {\n if (!instance) {\n return;\n }\n instance = this.getOrCreateInstance(instance);\n if (instance.action.type !== ActionTypeEnum.Editor) {\n throw new Error(`Action instance ${instance.instanceLongName} is not of type editor, cannot be deactivated through \"onActionEditorOnDestroy\"`);\n }\n if (instance.action.activationTrigger !== ActionActivationTriggerEnum.OnRoute) {\n this.finishAction(instance, true);\n }\n }\n\n /**\n * To be called when action route cmp is being destroyed to correctly finish action.\n * @param instance Action instance.\n */\n public onActionRouteDestroy<T, S>(instance?: ActionInstance<T, S>): void {\n if (!instance) {\n return;\n }\n instance = this.getOrCreateInstance(instance);\n if (instance.action.activationTrigger !== ActionActivationTriggerEnum.OnRoute) {\n throw new Error(`Action instance ${instance.instanceLongName} is not triggered on route, cannot be deactivated through \"onActionRouteOnDestroy\"`);\n }\n this.finishAction(instance, true);\n }\n\n /**\n * Deactivates action by choosing final state, closing dialog and completing all subjects in instance and contexts.\n *\n * @param instance Action instance.\n * @param onDestroy Marks if finish is called on component destroy lifecycle hook.\n */\n public finishAction<Item, Service = undefined>(instance: ActionInstance<Item, Service>, onDestroy = false) {\n instance = this.getOrCreateInstance(instance);\n if (instance.state >= ActionInstanceStateEnum.FinishSuccessFinal) {\n this.logger.trace(`ActionInstance ${instance.instanceLongName} already finished`);\n return;\n }\n\n let finalState: ActionInstanceStateEnum;\n if (typeof instance.result !== 'undefined') {\n finalState = ActionInstanceStateEnum.FinishSuccessFinal;\n } else if (typeof instance.error !== 'undefined') {\n finalState = ActionInstanceStateEnum.FinishErrorFinal;\n } else if (onDestroy) {\n finalState = ActionInstanceStateEnum.FinishComponentDestroyFinal;\n } else {\n finalState = ActionInstanceStateEnum.FinishDismissedFinal;\n }\n\n if (instance.action.type === ActionTypeEnum.Editor) {\n const hasDialog = typeof instance.activationDialogRef !== 'undefined';\n const resubmitEnabled = (instance.action as ActionEditorDescriptorInst<Item>).resubmitEnabled;\n\n if (finalState === ActionInstanceStateEnum.FinishSuccessFinal) {\n if ((hasDialog && resubmitEnabled === true) || (!hasDialog && resubmitEnabled !== false)) {\n finalState = ActionInstanceStateEnum.FinishSuccessReactivateFinal;\n }\n }\n\n if (hasDialog && finalState !== ActionInstanceStateEnum.FinishSuccessReactivateFinal) {\n // if state is finish and not called from dialog listener, close the dialog first which will retrigger this function, then finish it\n instance.activationDialogRef!.close(instance.result);\n }\n }\n\n // unset instance in view container\n if (this.viewContainer) {\n this.viewContainer.routeTriggeredActionInstance = undefined;\n }\n\n // set final state on instance\n instance.state = finalState;\n\n if (finalState === ActionInstanceStateEnum.FinishSuccessReactivateFinal) {\n // prepare reactivation instance\n const newInstanceStatus = (instance.action as ActionEditorDescriptorInst<Item>).resubmitRefetch\n ? ActionInstanceStateEnum.ActivationEnd\n : ActionInstanceStateEnum.FetchEnd;\n // must skip initialization from view container, because it would only get old instance.\n // we need new instance before we can set new one on the view container.\n const newInstance = this.getOrCreateInstance<Item, Service>(undefined, instance.action, undefined, newInstanceStatus, true);\n newInstance.previousInstance = instance;\n // copy some additional settings\n newInstance.activationDialogRef = instance.activationDialogRef;\n newInstance.triggerParameters = instance.triggerParameters;\n newInstance.activationParameters = instance.activationParameters;\n\n if (this.viewContainer) {\n this.viewContainer.routeTriggeredActionInstance = newInstance;\n }\n\n instance.reactivationInstance = newInstance;\n }\n\n // finish related actions\n if (instance.nextActionInstance && instance.nextActionInstance instanceof ActionInstance) {\n this.logger.debug(`Finishing instance ${instance.instanceLongName} related next action instance: ${instance.nextActionInstance.instanceLongName}`);\n this.finishAction(instance.nextActionInstance, onDestroy);\n }\n if (instance.errorActionInstance && instance.errorActionInstance instanceof ActionInstance) {\n this.logger.debug(`Finishing instance ${instance.instanceLongName} related error action instance: ${instance.errorActionInstance.instanceLongName}`);\n this.finishAction(instance.errorActionInstance, onDestroy);\n }\n }\n\n /**\n * Triggers action with parameters.\n *\n * @param action Action descriptor.\n * @param parameters Action parameters for action execution to construct new route.\n * @param runContext Marks if context should be run.\n *\n * @returns Action instance - if non provided in parameters, the newly created will be returned.\n */\n public triggerAction<Item, Service = undefined>(action: ActionDescriptorInst<Item>, parameters: ActionParameters<Item>, runContext = false): ActionInstance<Item, Service> {\n const instance = this.getOrCreateInstance<Item, Service>(undefined, action, parameters);\n instance.triggerParameters = parameters;\n instance.state = ActionInstanceStateEnum.TriggerStart;\n if (action.activationTrigger === ActionActivationTriggerEnum.OnRoute) {\n const baseUrl = this.router.url.split('?')[0];\n const parsedUrl: UrlTree = this.router.parseUrl(this.router.url);\n let actionUrl = action.routeUrl ?? '';\n if (actionUrl.startsWith('/')) {\n actionUrl = actionUrl.substring(1);\n }\n\n const actionUrlSegments = this.parametrize.transform(actionUrl, parameters.itemId, parameters.item, parameters.actionData).split('/');\n\n // set instance in view container\n if (this.viewContainer) {\n this.viewContainer.routeTriggeredActionInstance = instance;\n }\n\n from(this.router.navigate([baseUrl, ...actionUrlSegments], {relativeTo: parameters.route, queryParams: parsedUrl.queryParams}))\n .pipe(take(1))\n .subscribe(() => (instance.state = ActionInstanceStateEnum.TriggerEnd));\n\n return instance;\n } else {\n instance.state = ActionInstanceStateEnum.TriggerEnd;\n this.activateAction(action, parameters, instance);\n\n if (runContext) {\n const context = instance.context;\n if (context) {\n this.run(context);\n }\n }\n\n return instance;\n }\n }\n\n /**\n * Deactivates on route triggered action by trying to reroute back to location where action was triggered.\n * @param instance Action instance.\n */\n public finishActionRouteUntrigger<Item, Service = undefined>(instance: ActionInstance<Item, Service>) {\n if (instance.action.activationTrigger !== ActionActivationTriggerEnum.OnRoute) {\n return;\n }\n\n instance = this.getOrCreateInstance<Item, Service>(instance);\n\n instance.state = ActionInstanceStateEnum.FinishRouteUntriggerStart;\n\n let url = this.navigationService.getCurrentLocationFromHistory() ?? this.navigationService.getCurrentLocationFromUrl();\n if (!url) {\n this.navigationService.back();\n } else {\n if (url.startsWith('/')) {\n url = url.substring(1);\n }\n\n const splitUrlQueryParam = url.split('?');\n const urlPathSegments = splitUrlQueryParam[0].split('#')[0].split('/');\n const queryParam = splitUrlQueryParam[1]?.split('#')[0];\n\n let actionUrl = instance.action?.routeUrl ?? '';\n if (actionUrl.startsWith('/')) {\n actionUrl = actionUrl.substring(1);\n }\n const actionUrlSegments = actionUrl.split('/');\n let redirectUrl = '/' + urlPathSegments.slice(0, urlPathSegments.length - actionUrlSegments.length).join('/');\n if (typeof queryParam !== 'undefined') {\n redirectUrl = `${redirectUrl}?${queryParam}`;\n }\n\n // No URL replaces, probably ok, to allow going back\n from(this.router.navigateByUrl(redirectUrl))\n .pipe(first(), timeout(1000))\n .subscribe({\n next: () => (instance.state = ActionInstanceStateEnum.FinishRouteUntriggerEndFinal),\n error: () => (instance.state = ActionInstanceStateEnum.FinishRouteUntriggerTimeoutFinal)\n });\n }\n }\n\n /**\n * Transform error of any type to error by using error mapper that could be provided by final project.\n * @param error error of any type.\n * @param context Action context.\n *\n * @returns mapped ICommonsError.\n */\n public toActionError(error?: any, context?: ActionContext<any, any>): ICommonsError {\n let commonsError: ICommonsError;\n if (context) {\n const options: CommonsActionErrorOptions = {\n cause: error,\n location: this.router.url\n };\n if (error instanceof HttpErrorResponse) {\n options.httpError = error;\n }\n\n commonsError = new CommonsActionError(error?.message ?? 'Unknown error', context.contextLongName);\n } else if (error instanceof HttpErrorResponse) {\n // should not really happen (should always be wrapped in MngActionError), just in case\n commonsError = new CommonsHttpError(`Http Error occurred in action`, error, {\n location: this.router.url\n });\n } else {\n // not from action, so unknown source of error\n commonsError = new CommonsInternalError(error?.message ?? 'Unknown error', {\n name: error?.name ?? 'UnknownError',\n location: this.router.url,\n cause: error\n });\n }\n\n // just trace it, allow user to set if this is error or not\n this.logger.trace(commonsError);\n\n return this.errorMapper.toCommonsError(error, commonsError);\n }\n\n /**\n * Creates or gets existing action instance.\n * @param instance Action instance.\n * @param action Action descriptor.\n * @param parameters Action parameters.\n * @param instanceInitialStatus Action instance initial status.\n * @param skipInitializationFromViewContainer If initialization of instance from view container should be skipped.\n * @private\n */\n protected getOrCreateInstance<Item, Service = undefined>(\n instance: ActionInstance<Item, Service> | undefined,\n action?: ActionDescriptorInst<Item, Service>,\n parameters?: ActionParameters<Item>,\n instanceInitialStatus?: ActionInstanceStateEnum,\n skipInitializationFromViewContainer = false\n ): ActionInstance<Item, Service> {\n if (!skipInitializationFromViewContainer && !instance && action?.activationTrigger === ActionActivationTriggerEnum.OnRoute && parameters) {\n instance = this.viewContainer?.routeTriggeredActionInstance;\n }\n if (!instance) {\n if (!action) {\n throw new CommonsInternalError('Action descriptor is not provided, instance cannot be created.', {name: 'ActionExecutorServiceError'});\n }\n // create new instance if non provided\n instance = new ActionInstance<Item, Service>(action, instanceInitialStatus);\n }\n\n if (this.config?.actions?.debugInstances && !this.instances.some(i => i.instanceLongName === instance!.instanceLongName)) {\n if (this.instances.length >= this.instancesBufferMax) {\n const lastInstance = this.instances.shift();\n\n if (lastInstance!.state < ActionInstanceStateEnum.FinishSuccessFinal) {\n this.logger.debug(`ERROR: Not all instances are finished! Finishing instance ${instance.instanceLongName} with dismissal.`);\n lastInstance!.forceFinish();\n }\n }\n\n this.instances.push(instance);\n }\n\n return instance;\n }\n}\n","import {Injectable} from '@angular/core';\n\nimport {ActionInstance} from '../models/execution/action-instance.model';\nimport {ActionExecutorService} from './action-executor.service';\n\n@Injectable()\nexport class RootActionExecutorService extends ActionExecutorService {\n private readonly _instances: ActionInstance<any, any>[] = [];\n\n public get instances(): ActionInstance<any, any>[] {\n return this._instances;\n }\n}\n","import {Injectable, inject} from '@angular/core';\n\nimport {ActionInstance} from '../models/execution/action-instance.model';\nimport {ActionExecutorService} from './action-executor.service';\nimport {RootActionExecutorService} from './root-action-executor.service';\n\n@Injectable()\nexport class ComponentActionExecutorService extends ActionExecutorService {\n private readonly rootActionExecutorService = inject(RootActionExecutorService);\n\n public get instances(): ActionInstance<any, any>[] {\n return this.rootActionExecutorService.instances;\n }\n}\n","import {Provider} from '@angular/core';\n\nimport {ActionExecutorService} from '../action-executor.service';\nimport {ComponentActionExecutorService} from '../component-action-executor.service';\n\nexport function provideActionExecutor(): Provider {\n return {\n provide: ActionExecutorService,\n useClass: ComponentActionExecutorService\n };\n}\n","import {AsyncPipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, OnChanges, OnDestroy, OnInit, Optional, Output, SimpleChanges, ViewChild} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {MenuItem} from 'primeng/api';\nimport {ButtonModule} from 'primeng/button';\nimport {Menu, MenuModule} from 'primeng/menu';\nimport {RippleModule} from 'primeng/ripple';\nimport {SplitButtonModule} from 'primeng/splitbutton';\nimport {TooltipModule} from 'primeng/tooltip';\nimport {Observable, ReplaySubject, Subscription, combineLatest, distinctUntilChanged, of} from 'rxjs';\n\nimport {\n APermissions,\n ActionData,\n ActionParameters,\n ComponentDirective,\n DataListParams,\n IDataProvider,\n IdType,\n ParametrizePipe,\n PermissionService,\n Permissions,\n boolean$Attribute,\n toObservable\n} from '@mediusinc/mng-commons/core';\nimport {ActionContextValidation, ActionDescriptorInst, ActionLinkDescriptorInst, ActionTypeEnum, IActionComponent, TableviewRouteData} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ActionInstanceStateEnum} from '../../models/execution/action-instance-state.model';\nimport {ActionInstance} from '../../models/execution/action-instance.model';\nimport {ActionExecutorService} from '../../services/action-executor.service';\nimport {provideActionExecutor} from '../../services/providers/provide-action-executor';\nimport {ViewContainer} from '../../services/view-container.service';\nimport {I18nUtils} from '../../utils/i18n.util';\n\n@Component({\n standalone: true,\n selector: 'mng-action',\n templateUrl: './action.component.html',\n styleUrls: ['./action.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe, ButtonModule, RippleModule, TooltipModule, ParametrizePipe, ComponentDirective, SplitButtonModule, MenuModule],\n providers: [provideActionExecutor()]\n})\nexport class ActionComponent<Item = any, Service = undefined> implements OnInit, OnChanges, OnDestroy {\n @HostBinding('class') hostClass = 'mng-action-button';\n @HostBinding('class.m-0') isHostHidden = false;\n\n // metadata and editor mode input\n @Input({required: true}) public action!: ActionDescriptorInst<Item, Service>;\n @Input() public item?: Item;\n @Input() public itemId?: IdType;\n @Input() public actionData?: ActionData;\n @Input() public dataListParams?: DataListParams;\n @Input() public dataProvider?: IDataProvider<Item, Service>;\n @Input() public hostComponent?: unknown;\n @Input('route') public routeInit?: ActivatedRoute;\n @Input({alias: 'disabled', transform: boolean$Attribute}) public inputDisabled: Observable<boolean> = of(false);\n @Input({alias: 'loading', transform: boolean$Attribute}) public inputLoading: Observable<boolean> = of(false);\n @Input() public selectedItems: Array<Item> = [];\n\n @Output('finish') public finishEventEmitter = new EventEmitter<ActionInstance<Item, Service>>();\n\n @ViewChild('subactionsMenu') public subactionsMenu?: Menu;\n\n private loadingSubject = new ReplaySubject<boolean>(1);\n public $loading: Observable<boolean> = this.loadingSubject.asObservable();\n\n private isVisibleSubject = new ReplaySubject<boolean>(1);\n private isVisibleSubscription?: Subscription;\n public $isVisible = this.isVisibleSubject.asObservable().pipe(distinctUntilChanged());\n private isPermittedSubject = new ReplaySubject<boolean>(1);\n private isPermittedSubscription?: Subscription;\n public $isPermitted = this.isPermittedSubject.asObservable().pipe(distinctUntilChanged());\n private isEnabledSubject = new ReplaySubject<boolean>(1);\n private isEnabledSubscription?: Subscription;\n public $isEnabled = this.isEnabledSubject.asObservable().pipe(distinctUntilChanged());\n private labelSubject = new ReplaySubject<string | null>(1);\n private labelSubscription?: Subscription;\n public $label = this.labelSubject.asObservable().pipe(distinctUntilChanged());\n private tooltipSubject = new ReplaySubject<string | null>(1);\n private tooltipSubscription?: Subscription;\n public $tooltip = this.tooltipSubject.asObservable().pipe(distinctUntilChanged());\n\n public actionLink?: ActionLinkDescriptorInst<Item>;\n public hasNoTitle = false;\n\n private subscriptions: Subscription[] = [];\n\n public route!: ActivatedRoute; // value will be determined in ngOnInit\n private routePermissions?: APermissions;\n\n public buttonClass = 'p-button-primary';\n public subactions: MenuItem[] = [];\n private subactionSubscriptions: Subscription[] = [];\n public actionOrSubactionHasRunConfirmation = false;\n\n private instance?: ActionInstance<Item, Service>;\n\n constructor(\n private routeService: ActivatedRoute,\n private translate: TranslateService,\n private authorization: PermissionService,\n private actionExecutor: ActionExecutorService,\n @Optional() private viewContainer: ViewContainer<Item, Service> | null\n ) {\n this.loadingSubject.next(false);\n }\n\n public ngOnInit() {\n this.route = this.routeInit ?? this.routeService;\n\n this.hasNoTitle = this.action.button.label === null;\n this.isEnabledSubject.next(true);\n this.isVisibleSubject.next(true);\n this.isPermittedSubject.next(true);\n this.labelSubject.next(null);\n this.tooltipSubject.next(null);\n\n const routeData = this.route.snapshot.data as TableviewRouteData;\n if (this.action instanceof ActionLinkDescriptorInst) {\n this.actionLink = this.action;\n }\n\n if (this.action.tableviewCategory && routeData.tableviewPermissions) {\n if (routeData.tableviewPermissions[this.action.tableviewCategory]) {\n this.routePermissions = routeData.tableviewPermissions[this.action.tableviewCategory];\n }\n }\n this.processSubscriptions();\n\n if (this.action.className) {\n this.hostClass = this.action.className;\n }\n const hostVisibilitySubscription = combineLatest([this.$isVisible, this.$isPermitted]).subscribe(([isVisible, isPermitted]) => {\n this.isHostHidden = !isVisible || !isPermitted;\n });\n this.subscriptions.push(hostVisibilitySubscription);\n\n this.buttonClass = this.action.button.styleClass.build(this.hasNoTitle);\n\n // Here we check if an action or any subaction has confirmation dialog\n this.actionOrSubactionHasRunConfirmation = this.action.subactions.some(sub => sub.hasRunConfirmation) || this.action.hasRunConfirmation;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\n !(changes['item']?.firstChange ?? true) ||\n !(changes['itemId']?.firstChange ?? true) ||\n !(changes['actionData']?.firstChange ?? true) ||\n (this.action.hasItemsSelection && !(changes['selectedItems']?.firstChange ?? true))\n ) {\n this.processSubscriptions();\n }\n }\n\n ngOnDestroy(): void {\n this.actionExecutor.onActionDestroy(this.instance);\n this.isVisibleSubscription?.unsubscribe();\n this.isPermittedSubscription?.unsubscribe();\n this.isEnabledSubscription?.unsubscribe();\n this.labelSubscription?.unsubscribe();\n this.tooltipSubscription?.unsubscribe();\n this.subscriptions.forEach(s => s.unsubscribe());\n this.subactionSubscriptions.forEach(s => s.unsubscribe());\n }\n\n public triggerAction(action: ActionDescriptorInst<Item, Service>, parameters?: ActionParameters<Item>, event?: Event) {\n if (action.subactionsAsMenu) {\n this.subactionsMenu?.toggle(event ?? new Event('trigger'));\n return;\n }\n\n const actionData = this.actionData ? this.actionData : {};\n\n parameters ??= {\n itemId: this.itemId,\n item: this.item,\n actionData: actionData,\n dataListParams: this.dataListParams,\n route: this.route,\n sourceComponent: this,\n hostComponent: this.hostComponent,\n selectedItems: this.selectedItems\n };\n\n const instance = this.actionExecutor.triggerAction<Item, Service>(action, parameters);\n this.instance = instance;\n const context = instance.context;\n if (!context) {\n // no context is provided if routing is triggered or editor is opened via dialog\n // it is in another component jurisdiction to handle contexts\n return;\n }\n\n this.subscriptions.push(\n instance.result$.subscribe({\n next: () => {\n this.finishEventEmitter.next(instance);\n if (action.hasItemsSelection) {\n this.viewContainer?.reloadTable({data: {event: event}});\n }\n }\n })\n );\n this.subscriptions.push(\n instance.error$.subscribe({\n next: () => {\n this.finishEventEmitter.next(instance);\n }\n })\n );\n\n this.subscriptions.push(\n this.instance.state$.subscribe(s => {\n switch (s) {\n case ActionInstanceStateEnum.RunStart:\n this.loadingSubject.next(true);\n break;\n case ActionInstanceStateEnum.RunEnd:\n case ActionInstanceStateEnum.RunError:\n this.loadingSubject.next(false);\n break;\n case ActionInstanceStateEnum.NextActionStart:\n if (this.instance?.nextActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.loadingSubject.next(true);\n }\n break;\n case ActionInstanceStateEnum.NextActionEnd:\n if (this.instance?.nextActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.loadingSubject.next(false);\n }\n break;\n case ActionInstanceStateEnum.ErrorActionStart:\n if (this.instance?.errorActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.loadingSubject.next(true);\n }\n break;\n case ActionInstanceStateEnum.ErrorActionEnd:\n if (this.instance?.errorActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.loadingSubject.next(false);\n }\n break;\n }\n })\n );\n\n this.actionExecutor.run(context);\n }\n\n public onCustomActionCmpInst(instance: IActionComponent<Item>) {\n const cmpInstSubscription = instance.triggerActionEventEmitter.subscribe(params => this.triggerAction(this.action, params));\n this.subscriptions.push(cmpInstSubscription);\n }\n\n private processSubactions(): MenuItem[] {\n this.subactionSubscriptions.forEach(s => s.unsubscribe());\n this.subactionSubscriptions = [];\n\n const menuItems: MenuItem[] = [];\n for (const subaction of this.action.subactions) {\n const menuItem = {} as MenuItem;\n\n menuItem.icon = subaction.button.icon ?? undefined;\n this.subactionSubscriptions.push(\n I18nUtils.Action.getAsync(this.translate, subaction, 'title', subaction.button.label ?? undefined, this.item).subscribe({\n next: res => (menuItem.label = res!)\n })\n );\n this.subactionSubscriptions.push(\n I18nUtils.Action.getAsync(this.translate, subaction, 'tooltip', this.action.button.tooltip, this.item).subscribe({\n next: res => (menuItem.tooltip = res!)\n })\n );\n\n const parameters: ActionParameters<Item> = {\n itemId: this.itemId,\n item: this.item,\n actionData: this.actionData,\n sourceComponent: this\n };\n\n if (subaction.hasItemsSelection) {\n parameters.selectedItems = this.selectedItems;\n }\n\n const context = this.actionExecutor.prepareActionContextValidation(subaction, parameters, this.dataProvider);\n\n if (typeof subaction.isEnabledFunction === 'function') {\n this.subactionSubscriptions.push(\n toObservable(subaction.isEnabledFunction(context)).subscribe({\n next: res => (menuItem.disabled = !res)\n })\n );\n }\n\n const visibilityObservables: Observable<boolean>[] = [];\n if (typeof subaction.isVisibleFunction === 'function') {\n visibilityObservables.push(toObservable(subaction.isVisibleFunction(context)));\n }\n if (typeof subaction.permissions !== 'undefined') {\n visibilityObservables.push(this.authorization.isPermitted(subaction.permissions, this.route.snapshot, context as ActionContextValidation<unknown, unknown>));\n }\n\n const routeData = this.route.snapshot.data as TableviewRouteData;\n if (subaction.tableviewCategory && routeData.tableviewPermissions && routeData.tableviewPermissions[subaction.tableviewCategory]) {\n const routePermissions = routeData.tableviewPermissions[subaction.tableviewCategory];\n visibilityObservables.push(this.authorization.isPermitted(routePermissions, this.route.snapshot, context as ActionContextValidation<unknown, unknown>));\n }\n\n this.subactionSubscriptions.push(\n combineLatest(visibilityObservables).subscribe(visibilities => {\n menuItem.visible = visibilities.every(value => value);\n })\n );\n\n menuItem.command = () => this.triggerAction(subaction);\n\n menuItems.push(menuItem);\n }\n return menuItems;\n }\n\n private processSubscriptions() {\n const parameters: ActionParameters<Item> = {\n itemId: this.itemId,\n item: this.item,\n actionData: this.actionData,\n sourceComponent: this\n };\n\n if (this.action.hasItemsSelection) {\n parameters.selectedItems = this.selectedItems;\n }\n\n const context = this.actionExecutor.prepareActionContextValidation(this.action, parameters, this.dataProvider);\n\n if (typeof this.action.isVisibleFunction === 'function') {\n this.isVisibleSubscription?.unsubscribe();\n this.isVisibleSubscription = toObservable(this.action.isVisibleFunction(context)).subscribe({\n next: res => this.isVisibleSubject.next(res)\n });\n }\n if (typeof this.action.permissions !== 'undefined' || typeof this.routePermissions !== 'undefined') {\n this.isPermittedSubscription?.unsubscribe();\n const permissions =\n this.action.permissions && this.routePermissions\n ? Permissions.All.of(this.routePermissions, this.action.permissions)\n : this.routePermissions ?? this.action.permissions!;\n this.isVisibleSubscription = this.authorization.isPermitted(permissions, this.route.snapshot, context as ActionContextValidation<unknown, unknown>).subscribe({\n next: res => this.isPermittedSubject.next(res)\n });\n }\n if (typeof this.action.isEnabledFunction === 'function') {\n this.isEnabledSubscription?.unsubscribe();\n this.isEnabledSubscription = toObservable(this.action.isEnabledFunction(context)).subscribe({\n next: res => this.isEnabledSubject.next(res)\n });\n }\n\n if (!this.hasNoTitle) {\n this.labelSubscription?.unsubscribe();\n this.labelSubscription = I18nUtils.Action.getAsync(this.translate, this.action, 'title', this.action.button.label ?? undefined, this.item).subscribe({\n next: i18n => this.labelSubject.next(i18n)\n });\n }\n\n this.tooltipSubscription?.unsubscribe();\n if (this.action.button.tooltip) {\n this.tooltipSubscription = I18nUtils.Action.getAsync(this.translate, this.action, 'tooltip', this.action.button.tooltip, this.item, undefined, undefined).subscribe({\n next: i18n => this.tooltipSubject.next(i18n)\n });\n }\n\n this.subactions = this.processSubactions();\n }\n}\n","@if (($isVisible | async) && ($isPermitted | async)) {\n @if (actionLink && actionLink.url !== '') {\n <a\n pButton\n pRipple\n [label]=\"($label | async) ?? ''\"\n [icon]=\"$any(action.button.icon)\"\n [iconPos]=\"action.button.iconPosition\"\n [href]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : (actionLink.url | mngParametrize: itemId : item : actionData)\"\n [target]=\"actionLink.target\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [pTooltip]=\"($tooltip | async) ?? undefined\"\n [tooltipPosition]=\"action.button.tooltipPosition ?? undefined\"\n [class]=\"buttonClass\"></a>\n } @else if (actionLink) {\n <a\n pButton\n pRipple\n [icon]=\"$any(action.button.icon)\"\n [iconPos]=\"action.button.iconPosition\"\n [label]=\"($label | async) ?? ''\"\n [target]=\"actionLink.target\"\n [replaceUrl]=\"actionLink.replaceUrl\"\n [routerLink]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : (actionLink.pathSegments | mngParametrize: itemId : item : actionData)\"\n [relativeTo]=\"route\"\n [queryParams]=\"actionLink.queryParams | mngParametrize: itemId : item : actionData\"\n [queryParamsHandling]=\"actionLink.queryParamsHandling\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [pTooltip]=\"($tooltip | async) ?? undefined\"\n [tooltipPosition]=\"action.button.tooltipPosition ?? undefined\"\n [class]=\"buttonClass\"></a>\n } @else if (action.component || action.componentFromDi) {\n <ng-container\n [mngComponent]=\"action.component\"\n [injectionToken]=\"action.componentFromDi\"\n [inputs]=\"{\n action: action,\n item: item,\n itemId: itemId,\n actionData: actionData,\n enabled: $isEnabled,\n loading: $loading\n }\"\n (instanceCreated)=\"onCustomActionCmpInst($event)\">\n </ng-container>\n } @else if (action.subactions.length > 0 && !action.subactionsAsMenu) {\n <p-splitButton\n [icon]=\"action.button.icon ?? undefined\"\n [iconPos]=\"action.button.iconPosition\"\n [label]=\"($label | async) ?? ''\"\n [pTooltip]=\"($tooltip | async) ?? undefined\"\n [tooltipPosition]=\"action.button.tooltipPosition ?? undefined\"\n [disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n (onClick)=\"triggerAction(action)\"\n [class]=\"buttonClass\"\n [model]=\"subactions\">\n </p-splitButton>\n } @else {\n <button\n pButton\n pRipple\n type=\"button\"\n [icon]=\"$any(action.button.icon)\"\n [iconPos]=\"action.button.iconPosition\"\n [label]=\"($label | async) ?? ''\"\n [pTooltip]=\"($tooltip | async) ?? undefined\"\n [tooltipPosition]=\"action.button.tooltipPosition ?? undefined\"\n [loading]=\"(($loading | async) ?? false) || ((inputLoading | async) ?? false)\"\n loadingIcon=\"pi pi-spin pi-spinner\"\n [disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n (click)=\"triggerAction(action, undefined, $event)\"\n [class]=\"buttonClass\"></button>\n <p-menu #subactionsMenu [model]=\"subactions\" [popup]=\"true\" appendTo=\"body\" styleClass=\"mng-action-menu\"></p-menu>\n }\n}\n","import {TranslateService} from '@ngx-translate/core';\nimport {Message} from 'primeng/api';\n\nexport function getFormEditorInfoMessage(translate: TranslateService, title: string, message: string, params?: any): Message {\n const actionErrorTitle = translate.instant(title) ?? undefined;\n const actionErrorMessage = translate.instant(message, params) ?? undefined;\n return {severity: 'info', summary: actionErrorTitle, detail: actionErrorMessage};\n}\n\nexport function getFormEditorWarningMessage(translate: TranslateService, title: string, message: string): Message {\n const actionErrorTitle = translate.instant(title) ?? undefined;\n const actionErrorMessage = translate.instant(message) ?? undefined;\n return {severity: 'warn', summary: actionErrorTitle, detail: actionErrorMessage};\n}\n","import {AbstractControl, ValidationErrors} from '@angular/forms';\n\nimport {FormlyFieldConfig} from '@ngx-formly/core';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {CommonsInternalError, CommonsService} from '@mediusinc/mng-commons/core';\nimport {type} from '@mediusinc/mng-commons/model';\nimport {\n AFieldDescriptor,\n CommonsFormlyFieldConfig,\n EditorDescriptorInst,\n FieldActionDescriptor,\n FieldAsyncValidator,\n FieldGroupDescriptor,\n FieldInputDescriptor,\n FieldInputTypeEnum,\n FieldLookupDescriptor,\n FieldLookupEnumDescriptor,\n FieldLookupTypeEnum,\n FieldManyEditorDescriptor,\n FieldManyToManyEditorDescriptor,\n FieldTabGroupDescriptor,\n FieldValidationDescriptor,\n IFormEditorComponent,\n TableviewDescriptor,\n TableviewEditorTypeEnum\n} from '@mediusinc/mng-commons/tableview/api';\n\nexport class EditorFormlyUtil {\n public static createFormlyConfigFromDescriptor(descriptor: EditorDescriptorInst<any>, formEditorComponent: IFormEditorComponent<unknown>): FormlyFieldConfig[] {\n const fields: FormlyFieldConfig[] = [];\n\n if (descriptor.isLocalized) {\n descriptor = EditorFormlyUtil.createLocalizationsTab(descriptor);\n }\n\n if (!descriptor.isLocalized && descriptor.tabs.length === 1 && descriptor.tabs[0].default) {\n // dont use tabs\n fields.push(...EditorFormlyUtil.createFormlyGroupType(descriptor.tabs[0].fields, formEditorComponent));\n } else {\n fields.push(...EditorFormlyUtil.createFormlyTabType(descriptor.tabs, formEditorComponent));\n }\n\n return fields;\n }\n public static createLocalizationsTab(descriptor: EditorDescriptorInst<any>) {\n if (descriptor.isLocalized && descriptor.tableviewEditorType !== TableviewEditorTypeEnum.Details) {\n if (!descriptor.localizationModel) {\n throw new CommonsInternalError('Localization model must be defined.');\n }\n const localizationsTableViewDescriptor = TableviewDescriptor.fromModel(descriptor.localizationModel);\n if (!descriptor.localizationLocaleProperty) {\n throw new CommonsInternalError('Localization locale property must be defined.');\n }\n localizationsTableViewDescriptor.addColumn(descriptor.localizationLocaleProperty);\n localizationsTableViewDescriptor.editEditor.addField(descriptor.localizationLocaleProperty).withDisabled(true);\n localizationsTableViewDescriptor.detailsEditor.addField(descriptor.localizationLocaleProperty).withDisabled(true);\n localizationsTableViewDescriptor.addEditor\n .addFieldLookupWithProvider(descriptor.localizationLocaleProperty, CommonsService, type<string>())\n .withLookup((qp, service) => service.appDataLanguages)\n .withDisabled(false)\n .withRequired();\n descriptor.fields.forEach(field => {\n if (field.isLocalized) {\n localizationsTableViewDescriptor.addColumn(field.property);\n localizationsTableViewDescriptor.addField(field.property);\n }\n });\n const descriptorWithLocalizations = descriptor.copy();\n descriptorWithLocalizations.createTabGroup('localizations');\n if (!descriptor.localizationLocalizationProperty) {\n throw new CommonsInternalError('Localization localization property must be defined');\n }\n descriptorWithLocalizations.addFieldManyEditor(descriptor.localizationLocalizationProperty, localizationsTableViewDescriptor);\n\n return descriptorWithLocalizations;\n }\n return descriptor;\n }\n public static createFormlyTabType(tabGroups: FieldTabGroupDescriptor<any>[], formEditorComponent: IFormEditorComponent<unknown>): FormlyFieldConfig[] {\n const tabsField: FormlyFieldConfig = {\n type: 'tabs',\n fieldGroup: [],\n props: {\n formEditorComponent\n }\n };\n for (const tab of tabGroups) {\n const tabField: CommonsFormlyFieldConfig = {\n id: tab.name,\n props: {\n formEditorComponent\n },\n expressions: {},\n fieldGroup: []\n };\n if (tab.title) {\n tabField.props.label = tab.title;\n }\n tabField.fieldGroup!.push(...EditorFormlyUtil.createFormlyGroupType(tab.fields, formEditorComponent));\n tabsField.fieldGroup!.push(tabField);\n }\n return [tabsField];\n }\n\n public static createFormlyGroupType(groups: FieldGroupDescriptor<any>[], formEditorComponent: IFormEditorComponent<unknown>): FormlyFieldConfig[] {\n if (groups.length === 1 && groups[0].default) {\n // dont use fieldset, just create fields\n return EditorFormlyUtil.createFormlyFields(groups[0], formEditorComponent);\n } else {\n const groupsField: CommonsFormlyFieldConfig = {\n type: 'fieldset',\n fieldGroup: [],\n props: {\n formEditorComponent\n },\n expressions: {}\n };\n for (const group of groups) {\n const groupField: CommonsFormlyFieldConfig = {\n id: group.name,\n props: {\n descriptor: group\n },\n expressions: {},\n fieldGroup: []\n };\n if (group.title) {\n groupField.props.label = group.title;\n }\n groupField.fieldGroup!.push(...EditorFormlyUtil.createFormlyFields(group, formEditorComponent));\n groupsField.fieldGroup!.push(groupField);\n }\n return [groupsField];\n }\n }\n\n public static createFormlyFields(descriptor: FieldGroupDescriptor<any>, formEditorComponent: IFormEditorComponent<unknown>): FormlyFieldConfig[] {\n const fields: FormlyFieldConfig[] = [];\n for (const descriptorField of descriptor.fields) {\n fields.push(EditorFormlyUtil.createFormlyField(descriptorField, formEditorComponent));\n }\n // wrap in group to be able to use flex grid\n const wrapperGroup: FormlyFieldConfig = {\n fieldGroupClassName: 'p-fluid formgrid grid',\n fieldGroup: fields\n };\n\n EditorFormlyUtil.addValidationsToFormlyField(wrapperGroup, descriptor.validations);\n\n return [wrapperGroup];\n }\n\n public static createFormlyField(descriptor: AFieldDescriptor<any, any>, formEditorComponent: IFormEditorComponent<unknown>): FormlyFieldConfig {\n const field: CommonsFormlyFieldConfig = {\n key: descriptor.property,\n modelOptions: {\n updateOn: descriptor.updateOn\n },\n hooks: {\n onInit: () => (descriptor.onInit ? descriptor.onInit(field) : undefined),\n onChanges: () => (descriptor.onChanges ? descriptor.onChanges(field) : undefined),\n afterContentInit: () => (descriptor.afterContentInit ? descriptor.afterContentInit(field) : undefined),\n afterViewInit: () => (descriptor.afterViewInit ? descriptor.afterViewInit(field) : undefined),\n onDestroy: () => (descriptor.onDestroy ? descriptor.onDestroy(field) : undefined)\n },\n props: {\n descriptor,\n formEditorComponent,\n onValueChange: descriptor.onValueChange\n },\n expressions: {}\n };\n\n let className = descriptor.className;\n if (!className) {\n // assign default field width through entire row\n className = 'col-12';\n }\n field.className = className;\n\n if (descriptor instanceof FieldInputDescriptor) {\n switch (descriptor.fieldType) {\n case FieldInputTypeEnum.Hidden:\n break;\n case FieldInputTypeEnum.Label:\n field.type = 'label';\n delete field.key;\n break;\n case FieldInputTypeEnum.Textarea:\n field.type = 'textarea';\n field.props.maxLength = descriptor.maxLength;\n field.props.minLength = descriptor.minLength;\n field.props.pattern = descriptor.pattern;\n break;\n case FieldInputTypeEnum.Number:\n field.type = 'number';\n field.props.min = descriptor.numberMin;\n field.props.max = descriptor.numberMax;\n break;\n case FieldInputTypeEnum.Currency:\n field.type = 'currency';\n field.props.min = descriptor.numberMin;\n field.props.max = descriptor.numberMax;\n break;\n case FieldInputTypeEnum.Switch:\n field.type = 'switch';\n field.defaultValue = false;\n break;\n case FieldInputTypeEnum.Radio:\n field.type = 'radio';\n break;\n case FieldInputTypeEnum.Datepicker:\n field.type = 'datepicker';\n break;\n case FieldInputTypeEnum.Mask:\n field.type = 'mask';\n break;\n case FieldInputTypeEnum.File:\n case FieldInputTypeEnum.ImageFile:\n field.type = 'file';\n break;\n case FieldInputTypeEnum.ImageUrl:\n field.type = 'imageUrl';\n break;\n case FieldInputTypeEnum.Custom:\n if (descriptor.customComponentType) {\n field.type = 'custom';\n field.props['customComponentType'] = descriptor.customComponentType;\n if (Array.isArray(descriptor.customComponentWrappers)) {\n field.wrappers = descriptor.customComponentWrappers;\n } else {\n // default wrapper\n field.wrappers = ['field'];\n }\n }\n break;\n default:\n field.type = 'input';\n field.props.minLength = descriptor.minLength;\n field.props.maxLength = descriptor.maxLength;\n field.props.pattern = descriptor.pattern;\n break;\n }\n } else if (descriptor instanceof FieldActionDescriptor) {\n field.type = 'action';\n field.wrappers = descriptor.wrappers;\n delete field.key;\n } else if (descriptor instanceof FieldLookupEnumDescriptor) {\n switch (descriptor.lookupType) {\n case FieldLookupTypeEnum.Custom:\n field.type = descriptor.customComponentName;\n break;\n default:\n field.type = 'enum';\n break;\n }\n } else if (descriptor instanceof FieldLookupDescriptor) {\n switch (descriptor.lookupType) {\n case FieldLookupTypeEnum.Autocomplete:\n field.type = 'autocomplete';\n break;\n case FieldLookupTypeEnum.Dialog:\n field.type = 'dialog';\n break;\n case FieldLookupTypeEnum.Custom:\n field.type = descriptor.customComponentName;\n break;\n case FieldLookupTypeEnum.Dropdown:\n default:\n field.type = 'dropdown';\n break;\n }\n } else if (descriptor instanceof FieldManyToManyEditorDescriptor) {\n field.type = 'table-dialog-multiselect';\n } else if (descriptor instanceof FieldManyEditorDescriptor) {\n field.type = 'table-dialog-form';\n }\n\n if (descriptor.label) {\n field.props.label = descriptor.label;\n }\n\n if (descriptor.requiredExpression) {\n field.expressions!['props.required'] = descriptor.requiredExpression;\n }\n if (descriptor.required) {\n field.props!.required = true;\n if (descriptor.requiredHideLabelMarker) {\n field.props!['hideRequiredMarker'] = true;\n }\n }\n\n if (descriptor.hiddenExpression) {\n field.expressions!['hide'] = descriptor.hiddenExpression;\n }\n\n if (descriptor.disabledExpression) {\n field.expressions!['props.disabled'] = descriptor.disabledExpression;\n } else if (descriptor.disabled) {\n field.props.disabled = true;\n } else {\n field.expressions!['props.disabled'] = 'formState.disabled';\n }\n\n if (typeof descriptor.defaultValue !== 'undefined') {\n field.defaultValue = descriptor.defaultValue;\n }\n\n EditorFormlyUtil.addValidationsToFormlyField(field, descriptor.validations);\n EditorFormlyUtil.addAsyncValidationsToFormlyField(field, descriptor.asyncValidations);\n\n return field;\n }\n\n public static addValidationsToFormlyField(config: FormlyFieldConfig, validations: Array<FieldValidationDescriptor>) {\n if (!config.validators) {\n config.validators = {};\n }\n\n for (const validation of validations) {\n if (typeof validation.validator === 'function') {\n config.validators[validation.name] = {\n expression: (\n control: AbstractControl,\n field: FormlyFieldConfig,\n options?: {\n [id: string]: any;\n }\n ) => {\n const validatorRes = validation.validator!(control, field, options);\n // formly validator only excepts true/false for validation\n // map possible angular validator result to true/false\n return typeof validatorRes === 'boolean' ? validatorRes : validatorRes === null;\n }\n };\n if (typeof validation.message === 'function') {\n config.validators[validation.name].message = validation.message;\n }\n } else {\n if (!Array.isArray(config.validators.validation)) {\n config.validators.validation = [];\n }\n config.validators.validation.push(validation.name);\n }\n }\n }\n\n public static addAsyncValidationsToFormlyField(config: FormlyFieldConfig, asyncValidations: Array<FieldValidationDescriptor>) {\n if (!config.asyncValidators) {\n config.asyncValidators = {};\n }\n\n for (const validation of asyncValidations) {\n if (typeof validation.validator === 'function') {\n config.asyncValidators[validation.name] = {\n expression: (\n control: AbstractControl,\n field: FormlyFieldConfig,\n options?: {\n [id: string]: any;\n }\n ) => {\n const validator = <FieldAsyncValidator>validation.validator;\n\n const validatorObs: Observable<ValidationErrors | boolean | null> = validator(control, field, options);\n // formly validator only excepts true/false for validation\n // map possible angular validator result to true/false\n return validatorObs.pipe(map(value => (typeof value === 'boolean' ? value : value === null)));\n }\n };\n if (typeof validation.message === 'function') {\n config.asyncValidators[validation.name].message = validation.message;\n }\n } else {\n if (!Array.isArray(config.asyncValidators.validation)) {\n config.asyncValidators.validation = [];\n }\n config.asyncValidators.validation.push(validation.name);\n }\n }\n }\n}\n","import {AsyncPipe} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n Type,\n ViewChild,\n inject\n} from '@angular/core';\nimport {AbstractControl, FormArray, FormGroup, ReactiveFormsModule} from '@angular/forms';\n\nimport {FormlyFieldConfig, FormlyFormOptions, FormlyModule} from '@ngx-formly/core';\nimport {TranslateService} from '@ngx-translate/core';\nimport {Message} from 'primeng/api';\nimport {ButtonModule} from 'primeng/button';\nimport {MessagesModule} from 'primeng/messages';\nimport {Observable, Subscription, debounceTime, distinctUntilChanged, of} from 'rxjs';\n\nimport {CommonsService, LoggerService, ObjectUtil, TemplateDirective} from '@mediusinc/mng-commons/core';\nimport {\n CommonsFormlyFieldConfig,\n EditorDescriptorInst,\n FormEditorSubmitEvent,\n FormEventTypeEnum,\n FormFieldEventComponentSubtype,\n IFormEditorComponent,\n TableviewEditorTypeEnum\n} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ViewContainer} from '../../../action/services/view-container.service';\nimport {getFormEditorInfoMessage, getFormEditorWarningMessage} from '../../helpers/notification';\nimport {EditorFormlyUtil} from '../../utils/editor-formly.util';\n\n@Component({\n standalone: true,\n selector: 'mng-form-editor',\n templateUrl: './form-editor.component.html',\n imports: [FormlyModule, ReactiveFormsModule, MessagesModule, AsyncPipe, ButtonModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormEditorComponent<Item = any> implements IFormEditorComponent<Item>, OnInit, OnChanges, OnDestroy {\n private readonly translateService = inject(TranslateService);\n private readonly commons = inject(CommonsService);\n private readonly logger = inject(LoggerService).create('FormEditorComponent');\n private viewContainer = inject(ViewContainer, {optional: true});\n\n // metadata and editor mode input\n @Input() public descriptor?: EditorDescriptorInst<Item>;\n @Input() public submitLoading: Observable<boolean> | boolean = false;\n\n // data source inputs;\n @Input() public item?: Item;\n\n // extra features input\n @Input() public isFormDisabled = false;\n\n // event outputs\n @Output('formSubmit') public formSubmitEventEmitter = new EventEmitter<FormEditorSubmitEvent<Item>>();\n\n // content and view queries\n @ContentChildren(TemplateDirective) public templates!: QueryList<TemplateDirective>;\n @ViewChild('submitButton') public submitButtonElementRef?: ElementRef;\n\n public form: FormGroup = new FormGroup({});\n public formOptions: FormlyFormOptions = {\n formState: {\n add: false,\n edit: false,\n disabled: false\n }\n };\n public formFields!: FormlyFieldConfig[];\n public formModel: any = {};\n public formMessages: Message[] = [];\n public submitLoading$!: Observable<boolean>;\n private originalItemPrototype?: Type<Item>;\n\n private subscriptions: Subscription[] = [];\n\n public ngOnInit() {\n this.setInitialFormState();\n this.resetFormModel(this.item);\n this.submitLoading$ = this.submitLoading instanceof Observable ? this.submitLoading : of(this.submitLoading);\n\n if (this.descriptor) {\n // init fields for formly\n this.formFields = EditorFormlyUtil.createFormlyConfigFromDescriptor(this.descriptor, this);\n this.updateFormState();\n\n // let the user know, that adding new value in table view with localizations is only supported in the default language\n if (\n this.descriptor.isLocalized &&\n (this.descriptor.tableviewEditorType === TableviewEditorTypeEnum.Add || this.descriptor.tableviewEditorType === TableviewEditorTypeEnum.Edit)\n ) {\n this.formMessages.push(\n getFormEditorInfoMessage(\n this.translateService,\n 'mngEditor.localizations.addInDefaultLanguageTitle',\n 'mngEditor.localizations.addInDefaultLanguageDescription',\n {defaultLanguage: this.commons.defaultDataLanguage}\n )\n );\n }\n }\n\n // emit lifecycle event\n this.descriptor?.nextEvent(FormEventTypeEnum.ComponentLifecycle, FormEditorComponent, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_INIT\n });\n\n this.subscriptions.push(\n this.form.valueChanges.pipe(debounceTime(250), distinctUntilChanged()).subscribe(v => {\n this.descriptor?.nextEvent(FormEventTypeEnum.ValueChange, FormEditorComponent, this, {\n value: v,\n formValue: () => this.getFormValue()\n });\n })\n );\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['isFormDisabled'] && !changes['isFormDisabled'].firstChange) {\n this.updateFormState();\n }\n if (changes['item'] && !changes['item'].firstChange) {\n this.resetFormModel(this.item);\n }\n }\n\n public ngOnDestroy() {\n this.subscriptions.forEach(s => s.unsubscribe());\n\n // emit lifecycle event\n this.descriptor?.nextEvent(FormEventTypeEnum.ComponentLifecycle, FormEditorComponent, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_DESTROY\n });\n // complete emitting events\n this.descriptor?.completeEvents();\n }\n\n public submit() {\n this.submitButtonElementRef?.nativeElement.click();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public onSubmit(event: Event) {\n this.formOptions.formState.submittedOn = Date.now();\n this.formMessages = [];\n\n const formSubmitItem = this.getFormValue();\n if (this.form.valid) {\n this.formSubmitEventEmitter.next({\n success: true,\n formItem: formSubmitItem\n });\n this.descriptor?.nextEvent(FormEventTypeEnum.Submit, FormEditorComponent, this, {\n submitValid: true,\n submitValue: formSubmitItem\n });\n } else {\n // find and mark invalid tabs\n if (this.formFields[0].type === 'tabs' && this.formFields[0].fieldGroup) {\n for (const tab of this.formFields[0].fieldGroup) {\n const isInvalid = this.isAnyFieldInvalid(tab.fieldGroup);\n this.formOptions.formState['tab_' + (tab.id ? tab.id : (tab.props as CommonsFormlyFieldConfig).props.label) + '_invalid'] = isInvalid;\n }\n }\n const event: FormEditorSubmitEvent<Item> = {success: false, formItem: formSubmitItem};\n event.success = false;\n this.formMessages.push(getFormEditorWarningMessage(this.translateService, 'mngEditor.invalidFormToastTitle', 'mngEditor.invalidFormToastMessage'));\n\n this.formSubmitEventEmitter.next(event);\n this.descriptor?.nextEvent(FormEventTypeEnum.Submit, FormEditorComponent, this, {\n submitValid: false,\n submitValue: formSubmitItem\n });\n }\n }\n\n public getFormValue(): Item {\n const formValue = ObjectUtil.deepCopy(this.form.getRawValue(), {mapGettersToProperties: true});\n\n this.descriptor?.fields.forEach(field => {\n if (field && field.setter) {\n const splitPath = field.property.split('.');\n let fieldValue = formValue;\n for (let i = 0; i < splitPath.length - 1; i++) {\n const currentSubPath = splitPath[i];\n if (typeof fieldValue[currentSubPath] !== 'object') {\n fieldValue[currentSubPath] = {};\n }\n\n fieldValue = fieldValue[currentSubPath];\n }\n\n fieldValue = fieldValue[splitPath[splitPath.length - 1]];\n field.setter(formValue, fieldValue);\n }\n });\n return formValue;\n }\n\n public resetFormModel(item?: Item, markAsPristine = true) {\n if (typeof item !== 'undefined') {\n this.originalItemPrototype = Object.getPrototypeOf(item);\n }\n\n const formModel = (ObjectUtil.deepCopy(item, {mapGettersToProperties: true}) as Record<string, any>) ?? {};\n\n this.descriptor?.fields.forEach(field => {\n if (field.getter && item) {\n const splitPath = field.property.split('.');\n let currentObject = formModel;\n\n for (let i = 0; i < splitPath.length; i++) {\n const currentSubPath = splitPath[i];\n if (i === splitPath.length - 1) {\n currentObject[currentSubPath] = field.getter(item?.[field.property as keyof object], item);\n } else {\n if (typeof currentObject[currentSubPath] !== 'object') {\n currentObject[currentSubPath] = {};\n }\n\n currentObject = currentObject[currentSubPath];\n }\n }\n }\n });\n if (typeof this.formOptions.resetModel === 'function') {\n // could not be initiated yet\n this.formOptions.resetModel(this.formModel);\n }\n this.formModel = formModel;\n if (markAsPristine) {\n this.form.markAsPristine();\n }\n }\n\n public getFormField(key: string) {\n return this.findFormField(this.form, key.split('.'));\n }\n\n public setFormFieldValue(key: string, value: any) {\n const control = this.getFormField(key);\n if (control) {\n control.setValue(value);\n return true;\n } else {\n this.logger.warn(`Value was not set, because field ${key} was not found.`);\n return false;\n }\n }\n\n public patchFormFieldValue(key: string, value: any) {\n const control = this.getFormField(key);\n if (control) {\n control.patchValue(value);\n return true;\n } else {\n this.logger.warn(`Value was not set, because field ${key} was not found.`);\n return false;\n }\n }\n\n public resetFormFieldValue(key: string, value?: any) {\n const control = this.getFormField(key);\n if (control) {\n control.reset(value);\n return true;\n } else {\n this.logger.warn(`Value was not set, because field ${key} was not found.`);\n return false;\n }\n }\n\n private findFormField(control: AbstractControl, keyPath: string[]): AbstractControl | null {\n if (keyPath.length === 0) {\n return control;\n }\n if (keyPath.length === 1) {\n return control.get(keyPath[0]);\n }\n let nextControl: AbstractControl | null = null;\n if (control instanceof FormGroup) {\n nextControl = control.get(keyPath[0]);\n } else if (control instanceof FormArray) {\n const idx = +keyPath[0];\n if (!isNaN(idx)) {\n nextControl = control.at(idx);\n }\n }\n\n if (!control) {\n return null;\n }\n return this.findFormField(nextControl!, keyPath.slice(1));\n }\n\n private isAnyFieldInvalid(fields: FormlyFieldConfig[] = []): boolean {\n for (const field of fields) {\n let fieldInvalid = false;\n if (Array.isArray(field.fieldGroup)) {\n fieldInvalid = this.isAnyFieldInvalid(field.fieldGroup);\n } else if (typeof field.type !== 'undefined') {\n fieldInvalid = !field.formControl?.valid;\n }\n if (fieldInvalid) {\n return true;\n }\n }\n return false;\n }\n\n private updateFormState() {\n const isDisabled = this.isFormDisabled || this.descriptor?.disabled === true || this.descriptor?.tableviewEditorType === TableviewEditorTypeEnum.Details;\n this.formOptions.formState.disabled = isDisabled;\n }\n\n /**\n * @private Sets form state based on editor descriptor type.\n * Possible options are: disabled, add or edit.\n */\n private setInitialFormState(): void {\n if (this.descriptor?.tableviewEditorType === TableviewEditorTypeEnum.Add) {\n this.formOptions.formState.add = true;\n } else if (this.descriptor?.tableviewEditorType === TableviewEditorTypeEnum.Edit) {\n this.formOptions.formState.edit = true;\n }\n this.updateFormState();\n }\n}\n","<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit($event)\">\n <formly-form [form]=\"form\" [fields]=\"formFields\" [options]=\"formOptions\" [model]=\"formModel\"></formly-form>\n <button\n #submitButton\n pButton\n type=\"submit\"\n class=\"hidden\"\n [disabled]=\"form.disabled\"\n [loading]=\"(submitLoading$ | async) ?? false\"\n loadingIcon=\"pi pi-spin pi-spinner\"></button>\n</form>\n<p-messages [value]=\"formMessages\" [enableService]=\"false\"></p-messages>\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n WritableSignal,\n effect,\n inject,\n signal\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {ActivatedRoute} from '@angular/router';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {ConfirmationService} from 'primeng/api';\nimport {DialogService, DynamicDialogConfig} from 'primeng/dynamicdialog';\nimport {ProgressSpinnerModule} from 'primeng/progressspinner';\nimport {ToolbarModule} from 'primeng/toolbar';\nimport {ZIndexUtils} from 'primeng/utils';\nimport {Observable, Subject, Subscription, of} from 'rxjs';\nimport {take} from 'rxjs/operators';\n\nimport {ActionData, ActionParameters, CommonsInternalError, CommonsService, ComponentDirective, IDataProvider, IdType, LoggerService} from '@mediusinc/mng-commons/core';\nimport {\n ActionActivationTriggerEnum,\n ActionDescriptorInst,\n ActionEditorDescriptorInst,\n ActionEditorSubmitDescriptorInst,\n ActionEditorSubmitTypeEnum,\n ActionPositionEnum,\n ActionTypeEnum,\n FormEditorSubmitEvent,\n IActionEditorComponent,\n IActionInstance\n} from '@mediusinc/mng-commons/tableview/api';\n\nimport {FormEditorComponent} from '../../../../editor/components/editor/form-editor.component';\nimport {ActionInstanceStateEnum} from '../../../models/execution/action-instance-state.model';\nimport {ActionInstance} from '../../../models/execution/action-instance.model';\nimport {ActionExecutorService} from '../../../services/action-executor.service';\nimport {provideActionExecutor} from '../../../services/providers/provide-action-executor';\nimport {ViewContainer} from '../../../services/view-container.service';\nimport {I18nUtils} from '../../../utils/i18n.util';\nimport {ActionComponent} from '../../action/action.component';\n\n@Component({\n standalone: true,\n selector: 'mng-action-editor-injector-context',\n templateUrl: './action-editor-injector-context.component.html',\n styleUrls: ['action-editor-injector-context.component.scss'],\n imports: [ActionComponent, ProgressSpinnerModule, FormEditorComponent, ComponentDirective, ToolbarModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [provideActionExecutor()]\n})\nexport class ActionEditorInjectorContextComponent<Item = any, Service = any> implements OnInit, OnDestroy, IActionEditorComponent {\n protected readonly ActionActivationTriggerEnum = ActionActivationTriggerEnum;\n public readonly actionEditorSubmitTypeSubmit = ActionEditorSubmitTypeEnum.Submit;\n\n private readonly destroyRef = inject(DestroyRef);\n private readonly route = inject(ActivatedRoute);\n private readonly translate = inject(TranslateService);\n private readonly confirmationService = inject(ConfirmationService);\n private readonly dialogService = inject(DialogService);\n private readonly logger = inject(LoggerService).create('ActionEditorInjectorContextComponent');\n private readonly commonsService = inject(CommonsService);\n private readonly actionExecutor = inject(ActionExecutorService);\n private readonly viewContainer = inject(ViewContainer, {optional: true});\n\n // metadata and editor mode input\n @Input({required: true}) data!: ActionEditorInjectorContextInputData<Item, Service>;\n\n @Output('actionSubmit') public actionRunEventEmitter = new EventEmitter<Item | null | undefined>();\n @Output('actionCancel') public actionCancelEventEmitter = new EventEmitter<Item | null | undefined>();\n\n // content and view queries\n @ViewChild('submitButton') public submitButtonElementRef!: ElementRef;\n @ViewChild(FormEditorComponent) public formEditorCmp?: FormEditorComponent;\n\n public title: WritableSignal<string | undefined> = signal(undefined);\n public isFormDisabled = signal(false);\n\n // data\n public item: WritableSignal<Item | undefined> = signal(undefined);\n public itemId: WritableSignal<IdType | undefined> = signal(undefined);\n public actionData: WritableSignal<ActionData | undefined> = signal(undefined);\n\n // actions\n public toolbarLeftActions: WritableSignal<ActionDescriptorInst<Item, Service>[]> = signal([]);\n public toolbarRightActions: WritableSignal<ActionDescriptorInst<Item, Service>[]> = signal([]);\n public footerLeftActions: WritableSignal<ActionDescriptorInst<Item, Service>[]> = signal([]);\n public footerRightActions: WritableSignal<ActionDescriptorInst<Item, Service>[]> = signal([]);\n private instance?: ActionInstance<Item, Service>;\n private instanceStateSubscription?: Subscription;\n private instanceReactivationSubscription?: Subscription;\n private instanceSubmitFormItem?: Item | null;\n private instanceSubmitResult?: Item | null;\n\n public loading = signal(false);\n private fetchExecutionSubscription?: Subscription;\n public submitLoading = signal(false);\n private submitExecutionSubscription?: Subscription;\n\n constructor() {\n effect(() => {\n const title = this.title();\n requestAnimationFrame(() => {\n if (this.data.dialogConfig) {\n this.data.dialogConfig.header = title;\n }\n if (this.data.descriptor.activationTrigger === ActionActivationTriggerEnum.OnRoute) {\n this.commonsService.setPageTitle(title);\n }\n });\n });\n }\n\n ngOnInit() {\n if (this.data.actionInstance) {\n this.processActionInstance(this.data.actionInstance);\n }\n\n if (!this.data.dataProvider) {\n this.data.dataProvider = this.viewContainer?.dataProvider;\n }\n\n this.item.set(this.data.item);\n this.itemId.set(this.data.itemId);\n this.actionData.set(this.data.actionData);\n\n // arrange the sub-actions\n this.initializeSubActions();\n\n // notify executor to for activation to end\n this.processActionInstance(this.actionExecutor.onActionEditorInit(this.data.descriptor, this.instance, this));\n\n // set title\n this.updateTitle();\n\n // subscribe to events that could be triggered from outside from any reason\n this.viewContainer?.editorReset$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe({\n next: e => {\n if (e.fetch) {\n this.fetchItem();\n } else if (e.item) {\n this.formEditorCmp?.resetFormModel(e.item);\n } else if (e.fields) {\n for (const key in e.fields) {\n this.formEditorCmp?.resetFormFieldValue(key, e.fields[key]);\n }\n }\n }\n });\n\n this.viewContainer?.editorClose$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe({\n next: () => {\n this.cancel();\n }\n });\n }\n\n public ngOnDestroy() {\n this.fetchExecutionSubscription?.unsubscribe();\n this.submitExecutionSubscription?.unsubscribe();\n const instance = this.instance;\n this.unsetInstance();\n this.actionExecutor.onActionEditorDestroy(instance);\n }\n\n public onSubmit(event: FormEditorSubmitEvent<Item>) {\n if (!this.instance) {\n throw new CommonsInternalError(`Action is not instantiated in action editor for action ${this.data.descriptor.actionName}.`);\n }\n if (event.success) {\n this.instanceSubmitFormItem = event.formItem;\n\n // prepare parameters\n const actionParameters: ActionParameters<Item> = {\n itemId: this.itemId(),\n item: event.formItem,\n actionData: this.actionData()\n };\n if (this.data.descriptor.editorDescriptor.isLocalized) {\n actionParameters.locale = this.commonsService.appDataLanguageDefault;\n }\n\n const context = this.actionExecutor.prepareContextForEditorSubmit(\n this.data.descriptor,\n actionParameters,\n this.data.dataProvider,\n this.instance,\n this.data.previousActionInstance\n );\n\n this.submitExecutionSubscription?.unsubscribe();\n this.submitExecutionSubscription = context.execution$.pipe(take(1)).subscribe({\n next: res => {\n if (res && typeof res === 'object' && !this.itemId() && this.data.descriptor.model?.idProperty) {\n // to cover creation!\n this.updateItemId(res[this.data.descriptor.model.idProperty as keyof object]);\n }\n this.actionRunEventEmitter.next(res);\n this.instanceSubmitResult = res;\n }\n });\n\n this.actionExecutor.run(context);\n }\n }\n\n public cancel() {\n if (!this.instance) {\n this.logger.warn(`Action editor cannot be canceled for ${this.data.descriptor.actionName}, because no action instance is present`);\n return;\n }\n this.actionCancelEventEmitter.next(undefined);\n this.actionExecutor.finishAction(this.instance);\n }\n\n public updateItemId(itemId: IdType | undefined) {\n this.itemId.set(itemId);\n }\n\n public updateItem(item: Item | undefined) {\n this.item.set(item);\n }\n\n public triggerSubmit() {\n this.formEditorCmp?.submit();\n }\n\n private initializeSubActions() {\n for (const action of this.data.descriptor.editorActions) {\n if (action instanceof ActionEditorSubmitDescriptorInst) {\n if (typeof action.button.icon === 'undefined') {\n action.button.withIcon(action.submitType === ActionEditorSubmitTypeEnum.Submit ? 'pi pi-check' : 'pi pi-times');\n }\n if (typeof action.button.label === 'undefined') {\n action.button.withLabel(action.submitType === ActionEditorSubmitTypeEnum.Submit ? 'general.save' : this.data.isDialog ? 'general.close' : 'general.cancel');\n }\n\n // assign run operations\n action.withRunNotificationSuccess(undefined, undefined, false);\n if (action.submitType === ActionEditorSubmitTypeEnum.Submit) {\n action.withRunFunction(() => {\n this.triggerSubmit();\n return of(null);\n });\n } else {\n action.withRunFunction(() => {\n this.closeWithUnsavedChangesConfirmation();\n return of(null);\n });\n }\n }\n this.placeActionsOnPositions(action);\n }\n\n for (const action of this.viewContainer?.actions.filter(value => value.positionTableviewCategories?.includes(this.data.descriptor.tableviewCategory!)) ?? []) {\n this.placeActionsOnPositions(action);\n }\n\n this.toolbarRightActions.update(v => v.reverse());\n this.footerRightActions.update(v => v.reverse());\n }\n\n private fetchItem() {\n if (!this.instance) {\n throw new CommonsInternalError(`Action is not instantiated in action editor for action ${this.data.descriptor.actionName}.`);\n }\n\n const actionParameters: ActionParameters<Item> = {\n itemId: this.itemId(),\n item: this.item(),\n actionData: this.actionData()\n };\n if (this.data.descriptor.editorDescriptor.isLocalized) {\n if (this.data.descriptor.editorDescriptor.disabled) {\n actionParameters.locale = this.commonsService.appDataLanguage!;\n } else {\n actionParameters.locale = this.commonsService.appDataLanguageDefault;\n }\n }\n if (this.instance?.previousInstance instanceof ActionInstance && this.instance.previousInstance.context?.parameters.item) {\n actionParameters.formItem = this.instance.previousInstance.context.parameters.item;\n }\n if (typeof this.instance?.previousInstance?.result !== 'undefined') {\n actionParameters.submitResult = this.instance?.previousInstance?.result;\n }\n\n const context = this.actionExecutor.prepareContextForEditorFetch(\n this.data.descriptor,\n actionParameters,\n this.data.dataProvider,\n this.instance,\n this.data.previousActionInstance\n );\n this.fetchExecutionSubscription?.unsubscribe();\n this.fetchExecutionSubscription = context.execution$.pipe(take(1)).subscribe(res => {\n this.updateItem(res ?? undefined);\n this.updateTitle();\n });\n\n this.actionExecutor.run(context);\n }\n\n private updateTitle() {\n if (this.data.descriptor.editorTitle === null) {\n this.title.set(undefined);\n return;\n }\n I18nUtils.Action.getEditorTitleAsync(this.translate, this.data.descriptor, this.item()).subscribe(t => {\n this.title.set(t ?? undefined);\n });\n }\n\n private placeActionsOnPositions(action: ActionDescriptorInst<any>) {\n switch (action.position) {\n case ActionPositionEnum.ToolbarLeft:\n this.toolbarLeftActions.update(v => [...v, action]);\n break;\n case ActionPositionEnum.ToolbarRight:\n this.toolbarRightActions.update(v => [...v, action]);\n break;\n case ActionPositionEnum.FooterLeft:\n this.footerLeftActions.update(v => [...v, action]);\n break;\n case ActionPositionEnum.FooterRight:\n this.footerRightActions.update(v => [...v, action]);\n break;\n }\n }\n\n private setEditorEnabled(isEnabled = true) {\n this.isFormDisabled.set(!isEnabled);\n }\n\n private processActionInstance(instance: IActionInstance<Item, Service>) {\n if (!(instance instanceof ActionInstance)) {\n throw new CommonsInternalError('Unknown type of action instance received', {details: instance});\n }\n if (!this.instance || this.instance.instanceLongName !== instance.instanceLongName) {\n this.unsetInstance();\n this.instance = instance;\n\n this.instanceStateSubscription = this.instance.state$.subscribe(s => {\n switch (s) {\n case ActionInstanceStateEnum.ActivationEnd:\n this.fetchItem();\n break;\n case ActionInstanceStateEnum.FetchStart:\n this.setEditorEnabled(false);\n this.loading.set(true);\n break;\n case ActionInstanceStateEnum.FetchError:\n this.loading.set(false);\n break;\n case ActionInstanceStateEnum.FetchEnd:\n this.setEditorEnabled(true);\n this.loading.set(false);\n break;\n case ActionInstanceStateEnum.RunStart:\n this.setEditorEnabled(false);\n this.submitLoading.set(true);\n break;\n case ActionInstanceStateEnum.RunEnd:\n case ActionInstanceStateEnum.RunError:\n this.setEditorEnabled(true);\n this.submitLoading.set(false);\n break;\n case ActionInstanceStateEnum.NextActionStart:\n if (this.instance?.nextActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.submitLoading.set(true);\n }\n break;\n case ActionInstanceStateEnum.NextActionEnd:\n if (this.instance?.nextActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.submitLoading.set(false);\n }\n break;\n case ActionInstanceStateEnum.ErrorActionStart:\n if (this.instance?.errorActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.submitLoading.set(true);\n }\n break;\n case ActionInstanceStateEnum.ErrorActionEnd:\n if (this.instance?.errorActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.submitLoading.set(false);\n }\n break;\n case ActionInstanceStateEnum.FinishErrorFinal:\n this.setEditorEnabled(false);\n break;\n case ActionInstanceStateEnum.FinishSuccessFinal:\n case ActionInstanceStateEnum.FinishDismissedFinal:\n this.setEditorEnabled(false);\n this.unsetInstance();\n break;\n case ActionInstanceStateEnum.FinishSuccessReactivateFinal:\n this.setEditorEnabled(false);\n // should also unsetInstance, but let this for reactivationInstance$ listener to not interfere\n break;\n }\n });\n\n this.instanceReactivationSubscription = this.instance.reactivationInstance$.subscribe(newInstance => {\n this.processActionInstance(newInstance);\n });\n }\n }\n\n private unsetInstance() {\n this.instance = undefined;\n this.instanceStateSubscription?.unsubscribe();\n this.instanceReactivationSubscription?.unsubscribe();\n }\n\n @HostListener('window:beforeunload')\n private beforeWindowUnload() {\n if (this.data.isDialog && this.formEditorCmp?.form.pristine === false) {\n return confirm(this.translate.instant('mngEditor.unsavedChangesConfirmation.message'));\n }\n return true;\n }\n\n @HostListener('window:keydown.Escape')\n private onEscapePressed() {\n if (\n this.data.isDialog &&\n this.data.descriptor.activationTrigger === ActionActivationTriggerEnum.OnRoute &&\n this.instance?.activationDialogRef &&\n parseInt(this.dialogService.dialogComponentRefMap.get(this.instance?.activationDialogRef)?.instance.container?.style.zIndex ?? '') === ZIndexUtils.getCurrent()\n )\n this.closeWithUnsavedChangesConfirmation();\n }\n\n private showUnsavedChangesConfirmationDialog(callFromGuard: boolean): Observable<boolean> {\n const subject = new Subject<boolean>();\n this.confirmationService.confirm({\n header: this.translate.instant('mngEditor.unsavedChangesConfirmation.header'),\n message: this.translate.instant('mngEditor.unsavedChangesConfirmation.message'),\n acceptLabel: this.translate.instant('general.yes'),\n rejectLabel: this.translate.instant('general.no'),\n icon: 'pi pi-exclamation-triangle',\n accept: () => {\n if (!callFromGuard) {\n this.cancel();\n }\n subject.next(true);\n subject.complete();\n },\n reject: () => {\n subject.next(false);\n subject.complete();\n }\n });\n return subject.asObservable();\n }\n\n public closeWithUnsavedChangesConfirmation(callFromGuard = false): Observable<boolean> {\n if (this.formEditorCmp?.form.pristine === false && this.data.descriptor.unsavedChangesConfirmation) {\n return this.showUnsavedChangesConfirmationDialog(callFromGuard);\n } else {\n if (!callFromGuard) {\n this.cancel();\n }\n }\n\n return of(true);\n }\n}\n\nexport interface ActionEditorInjectorContextInputData<Item, Service> {\n descriptor: ActionEditorDescriptorInst<Item, Service>;\n isDialog: boolean;\n dialogConfig?: DynamicDialogConfig;\n itemId?: IdType;\n item?: Item;\n actionData?: ActionData;\n dataProvider?: IDataProvider<Item, Service>;\n actionInstance?: ActionInstance<Item, Service>;\n previousActionInstance?: IActionInstance<any, any>;\n}\n","@if (!data.isDialog && title()) {\n <h5>{{ title() }}</h5>\n}\n@if (data.isDialog && data.descriptor.activationTrigger === ActionActivationTriggerEnum.OnRoute) {\n <span class=\"p-dialog-header dialog-close-button-wrapper\">\n <button\n class=\"p-dialog-header-icon p-dialog-header-maximize p-link\"\n type=\"button\"\n (click)=\"closeWithUnsavedChangesConfirmation()\"\n (keydown.enter)=\"closeWithUnsavedChangesConfirmation()\">\n <span class=\"p-dialog-header-close-icon pi pi-times\"></span>\n </button>\n </span>\n}\n<div class=\"h-full flex flex-column\">\n @if (toolbarLeftActions().length > 0 || toolbarRightActions().length > 0) {\n <div class=\"flex-grow-1 mng-action-editor-toolbar-container\">\n <p-toolbar styleClass=\"mng-action-editor-toolbar\">\n <ng-template pTemplate=\"left\">\n @for (action of toolbarLeftActions(); track action) {\n <mng-action\n [action]=\"action\"\n [disabled]=\"submitLoading()\"\n [loading]=\"$any(action).submitType === actionEditorSubmitTypeSubmit ? submitLoading() : false\"\n [hostComponent]=\"this\"\n [item]=\"item()\"\n [itemId]=\"itemId()\"></mng-action>\n }\n </ng-template>\n <ng-template pTemplate=\"right\">\n @for (action of toolbarRightActions(); track action) {\n <mng-action\n [action]=\"action\"\n [disabled]=\"submitLoading()\"\n [loading]=\"$any(action).submitType === actionEditorSubmitTypeSubmit ? submitLoading() : false\"\n [hostComponent]=\"this\"\n [item]=\"item()\"\n [itemId]=\"itemId()\"></mng-action>\n }\n </ng-template>\n </p-toolbar>\n </div>\n }\n\n <div class=\"flex-grow-1 mng-action-editor-form-container\">\n @if (loading()) {\n <div class=\"text-center\">\n <p-progressSpinner [style]=\"{width: '3rem', height: '3rem'}\" strokeWidth=\"3\"></p-progressSpinner>\n </div>\n }\n @if (data.descriptor.editorDescriptor && !loading()) {\n <mng-form-editor [descriptor]=\"data.descriptor.editorDescriptor\" [item]=\"item()\" [isFormDisabled]=\"isFormDisabled()\" (formSubmit)=\"onSubmit($event)\"> </mng-form-editor>\n }\n </div>\n\n <div class=\"flex flex-row justify-content-between mng-action-editor-footer-container\">\n <div>\n @for (action of footerLeftActions(); track action) {\n <mng-action\n [action]=\"action\"\n [disabled]=\"submitLoading()\"\n [loading]=\"$any(action).submitType === actionEditorSubmitTypeSubmit ? submitLoading() : false\"\n [hostComponent]=\"this\"\n [item]=\"item()\"\n [itemId]=\"itemId()\"></mng-action>\n }\n </div>\n <div>\n @for (action of footerRightActions(); track action) {\n <mng-action\n [action]=\"action\"\n [disabled]=\"submitLoading()\"\n [loading]=\"$any(action).submitType === actionEditorSubmitTypeSubmit ? submitLoading() : false\"\n [hostComponent]=\"this\"\n [item]=\"item()\"\n [itemId]=\"itemId()\"></mng-action>\n }\n </div>\n </div>\n</div>\n","import {ChangeDetectionStrategy, Component, DestroyRef, EventEmitter, Injector, Input, OnChanges, OnInit, Output, SimpleChanges, Type, inject} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\n\nimport {DynamicDialogConfig} from 'primeng/dynamicdialog';\n\nimport {ActionData, CommonsInternalError, ComponentDirective, DialogKeydownHandlerDirective, IDataProvider, IdType} from '@mediusinc/mng-commons/core';\nimport {ActionEditorDescriptorInst} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ActionEditorDialogData} from '../../models/action-editor-dialog-data.model';\nimport {ActionEditorInjectorContextComponent, ActionEditorInjectorContextInputData} from './injector-context/action-editor-injector-context.component';\n\n@Component({\n standalone: true,\n selector: 'mng-action-editor',\n templateUrl: './action-editor.component.html',\n imports: [ComponentDirective],\n hostDirectives: [DialogKeydownHandlerDirective],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ActionEditorComponent<T = any, S = any> implements OnInit, OnChanges {\n public readonly injContextCmpType = ActionEditorInjectorContextComponent as Type<any>;\n\n public injector = inject(Injector);\n public readonly destroyRef = inject(DestroyRef);\n private readonly dialogConfig = inject(DynamicDialogConfig, {optional: true});\n\n // metadata and editor mode input\n @Input({required: true}) public action!: ActionEditorDescriptorInst<T, S>;\n\n // data source inputs\n @Input('itemId') public itemIdInput?: IdType;\n @Input('item') public itemInput?: T;\n @Input() public actionData?: ActionData;\n @Input() public dataProvider?: IDataProvider<T, S>;\n\n @Output('actionSubmit') public actionRunEventEmitter = new EventEmitter<T | null | undefined>();\n @Output('actionCancel') public actionCancelEventEmitter = new EventEmitter<T | null | undefined>();\n\n private actionEditorWInjContextCmp?: ActionEditorInjectorContextComponent<T, S>;\n public actionEditorWInjContextInputData?: ActionEditorInjectorContextInputData<T, S>;\n\n private isDialog = false;\n\n public get actionEditor() {\n return this.actionEditorWInjContextCmp;\n }\n\n public get formEditorCmp() {\n return this.actionEditor?.formEditorCmp;\n }\n\n ngOnInit() {\n let dialogData: ActionEditorDialogData<T, S> | undefined = undefined;\n\n if (this.dialogConfig?.data) {\n dialogData = this.dialogConfig.data as ActionEditorDialogData<T, S>;\n this.isDialog = true;\n\n // set injector from provided one\n this.injector = dialogData.injector;\n }\n\n this.actionEditorWInjContextInputData = {\n isDialog: this.isDialog,\n dialogConfig: this.dialogConfig ?? undefined,\n descriptor: dialogData?.action.descriptor ?? this.action,\n actionInstance: dialogData?.action.instance,\n previousActionInstance: dialogData?.action.previousInstance,\n itemId: dialogData?.action.instance.activationParameters?.itemId ?? this.itemIdInput,\n item: dialogData?.action.instance.activationParameters?.item ?? this.itemInput,\n actionData: dialogData?.action.instance.activationParameters?.actionData ?? this.actionData,\n dataProvider: this.dataProvider\n };\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['itemIdInput'] && !changes['itemIdInput'].firstChange) {\n this.actionEditorWInjContextCmp?.updateItemId(this.itemIdInput);\n }\n if (changes['itemInput'] && !changes['itemInput'].firstChange) {\n this.actionEditorWInjContextCmp?.updateItem(this.itemInput);\n }\n }\n\n public onActionEditorWInjContextCmp(cmp: ActionEditorInjectorContextComponent<T, S>) {\n if (this.actionEditorWInjContextCmp) {\n throw new CommonsInternalError('Action editor injection context component is already initialized');\n }\n this.actionEditorWInjContextCmp = cmp;\n this.actionEditorWInjContextCmp.actionCancelEventEmitter.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(action => {\n this.actionCancelEventEmitter.emit(action);\n });\n this.actionEditorWInjContextCmp.actionRunEventEmitter.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(action => {\n this.actionRunEventEmitter.emit(action);\n });\n }\n\n public cancel() {\n this.actionEditorWInjContextCmp?.cancel();\n }\n\n public triggerSubmit() {\n this.actionEditorWInjContextCmp?.triggerSubmit();\n }\n}\n","<div\n [mngComponent]=\"injContextCmpType\"\n [inputs]=\"{\n data: actionEditorWInjContextInputData\n }\"\n [nodeInjector]=\"injector\"\n (instanceCreated)=\"onActionEditorWInjContextCmp($event)\"></div>\n","import {Component, EventEmitter, Input, Output, ViewChild, inject} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\n\nimport {of} from 'rxjs';\n\nimport {ActionData, ActionParameters, CommonsService, IdType} from '@mediusinc/mng-commons/core';\nimport {DropdownComponent} from '@mediusinc/mng-commons/form';\nimport {LookupDataProvider, LookupDataProviderInst} from '@mediusinc/mng-commons/form/api';\nimport {ActionDescriptorInst, IActionComponent} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ViewContainer} from '../../services/view-container.service';\n\n@Component({\n standalone: true,\n selector: 'mng-data-language-dropdown',\n imports: [DropdownComponent, FormsModule],\n templateUrl: 'data-language-dropdown.component.html'\n})\nexport class DataLanguageDropdownComponent<T = any> implements IActionComponent<T> {\n private readonly viewContainer = inject(ViewContainer, {optional: true});\n\n @Input({required: true}) public action!: ActionDescriptorInst<T>;\n @Input({required: true}) public actionData!: ActionData;\n @Input({required: true}) public item!: T;\n @Input({required: true}) public itemId!: IdType;\n @Input({required: true}) public enabled!: boolean;\n @Input({required: true}) public loading!: boolean;\n\n @Output() public triggerActionEventEmitter: EventEmitter<ActionParameters<T>> = new EventEmitter<ActionParameters<T>>();\n @ViewChild(DropdownComponent) private dropdown?: DropdownComponent;\n\n // dropdown properties\n public selectionItemsDataProvider: LookupDataProviderInst<string>;\n\n constructor(public commons: CommonsService) {\n this.selectionItemsDataProvider = LookupDataProvider.create<string>().withLookup(() => of(commons.appDataLanguages));\n }\n\n public updateDataLanguage(dataLang: string): void {\n this.commons.appDataLanguage = dataLang;\n this.viewContainer?.reloadTable({});\n }\n}\n","<mng-dropdown [dataProvider]=\"selectionItemsDataProvider\" [ngModel]=\"commons.appDataLanguage\" [showClear]=\"false\" (valueChange)=\"updateDataLanguage($event)\"></mng-dropdown>\n","import {ChangeDetectionStrategy, Component, OnDestroy, OnInit, Optional} from '@angular/core';\nimport {ActivatedRoute, NavigationCancel, NavigationEnd, NavigationError, NavigationSkipped, NavigationStart, Params, Router} from '@angular/router';\n\nimport {Observable, Subscription, of} from 'rxjs';\n\nimport {ActionData, ActionParameters, CommonsInternalError} from '@mediusinc/mng-commons/core';\nimport {ActionActivationTriggerEnum, ActionDescriptorInst, ActionTypeEnum, IActionInstance} from '@mediusinc/mng-commons/tableview/api';\n\nimport {CanComponentDeactivate} from '../../models/can-component-deactivate.model';\nimport {ActionInstanceStateEnum} from '../../models/execution/action-instance-state.model';\nimport {ActionInstance} from '../../models/execution/action-instance.model';\nimport {ActionExecutorService} from '../../services/action-executor.service';\nimport {provideActionExecutor} from '../../services/providers/provide-action-executor';\nimport {ViewContainer} from '../../services/view-container.service';\n\n@Component({\n standalone: true,\n selector: 'mng-action-route',\n templateUrl: './action-route.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [provideActionExecutor()]\n})\nexport class ActionRouteComponent<Item, Service> implements OnInit, OnDestroy, CanComponentDeactivate {\n public cmpId: string = Math.random().toString(36).substring(2);\n private actions: Array<ActionDescriptorInst<any>> = [];\n private instance?: ActionInstance<Item, Service>;\n private instanceStateSubscription?: Subscription;\n private instanceReactivationSubscription?: Subscription;\n\n private subscriptions: Array<Subscription> = [];\n private isRouterNavigationInProgress = false;\n\n constructor(\n private router: Router,\n private route: ActivatedRoute,\n private actionExecutor: ActionExecutorService,\n @Optional() private viewContainer: ViewContainer<Item, Service> | null\n ) {}\n\n public ngOnInit() {\n this.actions = this.viewContainer?.actions.filter(a => a.activationTrigger === ActionActivationTriggerEnum.OnRoute) ?? [];\n this.subscriptions.push(\n this.route.params.subscribe(p => {\n const action = this.findActionForRoute(p) ?? undefined;\n if (action) {\n this.activateAction(action, p, this.route.snapshot.queryParams);\n }\n })\n );\n this.subscriptions.push(\n this.router.events.subscribe(e => {\n if (e instanceof NavigationStart) {\n this.isRouterNavigationInProgress = true;\n } else if (e instanceof NavigationEnd || e instanceof NavigationCancel || e instanceof NavigationError || e instanceof NavigationSkipped) {\n this.isRouterNavigationInProgress = false;\n }\n })\n );\n }\n\n public ngOnDestroy() {\n const instance = this.instance;\n this.unsetInstance();\n this.actionExecutor.onActionRouteDestroy(instance);\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n private activateAction(action: ActionDescriptorInst<any>, p: Params, qp: Params) {\n const itemId = p['itemId'];\n const actionData: ActionData = {};\n for (const key in p) {\n if (key === 'itemId') {\n continue;\n }\n actionData[key] = p[key];\n }\n for (const key in qp) {\n actionData[key] = p[key];\n }\n\n this.processActionInstance(\n this.actionExecutor.activateAction(action, <ActionParameters<Item>>{\n itemId: itemId,\n actionData: actionData,\n sourceComponent: this,\n route: this.route\n })\n );\n }\n\n private untriggerAction() {\n if (!this.instance || this.isRouterNavigationInProgress) {\n return;\n }\n const instance = this.instance;\n this.unsetInstance();\n this.actionExecutor.finishActionRouteUntrigger(instance);\n }\n\n private findActionForRoute(params: Params): ActionDescriptorInst<any> | null {\n const urlSegments = this.route.snapshot.url;\n for (const action of this.actions) {\n let actionUrl = action.routeUrl ?? '';\n if (actionUrl.startsWith('/')) {\n actionUrl = actionUrl.substring(1);\n }\n const actionUrlSegments = actionUrl.split('/');\n if (actionUrlSegments.length !== urlSegments.length) {\n continue;\n }\n let isMatch = true;\n for (let i = 0; i < actionUrlSegments.length; i++) {\n if (actionUrlSegments[i].startsWith(':')) {\n const paramName = actionUrlSegments[i].substring(1);\n if (!params[paramName]) {\n isMatch = false;\n break;\n }\n } else if (actionUrlSegments[i] !== urlSegments[i].path) {\n isMatch = false;\n break;\n }\n }\n if (isMatch) {\n return action;\n }\n }\n return null;\n }\n\n private processActionInstance(instance: IActionInstance<Item, Service>) {\n if (!(instance instanceof ActionInstance)) {\n throw new CommonsInternalError('Unknown type of action instance received', {details: instance});\n }\n\n if (!this.instance || this.instance.instanceLongName !== instance.instanceLongName) {\n this.unsetInstance();\n this.instance = instance;\n\n this.instanceStateSubscription = this.instance.state$.subscribe(s => {\n switch (s) {\n case ActionInstanceStateEnum.FinishSuccessReactivateFinal:\n this.viewContainer?.reloadTable(); // reload only if no error in action and\n break;\n case ActionInstanceStateEnum.FinishSuccessFinal:\n this.viewContainer?.reloadTable(); // reload only if no error in action and\n this.untriggerAction();\n break;\n case ActionInstanceStateEnum.FinishDismissedFinal:\n this.untriggerAction();\n break;\n }\n });\n\n this.instanceReactivationSubscription = this.instance.reactivationInstance$.subscribe(newInstance => {\n this.processActionInstance(newInstance);\n });\n }\n }\n\n public canDeactivate(): Observable<boolean> {\n if (this.instance?.action.type === ActionTypeEnum.Editor && this.instance.activationEditorComponentRef) {\n return this.instance.activationEditorComponentRef.closeWithUnsavedChangesConfirmation(true);\n }\n\n return of(true);\n }\n\n private unsetInstance() {\n this.instance = undefined;\n this.instanceStateSubscription?.unsubscribe();\n this.instanceReactivationSubscription?.unsubscribe();\n }\n}\n","","import {StyleSizeEnum, Styles} from '@mediusinc/mng-commons/core';\nimport {TableDescriptorInst, TableSizeEnum} from '@mediusinc/mng-commons/table/api';\nimport {ActionDescriptorInst} from '@mediusinc/mng-commons/tableview/api';\n\nexport function calculateTableColumnActionWidth(table: TableDescriptorInst<unknown>, actions: Array<ActionDescriptorInst<unknown>>): number {\n const buttonsWidth = actions.reduce((acc, action) => acc + getActionButtonRoundedWidth(action) + 2 * Styles.ACTION_BUTTON_MARGIN_X, 0);\n const tablePadding = getTableCellPaddingX(table);\n return buttonsWidth + 2 * tablePadding;\n}\n\nexport function getTableCellPaddingX(table: TableDescriptorInst<unknown>): number {\n switch (table.size) {\n case TableSizeEnum.Small:\n return Styles.TABLE_CELL_PADDING_X_SM;\n case TableSizeEnum.Large:\n return Styles.TABLE_CELL_PADDING_X_LG;\n default:\n return Styles.TABLE_CELL_PADDING_X;\n }\n}\n\nexport function getActionButtonRoundedWidth(action: ActionDescriptorInst<any>): number {\n switch (action.button.styleClass.size) {\n case StyleSizeEnum.ExtraSmall:\n return Styles.BUTTON_ROUNDED_WIDTH_XS;\n case StyleSizeEnum.Small:\n return Styles.BUTTON_ROUNDED_WIDTH_SM;\n case StyleSizeEnum.Large:\n case StyleSizeEnum.ExtraLarge:\n return Styles.BUTTON_ROUNDED_WIDTH_LG;\n case StyleSizeEnum.Normal:\n default:\n return Styles.BUTTON_ROUNDED_WIDTH;\n }\n}\n","import {NgTemplateOutlet} from '@angular/common';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n EventEmitter,\n Input,\n OnInit,\n Output,\n QueryList,\n TemplateRef,\n Type,\n ViewChild,\n ViewChildren,\n WritableSignal,\n inject,\n signal\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {ActivatedRoute} from '@angular/router';\n\nimport {Observable, isObservable, of} from 'rxjs';\n\nimport {ActionParameters, ComponentDirective, DataListResult, TemplateDirective, boolean$Attribute} from '@mediusinc/mng-commons/core';\nimport {TableComponent} from '@mediusinc/mng-commons/table';\nimport {ITableDataProvider, TableCellClickEvent, TableDescriptorInst, TableLoadEvent} from '@mediusinc/mng-commons/table/api';\nimport {ActionDescriptorInst, ActionPositionEnum} from '@mediusinc/mng-commons/tableview/api';\n\nimport {calculateTableColumnActionWidth} from '../../helpers/styles';\nimport {ActionInstance} from '../../models/execution/action-instance.model';\nimport {ActionExecutorService} from '../../services/action-executor.service';\nimport {provideActionExecutor} from '../../services/providers/provide-action-executor';\nimport {ViewContainer} from '../../services/view-container.service';\nimport {ActionComponent} from '../action/action.component';\n\n@Component({\n standalone: true,\n selector: 'mng-action-table',\n templateUrl: './action-table.component.html',\n imports: [TableComponent, ActionComponent, TemplateDirective, NgTemplateOutlet],\n providers: [provideActionExecutor()],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ActionTableComponent<Item = any, Service = undefined, Sorts = keyof Item, Filters extends keyof any = keyof Item> implements OnInit, AfterContentInit {\n private readonly route = inject(ActivatedRoute);\n private readonly actionExecutor = inject(ActionExecutorService);\n private readonly viewContainer = inject(ViewContainer<Item, Service>, {optional: true});\n\n // metadata input\n @Input({required: true}) public descriptor!: TableDescriptorInst<Item, Sorts, Filters>;\n\n // data source inputs\n @Input() public items?: Observable<Array<Item>> | Array<Item>;\n @Input({transform: (value: unknown) => (isObservable(value) ? (value as Observable<DataListResult<Item>>) : of(value as DataListResult<Item>))})\n public result?: Observable<DataListResult<Item>>;\n @Input({transform: boolean$Attribute}) public loading?: Observable<boolean>;\n @Input() public dataProvider?: ITableDataProvider<Item, Service, Sorts, Filters>;\n @Input() public useQueryParams = false;\n\n // extra features input\n @Input() public selectionMode: 'single' | 'multiple' = 'multiple';\n @Input() public selectionEnabled = false;\n @Input() public globalFilterFields?: string[];\n\n // actions\n @Input() public actions: Array<ActionDescriptorInst<any>> = []; // can be anything\n\n // component inputs\n @Input() public captionComponent?: Type<any>;\n @Input() public columnActionComponent?: Type<any>;\n @Input() public columnActionMinWidth?: number;\n\n // event outputs\n @Output('tableLoad') public loadEventEmitter = new EventEmitter<TableLoadEvent>();\n @Output('selectionChange') public selectionChangeEventEmitter = new EventEmitter<Array<Item>>();\n @Output('captionComponentInstance') public captionCmpInstEventEmitter = new EventEmitter<any>();\n @Output('columnActionComponentInstance') public columnActionCmpInstEventEmitter = new EventEmitter<any>();\n\n // content and view queries\n @ContentChildren(TemplateDirective) public templates!: QueryList<TemplateDirective>;\n @ViewChildren(ComponentDirective) public components!: QueryList<ComponentDirective<any>>;\n @ViewChild(TableComponent) public table!: TableComponent;\n\n // templates\n public captionTemplate: WritableSignal<TemplateRef<any> | undefined> = signal(undefined);\n public footerTemplate: WritableSignal<TemplateRef<any> | undefined> = signal(undefined);\n\n // actions\n public rowClickActions: WritableSignal<ActionDescriptorInst<Item>[]> = signal([]);\n public rowInlineActions: WritableSignal<ActionDescriptorInst<Item>[]> = signal([]);\n\n constructor() {\n this.viewContainer?.tableReload$.pipe(takeUntilDestroyed()).subscribe(e => this.reload(e.emitEvent, e.resetParams));\n }\n\n public ngOnInit() {\n // process actions\n const rowClickActions: ActionDescriptorInst<Item>[] = [];\n const rowInlineActions: ActionDescriptorInst<Item>[] = [];\n for (const action of this.actions) {\n switch (action.position) {\n case ActionPositionEnum.RowClick:\n rowClickActions.push(action);\n break;\n case ActionPositionEnum.RowInline:\n rowInlineActions.push(action);\n break;\n }\n }\n this.rowClickActions.set(rowClickActions);\n this.rowInlineActions.set(rowInlineActions);\n\n // define all styles\n if (this.descriptor && !this.columnActionMinWidth) {\n this.columnActionMinWidth = calculateTableColumnActionWidth(this.descriptor as TableDescriptorInst<any>, this.rowInlineActions() as Array<ActionDescriptorInst<any>>);\n }\n }\n\n public ngAfterContentInit() {\n this.templates.forEach(template => {\n switch (template.getType()) {\n case 'caption':\n this.captionTemplate.set(template.template);\n break;\n case 'footer':\n this.footerTemplate.set(template.template);\n break;\n }\n });\n }\n\n public reload(emitEvent = false, resetParams = false) {\n this.table.reload(emitEvent, resetParams);\n }\n\n public onCellClick(event: TableCellClickEvent<Item>) {\n if (this.rowClickActions().length) {\n for (const action of this.rowClickActions()) {\n const idProp = this.descriptor?.trackProperty ?? action?.model?.idProperty;\n const parameters: ActionParameters<Item> = {\n itemId: idProp ? event.rowItem[idProp as keyof object] : undefined,\n item: event.rowItem,\n actionData: {\n itemIndex: event.rowIndex\n },\n route: this.route,\n sourceComponent: this\n };\n this.actionExecutor.triggerAction(action, parameters, true);\n }\n }\n }\n\n public onSelectionChange(items: Array<Item>) {\n this.selectionChangeEventEmitter.next(items);\n }\n\n public onActionFinish(runResult: ActionInstance<Item, Service>) {\n if (!runResult.error) {\n this.reload();\n }\n }\n}\n","<mng-table\n [descriptor]=\"descriptor\"\n [items]=\"items\"\n [result]=\"result\"\n [loading]=\"loading\"\n [dataProvider]=\"dataProvider\"\n [useQueryParams]=\"useQueryParams\"\n [selectionMode]=\"selectionMode\"\n [selectionEnabled]=\"selectionEnabled\"\n [globalFilterFields]=\"globalFilterFields\"\n [captionComponent]=\"captionComponent\"\n [columnCustomLastComponent]=\"columnActionComponent\"\n [columnLastMinWidth]=\"columnActionMinWidth\"\n (tableLoad)=\"loadEventEmitter.next($event)\"\n (cellClick)=\"onCellClick($event)\"\n (selectionChange)=\"onSelectionChange($event)\"\n (captionComponentInstance)=\"captionCmpInstEventEmitter.next($event)\"\n (columnCustomLastComponentInstance)=\"columnActionCmpInstEventEmitter.next($event)\">\n @if (!columnActionComponent && rowInlineActions().length > 0) {\n <ng-template mngTemplate=\"columnCustomLast\" let-item=\"rowItem\" let-idx=\"rowIndex\">\n @for (action of rowInlineActions(); track action.actionNameLong) {\n <mng-action\n [action]=\"action\"\n [item]=\"item\"\n [hostComponent]=\"this\"\n [itemId]=\"descriptor.model.idProperty ? item[descriptor.model.idProperty!] : null\"\n [actionData]=\"{itemIndex: idx}\"\n (finish)=\"onActionFinish($event)\">\n </mng-action>\n }\n </ng-template>\n }\n @if (captionTemplate() && !captionComponent) {\n <ng-template mngTemplate=\"caption\">\n <ng-container *ngTemplateOutlet=\"captionTemplate()!\"></ng-container>\n </ng-template>\n }\n @if (footerTemplate()) {\n <ng-template mngTemplate=\"footer\" let-data=\"data\" let-totalCount=\"totalCount\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()!; context: {data, totalCount}\"></ng-container>\n </ng-template>\n }\n</mng-table>\n","import {CanDeactivateFn} from '@angular/router';\n\nimport {CanComponentDeactivate} from '../models/can-component-deactivate.model';\n\nexport const unsavedChangesGuard: CanDeactivateFn<CanComponentDeactivate> = (component: CanComponentDeactivate) => {\n return component.canDeactivate();\n};\n","import {Injector, Provider} from '@angular/core';\n\nimport {ViewContainer} from '../view-container.service';\n\nexport function provideViewContainer(provideParentIfPresent = true): Provider {\n return {\n provide: ViewContainer,\n useFactory: (injector: Injector) => {\n if (provideParentIfPresent) {\n return injector.get(ViewContainer, null, {optional: true, skipSelf: true}) ?? new ViewContainer();\n } else {\n return new ViewContainer();\n }\n },\n deps: [Injector]\n };\n}\n","import {Injectable} from '@angular/core';\n\nimport {Observable} from 'rxjs';\n\nimport {DataListResult, Nullable} from '@mediusinc/mng-commons/core';\nimport {\n DataProviderExecutor,\n IActionContext,\n runCreateFromDataProvider,\n runDeleteFromDataProvider,\n runFetchFromDataProvider,\n runFnFromDataProviderOrFallback,\n runGetAllFromDataProvider,\n runUpdateFromDataProvider\n} from '@mediusinc/mng-commons/tableview/api';\n\n@Injectable()\nexport class DefaultDataProviderExecutor extends DataProviderExecutor {\n public override runGetAll<Item, Service>(ctx: IActionContext<Item, Service>): Observable<DataListResult<Item>> | null;\n public override runGetAll<Item, Service>(ctx: IActionContext<Item, Service>, fallback: Observable<DataListResult<Item>>): Observable<DataListResult<Item>>;\n public override runGetAll<Item, Service>(ctx: IActionContext<Item, Service>, fallback: undefined): Observable<DataListResult<Item>> | null;\n public override runGetAll<Item, Service>(ctx: IActionContext<Item, Service>, fallback?: Observable<DataListResult<Item>>): Observable<DataListResult<Item>> | null {\n return fallback ? runFnFromDataProviderOrFallback(ctx, runGetAllFromDataProvider, fallback) : runGetAllFromDataProvider(ctx);\n }\n\n public override runFetch<Item, Service>(ctx: IActionContext<Item, Service>): Observable<Item> | null;\n public override runFetch<Item, Service>(ctx: IActionContext<Item, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public override runFetch<Item, Service>(ctx: IActionContext<Item, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public override runFetch<Item, Service>(ctx: IActionContext<Item, Service>, fallback?: Observable<Nullable<Item>>): Observable<Nullable<Item>> | null {\n return fallback ? runFnFromDataProviderOrFallback(ctx, runFetchFromDataProvider, fallback) : runFetchFromDataProvider(ctx);\n }\n\n public override runCreate<Item, Service>(ctx: IActionContext<Item, Service>): Observable<Item> | null;\n public override runCreate<Item, Service>(ctx: IActionContext<Item, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public override runCreate<Item, Service>(ctx: IActionContext<Item, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public override runCreate<Item, Service>(ctx: IActionContext<Item, Service>, fallback?: Observable<Nullable<Item>>): Observable<Nullable<Item>> | null {\n return fallback ? runFnFromDataProviderOrFallback(ctx, runCreateFromDataProvider, fallback) : runCreateFromDataProvider(ctx);\n }\n\n public override runUpdate<Item, Service>(ctx: IActionContext<Item, Service>): Observable<Item> | null;\n public override runUpdate<Item, Service>(ctx: IActionContext<Item, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public override runUpdate<Item, Service>(ctx: IActionContext<Item, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public override runUpdate<Item, Service>(ctx: IActionContext<Item, Service>, fallback?: Observable<Nullable<Item>>): Observable<Nullable<Item>> | null {\n return fallback ? runFnFromDataProviderOrFallback(ctx, runUpdateFromDataProvider, fallback) : runUpdateFromDataProvider(ctx);\n }\n\n public override runDelete<Item, Service>(ctx: IActionContext<Item, Service>): Observable<Nullable<Item>> | null;\n public override runDelete<Item, Service>(ctx: IActionContext<Item, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public override runDelete<Item, Service>(ctx: IActionContext<Item, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public override runDelete<Item, Service>(ctx: IActionContext<Item, Service>, fallback?: Observable<Nullable<Item>>): Observable<Nullable<Item>> | null {\n return fallback ? runFnFromDataProviderOrFallback(ctx, runDeleteFromDataProvider, fallback) : runDeleteFromDataProvider(ctx);\n }\n}\n","import {JsonPipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, OnInit} from '@angular/core';\n\nimport {FieldType} from '@ngx-formly/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ButtonModule} from 'primeng/button';\nimport {MessageModule} from 'primeng/message';\nimport {RippleModule} from 'primeng/ripple';\nimport {TooltipModule} from 'primeng/tooltip';\nimport {isObservable} from 'rxjs';\n\nimport {CommonsFormlyFieldConfig, FieldActionDescriptor, FieldActionResult, FieldActionResultMessage, IFormEditorComponent} from '@mediusinc/mng-commons/tableview/api';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-action',\n templateUrl: './formly-field-action.component.html',\n imports: [ButtonModule, RippleModule, TranslateModule, TooltipModule, JsonPipe, MessageModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldActionComponent<ET> extends FieldType<CommonsFormlyFieldConfig> implements OnInit {\n public descriptor!: FieldActionDescriptor<ET>;\n\n public buttonClass = 'p-button-primary';\n\n public actionMessage?: FieldActionResultMessage;\n\n ngOnInit(): void {\n this.descriptor = this.props.descriptor as FieldActionDescriptor<ET>;\n this.props.fieldComponent = this;\n this.buttonClass = this.descriptor.button.styleClass.build();\n }\n\n onClick() {\n this.actionMessage = undefined;\n\n const result = this.descriptor.runFunction?.({\n descriptor: this.descriptor,\n formEditorComponent: this.props.formEditorComponent as IFormEditorComponent<ET>,\n formly: {\n model: this.model,\n formControl: this.formControl,\n form: this.form,\n formState: this.formState,\n options: this.options,\n props: this.props\n }\n });\n\n if (result) {\n if (isObservable(result)) {\n result.subscribe(res => this.processResult(res));\n } else {\n this.processResult(result);\n }\n }\n }\n\n private processResult(res: FieldActionResult) {\n if (res.message) {\n this.actionMessage = res.message;\n }\n }\n}\n","<div class=\"flex\">\n <button\n type=\"button\"\n pButton\n pRipple\n [icon]=\"$any(descriptor.button.icon)\"\n [label]=\"$any(descriptor.button.label === null ? null : descriptor.button.label ?? props!.label) | translate\"\n [pTooltip]=\"$any(descriptor.button.tooltip) | translate\"\n [disabled]=\"formControl.disabled\"\n (click)=\"onClick()\"\n [class]=\"buttonClass + (actionMessage ? ' mr-2' : '')\"></button>\n @if (actionMessage) {\n <p-message [text]=\"actionMessage.content\" [severity]=\"actionMessage.severity ?? 'success'\"></p-message>\n }\n</div>\n","import {AfterViewInit, ChangeDetectionStrategy, Component, OnDestroy, OnInit} from '@angular/core';\nimport {FormControl, ReactiveFormsModule} from '@angular/forms';\n\nimport {FieldType, FormlyModule} from '@ngx-formly/core';\nimport {Subscription, distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {AutocompleteComponent} from '@mediusinc/mng-commons/form';\nimport {CommonsFormlyFieldConfig, FieldLookupDescriptor, FormFieldEventComponentSubtype, FormFieldEventTypeEnum} from '@mediusinc/mng-commons/tableview/api';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-autocomplete',\n templateUrl: './formly-field-autocomplete.component.html',\n imports: [AutocompleteComponent, ReactiveFormsModule, FormlyModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldAutocompleteComponent<T, ET> extends FieldType<CommonsFormlyFieldConfig> implements OnInit, AfterViewInit, OnDestroy {\n public aFormControl!: FormControl;\n public descriptor!: FieldLookupDescriptor<T, ET>;\n\n private subscriptions: Subscription[] = [];\n\n public ngOnInit() {\n this.aFormControl = this.formControl as FormControl;\n this.descriptor = this.props.descriptor as FieldLookupDescriptor<T, ET>;\n this.props.fieldComponent = this;\n\n // emit lifecycle event\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, FormlyFieldAutocompleteComponent, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_INIT\n });\n\n const subscription = this.aFormControl.valueChanges.pipe(startWith(this.aFormControl.value), distinctUntilChanged()).subscribe(v => {\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ValueChange, FormlyFieldAutocompleteComponent, this, {\n value: v\n });\n\n if (this.props['onValueChange']) {\n this.props['onValueChange'](this.field, v);\n }\n });\n this.subscriptions.push(subscription);\n }\n\n public ngAfterViewInit() {\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, FormlyFieldAutocompleteComponent, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_VIEW_INIT\n });\n }\n\n public ngOnDestroy() {\n // warning: formly calls on destroy before on init\n\n this.subscriptions.forEach(value => value.unsubscribe());\n\n // emit lifecycle event\n this.descriptor?.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, FormlyFieldAutocompleteComponent, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n}\n","<mng-autocomplete\n [id]=\"$any(key)\"\n [formControl]=\"aFormControl\"\n [formlyAttributes]=\"field\"\n [dataProvider]=\"descriptor.dataProvider\"\n [optionsTrackProperty]=\"descriptor.optionsTrackProperty\"\n [optionsLabelProperty]=\"descriptor.optionsLabelProperty\"\n [optionsValueProperty]=\"descriptor.optionsValueProperty\"\n [className]=\"descriptor.inputClassName\"\n [showClear]=\"!props.required\"\n [selectFirst]=\"descriptor.autocompleteSelectFirst ?? false\"\n [autoClear]=\"descriptor.autocompleteAutoClear ?? false\"\n [openOnFocus]=\"descriptor.autocompleteAutoClear ?? true\"\n [inlineSearch]=\"descriptor.autocompleteInlineSearch ?? false\">\n</mng-autocomplete>\n","import {ChangeDetectionStrategy, Component, OnInit} from '@angular/core';\n\nimport {FieldType} from '@ngx-formly/core';\n\nimport {ComponentDirective} from '@mediusinc/mng-commons/core';\nimport {CommonsFormlyFieldConfig, FieldInputDescriptor} from '@mediusinc/mng-commons/tableview/api';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-custom',\n template: ` <ng-container [mngComponent]=\"descriptor.customComponentType!\" [inputs]=\"inputs\"></ng-container> `,\n imports: [ComponentDirective],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldCustomComponent<ET> extends FieldType<CommonsFormlyFieldConfig> implements OnInit {\n public descriptor!: FieldInputDescriptor<ET>;\n\n public inputs: Record<string, any> = {};\n\n ngOnInit() {\n this.descriptor = this.props.descriptor as FieldInputDescriptor<ET>;\n this.inputs = {\n field: this.field,\n model: this.model,\n form: this.form,\n options: this.options,\n key: this.key,\n formControl: this.formControl,\n props: this.props,\n showError: this.showError,\n id: this.id,\n formState: this.formState,\n ...this.descriptor.customComponentInputs\n };\n }\n}\n","import {ChangeDetectionStrategy, Component, OnDestroy, OnInit} from '@angular/core';\nimport {FormControl, ReactiveFormsModule} from '@angular/forms';\n\nimport {FieldType, FormlyModule} from '@ngx-formly/core';\nimport {Subscription, distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {DropdownComponent} from '@mediusinc/mng-commons/form';\nimport {CommonsFormlyFieldConfig, FieldLookupDescriptor, FormFieldEventComponentSubtype, FormFieldEventTypeEnum} from '@mediusinc/mng-commons/tableview/api';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-dropdown',\n templateUrl: './formly-field-dropdown.component.html',\n imports: [DropdownComponent, ReactiveFormsModule, FormlyModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldDropdownComponent<T, ET> extends FieldType<CommonsFormlyFieldConfig> implements OnInit, OnDestroy {\n public dFormControl!: FormControl;\n public descriptor!: FieldLookupDescriptor<T, ET>;\n\n private subscriptions: Subscription[] = [];\n\n public ngOnInit() {\n this.dFormControl = this.formControl as FormControl;\n this.descriptor = this.props.descriptor as FieldLookupDescriptor<T, ET>;\n this.props.fieldComponent = this;\n\n // emit lifecycle event\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, FormlyFieldDropdownComponent, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_INIT\n });\n\n const subscription = this.dFormControl.valueChanges.pipe(startWith(this.dFormControl.value), distinctUntilChanged()).subscribe(v => {\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ValueChange, FormlyFieldDropdownComponent, this, {\n value: v\n });\n\n if (this.props['onValueChange']) {\n this.props['onValueChange'](this.field, v);\n }\n });\n this.subscriptions.push(subscription);\n }\n\n ngOnDestroy(): void {\n // warning: formly calls on destroy before on init\n\n this.subscriptions.forEach(s => s.unsubscribe());\n\n // emit lifecycle event\n this.descriptor?.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, FormlyFieldDropdownComponent, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n}\n","<mng-dropdown\n [id]=\"$any(key)\"\n [formControl]=\"dFormControl\"\n [formlyAttributes]=\"field\"\n [placeholder]=\"descriptor.placeholder\"\n [dataProvider]=\"descriptor.dataProvider\"\n [optionsLabelProperty]=\"descriptor.optionsLabelProperty\"\n [optionsLabelTranslate]=\"descriptor.optionsLabelTranslate\"\n [optionsValueProperty]=\"descriptor.optionsValueProperty\"\n [optionsDisabledProperty]=\"descriptor.optionsDisabledProperty\"\n [optionsTrackProperty]=\"descriptor.optionsTrackProperty\"\n [showClear]=\"!props.required\"\n [className]=\"descriptor.inputClassName\">\n</mng-dropdown>\n","import {ChangeDetectionStrategy, Component, OnInit} from '@angular/core';\n\nimport {FieldType, FormlyModule} from '@ngx-formly/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {FieldsetModule} from 'primeng/fieldset';\n\nimport {CommonsFormlyFieldConfig, FieldGroupDescriptor, FieldGroupTypeEnum} from '@mediusinc/mng-commons/tableview/api';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-fieldset',\n templateUrl: './formly-field-fieldset.component.html',\n imports: [FieldsetModule, FormlyModule, TranslateModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldFieldsetComponent<ET> extends FieldType<CommonsFormlyFieldConfig> implements OnInit {\n public readonly typeFieldset = FieldGroupTypeEnum.Fieldset;\n public readonly typeLogical = FieldGroupTypeEnum.Logical;\n public descriptor?: FieldGroupDescriptor<ET>;\n\n ngOnInit() {\n this.descriptor = this.props.descriptor as FieldGroupDescriptor<ET>;\n this.props.fieldComponent = this;\n }\n}\n","@for (group of field.fieldGroup; track group) {\n @switch (group?.props?.['descriptor']?.type) {\n @case (typeFieldset) {\n <p-fieldset [legend]=\"group.props?.label! | translate\">\n <formly-field [field]=\"group\"></formly-field>\n </p-fieldset>\n }\n @default {\n <formly-field [field]=\"group\"></formly-field>\n }\n }\n}\n","import {ChangeDetectionStrategy, Component, Inject, LOCALE_ID, OnDestroy, OnInit} from '@angular/core';\nimport {FormArray, FormBuilder, FormControl, ReactiveFormsModule, ValidatorFn, Validators} from '@angular/forms';\n\nimport {FieldType, FormlyModule} from '@ngx-formly/core';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {CalendarModule} from 'primeng/calendar';\nimport {FileUploadModule} from 'primeng/fileupload';\nimport {TimesIcon} from 'primeng/icons/times';\nimport {ImageModule} from 'primeng/image';\nimport {InputMaskModule} from 'primeng/inputmask';\nimport {InputNumberModule} from 'primeng/inputnumber';\nimport {InputSwitchModule} from 'primeng/inputswitch';\nimport {InputTextModule} from 'primeng/inputtext';\nimport {InputTextareaModule} from 'primeng/inputtextarea';\nimport {RadioButtonModule} from 'primeng/radiobutton';\nimport {RippleModule} from 'primeng/ripple';\nimport {Subscription, distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {InputTrimDirective} from '@mediusinc/mng-commons/form';\nimport {CommonsFormlyFieldConfig, FieldInputDescriptor, FieldInputTypeEnum, FormFieldEventComponentSubtype, FormFieldEventTypeEnum} from '@mediusinc/mng-commons/tableview/api';\n\nimport {getFormEditorWarningMessage} from '../../../../helpers/notification';\nimport {FormEditorComponent} from '../../../editor/form-editor.component';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-input',\n templateUrl: './formly-field-input.component.html',\n imports: [\n InputNumberModule,\n ReactiveFormsModule,\n FormlyModule,\n TranslateModule,\n InputSwitchModule,\n RadioButtonModule,\n CalendarModule,\n InputMaskModule,\n FileUploadModule,\n ImageModule,\n InputTextareaModule,\n InputTextModule,\n RippleModule,\n TimesIcon,\n InputTrimDirective\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldInputComponent<ET> extends FieldType<CommonsFormlyFieldConfig> implements OnInit, OnDestroy {\n public readonly NUMBER_MIN_SAFE = Number.MIN_SAFE_INTEGER;\n public readonly NUMBER_MAX_SAFE = Number.MAX_SAFE_INTEGER;\n public readonly DESC_INPUT_TYPE_IMAGE_FILE = FieldInputTypeEnum.ImageFile;\n\n public iFormControl!: FormControl;\n public descriptor!: FieldInputDescriptor<ET>;\n public numberFieldMode: 'decimal' | 'currency' = 'decimal';\n public currency?: string;\n\n private files: File[] = [];\n public imageFormArray!: FormArray;\n private subscriptions: Subscription[] = [];\n\n public formEditorComponent?: FormEditorComponent<unknown>;\n\n constructor(\n @Inject(LOCALE_ID) public applicationLocale: string,\n private formBuilder: FormBuilder,\n private translateService: TranslateService\n ) {\n super();\n }\n\n ngOnInit(): void {\n this.iFormControl = this.formControl as FormControl;\n this.descriptor = this.props.descriptor as FieldInputDescriptor<ET>;\n this.props.fieldComponent = this;\n this.formEditorComponent = this.props.formEditorComponent as FormEditorComponent<unknown>;\n\n this.imageFormArray = this.formBuilder.array([]);\n\n if (this.descriptor.fieldType === FieldInputTypeEnum.Currency) {\n this.numberFieldMode = 'currency';\n\n if (this.descriptor.currencyFromProperty) {\n const currencyFromPropSubscription = this.iFormControl\n .get(this.descriptor.currencyFromProperty)!\n .valueChanges.pipe(startWith(this.model[this.descriptor.currencyFromProperty]), distinctUntilChanged())\n .subscribe(c => {\n this.currency = c;\n });\n this.subscriptions.push(currencyFromPropSubscription);\n } else {\n this.currency = this.descriptor.currency ?? 'EUR';\n }\n }\n\n // emit lifecycle event\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, FormlyFieldInputComponent, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_INIT\n });\n\n // init values\n if (this.props.type === 'datepicker' && typeof this.iFormControl.value === 'string') {\n const dateObject = new Date(this.iFormControl.value);\n this.iFormControl.setValue(dateObject);\n this.iFormControl.markAsPristine();\n }\n\n const subscription = this.formControl!.valueChanges.pipe(startWith(this.formControl!.value), distinctUntilChanged()).subscribe(v => {\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ValueChange, FormlyFieldInputComponent, this, {\n value: v\n });\n\n if (this.props['onValueChange']) {\n this.props['onValueChange'](this.field, v);\n }\n });\n this.subscriptions.push(subscription);\n\n if (this.props.type === 'imageUrl') {\n const startValue = this.iFormControl.value;\n if (this.descriptor.fileMultiple) {\n if (Array.isArray(startValue) && startValue.length > 0) {\n startValue.forEach(v => this.addImageUrl(v));\n } else if (typeof startValue === 'string' && startValue.length > 0) {\n this.addImageUrl(startValue);\n } else {\n this.addImageUrl();\n }\n } else {\n if (typeof startValue === 'string' && startValue.length > 0) {\n this.addImageUrl(startValue);\n } else {\n this.addImageUrl();\n }\n }\n\n const subscription = this.imageFormArray!.valueChanges.pipe(distinctUntilChanged()).subscribe(v => {\n const fcv = v.filter((i: string) => !!i && typeof i === 'string' && i.length > 0);\n this.iFormControl.setValue(fcv.length > 0 ? (this.descriptor.fileMultiple ? fcv : fcv[0]) : undefined);\n this.iFormControl.updateValueAndValidity();\n });\n this.subscriptions.push(subscription);\n }\n }\n\n ngOnDestroy(): void {\n // warning: formly calls on destroy before on init\n\n this.subscriptions.forEach(s => s.unsubscribe());\n\n // emit lifecycle event\n this.descriptor?.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, FormlyFieldInputComponent, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n\n public onFileSelect(event: any) {\n const files = event.files as File[];\n if (this.descriptor.fileMultiple) {\n this.files = [...this.files, ...files];\n } else {\n this.files = [...files];\n }\n this.updateFileFormControl();\n }\n\n public onFileRemove(event: any) {\n const file = event.file as File;\n this.files = this.files.filter(f => f !== file);\n this.updateFileFormControl();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public onFileClear(event: Event) {\n this.files = [];\n this.updateFileFormControl();\n }\n\n public addImageUrl(value: string | null = null) {\n const validators: ValidatorFn[] = [];\n validators.push(Validators.pattern(/^(http|https):\\/\\/[^ \"]+$/));\n validators.push(Validators.minLength(1));\n this.imageFormArray.push(this.formBuilder.control(value, validators));\n }\n\n public removeImageUrlAt(idx: number) {\n this.imageFormArray.removeAt(idx);\n }\n\n public onImageUrlLoadError() {\n if (this.formEditorComponent) {\n const message = getFormEditorWarningMessage(this.translateService, 'general.error', 'mngEditor.imageLoadError');\n this.formEditorComponent.formMessages = [...this.formEditorComponent.formMessages, message];\n }\n }\n\n private updateFileFormControl() {\n const value = this.files.length > 0 ? [...this.files] : null;\n this.iFormControl.setValue(value);\n if (typeof this.descriptor.fileOnSelectHandler === 'function') {\n this.descriptor.fileOnSelectHandler(value, this.iFormControl);\n }\n }\n\n public isFileImageSvg(file: File) {\n return /^image\\/svg/.test(file.type);\n }\n\n public getFileDocumentTypeIcon(file: File) {\n if (/^video\\//.test(file.type)) {\n return 'pi-video';\n }\n if (/^audio\\//.test(file.type)) {\n return 'pi-volume-up';\n }\n switch (file.type) {\n case 'application/pdf':\n return 'pi-file-pdf';\n case 'application/msword':\n case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\n case 'application/vnd.oasis.opendocument.presentation':\n return 'pi-file-word';\n case 'application/vnd.oasis.opendocument.spreadsheet':\n case 'application/vnd.ms-excel':\n case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\n return 'pi-file-excel';\n default:\n return 'pi-file';\n }\n }\n}\n","@switch (props.type) {\n @case ('number') {\n <p-inputNumber\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [min]=\"descriptor.numberAutoCorrect ? descriptor.numberMin ?? NUMBER_MIN_SAFE : undefined\"\n [max]=\"descriptor.numberAutoCorrect ? descriptor.numberMax ?? NUMBER_MAX_SAFE : undefined\"\n [step]=\"$any(descriptor.numberStep)\"\n [useGrouping]=\"descriptor.numberUseGrouping\"\n [minFractionDigits]=\"descriptor.numberMinFractionDigits || 0\"\n [maxFractionDigits]=\"descriptor.numberMaxFractionDigits || 0\"\n [inputStyleClass]=\"descriptor.inputClassName\"\n [locale]=\"descriptor.locale ?? applicationLocale\"\n [mode]=\"numberFieldMode\"\n [currency]=\"currency\"\n [currencyDisplay]=\"descriptor.currencyDisplay\">\n </p-inputNumber>\n }\n\n @case ('switch') {\n <div class=\"field flex flex-column\">\n <label [for]=\"key\" [class]=\"descriptor.labelClassName\"\n >{{ props.label! | translate }}\n @if (props.required && props['hideRequiredMarker'] !== true) {\n <span>*</span>\n }\n </label>\n <p-inputSwitch [id]=\"$any(key)\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" [styleClass]=\"descriptor.inputClassName\"></p-inputSwitch>\n @if (showError) {\n <small class=\"p-error\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n }\n </div>\n }\n @case ('radio') {\n @for (option of descriptor.radioOptions; track option) {\n <div [id]=\"$any(key)\" class=\"field-radiobutton\">\n <p-radioButton\n [name]=\"$any(key)\"\n [value]=\"option.value\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [styleClass]=\"descriptor.inputClassName\"></p-radioButton>\n <label [for]=\"option.value\" [class]=\"'mng-radio-button-label ' + descriptor.labelClassName\">{{ option.title | translate }}</label>\n </div>\n }\n }\n @case ('textarea') {\n <textarea [id]=\"$any(key)\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" [rows]=\"descriptor.rows ?? 3\" pInputTextarea [class]=\"descriptor.inputClassName\">\n </textarea>\n }\n @case ('datepicker') {\n <p-calendar\n appendTo=\"body\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [dateFormat]=\"descriptor.datePickerFormat ?? 'dd.mm.yy'\"\n [minDate]=\"$any(descriptor.datePickerMin)\"\n [maxDate]=\"$any(descriptor.datePickerMax)\"\n [showTime]=\"descriptor.datePickerShowTime ?? false\"\n [showSeconds]=\"descriptor.datePickerShowSeconds ?? false\"\n [showIcon]=\"true\"\n [inputStyleClass]=\"descriptor.inputClassName\"\n [firstDayOfWeek]=\"1\">\n </p-calendar>\n }\n @case ('mask') {\n <p-inputMask\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [mask]=\"descriptor.mask\"\n [placeholder]=\"descriptor.placeholder\"\n [slotChar]=\"$any(descriptor.slotChar)\"\n [styleClass]=\"descriptor.inputClassName\">\n </p-inputMask>\n }\n @case ('file') {\n <p-fileUpload\n #fileUploadInput\n [disabled]=\"iFormControl.disabled\"\n [multiple]=\"descriptor.fileMultiple ?? false\"\n [accept]=\"descriptor.fileAccept ?? (descriptor.fieldType === DESC_INPUT_TYPE_IMAGE_FILE ? 'image/*' : undefined)\"\n [maxFileSize]=\"descriptor.fileMaxFileSize ?? 500000\"\n [showUploadButton]=\"false\"\n (onSelect)=\"onFileSelect($event)\"\n (onRemove)=\"onFileRemove($event)\"\n (onClear)=\"onFileClear($event)\">\n <ng-template let-file let-idx=\"index\" pTemplate=\"file\">\n <div class=\"p-fileupload-row\">\n <div>\n @if (fileUploadInput.isImage(file)) {\n @if (isFileImageSvg(file)) {\n <span class=\"flex align-items-center justify-content-center\">\n <i class=\"pi pi-image text-2xl\"></i>\n </span>\n } @else {\n <img [src]=\"file.objectURL\" [width]=\"fileUploadInput.previewWidth\" (error)=\"fileUploadInput.imageError($event)\" />\n }\n } @else {\n <span class=\"flex align-items-center justify-content-center\">\n <i [class]=\"'pi ' + getFileDocumentTypeIcon(file) + ' text-2xl'\"></i>\n </span>\n }\n </div>\n <div class=\"p-fileupload-filename\">{{ file.name }}</div>\n <div>{{ fileUploadInput.formatSize(file.size) }}</div>\n <div>\n <button\n type=\"button\"\n pButton\n (click)=\"fileUploadInput.remove($event, idx)\"\n [disabled]=\"fileUploadInput.uploading\"\n class=\"p-button-icon-only\"\n [class]=\"fileUploadInput.removeStyleClass\">\n @if (!fileUploadInput.cancelIconTemplate) {\n <TimesIcon />\n }\n </button>\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"content\" let-files>\n @if (files.length === 0) {\n <div class=\"text-gray-300 dropdown-area\">\n <span><i class=\"pi pi-file-import mr-2\"></i>{{ 'fileUpload.dragAndDrop' | translate }}</span>\n </div>\n }\n </ng-template>\n </p-fileUpload>\n }\n @case ('imageUrl') {\n <div>\n @if (descriptor.imagePreview) {\n <div class=\"flex flex-wrap justify-content-start\">\n @for (image of imageFormArray.controls; track image; let idx = $index) {\n @if (imageFormArray.at(idx).valid && imageFormArray.at(idx).value) {\n <p-image [src]=\"imageFormArray.at(idx).value\" [preview]=\"true\" (onImageError)=\"onImageUrlLoadError()\" styleClass=\"mng-image m-2\"></p-image>\n } @else {\n <span class=\"mng-image m-2 p-image-preview-container no-image\">\n <div class=\"p-image-preview-indicator\">\n <i class=\"p-image-preview-icon pi pi-ban\"></i>\n </div>\n </span>\n }\n }\n </div>\n }\n @if (!descriptor.imagePreview || descriptor.imageUrlInputVisibleOnDisabled || !iFormControl.disabled) {\n @for (imageCtrlName of imageFormArray.controls; track imageCtrlName; let idx = $index) {\n <div class=\"p-inputgroup mt-1\">\n <input\n pInputText\n [placeholder]=\"'mngEditor.imageUrlPlaceholder' | translate\"\n [id]=\"$any(key)\"\n type=\"text\"\n [formControl]=\"$any(imageFormArray.at(idx))\"\n [formlyAttributes]=\"field\" />\n @if (descriptor.fileMultiple && !iFormControl.disabled) {\n <button type=\"button\" pButton pRipple icon=\"pi pi-minus\" (click)=\"removeImageUrlAt(idx)\"></button>\n }\n </div>\n }\n @if (descriptor.fileMultiple && !iFormControl.disabled) {\n <button\n type=\"button\"\n pButton\n pRipple\n icon=\"pi pi-plus\"\n class=\"p-button-primary w-auto mt-1\"\n [label]=\"'mngEditor.imageUrlAdd' | translate\"\n (click)=\"addImageUrl()\"></button>\n }\n }\n </div>\n }\n @default {\n <input pInputText [id]=\"$any(key)\" [type]=\"props.type || 'text'\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" [mngInputTrim]=\"descriptor.trimOption\" />\n }\n}\n","import {ChangeDetectionStrategy, Component, HostBinding, OnInit} from '@angular/core';\n\nimport {FieldType} from '@ngx-formly/core';\n\nimport {CommonsFormlyFieldConfig, FieldInputDescriptor} from '@mediusinc/mng-commons/tableview/api';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-label',\n templateUrl: './formly-field-label.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldLabelComponent<ET> extends FieldType<CommonsFormlyFieldConfig> implements OnInit {\n @HostBinding('class') public className = 'hidden';\n\n private descriptor!: FieldInputDescriptor<any>;\n\n public ngOnInit() {\n this.descriptor = this.props.descriptor as FieldInputDescriptor<ET>;\n this.props.fieldComponent = this;\n this.formControl?.patchValue(this.descriptor.label);\n }\n}\n","","import {AsyncPipe} from '@angular/common';\nimport {AfterViewInit, ChangeDetectionStrategy, Component, Injector, OnDestroy, OnInit, ViewChild, inject} from '@angular/core';\nimport {FormControl, ReactiveFormsModule} from '@angular/forms';\n\nimport {FieldType, FormlyModule} from '@ngx-formly/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {Message} from 'primeng/api';\nimport {ButtonModule} from 'primeng/button';\nimport {DialogModule} from 'primeng/dialog';\nimport {InputTextModule} from 'primeng/inputtext';\nimport {MessagesModule} from 'primeng/messages';\nimport {RippleModule} from 'primeng/ripple';\nimport {Observable, ReplaySubject, Subject, Subscription, distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {CommonsInternalError, DataListParams, DataListResult, DialogKeydownHandlerDirective, ErrorUtil, LoggerService, toObservable} from '@mediusinc/mng-commons/core';\nimport {TableComponent} from '@mediusinc/mng-commons/table';\nimport {\n CommonsFormlyFieldConfig,\n FieldLookupConfig,\n FieldLookupDescriptor,\n FormFieldEventComponentSubtype,\n FormFieldEventDialogSubtype,\n FormFieldEventTypeEnum\n} from '@mediusinc/mng-commons/tableview/api';\n\nimport {provideViewContainer} from '../../../../../action/services/providers/provide-view-container';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-lookup-dialog',\n templateUrl: 'formly-field-lookup-dialog.component.html',\n imports: [\n TranslateModule,\n FormlyModule,\n ReactiveFormsModule,\n ButtonModule,\n RippleModule,\n DialogModule,\n AsyncPipe,\n TableComponent,\n MessagesModule,\n InputTextModule,\n DialogKeydownHandlerDirective\n ],\n providers: [provideViewContainer(false)],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldLookupDialogComponent<T, ET> extends FieldType<CommonsFormlyFieldConfig> implements OnInit, AfterViewInit, OnDestroy {\n @ViewChild(TableComponent) public table?: TableComponent;\n\n private readonly logger = inject(LoggerService).create('FormlyFieldLookupDialogComponent');\n\n public descriptor!: FieldLookupDescriptor<T, ET>;\n public config!: FieldLookupConfig;\n public fieldLabelFormControl: FormControl = new FormControl();\n\n public addItemsSubject: Subject<DataListResult<T>> = new ReplaySubject(1);\n public addItemsAsync: Observable<DataListResult<T>> = this.addItemsSubject.asObservable();\n\n public dialogUseDataProvider = false;\n private dialogDataProviderService: any = null;\n private dialogIsLoadingSubject = new ReplaySubject<boolean>(1);\n\n public isDialogVisible = false;\n public dialogAreItemsLoaded = false;\n public dialogSelectedItem: any = null;\n public dialogMessages: Message[] = [];\n public dialogIsLoading$ = this.dialogIsLoadingSubject.asObservable();\n\n private lookupDataProviderSubscription?: Subscription;\n private subscriptions: Subscription[] = [];\n\n constructor(private injector: Injector) {\n super();\n }\n\n ngOnInit(): void {\n this.descriptor = this.props.descriptor as FieldLookupDescriptor<T, ET>;\n this.props.fieldComponent = this;\n\n // emit lifecycle event\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, FormlyFieldLookupDialogComponent, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_INIT\n });\n\n this.config = this.descriptor.config as FieldLookupConfig;\n if (!this.descriptor.dialogTableDataProvider && this.descriptor.dataProvider?.serviceType) {\n this.dialogUseDataProvider = true;\n this.dialogDataProviderService = this.injector.get<any>(this.descriptor.dataProvider.serviceType);\n }\n\n // init values\n this.setFieldLabelValue(this.formControl!.value);\n const subscription = this.formControl!.valueChanges.pipe(\n startWith(this.formControl!.value),\n distinctUntilChanged((prev, curr) => {\n const compareProp = this.descriptor.dialogTableDescriptor!.trackProperty ?? this.descriptor.dialogTableDescriptor!.model.idProperty;\n if (compareProp && typeof prev === 'object' && typeof curr === 'object') {\n return prev[compareProp] === curr[compareProp];\n } else {\n return prev === curr;\n }\n })\n ).subscribe(v => {\n this.setFieldLabelValue(v);\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ValueChange, FormlyFieldLookupDialogComponent, this, {\n value: v\n });\n\n if (this.props['onValueChange']) {\n this.props['onValueChange'](this.field, v);\n }\n });\n this.subscriptions.push(subscription);\n }\n\n ngAfterViewInit() {\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, FormlyFieldLookupDialogComponent, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_VIEW_INIT\n });\n }\n\n ngOnDestroy(): void {\n // warning: formly calls on destroy before on init\n\n this.lookupDataProviderSubscription?.unsubscribe();\n this.subscriptions.forEach(s => s.unsubscribe());\n\n // emit lifecycle event\n this.descriptor?.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, FormlyFieldLookupDialogComponent, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n\n openSelectDialog() {\n if (!this.dialogAreItemsLoaded && this.dialogUseDataProvider) {\n this.dialogIsLoadingSubject.next(true);\n\n const params: DataListParams = {\n limit: 50,\n sort: this.descriptor\n .dialogTableDescriptor!.sorts.filter(s => s.defaultIsEnabled)\n .map(s => ({\n property: s.property,\n ascending: s.defaultIsAscending\n }))\n };\n\n this.lookupDataProviderSubscription = toObservable(this.descriptor.dataProvider?.lookup(params, this.dialogDataProviderService)).subscribe({\n next: res => {\n const dataList = {\n data: res ?? [],\n totalCount: res?.length ?? 0\n };\n this.addItemsSubject.next(dataList);\n this.dialogAreItemsLoaded = true;\n this.dialogIsLoadingSubject.next(false);\n\n this.descriptor.nextEvent(FormFieldEventTypeEnum.DataProvider, FormlyFieldLookupDialogComponent, this, {\n eventSubtype: 'LookupNext',\n queryResult: dataList\n });\n },\n error: err => {\n this.dialogIsLoadingSubject.next(false);\n this.descriptor.nextEvent(FormFieldEventTypeEnum.DataProvider, FormlyFieldLookupDialogComponent, this, {\n eventSubtype: 'LookupError',\n queryResult: err\n });\n\n const error = ErrorUtil.fromSubscribeError(err, 'FormlyFieldLookupDialogComponentError', {\n params: params\n });\n this.logger.log(error, ErrorUtil.getErrorLogLevel(error));\n }\n });\n }\n this.dialogSelectedItem = null;\n this.isDialogVisible = true;\n\n this.formControl.markAsTouched();\n\n this.descriptor.nextEvent(FormFieldEventTypeEnum.DialogLifecycle, FormlyFieldLookupDialogComponent, this, {\n eventSubtype: FormFieldEventDialogSubtype.VISIBILITY,\n dialogVisible: true\n });\n }\n\n onSelectionChange(item: any) {\n this.dialogSelectedItem = item;\n }\n\n onCaptionCmpInst(instance: any) {\n this.descriptor.nextEvent(FormFieldEventTypeEnum.DialogLifecycle, FormlyFieldLookupDialogComponent, this, {\n eventSubtype: FormFieldEventDialogSubtype.TABLE_CAPTION_COMPONENT_INSTANCE,\n captionComponentInstance: instance\n });\n }\n\n onColumnActionCmpInst(instance: any) {\n this.descriptor.nextEvent(FormFieldEventTypeEnum.DialogLifecycle, FormlyFieldLookupDialogComponent, this, {\n eventSubtype: FormFieldEventDialogSubtype.TABLE_COLUMN_ACTIONS_COMPONENT_INSTANCE,\n captionComponentInstance: instance\n });\n }\n\n clear() {\n this.formControl.setValue(undefined);\n this.formControl.markAsTouched();\n this.formControl.markAsDirty();\n this.dialogSelectedItem = null;\n this.dialogAreItemsLoaded = false;\n this.hideDialog();\n }\n\n hideDialog() {\n this.isDialogVisible = false;\n\n this.descriptor.nextEvent(FormFieldEventTypeEnum.DialogLifecycle, FormlyFieldLookupDialogComponent, this, {\n eventSubtype: FormFieldEventDialogSubtype.VISIBILITY,\n dialogVisible: false\n });\n }\n\n addItem() {\n this.formControl.setValue(this.dialogSelectedItem);\n this.formControl.markAsDirty();\n this.formControl.markAsTouched();\n this.dialogSelectedItem = null;\n this.dialogAreItemsLoaded = false;\n this.hideDialog();\n }\n\n private setFieldLabelValue(value: T) {\n if (!value) {\n this.fieldLabelFormControl.setValue('');\n return;\n }\n if (typeof value === 'object') {\n const labelProperty = this.descriptor.optionsLabelProperty ?? this.descriptor.dialogTableDescriptor?.model.titleProperty;\n if (!labelProperty) {\n throw new CommonsInternalError('Could not determine label property.', {name: 'FormlyFieldLookupDialogError'});\n }\n this.fieldLabelFormControl.setValue(value[labelProperty as keyof object]);\n } else {\n this.fieldLabelFormControl.setValue(value);\n }\n }\n}\n","<div [class]=\"'p-inputgroup mng-dropdown-dialog' + descriptor.inputClassName\" [class.p-inputtext-sm]=\"descriptor.isSizeSmall\" [class.p-inputtext-lg]=\"descriptor.isSizeLarge\">\n <input pInputText type=\"text\" [id]=\"$any(key)\" [readonly]=\"true\" [formlyAttributes]=\"field\" [formControl]=\"fieldLabelFormControl\" />\n @if (!props.required && formControl.value && !formControl.disabled) {\n <i class=\"mng-dropdown-clear-icon pi pi-times\" (click)=\"clear()\"></i>\n }\n <button\n pButton\n pRipple\n class=\"mng-dropdown-dialog-search-button\"\n type=\"button\"\n [label]=\"'general.search' | translate: {item: ''}\"\n [disabled]=\"formControl.disabled\"\n (click)=\"openSelectDialog()\"></button>\n</div>\n\n<p-dialog\n [(visible)]=\"isDialogVisible\"\n [draggable]=\"false\"\n [header]=\"'general.search' | translate: {item: props.label!}\"\n [modal]=\"true\"\n appendTo=\"body\"\n styleClass=\"p-fluid mng-dialog mng-formly-field-lookup-dialog\">\n <ng-template pTemplate=\"content\" mngDialogKeydownHandler>\n <mng-table\n [descriptor]=\"descriptor.dialogTableDescriptor!\"\n [dataProvider]=\"descriptor.dialogTableDataProvider\"\n [result]=\"addItemsAsync\"\n [selectionEnabled]=\"true\"\n [selectionMode]=\"'single'\"\n [loading]=\"dialogIsLoading$\"\n [captionComponent]=\"config.table?.captionComponent\"\n [columnCustomLastComponent]=\"config.table?.columnActionComponent\"\n (selectionChange)=\"onSelectionChange($event)\"\n (captionComponentInstance)=\"onCaptionCmpInst($event)\"\n (columnCustomLastComponentInstance)=\"onColumnActionCmpInst($event)\">\n </mng-table>\n <p-messages [value]=\"dialogMessages\"></p-messages>\n </ng-template>\n\n <ng-template pTemplate=\"footer\">\n <button pButton pRipple type=\"button\" [label]=\"'general.cancel' | translate\" icon=\"pi pi-times\" class=\"p-button-text\" (click)=\"hideDialog()\"></button>\n <button\n pButton\n pRipple\n type=\"button\"\n [label]=\"'general.select' | translate\"\n icon=\"pi pi-check\"\n class=\"p-button-text\"\n (click)=\"addItem()\"\n [loading]=\"(dialogIsLoading$ | async) ?? false\"\n loadingIcon=\"pi pi-spin pi-spinner\"\n [disabled]=\"form.disabled\"></button>\n </ng-template>\n</p-dialog>\n","import {AfterViewInit, ChangeDetectionStrategy, Component, Injector, OnDestroy, OnInit} from '@angular/core';\n\nimport {FieldType} from '@ngx-formly/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {BehaviorSubject, Observable, ReplaySubject, Subject, Subscription, distinctUntilChanged, of, throwError} from 'rxjs';\nimport {map, startWith} from 'rxjs/operators';\n\nimport {CommonsInternalError, CommonsService, StyleLevelEnum, StyleSizeEnum, TemplateDirective} from '@mediusinc/mng-commons/core';\nimport {ActionButtonDescriptor, ButtonStyleBuilder} from '@mediusinc/mng-commons/form/api';\nimport {\n ActionContextValidation,\n ActionDescriptor,\n ActionDescriptorInst,\n ActionEditorDescriptor,\n ActionEditorSubmitDescriptor,\n ActionEditorSubmitTypeEnum,\n ActionPositionEnum,\n CommonsFormlyFieldConfig,\n FieldManyEditorActionEnum,\n FieldManyEditorDescriptor,\n FormFieldEventComponentSubtype,\n FormFieldEventTypeEnum\n} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ActionComponent} from '../../../../../action/components/action/action.component';\nimport {ActionTableComponent} from '../../../../../action/components/table/action-table.component';\nimport {provideViewContainer} from '../../../../../action/services/providers/provide-view-container';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-table-dialog-form-field',\n templateUrl: './formly-field-table-dialog-form.component.html',\n styleUrls: ['./formly-field-table-dialog-form.component.scss'],\n imports: [TranslateModule, ActionComponent, ActionTableComponent, TemplateDirective],\n providers: [provideViewContainer(false)],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldTableDialogFormComponent<T = any, ET = any> extends FieldType<CommonsFormlyFieldConfig> implements OnInit, AfterViewInit, OnDestroy {\n public descriptor!: FieldManyEditorDescriptor<T, ET>;\n\n public itemsSubject: Subject<Array<T>> = new ReplaySubject(1);\n public items$: Observable<Array<T>> = this.itemsSubject.asObservable();\n\n public actions: Array<ActionDescriptorInst<T>> = [];\n public toolbarRightActions: Array<ActionDescriptorInst<T>> = [];\n\n private subscriptions: Subscription[] = [];\n private isDisabledSubject = new BehaviorSubject<boolean>(false);\n private isEnabled$ = this.isDisabledSubject.asObservable().pipe(\n distinctUntilChanged(),\n map(e => !e)\n );\n\n constructor(private injector: Injector) {\n super();\n }\n\n public ngOnInit() {\n this.descriptor = this.props.descriptor as FieldManyEditorDescriptor<T, ET>;\n this.props.fieldComponent = this;\n\n const hasViewAction = this.descriptor.fieldActions.some(a => a === FieldManyEditorActionEnum.View);\n const hasAddAction = this.descriptor.fieldActions.some(a => a === FieldManyEditorActionEnum.Add);\n const hasEditAction = this.descriptor.fieldActions.some(a => a === FieldManyEditorActionEnum.Edit);\n const hasDeleteAction = this.descriptor.fieldActions.some(a => a === FieldManyEditorActionEnum.Delete);\n\n if (hasViewAction) {\n const viewAction = ActionEditorDescriptor.create(this.descriptor.tableviewDescriptor.detailsEditor, 'details', {\n parentType: this.descriptor.editor.model.type,\n parentProperty: this.descriptor.property\n })\n .withPosition(ActionPositionEnum.RowClick)\n .withDialogSize(StyleSizeEnum.Small)\n .withFetchFunction(ctx => {\n this.formControl.markAsTouched();\n return of(ctx.parameters.item || ({} as T));\n });\n viewAction.withEditorActions([ActionEditorSubmitDescriptor.forSecondary(viewAction, ActionEditorSubmitTypeEnum.Cancel)]);\n viewAction.button.withLabel(null);\n this.actions.push(viewAction);\n }\n\n if (hasAddAction) {\n const addAction = ActionEditorDescriptor.create(this.descriptor.tableviewDescriptor.addEditor, 'add', {\n parentType: this.descriptor.editor.model.type,\n parentProperty: this.descriptor.property\n })\n .withPosition(ActionPositionEnum.ToolbarRight)\n .withDialogSize(StyleSizeEnum.Small)\n .withButtonDescriptor(new ActionButtonDescriptor().withStyleClass(new ButtonStyleBuilder().withSize(StyleSizeEnum.ExtraSmall)))\n .withFetchFunction(ctx => {\n setTimeout(this.formControl.markAsTouched, 0);\n return of(ctx.parameters.item || ({} as T));\n })\n .withSubmitFunction(ctx => {\n if (!ctx.parameters.item) {\n return throwError(\n () => new CommonsInternalError(`No item was provided in context, add cannot be done.`, {name: 'FormlyFieldTableDialogFormComponentError'})\n );\n }\n this.formState.submittedOn = Date.now();\n let value = this.formControl.value;\n value = [...value, ctx.parameters.item];\n this.formControl.patchValue(value);\n this.formControl.markAsDirty();\n this.formControl.markAsTouched();\n return of(ctx.parameters.item);\n })\n .withRunNotificationSuccess(undefined, undefined, false)\n .withRunNotificationError(undefined, undefined, false)\n .withIsVisibleFunction(() => of(!this.options?.formState.disabled))\n .withIsEnabledFunction(() => this.isEnabled$);\n addAction.button.withLabel(null).withIcon('pi pi-plus');\n this.actions.push(addAction);\n }\n if (hasEditAction) {\n const editAction = ActionEditorDescriptor.create(this.descriptor.tableviewDescriptor.editEditor, 'edit', {\n parentType: this.descriptor.editor.model.type,\n parentProperty: this.descriptor.property\n })\n .withPosition(ActionPositionEnum.RowInline)\n .withDialogSize(StyleSizeEnum.Small)\n .withButtonDescriptor(new ActionButtonDescriptor().withStyleClass(new ButtonStyleBuilder().withSize(StyleSizeEnum.ExtraSmall)))\n .withFetchFunction(ctx => {\n this.formControl.markAsTouched();\n return of(ctx.parameters.item || ({} as T));\n })\n .withSubmitFunction(ctx => {\n if (!ctx.parameters.item) {\n return throwError(\n () => new CommonsInternalError(`No item was provided in context, edit cannot be done.`, {name: 'FormlyFieldTableDialogFormComponentError'})\n );\n }\n this.formState.submittedOn = Date.now();\n const formControlValue = [...this.formControl.value];\n formControlValue[ctx.parameters.actionData?.['itemIndex']] = ctx.parameters.item;\n this.formControl.patchValue(formControlValue);\n this.formControl.markAsDirty();\n this.formControl.markAsTouched();\n return of(ctx.parameters.item);\n })\n .withRunNotificationSuccess(undefined, undefined, false)\n .withRunNotificationError(undefined, undefined, false)\n .withIsVisibleFunction(ctx => (this.hideActionsForRowWithDefaultLocalization(ctx) ? of(false) : of(!this.formControl?.disabled)))\n .withIsEnabledFunction(() => this.isEnabled$);\n editAction.button.withLabel(null).withIcon('pi pi-pencil');\n this.actions.push(editAction);\n }\n if (hasDeleteAction) {\n const deleteAction = ActionDescriptor.fromModel(this.descriptor.tableviewDescriptor.model, 'delete', {\n parentType: this.descriptor.editor.model.type,\n parentProperty: this.descriptor.property\n })\n .withPosition(ActionPositionEnum.RowInline)\n .withButtonDescriptor(new ActionButtonDescriptor().withStyleClass(new ButtonStyleBuilder(StyleLevelEnum.Danger).withSize(StyleSizeEnum.ExtraSmall)))\n .withRunFunction(ctx => {\n if (!ctx.parameters.item) {\n return throwError(\n () => new CommonsInternalError(`No item was provided in context, delete cannot be done.`, {name: 'FormlyFieldTableDialogFormComponentError'})\n );\n }\n let formControlValue = this.formControl.value as Array<T>;\n const compareProperty = this.descriptor.tableDescriptor.trackProperty\n ? this.descriptor.tableDescriptor.trackProperty\n : this.descriptor.tableDescriptor.model.idProperty;\n const ctxItem: any = ctx.parameters.item;\n if (compareProperty && ctxItem?.[compareProperty]) {\n formControlValue = formControlValue.filter((i: any) => i[compareProperty] !== ctxItem[compareProperty]);\n this.formControl.patchValue(formControlValue);\n this.formControl.markAsDirty();\n } else if (typeof ctx.parameters.actionData?.['itemIndex'] === 'number') {\n formControlValue.splice(ctx.parameters.actionData['itemIndex'], 1);\n this.formControl.patchValue([...formControlValue]);\n this.formControl.markAsDirty();\n } else {\n return throwError(\n () =>\n new CommonsInternalError('Cannot compare items, please provide main table data key property or model id property.', {\n name: 'FormlyFieldTableDialogFormComponentError'\n })\n );\n }\n\n this.formControl.markAsTouched();\n\n return of(ctxItem);\n })\n .withRunNotificationSuccess(undefined, undefined, false)\n .withRunNotificationError(undefined, undefined, false)\n .withIsVisibleFunction(ctx => (this.hideActionsForRowWithDefaultLocalization(ctx) ? of(false) : of(!this.options?.formState.disabled)))\n .withIsEnabledFunction(() => this.isEnabled$);\n deleteAction.button.withLabel(null).withIcon('pi pi-trash');\n this.actions.push(deleteAction);\n }\n\n this.actions.push(...this.descriptor.actions);\n for (const action of this.actions) {\n switch (action.position) {\n case ActionPositionEnum.ToolbarRight:\n this.toolbarRightActions.push(action);\n break;\n }\n }\n\n // init values\n if (typeof this.formControl.value === 'undefined' || this.formControl.value === null) {\n this.formControl.patchValue([]);\n }\n\n // emit lifecycle event\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, FormlyFieldTableDialogFormComponent, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_INIT\n });\n\n let subscription = this.formControl.valueChanges.pipe(startWith(this.formControl.value)).subscribe(v => {\n this.itemsSubject.next(v);\n\n // emit lifecycle event\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ValueChange, FormlyFieldTableDialogFormComponent, this, {\n value: v\n });\n\n if (this.props['onValueChange']) {\n this.props['onValueChange'](this.field, v);\n }\n });\n this.subscriptions.push(subscription);\n\n this.isDisabledSubject.next(this.formControl.disabled);\n subscription = this.formControl.statusChanges.pipe().subscribe(status => {\n if (status === 'DISABLED' && !this.isDisabledSubject.value) {\n this.isDisabledSubject.next(true);\n } else if (status !== 'DISABLED' && this.isDisabledSubject.value) {\n this.isDisabledSubject.next(false);\n }\n });\n this.subscriptions.push(subscription);\n }\n\n public ngAfterViewInit() {\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, FormlyFieldTableDialogFormComponent, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_VIEW_INIT\n });\n }\n\n public ngOnDestroy() {\n // warning: formly calls on destroy before on init\n\n this.subscriptions.forEach(s => s.unsubscribe());\n\n // emit lifecycle event\n this.descriptor?.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, FormlyFieldTableDialogFormComponent, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n\n private hideActionsForRowWithDefaultLocalization(ctx: ActionContextValidation<T>) {\n if (this.descriptor.tableDescriptor.isLocalized) {\n if ((ctx.parameters.item as any)[this.descriptor.tableDescriptor.localizationLocaleProperty!] === this.injector.get(CommonsService).defaultDataLanguage) {\n return true;\n }\n }\n return false;\n }\n}\n","<mng-action-table [descriptor]=\"descriptor.tableDescriptor\" [items]=\"items$\" [actions]=\"actions\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-row justify-content-end align-items-center table-header\">\n <label class=\"mng-datatable-form-label p-0 m-0\" [for]=\"key\"\n >{{ props.label! | translate }}\n @if (props.required && props['hideRequiredMarker'] !== true) {\n <span>*</span>\n }\n </label>\n @for (action of toolbarRightActions; track action) {\n <mng-action [action]=\"action\"></mng-action>\n }\n </div>\n </ng-template>\n</mng-action-table>\n","import {AsyncPipe, NgStyle} from '@angular/common';\nimport {AfterViewInit, ChangeDetectionStrategy, Component, Injector, OnDestroy, OnInit, ViewChild, inject} from '@angular/core';\n\nimport {FieldType} from '@ngx-formly/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ButtonModule} from 'primeng/button';\nimport {DialogModule} from 'primeng/dialog';\nimport {InputTextModule} from 'primeng/inputtext';\nimport {RippleModule} from 'primeng/ripple';\nimport {Observable, ReplaySubject, Subject, Subscription, debounceTime, distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {\n CommonsInternalError,\n DataListParams,\n DataListResult,\n DialogKeydownHandlerDirective,\n ErrorUtil,\n FilterMatchMode,\n LoggerService,\n ObjectUtil,\n TemplateDirective,\n toObservable\n} from '@mediusinc/mng-commons/core';\nimport {TableComponent} from '@mediusinc/mng-commons/table';\nimport {\n CommonsFormlyFieldConfig,\n FieldManyToManyEditorActionEnum,\n FieldManyToManyEditorDescriptor,\n FormFieldEventComponentSubtype,\n FormFieldEventDialogSubtype,\n FormFieldEventTypeEnum\n} from '@mediusinc/mng-commons/tableview/api';\n\nimport {provideViewContainer} from '../../../../../action/services/providers/provide-view-container';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-table-multiselect-add-field',\n templateUrl: './formly-field-table-dialog-multiselect.component.html',\n styleUrls: ['./formly-field-table-dialog-multiselect.component.scss'],\n imports: [TranslateModule, AsyncPipe, TableComponent, DialogModule, ButtonModule, RippleModule, TemplateDirective, InputTextModule, NgStyle, DialogKeydownHandlerDirective],\n providers: [provideViewContainer(false)],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldTableDialogMultiselectComponent extends FieldType<CommonsFormlyFieldConfig> implements OnInit, AfterViewInit, OnDestroy {\n private readonly logger = inject(LoggerService).create('FormlyFieldTableDialogMultiselectComponent');\n\n public descriptor!: FieldManyToManyEditorDescriptor<any, any>;\n\n public itemsSubject: Subject<Array<any>> = new ReplaySubject(1);\n public itemsAsync: Observable<Array<any>> = this.itemsSubject.asObservable();\n public addItemsSubject: Subject<DataListResult> = new ReplaySubject(1);\n public addItemsAsync: Observable<DataListResult> = this.addItemsSubject.asObservable();\n\n public dialogUseDataProvider = false;\n private dialogDataProviderService: any = null;\n private dialogIsLoadingSubject = new ReplaySubject<boolean>(1);\n\n public isDialogVisible = false;\n public dialogAreItemsLoaded = false;\n public dialogSelectedAddItems: Array<any> = [];\n public dialogIsLoading$ = this.dialogIsLoadingSubject.asObservable();\n\n public hasAddAction = false;\n public hasDeleteAction = false;\n\n private searchDebounceSubject = new Subject<string>();\n\n private lookupDataProviderSubscription?: Subscription;\n private subscriptions: Subscription[] = [];\n\n @ViewChild('addTableComponent') addTableComponent?: TableComponent;\n\n constructor(private injector: Injector) {\n super();\n }\n\n public ngOnInit() {\n this.descriptor = this.props.descriptor as FieldManyToManyEditorDescriptor<any, any>;\n this.props.fieldComponent = this;\n\n this.dialogIsLoadingSubject.next(false);\n\n if (this.descriptor.lookupTableDataProvider?.serviceType) {\n this.dialogUseDataProvider = true;\n this.dialogDataProviderService = this.injector.get<any>(this.descriptor.lookupTableDataProvider.serviceType);\n }\n this.hasAddAction = this.descriptor.actions.some(a => a === FieldManyToManyEditorActionEnum.Add);\n this.hasDeleteAction = this.descriptor.actions.some(a => a === FieldManyToManyEditorActionEnum.Delete);\n\n // init values\n if (typeof this.formControl.value === 'undefined' || this.formControl.value === null) {\n this.formControl.patchValue([]);\n }\n\n // emit lifecycle event\n this.descriptor?.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, FormlyFieldTableDialogMultiselectComponent, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_INIT\n });\n\n const subscription = this.formControl.valueChanges.pipe(startWith(this.formControl.value), distinctUntilChanged()).subscribe(v => {\n this.itemsSubject.next(v ?? []);\n\n // emit lifecycle event\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ValueChange, FormlyFieldTableDialogMultiselectComponent, this, {\n value: v ?? []\n });\n\n if (this.props['onValueChange']) {\n this.props['onValueChange'](this.field, v ?? []);\n }\n });\n\n this.subscriptions.push(\n this.searchDebounceSubject.pipe(debounceTime(200), distinctUntilChanged()).subscribe(query => {\n this.addTableComponent?.primeTable.filterGlobal(query, 'contains');\n })\n );\n\n this.subscriptions.push(subscription);\n }\n\n public ngAfterViewInit() {\n // emit lifecycle event\n this.descriptor?.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, FormlyFieldTableDialogMultiselectComponent, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_VIEW_INIT\n });\n }\n\n public ngOnDestroy() {\n // warning: formly calls on destroy before on init\n\n this.lookupDataProviderSubscription?.unsubscribe();\n this.subscriptions.forEach(s => s.unsubscribe());\n\n // emit lifecycle event\n this.descriptor?.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, FormlyFieldTableDialogMultiselectComponent, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n\n openAddDialog() {\n this.dialogSelectedAddItems = [];\n this.isDialogVisible = true;\n\n if (!this.dialogAreItemsLoaded && this.dialogUseDataProvider) {\n // wrapped in request animation frame due to primeng bug: https://github.com/primefaces/primeng/issues/12980\n requestAnimationFrame(() => {\n this.dialogIsLoadingSubject.next(true);\n const params: DataListParams = {limit: 50, sort: []};\n if (this.descriptor.lookupTableDescriptor.sorts.some(s => s.defaultIsEnabled)) {\n this.descriptor.lookupTableDescriptor.sorts.forEach(s => {\n if (s.defaultIsEnabled) {\n params.sort?.push({\n property: s.property,\n ascending: s.defaultIsAscending\n });\n }\n });\n }\n if (this.descriptor.hasLookupExcludeValues) {\n const filterValues = this.formControl.value.map((i: any) => ObjectUtil.getPropertyByPath(i, this.descriptor.excludeValueProperty));\n params.filters = {\n [this.descriptor.excludeFilterProperty as keyof object]: {\n matchMode: FilterMatchMode.NotIn,\n value: filterValues\n }\n };\n }\n this.lookupDataProviderSubscription = toObservable(this.descriptor.lookupTableDataProvider?.getAll(params, this.dialogDataProviderService)).subscribe({\n next: res => {\n this.addItemsSubject.next(res);\n this.dialogAreItemsLoaded = true;\n this.dialogIsLoadingSubject.next(false);\n },\n error: err => {\n this.dialogIsLoadingSubject.next(false);\n\n const error = ErrorUtil.fromSubscribeError(err, 'FormlyFieldTableDialogMultiselectComponent', {\n params: params\n });\n this.logger.log(error, ErrorUtil.getErrorLogLevel(error));\n }\n });\n });\n }\n\n this.formControl.markAsTouched();\n\n this.descriptor.nextEvent(FormFieldEventTypeEnum.DialogLifecycle, FormlyFieldTableDialogMultiselectComponent, this, {\n eventSubtype: FormFieldEventDialogSubtype.VISIBILITY,\n dialogVisible: true\n });\n }\n\n onSelectionChange(items: Array<any>) {\n this.dialogSelectedAddItems = items;\n }\n\n hideDialog() {\n this.isDialogVisible = false;\n\n this.descriptor.nextEvent(FormFieldEventTypeEnum.DialogLifecycle, FormlyFieldTableDialogMultiselectComponent, this, {\n eventSubtype: FormFieldEventDialogSubtype.VISIBILITY,\n dialogVisible: false\n });\n }\n\n addItems() {\n let value = this.formControl.value;\n if (!Array.isArray(value)) {\n value = [];\n }\n value = [...value, ...this.dialogSelectedAddItems];\n this.formControl.patchValue(value);\n this.formControl.markAsDirty();\n this.formControl.markAsTouched();\n this.dialogSelectedAddItems = [];\n this.dialogAreItemsLoaded = false;\n this.hideDialog();\n }\n\n removeItem(item: any) {\n let value = this.formControl.value;\n if (!Array.isArray(value)) {\n value = [];\n }\n const compareProperty = this.descriptor.mainTableDescriptor.trackProperty\n ? this.descriptor.mainTableDescriptor.trackProperty\n : this.descriptor.mainTableDescriptor.model.idProperty;\n if (!compareProperty) {\n throw new CommonsInternalError('Cannot compare items, please provide main table data key property or model id property.', {\n name: 'FormlyFieldTableDialogMultiselectComponentError'\n });\n }\n value = value.filter((i: any) => ObjectUtil.getPropertyByPath(i, compareProperty) !== ObjectUtil.getPropertyByPath(item, compareProperty));\n this.formControl.patchValue(value);\n this.formControl.markAsTouched();\n this.formControl.markAsDirty();\n this.dialogAreItemsLoaded = false;\n }\n\n public onSearch(event: Event) {\n const query = (event.target as HTMLInputElement).value;\n this.searchDebounceSubject.next(query);\n }\n}\n","<mng-table [descriptor]=\"descriptor.mainTableDescriptor\" [items]=\"itemsAsync\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-row justify-content-end align-items-center table-header pt-0\">\n <label class=\"mng-datatable-form-label p-0 m-0\" [for]=\"key\"\n >{{ props.label! | translate }}\n @if (props.required && props['hideRequiredMarker'] !== true) {\n <span>*</span>\n }\n </label>\n @if (hasAddAction && !options.formState?.disabled) {\n <button\n pButton\n pRipple\n type=\"button\"\n icon=\"pi pi-plus\"\n class=\"p-button-rounded mng-button-xs\"\n (click)=\"openAddDialog()\"\n [disabled]=\"formControl!.disabled\"></button>\n }\n </div>\n </ng-template>\n <ng-template mngTemplate=\"columnAction\" let-item=\"rowItem\">\n @if (hasDeleteAction && !options.formState?.disabled) {\n <button\n pButton\n pRipple\n type=\"button\"\n icon=\"pi pi-trash\"\n class=\"p-button-rounded p-button-danger mng-button-xs\"\n (click)=\"removeItem(item)\"\n [disabled]=\"formControl!.disabled\"></button>\n }\n </ng-template>\n</mng-table>\n\n@if (hasAddAction) {\n <p-dialog\n [(visible)]=\"isDialogVisible\"\n [draggable]=\"false\"\n [header]=\"'general.addItem' | translate: {item: props.label! | translate}\"\n [modal]=\"true\"\n appendTo=\"body\"\n styleClass=\"p-fluid mng-dialog mng-dialog-sm mng-formly-field-table-multiselect-dialog\">\n <ng-template pTemplate=\"content\" class=\"table-container\" mngDialogKeydownHandler>\n <div class=\"h-full flex flex-column\">\n <div class=\"flex-grow-1 formly-field-table-multiselect-dialog-form-container\">\n <div class=\"mng-formly-field-table-multiselect-dialog-table\">\n <mng-table\n #addTableComponent\n [descriptor]=\"descriptor.lookupTableDescriptor\"\n [globalFilterFields]=\"descriptor.searchFields\"\n [result]=\"addItemsAsync\"\n [selectionEnabled]=\"true\"\n [loading]=\"dialogIsLoading$\"\n (selectionChange)=\"onSelectionChange($event)\">\n @if (descriptor.searchEnabled) {\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex\">\n <span class=\"p-input-icon-left ml-auto\" [ngStyle]=\"{width: 'unset'}\">\n <i class=\"pi pi-search\"></i>\n <input pInputText type=\"text\" (input)=\"onSearch($event)\" [placeholder]=\"'general.search' | translate\" />\n </span>\n </div>\n </ng-template>\n }\n </mng-table>\n </div>\n </div>\n <div class=\"flex flex-row justify-content-end mng-formly-field-table-multiselect-dialog-footer\">\n <button pButton pRipple type=\"button\" [label]=\"'general.cancel' | translate\" icon=\"pi pi-times\" class=\"p-button-text\" (click)=\"hideDialog()\"></button>\n <button\n pButton\n pRipple\n type=\"button\"\n [label]=\"'general.add' | translate\"\n icon=\"pi pi-check\"\n class=\"p-button-primary\"\n (click)=\"addItems()\"\n [loading]=\"(dialogIsLoading$ | async) ?? false\"\n loadingIcon=\"pi pi-spin pi-spinner\"\n [disabled]=\"form.disabled\"></button>\n </div>\n </div>\n </ng-template>\n </p-dialog>\n}\n","import {ChangeDetectionStrategy, Component} from '@angular/core';\n\nimport {FieldType, FormlyModule} from '@ngx-formly/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {TabViewModule} from 'primeng/tabview';\n\nimport {CommonsFormlyFieldConfig} from '@mediusinc/mng-commons/tableview/api';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-tabs',\n templateUrl: './formly-field-tabs.component.html',\n imports: [TabViewModule, TranslateModule, FormlyModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldTabsComponent extends FieldType<CommonsFormlyFieldConfig> {}\n","<p-tabView [scrollable]=\"true\">\n @for (tab of field.fieldGroup; track tab) {\n <p-tabPanel [header]=\"tab.props?.label! | translate\" [headerStyleClass]=\"formControl!.valid ? 'p-tabview-title' : undefined\">\n <ng-template pTemplate=\"header\">\n <span class=\"p-tabview-title\" [class.p-tabview-title-error]=\"formState.submittedOn && formState['tab_' + (tab.id ? tab.id : tab.props?.label!) + '_invalid']\">{{\n tab.props?.label! | translate\n }}</span>\n </ng-template>\n <formly-field [field]=\"tab\"></formly-field>\n </p-tabPanel>\n }\n</p-tabView>\n","import {ChangeDetectionStrategy, Component} from '@angular/core';\n\nimport {FieldWrapper, FormlyModule} from '@ngx-formly/core';\nimport {FormlyFieldConfig} from '@ngx-formly/core/lib/models/fieldconfig';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-no-label-wrapper',\n templateUrl: './formly-field-no-label-wrapper.component.html',\n imports: [FormlyModule, TranslateModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldNoLabelWrapperComponent extends FieldWrapper {\n public shouldShowError() {\n if (this.field.type !== 'formly-group' || (this.field.validators && Object.keys(this.field.validators).length > 0)) {\n return true;\n }\n return false;\n }\n\n public sanitizeErrorsForGroups(field: FormlyFieldConfig) {\n if (field.type === 'formly-group' && field.formControl?.errors && field.validators) {\n const errors: {[key: string]: any} = {};\n for (const key of Object.keys(field.formControl.errors)) {\n if (Object.prototype.hasOwnProperty.call(field.validators, key)) {\n errors[key] = field.validators[key];\n }\n }\n\n return {...field, formControl: {...field.formControl, errors}} as FormlyFieldConfig;\n }\n\n return field;\n }\n}\n","<div [class]=\"props['descriptor']?.['fieldClassName'] ?? 'field table'\">\n <ng-container #fieldComponent></ng-container>\n @if (props['descriptor']?.['helpText']) {\n <small class=\"block\">{{ props['descriptor']?.['helpText'] | translate }}</small>\n }\n @if (showError && shouldShowError()) {\n <small class=\"block p-error\">\n <formly-validation-message [field]=\"sanitizeErrorsForGroups(field)\"></formly-validation-message>\n </small>\n }\n</div>\n","import {ChangeDetectionStrategy, Component, OnInit} from '@angular/core';\n\nimport {FieldWrapper, FormlyModule} from '@ngx-formly/core';\nimport {TranslateModule} from '@ngx-translate/core';\n\nimport {AFieldDescriptor} from '@mediusinc/mng-commons/tableview/api';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-wrapper',\n templateUrl: './formly-field-wrapper.component.html',\n imports: [TranslateModule, FormlyModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldWrapperComponent extends FieldWrapper implements OnInit {\n public ngOnInit() {\n const descriptor = this.props?.['descriptor'] as AFieldDescriptor<any, any>;\n if (this.formState.disabled && descriptor.isLocalized) {\n this.addMissingTranslationHelperText();\n }\n }\n\n private addMissingTranslationHelperText(): void {\n if (!this.model[this.props?.['descriptor'].property + 'Translated'] && this.props?.['descriptor']?.property !== 'id') {\n this.props?.['descriptor']?.withHelpText('mngEditor.localizations.missingTranslation');\n this.field.className += ' localized-input-border-orange';\n } else {\n this.props?.['descriptor']?.withHelpText('');\n }\n }\n}\n","<div [class]=\"props['descriptor']?.['fieldClassName'] ?? 'field'\">\n <div class=\"grid mt-0\">\n @if (props.label) {\n <label [for]=\"key\" class=\"col\" [class]=\"props['descriptor']?.['labelClassName'] ?? ''\"\n >{{ props!.label! | translate }}\n @if (props.required && props['hideRequiredMarker'] !== true) {\n <span>*</span>\n }\n </label>\n }\n </div>\n <ng-container #fieldComponent></ng-container>\n @if (props['descriptor']?.['helpText']) {\n <small class=\"block\">{{ props['descriptor']?.['helpText'] | translate }}</small>\n }\n @if (showError) {\n <small class=\"p-error block\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n }\n</div>\n","import {DatePipe} from '@angular/common';\n\nimport {WrapperOption} from '@ngx-formly/core/lib/models/config';\nimport {TranslateService} from '@ngx-translate/core';\nimport {Observable} from 'rxjs';\n\nimport {CommonsFormlyFieldConfig, FieldInputDescriptor} from '@mediusinc/mng-commons/tableview/api';\n\nimport {FormlyFieldActionComponent} from '../components/formly/fields/formly-field-action/formly-field-action.component';\nimport {FormlyFieldAutocompleteComponent} from '../components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component';\nimport {FormlyFieldCustomComponent} from '../components/formly/fields/formly-field-custom/formly-field-custom.component';\nimport {FormlyFieldDropdownComponent} from '../components/formly/fields/formly-field-dropdown/formly-field-dropdown.component';\nimport {FormlyFieldFieldsetComponent} from '../components/formly/fields/formly-field-fieldset/formly-field-fieldset.component';\nimport {FormlyFieldInputComponent} from '../components/formly/fields/formly-field-input/formly-field-input.component';\nimport {FormlyFieldLabelComponent} from '../components/formly/fields/formly-field-label/formly-field-label.component';\nimport {FormlyFieldLookupDialogComponent} from '../components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component';\nimport {FormlyFieldTableDialogFormComponent} from '../components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component';\nimport {FormlyFieldTableDialogMultiselectComponent} from '../components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component';\nimport {FormlyFieldTabsComponent} from '../components/formly/fields/formly-field-tabs/formly-field-tabs.component';\nimport {FormlyFieldNoLabelWrapperComponent} from '../components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component';\nimport {FormlyFieldWrapperComponent} from '../components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component';\nimport {CommonsFormlyTypeConfig} from '../models/formly-config.model';\n\nexport const formlyWrappersConfig: WrapperOption[] = [\n {name: 'field', component: FormlyFieldWrapperComponent},\n {name: 'field-no-label', component: FormlyFieldNoLabelWrapperComponent}\n];\n\nexport const formlyTypesConfig: CommonsFormlyTypeConfig[] = [\n {\n name: 'label',\n component: FormlyFieldLabelComponent,\n wrappers: ['field']\n },\n {\n name: 'input',\n component: FormlyFieldInputComponent,\n wrappers: ['field']\n },\n {name: 'string', extends: 'input'},\n {\n name: 'number',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'number'\n }\n }\n },\n {\n name: 'currency',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'number'\n }\n }\n },\n {\n name: 'integer',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'number'\n }\n }\n },\n {\n name: 'textarea',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'textarea'\n }\n }\n },\n {\n name: 'switch',\n component: FormlyFieldInputComponent,\n defaultOptions: {\n props: {\n type: 'switch'\n }\n }\n },\n {\n name: 'radio',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'radio'\n }\n }\n },\n {\n name: 'datepicker',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'datepicker'\n }\n }\n },\n {\n name: 'mask',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'mask'\n }\n }\n },\n {\n name: 'file',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'file'\n }\n }\n },\n {\n name: 'imageUrl',\n component: FormlyFieldInputComponent,\n defaultOptions: {\n props: {\n type: 'imageUrl'\n }\n },\n wrappers: ['field']\n },\n {\n name: 'dropdown',\n component: FormlyFieldDropdownComponent,\n wrappers: ['field']\n },\n {name: 'enum', extends: 'dropdown'},\n {\n name: 'autocomplete',\n component: FormlyFieldAutocompleteComponent,\n wrappers: ['field']\n },\n {\n name: 'action',\n component: FormlyFieldActionComponent,\n wrappers: ['field-no-label']\n },\n {\n name: 'dialog',\n component: FormlyFieldLookupDialogComponent,\n wrappers: ['field']\n },\n {\n name: 'table-dialog-multiselect',\n component: FormlyFieldTableDialogMultiselectComponent,\n wrappers: ['field-no-label']\n },\n {\n name: 'table-dialog-form',\n component: FormlyFieldTableDialogFormComponent,\n wrappers: ['field-no-label']\n },\n {\n name: 'tabs',\n component: FormlyFieldTabsComponent,\n wrappers: []\n },\n {\n name: 'fieldset',\n component: FormlyFieldFieldsetComponent,\n wrappers: []\n },\n {\n name: 'formly-group',\n wrappers: ['field-no-label']\n },\n {\n name: 'custom',\n component: FormlyFieldCustomComponent,\n wrappers: []\n }\n];\n\nexport function getRequiredValidationMessage(translate: TranslateService): (error: any, field: CommonsFormlyFieldConfig) => Observable<string> {\n return (error: any, field: CommonsFormlyFieldConfig) => {\n const fieldLabel = field.props.label || 'field';\n const fieldName = translate.instant(fieldLabel);\n return translate.instant('mngEditor.validation.required', {field: fieldName});\n };\n}\n\nexport function getMinLengthValidationMessage(translate: TranslateService): (error: any, field: CommonsFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: CommonsFormlyFieldConfig) => {\n const fieldLabel = field.props.label ?? 'field';\n const fieldName = translate.instant(fieldLabel);\n return translate.instant('mngEditor.validation.minLength', {field: fieldName, minLength: field.props.minLength});\n };\n}\n\nexport function getMaxLengthValidationMessage(translate: TranslateService): (error: any, field: CommonsFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: CommonsFormlyFieldConfig) => {\n const fieldLabel = field.props.label || 'field';\n const fieldName = translate.instant(fieldLabel);\n return translate.instant('mngEditor.validation.maxLength', {field: fieldName, maxLength: field.props.maxLength});\n };\n}\n\nexport function getMinValidationMessage(translate: TranslateService): (error: any, field: CommonsFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: CommonsFormlyFieldConfig) => {\n const fieldLabel = field.props.label ?? 'field';\n const fieldName = translate.instant(fieldLabel);\n return translate.instant('mngEditor.validation.min', {field: fieldName, min: field.props.min});\n };\n}\n\nexport function getMaxValidationMessage(translate: TranslateService): (error: any, field: CommonsFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: CommonsFormlyFieldConfig) => {\n const fieldLabel = field.props.label || 'field';\n const fieldName = translate.instant(fieldLabel);\n return translate.instant('mngEditor.validation.max', {field: fieldName, max: field.props.max});\n };\n}\n\nexport function getTextPatternValidationMessage(translate: TranslateService): (error: any, field: CommonsFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: CommonsFormlyFieldConfig) => {\n const fieldLabel = field.props.label ?? 'field';\n const fieldName = translate.instant(fieldLabel);\n return translate.instant('mngEditor.validation.pattern', {field: fieldName, pattern: field.props.pattern});\n };\n}\n\nexport function getEmailValidationMessage(translate: TranslateService): (error: any, field: CommonsFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: CommonsFormlyFieldConfig) => {\n const fieldLabel = field.props.label || 'field';\n const fieldName = translate.instant(fieldLabel);\n return translate.instant('mngEditor.validation.email', {field: fieldName});\n };\n}\n\nexport function getMinDateValidationMessage(translate: TranslateService, datePipe: DatePipe): (error: any, field: CommonsFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: CommonsFormlyFieldConfig) => {\n const inputDescriptor = field.props.descriptor as FieldInputDescriptor<any>;\n const minDate = inputDescriptor.datePickerMin;\n\n if (!minDate) return '';\n let dateString = datePipe.transform(minDate, 'dd. MM. yyyy') ?? '';\n\n if (inputDescriptor.datePickerShowTime) {\n dateString += datePipe.transform(minDate, ' HH:mm:ss');\n }\n\n return translate.instant('mngEditor.validation.minDate', {min: dateString});\n };\n}\n\nexport function getMaxDateValidationMessage(translate: TranslateService, datePipe: DatePipe): (error: any, field: CommonsFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: CommonsFormlyFieldConfig) => {\n const inputDescriptor = field.props.descriptor as FieldInputDescriptor<any>;\n const maxDate = inputDescriptor.datePickerMax;\n\n if (!maxDate) return '';\n let dateString = datePipe.transform(maxDate, 'dd. MM. yyyy') ?? '';\n\n if (inputDescriptor.datePickerShowTime) {\n dateString += datePipe.transform(maxDate, ' HH:mm:ss');\n }\n\n return translate.instant('mngEditor.validation.maxDate', {max: dateString});\n };\n}\n\nexport const getFormlyValidationMessages = (translate: TranslateService, datePipe: DatePipe): any[] => {\n return [\n {name: 'required', message: getRequiredValidationMessage(translate)},\n {name: 'minLength', message: getMinLengthValidationMessage(translate)},\n {name: 'maxLength', message: getMaxLengthValidationMessage(translate)},\n {name: 'min', message: getMinValidationMessage(translate)},\n {name: 'max', message: getMaxValidationMessage(translate)},\n {name: 'pattern', message: getTextPatternValidationMessage(translate)},\n {name: 'email', message: getEmailValidationMessage(translate)},\n {name: 'minDate', message: getMinDateValidationMessage(translate, datePipe)},\n {name: 'maxDate', message: getMaxDateValidationMessage(translate, datePipe)}\n ];\n};\n","import {DatePipe} from '@angular/common';\n\nimport {ConfigOption} from '@ngx-formly/core';\nimport {TranslateService} from '@ngx-translate/core';\n\nimport {TableviewFeatureConfig} from '../../tableview/services/tableview-feature-config.token';\nimport {formlyTypesConfig, formlyWrappersConfig, getFormlyValidationMessages} from '../helpers/formly-config';\n\nexport function commonsFormlyConfigProvider(translate: TranslateService, datePipe: DatePipe, config: TableviewFeatureConfig = {}): ConfigOption {\n const merge = config.formly?.merge ?? true;\n\n let types = formlyTypesConfig;\n if (config.formly?.types) {\n if (!merge) {\n types = [];\n }\n types = [...types, ...config.formly.types];\n }\n\n let wrappers = formlyWrappersConfig;\n if (config.formly?.wrappers) {\n if (!merge) {\n wrappers = [];\n }\n wrappers = [...wrappers, ...config.formly.wrappers];\n }\n\n let validationMessages = getFormlyValidationMessages(translate, datePipe);\n if (typeof config.formly?.getValidationMessages === 'function') {\n if (!merge) {\n validationMessages = [];\n }\n validationMessages = [...validationMessages, ...config.formly.getValidationMessages(translate)];\n }\n\n return {\n types: types,\n wrappers: wrappers,\n validationMessages: validationMessages\n };\n}\n","import {NgTemplateOutlet} from '@angular/common';\nimport {AfterContentInit, Component, ContentChildren, Input, OnInit, QueryList, TemplateRef, inject} from '@angular/core';\nimport {RouterOutlet} from '@angular/router';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {SharedModule} from 'primeng/api';\nimport {ToolbarModule} from 'primeng/toolbar';\n\nimport {DataListParams, TemplateDirective} from '@mediusinc/mng-commons/core';\nimport {TableLoadEvent} from '@mediusinc/mng-commons/table/api';\nimport {ActionDescriptorInst, ActionPositionEnum, ITableviewDataProvider, TableviewActionDefaultCategories, TableviewDescriptorInst} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ActionComponent} from '../../../action/components/action/action.component';\nimport {ActionTableComponent} from '../../../action/components/table/action-table.component';\nimport {provideViewContainer} from '../../../action/services/providers/provide-view-container';\nimport {ViewContainer} from '../../../action/services/view-container.service';\n\n@Component({\n standalone: true,\n selector: 'mng-tableview',\n templateUrl: './tableview.component.html',\n imports: [ToolbarModule, SharedModule, TranslateModule, NgTemplateOutlet, ActionComponent, ActionTableComponent, TemplateDirective, RouterOutlet],\n providers: [provideViewContainer()]\n})\nexport class TableviewComponent<Item = any, Service = undefined, Sorts = keyof Item, Filters extends keyof any = keyof Item> implements OnInit, AfterContentInit {\n public readonly viewContainer = inject(ViewContainer, {optional: true});\n\n @Input({required: true}) public descriptor!: TableviewDescriptorInst<Item, Sorts, Filters>;\n @Input() public dataProvider?: ITableviewDataProvider<Item, Service, Sorts, Filters>;\n @Input() public actions: Array<ActionDescriptorInst<any>> = [];\n\n public tableActions: ActionDescriptorInst<Item>[] = [];\n public toolbarLeftActions: ActionDescriptorInst<Item>[] = [];\n public toolbarRightActions: ActionDescriptorInst<Item>[] = [];\n\n public tableParams?: DataListParams;\n\n public hasItemSelectionAction = false;\n public selectedItems: Item[] = [];\n\n @ContentChildren(TemplateDirective) public templates!: QueryList<TemplateDirective>;\n public footerTemplate?: TemplateRef<any>;\n\n ngOnInit() {\n if (this.viewContainer) {\n this.viewContainer.actions = this.actions;\n }\n\n if (this.viewContainer && this.dataProvider) {\n this.viewContainer.dataProvider = this.dataProvider;\n }\n\n for (const action of this.actions.filter(value => value.positionTableviewCategories?.includes(TableviewActionDefaultCategories.READ) ?? true)) {\n switch (action.position) {\n case ActionPositionEnum.ToolbarLeft:\n this.toolbarLeftActions.push(action);\n break;\n case ActionPositionEnum.ToolbarRight:\n this.toolbarRightActions.push(action);\n break;\n case ActionPositionEnum.TableHeader:\n case ActionPositionEnum.RowInline:\n case ActionPositionEnum.RowClick:\n this.tableActions.push(action);\n break;\n }\n }\n\n this.toolbarRightActions = this.toolbarRightActions.reverse();\n\n this.hasItemSelectionAction = [...this.toolbarLeftActions, ...this.toolbarRightActions].some(e => e.hasItemsSelection);\n }\n\n ngAfterContentInit() {\n this.templates.forEach(template => {\n switch (template.getType()) {\n case 'footer':\n this.footerTemplate = template.template;\n break;\n }\n });\n }\n\n public onTableLoad(event: TableLoadEvent) {\n this.tableParams = event.params;\n }\n\n public selectionChange(selectedItems: Array<Item>): void {\n this.selectedItems = selectedItems;\n }\n}\n","<div class=\"mng-tableview\">\n <div class=\"card\">\n @if (toolbarLeftActions.length > 0 || toolbarRightActions.length > 0) {\n <p-toolbar styleClass=\"mb-4\">\n <ng-template pTemplate=\"left\">\n @for (action of toolbarLeftActions; track action) {\n <mng-action [action]=\"action\" [dataListParams]=\"tableParams\" [hostComponent]=\"this\" [selectedItems]=\"selectedItems\"></mng-action>\n }\n </ng-template>\n <ng-template pTemplate=\"right\">\n @for (action of toolbarRightActions; track action) {\n <mng-action [action]=\"action\" [dataListParams]=\"tableParams\" [hostComponent]=\"this\" [selectedItems]=\"selectedItems\"></mng-action>\n }\n </ng-template>\n </p-toolbar>\n }\n\n <mng-action-table\n [descriptor]=\"descriptor.table\"\n [dataProvider]=\"dataProvider\"\n [useQueryParams]=\"true\"\n [actions]=\"tableActions\"\n [selectionEnabled]=\"hasItemSelectionAction\"\n [selectionMode]=\"'multiple'\"\n (tableLoad)=\"onTableLoad($event)\"\n (selectionChange)=\"selectionChange($event)\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-column md:flex-row md:justify-content-between table-header\">\n <h5 class=\"p-0 m-0\">{{ descriptor.tableTitle ?? '' | translate }}</h5>\n </div>\n </ng-template>\n\n @if (footerTemplate) {\n <ng-template mngTemplate=\"footer\" let-data=\"data\" let-totalCount=\"totalCount\">\n <ng-container *ngTemplateOutlet=\"footerTemplate; context: {data, totalCount}\"></ng-container>\n </ng-template>\n }\n </mng-action-table>\n </div>\n\n <router-outlet></router-outlet>\n</div>\n","import {Component, Input} from '@angular/core';\n\nimport {TableviewInput} from '@mediusinc/mng-commons/tableview/api';\n\nimport {TableviewComponent} from '../tableview/tableview.component';\n\n@Component({\n standalone: true,\n selector: 'mng-tableview-route',\n imports: [TableviewComponent],\n templateUrl: './tableview-route.component.html'\n})\nexport class TableviewRouteComponent<Item, Service = undefined, Sorts = keyof Item, Filters extends keyof any = keyof Item> {\n @Input({required: true}) public tableview!: TableviewInput<Item, Service, Sorts, Filters>;\n}\n","<mng-tableview [descriptor]=\"tableview.descriptor\" [dataProvider]=\"tableview.dataProvider\" [actions]=\"tableview.actions\"> </mng-tableview>\n","import {Type} from '@angular/core';\nimport {Route} from '@angular/router';\n\nimport {APermissions, CommonsRouteData, RouteBuilder} from '@mediusinc/mng-commons/core';\nimport {\n ActionDescriptorInst,\n ActionEditorAddDescriptorInst,\n ActionEditorDetailsDescriptorInst,\n ActionEditorEditDescriptorInst,\n ITableviewDataProvider,\n TableviewActionDefaultCategories,\n TableviewDescriptorInst,\n TableviewRouteData\n} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ActionRouteComponent} from '../../action/components/route/action-route.component';\nimport {unsavedChangesGuard} from '../../action/guards/unsaved-changes.guard';\n\nexport class TableviewRouteBuilderInternal extends RouteBuilder {\n private readonly descriptor?: TableviewDescriptorInst<any>;\n private readonly dataProvider?: ITableviewDataProvider;\n private readonly actions?: Array<ActionDescriptorInst<any>>;\n private readonly isFromComponent: boolean = true;\n\n protected override routeData: TableviewRouteData = {breadcrumb: null};\n private hasDetails = true;\n private detailsPath = ':itemId';\n private hasEdit = true;\n private editPath = ':itemId/edit';\n private hasAdd = true;\n private addPath = 'add';\n private hasDelete = true;\n\n private tableviewPermissions?: {\n [key: string]: APermissions;\n };\n\n public constructor(\n private path: string,\n options: Partial<{\n component: Type<any>;\n descriptor: TableviewDescriptorInst<any>;\n dataProvider: ITableviewDataProvider;\n actions: Array<ActionDescriptorInst<any>>;\n }>\n ) {\n super({path: path, component: options.component ?? TableviewRouteBuilder});\n\n if (!options.component) {\n this.isFromComponent = false;\n this.descriptor = options.descriptor;\n this.dataProvider = options.dataProvider;\n this.actions = options.actions;\n\n this.hasDetails = false;\n this.hasAdd = false;\n this.hasEdit = false;\n if (this.actions) {\n for (const action of this.actions) {\n if (action instanceof ActionEditorDetailsDescriptorInst) {\n this.hasDetails = true;\n } else if (action instanceof ActionEditorAddDescriptorInst) {\n this.hasAdd = true;\n } else if (action instanceof ActionEditorEditDescriptorInst) {\n this.hasEdit = true;\n }\n }\n }\n }\n }\n\n public withReadOnly(permissions?: APermissions): this {\n if (permissions) {\n this.withPermissions(permissions);\n }\n this.withAdd(false);\n this.withEdit(false);\n this.withDelete(false);\n return this;\n }\n\n public withDetails(hasDetails = true, permissions?: APermissions, path?: string): this {\n this.hasDetails = hasDetails;\n if (permissions) {\n this.withPermissions(undefined, undefined, undefined, undefined, permissions);\n }\n if (path) {\n this.detailsPath = path;\n }\n return this;\n }\n\n public withAdd(hasAdd = true, permissions?: APermissions, path?: string): this {\n this.hasAdd = hasAdd;\n if (permissions) {\n this.withPermissions(undefined, permissions);\n }\n if (path) {\n this.addPath = path;\n }\n return this;\n }\n\n public withEdit(hasEdit = true, permissions?: APermissions, path?: string): this {\n this.hasEdit = hasEdit;\n if (permissions) {\n this.withPermissions(undefined, undefined, permissions);\n }\n if (path) {\n this.editPath = path;\n }\n return this;\n }\n\n public withDelete(hasDelete = true, permissions?: APermissions): this {\n this.hasDelete = hasDelete;\n if (permissions) {\n this.withPermissions(undefined, undefined, undefined, permissions);\n }\n return this;\n }\n\n public override withPermissions(read?: APermissions, add?: APermissions, edit?: APermissions, delet?: APermissions, details?: APermissions): this {\n if (!this.tableviewPermissions) {\n this.tableviewPermissions = {};\n }\n if (read) {\n this.tableviewPermissions[TableviewActionDefaultCategories.READ] = read;\n }\n if (add) {\n this.tableviewPermissions[TableviewActionDefaultCategories.ADD] = add;\n }\n if (edit) {\n this.tableviewPermissions[TableviewActionDefaultCategories.EDIT] = edit;\n }\n if (delet) {\n this.tableviewPermissions[TableviewActionDefaultCategories.DELETE] = delet;\n }\n if (details) {\n this.tableviewPermissions[TableviewActionDefaultCategories.DETAILS] = details;\n }\n return this;\n }\n\n public withPermissionByCategory(key: string, permissions: APermissions): this {\n if (!this.tableviewPermissions) {\n this.tableviewPermissions = {};\n }\n this.tableviewPermissions[key] = permissions;\n return this;\n }\n\n public withPermissionsObject(permissions: {[key: string]: APermissions}): this {\n this.tableviewPermissions = permissions;\n return this;\n }\n\n public override build(): Route {\n if (!this.isFromComponent) {\n this.routeData.tableview = {\n descriptor: this.descriptor!,\n dataProvider: this.dataProvider!\n };\n if (this.actions) {\n this.routeData.tableview.actions = this.actions;\n }\n }\n if (this.tableviewPermissions) {\n this.routeData.tableviewPermissions = {...this.tableviewPermissions};\n }\n this.routeData.tableviewActions = {\n hasAdd: this.hasAdd,\n hasEdit: this.hasEdit,\n hasDetails: this.hasDetails,\n hasDelete: this.hasDelete\n };\n this.withData(this.routeData);\n if (this.tableviewPermissions?.[TableviewActionDefaultCategories.READ]) {\n this.routeData.permissions = this.tableviewPermissions[TableviewActionDefaultCategories.READ];\n }\n\n // copy route data for children, reset breadcrumbs menu items and permission\n const childrenRouteData: CommonsRouteData = {\n ...this.routeData,\n breadcrumb: null,\n menuItems: undefined,\n permissions: undefined\n };\n\n // list route\n const rootChildRouteBuilder = RouteBuilder.create('', ActionRouteComponent);\n rootChildRouteBuilder.withData({...childrenRouteData});\n if (this.tableviewPermissions?.[TableviewActionDefaultCategories.READ]) {\n rootChildRouteBuilder.withPermissions(this.tableviewPermissions[TableviewActionDefaultCategories.READ]);\n }\n this.addChildBuilder(rootChildRouteBuilder);\n\n // add route\n if (this.hasAdd) {\n const routeBuilder = RouteBuilder.create(this.addPath, ActionRouteComponent);\n routeBuilder.withData({...childrenRouteData});\n if (this.tableviewPermissions?.[TableviewActionDefaultCategories.ADD]) {\n routeBuilder.withPermissions(this.tableviewPermissions[TableviewActionDefaultCategories.ADD]);\n }\n this.addChildBuilder(routeBuilder);\n routeBuilder.withCanDeactivate(unsavedChangesGuard);\n }\n if (this.hasDetails) {\n const routeBuilder = RouteBuilder.create(this.detailsPath, ActionRouteComponent);\n routeBuilder.withData({...childrenRouteData});\n if (this.tableviewPermissions?.[TableviewActionDefaultCategories.DETAILS]) {\n routeBuilder.withPermissions(this.tableviewPermissions[TableviewActionDefaultCategories.DETAILS]);\n }\n this.addChildBuilder(routeBuilder);\n }\n if (this.hasEdit) {\n const routeBuilder = RouteBuilder.create(this.editPath, ActionRouteComponent);\n routeBuilder.withData({...childrenRouteData});\n if (this.tableviewPermissions?.[TableviewActionDefaultCategories.EDIT]) {\n routeBuilder.withPermissions(this.tableviewPermissions[TableviewActionDefaultCategories.EDIT]);\n }\n this.addChildBuilder(routeBuilder);\n routeBuilder.withCanDeactivate(unsavedChangesGuard);\n }\n\n return super.build();\n }\n\n protected override findMenuItemPermissions() {\n const menuItemPermission = super.findMenuItemPermissions();\n if (!menuItemPermission) {\n return this.tableviewPermissions?.[TableviewActionDefaultCategories.READ];\n }\n return menuItemPermission;\n }\n}\n\nexport class TableviewRouteBuilder {\n public static fromComponent<C>(path: string, component: Type<C>): TableviewRouteBuilderInternal {\n return new TableviewRouteBuilderInternal(path, {component});\n }\n\n public static from(\n path: string,\n descriptor: TableviewDescriptorInst<any>,\n dataProvider: ITableviewDataProvider,\n actions: Array<ActionDescriptorInst<any>>\n ): TableviewRouteBuilderInternal {\n return new TableviewRouteBuilderInternal(path, {descriptor, dataProvider, actions});\n }\n}\n","import {DatePipe} from '@angular/common';\n\nimport {FORMLY_CONFIG} from '@ngx-formly/core';\nimport {TranslateService} from '@ngx-translate/core';\n\nimport {CommonsFeature, CommonsFeatureTypeEnum} from '@mediusinc/mng-commons/core';\nimport {DATA_LANGUAGE_DROPDOWN_COMPONENT_IT, DataProviderExecutor} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ActionEditorComponent} from './action/components/editor/action-editor.component';\nimport {DataLanguageDropdownComponent} from './action/components/localization/data-language-dropdown.component';\nimport {ActionErrorMapperService, DefaultActionErrorMapperService} from './action/services/action-error-mapper.service';\nimport {ActionExecutorService} from './action/services/action-executor.service';\nimport {DefaultDataProviderExecutor} from './action/services/data-provider-executor.service';\nimport {NavigationService} from './action/services/navigation.service';\nimport {RootActionExecutorService} from './action/services/root-action-executor.service';\nimport {ACTION_EDITOR_COMPONENT_IT} from './action/services/tokens/action-editor.token';\nimport {commonsFormlyConfigProvider} from './editor/services/formly-config.provider';\nimport {COMMONS_TABLEVIEW_FEATURE_CONFIG_IT, TableviewFeatureConfig} from './tableview/services/tableview-feature-config.token';\n\n/**\n * Prepares providers for usage of the tableview functionalities.\n *\n * @returns {CommonsFeature} The `CommonsFeature` object with the layout configuration.\n */\nexport function withTableview(config?: TableviewFeatureConfig): CommonsFeature {\n return {\n type: CommonsFeatureTypeEnum.Tableview,\n providers: [\n NavigationService,\n {\n provide: COMMONS_TABLEVIEW_FEATURE_CONFIG_IT,\n useValue: config\n },\n {\n provide: FORMLY_CONFIG,\n multi: true,\n useFactory: commonsFormlyConfigProvider,\n deps: [TranslateService, DatePipe, COMMONS_TABLEVIEW_FEATURE_CONFIG_IT]\n },\n {\n provide: ACTION_EDITOR_COMPONENT_IT,\n useValue: ActionEditorComponent\n },\n {\n provide: DATA_LANGUAGE_DROPDOWN_COMPONENT_IT,\n useValue: DataLanguageDropdownComponent\n },\n {\n provide: ActionErrorMapperService,\n useClass: DefaultActionErrorMapperService\n },\n RootActionExecutorService,\n {\n provide: ActionExecutorService,\n useExisting: RootActionExecutorService\n },\n DefaultDataProviderExecutor,\n {\n provide: DataProviderExecutor,\n useExisting: DefaultDataProviderExecutor\n }\n ]\n };\n}\n","// action components\nexport * from './action/components/action/action.component';\nexport * from './action/components/editor/action-editor.component';\nexport * from './action/components/localization/data-language-dropdown.component';\nexport * from './action/components/route/action-route.component';\nexport * from './action/components/table/action-table.component';\n\n// action guards\nexport * from './action/guards/unsaved-changes.guard';\n\n// action helpers\nexport * from './action/helpers/notification';\nexport * from './action/helpers/styles';\n\n// action models\nexport * from './action/models/execution/action-context.model';\nexport * from './action/models/execution/action-instance.model';\nexport * from './action/models/execution/action-instance-state.model';\nexport * from './action/models/action-editor-dialog-data.model';\nexport * from './action/models/can-component-deactivate.model';\n\n// action services\nexport * from './action/services/providers/provide-action-executor';\nexport * from './action/services/providers/provide-view-container';\nexport * from './action/services/tokens/action-editor.token';\nexport * from './action/services/action-error-mapper.service';\nexport * from './action/services/action-executor.service';\nexport * from './action/services/component-action-executor.service';\nexport * from './action/services/data-provider-executor.service';\nexport * from './action/services/navigation.service';\nexport * from './action/services/root-action-executor.service';\nexport * from './action/services/view-container.service';\n\n// action utils\nexport * from './action/utils/i18n.util';\n\n// editor components\nexport * from './editor/components/editor/form-editor.component';\nexport * from './editor/components/formly/fields/formly-field-action/formly-field-action.component';\nexport * from './editor/components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component';\nexport * from './editor/components/formly/fields/formly-field-custom/formly-field-custom.component';\nexport * from './editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component';\nexport * from './editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component';\nexport * from './editor/components/formly/fields/formly-field-input/formly-field-input.component';\nexport * from './editor/components/formly/fields/formly-field-label/formly-field-label.component';\nexport * from './editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component';\nexport * from './editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component';\nexport * from './editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component';\nexport * from './editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component';\nexport * from './editor/components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component';\nexport * from './editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component';\n\n// editor helpers\nexport * from './editor/helpers/formly-config';\nexport * from './editor/helpers/notification';\n\n// editor models\nexport * from './editor/models/formly-config.model';\n\n// editor services\nexport * from './editor/services/formly-config.provider';\n\n// editor utils\nexport * from './editor/utils/editor-formly.util';\n\n// tableview components\nexport * from './tableview/components/route/tableview-route.component';\nexport * from './tableview/components/tableview/tableview.component';\n\n// tableview router\nexport * from './tableview/router/tableview-route-builder';\n\n// tableview services\nexport * from './tableview/services/tableview-feature-config.token';\n\n// provide\nexport * from './provide';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["I18nUtilsCommon","I18nUtilsModel","mergeMap","i2","i3","i4.ActionExecutorService","i5.ViewContainer","i6","i1","take","i2.ActionExecutorService","i3.ViewContainer","i4","i5","i7","i8","i9","i10","i15"],"mappings":"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"}
1
+ {"version":3,"file":"mediusinc-mng-commons-tableview.mjs","sources":["../../tableview/src/action/helpers/i18n.ts","../../tableview/src/action/models/execution/action-instance-state.model.ts","../../tableview/src/tableview/services/tableview-feature-config.token.ts","../../tableview/src/action/helpers/notification.ts","../../tableview/src/action/models/execution/action-context.model.ts","../../tableview/src/action/models/execution/action-instance.model.ts","../../tableview/src/action/services/action-error-mapper.service.ts","../../tableview/src/action/services/navigation.service.ts","../../tableview/src/action/services/tokens/action-editor.token.ts","../../tableview/src/action/services/view-container.service.ts","../../tableview/src/action/services/action-executor.service.ts","../../tableview/src/action/services/root-action-executor.service.ts","../../tableview/src/action/services/component-action-executor.service.ts","../../tableview/src/action/services/providers/provide-action-executor.ts","../../tableview/src/action/components/action/action.component.ts","../../tableview/src/action/components/action/action.component.html","../../tableview/src/editor/helpers/editor-formly.ts","../../tableview/src/editor/helpers/notification.ts","../../tableview/src/editor/components/editor/form-editor.component.ts","../../tableview/src/editor/components/editor/form-editor.component.html","../../tableview/src/action/components/editor/injector-context/action-editor-injector-context.component.ts","../../tableview/src/action/components/editor/injector-context/action-editor-injector-context.component.html","../../tableview/src/action/components/editor/action-editor.component.ts","../../tableview/src/action/components/editor/action-editor.component.html","../../tableview/src/action/components/localization/data-language-dropdown.component.ts","../../tableview/src/action/components/localization/data-language-dropdown.component.html","../../tableview/src/action/components/route/action-route.component.ts","../../tableview/src/action/components/route/action-route.component.html","../../tableview/src/action/helpers/styles.ts","../../tableview/src/action/components/table/action-table.component.ts","../../tableview/src/action/components/table/action-table.component.html","../../tableview/src/action/guards/unsaved-changes.guard.ts","../../tableview/src/action/services/providers/provide-view-container.ts","../../tableview/src/action/services/data-provider-executor.service.ts","../../tableview/src/editor/components/formly/fields/formly-field-action/formly-field-action.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-action/formly-field-action.component.html","../../tableview/src/editor/components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.html","../../tableview/src/editor/components/formly/fields/formly-field-custom/formly-field-custom.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component.html","../../tableview/src/editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component.html","../../tableview/src/editor/components/formly/fields/formly-field-input/formly-field-input.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-input/formly-field-input.component.html","../../tableview/src/editor/components/formly/fields/formly-field-label/formly-field-label.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-label/formly-field-label.component.html","../../tableview/src/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.html","../../tableview/src/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.html","../../tableview/src/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.html","../../tableview/src/editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component.ts","../../tableview/src/editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component.html","../../tableview/src/editor/components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.ts","../../tableview/src/editor/components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.html","../../tableview/src/editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.ts","../../tableview/src/editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.html","../../tableview/src/editor/helpers/formly-config.ts","../../tableview/src/editor/services/formly-config.provider.ts","../../tableview/src/tableview/components/tableview/tableview.component.ts","../../tableview/src/tableview/components/tableview/tableview.component.html","../../tableview/src/tableview/components/route/tableview-route.component.ts","../../tableview/src/tableview/components/route/tableview-route.component.html","../../tableview/src/tableview/router/tableview-route-builder.ts","../../tableview/src/provide.ts","../../tableview/src/index.ts","../../tableview/src/mediusinc-mng-commons-tableview.ts"],"sourcesContent":["import {TranslateService} from '@ngx-translate/core';\nimport {Observable} from 'rxjs';\nimport {map, mergeMap} from 'rxjs/operators';\n\nimport {I18nMissingTranslationStrategy, getI18n, getI18nAsync} from '@mediusinc/mng-commons/core';\nimport {getI18nModelParams, getI18nModelParamsAsync} from '@mediusinc/mng-commons/model';\nimport {ActionDescriptorInst, ActionEditorDescriptorInst} from '@mediusinc/mng-commons/tableview/api';\n\nexport function getI18nForAction(\n translate: TranslateService,\n action: ActionDescriptorInst<any>,\n actionPathKeys: string | Array<string>,\n customKey?: string,\n item?: any,\n fallbackKey?: string,\n params?: any,\n missingTranslationStrategy: I18nMissingTranslationStrategy = 'returnFirstKey'\n): string | null {\n const keys = getKeysByPriority(action, actionPathKeys, customKey, fallbackKey);\n const i18nParams = getI18nActionParams(translate, action, item, params);\n const i18nValue = getI18n(translate, i18nParams, ...keys);\n return getTranslationDependingOnStrategy(missingTranslationStrategy, {i18nValue, firstKey: keys[0], fallbackKey});\n}\n\n/**\n * Returns async translation for given keys with given params.\n * @param translate TranslateService\n * @param action action descriptor\n * @param actionPathKeys action path keys\n * @param customKey custom key\n * @param item item\n * @param fallbackKey fallback key, used as fallback key\n * @param params additional params for translation\n * @param missingTranslationStrategy strategy when no translation is found\n */\nexport function getI18nForActionAsync(\n translate: TranslateService,\n action: ActionDescriptorInst<any>,\n actionPathKeys: string | Array<string>,\n customKey?: string,\n item?: any,\n fallbackKey?: string,\n params?: any,\n missingTranslationStrategy: I18nMissingTranslationStrategy = 'returnFirstKey'\n): Observable<string | null> {\n return getI18nActionParamsAsync(translate, action, item, params).pipe(\n mergeMap(i18nParams => {\n const keys = getKeysByPriority(action, actionPathKeys, customKey, fallbackKey);\n return getI18nAsync(translate, i18nParams, ...keys).pipe(\n map(i18nValue => getTranslationDependingOnStrategy(missingTranslationStrategy, {i18nValue, firstKey: keys[0], fallbackKey}))\n );\n })\n );\n}\n\n/**\n * Returns translation depending on missingTranslationStrategy\n * @param missingTranslationStrategy strategy when no translation is found\n * @param values object with values, i18nValue is translation, firstKey is first key in array of keys, fallbackKey is fallback key\n */\nfunction getTranslationDependingOnStrategy(\n missingTranslationStrategy: I18nMissingTranslationStrategy,\n {i18nValue, firstKey, fallbackKey}: {i18nValue: string | null; firstKey?: string; fallbackKey?: string}\n): string | null {\n if (i18nValue !== null) {\n return i18nValue;\n } else {\n switch (missingTranslationStrategy) {\n case 'returnNull':\n return null;\n case 'returnFallbackKey':\n return fallbackKey ?? null;\n case 'returnFirstKey':\n return firstKey ?? null;\n }\n }\n}\n\nexport function getI18nActionTitleAsync(translate: TranslateService, action: ActionDescriptorInst<any>, item?: any): Observable<string | null> {\n return getI18nForActionAsync(translate, action, 'title', undefined, item);\n}\n\nexport function getI18nActionEditorTitleAsync(translate: TranslateService, action: ActionEditorDescriptorInst<any>, item?: any): Observable<string | null> {\n return getI18nForActionAsync(translate, action, ['editor.title', 'title'], action.editorTitle ?? undefined, item, undefined, action.editorTitleParams ?? undefined);\n}\n\nexport function getI18nActionParams(translate: TranslateService, action: ActionDescriptorInst<any>, item?: any, params: any = {}): any {\n const i18nParams = getI18nModelParams(translate, action.model ?? undefined, item, params);\n return populateI18nActionParams(i18nParams);\n}\n\nexport function getI18nActionParamsAsync(translate: TranslateService, action: ActionDescriptorInst<any>, item?: any, params: any = {}): Observable<any> {\n return getI18nModelParamsAsync(translate, action.model ?? undefined, item, params).pipe(map(i18nParams => populateI18nActionParams(i18nParams)));\n}\n\nexport function populateI18nActionParams(params: any = {}): any {\n params = {...params};\n return params;\n}\n\nfunction getKeysByPriority(action: ActionDescriptorInst<any>, actionPathKeys: string | Array<string>, customKey?: string, fallbackKey?: string) {\n const keys = [];\n if (customKey) {\n keys.push(customKey);\n }\n if (!Array.isArray(actionPathKeys)) {\n actionPathKeys = [actionPathKeys];\n }\n actionPathKeys.forEach(k => {\n const modelActionKey = `${action.i18nModelActionBaseKey}.${k}`;\n const actionKey = `${action.actionName}.${k}`;\n keys.push(modelActionKey, actionKey);\n });\n if (fallbackKey) {\n keys.push(fallbackKey);\n }\n return keys;\n}\n","/**\n * States of action. Enums ending with `*Final` are supposed to be final.\n */\nexport enum ActionInstanceStateEnum {\n TriggerStart, // action was triggered (click or direct)\n TriggerEnd,\n ActivationStart, // action activation started (direct, event or editor)\n ActivationEnd, // action activation ended\n FetchStart, // fetch started\n FetchEnd, // fetch ended\n FetchError, // fetch error\n RunConfirmationStart, // confirmation for run is started\n RunConfirmationEndAccept, // confirmation accepted\n RunConfirmationEndReject, // confirmation rejected\n RunStart, // action was run by calling main function\n RunEnd, // action run function executed\n RunError, // action run function executed with error\n NextActionStart, // next action started\n NextActionEnd, // next action finished\n ErrorActionStart, // error action started\n ErrorActionEnd, // error action finished\n FinishSuccessFinal, // action executed successfully\n FinishErrorFinal, // action executed with error\n FinishDismissedFinal, // action was dismissed by user\n FinishSuccessReactivateFinal, // action executed successfully, another instance will directly start from previous\n FinishComponentDestroyFinal, // action was dismissed by destroying component that was executing it\n FinishRouteUntriggerStart,\n FinishRouteUntriggerEndFinal,\n FinishRouteUntriggerTimeoutFinal\n}\n","import {InjectionToken} from '@angular/core';\n\nimport {ValidatorOption, WrapperOption} from '@ngx-formly/core/lib/models';\nimport {TranslateService} from '@ngx-translate/core';\n\nimport {CommonsFormlyTypeConfig} from '../../editor/models/formly-config.model';\n\nexport interface TableviewFeatureConfig {\n formly?: {\n skip?: boolean;\n merge?: boolean;\n types?: CommonsFormlyTypeConfig[];\n wrappers?: WrapperOption[];\n validators?: ValidatorOption[];\n getValidationMessages?: (translate: TranslateService) => any[];\n };\n actions?: {\n debugInstances?: boolean;\n };\n}\n\nexport const COMMONS_TABLEVIEW_FEATURE_CONFIG_IT = new InjectionToken<TableviewFeatureConfig>('COMMONS_TABLEVIEW_FEATURE_CONFIG');\n","import {TranslateService} from '@ngx-translate/core';\nimport {Message, MessageService} from 'primeng/api';\n\nimport {ICommonsError, getI18nForError, toastMessage} from '@mediusinc/mng-commons/core';\nimport {ActionDescriptorInst} from '@mediusinc/mng-commons/tableview/api';\n\nimport {getI18nForAction} from './i18n';\n\nexport function actionNotificationSuccess(\n translate: TranslateService,\n action: ActionDescriptorInst<any>,\n functionName: string,\n messageService: MessageService,\n customTitleKey?: string,\n customMessageKey?: string,\n item?: any\n): Message {\n const actionSuccessTitle = getI18nForAction(translate, action, 'success.title', customTitleKey, item, 'general.success', functionName) ?? undefined;\n const actionSuccessMessage = getI18nForAction(translate, action, 'success.message', customMessageKey, item, 'general.successMessage', functionName) ?? undefined;\n return toastMessage(messageService, actionSuccessTitle, actionSuccessMessage);\n}\n\nexport function actionNotificationError(\n translate: TranslateService,\n action: ActionDescriptorInst<any>,\n error: ICommonsError,\n functionName: string,\n messageService: MessageService,\n item?: any,\n severity: 'warn' | 'error' = 'error'\n): Message {\n const params = {\n errorMessage: getI18nForError(translate, error) ?? error.message\n };\n const actionErrorTitle =\n getI18nForAction(translate, action, [`error.${functionName}.title`, 'error.title'], action.runNotificationErrorTitle, item, 'general.error', params) ?? undefined;\n const actionErrorMessage =\n getI18nForAction(translate, action, [`error.${functionName}.message`, 'error.message'], action.runNotificationErrorMessage, item, 'general.errorMessage', params) ??\n undefined;\n return toastMessage(messageService, actionErrorTitle, actionErrorMessage, severity, 'pi-exclamation-triangle');\n}\n","import {Injector} from '@angular/core';\n\nimport {Confirmation, Message} from 'primeng/api';\nimport {BehaviorSubject, ReplaySubject, Subscription, distinctUntilChanged} from 'rxjs';\n\nimport {ActionParameters, ICommonsError, IDataProvider, LoggerService} from '@mediusinc/mng-commons/core';\nimport {IActionContext, IActionInstance} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ViewContainer} from '../../services/view-container.service';\nimport {ActionInstance} from './action-instance.model';\n\n/**\n * Class containing all main data for action to be executed in run/fetch/submit states.\n */\nexport class ActionContext<Item, Service = undefined> implements IActionContext<Item, Service, ActionInstance<Item, Service>, ViewContainer<Item, Service>> {\n private readonly logger = LoggerService.get().create('ActionContext');\n public readonly contextLongName: string;\n public previousActionInstance?: IActionInstance<any, any>;\n public confirmation?: Confirmation;\n public notification?: Message;\n public runSubscription?: Subscription;\n\n constructor(\n public readonly injector: Injector,\n public readonly instance: ActionInstance<Item, Service>,\n public readonly parameters: ActionParameters<Item>,\n public readonly functionName: 'run' | 'fetch' | 'submit',\n public readonly serviceInstance: Service,\n public readonly dataProvider?: IDataProvider<Item, Service>,\n public readonly viewContainer?: ViewContainer<Item, Service>,\n private readonly executionSubject = new ReplaySubject<Item | null | undefined>(1),\n private readonly executionIsRunningSubject = new BehaviorSubject(false)\n ) {\n this.contextLongName = `${this.instance.instanceLongName}_${functionName}`;\n }\n\n public get execution$() {\n return this.executionSubject.asObservable();\n }\n\n public get executionIsRunning$() {\n return this.executionIsRunningSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n public executionStart() {\n this.logger.trace(`Context ${this.contextLongName} - execution start`);\n this.executionIsRunningSubject.next(true);\n }\n\n public executionNext(next: Item | null | undefined, finish = true) {\n this.logger.trace(`Context ${this.contextLongName} - execution next event`, next, finish);\n\n this.executionSubject.next(next);\n if (finish) {\n this.executionComplete();\n }\n }\n\n public executionComplete() {\n this.logger.trace(`Context ${this.contextLongName} - execution complete`);\n\n this.executionSubject.complete();\n this.executionIsRunningSubject.next(false);\n }\n\n public executionError(err: ICommonsError) {\n this.logger.trace(`Context ${this.contextLongName} - execution error`, err);\n this.executionSubject.error(err);\n this.executionIsRunningSubject.next(false);\n }\n\n public finish() {\n this.runSubscription?.unsubscribe();\n this.executionSubject.complete();\n this.executionIsRunningSubject.complete();\n }\n\n public isClosed() {\n return this.executionSubject.isStopped && this.executionIsRunningSubject.isStopped && (this.runSubscription?.closed ?? true);\n }\n}\n","import {DynamicDialogRef} from 'primeng/dynamicdialog';\nimport {BehaviorSubject, Observable, ReplaySubject, Subject, Subscription, distinctUntilChanged, take} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nimport {ActionParameters, LoggerService} from '@mediusinc/mng-commons/core';\nimport {\n ActionActivationTriggerEnum,\n ActionDescriptorInst,\n ActionExecutionError,\n ActionTypeEnum,\n IActionEditorComponent,\n IActionInstance\n} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ActionContext} from './action-context.model';\nimport {ActionInstanceStateEnum} from './action-instance-state.model';\n\n/**\n * Action execution instance containing data about execution state of action\n */\nexport class ActionInstance<Item, Service = undefined> implements IActionInstance<Item, Service> {\n public readonly instanceId: string;\n public readonly instanceLongName: string;\n public readonly action: ActionDescriptorInst<Item>;\n public readonly createdDate: Date = new Date();\n private readonly logger = LoggerService.get().create('ActionInstance');\n\n // function execution\n public readonly isRunLoadingSubject = new BehaviorSubject(false);\n\n // parameters, contexts, states\n public triggerParameters?: ActionParameters<Item>;\n public activationParameters?: ActionParameters<Item>;\n private readonly contexts: Array<ActionContext<Item, Service>> = [];\n private readonly executionSubject = new Subject<Item | null | undefined>();\n private readonly executionIsRunningSubject = new BehaviorSubject(false);\n private readonly stateSubject = new BehaviorSubject<ActionInstanceStateEnum>(1);\n private readonly resultSubject = new ReplaySubject<Item | null>(1);\n private readonly errorSubject = new ReplaySubject<ActionExecutionError>(1);\n\n private contextExecutionSubscriptions: Array<Subscription> = [];\n\n // result or error\n private _result?: Item | null;\n private _error?: ActionExecutionError;\n\n // additional data from trigger/activation\n public activationDialogRef?: DynamicDialogRef;\n public activationEditorComponentRef?: IActionEditorComponent;\n\n // linked actions\n private _reactivationInstanceSubject = new BehaviorSubject<IActionInstance<Item, Service> | undefined>(undefined); // editor action with resubmit enabled\n public previousInstance?: IActionInstance<Item, Service>;\n public nextActionInstance?: IActionInstance<any, any>; // as defined in action descriptor\n public errorActionInstance?: IActionInstance<Item, Service>; // error action must rely on same type, as defined in action descriptor\n\n constructor(action: ActionDescriptorInst<Item>, state = ActionInstanceStateEnum.TriggerStart) {\n this.instanceId = Math.random().toString(36).substring(2);\n this.instanceLongName = `${action.actionNameLong}_${this.instanceId}`;\n this.action = action;\n this.state = state;\n }\n\n public get isRunLoading$() {\n return this.isRunLoadingSubject.asObservable();\n }\n\n public get context() {\n return this.contexts.length === 0 ? undefined : this.contexts[this.contexts.length - 1];\n }\n\n public get execution$() {\n return this.executionSubject.asObservable();\n }\n\n public get executionIsRunning$() {\n return this.executionIsRunningSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n public get state() {\n return this.stateSubject.value;\n }\n\n public set state(state: ActionInstanceStateEnum) {\n if (state > this.stateSubject.value || (this.stateSubject.value === ActionInstanceStateEnum.RunError && state === ActionInstanceStateEnum.RunStart)) {\n this.logger.trace(`Instance ${this.instanceLongName} - state #${state}: ${ActionInstanceStateEnum[state]}`);\n this.stateSubject.next(state);\n switch (state) {\n case ActionInstanceStateEnum.FinishSuccessFinal:\n case ActionInstanceStateEnum.FinishErrorFinal:\n case ActionInstanceStateEnum.FinishDismissedFinal:\n if (this.action.activationTrigger === ActionActivationTriggerEnum.OnClick) {\n this.finish();\n }\n break;\n case ActionInstanceStateEnum.FinishSuccessReactivateFinal:\n // partially finish reactivation because new instance event must still be emitted\n if (this.action.type === ActionTypeEnum.Editor) {\n this.finish(true);\n }\n break;\n case ActionInstanceStateEnum.FinishComponentDestroyFinal:\n this.finish();\n break;\n case ActionInstanceStateEnum.FinishRouteUntriggerEndFinal:\n case ActionInstanceStateEnum.FinishRouteUntriggerTimeoutFinal:\n if (this.action.activationTrigger === ActionActivationTriggerEnum.OnRoute) {\n this.finish();\n }\n break;\n }\n }\n }\n\n public get state$() {\n return this.stateSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n public get result() {\n return this._result;\n }\n\n public set result(result: Item | null | undefined) {\n if (typeof result === 'undefined') {\n return;\n }\n\n this.logger.trace(`Instance ${this.instanceLongName} - result`, result);\n\n this._result = result;\n this.resultSubject.next(result);\n }\n\n public get result$() {\n return this.resultSubject.asObservable();\n }\n\n public get error() {\n return this._error;\n }\n\n public set error(error: ActionExecutionError | undefined) {\n if (typeof error === 'undefined') {\n return;\n }\n\n this.logger.trace(`Instance ${this.instanceLongName} - error`, error);\n\n this._error = error;\n this.errorSubject.next(error);\n }\n\n public get error$() {\n return this.errorSubject.asObservable();\n }\n\n public set reactivationInstance(instance: IActionInstance<Item, Service> | undefined) {\n // this is allowed to only be executed once for subject and must be in correct status!\n if (this.state !== ActionInstanceStateEnum.FinishSuccessReactivateFinal) {\n return;\n }\n this._reactivationInstanceSubject.next(instance);\n this._reactivationInstanceSubject.complete();\n }\n\n public get reactivationInstance() {\n return this._reactivationInstanceSubject.value;\n }\n\n public get reactivationInstance$(): Observable<IActionInstance<Item, Service>> {\n return this._reactivationInstanceSubject.asObservable().pipe(\n filter(i => !!i), // ignore undefined events (usually initial)\n map(i => i!),\n take(1)\n );\n }\n\n public contextAt(idx: number) {\n return idx < this.contexts.length ? this.contexts[idx] : undefined;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public newContext(context: ActionContext<Item, Service>, finishPrevious = true) {\n this.logger.trace(`Instance ${this.instanceLongName} - new context ${context.contextLongName}`);\n\n const currentContext = this.context;\n if (currentContext) {\n currentContext.executionComplete();\n }\n this.contextExecutionSubscriptions.forEach(s => s.unsubscribe());\n this.contextExecutionSubscriptions = [];\n this.contextExecutionSubscriptions.push(\n context.execution$.subscribe({\n next: next => this.executionSubject.next(next),\n error: error => this.executionSubject.error(error)\n })\n );\n this.contextExecutionSubscriptions.push(\n context.executionIsRunning$.subscribe({\n next: next => this.executionIsRunningSubject.next(next)\n })\n );\n this.contexts.push(context);\n }\n\n public forceFinish() {\n this.logger.warn(`Force finishing instance '${this.instanceLongName}'. Try completing instance with states instead.`);\n this.state = ActionInstanceStateEnum.FinishDismissedFinal;\n this.finish();\n }\n\n private finish(reactivate = false) {\n // complete all subjects\n this.contexts.forEach(c => c.finish());\n this.executionSubject.complete();\n this.executionIsRunningSubject.complete();\n this.stateSubject.complete();\n this.resultSubject.complete();\n this.errorSubject.complete();\n if (!reactivate) {\n // allow reactivation instance to be emitted separately\n this._reactivationInstanceSubject.complete();\n }\n }\n\n public isClosed(): boolean {\n return (\n this.executionSubject.isStopped &&\n this.executionIsRunningSubject.isStopped &&\n this.stateSubject.isStopped &&\n this.resultSubject.isStopped &&\n this.errorSubject.isStopped &&\n this._reactivationInstanceSubject.isStopped &&\n this.contextExecutionSubscriptions.every(s => s.closed) &&\n this.contexts.every(c => c.isClosed())\n );\n }\n}\n","import {ICommonsError} from '@mediusinc/mng-commons/core';\n\n/**\n * Service for transforming errors in action execution.\n * Can be used to transform errors to Commons Error interface for correct error message display.\n */\nexport abstract class ActionErrorMapperService {\n /**\n * Can be used to enrich data from error and make it more \"stable\". Most use cases cover extracting message or message code of an\n * error out of http response body/headers.\n *\n * @param error Original error (cause).\n * @param commonsError Commons error that wraps original error.\n */\n abstract toCommonsError(error?: any, commonsError?: ICommonsError): ICommonsError;\n}\n\nexport class DefaultActionErrorMapperService extends ActionErrorMapperService {\n toCommonsError(error?: any, commonsError?: ICommonsError): ICommonsError {\n if (!commonsError) {\n commonsError = {\n type: 'CommonsActionError',\n name: error?.name ?? 'UnknownError',\n message: error.message ?? 'Unknown error',\n cause: error\n };\n }\n\n return commonsError;\n }\n}\n","import {Location} from '@angular/common';\nimport {Injectable} from '@angular/core';\nimport {NavigationEnd, Router} from '@angular/router';\n\n@Injectable()\nexport class NavigationService {\n private history: Array<string> = [];\n\n constructor(\n private router: Router,\n private location: Location\n ) {\n this.router.events.subscribe(event => {\n if (event instanceof NavigationEnd) {\n this.history.push(event.urlAfterRedirects);\n }\n });\n }\n\n public getCurrentLocationFromHistory(): string | null {\n if (this.history.length > 0) {\n return this.history[this.history.length - 1];\n } else {\n return null;\n }\n }\n\n public getCurrentLocationFromUrl() {\n return this.location.path(true);\n }\n\n public getPreviousLocationFromHistory(): string | null {\n if (this.history.length > 1) {\n return this.history[this.history.length - 2];\n } else {\n return null;\n }\n }\n\n public back(): void {\n this.history.pop();\n if (this.history.length > 0) {\n this.location.back();\n } else {\n this.router.navigateByUrl('/');\n }\n }\n}\n","import {InjectionToken, Type} from '@angular/core';\n\nexport const ACTION_EDITOR_COMPONENT_IT: InjectionToken<Type<any>> = new InjectionToken<Type<any>>('ACTION_EDITOR_COMPONENT');\n","import {Injectable} from '@angular/core';\n\nimport {Observable, Subject} from 'rxjs';\n\nimport {IDataProvider} from '@mediusinc/mng-commons/core';\nimport {\n ActionDescriptorInst,\n IViewContainer,\n ViewContainerEditorCloseEvent,\n ViewContainerEditorResetEvent,\n ViewContainerTableReloadEvent\n} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ActionInstance} from '../models/execution/action-instance.model';\n\n/**\n * Should be used with providers defined within component.\n */\n@Injectable()\nexport class ViewContainer<Item, Service = undefined> implements IViewContainer<Item, Service, ActionInstance<Item, Service>> {\n private _dataProvider?: IDataProvider<Item, Service>;\n private _routeTriggeredActionInstance?: ActionInstance<Item, Service>;\n private _actions: Array<ActionDescriptorInst<Item>> = [];\n\n private _tableReloadSubject: Subject<ViewContainerTableReloadEvent> = new Subject();\n private _editorResetSubject: Subject<ViewContainerEditorResetEvent<Item>> = new Subject();\n private _editorCloseSubject: Subject<ViewContainerEditorCloseEvent<Item>> = new Subject();\n\n public set dataProvider(dataProvider: IDataProvider<Item, Service>) {\n this._dataProvider = dataProvider;\n }\n\n public get dataProvider(): IDataProvider<Item, Service> | undefined {\n return this._dataProvider;\n }\n\n public get actions(): Array<ActionDescriptorInst<Item>> {\n return this._actions;\n }\n\n public set actions(actions: Array<ActionDescriptorInst<Item>>) {\n this._actions = actions;\n }\n\n public get tableReload$(): Observable<ViewContainerTableReloadEvent> {\n return this._tableReloadSubject.asObservable();\n }\n\n public reloadTable(event?: ViewContainerTableReloadEvent): void {\n this._tableReloadSubject.next(event ?? {});\n }\n\n public get editorReset$(): Observable<ViewContainerEditorResetEvent<Item>> {\n return this._editorResetSubject.asObservable();\n }\n\n public resetEditor(event?: ViewContainerEditorResetEvent<Item> | undefined): void {\n this._editorResetSubject.next(event ?? {});\n }\n\n public get editorClose$(): Observable<ViewContainerEditorCloseEvent<Item>> {\n return this._editorCloseSubject.asObservable();\n }\n\n public closeEditor(event?: ViewContainerEditorCloseEvent<Item>): void {\n this._editorCloseSubject.next(event ?? {});\n }\n\n public get routeTriggeredActionInstance(): ActionInstance<Item, Service> | undefined {\n return this._routeTriggeredActionInstance;\n }\n\n public set routeTriggeredActionInstance(instance: ActionInstance<Item, Service> | undefined) {\n this._routeTriggeredActionInstance = instance;\n }\n}\n","import {HttpErrorResponse} from '@angular/common/http';\nimport {Injector, inject} from '@angular/core';\nimport {Router, UrlTree} from '@angular/router';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {Confirmation, ConfirmationService, MessageService} from 'primeng/api';\nimport {DialogService, DynamicDialogConfig} from 'primeng/dynamicdialog';\nimport {Observable, from, mergeMap, of, switchMap, take, timeout} from 'rxjs';\nimport {catchError, filter, first, map, startWith} from 'rxjs/operators';\n\nimport {\n ActionParameters,\n CommonsHttpError,\n CommonsInternalError,\n CommonsService,\n ICommonsError,\n IDataProvider,\n LoggerService,\n ParametrizePipe,\n StyleSizeEnum,\n escapeHtmlAny,\n toObservable\n} from '@mediusinc/mng-commons/core';\nimport {\n ActionActivationTriggerEnum,\n ActionConfirmationDescriptor,\n ActionContextValidation,\n ActionDeleteDescriptorInst,\n ActionDescriptorInst,\n ActionEditorAddDescriptorInst,\n ActionEditorDescriptorInst,\n ActionEditorEditDescriptorInst,\n ActionRunFnType,\n ActionTypeEnum,\n CommonsActionError,\n CommonsActionErrorOptions,\n DataProviderExecutor,\n IActionEditorComponent,\n IActionInstance\n} from '@mediusinc/mng-commons/tableview/api';\n\nimport {COMMONS_TABLEVIEW_FEATURE_CONFIG_IT} from '../../tableview/services/tableview-feature-config.token';\nimport {getI18nForAction} from '../helpers/i18n';\nimport {actionNotificationError, actionNotificationSuccess} from '../helpers/notification';\nimport {ActionEditorDialogData} from '../models/action-editor-dialog-data.model';\nimport {ActionContext} from '../models/execution/action-context.model';\nimport {ActionInstanceStateEnum} from '../models/execution/action-instance-state.model';\nimport {ActionInstance} from '../models/execution/action-instance.model';\nimport {ActionErrorMapperService} from './action-error-mapper.service';\nimport {NavigationService} from './navigation.service';\nimport {ACTION_EDITOR_COMPONENT_IT} from './tokens/action-editor.token';\nimport {ViewContainer} from './view-container.service';\n\nexport abstract class ActionExecutorService {\n protected readonly injector = inject(Injector);\n protected readonly router = inject(Router);\n protected readonly dialogService = inject(DialogService);\n protected readonly translate = inject(TranslateService);\n protected readonly commons = inject(CommonsService);\n protected readonly dataProviderExecutor = inject(DataProviderExecutor);\n protected readonly navigationService = inject(NavigationService);\n protected readonly errorMapper = inject(ActionErrorMapperService);\n protected readonly config = inject(COMMONS_TABLEVIEW_FEATURE_CONFIG_IT, {optional: true});\n protected readonly defaultEditorDialogComponent = inject(ACTION_EDITOR_COMPONENT_IT);\n protected readonly messageService = inject(MessageService);\n protected readonly confirmationService = inject(ConfirmationService);\n protected readonly viewContainer = inject(ViewContainer, {optional: true});\n protected readonly parametrize = new ParametrizePipe();\n\n protected readonly instancesBufferMax = 100;\n protected logger = inject(LoggerService).create('ActionExecutorService');\n\n public abstract get instances(): ActionInstance<any, any>[];\n\n /**\n * Prepares action context for usage in validation.\n * @param action Action descriptor.\n * @param parameters Action parameters.\n * @param dataProvider Data provider.\n */\n public prepareActionContextValidation<Item, Service>(\n action: ActionDescriptorInst<Item>,\n parameters: ActionParameters<Item>,\n dataProvider?: IDataProvider<Item, Service>\n ): ActionContextValidation<Item, Service> {\n const ctxDataProvider = dataProvider ?? action.dataProvider ?? this.viewContainer?.dataProvider;\n return <ActionContextValidation<Item, Service>>{\n descriptor: action,\n parameters: parameters,\n serviceInstance: this.dataProviderExecutor.getDataProviderService(this.injector, ctxDataProvider) ?? undefined,\n dataProvider: ctxDataProvider\n };\n }\n\n /**\n * Runs action context by submitting execution results/errors to context, watching over instance results/errors, displaying notifications,\n * running next/error action and triggering dismiss of action. Confirmation is also processed here.\n *\n * @param ctx Action context to run.\n */\n public run<Item, Service = undefined>(ctx: ActionContext<Item, Service>) {\n const isMainRunFn = ctx.functionName === 'submit' || ctx.functionName === 'run';\n\n // if (ctx.instance.action.type === ActionTypeEnum.Direct && ctx.instance.action.hasRunConfirmation) {\n if (isMainRunFn && ctx.instance.action.hasRunConfirmation) {\n // only direct action can be configured with run confirmation\n // if editor, then run confirmation is mapped to submit action and ignored as editor run\n const confirmationDescriptor = ctx.instance.action.runConfirmationDialogDescriptor as ActionConfirmationDescriptor<Item>;\n\n const item = ctx.parameters.item;\n let confirmParams: Confirmation = {\n icon: confirmationDescriptor.icon,\n acceptVisible: true,\n acceptIcon: confirmationDescriptor.acceptButton.icon ?? undefined,\n acceptButtonStyleClass: confirmationDescriptor.acceptButton.styleClass.build(),\n rejectVisible: true,\n rejectIcon: confirmationDescriptor.rejectButton?.icon ?? undefined,\n rejectButtonStyleClass: confirmationDescriptor.rejectButton?.styleClass.build(),\n closeOnEscape: confirmationDescriptor.closeOnEscape\n };\n\n if (confirmationDescriptor.title !== null) {\n confirmParams.header =\n getI18nForAction(this.translate, ctx.instance.action, 'confirm.title', confirmationDescriptor.title, item, 'general.confirmation') ?? undefined;\n }\n\n if (confirmationDescriptor.message !== null) {\n confirmParams.message =\n getI18nForAction(this.translate, ctx.instance.action, 'confirm.message', confirmationDescriptor.message, escapeHtmlAny(item), 'general.confirmation') ??\n undefined;\n }\n\n if (confirmationDescriptor.acceptButton.label !== null) {\n confirmParams.acceptLabel =\n getI18nForAction(this.translate, ctx.instance.action, 'confirm.accept', confirmationDescriptor.acceptButton.label, item, 'general.yes') ?? undefined;\n }\n\n if (confirmationDescriptor.acceptButton.icon !== null) {\n confirmParams.acceptIcon = confirmationDescriptor.acceptButton.icon;\n }\n\n if (confirmationDescriptor.rejectButton?.icon !== null) {\n confirmParams.rejectIcon = confirmationDescriptor.rejectButton?.icon;\n }\n\n if (confirmationDescriptor.rejectButton?.label !== null) {\n confirmParams.rejectLabel =\n getI18nForAction(this.translate, ctx.instance.action, 'confirm.reject', confirmationDescriptor.rejectButton?.label, item, 'general.no') ?? undefined;\n }\n\n if (confirmationDescriptor.rejectButton == null || (confirmationDescriptor.rejectButton.label === null && confirmationDescriptor.rejectButton.icon === null)) {\n confirmParams.rejectVisible = false;\n }\n\n confirmParams.accept = () => {\n ctx.instance.state = ActionInstanceStateEnum.RunConfirmationEndAccept;\n this.runWithoutConfirmation(ctx);\n };\n\n confirmParams.reject = () => {\n ctx.instance.state = ActionInstanceStateEnum.RunConfirmationEndReject;\n if (ctx.instance.action.type !== ActionTypeEnum.Editor) {\n // if not editor, the it can be closed\n this.finishAction(ctx.instance);\n }\n };\n\n if (confirmationDescriptor.runConfirmationConfigMapFn) {\n confirmParams = confirmationDescriptor.runConfirmationConfigMapFn(ctx, confirmParams);\n }\n\n ctx.confirmation = confirmParams;\n ctx.instance.state = ActionInstanceStateEnum.RunConfirmationStart;\n\n this.confirmationService.confirm(confirmParams);\n } else {\n this.runWithoutConfirmation(ctx);\n }\n }\n\n /**\n * Runs action context by submitting execution results/errors to context, watching over instance results/errors, displaying notifications,\n * running next/error action and triggering dismiss of action. Confirmation\n *\n * @param ctx Action context to run.\n *\n * @returns Action context for submit (=run) function.\n */\n private runWithoutConfirmation<Item, Service = undefined>(ctx: ActionContext<Item, Service>): Observable<Item | null | undefined> {\n const isMainRunFn = ctx.functionName === 'submit' || ctx.functionName === 'run';\n const isErrorCriticalRunFn = ctx.functionName === 'run';\n let actionEditor: ActionEditorDescriptorInst<Item>;\n\n let fnObs: ActionRunFnType<Item, Service>;\n switch (ctx.functionName) {\n case 'submit':\n actionEditor = ctx.instance.action as ActionEditorDescriptorInst<Item>;\n if (typeof actionEditor.submitFunction !== 'function') {\n if (actionEditor instanceof ActionEditorAddDescriptorInst) {\n fnObs = this.dataProviderExecutor.runCreateOrFail.bind(this.dataProviderExecutor);\n } else if (actionEditor instanceof ActionEditorEditDescriptorInst) {\n fnObs = this.dataProviderExecutor.runUpdateOrFail.bind(this.dataProviderExecutor);\n } else {\n // try to guess this one\n const defaultSubmit = of(ctx.parameters?.item ? ctx.parameters.item : undefined);\n fnObs = ctx => {\n if (ctx.parameters.itemId) {\n return this.dataProviderExecutor.runUpdate(ctx, defaultSubmit);\n } else {\n return this.dataProviderExecutor.runCreate(ctx, defaultSubmit);\n }\n };\n }\n } else {\n fnObs = actionEditor.submitFunction;\n }\n break;\n case 'fetch':\n actionEditor = ctx.instance.action as ActionEditorDescriptorInst<Item>;\n if (typeof actionEditor.fetchFunction !== 'function') {\n if (actionEditor instanceof ActionEditorEditDescriptorInst) {\n fnObs = this.dataProviderExecutor.runFetchOrFail.bind(this.dataProviderExecutor);\n } else {\n const defaultFetch = of(ctx.parameters?.item ? ctx.parameters.item : undefined);\n fnObs = ctx => {\n if (ctx.parameters.itemId || typeof ctx.parameters.item === 'object') {\n return this.dataProviderExecutor.runFetch(ctx, defaultFetch);\n }\n return defaultFetch;\n };\n }\n } else {\n fnObs = actionEditor.fetchFunction;\n }\n break;\n case 'run':\n default:\n if (!ctx.instance.action.hasRunFunction && ctx.instance.action instanceof ActionDeleteDescriptorInst) {\n fnObs = this.dataProviderExecutor.runDeleteOrFail.bind(this.dataProviderExecutor);\n } else {\n fnObs = ctx.instance.action.runFunction;\n }\n break;\n }\n\n const retObs = of(void 0).pipe(\n take(1),\n switchMap(() => {\n if (isMainRunFn) {\n // if main run function, also set loading to true\n ctx.instance.state = ActionInstanceStateEnum.RunStart;\n ctx.instance.isRunLoadingSubject.next(true);\n } else {\n ctx.instance.state = ActionInstanceStateEnum.FetchStart;\n }\n // start context execution to mark execution loading\n ctx.executionStart();\n\n return toObservable(fnObs(ctx));\n }),\n mergeMap(runResult => {\n // set next state depending on run\n ctx.instance.state = isMainRunFn ? ActionInstanceStateEnum.RunEnd : ActionInstanceStateEnum.FetchEnd;\n // set execution result\n ctx.executionNext(runResult, isMainRunFn);\n\n if (isMainRunFn) {\n // set instance final result on main run execution\n ctx.instance.result = runResult;\n ctx.instance.isRunLoadingSubject.next(false);\n\n // handle notification\n if (ctx.instance.action.hasRunNotificationSuccess) {\n ctx.notification = actionNotificationSuccess(\n this.translate,\n ctx.instance.action,\n ctx.functionName,\n this.messageService,\n ctx.instance.action.runNotificationSuccessTitle,\n ctx.instance.action.runNotificationSuccessMessage,\n {\n ...ctx.parameters?.item,\n ...runResult\n }\n );\n }\n\n // handle possible after run action\n if (ctx.instance.action.afterRunAction) {\n // mark new state for next action start\n const afterRunAction =\n typeof ctx.instance.action.afterRunAction === 'function' ? ctx.instance.action.afterRunAction(ctx) : ctx.instance.action.afterRunAction;\n const nextActionInstance = this.activateAction(\n afterRunAction,\n <ActionParameters<unknown>>{\n itemId: ctx.parameters.itemId,\n item: runResult,\n actionData: ctx.parameters.actionData,\n route: ctx.parameters.route,\n sourceComponent: ctx.parameters.sourceComponent\n },\n undefined,\n ctx.instance as ActionInstance<unknown, unknown>,\n true\n );\n ctx.instance.nextActionInstance = nextActionInstance;\n\n ctx.instance.state = ActionInstanceStateEnum.NextActionStart;\n\n // finish current action when next action finishes\n return nextActionInstance.state$.pipe(\n startWith(nextActionInstance.state), // provide first state cause it might be finished already\n filter(state => state >= ActionInstanceStateEnum.FinishSuccessFinal),\n take(1),\n map(() => {\n ctx.instance.state = ActionInstanceStateEnum.NextActionEnd;\n return runResult;\n })\n );\n }\n } else {\n if (actionEditor.hasFetchNotificationSuccess) {\n actionNotificationSuccess(\n this.translate,\n actionEditor,\n 'fetch',\n this.messageService,\n actionEditor.fetchNotificationSuccessTitle,\n actionEditor.fetchNotificationSuccessMessage,\n ctx.parameters.item\n );\n }\n }\n\n return of(runResult);\n }),\n map(runResult => {\n if (isMainRunFn) {\n // deactivate action\n this.finishAction(ctx.instance);\n }\n return runResult;\n }),\n catchError(err => {\n // transform error to action error\n const actionError = this.toActionError(err, ctx);\n\n // set instance state to error\n ctx.instance.state = isMainRunFn ? ActionInstanceStateEnum.RunError : ActionInstanceStateEnum.FetchError;\n // mark execution error on context\n ctx.executionError(actionError);\n\n if (ctx.instance.action.hasRunNotificationError) {\n actionNotificationError(this.translate, ctx.instance.action, actionError, 'fetch', this.messageService, ctx.parameters.item);\n }\n\n let errorObs = of(void 0);\n if (isMainRunFn) {\n ctx.instance.error = err;\n ctx.instance.isRunLoadingSubject.next(false);\n\n // handle possible error action if run\n if (isMainRunFn && ctx.instance.action.onRunErrorAction) {\n const onRunErrorAction =\n typeof ctx.instance.action.onRunErrorAction === 'function' ? ctx.instance.action.onRunErrorAction(ctx) : ctx.instance.action.onRunErrorAction;\n // cannot start with trigger, because routing might be problematic (lousing previous results etc.)\n const errorActionInstance = this.activateAction<Item, Service>(\n onRunErrorAction,\n <ActionParameters<Item>>{\n itemId: ctx.parameters.itemId,\n item: ctx.parameters.item,\n actionData: ctx.parameters.actionData,\n route: ctx.parameters.route,\n sourceComponent: ctx.parameters.sourceComponent\n },\n undefined,\n undefined,\n true\n );\n ctx.instance.errorActionInstance = errorActionInstance;\n\n ctx.instance.state = ActionInstanceStateEnum.ErrorActionStart;\n\n errorObs = errorActionInstance.state$.pipe(\n startWith(errorActionInstance.state), // provide first state cause it might be finished already\n filter(state => state >= ActionInstanceStateEnum.FinishSuccessFinal),\n take(1),\n map(() => {\n ctx.instance.state = ActionInstanceStateEnum.ErrorActionEnd;\n return void 0;\n })\n );\n }\n }\n\n // list and map only to mark instance state as finished error state\n return errorObs.pipe(\n map(() => {\n // deactivate action only if critical (fetch on editor or run on button actions)\n if (isErrorCriticalRunFn) {\n this.finishAction(ctx.instance);\n }\n // rethrow error to propagate further\n throw actionError;\n })\n );\n })\n );\n\n ctx.runSubscription = retObs.subscribe({\n next: res => {\n this.logger.debug(`ActionContext ${ctx.contextLongName} execution next event`, res);\n },\n error: err => {\n if ((err as ICommonsError | undefined)?.type !== 'CommonsActionError') {\n this.logger.error(`Non action error occurred`, err);\n } else {\n this.logger.debug(`Action context ${ctx.contextLongName} execution error event`, err);\n }\n }\n });\n\n return retObs;\n }\n\n /**\n * Prepares editor action's fetch function by creating new action context for action instance.\n *\n * @param action Action descriptor.\n * @param parameters Action parameters for context.\n * @param dataProvider Editor data provider for context.\n * @param instance Optional existing action instance (if non provided, new will be created).\n * @param previousActionInstance Optional previous action instance to link in next instance.\n *\n * @returns Action context for fetch function.\n */\n public prepareContextForEditorFetch<Item, Service>(\n action: ActionEditorDescriptorInst<Item>,\n parameters: ActionParameters<Item>,\n dataProvider?: IDataProvider<Item, Service>,\n instance?: ActionInstance<Item, Service>,\n previousActionInstance?: IActionInstance<any, any>\n ): ActionContext<Item, Service> {\n instance = this.getOrCreateInstance(instance, action, parameters, ActionInstanceStateEnum.ActivationEnd);\n return this.prepareContextForEditor(instance, parameters, 'fetch', dataProvider, previousActionInstance);\n }\n\n /**\n * Runs editor action's submit (=main run) function by creating new action context for action instance.\n *\n * @param action Action descriptor.\n * @param parameters Action parameters for context.\n * @param dataProvider Editor data provider for context.\n * @param instance Optional existing action instance (if non provided, new will be created).\n * @param previousActionInstance Optional previous action instance to link in next instance.\n *\n * @returns Action context for submit (=run) function.\n */\n public prepareContextForEditorSubmit<Item, Service>(\n action: ActionEditorDescriptorInst<Item>,\n parameters: ActionParameters<Item>,\n dataProvider?: IDataProvider<Item, Service>,\n instance?: ActionInstance<Item, Service>,\n previousActionInstance?: IActionInstance<any, any>\n ): ActionContext<Item, Service> {\n instance = this.getOrCreateInstance(instance, action, parameters, ActionInstanceStateEnum.ActivationEnd);\n return this.prepareContextForEditor(instance, parameters, 'submit', dataProvider, previousActionInstance);\n }\n\n /**\n * Prepares action exec context for action of type editor.\n *\n * @param instance Action instance.\n * @param parameters Action parameters for context.\n * @param functionName Action function name parameter.\n * @param dataProvider Optional data provider. If not provided data provider from either the action editor or view container will be used.\n * @param previousActionInstance Optional previous action instance to link in next instance.\n */\n private prepareContextForEditor<Item, Service>(\n instance: ActionInstance<Item, Service>,\n parameters: ActionParameters<Item>,\n functionName: 'submit' | 'fetch',\n dataProvider?: IDataProvider,\n previousActionInstance?: IActionInstance<any, any>\n ): ActionContext<Item, Service> {\n if (instance.action.type !== ActionTypeEnum.Editor) {\n throw new CommonsInternalError(`Cannot create editor context for action ${instance.action.actionNameLong} of type ${instance.action.type}.`);\n }\n const editorAction = instance.action as ActionEditorDescriptorInst<Item>;\n let ctxDataProvider = dataProvider;\n if (!ctxDataProvider && editorAction.dataProvider) {\n ctxDataProvider = editorAction.dataProvider;\n }\n if (!ctxDataProvider) {\n const viewContainerDataProvider = this.viewContainer?.dataProvider;\n if (viewContainerDataProvider) {\n ctxDataProvider = viewContainerDataProvider;\n }\n }\n const ctx = new ActionContext<Item, Service>(\n this.injector,\n instance,\n parameters,\n functionName,\n this.dataProviderExecutor.getDataProviderService(this.injector, ctxDataProvider) ?? undefined,\n ctxDataProvider,\n this.viewContainer ?? undefined\n );\n ctx.previousActionInstance = previousActionInstance;\n instance.newContext(ctx);\n return ctx;\n }\n\n /**\n * Runs action's main run function by creating new action context for action instance.\n *\n * @param action Action descriptor.\n * @param parameters Action parameters for context run.\n * @param dataProvider Data provider for context run.\n * @param instance Optional existing action instance (if non provided, new will be created).\n * @param previousActionInstance Optional previous action instance to link in next instance.\n *\n * @returns Action context for run function.\n */\n private prepareContext<Item, Service = undefined>(\n action: ActionDescriptorInst<Item, Service>,\n parameters: ActionParameters<Item>,\n dataProvider?: IDataProvider<Item, Service>,\n instance?: ActionInstance<Item, Service>,\n previousActionInstance?: ActionInstance<any, any>\n ): ActionContext<Item, Service> {\n instance = this.getOrCreateInstance<Item, Service>(instance, action, parameters, ActionInstanceStateEnum.ActivationEnd);\n\n const ctxDataProvider = dataProvider ?? instance.action.dataProvider ?? this.viewContainer?.dataProvider;\n let service: Service | undefined = undefined;\n if (ctxDataProvider != null) {\n const dataProviderService = this.dataProviderExecutor.getDataProviderService<Item, Service>(this.injector, ctxDataProvider);\n if (!dataProviderService) {\n throw new CommonsInternalError('');\n }\n service = dataProviderService;\n }\n const ctx = new ActionContext<Item, Service>(this.injector, instance, parameters, 'run', service as Service, ctxDataProvider, this.viewContainer ?? undefined);\n ctx.previousActionInstance = previousActionInstance;\n instance.newContext(ctx);\n\n return ctx;\n }\n\n /**\n * Activates action (in case of dialog, dialog will be opened).\n *\n * @param action Action descriptor.\n * @param parameters Action parameters for activation of action instance.\n * @param instance Optional existing action instance (if non provided, new will be created).\n * @param previousActionInstance Optional previous action instance to link in next instance.\n * @param runContext Marks if context should be run.\n *\n * @returns Action instance - if non provided in parameters, the newly created will be returned.\n */\n public activateAction<Item, Service = undefined>(\n action: ActionDescriptorInst<Item>,\n parameters: ActionParameters<Item>,\n instance?: ActionInstance<Item, Service>,\n previousActionInstance?: ActionInstance<any, any>,\n runContext = false\n ): ActionInstance<Item, Service> {\n instance = this.getOrCreateInstance<Item, Service>(instance, action, parameters, ActionInstanceStateEnum.ActivationStart);\n instance.state = ActionInstanceStateEnum.ActivationStart;\n instance.activationParameters = parameters;\n // start activation instance\n if (action.type === ActionTypeEnum.Editor) {\n let dialogComponent = this.defaultEditorDialogComponent;\n const dialogClassNames = ['mng-dialog'];\n const dialogConfig: DynamicDialogConfig = {\n duplicate: true\n };\n\n if (action instanceof ActionEditorDescriptorInst) {\n dialogClassNames.push(action.dialogClassName ?? 'mng-action-editor-dialog');\n switch (action.dialogSize) {\n case StyleSizeEnum.ExtraSmall:\n dialogClassNames.push('mng-dialog-xs');\n break;\n case StyleSizeEnum.Small:\n dialogClassNames.push('mng-dialog-sm');\n break;\n case StyleSizeEnum.Large:\n dialogClassNames.push('mng-dialog-lg');\n break;\n case StyleSizeEnum.ExtraLarge:\n dialogClassNames.push('mng-dialog-xl');\n break;\n case StyleSizeEnum.Normal:\n default:\n break;\n }\n if (action.editorComponent) {\n dialogComponent = action.editorComponent;\n }\n dialogConfig.data = <ActionEditorDialogData<Item, Service>>{\n action: {\n descriptor: action,\n instance: instance,\n previousInstance: previousActionInstance\n },\n injector: this.injector\n };\n }\n\n dialogConfig.styleClass = dialogClassNames.join(' ');\n\n if (action.activationTrigger === ActionActivationTriggerEnum.OnRoute) {\n dialogConfig.closable = false;\n dialogConfig.closeOnEscape = false;\n }\n\n const dialogRef = this.dialogService.open(dialogComponent, dialogConfig);\n dialogRef.onClose.pipe(take(1)).subscribe(() => {\n // to close dialog on 'X' click or esc button\n this.finishAction(instance!);\n });\n instance.activationDialogRef = dialogRef;\n return instance;\n } else {\n // directly execute action\n instance.state = ActionInstanceStateEnum.ActivationEnd;\n const context = this.prepareContext<Item, Service>(action, parameters, undefined, instance, previousActionInstance);\n\n if (runContext) {\n this.run(context);\n }\n\n return context.instance;\n }\n }\n\n /**\n * To be called when action editor is initialized to correctly activate action.\n * @param action Action descriptor.\n * @param instance Action instance (if available).\n * @param componentRef Optional action editor component reference.\n */\n public onActionEditorInit<T, S>(action: ActionDescriptorInst<T>, instance?: ActionInstance<T, S>, componentRef?: IActionEditorComponent): ActionInstance<T, S> {\n if (action.type !== ActionTypeEnum.Editor) {\n throw new Error(`Action ${action.actionName} is not of type editor, cannot be activated through \"onActionEditorOnInit\"`);\n }\n if (instance && action.activationTrigger === ActionActivationTriggerEnum.OnRoute) {\n const triggeredInstance = this.viewContainer?.routeTriggeredActionInstance;\n if (triggeredInstance && triggeredInstance.instanceLongName !== instance.instanceLongName) {\n this.logger.debug(\n `WARNING: Found triggered parameters view container instance ${triggeredInstance.instanceLongName} and it does not match instance ${instance.instanceLongName} retrieved on editor init.`\n );\n }\n }\n instance = this.getOrCreateInstance(instance, action, undefined, ActionInstanceStateEnum.ActivationStart);\n instance.state = ActionInstanceStateEnum.ActivationEnd;\n instance.activationEditorComponentRef = componentRef;\n\n return instance;\n }\n\n /**\n * To be called when action editor cmp is being destroyed to correctly finish action.\n * @param instance Action instance.\n */\n public onActionDestroy<T, S>(instance?: ActionInstance<T, S>): void {\n if (!instance) {\n return;\n }\n instance = this.getOrCreateInstance(instance);\n if (instance.action.activationTrigger !== ActionActivationTriggerEnum.OnClick) {\n return;\n }\n this.finishAction(instance, true);\n }\n\n /**\n * To be called when action editor cmp is being destroyed to correctly finish action.\n * @param instance Action instance.\n */\n public onActionEditorDestroy<T, S>(instance?: ActionInstance<T, S>): void {\n if (!instance) {\n return;\n }\n instance = this.getOrCreateInstance(instance);\n if (instance.action.type !== ActionTypeEnum.Editor) {\n throw new Error(`Action instance ${instance.instanceLongName} is not of type editor, cannot be deactivated through \"onActionEditorOnDestroy\"`);\n }\n if (instance.action.activationTrigger !== ActionActivationTriggerEnum.OnRoute) {\n this.finishAction(instance, true);\n }\n }\n\n /**\n * To be called when action route cmp is being destroyed to correctly finish action.\n * @param instance Action instance.\n */\n public onActionRouteDestroy<T, S>(instance?: ActionInstance<T, S>): void {\n if (!instance) {\n return;\n }\n instance = this.getOrCreateInstance(instance);\n if (instance.action.activationTrigger !== ActionActivationTriggerEnum.OnRoute) {\n throw new Error(`Action instance ${instance.instanceLongName} is not triggered on route, cannot be deactivated through \"onActionRouteOnDestroy\"`);\n }\n this.finishAction(instance, true);\n }\n\n /**\n * Deactivates action by choosing final state, closing dialog and completing all subjects in instance and contexts.\n *\n * @param instance Action instance.\n * @param onDestroy Marks if finish is called on component destroy lifecycle hook.\n */\n public finishAction<Item, Service = undefined>(instance: ActionInstance<Item, Service>, onDestroy = false) {\n instance = this.getOrCreateInstance(instance);\n if (instance.state >= ActionInstanceStateEnum.FinishSuccessFinal) {\n this.logger.trace(`ActionInstance ${instance.instanceLongName} already finished`);\n return;\n }\n\n let finalState: ActionInstanceStateEnum;\n if (typeof instance.result !== 'undefined') {\n finalState = ActionInstanceStateEnum.FinishSuccessFinal;\n } else if (typeof instance.error !== 'undefined') {\n finalState = ActionInstanceStateEnum.FinishErrorFinal;\n } else if (onDestroy) {\n finalState = ActionInstanceStateEnum.FinishComponentDestroyFinal;\n } else {\n finalState = ActionInstanceStateEnum.FinishDismissedFinal;\n }\n\n if (instance.action.type === ActionTypeEnum.Editor) {\n const hasDialog = typeof instance.activationDialogRef !== 'undefined';\n const resubmitEnabled = (instance.action as ActionEditorDescriptorInst<Item>).resubmitEnabled;\n\n if (finalState === ActionInstanceStateEnum.FinishSuccessFinal) {\n if ((hasDialog && resubmitEnabled === true) || (!hasDialog && resubmitEnabled !== false)) {\n finalState = ActionInstanceStateEnum.FinishSuccessReactivateFinal;\n }\n }\n\n if (hasDialog && finalState !== ActionInstanceStateEnum.FinishSuccessReactivateFinal) {\n // if state is finish and not called from dialog listener, close the dialog first which will retrigger this function, then finish it\n instance.activationDialogRef!.close(instance.result);\n }\n }\n\n // unset instance in view container\n if (this.viewContainer) {\n this.viewContainer.routeTriggeredActionInstance = undefined;\n }\n\n // set final state on instance\n instance.state = finalState;\n\n if (finalState === ActionInstanceStateEnum.FinishSuccessReactivateFinal) {\n // prepare reactivation instance\n const newInstanceStatus = (instance.action as ActionEditorDescriptorInst<Item>).resubmitRefetch\n ? ActionInstanceStateEnum.ActivationEnd\n : ActionInstanceStateEnum.FetchEnd;\n // must skip initialization from view container, because it would only get old instance.\n // we need new instance before we can set new one on the view container.\n const newInstance = this.getOrCreateInstance<Item, Service>(undefined, instance.action, undefined, newInstanceStatus, true);\n newInstance.previousInstance = instance;\n // copy some additional settings\n newInstance.activationDialogRef = instance.activationDialogRef;\n newInstance.triggerParameters = instance.triggerParameters;\n newInstance.activationParameters = instance.activationParameters;\n\n if (this.viewContainer) {\n this.viewContainer.routeTriggeredActionInstance = newInstance;\n }\n\n instance.reactivationInstance = newInstance;\n }\n\n // finish related actions\n if (instance.nextActionInstance && instance.nextActionInstance instanceof ActionInstance) {\n this.logger.debug(`Finishing instance ${instance.instanceLongName} related next action instance: ${instance.nextActionInstance.instanceLongName}`);\n this.finishAction(instance.nextActionInstance, onDestroy);\n }\n if (instance.errorActionInstance && instance.errorActionInstance instanceof ActionInstance) {\n this.logger.debug(`Finishing instance ${instance.instanceLongName} related error action instance: ${instance.errorActionInstance.instanceLongName}`);\n this.finishAction(instance.errorActionInstance, onDestroy);\n }\n }\n\n /**\n * Triggers action with parameters.\n *\n * @param action Action descriptor.\n * @param parameters Action parameters for action execution to construct new route.\n * @param runContext Marks if context should be run.\n *\n * @returns Action instance - if non provided in parameters, the newly created will be returned.\n */\n public triggerAction<Item, Service = undefined>(action: ActionDescriptorInst<Item>, parameters: ActionParameters<Item>, runContext = false): ActionInstance<Item, Service> {\n const instance = this.getOrCreateInstance<Item, Service>(undefined, action, parameters);\n instance.triggerParameters = parameters;\n instance.state = ActionInstanceStateEnum.TriggerStart;\n if (action.activationTrigger === ActionActivationTriggerEnum.OnRoute) {\n const baseUrl = this.router.url.split('?')[0];\n const parsedUrl: UrlTree = this.router.parseUrl(this.router.url);\n let actionUrl = action.routeUrl ?? '';\n if (actionUrl.startsWith('/')) {\n actionUrl = actionUrl.substring(1);\n }\n\n const actionUrlSegments = this.parametrize.transform(actionUrl, parameters.itemId, parameters.item, parameters.actionData).split('/');\n\n // set instance in view container\n if (this.viewContainer) {\n this.viewContainer.routeTriggeredActionInstance = instance;\n }\n\n from(this.router.navigate([baseUrl, ...actionUrlSegments], {relativeTo: parameters.route, queryParams: parsedUrl.queryParams}))\n .pipe(take(1))\n .subscribe(() => (instance.state = ActionInstanceStateEnum.TriggerEnd));\n\n return instance;\n } else {\n instance.state = ActionInstanceStateEnum.TriggerEnd;\n this.activateAction(action, parameters, instance);\n\n if (runContext) {\n const context = instance.context;\n if (context) {\n this.run(context);\n }\n }\n\n return instance;\n }\n }\n\n /**\n * Deactivates on route triggered action by trying to reroute back to location where action was triggered.\n * @param instance Action instance.\n */\n public finishActionRouteUntrigger<Item, Service = undefined>(instance: ActionInstance<Item, Service>) {\n if (instance.action.activationTrigger !== ActionActivationTriggerEnum.OnRoute) {\n return;\n }\n\n instance = this.getOrCreateInstance<Item, Service>(instance);\n\n instance.state = ActionInstanceStateEnum.FinishRouteUntriggerStart;\n\n let url = this.navigationService.getCurrentLocationFromHistory() ?? this.navigationService.getCurrentLocationFromUrl();\n if (!url) {\n this.navigationService.back();\n } else {\n if (url.startsWith('/')) {\n url = url.substring(1);\n }\n\n const splitUrlQueryParam = url.split('?');\n const urlPathSegments = splitUrlQueryParam[0].split('#')[0].split('/');\n const queryParam = splitUrlQueryParam[1]?.split('#')[0];\n\n let actionUrl = instance.action?.routeUrl ?? '';\n if (actionUrl.startsWith('/')) {\n actionUrl = actionUrl.substring(1);\n }\n const actionUrlSegments = actionUrl.split('/');\n let redirectUrl = '/' + urlPathSegments.slice(0, urlPathSegments.length - actionUrlSegments.length).join('/');\n if (typeof queryParam !== 'undefined') {\n redirectUrl = `${redirectUrl}?${queryParam}`;\n }\n\n // No URL replaces, probably ok, to allow going back\n from(this.router.navigateByUrl(redirectUrl))\n .pipe(first(), timeout(1000))\n .subscribe({\n next: () => (instance.state = ActionInstanceStateEnum.FinishRouteUntriggerEndFinal),\n error: () => (instance.state = ActionInstanceStateEnum.FinishRouteUntriggerTimeoutFinal)\n });\n }\n }\n\n /**\n * Transform error of any type to error by using error mapper that could be provided by final project.\n * @param error error of any type.\n * @param context Action context.\n *\n * @returns mapped ICommonsError.\n */\n public toActionError(error?: any, context?: ActionContext<any, any>): ICommonsError {\n let commonsError: ICommonsError;\n if (context) {\n const options: CommonsActionErrorOptions = {\n cause: error,\n location: this.router.url\n };\n if (error instanceof HttpErrorResponse) {\n options.httpError = error;\n }\n\n commonsError = new CommonsActionError(error?.message ?? 'Unknown error', context.contextLongName);\n } else if (error instanceof HttpErrorResponse) {\n // should not really happen (should always be wrapped in MngActionError), just in case\n commonsError = new CommonsHttpError(`Http Error occurred in action`, error, {\n location: this.router.url\n });\n } else {\n // not from action, so unknown source of error\n commonsError = new CommonsInternalError(error?.message ?? 'Unknown error', {\n name: error?.name ?? 'UnknownError',\n location: this.router.url,\n cause: error\n });\n }\n\n // just trace it, allow user to set if this is error or not\n this.logger.trace(commonsError);\n\n return this.errorMapper.toCommonsError(error, commonsError);\n }\n\n /**\n * Creates or gets existing action instance.\n * @param instance Action instance.\n * @param action Action descriptor.\n * @param parameters Action parameters.\n * @param instanceInitialStatus Action instance initial status.\n * @param skipInitializationFromViewContainer If initialization of instance from view container should be skipped.\n * @private\n */\n protected getOrCreateInstance<Item, Service = undefined>(\n instance: ActionInstance<Item, Service> | undefined,\n action?: ActionDescriptorInst<Item, Service>,\n parameters?: ActionParameters<Item>,\n instanceInitialStatus?: ActionInstanceStateEnum,\n skipInitializationFromViewContainer = false\n ): ActionInstance<Item, Service> {\n if (!skipInitializationFromViewContainer && !instance && action?.activationTrigger === ActionActivationTriggerEnum.OnRoute && parameters) {\n instance = this.viewContainer?.routeTriggeredActionInstance;\n }\n if (!instance) {\n if (!action) {\n throw new CommonsInternalError('Action descriptor is not provided, instance cannot be created.', {name: 'ActionExecutorServiceError'});\n }\n // create new instance if non provided\n instance = new ActionInstance<Item, Service>(action, instanceInitialStatus);\n }\n\n if (this.config?.actions?.debugInstances && !this.instances.some(i => i.instanceLongName === instance!.instanceLongName)) {\n if (this.instances.length >= this.instancesBufferMax) {\n const lastInstance = this.instances.shift();\n\n if (lastInstance!.state < ActionInstanceStateEnum.FinishSuccessFinal) {\n this.logger.debug(`ERROR: Not all instances are finished! Finishing instance ${instance.instanceLongName} with dismissal.`);\n lastInstance!.forceFinish();\n }\n }\n\n this.instances.push(instance);\n }\n\n return instance;\n }\n}\n","import {Injectable} from '@angular/core';\n\nimport {ActionInstance} from '../models/execution/action-instance.model';\nimport {ActionExecutorService} from './action-executor.service';\n\n@Injectable()\nexport class RootActionExecutorService extends ActionExecutorService {\n private readonly _instances: ActionInstance<any, any>[] = [];\n\n public get instances(): ActionInstance<any, any>[] {\n return this._instances;\n }\n}\n","import {Injectable, inject} from '@angular/core';\n\nimport {ActionInstance} from '../models/execution/action-instance.model';\nimport {ActionExecutorService} from './action-executor.service';\nimport {RootActionExecutorService} from './root-action-executor.service';\n\n@Injectable()\nexport class ComponentActionExecutorService extends ActionExecutorService {\n private readonly rootActionExecutorService = inject(RootActionExecutorService);\n\n public get instances(): ActionInstance<any, any>[] {\n return this.rootActionExecutorService.instances;\n }\n}\n","import {Provider} from '@angular/core';\n\nimport {ActionExecutorService} from '../action-executor.service';\nimport {ComponentActionExecutorService} from '../component-action-executor.service';\n\nexport function provideActionExecutor(): Provider {\n return {\n provide: ActionExecutorService,\n useClass: ComponentActionExecutorService\n };\n}\n","import {AsyncPipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, OnChanges, OnDestroy, OnInit, Optional, Output, SimpleChanges, ViewChild} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {MenuItem} from 'primeng/api';\nimport {ButtonModule} from 'primeng/button';\nimport {Menu, MenuModule} from 'primeng/menu';\nimport {RippleModule} from 'primeng/ripple';\nimport {SplitButtonModule} from 'primeng/splitbutton';\nimport {TooltipModule} from 'primeng/tooltip';\nimport {Observable, ReplaySubject, Subscription, combineLatest, distinctUntilChanged, of} from 'rxjs';\n\nimport {\n APermissions,\n ActionData,\n ActionParameters,\n ComponentDirective,\n DataListParams,\n IDataProvider,\n IdType,\n ParametrizePipe,\n PermissionService,\n Permissions,\n boolean$Attribute,\n toObservable\n} from '@mediusinc/mng-commons/core';\nimport {ActionContextValidation, ActionDescriptorInst, ActionLinkDescriptorInst, ActionTypeEnum, IActionComponent, TableviewRouteData} from '@mediusinc/mng-commons/tableview/api';\n\nimport {getI18nForActionAsync} from '../../helpers/i18n';\nimport {ActionInstanceStateEnum} from '../../models/execution/action-instance-state.model';\nimport {ActionInstance} from '../../models/execution/action-instance.model';\nimport {ActionExecutorService} from '../../services/action-executor.service';\nimport {provideActionExecutor} from '../../services/providers/provide-action-executor';\nimport {ViewContainer} from '../../services/view-container.service';\n\n@Component({\n standalone: true,\n selector: 'mng-action',\n templateUrl: './action.component.html',\n styleUrls: ['./action.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe, ButtonModule, RippleModule, TooltipModule, ParametrizePipe, ComponentDirective, SplitButtonModule, MenuModule],\n providers: [provideActionExecutor()]\n})\nexport class ActionComponent<Item = any, Service = undefined> implements OnInit, OnChanges, OnDestroy {\n @HostBinding('class') hostClass = 'mng-action-button';\n @HostBinding('class.m-0') isHostHidden = false;\n\n // metadata and editor mode input\n @Input({required: true}) public action!: ActionDescriptorInst<Item, Service>;\n @Input() public item?: Item;\n @Input() public itemId?: IdType;\n @Input() public actionData?: ActionData;\n @Input() public dataListParams?: DataListParams;\n @Input() public dataProvider?: IDataProvider<Item, Service>;\n @Input() public hostComponent?: unknown;\n @Input('route') public routeInit?: ActivatedRoute;\n @Input({alias: 'disabled', transform: boolean$Attribute}) public inputDisabled: Observable<boolean> = of(false);\n @Input({alias: 'loading', transform: boolean$Attribute}) public inputLoading: Observable<boolean> = of(false);\n @Input() public selectedItems: Array<Item> = [];\n\n @Output('finish') public finishEventEmitter = new EventEmitter<ActionInstance<Item, Service>>();\n\n @ViewChild('subactionsMenu') public subactionsMenu?: Menu;\n\n private loadingSubject = new ReplaySubject<boolean>(1);\n public $loading: Observable<boolean> = this.loadingSubject.asObservable();\n\n private isVisibleSubject = new ReplaySubject<boolean>(1);\n private isVisibleSubscription?: Subscription;\n public $isVisible = this.isVisibleSubject.asObservable().pipe(distinctUntilChanged());\n private isPermittedSubject = new ReplaySubject<boolean>(1);\n private isPermittedSubscription?: Subscription;\n public $isPermitted = this.isPermittedSubject.asObservable().pipe(distinctUntilChanged());\n private isEnabledSubject = new ReplaySubject<boolean>(1);\n private isEnabledSubscription?: Subscription;\n public $isEnabled = this.isEnabledSubject.asObservable().pipe(distinctUntilChanged());\n private labelSubject = new ReplaySubject<string | null>(1);\n private labelSubscription?: Subscription;\n public $label = this.labelSubject.asObservable().pipe(distinctUntilChanged());\n private tooltipSubject = new ReplaySubject<string | null>(1);\n private tooltipSubscription?: Subscription;\n public $tooltip = this.tooltipSubject.asObservable().pipe(distinctUntilChanged());\n\n public actionLink?: ActionLinkDescriptorInst<Item>;\n public hasNoTitle = false;\n\n private subscriptions: Subscription[] = [];\n\n public route!: ActivatedRoute; // value will be determined in ngOnInit\n private routePermissions?: APermissions;\n\n public buttonClass = 'p-button-primary';\n public subactions: MenuItem[] = [];\n private subactionSubscriptions: Subscription[] = [];\n public actionOrSubactionHasRunConfirmation = false;\n\n private instance?: ActionInstance<Item, Service>;\n\n constructor(\n private routeService: ActivatedRoute,\n private translate: TranslateService,\n private authorization: PermissionService,\n private actionExecutor: ActionExecutorService,\n @Optional() private viewContainer: ViewContainer<Item, Service> | null\n ) {\n this.loadingSubject.next(false);\n }\n\n public ngOnInit() {\n this.route = this.routeInit ?? this.routeService;\n\n this.hasNoTitle = this.action.button.label === null;\n this.isEnabledSubject.next(true);\n this.isVisibleSubject.next(true);\n this.isPermittedSubject.next(true);\n this.labelSubject.next(null);\n this.tooltipSubject.next(null);\n\n const routeData = this.route.snapshot.data as TableviewRouteData;\n if (this.action instanceof ActionLinkDescriptorInst) {\n this.actionLink = this.action;\n }\n\n if (this.action.tableviewCategory && routeData.tableviewPermissions) {\n if (routeData.tableviewPermissions[this.action.tableviewCategory]) {\n this.routePermissions = routeData.tableviewPermissions[this.action.tableviewCategory];\n }\n }\n this.processSubscriptions();\n\n if (this.action.className) {\n this.hostClass = this.action.className;\n }\n const hostVisibilitySubscription = combineLatest([this.$isVisible, this.$isPermitted]).subscribe(([isVisible, isPermitted]) => {\n this.isHostHidden = !isVisible || !isPermitted;\n });\n this.subscriptions.push(hostVisibilitySubscription);\n\n this.buttonClass = this.action.button.styleClass.build(this.hasNoTitle);\n\n // Here we check if an action or any subaction has confirmation dialog\n this.actionOrSubactionHasRunConfirmation = this.action.subactions.some(sub => sub.hasRunConfirmation) || this.action.hasRunConfirmation;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\n !(changes['item']?.firstChange ?? true) ||\n !(changes['itemId']?.firstChange ?? true) ||\n !(changes['actionData']?.firstChange ?? true) ||\n (this.action.hasItemsSelection && !(changes['selectedItems']?.firstChange ?? true))\n ) {\n this.processSubscriptions();\n }\n }\n\n ngOnDestroy(): void {\n this.actionExecutor.onActionDestroy(this.instance);\n this.isVisibleSubscription?.unsubscribe();\n this.isPermittedSubscription?.unsubscribe();\n this.isEnabledSubscription?.unsubscribe();\n this.labelSubscription?.unsubscribe();\n this.tooltipSubscription?.unsubscribe();\n this.subscriptions.forEach(s => s.unsubscribe());\n this.subactionSubscriptions.forEach(s => s.unsubscribe());\n }\n\n public triggerAction(action: ActionDescriptorInst<Item, Service>, parameters?: ActionParameters<Item>, event?: Event) {\n if (action.subactionsAsMenu) {\n this.subactionsMenu?.toggle(event ?? new Event('trigger'));\n return;\n }\n\n const actionData = this.actionData ? this.actionData : {};\n\n parameters ??= {\n itemId: this.itemId,\n item: this.item,\n actionData: actionData,\n dataListParams: this.dataListParams,\n route: this.route,\n sourceComponent: this,\n hostComponent: this.hostComponent,\n selectedItems: this.selectedItems\n };\n\n const instance = this.actionExecutor.triggerAction<Item, Service>(action, parameters);\n this.instance = instance;\n const context = instance.context;\n if (!context) {\n // no context is provided if routing is triggered or editor is opened via dialog\n // it is in another component jurisdiction to handle contexts\n return;\n }\n\n this.subscriptions.push(\n instance.result$.subscribe({\n next: () => {\n this.finishEventEmitter.next(instance);\n if (action.hasItemsSelection) {\n this.viewContainer?.reloadTable({data: {event: event}});\n }\n }\n })\n );\n this.subscriptions.push(\n instance.error$.subscribe({\n next: () => {\n this.finishEventEmitter.next(instance);\n }\n })\n );\n\n this.subscriptions.push(\n this.instance.state$.subscribe(s => {\n switch (s) {\n case ActionInstanceStateEnum.RunStart:\n this.loadingSubject.next(true);\n break;\n case ActionInstanceStateEnum.RunEnd:\n case ActionInstanceStateEnum.RunError:\n this.loadingSubject.next(false);\n break;\n case ActionInstanceStateEnum.NextActionStart:\n if (this.instance?.nextActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.loadingSubject.next(true);\n }\n break;\n case ActionInstanceStateEnum.NextActionEnd:\n if (this.instance?.nextActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.loadingSubject.next(false);\n }\n break;\n case ActionInstanceStateEnum.ErrorActionStart:\n if (this.instance?.errorActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.loadingSubject.next(true);\n }\n break;\n case ActionInstanceStateEnum.ErrorActionEnd:\n if (this.instance?.errorActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.loadingSubject.next(false);\n }\n break;\n }\n })\n );\n\n this.actionExecutor.run(context);\n }\n\n public onCustomActionCmpInst(instance: IActionComponent<Item>) {\n const cmpInstSubscription = instance.triggerActionEventEmitter.subscribe(params => this.triggerAction(this.action, params));\n this.subscriptions.push(cmpInstSubscription);\n }\n\n private processSubactions(): MenuItem[] {\n this.subactionSubscriptions.forEach(s => s.unsubscribe());\n this.subactionSubscriptions = [];\n\n const menuItems: MenuItem[] = [];\n for (const subaction of this.action.subactions) {\n const menuItem = {} as MenuItem;\n\n menuItem.icon = subaction.button.icon ?? undefined;\n this.subactionSubscriptions.push(\n getI18nForActionAsync(this.translate, subaction, 'title', subaction.button.label ?? undefined, this.item).subscribe({\n next: res => (menuItem.label = res!)\n })\n );\n this.subactionSubscriptions.push(\n getI18nForActionAsync(this.translate, subaction, 'tooltip', this.action.button.tooltip, this.item).subscribe({\n next: res => (menuItem.tooltip = res!)\n })\n );\n\n const parameters: ActionParameters<Item> = {\n itemId: this.itemId,\n item: this.item,\n actionData: this.actionData,\n sourceComponent: this\n };\n\n if (subaction.hasItemsSelection) {\n parameters.selectedItems = this.selectedItems;\n }\n\n const context = this.actionExecutor.prepareActionContextValidation(subaction, parameters, this.dataProvider);\n\n if (typeof subaction.isEnabledFunction === 'function') {\n this.subactionSubscriptions.push(\n toObservable(subaction.isEnabledFunction(context)).subscribe({\n next: res => (menuItem.disabled = !res)\n })\n );\n }\n\n const visibilityObservables: Observable<boolean>[] = [];\n if (typeof subaction.isVisibleFunction === 'function') {\n visibilityObservables.push(toObservable(subaction.isVisibleFunction(context)));\n }\n if (typeof subaction.permissions !== 'undefined') {\n visibilityObservables.push(this.authorization.isPermitted(subaction.permissions, this.route.snapshot, context as ActionContextValidation<unknown, unknown>));\n }\n\n const routeData = this.route.snapshot.data as TableviewRouteData;\n if (subaction.tableviewCategory && routeData.tableviewPermissions && routeData.tableviewPermissions[subaction.tableviewCategory]) {\n const routePermissions = routeData.tableviewPermissions[subaction.tableviewCategory];\n visibilityObservables.push(this.authorization.isPermitted(routePermissions, this.route.snapshot, context as ActionContextValidation<unknown, unknown>));\n }\n\n this.subactionSubscriptions.push(\n combineLatest(visibilityObservables).subscribe(visibilities => {\n menuItem.visible = visibilities.every(value => value);\n })\n );\n\n menuItem.command = () => this.triggerAction(subaction);\n\n menuItems.push(menuItem);\n }\n return menuItems;\n }\n\n private processSubscriptions() {\n const parameters: ActionParameters<Item> = {\n itemId: this.itemId,\n item: this.item,\n actionData: this.actionData,\n sourceComponent: this\n };\n\n if (this.action.hasItemsSelection) {\n parameters.selectedItems = this.selectedItems;\n }\n\n const context = this.actionExecutor.prepareActionContextValidation(this.action, parameters, this.dataProvider);\n\n if (typeof this.action.isVisibleFunction === 'function') {\n this.isVisibleSubscription?.unsubscribe();\n this.isVisibleSubscription = toObservable(this.action.isVisibleFunction(context)).subscribe({\n next: res => this.isVisibleSubject.next(res)\n });\n }\n if (typeof this.action.permissions !== 'undefined' || typeof this.routePermissions !== 'undefined') {\n this.isPermittedSubscription?.unsubscribe();\n const permissions =\n this.action.permissions && this.routePermissions\n ? Permissions.All.of(this.routePermissions, this.action.permissions)\n : this.routePermissions ?? this.action.permissions!;\n this.isVisibleSubscription = this.authorization.isPermitted(permissions, this.route.snapshot, context as ActionContextValidation<unknown, unknown>).subscribe({\n next: res => this.isPermittedSubject.next(res)\n });\n }\n if (typeof this.action.isEnabledFunction === 'function') {\n this.isEnabledSubscription?.unsubscribe();\n this.isEnabledSubscription = toObservable(this.action.isEnabledFunction(context)).subscribe({\n next: res => this.isEnabledSubject.next(res)\n });\n }\n\n if (!this.hasNoTitle) {\n this.labelSubscription?.unsubscribe();\n this.labelSubscription = getI18nForActionAsync(this.translate, this.action, 'title', this.action.button.label ?? undefined, this.item).subscribe({\n next: i18n => this.labelSubject.next(i18n)\n });\n }\n\n this.tooltipSubscription?.unsubscribe();\n if (this.action.button.tooltip) {\n this.tooltipSubscription = getI18nForActionAsync(this.translate, this.action, 'tooltip', this.action.button.tooltip, this.item, undefined, undefined).subscribe({\n next: i18n => this.tooltipSubject.next(i18n)\n });\n }\n\n this.subactions = this.processSubactions();\n }\n}\n","@if (($isVisible | async) && ($isPermitted | async)) {\n @if (actionLink && actionLink.url !== '') {\n <a\n pButton\n pRipple\n [label]=\"($label | async) ?? ''\"\n [icon]=\"$any(action.button.icon)\"\n [iconPos]=\"action.button.iconPosition\"\n [href]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : (actionLink.url | mngParametrize: itemId : item : actionData)\"\n [target]=\"actionLink.target\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [pTooltip]=\"($tooltip | async) ?? undefined\"\n [tooltipPosition]=\"action.button.tooltipPosition ?? undefined\"\n [class]=\"buttonClass\"></a>\n } @else if (actionLink) {\n <a\n pButton\n pRipple\n [icon]=\"$any(action.button.icon)\"\n [iconPos]=\"action.button.iconPosition\"\n [label]=\"($label | async) ?? ''\"\n [target]=\"actionLink.target\"\n [replaceUrl]=\"actionLink.replaceUrl\"\n [routerLink]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : (actionLink.pathSegments | mngParametrize: itemId : item : actionData)\"\n [relativeTo]=\"route\"\n [queryParams]=\"actionLink.queryParams | mngParametrize: itemId : item : actionData\"\n [queryParamsHandling]=\"actionLink.queryParamsHandling\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [pTooltip]=\"($tooltip | async) ?? undefined\"\n [tooltipPosition]=\"action.button.tooltipPosition ?? undefined\"\n [class]=\"buttonClass\"></a>\n } @else if (action.component || action.componentFromDi) {\n <ng-container\n [mngComponent]=\"action.component\"\n [injectionToken]=\"action.componentFromDi\"\n [inputs]=\"{\n action: action,\n item: item,\n itemId: itemId,\n actionData: actionData,\n enabled: $isEnabled,\n loading: $loading\n }\"\n (instanceCreated)=\"onCustomActionCmpInst($event)\">\n </ng-container>\n } @else if (action.subactions.length > 0 && !action.subactionsAsMenu) {\n <p-splitButton\n [icon]=\"action.button.icon ?? undefined\"\n [iconPos]=\"action.button.iconPosition\"\n [label]=\"($label | async) ?? ''\"\n [pTooltip]=\"($tooltip | async) ?? undefined\"\n [tooltipPosition]=\"action.button.tooltipPosition ?? undefined\"\n [disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n (onClick)=\"triggerAction(action)\"\n [class]=\"buttonClass\"\n [model]=\"subactions\">\n </p-splitButton>\n } @else {\n <button\n pButton\n pRipple\n type=\"button\"\n [icon]=\"$any(action.button.icon)\"\n [iconPos]=\"action.button.iconPosition\"\n [label]=\"($label | async) ?? ''\"\n [pTooltip]=\"($tooltip | async) ?? undefined\"\n [tooltipPosition]=\"action.button.tooltipPosition ?? undefined\"\n [loading]=\"(($loading | async) ?? false) || ((inputLoading | async) ?? false)\"\n loadingIcon=\"pi pi-spin pi-spinner\"\n [disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n (click)=\"triggerAction(action, undefined, $event)\"\n [class]=\"buttonClass\"></button>\n <p-menu #subactionsMenu [model]=\"subactions\" [popup]=\"true\" appendTo=\"body\" styleClass=\"mng-action-menu\"></p-menu>\n }\n}\n","import {AbstractControl, ValidationErrors} from '@angular/forms';\n\nimport {FormlyFieldConfig} from '@ngx-formly/core';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {CommonsInternalError, CommonsService} from '@mediusinc/mng-commons/core';\nimport {type} from '@mediusinc/mng-commons/model';\nimport {\n AFieldDescriptor,\n CommonsFormlyFieldConfig,\n EditorDescriptorInst,\n FieldActionDescriptor,\n FieldAsyncValidator,\n FieldGroupDescriptor,\n FieldInputDescriptor,\n FieldInputTypeEnum,\n FieldLookupDescriptor,\n FieldLookupEnumDescriptor,\n FieldLookupTypeEnum,\n FieldManyEditorDescriptor,\n FieldManyToManyEditorDescriptor,\n FieldTabGroupDescriptor,\n FieldValidationDescriptor,\n IFormEditorComponent,\n TableviewDescriptor,\n TableviewEditorTypeEnum\n} from '@mediusinc/mng-commons/tableview/api';\n\nexport function createFormlyConfigFromDescriptor(descriptor: EditorDescriptorInst<any>, formEditorComponent: IFormEditorComponent<unknown>): FormlyFieldConfig[] {\n const fields: FormlyFieldConfig[] = [];\n\n if (descriptor.isLocalized) {\n descriptor = createFormlyLocalizationsTab(descriptor);\n }\n\n if (!descriptor.isLocalized && descriptor.tabs.length === 1 && descriptor.tabs[0].default) {\n // dont use tabs\n fields.push(...createFormlyGroupType(descriptor.tabs[0].fields, formEditorComponent));\n } else {\n fields.push(...createFormlyTabType(descriptor.tabs, formEditorComponent));\n }\n\n return fields;\n}\nexport function createFormlyLocalizationsTab(descriptor: EditorDescriptorInst<any>) {\n if (descriptor.isLocalized && descriptor.tableviewEditorType !== TableviewEditorTypeEnum.Details) {\n if (!descriptor.localizationModel) {\n throw new CommonsInternalError('Localization model must be defined.');\n }\n const localizationsTableViewDescriptor = TableviewDescriptor.fromModel(descriptor.localizationModel);\n if (!descriptor.localizationLocaleProperty) {\n throw new CommonsInternalError('Localization locale property must be defined.');\n }\n localizationsTableViewDescriptor.addColumn(descriptor.localizationLocaleProperty);\n localizationsTableViewDescriptor.editEditor.addField(descriptor.localizationLocaleProperty).withDisabled(true);\n localizationsTableViewDescriptor.detailsEditor.addField(descriptor.localizationLocaleProperty).withDisabled(true);\n localizationsTableViewDescriptor.addEditor\n .addFieldLookupWithProvider(descriptor.localizationLocaleProperty, CommonsService, type<string>())\n .withLookup((qp, service) => service.appDataLanguages)\n .withDisabled(false)\n .withRequired();\n descriptor.fields.forEach(field => {\n if (field.isLocalized) {\n localizationsTableViewDescriptor.addColumn(field.property);\n localizationsTableViewDescriptor.addField(field.property);\n }\n });\n const descriptorWithLocalizations = descriptor.copy();\n descriptorWithLocalizations.createTabGroup('localizations');\n if (!descriptor.localizationLocalizationProperty) {\n throw new CommonsInternalError('Localization localization property must be defined');\n }\n descriptorWithLocalizations.addFieldManyEditor(descriptor.localizationLocalizationProperty, localizationsTableViewDescriptor);\n\n return descriptorWithLocalizations;\n }\n return descriptor;\n}\nexport function createFormlyTabType(tabGroups: FieldTabGroupDescriptor<any>[], formEditorComponent: IFormEditorComponent<unknown>): FormlyFieldConfig[] {\n const tabsField: FormlyFieldConfig = {\n type: 'tabs',\n fieldGroup: [],\n props: {\n formEditorComponent\n }\n };\n for (const tab of tabGroups) {\n const tabField: CommonsFormlyFieldConfig = {\n id: tab.name,\n props: {\n formEditorComponent\n },\n expressions: {},\n fieldGroup: []\n };\n if (tab.title) {\n tabField.props.label = tab.title;\n }\n tabField.fieldGroup!.push(...createFormlyGroupType(tab.fields, formEditorComponent));\n tabsField.fieldGroup!.push(tabField);\n }\n return [tabsField];\n}\n\nexport function createFormlyGroupType(groups: FieldGroupDescriptor<any>[], formEditorComponent: IFormEditorComponent<unknown>): FormlyFieldConfig[] {\n if (groups.length === 1 && groups[0].default) {\n // dont use fieldset, just create fields\n return createFormlyFields(groups[0], formEditorComponent);\n } else {\n const groupsField: CommonsFormlyFieldConfig = {\n type: 'fieldset',\n fieldGroup: [],\n props: {\n formEditorComponent\n },\n expressions: {}\n };\n for (const group of groups) {\n const groupField: CommonsFormlyFieldConfig = {\n id: group.name,\n props: {\n descriptor: group\n },\n expressions: {},\n fieldGroup: []\n };\n if (group.title) {\n groupField.props.label = group.title;\n }\n groupField.fieldGroup!.push(...createFormlyFields(group, formEditorComponent));\n groupsField.fieldGroup!.push(groupField);\n }\n return [groupsField];\n }\n}\n\nexport function createFormlyFields(descriptor: FieldGroupDescriptor<any>, formEditorComponent: IFormEditorComponent<unknown>): FormlyFieldConfig[] {\n const fields: FormlyFieldConfig[] = [];\n for (const descriptorField of descriptor.fields) {\n fields.push(createFormlyField(descriptorField, formEditorComponent));\n }\n // wrap in group to be able to use flex grid\n const wrapperGroup: FormlyFieldConfig = {\n fieldGroupClassName: 'p-fluid formgrid grid',\n fieldGroup: fields\n };\n\n addValidationsToFormlyField(wrapperGroup, descriptor.validations);\n\n return [wrapperGroup];\n}\n\nexport function createFormlyField(descriptor: AFieldDescriptor<any, any>, formEditorComponent: IFormEditorComponent<unknown>): FormlyFieldConfig {\n const field: CommonsFormlyFieldConfig = {\n key: descriptor.property,\n modelOptions: {\n updateOn: descriptor.updateOn\n },\n hooks: {\n onInit: () => (descriptor.onInit ? descriptor.onInit(field) : undefined),\n onChanges: () => (descriptor.onChanges ? descriptor.onChanges(field) : undefined),\n afterContentInit: () => (descriptor.afterContentInit ? descriptor.afterContentInit(field) : undefined),\n afterViewInit: () => (descriptor.afterViewInit ? descriptor.afterViewInit(field) : undefined),\n onDestroy: () => (descriptor.onDestroy ? descriptor.onDestroy(field) : undefined)\n },\n props: {\n descriptor,\n formEditorComponent,\n onValueChange: descriptor.onValueChange\n },\n expressions: {}\n };\n\n let className = descriptor.className;\n if (!className) {\n // assign default field width through entire row\n className = 'col-12';\n }\n field.className = className;\n\n if (descriptor instanceof FieldInputDescriptor) {\n switch (descriptor.fieldType) {\n case FieldInputTypeEnum.Hidden:\n break;\n case FieldInputTypeEnum.Label:\n field.type = 'label';\n delete field.key;\n break;\n case FieldInputTypeEnum.Textarea:\n field.type = 'textarea';\n field.props.maxLength = descriptor.maxLength;\n field.props.minLength = descriptor.minLength;\n field.props.pattern = descriptor.pattern;\n break;\n case FieldInputTypeEnum.Number:\n field.type = 'number';\n field.props.min = descriptor.numberMin;\n field.props.max = descriptor.numberMax;\n break;\n case FieldInputTypeEnum.Currency:\n field.type = 'currency';\n field.props.min = descriptor.numberMin;\n field.props.max = descriptor.numberMax;\n break;\n case FieldInputTypeEnum.Switch:\n field.type = 'switch';\n field.defaultValue = false;\n break;\n case FieldInputTypeEnum.Radio:\n field.type = 'radio';\n break;\n case FieldInputTypeEnum.Datepicker:\n field.type = 'datepicker';\n break;\n case FieldInputTypeEnum.Mask:\n field.type = 'mask';\n break;\n case FieldInputTypeEnum.File:\n case FieldInputTypeEnum.ImageFile:\n field.type = 'file';\n break;\n case FieldInputTypeEnum.ImageUrl:\n field.type = 'imageUrl';\n break;\n case FieldInputTypeEnum.Custom:\n if (descriptor.customComponentType) {\n field.type = 'custom';\n field.props['customComponentType'] = descriptor.customComponentType;\n if (Array.isArray(descriptor.customComponentWrappers)) {\n field.wrappers = descriptor.customComponentWrappers;\n } else {\n // default wrapper\n field.wrappers = ['field'];\n }\n }\n break;\n default:\n field.type = 'input';\n field.props.minLength = descriptor.minLength;\n field.props.maxLength = descriptor.maxLength;\n field.props.pattern = descriptor.pattern;\n break;\n }\n } else if (descriptor instanceof FieldActionDescriptor) {\n field.type = 'action';\n field.wrappers = descriptor.wrappers;\n delete field.key;\n } else if (descriptor instanceof FieldLookupEnumDescriptor) {\n switch (descriptor.lookupType) {\n case FieldLookupTypeEnum.Custom:\n field.type = descriptor.customComponentName;\n break;\n default:\n field.type = 'enum';\n break;\n }\n } else if (descriptor instanceof FieldLookupDescriptor) {\n switch (descriptor.lookupType) {\n case FieldLookupTypeEnum.Autocomplete:\n field.type = 'autocomplete';\n break;\n case FieldLookupTypeEnum.Dialog:\n field.type = 'dialog';\n break;\n case FieldLookupTypeEnum.Custom:\n field.type = descriptor.customComponentName;\n break;\n case FieldLookupTypeEnum.Dropdown:\n default:\n field.type = 'dropdown';\n break;\n }\n } else if (descriptor instanceof FieldManyToManyEditorDescriptor) {\n field.type = 'table-dialog-multiselect';\n } else if (descriptor instanceof FieldManyEditorDescriptor) {\n field.type = 'table-dialog-form';\n }\n\n if (descriptor.label) {\n field.props.label = descriptor.label;\n }\n\n if (descriptor.requiredExpression) {\n field.expressions!['props.required'] = descriptor.requiredExpression;\n }\n if (descriptor.required) {\n field.props!.required = true;\n if (descriptor.requiredHideLabelMarker) {\n field.props!['hideRequiredMarker'] = true;\n }\n }\n\n if (descriptor.hiddenExpression) {\n field.expressions!['hide'] = descriptor.hiddenExpression;\n }\n\n if (descriptor.disabledExpression) {\n field.expressions!['props.disabled'] = descriptor.disabledExpression;\n } else if (descriptor.disabled) {\n field.props.disabled = true;\n } else {\n field.expressions!['props.disabled'] = 'formState.disabled';\n }\n\n if (typeof descriptor.defaultValue !== 'undefined') {\n field.defaultValue = descriptor.defaultValue;\n }\n\n addValidationsToFormlyField(field, descriptor.validations);\n addAsyncValidationsToFormlyField(field, descriptor.asyncValidations);\n\n return field;\n}\n\nexport function addValidationsToFormlyField(config: FormlyFieldConfig, validations: Array<FieldValidationDescriptor>) {\n if (!config.validators) {\n config.validators = {};\n }\n\n for (const validation of validations) {\n if (typeof validation.validator === 'function') {\n config.validators[validation.name] = {\n expression: (\n control: AbstractControl,\n field: FormlyFieldConfig,\n options?: {\n [id: string]: any;\n }\n ) => {\n const validatorRes = validation.validator!(control, field, options);\n // formly validator only excepts true/false for validation\n // map possible angular validator result to true/false\n return typeof validatorRes === 'boolean' ? validatorRes : validatorRes === null;\n }\n };\n if (typeof validation.message === 'function') {\n config.validators[validation.name].message = validation.message;\n }\n } else {\n if (!Array.isArray(config.validators.validation)) {\n config.validators.validation = [];\n }\n config.validators.validation.push(validation.name);\n }\n }\n}\n\nexport function addAsyncValidationsToFormlyField(config: FormlyFieldConfig, asyncValidations: Array<FieldValidationDescriptor>) {\n if (!config.asyncValidators) {\n config.asyncValidators = {};\n }\n\n for (const validation of asyncValidations) {\n if (typeof validation.validator === 'function') {\n config.asyncValidators[validation.name] = {\n expression: (\n control: AbstractControl,\n field: FormlyFieldConfig,\n options?: {\n [id: string]: any;\n }\n ) => {\n const validator = <FieldAsyncValidator>validation.validator;\n\n const validatorObs: Observable<ValidationErrors | boolean | null> = validator(control, field, options);\n // formly validator only excepts true/false for validation\n // map possible angular validator result to true/false\n return validatorObs.pipe(map(value => (typeof value === 'boolean' ? value : value === null)));\n }\n };\n if (typeof validation.message === 'function') {\n config.asyncValidators[validation.name].message = validation.message;\n }\n } else {\n if (!Array.isArray(config.asyncValidators.validation)) {\n config.asyncValidators.validation = [];\n }\n config.asyncValidators.validation.push(validation.name);\n }\n }\n}\n","import {TranslateService} from '@ngx-translate/core';\nimport {Message} from 'primeng/api';\n\nexport function getFormEditorInfoMessage(translate: TranslateService, title: string, message: string, params?: any): Message {\n const actionErrorTitle = translate.instant(title) ?? undefined;\n const actionErrorMessage = translate.instant(message, params) ?? undefined;\n return {severity: 'info', summary: actionErrorTitle, detail: actionErrorMessage};\n}\n\nexport function getFormEditorWarningMessage(translate: TranslateService, title: string, message: string): Message {\n const actionErrorTitle = translate.instant(title) ?? undefined;\n const actionErrorMessage = translate.instant(message) ?? undefined;\n return {severity: 'warn', summary: actionErrorTitle, detail: actionErrorMessage};\n}\n","import {AsyncPipe} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n Type,\n ViewChild,\n inject\n} from '@angular/core';\nimport {AbstractControl, FormArray, FormGroup, ReactiveFormsModule} from '@angular/forms';\n\nimport {FormlyFieldConfig, FormlyFormOptions, FormlyModule} from '@ngx-formly/core';\nimport {TranslateService} from '@ngx-translate/core';\nimport {Message} from 'primeng/api';\nimport {ButtonModule} from 'primeng/button';\nimport {MessagesModule} from 'primeng/messages';\nimport {Observable, Subscription, debounceTime, distinctUntilChanged, of} from 'rxjs';\n\nimport {CommonsService, LoggerService, TemplateDirective, objectDeepCopy} from '@mediusinc/mng-commons/core';\nimport {\n CommonsFormlyFieldConfig,\n EditorDescriptorInst,\n FormEditorSubmitEvent,\n FormEventTypeEnum,\n FormFieldEventComponentSubtype,\n IFormEditorComponent,\n TableviewEditorTypeEnum\n} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ViewContainer} from '../../../action/services/view-container.service';\nimport {createFormlyConfigFromDescriptor} from '../../helpers/editor-formly';\nimport {getFormEditorInfoMessage, getFormEditorWarningMessage} from '../../helpers/notification';\n\n@Component({\n standalone: true,\n selector: 'mng-form-editor',\n templateUrl: './form-editor.component.html',\n imports: [FormlyModule, ReactiveFormsModule, MessagesModule, AsyncPipe, ButtonModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormEditorComponent<Item = any> implements IFormEditorComponent<Item>, OnInit, OnChanges, OnDestroy {\n private readonly translateService = inject(TranslateService);\n private readonly commons = inject(CommonsService);\n private readonly logger = inject(LoggerService).create('FormEditorComponent');\n private viewContainer = inject(ViewContainer, {optional: true});\n\n // metadata and editor mode input\n @Input() public descriptor?: EditorDescriptorInst<Item>;\n @Input() public submitLoading: Observable<boolean> | boolean = false;\n\n // data source inputs;\n @Input() public item?: Item;\n\n // extra features input\n @Input() public isFormDisabled = false;\n\n // event outputs\n @Output('formSubmit') public formSubmitEventEmitter = new EventEmitter<FormEditorSubmitEvent<Item>>();\n\n // content and view queries\n @ContentChildren(TemplateDirective) public templates!: QueryList<TemplateDirective>;\n @ViewChild('submitButton') public submitButtonElementRef?: ElementRef;\n\n public form: FormGroup = new FormGroup({});\n public formOptions: FormlyFormOptions = {\n formState: {\n add: false,\n edit: false,\n disabled: false\n }\n };\n public formFields!: FormlyFieldConfig[];\n public formModel: any = {};\n public formMessages: Message[] = [];\n public submitLoading$!: Observable<boolean>;\n private originalItemPrototype?: Type<Item>;\n\n private subscriptions: Subscription[] = [];\n\n public ngOnInit() {\n this.setInitialFormState();\n this.resetFormModel(this.item);\n this.submitLoading$ = this.submitLoading instanceof Observable ? this.submitLoading : of(this.submitLoading);\n\n if (this.descriptor) {\n // init fields for formly\n this.formFields = createFormlyConfigFromDescriptor(this.descriptor, this);\n this.updateFormState();\n\n // let the user know, that adding new value in table view with localizations is only supported in the default language\n if (\n this.descriptor.isLocalized &&\n (this.descriptor.tableviewEditorType === TableviewEditorTypeEnum.Add || this.descriptor.tableviewEditorType === TableviewEditorTypeEnum.Edit)\n ) {\n this.formMessages.push(\n getFormEditorInfoMessage(\n this.translateService,\n 'mngEditor.localizations.addInDefaultLanguageTitle',\n 'mngEditor.localizations.addInDefaultLanguageDescription',\n {defaultLanguage: this.commons.defaultDataLanguage}\n )\n );\n }\n }\n\n // emit lifecycle event\n this.descriptor?.nextEvent(FormEventTypeEnum.ComponentLifecycle, FormEditorComponent, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_INIT\n });\n\n this.subscriptions.push(\n this.form.valueChanges.pipe(debounceTime(250), distinctUntilChanged()).subscribe(v => {\n this.descriptor?.nextEvent(FormEventTypeEnum.ValueChange, FormEditorComponent, this, {\n value: v,\n formValue: () => this.getFormValue()\n });\n })\n );\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['isFormDisabled'] && !changes['isFormDisabled'].firstChange) {\n this.updateFormState();\n }\n if (changes['item'] && !changes['item'].firstChange) {\n this.resetFormModel(this.item);\n }\n }\n\n public ngOnDestroy() {\n this.subscriptions.forEach(s => s.unsubscribe());\n\n // emit lifecycle event\n this.descriptor?.nextEvent(FormEventTypeEnum.ComponentLifecycle, FormEditorComponent, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_DESTROY\n });\n // complete emitting events\n this.descriptor?.completeEvents();\n }\n\n public submit() {\n this.submitButtonElementRef?.nativeElement.click();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public onSubmit(event: Event) {\n this.formOptions.formState.submittedOn = Date.now();\n this.formMessages = [];\n\n const formSubmitItem = this.getFormValue();\n if (this.form.valid) {\n this.formSubmitEventEmitter.next({\n success: true,\n formItem: formSubmitItem\n });\n this.descriptor?.nextEvent(FormEventTypeEnum.Submit, FormEditorComponent, this, {\n submitValid: true,\n submitValue: formSubmitItem\n });\n } else {\n // find and mark invalid tabs\n if (this.formFields[0].type === 'tabs' && this.formFields[0].fieldGroup) {\n for (const tab of this.formFields[0].fieldGroup) {\n const isInvalid = this.isAnyFieldInvalid(tab.fieldGroup);\n this.formOptions.formState['tab_' + (tab.id ? tab.id : (tab.props as CommonsFormlyFieldConfig).props.label) + '_invalid'] = isInvalid;\n }\n }\n const event: FormEditorSubmitEvent<Item> = {success: false, formItem: formSubmitItem};\n event.success = false;\n this.formMessages.push(getFormEditorWarningMessage(this.translateService, 'mngEditor.invalidFormToastTitle', 'mngEditor.invalidFormToastMessage'));\n\n this.formSubmitEventEmitter.next(event);\n this.descriptor?.nextEvent(FormEventTypeEnum.Submit, FormEditorComponent, this, {\n submitValid: false,\n submitValue: formSubmitItem\n });\n }\n }\n\n public getFormValue(): Item {\n const formValue = objectDeepCopy(this.form.getRawValue(), {mapGettersToProperties: true});\n\n this.descriptor?.fields.forEach(field => {\n if (field && field.setter) {\n const splitPath = field.property.split('.');\n let fieldValue = formValue;\n for (let i = 0; i < splitPath.length - 1; i++) {\n const currentSubPath = splitPath[i];\n if (typeof fieldValue[currentSubPath] !== 'object') {\n fieldValue[currentSubPath] = {};\n }\n\n fieldValue = fieldValue[currentSubPath];\n }\n\n fieldValue = fieldValue[splitPath[splitPath.length - 1]];\n field.setter(formValue, fieldValue);\n }\n });\n return formValue;\n }\n\n public resetFormModel(item?: Item, markAsPristine = true) {\n if (typeof item !== 'undefined') {\n this.originalItemPrototype = Object.getPrototypeOf(item);\n }\n\n const formModel = (objectDeepCopy(item, {mapGettersToProperties: true}) as Record<string, any>) ?? {};\n\n this.descriptor?.fields.forEach(field => {\n if (field.getter && item) {\n const splitPath = field.property.split('.');\n let currentObject = formModel;\n\n for (let i = 0; i < splitPath.length; i++) {\n const currentSubPath = splitPath[i];\n if (i === splitPath.length - 1) {\n currentObject[currentSubPath] = field.getter(item?.[field.property as keyof object], item);\n } else {\n if (typeof currentObject[currentSubPath] !== 'object') {\n currentObject[currentSubPath] = {};\n }\n\n currentObject = currentObject[currentSubPath];\n }\n }\n }\n });\n if (typeof this.formOptions.resetModel === 'function') {\n // could not be initiated yet\n this.formOptions.resetModel(this.formModel);\n }\n this.formModel = formModel;\n if (markAsPristine) {\n this.form.markAsPristine();\n }\n }\n\n public getFormField(key: string) {\n return this.findFormField(this.form, key.split('.'));\n }\n\n public setFormFieldValue(key: string, value: any) {\n const control = this.getFormField(key);\n if (control) {\n control.setValue(value);\n return true;\n } else {\n this.logger.warn(`Value was not set, because field ${key} was not found.`);\n return false;\n }\n }\n\n public patchFormFieldValue(key: string, value: any) {\n const control = this.getFormField(key);\n if (control) {\n control.patchValue(value);\n return true;\n } else {\n this.logger.warn(`Value was not set, because field ${key} was not found.`);\n return false;\n }\n }\n\n public resetFormFieldValue(key: string, value?: any) {\n const control = this.getFormField(key);\n if (control) {\n control.reset(value);\n return true;\n } else {\n this.logger.warn(`Value was not set, because field ${key} was not found.`);\n return false;\n }\n }\n\n private findFormField(control: AbstractControl, keyPath: string[]): AbstractControl | null {\n if (keyPath.length === 0) {\n return control;\n }\n if (keyPath.length === 1) {\n return control.get(keyPath[0]);\n }\n let nextControl: AbstractControl | null = null;\n if (control instanceof FormGroup) {\n nextControl = control.get(keyPath[0]);\n } else if (control instanceof FormArray) {\n const idx = +keyPath[0];\n if (!isNaN(idx)) {\n nextControl = control.at(idx);\n }\n }\n\n if (!control) {\n return null;\n }\n return this.findFormField(nextControl!, keyPath.slice(1));\n }\n\n private isAnyFieldInvalid(fields: FormlyFieldConfig[] = []): boolean {\n for (const field of fields) {\n let fieldInvalid = false;\n if (Array.isArray(field.fieldGroup)) {\n fieldInvalid = this.isAnyFieldInvalid(field.fieldGroup);\n } else if (typeof field.type !== 'undefined') {\n fieldInvalid = !field.formControl?.valid;\n }\n if (fieldInvalid) {\n return true;\n }\n }\n return false;\n }\n\n private updateFormState() {\n const isDisabled = this.isFormDisabled || this.descriptor?.disabled === true || this.descriptor?.tableviewEditorType === TableviewEditorTypeEnum.Details;\n this.formOptions.formState.disabled = isDisabled;\n }\n\n /**\n * @private Sets form state based on editor descriptor type.\n * Possible options are: disabled, add or edit.\n */\n private setInitialFormState(): void {\n if (this.descriptor?.tableviewEditorType === TableviewEditorTypeEnum.Add) {\n this.formOptions.formState.add = true;\n } else if (this.descriptor?.tableviewEditorType === TableviewEditorTypeEnum.Edit) {\n this.formOptions.formState.edit = true;\n }\n this.updateFormState();\n }\n}\n","<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit($event)\">\n <formly-form [form]=\"form\" [fields]=\"formFields\" [options]=\"formOptions\" [model]=\"formModel\"></formly-form>\n <button\n #submitButton\n pButton\n type=\"submit\"\n class=\"hidden\"\n [disabled]=\"form.disabled\"\n [loading]=\"(submitLoading$ | async) ?? false\"\n loadingIcon=\"pi pi-spin pi-spinner\"></button>\n</form>\n<p-messages [value]=\"formMessages\" [enableService]=\"false\"></p-messages>\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n WritableSignal,\n effect,\n inject,\n signal\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {ActivatedRoute} from '@angular/router';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {ConfirmationService} from 'primeng/api';\nimport {DialogService, DynamicDialogConfig} from 'primeng/dynamicdialog';\nimport {ProgressSpinnerModule} from 'primeng/progressspinner';\nimport {ToolbarModule} from 'primeng/toolbar';\nimport {ZIndexUtils} from 'primeng/utils';\nimport {Observable, Subject, Subscription, of} from 'rxjs';\nimport {take} from 'rxjs/operators';\n\nimport {ActionData, ActionParameters, CommonsInternalError, CommonsService, ComponentDirective, IDataProvider, IdType, LoggerService} from '@mediusinc/mng-commons/core';\nimport {\n ActionActivationTriggerEnum,\n ActionDescriptorInst,\n ActionEditorDescriptorInst,\n ActionEditorSubmitDescriptorInst,\n ActionEditorSubmitTypeEnum,\n ActionPositionEnum,\n ActionTypeEnum,\n FormEditorSubmitEvent,\n IActionEditorComponent,\n IActionInstance\n} from '@mediusinc/mng-commons/tableview/api';\n\nimport {FormEditorComponent} from '../../../../editor/components/editor/form-editor.component';\nimport {getI18nActionEditorTitleAsync} from '../../../helpers/i18n';\nimport {ActionInstanceStateEnum} from '../../../models/execution/action-instance-state.model';\nimport {ActionInstance} from '../../../models/execution/action-instance.model';\nimport {ActionExecutorService} from '../../../services/action-executor.service';\nimport {provideActionExecutor} from '../../../services/providers/provide-action-executor';\nimport {ViewContainer} from '../../../services/view-container.service';\nimport {ActionComponent} from '../../action/action.component';\n\n@Component({\n standalone: true,\n selector: 'mng-action-editor-injector-context',\n templateUrl: './action-editor-injector-context.component.html',\n styleUrls: ['action-editor-injector-context.component.scss'],\n imports: [ActionComponent, ProgressSpinnerModule, FormEditorComponent, ComponentDirective, ToolbarModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [provideActionExecutor()]\n})\nexport class ActionEditorInjectorContextComponent<Item = any, Service = any> implements OnInit, OnDestroy, IActionEditorComponent {\n protected readonly ActionActivationTriggerEnum = ActionActivationTriggerEnum;\n public readonly actionEditorSubmitTypeSubmit = ActionEditorSubmitTypeEnum.Submit;\n\n private readonly destroyRef = inject(DestroyRef);\n private readonly route = inject(ActivatedRoute);\n private readonly translate = inject(TranslateService);\n private readonly confirmationService = inject(ConfirmationService);\n private readonly dialogService = inject(DialogService);\n private readonly logger = inject(LoggerService).create('ActionEditorInjectorContextComponent');\n private readonly commonsService = inject(CommonsService);\n private readonly actionExecutor = inject(ActionExecutorService);\n private readonly viewContainer = inject(ViewContainer, {optional: true});\n\n // metadata and editor mode input\n @Input({required: true}) data!: ActionEditorInjectorContextInputData<Item, Service>;\n\n @Output('actionSubmit') public actionRunEventEmitter = new EventEmitter<Item | null | undefined>();\n @Output('actionCancel') public actionCancelEventEmitter = new EventEmitter<Item | null | undefined>();\n\n // content and view queries\n @ViewChild('submitButton') public submitButtonElementRef!: ElementRef;\n @ViewChild(FormEditorComponent) public formEditorCmp?: FormEditorComponent;\n\n public title: WritableSignal<string | undefined> = signal(undefined);\n public isFormDisabled = signal(false);\n\n // data\n public item: WritableSignal<Item | undefined> = signal(undefined);\n public itemId: WritableSignal<IdType | undefined> = signal(undefined);\n public actionData: WritableSignal<ActionData | undefined> = signal(undefined);\n\n // actions\n public toolbarLeftActions: WritableSignal<ActionDescriptorInst<Item, Service>[]> = signal([]);\n public toolbarRightActions: WritableSignal<ActionDescriptorInst<Item, Service>[]> = signal([]);\n public footerLeftActions: WritableSignal<ActionDescriptorInst<Item, Service>[]> = signal([]);\n public footerRightActions: WritableSignal<ActionDescriptorInst<Item, Service>[]> = signal([]);\n private instance?: ActionInstance<Item, Service>;\n private instanceStateSubscription?: Subscription;\n private instanceReactivationSubscription?: Subscription;\n private instanceSubmitFormItem?: Item | null;\n private instanceSubmitResult?: Item | null;\n\n public loading = signal(false);\n private fetchExecutionSubscription?: Subscription;\n public submitLoading = signal(false);\n private submitExecutionSubscription?: Subscription;\n\n constructor() {\n effect(() => {\n const title = this.title();\n requestAnimationFrame(() => {\n if (this.data.dialogConfig) {\n this.data.dialogConfig.header = title;\n }\n if (this.data.descriptor.activationTrigger === ActionActivationTriggerEnum.OnRoute) {\n this.commonsService.setPageTitle(title);\n }\n });\n });\n }\n\n ngOnInit() {\n if (this.data.actionInstance) {\n this.processActionInstance(this.data.actionInstance);\n }\n\n if (!this.data.dataProvider) {\n this.data.dataProvider = this.viewContainer?.dataProvider;\n }\n\n this.item.set(this.data.item);\n this.itemId.set(this.data.itemId);\n this.actionData.set(this.data.actionData);\n\n // arrange the sub-actions\n this.initializeSubActions();\n\n // notify executor to for activation to end\n this.processActionInstance(this.actionExecutor.onActionEditorInit(this.data.descriptor, this.instance, this));\n\n // set title\n this.updateTitle();\n\n // subscribe to events that could be triggered from outside from any reason\n this.viewContainer?.editorReset$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe({\n next: e => {\n if (e.fetch) {\n this.fetchItem();\n } else if (e.item) {\n this.formEditorCmp?.resetFormModel(e.item);\n } else if (e.fields) {\n for (const key in e.fields) {\n this.formEditorCmp?.resetFormFieldValue(key, e.fields[key]);\n }\n }\n }\n });\n\n this.viewContainer?.editorClose$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe({\n next: () => {\n this.cancel();\n }\n });\n }\n\n public ngOnDestroy() {\n this.fetchExecutionSubscription?.unsubscribe();\n this.submitExecutionSubscription?.unsubscribe();\n const instance = this.instance;\n this.unsetInstance();\n this.actionExecutor.onActionEditorDestroy(instance);\n }\n\n public onSubmit(event: FormEditorSubmitEvent<Item>) {\n if (!this.instance) {\n throw new CommonsInternalError(`Action is not instantiated in action editor for action ${this.data.descriptor.actionName}.`);\n }\n if (event.success) {\n this.instanceSubmitFormItem = event.formItem;\n\n // prepare parameters\n const actionParameters: ActionParameters<Item> = {\n itemId: this.itemId(),\n item: event.formItem,\n actionData: this.actionData()\n };\n if (this.data.descriptor.editorDescriptor.isLocalized) {\n actionParameters.locale = this.commonsService.appDataLanguageDefault;\n }\n\n const context = this.actionExecutor.prepareContextForEditorSubmit(\n this.data.descriptor,\n actionParameters,\n this.data.dataProvider,\n this.instance,\n this.data.previousActionInstance\n );\n\n this.submitExecutionSubscription?.unsubscribe();\n this.submitExecutionSubscription = context.execution$.pipe(take(1)).subscribe({\n next: res => {\n if (res && typeof res === 'object' && !this.itemId() && this.data.descriptor.model?.idProperty) {\n // to cover creation!\n this.updateItemId(res[this.data.descriptor.model.idProperty as keyof object]);\n }\n this.actionRunEventEmitter.next(res);\n this.instanceSubmitResult = res;\n }\n });\n\n this.actionExecutor.run(context);\n }\n }\n\n public cancel() {\n if (!this.instance) {\n this.logger.warn(`Action editor cannot be canceled for ${this.data.descriptor.actionName}, because no action instance is present`);\n return;\n }\n this.actionCancelEventEmitter.next(undefined);\n this.actionExecutor.finishAction(this.instance);\n }\n\n public updateItemId(itemId: IdType | undefined) {\n this.itemId.set(itemId);\n }\n\n public updateItem(item: Item | undefined) {\n this.item.set(item);\n }\n\n public triggerSubmit() {\n this.formEditorCmp?.submit();\n }\n\n private initializeSubActions() {\n for (const action of this.data.descriptor.editorActions) {\n if (action instanceof ActionEditorSubmitDescriptorInst) {\n if (typeof action.button.icon === 'undefined') {\n action.button.withIcon(action.submitType === ActionEditorSubmitTypeEnum.Submit ? 'pi pi-check' : 'pi pi-times');\n }\n if (typeof action.button.label === 'undefined') {\n action.button.withLabel(action.submitType === ActionEditorSubmitTypeEnum.Submit ? 'general.save' : this.data.isDialog ? 'general.close' : 'general.cancel');\n }\n\n // assign run operations\n action.withRunNotificationSuccess(undefined, undefined, false);\n if (action.submitType === ActionEditorSubmitTypeEnum.Submit) {\n action.withRunFunction(() => {\n this.triggerSubmit();\n return of(null);\n });\n } else {\n action.withRunFunction(() => {\n this.closeWithUnsavedChangesConfirmation();\n return of(null);\n });\n }\n }\n this.placeActionsOnPositions(action);\n }\n\n for (const action of this.viewContainer?.actions.filter(value => value.positionTableviewCategories?.includes(this.data.descriptor.tableviewCategory!)) ?? []) {\n this.placeActionsOnPositions(action);\n }\n\n this.toolbarRightActions.update(v => v.reverse());\n this.footerRightActions.update(v => v.reverse());\n }\n\n private fetchItem() {\n if (!this.instance) {\n throw new CommonsInternalError(`Action is not instantiated in action editor for action ${this.data.descriptor.actionName}.`);\n }\n\n const actionParameters: ActionParameters<Item> = {\n itemId: this.itemId(),\n item: this.item(),\n actionData: this.actionData()\n };\n if (this.data.descriptor.editorDescriptor.isLocalized) {\n if (this.data.descriptor.editorDescriptor.disabled) {\n actionParameters.locale = this.commonsService.appDataLanguage!;\n } else {\n actionParameters.locale = this.commonsService.appDataLanguageDefault;\n }\n }\n if (this.instance?.previousInstance instanceof ActionInstance && this.instance.previousInstance.context?.parameters.item) {\n actionParameters.formItem = this.instance.previousInstance.context.parameters.item;\n }\n if (typeof this.instance?.previousInstance?.result !== 'undefined') {\n actionParameters.submitResult = this.instance?.previousInstance?.result;\n }\n\n const context = this.actionExecutor.prepareContextForEditorFetch(\n this.data.descriptor,\n actionParameters,\n this.data.dataProvider,\n this.instance,\n this.data.previousActionInstance\n );\n this.fetchExecutionSubscription?.unsubscribe();\n this.fetchExecutionSubscription = context.execution$.pipe(take(1)).subscribe(res => {\n this.updateItem(res ?? undefined);\n this.updateTitle();\n });\n\n this.actionExecutor.run(context);\n }\n\n private updateTitle() {\n if (this.data.descriptor.editorTitle === null) {\n this.title.set(undefined);\n return;\n }\n getI18nActionEditorTitleAsync(this.translate, this.data.descriptor, this.item()).subscribe(t => {\n this.title.set(t ?? undefined);\n });\n }\n\n private placeActionsOnPositions(action: ActionDescriptorInst<any>) {\n switch (action.position) {\n case ActionPositionEnum.ToolbarLeft:\n this.toolbarLeftActions.update(v => [...v, action]);\n break;\n case ActionPositionEnum.ToolbarRight:\n this.toolbarRightActions.update(v => [...v, action]);\n break;\n case ActionPositionEnum.FooterLeft:\n this.footerLeftActions.update(v => [...v, action]);\n break;\n case ActionPositionEnum.FooterRight:\n this.footerRightActions.update(v => [...v, action]);\n break;\n }\n }\n\n private setEditorEnabled(isEnabled = true) {\n this.isFormDisabled.set(!isEnabled);\n }\n\n private processActionInstance(instance: IActionInstance<Item, Service>) {\n if (!(instance instanceof ActionInstance)) {\n throw new CommonsInternalError('Unknown type of action instance received', {details: instance});\n }\n if (!this.instance || this.instance.instanceLongName !== instance.instanceLongName) {\n this.unsetInstance();\n this.instance = instance;\n\n this.instanceStateSubscription = this.instance.state$.subscribe(s => {\n switch (s) {\n case ActionInstanceStateEnum.ActivationEnd:\n this.fetchItem();\n break;\n case ActionInstanceStateEnum.FetchStart:\n this.setEditorEnabled(false);\n this.loading.set(true);\n break;\n case ActionInstanceStateEnum.FetchError:\n this.loading.set(false);\n break;\n case ActionInstanceStateEnum.FetchEnd:\n this.setEditorEnabled(true);\n this.loading.set(false);\n break;\n case ActionInstanceStateEnum.RunStart:\n this.setEditorEnabled(false);\n this.submitLoading.set(true);\n break;\n case ActionInstanceStateEnum.RunEnd:\n case ActionInstanceStateEnum.RunError:\n this.setEditorEnabled(true);\n this.submitLoading.set(false);\n break;\n case ActionInstanceStateEnum.NextActionStart:\n if (this.instance?.nextActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.submitLoading.set(true);\n }\n break;\n case ActionInstanceStateEnum.NextActionEnd:\n if (this.instance?.nextActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.submitLoading.set(false);\n }\n break;\n case ActionInstanceStateEnum.ErrorActionStart:\n if (this.instance?.errorActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.submitLoading.set(true);\n }\n break;\n case ActionInstanceStateEnum.ErrorActionEnd:\n if (this.instance?.errorActionInstance?.action.type === ActionTypeEnum.Direct) {\n this.submitLoading.set(false);\n }\n break;\n case ActionInstanceStateEnum.FinishErrorFinal:\n this.setEditorEnabled(false);\n break;\n case ActionInstanceStateEnum.FinishSuccessFinal:\n case ActionInstanceStateEnum.FinishDismissedFinal:\n this.setEditorEnabled(false);\n this.unsetInstance();\n break;\n case ActionInstanceStateEnum.FinishSuccessReactivateFinal:\n this.setEditorEnabled(false);\n // should also unsetInstance, but let this for reactivationInstance$ listener to not interfere\n break;\n }\n });\n\n this.instanceReactivationSubscription = this.instance.reactivationInstance$.subscribe(newInstance => {\n this.processActionInstance(newInstance);\n });\n }\n }\n\n private unsetInstance() {\n this.instance = undefined;\n this.instanceStateSubscription?.unsubscribe();\n this.instanceReactivationSubscription?.unsubscribe();\n }\n\n @HostListener('window:beforeunload')\n private beforeWindowUnload() {\n if (this.data.isDialog && this.formEditorCmp?.form.pristine === false) {\n return confirm(this.translate.instant('mngEditor.unsavedChangesConfirmation.message'));\n }\n return true;\n }\n\n @HostListener('window:keydown.Escape')\n private onEscapePressed() {\n if (\n this.data.isDialog &&\n this.data.descriptor.activationTrigger === ActionActivationTriggerEnum.OnRoute &&\n this.instance?.activationDialogRef &&\n parseInt(this.dialogService.dialogComponentRefMap.get(this.instance?.activationDialogRef)?.instance.container?.style.zIndex ?? '') === ZIndexUtils.getCurrent()\n )\n this.closeWithUnsavedChangesConfirmation();\n }\n\n private showUnsavedChangesConfirmationDialog(callFromGuard: boolean): Observable<boolean> {\n const subject = new Subject<boolean>();\n this.confirmationService.confirm({\n header: this.translate.instant('mngEditor.unsavedChangesConfirmation.header'),\n message: this.translate.instant('mngEditor.unsavedChangesConfirmation.message'),\n acceptLabel: this.translate.instant('general.yes'),\n rejectLabel: this.translate.instant('general.no'),\n icon: 'pi pi-exclamation-triangle',\n accept: () => {\n if (!callFromGuard) {\n this.cancel();\n }\n subject.next(true);\n subject.complete();\n },\n reject: () => {\n subject.next(false);\n subject.complete();\n }\n });\n return subject.asObservable();\n }\n\n public closeWithUnsavedChangesConfirmation(callFromGuard = false): Observable<boolean> {\n if (this.formEditorCmp?.form.pristine === false && this.data.descriptor.unsavedChangesConfirmation) {\n return this.showUnsavedChangesConfirmationDialog(callFromGuard);\n } else {\n if (!callFromGuard) {\n this.cancel();\n }\n }\n\n return of(true);\n }\n}\n\nexport interface ActionEditorInjectorContextInputData<Item, Service> {\n descriptor: ActionEditorDescriptorInst<Item, Service>;\n isDialog: boolean;\n dialogConfig?: DynamicDialogConfig;\n itemId?: IdType;\n item?: Item;\n actionData?: ActionData;\n dataProvider?: IDataProvider<Item, Service>;\n actionInstance?: ActionInstance<Item, Service>;\n previousActionInstance?: IActionInstance<any, any>;\n}\n","@if (!data.isDialog && title()) {\n <h5>{{ title() }}</h5>\n}\n@if (data.isDialog && data.descriptor.activationTrigger === ActionActivationTriggerEnum.OnRoute) {\n <span class=\"p-dialog-header dialog-close-button-wrapper\">\n <button\n class=\"p-dialog-header-icon p-dialog-header-maximize p-link\"\n type=\"button\"\n (click)=\"closeWithUnsavedChangesConfirmation()\"\n (keydown.enter)=\"closeWithUnsavedChangesConfirmation()\">\n <span class=\"p-dialog-header-close-icon pi pi-times\"></span>\n </button>\n </span>\n}\n<div class=\"h-full flex flex-column\">\n @if (toolbarLeftActions().length > 0 || toolbarRightActions().length > 0) {\n <div class=\"flex-grow-1 mng-action-editor-toolbar-container\">\n <p-toolbar styleClass=\"mng-action-editor-toolbar\">\n <ng-template pTemplate=\"left\">\n @for (action of toolbarLeftActions(); track action) {\n <mng-action\n [action]=\"action\"\n [disabled]=\"submitLoading()\"\n [loading]=\"$any(action).submitType === actionEditorSubmitTypeSubmit ? submitLoading() : false\"\n [hostComponent]=\"this\"\n [item]=\"item()\"\n [itemId]=\"itemId()\"></mng-action>\n }\n </ng-template>\n <ng-template pTemplate=\"right\">\n @for (action of toolbarRightActions(); track action) {\n <mng-action\n [action]=\"action\"\n [disabled]=\"submitLoading()\"\n [loading]=\"$any(action).submitType === actionEditorSubmitTypeSubmit ? submitLoading() : false\"\n [hostComponent]=\"this\"\n [item]=\"item()\"\n [itemId]=\"itemId()\"></mng-action>\n }\n </ng-template>\n </p-toolbar>\n </div>\n }\n\n <div class=\"flex-grow-1 mng-action-editor-form-container\">\n @if (loading()) {\n <div class=\"text-center\">\n <p-progressSpinner [style]=\"{width: '3rem', height: '3rem'}\" strokeWidth=\"3\"></p-progressSpinner>\n </div>\n }\n @if (data.descriptor.editorDescriptor && !loading()) {\n <mng-form-editor [descriptor]=\"data.descriptor.editorDescriptor\" [item]=\"item()\" [isFormDisabled]=\"isFormDisabled()\" (formSubmit)=\"onSubmit($event)\"> </mng-form-editor>\n }\n </div>\n\n <div class=\"flex flex-row justify-content-between mng-action-editor-footer-container\">\n <div>\n @for (action of footerLeftActions(); track action) {\n <mng-action\n [action]=\"action\"\n [disabled]=\"submitLoading()\"\n [loading]=\"$any(action).submitType === actionEditorSubmitTypeSubmit ? submitLoading() : false\"\n [hostComponent]=\"this\"\n [item]=\"item()\"\n [itemId]=\"itemId()\"></mng-action>\n }\n </div>\n <div>\n @for (action of footerRightActions(); track action) {\n <mng-action\n [action]=\"action\"\n [disabled]=\"submitLoading()\"\n [loading]=\"$any(action).submitType === actionEditorSubmitTypeSubmit ? submitLoading() : false\"\n [hostComponent]=\"this\"\n [item]=\"item()\"\n [itemId]=\"itemId()\"></mng-action>\n }\n </div>\n </div>\n</div>\n","import {ChangeDetectionStrategy, Component, DestroyRef, EventEmitter, Injector, Input, OnChanges, OnInit, Output, SimpleChanges, Type, inject} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\n\nimport {DynamicDialogConfig} from 'primeng/dynamicdialog';\n\nimport {ActionData, CommonsInternalError, ComponentDirective, DialogKeydownHandlerDirective, IDataProvider, IdType} from '@mediusinc/mng-commons/core';\nimport {ActionEditorDescriptorInst} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ActionEditorDialogData} from '../../models/action-editor-dialog-data.model';\nimport {ActionEditorInjectorContextComponent, ActionEditorInjectorContextInputData} from './injector-context/action-editor-injector-context.component';\n\n@Component({\n standalone: true,\n selector: 'mng-action-editor',\n templateUrl: './action-editor.component.html',\n imports: [ComponentDirective],\n hostDirectives: [DialogKeydownHandlerDirective],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ActionEditorComponent<T = any, S = any> implements OnInit, OnChanges {\n public readonly injContextCmpType = ActionEditorInjectorContextComponent as Type<any>;\n\n public injector = inject(Injector);\n public readonly destroyRef = inject(DestroyRef);\n private readonly dialogConfig = inject(DynamicDialogConfig, {optional: true});\n\n // metadata and editor mode input\n @Input({required: true}) public action!: ActionEditorDescriptorInst<T, S>;\n\n // data source inputs\n @Input('itemId') public itemIdInput?: IdType;\n @Input('item') public itemInput?: T;\n @Input() public actionData?: ActionData;\n @Input() public dataProvider?: IDataProvider<T, S>;\n\n @Output('actionSubmit') public actionRunEventEmitter = new EventEmitter<T | null | undefined>();\n @Output('actionCancel') public actionCancelEventEmitter = new EventEmitter<T | null | undefined>();\n\n private actionEditorWInjContextCmp?: ActionEditorInjectorContextComponent<T, S>;\n public actionEditorWInjContextInputData?: ActionEditorInjectorContextInputData<T, S>;\n\n private isDialog = false;\n\n public get actionEditor() {\n return this.actionEditorWInjContextCmp;\n }\n\n public get formEditorCmp() {\n return this.actionEditor?.formEditorCmp;\n }\n\n ngOnInit() {\n let dialogData: ActionEditorDialogData<T, S> | undefined = undefined;\n\n if (this.dialogConfig?.data) {\n dialogData = this.dialogConfig.data as ActionEditorDialogData<T, S>;\n this.isDialog = true;\n\n // set injector from provided one\n this.injector = dialogData.injector;\n }\n\n this.actionEditorWInjContextInputData = {\n isDialog: this.isDialog,\n dialogConfig: this.dialogConfig ?? undefined,\n descriptor: dialogData?.action.descriptor ?? this.action,\n actionInstance: dialogData?.action.instance,\n previousActionInstance: dialogData?.action.previousInstance,\n itemId: dialogData?.action.instance.activationParameters?.itemId ?? this.itemIdInput,\n item: dialogData?.action.instance.activationParameters?.item ?? this.itemInput,\n actionData: dialogData?.action.instance.activationParameters?.actionData ?? this.actionData,\n dataProvider: this.dataProvider\n };\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['itemIdInput'] && !changes['itemIdInput'].firstChange) {\n this.actionEditorWInjContextCmp?.updateItemId(this.itemIdInput);\n }\n if (changes['itemInput'] && !changes['itemInput'].firstChange) {\n this.actionEditorWInjContextCmp?.updateItem(this.itemInput);\n }\n }\n\n public onActionEditorWInjContextCmp(cmp: ActionEditorInjectorContextComponent<T, S>) {\n if (this.actionEditorWInjContextCmp) {\n throw new CommonsInternalError('Action editor injection context component is already initialized');\n }\n this.actionEditorWInjContextCmp = cmp;\n this.actionEditorWInjContextCmp.actionCancelEventEmitter.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(action => {\n this.actionCancelEventEmitter.emit(action);\n });\n this.actionEditorWInjContextCmp.actionRunEventEmitter.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(action => {\n this.actionRunEventEmitter.emit(action);\n });\n }\n\n public cancel() {\n this.actionEditorWInjContextCmp?.cancel();\n }\n\n public triggerSubmit() {\n this.actionEditorWInjContextCmp?.triggerSubmit();\n }\n}\n","<div\n [mngComponent]=\"injContextCmpType\"\n [inputs]=\"{\n data: actionEditorWInjContextInputData\n }\"\n [nodeInjector]=\"injector\"\n (instanceCreated)=\"onActionEditorWInjContextCmp($event)\"></div>\n","import {Component, EventEmitter, Input, Output, ViewChild, inject} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\n\nimport {of} from 'rxjs';\n\nimport {ActionData, ActionParameters, CommonsService, IdType} from '@mediusinc/mng-commons/core';\nimport {DropdownComponent} from '@mediusinc/mng-commons/form';\nimport {LookupDataProvider, LookupDataProviderInst} from '@mediusinc/mng-commons/form/api';\nimport {ActionDescriptorInst, IActionComponent} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ViewContainer} from '../../services/view-container.service';\n\n@Component({\n standalone: true,\n selector: 'mng-data-language-dropdown',\n imports: [DropdownComponent, FormsModule],\n templateUrl: 'data-language-dropdown.component.html'\n})\nexport class DataLanguageDropdownComponent<T = any> implements IActionComponent<T> {\n private readonly viewContainer = inject(ViewContainer, {optional: true});\n\n @Input({required: true}) public action!: ActionDescriptorInst<T>;\n @Input({required: true}) public actionData!: ActionData;\n @Input({required: true}) public item!: T;\n @Input({required: true}) public itemId!: IdType;\n @Input({required: true}) public enabled!: boolean;\n @Input({required: true}) public loading!: boolean;\n\n @Output() public triggerActionEventEmitter: EventEmitter<ActionParameters<T>> = new EventEmitter<ActionParameters<T>>();\n @ViewChild(DropdownComponent) private dropdown?: DropdownComponent;\n\n // dropdown properties\n public selectionItemsDataProvider: LookupDataProviderInst<string>;\n\n constructor(public commons: CommonsService) {\n this.selectionItemsDataProvider = LookupDataProvider.create<string>().withLookup(() => of(commons.appDataLanguages));\n }\n\n public updateDataLanguage(dataLang: string): void {\n this.commons.appDataLanguage = dataLang;\n this.viewContainer?.reloadTable({});\n }\n}\n","<mng-dropdown [dataProvider]=\"selectionItemsDataProvider\" [ngModel]=\"commons.appDataLanguage\" [showClear]=\"false\" (valueChange)=\"updateDataLanguage($event)\"></mng-dropdown>\n","import {ChangeDetectionStrategy, Component, OnDestroy, OnInit, Optional} from '@angular/core';\nimport {ActivatedRoute, NavigationCancel, NavigationEnd, NavigationError, NavigationSkipped, NavigationStart, Params, Router} from '@angular/router';\n\nimport {Observable, Subscription, of} from 'rxjs';\n\nimport {ActionData, ActionParameters, CommonsInternalError} from '@mediusinc/mng-commons/core';\nimport {ActionActivationTriggerEnum, ActionDescriptorInst, ActionTypeEnum, IActionInstance} from '@mediusinc/mng-commons/tableview/api';\n\nimport {CanComponentDeactivate} from '../../models/can-component-deactivate.model';\nimport {ActionInstanceStateEnum} from '../../models/execution/action-instance-state.model';\nimport {ActionInstance} from '../../models/execution/action-instance.model';\nimport {ActionExecutorService} from '../../services/action-executor.service';\nimport {provideActionExecutor} from '../../services/providers/provide-action-executor';\nimport {ViewContainer} from '../../services/view-container.service';\n\n@Component({\n standalone: true,\n selector: 'mng-action-route',\n templateUrl: './action-route.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [provideActionExecutor()]\n})\nexport class ActionRouteComponent<Item, Service> implements OnInit, OnDestroy, CanComponentDeactivate {\n public cmpId: string = Math.random().toString(36).substring(2);\n private actions: Array<ActionDescriptorInst<any>> = [];\n private instance?: ActionInstance<Item, Service>;\n private instanceStateSubscription?: Subscription;\n private instanceReactivationSubscription?: Subscription;\n\n private subscriptions: Array<Subscription> = [];\n private isRouterNavigationInProgress = false;\n\n constructor(\n private router: Router,\n private route: ActivatedRoute,\n private actionExecutor: ActionExecutorService,\n @Optional() private viewContainer: ViewContainer<Item, Service> | null\n ) {}\n\n public ngOnInit() {\n this.actions = this.viewContainer?.actions.filter(a => a.activationTrigger === ActionActivationTriggerEnum.OnRoute) ?? [];\n this.subscriptions.push(\n this.route.params.subscribe(p => {\n const action = this.findActionForRoute(p) ?? undefined;\n if (action) {\n this.activateAction(action, p, this.route.snapshot.queryParams);\n }\n })\n );\n this.subscriptions.push(\n this.router.events.subscribe(e => {\n if (e instanceof NavigationStart) {\n this.isRouterNavigationInProgress = true;\n } else if (e instanceof NavigationEnd || e instanceof NavigationCancel || e instanceof NavigationError || e instanceof NavigationSkipped) {\n this.isRouterNavigationInProgress = false;\n }\n })\n );\n }\n\n public ngOnDestroy() {\n const instance = this.instance;\n this.unsetInstance();\n this.actionExecutor.onActionRouteDestroy(instance);\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n private activateAction(action: ActionDescriptorInst<any>, p: Params, qp: Params) {\n const itemId = p['itemId'];\n const actionData: ActionData = {};\n for (const key in p) {\n if (key === 'itemId') {\n continue;\n }\n actionData[key] = p[key];\n }\n for (const key in qp) {\n actionData[key] = p[key];\n }\n\n this.processActionInstance(\n this.actionExecutor.activateAction(action, <ActionParameters<Item>>{\n itemId: itemId,\n actionData: actionData,\n sourceComponent: this,\n route: this.route\n })\n );\n }\n\n private untriggerAction() {\n if (!this.instance || this.isRouterNavigationInProgress) {\n return;\n }\n const instance = this.instance;\n this.unsetInstance();\n this.actionExecutor.finishActionRouteUntrigger(instance);\n }\n\n private findActionForRoute(params: Params): ActionDescriptorInst<any> | null {\n const urlSegments = this.route.snapshot.url;\n for (const action of this.actions) {\n let actionUrl = action.routeUrl ?? '';\n if (actionUrl.startsWith('/')) {\n actionUrl = actionUrl.substring(1);\n }\n const actionUrlSegments = actionUrl.split('/');\n if (actionUrlSegments.length !== urlSegments.length) {\n continue;\n }\n let isMatch = true;\n for (let i = 0; i < actionUrlSegments.length; i++) {\n if (actionUrlSegments[i].startsWith(':')) {\n const paramName = actionUrlSegments[i].substring(1);\n if (!params[paramName]) {\n isMatch = false;\n break;\n }\n } else if (actionUrlSegments[i] !== urlSegments[i].path) {\n isMatch = false;\n break;\n }\n }\n if (isMatch) {\n return action;\n }\n }\n return null;\n }\n\n private processActionInstance(instance: IActionInstance<Item, Service>) {\n if (!(instance instanceof ActionInstance)) {\n throw new CommonsInternalError('Unknown type of action instance received', {details: instance});\n }\n\n if (!this.instance || this.instance.instanceLongName !== instance.instanceLongName) {\n this.unsetInstance();\n this.instance = instance;\n\n this.instanceStateSubscription = this.instance.state$.subscribe(s => {\n switch (s) {\n case ActionInstanceStateEnum.FinishSuccessReactivateFinal:\n this.viewContainer?.reloadTable(); // reload only if no error in action and\n break;\n case ActionInstanceStateEnum.FinishSuccessFinal:\n this.viewContainer?.reloadTable(); // reload only if no error in action and\n this.untriggerAction();\n break;\n case ActionInstanceStateEnum.FinishDismissedFinal:\n this.untriggerAction();\n break;\n }\n });\n\n this.instanceReactivationSubscription = this.instance.reactivationInstance$.subscribe(newInstance => {\n this.processActionInstance(newInstance);\n });\n }\n }\n\n public canDeactivate(): Observable<boolean> {\n if (this.instance?.action.type === ActionTypeEnum.Editor && this.instance.activationEditorComponentRef) {\n return this.instance.activationEditorComponentRef.closeWithUnsavedChangesConfirmation(true);\n }\n\n return of(true);\n }\n\n private unsetInstance() {\n this.instance = undefined;\n this.instanceStateSubscription?.unsubscribe();\n this.instanceReactivationSubscription?.unsubscribe();\n }\n}\n","","import {StyleSizeEnum, Styles} from '@mediusinc/mng-commons/core';\nimport {TableDescriptorInst, TableSizeEnum} from '@mediusinc/mng-commons/table/api';\nimport {ActionDescriptorInst} from '@mediusinc/mng-commons/tableview/api';\n\nexport function calculateTableColumnActionWidth(table: TableDescriptorInst<unknown>, actions: Array<ActionDescriptorInst<unknown>>): number {\n const buttonsWidth = actions.reduce((acc, action) => acc + getActionButtonRoundedWidth(action) + 2 * Styles.ACTION_BUTTON_MARGIN_X, 0);\n const tablePadding = getTableCellPaddingX(table);\n return buttonsWidth + 2 * tablePadding;\n}\n\nexport function getTableCellPaddingX(table: TableDescriptorInst<unknown>): number {\n switch (table.size) {\n case TableSizeEnum.Small:\n return Styles.TABLE_CELL_PADDING_X_SM;\n case TableSizeEnum.Large:\n return Styles.TABLE_CELL_PADDING_X_LG;\n default:\n return Styles.TABLE_CELL_PADDING_X;\n }\n}\n\nexport function getActionButtonRoundedWidth(action: ActionDescriptorInst<any>): number {\n switch (action.button.styleClass.size) {\n case StyleSizeEnum.ExtraSmall:\n return Styles.BUTTON_ROUNDED_WIDTH_XS;\n case StyleSizeEnum.Small:\n return Styles.BUTTON_ROUNDED_WIDTH_SM;\n case StyleSizeEnum.Large:\n case StyleSizeEnum.ExtraLarge:\n return Styles.BUTTON_ROUNDED_WIDTH_LG;\n case StyleSizeEnum.Normal:\n default:\n return Styles.BUTTON_ROUNDED_WIDTH;\n }\n}\n","import {NgTemplateOutlet} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n QueryList,\n Signal,\n TemplateRef,\n Type,\n ViewChild,\n ViewChildren,\n WritableSignal,\n computed,\n contentChildren,\n inject,\n signal\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {ActivatedRoute} from '@angular/router';\n\nimport {Observable, isObservable, of} from 'rxjs';\n\nimport {ActionParameters, ComponentDirective, DataListResult, TemplateDirective, boolean$Attribute, findTemplateByName} from '@mediusinc/mng-commons/core';\nimport {TableComponent} from '@mediusinc/mng-commons/table';\nimport {ITableDataProvider, TableCellClickEvent, TableDescriptorInst, TableLoadEvent} from '@mediusinc/mng-commons/table/api';\nimport {ActionDescriptorInst, ActionPositionEnum} from '@mediusinc/mng-commons/tableview/api';\n\nimport {calculateTableColumnActionWidth} from '../../helpers/styles';\nimport {ActionInstance} from '../../models/execution/action-instance.model';\nimport {ActionExecutorService} from '../../services/action-executor.service';\nimport {provideActionExecutor} from '../../services/providers/provide-action-executor';\nimport {ViewContainer} from '../../services/view-container.service';\nimport {ActionComponent} from '../action/action.component';\n\n@Component({\n standalone: true,\n selector: 'mng-action-table',\n templateUrl: './action-table.component.html',\n imports: [TableComponent, ActionComponent, TemplateDirective, NgTemplateOutlet],\n providers: [provideActionExecutor()],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ActionTableComponent<Item = any, Service = undefined, Sorts = keyof Item, Filters extends keyof any = keyof Item> implements OnInit {\n private readonly route = inject(ActivatedRoute);\n private readonly actionExecutor = inject(ActionExecutorService);\n private readonly viewContainer = inject(ViewContainer<Item, Service>, {optional: true});\n\n // metadata input\n @Input({required: true}) public descriptor!: TableDescriptorInst<Item, Sorts, Filters>;\n\n // data source inputs\n @Input() public items?: Observable<Array<Item>> | Array<Item>;\n @Input({transform: (value: unknown) => (isObservable(value) ? (value as Observable<DataListResult<Item>>) : of(value as DataListResult<Item>))})\n public result?: Observable<DataListResult<Item>>;\n @Input({transform: boolean$Attribute}) public loading?: Observable<boolean>;\n @Input() public dataProvider?: ITableDataProvider<Item, Service, Sorts, Filters>;\n @Input() public useQueryParams = false;\n\n // extra features input\n @Input() public selectionMode: 'single' | 'multiple' = 'multiple';\n @Input() public selectionEnabled = false;\n @Input() public globalFilterFields?: string[];\n\n // actions\n @Input() public actions: Array<ActionDescriptorInst<any>> = []; // can be anything\n\n // component inputs\n @Input() public captionComponent?: Type<any>;\n @Input() public columnActionComponent?: Type<any>;\n @Input() public columnActionMinWidth?: number;\n\n // event outputs\n @Output('tableLoad') public loadEventEmitter = new EventEmitter<TableLoadEvent>();\n @Output('selectionChange') public selectionChangeEventEmitter = new EventEmitter<Array<Item>>();\n @Output('captionComponentInstance') public captionCmpInstEventEmitter = new EventEmitter<any>();\n @Output('columnActionComponentInstance') public columnActionCmpInstEventEmitter = new EventEmitter<any>();\n\n // content and view queries\n public templates = contentChildren(TemplateDirective);\n @ViewChildren(ComponentDirective) public components!: QueryList<ComponentDirective<any>>;\n @ViewChild(TableComponent) public table!: TableComponent;\n\n // templates\n public captionTemplate: Signal<TemplateRef<any> | null> = computed(() => findTemplateByName([...this.templates()], 'caption'));\n public footerTemplate: Signal<TemplateRef<any> | null> = computed(() => findTemplateByName([...this.templates()], 'footer'));\n public rowExpandTemplate: Signal<TemplateRef<any> | null> = computed(() => findTemplateByName([...this.templates()], 'rowExpandContent'));\n\n // actions\n public rowClickActions: WritableSignal<ActionDescriptorInst<Item>[]> = signal([]);\n public rowInlineActions: WritableSignal<ActionDescriptorInst<Item>[]> = signal([]);\n\n constructor() {\n this.viewContainer?.tableReload$.pipe(takeUntilDestroyed()).subscribe(e => this.reload(e.emitEvent, e.resetParams));\n }\n\n public ngOnInit() {\n // process actions\n const rowClickActions: ActionDescriptorInst<Item>[] = [];\n const rowInlineActions: ActionDescriptorInst<Item>[] = [];\n for (const action of this.actions) {\n switch (action.position) {\n case ActionPositionEnum.RowClick:\n rowClickActions.push(action);\n break;\n case ActionPositionEnum.RowInline:\n rowInlineActions.push(action);\n break;\n }\n }\n this.rowClickActions.set(rowClickActions);\n this.rowInlineActions.set(rowInlineActions);\n\n // define all styles\n if (this.descriptor && !this.columnActionMinWidth) {\n this.columnActionMinWidth = calculateTableColumnActionWidth(this.descriptor as TableDescriptorInst<any>, this.rowInlineActions() as Array<ActionDescriptorInst<any>>);\n }\n }\n\n public reload(emitEvent = false, resetParams = false) {\n this.table.reload(emitEvent, resetParams);\n }\n\n public onCellClick(event: TableCellClickEvent<Item>) {\n if (this.rowClickActions().length) {\n for (const action of this.rowClickActions()) {\n const idProp = this.descriptor?.trackProperty ?? action?.model?.idProperty;\n const parameters: ActionParameters<Item> = {\n itemId: idProp ? event.rowItem[idProp as keyof object] : undefined,\n item: event.rowItem,\n actionData: {\n itemIndex: event.rowIndex\n },\n route: this.route,\n sourceComponent: this\n };\n this.actionExecutor.triggerAction(action, parameters, true);\n }\n }\n }\n\n public onSelectionChange(items: Array<Item>) {\n this.selectionChangeEventEmitter.next(items);\n }\n\n public onActionFinish(runResult: ActionInstance<Item, Service>) {\n if (!runResult.error) {\n this.reload();\n }\n }\n}\n","<mng-table\n [descriptor]=\"descriptor\"\n [items]=\"items\"\n [result]=\"result\"\n [loading]=\"loading\"\n [dataProvider]=\"dataProvider\"\n [useQueryParams]=\"useQueryParams\"\n [selectionMode]=\"selectionMode\"\n [selectionEnabled]=\"selectionEnabled\"\n [globalFilterFields]=\"globalFilterFields\"\n [captionComponent]=\"captionComponent\"\n [columnCustomLastComponent]=\"columnActionComponent\"\n [columnLastMinWidth]=\"columnActionMinWidth\"\n (tableLoad)=\"loadEventEmitter.next($event)\"\n (cellClick)=\"onCellClick($event)\"\n (selectionChange)=\"onSelectionChange($event)\"\n (captionComponentInstance)=\"captionCmpInstEventEmitter.next($event)\"\n (columnCustomLastComponentInstance)=\"columnActionCmpInstEventEmitter.next($event)\">\n @if (!columnActionComponent && rowInlineActions().length > 0) {\n <ng-template mngTemplate=\"columnCustomLast\" let-item=\"rowItem\" let-idx=\"rowIndex\">\n @for (action of rowInlineActions(); track action.actionNameLong) {\n <mng-action\n [action]=\"action\"\n [item]=\"item\"\n [hostComponent]=\"this\"\n [itemId]=\"descriptor.model.idProperty ? item[descriptor.model.idProperty!] : null\"\n [actionData]=\"{itemIndex: idx}\"\n (finish)=\"onActionFinish($event)\">\n </mng-action>\n }\n </ng-template>\n }\n @if (captionTemplate() && !captionComponent) {\n <ng-template mngTemplate=\"caption\">\n <ng-container *ngTemplateOutlet=\"captionTemplate()\"></ng-container>\n </ng-template>\n }\n @if (rowExpandTemplate()) {\n <ng-template mngTemplate=\"rowExpandContent\" let-item=\"rowItem\">\n <ng-container *ngTemplateOutlet=\"rowExpandTemplate(); context: {rowItem: item}\"></ng-container>\n </ng-template>\n }\n @if (footerTemplate()) {\n <ng-template mngTemplate=\"footer\" let-data=\"data\" let-totalCount=\"totalCount\">\n <ng-container *ngTemplateOutlet=\"footerTemplate(); context: {data, totalCount}\"></ng-container>\n </ng-template>\n }\n</mng-table>\n","import {CanDeactivateFn} from '@angular/router';\n\nimport {CanComponentDeactivate} from '../models/can-component-deactivate.model';\n\nexport const unsavedChangesGuard: CanDeactivateFn<CanComponentDeactivate> = (component: CanComponentDeactivate) => {\n return component.canDeactivate();\n};\n","import {Injector, Provider} from '@angular/core';\n\nimport {ViewContainer} from '../view-container.service';\n\nexport function provideViewContainer(provideParentIfPresent = true): Provider {\n return {\n provide: ViewContainer,\n useFactory: (injector: Injector) => {\n if (provideParentIfPresent) {\n return injector.get(ViewContainer, null, {optional: true, skipSelf: true}) ?? new ViewContainer();\n } else {\n return new ViewContainer();\n }\n },\n deps: [Injector]\n };\n}\n","import {Injectable} from '@angular/core';\n\nimport {Observable} from 'rxjs';\n\nimport {DataListResult, Nullable} from '@mediusinc/mng-commons/core';\nimport {\n DataProviderExecutor,\n IActionContext,\n runCreateFromDataProvider,\n runDeleteFromDataProvider,\n runFetchFromDataProvider,\n runFnFromDataProviderOrFallback,\n runGetAllFromDataProvider,\n runUpdateFromDataProvider\n} from '@mediusinc/mng-commons/tableview/api';\n\n@Injectable()\nexport class DefaultDataProviderExecutor extends DataProviderExecutor {\n public override runGetAll<Item, Service>(ctx: IActionContext<Item, Service>): Observable<DataListResult<Item>> | null;\n public override runGetAll<Item, Service>(ctx: IActionContext<Item, Service>, fallback: Observable<DataListResult<Item>>): Observable<DataListResult<Item>>;\n public override runGetAll<Item, Service>(ctx: IActionContext<Item, Service>, fallback: undefined): Observable<DataListResult<Item>> | null;\n public override runGetAll<Item, Service>(ctx: IActionContext<Item, Service>, fallback?: Observable<DataListResult<Item>>): Observable<DataListResult<Item>> | null {\n return fallback ? runFnFromDataProviderOrFallback(ctx, runGetAllFromDataProvider, fallback) : runGetAllFromDataProvider(ctx);\n }\n\n public override runFetch<Item, Service>(ctx: IActionContext<Item, Service>): Observable<Item> | null;\n public override runFetch<Item, Service>(ctx: IActionContext<Item, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public override runFetch<Item, Service>(ctx: IActionContext<Item, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public override runFetch<Item, Service>(ctx: IActionContext<Item, Service>, fallback?: Observable<Nullable<Item>>): Observable<Nullable<Item>> | null {\n return fallback ? runFnFromDataProviderOrFallback(ctx, runFetchFromDataProvider, fallback) : runFetchFromDataProvider(ctx);\n }\n\n public override runCreate<Item, Service>(ctx: IActionContext<Item, Service>): Observable<Item> | null;\n public override runCreate<Item, Service>(ctx: IActionContext<Item, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public override runCreate<Item, Service>(ctx: IActionContext<Item, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public override runCreate<Item, Service>(ctx: IActionContext<Item, Service>, fallback?: Observable<Nullable<Item>>): Observable<Nullable<Item>> | null {\n return fallback ? runFnFromDataProviderOrFallback(ctx, runCreateFromDataProvider, fallback) : runCreateFromDataProvider(ctx);\n }\n\n public override runUpdate<Item, Service>(ctx: IActionContext<Item, Service>): Observable<Item> | null;\n public override runUpdate<Item, Service>(ctx: IActionContext<Item, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public override runUpdate<Item, Service>(ctx: IActionContext<Item, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public override runUpdate<Item, Service>(ctx: IActionContext<Item, Service>, fallback?: Observable<Nullable<Item>>): Observable<Nullable<Item>> | null {\n return fallback ? runFnFromDataProviderOrFallback(ctx, runUpdateFromDataProvider, fallback) : runUpdateFromDataProvider(ctx);\n }\n\n public override runDelete<Item, Service>(ctx: IActionContext<Item, Service>): Observable<Nullable<Item>> | null;\n public override runDelete<Item, Service>(ctx: IActionContext<Item, Service>, fallback: Observable<Nullable<Item>>): Observable<Nullable<Item>>;\n public override runDelete<Item, Service>(ctx: IActionContext<Item, Service>, fallback: undefined): Observable<Nullable<Item>> | null;\n public override runDelete<Item, Service>(ctx: IActionContext<Item, Service>, fallback?: Observable<Nullable<Item>>): Observable<Nullable<Item>> | null {\n return fallback ? runFnFromDataProviderOrFallback(ctx, runDeleteFromDataProvider, fallback) : runDeleteFromDataProvider(ctx);\n }\n}\n","import {JsonPipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, OnInit} from '@angular/core';\n\nimport {FieldType} from '@ngx-formly/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ButtonModule} from 'primeng/button';\nimport {MessageModule} from 'primeng/message';\nimport {RippleModule} from 'primeng/ripple';\nimport {TooltipModule} from 'primeng/tooltip';\nimport {isObservable} from 'rxjs';\n\nimport {CommonsFormlyFieldConfig, FieldActionDescriptor, FieldActionResult, FieldActionResultMessage, IFormEditorComponent} from '@mediusinc/mng-commons/tableview/api';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-action',\n templateUrl: './formly-field-action.component.html',\n imports: [ButtonModule, RippleModule, TranslateModule, TooltipModule, JsonPipe, MessageModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldActionComponent<ET> extends FieldType<CommonsFormlyFieldConfig> implements OnInit {\n public descriptor!: FieldActionDescriptor<ET>;\n\n public buttonClass = 'p-button-primary';\n\n public actionMessage?: FieldActionResultMessage;\n\n ngOnInit(): void {\n this.descriptor = this.props.descriptor as FieldActionDescriptor<ET>;\n this.props.fieldComponent = this;\n this.buttonClass = this.descriptor.button.styleClass.build();\n }\n\n onClick() {\n this.actionMessage = undefined;\n\n const result = this.descriptor.runFunction?.({\n descriptor: this.descriptor,\n formEditorComponent: this.props.formEditorComponent as IFormEditorComponent<ET>,\n formly: {\n model: this.model,\n formControl: this.formControl,\n form: this.form,\n formState: this.formState,\n options: this.options,\n props: this.props\n }\n });\n\n if (result) {\n if (isObservable(result)) {\n result.subscribe(res => this.processResult(res));\n } else {\n this.processResult(result);\n }\n }\n }\n\n private processResult(res: FieldActionResult) {\n if (res.message) {\n this.actionMessage = res.message;\n }\n }\n}\n","<div class=\"flex\">\n <button\n type=\"button\"\n pButton\n pRipple\n [icon]=\"$any(descriptor.button.icon)\"\n [label]=\"$any(descriptor.button.label === null ? null : descriptor.button.label ?? props!.label) | translate\"\n [pTooltip]=\"$any(descriptor.button.tooltip) | translate\"\n [disabled]=\"formControl.disabled\"\n (click)=\"onClick()\"\n [class]=\"buttonClass + (actionMessage ? ' mr-2' : '')\"></button>\n @if (actionMessage) {\n <p-message [text]=\"actionMessage.content\" [severity]=\"actionMessage.severity ?? 'success'\"></p-message>\n }\n</div>\n","import {AfterViewInit, ChangeDetectionStrategy, Component, OnDestroy, OnInit} from '@angular/core';\nimport {FormControl, ReactiveFormsModule} from '@angular/forms';\n\nimport {FieldType, FormlyModule} from '@ngx-formly/core';\nimport {Subscription, distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {AutocompleteComponent} from '@mediusinc/mng-commons/form';\nimport {CommonsFormlyFieldConfig, FieldLookupDescriptor, FormFieldEventComponentSubtype, FormFieldEventTypeEnum} from '@mediusinc/mng-commons/tableview/api';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-autocomplete',\n templateUrl: './formly-field-autocomplete.component.html',\n imports: [AutocompleteComponent, ReactiveFormsModule, FormlyModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldAutocompleteComponent<T, ET> extends FieldType<CommonsFormlyFieldConfig> implements OnInit, AfterViewInit, OnDestroy {\n public aFormControl!: FormControl;\n public descriptor!: FieldLookupDescriptor<T, ET>;\n\n private subscriptions: Subscription[] = [];\n\n public ngOnInit() {\n this.aFormControl = this.formControl as FormControl;\n this.descriptor = this.props.descriptor as FieldLookupDescriptor<T, ET>;\n this.props.fieldComponent = this;\n\n // emit lifecycle event\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, FormlyFieldAutocompleteComponent, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_INIT\n });\n\n const subscription = this.aFormControl.valueChanges.pipe(startWith(this.aFormControl.value), distinctUntilChanged()).subscribe(v => {\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ValueChange, FormlyFieldAutocompleteComponent, this, {\n value: v\n });\n\n if (this.props['onValueChange']) {\n this.props['onValueChange'](this.field, v);\n }\n });\n this.subscriptions.push(subscription);\n }\n\n public ngAfterViewInit() {\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, FormlyFieldAutocompleteComponent, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_VIEW_INIT\n });\n }\n\n public ngOnDestroy() {\n // warning: formly calls on destroy before on init\n\n this.subscriptions.forEach(value => value.unsubscribe());\n\n // emit lifecycle event\n this.descriptor?.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, FormlyFieldAutocompleteComponent, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n}\n","<mng-autocomplete\n [id]=\"$any(key)\"\n [formControl]=\"aFormControl\"\n [formlyAttributes]=\"field\"\n [dataProvider]=\"descriptor.dataProvider\"\n [optionsTrackProperty]=\"descriptor.optionsTrackProperty\"\n [optionsLabelProperty]=\"descriptor.optionsLabelProperty\"\n [optionsValueProperty]=\"descriptor.optionsValueProperty\"\n [className]=\"descriptor.inputClassName\"\n [showClear]=\"!props.required\"\n [selectFirst]=\"descriptor.autocompleteSelectFirst ?? false\"\n [autoClear]=\"descriptor.autocompleteAutoClear ?? false\"\n [openOnFocus]=\"descriptor.autocompleteAutoClear ?? true\"\n [inlineSearch]=\"descriptor.autocompleteInlineSearch ?? false\">\n</mng-autocomplete>\n","import {ChangeDetectionStrategy, Component, OnInit} from '@angular/core';\n\nimport {FieldType} from '@ngx-formly/core';\n\nimport {ComponentDirective} from '@mediusinc/mng-commons/core';\nimport {CommonsFormlyFieldConfig, FieldInputDescriptor} from '@mediusinc/mng-commons/tableview/api';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-custom',\n template: ` <ng-container [mngComponent]=\"descriptor.customComponentType!\" [inputs]=\"inputs\"></ng-container> `,\n imports: [ComponentDirective],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldCustomComponent<ET> extends FieldType<CommonsFormlyFieldConfig> implements OnInit {\n public descriptor!: FieldInputDescriptor<ET>;\n\n public inputs: Record<string, any> = {};\n\n ngOnInit() {\n this.descriptor = this.props.descriptor as FieldInputDescriptor<ET>;\n this.inputs = {\n field: this.field,\n model: this.model,\n form: this.form,\n options: this.options,\n key: this.key,\n formControl: this.formControl,\n props: this.props,\n showError: this.showError,\n id: this.id,\n formState: this.formState,\n ...this.descriptor.customComponentInputs\n };\n }\n}\n","import {ChangeDetectionStrategy, Component, OnDestroy, OnInit} from '@angular/core';\nimport {FormControl, ReactiveFormsModule} from '@angular/forms';\n\nimport {FieldType, FormlyModule} from '@ngx-formly/core';\nimport {Subscription, distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {DropdownComponent} from '@mediusinc/mng-commons/form';\nimport {CommonsFormlyFieldConfig, FieldLookupDescriptor, FormFieldEventComponentSubtype, FormFieldEventTypeEnum} from '@mediusinc/mng-commons/tableview/api';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-dropdown',\n templateUrl: './formly-field-dropdown.component.html',\n imports: [DropdownComponent, ReactiveFormsModule, FormlyModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldDropdownComponent<T, ET> extends FieldType<CommonsFormlyFieldConfig> implements OnInit, OnDestroy {\n public dFormControl!: FormControl;\n public descriptor!: FieldLookupDescriptor<T, ET>;\n\n private subscriptions: Subscription[] = [];\n\n public ngOnInit() {\n this.dFormControl = this.formControl as FormControl;\n this.descriptor = this.props.descriptor as FieldLookupDescriptor<T, ET>;\n this.props.fieldComponent = this;\n\n // emit lifecycle event\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, FormlyFieldDropdownComponent, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_INIT\n });\n\n const subscription = this.dFormControl.valueChanges.pipe(startWith(this.dFormControl.value), distinctUntilChanged()).subscribe(v => {\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ValueChange, FormlyFieldDropdownComponent, this, {\n value: v\n });\n\n if (this.props['onValueChange']) {\n this.props['onValueChange'](this.field, v);\n }\n });\n this.subscriptions.push(subscription);\n }\n\n ngOnDestroy(): void {\n // warning: formly calls on destroy before on init\n\n this.subscriptions.forEach(s => s.unsubscribe());\n\n // emit lifecycle event\n this.descriptor?.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, FormlyFieldDropdownComponent, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n}\n","<mng-dropdown\n [id]=\"$any(key)\"\n [formControl]=\"dFormControl\"\n [formlyAttributes]=\"field\"\n [placeholder]=\"descriptor.placeholder\"\n [dataProvider]=\"descriptor.dataProvider\"\n [optionsLabelProperty]=\"descriptor.optionsLabelProperty\"\n [optionsLabelTranslate]=\"descriptor.optionsLabelTranslate\"\n [optionsValueProperty]=\"descriptor.optionsValueProperty\"\n [optionsDisabledProperty]=\"descriptor.optionsDisabledProperty\"\n [optionsTrackProperty]=\"descriptor.optionsTrackProperty\"\n [showClear]=\"!props.required\"\n [className]=\"descriptor.inputClassName\">\n</mng-dropdown>\n","import {ChangeDetectionStrategy, Component, OnInit} from '@angular/core';\n\nimport {FieldType, FormlyModule} from '@ngx-formly/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {FieldsetModule} from 'primeng/fieldset';\n\nimport {CommonsFormlyFieldConfig, FieldGroupDescriptor, FieldGroupTypeEnum} from '@mediusinc/mng-commons/tableview/api';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-fieldset',\n templateUrl: './formly-field-fieldset.component.html',\n imports: [FieldsetModule, FormlyModule, TranslateModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldFieldsetComponent<ET> extends FieldType<CommonsFormlyFieldConfig> implements OnInit {\n public readonly typeFieldset = FieldGroupTypeEnum.Fieldset;\n public readonly typeLogical = FieldGroupTypeEnum.Logical;\n public descriptor?: FieldGroupDescriptor<ET>;\n\n ngOnInit() {\n this.descriptor = this.props.descriptor as FieldGroupDescriptor<ET>;\n this.props.fieldComponent = this;\n }\n}\n","@for (group of field.fieldGroup; track group) {\n @switch (group?.props?.['descriptor']?.type) {\n @case (typeFieldset) {\n <p-fieldset [legend]=\"group.props?.label! | translate\">\n <formly-field [field]=\"group\"></formly-field>\n </p-fieldset>\n }\n @default {\n <formly-field [field]=\"group\"></formly-field>\n }\n }\n}\n","import {ChangeDetectionStrategy, Component, Inject, LOCALE_ID, OnDestroy, OnInit} from '@angular/core';\nimport {FormArray, FormBuilder, FormControl, ReactiveFormsModule, ValidatorFn, Validators} from '@angular/forms';\n\nimport {FieldType, FormlyModule} from '@ngx-formly/core';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {CalendarModule} from 'primeng/calendar';\nimport {FileUploadModule} from 'primeng/fileupload';\nimport {TimesIcon} from 'primeng/icons/times';\nimport {ImageModule} from 'primeng/image';\nimport {InputMaskModule} from 'primeng/inputmask';\nimport {InputNumberModule} from 'primeng/inputnumber';\nimport {InputSwitchModule} from 'primeng/inputswitch';\nimport {InputTextModule} from 'primeng/inputtext';\nimport {InputTextareaModule} from 'primeng/inputtextarea';\nimport {RadioButtonModule} from 'primeng/radiobutton';\nimport {RippleModule} from 'primeng/ripple';\nimport {Subscription, distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {InputTrimDirective} from '@mediusinc/mng-commons/form';\nimport {CommonsFormlyFieldConfig, FieldInputDescriptor, FieldInputTypeEnum, FormFieldEventComponentSubtype, FormFieldEventTypeEnum} from '@mediusinc/mng-commons/tableview/api';\n\nimport {getFormEditorWarningMessage} from '../../../../helpers/notification';\nimport {FormEditorComponent} from '../../../editor/form-editor.component';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-input',\n templateUrl: './formly-field-input.component.html',\n imports: [\n InputNumberModule,\n ReactiveFormsModule,\n FormlyModule,\n TranslateModule,\n InputSwitchModule,\n RadioButtonModule,\n CalendarModule,\n InputMaskModule,\n FileUploadModule,\n ImageModule,\n InputTextareaModule,\n InputTextModule,\n RippleModule,\n TimesIcon,\n InputTrimDirective\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldInputComponent<ET> extends FieldType<CommonsFormlyFieldConfig> implements OnInit, OnDestroy {\n public readonly NUMBER_MIN_SAFE = Number.MIN_SAFE_INTEGER;\n public readonly NUMBER_MAX_SAFE = Number.MAX_SAFE_INTEGER;\n public readonly DESC_INPUT_TYPE_IMAGE_FILE = FieldInputTypeEnum.ImageFile;\n\n public iFormControl!: FormControl;\n public descriptor!: FieldInputDescriptor<ET>;\n public numberFieldMode: 'decimal' | 'currency' = 'decimal';\n public currency?: string;\n\n private files: File[] = [];\n public imageFormArray!: FormArray;\n private subscriptions: Subscription[] = [];\n\n public formEditorComponent?: FormEditorComponent<unknown>;\n\n constructor(\n @Inject(LOCALE_ID) public applicationLocale: string,\n private formBuilder: FormBuilder,\n private translateService: TranslateService\n ) {\n super();\n }\n\n ngOnInit(): void {\n this.iFormControl = this.formControl as FormControl;\n this.descriptor = this.props.descriptor as FieldInputDescriptor<ET>;\n this.props.fieldComponent = this;\n this.formEditorComponent = this.props.formEditorComponent as FormEditorComponent<unknown>;\n\n this.imageFormArray = this.formBuilder.array([]);\n\n if (this.descriptor.fieldType === FieldInputTypeEnum.Currency) {\n this.numberFieldMode = 'currency';\n\n if (this.descriptor.currencyFromProperty) {\n const currencyFromPropSubscription = this.iFormControl\n .get(this.descriptor.currencyFromProperty)!\n .valueChanges.pipe(startWith(this.model[this.descriptor.currencyFromProperty]), distinctUntilChanged())\n .subscribe(c => {\n this.currency = c;\n });\n this.subscriptions.push(currencyFromPropSubscription);\n } else {\n this.currency = this.descriptor.currency ?? 'EUR';\n }\n }\n\n // emit lifecycle event\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, FormlyFieldInputComponent, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_INIT\n });\n\n // init values\n if (this.props.type === 'datepicker' && typeof this.iFormControl.value === 'string') {\n const dateObject = new Date(this.iFormControl.value);\n this.iFormControl.setValue(dateObject);\n this.iFormControl.markAsPristine();\n }\n\n const subscription = this.formControl!.valueChanges.pipe(startWith(this.formControl!.value), distinctUntilChanged()).subscribe(v => {\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ValueChange, FormlyFieldInputComponent, this, {\n value: v\n });\n\n if (this.props['onValueChange']) {\n this.props['onValueChange'](this.field, v);\n }\n });\n this.subscriptions.push(subscription);\n\n if (this.props.type === 'imageUrl') {\n const startValue = this.iFormControl.value;\n if (this.descriptor.fileMultiple) {\n if (Array.isArray(startValue) && startValue.length > 0) {\n startValue.forEach(v => this.addImageUrl(v));\n } else if (typeof startValue === 'string' && startValue.length > 0) {\n this.addImageUrl(startValue);\n } else {\n this.addImageUrl();\n }\n } else {\n if (typeof startValue === 'string' && startValue.length > 0) {\n this.addImageUrl(startValue);\n } else {\n this.addImageUrl();\n }\n }\n\n const subscription = this.imageFormArray!.valueChanges.pipe(distinctUntilChanged()).subscribe(v => {\n const fcv = v.filter((i: string) => !!i && typeof i === 'string' && i.length > 0);\n this.iFormControl.setValue(fcv.length > 0 ? (this.descriptor.fileMultiple ? fcv : fcv[0]) : undefined);\n this.iFormControl.updateValueAndValidity();\n });\n this.subscriptions.push(subscription);\n }\n }\n\n ngOnDestroy(): void {\n // warning: formly calls on destroy before on init\n\n this.subscriptions.forEach(s => s.unsubscribe());\n\n // emit lifecycle event\n this.descriptor?.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, FormlyFieldInputComponent, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n\n public onFileSelect(event: any) {\n const files = event.files as File[];\n if (this.descriptor.fileMultiple) {\n this.files = [...this.files, ...files];\n } else {\n this.files = [...files];\n }\n this.updateFileFormControl();\n }\n\n public onFileRemove(event: any) {\n const file = event.file as File;\n this.files = this.files.filter(f => f !== file);\n this.updateFileFormControl();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public onFileClear(event: Event) {\n this.files = [];\n this.updateFileFormControl();\n }\n\n public addImageUrl(value: string | null = null) {\n const validators: ValidatorFn[] = [];\n validators.push(Validators.pattern(/^(http|https):\\/\\/[^ \"]+$/));\n validators.push(Validators.minLength(1));\n this.imageFormArray.push(this.formBuilder.control(value, validators));\n }\n\n public removeImageUrlAt(idx: number) {\n this.imageFormArray.removeAt(idx);\n }\n\n public onImageUrlLoadError() {\n if (this.formEditorComponent) {\n const message = getFormEditorWarningMessage(this.translateService, 'general.error', 'mngEditor.imageLoadError');\n this.formEditorComponent.formMessages = [...this.formEditorComponent.formMessages, message];\n }\n }\n\n private updateFileFormControl() {\n const value = this.files.length > 0 ? [...this.files] : null;\n this.iFormControl.setValue(value);\n if (typeof this.descriptor.fileOnSelectHandler === 'function') {\n this.descriptor.fileOnSelectHandler(value, this.iFormControl);\n }\n }\n\n public isFileImageSvg(file: File) {\n return /^image\\/svg/.test(file.type);\n }\n\n public getFileDocumentTypeIcon(file: File) {\n if (/^video\\//.test(file.type)) {\n return 'pi-video';\n }\n if (/^audio\\//.test(file.type)) {\n return 'pi-volume-up';\n }\n switch (file.type) {\n case 'application/pdf':\n return 'pi-file-pdf';\n case 'application/msword':\n case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\n case 'application/vnd.oasis.opendocument.presentation':\n return 'pi-file-word';\n case 'application/vnd.oasis.opendocument.spreadsheet':\n case 'application/vnd.ms-excel':\n case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\n return 'pi-file-excel';\n default:\n return 'pi-file';\n }\n }\n}\n","@switch (props.type) {\n @case ('number') {\n <p-inputNumber\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [min]=\"descriptor.numberAutoCorrect ? descriptor.numberMin ?? NUMBER_MIN_SAFE : undefined\"\n [max]=\"descriptor.numberAutoCorrect ? descriptor.numberMax ?? NUMBER_MAX_SAFE : undefined\"\n [step]=\"$any(descriptor.numberStep)\"\n [useGrouping]=\"descriptor.numberUseGrouping\"\n [minFractionDigits]=\"descriptor.numberMinFractionDigits || 0\"\n [maxFractionDigits]=\"descriptor.numberMaxFractionDigits || 0\"\n [inputStyleClass]=\"descriptor.inputClassName\"\n [locale]=\"descriptor.locale ?? applicationLocale\"\n [mode]=\"numberFieldMode\"\n [currency]=\"currency\"\n [currencyDisplay]=\"descriptor.currencyDisplay\">\n </p-inputNumber>\n }\n\n @case ('switch') {\n <div class=\"field flex flex-column\">\n <label [for]=\"key\" [class]=\"descriptor.labelClassName\"\n >{{ props.label! | translate }}\n @if (props.required && props['hideRequiredMarker'] !== true) {\n <span>*</span>\n }\n </label>\n <p-inputSwitch [id]=\"$any(key)\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" [styleClass]=\"descriptor.inputClassName\"></p-inputSwitch>\n @if (showError) {\n <small class=\"p-error\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n }\n </div>\n }\n @case ('radio') {\n @for (option of descriptor.radioOptions; track option) {\n <div [id]=\"$any(key)\" class=\"field-radiobutton\">\n <p-radioButton\n [name]=\"$any(key)\"\n [value]=\"option.value\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [styleClass]=\"descriptor.inputClassName\"></p-radioButton>\n <label [for]=\"option.value\" [class]=\"'mng-radio-button-label ' + descriptor.labelClassName\">{{ option.title | translate }}</label>\n </div>\n }\n }\n @case ('textarea') {\n <textarea [id]=\"$any(key)\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" [rows]=\"descriptor.rows ?? 3\" pInputTextarea [class]=\"descriptor.inputClassName\">\n </textarea>\n }\n @case ('datepicker') {\n <p-calendar\n appendTo=\"body\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [dateFormat]=\"descriptor.datePickerFormat ?? 'dd.mm.yy'\"\n [minDate]=\"$any(descriptor.datePickerMin)\"\n [maxDate]=\"$any(descriptor.datePickerMax)\"\n [showTime]=\"descriptor.datePickerShowTime ?? false\"\n [showSeconds]=\"descriptor.datePickerShowSeconds ?? false\"\n [showIcon]=\"true\"\n [inputStyleClass]=\"descriptor.inputClassName\"\n [firstDayOfWeek]=\"1\">\n </p-calendar>\n }\n @case ('mask') {\n <p-inputMask\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [mask]=\"descriptor.mask\"\n [placeholder]=\"descriptor.placeholder\"\n [slotChar]=\"$any(descriptor.slotChar)\"\n [styleClass]=\"descriptor.inputClassName\">\n </p-inputMask>\n }\n @case ('file') {\n <p-fileUpload\n #fileUploadInput\n [disabled]=\"iFormControl.disabled\"\n [multiple]=\"descriptor.fileMultiple ?? false\"\n [accept]=\"descriptor.fileAccept ?? (descriptor.fieldType === DESC_INPUT_TYPE_IMAGE_FILE ? 'image/*' : undefined)\"\n [maxFileSize]=\"descriptor.fileMaxFileSize ?? 500000\"\n [showUploadButton]=\"false\"\n (onSelect)=\"onFileSelect($event)\"\n (onRemove)=\"onFileRemove($event)\"\n (onClear)=\"onFileClear($event)\">\n <ng-template let-file let-idx=\"index\" pTemplate=\"file\">\n <div class=\"p-fileupload-row\">\n <div>\n @if (fileUploadInput.isImage(file)) {\n @if (isFileImageSvg(file)) {\n <span class=\"flex align-items-center justify-content-center\">\n <i class=\"pi pi-image text-2xl\"></i>\n </span>\n } @else {\n <img [src]=\"file.objectURL\" [width]=\"fileUploadInput.previewWidth\" (error)=\"fileUploadInput.imageError($event)\" />\n }\n } @else {\n <span class=\"flex align-items-center justify-content-center\">\n <i [class]=\"'pi ' + getFileDocumentTypeIcon(file) + ' text-2xl'\"></i>\n </span>\n }\n </div>\n <div class=\"p-fileupload-filename\">{{ file.name }}</div>\n <div>{{ fileUploadInput.formatSize(file.size) }}</div>\n <div>\n <button\n type=\"button\"\n pButton\n (click)=\"fileUploadInput.remove($event, idx)\"\n [disabled]=\"fileUploadInput.uploading\"\n class=\"p-button-icon-only\"\n [class]=\"fileUploadInput.removeStyleClass\">\n @if (!fileUploadInput.cancelIconTemplate) {\n <TimesIcon />\n }\n </button>\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"content\" let-files>\n @if (files.length === 0) {\n <div class=\"text-gray-300 dropdown-area\">\n <span><i class=\"pi pi-file-import mr-2\"></i>{{ 'fileUpload.dragAndDrop' | translate }}</span>\n </div>\n }\n </ng-template>\n </p-fileUpload>\n }\n @case ('imageUrl') {\n <div>\n @if (descriptor.imagePreview) {\n <div class=\"flex flex-wrap justify-content-start\">\n @for (image of imageFormArray.controls; track image; let idx = $index) {\n @if (imageFormArray.at(idx).valid && imageFormArray.at(idx).value) {\n <p-image [src]=\"imageFormArray.at(idx).value\" [preview]=\"true\" (onImageError)=\"onImageUrlLoadError()\" styleClass=\"mng-image m-2\"></p-image>\n } @else {\n <span class=\"mng-image m-2 p-image-preview-container no-image\">\n <div class=\"p-image-preview-indicator\">\n <i class=\"p-image-preview-icon pi pi-ban\"></i>\n </div>\n </span>\n }\n }\n </div>\n }\n @if (!descriptor.imagePreview || descriptor.imageUrlInputVisibleOnDisabled || !iFormControl.disabled) {\n @for (imageCtrlName of imageFormArray.controls; track imageCtrlName; let idx = $index) {\n <div class=\"p-inputgroup mt-1\">\n <input\n pInputText\n [placeholder]=\"'mngEditor.imageUrlPlaceholder' | translate\"\n [id]=\"$any(key)\"\n type=\"text\"\n [formControl]=\"$any(imageFormArray.at(idx))\"\n [formlyAttributes]=\"field\" />\n @if (descriptor.fileMultiple && !iFormControl.disabled) {\n <button type=\"button\" pButton pRipple icon=\"pi pi-minus\" (click)=\"removeImageUrlAt(idx)\"></button>\n }\n </div>\n }\n @if (descriptor.fileMultiple && !iFormControl.disabled) {\n <button\n type=\"button\"\n pButton\n pRipple\n icon=\"pi pi-plus\"\n class=\"p-button-primary w-auto mt-1\"\n [label]=\"'mngEditor.imageUrlAdd' | translate\"\n (click)=\"addImageUrl()\"></button>\n }\n }\n </div>\n }\n @default {\n <input pInputText [id]=\"$any(key)\" [type]=\"props.type || 'text'\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" [mngInputTrim]=\"descriptor.trimOption\" />\n }\n}\n","import {ChangeDetectionStrategy, Component, HostBinding, OnInit} from '@angular/core';\n\nimport {FieldType} from '@ngx-formly/core';\n\nimport {CommonsFormlyFieldConfig, FieldInputDescriptor} from '@mediusinc/mng-commons/tableview/api';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-label',\n templateUrl: './formly-field-label.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldLabelComponent<ET> extends FieldType<CommonsFormlyFieldConfig> implements OnInit {\n @HostBinding('class') public className = 'hidden';\n\n private descriptor!: FieldInputDescriptor<any>;\n\n public ngOnInit() {\n this.descriptor = this.props.descriptor as FieldInputDescriptor<ET>;\n this.props.fieldComponent = this;\n this.formControl?.patchValue(this.descriptor.label);\n }\n}\n","","import {AsyncPipe} from '@angular/common';\nimport {AfterViewInit, ChangeDetectionStrategy, Component, Injector, OnDestroy, OnInit, ViewChild, inject} from '@angular/core';\nimport {FormControl, ReactiveFormsModule} from '@angular/forms';\n\nimport {FieldType, FormlyModule} from '@ngx-formly/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {Message} from 'primeng/api';\nimport {ButtonModule} from 'primeng/button';\nimport {DialogModule} from 'primeng/dialog';\nimport {InputTextModule} from 'primeng/inputtext';\nimport {MessagesModule} from 'primeng/messages';\nimport {RippleModule} from 'primeng/ripple';\nimport {Observable, ReplaySubject, Subject, Subscription, distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {\n CommonsInternalError,\n DataListParams,\n DataListResult,\n DialogKeydownHandlerDirective,\n LoggerService,\n fromSubscribeError,\n getErrorLogLevel,\n toObservable\n} from '@mediusinc/mng-commons/core';\nimport {TableComponent} from '@mediusinc/mng-commons/table';\nimport {\n CommonsFormlyFieldConfig,\n FieldLookupConfig,\n FieldLookupDescriptor,\n FormFieldEventComponentSubtype,\n FormFieldEventDialogSubtype,\n FormFieldEventTypeEnum\n} from '@mediusinc/mng-commons/tableview/api';\n\nimport {provideViewContainer} from '../../../../../action/services/providers/provide-view-container';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-lookup-dialog',\n templateUrl: 'formly-field-lookup-dialog.component.html',\n imports: [\n TranslateModule,\n FormlyModule,\n ReactiveFormsModule,\n ButtonModule,\n RippleModule,\n DialogModule,\n AsyncPipe,\n TableComponent,\n MessagesModule,\n InputTextModule,\n DialogKeydownHandlerDirective\n ],\n providers: [provideViewContainer(false)],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldLookupDialogComponent<T, ET> extends FieldType<CommonsFormlyFieldConfig> implements OnInit, AfterViewInit, OnDestroy {\n @ViewChild(TableComponent) public table?: TableComponent;\n\n private readonly logger = inject(LoggerService).create('FormlyFieldLookupDialogComponent');\n\n public descriptor!: FieldLookupDescriptor<T, ET>;\n public config!: FieldLookupConfig;\n public fieldLabelFormControl: FormControl = new FormControl();\n\n public addItemsSubject: Subject<DataListResult<T>> = new ReplaySubject(1);\n public addItemsAsync: Observable<DataListResult<T>> = this.addItemsSubject.asObservable();\n\n public dialogUseDataProvider = false;\n private dialogDataProviderService: any = null;\n private dialogIsLoadingSubject = new ReplaySubject<boolean>(1);\n\n public isDialogVisible = false;\n public dialogAreItemsLoaded = false;\n public dialogSelectedItem: any = null;\n public dialogMessages: Message[] = [];\n public dialogIsLoading$ = this.dialogIsLoadingSubject.asObservable();\n\n private lookupDataProviderSubscription?: Subscription;\n private subscriptions: Subscription[] = [];\n\n constructor(private injector: Injector) {\n super();\n }\n\n ngOnInit(): void {\n this.descriptor = this.props.descriptor as FieldLookupDescriptor<T, ET>;\n this.props.fieldComponent = this;\n\n // emit lifecycle event\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, FormlyFieldLookupDialogComponent, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_INIT\n });\n\n this.config = this.descriptor.config as FieldLookupConfig;\n if (!this.descriptor.dialogTableDataProvider && this.descriptor.dataProvider?.serviceType) {\n this.dialogUseDataProvider = true;\n this.dialogDataProviderService = this.injector.get<any>(this.descriptor.dataProvider.serviceType);\n }\n\n // init values\n this.setFieldLabelValue(this.formControl!.value);\n const subscription = this.formControl!.valueChanges.pipe(\n startWith(this.formControl!.value),\n distinctUntilChanged((prev, curr) => {\n const compareProp = this.descriptor.dialogTableDescriptor!.trackProperty ?? this.descriptor.dialogTableDescriptor!.model.idProperty;\n if (compareProp && typeof prev === 'object' && typeof curr === 'object') {\n return prev[compareProp] === curr[compareProp];\n } else {\n return prev === curr;\n }\n })\n ).subscribe(v => {\n this.setFieldLabelValue(v);\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ValueChange, FormlyFieldLookupDialogComponent, this, {\n value: v\n });\n\n if (this.props['onValueChange']) {\n this.props['onValueChange'](this.field, v);\n }\n });\n this.subscriptions.push(subscription);\n }\n\n ngAfterViewInit() {\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, FormlyFieldLookupDialogComponent, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_VIEW_INIT\n });\n }\n\n ngOnDestroy(): void {\n // warning: formly calls on destroy before on init\n\n this.lookupDataProviderSubscription?.unsubscribe();\n this.subscriptions.forEach(s => s.unsubscribe());\n\n // emit lifecycle event\n this.descriptor?.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, FormlyFieldLookupDialogComponent, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n\n openSelectDialog() {\n if (!this.dialogAreItemsLoaded && this.dialogUseDataProvider) {\n this.dialogIsLoadingSubject.next(true);\n\n const params: DataListParams = {\n limit: 50,\n sort: this.descriptor\n .dialogTableDescriptor!.sorts.filter(s => s.defaultIsEnabled)\n .map(s => ({\n property: s.property,\n ascending: s.defaultIsAscending\n }))\n };\n\n this.lookupDataProviderSubscription = toObservable(this.descriptor.dataProvider?.lookup(params, this.dialogDataProviderService)).subscribe({\n next: res => {\n const dataList = {\n data: res ?? [],\n totalCount: res?.length ?? 0\n };\n this.addItemsSubject.next(dataList);\n this.dialogAreItemsLoaded = true;\n this.dialogIsLoadingSubject.next(false);\n\n this.descriptor.nextEvent(FormFieldEventTypeEnum.DataProvider, FormlyFieldLookupDialogComponent, this, {\n eventSubtype: 'LookupNext',\n queryResult: dataList\n });\n },\n error: err => {\n this.dialogIsLoadingSubject.next(false);\n this.descriptor.nextEvent(FormFieldEventTypeEnum.DataProvider, FormlyFieldLookupDialogComponent, this, {\n eventSubtype: 'LookupError',\n queryResult: err\n });\n\n const error = fromSubscribeError(err, 'FormlyFieldLookupDialogComponentError', {\n params: params\n });\n this.logger.log(error, getErrorLogLevel(error));\n }\n });\n }\n this.dialogSelectedItem = null;\n this.isDialogVisible = true;\n\n this.formControl.markAsTouched();\n\n this.descriptor.nextEvent(FormFieldEventTypeEnum.DialogLifecycle, FormlyFieldLookupDialogComponent, this, {\n eventSubtype: FormFieldEventDialogSubtype.VISIBILITY,\n dialogVisible: true\n });\n }\n\n onSelectionChange(item: any) {\n this.dialogSelectedItem = item;\n }\n\n onCaptionCmpInst(instance: any) {\n this.descriptor.nextEvent(FormFieldEventTypeEnum.DialogLifecycle, FormlyFieldLookupDialogComponent, this, {\n eventSubtype: FormFieldEventDialogSubtype.TABLE_CAPTION_COMPONENT_INSTANCE,\n captionComponentInstance: instance\n });\n }\n\n onColumnActionCmpInst(instance: any) {\n this.descriptor.nextEvent(FormFieldEventTypeEnum.DialogLifecycle, FormlyFieldLookupDialogComponent, this, {\n eventSubtype: FormFieldEventDialogSubtype.TABLE_COLUMN_ACTIONS_COMPONENT_INSTANCE,\n captionComponentInstance: instance\n });\n }\n\n clear() {\n this.formControl.setValue(undefined);\n this.formControl.markAsTouched();\n this.formControl.markAsDirty();\n this.dialogSelectedItem = null;\n this.dialogAreItemsLoaded = false;\n this.hideDialog();\n }\n\n hideDialog() {\n this.isDialogVisible = false;\n\n this.descriptor.nextEvent(FormFieldEventTypeEnum.DialogLifecycle, FormlyFieldLookupDialogComponent, this, {\n eventSubtype: FormFieldEventDialogSubtype.VISIBILITY,\n dialogVisible: false\n });\n }\n\n addItem() {\n this.formControl.setValue(this.dialogSelectedItem);\n this.formControl.markAsDirty();\n this.formControl.markAsTouched();\n this.dialogSelectedItem = null;\n this.dialogAreItemsLoaded = false;\n this.hideDialog();\n }\n\n private setFieldLabelValue(value: T) {\n if (!value) {\n this.fieldLabelFormControl.setValue('');\n return;\n }\n if (typeof value === 'object') {\n const labelProperty = this.descriptor.optionsLabelProperty ?? this.descriptor.dialogTableDescriptor?.model.titleProperty;\n if (!labelProperty) {\n throw new CommonsInternalError('Could not determine label property.', {name: 'FormlyFieldLookupDialogError'});\n }\n this.fieldLabelFormControl.setValue(value[labelProperty as keyof object]);\n } else {\n this.fieldLabelFormControl.setValue(value);\n }\n }\n}\n","<div [class]=\"'p-inputgroup mng-dropdown-dialog' + descriptor.inputClassName\" [class.p-inputtext-sm]=\"descriptor.isSizeSmall\" [class.p-inputtext-lg]=\"descriptor.isSizeLarge\">\n <input pInputText type=\"text\" [id]=\"$any(key)\" [readonly]=\"true\" [formlyAttributes]=\"field\" [formControl]=\"fieldLabelFormControl\" />\n @if (!props.required && formControl.value && !formControl.disabled) {\n <i class=\"mng-dropdown-clear-icon pi pi-times\" (click)=\"clear()\"></i>\n }\n <button\n pButton\n pRipple\n class=\"mng-dropdown-dialog-search-button\"\n type=\"button\"\n [label]=\"'general.search' | translate: {item: ''}\"\n [disabled]=\"formControl.disabled\"\n (click)=\"openSelectDialog()\"></button>\n</div>\n\n<p-dialog\n [(visible)]=\"isDialogVisible\"\n [draggable]=\"false\"\n [header]=\"'general.search' | translate: {item: props.label!}\"\n [modal]=\"true\"\n appendTo=\"body\"\n styleClass=\"p-fluid mng-dialog mng-formly-field-lookup-dialog\">\n <ng-template pTemplate=\"content\" mngDialogKeydownHandler>\n <mng-table\n [descriptor]=\"descriptor.dialogTableDescriptor!\"\n [dataProvider]=\"descriptor.dialogTableDataProvider\"\n [result]=\"addItemsAsync\"\n [selectionEnabled]=\"true\"\n [selectionMode]=\"'single'\"\n [loading]=\"dialogIsLoading$\"\n [captionComponent]=\"config.table?.captionComponent\"\n [columnCustomLastComponent]=\"config.table?.columnActionComponent\"\n (selectionChange)=\"onSelectionChange($event)\"\n (captionComponentInstance)=\"onCaptionCmpInst($event)\"\n (columnCustomLastComponentInstance)=\"onColumnActionCmpInst($event)\">\n </mng-table>\n <p-messages [value]=\"dialogMessages\"></p-messages>\n </ng-template>\n\n <ng-template pTemplate=\"footer\">\n <button pButton pRipple type=\"button\" [label]=\"'general.cancel' | translate\" icon=\"pi pi-times\" class=\"p-button-text\" (click)=\"hideDialog()\"></button>\n <button\n pButton\n pRipple\n type=\"button\"\n [label]=\"'general.select' | translate\"\n icon=\"pi pi-check\"\n class=\"p-button-text\"\n (click)=\"addItem()\"\n [loading]=\"(dialogIsLoading$ | async) ?? false\"\n loadingIcon=\"pi pi-spin pi-spinner\"\n [disabled]=\"form.disabled\"></button>\n </ng-template>\n</p-dialog>\n","import {AfterViewInit, ChangeDetectionStrategy, Component, Injector, OnDestroy, OnInit} from '@angular/core';\n\nimport {FieldType} from '@ngx-formly/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {BehaviorSubject, Observable, ReplaySubject, Subject, Subscription, distinctUntilChanged, of, throwError} from 'rxjs';\nimport {map, startWith} from 'rxjs/operators';\n\nimport {CommonsInternalError, CommonsService, StyleLevelEnum, StyleSizeEnum, TemplateDirective} from '@mediusinc/mng-commons/core';\nimport {ActionButtonDescriptor, ButtonStyleBuilder} from '@mediusinc/mng-commons/form/api';\nimport {\n ActionContextValidation,\n ActionDescriptor,\n ActionDescriptorInst,\n ActionEditorDescriptor,\n ActionEditorSubmitDescriptor,\n ActionEditorSubmitTypeEnum,\n ActionPositionEnum,\n CommonsFormlyFieldConfig,\n FieldManyEditorActionEnum,\n FieldManyEditorDescriptor,\n FormFieldEventComponentSubtype,\n FormFieldEventTypeEnum\n} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ActionComponent} from '../../../../../action/components/action/action.component';\nimport {ActionTableComponent} from '../../../../../action/components/table/action-table.component';\nimport {provideViewContainer} from '../../../../../action/services/providers/provide-view-container';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-table-dialog-form-field',\n templateUrl: './formly-field-table-dialog-form.component.html',\n styleUrls: ['./formly-field-table-dialog-form.component.scss'],\n imports: [TranslateModule, ActionComponent, ActionTableComponent, TemplateDirective],\n providers: [provideViewContainer(false)],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldTableDialogFormComponent<T = any, ET = any> extends FieldType<CommonsFormlyFieldConfig> implements OnInit, AfterViewInit, OnDestroy {\n public descriptor!: FieldManyEditorDescriptor<T, ET>;\n\n public itemsSubject: Subject<Array<T>> = new ReplaySubject(1);\n public items$: Observable<Array<T>> = this.itemsSubject.asObservable();\n\n public actions: Array<ActionDescriptorInst<T>> = [];\n public toolbarRightActions: Array<ActionDescriptorInst<T>> = [];\n\n private subscriptions: Subscription[] = [];\n private isDisabledSubject = new BehaviorSubject<boolean>(false);\n private isEnabled$ = this.isDisabledSubject.asObservable().pipe(\n distinctUntilChanged(),\n map(e => !e)\n );\n\n constructor(private injector: Injector) {\n super();\n }\n\n public ngOnInit() {\n this.descriptor = this.props.descriptor as FieldManyEditorDescriptor<T, ET>;\n this.props.fieldComponent = this;\n\n const hasViewAction = this.descriptor.fieldActions.some(a => a === FieldManyEditorActionEnum.View);\n const hasAddAction = this.descriptor.fieldActions.some(a => a === FieldManyEditorActionEnum.Add);\n const hasEditAction = this.descriptor.fieldActions.some(a => a === FieldManyEditorActionEnum.Edit);\n const hasDeleteAction = this.descriptor.fieldActions.some(a => a === FieldManyEditorActionEnum.Delete);\n\n if (hasViewAction) {\n const viewAction = ActionEditorDescriptor.create(this.descriptor.tableviewDescriptor.detailsEditor, 'details', {\n parentType: this.descriptor.editor.model.type,\n parentProperty: this.descriptor.property\n })\n .withPosition(ActionPositionEnum.RowClick)\n .withDialogSize(StyleSizeEnum.Small)\n .withFetchFunction(ctx => {\n this.formControl.markAsTouched();\n return of(ctx.parameters.item || ({} as T));\n });\n viewAction.withEditorActions([ActionEditorSubmitDescriptor.forSecondary(viewAction, ActionEditorSubmitTypeEnum.Cancel)]);\n viewAction.button.withLabel(null);\n this.actions.push(viewAction);\n }\n\n if (hasAddAction) {\n const addAction = ActionEditorDescriptor.create(this.descriptor.tableviewDescriptor.addEditor, 'add', {\n parentType: this.descriptor.editor.model.type,\n parentProperty: this.descriptor.property\n })\n .withPosition(ActionPositionEnum.ToolbarRight)\n .withDialogSize(StyleSizeEnum.Small)\n .withButtonDescriptor(new ActionButtonDescriptor().withStyleClass(new ButtonStyleBuilder().withSize(StyleSizeEnum.ExtraSmall)))\n .withFetchFunction(ctx => {\n setTimeout(this.formControl.markAsTouched, 0);\n return of(ctx.parameters.item || ({} as T));\n })\n .withSubmitFunction(ctx => {\n if (!ctx.parameters.item) {\n return throwError(\n () => new CommonsInternalError(`No item was provided in context, add cannot be done.`, {name: 'FormlyFieldTableDialogFormComponentError'})\n );\n }\n this.formState.submittedOn = Date.now();\n let value = this.formControl.value;\n value = [...value, ctx.parameters.item];\n this.formControl.patchValue(value);\n this.formControl.markAsDirty();\n this.formControl.markAsTouched();\n return of(ctx.parameters.item);\n })\n .withRunNotificationSuccess(undefined, undefined, false)\n .withRunNotificationError(undefined, undefined, false)\n .withIsVisibleFunction(() => of(!this.options?.formState.disabled))\n .withIsEnabledFunction(() => this.isEnabled$);\n addAction.button.withLabel(null).withIcon('pi pi-plus');\n this.actions.push(addAction);\n }\n if (hasEditAction) {\n const editAction = ActionEditorDescriptor.create(this.descriptor.tableviewDescriptor.editEditor, 'edit', {\n parentType: this.descriptor.editor.model.type,\n parentProperty: this.descriptor.property\n })\n .withPosition(ActionPositionEnum.RowInline)\n .withDialogSize(StyleSizeEnum.Small)\n .withButtonDescriptor(new ActionButtonDescriptor().withStyleClass(new ButtonStyleBuilder().withSize(StyleSizeEnum.ExtraSmall)))\n .withFetchFunction(ctx => {\n this.formControl.markAsTouched();\n return of(ctx.parameters.item || ({} as T));\n })\n .withSubmitFunction(ctx => {\n if (!ctx.parameters.item) {\n return throwError(\n () => new CommonsInternalError(`No item was provided in context, edit cannot be done.`, {name: 'FormlyFieldTableDialogFormComponentError'})\n );\n }\n this.formState.submittedOn = Date.now();\n const formControlValue = [...this.formControl.value];\n formControlValue[ctx.parameters.actionData?.['itemIndex']] = ctx.parameters.item;\n this.formControl.patchValue(formControlValue);\n this.formControl.markAsDirty();\n this.formControl.markAsTouched();\n return of(ctx.parameters.item);\n })\n .withRunNotificationSuccess(undefined, undefined, false)\n .withRunNotificationError(undefined, undefined, false)\n .withIsVisibleFunction(ctx => (this.hideActionsForRowWithDefaultLocalization(ctx) ? of(false) : of(!this.formControl?.disabled)))\n .withIsEnabledFunction(() => this.isEnabled$);\n editAction.button.withLabel(null).withIcon('pi pi-pencil');\n this.actions.push(editAction);\n }\n if (hasDeleteAction) {\n const deleteAction = ActionDescriptor.fromModel(this.descriptor.tableviewDescriptor.model, 'delete', {\n parentType: this.descriptor.editor.model.type,\n parentProperty: this.descriptor.property\n })\n .withPosition(ActionPositionEnum.RowInline)\n .withButtonDescriptor(new ActionButtonDescriptor().withStyleClass(new ButtonStyleBuilder(StyleLevelEnum.Danger).withSize(StyleSizeEnum.ExtraSmall)))\n .withRunFunction(ctx => {\n if (!ctx.parameters.item) {\n return throwError(\n () => new CommonsInternalError(`No item was provided in context, delete cannot be done.`, {name: 'FormlyFieldTableDialogFormComponentError'})\n );\n }\n let formControlValue = this.formControl.value as Array<T>;\n const compareProperty = this.descriptor.tableDescriptor.trackProperty\n ? this.descriptor.tableDescriptor.trackProperty\n : this.descriptor.tableDescriptor.model.idProperty;\n const ctxItem: any = ctx.parameters.item;\n if (compareProperty && ctxItem?.[compareProperty]) {\n formControlValue = formControlValue.filter((i: any) => i[compareProperty] !== ctxItem[compareProperty]);\n this.formControl.patchValue(formControlValue);\n this.formControl.markAsDirty();\n } else if (typeof ctx.parameters.actionData?.['itemIndex'] === 'number') {\n formControlValue.splice(ctx.parameters.actionData['itemIndex'], 1);\n this.formControl.patchValue([...formControlValue]);\n this.formControl.markAsDirty();\n } else {\n return throwError(\n () =>\n new CommonsInternalError('Cannot compare items, please provide main table data key property or model id property.', {\n name: 'FormlyFieldTableDialogFormComponentError'\n })\n );\n }\n\n this.formControl.markAsTouched();\n\n return of(ctxItem);\n })\n .withRunNotificationSuccess(undefined, undefined, false)\n .withRunNotificationError(undefined, undefined, false)\n .withIsVisibleFunction(ctx => (this.hideActionsForRowWithDefaultLocalization(ctx) ? of(false) : of(!this.options?.formState.disabled)))\n .withIsEnabledFunction(() => this.isEnabled$);\n deleteAction.button.withLabel(null).withIcon('pi pi-trash');\n this.actions.push(deleteAction);\n }\n\n this.actions.push(...this.descriptor.actions);\n for (const action of this.actions) {\n switch (action.position) {\n case ActionPositionEnum.ToolbarRight:\n this.toolbarRightActions.push(action);\n break;\n }\n }\n\n // init values\n if (typeof this.formControl.value === 'undefined' || this.formControl.value === null) {\n this.formControl.patchValue([]);\n }\n\n // emit lifecycle event\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, FormlyFieldTableDialogFormComponent, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_INIT\n });\n\n let subscription = this.formControl.valueChanges.pipe(startWith(this.formControl.value)).subscribe(v => {\n this.itemsSubject.next(v);\n\n // emit lifecycle event\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ValueChange, FormlyFieldTableDialogFormComponent, this, {\n value: v\n });\n\n if (this.props['onValueChange']) {\n this.props['onValueChange'](this.field, v);\n }\n });\n this.subscriptions.push(subscription);\n\n this.isDisabledSubject.next(this.formControl.disabled);\n subscription = this.formControl.statusChanges.pipe().subscribe(status => {\n if (status === 'DISABLED' && !this.isDisabledSubject.value) {\n this.isDisabledSubject.next(true);\n } else if (status !== 'DISABLED' && this.isDisabledSubject.value) {\n this.isDisabledSubject.next(false);\n }\n });\n this.subscriptions.push(subscription);\n }\n\n public ngAfterViewInit() {\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, FormlyFieldTableDialogFormComponent, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_VIEW_INIT\n });\n }\n\n public ngOnDestroy() {\n // warning: formly calls on destroy before on init\n\n this.subscriptions.forEach(s => s.unsubscribe());\n\n // emit lifecycle event\n this.descriptor?.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, FormlyFieldTableDialogFormComponent, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n\n private hideActionsForRowWithDefaultLocalization(ctx: ActionContextValidation<T>) {\n if (this.descriptor.tableDescriptor.isLocalized) {\n if ((ctx.parameters.item as any)[this.descriptor.tableDescriptor.localizationLocaleProperty!] === this.injector.get(CommonsService).defaultDataLanguage) {\n return true;\n }\n }\n return false;\n }\n}\n","<mng-action-table [descriptor]=\"descriptor.tableDescriptor\" [items]=\"items$\" [actions]=\"actions\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-row justify-content-end align-items-center table-header\">\n <label class=\"mng-datatable-form-label p-0 m-0\" [for]=\"key\"\n >{{ props.label! | translate }}\n @if (props.required && props['hideRequiredMarker'] !== true) {\n <span>*</span>\n }\n </label>\n @for (action of toolbarRightActions; track action) {\n <mng-action [action]=\"action\"></mng-action>\n }\n </div>\n </ng-template>\n</mng-action-table>\n","import {AsyncPipe, NgStyle} from '@angular/common';\nimport {AfterViewInit, ChangeDetectionStrategy, Component, Injector, OnDestroy, OnInit, ViewChild, inject} from '@angular/core';\n\nimport {FieldType} from '@ngx-formly/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ButtonModule} from 'primeng/button';\nimport {DialogModule} from 'primeng/dialog';\nimport {InputTextModule} from 'primeng/inputtext';\nimport {RippleModule} from 'primeng/ripple';\nimport {Observable, ReplaySubject, Subject, Subscription, debounceTime, distinctUntilChanged} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\n\nimport {\n CommonsInternalError,\n DataListParams,\n DataListResult,\n DialogKeydownHandlerDirective,\n FilterMatchMode,\n LoggerService,\n TemplateDirective,\n fromSubscribeError,\n getErrorLogLevel,\n getObjectPropertyByPath,\n toObservable\n} from '@mediusinc/mng-commons/core';\nimport {TableComponent} from '@mediusinc/mng-commons/table';\nimport {\n CommonsFormlyFieldConfig,\n FieldManyToManyEditorActionEnum,\n FieldManyToManyEditorDescriptor,\n FormFieldEventComponentSubtype,\n FormFieldEventDialogSubtype,\n FormFieldEventTypeEnum\n} from '@mediusinc/mng-commons/tableview/api';\n\nimport {provideViewContainer} from '../../../../../action/services/providers/provide-view-container';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-table-multiselect-add-field',\n templateUrl: './formly-field-table-dialog-multiselect.component.html',\n styleUrls: ['./formly-field-table-dialog-multiselect.component.scss'],\n imports: [TranslateModule, AsyncPipe, TableComponent, DialogModule, ButtonModule, RippleModule, TemplateDirective, InputTextModule, NgStyle, DialogKeydownHandlerDirective],\n providers: [provideViewContainer(false)],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldTableDialogMultiselectComponent extends FieldType<CommonsFormlyFieldConfig> implements OnInit, AfterViewInit, OnDestroy {\n private readonly logger = inject(LoggerService).create('FormlyFieldTableDialogMultiselectComponent');\n\n public descriptor!: FieldManyToManyEditorDescriptor<any, any>;\n\n public itemsSubject: Subject<Array<any>> = new ReplaySubject(1);\n public itemsAsync: Observable<Array<any>> = this.itemsSubject.asObservable();\n public addItemsSubject: Subject<DataListResult> = new ReplaySubject(1);\n public addItemsAsync: Observable<DataListResult> = this.addItemsSubject.asObservable();\n\n public dialogUseDataProvider = false;\n private dialogDataProviderService: any = null;\n private dialogIsLoadingSubject = new ReplaySubject<boolean>(1);\n\n public isDialogVisible = false;\n public dialogAreItemsLoaded = false;\n public dialogSelectedAddItems: Array<any> = [];\n public dialogIsLoading$ = this.dialogIsLoadingSubject.asObservable();\n\n public hasAddAction = false;\n public hasDeleteAction = false;\n\n private searchDebounceSubject = new Subject<string>();\n\n private lookupDataProviderSubscription?: Subscription;\n private subscriptions: Subscription[] = [];\n\n @ViewChild('addTableComponent') addTableComponent?: TableComponent;\n\n constructor(private injector: Injector) {\n super();\n }\n\n public ngOnInit() {\n this.descriptor = this.props.descriptor as FieldManyToManyEditorDescriptor<any, any>;\n this.props.fieldComponent = this;\n\n this.dialogIsLoadingSubject.next(false);\n\n if (this.descriptor.lookupTableDataProvider?.serviceType) {\n this.dialogUseDataProvider = true;\n this.dialogDataProviderService = this.injector.get<any>(this.descriptor.lookupTableDataProvider.serviceType);\n }\n this.hasAddAction = this.descriptor.actions.some(a => a === FieldManyToManyEditorActionEnum.Add);\n this.hasDeleteAction = this.descriptor.actions.some(a => a === FieldManyToManyEditorActionEnum.Delete);\n\n // init values\n if (typeof this.formControl.value === 'undefined' || this.formControl.value === null) {\n this.formControl.patchValue([]);\n }\n\n // emit lifecycle event\n this.descriptor?.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, FormlyFieldTableDialogMultiselectComponent, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_INIT\n });\n\n const subscription = this.formControl.valueChanges.pipe(startWith(this.formControl.value), distinctUntilChanged()).subscribe(v => {\n this.itemsSubject.next(v ?? []);\n\n // emit lifecycle event\n this.descriptor.nextEvent(FormFieldEventTypeEnum.ValueChange, FormlyFieldTableDialogMultiselectComponent, this, {\n value: v ?? []\n });\n\n if (this.props['onValueChange']) {\n this.props['onValueChange'](this.field, v ?? []);\n }\n });\n\n this.subscriptions.push(\n this.searchDebounceSubject.pipe(debounceTime(200), distinctUntilChanged()).subscribe(query => {\n this.addTableComponent?.primeTable.filterGlobal(query, 'contains');\n })\n );\n\n this.subscriptions.push(subscription);\n }\n\n public ngAfterViewInit() {\n // emit lifecycle event\n this.descriptor?.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, FormlyFieldTableDialogMultiselectComponent, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_VIEW_INIT\n });\n }\n\n public ngOnDestroy() {\n // warning: formly calls on destroy before on init\n\n this.lookupDataProviderSubscription?.unsubscribe();\n this.subscriptions.forEach(s => s.unsubscribe());\n\n // emit lifecycle event\n this.descriptor?.nextEvent(FormFieldEventTypeEnum.ComponentLifecycle, FormlyFieldTableDialogMultiselectComponent, this, {\n eventSubtype: FormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n\n openAddDialog() {\n this.dialogSelectedAddItems = [];\n this.isDialogVisible = true;\n\n if (!this.dialogAreItemsLoaded && this.dialogUseDataProvider) {\n // wrapped in request animation frame due to primeng bug: https://github.com/primefaces/primeng/issues/12980\n requestAnimationFrame(() => {\n this.dialogIsLoadingSubject.next(true);\n const params: DataListParams = {limit: 50, sort: []};\n if (this.descriptor.lookupTableDescriptor.sorts.some(s => s.defaultIsEnabled)) {\n this.descriptor.lookupTableDescriptor.sorts.forEach(s => {\n if (s.defaultIsEnabled) {\n params.sort?.push({\n property: s.property,\n ascending: s.defaultIsAscending\n });\n }\n });\n }\n if (this.descriptor.hasLookupExcludeValues) {\n const filterValues = this.formControl.value.map((i: any) => getObjectPropertyByPath(i, this.descriptor.excludeValueProperty));\n params.filters = {\n [this.descriptor.excludeFilterProperty as keyof object]: {\n matchMode: FilterMatchMode.NotIn,\n value: filterValues\n }\n };\n }\n this.lookupDataProviderSubscription = toObservable(this.descriptor.lookupTableDataProvider?.getAll(params, this.dialogDataProviderService)).subscribe({\n next: res => {\n this.addItemsSubject.next(res);\n this.dialogAreItemsLoaded = true;\n this.dialogIsLoadingSubject.next(false);\n },\n error: err => {\n this.dialogIsLoadingSubject.next(false);\n\n const error = fromSubscribeError(err, 'FormlyFieldTableDialogMultiselectComponent', {\n params: params\n });\n this.logger.log(error, getErrorLogLevel(error));\n }\n });\n });\n }\n\n this.formControl.markAsTouched();\n\n this.descriptor.nextEvent(FormFieldEventTypeEnum.DialogLifecycle, FormlyFieldTableDialogMultiselectComponent, this, {\n eventSubtype: FormFieldEventDialogSubtype.VISIBILITY,\n dialogVisible: true\n });\n }\n\n onSelectionChange(items: Array<any>) {\n this.dialogSelectedAddItems = items;\n }\n\n hideDialog() {\n this.isDialogVisible = false;\n\n this.descriptor.nextEvent(FormFieldEventTypeEnum.DialogLifecycle, FormlyFieldTableDialogMultiselectComponent, this, {\n eventSubtype: FormFieldEventDialogSubtype.VISIBILITY,\n dialogVisible: false\n });\n }\n\n addItems() {\n let value = this.formControl.value;\n if (!Array.isArray(value)) {\n value = [];\n }\n value = [...value, ...this.dialogSelectedAddItems];\n this.formControl.patchValue(value);\n this.formControl.markAsDirty();\n this.formControl.markAsTouched();\n this.dialogSelectedAddItems = [];\n this.dialogAreItemsLoaded = false;\n this.hideDialog();\n }\n\n removeItem(item: any) {\n let value = this.formControl.value;\n if (!Array.isArray(value)) {\n value = [];\n }\n const compareProperty = this.descriptor.mainTableDescriptor.trackProperty\n ? this.descriptor.mainTableDescriptor.trackProperty\n : this.descriptor.mainTableDescriptor.model.idProperty;\n if (!compareProperty) {\n throw new CommonsInternalError('Cannot compare items, please provide main table data key property or model id property.', {\n name: 'FormlyFieldTableDialogMultiselectComponentError'\n });\n }\n value = value.filter((i: any) => getObjectPropertyByPath(i, compareProperty) !== getObjectPropertyByPath(item, compareProperty));\n this.formControl.patchValue(value);\n this.formControl.markAsTouched();\n this.formControl.markAsDirty();\n this.dialogAreItemsLoaded = false;\n }\n\n public onSearch(event: Event) {\n const query = (event.target as HTMLInputElement).value;\n this.searchDebounceSubject.next(query);\n }\n}\n","<mng-table [descriptor]=\"descriptor.mainTableDescriptor\" [items]=\"itemsAsync\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-row justify-content-end align-items-center table-header pt-0\">\n <label class=\"mng-datatable-form-label p-0 m-0\" [for]=\"key\"\n >{{ props.label! | translate }}\n @if (props.required && props['hideRequiredMarker'] !== true) {\n <span>*</span>\n }\n </label>\n @if (hasAddAction && !options.formState?.disabled) {\n <button\n pButton\n pRipple\n type=\"button\"\n icon=\"pi pi-plus\"\n class=\"p-button-rounded mng-button-xs\"\n (click)=\"openAddDialog()\"\n [disabled]=\"formControl!.disabled\"></button>\n }\n </div>\n </ng-template>\n <ng-template mngTemplate=\"columnAction\" let-item=\"rowItem\">\n @if (hasDeleteAction && !options.formState?.disabled) {\n <button\n pButton\n pRipple\n type=\"button\"\n icon=\"pi pi-trash\"\n class=\"p-button-rounded p-button-danger mng-button-xs\"\n (click)=\"removeItem(item)\"\n [disabled]=\"formControl!.disabled\"></button>\n }\n </ng-template>\n</mng-table>\n\n@if (hasAddAction) {\n <p-dialog\n [(visible)]=\"isDialogVisible\"\n [draggable]=\"false\"\n [header]=\"'general.addItem' | translate: {item: props.label! | translate}\"\n [modal]=\"true\"\n appendTo=\"body\"\n styleClass=\"p-fluid mng-dialog mng-dialog-sm mng-formly-field-table-multiselect-dialog\">\n <ng-template pTemplate=\"content\" class=\"table-container\" mngDialogKeydownHandler>\n <div class=\"h-full flex flex-column\">\n <div class=\"flex-grow-1 formly-field-table-multiselect-dialog-form-container\">\n <div class=\"mng-formly-field-table-multiselect-dialog-table\">\n <mng-table\n #addTableComponent\n [descriptor]=\"descriptor.lookupTableDescriptor\"\n [globalFilterFields]=\"descriptor.searchFields\"\n [result]=\"addItemsAsync\"\n [selectionEnabled]=\"true\"\n [loading]=\"dialogIsLoading$\"\n (selectionChange)=\"onSelectionChange($event)\">\n @if (descriptor.searchEnabled) {\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex\">\n <span class=\"p-input-icon-left ml-auto\" [ngStyle]=\"{width: 'unset'}\">\n <i class=\"pi pi-search\"></i>\n <input pInputText type=\"text\" (input)=\"onSearch($event)\" [placeholder]=\"'general.search' | translate\" />\n </span>\n </div>\n </ng-template>\n }\n </mng-table>\n </div>\n </div>\n <div class=\"flex flex-row justify-content-end mng-formly-field-table-multiselect-dialog-footer\">\n <button pButton pRipple type=\"button\" [label]=\"'general.cancel' | translate\" icon=\"pi pi-times\" class=\"p-button-text\" (click)=\"hideDialog()\"></button>\n <button\n pButton\n pRipple\n type=\"button\"\n [label]=\"'general.add' | translate\"\n icon=\"pi pi-check\"\n class=\"p-button-primary\"\n (click)=\"addItems()\"\n [loading]=\"(dialogIsLoading$ | async) ?? false\"\n loadingIcon=\"pi pi-spin pi-spinner\"\n [disabled]=\"form.disabled\"></button>\n </div>\n </div>\n </ng-template>\n </p-dialog>\n}\n","import {ChangeDetectionStrategy, Component} from '@angular/core';\n\nimport {FieldType, FormlyModule} from '@ngx-formly/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {TabViewModule} from 'primeng/tabview';\n\nimport {CommonsFormlyFieldConfig} from '@mediusinc/mng-commons/tableview/api';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-tabs',\n templateUrl: './formly-field-tabs.component.html',\n imports: [TabViewModule, TranslateModule, FormlyModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldTabsComponent extends FieldType<CommonsFormlyFieldConfig> {}\n","<p-tabView [scrollable]=\"true\">\n @for (tab of field.fieldGroup; track tab) {\n <p-tabPanel [header]=\"tab.props?.label! | translate\" [headerStyleClass]=\"formControl!.valid ? 'p-tabview-title' : undefined\">\n <ng-template pTemplate=\"header\">\n <span class=\"p-tabview-title\" [class.p-tabview-title-error]=\"formState.submittedOn && formState['tab_' + (tab.id ? tab.id : tab.props?.label!) + '_invalid']\">{{\n tab.props?.label! | translate\n }}</span>\n </ng-template>\n <formly-field [field]=\"tab\"></formly-field>\n </p-tabPanel>\n }\n</p-tabView>\n","import {ChangeDetectionStrategy, Component} from '@angular/core';\n\nimport {FieldWrapper, FormlyModule} from '@ngx-formly/core';\nimport {FormlyFieldConfig} from '@ngx-formly/core/lib/models/fieldconfig';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-no-label-wrapper',\n templateUrl: './formly-field-no-label-wrapper.component.html',\n imports: [FormlyModule, TranslateModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldNoLabelWrapperComponent extends FieldWrapper {\n public shouldShowError() {\n if (this.field.type !== 'formly-group' || (this.field.validators && Object.keys(this.field.validators).length > 0)) {\n return true;\n }\n return false;\n }\n\n public sanitizeErrorsForGroups(field: FormlyFieldConfig) {\n if (field.type === 'formly-group' && field.formControl?.errors && field.validators) {\n const errors: {[key: string]: any} = {};\n for (const key of Object.keys(field.formControl.errors)) {\n if (Object.prototype.hasOwnProperty.call(field.validators, key)) {\n errors[key] = field.validators[key];\n }\n }\n\n return {...field, formControl: {...field.formControl, errors}} as FormlyFieldConfig;\n }\n\n return field;\n }\n}\n","<div [class]=\"props['descriptor']?.['fieldClassName'] ?? 'field table'\">\n <ng-container #fieldComponent></ng-container>\n @if (props['descriptor']?.['helpText']) {\n <small class=\"block\">{{ props['descriptor']?.['helpText'] | translate }}</small>\n }\n @if (showError && shouldShowError()) {\n <small class=\"block p-error\">\n <formly-validation-message [field]=\"sanitizeErrorsForGroups(field)\"></formly-validation-message>\n </small>\n }\n</div>\n","import {ChangeDetectionStrategy, Component, OnInit} from '@angular/core';\n\nimport {FieldWrapper, FormlyModule} from '@ngx-formly/core';\nimport {TranslateModule} from '@ngx-translate/core';\n\nimport {AFieldDescriptor} from '@mediusinc/mng-commons/tableview/api';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-wrapper',\n templateUrl: './formly-field-wrapper.component.html',\n imports: [TranslateModule, FormlyModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormlyFieldWrapperComponent extends FieldWrapper implements OnInit {\n public ngOnInit() {\n const descriptor = this.props?.['descriptor'] as AFieldDescriptor<any, any>;\n if (this.formState.disabled && descriptor.isLocalized) {\n this.addMissingTranslationHelperText();\n }\n }\n\n private addMissingTranslationHelperText(): void {\n if (!this.model[this.props?.['descriptor'].property + 'Translated'] && this.props?.['descriptor']?.property !== 'id') {\n this.props?.['descriptor']?.withHelpText('mngEditor.localizations.missingTranslation');\n this.field.className += ' localized-input-border-orange';\n } else {\n this.props?.['descriptor']?.withHelpText('');\n }\n }\n}\n","<div [class]=\"props['descriptor']?.['fieldClassName'] ?? 'field'\">\n <div class=\"grid mt-0\">\n @if (props.label) {\n <label [for]=\"key\" class=\"col\" [class]=\"props['descriptor']?.['labelClassName'] ?? ''\"\n >{{ props!.label! | translate }}\n @if (props.required && props['hideRequiredMarker'] !== true) {\n <span>*</span>\n }\n </label>\n }\n </div>\n <ng-container #fieldComponent></ng-container>\n @if (props['descriptor']?.['helpText']) {\n <small class=\"block\">{{ props['descriptor']?.['helpText'] | translate }}</small>\n }\n @if (showError) {\n <small class=\"p-error block\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n }\n</div>\n","import {DatePipe} from '@angular/common';\n\nimport {WrapperOption} from '@ngx-formly/core/lib/models/config';\nimport {TranslateService} from '@ngx-translate/core';\nimport {Observable} from 'rxjs';\n\nimport {CommonsFormlyFieldConfig, FieldInputDescriptor} from '@mediusinc/mng-commons/tableview/api';\n\nimport {FormlyFieldActionComponent} from '../components/formly/fields/formly-field-action/formly-field-action.component';\nimport {FormlyFieldAutocompleteComponent} from '../components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component';\nimport {FormlyFieldCustomComponent} from '../components/formly/fields/formly-field-custom/formly-field-custom.component';\nimport {FormlyFieldDropdownComponent} from '../components/formly/fields/formly-field-dropdown/formly-field-dropdown.component';\nimport {FormlyFieldFieldsetComponent} from '../components/formly/fields/formly-field-fieldset/formly-field-fieldset.component';\nimport {FormlyFieldInputComponent} from '../components/formly/fields/formly-field-input/formly-field-input.component';\nimport {FormlyFieldLabelComponent} from '../components/formly/fields/formly-field-label/formly-field-label.component';\nimport {FormlyFieldLookupDialogComponent} from '../components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component';\nimport {FormlyFieldTableDialogFormComponent} from '../components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component';\nimport {FormlyFieldTableDialogMultiselectComponent} from '../components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component';\nimport {FormlyFieldTabsComponent} from '../components/formly/fields/formly-field-tabs/formly-field-tabs.component';\nimport {FormlyFieldNoLabelWrapperComponent} from '../components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component';\nimport {FormlyFieldWrapperComponent} from '../components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component';\nimport {CommonsFormlyTypeConfig} from '../models/formly-config.model';\n\nexport const formlyWrappersConfig: WrapperOption[] = [\n {name: 'field', component: FormlyFieldWrapperComponent},\n {name: 'field-no-label', component: FormlyFieldNoLabelWrapperComponent}\n];\n\nexport const formlyTypesConfig: CommonsFormlyTypeConfig[] = [\n {\n name: 'label',\n component: FormlyFieldLabelComponent,\n wrappers: ['field']\n },\n {\n name: 'input',\n component: FormlyFieldInputComponent,\n wrappers: ['field']\n },\n {name: 'string', extends: 'input'},\n {\n name: 'number',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'number'\n }\n }\n },\n {\n name: 'currency',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'number'\n }\n }\n },\n {\n name: 'integer',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'number'\n }\n }\n },\n {\n name: 'textarea',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'textarea'\n }\n }\n },\n {\n name: 'switch',\n component: FormlyFieldInputComponent,\n defaultOptions: {\n props: {\n type: 'switch'\n }\n }\n },\n {\n name: 'radio',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'radio'\n }\n }\n },\n {\n name: 'datepicker',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'datepicker'\n }\n }\n },\n {\n name: 'mask',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'mask'\n }\n }\n },\n {\n name: 'file',\n extends: 'input',\n defaultOptions: {\n props: {\n type: 'file'\n }\n }\n },\n {\n name: 'imageUrl',\n component: FormlyFieldInputComponent,\n defaultOptions: {\n props: {\n type: 'imageUrl'\n }\n },\n wrappers: ['field']\n },\n {\n name: 'dropdown',\n component: FormlyFieldDropdownComponent,\n wrappers: ['field']\n },\n {name: 'enum', extends: 'dropdown'},\n {\n name: 'autocomplete',\n component: FormlyFieldAutocompleteComponent,\n wrappers: ['field']\n },\n {\n name: 'action',\n component: FormlyFieldActionComponent,\n wrappers: ['field-no-label']\n },\n {\n name: 'dialog',\n component: FormlyFieldLookupDialogComponent,\n wrappers: ['field']\n },\n {\n name: 'table-dialog-multiselect',\n component: FormlyFieldTableDialogMultiselectComponent,\n wrappers: ['field-no-label']\n },\n {\n name: 'table-dialog-form',\n component: FormlyFieldTableDialogFormComponent,\n wrappers: ['field-no-label']\n },\n {\n name: 'tabs',\n component: FormlyFieldTabsComponent,\n wrappers: []\n },\n {\n name: 'fieldset',\n component: FormlyFieldFieldsetComponent,\n wrappers: []\n },\n {\n name: 'formly-group',\n wrappers: ['field-no-label']\n },\n {\n name: 'custom',\n component: FormlyFieldCustomComponent,\n wrappers: []\n }\n];\n\nexport function getRequiredValidationMessage(translate: TranslateService): (error: any, field: CommonsFormlyFieldConfig) => Observable<string> {\n return (error: any, field: CommonsFormlyFieldConfig) => {\n const fieldLabel = field.props.label || 'field';\n const fieldName = translate.instant(fieldLabel);\n return translate.instant('mngEditor.validation.required', {field: fieldName});\n };\n}\n\nexport function getMinLengthValidationMessage(translate: TranslateService): (error: any, field: CommonsFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: CommonsFormlyFieldConfig) => {\n const fieldLabel = field.props.label ?? 'field';\n const fieldName = translate.instant(fieldLabel);\n return translate.instant('mngEditor.validation.minLength', {field: fieldName, minLength: field.props.minLength});\n };\n}\n\nexport function getMaxLengthValidationMessage(translate: TranslateService): (error: any, field: CommonsFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: CommonsFormlyFieldConfig) => {\n const fieldLabel = field.props.label || 'field';\n const fieldName = translate.instant(fieldLabel);\n return translate.instant('mngEditor.validation.maxLength', {field: fieldName, maxLength: field.props.maxLength});\n };\n}\n\nexport function getMinValidationMessage(translate: TranslateService): (error: any, field: CommonsFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: CommonsFormlyFieldConfig) => {\n const fieldLabel = field.props.label ?? 'field';\n const fieldName = translate.instant(fieldLabel);\n return translate.instant('mngEditor.validation.min', {field: fieldName, min: field.props.min});\n };\n}\n\nexport function getMaxValidationMessage(translate: TranslateService): (error: any, field: CommonsFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: CommonsFormlyFieldConfig) => {\n const fieldLabel = field.props.label || 'field';\n const fieldName = translate.instant(fieldLabel);\n return translate.instant('mngEditor.validation.max', {field: fieldName, max: field.props.max});\n };\n}\n\nexport function getTextPatternValidationMessage(translate: TranslateService): (error: any, field: CommonsFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: CommonsFormlyFieldConfig) => {\n const fieldLabel = field.props.label ?? 'field';\n const fieldName = translate.instant(fieldLabel);\n return translate.instant('mngEditor.validation.pattern', {field: fieldName, pattern: field.props.pattern});\n };\n}\n\nexport function getEmailValidationMessage(translate: TranslateService): (error: any, field: CommonsFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: CommonsFormlyFieldConfig) => {\n const fieldLabel = field.props.label || 'field';\n const fieldName = translate.instant(fieldLabel);\n return translate.instant('mngEditor.validation.email', {field: fieldName});\n };\n}\n\nexport function getMinDateValidationMessage(translate: TranslateService, datePipe: DatePipe): (error: any, field: CommonsFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: CommonsFormlyFieldConfig) => {\n const inputDescriptor = field.props.descriptor as FieldInputDescriptor<any>;\n const minDate = inputDescriptor.datePickerMin;\n\n if (!minDate) return '';\n let dateString = datePipe.transform(minDate, 'dd. MM. yyyy') ?? '';\n\n if (inputDescriptor.datePickerShowTime) {\n dateString += datePipe.transform(minDate, ' HH:mm:ss');\n }\n\n return translate.instant('mngEditor.validation.minDate', {min: dateString});\n };\n}\n\nexport function getMaxDateValidationMessage(translate: TranslateService, datePipe: DatePipe): (error: any, field: CommonsFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: CommonsFormlyFieldConfig) => {\n const inputDescriptor = field.props.descriptor as FieldInputDescriptor<any>;\n const maxDate = inputDescriptor.datePickerMax;\n\n if (!maxDate) return '';\n let dateString = datePipe.transform(maxDate, 'dd. MM. yyyy') ?? '';\n\n if (inputDescriptor.datePickerShowTime) {\n dateString += datePipe.transform(maxDate, ' HH:mm:ss');\n }\n\n return translate.instant('mngEditor.validation.maxDate', {max: dateString});\n };\n}\n\nexport const getFormlyValidationMessages = (translate: TranslateService, datePipe: DatePipe): any[] => {\n return [\n {name: 'required', message: getRequiredValidationMessage(translate)},\n {name: 'minLength', message: getMinLengthValidationMessage(translate)},\n {name: 'maxLength', message: getMaxLengthValidationMessage(translate)},\n {name: 'min', message: getMinValidationMessage(translate)},\n {name: 'max', message: getMaxValidationMessage(translate)},\n {name: 'pattern', message: getTextPatternValidationMessage(translate)},\n {name: 'email', message: getEmailValidationMessage(translate)},\n {name: 'minDate', message: getMinDateValidationMessage(translate, datePipe)},\n {name: 'maxDate', message: getMaxDateValidationMessage(translate, datePipe)}\n ];\n};\n","import {DatePipe} from '@angular/common';\n\nimport {ConfigOption} from '@ngx-formly/core';\nimport {TranslateService} from '@ngx-translate/core';\n\nimport {TableviewFeatureConfig} from '../../tableview/services/tableview-feature-config.token';\nimport {formlyTypesConfig, formlyWrappersConfig, getFormlyValidationMessages} from '../helpers/formly-config';\n\nexport function commonsFormlyConfigProvider(translate: TranslateService, datePipe: DatePipe, config: TableviewFeatureConfig = {}): ConfigOption {\n const merge = config.formly?.merge ?? true;\n\n let types = formlyTypesConfig;\n if (config.formly?.types) {\n if (!merge) {\n types = [];\n }\n types = [...types, ...config.formly.types];\n }\n\n let wrappers = formlyWrappersConfig;\n if (config.formly?.wrappers) {\n if (!merge) {\n wrappers = [];\n }\n wrappers = [...wrappers, ...config.formly.wrappers];\n }\n\n let validationMessages = getFormlyValidationMessages(translate, datePipe);\n if (typeof config.formly?.getValidationMessages === 'function') {\n if (!merge) {\n validationMessages = [];\n }\n validationMessages = [...validationMessages, ...config.formly.getValidationMessages(translate)];\n }\n\n return {\n types: types,\n wrappers: wrappers,\n validationMessages: validationMessages\n };\n}\n","import {NgTemplateOutlet} from '@angular/common';\nimport {Component, Input, OnInit, Signal, TemplateRef, computed, contentChildren, inject} from '@angular/core';\nimport {RouterOutlet} from '@angular/router';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {SharedModule} from 'primeng/api';\nimport {ToolbarModule} from 'primeng/toolbar';\n\nimport {DataListParams, TemplateDirective, findTemplateByName} from '@mediusinc/mng-commons/core';\nimport {TableLoadEvent} from '@mediusinc/mng-commons/table/api';\nimport {ActionDescriptorInst, ActionPositionEnum, ITableviewDataProvider, TableviewActionDefaultCategories, TableviewDescriptorInst} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ActionComponent} from '../../../action/components/action/action.component';\nimport {ActionTableComponent} from '../../../action/components/table/action-table.component';\nimport {provideViewContainer} from '../../../action/services/providers/provide-view-container';\nimport {ViewContainer} from '../../../action/services/view-container.service';\n\n@Component({\n standalone: true,\n selector: 'mng-tableview',\n templateUrl: './tableview.component.html',\n imports: [ToolbarModule, SharedModule, TranslateModule, NgTemplateOutlet, ActionComponent, ActionTableComponent, TemplateDirective, RouterOutlet],\n providers: [provideViewContainer()]\n})\nexport class TableviewComponent<Item = any, Service = undefined, Sorts = keyof Item, Filters extends keyof any = keyof Item> implements OnInit {\n public readonly viewContainer = inject(ViewContainer, {optional: true});\n\n @Input({required: true}) public descriptor!: TableviewDescriptorInst<Item, Sorts, Filters>;\n @Input() public dataProvider?: ITableviewDataProvider<Item, Service, Sorts, Filters>;\n @Input() public actions: Array<ActionDescriptorInst<any>> = [];\n\n public tableActions: ActionDescriptorInst<Item>[] = [];\n public toolbarLeftActions: ActionDescriptorInst<Item>[] = [];\n public toolbarRightActions: ActionDescriptorInst<Item>[] = [];\n\n public tableParams?: DataListParams;\n\n public hasItemSelectionAction = false;\n public selectedItems: Item[] = [];\n\n public templates = contentChildren(TemplateDirective);\n public footerTemplate: Signal<TemplateRef<any> | null> = computed(() => findTemplateByName([...this.templates()], 'footer'));\n public rowExpandTemplate: Signal<TemplateRef<any> | null> = computed(() => findTemplateByName([...this.templates()], 'rowExpandContent'));\n\n ngOnInit() {\n if (this.viewContainer) {\n this.viewContainer.actions = this.actions;\n }\n\n if (this.viewContainer && this.dataProvider) {\n this.viewContainer.dataProvider = this.dataProvider;\n }\n\n for (const action of this.actions.filter(value => value.positionTableviewCategories?.includes(TableviewActionDefaultCategories.READ) ?? true)) {\n switch (action.position) {\n case ActionPositionEnum.ToolbarLeft:\n this.toolbarLeftActions.push(action);\n break;\n case ActionPositionEnum.ToolbarRight:\n this.toolbarRightActions.push(action);\n break;\n case ActionPositionEnum.TableHeader:\n case ActionPositionEnum.RowInline:\n case ActionPositionEnum.RowClick:\n this.tableActions.push(action);\n break;\n }\n }\n\n this.toolbarRightActions = this.toolbarRightActions.reverse();\n\n this.hasItemSelectionAction = [...this.toolbarLeftActions, ...this.toolbarRightActions].some(e => e.hasItemsSelection);\n }\n\n public onTableLoad(event: TableLoadEvent) {\n this.tableParams = event.params;\n }\n\n public selectionChange(selectedItems: Array<Item>): void {\n this.selectedItems = selectedItems;\n }\n}\n","<div class=\"mng-tableview\">\n <div class=\"card\">\n @if (toolbarLeftActions.length > 0 || toolbarRightActions.length > 0) {\n <p-toolbar styleClass=\"mb-4\">\n <ng-template pTemplate=\"left\">\n @for (action of toolbarLeftActions; track action) {\n <mng-action [action]=\"action\" [dataListParams]=\"tableParams\" [hostComponent]=\"this\" [selectedItems]=\"selectedItems\"></mng-action>\n }\n </ng-template>\n <ng-template pTemplate=\"right\">\n @for (action of toolbarRightActions; track action) {\n <mng-action [action]=\"action\" [dataListParams]=\"tableParams\" [hostComponent]=\"this\" [selectedItems]=\"selectedItems\"></mng-action>\n }\n </ng-template>\n </p-toolbar>\n }\n\n <mng-action-table\n [descriptor]=\"descriptor.table\"\n [dataProvider]=\"dataProvider\"\n [useQueryParams]=\"true\"\n [actions]=\"tableActions\"\n [selectionEnabled]=\"hasItemSelectionAction\"\n [selectionMode]=\"'multiple'\"\n (tableLoad)=\"onTableLoad($event)\"\n (selectionChange)=\"selectionChange($event)\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-column md:flex-row md:justify-content-between table-header\">\n <h5 class=\"p-0 m-0\">{{ descriptor.tableTitle ?? '' | translate }}</h5>\n </div>\n </ng-template>\n @if (rowExpandTemplate()) {\n <ng-template mngTemplate=\"rowExpandContent\" let-item=\"rowItem\">\n <ng-container *ngTemplateOutlet=\"rowExpandTemplate(); context: {rowItem: item}\"></ng-container>\n </ng-template>\n }\n\n @if (footerTemplate()) {\n <ng-template mngTemplate=\"footer\" let-data=\"data\" let-totalCount=\"totalCount\">\n <ng-container *ngTemplateOutlet=\"footerTemplate(); context: {data, totalCount}\"></ng-container>\n </ng-template>\n }\n </mng-action-table>\n </div>\n\n <router-outlet></router-outlet>\n</div>\n","import {Component, Input} from '@angular/core';\n\nimport {TableviewInput} from '@mediusinc/mng-commons/tableview/api';\n\nimport {TableviewComponent} from '../tableview/tableview.component';\n\n@Component({\n standalone: true,\n selector: 'mng-tableview-route',\n imports: [TableviewComponent],\n templateUrl: './tableview-route.component.html'\n})\nexport class TableviewRouteComponent<Item, Service = undefined, Sorts = keyof Item, Filters extends keyof any = keyof Item> {\n @Input({required: true}) public tableview!: TableviewInput<Item, Service, Sorts, Filters>;\n}\n","<mng-tableview [descriptor]=\"tableview.descriptor\" [dataProvider]=\"tableview.dataProvider\" [actions]=\"tableview.actions\"> </mng-tableview>\n","import {Type} from '@angular/core';\nimport {Route} from '@angular/router';\n\nimport {APermissions, CommonsRouteData, RouteBuilder} from '@mediusinc/mng-commons/core';\nimport {\n ActionDescriptorInst,\n ActionEditorAddDescriptorInst,\n ActionEditorDetailsDescriptorInst,\n ActionEditorEditDescriptorInst,\n ITableviewDataProvider,\n TableviewActionDefaultCategories,\n TableviewDescriptorInst,\n TableviewRouteData\n} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ActionRouteComponent} from '../../action/components/route/action-route.component';\nimport {unsavedChangesGuard} from '../../action/guards/unsaved-changes.guard';\n\nexport class TableviewRouteBuilderInternal extends RouteBuilder {\n private readonly descriptor?: TableviewDescriptorInst<any>;\n private readonly dataProvider?: ITableviewDataProvider;\n private readonly actions?: Array<ActionDescriptorInst<any>>;\n private readonly isFromComponent: boolean = true;\n\n protected override routeData: TableviewRouteData = {breadcrumb: null};\n private hasDetails = true;\n private detailsPath = ':itemId';\n private hasEdit = true;\n private editPath = ':itemId/edit';\n private hasAdd = true;\n private addPath = 'add';\n private hasDelete = true;\n\n private tableviewPermissions?: {\n [key: string]: APermissions;\n };\n\n public constructor(\n private path: string,\n options: Partial<{\n component: Type<any>;\n descriptor: TableviewDescriptorInst<any>;\n dataProvider: ITableviewDataProvider;\n actions: Array<ActionDescriptorInst<any>>;\n }>\n ) {\n super({path: path, component: options.component ?? TableviewRouteBuilder});\n\n if (!options.component) {\n this.isFromComponent = false;\n this.descriptor = options.descriptor;\n this.dataProvider = options.dataProvider;\n this.actions = options.actions;\n\n this.hasDetails = false;\n this.hasAdd = false;\n this.hasEdit = false;\n if (this.actions) {\n for (const action of this.actions) {\n if (action instanceof ActionEditorDetailsDescriptorInst) {\n this.hasDetails = true;\n } else if (action instanceof ActionEditorAddDescriptorInst) {\n this.hasAdd = true;\n } else if (action instanceof ActionEditorEditDescriptorInst) {\n this.hasEdit = true;\n }\n }\n }\n }\n }\n\n public withReadOnly(permissions?: APermissions): this {\n if (permissions) {\n this.withPermissions(permissions);\n }\n this.withAdd(false);\n this.withEdit(false);\n this.withDelete(false);\n return this;\n }\n\n public withDetails(hasDetails = true, permissions?: APermissions, path?: string): this {\n this.hasDetails = hasDetails;\n if (permissions) {\n this.withPermissions(undefined, undefined, undefined, undefined, permissions);\n }\n if (path) {\n this.detailsPath = path;\n }\n return this;\n }\n\n public withAdd(hasAdd = true, permissions?: APermissions, path?: string): this {\n this.hasAdd = hasAdd;\n if (permissions) {\n this.withPermissions(undefined, permissions);\n }\n if (path) {\n this.addPath = path;\n }\n return this;\n }\n\n public withEdit(hasEdit = true, permissions?: APermissions, path?: string): this {\n this.hasEdit = hasEdit;\n if (permissions) {\n this.withPermissions(undefined, undefined, permissions);\n }\n if (path) {\n this.editPath = path;\n }\n return this;\n }\n\n public withDelete(hasDelete = true, permissions?: APermissions): this {\n this.hasDelete = hasDelete;\n if (permissions) {\n this.withPermissions(undefined, undefined, undefined, permissions);\n }\n return this;\n }\n\n public override withPermissions(read?: APermissions, add?: APermissions, edit?: APermissions, delet?: APermissions, details?: APermissions): this {\n if (!this.tableviewPermissions) {\n this.tableviewPermissions = {};\n }\n if (read) {\n this.tableviewPermissions[TableviewActionDefaultCategories.READ] = read;\n }\n if (add) {\n this.tableviewPermissions[TableviewActionDefaultCategories.ADD] = add;\n }\n if (edit) {\n this.tableviewPermissions[TableviewActionDefaultCategories.EDIT] = edit;\n }\n if (delet) {\n this.tableviewPermissions[TableviewActionDefaultCategories.DELETE] = delet;\n }\n if (details) {\n this.tableviewPermissions[TableviewActionDefaultCategories.DETAILS] = details;\n }\n return this;\n }\n\n public withPermissionByCategory(key: string, permissions: APermissions): this {\n if (!this.tableviewPermissions) {\n this.tableviewPermissions = {};\n }\n this.tableviewPermissions[key] = permissions;\n return this;\n }\n\n public withPermissionsObject(permissions: {[key: string]: APermissions}): this {\n this.tableviewPermissions = permissions;\n return this;\n }\n\n public override build(): Route {\n if (!this.isFromComponent) {\n this.routeData.tableview = {\n descriptor: this.descriptor!,\n dataProvider: this.dataProvider!\n };\n if (this.actions) {\n this.routeData.tableview.actions = this.actions;\n }\n }\n if (this.tableviewPermissions) {\n this.routeData.tableviewPermissions = {...this.tableviewPermissions};\n }\n this.routeData.tableviewActions = {\n hasAdd: this.hasAdd,\n hasEdit: this.hasEdit,\n hasDetails: this.hasDetails,\n hasDelete: this.hasDelete\n };\n this.withData(this.routeData);\n if (this.tableviewPermissions?.[TableviewActionDefaultCategories.READ]) {\n this.routeData.permissions = this.tableviewPermissions[TableviewActionDefaultCategories.READ];\n }\n\n // copy route data for children, reset breadcrumbs menu items and permission\n const childrenRouteData: CommonsRouteData = {\n ...this.routeData,\n breadcrumb: null,\n menuItems: undefined,\n permissions: undefined\n };\n\n // list route\n const rootChildRouteBuilder = RouteBuilder.create('', ActionRouteComponent);\n rootChildRouteBuilder.withData({...childrenRouteData});\n if (this.tableviewPermissions?.[TableviewActionDefaultCategories.READ]) {\n rootChildRouteBuilder.withPermissions(this.tableviewPermissions[TableviewActionDefaultCategories.READ]);\n }\n this.addChildBuilder(rootChildRouteBuilder);\n\n // add route\n if (this.hasAdd) {\n const routeBuilder = RouteBuilder.create(this.addPath, ActionRouteComponent);\n routeBuilder.withData({...childrenRouteData});\n if (this.tableviewPermissions?.[TableviewActionDefaultCategories.ADD]) {\n routeBuilder.withPermissions(this.tableviewPermissions[TableviewActionDefaultCategories.ADD]);\n }\n this.addChildBuilder(routeBuilder);\n routeBuilder.withCanDeactivate(unsavedChangesGuard);\n }\n if (this.hasDetails) {\n const routeBuilder = RouteBuilder.create(this.detailsPath, ActionRouteComponent);\n routeBuilder.withData({...childrenRouteData});\n if (this.tableviewPermissions?.[TableviewActionDefaultCategories.DETAILS]) {\n routeBuilder.withPermissions(this.tableviewPermissions[TableviewActionDefaultCategories.DETAILS]);\n }\n this.addChildBuilder(routeBuilder);\n }\n if (this.hasEdit) {\n const routeBuilder = RouteBuilder.create(this.editPath, ActionRouteComponent);\n routeBuilder.withData({...childrenRouteData});\n if (this.tableviewPermissions?.[TableviewActionDefaultCategories.EDIT]) {\n routeBuilder.withPermissions(this.tableviewPermissions[TableviewActionDefaultCategories.EDIT]);\n }\n this.addChildBuilder(routeBuilder);\n routeBuilder.withCanDeactivate(unsavedChangesGuard);\n }\n\n return super.build();\n }\n\n protected override findMenuItemPermissions() {\n const menuItemPermission = super.findMenuItemPermissions();\n if (!menuItemPermission) {\n return this.tableviewPermissions?.[TableviewActionDefaultCategories.READ];\n }\n return menuItemPermission;\n }\n}\n\nexport class TableviewRouteBuilder {\n public static fromComponent<C>(path: string, component: Type<C>): TableviewRouteBuilderInternal {\n return new TableviewRouteBuilderInternal(path, {component});\n }\n\n public static from(\n path: string,\n descriptor: TableviewDescriptorInst<any>,\n dataProvider: ITableviewDataProvider,\n actions: Array<ActionDescriptorInst<any>>\n ): TableviewRouteBuilderInternal {\n return new TableviewRouteBuilderInternal(path, {descriptor, dataProvider, actions});\n }\n}\n","import {DatePipe} from '@angular/common';\n\nimport {FORMLY_CONFIG} from '@ngx-formly/core';\nimport {TranslateService} from '@ngx-translate/core';\n\nimport {CommonsFeature, CommonsFeatureTypeEnum} from '@mediusinc/mng-commons/core';\nimport {DATA_LANGUAGE_DROPDOWN_COMPONENT_IT, DataProviderExecutor} from '@mediusinc/mng-commons/tableview/api';\n\nimport {ActionEditorComponent} from './action/components/editor/action-editor.component';\nimport {DataLanguageDropdownComponent} from './action/components/localization/data-language-dropdown.component';\nimport {ActionErrorMapperService, DefaultActionErrorMapperService} from './action/services/action-error-mapper.service';\nimport {ActionExecutorService} from './action/services/action-executor.service';\nimport {DefaultDataProviderExecutor} from './action/services/data-provider-executor.service';\nimport {NavigationService} from './action/services/navigation.service';\nimport {RootActionExecutorService} from './action/services/root-action-executor.service';\nimport {ACTION_EDITOR_COMPONENT_IT} from './action/services/tokens/action-editor.token';\nimport {commonsFormlyConfigProvider} from './editor/services/formly-config.provider';\nimport {COMMONS_TABLEVIEW_FEATURE_CONFIG_IT, TableviewFeatureConfig} from './tableview/services/tableview-feature-config.token';\n\n/**\n * Prepares providers for usage of the tableview functionalities.\n *\n * @returns {CommonsFeature} The `CommonsFeature` object with the layout configuration.\n */\nexport function withTableview(config?: TableviewFeatureConfig): CommonsFeature {\n return {\n type: CommonsFeatureTypeEnum.Tableview,\n providers: [\n DatePipe,\n NavigationService,\n {\n provide: COMMONS_TABLEVIEW_FEATURE_CONFIG_IT,\n useValue: config\n },\n {\n provide: FORMLY_CONFIG,\n multi: true,\n useFactory: commonsFormlyConfigProvider,\n deps: [TranslateService, DatePipe, COMMONS_TABLEVIEW_FEATURE_CONFIG_IT]\n },\n {\n provide: ACTION_EDITOR_COMPONENT_IT,\n useValue: ActionEditorComponent\n },\n {\n provide: DATA_LANGUAGE_DROPDOWN_COMPONENT_IT,\n useValue: DataLanguageDropdownComponent\n },\n {\n provide: ActionErrorMapperService,\n useClass: DefaultActionErrorMapperService\n },\n RootActionExecutorService,\n {\n provide: ActionExecutorService,\n useExisting: RootActionExecutorService\n },\n DefaultDataProviderExecutor,\n {\n provide: DataProviderExecutor,\n useExisting: DefaultDataProviderExecutor\n }\n ]\n };\n}\n","// action components\nexport * from './action/components/action/action.component';\nexport * from './action/components/editor/action-editor.component';\nexport * from './action/components/localization/data-language-dropdown.component';\nexport * from './action/components/route/action-route.component';\nexport * from './action/components/table/action-table.component';\n\n// action guards\nexport * from './action/guards/unsaved-changes.guard';\n\n// action helpers\nexport * from './action/helpers/i18n';\nexport * from './action/helpers/notification';\nexport * from './action/helpers/styles';\n\n// action models\nexport * from './action/models/execution/action-context.model';\nexport * from './action/models/execution/action-instance.model';\nexport * from './action/models/execution/action-instance-state.model';\nexport * from './action/models/action-editor-dialog-data.model';\nexport * from './action/models/can-component-deactivate.model';\n\n// action services\nexport * from './action/services/providers/provide-action-executor';\nexport * from './action/services/providers/provide-view-container';\nexport * from './action/services/tokens/action-editor.token';\nexport * from './action/services/action-error-mapper.service';\nexport * from './action/services/action-executor.service';\nexport * from './action/services/component-action-executor.service';\nexport * from './action/services/data-provider-executor.service';\nexport * from './action/services/navigation.service';\nexport * from './action/services/root-action-executor.service';\nexport * from './action/services/view-container.service';\n\n// editor components\nexport * from './editor/components/editor/form-editor.component';\nexport * from './editor/components/formly/fields/formly-field-action/formly-field-action.component';\nexport * from './editor/components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component';\nexport * from './editor/components/formly/fields/formly-field-custom/formly-field-custom.component';\nexport * from './editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component';\nexport * from './editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component';\nexport * from './editor/components/formly/fields/formly-field-input/formly-field-input.component';\nexport * from './editor/components/formly/fields/formly-field-label/formly-field-label.component';\nexport * from './editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component';\nexport * from './editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component';\nexport * from './editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component';\nexport * from './editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component';\nexport * from './editor/components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component';\nexport * from './editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component';\n\n// editor helpers\nexport * from './editor/helpers/editor-formly';\nexport * from './editor/helpers/formly-config';\nexport * from './editor/helpers/notification';\n\n// editor models\nexport * from './editor/models/formly-config.model';\n\n// editor services\nexport * from './editor/services/formly-config.provider';\n\n// tableview components\nexport * from './tableview/components/route/tableview-route.component';\nexport * from './tableview/components/tableview/tableview.component';\n\n// tableview router\nexport * from './tableview/router/tableview-route-builder';\n\n// tableview services\nexport * from './tableview/services/tableview-feature-config.token';\n\n// provide\nexport * from './provide';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["mergeMap","i2","i3","i4.ActionExecutorService","i5.ViewContainer","i6","i1","take","i2.ActionExecutorService","i3.ViewContainer","i4","i5","i7","i8","i9","i10","i15"],"mappings":"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"}