@mediusinc/mng-commons 2.6.0-rc.2 → 3.0.0-rc.0

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 (283) hide show
  1. package/README.md +15 -4
  2. package/dev-scripts/version-info.js +1 -0
  3. package/esm2022/lib/api/models/filter-param.model.mjs +33 -0
  4. package/esm2022/lib/api/models/query-param.model.mjs +68 -0
  5. package/esm2022/lib/api/models/query-result.model.mjs +24 -0
  6. package/esm2022/lib/api/utils/medius-rest.util.mjs +255 -0
  7. package/esm2022/lib/api/utils/object-serializer.util.mjs +258 -0
  8. package/esm2022/lib/components/action/action.component.mjs +304 -0
  9. package/esm2022/lib/components/action/editor/action-editor.component.mjs +386 -0
  10. package/esm2022/lib/components/action/localization/data-language-dropdown.component.mjs +54 -0
  11. package/{esm2020 → esm2022}/lib/components/action/models/action-execution.model.mjs +1 -1
  12. package/esm2022/lib/components/action/models/tableview-action-default-categories.model.mjs +11 -0
  13. package/{esm2020 → esm2022}/lib/components/action/route/action-route.component.mjs +4 -4
  14. package/esm2022/lib/components/form/autocomplete/autocomplete.component.mjs +300 -0
  15. package/{esm2020 → esm2022}/lib/components/form/date-range/date-range.component.mjs +5 -5
  16. package/esm2022/lib/components/form/dropdown/dropdown.component.mjs +212 -0
  17. package/esm2022/lib/components/form/editor/form-editor.component.mjs +288 -0
  18. package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-action/formly-field-action.component.mjs +4 -4
  19. package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +5 -5
  20. package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-custom/formly-custom-field-base.model.mjs +4 -4
  21. package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-custom/formly-field-custom.component.mjs +6 -6
  22. package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +4 -4
  23. package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +4 -4
  24. package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +5 -5
  25. package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.mjs +4 -4
  26. package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +7 -7
  27. package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +4 -4
  28. package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +4 -4
  29. package/esm2022/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +19 -0
  30. package/{esm2020 → esm2022}/lib/components/form/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.mjs +4 -4
  31. package/{esm2020 → esm2022}/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +4 -4
  32. package/esm2022/lib/components/form/models/form-editor.event.mjs +49 -0
  33. package/esm2022/lib/components/layout/breadcrumb.component.mjs +34 -0
  34. package/{esm2020 → esm2022}/lib/components/layout/footer.component.mjs +4 -4
  35. package/{esm2020 → esm2022}/lib/components/layout/main-layout.component.mjs +4 -4
  36. package/esm2022/lib/components/layout/menu-item.component.mjs +297 -0
  37. package/{esm2020 → esm2022}/lib/components/layout/menu.component.mjs +4 -4
  38. package/{esm2020 → esm2022}/lib/components/layout/services/main-layout.component.service.mjs +4 -4
  39. package/{esm2020 → esm2022}/lib/components/layout/topbar-user.component.mjs +4 -4
  40. package/{esm2020 → esm2022}/lib/components/layout/topbar.component.mjs +4 -4
  41. package/{esm2020 → esm2022}/lib/components/layout/version.component.mjs +4 -4
  42. package/{esm2020 → esm2022}/lib/components/pages/error/error-page.component.mjs +4 -4
  43. package/{esm2020 → esm2022}/lib/components/pages/not-found/not-found-page.component.mjs +4 -4
  44. package/{esm2020 → esm2022}/lib/components/tableview/models/table.event.mjs +1 -1
  45. package/{esm2020 → esm2022}/lib/components/tableview/route/tableview-route.abstract.component.mjs +5 -5
  46. package/{esm2020 → esm2022}/lib/components/tableview/route/tableview-route.component.mjs +4 -4
  47. package/esm2022/lib/components/tableview/table/column-filter/column-filter.component.mjs +124 -0
  48. package/esm2022/lib/components/tableview/table/column-value/column-value.component.mjs +110 -0
  49. package/esm2022/lib/components/tableview/table/table.component.mjs +747 -0
  50. package/esm2022/lib/components/tableview/tableview.component.mjs +147 -0
  51. package/esm2022/lib/descriptors/action/action.descriptor.mjs +634 -0
  52. package/esm2022/lib/descriptors/editor/editor.descriptor.mjs +304 -0
  53. package/esm2022/lib/descriptors/table/table.descriptor.mjs +542 -0
  54. package/esm2022/lib/descriptors/tableview/tableview.descriptor.mjs +352 -0
  55. package/{esm2020 → esm2022}/lib/descriptors/types/table.type.mjs +1 -5
  56. package/{esm2020 → esm2022}/lib/directives/component.directive.mjs +5 -5
  57. package/{esm2020 → esm2022}/lib/directives/template.directive.mjs +5 -5
  58. package/esm2022/lib/mng-commons.module.mjs +465 -0
  59. package/{esm2020 → esm2022}/lib/pipes/boolean.pipe.mjs +4 -4
  60. package/{esm2020 → esm2022}/lib/pipes/class-map.pipe.mjs +4 -4
  61. package/{esm2020 → esm2022}/lib/pipes/enum.pipe.mjs +4 -4
  62. package/{esm2020 → esm2022}/lib/pipes/enumerate-async.pipe.mjs +4 -4
  63. package/{esm2020 → esm2022}/lib/pipes/enumerate.pipe.mjs +4 -4
  64. package/{esm2020 → esm2022}/lib/pipes/getter.pipe.mjs +4 -4
  65. package/{esm2020 → esm2022}/lib/pipes/i18n-property.pipe.mjs +4 -4
  66. package/{esm2020 → esm2022}/lib/pipes/json-path.pipe.mjs +4 -4
  67. package/{esm2020 → esm2022}/lib/pipes/locale-default-row-class.pipe.mjs +4 -4
  68. package/{esm2020 → esm2022}/lib/pipes/parametrize.pipe.mjs +4 -4
  69. package/{esm2020 → esm2022}/lib/pipes/template.pipe.mjs +4 -4
  70. package/esm2022/lib/router/route-builder.mjs +308 -0
  71. package/esm2022/lib/router/routes-builder.mjs +61 -0
  72. package/esm2022/lib/security/authorization.guard.mjs +15 -0
  73. package/{esm2020 → esm2022}/lib/security/authorization.service.mjs +4 -4
  74. package/esm2022/lib/services/action-executor.service.mjs +703 -0
  75. package/{esm2020 → esm2022}/lib/services/commons.service.mjs +4 -4
  76. package/esm2022/lib/services/configuration.service.mjs +150 -0
  77. package/{esm2020 → esm2022}/lib/services/internal/commons-init.service.mjs +4 -4
  78. package/{esm2020 → esm2022}/lib/services/mng-localstorage-config.service.mjs +4 -4
  79. package/{esm2020 → esm2022}/lib/services/navigation.service.mjs +4 -4
  80. package/{esm2020 → esm2022}/lib/services/router.service.mjs +4 -4
  81. package/{esm2020 → esm2022}/lib/services/version.service.mjs +4 -4
  82. package/{esm2020 → esm2022}/lib/services/view-container.component.service.mjs +4 -4
  83. package/esm2022/lib/styles/styles.util.mjs +42 -0
  84. package/esm2022/lib/types/type.model.mjs +2 -0
  85. package/esm2022/lib/utils/date.util.mjs +120 -0
  86. package/esm2022/lib/utils/tableview.util.mjs +193 -0
  87. package/esm2022/lib/utils/type.util.mjs +94 -0
  88. package/{fesm2020 → fesm2022}/mediusinc-mng-commons.mjs +930 -908
  89. package/fesm2022/mediusinc-mng-commons.mjs.map +1 -0
  90. package/lib/api/utils/medius-rest.util.d.ts +4 -3
  91. package/lib/components/action/action.component.d.ts +1 -1
  92. package/lib/components/action/editor/action-editor.component.d.ts +6 -9
  93. package/lib/components/action/localization/data-language-dropdown.component.d.ts +1 -1
  94. package/lib/components/form/autocomplete/autocomplete.component.d.ts +4 -4
  95. package/lib/components/form/date-range/date-range.component.d.ts +1 -1
  96. package/lib/components/form/dropdown/dropdown.component.d.ts +3 -3
  97. package/lib/components/form/editor/form-editor.component.d.ts +1 -1
  98. package/lib/components/form/formly/fields/formly-field-custom/formly-custom-field-base.model.d.ts +1 -1
  99. package/lib/components/layout/breadcrumb.component.d.ts +5 -0
  100. package/lib/components/layout/menu-item.component.d.ts +1 -1
  101. package/lib/components/layout/version.component.d.ts +1 -1
  102. package/lib/components/tableview/models/table.event.d.ts +2 -2
  103. package/lib/components/tableview/route/tableview-route.component.d.ts +1 -1
  104. package/lib/components/tableview/table/column-filter/column-filter.component.d.ts +2 -2
  105. package/lib/components/tableview/table/column-value/column-value.component.d.ts +1 -1
  106. package/lib/components/tableview/table/table.component.d.ts +6 -7
  107. package/lib/components/tableview/tableview.component.d.ts +7 -11
  108. package/lib/descriptors/editor/editor.descriptor.d.ts +1 -1
  109. package/lib/descriptors/table/table.descriptor.d.ts +7 -1
  110. package/lib/descriptors/tableview/tableview.descriptor.d.ts +4 -4
  111. package/lib/descriptors/types/table.type.d.ts +1 -5
  112. package/lib/directives/component.directive.d.ts +1 -1
  113. package/lib/directives/template.directive.d.ts +1 -1
  114. package/lib/router/route-builder.d.ts +6 -10
  115. package/lib/router/routes-builder.d.ts +0 -5
  116. package/lib/security/authorization.guard.d.ts +2 -11
  117. package/lib/services/action-executor.service.d.ts +1 -15
  118. package/lib/utils/route.util.d.ts +8 -19
  119. package/lib/utils/tableview.util.d.ts +5 -0
  120. package/package.json +13 -20
  121. package/esm2020/lib/api/models/filter-param.model.mjs +0 -33
  122. package/esm2020/lib/api/models/query-param.model.mjs +0 -68
  123. package/esm2020/lib/api/models/query-result.model.mjs +0 -24
  124. package/esm2020/lib/api/utils/medius-rest.util.mjs +0 -246
  125. package/esm2020/lib/api/utils/object-serializer.util.mjs +0 -258
  126. package/esm2020/lib/components/action/action.component.mjs +0 -303
  127. package/esm2020/lib/components/action/editor/action-editor.component.mjs +0 -390
  128. package/esm2020/lib/components/action/localization/data-language-dropdown.component.mjs +0 -47
  129. package/esm2020/lib/components/action/models/tableview-action-default-categories.model.mjs +0 -11
  130. package/esm2020/lib/components/form/autocomplete/autocomplete.component.mjs +0 -303
  131. package/esm2020/lib/components/form/dropdown/dropdown.component.mjs +0 -214
  132. package/esm2020/lib/components/form/editor/form-editor.component.mjs +0 -288
  133. package/esm2020/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +0 -19
  134. package/esm2020/lib/components/form/models/form-editor.event.mjs +0 -49
  135. package/esm2020/lib/components/layout/breadcrumb.component.mjs +0 -19
  136. package/esm2020/lib/components/layout/menu-item.component.mjs +0 -294
  137. package/esm2020/lib/components/tableview/table/column-filter/column-filter.component.mjs +0 -126
  138. package/esm2020/lib/components/tableview/table/column-value/column-value.component.mjs +0 -108
  139. package/esm2020/lib/components/tableview/table/table.component.mjs +0 -749
  140. package/esm2020/lib/components/tableview/tableview.component.mjs +0 -146
  141. package/esm2020/lib/descriptors/action/action.descriptor.mjs +0 -634
  142. package/esm2020/lib/descriptors/editor/editor.descriptor.mjs +0 -304
  143. package/esm2020/lib/descriptors/table/table.descriptor.mjs +0 -521
  144. package/esm2020/lib/descriptors/tableview/tableview.descriptor.mjs +0 -347
  145. package/esm2020/lib/mng-commons.module.mjs +0 -469
  146. package/esm2020/lib/router/route-builder.mjs +0 -312
  147. package/esm2020/lib/router/routes-builder.mjs +0 -68
  148. package/esm2020/lib/security/authorization.guard.mjs +0 -30
  149. package/esm2020/lib/services/action-executor.service.mjs +0 -722
  150. package/esm2020/lib/services/configuration.service.mjs +0 -150
  151. package/esm2020/lib/styles/styles.util.mjs +0 -42
  152. package/esm2020/lib/types/type.model.mjs +0 -2
  153. package/esm2020/lib/utils/date.util.mjs +0 -120
  154. package/esm2020/lib/utils/tableview.util.mjs +0 -171
  155. package/esm2020/lib/utils/type.util.mjs +0 -94
  156. package/fesm2015/mediusinc-mng-commons.mjs +0 -15900
  157. package/fesm2015/mediusinc-mng-commons.mjs.map +0 -1
  158. package/fesm2020/mediusinc-mng-commons.mjs.map +0 -1
  159. /package/{esm2020 → esm2022}/index.mjs +0 -0
  160. /package/{esm2020 → esm2022}/lib/api/models/builders/query-param.builder.mjs +0 -0
  161. /package/{esm2020 → esm2022}/lib/api/models/filter-match-type.model.mjs +0 -0
  162. /package/{esm2020 → esm2022}/lib/api/models/index.mjs +0 -0
  163. /package/{esm2020 → esm2022}/lib/api/models/mappers.mjs +0 -0
  164. /package/{esm2020 → esm2022}/lib/api/models/query-mode.model.mjs +0 -0
  165. /package/{esm2020 → esm2022}/lib/api/models/serialization.model.mjs +0 -0
  166. /package/{esm2020 → esm2022}/lib/api/services/api.abstract.service.mjs +0 -0
  167. /package/{esm2020 → esm2022}/lib/api/services/crud-api.abstract.service.mjs +0 -0
  168. /package/{esm2020 → esm2022}/lib/api/services/get-all-api.abstract.service.mjs +0 -0
  169. /package/{esm2020 → esm2022}/lib/api/services/index.mjs +0 -0
  170. /package/{esm2020 → esm2022}/lib/api/utils/index.mjs +0 -0
  171. /package/{esm2020 → esm2022}/lib/components/action/index.mjs +0 -0
  172. /package/{esm2020 → esm2022}/lib/components/action/models/action-component.model.mjs +0 -0
  173. /package/{esm2020 → esm2022}/lib/components/action/models/action-confirmation-service.model.mjs +0 -0
  174. /package/{esm2020 → esm2022}/lib/components/action/models/index.mjs +0 -0
  175. /package/{esm2020 → esm2022}/lib/components/form/formly/fields/index.mjs +0 -0
  176. /package/{esm2020 → esm2022}/lib/components/form/formly/formly.config.mjs +0 -0
  177. /package/{esm2020 → esm2022}/lib/components/form/formly/index.mjs +0 -0
  178. /package/{esm2020 → esm2022}/lib/components/form/formly/models/formly-config.model.mjs +0 -0
  179. /package/{esm2020 → esm2022}/lib/components/form/formly/models/formly-field.model.mjs +0 -0
  180. /package/{esm2020 → esm2022}/lib/components/form/formly/models/index.mjs +0 -0
  181. /package/{esm2020 → esm2022}/lib/components/form/formly/wrappers/index.mjs +0 -0
  182. /package/{esm2020 → esm2022}/lib/components/form/index.mjs +0 -0
  183. /package/{esm2020 → esm2022}/lib/components/form/models/field-action-context.model.mjs +0 -0
  184. /package/{esm2020 → esm2022}/lib/components/form/models/form-editor.interface.mjs +0 -0
  185. /package/{esm2020 → esm2022}/lib/components/form/models/index.mjs +0 -0
  186. /package/{esm2020 → esm2022}/lib/components/layout/index.mjs +0 -0
  187. /package/{esm2020 → esm2022}/lib/components/layout/services/index.mjs +0 -0
  188. /package/{esm2020 → esm2022}/lib/components/pages/index.mjs +0 -0
  189. /package/{esm2020 → esm2022}/lib/components/tableview/index.mjs +0 -0
  190. /package/{esm2020 → esm2022}/lib/components/tableview/models/index.mjs +0 -0
  191. /package/{esm2020 → esm2022}/lib/components/tableview/table/models/index.mjs +0 -0
  192. /package/{esm2020 → esm2022}/lib/components/tableview/table/models/table.interface.mjs +0 -0
  193. /package/{esm2020 → esm2022}/lib/data-providers/base.data-provider.mjs +0 -0
  194. /package/{esm2020 → esm2022}/lib/data-providers/editor.data-provider.mjs +0 -0
  195. /package/{esm2020 → esm2022}/lib/data-providers/index.mjs +0 -0
  196. /package/{esm2020 → esm2022}/lib/data-providers/lookup.data-provider.mjs +0 -0
  197. /package/{esm2020 → esm2022}/lib/data-providers/table.data-provider.mjs +0 -0
  198. /package/{esm2020 → esm2022}/lib/data-providers/tableview-crud.data-provider.mjs +0 -0
  199. /package/{esm2020 → esm2022}/lib/data-providers/tableview.data-provider.mjs +0 -0
  200. /package/{esm2020 → esm2022}/lib/descriptors/action/action-button.descriptor.mjs +0 -0
  201. /package/{esm2020 → esm2022}/lib/descriptors/action/action-confirmation.descriptor.mjs +0 -0
  202. /package/{esm2020 → esm2022}/lib/descriptors/action/index.mjs +0 -0
  203. /package/{esm2020 → esm2022}/lib/descriptors/editor/field-validation.descriptor.mjs +0 -0
  204. /package/{esm2020 → esm2022}/lib/descriptors/editor/field.descriptor.mjs +0 -0
  205. /package/{esm2020 → esm2022}/lib/descriptors/editor/index.mjs +0 -0
  206. /package/{esm2020 → esm2022}/lib/descriptors/filter/filter.descriptor.mjs +0 -0
  207. /package/{esm2020 → esm2022}/lib/descriptors/filter/index.mjs +0 -0
  208. /package/{esm2020 → esm2022}/lib/descriptors/index.mjs +0 -0
  209. /package/{esm2020 → esm2022}/lib/descriptors/interfaces/field-config.interface.mjs +0 -0
  210. /package/{esm2020 → esm2022}/lib/descriptors/interfaces/index.mjs +0 -0
  211. /package/{esm2020 → esm2022}/lib/descriptors/interfaces/lookup-descriptor.interface.mjs +0 -0
  212. /package/{esm2020 → esm2022}/lib/descriptors/model.descriptor.mjs +0 -0
  213. /package/{esm2020 → esm2022}/lib/descriptors/table/column.descriptor.mjs +0 -0
  214. /package/{esm2020 → esm2022}/lib/descriptors/table/index.mjs +0 -0
  215. /package/{esm2020 → esm2022}/lib/descriptors/tableview/index.mjs +0 -0
  216. /package/{esm2020 → esm2022}/lib/descriptors/types/action.type.mjs +0 -0
  217. /package/{esm2020 → esm2022}/lib/descriptors/types/column.type.mjs +0 -0
  218. /package/{esm2020 → esm2022}/lib/descriptors/types/editor.type.mjs +0 -0
  219. /package/{esm2020 → esm2022}/lib/descriptors/types/field.type.mjs +0 -0
  220. /package/{esm2020 → esm2022}/lib/descriptors/types/filter.type.mjs +0 -0
  221. /package/{esm2020 → esm2022}/lib/descriptors/types/index.mjs +0 -0
  222. /package/{esm2020 → esm2022}/lib/directives/index.mjs +0 -0
  223. /package/{esm2020 → esm2022}/lib/models/column-value.model.mjs +0 -0
  224. /package/{esm2020 → esm2022}/lib/models/config.model.mjs +0 -0
  225. /package/{esm2020 → esm2022}/lib/models/enum.model.mjs +0 -0
  226. /package/{esm2020 → esm2022}/lib/models/error-internal.model.mjs +0 -0
  227. /package/{esm2020 → esm2022}/lib/models/error.model.mjs +0 -0
  228. /package/{esm2020 → esm2022}/lib/models/index.mjs +0 -0
  229. /package/{esm2020 → esm2022}/lib/models/menu.model.mjs +0 -0
  230. /package/{esm2020 → esm2022}/lib/models/tableview-attr.model.mjs +0 -0
  231. /package/{esm2020 → esm2022}/lib/models/user.model.mjs +0 -0
  232. /package/{esm2020 → esm2022}/lib/models/version.model.mjs +0 -0
  233. /package/{esm2020 → esm2022}/lib/models/view-container.model.mjs +0 -0
  234. /package/{esm2020 → esm2022}/lib/pipes/index.mjs +0 -0
  235. /package/{esm2020 → esm2022}/lib/pipes/models/internal/enumrate-pipe-i18n.model.mjs +0 -0
  236. /package/{esm2020 → esm2022}/lib/pipes/models/internal/index.mjs +0 -0
  237. /package/{esm2020 → esm2022}/lib/provide-commons.mjs +0 -0
  238. /package/{esm2020 → esm2022}/lib/router/index.mjs +0 -0
  239. /package/{esm2020 → esm2022}/lib/router/models/index.mjs +0 -0
  240. /package/{esm2020 → esm2022}/lib/router/models/router.model.mjs +0 -0
  241. /package/{esm2020 → esm2022}/lib/router/tableview-route-builder.mjs +0 -0
  242. /package/{esm2020 → esm2022}/lib/security/authorization.util.mjs +0 -0
  243. /package/{esm2020 → esm2022}/lib/security/index.mjs +0 -0
  244. /package/{esm2020 → esm2022}/lib/security/model/authorization.type.mjs +0 -0
  245. /package/{esm2020 → esm2022}/lib/security/model/index.mjs +0 -0
  246. /package/{esm2020 → esm2022}/lib/security/model/permission-service.interface.mjs +0 -0
  247. /package/{esm2020 → esm2022}/lib/security/model/permissions.model.mjs +0 -0
  248. /package/{esm2020 → esm2022}/lib/services/error-mapper.service.mjs +0 -0
  249. /package/{esm2020 → esm2022}/lib/services/index.mjs +0 -0
  250. /package/{esm2020 → esm2022}/lib/services/internal/commons-init.provider.mjs +0 -0
  251. /package/{esm2020 → esm2022}/lib/services/internal/index.mjs +0 -0
  252. /package/{esm2020 → esm2022}/lib/services/providers/config-service.provider.mjs +0 -0
  253. /package/{esm2020 → esm2022}/lib/services/providers/formly-config.provider.mjs +0 -0
  254. /package/{esm2020 → esm2022}/lib/services/providers/index.mjs +0 -0
  255. /package/{esm2020 → esm2022}/lib/services/tokens/browser-storage.token.mjs +0 -0
  256. /package/{esm2020 → esm2022}/lib/services/tokens/commons-init.token.mjs +0 -0
  257. /package/{esm2020 → esm2022}/lib/services/tokens/default-setting.token.mjs +0 -0
  258. /package/{esm2020 → esm2022}/lib/services/tokens/index.mjs +0 -0
  259. /package/{esm2020 → esm2022}/lib/services/tokens/module-config.token.mjs +0 -0
  260. /package/{esm2020 → esm2022}/lib/styles/button-style.builder.mjs +0 -0
  261. /package/{esm2020 → esm2022}/lib/styles/index.mjs +0 -0
  262. /package/{esm2020 → esm2022}/lib/styles/models/index.mjs +0 -0
  263. /package/{esm2020 → esm2022}/lib/styles/models/style-level.enum.mjs +0 -0
  264. /package/{esm2020 → esm2022}/lib/styles/models/style-size.enum.mjs +0 -0
  265. /package/{esm2020 → esm2022}/lib/types/i18n.type.mjs +0 -0
  266. /package/{esm2020 → esm2022}/lib/types/index.mjs +0 -0
  267. /package/{esm2020 → esm2022}/lib/types/mng-localstorage-config-value.type.mjs +0 -0
  268. /package/{esm2020 → esm2022}/lib/types/type.decorator.mjs +0 -0
  269. /package/{esm2020 → esm2022}/lib/utils/action-data-provider.util.mjs +0 -0
  270. /package/{esm2020 → esm2022}/lib/utils/editor-formly.util.mjs +0 -0
  271. /package/{esm2020 → esm2022}/lib/utils/enum.util.mjs +0 -0
  272. /package/{esm2020 → esm2022}/lib/utils/export.util.mjs +0 -0
  273. /package/{esm2020 → esm2022}/lib/utils/file.util.mjs +0 -0
  274. /package/{esm2020 → esm2022}/lib/utils/i18n.util.mjs +0 -0
  275. /package/{esm2020 → esm2022}/lib/utils/index.mjs +0 -0
  276. /package/{esm2020 → esm2022}/lib/utils/model.util.mjs +0 -0
  277. /package/{esm2020 → esm2022}/lib/utils/notification.util.mjs +0 -0
  278. /package/{esm2020 → esm2022}/lib/utils/object.util.mjs +0 -0
  279. /package/{esm2020 → esm2022}/lib/utils/route.util.mjs +0 -0
  280. /package/{esm2020 → esm2022}/lib/utils/string.util.mjs +0 -0
  281. /package/{esm2020 → esm2022}/lib/validators/field.validator.mjs +0 -0
  282. /package/{esm2020 → esm2022}/lib/validators/index.mjs +0 -0
  283. /package/{esm2020 → esm2022}/mediusinc-mng-commons.mjs +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"mediusinc-mng-commons.mjs","sources":["../../src/lib/api/models/filter-match-type.model.ts","../../src/lib/api/models/filter-param.model.ts","../../src/lib/api/models/query-mode.model.ts","../../src/lib/api/models/query-param.model.ts","../../src/lib/api/models/query-result.model.ts","../../src/lib/api/models/builders/query-param.builder.ts","../../src/lib/api/models/mappers.ts","../../src/lib/models/error-internal.model.ts","../../src/lib/utils/action-data-provider.util.ts","../../src/lib/utils/date.util.ts","../../src/lib/api/utils/object-serializer.util.ts","../../src/lib/descriptors/types/action.type.ts","../../src/lib/descriptors/types/column.type.ts","../../src/lib/descriptors/types/editor.type.ts","../../src/lib/descriptors/types/field.type.ts","../../src/lib/descriptors/types/filter.type.ts","../../src/lib/descriptors/types/table.type.ts","../../src/lib/api/utils/medius-rest.util.ts","../../src/lib/components/form/models/form-editor.event.ts","../../src/lib/utils/tableview.util.ts","../../src/lib/data-providers/base.data-provider.ts","../../src/lib/data-providers/editor.data-provider.ts","../../src/lib/data-providers/lookup.data-provider.ts","../../src/lib/data-providers/table.data-provider.ts","../../src/lib/data-providers/tableview.data-provider.ts","../../src/lib/data-providers/tableview-crud.data-provider.ts","../../src/lib/components/action/models/action-execution.model.ts","../../src/lib/components/action/models/tableview-action-default-categories.model.ts","../../src/lib/styles/models/style-level.enum.ts","../../src/lib/styles/models/style-size.enum.ts","../../src/lib/services/tokens/browser-storage.token.ts","../../src/lib/services/tokens/commons-init.token.ts","../../src/lib/services/tokens/default-setting.token.ts","../../src/lib/services/tokens/module-config.token.ts","../../src/lib/services/commons.service.ts","../../src/lib/services/navigation.service.ts","../../src/lib/services/error-mapper.service.ts","../../src/lib/pipes/boolean.pipe.ts","../../src/lib/pipes/enum.pipe.ts","../../src/lib/pipes/json-path.pipe.ts","../../src/lib/pipes/enumerate.pipe.ts","../../src/lib/pipes/enumerate-async.pipe.ts","../../src/lib/pipes/i18n-property.pipe.ts","../../src/lib/pipes/parametrize.pipe.ts","../../src/lib/pipes/getter.pipe.ts","../../src/lib/pipes/template.pipe.ts","../../src/lib/pipes/class-map.pipe.ts","../../src/lib/pipes/locale-default-row-class.pipe.ts","../../src/lib/services/action-executor.service.ts","../../src/lib/services/configuration.service.ts","../../src/lib/services/router.service.ts","../../src/lib/services/version.service.ts","../../src/lib/services/view-container.component.service.ts","../../src/lib/services/mng-localstorage-config.service.ts","../../src/lib/styles/styles.util.ts","../../src/lib/styles/button-style.builder.ts","../../src/lib/validators/field.validator.ts","../../src/lib/descriptors/filter/filter.descriptor.ts","../../src/lib/descriptors/table/column.descriptor.ts","../../src/lib/descriptors/table/table.descriptor.ts","../../src/lib/descriptors/tableview/tableview.descriptor.ts","../../src/lib/descriptors/editor/field-validation.descriptor.ts","../../src/lib/descriptors/editor/field.descriptor.ts","../../src/lib/descriptors/editor/editor.descriptor.ts","../../src/lib/utils/editor-formly.util.ts","../../src/lib/utils/enum.util.ts","../../src/lib/utils/type.util.ts","../../src/lib/utils/i18n.util.ts","../../src/lib/utils/model.util.ts","../../src/lib/utils/notification.util.ts","../../src/lib/utils/object.util.ts","../../src/lib/utils/string.util.ts","../../src/lib/utils/export.util.ts","../../src/lib/utils/file.util.ts","../../src/lib/descriptors/model.descriptor.ts","../../src/lib/descriptors/action/action-button.descriptor.ts","../../src/lib/descriptors/action/action-confirmation.descriptor.ts","../../src/lib/descriptors/action/action.descriptor.ts","../../src/lib/directives/component.directive.ts","../../src/lib/directives/template.directive.ts","../../src/lib/security/model/authorization.type.ts","../../src/lib/security/model/permissions.model.ts","../../src/lib/security/authorization.util.ts","../../src/lib/security/authorization.service.ts","../../src/lib/security/authorization.guard.ts","../../src/lib/components/action/action.component.ts","../../src/lib/components/action/action.component.html","../../src/lib/components/action/route/action-route.component.ts","../../src/lib/components/action/route/action-route.component.html","../../src/lib/components/form/editor/form-editor.component.ts","../../src/lib/components/form/editor/form-editor.component.html","../../src/lib/components/form/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.ts","../../src/lib/components/form/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.html","../../src/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.ts","../../src/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.html","../../src/lib/components/form/autocomplete/autocomplete.component.ts","../../src/lib/components/form/autocomplete/autocomplete.component.html","../../src/lib/components/form/dropdown/dropdown.component.ts","../../src/lib/components/form/dropdown/dropdown.component.html","../../src/lib/components/form/date-range/date-range.component.ts","../../src/lib/components/form/date-range/date-range.component.html","../../src/lib/components/action/editor/action-editor.component.ts","../../src/lib/components/action/editor/action-editor.component.html","../../src/lib/components/action/localization/data-language-dropdown.component.ts","../../src/lib/components/action/localization/data-language-dropdown.component.html","../../src/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.ts","../../src/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.html","../../src/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.ts","../../src/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.html","../../src/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.ts","../../src/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.html","../../src/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.ts","../../src/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.html","../../src/lib/components/tableview/models/table.event.ts","../../src/lib/components/tableview/table/column-filter/column-filter.component.ts","../../src/lib/components/tableview/table/column-filter/column-filter.component.html","../../src/lib/components/tableview/table/column-value/column-value.component.ts","../../src/lib/components/tableview/table/column-value/column-value.component.html","../../src/lib/components/tableview/table/table.component.ts","../../src/lib/components/tableview/table/table.component.html","../../src/lib/components/tableview/tableview.component.ts","../../src/lib/components/tableview/tableview.component.html","../../src/lib/components/tableview/route/tableview-route.abstract.component.ts","../../src/lib/components/tableview/route/tableview-route.component.ts","../../src/templates/tableview-route.component.html","../../src/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.ts","../../src/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.html","../../src/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.ts","../../src/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.html","../../src/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.ts","../../src/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.html","../../src/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.ts","../../src/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.html","../../src/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.ts","../../src/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.html","../../src/lib/components/form/formly/fields/formly-field-action/formly-field-action.component.ts","../../src/lib/components/form/formly/fields/formly-field-action/formly-field-action.component.html","../../src/lib/components/form/formly/fields/formly-field-custom/formly-field-custom.component.ts","../../src/lib/components/form/formly/fields/formly-field-custom/formly-custom-field-base.model.ts","../../src/lib/components/layout/breadcrumb.component.ts","../../src/lib/components/layout/breadcrumb.component.html","../../src/lib/components/layout/footer.component.ts","../../src/lib/components/layout/footer.component.html","../../src/lib/utils/route.util.ts","../../src/lib/components/layout/services/main-layout.component.service.ts","../../src/lib/components/layout/menu-item.component.ts","../../src/lib/components/layout/menu-item.component.html","../../src/lib/components/layout/version.component.ts","../../src/lib/components/layout/version.component.html","../../src/lib/components/layout/menu.component.ts","../../src/lib/components/layout/menu.component.html","../../src/lib/components/layout/topbar-user.component.ts","../../src/lib/components/layout/topbar-user.component.html","../../src/lib/components/layout/topbar.component.ts","../../src/lib/components/layout/topbar.component.html","../../src/lib/components/layout/main-layout.component.ts","../../src/lib/components/layout/main-layout.component.html","../../src/lib/components/pages/error/error-page.component.ts","../../src/lib/components/pages/error/error-page.component.html","../../src/lib/components/pages/not-found/not-found-page.component.ts","../../src/lib/components/pages/not-found/not-found-page.component.html","../../src/lib/services/internal/commons-init.provider.ts","../../src/lib/services/internal/commons-init.service.ts","../../src/lib/services/providers/config-service.provider.ts","../../src/lib/components/form/formly/formly.config.ts","../../src/lib/services/providers/formly-config.provider.ts","../../src/lib/provide-commons.ts","../../src/lib/mng-commons.module.ts","../../src/lib/api/services/api.abstract.service.ts","../../src/lib/api/services/get-all-api.abstract.service.ts","../../src/lib/api/services/crud-api.abstract.service.ts","../../src/lib/router/route-builder.ts","../../src/lib/router/routes-builder.ts","../../src/lib/router/tableview-route-builder.ts","../../src/lib/types/type.decorator.ts","../../src/index.ts","../../src/mediusinc-mng-commons.ts"],"sourcesContent":["/**\n * Generated API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nexport enum MediusFilterMatchType {\n Equals = 'EQUALS',\n NotEquals = 'NOT_EQUALS',\n FromTo = 'FROM_TO',\n Contains = 'CONTAINS',\n StartsWith = 'STARTS_WITH',\n EndsWith = 'ENDS_WITH',\n In = 'IN',\n NotIn = 'NOT_IN',\n SmallerThan = 'SMALLER_THAN',\n GreaterThan = 'GREATER_THAN'\n}\n","/**\n * Generated API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport {MediusFilterMatchType} from './filter-match-type.model';\nimport {AttributeDef} from './serialization.model';\n\nexport class MediusFilterParam {\n property?: string;\n filterValue?: any;\n filterValueTo?: any;\n filterMatchType?: MediusFilterMatchType;\n filterMatchCaseSensitive?: boolean;\n\n public static discriminator?: string;\n\n public static attributeTypeMap: Array<AttributeDef> = [\n {\n name: 'property',\n baseName: 'property',\n type: 'string'\n },\n {\n name: 'filterValue',\n baseName: 'filter_value',\n type: 'object'\n },\n {\n name: 'filterValueTo',\n baseName: 'filter_value_to',\n type: 'object'\n },\n {\n name: 'filterMatchType',\n baseName: 'filter_match_type',\n type: 'FilterMatchType'\n },\n {\n name: 'filterMatchCaseSensitive',\n baseName: 'filter_match_case_sensitive',\n type: 'boolean'\n }\n ];\n\n public static getAttributeTypeMap() {\n return MediusFilterParam.attributeTypeMap;\n }\n}\n","/**\n * Generated API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nexport enum MediusQueryMode {\n Count = 'COUNT',\n Data = 'DATA',\n All = 'ALL'\n}\n","/**\n * Generated API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport {MediusFilterParam} from './filter-param.model';\nimport {MediusQueryMode} from './query-mode.model';\nimport {AttributeDef} from './serialization.model';\n\nexport class MediusQueryParam {\n sortProperty?: Array<string>;\n sortAsc?: Array<boolean>;\n itemsOffset?: number;\n itemsPerPage?: number;\n filterParams?: Array<MediusFilterParam>;\n filterAllParam?: string;\n filterAllProperties?: Array<string>;\n validateProperties?: Array<string>;\n selectInTwoSteps?: boolean;\n sortEnumByOrdinal?: boolean;\n groupByProperties?: Array<string>;\n queryMode?: MediusQueryMode;\n\n public static discriminator?: string;\n\n public static attributeTypeMap: Array<AttributeDef> = [\n {\n name: 'sortProperty',\n baseName: 'sort_property',\n type: 'Array<string>'\n },\n {\n name: 'sortAsc',\n baseName: 'sort_asc',\n type: 'Array<boolean>'\n },\n {\n name: 'itemsOffset',\n baseName: 'items_offset',\n type: 'number'\n },\n {\n name: 'itemsPerPage',\n baseName: 'items_per_page',\n type: 'number'\n },\n {\n name: 'filterParams',\n baseName: 'filter_params',\n type: 'Array<FilterParam>'\n },\n {\n name: 'filterAllParam',\n baseName: 'filter_all_param',\n type: 'string'\n },\n {\n name: 'filterAllProperties',\n baseName: 'filter_all_properties',\n type: 'Array<string>'\n },\n {\n name: 'validateProperties',\n baseName: 'validate_properties',\n type: 'Array<string>'\n },\n {\n name: 'selectInTwoSteps',\n baseName: 'select_in_two_steps',\n type: 'boolean'\n },\n {\n name: 'sortEnumByOrdinal',\n baseName: 'sort_enum_by_ordinal',\n type: 'boolean'\n },\n {\n name: 'groupByProperties',\n baseName: 'group_by_properties',\n type: 'Array<string>'\n },\n {\n name: 'queryMode',\n baseName: 'query_mode',\n type: 'QueryMode'\n }\n ];\n\n public static getAttributeTypeMap() {\n return MediusQueryParam.attributeTypeMap;\n }\n}\n","/**\n * Generated API\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 1.0\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport {AttributeDef} from './serialization.model';\n\nexport class MediusQueryResult<T> implements IMediusQueryResult<T> {\n allDataCount?: number;\n pageData?: Array<T>;\n\n static discriminator?: string;\n\n static fromArray<T>(pageData: T[], allDataCount?: number) {\n const mqr = new MediusQueryResult<T>();\n mqr.allDataCount = allDataCount ?? pageData.length;\n mqr.pageData = pageData;\n return mqr;\n }\n\n static attributeTypeMap: Array<AttributeDef> = [\n {\n name: 'allDataCount',\n baseName: 'all_data_count',\n type: 'number'\n },\n {\n name: 'pageData',\n baseName: 'page_data',\n type: 'Array<T>'\n }\n ];\n\n static getAttributeTypeMap() {\n return MediusQueryResult.attributeTypeMap;\n }\n}\n\nexport interface IMediusQueryResult<T> {\n allDataCount?: number;\n pageData?: Array<T>;\n}\n","import {MediusFilterMatchType, MediusFilterParam, MediusQueryMode, MediusQueryParam} from '../';\n\nexport class MediusQueryParamBuilder {\n private constructor(private queryParam: MediusQueryParam) {}\n\n public static create(itemsPerPage = 50, itemsOffset = 0): MediusQueryParamBuilder {\n const queryParam = new MediusQueryParam();\n queryParam.itemsPerPage = itemsPerPage;\n queryParam.itemsOffset = itemsOffset;\n queryParam.queryMode = MediusQueryMode.All;\n return new MediusQueryParamBuilder(queryParam);\n }\n\n public static createFromExisting(queryParam: MediusQueryParam, itemsPerPage?: number, itemsOffset?: number): MediusQueryParamBuilder {\n queryParam.itemsPerPage = itemsPerPage ?? queryParam.itemsPerPage ?? 50;\n queryParam.itemsOffset = itemsOffset ?? queryParam.itemsOffset ?? 0;\n queryParam.queryMode = queryParam.queryMode ?? MediusQueryMode.All;\n return new MediusQueryParamBuilder(queryParam);\n }\n\n public withItemsPerPage(itemsPerPage: number): MediusQueryParamBuilder {\n this.queryParam.itemsPerPage = itemsPerPage;\n return this;\n }\n\n public withItemsOffset(itemsOffset: number): MediusQueryParamBuilder {\n this.queryParam.itemsOffset = itemsOffset;\n return this;\n }\n\n public withQueryMode(queryMode: MediusQueryMode): MediusQueryParamBuilder {\n this.queryParam.queryMode = queryMode;\n return this;\n }\n\n public withSort(property: string, asc = true): MediusQueryParamBuilder {\n if (!this.queryParam.sortProperty || !this.queryParam.sortAsc) {\n this.queryParam.sortProperty = [];\n this.queryParam.sortAsc = [];\n }\n this.queryParam.sortProperty.push(property);\n this.queryParam.sortAsc.push(asc);\n return this;\n }\n\n public withFilter(\n property: string,\n value: any,\n valueTo: any = undefined,\n matchType: MediusFilterMatchType = MediusFilterMatchType.Contains,\n matchCaseSensitive = false\n ): MediusQueryParamBuilder {\n if (!this.queryParam.filterParams) {\n this.queryParam.filterParams = [];\n }\n const filterParam = new MediusFilterParam();\n filterParam.property = property;\n filterParam.filterValue = value;\n filterParam.filterValueTo = valueTo;\n filterParam.filterMatchType = matchType;\n filterParam.filterMatchCaseSensitive = matchCaseSensitive;\n this.queryParam.filterParams.push(filterParam);\n return this;\n }\n\n public build(): MediusQueryParam {\n const queryParam = this.queryParam;\n this.queryParam = new MediusQueryParam();\n return queryParam;\n }\n}\n","import {MediusFilterMatchType} from './filter-match-type.model';\nimport {MediusFilterParam} from './filter-param.model';\nimport {MediusQueryMode} from './query-mode.model';\nimport {MediusQueryParam} from './query-param.model';\n\nexport const enumsMapBase: {[index: string]: any} = {\n FilterMatchType: MediusFilterMatchType,\n QueryMode: MediusQueryMode\n};\n\nexport const typeMapBase: {[index: string]: any} = {\n FilterParam: MediusFilterParam,\n QueryParam: MediusQueryParam\n};\n","import {Message} from 'primeng/api';\n\nimport {IdType} from '../types';\nimport {MngError} from './index';\n\nexport class MngErrorInternal implements MngError {\n public id?: IdType;\n public messageCode?: number | string;\n public notification?: Message;\n public details?: any;\n public status?: number;\n public statusDescription?: string;\n public url?: string;\n public cause?: Error;\n public stack?: string;\n\n public name: string;\n public message: string;\n\n constructor(\n message: string,\n name = 'Commons Internal Error',\n options?: {\n id?: IdType;\n messageCode?: number | string;\n notification?: Message;\n details?: any;\n status?: number;\n statusDescription?: string;\n url?: string;\n cause?: Error;\n stack?: string;\n }\n ) {\n this.name = name;\n this.message = message;\n\n this.id = options?.id;\n this.messageCode = options?.messageCode;\n this.notification = options?.notification ?? this.generateNotification();\n this.details = options?.details;\n this.status = options?.status;\n this.statusDescription = options?.statusDescription;\n this.url = options?.url;\n this.cause = options?.cause;\n this.stack = options?.stack ?? (options?.cause ? options.cause.stack : new Error(message).stack);\n }\n\n public consoleError(): this {\n let cause = '';\n if (this.cause) {\n cause += `; Caused by ${this.cause.name}: ${this.cause.message}`;\n }\n\n console.error(`${this.name}: ${this.message}${cause}`, this);\n return this;\n }\n\n private generateNotification(): Message {\n return {severity: 'error', summary: this.name, detail: this.message, life: 10000};\n }\n}\n","import {Injector} from '@angular/core';\n\nimport {Observable, isObservable, throwError} from 'rxjs';\n\nimport {MediusQueryParamBuilder, MediusQueryResult} from '../api/models';\nimport {IMngCrudApiService, IMngGetAllApiService} from '../api/services';\nimport {ActionContext} from '../components/action/models';\nimport {IDataProvider, IEditorDataProvider, ITableDataProvider} from '../data-providers';\nimport {MngErrorInternal} from '../models';\n\nexport class ActionDataProviderUtil {\n public static runGetAllOrFail<T, S>(ctx: ActionContext<T, S>): Observable<MediusQueryResult<T>> {\n const dataProviderExec = ActionDataProviderUtil.runGetAllDataProvider(ctx);\n if (isObservable(dataProviderExec)) {\n return dataProviderExec;\n }\n const serviceExec = ActionDataProviderUtil.runGetAllService(ctx);\n return isObservable(serviceExec)\n ? serviceExec\n : throwError(() =>\n new MngErrorInternal(\n `Data provider and service instance could not extract fetch function to execute in action ${ctx.instance.action.actionNameLong} (${ctx.instance.action.model?.typeName}) for item id ${ctx.parameters?.itemId}.`,\n 'ActionDataProviderUtils error'\n ).consoleError()\n );\n }\n\n public static runFetchOrFail<T, S>(ctx: ActionContext<T, S>): Observable<T> {\n return (\n ActionDataProviderUtil.runFetch(ctx) ??\n throwError(() =>\n new MngErrorInternal(\n `Data provider and service instance could not extract fetch function to execute in action ${ctx.instance.action.actionNameLong} (${ctx.instance.action.model?.typeName}) for item id ${ctx.parameters?.itemId}.`,\n 'ActionDataProviderUtils error'\n ).consoleError()\n )\n );\n }\n\n public static runFetch<T, S>(ctx: ActionContext<T, S>): Observable<T> | null;\n public static runFetch<T, S>(ctx: ActionContext<T, S>, fallback: Observable<T | null | undefined>): Observable<T | null | undefined>;\n public static runFetch<T, S>(ctx: ActionContext<T, S>, fallback?: Observable<T | null | undefined>): Observable<T | null | undefined> | null {\n const dataProviderExec = ActionDataProviderUtil.runFetchDataProvider(ctx);\n if (isObservable(dataProviderExec)) {\n return dataProviderExec;\n }\n const serviceExec = ActionDataProviderUtil.runGetByIdService(ctx);\n return isObservable(serviceExec) ? serviceExec : fallback ?? null;\n }\n\n public static runCreateOrFail<T, S>(ctx: ActionContext<T, S>): Observable<T> {\n return (\n ActionDataProviderUtil.runCreate(ctx) ??\n throwError(() =>\n new MngErrorInternal(\n `Data provider and service instance could not extract create function to execute in action ${ctx.instance.action.actionNameLong} (${ctx.instance.action.model?.typeName}) for item ${ctx.parameters?.item}.`,\n 'ActionDataProviderUtils error'\n ).consoleError()\n )\n );\n }\n\n public static runCreate<T, S>(ctx: ActionContext<T, S>): Observable<T> | null;\n public static runCreate<T, S>(ctx: ActionContext<T, S>, fallback: Observable<T | null | undefined>): Observable<T | null | undefined>;\n public static runCreate<T, S>(ctx: ActionContext<T, S>, fallback?: Observable<T | null | undefined>): Observable<T | null | undefined> | null {\n const dataProviderExec = ActionDataProviderUtil.runCreateDataProvider(ctx);\n if (isObservable(dataProviderExec)) {\n return dataProviderExec;\n }\n const serviceExec = ActionDataProviderUtil.runCreateService(ctx);\n return isObservable(serviceExec) ? serviceExec : fallback ?? null;\n }\n\n public static runUpdateOrFail<T, S>(ctx: ActionContext<T, S>): Observable<T> {\n return (\n ActionDataProviderUtil.runUpdate(ctx) ??\n throwError(() =>\n new MngErrorInternal(\n `Data provider and service instance could not extract update function to execute in action ${ctx.instance.action.actionNameLong} (${ctx.instance.action.model?.typeName}) for item id ${ctx.parameters?.itemId}.`,\n 'ActionDataProviderUtils error'\n ).consoleError()\n )\n );\n }\n\n public static runUpdate<T, S>(ctx: ActionContext<T, S>): Observable<T> | null;\n public static runUpdate<T, S>(ctx: ActionContext<T, S>, fallback: Observable<T | null | undefined>): Observable<T | null | undefined>;\n public static runUpdate<T, S>(ctx: ActionContext<T, S>, fallback?: Observable<T | null | undefined>): Observable<T | null | undefined> | null {\n const dataProviderExec = ActionDataProviderUtil.runUpdateDataProvider(ctx);\n if (isObservable(dataProviderExec)) {\n return dataProviderExec;\n }\n const serviceExec = ActionDataProviderUtil.runUpdateService(ctx);\n return isObservable(serviceExec) ? serviceExec : fallback ?? null;\n }\n\n public static runDeleteOrFail<T, S>(ctx: ActionContext<T, S>): Observable<T | null> {\n const dataProviderExec = ActionDataProviderUtil.runDeleteDataProvider(ctx);\n if (isObservable(dataProviderExec)) {\n return dataProviderExec;\n }\n const serviceExec = ActionDataProviderUtil.runDeleteService(ctx);\n return isObservable(serviceExec)\n ? serviceExec\n : throwError(() =>\n new MngErrorInternal(\n `Data provider and service instance could not extract delete function to execute in action ${ctx.instance.action.actionNameLong} (${ctx.instance.action.model?.typeName}) for item id ${ctx.parameters?.itemId}.`,\n 'ActionDataProviderUtils error'\n ).consoleError()\n );\n }\n\n public static runGetAllService<T>(ctx: ActionContext<T, unknown>): Observable<MediusQueryResult<T>> | null {\n if (typeof ctx.serviceInstance !== 'undefined') {\n const getAllServiceInstance = ctx.serviceInstance as IMngGetAllApiService<MediusQueryResult<T>>;\n if (typeof getAllServiceInstance.getAllPost === 'function') {\n const queryParam = ctx.parameters?.queryParam ?? MediusQueryParamBuilder.create().build();\n return getAllServiceInstance.getAllPost(queryParam);\n }\n }\n return null;\n }\n\n public static runGetByIdService<T>(ctx: ActionContext<T, unknown>): Observable<T> | null {\n if (typeof ctx.serviceInstance !== 'undefined') {\n const crudServiceInstance = ctx.serviceInstance as IMngCrudApiService<T>;\n if (typeof crudServiceInstance.getByIdGet === 'function') {\n return ctx.parameters?.itemId ? crudServiceInstance.getByIdGet(ctx.parameters.itemId) : null;\n }\n }\n return null;\n }\n\n public static runCreateService<T>(ctx: ActionContext<T, unknown>): Observable<T> | null {\n if (typeof ctx.serviceInstance !== 'undefined') {\n const crudServiceInstance = ctx.serviceInstance as IMngCrudApiService<T>;\n if (typeof crudServiceInstance.createPost === 'function') {\n return ctx.parameters?.item ? crudServiceInstance.createPost(ctx.parameters.item) : null;\n }\n }\n return null;\n }\n\n public static runUpdateService<T>(ctx: ActionContext<T, unknown>): Observable<T> | null {\n if (typeof ctx.serviceInstance !== 'undefined') {\n const crudServiceInstance = ctx.serviceInstance as IMngCrudApiService<T>;\n if (typeof crudServiceInstance.updatePut === 'function') {\n return ctx.parameters?.itemId && ctx.parameters.item ? crudServiceInstance.updatePut(ctx.parameters.itemId, ctx.parameters.item) : null;\n }\n }\n return null;\n }\n\n public static runDeleteService<T>(ctx: ActionContext<T, unknown>): Observable<T | null> | null {\n if (typeof ctx.serviceInstance !== 'undefined') {\n const crudServiceInstance = ctx.serviceInstance as IMngCrudApiService<T>;\n if (typeof crudServiceInstance.removeDelete === 'function') {\n return ctx.parameters?.itemId ? crudServiceInstance.removeDelete(ctx.parameters.itemId, ctx.parameters.item) : null;\n }\n }\n return null;\n }\n\n public static runGetAllDataProvider<T, S>(ctx: ActionContext<T, S>): Observable<MediusQueryResult<T>> | null {\n if (typeof ctx.dataProvider !== 'undefined' && typeof ctx.dataProvider['getAll' as keyof object] === 'function') {\n const tableDataProvider = ctx.dataProvider as ITableDataProvider<T, any>;\n const queryParam = ctx.parameters?.queryParam ?? MediusQueryParamBuilder.create().build();\n return tableDataProvider.getAll(queryParam, ctx.serviceInstance);\n }\n return null;\n }\n\n public static runFetchDataProvider<T, S>(ctx: ActionContext<T, S>): Observable<T> | null {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider as IEditorDataProvider<T, any>;\n if (typeof editorDataProvider.fetch === 'function') {\n return ctx.parameters?.itemId ? editorDataProvider.fetch(ctx.parameters.itemId, ctx.serviceInstance, ctx.parameters.locale) : null;\n }\n }\n return null;\n }\n\n public static runCreateDataProvider<T, S>(ctx: ActionContext<T, S>): Observable<T> | null {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider as IEditorDataProvider<T, any>;\n if (typeof editorDataProvider.create === 'function') {\n return ctx.parameters?.item ? editorDataProvider.create(ctx.parameters.item, ctx.serviceInstance) : null;\n }\n }\n return null;\n }\n\n public static runUpdateDataProvider<T, S>(ctx: ActionContext<T, S>): Observable<T> | null {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider as IEditorDataProvider<T, any>;\n if (typeof editorDataProvider.update === 'function') {\n return ctx.parameters?.itemId ? editorDataProvider.update(ctx.parameters.itemId, ctx.parameters.item, ctx.serviceInstance) : null;\n }\n }\n return null;\n }\n\n public static runDeleteDataProvider<T, S>(ctx: ActionContext<T, S>): Observable<T | null> | null {\n if (typeof ctx.dataProvider !== 'undefined') {\n const editorDataProvider = ctx.dataProvider as IEditorDataProvider<T, any>;\n if (typeof editorDataProvider.delete === 'function') {\n return ctx.parameters?.itemId ? editorDataProvider.delete(ctx.parameters.itemId, ctx.parameters.item, ctx.serviceInstance) : null;\n }\n }\n return null;\n }\n\n /**\n * Gets service instance of data provider.\n *\n * @param dataProvider Data provider instance.\n */\n public static getDataProviderService<T, S>(injector: Injector, dataProvider?: IDataProvider<T, S>): S | null {\n if (dataProvider?.serviceType) {\n return injector.get<S>(dataProvider.serviceType);\n } else {\n return null;\n }\n }\n}\n","export class DateUtil {\n private static readonly NG_PRIME_FORMAT_SUPPORTED = [/d{1,2}/g, /E{1,5}/g, /c{1,5}/g, /M{1,5}/g, /L{1,5}/g, /y{1,4}/g, /Y{1,4}/g];\n private static readonly NG_PRIME_FORMAT_OTHER = [\n /G{1,5}/g,\n /w{1,2}/g,\n /W/g,\n /a{1,5}/g,\n /B{1,5}/g,\n /b{1,5}/g,\n /h{1,2}/g,\n /H{1,2}/g,\n /m{1,2}/g,\n /s{1,2}/g,\n /S{1,3}/g,\n /z{1,4}/g,\n /Z{1,5}/g,\n /O{1,4}/g\n ];\n private static readonly NG_PRIME_FORMAT_MAP = {\n // days\n d: 'd',\n dd: 'dd',\n E: 'D',\n EE: 'D',\n EEE: 'D',\n EEEE: 'DD',\n EEEEE: 'D',\n EEEEEE: 'D',\n c: 'd',\n cc: 'dd',\n ccc: 'D',\n cccc: 'DD',\n ccccc: 'D',\n cccccc: 'D',\n // months\n M: 'm',\n MM: 'mm',\n MMM: 'M',\n MMMM: 'MM',\n MMMMM: 'M',\n L: 'm',\n LL: 'mm',\n LLL: 'M',\n LLLL: 'MM',\n LLLLL: 'M',\n // year\n y: 'y',\n yy: 'y',\n yyy: 'yy',\n yyyy: 'yy',\n Y: 'y',\n YY: 'y',\n YYY: 'yy',\n YYYY: 'yy'\n };\n\n private static pad = (num: number) => (num < 10 ? '0' : '') + num;\n\n public static toIsoString(date: unknown, inUtc = false, withTimezone = false, withMillis = false, dateOnly = false): string | null {\n if (typeof date === 'string') {\n date = new Date(date);\n }\n if (!(date instanceof Date)) {\n return null;\n }\n if (dateOnly) {\n return date.getFullYear() + '-' + this.pad(date.getMonth() + 1) + '-' + this.pad(date.getDate());\n }\n if (inUtc) {\n let str = date.toISOString();\n if (!withMillis) {\n const dotIdx = str.lastIndexOf('.');\n str = str.substring(0, dotIdx) + str.substring(dotIdx + 4, str.length);\n }\n if (!withTimezone) {\n str = str.substring(0, str.length - 1);\n }\n return str;\n } else {\n let base =\n date.getFullYear() +\n '-' +\n this.pad(date.getMonth() + 1) +\n '-' +\n this.pad(date.getDate()) +\n 'T' +\n this.pad(date.getHours()) +\n ':' +\n this.pad(date.getMinutes()) +\n ':' +\n this.pad(date.getSeconds());\n\n if (withMillis) {\n base += '.' + this.pad(date.getMilliseconds());\n }\n if (withTimezone) {\n const tzo = -date.getTimezoneOffset(),\n dif = tzo >= 0 ? '+' : '-';\n\n base = base + (dif + this.pad(Math.floor(Math.abs(tzo) / 60)) + ':' + this.pad(Math.abs(tzo) % 60));\n }\n\n return base;\n }\n }\n\n public static fromPrimeToAngularDateFormat(ngDateFormat: string): string {\n let primeDateFormat = ngDateFormat;\n for (const regex of DateUtil.NG_PRIME_FORMAT_OTHER) {\n primeDateFormat = primeDateFormat.replace(regex, ' ');\n }\n for (const regex of DateUtil.NG_PRIME_FORMAT_SUPPORTED) {\n const matches = [...primeDateFormat.matchAll(regex)].reverse();\n for (const match of matches) {\n if (match.index) {\n const matchStr = match[0];\n const replacement = DateUtil.NG_PRIME_FORMAT_MAP[matchStr as keyof object] ?? match[0];\n primeDateFormat = primeDateFormat.substring(0, match.index) + replacement + primeDateFormat.substring(match.index + matchStr.length);\n }\n }\n }\n primeDateFormat = primeDateFormat.replace(/\\s+\\W\\s+/g, ' ');\n primeDateFormat = primeDateFormat.replace(/\\s\\s+/g, ' ');\n\n return primeDateFormat.trim();\n }\n}\n","import {ClassType} from '../../types';\nimport {DateUtil, TypeUtil} from '../../utils';\nimport {AttributeDef, SerializableTypeMap, enumsMapBase, typeMapBase} from '../models';\n\nexport class ObjectSerializer {\n private static _instance: ObjectSerializer = new ObjectSerializer();\n private readonly _primitives: string[] = ['string', 'boolean', 'double', 'integer', 'long', 'float', 'number', 'any'];\n private readonly _typeMap: SerializableTypeMap = {\n ...typeMapBase\n };\n private readonly _enumMap: SerializableTypeMap = {\n ...enumsMapBase\n };\n\n private dateTimeInUtc = true;\n private dateTimeWithTimezone = true;\n private dateTimeWithMillis = true;\n\n public get primitives() {\n return this._primitives;\n }\n\n public get typeMap() {\n return this._typeMap;\n }\n\n public get enumMap() {\n return this._enumMap;\n }\n\n /**\n * Only use one instance of object (out of Angular context)\n */\n public static get(): ObjectSerializer {\n return ObjectSerializer._instance;\n }\n\n public findAttributeDefinitionByClassType(type: ClassType<any>, attributeName: string): AttributeDef | null {\n return this.findAttributeDefinition(TypeUtil.findTypeName(type), attributeName);\n }\n\n public findAttributeDefinition(typeName: string, attributeName: string): AttributeDef | null {\n const attributeDefs = this.findAttributesDefinition(typeName);\n if (!attributeDefs) {\n return null;\n }\n for (const attribute of attributeDefs) {\n if (attribute.name === attributeName) {\n return attribute;\n }\n }\n return null;\n }\n\n public findAttributesDefinitionByClassType(type: ClassType<any>): Array<AttributeDef> | null {\n return this.findAttributesDefinition(TypeUtil.findTypeName(type));\n }\n\n public findAttributesDefinition(typeName: string): Array<AttributeDef> | null {\n const typeDef = this.findType(typeName);\n if (!typeDef || typeof typeDef.getAttributeTypeMap !== 'function') {\n return null;\n }\n return typeDef.getAttributeTypeMap() as Array<AttributeDef>;\n }\n\n public findByClassType(type: ClassType<any>): any {\n return this.findType(TypeUtil.findTypeName(type));\n }\n\n public findType(typeName: string): any {\n return this._typeMap[typeName];\n }\n\n public findEnum(enumName: string): any {\n return this._enumMap[enumName];\n }\n\n public configure(config: {dateTimeInUtc?: boolean; dateTimeWithTimezone?: boolean; dateTimeWithMillis?: boolean}): void {\n if (config.dateTimeInUtc !== undefined) {\n this.dateTimeInUtc = config.dateTimeInUtc;\n }\n if (config.dateTimeWithTimezone !== undefined) {\n this.dateTimeWithTimezone = config.dateTimeWithTimezone;\n }\n if (config.dateTimeWithMillis !== undefined) {\n this.dateTimeWithMillis = config.dateTimeWithMillis;\n }\n }\n\n public registerTypes(types: SerializableTypeMap) {\n for (const key in types) {\n this.registerType(types[key], key);\n }\n }\n\n public registerType(type: ClassType<any>, optTypeName?: string) {\n // try to find name from metadata\n let typeName: string | undefined;\n if (TypeUtil.typeNameExists(type)) {\n // defined name from optional type name\n typeName = TypeUtil.findTypeName(type);\n } else if (optTypeName) {\n typeName = optTypeName;\n // register metadata\n TypeUtil.defineReflectTypeName(type, typeName);\n }\n\n if (!typeName) {\n console.warn(`Registering type ${type} failed, because typeName could not be determined and optional name was not provided.`);\n return;\n }\n if (typeof this._typeMap[typeName] !== 'undefined') {\n console.warn(`Registering type ${type} under key ${typeName} skipped, because type already exists for this key.`);\n } else {\n this._typeMap[typeName] = type;\n }\n }\n\n public registerEnums(enums: SerializableTypeMap) {\n for (const key in enums) {\n this.registerEnum(enums[key], key);\n }\n }\n\n public registerEnum(enumType: any, enumName: string) {\n // try to find name from decorator\n if (typeof this._enumMap[enumName] !== 'undefined') {\n console.warn(`Registering enum ${enumName} skipped, because enum already exists.`);\n } else {\n TypeUtil.defineReflectEnumName(enumType, enumName);\n this._enumMap[enumName] = enumType;\n }\n }\n\n public findCorrectType(data: any, expectedType: string) {\n if (data == undefined) {\n return expectedType;\n } else if (this._primitives.indexOf(expectedType.toLowerCase()) !== -1) {\n return expectedType;\n } else if (expectedType === 'Date') {\n return expectedType;\n } else {\n if (this._enumMap[expectedType]) {\n return expectedType;\n }\n\n if (!this._typeMap[expectedType]) {\n return expectedType; // w/e we don't know the type\n }\n\n // Check the discriminator\n const discriminatorProperty = this._typeMap[expectedType].discriminator;\n if (discriminatorProperty == null) {\n return expectedType; // the type does not have a discriminator. use it.\n } else {\n if (data[discriminatorProperty]) {\n const discriminatorType = data[discriminatorProperty];\n if (this._typeMap[discriminatorType]) {\n return discriminatorType; // use the type given in the discriminator\n } else {\n return expectedType; // discriminator did not map to a type\n }\n } else {\n return expectedType; // discriminator was not present (or an empty string)\n }\n }\n }\n }\n\n public serializeClass<T>(data: T, type: ClassType<T>) {\n return this.serialize(data, TypeUtil.findTypeName(type));\n }\n\n public serializeClassArray<T>(data: Array<T>, type: ClassType<T>) {\n return this.serialize(data, `Array<${TypeUtil.findTypeName(type)}>`);\n }\n\n public serialize(data: any, type: string, subtype: string | undefined = undefined) {\n if (data == undefined) {\n return data;\n } else if (this._primitives.indexOf(type.toLowerCase()) !== -1) {\n return data;\n } else if (type.lastIndexOf('Array<', 0) === 0) {\n // string.startsWith pre es6\n let subType: string = type.replace('Array<', ''); // Array<Type> => Type>\n subType = subType.substring(0, subType.length - 1); // Type> => Type\n const transformedData: any[] = [];\n // tslint:disable-next-line:prefer-for-of\n for (let index = 0; index < data.length; index++) {\n const datum = data[index];\n transformedData.push(this.serialize(datum, subType));\n }\n return transformedData;\n } else if (type === 'Date') {\n const dateOnly = subtype === 'date';\n return DateUtil.toIsoString(data, this.dateTimeInUtc, this.dateTimeWithTimezone, this.dateTimeWithMillis, dateOnly);\n } else {\n if (this._enumMap[type]) {\n return data;\n }\n if (!this._typeMap[type]) {\n // in case we dont know the type\n return data;\n }\n\n // Get the actual type of this object\n type = this.findCorrectType(data, type);\n\n // get the map for the correct type.\n const attributeTypes = this._typeMap[type].getAttributeTypeMap() as Array<AttributeDef>;\n const instance: {[index: string]: any} = {};\n // tslint:disable-next-line:prefer-for-of\n for (let index = 0; index < attributeTypes.length; index++) {\n const attributeType = attributeTypes[index];\n instance[attributeType.baseName] = this.serialize(data[attributeType.name], attributeType.type, attributeType.subtype);\n }\n return instance;\n }\n }\n\n public deserializeClass<T>(data: any, type: ClassType<T>): T {\n return this.deserialize(data, TypeUtil.findTypeName(type));\n }\n\n public deserializeClassArray<T>(data: any, type: ClassType<T>): Array<T> {\n return this.deserialize(data, `Array<${TypeUtil.findTypeName(type)}>`);\n }\n\n public deserialize(data: any, type: string) {\n // polymorphism may change the actual type.\n type = this.findCorrectType(data, type);\n if (data == undefined) {\n return data;\n } else if (this._primitives.indexOf(type.toLowerCase()) !== -1) {\n return data;\n } else if (type.lastIndexOf('Array<', 0) === 0) {\n // string.startsWith pre es6\n let subType: string = type.replace('Array<', ''); // Array<Type> => Type>\n subType = subType.substring(0, subType.length - 1); // Type> => Type\n const transformedData: any[] = [];\n // tslint:disable-next-line:prefer-for-of\n for (let index = 0; index < data.length; index++) {\n const datum = data[index];\n transformedData.push(this.deserialize(datum, subType));\n }\n return transformedData;\n } else if (type === 'Date') {\n return new Date(data);\n } else {\n if (this._enumMap[type]) {\n // is Enum\n return data;\n }\n\n if (!this._typeMap[type]) {\n // dont know the type\n return data;\n }\n const instance = new this._typeMap[type]();\n const attributeTypes = this._typeMap[type].getAttributeTypeMap() as Array<AttributeDef>;\n // tslint:disable-next-line:prefer-for-of\n for (let index = 0; index < attributeTypes.length; index++) {\n const attributeType = attributeTypes[index];\n instance[attributeType.name] = this.deserialize(data[attributeType.baseName], attributeType.type);\n }\n return instance;\n }\n }\n}\n","export enum ActionPositionEnum {\n ToolbarLeft,\n ToolbarRight,\n TableHeader,\n RowInline,\n RowClick,\n FooterLeft,\n FooterRight\n}\n\nexport enum ActionActivationTriggerEnum {\n OnClick, // action is triggered for activation on click\n OnRoute // action is triggered for activation by route url\n}\n\nexport enum ActionTypeEnum {\n Direct, // action is directly activated and executed\n Editor // editor providing middle step for activation\n}\n\nexport enum ActionEditorSubmitTypeEnum {\n Submit,\n Cancel\n}\n","export enum ColumnTypeEnum {\n String = 'STRING',\n Number = 'NUMBER',\n Boolean = 'BOOLEAN',\n Date = 'DATE',\n Enum = 'ENUM',\n Custom = 'CUSTOM'\n}\n\nexport enum ColumnDisplayTypeEnum {\n String = 'STRING',\n Number = 'NUMBER',\n Currency = 'CURRENCY',\n Boolean = 'BOOLEAN',\n Date = 'DATE',\n Enum = 'ENUM',\n Component = 'COMPONENT',\n Html = 'HTML'\n}\n","export enum TableviewEditorTypeEnum {\n None,\n Details,\n Edit,\n Add\n}\n","export enum FieldSizeEnum {\n Small,\n Normal,\n Large\n}\n\nexport enum FieldInputTypeEnum {\n Hidden,\n Label,\n Text,\n Textarea,\n Number,\n Currency,\n Switch,\n Radio,\n Datepicker,\n Mask,\n File,\n ImageFile,\n ImageUrl,\n Custom\n}\n\nexport enum FieldLookupTypeEnum {\n Dropdown,\n Autocomplete,\n Dialog,\n Custom\n}\n\nexport enum FieldManyToManyEditorTypeEnum {\n DialogTableMultiselect\n}\n\nexport enum FieldManyToManyEditorActionEnum {\n Add,\n Delete\n}\n\nexport enum FieldManyEditorTypeEnum {\n DialogEditor\n}\n\nexport enum FieldManyEditorActionEnum {\n View,\n Add,\n Edit,\n Delete\n}\n\nexport enum FieldGroupTypeEnum {\n Fieldset,\n Logical\n}\n","export enum FilterTypeEnum {\n String,\n Number,\n Boolean,\n Date,\n Lookup,\n LookupEnum\n}\n\nexport enum FilterMatchModeEnum {\n StartsWith = 'startsWith',\n Contains = 'contains',\n EndsWith = 'endsWith',\n Equals = 'equals',\n NotEquals = 'notEquals',\n In = 'in',\n LessThan = 'lt',\n GreaterThan = 'gt',\n Between = 'between',\n DateIs = 'dateIs',\n DateIsNot = 'dateIsNot',\n DateBefore = 'dateBefore',\n DateAfter = 'dateAfter'\n}\n\nexport enum FilterLookupTypeEnum {\n Dropdown,\n Autocomplete\n}\n","export enum TablePaginationModeEnum {\n Pagination,\n InfiniteScroll,\n None\n}\n\nexport enum TableFilterDisplayEnum {\n Row,\n /**\n * @deprecated won't be supported anymore\n */\n Menu\n}\n\nexport enum TableSizeEnum {\n Small,\n Normal,\n Large\n}\n\n/**\n * EXCLUDE default, all columns has sort and filter on by default, developer EXCLUDES properties from sort/filter\n * INCLUDE_ONLY only selected columns have sort/filter, developers INCLUDES properties\n */\nexport enum TableDynamicColumnsModeEnum {\n EXCLUDE,\n INCLUDE_ONLY\n}\n","import {Params} from '@angular/router';\n\nimport {FilterMatchMode, FilterMetadata, LazyLoadEvent} from 'primeng/api';\n\nimport {FilterDescriptor} from '../../descriptors/filter';\nimport {ColumnDescriptor} from '../../descriptors/table';\nimport {FilterTypeEnum} from '../../descriptors/types';\nimport {MatchModeMapType} from '../../types';\nimport {DateUtil} from '../../utils';\nimport {MediusFilterMatchType, MediusQueryParam, MediusQueryParamBuilder} from '../models';\n\nexport class MediusRestUtil {\n private static _instance: MediusRestUtil = new MediusRestUtil();\n // first value is from primeNG, second is for use in query params\n private readonly matchModeMapping: Array<MatchModeMapType> = [\n [FilterMatchMode.CONTAINS, 'c', MediusFilterMatchType.Contains, null],\n [FilterMatchMode.ENDS_WITH, 'ew', MediusFilterMatchType.EndsWith, null],\n [FilterMatchMode.EQUALS, 'eq', MediusFilterMatchType.Equals, null],\n [FilterMatchMode.GREATER_THAN, 'gt', MediusFilterMatchType.GreaterThan, null],\n [FilterMatchMode.LESS_THAN, 'lt', MediusFilterMatchType.SmallerThan, null],\n [FilterMatchMode.STARTS_WITH, 'sw', MediusFilterMatchType.StartsWith, null],\n [FilterMatchMode.IN, 'in', MediusFilterMatchType.In, null],\n [FilterMatchMode.NOT_EQUALS, 'neq', MediusFilterMatchType.NotEquals, null],\n [FilterMatchMode.BETWEEN, 'ft', MediusFilterMatchType.FromTo, FilterTypeEnum.Date],\n [FilterMatchMode.DATE_IS, 'dteq', MediusFilterMatchType.Equals, FilterTypeEnum.Date],\n [FilterMatchMode.DATE_BEFORE, 'lt', MediusFilterMatchType.SmallerThan, FilterTypeEnum.Date],\n [FilterMatchMode.DATE_AFTER, 'gt', MediusFilterMatchType.GreaterThan, FilterTypeEnum.Date],\n [FilterMatchMode.DATE_IS_NOT, 'neq', MediusFilterMatchType.NotEquals, FilterTypeEnum.Date]\n ];\n\n private dateTimeInUtc = true;\n private dateTimeWithTimezone = true;\n private dateTimeWithMillis = true;\n private dateOnlyDisabled = false;\n\n private constructor() {\n // empty\n }\n\n public static get(): MediusRestUtil {\n return MediusRestUtil._instance;\n }\n\n public configure(config: {dateTimeInUtc?: boolean; dateTimeWithTimezone?: boolean; dateTimeWithMillis?: boolean; dateOnlyDisabled?: boolean}): void {\n if (config.dateTimeInUtc !== undefined) {\n this.dateTimeInUtc = config.dateTimeInUtc;\n }\n if (config.dateTimeWithTimezone !== undefined) {\n this.dateTimeWithTimezone = config.dateTimeWithTimezone;\n }\n if (config.dateTimeWithMillis !== undefined) {\n this.dateTimeWithMillis = config.dateTimeWithMillis;\n }\n if (config.dateOnlyDisabled !== undefined) {\n this.dateOnlyDisabled = config.dateOnlyDisabled;\n }\n }\n\n public fromAngularQueryParamsToMediusQueryParams(\n params: Params,\n filterDescriptors: Array<FilterDescriptor<any>>,\n defaultItemsPerPage = 10,\n defaultOffset = 0\n ): MediusQueryParam {\n const offset = params['first'] ? parseInt(params['first']) : defaultOffset;\n const itemsPerPage = params['rows'] ? parseInt(params['rows']) : defaultItemsPerPage;\n\n const mediusParamsBuilder = MediusQueryParamBuilder.create(itemsPerPage, offset);\n\n if (params['sort']) {\n for (const sort of params['sort'].split(',')) {\n const qpSortSplit = sort.split(':');\n const field = qpSortSplit[0];\n const asc = qpSortSplit.length > 1 ? qpSortSplit[1] === 'asc' : true;\n mediusParamsBuilder.withSort(field, asc);\n }\n }\n if (params['filter']) {\n const filterSplit = params['filter'].split(';');\n for (const filterField of filterSplit) {\n const filterFieldSplit = filterField.split(':');\n const field = filterFieldSplit[0];\n const operator = filterFieldSplit.length > 1 ? filterFieldSplit[1] : 'eq';\n\n // prepare value\n let value: any = filterFieldSplit.length > 2 ? filterFieldSplit.slice(2).join(':') : '';\n let valueTo: any = undefined;\n if (value.startsWith(\"'\")) {\n value = value.substring(1, value.length - 1);\n }\n if (value.startsWith('[') && value.endsWith(']')) {\n value = value\n .substring(1, value.length - 1)\n .split(',')\n .map((v: string) => (v.startsWith(\"'\") ? v.substring(1, v.length - 1) : v));\n }\n\n if (operator === 'ft') {\n valueTo = value[1];\n value = value[0];\n }\n\n const filterDescriptor = filterDescriptors.find(f => f.property === field);\n const matchMode = this.getMapping(operator, filterDescriptor?.filterType, 1);\n if (matchMode && filterDescriptor) {\n mediusParamsBuilder.withFilter(filterDescriptor.property, value, valueTo, this.getMediusFilterMatchTypeFromPrimeMatchMode(matchMode[0]));\n }\n }\n }\n\n return mediusParamsBuilder.build();\n }\n\n public fromPrimeLazyLoadEventToAngularQueryParams(event: LazyLoadEvent): Params {\n const params: Params = {\n first: null,\n rows: null,\n sort: null,\n filter: null\n };\n\n if (event.first && event.first > 0) {\n params['first'] = event.first;\n }\n if (event.rows && event.rows > 0) {\n params['rows'] = event.rows;\n }\n\n if (event.multiSortMeta?.length) {\n params['sort'] = event.multiSortMeta?.map(s => `${s.field}${s.order === 1 ? '' : ':desc'}`).join(',');\n }\n\n if (event.filters) {\n const filters = [];\n for (const field in event.filters) {\n const primeOperator = event.filters[field].matchMode;\n let value = event.filters[field].value;\n const operatorMapping = primeOperator ? this.getMapping(primeOperator, undefined, 0) : undefined;\n if (operatorMapping && typeof value !== 'undefined' && value !== null) {\n let doAddFilter = false;\n if (typeof value === 'string' && value.length > 0) {\n value = `'${value}'`;\n doAddFilter = true;\n } else if (typeof value === 'number') {\n doAddFilter = true;\n } else if (typeof value === 'boolean') {\n doAddFilter = true;\n } else if (Array.isArray(value)) {\n const joinedValue = value\n .map(v => {\n if (v instanceof Date) {\n // for query params, always convert to iso string, correct transformation will be done later\n return v.toISOString();\n }\n return v;\n })\n .join(',');\n\n value = `[${joinedValue}]`;\n doAddFilter = true;\n } else if (value instanceof Date) {\n // for query params, always convert to iso string, correct transformation will be done later\n value = value.toISOString();\n doAddFilter = true;\n }\n\n if (doAddFilter) {\n filters.push(`${field}:${operatorMapping[1]}:${value}`);\n }\n }\n }\n if (filters.length > 0) {\n params['filter'] = filters.join(';');\n }\n }\n\n return params;\n }\n\n public modifySortProperties(mediusQueryParams: MediusQueryParam, columnDescriptors: Array<ColumnDescriptor<any, any>> | undefined) {\n if (mediusQueryParams.sortProperty && columnDescriptors) {\n for (const [i, sortProperty] of mediusQueryParams.sortProperty.entries()) {\n mediusQueryParams.sortProperty[i] = columnDescriptors.find(el => el.property === sortProperty)?.sortProperty ?? sortProperty;\n }\n }\n }\n\n public modifyFilterProperties(mediusQueryParams: MediusQueryParam, filterDescriptors: Array<FilterDescriptor<any>>) {\n for (const filterParam of mediusQueryParams.filterParams ?? []) {\n const filterDescriptor = filterDescriptors.find(f => f.property === filterParam.property);\n filterParam.property = filterDescriptor?.filterProperty ?? filterParam.property;\n if (filterDescriptor?.filterType === FilterTypeEnum.Date) {\n if (filterParam.filterMatchType === MediusFilterMatchType.Equals) {\n // convert date equals filter to date range\n const filterDate = filterParam.filterValue as Date;\n\n const startDate = new Date(filterDate);\n const endDate = new Date(startDate);\n\n if (filterDescriptor.datePickerShowTime) {\n startDate.setHours(startDate.getHours(), startDate.getMinutes(), 0, 0);\n endDate.setHours(endDate.getHours(), endDate.getMinutes() + 1, 0, 0);\n } else {\n startDate.setHours(0, 0, 0, 0);\n endDate.setHours(0, 0, 0, 0);\n endDate.setDate(endDate.getDate() + 1);\n }\n\n filterParam.filterMatchType = MediusFilterMatchType.FromTo;\n filterParam.filterValue = startDate;\n filterParam.filterValueTo = endDate;\n }\n\n // transform dates to correct iso string\n if (typeof filterParam.filterValue !== 'undefined') {\n if (Array.isArray(filterParam.filterValue)) {\n filterParam.filterValue = filterParam.filterValue.map(v =>\n DateUtil.toIsoString(\n v,\n filterDescriptor.datePickerValueInUtc ?? this.dateTimeInUtc,\n filterDescriptor.datePickerValueWithTimezone ?? this.dateTimeWithTimezone,\n this.dateTimeWithMillis,\n filterDescriptor.datePickerValueDateOnly ?? (this.dateOnlyDisabled ? false : !filterDescriptor.datePickerShowTime)\n )\n );\n } else {\n filterDescriptor.datePickerValueInUtc;\n filterParam.filterValue = DateUtil.toIsoString(\n filterParam.filterValue,\n filterDescriptor.datePickerValueInUtc ?? this.dateTimeInUtc,\n filterDescriptor.datePickerValueWithTimezone ?? this.dateTimeWithTimezone,\n this.dateTimeWithMillis,\n filterDescriptor.datePickerValueDateOnly ?? (this.dateOnlyDisabled ? false : !filterDescriptor.datePickerShowTime)\n );\n }\n }\n if (typeof filterParam.filterValueTo !== 'undefined') {\n if (Array.isArray(filterParam.filterValueTo)) {\n filterParam.filterValueTo = filterParam.filterValueTo.map(v =>\n DateUtil.toIsoString(\n v,\n filterDescriptor.datePickerValueInUtc ?? this.dateTimeInUtc,\n filterDescriptor.datePickerValueWithTimezone ?? this.dateTimeWithTimezone,\n this.dateTimeWithMillis,\n filterDescriptor.datePickerValueDateOnly ?? (this.dateOnlyDisabled ? false : !filterDescriptor.datePickerShowTime)\n )\n );\n } else {\n filterParam.filterValueTo = DateUtil.toIsoString(\n filterParam.filterValueTo,\n filterDescriptor.datePickerValueInUtc ?? this.dateTimeInUtc,\n filterDescriptor.datePickerValueWithTimezone ?? this.dateTimeWithTimezone,\n this.dateTimeWithMillis,\n filterDescriptor.datePickerValueDateOnly ?? (this.dateOnlyDisabled ? false : !filterDescriptor.datePickerShowTime)\n );\n }\n }\n }\n }\n }\n\n public fromPrimeLazyLoadEventToMediusQueryParams(event: LazyLoadEvent): MediusQueryParam {\n const queryParamBuilder = MediusQueryParamBuilder.create(event.rows, event.first);\n\n // apply sorting\n if (event.multiSortMeta) {\n event.multiSortMeta.forEach(msm => queryParamBuilder.withSort(msm.field, msm.order === 1));\n }\n\n // apply filtering\n if (event.filters) {\n for (const key of Object.keys(event.filters)) {\n const filterEvent = event.filters[key];\n if (Array.isArray(filterEvent)) {\n (filterEvent as FilterMetadata[]).filter(e => e.value).forEach(e => this.addMediusFilterFromPrimeFilterMetadata(queryParamBuilder, key, e));\n } else if (typeof filterEvent === 'object') {\n if (filterEvent.value) {\n this.addMediusFilterFromPrimeFilterMetadata(queryParamBuilder, key, filterEvent);\n }\n }\n }\n }\n\n return queryParamBuilder.build();\n }\n\n public addMediusFilterFromPrimeFilterMetadata(queryParamBuilder: MediusQueryParamBuilder, property: string, filterMetadata: FilterMetadata) {\n const matchType: MediusFilterMatchType = this.getMediusFilterMatchTypeFromPrimeMatchMode(filterMetadata.matchMode ?? 'equals');\n queryParamBuilder.withFilter(property, filterMetadata.value, undefined, matchType);\n }\n\n public getMediusFilterMatchTypeFromPrimeMatchMode(matchMode: string, dataType?: FilterTypeEnum): MediusFilterMatchType {\n return this.getMapping(matchMode, dataType)?.[2] ?? MediusFilterMatchType.Equals;\n }\n\n public getMapping(matchMode: string, dataType?: FilterTypeEnum, idx = 0): MatchModeMapType | null {\n const mappings = this.matchModeMapping.filter(m => m[idx] === matchMode && (!dataType || !m[3] || dataType === m[3]));\n if (mappings.length === 0) {\n return null;\n } else if (mappings.length === 1) {\n return mappings[0];\n } else {\n return mappings.sort((m1, m2) => (m2[3] ?? -1) - (m1[3] ?? -1))[0];\n }\n }\n}\n","import {Type} from '@angular/core';\n\nexport class MngFormEditorSubmitEvent<T> {\n public success = true;\n\n constructor(public readonly formItem: T) {}\n}\n\nexport enum MngFormFieldEventTypeEnum {\n ComponentLifecycle = 'ComponentLifecycle',\n ValueChange = 'ValueChange',\n DataProvider = 'DataProvider',\n DialogLifecycle = 'DialogLifecycle',\n Other = 'Other'\n}\n\nexport enum MngFormEventTypeEnum {\n ComponentLifecycle = 'ComponentLifecycle',\n ValueChange = 'ValueChange',\n Submit = 'Submit',\n Other = 'Other'\n}\n\nexport class MngFormFieldEventComponentSubtype {\n public static readonly ON_INIT = 'Component.OnInit';\n public static readonly ON_VIEW_INIT = 'Component.OnViewInit';\n public static readonly ON_CONTENT_INIT = 'Component.OnContentInit';\n public static readonly ON_DESTROY = 'Component.OnDestroy';\n}\n\nexport class MngFormFieldEventDialogSubtype {\n public static readonly VISIBILITY = 'Dialog.Visibility';\n public static readonly TABLE_CAPTION_COMPONENT_INSTANCE = 'Dialog.MngTable.CaptionComponentInstance';\n public static readonly TABLE_COLUMN_ACTIONS_COMPONENT_INSTANCE = 'Dialog.MngTable.ColumnActionsComponentInstance';\n}\n\nexport interface MngFormFieldEventData<T, ET> {\n eventSubtype?: string;\n value?: T;\n formValue?: ET;\n [key: string]: any;\n}\n\nexport interface MngFieldEventData<ET> {\n eventSubtype?: string;\n value?: any; // direct value from form.valueChanges, disabled field values and setters are not included\n formValue?: () => ET; // function that returns calculated form value\n submitValid?: boolean; // true if form is valid\n submitValue?: ET; // value on submit\n [key: string]: any;\n}\n\nexport class MngFormFieldEvent<T, ET> {\n constructor(\n public readonly type: MngFormFieldEventTypeEnum,\n public readonly componentType: Type<any>,\n public readonly componentInstance: any,\n public readonly data: MngFormFieldEventData<T, ET> = {}\n ) {}\n}\n\nexport class MngFormEvent<ET> {\n constructor(\n public readonly type: MngFormEventTypeEnum,\n public readonly componentType: Type<any>,\n public readonly componentInstance: any,\n public readonly data: MngFieldEventData<ET> = {}\n ) {}\n}\n","import {AttributeDef} from '../api/models';\nimport {ObjectSerializer} from '../api/utils';\nimport {ColumnDescriptor} from '../descriptors/table';\nimport {ColumnDisplayTypeEnum, ColumnTypeEnum, FieldInputTypeEnum} from '../descriptors/types';\nimport {MngErrorInternal} from '../models';\nimport {TableviewAttributeDef} from '../models/tableview-attr.model';\nimport {ClassType, EnumType} from '../types';\n\nexport class TableviewUtil {\n private static _dateRegex = /\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z)/;\n\n /**\n * returns attributes from class type and extends to typed def with column and field enum type\n * @param modelType class type\n */\n public static getAttributeDefMap<T>(modelType: ClassType<T>): TableviewAttributeDef[] {\n return TableviewUtil.expandAttributeDefWithTableviewTypes(ObjectSerializer.get().findAttributesDefinitionByClassType(modelType));\n }\n\n /**\n * expands AttributeDef to TableviewAttributeDef with defined input and column enum type\n * @param attributes open api specification model\n */\n public static expandAttributeDefWithTableviewTypes(attributes?: Array<AttributeDef> | null): TableviewAttributeDef[] {\n if (attributes == null) {\n throw new MngErrorInternal('AttributeDef is null, problem with ObjectSerializer::findAttributesDefinitionByClassType?', 'TableViewUtils error').consoleError();\n }\n const objectSerializer = ObjectSerializer.get();\n\n const tableviewAttributeDef: TableviewAttributeDef[] = [];\n\n for (const attribute of attributes) {\n const enumType = objectSerializer.findEnum(attribute.type);\n const columnType = enumType ? ColumnTypeEnum.Enum : TableviewUtil.toColumnType(attribute.type);\n tableviewAttributeDef.push({\n name: attribute.name,\n baseName: attribute.baseName,\n type: attribute.type,\n columnType: enumType ? ColumnTypeEnum.Enum : TableviewUtil.toColumnType(attribute.type),\n columnDisplayType: TableviewUtil.toColumnDisplayType(columnType, attribute.type),\n fieldType: TableviewUtil.toFieldInputType(attribute.type),\n enumType: objectSerializer.findEnum(attribute.type) as EnumType,\n classType: objectSerializer.findType(attribute.type) as ClassType<any>\n });\n }\n\n return tableviewAttributeDef;\n }\n\n /**\n * converts column to number or date on value based\n * @param column column to be transformed\n * @param value value to check if applicable\n */\n public static stringColumnConverter(column: ColumnDescriptor<any, any>, value: any): ColumnDescriptor<any, any> {\n if (typeof value === 'boolean') {\n return column.asBoolean();\n } else if (!isNaN(value) && typeof value === 'number') {\n return column.asNumber();\n } else if (this._dateRegex.test(value)) {\n return column.asDate();\n } else {\n return column;\n }\n }\n\n /**\n * converts string type to column type enum, default is string\n * @param propertyType\n */\n public static toColumnType(propertyType: string): ColumnTypeEnum {\n const os = ObjectSerializer.get();\n if (os.findEnum(propertyType) as EnumType) {\n propertyType = 'enum';\n } else if (os.findType(propertyType) as ClassType<any>) {\n propertyType = 'class';\n }\n\n switch (propertyType.toLowerCase()) {\n case 'number':\n case 'currency':\n return ColumnTypeEnum.Number;\n case 'boolean':\n return ColumnTypeEnum.Boolean;\n case 'date':\n return ColumnTypeEnum.Date;\n case 'enum':\n return ColumnTypeEnum.Enum;\n case 'custom':\n return ColumnTypeEnum.Custom;\n case 'class':\n return ColumnTypeEnum.String;\n case 'string':\n default:\n return ColumnTypeEnum.String;\n }\n }\n\n public static toColumnDisplayType(columnType: ColumnTypeEnum, propertyType: string): ColumnDisplayTypeEnum {\n switch (columnType) {\n case ColumnTypeEnum.Number:\n return propertyType === 'currency' ? ColumnDisplayTypeEnum.Currency : ColumnDisplayTypeEnum.Number;\n case ColumnTypeEnum.Boolean:\n return ColumnDisplayTypeEnum.Boolean;\n case ColumnTypeEnum.Date:\n return ColumnDisplayTypeEnum.Date;\n case ColumnTypeEnum.Enum:\n return ColumnDisplayTypeEnum.Enum;\n case ColumnTypeEnum.Custom:\n return ColumnDisplayTypeEnum.Component;\n case ColumnTypeEnum.String:\n default:\n return ColumnDisplayTypeEnum.String;\n }\n }\n\n /**\n * converts string type to type enum, default is text\n * @param property\n */\n public static toFieldInputType(property: string): FieldInputTypeEnum {\n switch (property) {\n case 'hidden':\n return FieldInputTypeEnum.Hidden;\n case 'label':\n return FieldInputTypeEnum.Label;\n case 'textarea':\n return FieldInputTypeEnum.Textarea;\n case 'number':\n return FieldInputTypeEnum.Number;\n case 'currency':\n return FieldInputTypeEnum.Currency;\n case 'switch':\n case 'boolean':\n return FieldInputTypeEnum.Switch;\n case 'radio':\n return FieldInputTypeEnum.Radio;\n case 'datepicker':\n return FieldInputTypeEnum.Datepicker;\n case 'mask':\n return FieldInputTypeEnum.Mask;\n case 'file':\n return FieldInputTypeEnum.File;\n case 'custom':\n return FieldInputTypeEnum.Custom;\n case 'text':\n default:\n return FieldInputTypeEnum.Text;\n }\n }\n\n /**\n * convert column type to equivalent field input type\n * @param type column type\n * @param displayType column display type\n */\n public static toFieldInputTypeFromColumnType(type: ColumnTypeEnum, displayType?: ColumnDisplayTypeEnum): FieldInputTypeEnum {\n switch (type) {\n case ColumnTypeEnum.Number:\n return displayType === ColumnDisplayTypeEnum.Currency ? FieldInputTypeEnum.Currency : FieldInputTypeEnum.Number;\n case ColumnTypeEnum.Boolean:\n return FieldInputTypeEnum.Switch;\n case ColumnTypeEnum.Date:\n return FieldInputTypeEnum.Datepicker;\n case ColumnTypeEnum.Custom:\n return FieldInputTypeEnum.Custom;\n case ColumnTypeEnum.String:\n case ColumnTypeEnum.Enum:\n default:\n return FieldInputTypeEnum.Text;\n }\n }\n\n /**\n * generates table layout preferences key used when saving preferences to localstorage\n * @param typeName string, required\n * @param url string, required\n * @param dataKey string, not required\n */\n public static generateTableLayoutPrefsKey(typeName: string, url: string, dataKey?: string): string {\n return `layoutPrefs~~${typeName}~~${dataKey ?? url.split('?')[0].split('#')[0]}`;\n }\n}\n","import {Type} from '@angular/core';\n\nimport {ClassType} from '../types';\n\nexport interface IDataProvider<T, S> {\n modelType: ClassType<T> | null;\n serviceType?: Type<S>;\n}\n\nexport class DataProvider<T, S> {\n protected _modelType: ClassType<T> | null;\n protected _serviceType?: Type<S>;\n\n constructor(modelType: ClassType<T> | null, serviceType?: Type<S>) {\n this._modelType = modelType;\n this._serviceType = serviceType;\n }\n\n public get serviceType() {\n return this._serviceType;\n }\n\n public get modelType() {\n return this._modelType;\n }\n\n public withServiceType(type: Type<S>): this {\n this._serviceType = type;\n return this;\n }\n}\n","import {Type} from '@angular/core';\n\nimport {Observable, throwError} from 'rxjs';\n\nimport {ClassType, IdType} from '../types';\nimport {DataProvider, IDataProvider} from './base.data-provider';\n\nexport interface IEditorDataProvider<T, S> extends IDataProvider<T, S> {\n fetch: (id: IdType, service?: S, locale?: string) => Observable<T>;\n create?: (item?: T, service?: S) => Observable<T>;\n update?: (id: IdType, item?: T, service?: S) => Observable<T>;\n delete?: (id: IdType, item?: T, service?: S) => Observable<T | null>;\n}\n\nexport class EditorDataProvider<T, S> extends DataProvider<T, S> implements IEditorDataProvider<T, S> {\n protected _fetch: (id: IdType, service?: S, locale?: string) => Observable<T> = id => throwError(`No fetch function provided for id ${id}.`);\n protected _create?: (item?: T, service?: S) => Observable<T>;\n protected _update?: (id: IdType, item?: T, service?: S) => Observable<T>;\n protected _delete?: (id: IdType, item?: T, service?: S) => Observable<T | null>;\n\n constructor(modelType: ClassType<T>, serviceType?: Type<S>) {\n super(modelType, serviceType);\n }\n\n public get fetch() {\n return this._fetch;\n }\n\n public get create() {\n return this._create;\n }\n\n public get update() {\n return this._update;\n }\n\n public get delete() {\n return this._delete;\n }\n\n public withFetch(fetch: (id: IdType, service?: S, locale?: string) => Observable<T>): this {\n this._fetch = fetch;\n return this;\n }\n\n public withCreate(create: (item?: T, service?: S) => Observable<T>): this {\n this._create = create;\n return this;\n }\n\n public withUpdate(update: (id: IdType, item?: T, service?: S) => Observable<T>): this {\n this._update = update;\n return this;\n }\n\n public withDelete(deleteFn: (id: IdType, item?: T, service?: S) => Observable<T | null>): this {\n this._delete = deleteFn;\n return this;\n }\n}\n","import {Type} from '@angular/core';\n\nimport {Observable, of} from 'rxjs';\n\nimport {MediusQueryParam} from '../api/models';\nimport {ClassType} from '../types';\nimport {DataProvider, IDataProvider} from './base.data-provider';\n\nexport interface ILookupDataProvider<T, S> extends IDataProvider<T, S> {\n lookup: (queryParam?: MediusQueryParam, service?: S, search?: string) => Observable<Array<T>>;\n}\n\nexport class LookupDataProvider<T, S> extends DataProvider<T, S> implements ILookupDataProvider<T, S> {\n protected _lookup: (queryParam?: MediusQueryParam, service?: S, search?: string) => Observable<Array<T>> = () => of([]);\n\n constructor(modelType: ClassType<T> | null, serviceType?: Type<S>) {\n super(modelType, serviceType);\n }\n\n public get lookup() {\n return this._lookup;\n }\n\n public withLookup(lookup: (queryParam?: MediusQueryParam, service?: S, search?: string) => Observable<Array<T>>): this {\n this._lookup = lookup;\n return this;\n }\n}\n","import {Type} from '@angular/core';\n\nimport {Observable, Subject, of} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {MediusQueryParam, MediusQueryResult} from '../api/models';\nimport {ClassType} from '../types';\nimport {DataProvider, IDataProvider} from './base.data-provider';\n\nexport interface ITableDataProvider<T, S> extends IDataProvider<T, S> {\n get isLazy(): boolean;\n\n getAll: (queryParam: MediusQueryParam, service?: S, locale?: string) => Observable<MediusQueryResult<T>>;\n\n getAllReload(queryParam?: MediusQueryParam): void;\n\n getAllReload$: Observable<MediusQueryParam | undefined>;\n}\n\nexport class TableDataProvider<T, S> extends DataProvider<T, S> implements ITableDataProvider<T, S> {\n protected _isLazy = true;\n protected _getAll: (queryParam: MediusQueryParam, service?: S, locale?: string) => Observable<MediusQueryResult<T>> = () => of(new MediusQueryResult<T>());\n protected _getAllReloadSubject = new Subject<MediusQueryParam | undefined>();\n\n constructor(modelType: ClassType<T>, serviceType?: Type<S>) {\n super(modelType, serviceType);\n }\n\n public get isLazy() {\n return this._isLazy;\n }\n\n public get getAll() {\n return this._getAll;\n }\n\n public get getAllReload$() {\n return this._getAllReloadSubject.asObservable();\n }\n\n public withGetAll(getAll: (queryParam: MediusQueryParam, service?: S, locale?: string) => Observable<MediusQueryResult<T>>): this {\n this._getAll = getAll;\n return this;\n }\n\n /**\n * Use this method to use inline load without lazy loading features on table and use inline pagination, filtering and sorting.\n * @param getAll\n */\n public withGetAllEagerly(getAll: (service?: S, locale?: string) => Observable<Array<T>>): this {\n this._getAll = (qp: MediusQueryParam, service?: S, locale?: string) => getAll(service, locale).pipe(map(i => MediusQueryResult.fromArray(i)));\n this._isLazy = false;\n return this;\n }\n\n public getAllReload(queryParam?: MediusQueryParam): void {\n this._getAllReloadSubject.next(queryParam);\n }\n}\n","import {Type} from '@angular/core';\n\nimport {Observable, Subject, of} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {MediusQueryParam, MediusQueryResult} from '../api/models';\nimport {ClassType, IdType} from '../types';\nimport {EditorDataProvider, IEditorDataProvider} from './editor.data-provider';\nimport {ITableDataProvider} from './table.data-provider';\n\nexport interface ITableviewDataProvider<T, S> extends IEditorDataProvider<T, S> {\n get isLazy(): boolean;\n\n getAll: (queryParam: MediusQueryParam, service?: S, locale?: string) => Observable<MediusQueryResult<T>>;\n\n getAllReload(queryParam?: MediusQueryParam): void;\n\n getAllReload$: Observable<MediusQueryParam | undefined>;\n}\n\nexport class TableviewDataProvider<T, S> extends EditorDataProvider<T, S> implements ITableviewDataProvider<T, S>, ITableDataProvider<T, S>, IEditorDataProvider<T, S> {\n protected _isLazy = true;\n protected _getAll: (queryParam: MediusQueryParam, service?: S, locale?: string) => Observable<MediusQueryResult<T>> = () => of(new MediusQueryResult<T>());\n protected _getAllReloadSubject = new Subject<MediusQueryParam | undefined>();\n\n constructor(modelType: ClassType<T>, serviceType?: Type<S>) {\n super(modelType, serviceType);\n }\n\n public get isLazy() {\n return this._isLazy;\n }\n\n public get getAll() {\n return this._getAll;\n }\n\n public get getAllReload$() {\n return this._getAllReloadSubject.asObservable();\n }\n\n public withGetAll(getAll: (queryParam: MediusQueryParam, service?: S, locale?: string) => Observable<MediusQueryResult<T>>): this {\n this._getAll = getAll;\n return this;\n }\n\n /**\n * Use this method to use inline load without lazy loading features on table and use inline pagination, filtering and sorting.\n * @param getAll\n */\n public withGetAllEagerly(getAll: (service?: S, locale?: string) => Observable<Array<T>>): this {\n this._getAll = (qp: MediusQueryParam, service?: S, locale?: string) => getAll(service, locale).pipe(map(i => MediusQueryResult.fromArray(i)));\n this._isLazy = false;\n return this;\n }\n\n public getAllReload(queryParam?: MediusQueryParam): void {\n this._getAllReloadSubject.next(queryParam);\n }\n}\n\nexport class DynamicTableviewDataProvider extends TableviewDataProvider<any, any> implements ITableviewDataProvider<any, any>, ITableDataProvider<any, any> {\n protected override _getAll: (queryParam: MediusQueryParam, locale?: string) => Observable<MediusQueryResult<any>> = () => of(new MediusQueryResult<any>());\n protected override _fetch: (id: IdType, locale?: string) => Observable<any> = () => of({});\n\n constructor() {\n super({} as ClassType<any>);\n }\n}\n","import {Type} from '@angular/core';\n\nimport {map} from 'rxjs/operators';\n\nimport {MediusFilterMatchType, MediusQueryParam, MediusQueryParamBuilder, MediusQueryResult} from '../api/models';\nimport {IMngCrudApiService, IMngGetAllApiService} from '../api/services';\nimport {ClassType} from '../types';\nimport {ModelUtil} from '../utils';\nimport {TableviewDataProvider} from './tableview.data-provider';\n\nexport class TableviewCrudDataProvider<T, S extends IMngCrudApiService<T> & IMngGetAllApiService<MediusQueryResult<T>>> extends TableviewDataProvider<T, S> {\n constructor(modelType: ClassType<T>, serviceType?: Type<S>, idPropertyName?: string, useGetAllForFetch = false) {\n super(modelType, serviceType);\n this.withGetAll((queryParam, service, locale) => service!.getAllPost(queryParam, undefined, locale));\n\n if (useGetAllForFetch) {\n const selectedIdPropertyName = idPropertyName ?? ModelUtil.findIdAttribute(modelType) ?? 'id';\n this.withFetch((id, service) => {\n const qp: MediusQueryParam = MediusQueryParamBuilder.create(10, 0).withFilter(selectedIdPropertyName, id, id, MediusFilterMatchType.Equals, true).build();\n return service!.getAllPost(qp).pipe(map(res => res.pageData![0]));\n });\n } else {\n this.withFetch((id, service, locale) => service!.getByIdGet!(id, undefined, locale));\n }\n this.withCreate((item, service) => service!.createPost!(item!));\n this.withUpdate((id, item, service) => service!.updatePut!(id, item!));\n this.withDelete((id, item, service) => service!.removeDelete!(id, item));\n }\n}\n","import {ActivatedRoute} from '@angular/router';\n\nimport {Confirmation, Message} from 'primeng/api';\nimport {DynamicDialogRef} from 'primeng/dynamicdialog';\nimport {BehaviorSubject, Observable, ReplaySubject, Subject, Subscription, distinctUntilChanged, take} from 'rxjs';\nimport {filter, first, map} from 'rxjs/operators';\n\nimport {MediusQueryParam} from '../../../api/models';\nimport {IDataProvider} from '../../../data-providers';\nimport {ActionDescriptor} from '../../../descriptors/action';\nimport {ActionActivationTriggerEnum, ActionTypeEnum} from '../../../descriptors/types';\nimport {IViewContainer, MngError} from '../../../models';\nimport {IdType} from '../../../types';\n\nexport class ActionError {\n constructor(\n public readonly error: any, // error details\n public readonly dismissed: boolean = false // by user\n ) {}\n}\n\n/**\n * Action execution instance containing data about execution state of action\n */\nexport class ActionInstance<T, S> {\n public readonly instanceId: string;\n public readonly instanceLongName: string;\n public readonly action: ActionDescriptor<T>;\n public readonly createdDate: Date = new Date();\n\n // function execution\n public readonly isRunLoadingSubject = new BehaviorSubject(false);\n\n // parameters, contexts, states\n public triggerParameters?: ActionParameters<T>;\n public activationParameters?: ActionParameters<T>;\n private readonly contexts: Array<ActionContext<T, S>> = [];\n private readonly executionSubject = new Subject<T | null | undefined>();\n private readonly executionIsRunningSubject = new BehaviorSubject(false);\n private readonly stateSubject = new BehaviorSubject<ActionInstanceStateEnum>(1);\n private readonly resultSubject = new ReplaySubject<T | null>(1);\n private readonly errorSubject = new ReplaySubject<ActionError>(1);\n\n private contextExecutionSubscriptions: Array<Subscription> = [];\n\n // result or error\n private _result?: T | null;\n private _error?: ActionError;\n\n // additional data from trigger/activation\n public activationDialogRef?: DynamicDialogRef;\n\n // linked actions\n private _reactivationInstanceSubject = new BehaviorSubject<ActionInstance<T, S> | undefined>(undefined); // editor action with resubmit enabled\n public previousInstance?: ActionInstance<T, S>;\n public nextActionInstance?: ActionInstance<unknown, unknown>; // as defined in action descriptor\n public errorActionInstance?: ActionInstance<T, S>; // error action must rely on same type, as defined in action descriptor\n\n constructor(action: ActionDescriptor<T>, state = ActionInstanceStateEnum.TriggerStart, public debug = false) {\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 if (this.debug) {\n // eslint-disable-next-line no-console, no-restricted-syntax\n console.debug(`ActionInstance ${this.instanceLongName} - state #${state}: ${ActionInstanceStateEnum[state]}`);\n }\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: T | null | undefined) {\n if (typeof result === 'undefined') {\n return;\n }\n if (this.debug) {\n // eslint-disable-next-line no-console, no-restricted-syntax\n console.debug(`ActionInstance ${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: ActionError | undefined) {\n if (typeof error === 'undefined') {\n return;\n }\n if (this.debug) {\n // eslint-disable-next-line no-console, no-restricted-syntax\n console.debug(`ActionInstance ${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: ActionInstance<T, S> | 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<ActionInstance<T, S>> {\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<T, S>, finishPrevious = true) {\n if (this.debug) {\n // eslint-disable-next-line no-console, no-restricted-syntax\n console.debug(`ActionInstance ${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 // eslint-disable-next-line no-console, no-restricted-syntax\n console.warn(`Force finishing action 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\n/**\n * Class containing all main data for action to be executed in run/fetch/submit states.\n */\nexport class ActionContext<T, S> {\n public readonly contextLongName: string;\n public previousActionInstance?: ActionInstance<unknown, unknown>;\n public confirmation?: Confirmation;\n public notification?: Message;\n public runSubscription?: Subscription;\n\n constructor(\n public readonly instance: ActionInstance<T, S>,\n public readonly parameters: ActionParameters<T>,\n public readonly functionName: 'run' | 'fetch' | 'submit',\n public readonly dataProvider?: IDataProvider<T, S>,\n public readonly serviceInstance?: S,\n private readonly executionSubject = new ReplaySubject<T | 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 if (this.instance.debug) {\n // eslint-disable-next-line no-console, no-restricted-syntax\n console.debug(`ActionContext ${this.contextLongName} - execution start`);\n }\n this.executionIsRunningSubject.next(true);\n }\n\n public executionNext(next: T | null | undefined, finish = true) {\n if (this.instance.debug) {\n // eslint-disable-next-line no-console, no-restricted-syntax\n console.debug(`ActionContext ${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 if (this.instance.debug) {\n // eslint-disable-next-line no-console, no-restricted-syntax\n console.debug(`ActionContext ${this.contextLongName} - execution complete`);\n }\n this.executionSubject.complete();\n this.executionIsRunningSubject.next(false);\n }\n\n public executionError(err: MngError) {\n if (this.instance.debug) {\n // eslint-disable-next-line no-console, no-restricted-syntax\n console.debug(`ActionContext ${this.contextLongName} - execution error`, err);\n }\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\n/**\n * Class containing all main data for action validations (enabled/visible) to be executed in validation states.\n */\nexport class ActionContextValidation<T, S> {\n constructor(\n public readonly descriptor: ActionDescriptor<T>,\n public readonly parameters: ActionParameters<T>,\n public readonly dataProvider?: IDataProvider<T, S>,\n public readonly serviceInstance?: S\n ) {}\n}\n\nexport class ActionParameters<T> {\n public actionData?: ActionData;\n public queryParam?: MediusQueryParam;\n public viewContainer?: IViewContainer<T, unknown>;\n public sourceComponent?: any;\n public hostComponent?: unknown;\n public route?: ActivatedRoute;\n public selectedItems: T[] = [];\n public locale?: string;\n\n public formItem?: T | null;\n public submitResult?: T | null;\n\n constructor(public itemId?: IdType, public item?: T) {}\n\n public withActionData(actionData?: ActionData) {\n this.actionData = actionData;\n return this;\n }\n\n public withQueryParam(queryParam?: MediusQueryParam) {\n this.queryParam = queryParam;\n return this;\n }\n\n public withViewContainer(viewContainer?: IViewContainer<T, unknown>) {\n this.viewContainer = viewContainer;\n return this;\n }\n\n public withSourceComponent(sourceComponent?: any) {\n this.sourceComponent = sourceComponent;\n return this;\n }\n\n public withHostComponent(hostComponent?: unknown) {\n this.hostComponent = hostComponent;\n return this;\n }\n\n public withRoute(route?: ActivatedRoute) {\n this.route = route;\n return this;\n }\n\n public withSelectedItems(selectedItems: T[]): this {\n this.selectedItems = selectedItems;\n return this;\n }\n\n public withLocale(locale: string): this {\n this.locale = locale;\n return this;\n }\n\n /**\n * Used for action editor re-fetch.\n * @param item Form item.\n */\n public withFormItem(item: T | null | undefined): this {\n this.formItem = item;\n return this;\n }\n\n /**\n * Used for action editor re-fetch.\n * @param item Submit result.\n */\n public withSubmitResult(item: T | null | undefined): this {\n this.submitResult = item;\n return this;\n }\n}\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 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\nexport type ActionData = {\n [key: string]: any;\n};\n","/**\n * Default categories for tableview actions\n */\nexport class TableviewActionDefaultCategories {\n public static readonly READ = 'read';\n public static readonly ADD = 'add';\n public static readonly EDIT = 'edit';\n public static readonly DELETE = 'delete';\n public static readonly DETAILS = 'details';\n}\n","export enum StyleLevelEnum {\n Default,\n Primary,\n Secondary,\n Info,\n Help,\n Success,\n Warning,\n Danger\n}\n","export enum StyleSizeEnum {\n ExtraSmall,\n Small,\n Normal,\n Large,\n ExtraLarge\n}\n","import {InjectionToken} from '@angular/core';\n\nexport const MNG_BROWSER_STORAGE_IT = new InjectionToken<Storage>('Browser storage', {\n providedIn: 'root',\n factory: () => localStorage\n});\n","import {InjectionToken} from '@angular/core';\n\nimport {Observable} from 'rxjs';\n\nexport const MNG_COMMONS_INITIALIZER_IT = new InjectionToken<ReadonlyArray<() => Observable<unknown>>>('MNG Commons Initializer');\n","import {InjectionToken, Type} from '@angular/core';\n\nexport const ACTION_EDITOR_DIALOG_COMPONENT_SETTING: InjectionToken<Type<any>> = new InjectionToken<Type<any>>('ACTION_EDITOR_DIALOG_COMPONENT_SETTING');\n","import {InjectionToken} from '@angular/core';\n\nimport {MngModuleConfig} from '../../models';\n\nexport const MNG_MODULE_CONFIG_IT = new InjectionToken<MngModuleConfig>('MngModuleConfig');\n","import {Inject, Injectable} from '@angular/core';\nimport {Title} from '@angular/platform-browser';\nimport {ActivatedRouteSnapshot, NavigationEnd, Router} from '@angular/router';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {FilterService, PrimeNGConfig} from 'primeng/api';\nimport {BehaviorSubject, Observable, ReplaySubject, Subject, Subscription, distinctUntilChanged} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nimport {MediusRestUtil, ObjectSerializer} from '../api/utils';\nimport {FilterMatchModeEnum} from '../descriptors/types';\nimport {IUser, MngMenuItem, MngModuleConfig} from '../models';\nimport {MngBreadcrumbMenuItem, MngRouterData} from '../router/models';\nimport {MNG_BROWSER_STORAGE_IT, MNG_MODULE_CONFIG_IT} from './tokens';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MngCommonsService {\n // internal\n private routerEventsSubscription?: Subscription;\n private translateLangChangeSubscription?: Subscription;\n\n // menu\n private _menuMode: 'static' | 'sidebar' | 'slim' | 'overlay' = 'sidebar';\n private _menuModeSubject: Subject<'static' | 'sidebar' | 'slim' | 'overlay'> = new BehaviorSubject(this._menuMode);\n private _menuItems?: MngMenuItem[] = undefined;\n private _menuPinEnabled = false;\n private _menuSidebarSlim = false;\n private _menuActiveKeySubject = new Subject<string>();\n private _menuResetSubject = new Subject();\n\n // breadcrumbs\n private readonly breadcrumbHomeSubject = new BehaviorSubject<MngMenuItem | null>({\n icon: 'pi pi-home',\n routerLink: '/'\n });\n private readonly breadcrumbsSubject = new BehaviorSubject<MngMenuItem[]>([]);\n private breadcrumbsTranslateSubscription?: Subscription;\n private breadcrumbHomeTranslateSubscription?: Subscription;\n\n // visual\n private _colorScheme: 'light' | 'dark' = 'light';\n\n // user\n private _user?: IUser;\n private userSubject: Subject<IUser | undefined> = new ReplaySubject(1);\n private _userRoles: Array<string> = [];\n private userRolesSubject: Subject<Array<string>> = new BehaviorSubject<Array<string>>([]);\n\n // language\n private languageSubject = new ReplaySubject<string | null>(1);\n private dataLanguageSubject = new ReplaySubject<string | null>(1);\n\n constructor(\n private router: Router,\n private primengConfig: PrimeNGConfig,\n private translate: TranslateService,\n private titleService: Title,\n private filterService: FilterService,\n @Inject(MNG_MODULE_CONFIG_IT) private moduleConfig: MngModuleConfig,\n @Inject(MNG_BROWSER_STORAGE_IT) private localStorage: Storage\n ) {}\n\n // APP section\n\n public get appName() {\n return this.moduleConfig?.app?.name ?? 'app.name';\n }\n\n public get appOwner() {\n return this.moduleConfig?.app?.owner ?? 'app.owner';\n }\n\n public get appLogoLight() {\n return this.moduleConfig?.app?.logoPathLight ? this.moduleConfig.app.logoPathLight : this.moduleConfig?.app?.logoPath ?? 'assets/layout/images/logo.png';\n }\n\n public get appLogoDark() {\n return this.moduleConfig?.app?.logoPathDark ? this.moduleConfig.app.logoPathDark : this.moduleConfig?.app?.logoPath ?? 'assets/layout/images/logo.png';\n }\n\n public get appLogoNameLight() {\n return this.moduleConfig?.app?.logoNamePathLight\n ? this.moduleConfig.app.logoNamePathLight\n : this.moduleConfig?.app?.logoNamePath ?? 'assets/layout/images/logo-appname.png';\n }\n\n public get appLogoNameDark() {\n return this.moduleConfig?.app?.logoNamePathDark ? this.moduleConfig.app.logoNamePathDark : this.moduleConfig?.app?.logoNamePath ?? 'assets/layout/images/logo-appname.png';\n }\n\n public get appLanguages() {\n return this.moduleConfig?.app?.languages ?? ['en'];\n }\n\n public get appLanguage(): string | null {\n const lsLang = this.localStorage.getItem('lang');\n if (lsLang && this.appLanguages.some(l => l === lsLang)) {\n return lsLang;\n }\n return null;\n }\n\n public set appLanguage(language: string | null) {\n if (language === null) {\n this.localStorage.removeItem('lang');\n this.languageSubject.next(language);\n return;\n }\n if (this.appLanguages.some(l => l === language)) {\n this.localStorage.setItem('lang', language);\n this.languageSubject.next(language);\n this.translate.use(language);\n }\n }\n\n public get appLanguage$() {\n return this.languageSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n public initLanguage(): string {\n const browserLang = this.translate.getBrowserLang();\n if (browserLang && this.appLanguages.some(l => l === browserLang)) {\n this.appLanguage = browserLang;\n return browserLang;\n }\n const defaultLanguage = this.appLanguages?.length > 0 ? this.appLanguages[0] : 'en';\n this.appLanguage = defaultLanguage;\n return defaultLanguage;\n }\n\n public getOrInitLanguage(): string {\n return this.appLanguage || this.initLanguage();\n }\n\n public get appDataLanguages() {\n return this.moduleConfig?.app?.dataLanguages ?? ['en'];\n }\n\n public get appDataLanguageDefault() {\n return this.appDataLanguages[0];\n }\n\n public get appDataLanguage(): string | null {\n const dataLang = this.localStorage.getItem('dataLang');\n if (dataLang && this.appDataLanguages.some(dl => dl === dataLang)) {\n return dataLang;\n }\n return this.defaultDataLanguage;\n }\n\n public set appDataLanguage(dataLanguage: string | null) {\n if (dataLanguage === null) {\n this.localStorage.removeItem('dataLang');\n this.dataLanguageSubject.next(dataLanguage);\n return;\n }\n if (this.appDataLanguages.some(dl => dl === dataLanguage)) {\n this.localStorage.setItem('dataLang', dataLanguage);\n this.dataLanguageSubject.next(dataLanguage);\n }\n }\n\n public get appDataLanguage$() {\n return this.dataLanguageSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n // We assume, that default data language is the first one from the array of all available data languages\n public get defaultDataLanguage() {\n return this.appDataLanguages[0];\n }\n\n public get appVersion() {\n return this.moduleConfig?.app?.version;\n }\n\n // MENU section\n\n public get menuModeIsStatic() {\n return this._menuMode === 'static';\n }\n\n public get menuModeIsStatic$(): Observable<boolean> {\n return this._menuModeSubject.pipe(map(e => e === 'static'));\n }\n\n public get menuModeIsOverlay() {\n return this._menuMode === 'overlay';\n }\n\n public get menuModeIsOverlay$(): Observable<boolean> {\n return this._menuModeSubject.pipe(map(e => e === 'overlay'));\n }\n\n public get menuModeIsSlim() {\n return this._menuMode === 'slim';\n }\n\n public get menuModeIsSlim$(): Observable<boolean> {\n return this._menuModeSubject.pipe(map(e => e === 'slim'));\n }\n\n public get menuModeIsSidebar() {\n return this._menuMode === 'sidebar';\n }\n\n public get menuModeIsSidebar$(): Observable<boolean> {\n return this._menuModeSubject.pipe(map(e => e === 'sidebar'));\n }\n\n public get menuActiveKey$(): Observable<string> {\n return this._menuActiveKeySubject.asObservable();\n }\n\n public get menuReset$(): Observable<any> {\n return this._menuResetSubject.asObservable();\n }\n\n public get menuItems() {\n return this._menuItems;\n }\n\n public set menuItems(menuItems: MngMenuItem[] | undefined) {\n this._menuItems = menuItems;\n }\n\n public get menuPinEnabled() {\n return this._menuPinEnabled;\n }\n\n public get menuSidebarSlim() {\n return this._menuSidebarSlim;\n }\n\n // BREADCRUMB section\n public get breadcrumbHome$() {\n return this.breadcrumbHomeSubject.asObservable();\n }\n\n public get breadcrumbs$() {\n return this.breadcrumbsSubject.asObservable();\n }\n\n // VISUAL section\n\n public get colorSchemeIsLight() {\n return this._colorScheme === 'light';\n }\n\n public get colorSchemeIsDark() {\n return this._colorScheme === 'dark';\n }\n\n // USER section\n\n public get user() {\n return this._user;\n }\n\n public set user(user: IUser | undefined) {\n this._user = user;\n this.userSubject.next(user);\n }\n\n public get user$() {\n return this.userSubject.asObservable();\n }\n\n public get userRoles() {\n return this._userRoles;\n }\n\n public set userRoles(roles: Array<string>) {\n this._userRoles = roles;\n this.userRolesSubject.next(roles);\n }\n\n public get userRoles$() {\n return this.userRolesSubject.asObservable();\n }\n\n // ACTIONS section\n public get actionsDebugLog(): boolean {\n return this.moduleConfig.actions?.debugLog ?? false;\n }\n\n public get actionsDebugInstances(): boolean {\n return this.moduleConfig.actions?.debugInstances ?? false;\n }\n\n public reset() {\n this._menuMode = this.moduleConfig?.menu?.mode ?? 'sidebar';\n this._menuModeSubject.next(this._menuMode);\n this._menuItems = this.moduleConfig?.menu?.menuItems;\n this._menuPinEnabled = this.moduleConfig?.menu?.pinEnabled ?? false;\n this._menuSidebarSlim = this.moduleConfig?.menu?.sidebarSlim ?? false;\n\n // visual\n this._colorScheme = this.moduleConfig?.app?.colorScheme ?? 'light';\n\n // ripple\n this.primengConfig.ripple = true;\n this.primengConfig.filterMatchModeOptions = {\n text: [FilterMatchModeEnum.Contains, FilterMatchModeEnum.Equals, FilterMatchModeEnum.NotEquals, FilterMatchModeEnum.StartsWith, FilterMatchModeEnum.EndsWith],\n numeric: [FilterMatchModeEnum.Equals, FilterMatchModeEnum.NotEquals, FilterMatchModeEnum.LessThan, FilterMatchModeEnum.GreaterThan],\n date: [FilterMatchModeEnum.DateIs, FilterMatchModeEnum.DateBefore, FilterMatchModeEnum.DateAfter, FilterMatchModeEnum.Between]\n };\n\n // translate\n this.translate.langs = this.appLanguages;\n const lang = this.getOrInitLanguage();\n\n this.languageSubject.next(lang);\n this.dataLanguageSubject.next(this.appDataLanguage);\n\n this.translate.use(lang);\n this.translate.get('mngPrime').subscribe(value => this.primengConfig.setTranslation(value));\n\n this.routerEventsSubscription?.unsubscribe();\n this.routerEventsSubscription = this.router.events\n .pipe(\n // Filter the NavigationEnd events as the breadcrumb is updated only when the route reaches its end\n filter(event => event instanceof NavigationEnd)\n )\n .subscribe(() => {\n this.updateBreadcrumbs();\n this.setPageTitle();\n });\n this.translateLangChangeSubscription?.unsubscribe();\n this.translateLangChangeSubscription = this.translate.onLangChange.subscribe(() => {\n this.updateBreadcrumbs();\n this.setPageTitle();\n });\n\n // serialization\n ObjectSerializer.get().configure({...(this.moduleConfig?.serialization ?? {})});\n MediusRestUtil.get().configure({\n ...(this.moduleConfig?.serialization ?? {}),\n dateOnlyDisabled: this.moduleConfig.serialization?.filtersDateOnlyDisabled\n });\n }\n\n // MENU actions\n\n menuChangeActiveKey(key: string) {\n this._menuActiveKeySubject.next(key);\n }\n\n menuReset() {\n this._menuResetSubject.next(null);\n }\n\n // BREADCRUMB actions\n public findBreadcrumbItem(item: MngMenuItem): MngMenuItem | null {\n const items = this.breadcrumbsSubject.value;\n if (item.id) {\n return items.find(i => i.id && i.id === item.id) ?? null;\n } else if (item.routerLink) {\n const routerLinkStr = Array.isArray(item.routerLink) ? item.routerLink.join('/') : item.routerLink;\n return items.find(i => i.routerLink && (Array.isArray(i.routerLink) ? i.routerLink.join('/') : i.routerLink) === routerLinkStr) ?? null;\n } else if (item.positionIndex) {\n return items.find(i => i.positionIndex && i.positionIndex === i.positionIndex) ?? null;\n } else if (item.label) {\n return items.find(i => i.label && i.label === i.label) ?? null;\n } else if (item.icon) {\n return items.find(i => i.icon && i.icon === i.icon) ?? null;\n }\n return null;\n }\n\n public updateBreadcrumbItem(item: MngMenuItem): boolean {\n const items = [...this.breadcrumbsSubject.value];\n let posIdx = -1;\n if (item.id) {\n posIdx = items.findIndex(i => i.id && i.id === item.id);\n } else if (item.routerLink) {\n const routerLinkStr = Array.isArray(item.routerLink) ? item.routerLink.join('/') : item.routerLink;\n posIdx = items.findIndex(i => i.routerLink && (Array.isArray(i.routerLink) ? i.routerLink.join('/') : i.routerLink) === routerLinkStr);\n } else if (item.positionIndex) {\n posIdx = items.findIndex(i => i.positionIndex && i.positionIndex === i.positionIndex);\n } else if (item.label) {\n posIdx = items.findIndex(i => i.label && i.label === i.label);\n } else if (item.icon) {\n posIdx = items.findIndex(i => i.icon && i.icon === i.icon);\n }\n\n if (posIdx < 0) {\n return false;\n }\n\n items[posIdx] = {\n ...items[posIdx],\n ...item,\n updated: true\n };\n\n this.breadcrumbsSubject.next(items);\n\n return true;\n }\n\n private updateBreadcrumbs() {\n if (this.breadcrumbsTranslateSubscription) {\n this.breadcrumbsTranslateSubscription.unsubscribe();\n this.breadcrumbsTranslateSubscription = undefined;\n }\n if (this.breadcrumbHomeTranslateSubscription) {\n this.breadcrumbHomeTranslateSubscription.unsubscribe();\n this.breadcrumbHomeTranslateSubscription = undefined;\n }\n\n const rootRoute = this.router.routerState.snapshot.root;\n\n const homeBreadcrumb = this.generateHomeBreadcrumb(rootRoute);\n if (homeBreadcrumb) {\n if (homeBreadcrumb.label) {\n this.breadcrumbHomeTranslateSubscription = this.translate.get(homeBreadcrumb.label).subscribe(i18n => {\n homeBreadcrumb.label = i18n;\n this.breadcrumbHomeSubject.next(homeBreadcrumb);\n });\n } else {\n this.breadcrumbHomeSubject.next(homeBreadcrumb);\n }\n }\n\n const breadcrumbs: MngMenuItem[] = [];\n this.generateBreadcrumbs(rootRoute, [], breadcrumbs);\n\n breadcrumbs.forEach((b, idx) => {\n b.positionIndex = idx;\n });\n\n const i18nKeys: Array<string> = breadcrumbs.filter(b => typeof b.label === 'string').map(b => b.label!);\n if (i18nKeys.length > 0) {\n this.breadcrumbsTranslateSubscription = this.translate.get(i18nKeys).subscribe(i18n => {\n // Construct the breadcrumb hierarchy\n breadcrumbs.forEach(b => {\n if (b.label && i18n[b.label]) {\n b.label = i18n[b.label];\n }\n });\n\n // Emit the new breadcrumbs\n this.breadcrumbsSubject.next(breadcrumbs);\n });\n } else {\n this.breadcrumbsSubject.next(breadcrumbs);\n }\n }\n\n private generateHomeBreadcrumb(route: ActivatedRouteSnapshot | null): MngMenuItem | null {\n if (!route) {\n return null;\n }\n\n const routeData = route.data as MngRouterData;\n const breadcrumbRouteData = routeData?.breadcrumb;\n if (breadcrumbRouteData && typeof breadcrumbRouteData === 'object' && 'isHome' in breadcrumbRouteData) {\n if (breadcrumbRouteData.isHome === false) {\n return null;\n }\n const breadcrumb = this.createBreadcrumb('/', breadcrumbRouteData, true);\n if (breadcrumb) {\n if (typeof breadcrumb.icon === 'undefined') {\n breadcrumb.icon = 'pi pi-home';\n }\n return breadcrumb;\n }\n } else {\n return this.generateHomeBreadcrumb(route.firstChild);\n }\n return null;\n }\n\n private generateBreadcrumbs(route: ActivatedRouteSnapshot | null, parentUrlSegments: string[], breadcrumbs: MngMenuItem[]) {\n if (!route) {\n return;\n }\n\n const routeData = route.data as MngRouterData;\n const routeUrlSegments = parentUrlSegments.concat(route.url.map(url => url.path));\n const routeUrl = `/${routeUrlSegments.join('/')}`;\n if (routeData?.breadcrumb) {\n const breadcrumbRouteData = routeData.breadcrumb;\n\n if (Array.isArray(breadcrumbRouteData)) {\n for (const breadcrumbRouteDataItem of breadcrumbRouteData) {\n const breadcrumb = this.createBreadcrumb(routeUrl, breadcrumbRouteDataItem);\n if (breadcrumb) {\n breadcrumbs.push(breadcrumb);\n }\n }\n } else if (typeof breadcrumbRouteData === 'function') {\n breadcrumbs.push(...breadcrumbRouteData(routeUrl, route));\n } else {\n const breadcrumb = this.createBreadcrumb(routeUrl, breadcrumbRouteData);\n if (breadcrumb) {\n breadcrumbs.push(breadcrumb);\n }\n }\n }\n this.generateBreadcrumbs(route.firstChild, routeUrlSegments, breadcrumbs);\n }\n\n private createBreadcrumb(routeUrl: string, routeBreadcrumb: string | MngBreadcrumbMenuItem, includeHome = false): MngMenuItem | null {\n const existingBreadcrumb = this.findBreadcrumbItem({routerLink: routeUrl});\n if (existingBreadcrumb?.updated) {\n return existingBreadcrumb;\n }\n if (typeof routeBreadcrumb === 'string') {\n // check for updated existing breadcrumb\n return {\n id: routeUrl,\n label: routeBreadcrumb,\n routerLink: routeUrl\n };\n } else {\n if (!includeHome && typeof routeBreadcrumb.isHome !== 'undefined') {\n // home should not be included\n return null;\n }\n if (typeof routeBreadcrumb.routerLink === 'undefined') {\n routeBreadcrumb.routerLink = routeUrl;\n }\n routeBreadcrumb.id = routeUrl;\n return routeBreadcrumb;\n }\n }\n\n // TITLE section\n\n public setPageTitle(title?: string) {\n let currentRoute = this.router.routerState.snapshot.root;\n while (currentRoute.firstChild) {\n currentRoute = currentRoute.firstChild;\n }\n\n const routeData = currentRoute.data as MngRouterData;\n const pageTitle = title ?? routeData.pageTitle;\n\n this.titleService.setTitle(this.formatPageTitle(pageTitle));\n }\n\n private formatPageTitle(titlePrefix?: string) {\n const titlePieces = [];\n\n if (titlePrefix) {\n titlePieces.push(this.translate.instant(titlePrefix));\n }\n\n titlePieces.push(this.translate.instant('app.name'));\n\n return titlePieces.join(' - ');\n }\n}\n","import {Location} from '@angular/common';\nimport {Injectable} from '@angular/core';\nimport {NavigationEnd, Router} from '@angular/router';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MngNavigationService {\n private history: Array<string> = [];\n\n constructor(private router: Router, private location: Location) {\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 {MngError} from '../models';\n\nexport abstract class MngErrorMapperService {\n abstract toMngError(error?: any, mngError?: MngError): MngError;\n}\n\nexport class DefaultMngErrorMapperService extends MngErrorMapperService {\n toMngError(error?: any, mngError?: MngError): MngError {\n if (!mngError) {\n mngError = {\n name: error?.name ?? 'UnknownError',\n message: error.message ?? 'Unknown error'\n };\n }\n return mngError;\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n standalone: true,\n name: 'boolean',\n pure: true\n})\nexport class MngBooleanPipe implements PipeTransform {\n transform(value: any, yes?: string, no?: string, icon = false): any {\n if (typeof value === 'boolean') {\n if (icon) {\n return value ? yes ?? 'pi pi-check' : no ?? 'pi pi-times';\n } else {\n return value ? yes ?? 'general.yes' : no ?? 'general.no';\n }\n } else {\n return value;\n }\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nimport {EnumType} from '../types';\nimport {EnumUtil, TypeUtil} from '../utils';\n\n@Pipe({\n standalone: true,\n name: 'enum',\n pure: true\n})\nexport class MngEnumPipe implements PipeTransform {\n transform(value: unknown, enumObj: EnumType | undefined, i18nPath?: string | null, nameAsValue = false): any {\n if (!value || (typeof value !== 'number' && typeof value !== 'string') || !enumObj) {\n return value;\n }\n const enumConstantName = nameAsValue ? value : EnumUtil.getConstantNameFromEnumObject(enumObj, value) ?? value;\n if (typeof i18nPath === 'undefined') {\n i18nPath = TypeUtil.findEnumName(enumObj as EnumType);\n }\n return i18nPath ? `${i18nPath}.${enumConstantName}` : enumConstantName;\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n/**\n * Imitation of JSONPath Syntax. Supports:\n * - Root object notation with '$'\n * - Dot notation (e.g.: $.foo.bar), no bracket notation for properties\n * - Array notation (e.g.: [0])\n */\n@Pipe({\n standalone: true,\n name: 'jsonPath',\n pure: true\n})\nexport class JsonPathPipe implements PipeTransform {\n transform(value: any, path = ''): any {\n if (path === '$') {\n // only return the root\n return value;\n }\n\n // Check for leading root object notation\n if (path.startsWith('$')) {\n path = path.substring(1);\n }\n\n // Check for leading .\n if (path.startsWith('.')) {\n path = path.substring(1);\n }\n\n if (path.indexOf('.') >= 0) {\n const pathSplit = path.split('.');\n let currValue = value;\n for (const p of pathSplit) {\n if (typeof currValue === 'undefined' || currValue === null) {\n return currValue;\n }\n\n if (!p.length) {\n // empty path, return current value\n return currValue;\n }\n\n const leftBracketIdx = p.indexOf('[');\n if (leftBracketIdx >= 0 && p.endsWith(']')) {\n // should be reference to array\n const arrayPath = p.substring(0, leftBracketIdx);\n const arrayIdx = +p.substring(leftBracketIdx + 1, p.length - 1);\n const array = currValue[arrayPath];\n if (Array.isArray(array)) {\n if (arrayIdx >= 0 && arrayIdx < array.length) {\n // valid index, continue on the path\n currValue = array[arrayIdx];\n continue;\n } else {\n console.warn(`Path ${path} array index at ${p} is not within valid array range`, value);\n }\n } else {\n console.warn(`Path ${path} array at ${p} is not a valid array`, value);\n }\n\n return undefined;\n } else if (typeof currValue === 'object') {\n currValue = currValue[p];\n } else {\n console.warn(`Path ${path} is not valid for object`, value);\n return currValue;\n }\n }\n return currValue;\n } else {\n return value[path];\n }\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nimport {TranslateService} from '@ngx-translate/core';\n\nimport {JsonPathPipe} from './json-path.pipe';\nimport {EnumeratePipeI18nInternal} from './models/internal';\n\n@Pipe({\n standalone: true,\n name: 'mgnEnumerate',\n pure: true\n})\nexport class MngEnumeratePipe implements PipeTransform {\n private helper: EnumeratePipeI18nHelper;\n\n constructor(private jsonPath: JsonPathPipe, private translate: TranslateService) {\n this.helper = new EnumeratePipeI18nHelper(this.jsonPath);\n }\n\n transform<T>(value: Array<T> | Set<T>, jsonPath = '$', valueSeparator = ', ', emptyValueReturn = '/', i18nBaseKey = ''): string {\n if (!value) {\n return emptyValueReturn;\n }\n i18nBaseKey = EnumeratePipeI18nHelper.getI18nBaseKey(i18nBaseKey);\n return Array.from(value)\n .map(i => {\n const itemEnumerate = this.helper.toI18nEnumerate(i, jsonPath, i18nBaseKey);\n itemEnumerate.i18n = this.translate.instant(itemEnumerate.i18nKey);\n // return i18n only if used and transl. was found\n return EnumeratePipeI18nHelper.selectI18n(itemEnumerate, i18nBaseKey);\n })\n .join(valueSeparator);\n }\n}\n\nexport class EnumeratePipeI18nHelper {\n constructor(private jsonPathPipe: JsonPathPipe) {}\n\n public static getI18nBaseKey(baseKey: string): string {\n return baseKey.endsWith('.') ? baseKey?.substring(0, baseKey.length - 1) : baseKey;\n }\n\n public static selectI18n(value: EnumeratePipeI18nInternal, baseKey: string): string {\n return baseKey && value.i18nKey === value.i18n ? value.value : value.i18n;\n }\n\n public toI18nEnumerate(value: unknown, jsonPath: string, baseKey: string): EnumeratePipeI18nInternal {\n const valueTrans = this.jsonPathPipe.transform(value, jsonPath);\n const valueAsString = valueTrans.toString();\n return <EnumeratePipeI18nInternal>{\n value: valueAsString,\n i18nKey: baseKey ? `${baseKey}.${valueAsString}` : valueAsString,\n i18n: valueAsString\n };\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {Observable, combineLatest, mergeMap, of} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {EnumeratePipeI18nHelper} from './enumerate.pipe';\nimport {JsonPathPipe} from './json-path.pipe';\n\n@Pipe({\n standalone: true,\n name: 'mgnEnumerateAsync',\n pure: true\n})\nexport class MngEnumerateAsyncPipe implements PipeTransform {\n private helper: EnumeratePipeI18nHelper;\n\n constructor(private jsonPath: JsonPathPipe, private translate: TranslateService) {\n this.helper = new EnumeratePipeI18nHelper(this.jsonPath);\n }\n\n transform(value: Observable<Array<unknown> | Set<unknown>>, jsonPath = '$', valueSeparator = ', ', emptyValueReturn = '/', i18nBaseKey = ''): Observable<string> {\n i18nBaseKey = EnumeratePipeI18nHelper.getI18nBaseKey(i18nBaseKey);\n return value.pipe(\n mergeMap(v => {\n if (!v) {\n return of([emptyValueReturn]);\n }\n return combineLatest(\n Array.from(v)\n .map(ai => this.helper.toI18nEnumerate(ai, jsonPath, i18nBaseKey))\n .map(i =>\n this.translate.stream(i.i18nKey).pipe(\n map((i18n: string) => {\n i.i18n = i18n;\n return EnumeratePipeI18nHelper.selectI18n(i, i18nBaseKey);\n })\n )\n )\n );\n }),\n map(i => i.join(valueSeparator))\n );\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nimport {ModelDescriptor} from '../descriptors';\nimport {I18nUtils} from '../utils';\n\n@Pipe({\n standalone: true,\n name: 'i18nProperty',\n pure: true\n})\nexport class MngI18nPropertyPipe implements PipeTransform {\n transform(property: string, model: ModelDescriptor<any>): any {\n return I18nUtils.Type.getPropertyKey(model.i18nBaseKey, property);\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nimport {ActionData} from '../components/action/models';\nimport {IdType} from '../types';\nimport {StringUtil} from '../utils';\nimport {JsonPathPipe} from './json-path.pipe';\n\n@Pipe({\n standalone: true,\n name: 'parametrize',\n pure: true\n})\nexport class MngParametrizePipe implements PipeTransform {\n private jsonPath = new JsonPathPipe();\n\n transform(value: unknown, itemId?: IdType, item?: any, actionData?: ActionData): any {\n let params: any = {};\n if (actionData) {\n params = {\n ...params,\n ...actionData\n };\n }\n if (item) {\n params = {\n ...params,\n item: StringUtil.escapeHtmlAny(item)\n };\n }\n if (itemId) {\n params = {\n ...params,\n itemId: itemId\n };\n }\n\n if (typeof value === 'string') {\n return this.transformString(value, params);\n } else if (Array.isArray(value) && value.length > 0 && typeof value[0] === 'string') {\n return value.map((s: string) => this.transformString(s, params));\n } else if (typeof value === 'object') {\n // process only first level citizens\n const obj: any = {...value};\n for (const key in obj) {\n const objProp = obj[key];\n if (typeof objProp === 'string') {\n obj[key] = this.transformString(objProp, params);\n }\n }\n return obj;\n } else {\n return value;\n }\n }\n\n private transformString(s: string, params: any) {\n if ((s.indexOf('/') >= 0 && s.indexOf(':') >= 0 && !s.startsWith('http://') && !s.startsWith('https://')) || s.startsWith(':')) {\n // this is router link\n return s\n .split('/')\n .map(s => this.parametrizeStringAsRouterLink(s, params))\n .join('/');\n } else {\n // parametrize normally\n return this.parametrizeString(s, params);\n }\n }\n\n private parametrizeStringAsRouterLink(s: string, params: any): any {\n if (s.startsWith(':')) {\n const itemProperty = s.substring(1);\n return this.jsonPath.transform(params, itemProperty) ?? '';\n } else {\n return s;\n }\n }\n\n private parametrizeString(s: string, params: any): any {\n return s.replace(/{{\\s?([^{}\\s]*)\\s?}}/g, (subs: string, key: string) => this.jsonPath.transform(params, key) ?? subs);\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n standalone: true,\n name: 'getter',\n pure: true\n})\nexport class MngGetterPipe implements PipeTransform {\n transform<I, V>(item: I, getterFn: (item: I, value?: V | null) => unknown, value?: V | null): any {\n if (typeof getterFn === 'function') {\n return getterFn(item, value);\n }\n\n return value;\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nimport {MngParametrizePipe} from './parametrize.pipe';\n\n@Pipe({\n standalone: true,\n name: 'template',\n pure: true\n})\nexport class MngTemplatePipe implements PipeTransform {\n constructor(private parametrizePipe: MngParametrizePipe) {}\n\n transform(value: unknown, template?: string): any {\n if (typeof template === 'string') {\n return this.parametrizePipe.transform(template, undefined, value);\n }\n\n return value;\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n standalone: true,\n name: 'mngClassMapPipe',\n pure: true\n})\nexport class MngClassMapPipe<T> implements PipeTransform {\n transform(value?: string, classNameMapFn?: (className?: string, i?: T) => string, i?: T): string {\n if (classNameMapFn && typeof classNameMapFn === 'function') {\n return classNameMapFn(value, i);\n } else {\n return value ?? '';\n }\n }\n}\n","import {Injector, Pipe, PipeTransform} from '@angular/core';\n\nimport {TableDescriptor} from '../descriptors/table';\nimport {MngCommonsService} from '../services';\n\n@Pipe({\n standalone: true,\n name: 'mngLocaleDefaultRowClass',\n pure: true\n})\nexport class MngLocaleDefaultRowClassPipe<T> implements PipeTransform {\n constructor(private injector: Injector) {}\n\n transform(value?: any, descriptor?: TableDescriptor<T>, item?: T): string {\n if (descriptor?.isLocalized) {\n if ((item as any)[descriptor.localizationLocaleProperty!] === this.injector.get(MngCommonsService).defaultDataLanguage) {\n return value + ' all-translations-default-value';\n }\n }\n return value ?? '';\n }\n}\n","import {HttpErrorResponse} from '@angular/common/http';\nimport {Inject, Injectable, Injector, Type} from '@angular/core';\nimport {ActivatedRoute, Router, UrlTree} from '@angular/router';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {Confirmation} from 'primeng/api';\nimport {DialogService, DynamicDialogConfig} from 'primeng/dynamicdialog';\nimport {Observable, from, mergeMap, of, switchMap, take, timeout} from 'rxjs';\nimport {catchError, filter, first, map} from 'rxjs/operators';\n\nimport {ActionContext, ActionContextValidation, ActionInstance, ActionInstanceStateEnum, ActionParameters, IActionConfirmationService} from '../components/action/models';\nimport {MngTableCellClickEvent} from '../components/tableview/models';\nimport {IDataProvider, IEditorDataProvider} from '../data-providers';\nimport {ActionConfirmationDialogDescriptor, ActionDescriptor, ActionEditorDescriptor} from '../descriptors/action';\nimport {TableDescriptor} from '../descriptors/table';\nimport {ActionActivationTriggerEnum, ActionTypeEnum} from '../descriptors/types';\nimport {IViewActionRouteTriggeredContainer, IViewContainer, MngError, MngErrorInternal} from '../models';\nimport {MngParametrizePipe} from '../pipes';\nimport {StyleSizeEnum} from '../styles/models';\nimport {ActionDataProviderUtil, I18nUtils, NotificationUtil, StringUtil} from '../utils';\nimport {MngCommonsService} from './commons.service';\nimport {MngErrorMapperService} from './error-mapper.service';\nimport {MngNavigationService} from './navigation.service';\nimport {ACTION_EDITOR_DIALOG_COMPONENT_SETTING} from './tokens';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MngActionExecutorService {\n private readonly debugLog: boolean;\n private readonly instancesBufferMax = 100;\n private readonly _instances: ActionInstance<any, any>[] = [];\n\n constructor(\n private injector: Injector,\n private router: Router,\n private dialogService: DialogService,\n private translate: TranslateService,\n private mngCommons: MngCommonsService,\n private navigationService: MngNavigationService,\n private errorMapper: MngErrorMapperService,\n private parametrize: MngParametrizePipe,\n @Inject(ACTION_EDITOR_DIALOG_COMPONENT_SETTING) private defaultEditorDialogComponent: Type<any>\n ) {\n this.debugLog = this.mngCommons.actionsDebugLog;\n }\n\n public get instances() {\n return [...this._instances];\n }\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<T, S>(action: ActionDescriptor<T>, parameters: ActionParameters<T>, dataProvider?: IDataProvider<T, S>): ActionContextValidation<T, S> {\n const ctxDataProvider = dataProvider ?? action.dataProvider ?? parameters.viewContainer?.getDataProvider();\n return new ActionContextValidation<T, S>(action, parameters, ctxDataProvider, ActionDataProviderUtil.getDataProviderService(this.injector, ctxDataProvider) ?? undefined);\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<T, S>(ctx: ActionContext<T, S>) {\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 sourceComponent = ctx.parameters?.sourceComponent;\n const confirmationDescriptor = ctx.instance.action.runConfirmationDialogDescriptor as ActionConfirmationDialogDescriptor<T>;\n\n if (typeof sourceComponent?.getConfirmationService !== 'function' || typeof sourceComponent?.getConfirmationServiceInstanceKey !== 'function') {\n throw new MngErrorInternal(\n `Source component ${sourceComponent} should be implementing IConfirmationService interface to be able to provide confirmation functionality.`,\n 'ActionExecutorService error'\n ).consoleError();\n }\n\n const item = ctx.parameters.item;\n\n const srcConfirmComponent = sourceComponent as IActionConfirmationService;\n let confirmParams: Confirmation = {\n key: srcConfirmComponent.getConfirmationServiceInstanceKey(ctx.instance.action),\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 srcConfirmComponent.getConfirmationService().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 * @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 * @return Action context for submit (=run) function.\n */\n private runWithoutConfirmation<T, S>(ctx: ActionContext<T, S>): Observable<T | null | undefined> {\n const isMainRunFn = ctx.functionName === 'submit' || ctx.functionName === 'run';\n const isErrorCriticalRunFn = ctx.functionName === 'run';\n let actionEditor: ActionEditorDescriptor<T>;\n\n let fnObs: (ctx: ActionContext<T, S>) => Observable<T | null | undefined>;\n switch (ctx.functionName) {\n case 'submit':\n actionEditor = ctx.instance.action as ActionEditorDescriptor<T>;\n if (typeof actionEditor.submitFunction !== 'function') {\n const defaultSubmit = of(ctx.parameters?.item ? ctx.parameters.item : undefined);\n fnObs = ctx => {\n if (ctx.parameters.itemId) {\n return ActionDataProviderUtil.runUpdate(ctx, defaultSubmit);\n } else {\n return ActionDataProviderUtil.runCreate(ctx, defaultSubmit);\n }\n };\n } else {\n fnObs = actionEditor.submitFunction;\n }\n break;\n case 'fetch':\n actionEditor = ctx.instance.action as ActionEditorDescriptor<T>;\n if (typeof actionEditor.fetchFunction !== 'function') {\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 ActionDataProviderUtil.runFetch(ctx, defaultFetch);\n }\n return defaultFetch;\n };\n } else {\n fnObs = actionEditor.fetchFunction;\n }\n break;\n case 'run':\n default:\n fnObs = ctx.instance.action.runFunction;\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 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 = NotificationUtil.actionNotificationSuccess(\n this.translate,\n ctx.instance.action,\n ctx.functionName,\n ctx.instance.action.runNotificationSuccessTitle,\n ctx.instance.action.runNotificationSuccessMessage,\n ctx.parameters.viewContainer ?? undefined,\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 ctx.instance.state = ActionInstanceStateEnum.NextActionStart;\n const nextActionInstance = this.activateAction(\n ctx.instance.action.afterRunAction,\n new ActionParameters<unknown>(ctx.parameters.itemId, runResult)\n .withActionData(ctx.parameters.actionData)\n .withRoute(ctx.parameters.route)\n .withSourceComponent(ctx.parameters.sourceComponent)\n .withViewContainer(ctx.parameters.viewContainer as IViewContainer<unknown, unknown>),\n undefined,\n ctx.instance as ActionInstance<unknown, unknown>\n );\n ctx.instance.nextActionInstance = nextActionInstance;\n\n // finish current action when next action finishes\n return nextActionInstance.state$.pipe(\n filter(state => state >= ActionInstanceStateEnum.FinishSuccessFinal),\n map(() => {\n ctx.instance.state = ActionInstanceStateEnum.NextActionEnd;\n return runResult;\n })\n );\n }\n } else {\n if (actionEditor.hasFetchNotificationSuccess) {\n NotificationUtil.actionNotificationSuccess(\n this.translate,\n actionEditor,\n 'fetch',\n actionEditor.fetchNotificationSuccessTitle,\n actionEditor.fetchNotificationSuccessMessage,\n ctx.parameters.viewContainer,\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 mng action error\n const actionError = this.toMngActionError(err);\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 let errorObs = of(void 0);\n if (isMainRunFn) {\n ctx.instance.error = err;\n ctx.instance.isRunLoadingSubject.next(false);\n\n // handle error notification\n if (ctx.instance.action.hasRunNotificationError) {\n actionError.notification = NotificationUtil.actionNotificationError(\n this.translate,\n ctx.instance.action,\n actionError,\n ctx.functionName,\n ctx.parameters.viewContainer ?? undefined,\n ctx.parameters.item\n );\n }\n\n // handle possible error action if run\n if (isMainRunFn && ctx.instance.action.onRunErrorAction) {\n // cannot start with trigger, because routing might be problematic (lousing previous results etc.)\n const errorActionInstance = this.activateAction<T, S>(\n ctx.instance.action.onRunErrorAction,\n new ActionParameters<T>(ctx.parameters.itemId, ctx.parameters.item)\n .withActionData(ctx.parameters.actionData)\n .withRoute(ctx.parameters.route)\n .withSourceComponent(ctx.parameters.sourceComponent)\n .withViewContainer(ctx.parameters.viewContainer)\n );\n ctx.instance.errorActionInstance = errorActionInstance;\n errorObs = errorActionInstance.state$.pipe(\n filter(state => state >= ActionInstanceStateEnum.FinishSuccessFinal),\n map(() => void 0)\n );\n }\n } else {\n if (ctx.instance.action.hasRunNotificationError) {\n NotificationUtil.actionNotificationError(this.translate, ctx.instance.action, actionError, 'fetch', ctx.parameters.viewContainer, ctx.parameters.item);\n }\n }\n\n // liste 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 furher\n throw actionError;\n })\n );\n })\n );\n\n ctx.runSubscription = retObs.subscribe({\n next: res => {\n if (this.debugLog) {\n // eslint-disable-next-line no-console, no-restricted-syntax\n console.debug(`ActionContext ${ctx.contextLongName} execution next event`, res);\n }\n },\n error: err => {\n if (this.debugLog) {\n // eslint-disable-next-line no-console, no-restricted-syntax\n console.debug(`ActionContext ${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 * @return Action context for fetch function.\n */\n public prepareContextForEditorFetch<T, S>(\n action: ActionEditorDescriptor<T>,\n parameters: ActionParameters<T>,\n dataProvider?: IEditorDataProvider<T, S>,\n instance?: ActionInstance<T, S>,\n previousActionInstance?: ActionInstance<unknown, unknown>\n ): ActionContext<T, S> {\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 * @return Action context for submit (=run) function.\n */\n public prepareContextForEditorSubmit<T, S>(\n action: ActionEditorDescriptor<T>,\n parameters: ActionParameters<T>,\n dataProvider?: IEditorDataProvider<T, S>,\n instance?: ActionInstance<T, S>,\n previousActionInstance?: ActionInstance<unknown, unknown>\n ): ActionContext<T, S> {\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 item Item instance (if exists).\n * @param itemId Item id (if exists).\n * @param dataProvider Data provider.\n * @param sourceComponent Source component from where the context preparation was called.\n * @param viewContainer View container/service.\n * @param actionData Additional action data.\n */\n private prepareContextForEditor<T, S>(\n instance: ActionInstance<T, S>,\n parameters: ActionParameters<T>,\n functionName: 'submit' | 'fetch',\n dataProvider?: IEditorDataProvider<T, S>,\n previousActionInstance?: ActionInstance<unknown, unknown>\n ): ActionContext<T, S> {\n if (instance.action.type !== ActionTypeEnum.Editor) {\n throw new MngErrorInternal(`Cannot create editor context for action ${instance.action.actionNameLong} of type ${instance.action.type}.`);\n }\n const editorAction = instance.action as ActionEditorDescriptor<T>;\n let ctxDataProvider = dataProvider;\n if (!ctxDataProvider && editorAction.dataProvider) {\n ctxDataProvider = editorAction.dataProvider;\n }\n if (!ctxDataProvider) {\n const viewContainerDataProvider = parameters.viewContainer?.getDataProvider();\n if (viewContainerDataProvider) {\n ctxDataProvider = viewContainerDataProvider as IEditorDataProvider<T, S>;\n }\n }\n const ctx = new ActionContext<T, S>(\n instance,\n parameters,\n functionName,\n ctxDataProvider,\n ActionDataProviderUtil.getDataProviderService(this.injector, ctxDataProvider) ?? 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 * @return Action context for run function.\n */\n private prepareContext<T, S>(\n action: ActionDescriptor<T>,\n parameters: ActionParameters<T>,\n dataProvider?: IDataProvider<T, S>,\n instance?: ActionInstance<T, S>,\n previousActionInstance?: ActionInstance<unknown, unknown>\n ): ActionContext<T, S> {\n instance = this.getOrCreateInstance(instance, action, parameters, ActionInstanceStateEnum.ActivationEnd);\n\n const ctxDataProvider = dataProvider ?? instance.action.dataProvider ?? parameters.viewContainer?.getDataProvider();\n const ctx = new ActionContext<T, S>(\n instance,\n parameters,\n 'run',\n ctxDataProvider,\n ActionDataProviderUtil.getDataProviderService(this.injector, ctxDataProvider) ?? undefined\n );\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 * @return Action instance - if non provided in parameters, the newly created will be returned.\n */\n public activateAction<T, S>(\n action: ActionDescriptor<T>,\n parameters: ActionParameters<T>,\n instance?: ActionInstance<T, S>,\n previousActionInstance?: ActionInstance<unknown, unknown>,\n runContext = false\n ): ActionInstance<T, S> {\n instance = this.getOrCreateInstance(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 if (action instanceof ActionEditorDescriptor) {\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 }\n const dialogConfig: DynamicDialogConfig = {\n data: {},\n styleClass: dialogClassNames.join(' ')\n };\n dialogConfig.data.actionInstance = instance;\n dialogConfig.data.previousActionInstance = previousActionInstance;\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<T, S>(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 */\n public onActionEditorInit<T, S>(action: ActionDescriptor<T>, instance?: ActionInstance<T, S>): 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 = (instance.activationParameters?.viewContainer as IViewActionRouteTriggeredContainer<T, S> | undefined)?.getActionRouteTriggeredInstance?.();\n const activationInstance = (instance.activationParameters?.viewContainer as IViewActionRouteTriggeredContainer<T, S> | undefined)?.getActionRouteTriggeredInstance?.();\n if (triggeredInstance && triggeredInstance.instanceLongName !== instance.instanceLongName) {\n console.warn(\n `Found triggered parameters view container instance ${triggeredInstance.instanceLongName} and it does not match instance ${instance.instanceLongName} retrieved on editor init.`\n );\n }\n if (activationInstance && activationInstance.instanceLongName !== instance.instanceLongName) {\n console.warn(\n `Found triggered parameters view container instance ${activationInstance.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 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 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<T, S>(instance: ActionInstance<T, S>, onDestroy = false) {\n instance = this.getOrCreateInstance(instance);\n if (instance.state >= ActionInstanceStateEnum.FinishSuccessFinal) {\n if (this.debugLog) {\n // eslint-disable-next-line no-console, no-restricted-syntax\n console.debug(`ActionInstance ${instance.instanceLongName} already finished`);\n }\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 ActionEditorDescriptor<T>).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 (instance.context?.parameters.viewContainer as IViewActionRouteTriggeredContainer<T, S> | undefined)?.unsetActionRouteTriggeredInstance?.();\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 ActionEditorDescriptor<T>).resubmitRefetch ? ActionInstanceStateEnum.ActivationEnd : 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<T, S>(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 (instance.context?.parameters.viewContainer as IViewActionRouteTriggeredContainer<T, S> | undefined)?.setActionRouteTriggeredInstance?.(newInstance);\n instance.reactivationInstance = newInstance;\n }\n }\n\n /**\n * Triggers action from table row click position.\n *\n * @param action Action descriptor.\n * @param event Target table click event.\n * @param route Currently activate route.\n * @param tableDescriptor Table descriptor.\n * @param dataKeyProperty Data key property.\n *\n * @deprecated\n */\n public triggerRowClickAction<T>(\n action: ActionDescriptor<T>,\n event: MngTableCellClickEvent<T>,\n route?: ActivatedRoute,\n tableDescriptor?: TableDescriptor<T>,\n dataKeyProperty?: string\n ) {\n const idProperty = dataKeyProperty ?? tableDescriptor?.dataKeyProperty ?? action?.model?.idPropertyName ?? dataKeyProperty;\n if (!idProperty) {\n throw new MngErrorInternal(\n `Row click action ${action.actionNameLong} can not be triggered, because id property could not be found.`,\n 'ActionExecutorService error'\n ).consoleError();\n }\n const rowItem = event?.rowItem as any;\n return this.triggerAction(action, new ActionParameters<T>(rowItem[idProperty], event.rowItem).withRoute(route));\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 * @return Action instance - if non provided in parameters, the newly created will be returned.\n */\n public triggerAction<T, S>(action: ActionDescriptor<T>, parameters: ActionParameters<T>, runContext = false): ActionInstance<T, S> {\n const instance = this.getOrCreateInstance<T, S>(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 // TODO: dont strip '/', but use it accordingly with Angular's router patterns (/, ./, ../)\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 (parameters.viewContainer as IViewActionRouteTriggeredContainer<T, S> | undefined)?.setActionRouteTriggeredInstance?.(instance);\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<T, S>(instance: ActionInstance<T, S>) {\n if (instance.action.activationTrigger !== ActionActivationTriggerEnum.OnRoute) {\n return;\n }\n\n instance = this.getOrCreateInstance(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 mng error by using error mapper that could be provided by final project.\n * @param error error of any type.\n *\n * @return mapped MngError.\n */\n public toMngActionError(error?: any): MngError {\n const actionError: MngError = {\n name: error?.name ?? 'UnknownError',\n message: error?.message ?? 'Unknown error',\n cause: error\n };\n if (error instanceof HttpErrorResponse) {\n actionError.status = error.status;\n actionError.statusDescription = error.statusText;\n actionError.url = error.url ?? undefined;\n }\n return this.errorMapper.toMngError(error, actionError);\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 private getOrCreateInstance<T, S>(\n instance: ActionInstance<T, S> | undefined,\n action?: ActionDescriptor<T>,\n parameters?: ActionParameters<T>,\n instanceInitialStatus?: ActionInstanceStateEnum,\n skipInitializationFromViewContainer = false\n ): ActionInstance<T, S> {\n if (!skipInitializationFromViewContainer && !instance && action?.activationTrigger === ActionActivationTriggerEnum.OnRoute && parameters) {\n instance = (parameters.viewContainer as IViewActionRouteTriggeredContainer<T, S> | undefined)?.getActionRouteTriggeredInstance?.();\n }\n if (!instance) {\n if (!action) {\n throw new MngErrorInternal('Action descriptor is not provided, instance cannot be created.', 'ActionExecutorService error').consoleError();\n }\n // create new instance if non provided\n instance = new ActionInstance<T, S>(action, instanceInitialStatus, this.debugLog);\n }\n\n if (this.mngCommons.actionsDebugInstances && !this._instances.some(i => i.instanceLongName === instance!.instanceLongName)) {\n if (this._instances.length >= this.instancesBufferMax) {\n const lastInstance = this._instances.shift();\n\n if (this.debugLog && lastInstance!.state < ActionInstanceStateEnum.FinishSuccessFinal) {\n console.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 {HttpClient, HttpErrorResponse} from '@angular/common/http';\n\nimport {Observable, combineLatest, of, tap, throwError} from 'rxjs';\nimport {catchError, map} from 'rxjs/operators';\n\nimport {MngErrorInternal} from '../models';\n\nexport class MngConfigurationService {\n private static _instance: MngConfigurationService | null = null;\n\n public static init(httpClient: HttpClient): MngConfigurationService {\n if (!this._instance) {\n MngConfigurationService._instance = new MngConfigurationService(httpClient);\n }\n return MngConfigurationService.get();\n }\n\n public static get(): MngConfigurationService {\n if (!MngConfigurationService._instance) {\n throw new MngErrorInternal('Configuration service instance not set. Call init first.', 'ConfigurationService error').consoleError();\n }\n return MngConfigurationService._instance;\n }\n\n private projectEnvironment?: any;\n private jsonSources: Array<JsonSourceLoadInfo> = [];\n private objectSources: Array<any> = [];\n\n private configuration = {...this.projectEnvironment};\n\n private constructor(private http: HttpClient) {}\n\n /**\n * Add project environment source.\n * @param environemnt Environment.\n */\n public addEnvironmentSource(environment: any): void {\n this.projectEnvironment = environment;\n this.mergeConfigs();\n }\n\n /**\n * Adds new config source from JSON file loaded from HTTP.\n * @param url Url to JSON file.\n * @param loadImmediately Load is by default triggered on app initialization. If immediate load is required, pass true.\n */\n public addJsonSource(config: {url?: string; enableEnvProd?: boolean} = {}, loadImmediately = false): Observable<boolean> {\n if (!config) {\n config = {};\n }\n const url = config?.url ?? 'assets/config/env{{environment}}.json';\n const enableEnvProdReplace = config?.enableEnvProd ?? false;\n\n const sourceInfo: JsonSourceLoadInfo = {\n url: url,\n isEnvironment: false,\n environmentEnableEnvProd: enableEnvProdReplace,\n isLoaded: false\n };\n this.jsonSources.push(sourceInfo);\n\n if (loadImmediately) {\n return this.loadJsonConfigurations();\n } else {\n return of(true);\n }\n }\n\n /**\n * Adds new config object from any object.\n * @param config Config object.\n */\n public addObjectSource(config: any): void {\n this.objectSources.push(config);\n this.mergeConfigs();\n }\n\n /**\n * returns true if there is no jsonSources\n */\n private skipJsonConfigsLoading = () => this.jsonSources === null || this.jsonSources.length === 0;\n\n /**\n * loads json sources or skips them returning true in both cases\n * used for `skipJsonSourceInit` configuration parameter\n */\n public loadJsonConfigurations = (): Observable<boolean> => (this.skipJsonConfigsLoading() ? of(true) : this.loadJsonSources());\n\n private loadJsonSources(): Observable<boolean> {\n return combineLatest(\n this.jsonSources\n .filter(source => !source.isLoaded)\n .map(sourceInfo => {\n let url = sourceInfo.url;\n sourceInfo.environment = this.projectEnvironment.name || (this.projectEnvironment.production ? (sourceInfo.environmentEnableEnvProd ? 'prod' : null) : 'dev');\n sourceInfo.isEnvironment = !!sourceInfo.environment;\n\n if (sourceInfo.isEnvironment) {\n url = url.replace('{{environment}}', '.' + sourceInfo.environment);\n } else {\n // replace possible environment entry and change source info url\n url = url.replace('{{environment}}', '');\n sourceInfo.url = url;\n }\n\n return this.http.get<object>(url).pipe(\n catchError((err: HttpErrorResponse) => {\n if (sourceInfo.isEnvironment) {\n const noEnvUrl = sourceInfo.url.replace('{{environment}}', '');\n sourceInfo.environment = null;\n return this.http.get<object>(noEnvUrl);\n } else {\n const message = `Configuration file ${url} not loaded (${err.status}): ${err.message}.`;\n return throwError(() =>\n new MngErrorInternal(message, 'ConfigurationService error', {\n cause: err,\n status: err.status,\n statusDescription: err.statusText,\n url: err.url ?? undefined\n }).consoleError()\n );\n }\n }),\n map(configuration => {\n sourceInfo.configuration = configuration;\n sourceInfo.isLoaded = true;\n\n return true;\n })\n );\n })\n ).pipe(\n map(sourceResults => sourceResults.every(sr => sr)),\n tap(() => this.mergeConfigs())\n );\n }\n\n /**\n * Get configuration.\n */\n public getConfig() {\n return this.configuration;\n }\n\n /**\n * Get configuration value for key.\n * @param key Configuration key.\n */\n public getConfigValue(key: string) {\n return this.configuration[key] ? this.configuration[key] : null;\n }\n\n /**\n * Has configuration for key.\n * @param key Configuration key.\n */\n public hasConfigKey(key: string): boolean {\n return Object.keys(this.configuration).some(k => k === key);\n }\n\n /**\n * Merges configuration from multiple sources with\n */\n private mergeConfigs() {\n let config = {...this.projectEnvironment};\n const jsonConfigs = this.jsonSources.filter(source => source.isLoaded && typeof source.configuration === 'object').map(source => source.configuration);\n if (jsonConfigs.length) {\n for (const jsonConfig of jsonConfigs) {\n config = {...config, ...jsonConfig};\n }\n }\n if (this.objectSources.length) {\n for (const objConfig of this.objectSources) {\n config = {...config, ...objConfig};\n }\n }\n this.configuration = config;\n }\n}\n\ninterface JsonSourceLoadInfo {\n url: string;\n isLoaded: boolean;\n isEnvironment: boolean;\n environment?: string | null;\n environmentEnableEnvProd?: boolean;\n configuration?: object;\n}\n","import {Injectable} from '@angular/core';\nimport {NavigationCancel, NavigationEnd, NavigationError, NavigationStart, Route, RouteConfigLoadEnd, RouteConfigLoadStart, Router, Routes} from '@angular/router';\n\nimport {Observable, ReplaySubject, Subject} from 'rxjs';\nimport {first} from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MngRouterService {\n private currentNavigationPath?: string;\n private currentNavigationConfigModule?: string;\n private currentNavigationConfigLoaded?: boolean;\n\n private lazyLoadedRoutesConfig: {\n [path: string]: {\n route?: Route;\n isLoadEnd: boolean;\n loadedRoutes?: Routes;\n loadedRoutesSubject: Subject<Routes>;\n };\n } = {};\n\n constructor(private router: Router) {}\n\n public getRouteLoadedChildren(path: string | Array<string>): Routes | undefined {\n return this.getOrCreateRouteForModule(this.getModulePathFromRouterLink(path)).loadedRoutes;\n }\n\n public getRouteLoadedChildren$(path: string | Array<string>): Observable<Routes> {\n return this.getOrCreateRouteForModule(this.getModulePathFromRouterLink(path)).loadedRoutesSubject.asObservable().pipe(first());\n }\n\n public initialize() {\n this.router.events.subscribe(event => {\n if (event instanceof NavigationStart) {\n this.startNavigation(event.url);\n } else if (event instanceof RouteConfigLoadStart) {\n this.markNavigationConfigLoad(event.route);\n } else if (event instanceof RouteConfigLoadEnd) {\n this.markNavigationConfigLoad(event.route, true);\n } else if (event instanceof NavigationEnd || event instanceof NavigationCancel || event instanceof NavigationError) {\n this.finishNavigation();\n }\n });\n }\n\n private startNavigation(url: string) {\n this.currentNavigationPath = url.split('?')[0].split('#')[0];\n this.currentNavigationConfigModule = undefined;\n this.currentNavigationConfigLoaded = undefined;\n }\n\n private finishNavigation() {\n if (this.currentNavigationConfigLoaded && this.currentNavigationConfigModule) {\n this.getLoadedRoutesFromRoute();\n }\n this.currentNavigationPath = undefined;\n }\n\n private markNavigationConfigLoad(route: Route, isEnd = false) {\n this.currentNavigationConfigLoaded = isEnd;\n let routePath = route.path ?? '';\n if (!routePath.startsWith('/')) routePath = `/${routePath}`;\n\n if (!this.currentNavigationConfigModule) {\n let moduleKey = routePath;\n const currentNavigationPathRoutePathIdx = this.currentNavigationPath?.indexOf(routePath) ?? -1;\n if (this.currentNavigationPath && currentNavigationPathRoutePathIdx >= 0) {\n moduleKey = this.currentNavigationPath.substring(0, currentNavigationPathRoutePathIdx + routePath.length);\n }\n this.currentNavigationConfigModule = moduleKey;\n }\n\n const config = this.getOrCreateRouteForModule(this.currentNavigationConfigModule);\n config.route = route;\n config.isLoadEnd = isEnd;\n this.getLoadedRoutesFromRoute();\n }\n\n private getLoadedRoutesFromRoute() {\n if (\n !this.currentNavigationConfigModule ||\n !this.lazyLoadedRoutesConfig[this.currentNavigationConfigModule]?.route ||\n Array.isArray(this.lazyLoadedRoutesConfig[this.currentNavigationConfigModule].loadedRoutes)\n ) {\n return;\n }\n\n this.lazyLoadedRoutesConfig[this.currentNavigationConfigModule].loadedRoutes =\n this.lazyLoadedRoutesConfig[this.currentNavigationConfigModule].route!['_loadedRoutes' as keyof object];\n\n if (typeof this.lazyLoadedRoutesConfig[this.currentNavigationConfigModule].loadedRoutes !== 'undefined') {\n this.lazyLoadedRoutesConfig[this.currentNavigationConfigModule].loadedRoutesSubject.next(this.lazyLoadedRoutesConfig[this.currentNavigationConfigModule].loadedRoutes!);\n this.lazyLoadedRoutesConfig[this.currentNavigationConfigModule].loadedRoutesSubject.complete();\n }\n }\n\n private getOrCreateRouteForModule(moduleKey: string) {\n if (!this.lazyLoadedRoutesConfig[moduleKey]) {\n this.lazyLoadedRoutesConfig[moduleKey] = {\n loadedRoutesSubject: new ReplaySubject<Routes>(1),\n isLoadEnd: false\n };\n }\n\n return this.lazyLoadedRoutesConfig[moduleKey];\n }\n\n private getModulePathFromRouterLink(path: string | Array<string>) {\n return ('/' + (Array.isArray(path) ? path.join('/') : path)).replace(/\\/\\//g, '/');\n }\n}\n","import {HttpClient} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\n\nimport {Observable, ReplaySubject} from 'rxjs';\n\nimport {MngConfigurationService} from './configuration.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MngVersionService {\n private cache: {[key: string]: ReplaySubject<unknown>} = {};\n\n constructor(private http: HttpClient, private configurationService: MngConfigurationService) {}\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public loadVersion(path: string, baseConfigKey?: string, jsonPath = '$'): Observable<unknown> {\n const urlSegments = [];\n if (baseConfigKey) {\n const baseUrl = this.configurationService.getConfigValue(baseConfigKey);\n urlSegments.push(baseUrl.endsWith('/') ? baseUrl.substring(0, baseUrl.length - 1) : baseUrl);\n }\n if (path) {\n urlSegments.push(!path.startsWith('/') ? `/${path}` : path);\n }\n const url = urlSegments.join('');\n if (!this.cache[url]) {\n this.cache[url] = new ReplaySubject<unknown>(1);\n\n this.http.get(urlSegments.join('')).subscribe({\n next: res => {\n this.cache[url].next(res);\n }\n });\n }\n\n return this.cache[url].asObservable();\n }\n}\n","import {Injectable} from '@angular/core';\n\nimport {MessageService} from 'primeng/api';\nimport {Observable, Subject} from 'rxjs';\n\nimport {ActionInstance} from '../components/action/models';\nimport {IDataProvider} from '../data-providers';\nimport {ActionDescriptor} from '../descriptors/action';\nimport {\n IViewActionRouteTriggeredContainer,\n IViewContainerEditor,\n IViewContainerTable,\n ViewContainerEditorCloseEvent,\n ViewContainerEditorResetEvent,\n ViewContainerTableReloadEvent\n} from '../models';\n\n/**\n * Should be used with providers defined within component.\n */\n@Injectable()\nexport class MngViewContainerComponentService<T, S> implements IViewContainerTable<T, S>, IViewContainerEditor<T, S>, IViewActionRouteTriggeredContainer<T, S> {\n private _dataProvider?: IDataProvider<T, S>;\n private _routeTriggeredActionInstance?: ActionInstance<T, S>;\n private actions: Array<ActionDescriptor<T>> = [];\n\n private _tableReloadSubject: Subject<ViewContainerTableReloadEvent> = new Subject();\n private _editorResetSubject: Subject<ViewContainerEditorResetEvent<T>> = new Subject();\n private _editorCloseSubject: Subject<ViewContainerEditorCloseEvent<T>> = new Subject();\n\n constructor(private messageService: MessageService) {}\n\n public set dataProvider(dataProvider: IDataProvider<T, S>) {\n this._dataProvider = dataProvider;\n }\n\n public getMessageService(): MessageService {\n return this.messageService;\n }\n\n public getDataProvider(): IDataProvider<T, S> | undefined {\n return this._dataProvider;\n }\n\n public getActions(): Array<ActionDescriptor<T>> {\n return this.actions;\n }\n\n public setActions(actions: Array<ActionDescriptor<T>>) {\n this.actions = actions;\n }\n\n getTableReload$(): Observable<ViewContainerTableReloadEvent> {\n return this._tableReloadSubject.asObservable();\n }\n\n reloadTable(event?: ViewContainerTableReloadEvent): void {\n this._tableReloadSubject.next(event ?? {});\n }\n\n getEditorReset$(): Observable<ViewContainerEditorResetEvent<T>> {\n return this._editorResetSubject.asObservable();\n }\n\n resetEditor(event?: ViewContainerEditorResetEvent<T> | undefined): void {\n this._editorResetSubject.next(event ?? {});\n }\n\n getEditorClose$(): Observable<ViewContainerEditorCloseEvent<T>> {\n return this._editorCloseSubject.asObservable();\n }\n\n closeEditor(event?: ViewContainerEditorCloseEvent<T>): void {\n this._editorCloseSubject.next(event ?? {});\n }\n\n getActionRouteTriggeredInstance(): ActionInstance<T, S> | undefined {\n return this._routeTriggeredActionInstance;\n }\n\n setActionRouteTriggeredInstance(instance: ActionInstance<T, S>): void {\n this._routeTriggeredActionInstance = instance;\n }\n\n unsetActionRouteTriggeredInstance(): void {\n this._routeTriggeredActionInstance = undefined;\n }\n}\n","import {Injectable} from '@angular/core';\n\nimport {MngLocalstorageConfigValueType} from '../types';\n\n@Injectable({providedIn: 'root'})\nexport class MngLocalStorageService {\n private readonly _configKey = 'MngUserPrefs';\n\n private buildLocalStorageKey(type: string, key: string): string {\n return `${this._configKey}_${type}_${key}`;\n }\n\n public getItem<T = MngLocalstorageConfigValueType>(type: string, key: string): T | undefined {\n const localstorageData = localStorage.getItem(this.buildLocalStorageKey(type, key));\n if (localstorageData) {\n return JSON.parse(localstorageData);\n }\n return undefined;\n }\n\n public setItem<T = MngLocalstorageConfigValueType>(type: string, key: string, value: T): void {\n localStorage.setItem(this.buildLocalStorageKey(type, key), JSON.stringify(value));\n }\n\n public removeItem(type: string, key: string) {\n localStorage.removeItem(this.buildLocalStorageKey(type, key));\n }\n}\n","import {ActionDescriptor} from '../descriptors/action';\nimport {TableDescriptor} from '../descriptors/table';\nimport {TableSizeEnum} from '../descriptors/types';\nimport {StyleSizeEnum} from './models';\n\nexport class StylesUtil {\n public static readonly BUTTON_ROUNDED_WIDTH_XS = 26;\n public static readonly BUTTON_ROUNDED_WIDTH_SM = 28;\n public static readonly BUTTON_ROUNDED_WIDTH = 32;\n public static readonly BUTTON_ROUNDED_WIDTH_LG = 45;\n\n public static readonly ACTION_BUTTON_MARGIN_X = 2;\n\n public static readonly TABLE_CELL_PADDING_X = 8; // left and right paddings are same\n public static readonly TABLE_CELL_PADDING_X_SM = 4;\n public static readonly TABLE_CELL_PADDING_X_LG = 12;\n\n public static calculateTableColumnActionWidth(table: TableDescriptor<unknown>, actions: Array<ActionDescriptor<unknown>>): number {\n const buttonsWidth = actions.reduce((acc, action) => acc + StylesUtil.getActionButtonRoundedWidth(action) + 2 * StylesUtil.ACTION_BUTTON_MARGIN_X, 0);\n const tablePadding = StylesUtil.getTableCellPaddingX(table);\n return buttonsWidth + 2 * tablePadding;\n }\n\n public static getTableCellPaddingX(table: TableDescriptor<unknown>): number {\n switch (table.size) {\n case TableSizeEnum.Small:\n return StylesUtil.TABLE_CELL_PADDING_X_SM;\n case TableSizeEnum.Large:\n return StylesUtil.TABLE_CELL_PADDING_X_LG;\n default:\n return StylesUtil.TABLE_CELL_PADDING_X;\n }\n }\n\n public static getActionButtonRoundedWidth(action: ActionDescriptor<unknown>): number {\n switch (action.button.styleClass.size) {\n case StyleSizeEnum.ExtraSmall:\n return StylesUtil.BUTTON_ROUNDED_WIDTH_XS;\n case StyleSizeEnum.Small:\n return StylesUtil.BUTTON_ROUNDED_WIDTH_SM;\n case StyleSizeEnum.Large:\n case StyleSizeEnum.ExtraLarge:\n return StylesUtil.BUTTON_ROUNDED_WIDTH_LG;\n case StyleSizeEnum.Normal:\n default:\n return StylesUtil.BUTTON_ROUNDED_WIDTH;\n }\n }\n}\n","import {StyleLevelEnum, StyleSizeEnum} from './models';\n\nexport class ButtonStyleBuilder {\n private _size: StyleSizeEnum = StyleSizeEnum.Normal;\n private _actionLevel: StyleLevelEnum;\n\n private _textButton = false;\n private _outlineButton = false;\n private _raisedButton = false;\n private _roundedStyle = ButtonStyleRoundedEnum.DEFAULT;\n private _customClass?: string;\n\n constructor(level = StyleLevelEnum.Default, customClass?: string) {\n this._actionLevel = level;\n this._customClass = customClass;\n }\n\n public build(hasNoTitle = false): string {\n const styles = [this.convertActionLevelToStyleClass(), this.convertSizeToStyleClass(), this._customClass];\n\n if (hasNoTitle && this._roundedStyle === ButtonStyleRoundedEnum.DEFAULT) {\n styles.push(`p-button-rounded mng-action-button-icon`);\n }\n\n if (this._textButton) {\n styles.push(`p-button-text`);\n }\n\n if (this._outlineButton) {\n styles.push(`p-button-outlined`);\n }\n\n if (this._raisedButton) {\n styles.push(`p-button-raised`);\n }\n\n if (this._roundedStyle === ButtonStyleRoundedEnum.ROUNDED) {\n styles.push('p-button-rounded');\n }\n\n return styles.join(' ');\n }\n\n /**\n * creates instance of style builder with custom properties\n * @param actionLevel ActionLevelEnum\n * @param size ActionSizeEnum\n * @param textButton if true, text button will be applied\n * @param outlineButton if true, outlined button will be applied\n * @param raisedButton if true, raised button will be applied\n * @param customClass additional custom classes (will be added at generating)\n */\n public static create(\n actionLevel?: StyleLevelEnum,\n size?: StyleSizeEnum,\n textButton?: boolean,\n outlineButton?: boolean,\n raisedButton?: boolean,\n roundedButton?: ButtonStyleRoundedEnum,\n customClass?: string\n ): ButtonStyleBuilder {\n const descriptor = new ButtonStyleBuilder(actionLevel, customClass);\n descriptor._actionLevel = actionLevel ?? descriptor._actionLevel;\n descriptor._size = size ?? descriptor._size;\n descriptor._textButton = textButton ?? descriptor._textButton;\n descriptor._outlineButton = outlineButton ?? descriptor._outlineButton;\n descriptor._raisedButton = raisedButton ?? descriptor._raisedButton;\n descriptor._roundedStyle = roundedButton ?? descriptor._roundedStyle;\n descriptor._customClass = customClass;\n\n return descriptor;\n }\n\n /**\n * sets custom action level and returns this object\n * @param actionLevel\n */\n public withActionLevel(actionLevel: StyleLevelEnum): ButtonStyleBuilder {\n this._actionLevel = actionLevel;\n return this;\n }\n\n /**\n * sets custom size and return this object\n * @param size\n */\n public withSize(size: StyleSizeEnum): ButtonStyleBuilder {\n this._size = size;\n return this;\n }\n\n /**\n * sets text button property\n * @param withText default true\n */\n public withTextButton(withText = true): ButtonStyleBuilder {\n this._textButton = withText;\n return this;\n }\n\n /**\n * sets outline button property\n * @param withOutline default true\n */\n public withOutlineButton(withOutline = true): ButtonStyleBuilder {\n this._outlineButton = withOutline;\n return this;\n }\n\n /**\n * sets raised button property\n * @param withRaised default true\n */\n public withRaisedButton(withRaised = true): ButtonStyleBuilder {\n this._raisedButton = withRaised;\n return this;\n }\n\n public withRoundedButton(roundedStyle = ButtonStyleRoundedEnum.ROUNDED): ButtonStyleBuilder {\n this._roundedStyle = roundedStyle;\n return this;\n }\n\n /**\n * sets custom style class\n * @param customClass\n */\n public withCustomClass(customClass: string): ButtonStyleBuilder {\n this._customClass = customClass;\n return this;\n }\n\n private convertActionLevelToStyleClass(): string {\n switch (this._actionLevel) {\n case StyleLevelEnum.Default:\n case StyleLevelEnum.Primary:\n return 'p-button-primary';\n case StyleLevelEnum.Secondary:\n return 'p-button-secondary';\n case StyleLevelEnum.Info:\n return 'p-button-info';\n case StyleLevelEnum.Help:\n return 'p-button-help';\n case StyleLevelEnum.Success:\n return 'p-button-success';\n case StyleLevelEnum.Warning:\n return 'p-button-warning';\n case StyleLevelEnum.Danger:\n return 'p-button-danger';\n }\n }\n\n private convertSizeToStyleClass(): string {\n switch (this._size) {\n case StyleSizeEnum.ExtraSmall:\n return 'p-button-sm mng-button-xs';\n case StyleSizeEnum.Small:\n return 'p-button-sm mng-button-sm';\n case StyleSizeEnum.Large:\n return 'p-button-lg mng-button-lg';\n case StyleSizeEnum.ExtraLarge:\n return 'p-button-lg mng-button-xl';\n case StyleSizeEnum.Normal:\n default:\n return '';\n }\n }\n\n public copy(): ButtonStyleBuilder {\n const builder = new ButtonStyleBuilder(this._actionLevel, this._customClass);\n\n builder._size = this._size;\n builder._textButton = this._textButton;\n builder._outlineButton = this._outlineButton;\n builder._raisedButton = this._raisedButton;\n builder._roundedStyle = this._roundedStyle;\n\n return builder;\n }\n\n public get actionLevel() {\n return this._actionLevel;\n }\n\n public get size() {\n return this._size;\n }\n\n public get textButton() {\n return this._textButton;\n }\n\n public get outlineButton() {\n return this._outlineButton;\n }\n\n public get raisedButton() {\n return this._raisedButton;\n }\n\n public get roundedStyle() {\n return this._roundedStyle;\n }\n\n public get customClass() {\n return this._customClass;\n }\n}\n\nexport enum ButtonStyleRoundedEnum {\n DEFAULT,\n ROUNDED,\n SQUARE\n}\n","import {AbstractControl} from '@angular/forms';\n\nimport {MngFieldValidator} from '../types';\n\nexport const minDateValidator = (min: Date): MngFieldValidator => {\n return (c: AbstractControl) => {\n const date: Date = c?.value;\n const valid = !date || date >= min;\n\n if (!valid) {\n const newErrors = {...c.errors, minDate: true};\n c?.markAsDirty();\n c.setErrors(newErrors);\n return newErrors;\n }\n\n if (c?.hasError('minDate')) {\n c.setErrors({...c.errors, minDate: null});\n }\n\n return null;\n };\n};\n\nexport const maxDateValidator = (max: Date): MngFieldValidator => {\n return (c: AbstractControl) => {\n const date: Date = c?.value;\n const valid = !date || date <= max;\n\n if (!valid) {\n const newErrors = {...c.errors, maxDate: true};\n c?.markAsDirty();\n c.setErrors(newErrors);\n return newErrors;\n }\n\n if (c?.hasError('maxDate')) {\n c.setErrors({...c.errors, maxDate: null});\n }\n\n return null;\n };\n};\n","import {Type} from '@angular/core';\n\nimport {Observable, of} from 'rxjs';\n\nimport {MediusQueryParam} from '../../api/models';\nimport {ILookupDataProvider, LookupDataProvider} from '../../data-providers';\nimport {EnumValue, MngErrorInternal} from '../../models';\nimport {ClassType, EnumConstantType, EnumType} from '../../types';\nimport {EnumUtil, ModelUtil, TypeUtil} from '../../utils';\nimport {ILookupDescriptor} from '../interfaces';\nimport {FilterLookupTypeEnum, FilterMatchModeEnum, FilterTypeEnum} from '../types';\n\nexport class FilterDescriptor<T> {\n protected readonly _property: string;\n protected _filterType = FilterTypeEnum.String;\n protected _filterProperty?: string;\n protected _hasDefaultValue = false;\n protected _defaultFilterMatchMode?: FilterMatchModeEnum;\n protected _defaultValue?: T | T[];\n protected _defaultValueTo?: T;\n\n protected _matchModes: string[] | null = null;\n\n // number filter specific properties\n protected _numberMinFractionDigits?: number;\n protected _numberMaxFractionDigits?: number;\n protected _numberUseGrouping = true;\n\n // date filter specific properties\n protected _datePickerFormat?: string;\n protected _datePickerShowTime = false;\n protected _datePickerValueWithTimezone?: boolean = undefined;\n protected _datePickerValueInUtc?: boolean = undefined;\n protected _datePickerValueDateOnly?: boolean = undefined;\n\n protected _placeholder?: string;\n protected _className = '';\n protected _columnClassName = '';\n protected _columnWidth: number | null = null;\n protected _columnMinWidth: number | null = null;\n\n constructor(property: string) {\n this._property = property;\n }\n\n public get filterType() {\n return this._filterType;\n }\n\n public get hasDefaultValue() {\n return this._hasDefaultValue;\n }\n\n public get defaultValue() {\n return this._defaultValue;\n }\n\n public get defaultValueTo() {\n return this._defaultValueTo;\n }\n\n public get defaultFilterMatchMode() {\n return this._defaultFilterMatchMode;\n }\n\n public get filterProperty() {\n return this._filterProperty;\n }\n\n public get matchModes() {\n return this._matchModes;\n }\n\n public get numberMinFractionDigits() {\n return this._numberMinFractionDigits;\n }\n\n public get numberMaxFractionDigits() {\n return this._numberMaxFractionDigits;\n }\n\n public get numberUseGrouping() {\n return this._numberUseGrouping;\n }\n\n public get datePickerFormat() {\n return this._datePickerFormat;\n }\n\n public get datePickerShowTime() {\n return this._datePickerShowTime;\n }\n\n public get datePickerValueInUtc() {\n return this._datePickerValueInUtc;\n }\n\n public get datePickerValueWithTimezone() {\n return this._datePickerValueWithTimezone;\n }\n\n public get datePickerValueDateOnly() {\n return this._datePickerValueDateOnly;\n }\n\n public get placeholder() {\n return this._placeholder;\n }\n\n public get className() {\n return this._className;\n }\n\n public get columnClassName() {\n return this._columnClassName;\n }\n\n public get columnWidth() {\n return this._columnWidth;\n }\n\n public get columnMinWidth() {\n return this._columnMinWidth;\n }\n\n public get property() {\n return this._property;\n }\n\n public asFilterType(filterType: FilterTypeEnum) {\n this._filterType = filterType;\n return this;\n }\n\n /**\n * Sets different filter property name instead of default property. Use this if API requires different property provided to perform correct filter.\n * @param filterProperty\n */\n public withFilterProperty(filterProperty: string): this {\n this._filterProperty = filterProperty;\n return this;\n }\n\n public withDefaultFilter(filterValue: T, filterValueTo?: T, filterMatchMode?: FilterMatchModeEnum): this {\n this._hasDefaultValue = true;\n this._defaultValue = filterValue;\n this._defaultValueTo = filterValueTo;\n this._defaultFilterMatchMode = filterMatchMode;\n return this;\n }\n\n public withNumberFractions(min?: number, max?: number) {\n this._numberMinFractionDigits = min;\n this._numberMaxFractionDigits = max;\n return this;\n }\n\n public withNumberGrouping(useGrouping = true): this {\n this._numberUseGrouping = useGrouping;\n return this;\n }\n\n public withDateFormat(format?: string, showTime = false): this {\n this._datePickerFormat = format;\n this._datePickerShowTime = showTime;\n return this;\n }\n\n public withDateValue(inUtc?: boolean, withTimezone?: boolean, dateOnly?: boolean): this {\n if (typeof inUtc !== 'undefined') {\n this._datePickerValueInUtc = inUtc;\n }\n if (typeof withTimezone !== 'undefined') {\n this._datePickerValueWithTimezone = withTimezone;\n }\n if (typeof dateOnly !== 'undefined') {\n this._datePickerValueDateOnly = dateOnly;\n }\n return this;\n }\n\n public withPlaceholder(placeholder: string): this {\n this._placeholder = placeholder;\n return this;\n }\n\n public withClassName(className: string): this {\n this._className = className;\n return this;\n }\n\n public withColumnClassName(className: string): this {\n this._columnClassName = className;\n return this;\n }\n\n public withColumnWidth(width?: number, minWidth?: number): this {\n this._columnWidth = width ?? null;\n this._columnMinWidth = minWidth ?? null;\n return this;\n }\n\n public withMatchModes(matchModes: Array<FilterMatchModeEnum>): this {\n this._matchModes = matchModes;\n return this;\n }\n\n public copy(): FilterDescriptor<T> {\n const descriptor = new FilterDescriptor<T>(this._property);\n this.copyFieldsTo(descriptor);\n return descriptor;\n }\n\n protected copyFieldsTo(descriptor: FilterDescriptor<T>) {\n descriptor._filterType = this._filterType;\n descriptor._filterProperty = this._filterProperty;\n descriptor._hasDefaultValue = this._hasDefaultValue;\n descriptor._defaultValue = this._defaultValue;\n descriptor._defaultValueTo = this._defaultValueTo;\n descriptor._defaultFilterMatchMode = this._defaultFilterMatchMode;\n descriptor._numberMinFractionDigits = this._numberMinFractionDigits;\n descriptor._numberMaxFractionDigits = this._numberMaxFractionDigits;\n descriptor._numberUseGrouping = this._numberUseGrouping;\n descriptor._datePickerFormat = this._datePickerFormat;\n descriptor._datePickerShowTime = this._datePickerShowTime;\n descriptor._datePickerValueInUtc = this._datePickerValueInUtc;\n descriptor._datePickerValueWithTimezone = this._datePickerValueWithTimezone;\n descriptor._datePickerValueDateOnly = this._datePickerValueDateOnly;\n descriptor._placeholder = this._placeholder;\n descriptor._className = this._className;\n descriptor._columnWidth = this._columnWidth;\n descriptor._columnMinWidth = this._columnMinWidth;\n descriptor._columnClassName = this._columnClassName;\n }\n}\n\nexport class FilterLookupDescriptor<T> extends FilterDescriptor<T> implements ILookupDescriptor<T> {\n protected readonly _modelType: ClassType<T> | null = null;\n protected _lookupType?: FilterLookupTypeEnum = FilterLookupTypeEnum.Dropdown;\n\n protected _dataProvider?: ILookupDataProvider<T, any>;\n protected _itemsLabelProperty?: string;\n protected _itemsLabelTranslate = false;\n protected _itemsValueProperty?: string;\n protected _multiselect = false;\n\n protected _dropdownClassName = 'mng-filter-lookup-dropdown';\n\n protected _autocompleteOpenOnFocus = false;\n protected _autocompleteInlineSearch = false;\n\n constructor(property: string, modelType: ClassType<T> | null) {\n super(property);\n this._modelType = modelType;\n this._filterType = FilterTypeEnum.Lookup;\n ModelUtil.trySetLookupItemsProperties(this, false);\n if (this._itemsValueProperty) {\n this._filterProperty = `${property}.${this._itemsValueProperty}`;\n }\n }\n\n public get lookupType() {\n return this._lookupType;\n }\n\n public get dataProvider() {\n return this._dataProvider;\n }\n\n public get itemsLabelProperty() {\n return this._itemsLabelProperty;\n }\n\n public get itemsLabelTranslate() {\n return this._itemsLabelTranslate;\n }\n\n public get itemsValueProperty() {\n return this._itemsValueProperty;\n }\n\n public get multiselect() {\n return this._multiselect;\n }\n\n public get autocompleteOpenOnFocus() {\n return this._autocompleteOpenOnFocus;\n }\n\n public get autocompleteInlineSearch() {\n return this._autocompleteInlineSearch;\n }\n\n public get dropdownClassName() {\n return this._dropdownClassName;\n }\n\n public get modelType() {\n return this._modelType;\n }\n\n public withItemsLabelProperty(itemsLabelProperty: string, translate = false): this {\n this._itemsLabelProperty = itemsLabelProperty;\n this._itemsLabelTranslate = translate;\n return this;\n }\n\n public withItemsValueProperty(itemsValueProperty: string): this {\n this._itemsValueProperty = itemsValueProperty;\n return this;\n }\n\n /**\n * Method will set `itemsValueProperty`, because dataKeys are not supported here as filters need final value to work correctly.\n * Use `withItemsValueProperty` instead.\n * @param itemsValueProperty Item's value property.\n */\n public withDataKeyProperty(itemsValueProperty: string): this {\n this._itemsValueProperty = itemsValueProperty;\n return this;\n }\n\n public withLookup<S>(lookup: (queryParam?: MediusQueryParam, service?: S, search?: string) => Observable<Array<T>>, serviceType?: Type<S>): this {\n const dataProvider = new LookupDataProvider<T, S>(this._modelType);\n if (serviceType) {\n dataProvider.withServiceType(serviceType);\n }\n dataProvider.withLookup(lookup);\n this._dataProvider = dataProvider;\n return this;\n }\n\n public withLookupDataProvider(dataProvider: ILookupDataProvider<T, any>): this {\n this._dataProvider = dataProvider;\n return this;\n }\n\n public withMultiselect(multiselect = true) {\n this._multiselect = multiselect;\n this._defaultFilterMatchMode = FilterMatchModeEnum.In;\n this.withMatchModes([FilterMatchModeEnum.In]);\n return this;\n }\n\n public withDropdownClassName(dropdownClassName: string): this {\n this._dropdownClassName = dropdownClassName;\n return this;\n }\n\n public override withDefaultFilter(filterValue: T | T[], filterValueTo?: T, filterMatchMode?: FilterMatchModeEnum): this {\n this._hasDefaultValue = true;\n this._defaultValue = filterValue;\n this._defaultValueTo = filterValueTo;\n this._defaultFilterMatchMode = filterMatchMode;\n\n if (Array.isArray(filterValue) && !this.multiselect) {\n throw new MngErrorInternal('Array default filter can only be used with a multiselect filter.', 'FilterDescriptor error').consoleError();\n }\n\n if (filterMatchMode && this._matchModes && this._matchModes.indexOf(filterMatchMode) < 0) {\n this._defaultFilterMatchMode = undefined;\n console.warn(`Default filter match mode '${filterMatchMode}' could not be assigned for property ${this._property}.`);\n }\n\n if ((Array.isArray(filterValue) && !this.multiselect) || (this.multiselect && !Array.isArray(filterValue))) {\n throw new MngErrorInternal(`Default value not in correct format for property ${this._property}.`, 'FilterDescriptor error').consoleError();\n }\n\n return this;\n }\n\n public asAutocomplete(openOnFocus = false, inlineSearch = false): this {\n this._lookupType = FilterLookupTypeEnum.Autocomplete;\n this._autocompleteOpenOnFocus = openOnFocus;\n this._autocompleteInlineSearch = inlineSearch;\n return this;\n }\n\n public override copy(): FilterLookupDescriptor<T> {\n const descriptor = new FilterLookupDescriptor<T>(this._property, this._modelType);\n this.copyFieldsTo(descriptor);\n return descriptor;\n }\n\n protected override copyFieldsTo(filter: FilterLookupDescriptor<T>) {\n super.copyFieldsTo(filter);\n filter._dataProvider = this._dataProvider;\n filter._lookupType = this._lookupType;\n filter._itemsLabelProperty = this._itemsLabelProperty;\n filter._itemsLabelTranslate = this._itemsLabelTranslate;\n filter._itemsValueProperty = this._itemsValueProperty;\n filter._multiselect = this._multiselect;\n filter._dropdownClassName = this._dropdownClassName;\n filter._autocompleteOpenOnFocus = this._autocompleteOpenOnFocus;\n filter._autocompleteInlineSearch = this._autocompleteInlineSearch;\n }\n}\n\nexport class FilterLookupEnumDescriptor extends FilterLookupDescriptor<EnumValue<string | number>> {\n private readonly _enumType: EnumType;\n private readonly _optionEnumValues: EnumValue<string | number>[];\n private readonly _nameAsValue: boolean = false;\n\n constructor(property: string, enumType: EnumType, options?: Array<EnumConstantType>, nameAsValue = false, optionsTitlePath?: string | null) {\n super(property, null);\n this._enumType = enumType;\n this._nameAsValue = nameAsValue;\n if (typeof optionsTitlePath === 'undefined') {\n optionsTitlePath = TypeUtil.findEnumName(enumType);\n }\n this._optionEnumValues = Array.isArray(options)\n ? EnumUtil.fromValuesAsEnumValueArray(enumType, options, nameAsValue, optionsTitlePath ?? undefined)\n : EnumUtil.fromConstantsAsEnumValueArray(enumType, nameAsValue, optionsTitlePath ?? undefined);\n const dataProvider = new LookupDataProvider<EnumValue<string | number>, any>(null).withLookup(() => of(this._optionEnumValues));\n this.withLookupDataProvider(dataProvider);\n this.withItemsLabelProperty('title', optionsTitlePath !== null);\n this.withItemsValueProperty('value');\n }\n\n public get enumType() {\n return this._enumType;\n }\n\n public override asAutocomplete(openOnFocus = true): this {\n super.asAutocomplete(openOnFocus, true);\n return this;\n }\n\n public withMultiselectEnum(multiselect = true): FilterLookupEnumDescriptor {\n return super.withMultiselect(multiselect) as FilterLookupEnumDescriptor;\n }\n\n public override withDefaultFilter(): this {\n throw new MngErrorInternal(\n `withDefaultFilter on FilterLookupEnumDescriptor should not be used. Use withDefaultFilterEnum instead.`,\n 'FilterDescriptor error'\n ).consoleError();\n }\n\n public withDefaultFilterEnum(filterValue: EnumConstantType | EnumConstantType[], filterValueTo?: EnumConstantType, filterMatchMode?: FilterMatchModeEnum): this {\n let defaultOptionValue: any | any[];\n if (Array.isArray(filterValue)) {\n defaultOptionValue = this._nameAsValue ? filterValue.map(value => EnumUtil.getConstantName(this._enumType, value)) : filterValue;\n } else {\n defaultOptionValue = this._nameAsValue ? EnumUtil.getConstantName(this._enumType, filterValue) : filterValue;\n }\n\n let defaultOptionValueTo: any;\n if (filterValueTo) {\n defaultOptionValueTo = this._nameAsValue ? EnumUtil.getConstantName(this._enumType, filterValueTo) : filterValueTo;\n }\n\n if (defaultOptionValue) {\n let option: any | any[];\n if (Array.isArray(defaultOptionValue)) {\n option = defaultOptionValue.map(value => this._optionEnumValues.find(o => o.value === value));\n } else {\n option = this._optionEnumValues.find(o => o.value === defaultOptionValue);\n }\n\n const optionTo = defaultOptionValueTo ? this._optionEnumValues.find(o => o.value === defaultOptionValueTo) : undefined;\n\n let filterValueFromArrayTo = undefined;\n if (optionTo) {\n filterValueFromArrayTo = this._itemsValueProperty ? optionTo[this._itemsValueProperty as keyof object] : optionTo;\n }\n\n let filterValueFromArray: any | any[];\n if (Array.isArray(option)) {\n filterValueFromArray = this._itemsValueProperty ? option.map(value => value[this._itemsValueProperty as keyof object]) : option;\n } else {\n filterValueFromArray = this._itemsValueProperty ? option[this._itemsValueProperty as keyof object] : option;\n }\n\n super.withDefaultFilter(filterValueFromArray, filterValueFromArrayTo, filterMatchMode);\n }\n return this;\n }\n\n public override copy(): FilterLookupEnumDescriptor {\n const field = new FilterLookupEnumDescriptor(this._property, this._enumType, []);\n this.copyFieldsTo(field);\n return field;\n }\n}\n","import {Type} from '@angular/core';\n\nimport {IColumnValueComponent, MngErrorInternal} from '../../models';\nimport {ClassType, EnumConstantType, EnumType} from '../../types';\nimport {ModelUtil, TypeUtil} from '../../utils';\nimport {DateUtil} from '../../utils/date.util';\nimport {TableviewUtil} from '../../utils/tableview.util';\nimport {FilterDescriptor, FilterLookupDescriptor, FilterLookupEnumDescriptor} from '../filter';\nimport {ColumnDisplayTypeEnum, ColumnTypeEnum, FilterTypeEnum} from '../types';\nimport {TableDescriptor, TableDynamicDescriptor} from './table.descriptor';\n\nexport class ColumnDescriptor<T, TT> {\n protected readonly _table: TableDescriptor<TT>;\n protected readonly _property: string;\n private _columnType: ColumnTypeEnum = ColumnTypeEnum.String;\n private _columnDisplayType: ColumnDisplayTypeEnum = ColumnDisplayTypeEnum.String;\n protected _title?: string;\n private _jsonPath?: string;\n private _isSortEnabled = false;\n private _sortProperty?: string;\n private _filterDescriptor?: FilterDescriptor<unknown>;\n private _displayFormat?: string;\n private _locale?: string;\n private _template?: string;\n private _getter?: (item: TT, value?: T | null) => unknown;\n private _isMultiline = false;\n private _hasValueAsTooltip = false;\n private _isReorderable = false;\n private _isToggleable = false;\n private _isVisible = true;\n\n // styling\n private _headerClassName = '';\n private _className = '';\n private _width: number | null = null;\n private _minWidth: number | null = null;\n private _maxWidth: number | null = null;\n\n // enum specifics\n private _enumType?: EnumType;\n private _enumTitlePath?: string | null;\n private _enumNameAsValue = false;\n\n // boolean specifics\n private _booleanAsIcon = false;\n private _booleanYes?: string;\n private _booleanNo?: string;\n\n // model specifics\n private _objectModelType?: ClassType<unknown>;\n private _objectTitleProperty?: string;\n\n // currency specifics\n private _currencyCode?: string;\n private _currencyFromProperty?: string;\n private _currencyDisplay?: 'symbol' | 'code' | 'name';\n\n // custom specifics\n private _customComponentType?: Type<IColumnValueComponent<TT>>;\n\n // helpers\n private _hasCopyToClipboard = false;\n\n // localization\n private _isLocalized = false;\n private _localizationExistsProperty?: string;\n\n constructor(table: TableDescriptor<TT>, property: string) {\n this._table = table;\n this._property = property;\n }\n\n public get columnType() {\n return this._columnType;\n }\n\n public get columnDisplayType() {\n return this._columnDisplayType;\n }\n\n public get title() {\n return this._title;\n }\n\n public get jsonPath() {\n return this._jsonPath;\n }\n\n public get isSortEnabled() {\n return this._isSortEnabled;\n }\n\n public get sortProperty() {\n return this._sortProperty;\n }\n\n public get filterDescriptor() {\n return this._filterDescriptor;\n }\n\n public get displayFormat() {\n return this._displayFormat;\n }\n\n public get table() {\n return this._table;\n }\n\n public get property() {\n return this._property;\n }\n\n public get headerClassName() {\n return this._headerClassName;\n }\n\n public get className() {\n return this._className;\n }\n\n public get width() {\n return this._width;\n }\n\n public get minWidth() {\n return this._minWidth;\n }\n\n public get maxWidth() {\n return this._maxWidth;\n }\n\n public get enumType() {\n return this._enumType;\n }\n\n public get enumTitlePath() {\n return this._enumTitlePath;\n }\n\n public get enumNameAsValue() {\n return this._enumNameAsValue;\n }\n\n public get booleanAsIcon() {\n return this._booleanAsIcon;\n }\n\n public get booleanYes() {\n return this._booleanYes;\n }\n\n public get booleanNo() {\n return this._booleanNo;\n }\n\n public get objectModelType() {\n return this._objectModelType;\n }\n\n public get objectTitleProperty() {\n return this._objectTitleProperty;\n }\n\n public get customComponentType() {\n return this._customComponentType;\n }\n\n public get locale() {\n return this._locale;\n }\n\n public get currencyCode() {\n return this._currencyCode;\n }\n\n public get currencyDisplay() {\n return this._currencyDisplay;\n }\n\n public get currencyFromProperty() {\n return this._currencyFromProperty;\n }\n\n public get hasCopyToClipboard() {\n return this._hasCopyToClipboard;\n }\n\n public get template() {\n return this._template;\n }\n\n public get getter() {\n return this._getter;\n }\n\n public get isMultiline() {\n return this._isMultiline;\n }\n\n public get hasValueAsTooltip() {\n return this._hasValueAsTooltip;\n }\n\n public get isReorderable() {\n return this._isReorderable;\n }\n\n public get isToggleable() {\n return this._isToggleable;\n }\n\n public get isVisible() {\n return this._isVisible;\n }\n\n public get isLocalized() {\n return this._isLocalized;\n }\n\n public get localizationExistsProperty() {\n return this._localizationExistsProperty;\n }\n\n /**\n * converts column to given type with additional arguments\n * @param type column type enum\n * @param args any additional arguments for column (optional)\n */\n public asType(type: ColumnTypeEnum, displayType?: ColumnDisplayTypeEnum, ...args: any[]): this {\n switch (type) {\n case ColumnTypeEnum.Number:\n return displayType === ColumnDisplayTypeEnum.Currency ? this.asCurrency(...args) : this.asNumber(...args);\n case ColumnTypeEnum.Boolean:\n return this.asBoolean(...args);\n case ColumnTypeEnum.Date:\n return this.asDate(...args);\n case ColumnTypeEnum.Enum:\n return this.asEnum(args[0] as EnumType, args[1], args[2]);\n case ColumnTypeEnum.Custom:\n return this.asCustomComponent(args[0]);\n case ColumnTypeEnum.String:\n default:\n return this;\n }\n }\n\n public asNumber(displayFormat = '1.0-0', locale?: string): this {\n this._columnType = ColumnTypeEnum.Number;\n this._columnDisplayType = ColumnDisplayTypeEnum.Number;\n this._displayFormat = displayFormat;\n this._locale = locale ?? this._locale;\n return this;\n }\n\n public asCurrency(currencyCode?: string, currencyFromProperty?: string, currencyDisplay?: 'symbol' | 'code' | 'name', displayFormat = '1.2-2', locale?: string): this {\n this._columnType = ColumnTypeEnum.Number;\n this._columnDisplayType = ColumnDisplayTypeEnum.Currency;\n this._currencyCode = currencyCode ?? this._currencyCode;\n this._currencyFromProperty = currencyFromProperty ?? this._currencyFromProperty;\n this._currencyDisplay = currencyDisplay ?? this._currencyDisplay;\n this._displayFormat = displayFormat ?? displayFormat;\n this._locale = locale ?? this._locale;\n return this;\n }\n\n public asDate(displayFormat = 'dd.MM.yyyy'): this {\n this._columnType = ColumnTypeEnum.Date;\n this._columnDisplayType = ColumnDisplayTypeEnum.Date;\n this._displayFormat = displayFormat;\n return this;\n }\n\n public asBoolean(yes?: string, no?: string, asIcon = false): this {\n this._columnType = ColumnTypeEnum.Boolean;\n this._columnDisplayType = ColumnDisplayTypeEnum.Boolean;\n this._booleanAsIcon = asIcon;\n this._booleanYes = yes;\n this._booleanNo = no;\n return this;\n }\n\n public asEnum(enumType: EnumType, nameAsValue = false, titlePath?: string | null): this {\n this._columnType = ColumnTypeEnum.Enum;\n this._columnDisplayType = ColumnDisplayTypeEnum.Enum;\n this._enumType = enumType;\n this._enumNameAsValue = nameAsValue;\n if (typeof titlePath === 'undefined') {\n titlePath = TypeUtil.findEnumName(enumType);\n }\n this._enumTitlePath = titlePath;\n return this;\n }\n\n public asCustomComponent(customComponentType: Type<IColumnValueComponent<TT>>): this {\n this._columnType = ColumnTypeEnum.Custom;\n this._columnDisplayType = ColumnDisplayTypeEnum.Component;\n this._customComponentType = customComponentType;\n return this;\n }\n\n public asHtml(): this {\n this._columnDisplayType = ColumnDisplayTypeEnum.Html;\n return this;\n }\n\n public withClassName(className?: string, headerClassName?: string): this {\n this._className = className ?? '';\n this._headerClassName = headerClassName ?? '';\n return this;\n }\n\n public withWidth(width?: number, minWidth?: number, maxWidth?: number): this {\n this._width = width ?? null;\n this._minWidth = minWidth ?? null;\n this._maxWidth = maxWidth ?? null;\n return this;\n }\n\n public withObjectProperty<MT>(modelType: ClassType<MT>, titleProperty?: string): this {\n this._objectModelType = modelType;\n if (!titleProperty) {\n this._objectTitleProperty = ModelUtil.findTitleAttribute(modelType) ?? undefined;\n } else {\n this._objectTitleProperty = titleProperty;\n }\n return this;\n }\n\n public withTitle(title: string): this {\n this._title = title;\n return this;\n }\n\n public withJsonPath(path: string): this {\n this._jsonPath = path;\n return this;\n }\n\n public withFilter(forceSimple = false): FilterDescriptor<any> {\n this._filterDescriptor = new FilterDescriptor<unknown>(this._property);\n let filterType: FilterTypeEnum;\n\n if (!forceSimple && this._objectModelType) {\n return this.withFilterLookup();\n }\n switch (this._columnType) {\n case ColumnTypeEnum.Number:\n filterType = FilterTypeEnum.Number;\n break;\n case ColumnTypeEnum.Boolean:\n filterType = FilterTypeEnum.Boolean;\n break;\n case ColumnTypeEnum.Date:\n filterType = FilterTypeEnum.Date;\n break;\n case ColumnTypeEnum.Enum:\n if (!forceSimple) {\n return this.withFilterLookupEnum();\n } else {\n filterType = FilterTypeEnum.String;\n break;\n }\n case ColumnTypeEnum.String:\n case ColumnTypeEnum.Custom:\n default:\n filterType = FilterTypeEnum.String;\n break;\n }\n\n this._filterDescriptor.asFilterType(filterType);\n if (filterType === FilterTypeEnum.Number) {\n const displayFormatFractions = this._displayFormat?.split('.')?.[1]?.split('-');\n if (displayFormatFractions && displayFormatFractions.length > 2) {\n this._filterDescriptor.withNumberFractions(parseInt(displayFormatFractions[0]), parseInt(displayFormatFractions[1]));\n }\n } else if (filterType === FilterTypeEnum.Date) {\n const displayFormat = this._displayFormat;\n if (displayFormat) {\n const filterDisplayFormat = DateUtil.fromPrimeToAngularDateFormat(displayFormat);\n this._filterDescriptor.withDateFormat(filterDisplayFormat);\n }\n }\n\n return this._filterDescriptor;\n }\n\n public withFilterLookup(): FilterLookupDescriptor<unknown> {\n const filterDescriptor = new FilterLookupDescriptor<unknown>(this._property, this._objectModelType ?? null);\n this._filterDescriptor = filterDescriptor;\n return filterDescriptor;\n }\n\n public withFilterLookupEnum(options?: Array<EnumConstantType>): FilterLookupEnumDescriptor {\n if (this._columnType !== ColumnTypeEnum.Enum || !this._enumType) {\n throw new MngErrorInternal(`Column ${this._property} is not of type enum or enum type is undefined.`, 'ColumnDescriptor error').consoleError();\n }\n const filterDescriptor = new FilterLookupEnumDescriptor(this._property, this._enumType, options, this._enumNameAsValue, this._enumTitlePath);\n this._filterDescriptor = filterDescriptor;\n return filterDescriptor;\n }\n\n public withSort(isEnabled = true, sortProperty?: string): this {\n this._isSortEnabled = isEnabled;\n this._sortProperty = sortProperty;\n return this;\n }\n\n public withDefaultSort(asc = true): this {\n this._table.withDefaultSort(this._property, asc);\n return this;\n }\n\n public withCopyToClipboard(hasCopyToCliboard = true): this {\n this._hasCopyToClipboard = hasCopyToCliboard;\n return this;\n }\n\n public withTemplate(template: string): this {\n this._template = template;\n return this;\n }\n\n public withGetter(getter?: (item: TT, value?: T | null) => unknown): this {\n this._getter = getter;\n return this;\n }\n\n public withMultiline(isMultiline = true): this {\n this._isMultiline = isMultiline;\n return this;\n }\n\n public withValueAsTooltip(valueAsTooltip = true): this {\n this._hasValueAsTooltip = valueAsTooltip;\n return this;\n }\n\n public withReorderable(isReorderable = true): this {\n this._isReorderable = isReorderable;\n return this;\n }\n\n public withToggleable(isToggleable = true, isVisible = true): this {\n this._isToggleable = isToggleable;\n this._isVisible = isVisible;\n return this;\n }\n\n public localized(existsProperty?: string): this {\n if (existsProperty) {\n this._localizationExistsProperty = existsProperty;\n } else {\n this._localizationExistsProperty = `${this._property}Localized`;\n }\n return this;\n }\n\n public copy(): ColumnDescriptor<T, TT> {\n const descriptor = new ColumnDescriptor<T, TT>(this._table, this._property);\n this.copyFieldsTo(descriptor);\n return descriptor;\n }\n\n protected copyFieldsTo(obj: ColumnDescriptor<T, TT>) {\n obj._jsonPath = this._jsonPath;\n obj._title = this._title;\n obj._isSortEnabled = this._isSortEnabled;\n obj._sortProperty = this._sortProperty;\n obj._columnType = this._columnType;\n obj._columnDisplayType = this._columnDisplayType;\n obj._filterDescriptor = this._filterDescriptor?.copy();\n obj._enumType = this._enumType;\n obj._enumTitlePath = this._enumTitlePath;\n obj._enumNameAsValue = this._enumNameAsValue;\n obj._booleanAsIcon = this._booleanAsIcon;\n obj._booleanYes = this._booleanYes;\n obj._booleanNo = this._booleanNo;\n obj._objectModelType = this._objectModelType;\n obj._objectTitleProperty = this._objectTitleProperty;\n obj._locale = this._locale;\n obj._currencyCode = this._currencyCode;\n obj._currencyDisplay = this._currencyDisplay;\n obj._currencyFromProperty = this._currencyFromProperty;\n obj._displayFormat = this._displayFormat;\n obj._headerClassName = this._headerClassName;\n obj._className = this._className;\n obj._width = this._width;\n obj._minWidth = this._minWidth;\n obj._maxWidth = this._maxWidth;\n obj._customComponentType = this._customComponentType;\n obj._hasCopyToClipboard = this._hasCopyToClipboard;\n obj._template = this._template;\n obj._getter = this._getter;\n obj._isMultiline = this._isMultiline;\n obj._hasValueAsTooltip = this._hasValueAsTooltip;\n obj._isReorderable = this._isReorderable;\n obj._isToggleable = this._isToggleable;\n obj._isVisible = this._isVisible;\n obj._isLocalized = this._isLocalized;\n obj._localizationExistsProperty = this._localizationExistsProperty;\n }\n}\n\nexport class ColumnDynamicDescriptor extends ColumnDescriptor<any, any> {\n protected override _table: TableDynamicDescriptor;\n protected override _title: string | undefined = undefined;\n private _visibility = true;\n\n // private _filterStatus;\n\n constructor(table: TableDynamicDescriptor, property: string) {\n super(table, property);\n this._table = table;\n }\n\n public get visibility() {\n return this._visibility;\n }\n\n /**\n * sets column's title and returns this column\n * @param title title to be set\n * @param override should column title if all ready set?\n */\n public override withTitle(title: string, override = false): this {\n if (this._title == null || override) {\n this._title = title;\n }\n return this;\n }\n\n /**\n * defines automatic type and returns this column\n * @param value\n */\n public withAutomaticType(value: string): this {\n TableviewUtil.stringColumnConverter(this, value);\n return this;\n }\n\n /**\n * sets visibility state for column and returns this column\n * @param visibility\n */\n public withVisibility(visibility: boolean): this {\n this._visibility = visibility;\n return this;\n }\n\n /**\n * creates deep copy of column dynamic descriptor\n */\n public override copy(): ColumnDynamicDescriptor {\n const descriptor = new ColumnDynamicDescriptor(this._table, this._property);\n this.copyFieldsTo(descriptor);\n descriptor._title = this._title;\n descriptor._visibility = this._visibility;\n return descriptor;\n }\n\n public toColumnDescriptor(tableDescriptor: TableDescriptor<any>): ColumnDescriptor<any, any> {\n const descriptor = new ColumnDescriptor(tableDescriptor, this._property);\n this.copyFieldsTo(descriptor);\n return descriptor;\n }\n}\n","import {Type} from '@angular/core';\n\nimport {MediusQueryResult} from '../../api/models';\nimport {ObjectSerializer} from '../../api/utils';\nimport {ILookupDataProvider} from '../../data-providers';\nimport {IColumnValueComponent} from '../../models';\nimport {TableviewAttributeDef} from '../../models/tableview-attr.model';\nimport {ClassType, EnumType} from '../../types';\nimport {ModelUtil} from '../../utils';\nimport {TableviewUtil} from '../../utils/tableview.util';\nimport {FilterLookupDescriptor} from '../filter';\nimport {ModelDescriptor} from '../model.descriptor';\nimport {ColumnDisplayTypeEnum, ColumnTypeEnum, TableDynamicColumnsModeEnum, TableFilterDisplayEnum, TablePaginationModeEnum, TableSizeEnum} from '../types';\nimport {ColumnDescriptor, ColumnDynamicDescriptor} from './column.descriptor';\n\nexport class TableDescriptor<T> {\n private readonly _model: ModelDescriptor<T>;\n private _dataKey?: string;\n private _modelType: ClassType<T>;\n private _filterDisplay: TableFilterDisplayEnum = TableFilterDisplayEnum.Menu;\n private _paginationMode?: TablePaginationModeEnum;\n private _rowsPerPageOptions = [25, 50, 100];\n private _defaultNumRows = this._rowsPerPageOptions[0];\n protected _columns: Array<ColumnDescriptor<any, T>> = [];\n private _title?: string;\n private _hideHeader = false;\n private _dataKeyProperty?: string;\n\n private _hasDefaultSort = false;\n private _defaultSortProperty: string[] = [];\n private _defaultSortAsc: boolean[] = [];\n\n // visual\n private _className = '';\n private _size: TableSizeEnum = TableSizeEnum.Large;\n private _tableFullHeightOffset?: number;\n private _rowHeight?: number;\n private _hasHover = true;\n private _hasGridlines = false;\n private _hasResizableColumns = false;\n private _columnResizeMode: 'fit' | 'expand' = 'expand';\n\n private _headerClassName?: string;\n private _rowClassName?: string;\n private _rowClassNameMapFn?: (className?: string, item?: T) => string;\n\n private _autoGenerated = false;\n\n private _isLocalized = false;\n private _localizationLocaleProperty?: string;\n\n constructor(modelType: ClassType<T>, idProperty?: string, titleProperty?: string, i18nBaseKey?: string | ClassType<unknown>) {\n this._modelType = modelType;\n this._model = new ModelDescriptor<T>(modelType, idProperty, titleProperty, i18nBaseKey);\n this._dataKeyProperty = idProperty ?? ModelUtil.findIdAttribute(modelType) ?? undefined;\n }\n\n /**\n * generates descriptor based on modelType attribute definition\n * @param modelType class type\n * @param idProperty\n * @param titleProperty\n */\n public static from<T>(modelType: ClassType<T>, idProperty?: string, titleProperty?: string): TableDescriptor<T> {\n return TableDescriptor.fromModelWithAttributes(modelType, TableviewUtil.getAttributeDefMap(modelType), idProperty, titleProperty);\n }\n\n /**\n * generates descriptor base on given attribute definition\n * @param modelType class type\n * @param attributes attributes from which descriptor is generated\n * @param idProperty\n * @param titleProperty\n */\n public static fromModelWithAttributes<T>(modelType: ClassType<T>, attributes: TableviewAttributeDef[], idProperty?: string, titleProperty?: string): TableDescriptor<T> {\n const descriptor = new TableDescriptor(modelType, idProperty, titleProperty);\n descriptor._autoGenerated = true;\n attributes.filter(attr => !attr.type.includes('Set') && !attr.type.includes('Array')).forEach(attr => descriptor.upsertColumnFromAttributeDef(attr));\n return descriptor;\n }\n\n public get dataKey() {\n return this._dataKey;\n }\n\n public get filterDisplay() {\n return this._filterDisplay;\n }\n\n public get paginationMode() {\n return this._paginationMode;\n }\n\n get rowsPerPageOptions(): number[] {\n return this._rowsPerPageOptions;\n }\n\n get defaultNumRows(): number {\n return this._defaultNumRows;\n }\n\n public get columns() {\n return this._columns;\n }\n\n public get title() {\n return this._title;\n }\n\n public get hideHeader() {\n return this._hideHeader;\n }\n\n public get dataKeyProperty() {\n return this._dataKeyProperty;\n }\n\n public get hasDefaultSort() {\n return this._hasDefaultSort;\n }\n\n public get defaultSortProperty() {\n return this._defaultSortProperty;\n }\n\n public get defaultSortAsc() {\n return this._defaultSortAsc;\n }\n\n public get model() {\n return this._model;\n }\n\n public get className() {\n return this._className;\n }\n\n public get size() {\n return this._size;\n }\n\n public get tableFullHeightOffset() {\n return this._tableFullHeightOffset;\n }\n\n public get rowHeight() {\n return this._rowHeight;\n }\n\n public get hasHover() {\n return this._hasHover;\n }\n\n public get hasGridlines() {\n return this._hasGridlines;\n }\n\n public get hasResizableColumns() {\n return this._hasResizableColumns;\n }\n\n public get columnResizeMode() {\n return this._columnResizeMode;\n }\n\n public get rowClassName() {\n return this._rowClassName;\n }\n\n public get rowClassNameMapFn() {\n return this._rowClassNameMapFn;\n }\n\n public get headerClassName() {\n return this._headerClassName;\n }\n\n public get isLocalized() {\n return this._isLocalized;\n }\n\n public get localizationLocaleProperty() {\n return this._localizationLocaleProperty;\n }\n\n /**\n * dataKey is used for the purpose of combined saving user preferences in localstorage if 2 tables have the same dataKey they will share the same localstorage entry.\n * Similarly, this property can also be used to differentiate two tables of the same model on the same url (so that they have separate entries in localstorage).\n * @param dataKey\n */\n public withDataKey(dataKey?: string): this {\n this._dataKey = dataKey;\n return this;\n }\n\n public getColumn(property: string): ColumnDescriptor<string, T> | undefined {\n return this._columns.find(col => col.property === property);\n }\n\n public addColumnDescriptor<CT>(column: ColumnDescriptor<CT, T>): TableDescriptor<T> {\n this._columns.push(column);\n return this;\n }\n\n public addColumn(property: string): ColumnDescriptor<string, T> {\n const column = new ColumnDescriptor<string, T>(this, property);\n this._columns.push(column);\n return column;\n }\n\n public addColumnNumber(property: string, displayFormat?: string): ColumnDescriptor<number, T> {\n const column = new ColumnDescriptor<number, T>(this, property);\n column.asNumber(displayFormat);\n this._columns.push(column);\n return column;\n }\n\n public addColumnDate(property: string, displayFormat?: string): ColumnDescriptor<Date, T> {\n const column = new ColumnDescriptor<Date, T>(this, property);\n column.asDate(displayFormat);\n this._columns.push(column);\n return column;\n }\n\n public addColumnBoolean(property: string, yes?: string, no?: string, asIcon = false): ColumnDescriptor<boolean, T> {\n const column = new ColumnDescriptor<boolean, T>(this, property);\n column.asBoolean(yes, no, asIcon);\n this._columns.push(column);\n return column;\n }\n\n public addColumnEnum(property: string, enumType: EnumType, nameAsValue = false, titlePath?: string | null): ColumnDescriptor<EnumType, T> {\n const column = new ColumnDescriptor<EnumType, T>(this, property);\n column.asEnum(enumType, nameAsValue, titlePath);\n this._columns.push(column);\n return column;\n }\n\n public addColumnCustomComponent(property: string, customComponentType: Type<IColumnValueComponent<T>>): ColumnDescriptor<any, T> {\n const column = new ColumnDescriptor<any, T>(this, property);\n column.asCustomComponent(customComponentType);\n this._columns.push(column);\n return column;\n }\n\n public removeColumn(property: string): void {\n const columndIdx = this._columns.findIndex(c => c.property === property);\n this._columns.splice(columndIdx, 1);\n }\n\n public withFilterDisplay(filterDisplayType: TableFilterDisplayEnum): this {\n this._filterDisplay = filterDisplayType;\n return this;\n }\n\n public withPaginationMode(paginationMode: TablePaginationModeEnum): this {\n this._paginationMode = paginationMode;\n return this;\n }\n\n public withRowsPerPage(rows: number, options?: Array<number>) {\n if (options) {\n this._rowsPerPageOptions = options;\n }\n if (!this._rowsPerPageOptions.includes(rows)) {\n this._defaultNumRows = this._rowsPerPageOptions[0];\n } else {\n this._defaultNumRows = rows;\n }\n return this;\n }\n\n public withTitle(title: string): this {\n this._title = title;\n return this;\n }\n\n public withHideHeader(hideHeader = true) {\n this._hideHeader = hideHeader;\n return this;\n }\n\n public withDataKeyProperty(property: string): this {\n this._dataKeyProperty = property;\n return this;\n }\n\n public withColumnsReorderable(columnsReorderable = true): this {\n for (const col of this.columns) {\n col.withReorderable(columnsReorderable);\n }\n return this;\n }\n\n public withColumnsToggleable(columnsToggleable = true): this {\n for (const col of this.columns) {\n col.withToggleable(columnsToggleable);\n }\n return this;\n }\n\n public withDefaultSort(property: string, asc = true): this {\n this._hasDefaultSort = true;\n this._defaultSortProperty.push(property);\n this._defaultSortAsc.push(asc);\n return this;\n }\n\n public withClassName(className: string): this {\n this._className = className;\n return this;\n }\n\n public withSize(size: TableSizeEnum = TableSizeEnum.Normal): this {\n this._size = size;\n return this;\n }\n\n public withTableFullHeightOffset(tableFullHeightOffset: number): this {\n this._tableFullHeightOffset = tableFullHeightOffset;\n return this;\n }\n\n public withRowHeight(rowHeight: number): this {\n this._rowHeight = rowHeight;\n return this;\n }\n\n public withHover(hover: boolean): this {\n this._hasHover = hover;\n return this;\n }\n\n public withGridlines(gridlines: boolean): this {\n this._hasGridlines = gridlines;\n return this;\n }\n\n public withResizableColumns(resizableColumns = true, columnResizeMode: 'fit' | 'expand' = 'fit'): this {\n this._hasResizableColumns = resizableColumns;\n this._columnResizeMode = columnResizeMode;\n return this;\n }\n\n public withRowClassName(rowClassName?: string, classNameMapFn?: (className?: string, item?: T) => string): this {\n this._rowClassName = rowClassName;\n this._rowClassNameMapFn = classNameMapFn;\n return this;\n }\n\n public withHeaderClassName(headerClassName: string): this {\n this._headerClassName = headerClassName;\n return this;\n }\n\n public withLocalized(): this {\n this._isLocalized = true;\n return this;\n }\n\n public withLocalizationLocaleProperty(localizationLocaleProperty: string): this {\n this._isLocalized = true;\n this._localizationLocaleProperty = localizationLocaleProperty;\n return this;\n }\n\n protected copyFieldsTo(obj: TableDescriptor<T>) {\n obj._title = this._title;\n obj._hideHeader = this._hideHeader;\n obj._dataKeyProperty = this._dataKeyProperty;\n obj._hasDefaultSort = this._hasDefaultSort;\n obj._defaultSortProperty = this._defaultSortProperty.map(p => p);\n obj._defaultSortAsc = this._defaultSortAsc.map(p => p);\n obj._filterDisplay = this._filterDisplay;\n obj._className = this._className;\n obj._size = this._size;\n obj._tableFullHeightOffset = this._tableFullHeightOffset;\n obj._rowHeight = this._rowHeight;\n obj._hasHover = this._hasHover;\n obj._hasGridlines = this._hasGridlines;\n obj._hasResizableColumns = this._hasResizableColumns;\n obj._columnResizeMode = this._columnResizeMode;\n obj._isLocalized = this._isLocalized;\n obj._localizationLocaleProperty = this._localizationLocaleProperty;\n }\n\n public copy(): TableDescriptor<T> {\n const descriptor = new TableDescriptor(this.model.type, this.model.idPropertyName, this.model.titlePropertyName);\n this.copyFieldsTo(descriptor);\n descriptor._columns = this.columns.map(c => c.copy());\n return descriptor;\n }\n\n /**\n * generates column based on attributes\n * @param attribute attribute map\n * @param column if provided, replaced by new, otherwise new is created\n * @param args additional parameters\n */\n private upsertColumnFromAttributeDef(attribute: TableviewAttributeDef, column?: ColumnDescriptor<string, T>, ...args: any[]): ColumnDescriptor<string, T> {\n if (column == null) {\n column = this.addColumn(attribute.name);\n }\n\n if (attribute.columnType === ColumnTypeEnum.Enum && args.length === 0) {\n args = [attribute.enumType];\n }\n\n column = column.asType(attribute.columnType, attribute.columnDisplayType, ...args);\n if (attribute.classType) {\n column.withObjectProperty(attribute.classType).withSort();\n } else {\n column.withSort().withFilter();\n }\n\n return column;\n }\n\n /**\n * defines modified type of column\n * DO NOT USE with enum (use withCustomEnumType)\n * @param property column name\n * @param columnType modified type\n * @param args additional attributes\n */\n public withColumnModifiedType(property: string, columnType?: ColumnTypeEnum, columnDisplayType?: ColumnDisplayTypeEnum, ...args: any[]): this {\n const attributeDef = TableviewUtil.getAttributeDefMap(this._modelType).find(atribute => atribute.name === property);\n\n if (attributeDef != null) {\n attributeDef.columnType = columnType ?? attributeDef.columnType;\n attributeDef.columnDisplayType = columnDisplayType ?? attributeDef.columnDisplayType;\n this.upsertColumnFromAttributeDef(\n attributeDef,\n this.columns.find(col => col.property === attributeDef.name),\n ...args\n );\n }\n\n return this;\n }\n\n /**\n * defines custom enum type for column\n * @param property column name\n * @param enumType\n */\n public withColumnModifiedEnum(property: string, enumType?: EnumType): this {\n const attributeDef = TableviewUtil.getAttributeDefMap(this._modelType).find(atribute => atribute.name === property);\n\n if (attributeDef != null) {\n attributeDef.columnType = ColumnTypeEnum.Enum;\n this.upsertColumnFromAttributeDef(\n attributeDef,\n this.columns.find(col => col.property === property),\n enumType ?? (ObjectSerializer.get().findEnum(attributeDef.type) as EnumType)\n );\n }\n\n return this;\n }\n\n /**\n * modifies column with class and lookup provider\n * @param property column name\n * @param lookupProvider lookupProvider for class\n * @param itemsLabelProperty\n * @param filterProperty\n */\n public withColumnModifiedLookup(property: string, lookupProvider: ILookupDataProvider<any, any>, itemsLabelProperty?: string, filterProperty?: string): this {\n const column = this.columns.find(col => col.property === property);\n if (column) {\n column.withFilterLookup().withLookupDataProvider(lookupProvider);\n if (column instanceof FilterLookupDescriptor) {\n if (itemsLabelProperty) {\n (column as FilterLookupDescriptor<T>).withItemsLabelProperty(itemsLabelProperty);\n }\n\n if (filterProperty) {\n (column as FilterLookupDescriptor<T>).withFilterProperty(filterProperty);\n }\n }\n }\n return this;\n }\n\n /**\n * called on data received to customize String properties with either Data or Number type\n * @param data api response\n */\n // public onDataReceivedTypeBuilding(data: MediusQueryResult<T>): this {\n // if (!this._autoGenerated) {\n // return this;\n // } else if (data.pageData == null || data.pageData.length == 0) {\n // throw Error('PageData is empty, cannot generate descriptor');\n // }\n // const objectModel = data.pageData[0];\n // const entries = Object.entries(objectModel);\n //\n // for (const [key, value] of entries) {\n // const attribute = TableviewUtil.getAttributeDefMap(this._modelType).find(a => a.name === key);\n // if (attribute && attribute.columnType === ColumnTypeEnum.String) {\n // const column = this.columns.find(col => col.property === attribute.name);\n //\n // if (column) {\n // TableviewUtil.stringColumnConverter(column, value);\n // }\n // }\n // }\n //\n // return this;\n // }\n}\n\nexport class TableDynamicDescriptor extends TableDescriptor<any> {\n private _excludedColumns: Array<string> = [];\n private _filterColumns: Array<string> = [];\n private _sortColumns: Array<string> = [];\n private _sortColumnMode = TableDynamicColumnsModeEnum.EXCLUDE;\n private _filterColumnMode = TableDynamicColumnsModeEnum.EXCLUDE;\n\n protected override _columns: ColumnDynamicDescriptor[] = [];\n\n constructor(idProperty?: string, titleProperty?: string) {\n super({} as ClassType<any>, idProperty, titleProperty);\n this.withTitle('Dynamic table');\n }\n\n public override get columns() {\n return this._columns;\n }\n\n /**\n * defines excluded columns when generating descriptor\n * @param excludedColumn names of excluded columns\n */\n public withColumnsExcluded(excludedColumn: string[]): this {\n this._excludedColumns = excludedColumn;\n return this;\n }\n\n /**\n * defines column properties on which sort is defined or not depending on sortColumnMode\n * @param sortOnColumns column names\n * @param sortColumnMode INCLUDE_ONLY (default) only given columns will have sort, EXCLUDE given columns will NOT have sort\n */\n public withColumnsSort(sortOnColumns: string[], sortColumnMode = TableDynamicColumnsModeEnum.INCLUDE_ONLY): this {\n this._sortColumnMode = sortColumnMode;\n this._sortColumns = sortOnColumns;\n return this;\n }\n\n /**\n * defines column properties on which filter is defined or not depending on filterColumnMode\n * @param filterOnColumn column names\n * @param filterColumnMode INCLUDE_ONLY (default) only given columns will have filter, EXCLUDE given columns will NOT have filter\n */\n public withColumnsFilter(filterOnColumn: string[], filterColumnMode = TableDynamicColumnsModeEnum.INCLUDE_ONLY): this {\n this._filterColumnMode = filterColumnMode;\n this._filterColumns = filterOnColumn;\n return this;\n }\n\n /**\n * sets given type to column with given property and returns this table\n * @param property column's property\n * @param type custom type for column\n * @param args addition arguments for column\n */\n public override withColumnModifiedType(property: string, type: ColumnTypeEnum, displayType?: ColumnDisplayTypeEnum, ...args: any[]): this {\n const column = this._columns.find(col => property === col.property) ?? this.addColumn(property).withTitle(property);\n if (column) {\n column.asType(type, displayType, ...args);\n }\n return this;\n }\n\n /**\n * sets title to column with given property and returns this table\n * @param property column's property\n * @param title column's title\n */\n public withColumnTitle(property: string, title: string): this {\n const column = this._columns.find(col => property === col.property) ?? this.addColumn(property);\n column.withTitle(title, true);\n return this;\n }\n\n /**\n * generates columns defined on table based on data fetched from api\n * @param data data from api\n */\n public toTableDescriptorFromData(data: MediusQueryResult<any>): TableDescriptor<any> {\n const tableDescriptor = this.toTableDescriptor();\n\n if (data.pageData == null || data.pageData.length == 0) {\n return tableDescriptor;\n }\n\n const objectModel = data.pageData[0];\n const entries = Object.entries(objectModel)\n .filter(([key]) => !this._excludedColumns.includes(key))\n .filter(([, value]) => !Array.isArray(value)); //exclude arrays and sets\n\n for (const [key, value] of entries) {\n const metaColumn = this._columns.find(col => col.property === key);\n let column: ColumnDescriptor<any, any>;\n if (metaColumn) {\n if (!metaColumn.visibility) {\n continue;\n }\n column = metaColumn.toColumnDescriptor(tableDescriptor);\n tableDescriptor.addColumnDescriptor(column);\n } else {\n column = tableDescriptor.addColumn(key).withTitle(key);\n TableviewUtil.stringColumnConverter(column, value);\n }\n\n const elementOfSortColumns = this._sortColumns.includes(column.property);\n if (\n (this._sortColumnMode === TableDynamicColumnsModeEnum.EXCLUDE && !elementOfSortColumns) ||\n (this._sortColumnMode === TableDynamicColumnsModeEnum.INCLUDE_ONLY && elementOfSortColumns)\n ) {\n column.withSort();\n }\n\n const elementOfFilterColumns = this._filterColumns.includes(column.property);\n if (\n (this._filterColumnMode === TableDynamicColumnsModeEnum.EXCLUDE && !elementOfFilterColumns) ||\n (this._filterColumnMode === TableDynamicColumnsModeEnum.INCLUDE_ONLY && elementOfFilterColumns)\n ) {\n column.withFilter();\n }\n }\n\n return tableDescriptor;\n }\n\n /**\n * adds ColumnDynamicDescriptor to this table\n * @param property column's property\n */\n public override addColumn(property: string): ColumnDynamicDescriptor {\n const column = new ColumnDynamicDescriptor(this, property);\n this._columns.push(column);\n return column;\n }\n\n public override removeColumn(property: string): this {\n const column = this.columns.find(col => col.property === property) ?? this.addColumn(property);\n column.withVisibility(false);\n return this;\n }\n\n /**\n * creates deep copy of table dynamic descriptor\n */\n public override copy(): TableDynamicDescriptor {\n const descriptor = new TableDynamicDescriptor(this.model.idPropertyName, this.model.titlePropertyName);\n this.copyFieldsTo(descriptor);\n descriptor._columns = this.columns.map(c => c.copy());\n descriptor._excludedColumns = [...this._excludedColumns];\n descriptor._filterColumns = [...this._filterColumns];\n descriptor._sortColumns = [...this._sortColumns];\n descriptor._filterColumnMode = this._filterColumnMode;\n descriptor._sortColumnMode = this._sortColumnMode;\n return descriptor;\n }\n\n public toTableDescriptor(): TableDescriptor<any> {\n const descriptor = new TableDescriptor<any>({} as ClassType<any>, this.model.idPropertyName, this.model.titlePropertyName);\n this.copyFieldsTo(descriptor);\n return descriptor;\n }\n}\n","import {Type} from '@angular/core';\n\nimport {FieldValidatorFn} from '@ngx-formly/core/lib/models/config';\nimport {Observable} from 'rxjs';\n\nimport {MediusQueryParam} from '../../api/models';\nimport {ObjectSerializer} from '../../api/utils';\nimport {ILookupDataProvider} from '../../data-providers';\nimport {IColumnValueComponent, MngErrorInternal} from '../../models';\nimport {TableviewAttributeDef} from '../../models/tableview-attr.model';\nimport {ClassType, EnumConstantType, EnumType} from '../../types';\nimport {ModelUtil} from '../../utils';\nimport {TableviewUtil} from '../../utils/tableview.util';\nimport {\n AFieldDescriptor,\n EditorDescriptor,\n FieldInputDescriptor,\n FieldLookupDescriptor,\n FieldLookupEnumDescriptor,\n FieldManyEditorDescriptor,\n FieldManyToManyEditorDescriptor\n} from '../editor';\nimport {ModelDescriptor} from '../model.descriptor';\nimport {ColumnDescriptor, TableDescriptor, TableDynamicDescriptor} from '../table';\nimport {ColumnDisplayTypeEnum, ColumnTypeEnum, FieldInputTypeEnum, TableviewEditorTypeEnum} from '../types';\n\nexport class TableviewDescriptor<T> {\n private readonly _model: ModelDescriptor<T>;\n private _modelType: ClassType<T>;\n\n protected _table: TableDescriptor<T>;\n protected _detailsEditor: EditorDescriptor<T>;\n protected _addEditor: EditorDescriptor<T>;\n protected _editEditor: EditorDescriptor<T>;\n\n protected _tableTitle?: string;\n\n protected _isLocalized = false;\n protected _localizationLocaleProperty?: string;\n protected _localizationLocalizationProperty?: string;\n\n constructor(modelType: ClassType<T>, idProperty?: string, titleProperty?: string, i18nBaseKey?: string | ClassType<unknown>) {\n this._modelType = modelType;\n this._model = new ModelDescriptor<T>(modelType, idProperty, titleProperty, i18nBaseKey);\n this._table = new TableDescriptor<T>(modelType, idProperty, titleProperty, i18nBaseKey);\n this._detailsEditor = new EditorDescriptor<T>(modelType, idProperty, titleProperty, TableviewEditorTypeEnum.Details, i18nBaseKey);\n this._detailsEditor.withDisabled();\n this._addEditor = new EditorDescriptor<T>(modelType, idProperty, titleProperty, TableviewEditorTypeEnum.Add, i18nBaseKey);\n this._editEditor = new EditorDescriptor<T>(modelType, idProperty, titleProperty, TableviewEditorTypeEnum.Edit, i18nBaseKey);\n this._tableTitle = `${this._model.i18nBaseKey}.name`;\n }\n\n /**\n * generates descriptor from attribute definition of openaapi model\n * @param modelType class type\n * @param idProperty\n * @param titleProperty\n */\n public static from<T>(modelType: ClassType<T>, idProperty?: string, titleProperty?: string): TableviewDescriptor<T> {\n const descriptor = new TableviewDescriptor(modelType, idProperty, titleProperty);\n descriptor._table = TableDescriptor.from(modelType, idProperty, titleProperty);\n descriptor._editEditor = EditorDescriptor.from(modelType, idProperty, titleProperty, TableviewEditorTypeEnum.Edit);\n descriptor._detailsEditor = EditorDescriptor.from(modelType, idProperty, titleProperty, TableviewEditorTypeEnum.Details).withDisabled();\n descriptor._addEditor = EditorDescriptor.from(modelType, idProperty, titleProperty, TableviewEditorTypeEnum.Add);\n\n return descriptor;\n }\n\n /**\n * generates descriptor from given attribute definition\n * @param modelType class type\n * @param columnAttributes attribute definition to generate columns\n * @param fieldAttributes attribute definition to generate fields, if undefined columnDefinition is used, if null editors are not generated\n * @param idProperty\n * @param titleProperty\n */\n public static fromModelWithDefinition<T>(\n modelType: ClassType<T>,\n columnAttributes: TableviewAttributeDef[],\n fieldAttributes?: TableviewAttributeDef[] | null,\n idProperty?: string,\n titleProperty?: string\n ): TableviewDescriptor<T> {\n const descriptor = new TableviewDescriptor(modelType, idProperty, titleProperty);\n descriptor._table = TableDescriptor.fromModelWithAttributes(modelType, columnAttributes, idProperty, titleProperty);\n\n if (fieldAttributes !== null) {\n descriptor._editEditor = EditorDescriptor.fromModelWithAttributes(\n modelType,\n fieldAttributes ?? columnAttributes,\n idProperty,\n titleProperty,\n TableviewEditorTypeEnum.Edit\n );\n descriptor._detailsEditor = EditorDescriptor.fromModelWithAttributes(\n modelType,\n fieldAttributes ?? columnAttributes,\n idProperty,\n titleProperty,\n TableviewEditorTypeEnum.Details\n );\n descriptor._addEditor = EditorDescriptor.fromModelWithAttributes(\n modelType,\n fieldAttributes ?? columnAttributes,\n idProperty,\n titleProperty,\n TableviewEditorTypeEnum.Add\n );\n }\n\n return descriptor;\n }\n\n public get table() {\n return this._table;\n }\n\n public get detailsEditor() {\n return this._detailsEditor;\n }\n\n public get addEditor() {\n return this._addEditor;\n }\n\n public get editEditor() {\n return this._editEditor;\n }\n\n public get tableTitle() {\n return this._tableTitle;\n }\n\n public get model() {\n return this._model;\n }\n\n public isLocalized() {\n return this._isLocalized;\n }\n\n public withTableDescriptor(descriptor: TableDescriptor<T>): this {\n this._table = descriptor;\n return this;\n }\n\n public withEditorDescriptors(descriptor: EditorDescriptor<T>): this {\n this._detailsEditor = descriptor;\n this._editEditor = descriptor;\n this._addEditor = descriptor;\n return this;\n }\n\n public withDetailsDescriptor(descriptor: EditorDescriptor<T>): this {\n this._detailsEditor = descriptor;\n return this;\n }\n\n public withAddDescriptor(descriptor: EditorDescriptor<T>): this {\n this._addEditor = descriptor;\n return this;\n }\n\n public withEditDescriptor(descriptor: EditorDescriptor<T>): this {\n this._editEditor = descriptor;\n return this;\n }\n\n /**\n * creates new copy of editor descriptor and makes it disabled\n * usable in combination with this::withEditorDescriptors, where detailsDescriptor is made non disabled\n * @param type which editor type to set to disabled\n */\n public withDisabledEditorDescriptor(type = TableviewEditorTypeEnum.Details): this {\n if (type === TableviewEditorTypeEnum.Edit) {\n this._editEditor = this._editEditor.copy().withDisabled();\n } else if (type === TableviewEditorTypeEnum.Details) {\n this._detailsEditor = this._detailsEditor.copy().withDisabled();\n } else if (type === TableviewEditorTypeEnum.Add) {\n this._addEditor = this._addEditor.copy().withDisabled();\n }\n return this;\n }\n\n public withTableTitle(title: string): this {\n this._tableTitle = title;\n return this;\n }\n\n public withValidator(name: string, expression: FieldValidatorFn): this {\n this._detailsEditor.addValidation(name, expression);\n this._addEditor.addValidation(name, expression);\n this._editEditor.addValidation(name, expression);\n return this;\n }\n\n public addColumnDescriptor<CT>(column: ColumnDescriptor<CT, T>): TableDescriptor<T> {\n return this._table.addColumnDescriptor<CT>(column);\n }\n\n public addColumn(property: string): ColumnDescriptor<string, T> {\n return this._table.addColumn(property);\n }\n\n public removeColumn(property: string): void {\n this._table.removeColumn(property);\n }\n\n public getField(property: string, editorType: TableviewEditorTypeEnum): AFieldDescriptor<any, T> | null {\n switch (editorType) {\n case TableviewEditorTypeEnum.Edit:\n return this._editEditor.getField(property);\n case TableviewEditorTypeEnum.Add:\n return this._addEditor.getField(property);\n case TableviewEditorTypeEnum.Details:\n return this._detailsEditor.getField(property);\n case TableviewEditorTypeEnum.None:\n return null;\n }\n }\n\n public removeField(property: string): void {\n this._editEditor.removeField(property);\n this._addEditor.removeField(property);\n this._detailsEditor.removeField(property);\n }\n\n public addColumnNumber(property: string, displayFormat?: string): ColumnDescriptor<number, T> {\n return this._table.addColumnNumber(property, displayFormat);\n }\n\n public addColumnDate(property: string, displayFormat?: string): ColumnDescriptor<Date, T> {\n return this._table.addColumnDate(property, displayFormat);\n }\n\n public addColumnBoolean(property: string, yes?: string, no?: string, asIcon = false): ColumnDescriptor<boolean, T> {\n return this._table.addColumnBoolean(property, yes, no, asIcon);\n }\n\n public addColumnEnum(property: string, enumType: EnumType, nameAsValue = false, titlePath?: string | null): ColumnDescriptor<EnumType, T> {\n return this._table.addColumnEnum(property, enumType, nameAsValue, titlePath);\n }\n\n public addColumnCustomComponent(property: string, customComponentType: Type<IColumnValueComponent<T>>): ColumnDescriptor<any, T> {\n return this._table.addColumnCustomComponent(property, customComponentType);\n }\n\n public createTabGroup(name: string, title?: string): this {\n this._detailsEditor.createTabGroup(name, title);\n this._addEditor.createTabGroup(name, title);\n this._editEditor.createTabGroup(name, title);\n return this;\n }\n\n public createFieldGroup(name: string, title?: string): this {\n this._detailsEditor.createFieldGroup(name, title);\n this._addEditor.createFieldGroup(name, title);\n this._editEditor.createFieldGroup(name, title);\n return this;\n }\n\n public addFieldDescriptor<FT>(field: AFieldDescriptor<FT, T>): this {\n this._detailsEditor.addFieldDescriptor(field);\n this._addEditor.addFieldDescriptor(field);\n this._editEditor.addFieldDescriptor(field);\n return this;\n }\n\n public addField(property: string): FieldInputDescriptor<T> {\n const field = this._detailsEditor.addField(property);\n this._addEditor.addFieldDescriptor(field);\n this._editEditor.addFieldDescriptor(field);\n return field;\n }\n\n public addFieldLookup<FT>(property: string, modelType: ClassType<FT>): FieldLookupDescriptor<FT, T> {\n const field = this._detailsEditor.addFieldLookup(property, modelType);\n this._addEditor.addFieldDescriptor(field);\n this._editEditor.addFieldDescriptor(field);\n return field;\n }\n\n public addFieldLookupEnum(\n property: string,\n enumType: EnumType,\n options?: Array<EnumConstantType>,\n nameAsValue = false,\n optionsTitlePath?: string | null\n ): FieldLookupEnumDescriptor<T> {\n const field = this._detailsEditor.addFieldLookupEnum(property, enumType, options, nameAsValue, optionsTitlePath);\n this._addEditor.addFieldDescriptor(field);\n this._editEditor.addFieldDescriptor(field);\n return field;\n }\n\n public addFieldManyEditor<FT>(property: string, tableviewDescriptor: TableviewDescriptor<FT>): FieldManyEditorDescriptor<FT, T> {\n const field = this._detailsEditor.addFieldManyEditor(property, tableviewDescriptor);\n this._addEditor.addFieldDescriptor(field);\n this._editEditor.addFieldDescriptor(field);\n return field;\n }\n\n public addFieldManyToManyEditor<FT>(\n property: string,\n mainTableDescriptor: TableDescriptor<FT>,\n lookupTableDescriptor: TableDescriptor<FT>\n ): FieldManyToManyEditorDescriptor<FT, T> {\n const field = this._detailsEditor.addFieldManyToManyEditor(property, mainTableDescriptor, lookupTableDescriptor);\n this._addEditor.addFieldDescriptor(field);\n this._editEditor.addFieldDescriptor(field);\n return field;\n }\n\n public copy(): TableviewDescriptor<T> {\n const tableview = new TableviewDescriptor(this._model.type, this._model.idPropertyName, this._model.titlePropertyName);\n tableview._table = this._table.copy();\n tableview._detailsEditor = this._detailsEditor.copy();\n tableview._addEditor = this._addEditor.copy();\n tableview._editEditor = this._editEditor.copy();\n tableview._tableTitle = this._tableTitle;\n tableview._isLocalized = this._isLocalized;\n tableview._localizationLocaleProperty = this._localizationLocaleProperty;\n tableview._localizationLocalizationProperty = this._localizationLocalizationProperty;\n return tableview;\n }\n\n /**\n * creates column and field with custom type, for example currency\n * if field exists, it is replaced\n * DO NOT USE WITH TYPES WHERE ARGS ARE REQUIRED - ERROR WILL BE THROWN\n * for enum use withEnumType\n * for custom class use withClassType\n * @param property name of field\n * @param columnType required column type\n * @param fieldType optional, if not provided it is converted from column type\n */\n public withModifiedType(property: string, columnType: ColumnTypeEnum, fieldType?: FieldInputTypeEnum, columnDisplayType?: ColumnDisplayTypeEnum): this {\n if (columnType === ColumnTypeEnum.Enum) {\n throw new MngErrorInternal('Do not use with types where args are required', 'TableViewDescriptor error').consoleError();\n }\n\n const attributeDef = TableviewUtil.getAttributeDefMap(this._modelType).find(atribute => atribute.name === property);\n\n if (attributeDef != null) {\n fieldType ??= TableviewUtil.toFieldInputTypeFromColumnType(columnType, columnDisplayType);\n attributeDef.fieldType = fieldType;\n\n this._table.withColumnModifiedType(property, columnType, columnDisplayType);\n this._editEditor.withFieldModifiedType(property, fieldType);\n this._addEditor.withFieldModifiedType(property, fieldType);\n this._detailsEditor.withFieldModifiedType(property, fieldType);\n }\n\n return this;\n }\n\n /**\n * creates column with enum type\n * if fields exists, it is replaced\n * @param property property name\n * @param enumType type of enum\n * @param fieldType type of field, optional, default is Text\n */\n public withModifiedEnum(property: string, enumType?: EnumType, fieldType?: FieldInputTypeEnum): this {\n const attributeDef = TableviewUtil.getAttributeDefMap(this._modelType).find(atribute => atribute.name === property);\n\n if (attributeDef != null) {\n attributeDef.fieldType = fieldType ?? FieldInputTypeEnum.Text;\n\n this._table.withColumnModifiedEnum(property, enumType);\n this._editEditor.withFieldModifiedEnum(property, enumType);\n this._detailsEditor.withFieldModifiedEnum(property, enumType);\n this._addEditor.withFieldModifiedEnum(property, enumType);\n }\n\n return this;\n }\n\n /**\n * generates column with custom class type\n * field is generated only if lookupProvider is provided\n * @param property property name\n * @param modelType class type of object\n * @param titleProperty\n * @param lookupProvider\n * @param itemsLabelProperty\n * @param filterProperty\n */\n public withModifiedLookup<MT>(\n property: string,\n modelType?: ClassType<MT>,\n lookupProvider?: ILookupDataProvider<MT, any>,\n titleProperty?: string,\n itemsLabelProperty?: string,\n filterProperty?: string\n ): this {\n const attributeDef = TableviewUtil.getAttributeDefMap(this._modelType).find(atribute => atribute.name === property);\n\n if (attributeDef != null) {\n modelType ??= attributeDef.classType ?? ObjectSerializer.get().findType(attributeDef.type);\n titleProperty ??= ModelUtil.findTitleAttribute(modelType!) ?? undefined;\n itemsLabelProperty ??= titleProperty;\n attributeDef.columnType = ColumnTypeEnum.String;\n attributeDef.fieldType = FieldInputTypeEnum.Text;\n\n if (lookupProvider != null) {\n this._table.withColumnModifiedLookup(property, lookupProvider, itemsLabelProperty, filterProperty);\n this._addEditor.withFieldModifiedLookup(property, modelType!, lookupProvider, itemsLabelProperty);\n this._detailsEditor.withFieldModifiedLookup(property, modelType!, lookupProvider, itemsLabelProperty);\n this._editEditor.withFieldModifiedLookup(property, modelType!, lookupProvider, itemsLabelProperty);\n } else {\n const column = this._table.getColumn(property) ?? this.addColumn(property);\n column.withObjectProperty(modelType!, titleProperty);\n }\n }\n\n return this;\n }\n\n public localized<S>(\n localizationProperty?: string,\n localeProperty?: string,\n localizationBeanType?: ClassType<any>,\n localeLookup?: (queryParam?: MediusQueryParam, service?: S, search?: string) => Observable<Array<string>>\n ): this {\n this._localizationLocalizationProperty = localizationProperty;\n this._localizationLocaleProperty = localeProperty;\n this._isLocalized = true;\n\n if (localeProperty) {\n this._table.withLocalizationLocaleProperty(localeProperty);\n }\n\n this.detailsEditor.localized<S>(localizationProperty, localeProperty, localizationBeanType, localeLookup);\n this.addEditor.localized<S>(localizationProperty, localeProperty, localizationBeanType, localeLookup);\n this.editEditor.localized<S>(localizationProperty, localeProperty, localizationBeanType, localeLookup);\n\n return this;\n }\n}\n\nexport class TableviewDynamicDescriptor extends TableviewDescriptor<any> {\n protected override _table: TableDynamicDescriptor;\n\n constructor(idProperty?: string, titleProperty?: string) {\n super({} as ClassType<any>, idProperty, titleProperty);\n this._table = new TableDynamicDescriptor(idProperty, titleProperty);\n super._tableTitle = undefined;\n }\n\n public override get table() {\n return this._table;\n }\n\n /**\n * sets custom table descriptor\n * @param descriptor\n */\n public override withTableDescriptor(descriptor: TableDynamicDescriptor): this {\n this._table = descriptor;\n return this;\n }\n\n /**\n * sets visibility hidden state to column with given property\n * equals to be removing in auto and base tableview descriptor\n * * @param property column's property\n */\n public override removeColumn(property: string): this {\n this._table.removeColumn(property);\n return this;\n }\n\n /**\n * creates depp copy of tableview object and its children\n */\n public override copy(): TableviewDynamicDescriptor {\n const descriptor = new TableviewDynamicDescriptor(this.model.idPropertyName, this.model.titlePropertyName);\n descriptor._table = this._table.copy();\n descriptor._tableTitle = this._tableTitle;\n return descriptor;\n }\n}\n","import {FormlyFieldConfig} from '@ngx-formly/core';\nimport {Observable} from 'rxjs';\n\nimport {MngFieldAsyncValidator, MngFieldValidationMessage, MngFieldValidator} from '../../types';\n\nexport class FieldValidationDescriptor {\n private readonly _name: string;\n private readonly _validator?: MngFieldValidator | MngFieldAsyncValidator;\n private readonly _message?: MngFieldValidationMessage;\n private readonly _options?: {errorPath: string};\n\n constructor(\n name: string,\n validator?: MngFieldValidator | MngFieldAsyncValidator,\n message?: string | ((error: any, field: FormlyFieldConfig) => string | Observable<string>),\n options?: {errorPath: string}\n ) {\n this._name = name;\n this._validator = validator;\n this._message = message;\n this._options = options;\n }\n\n public get name(): string {\n return this._name;\n }\n\n public get validator() {\n return this._validator;\n }\n\n public get message() {\n return this._message;\n }\n\n public get options() {\n return this._options;\n }\n\n public copy(): FieldValidationDescriptor {\n const opt = this._options ? {...this._options} : undefined;\n return new FieldValidationDescriptor(this._name, this._validator, this._message, opt);\n }\n}\n","import {Type} from '@angular/core';\nimport {AbstractControl, Validators} from '@angular/forms';\n\nimport {FormlyFieldConfig} from '@ngx-formly/core';\nimport {Observable, Subject, of} from 'rxjs';\n\nimport {MediusQueryParam, MediusQueryResult} from '../../api/models';\nimport {AMngFormlyCustomFieldComponent} from '../../components/form/formly/fields/';\nimport {MngFormlyFieldConfig, MngFormlyHookFn} from '../../components/form/formly/models';\nimport {MngFormFieldEvent, MngFormFieldEventData, MngFormFieldEventTypeEnum} from '../../components/form/models';\nimport {FieldActionContext} from '../../components/form/models/field-action-context.model';\nimport {ILookupDataProvider, ITableDataProvider, LookupDataProvider, TableviewDataProvider} from '../../data-providers';\nimport {EnumValue} from '../../models';\nimport {MngCommonsService} from '../../services';\nimport {ButtonStyleBuilder} from '../../styles';\nimport {StyleLevelEnum} from '../../styles/models';\nimport {ClassType, EnumConstantType, EnumType, MngFieldAsyncValidator, MngFieldValidationMessage, MngFieldValidator} from '../../types';\nimport {EnumUtil, I18nUtils, ModelUtil, TypeUtil} from '../../utils';\nimport {maxDateValidator, minDateValidator} from '../../validators';\nimport {ActionButtonDescriptor, ActionDescriptor} from '../action';\nimport {FieldConfig, FieldLookupConfig, ILookupDescriptor} from '../interfaces';\nimport {TableDescriptor} from '../table';\nimport {TableviewDescriptor} from '../tableview';\nimport {\n FieldGroupTypeEnum,\n FieldInputTypeEnum,\n FieldLookupTypeEnum,\n FieldManyEditorActionEnum,\n FieldManyEditorTypeEnum,\n FieldManyToManyEditorActionEnum,\n FieldManyToManyEditorTypeEnum,\n FieldSizeEnum\n} from '../types';\nimport {EditorDescriptor} from './editor.descriptor';\nimport {FieldValidationDescriptor} from './field-validation.descriptor';\n\nexport abstract class AGenericFieldDescriptor<ET> {\n protected readonly _editor: EditorDescriptor<ET>;\n protected _config: FieldConfig = {};\n\n protected constructor(editor: EditorDescriptor<ET>) {\n this._editor = editor;\n }\n\n public get editor() {\n return this._editor;\n }\n\n public get config() {\n return this._config;\n }\n\n public withConfig(config: FieldConfig): this {\n this._config = config;\n return this;\n }\n}\n\nexport abstract class AFieldDescriptor<T, ET, VT = T> extends AGenericFieldDescriptor<ET> {\n protected readonly _property: string;\n protected _label?: string | null;\n\n protected _placeholder?: string;\n protected _helpText?: string;\n\n protected _required = false;\n protected _requiredHideLabelMarker = false;\n protected _disabled = false;\n protected _defaultValue?: VT;\n protected _getter?: (item: ET) => VT;\n protected _setter?: (item: ET, value: VT) => void;\n protected _validations: Array<FieldValidationDescriptor> = [];\n protected _asyncValidations: Array<FieldValidationDescriptor> = [];\n protected _requiredExpression?: string | ((field?: FormlyFieldConfig) => boolean) | Observable<boolean>;\n protected _disabledExpression?: string | ((field?: FormlyFieldConfig) => boolean) | Observable<boolean>;\n protected _hiddenExpression?: string | ((field?: FormlyFieldConfig) => boolean) | Observable<boolean>;\n protected _updateOn: 'change' | 'blur' | 'submit' = 'change';\n\n protected _onInit?: MngFormlyHookFn;\n protected _onChanges?: MngFormlyHookFn;\n protected _afterContentInit?: MngFormlyHookFn;\n protected _afterViewInit?: MngFormlyHookFn;\n protected _onDestroy?: MngFormlyHookFn;\n\n protected _onValueChange?: (field: MngFormlyFieldConfig, value: any) => void;\n\n protected _className = '';\n protected _fieldClassName?: string;\n protected _labelClassName = '';\n protected _inputClassName = '';\n protected _size: FieldSizeEnum = FieldSizeEnum.Normal;\n\n // localization\n protected _isLocalized = false;\n protected _localizationTableview?: TableviewDescriptor<any>;\n\n protected readonly _eventsSubject = new Subject<MngFormFieldEvent<T, ET>>();\n\n protected constructor(editor: EditorDescriptor<ET>, property: string) {\n super(editor);\n this._property = property;\n this._label = I18nUtils.Type.getPropertyKey(this._editor.model.i18nBaseKey, property);\n }\n\n public get property() {\n return this._property;\n }\n\n public get label() {\n return this._label;\n }\n\n public get placeholder() {\n return this._placeholder;\n }\n\n public get helpText() {\n return this._helpText;\n }\n\n public get required() {\n return this._required;\n }\n\n public get requiredHideLabelMarker() {\n return this._requiredHideLabelMarker;\n }\n\n public get disabled() {\n return this._disabled;\n }\n\n public get defaultValue() {\n return this._defaultValue;\n }\n\n public get getter() {\n return this._getter;\n }\n\n public get setter() {\n return this._setter;\n }\n\n public get validations() {\n return this._validations;\n }\n\n public get asyncValidations() {\n return this._asyncValidations;\n }\n\n public get requiredExpression() {\n return this._requiredExpression;\n }\n\n public get disabledExpression() {\n return this._disabledExpression;\n }\n\n public get hiddenExpression() {\n return this._hiddenExpression;\n }\n\n public get updateOn() {\n return this._updateOn;\n }\n\n public get onInit() {\n return this._onInit;\n }\n\n public get onChanges() {\n return this._onChanges;\n }\n\n public get afterContentInit() {\n return this._afterContentInit;\n }\n\n public get afterViewInit() {\n return this._afterViewInit;\n }\n\n public get onDestroy() {\n return this._onDestroy;\n }\n\n public get onValueChange() {\n return this._onValueChange;\n }\n\n public get className() {\n return this._className;\n }\n\n public get fieldClassName() {\n return this._fieldClassName;\n }\n\n public get labelClassName() {\n return this._labelClassName;\n }\n\n public get inputClassName() {\n return this._inputClassName;\n }\n\n public get size() {\n return this._size;\n }\n\n public get localizationTableview() {\n return this._localizationTableview;\n }\n\n public get isSizeSmall() {\n return this._size === FieldSizeEnum.Small;\n }\n\n public get isSizeLarge() {\n return this._size === FieldSizeEnum.Large;\n }\n\n public get isLocalized() {\n return this._isLocalized;\n }\n\n public abstract copy(): AFieldDescriptor<T, ET, VT>;\n\n public withLabel(label: string | null): this {\n this._label = label;\n return this;\n }\n\n public withPlaceholder(placeholder: string): this {\n this._placeholder = placeholder;\n return this;\n }\n\n public withHelpText(helpText: string): this {\n this._helpText = helpText;\n return this;\n }\n\n public withRequired(required = true, requiredExpression?: string | ((field?: FormlyFieldConfig) => boolean) | Observable<boolean>, hideLabelMarker = false): this {\n this._required = required;\n if (requiredExpression) {\n this._requiredExpression = requiredExpression;\n }\n this._requiredHideLabelMarker = hideLabelMarker;\n return this;\n }\n\n public withDisabled(disabled = true, disabledExpression?: string | ((field?: FormlyFieldConfig) => boolean) | Observable<boolean>): this {\n this._disabled = disabled;\n if (disabledExpression) {\n this._disabledExpression = disabledExpression;\n }\n return this;\n }\n\n public withHidden(hiddenExpression: string | ((field?: FormlyFieldConfig) => boolean) | Observable<boolean>): this {\n this._hiddenExpression = hiddenExpression;\n return this;\n }\n\n public withUpdateOn(updateOn: 'change' | 'blur' | 'submit'): this {\n this._updateOn = updateOn;\n return this;\n }\n\n public withOnInit(onInit?: MngFormlyHookFn): this {\n this._onInit = onInit;\n return this;\n }\n\n public withOnChanges(onChanges?: MngFormlyHookFn): this {\n this._onChanges = onChanges;\n return this;\n }\n\n public withAfterContentInit(afterContentInit?: MngFormlyHookFn): this {\n this._afterContentInit = afterContentInit;\n return this;\n }\n\n public withAfterViewInit(afterViewInit?: MngFormlyHookFn): this {\n this._afterViewInit = afterViewInit;\n return this;\n }\n\n public withOnDestroy(onDestroy?: MngFormlyHookFn): this {\n this._onDestroy = onDestroy;\n return this;\n }\n\n public withOnValueChange(onValueChange?: (field: MngFormlyFieldConfig, value: any) => void): this {\n this._onValueChange = onValueChange;\n return this;\n }\n\n public withDefaultValue(defaultValue: VT): this {\n this._defaultValue = defaultValue;\n return this;\n }\n\n public withGetter(getter: (item: ET) => VT): this {\n this._getter = getter;\n return this;\n }\n\n public withSetter(setter: (item: ET, value: VT) => void): this {\n this._setter = setter;\n return this;\n }\n\n public withValidation(name: string, validator?: MngFieldValidator, message?: MngFieldValidationMessage): this {\n this._validations.push(new FieldValidationDescriptor(name, validator, message));\n return this;\n }\n\n public withAsyncValidation(name: string, asyncValidator?: MngFieldAsyncValidator, message?: MngFieldValidationMessage): this {\n this._asyncValidations.push(new FieldValidationDescriptor(name, asyncValidator, message));\n return this;\n }\n\n public withClassName(className: string, labelClassName = '', inputClassName = '', fieldClassName?: string): this {\n this._className = className;\n this._labelClassName = labelClassName;\n this._inputClassName = inputClassName;\n this._fieldClassName = fieldClassName;\n return this;\n }\n\n public withSize(size: FieldSizeEnum = FieldSizeEnum.Normal): this {\n this._size = size;\n return this;\n }\n\n /**\n * This method adds an icon with text Show all translations above the field and after clicking on it, it displays a new dialog with tableview.\n * This new table view shows all available translations for specific property and allows editing it.\n * @param tableview with lookup provider for locales\n */\n public localized(tableview?: TableviewDescriptor<T>): this {\n if (!this.editor.isLocalized) {\n this.editor.localized();\n }\n this._isLocalized = true;\n if (tableview) {\n this._localizationTableview = tableview;\n } else {\n const localizationTableviewDescriptor = new TableviewDescriptor(this._editor.localizationBeanType!);\n localizationTableviewDescriptor.addColumn(this._editor.localizationLocaleProperty!);\n localizationTableviewDescriptor.addColumn(this.property);\n\n localizationTableviewDescriptor\n .addFieldLookup(this._editor.localizationLocaleProperty!, String)\n .withLookup((qp, service) => of(service!.appDataLanguages), MngCommonsService);\n if (this._editor.localeLookup) {\n localizationTableviewDescriptor.addFieldLookup(this._editor.localizationLocaleProperty!, String).withLookup(() => this._editor.localeLookup!());\n }\n localizationTableviewDescriptor.addField(this.property);\n\n // this is used in table.component to mark row with default data language\n localizationTableviewDescriptor.table.withLocalizationLocaleProperty(this._editor.localizationLocaleProperty!);\n\n this._localizationTableview = new TableviewDescriptor(this._editor.model.type);\n this._localizationTableview.addFieldManyEditor(this._editor.localizationLocalizationProperty!, localizationTableviewDescriptor);\n }\n return this;\n }\n\n public nextEvent(type: MngFormFieldEventTypeEnum, cmpType: Type<any>, cmpInstance: any, data?: MngFormFieldEventData<T, ET>) {\n this._eventsSubject.next(new MngFormFieldEvent(type, cmpType, cmpInstance, data));\n }\n\n public get events$() {\n return this._eventsSubject.asObservable();\n }\n\n protected copyFieldsTo(obj: AFieldDescriptor<T, ET, VT>) {\n obj._label = this._label;\n obj._placeholder = this._placeholder;\n obj._helpText = this._helpText;\n obj._required = this._required;\n obj._disabled = this._disabled;\n obj._defaultValue = this._defaultValue;\n obj._requiredExpression = this._requiredExpression;\n obj._hiddenExpression = this._hiddenExpression;\n obj._updateOn = this._updateOn;\n obj._onInit = this._onInit;\n obj._onChanges = this._onChanges;\n obj._onDestroy = this._onDestroy;\n obj._afterContentInit = this._afterContentInit;\n obj._afterViewInit = this._afterViewInit;\n obj._onValueChange = this._onValueChange;\n obj._disabledExpression = this._disabledExpression;\n obj._className = this._className;\n obj._size = this.size;\n obj._getter = this._getter;\n obj._setter = this._setter;\n obj._isLocalized = this._isLocalized;\n obj._localizationTableview = this._localizationTableview?.copy();\n obj._validations = this._validations.map(value => value.copy());\n obj._asyncValidations = this._asyncValidations.map(value => value.copy());\n }\n}\n\nexport class FieldInputDescriptor<ET> extends AFieldDescriptor<string | string[] | number | boolean | Date | File | File[], ET> {\n private _fieldType: FieldInputTypeEnum = FieldInputTypeEnum.Text;\n\n // textarea specific properties\n private _rows?: number;\n\n // number specific properties\n private _numberMin?: number;\n private _numberMax?: number;\n private _numberStep?: number;\n private _numberAutoCorrect = true;\n private _numberMinFractionDigits?: number;\n private _numberMaxFractionDigits?: number;\n private _numberUseGrouping = true;\n private _locale?: string;\n\n // currency specific properties\n private _currency?: string;\n private _currencyDisplay: 'symbol' | 'code' | 'name' = 'symbol';\n private _currencyFromProperty?: string;\n\n // radio specific properties\n private _radioOptions: Array<EnumValue<string | number | boolean | Date>> = [];\n\n // datepicker specific properties\n private _datePickerFormat?: string;\n private _datePickerMin?: Date;\n private _datePickerMax?: Date;\n private _datePickerShowTime = false;\n private _datePickerShowSeconds = true;\n\n // input specific properties\n private _maxLength?: number;\n private _minLength?: number;\n private _pattern?: string | RegExp;\n\n // mask specific properties\n private _mask?: string;\n private _slotChar?: string;\n\n // file specific properties\n private _fileMultiple = false;\n private _fileMaxFileSize = 500000;\n private _fileAccept?: string;\n private _fileOnSelectHandler?: (file: File[] | null, control: AbstractControl) => void;\n\n // image specific properties\n private _imagePreview = true;\n private _imageUrlInputHiddenOnDisabled = false;\n\n // custom component properties\n private _customComponentName?: string;\n private _customComponentType?: Type<AMngFormlyCustomFieldComponent>;\n private _customComponentWrappers: string[] = [];\n\n constructor(editor: EditorDescriptor<ET>, property: string) {\n super(editor, property);\n }\n\n /**\n * converts field to given type with additional arguments\n * @param fieldType field type enum\n * @param args any additional arguments for field (optional)\n */\n public asType(fieldType: FieldInputTypeEnum, ...args: any[]): this {\n switch (fieldType) {\n case FieldInputTypeEnum.Hidden:\n return this.asHidden();\n case FieldInputTypeEnum.Label:\n return this.asLabel();\n case FieldInputTypeEnum.Textarea:\n return this.asTextarea(...args);\n case FieldInputTypeEnum.Number:\n return this.asNumber();\n case FieldInputTypeEnum.Currency:\n return this.asCurrency(...args);\n case FieldInputTypeEnum.Switch:\n return this.asSwitch();\n case FieldInputTypeEnum.Radio:\n return this.asRadio(args[0], args[1]);\n case FieldInputTypeEnum.Datepicker:\n return this.asDatePicker(...args);\n case FieldInputTypeEnum.Mask:\n return this.asMask(args[0], args[1]);\n case FieldInputTypeEnum.File:\n return this.asFile(...args);\n case FieldInputTypeEnum.ImageFile:\n return this.asImageFile();\n case FieldInputTypeEnum.ImageUrl:\n return this.asImageUrl();\n case FieldInputTypeEnum.Custom:\n return this.asCustomComponent(args[0]);\n case FieldInputTypeEnum.Text:\n return this.asText();\n }\n }\n\n public get fieldType() {\n return this._fieldType;\n }\n\n public get rows() {\n return this._rows;\n }\n\n public get numberMin() {\n return this._numberMin;\n }\n\n public get numberMax() {\n return this._numberMax;\n }\n\n public get numberStep() {\n return this._numberStep;\n }\n\n public get numberAutoCorrect() {\n return this._numberAutoCorrect;\n }\n\n public get numberMinFractionDigits() {\n return this._numberMinFractionDigits;\n }\n\n public get numberMaxFractionDigits() {\n return this._numberMaxFractionDigits;\n }\n\n public get numberUseGrouping() {\n return this._numberUseGrouping;\n }\n\n public get radioOptions() {\n return this._radioOptions;\n }\n\n public get datePickerFormat() {\n return this._datePickerFormat;\n }\n\n public get datePickerMin() {\n return this._datePickerMin;\n }\n\n public get datePickerMax() {\n return this._datePickerMax;\n }\n\n public get datePickerShowTime() {\n return this._datePickerShowTime;\n }\n\n public get datePickerShowSeconds() {\n return this._datePickerShowSeconds;\n }\n\n public get maxLength() {\n return this._maxLength;\n }\n\n public get minLength() {\n return this._minLength;\n }\n\n public get pattern() {\n return this._pattern;\n }\n\n public get mask() {\n return this._mask;\n }\n\n public get slotChar() {\n return this._slotChar;\n }\n\n public get fileMultiple() {\n return this._fileMultiple;\n }\n\n public get fileMaxFileSize() {\n return this._fileMaxFileSize;\n }\n\n public get fileAccept() {\n return this._fileAccept;\n }\n\n public get fileOnSelectHandler() {\n return this._fileOnSelectHandler;\n }\n\n public get imagePreview() {\n return this._imagePreview;\n }\n\n public get imageUrlInputVisibleOnDisabled() {\n return this._imageUrlInputHiddenOnDisabled;\n }\n\n public get customComponentName() {\n return this._customComponentName;\n }\n\n public get customComponentType() {\n return this._customComponentType;\n }\n\n public get customComponentWrappers() {\n return this._customComponentWrappers;\n }\n\n public get locale() {\n return this._locale;\n }\n\n public get currency() {\n return this._currency;\n }\n\n public get currencyFromProperty() {\n return this._currencyFromProperty;\n }\n\n public get currencyDisplay() {\n return this._currencyDisplay;\n }\n\n public asHidden(): this {\n this._fieldType = FieldInputTypeEnum.Hidden;\n return this;\n }\n\n public asLabel(): this {\n this._fieldType = FieldInputTypeEnum.Label;\n return this;\n }\n\n public asText(): this {\n this._fieldType = FieldInputTypeEnum.Text;\n return this;\n }\n\n public asTextarea(rows = 3): this {\n this._fieldType = FieldInputTypeEnum.Textarea;\n this._rows = rows;\n return this;\n }\n\n public asNumber(): this {\n this._fieldType = FieldInputTypeEnum.Number;\n return this;\n }\n\n public asCurrency(currencyFromProperty?: string, currency?: string, currencyDisplay?: 'symbol' | 'code' | 'name'): this {\n this._fieldType = FieldInputTypeEnum.Currency;\n this._currencyFromProperty = currencyFromProperty;\n this._currency = currency ?? this._currency;\n this._currencyDisplay = currencyDisplay ?? this._currencyDisplay;\n return this.withNumberFractions(2, 2);\n }\n\n public asSwitch(): this {\n this._fieldType = FieldInputTypeEnum.Switch;\n return this;\n }\n\n public asRadio(options: Array<string | number>, optionsTitlePath?: string): this {\n this._fieldType = FieldInputTypeEnum.Radio;\n this._radioOptions = options.map(o => <EnumValue<string | number>>{value: o, title: `${optionsTitlePath ? `${optionsTitlePath}.` : ''}${o}`});\n return this;\n }\n\n public asRadioFromEnum(enumType: EnumType, optionsTitlePath?: string | null, values?: Array<EnumConstantType>, nameAsValue = false): this {\n this._fieldType = FieldInputTypeEnum.Radio;\n if (typeof optionsTitlePath === 'undefined') {\n optionsTitlePath = TypeUtil.findEnumName(enumType);\n }\n this._radioOptions = Array.isArray(values)\n ? EnumUtil.fromValuesAsEnumValueArray(enumType, values, nameAsValue, optionsTitlePath ?? undefined)\n : EnumUtil.fromConstantsAsEnumValueArray(enumType, nameAsValue, optionsTitlePath ?? undefined);\n return this;\n }\n\n public asDatePicker(format?: string, min?: Date, max?: Date, showTime?: boolean, showSeconds?: boolean): this {\n this._fieldType = FieldInputTypeEnum.Datepicker;\n this._datePickerFormat = format;\n this._datePickerMin = min;\n this._datePickerMax = max;\n this._datePickerShowTime = showTime ?? false;\n this._datePickerShowSeconds = showSeconds ?? true;\n\n if (min != undefined) {\n this.withValidation('minDate', minDateValidator(min));\n }\n if (max !== undefined) {\n this.withValidation('maxDate', maxDateValidator(max));\n }\n\n return this;\n }\n\n public asMask(mask: string, slotChar: string): this {\n this._fieldType = FieldInputTypeEnum.Mask;\n this._mask = mask;\n this._slotChar = slotChar;\n return this;\n }\n\n public asFile(multiple = false, maxFileSize = 500000, accept?: string): this {\n this._fieldType = FieldInputTypeEnum.File;\n this._fileMultiple = multiple;\n this._fileMaxFileSize = maxFileSize;\n this._fileAccept = accept;\n return this;\n }\n\n public asImageFile(multiple = false, maxFileSize = 500000, accept = 'image/*'): this {\n this.asFile(multiple, maxFileSize, accept);\n this._fieldType = FieldInputTypeEnum.ImageFile;\n return this;\n }\n\n public asImageUrl(multiple = false, preview = true, inputVisibleOnDisabled = true): this {\n this._fieldType = FieldInputTypeEnum.ImageUrl;\n this._fileMultiple = multiple;\n this._imagePreview = preview;\n this._imageUrlInputHiddenOnDisabled = inputVisibleOnDisabled;\n return this;\n }\n\n public asCustomComponent(customComponent: string | Type<AMngFormlyCustomFieldComponent>, useWrappers?: string[]): this {\n this._fieldType = FieldInputTypeEnum.Custom;\n if (typeof customComponent === 'string') {\n this._customComponentName = customComponent;\n } else {\n this._customComponentType = customComponent;\n }\n if (useWrappers) {\n this._customComponentWrappers = useWrappers;\n }\n return this;\n }\n\n public withNumberValidation(min?: number, max?: number, step?: number, autoCorrect = true): this {\n this._numberStep = step ?? this._numberStep;\n this._numberAutoCorrect = autoCorrect;\n this._numberMin = min ?? this._numberMin ?? Number.MIN_SAFE_INTEGER;\n this._numberMax = max ?? this._numberMax ?? Number.MAX_SAFE_INTEGER;\n return this;\n }\n\n public withLocale(locale: string): this {\n this._locale = locale;\n return this;\n }\n\n public withNumberFractions(min?: number, max?: number) {\n this._numberMinFractionDigits = min;\n this._numberMaxFractionDigits = max;\n return this;\n }\n\n public withNumberGrouping(useGrouping = true): this {\n this._numberUseGrouping = useGrouping;\n return this;\n }\n\n public withTextValidation(minLength?: number, maxLength?: number, pattern?: string | RegExp): this {\n this._minLength = minLength;\n this._maxLength = maxLength;\n this._pattern = pattern;\n return this;\n }\n\n public withTextValidationEmail(): this {\n if (this.fieldType === FieldInputTypeEnum.Text) {\n this.withValidation('email', Validators.email);\n }\n return this;\n }\n\n public withFileOnSelectHandler(fn: (file: File[] | null, control: AbstractControl) => void) {\n this._fileOnSelectHandler = fn;\n }\n\n public copy(): FieldInputDescriptor<ET> {\n const field = new FieldInputDescriptor<ET>(this._editor, this._property);\n this.copyFieldsTo(field);\n field._fieldType = this._fieldType;\n field._rows = this._rows;\n field._numberMin = this._numberMin;\n field._numberMax = this._numberMax;\n field._numberStep = this._numberStep;\n field._numberAutoCorrect = this._numberAutoCorrect;\n field._numberMinFractionDigits = this._numberMinFractionDigits;\n field._numberMaxFractionDigits = this._numberMaxFractionDigits;\n field._numberUseGrouping = this._numberUseGrouping;\n field._radioOptions = [...this._radioOptions];\n field._datePickerFormat = this._datePickerFormat;\n field._datePickerMin = this._datePickerMin;\n field._datePickerMax = this._datePickerMax;\n field._datePickerShowTime = this._datePickerShowTime;\n field._datePickerShowSeconds = this._datePickerShowSeconds;\n field._maxLength = this._maxLength;\n field._minLength = this._minLength;\n field._pattern = this._pattern;\n field._mask = this._mask;\n field._slotChar = this._slotChar;\n field._fileMultiple = this._fileMultiple;\n field._fileMaxFileSize = this._fileMaxFileSize;\n field._fileAccept = this._fileAccept;\n field._fileOnSelectHandler = this._fileOnSelectHandler;\n field._imagePreview = this._imagePreview;\n field._imageUrlInputHiddenOnDisabled = this._imageUrlInputHiddenOnDisabled;\n field._customComponentName = this._customComponentName;\n field._customComponentType = this._customComponentType;\n field._customComponentWrappers = this._customComponentWrappers;\n field._locale = this._locale;\n field._currency = this._currency;\n field._currencyDisplay = this._currencyDisplay;\n field._currencyFromProperty = this._currencyFromProperty;\n return field;\n }\n}\n\nexport class FieldActionDescriptor<ET> extends AFieldDescriptor<void, ET> {\n protected readonly _fieldActionName: string;\n protected readonly _fieldActionNameLong: string;\n\n protected _button = new ActionButtonDescriptor();\n\n protected _runFunction?: (ctx: FieldActionContext<ET>) => void;\n\n constructor(editor: EditorDescriptor<ET>, property: string) {\n super(editor, property);\n this._fieldActionName = property;\n let displayName = property;\n if (this._editor.model) displayName = `${this._editor.model.typeName}.${displayName}`;\n this._fieldActionNameLong = displayName;\n }\n\n public get button() {\n return this._button;\n }\n\n public get runFunction() {\n return this._runFunction;\n }\n\n public withButtonDescriptor(button: ActionButtonDescriptor): this {\n this._button = button;\n return this;\n }\n\n public withButton(label?: string | null, icon: string | null = null, styleLevel = StyleLevelEnum.Default, styleText = false): this {\n this._button = new ActionButtonDescriptor().withLabel(label).withIcon(icon).withStyleClass(new ButtonStyleBuilder(styleLevel).withTextButton(styleText));\n return this;\n }\n\n public withRunFunction(fn: (ctx: FieldActionContext<ET>) => void): this {\n this._runFunction = fn;\n return this;\n }\n\n public copy(): FieldActionDescriptor<ET> {\n const field = new FieldActionDescriptor<ET>(this._editor, this._property);\n this.copyFieldsTo(field);\n field._button = this._button.copy();\n field._runFunction = this._runFunction?.bind(field);\n return field;\n }\n}\n\nexport class FieldLookupDescriptor<T, ET> extends AFieldDescriptor<T, ET> implements ILookupDescriptor<T> {\n protected readonly _modelType: ClassType<T> | null;\n protected _lookupType: FieldLookupTypeEnum = FieldLookupTypeEnum.Dropdown;\n protected _itemsLabelProperty?: string;\n protected _itemsLabelTranslate = false;\n protected _itemsValueProperty?: string;\n protected _itemsDisabledProperty?: string;\n protected _dataKeyProperty?: string;\n protected _dataProvider?: ILookupDataProvider<T, any>;\n\n protected _dropdownClassName = 'mng-filter-lookup-dropdown';\n\n protected _autocompleteOpenOnFocus = false;\n protected _autocompleteInlineSearch = false;\n protected _autocompleteAutoClear = false;\n protected _autocompleteSelectFirst = false;\n\n protected _dialogTableDescriptor?: TableDescriptor<T>;\n protected _dialogTableDataProvider?: ITableDataProvider<T, any>;\n\n protected _customComponentName?: string;\n\n constructor(editor: EditorDescriptor<ET>, property: string, modelType: ClassType<T> | null) {\n super(editor, property);\n this._modelType = modelType;\n ModelUtil.trySetLookupItemsProperties(this);\n }\n\n public get lookupType() {\n return this._lookupType;\n }\n\n public get itemsLabelProperty() {\n return this._itemsLabelProperty;\n }\n\n public get itemsLabelTranslate() {\n return this._itemsLabelTranslate;\n }\n\n public get itemsValueProperty() {\n return this._itemsValueProperty;\n }\n\n public get itemsDisabledProperty() {\n return this._itemsDisabledProperty;\n }\n\n public get dataKeyProperty() {\n return this._dataKeyProperty;\n }\n\n public get dataProvider() {\n return this._dataProvider;\n }\n\n public get autocompleteOpenOnFocus() {\n return this._autocompleteOpenOnFocus;\n }\n\n public get autocompleteInlineSearch() {\n return this._autocompleteInlineSearch;\n }\n\n public get autocompleteAutoClear() {\n return this._autocompleteAutoClear;\n }\n\n public get autocompleteSelectFirst() {\n return this._autocompleteSelectFirst;\n }\n\n public get dropdownClassName() {\n return this._dropdownClassName;\n }\n\n public get modelType() {\n return this._modelType;\n }\n\n public get dialogTableDescriptor() {\n return this._dialogTableDescriptor;\n }\n\n public get dialogTableDataProvider() {\n return this._dialogTableDataProvider;\n }\n\n public get customComponentName() {\n return this._customComponentName;\n }\n\n public withItemsLabelProperty(itemsLabelProperty: string, translate = false): this {\n this._itemsLabelProperty = itemsLabelProperty;\n this._itemsLabelTranslate = translate;\n return this;\n }\n\n public withItemsValueProperty(itemsValueProperty: string): this {\n this._itemsValueProperty = itemsValueProperty;\n this._dataKeyProperty = undefined;\n return this;\n }\n\n public withItemsDisabledProperty(itemsDisabledProperty: string): this {\n this._itemsDisabledProperty = itemsDisabledProperty;\n return this;\n }\n\n public withDataKeyProperty(property: string): this {\n this._dataKeyProperty = property;\n this._itemsValueProperty = undefined;\n return this;\n }\n\n public withLookup<S>(lookup: (queryParam?: MediusQueryParam, service?: S, search?: string) => Observable<Array<T>>, serviceType?: Type<S>): this {\n const dataProvider = new LookupDataProvider<T, S>(this._modelType);\n if (serviceType) {\n dataProvider.withServiceType(serviceType);\n }\n dataProvider.withLookup(lookup);\n this._dataProvider = dataProvider;\n return this;\n }\n\n public withLookupDataProvider(dataProvider: ILookupDataProvider<T, any>): this {\n this._dataProvider = dataProvider;\n return this;\n }\n\n public override withConfig(config: FieldLookupConfig): this {\n return super.withConfig(config);\n }\n\n public asAutocomplete(openOnFocus = false, inlineSearch = false, selectFirst = false, autoClear = false): this {\n this._lookupType = FieldLookupTypeEnum.Autocomplete;\n this._autocompleteAutoClear = autoClear;\n this._autocompleteSelectFirst = selectFirst;\n this._autocompleteOpenOnFocus = openOnFocus;\n this._autocompleteInlineSearch = inlineSearch;\n return this;\n }\n\n public asDialog(lookupTableDescriptor: TableDescriptor<T>, tableDataProvider?: ITableDataProvider<T, any>): this {\n this._lookupType = FieldLookupTypeEnum.Dialog;\n this._dialogTableDescriptor = lookupTableDescriptor;\n this._dialogTableDataProvider = tableDataProvider;\n return this;\n }\n\n public asCustomComponent(customComponentName: string): this {\n this._lookupType = FieldLookupTypeEnum.Custom;\n this._customComponentName = customComponentName;\n return this;\n }\n\n public copy(): FieldLookupDescriptor<T, ET> {\n const field = new FieldLookupDescriptor(this._editor, this._property, this._modelType);\n this.copyFieldsTo(field);\n field._lookupType = this._lookupType;\n field._itemsLabelProperty = this._itemsLabelProperty;\n field._itemsLabelTranslate = this._itemsLabelTranslate;\n field._itemsValueProperty = this._itemsValueProperty;\n field._itemsDisabledProperty = this._itemsDisabledProperty;\n field._dataKeyProperty = this._dataKeyProperty;\n field._dataProvider = this._dataProvider;\n field._dropdownClassName = this._dropdownClassName;\n field._autocompleteOpenOnFocus = this._autocompleteOpenOnFocus;\n field._autocompleteInlineSearch = this._autocompleteInlineSearch;\n field._dialogTableDescriptor = this._dialogTableDescriptor;\n return field;\n }\n}\n\nexport class FieldLookupEnumDescriptor<ET> extends FieldLookupDescriptor<EnumValue<string | number>, ET> {\n private readonly _enumType: EnumType;\n private readonly _optionEnumValues: EnumValue<string | number>[];\n private readonly _nameAsValue: boolean = false;\n\n constructor(editor: EditorDescriptor<ET>, property: string, enumType: EnumType, options?: Array<EnumConstantType>, nameAsValue = false, optionsTitlePath?: string | null) {\n super(editor, property, null);\n this._enumType = enumType;\n this._nameAsValue = nameAsValue;\n if (typeof optionsTitlePath === 'undefined') {\n optionsTitlePath = TypeUtil.findEnumName(enumType);\n }\n this._optionEnumValues = Array.isArray(options)\n ? EnumUtil.fromValuesAsEnumValueArray(enumType, options, nameAsValue, optionsTitlePath ?? undefined)\n : EnumUtil.fromConstantsAsEnumValueArray(enumType, nameAsValue, optionsTitlePath ?? undefined);\n const dataProvider = new LookupDataProvider<EnumValue<string | number>, any>(null).withLookup(() => of(this._optionEnumValues));\n this.withLookupDataProvider(dataProvider);\n this.withItemsLabelProperty('title', optionsTitlePath !== null);\n this.withItemsValueProperty('value');\n this.withItemsDisabledProperty('disabled');\n }\n\n public get enumType() {\n return this._enumType;\n }\n\n public withDisabledOptions(...disabledOptions: Array<EnumConstantType>): this {\n for (const disabledOption of disabledOptions) {\n const disabledOptionValue = this._nameAsValue ? EnumUtil.getConstantName(this._enumType, disabledOption) : disabledOption;\n if (disabledOptionValue) {\n const option = this._optionEnumValues.find(o => o.value === disabledOptionValue);\n if (option) {\n option.disabled = true;\n }\n }\n }\n return this;\n }\n\n public withDefaultValueEnum(defaultValue: EnumConstantType): this {\n const defaultOptionValue = this._nameAsValue ? EnumUtil.getConstantName(this._enumType, defaultValue) : defaultValue;\n if (defaultOptionValue) {\n const option = this._optionEnumValues.find(o => o.value === defaultOptionValue);\n if (option) {\n this.withDefaultValue(this._itemsValueProperty ? option[this._itemsValueProperty as keyof object] : option);\n }\n }\n return this;\n }\n\n public override asAutocomplete(openOnFocus = true): this {\n super.asAutocomplete(openOnFocus, true);\n return this;\n }\n\n public override copy(): FieldLookupEnumDescriptor<ET> {\n const field = new FieldLookupEnumDescriptor<ET>(this._editor, this._property, this._enumType, []);\n this.copyFieldsTo(field);\n field._lookupType = this._lookupType;\n field._itemsLabelProperty = this._itemsLabelProperty;\n field._itemsValueProperty = this._itemsValueProperty;\n field._itemsDisabledProperty = this._itemsDisabledProperty;\n field._dataKeyProperty = this._dataKeyProperty;\n field._dataProvider = this._dataProvider;\n return field;\n }\n}\n\nexport class FieldManyToManyEditorDescriptor<T, ET> extends AFieldDescriptor<T, ET, T[]> {\n private readonly _mainTableDescriptor: TableDescriptor<T>; // table descriptor for main table component\n private readonly _lookupTableDescriptor: TableDescriptor<T>; // table descriptor for where select will be applied\n private _fieldType: FieldManyToManyEditorTypeEnum = FieldManyToManyEditorTypeEnum.DialogTableMultiselect;\n private _lookupTableDataProvider: ITableDataProvider<T, any> | null = null;\n private _actions: Array<FieldManyToManyEditorActionEnum> = [];\n private _hasLookupExcludeValues = false;\n private _excludeFilterProperty = '';\n private _excludeValueProperty = '';\n private _searchEnabled = false;\n private _searchFields?: string[];\n\n constructor(editor: EditorDescriptor<ET>, property: string, mainTableDescriptor: TableDescriptor<T>, lookupTableDescriptor: TableDescriptor<T>) {\n super(editor, property);\n this._mainTableDescriptor = mainTableDescriptor;\n this._lookupTableDescriptor = lookupTableDescriptor;\n this._actions.push(FieldManyToManyEditorActionEnum.Add, FieldManyToManyEditorActionEnum.Delete);\n }\n\n public get fieldType() {\n return this._fieldType;\n }\n\n public get lookupTableDataProvider() {\n return this._lookupTableDataProvider;\n }\n\n public get actions() {\n return this._actions;\n }\n\n public get hasLookupExcludeValues() {\n return this._hasLookupExcludeValues;\n }\n\n public get excludeFilterProperty() {\n return this._excludeFilterProperty;\n }\n\n public get excludeValueProperty() {\n return this._excludeValueProperty;\n }\n\n public get mainTableDescriptor() {\n return this._mainTableDescriptor;\n }\n\n public get lookupTableDescriptor() {\n return this._lookupTableDescriptor;\n }\n\n public get searchEnabled() {\n return this._searchEnabled;\n }\n\n public get searchFields() {\n return this._searchFields;\n }\n\n public withLookup<S>(getAll: (queryParam: MediusQueryParam, service?: S) => Observable<MediusQueryResult<T>>, serviceType?: Type<S>): this {\n const dataProvider = new TableviewDataProvider<T, S>(this._mainTableDescriptor.model.type);\n if (serviceType) {\n dataProvider.withServiceType(serviceType);\n }\n dataProvider.withGetAll(getAll);\n this._lookupTableDataProvider = dataProvider;\n return this;\n }\n\n public withLookupDataProvider(dataProvider: ITableDataProvider<T, any>): this {\n this._lookupTableDataProvider = dataProvider;\n return this;\n }\n\n public withActions(actions: Array<FieldManyToManyEditorActionEnum> = []): this {\n this.actions.push(...actions);\n return this;\n }\n\n public withLookupExclude(filterProperty: string, valueProperty: string, hasLookupExclude = true): this {\n this._hasLookupExcludeValues = hasLookupExclude;\n this._excludeFilterProperty = filterProperty;\n this._excludeValueProperty = valueProperty;\n return this;\n }\n\n public withSearch(enabled = true, searchFields?: string[]): this {\n this._searchEnabled = enabled;\n this._searchFields = searchFields;\n return this;\n }\n\n public copy(): FieldManyToManyEditorDescriptor<T, ET> {\n const field = new FieldManyToManyEditorDescriptor(this._editor, this._property, this._mainTableDescriptor.copy(), this._lookupTableDescriptor.copy());\n this.copyFieldsTo(field);\n field._fieldType = this._fieldType;\n field._actions = this._actions.map(a => a);\n field._lookupTableDataProvider = this._lookupTableDataProvider;\n field._hasLookupExcludeValues = this._hasLookupExcludeValues;\n field._excludeFilterProperty = this._excludeFilterProperty;\n field._excludeValueProperty = this._excludeValueProperty;\n return field;\n }\n}\n\nexport class FieldManyEditorDescriptor<T, ET> extends AFieldDescriptor<T, ET, T[]> {\n private readonly _tableviewDescriptor: TableviewDescriptor<T>;\n private _fieldType: FieldManyEditorTypeEnum = FieldManyEditorTypeEnum.DialogEditor;\n private _fieldActions: Array<FieldManyEditorActionEnum> = [];\n private _actions: Array<ActionDescriptor<T>> = [];\n\n constructor(editor: EditorDescriptor<ET>, property: string, tableviewDescriptor: TableviewDescriptor<T>) {\n super(editor, property);\n // this._modelType = modelType;\n this._tableviewDescriptor = tableviewDescriptor;\n this._fieldActions.push(FieldManyEditorActionEnum.View, FieldManyEditorActionEnum.Add, FieldManyEditorActionEnum.Edit, FieldManyEditorActionEnum.Delete);\n }\n\n public get fieldType() {\n return this._fieldType;\n }\n\n public get fieldActions() {\n return this._fieldActions;\n }\n\n public get actions() {\n return this._actions;\n }\n\n public get tableviewDescriptor() {\n return this._tableviewDescriptor;\n }\n\n public get tableDescriptor() {\n return this._tableviewDescriptor.table;\n }\n\n public get editorForCreate() {\n return this._tableviewDescriptor.addEditor;\n }\n\n public get editorForRead() {\n return this._tableviewDescriptor.detailsEditor;\n }\n\n public get editorForUpdate() {\n return this._tableviewDescriptor.editEditor;\n }\n\n public withFieldAction(action: FieldManyEditorActionEnum): this {\n this._fieldActions.push(action);\n return this;\n }\n\n public withFieldActions(actions: FieldManyEditorActionEnum[]): this {\n this._fieldActions = actions;\n return this;\n }\n\n public withAction(action: ActionDescriptor<T>): this {\n this._actions.push(action);\n return this;\n }\n\n public copy(): FieldManyEditorDescriptor<T, ET> {\n const field = new FieldManyEditorDescriptor(this._editor, this._property, this._tableviewDescriptor.copy());\n this.copyFieldsTo(field);\n field._fieldType = this._fieldType;\n field._fieldActions = this._fieldActions.map(a => a);\n return field;\n }\n}\n\nexport abstract class AFieldGroupDescriptor<ET> extends AGenericFieldDescriptor<ET> {\n protected readonly _name: string;\n protected readonly _default: boolean;\n protected _title?: string;\n protected _fields: AGenericFieldDescriptor<ET>[] = [];\n protected _validations: Array<FieldValidationDescriptor> = [];\n\n protected constructor(editor: EditorDescriptor<ET>, name: string) {\n super(editor);\n this._name = `${this.baseName}${name}`;\n this._default = name === EditorDescriptor.defaultGroupName;\n }\n\n public removeField(property: string, filterFunction: (fields: AGenericFieldDescriptor<ET>[]) => AGenericFieldDescriptor<ET>[]): AGenericFieldDescriptor<ET>[] {\n this._fields = filterFunction(this._fields);\n return this._fields;\n }\n\n public get title() {\n return this._title;\n }\n\n abstract get fields(): AGenericFieldDescriptor<ET>[];\n\n public get validations() {\n return this._validations;\n }\n\n public get baseName() {\n return `${this.groupName()}_`;\n }\n\n public get name() {\n return this._name;\n }\n\n public get default() {\n return this._default;\n }\n\n abstract groupName(): string;\n\n abstract addField(field: AGenericFieldDescriptor<ET>): this;\n\n abstract copy(): AFieldGroupDescriptor<ET>;\n\n public withTitle(title: string): this {\n this._title = title;\n return this;\n }\n\n public withValidation(name: string, validator?: MngFieldValidator, message?: MngFieldValidationMessage) {\n this._validations.push(new FieldValidationDescriptor(name, validator, message));\n return this;\n }\n}\n\nexport class FieldTabGroupDescriptor<ET> extends AFieldGroupDescriptor<ET> {\n constructor(editor: EditorDescriptor<ET>, name: string) {\n super(editor, name);\n }\n\n public get fields(): Array<FieldGroupDescriptor<ET>> {\n return this._fields as Array<FieldGroupDescriptor<ET>>;\n }\n\n public groupName(): string {\n return 'tab';\n }\n\n public addField(field: FieldGroupDescriptor<ET>): this {\n this._fields.push(field);\n return this;\n }\n\n public copy(): FieldTabGroupDescriptor<ET> {\n const tab = new FieldTabGroupDescriptor<ET>(this._editor, this.name.substring(this.baseName.length));\n tab._title = this._title;\n tab._fields = this.fields.map(f => f.copy());\n tab._validations = this.validations.map(v => v.copy());\n return tab;\n }\n}\n\nexport class FieldGroupDescriptor<ET> extends AFieldGroupDescriptor<ET> {\n private _type = FieldGroupTypeEnum.Fieldset;\n\n constructor(editor: EditorDescriptor<ET>, name: string) {\n super(editor, name);\n if (this._default) {\n this.asLogical();\n }\n }\n\n public get type() {\n return this._type;\n }\n\n public get fields(): Array<AFieldDescriptor<any, ET>> {\n return this._fields as Array<AFieldDescriptor<any, ET>>;\n }\n\n public groupName(): string {\n return 'group';\n }\n\n public addField(field: AFieldDescriptor<any, ET>): this {\n this._fields.push(field);\n return this;\n }\n\n public asLogical(): this {\n this._type = FieldGroupTypeEnum.Logical;\n return this;\n }\n\n public copy(): FieldGroupDescriptor<ET> {\n const group = new FieldGroupDescriptor<ET>(this._editor, this.name.substring(this.baseName.length));\n group._type = this._type;\n group._title = this._title;\n group._fields = this.fields.map(f => f.copy());\n group._validations = this.validations.map(v => v.copy());\n return group;\n }\n}\n","import {Type} from '@angular/core';\n\nimport {Observable, Subject} from 'rxjs';\n\nimport {MediusQueryParam} from '../../api/models';\nimport {ObjectSerializer} from '../../api/utils';\nimport {MngFieldEventData, MngFormEvent, MngFormEventTypeEnum} from '../../components/form/models';\nimport {ILookupDataProvider} from '../../data-providers';\nimport {MngErrorInternal} from '../../models';\nimport {TableviewAttributeDef} from '../../models/tableview-attr.model';\nimport {ClassType, EnumConstantType, EnumType, MngFieldValidationMessage, MngFieldValidator} from '../../types';\nimport {I18nUtils} from '../../utils';\nimport {TableviewUtil} from '../../utils/tableview.util';\nimport {ModelDescriptor} from '../model.descriptor';\nimport {TableDescriptor} from '../table';\nimport {TableviewDescriptor} from '../tableview';\nimport {FieldInputTypeEnum, TableviewEditorTypeEnum} from '../types';\nimport {\n AFieldDescriptor,\n FieldActionDescriptor,\n FieldGroupDescriptor,\n FieldInputDescriptor,\n FieldLookupDescriptor,\n FieldLookupEnumDescriptor,\n FieldManyEditorDescriptor,\n FieldManyToManyEditorDescriptor,\n FieldTabGroupDescriptor\n} from './field.descriptor';\n\nexport class EditorDescriptor<T> {\n public static readonly defaultGroupName = '_default';\n\n protected readonly _model: ModelDescriptor<T>;\n protected readonly _modelType: ClassType<T>;\n protected readonly _tableviewEditorType: TableviewEditorTypeEnum;\n protected readonly _tabs: Array<FieldTabGroupDescriptor<T>> = [];\n protected readonly _groups: Array<FieldGroupDescriptor<T>> = [];\n protected _fields: Array<AFieldDescriptor<any, T>> = [];\n protected _currentTabGroup?: FieldTabGroupDescriptor<T>;\n protected _currentGroup?: FieldGroupDescriptor<T>;\n\n protected _disabled = false;\n\n protected _isLocalized = false;\n protected _localizationLocaleProperty?: string;\n protected _localizationLocalizationProperty?: string;\n protected _localizationModelType?: ClassType<any>;\n protected _localeLookup?: (queryParam?: MediusQueryParam, service?: any, search?: string) => Observable<Array<string>>;\n\n protected readonly _eventsSubject = new Subject<MngFormEvent<T>>();\n\n constructor(\n modelType: ClassType<T>,\n idProperty?: string,\n titleProperty?: string,\n tableviewEditorType = TableviewEditorTypeEnum.None,\n i18nBaseKey?: string | ClassType<unknown>\n ) {\n this._modelType = modelType;\n this._model = new ModelDescriptor<T>(modelType, idProperty, titleProperty, i18nBaseKey);\n this._tableviewEditorType = tableviewEditorType;\n }\n\n /**\n * auto generated editor descriptor based on openapi definition\n * generates all fields from definition\n * @param modelType class type\n * @param idProperty\n * @param titleProperty\n * @param tableEditorType\n */\n public static from<T>(modelType: ClassType<T>, idProperty?: string, titleProperty?: string, tableEditorType = TableviewEditorTypeEnum.None): EditorDescriptor<T> {\n return EditorDescriptor.fromModelWithAttributes(modelType, TableviewUtil.getAttributeDefMap(modelType), titleProperty, idProperty, tableEditorType);\n }\n\n /**\n * auto generated editor descriptor based on openapi definition\n * generates only selected fields\n * @param modelType class type\n * @param attributes list of selected properties to generate fields based on\n * @param idProperty\n * @param titleProperty\n * @param tableEditorType\n */\n public static fromModelWithAttributes<T>(\n modelType: ClassType<T>,\n attributes: TableviewAttributeDef[],\n idProperty?: string,\n titleProperty?: string,\n tableEditorType = TableviewEditorTypeEnum.None\n ): EditorDescriptor<T> {\n const descriptor = new EditorDescriptor(modelType, idProperty, titleProperty, tableEditorType);\n\n attributes\n .filter(attr => !attr.type.includes('Set') && !attr.type.includes('Array'))\n .forEach(attr =>\n descriptor.upsertFieldFromAttributeDef(\n attr,\n descriptor.fields.find(col => col.property === attr.name)\n )\n );\n return descriptor;\n }\n\n public get model() {\n return this._model;\n }\n\n public get tabs() {\n return this._tabs;\n }\n\n public get fields() {\n return this._fields;\n }\n\n public get tableviewEditorType() {\n return this._tableviewEditorType;\n }\n\n public get disabled() {\n return this._disabled;\n }\n\n public get isLocalized() {\n return this._isLocalized;\n }\n\n public get localizationLocaleProperty() {\n return this._localizationLocaleProperty;\n }\n\n public get localizationLocalizationProperty() {\n return this._localizationLocalizationProperty;\n }\n\n public get localizationBeanType() {\n return this._localizationModelType;\n }\n\n public get localeLookup() {\n return this._localeLookup;\n }\n\n public createTabGroup(name: string, title?: string): FieldTabGroupDescriptor<T> {\n const tabGroup = new FieldTabGroupDescriptor<T>(this, name);\n if (!title) {\n title = I18nUtils.Type.getTabKey(this.model.i18nBaseKey, name);\n }\n tabGroup.withTitle(title);\n this.createTabGroupDescriptor(tabGroup);\n return tabGroup;\n }\n\n public createFieldGroup(name: string, title?: string | null): FieldGroupDescriptor<T> {\n const fieldGroup = new FieldGroupDescriptor<T>(this, name);\n if (title !== null) {\n if (!title) {\n title = I18nUtils.Type.getGroupKey(this.model.i18nBaseKey, name);\n }\n fieldGroup.withTitle(title);\n }\n this.createFieldGroupDescriptor(fieldGroup);\n return fieldGroup;\n }\n\n public addFieldDescriptor<FT, FVT = FT>(field: AFieldDescriptor<FT, T, FVT>): this {\n this.createDefaultGroup();\n this._fields.push(field);\n this._currentGroup?.addField(field);\n return this;\n }\n\n public addField(property: string): FieldInputDescriptor<T> {\n const field = new FieldInputDescriptor<T>(this, property);\n this.addFieldDescriptor(field);\n return field;\n }\n\n /**\n * removes filed if exists in descriptor\n * @param property field name\n */\n public removeField(property: string): void {\n const fieldIdx = this._fields.findIndex(f => f.property === property);\n if (fieldIdx < 0) {\n throw new MngErrorInternal(`Field ${property} does not exist.`, 'EditorDescriptor error').consoleError();\n }\n for (const group of this._groups) {\n const groupFieldIdx = group.fields.findIndex(f => f instanceof AFieldDescriptor && f.property === property);\n if (groupFieldIdx >= 0) {\n group.fields.splice(groupFieldIdx, 1);\n break;\n }\n }\n this._fields.splice(fieldIdx, 1);\n }\n\n public getField(property: string): AFieldDescriptor<any, T> | null {\n return this._fields.find(f => f.property === property) ?? null;\n }\n\n public addFieldAction(actionName: string): FieldActionDescriptor<T> {\n const field = new FieldActionDescriptor<T>(this, actionName);\n this.addFieldDescriptor(field);\n return field;\n }\n\n public addFieldLookup<FT>(property: string, modelType: ClassType<FT>): FieldLookupDescriptor<FT, T> {\n const field = new FieldLookupDescriptor<FT, T>(this, property, modelType);\n this.addFieldDescriptor(field);\n return field;\n }\n\n public addFieldLookupEnum(\n property: string,\n enumType: EnumType,\n options?: Array<EnumConstantType>,\n nameAsValue = false,\n optionsTitlePath?: string | null\n ): FieldLookupEnumDescriptor<T> {\n const field = new FieldLookupEnumDescriptor(this, property, enumType, options, nameAsValue, optionsTitlePath);\n this.addFieldDescriptor(field);\n return field;\n }\n\n public addFieldManyEditor<FT>(property: string, tableviewDescriptor: TableviewDescriptor<FT>): FieldManyEditorDescriptor<FT, T> {\n const field = new FieldManyEditorDescriptor(this, property, tableviewDescriptor);\n this.addFieldDescriptor(field);\n return field;\n }\n\n public addFieldManyToManyEditor<FT>(\n property: string,\n mainTableDescriptor: TableDescriptor<FT>,\n lookupTableDescriptor: TableDescriptor<FT>\n ): FieldManyToManyEditorDescriptor<FT, T> {\n const field = new FieldManyToManyEditorDescriptor(this, property, mainTableDescriptor, lookupTableDescriptor);\n this.addFieldDescriptor(field);\n return field;\n }\n\n public withDisabled(disabled = true): this {\n this._disabled = disabled;\n return this;\n }\n\n public addValidation(name: string, validator?: MngFieldValidator, message?: MngFieldValidationMessage) {\n if (this._currentGroup) {\n this._currentGroup.withValidation(name, validator, message);\n }\n }\n\n public copy(): EditorDescriptor<T> {\n const editor = new EditorDescriptor<T>(this.model.type, this.model.idPropertyName, this.model.titlePropertyName, this.tableviewEditorType);\n for (const tabGroup of this._tabs) {\n editor.createTabGroupDescriptor(tabGroup.copy());\n }\n for (const tabGroup of editor._tabs) {\n for (const fieldGroup of tabGroup.fields) {\n editor._fields.push(...fieldGroup.fields);\n }\n editor._groups.push(...tabGroup.fields);\n }\n editor._currentTabGroup = editor._tabs[editor._tabs.length - 1];\n editor._currentGroup = editor._currentTabGroup.fields[editor._currentTabGroup.fields.length - 1];\n editor._disabled = this._disabled;\n return editor;\n }\n\n public createFieldGroupDescriptor(fieldGroup: FieldGroupDescriptor<T>): this {\n this.createDefaultTabGroup();\n this._currentGroup = fieldGroup;\n this._groups.push(fieldGroup);\n this._currentTabGroup?.addField(fieldGroup);\n return this;\n }\n\n protected createTabGroupDescriptor(tabGroup: FieldTabGroupDescriptor<T>): this {\n this._currentTabGroup = tabGroup;\n this._tabs.push(tabGroup);\n return this;\n }\n\n private createDefaultGroup() {\n this.createDefaultTabGroup();\n if (this._currentTabGroup?.fields.length === 0) {\n this.createFieldGroup(EditorDescriptor.defaultGroupName, null);\n }\n }\n\n private createDefaultTabGroup() {\n if (this._tabs.length === 0) {\n this.createTabGroup(EditorDescriptor.defaultGroupName, 'general.general');\n }\n }\n\n /**\n * modifies selected field\n * do not use it for enums! (use withFieldModifiedEnum instead)\n * @param property field name\n * @param fieldType new field type for selected field\n * @param args additional parameters for field\n */\n public withFieldModifiedType(property: string, fieldType: FieldInputTypeEnum, ...args: any[]): this {\n const attribute = TableviewUtil.getAttributeDefMap(this._modelType).find(attribute => attribute.name === property);\n if (attribute) {\n attribute.fieldType = fieldType;\n this.upsertFieldFromAttributeDef(\n attribute,\n this.fields.find(fi => fi.property === property),\n ...args\n );\n }\n return this;\n }\n\n /**\n * modifies selected field with enum type\n * @param property field property name\n * @param enumType type of enum for new field\n * @param optionsTitlePath\n * @param values\n * @param nameAsValue\n */\n public withFieldModifiedEnum(property: string, enumType?: EnumType, optionsTitlePath?: string | null, values?: Array<EnumConstantType>, nameAsValue = false): this {\n const attribute = TableviewUtil.getAttributeDefMap(this._modelType).find(a => a.name === property);\n if (attribute) {\n attribute.fieldType = FieldInputTypeEnum.Radio;\n const field = this.fields.find(f => f.property === property);\n if (field && field instanceof FieldInputDescriptor) {\n field.asRadioFromEnum(enumType ?? (ObjectSerializer.get().findEnum(attribute.type) as EnumType), optionsTitlePath, values, nameAsValue);\n }\n }\n\n return this;\n }\n\n /**\n * adds lookup to given field\n * @param property field property name\n * @param modelType model type of field\n * @param lookupProvider provider to be added to field\n * @param titleProperty\n */\n public withFieldModifiedLookup<MT>(property: string, modelType: ClassType<MT>, lookupProvider: ILookupDataProvider<any, any>, titleProperty?: string): this {\n this.removeField(property);\n const field = this.addFieldLookup(property, modelType).asAutocomplete().withLookupDataProvider(lookupProvider);\n\n if (titleProperty) {\n (field as FieldLookupDescriptor<any, any>).withItemsLabelProperty(titleProperty);\n }\n\n return this;\n }\n\n /**\n * generates field based on attribute definition, used for auto model\n * @param attribute definition\n * @param field optional, if defined will be replaced, otherwise new will be generated\n * @param args additional arguments\n */\n private upsertFieldFromAttributeDef(attribute: TableviewAttributeDef, field?: AFieldDescriptor<any, T>, ...args: any[]): AFieldDescriptor<any, T> {\n if (field == null) {\n field = this.addField(attribute.name);\n }\n\n if (field instanceof FieldInputDescriptor) {\n if (attribute.enumType) {\n return field.asRadioFromEnum(attribute.enumType);\n } else {\n return field.asType(attribute.fieldType ?? TableviewUtil.toFieldInputTypeFromColumnType(attribute.columnType, attribute.columnDisplayType), ...args);\n }\n }\n\n return field;\n }\n\n /**\n * This method takes care of displaying correct/localized data in the editor\n * @param localizationsProperty property that tells us where on the model are localizations accessible\n * @param localeProperty property by which we find the locale\n * @param localizationModelType model type for localizations if it is different from the whole model\n * @param localeLookup lookup provider for locales supported by the application.\n */\n public localized<S>(\n localizationsProperty = 'localizations',\n localeProperty = 'locale',\n localizationModelType?: ClassType<any>,\n localeLookup?: (queryParam?: MediusQueryParam, service?: S, search?: string) => Observable<Array<string>>\n ): this {\n this._localizationLocalizationProperty = localizationsProperty;\n this._localizationLocaleProperty = localeProperty;\n this._isLocalized = true;\n this._localeLookup = localeLookup;\n\n if (localizationModelType) {\n this._localizationModelType = localizationModelType;\n } else {\n this._localizationModelType = this._modelType;\n }\n return this;\n }\n\n public nextEvent(type: MngFormEventTypeEnum, cmpType: Type<any>, cmpInstance: any, data?: MngFieldEventData<T>) {\n this._eventsSubject.next(new MngFormEvent(type, cmpType, cmpInstance, data));\n }\n\n public completeEvents() {\n this._eventsSubject.complete();\n }\n\n public get events$() {\n return this._eventsSubject.asObservable();\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 {MngFormlyFieldConfig} from '../components/form/formly/models';\nimport {IFormEditorComponent} from '../components/form/models';\nimport {\n AFieldDescriptor,\n EditorDescriptor,\n FieldActionDescriptor,\n FieldGroupDescriptor,\n FieldInputDescriptor,\n FieldLookupDescriptor,\n FieldLookupEnumDescriptor,\n FieldManyEditorDescriptor,\n FieldManyToManyEditorDescriptor,\n FieldTabGroupDescriptor,\n FieldValidationDescriptor\n} from '../descriptors/editor';\nimport {FieldInputTypeEnum, FieldLookupTypeEnum} from '../descriptors/types';\nimport {MngFieldAsyncValidator} from '../types';\n\nexport class EditorFormlyUtil {\n public static createFormlyConfigFromDescriptor(descriptor: EditorDescriptor<any>, formEditorComponent: IFormEditorComponent<unknown>): FormlyFieldConfig[] {\n const fields: FormlyFieldConfig[] = [];\n\n if (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 // If a field is localized, we append a hidden field to our form, so we can add/update new localization values to the form later on\n if (descriptor.isLocalized) {\n fields.push({\n key: descriptor.localizationLocalizationProperty,\n props: {\n descriptor\n }\n });\n }\n\n return fields;\n }\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: MngFormlyFieldConfig = {\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: MngFormlyFieldConfig = {\n type: 'fieldset',\n fieldGroup: [],\n props: {\n formEditorComponent\n },\n expressions: {}\n };\n for (const group of groups) {\n const groupField: MngFormlyFieldConfig = {\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: MngFormlyFieldConfig = {\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 (descriptor.customComponentWrappers.length > 0) {\n field.wrappers = descriptor.customComponentWrappers;\n }\n } else {\n field.type = descriptor.customComponentName;\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 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 = <MngFieldAsyncValidator>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 {EnumValue} from '../models';\nimport {EnumConstantType, EnumType} from '../types';\n\nexport class EnumUtil {\n /**\n * Returns array of names for constants in enum.\n * @param enumType Enum object.\n */\n public static getConstantNames(enumType: EnumType): Array<string> {\n return EnumUtil.getConstantNamesFromEnumObject(enumType);\n }\n\n /**\n * Returns array of names for constants in enum.\n * @param enumObj Enum object.\n */\n public static getConstantNamesFromEnumObject(enumObj: object): Array<string> {\n // in number enum, the numbers are also represented in objects and should be filtered out\n return Object.keys(enumObj).filter(v => isNaN(+v));\n }\n\n /**\n * Returns array of string values for constants in enum.\n * @param enumType Enum object.\n */\n public static getConstantValuesAsString(enumType: EnumType): Array<string> {\n return Object.keys(enumType).map(v => enumType[v as keyof object] as string);\n }\n\n /**\n * Returns array of number values for constants in enum.\n * @param enumType Enum object.\n */\n public static getConstantValuesAsNumber(enumType: EnumType): Array<number> {\n return Object.keys(enumType)\n .filter(v => !isNaN(+v))\n .map(v => +v);\n }\n\n /**\n * Returns array of type EnumValue for all constants in enum.\n * @param enumType Enum object.\n * @param nameAsValue If use name of constant as value (optional, default: false).\n * @param titlePath Base path for title to use as translation (optional).\n */\n public static fromConstantsAsEnumValueArray(enumType: EnumType, nameAsValue = false, titlePath?: string) {\n return EnumUtil.getConstantNames(enumType).map(\n n => <EnumValue<string | number>>{name: n, title: `${titlePath ? `${titlePath}.` : ''}${n}`, value: nameAsValue ? n : enumType[n]}\n );\n }\n\n /**\n * Returns array of type EnumValue for provided values in enum.\n * @param enumType Enum object.\n * @param nameAsValue If use name of constant as value (optional, default: false).\n * @param titlePath Base path for title to use as translation (optional).\n */\n public static fromValuesAsEnumValueArray(enumType: EnumType, values: Array<EnumConstantType>, nameAsValue = false, titlePath?: string) {\n return values.map(v => {\n const k = EnumUtil.getConstantName(enumType, v);\n return {name: k, title: `${titlePath ? `${titlePath}.` : ''}${k}`, value: nameAsValue ? k : v} as EnumValue<string | number>;\n });\n }\n\n /**\n * Gets constant name for value.\n * @param enumType Enum object.\n * @param value Value of enum constant.\n */\n public static getConstantName(enumType: EnumType, value: EnumConstantType): string | null {\n if (typeof value === 'string') {\n return EnumUtil.getConstantNames(enumType).find(c => enumType[c] === value) ?? null;\n } else {\n return typeof enumType[value] !== 'undefined' ? (enumType[value] as string) : null;\n }\n }\n\n /**\n * Gets constant name for value.\n * @param enumObj Enum object.\n * @param value Value of enum constant.\n */\n public static getConstantNameFromEnumObject(enumObj: object, value: EnumConstantType): string | null {\n const enumObjAny = enumObj as any;\n if (typeof value === 'string') {\n return EnumUtil.getConstantNamesFromEnumObject(enumObj).find(c => enumObjAny[c] === value) ?? null;\n } else {\n return typeof enumObjAny[value] !== 'undefined' ? (enumObjAny[value] as string) : null;\n }\n }\n}\n","import 'reflect-metadata';\n\nimport {MngErrorInternal} from '../models';\nimport {ClassType, EnumType} from '../types';\n\nexport class TypeUtil {\n public static readonly reflectTypeNameKey = 'typeName';\n public static readonly reflectTypeIdPropertyKey = 'typeIdProperty';\n public static readonly reflectTypeTitlePropertyKey = 'typeTitleProperty';\n public static readonly reflectEnumNameKey = 'enumName';\n\n /**\n * Defines type name decorator.\n * @param targetType class.\n * @param typeName Name of the type.\n */\n public static defineReflectTypeName(targetType: ClassType<any>, typeName: string) {\n if (!Reflect.hasOwnMetadata(TypeUtil.reflectTypeNameKey, targetType)) {\n Reflect.defineMetadata(TypeUtil.reflectTypeNameKey, typeName, targetType);\n }\n }\n\n /**\n * Defines enum name decorator.\n * @param targetType enum object.\n * @param enumName Name of the enum.\n */\n public static defineReflectEnumName(targetType: EnumType, enumName: string) {\n if (!Reflect.hasOwnMetadata(TypeUtil.reflectEnumNameKey, targetType)) {\n Reflect.defineMetadata(TypeUtil.reflectEnumNameKey, enumName, targetType);\n }\n }\n\n /**\n * Defines type's id property.\n * @param targetType class.\n * @param idProperty Id property\n */\n public static defineReflectTypeIdProperty<T>(targetType: ClassType<T>, idProperty: keyof T | symbol) {\n if (!Reflect.hasOwnMetadata(TypeUtil.reflectTypeIdPropertyKey, targetType)) {\n Reflect.defineMetadata(TypeUtil.reflectTypeIdPropertyKey, idProperty, targetType);\n }\n }\n\n /**\n * Defines type's id property.\n * @param targetType class.\n * @param titleProperty Title property\n */\n public static defineReflectTypeTitleProperty<T>(targetType: ClassType<T>, titleProperty: keyof T | symbol) {\n if (!Reflect.hasOwnMetadata(TypeUtil.reflectTypeTitlePropertyKey, targetType)) {\n Reflect.defineMetadata(TypeUtil.reflectTypeTitlePropertyKey, titleProperty, targetType);\n }\n }\n\n /**\n * Gets type name from reflect metadata.\n * @param type Class.\n */\n public static findTypeName(type: ClassType<any>): string {\n const typeName = Reflect.getMetadata(TypeUtil.reflectTypeNameKey, type);\n if (typeName) {\n return typeName;\n }\n console.warn('Reflect metadata could not be found for type, you might experience some issues in production build.', type);\n return type.name;\n }\n\n /**\n * Gets type name from either decorator or reflect metadata.\n * @param type Class.\n */\n public static typeNameExists(type: ClassType<any>): boolean {\n return Reflect.hasOwnMetadata(TypeUtil.reflectTypeNameKey, type);\n }\n\n /**\n * Gets enum name from either decorator or reflect metadata.\n * @param enumType Class.\n */\n public static findEnumName(enumType: EnumType): string {\n const enumName = Reflect.getMetadata(TypeUtil.reflectEnumNameKey, enumType);\n if (enumName) {\n return enumName;\n }\n console.warn('Reflect metadata could not be found for enum, you might experience some issues in production build.', enumType);\n throw new MngErrorInternal('Could not fined enum name', 'TypeUtils error').consoleError();\n }\n\n /**\n * Gets type's id property from reflect metadata.\n * @param type Class.\n */\n public static findTypeIdProperty(type: ClassType<any>): string {\n return Reflect.getMetadata(TypeUtil.reflectTypeIdPropertyKey, type);\n }\n\n /**\n * Gets type's title property from reflect metadata.\n * @param type Class.\n */\n public static findTypeTitleProperty(type: ClassType<any>): string {\n return Reflect.getMetadata(TypeUtil.reflectTypeTitlePropertyKey, type);\n }\n}\n","import {TranslateService} from '@ngx-translate/core';\nimport {Observable, of} from 'rxjs';\nimport {map, mergeMap} from 'rxjs/operators';\n\nimport {ModelDescriptor} from '../descriptors';\nimport {ActionDescriptor, ActionEditorDescriptor} from '../descriptors/action';\nimport {MngError} from '../models';\nimport {ClassType} from '../types';\nimport {I18nType} from '../types/i18n.type';\nimport {TypeUtil} from './type.util';\n\nexport namespace I18nUtils {\n export class Common {\n public static getAsync(translate: TranslateService, params?: any, ...keys: Array<string>): Observable<string | null> {\n return translate.stream(keys, params).pipe(map(i18n => I18nUtils.Common.selectI18n(keys, i18n)));\n }\n\n public static get(translate: TranslateService, params?: any, ...keys: Array<string>): string | null {\n const i18n = translate.instant(keys, params);\n return I18nUtils.Common.selectI18n(keys, i18n);\n }\n\n public static populateParams(item?: any, params: any = {}) {\n const paramsRes = {...params};\n if (item) {\n paramsRes.item = item;\n }\n return paramsRes;\n }\n\n public static selectI18n(keys: string[], i18n: any): string | null {\n for (const key of keys) {\n if (key !== i18n[key]) {\n return i18n[key];\n }\n }\n return null;\n }\n }\n\n export class Type {\n public static getClassNameAsync(translate: TranslateService, classType: ClassType<any>, singular?: boolean): Observable<string | null> {\n const typeName = TypeUtil.findTypeName(classType);\n return I18nUtils.Type.getNameAsync(translate, typeName, singular);\n }\n\n public static getClassName(translate: TranslateService, classType: ClassType<any>, singular?: boolean): string | null {\n const typeName = TypeUtil.findTypeName(classType);\n return I18nUtils.Type.getName(translate, typeName, singular);\n }\n\n public static getNameAsync(translate: TranslateService, typeName: string, singular?: boolean): Observable<string | null> {\n const keys = I18nUtils.Type.getNameKeys(typeName, singular);\n return I18nUtils.Common.getAsync(translate, undefined, ...keys);\n }\n\n public static getName(translate: TranslateService, typeName: string, singular?: boolean): string | null {\n const keys = I18nUtils.Type.getNameKeys(typeName, singular);\n return I18nUtils.Common.get(translate, undefined, ...keys);\n }\n\n public static getClassTabKey(classType: ClassType<any>, tab: string): string {\n const typeName = TypeUtil.findTypeName(classType);\n return I18nUtils.Type.getTabKey(typeName, tab);\n }\n\n public static getTabKey(typeName: string, tab: string): string {\n return I18nUtils.Type.getPath(typeName, 'tabs', tab);\n }\n\n public static getClassGroupKey(classType: ClassType<any>, group: string): string {\n const typeName = TypeUtil.findTypeName(classType);\n return I18nUtils.Type.getGroupKey(typeName, group);\n }\n\n public static getGroupKey(typeName: string, group: string): string {\n return I18nUtils.Type.getPath(typeName, 'groups', group);\n }\n\n public static getClassPropertyKey(classType: ClassType<any>, property: string): string {\n const typeName = TypeUtil.findTypeName(classType);\n return I18nUtils.Type.getPropertyKey(typeName, property);\n }\n\n public static getPropertyKey(typeName: string, property: string): string {\n return I18nUtils.Type.getPath(typeName, 'properties', property);\n }\n\n public static getClassPath(classType: ClassType<any>, ...path: Array<string>): string {\n const typeName = TypeUtil.findTypeName(classType);\n return I18nUtils.Type.getPath(typeName, ...path);\n }\n\n public static getPath(typeName: string, ...path: Array<string>): string {\n return `${typeName}.${path.join('.')}`;\n }\n\n public static getClassParams(translate: TranslateService, classType: ClassType<any>, item: any, params: any = {}): any {\n const typeName = TypeUtil.findTypeName(classType);\n return I18nUtils.Type.getParams(translate, typeName, item, params);\n }\n\n public static getParams(translate: TranslateService, typeName?: string, item?: any, params: any = {}): any {\n const i18nTypeName = typeName ? I18nUtils.Type.getName(translate, typeName, true) : null;\n return I18nUtils.Type.populateParams(i18nTypeName ?? undefined, item, params);\n }\n\n public static getClassParamsAsync(translate: TranslateService, classType: ClassType<any>, item?: any, params: any = {}): Observable<any> {\n const typeName = TypeUtil.findTypeName(classType);\n return I18nUtils.Type.getParamsAsync(translate, typeName, item, params);\n }\n\n public static getParamsAsync(translate: TranslateService, typeName?: string, item?: any, params: any = {}): Observable<any> {\n return (typeName ? I18nUtils.Type.getNameAsync(translate, typeName, true) : of(null)).pipe(\n map(i18nTypeName => I18nUtils.Type.populateParams(i18nTypeName ?? undefined, item, params))\n );\n }\n\n public static populateParams(i18nTypeName?: string, item?: any, params: any = {}): any {\n const paramsRes = {...params};\n if (i18nTypeName) {\n paramsRes.typeName = i18nTypeName;\n }\n return I18nUtils.Common.populateParams(item, paramsRes);\n }\n\n private static getNameKeys(typeName: string, singular?: boolean): Array<string> {\n const keys = [];\n if (typeof singular !== 'undefined') {\n keys.push(singular ? `${typeName}.nameSingular` : `${typeName}.namePlural`);\n }\n keys.push(`${typeName}.name`);\n return keys;\n }\n }\n\n export class Model {\n public static get(\n translate: TranslateService,\n model: ModelDescriptor<any>,\n keyPath: string,\n customKey?: string,\n item?: any,\n fallbackKey?: string,\n params?: any\n ): string | null {\n const keys = I18nUtils.Model.getKeysByPriority(model, keyPath, customKey, fallbackKey);\n const i18nParams = I18nUtils.Model.getParams(translate, model, item, params);\n return I18nUtils.Common.get(translate, i18nParams, ...keys);\n }\n\n public static getName(translate: TranslateService, model: ModelDescriptor<any>, singular?: boolean): string | null {\n return I18nUtils.Type.getName(translate, model.i18nBaseKey, singular);\n }\n\n public static getNameAsync(translate: TranslateService, model: ModelDescriptor<any>, singular?: boolean): Observable<string | null> {\n return I18nUtils.Type.getNameAsync(translate, model.i18nBaseKey, singular);\n }\n\n public static getParams(translate: TranslateService, model?: ModelDescriptor<any>, item?: any, params: any = {}): any {\n const i18nParams = I18nUtils.Type.getParams(translate, model?.i18nBaseKey, item, params);\n return I18nUtils.Model.populateParams(model?.idPropertyName, model?.titlePropertyName, item, i18nParams);\n }\n\n public static getParamsAsync(translate: TranslateService, model?: ModelDescriptor<any>, item?: any, params: any = {}): Observable<any> {\n return I18nUtils.Type.getParamsAsync(translate, model?.i18nBaseKey, item, params).pipe(\n map(i18nParams => I18nUtils.Model.populateParams(model?.idPropertyName, model?.titlePropertyName, item, i18nParams))\n );\n }\n\n public static populateParams(idProperty?: string, titleProperty?: string, item?: any, params: any = {}): any {\n const paramsRes = {...params, itemId: '', itemTitle: ''};\n if (item) {\n if (idProperty && item[idProperty]) {\n paramsRes.itemId = item[idProperty];\n }\n if (titleProperty && item[titleProperty]) {\n paramsRes.itemTitle = item[titleProperty];\n }\n }\n return paramsRes;\n }\n\n private static getKeysByPriority(model: ModelDescriptor<any>, keyPath: string, customKey?: string, fallbackKey?: string) {\n const keys = [];\n if (customKey) {\n keys.push(customKey);\n }\n const modelActionKey = I18nUtils.Type.getPath(model.i18nBaseKey, ...keyPath);\n keys.push(modelActionKey);\n if (fallbackKey) {\n keys.push(fallbackKey);\n }\n return keys;\n }\n }\n\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: ActionDescriptor<any>,\n actionPathKeys: string | Array<string>,\n customKey?: string,\n item?: any,\n fallbackKey?: string,\n params?: any,\n missingTranslationStrategy: I18nType = '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 = I18nUtils.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: ActionDescriptor<any>,\n actionPathKeys: string | Array<string>,\n customKey?: string,\n item?: any,\n fallbackKey?: string,\n params?: any,\n missingTranslationStrategy: I18nType = '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 I18nUtils.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: I18nType,\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: ActionDescriptor<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: ActionEditorDescriptor<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: ActionDescriptor<any>, item?: any, params: any = {}): any {\n const i18nParams = I18nUtils.Model.getParams(translate, action.model ?? undefined, item, params);\n return I18nUtils.Action.populateParams(i18nParams);\n }\n\n public static getParamsAsync(translate: TranslateService, action: ActionDescriptor<any>, item?: any, params: any = {}): Observable<any> {\n return I18nUtils.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: ActionDescriptor<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: MngError, 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 = I18nUtils.Common.get(translate, i18nParams, ...keys);\n if (i18n) {\n return i18n;\n }\n }\n return I18nUtils.Common.get(translate, i18nParams, error.message);\n }\n\n public static getParams(error: MngError, params: any = {}) {\n const paramsRes = {...params};\n paramsRes.errorStatus = '';\n paramsRes.errorMessage = '';\n\n if (error.status) {\n paramsRes.errorStatus = error.status;\n }\n if (error.message) {\n paramsRes.errorMessage = error.message;\n }\n if (error.statusDescription) {\n paramsRes.errorStatusDescription = error.statusDescription;\n }\n paramsRes.error = error;\n return paramsRes;\n }\n }\n}\n","import {AttributeDef} from '../api/models';\nimport {ObjectSerializer} from '../api/utils';\nimport {ILookupDescriptor} from '../descriptors/interfaces';\nimport {ClassType} from '../types';\nimport {TypeUtil} from './type.util';\n\nexport class ModelUtil {\n public static findIdAttribute<T>(classType: ClassType<T>): string | null {\n const typeIdProp = TypeUtil.findTypeIdProperty(classType);\n if (typeIdProp) {\n return typeIdProp;\n }\n\n const objSerializer = ObjectSerializer.get();\n const attributes = objSerializer.findAttributesDefinitionByClassType(classType);\n if (!attributes) {\n return null;\n }\n\n let idAttribute = ModelUtil.findAttributeByTypeAndName(attributes, 'string', 'id', 'uuid', 'code', 'sifra');\n if (!idAttribute) {\n // if no id or code, take the first attribute\n idAttribute = attributes[0];\n }\n\n return idAttribute?.name ?? null;\n }\n\n public static findTitleAttribute<T>(classType: ClassType<T>): string | null {\n const typeTitleProp = TypeUtil.findTypeTitleProperty(classType);\n if (typeTitleProp) {\n return typeTitleProp;\n }\n\n const objSerializer = ObjectSerializer.get();\n const attributes = objSerializer.findAttributesDefinitionByClassType(classType);\n if (!attributes) {\n return null;\n }\n\n let titleAttribute = ModelUtil.findAttributeByTypeAndName(attributes, 'string', 'name', 'ime', 'title', 'naziv');\n if (!titleAttribute) {\n // if no name or title, take the first attribute\n titleAttribute = attributes[0];\n }\n\n return titleAttribute?.name ?? null;\n }\n\n private static findAttributeByTypeAndName(attributes: AttributeDef[], type: string, ...names: string[]): AttributeDef | null {\n for (const name of names) {\n const attribute = attributes.find(a => a.type === type && a.name === name);\n if (attribute) {\n return attribute;\n }\n }\n return null;\n }\n\n public static trySetLookupItemsProperties<T>(lookup: ILookupDescriptor<T>, idAsDataKey = true) {\n if (lookup.modelType) {\n if (!lookup.itemsValueProperty || !lookup.dataKeyProperty) {\n const idProperty = ModelUtil.findIdAttribute(lookup.modelType) ?? undefined;\n if (idProperty && !lookup.itemsValueProperty && !lookup.dataKeyProperty) {\n if (idAsDataKey) {\n lookup.withDataKeyProperty(idProperty);\n } else {\n lookup.withItemsValueProperty(idProperty);\n }\n }\n }\n if (!lookup.itemsLabelProperty) {\n const labelProperty = ModelUtil.findTitleAttribute(lookup.modelType);\n if (labelProperty) {\n lookup.withItemsLabelProperty(labelProperty);\n }\n }\n }\n }\n}\n","import {TranslateService} from '@ngx-translate/core';\nimport {Message} from 'primeng/api';\n\nimport {ActionDescriptor} from '../descriptors/action';\nimport {TableDescriptor} from '../descriptors/table';\nimport {IViewContainer, MngError} from '../models';\nimport {I18nUtils} from './i18n.util';\n\nexport class NotificationUtil {\n public static notification(\n viewContainer?: IViewContainer<any, any>,\n title?: string,\n message?: string,\n severity: 'success' | 'warn' | 'error' = 'success',\n icon?: string\n ): Message {\n const messageService = viewContainer?.getMessageService();\n const notification: Message = {severity: severity, summary: title, detail: message, life: severity === 'error' ? 10000 : 5000, icon: icon};\n\n if (messageService) {\n messageService.add(notification);\n } else {\n console.warn(`No message service was provided through view container, message will not be displayed.`);\n }\n return notification;\n }\n\n public static tableNotificationError(translate: TranslateService, table: TableDescriptor<any>, error: any, viewContainer?: IViewContainer<any, any>): Message {\n const params: any = {};\n if (error?.message) {\n params.errorMessage = `: ${error.message}`;\n } else {\n params.errorMessage = '.';\n }\n const tableErrorTitle = I18nUtils.Model.get(translate, table.model, 'table.error.title', undefined, undefined, 'general.error', params) ?? undefined;\n const tableErrorMessage = I18nUtils.Model.get(translate, table.model, 'table.error.message', undefined, undefined, 'general.errorMessage', params) ?? undefined;\n return NotificationUtil.notification(viewContainer, tableErrorTitle, tableErrorMessage, 'error', 'pi-exclamation-triangle');\n }\n\n public static actionNotificationSuccess(\n translate: TranslateService,\n action: ActionDescriptor<any>,\n functionName: string,\n customTitleKey?: string,\n customMessageKey?: string,\n viewContainer?: IViewContainer<any, any>,\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 NotificationUtil.notification(viewContainer, actionSuccessTitle, actionSuccessMessage);\n }\n\n public static actionNotificationError(\n translate: TranslateService,\n action: ActionDescriptor<any>,\n error: MngError,\n functionName: string,\n viewContainer?: IViewContainer<any, any>,\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 NotificationUtil.notification(viewContainer, actionErrorTitle, actionErrorMessage, severity, 'pi-exclamation-triangle');\n }\n\n public static 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\n public static 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}\n","import {ClassType} from '../types';\n\ninterface DeepCopyPropsOptions {\n mapGettersToProperties?: boolean;\n}\n\nexport interface DeepCopyOptions<P = object> extends DeepCopyPropsOptions {\n objectPrototype?: ClassType<P>;\n}\n\nexport class ObjectUtil {\n public static deepCopyObject<T = object, P = object>(obj: T, options: DeepCopyOptions<P> & {mapGettersToProperties: true}): T | Record<string, any>;\n public static deepCopyObject<T = object, P = object>(obj: T, options: DeepCopyOptions<P> & {objectPrototype: ClassType<P>} & {mapGettersToProperties?: false}): P;\n public static deepCopyObject<T = object, P = object>(\n obj: T,\n options: DeepCopyOptions<P> & {objectPrototype: ClassType<P>} & {mapGettersToProperties: true}\n ): P | Record<string, any>;\n public static deepCopyObject<T = object, P = object>(obj: T, options?: DeepCopyOptions<P>): T;\n\n public static deepCopyObject<T = object, P = object>(obj: T, options?: DeepCopyOptions<P>): T | P | Record<string, any> {\n if (typeof obj !== 'object' || obj === null) {\n return obj;\n }\n\n if (obj instanceof Date) {\n return new Date(+obj);\n }\n\n let copy;\n if (options?.mapGettersToProperties) {\n copy = {};\n } else {\n copy = options?.objectPrototype ? Object.create(options.objectPrototype['prototype' as keyof object]) : Object.create(Object.getPrototypeOf(obj));\n Object.assign(copy, obj);\n }\n\n for (const key of ObjectUtil.getProperties(obj)) {\n const prop = obj[key as keyof object];\n copy[key] = ObjectUtil.handleProp(prop, {mapGettersToProperties: options?.mapGettersToProperties});\n }\n\n if (options?.mapGettersToProperties) {\n for (const getterKey of ObjectUtil.getGetters(obj)) {\n const prop = obj[getterKey as keyof object];\n copy[getterKey] = ObjectUtil.handleProp(prop, {mapGettersToProperties: options?.mapGettersToProperties});\n }\n }\n\n return copy;\n }\n\n private static handleProp(prop: any, options?: DeepCopyPropsOptions) {\n if (Array.isArray(prop)) {\n return prop.map(i => ObjectUtil.deepCopyObject(i, options));\n } else if (typeof prop === 'object' && prop !== null) {\n return ObjectUtil.deepCopyObject(prop, options);\n } else {\n return prop;\n }\n }\n\n public static getProperties(obj: object) {\n return Object.keys(obj);\n }\n\n public static getGetters(obj: any): string[] {\n const getterSet = new Set<string>();\n let currObj = obj;\n\n while (currObj) {\n const getters = Object.entries(Object.getOwnPropertyDescriptors(currObj))\n .filter(([, descriptor]) => typeof descriptor.get === 'function')\n .filter(([key]) => key !== '__proto__')\n .map(([key]) => key);\n\n for (const getter of getters) {\n getterSet.add(getter);\n }\n\n currObj = Object.getPrototypeOf(currObj);\n }\n\n return Array.from(getterSet);\n }\n}\n","import {ObjectUtil} from './object.util';\n\nexport class StringUtil {\n public static escapeHtml(value: string): any {\n return value.replace(/</g, '&lt;').replace(/>/g, '&gt;');\n }\n\n public static escapeHtmlAny(value?: any): any {\n if (typeof value === 'string') {\n return StringUtil.escapeHtml(value);\n } else if (typeof value === 'object') {\n const escapedValue: any = ObjectUtil.deepCopyObject(value, {mapGettersToProperties: true});\n\n for (const key in value) {\n if (typeof value[key] === 'string') {\n escapedValue[key] = StringUtil.escapeHtml(value[key]);\n } else if (typeof value[key] === 'object') {\n escapedValue[key] = StringUtil.escapeHtmlAny(value[key]);\n } else {\n escapedValue[key] = value[key];\n }\n }\n return escapedValue;\n }\n\n return value;\n }\n}\n","import {TranslateService} from '@ngx-translate/core';\n\nimport {TableviewDescriptor} from '../descriptors/tableview';\n\nexport class ExportUtils {\n public static prepareDataForExport(pageData: any[], delimiter: string, descriptor: TableviewDescriptor<any>, translate: TranslateService): string {\n const replaceNullValue = (key: any, value: any) => (value === null ? '' : value);\n return [\n descriptor.table.columns.map(col => translate.instant(descriptor.model.typeName + '.properties.' + col.property)).join(delimiter),\n ...pageData.map((row: any) =>\n descriptor.table.columns\n .map(column => {\n if (column.objectTitleProperty) {\n const object = row[column.property];\n return JSON.stringify(object[column.objectTitleProperty], replaceNullValue);\n } else {\n return JSON.stringify(row[column.property], replaceNullValue);\n }\n })\n .join(delimiter)\n )\n ].join('\\r\\n');\n }\n}\n","export class FileUtil {\n public static saveAs(blob: Blob, filename: string) {\n const blobUrl = URL.createObjectURL(blob);\n const link = document.createElement('a');\n\n link.style.display = 'none';\n link.target = '_blank';\n link.href = blobUrl;\n link.download = filename;\n\n document.body.appendChild(link);\n\n link.dispatchEvent(\n new MouseEvent('click', {\n bubbles: true,\n cancelable: true,\n view: window\n })\n );\n\n document.body.removeChild(link);\n }\n}\n","import {ClassType} from '../types';\nimport {ModelUtil, TypeUtil} from '../utils';\n\nexport class ModelDescriptor<T> {\n private readonly _type: ClassType<T>;\n private readonly _typeName: string;\n private _i18nBaseKey: string;\n private _idPropertyName?: string;\n private _titlePropertyName?: string;\n\n constructor(modelType: ClassType<T>, idProperty?: string, titleProperty?: string, i18nBaseKey?: string | ClassType<unknown>) {\n this._type = modelType;\n this._idPropertyName = idProperty ?? ModelUtil.findIdAttribute(modelType) ?? undefined;\n this._titlePropertyName = titleProperty ?? ModelUtil.findTitleAttribute(modelType) ?? undefined;\n this._typeName = TypeUtil.findTypeName(this._type);\n this._i18nBaseKey = (typeof i18nBaseKey === 'string' || typeof i18nBaseKey === 'undefined' ? i18nBaseKey : TypeUtil.findTypeName(i18nBaseKey)) ?? this._typeName;\n }\n\n public get type() {\n return this._type;\n }\n\n public get typeName() {\n return this._typeName;\n }\n\n public get i18nBaseKey() {\n return this._i18nBaseKey;\n }\n\n public get idPropertyName() {\n return this._idPropertyName;\n }\n\n public get titlePropertyName() {\n return this._titlePropertyName;\n }\n\n public withIdPropertyName(idProperty: string): this {\n this._idPropertyName = idProperty;\n return this;\n }\n\n public withTitlePropertyName(titleProperty: string): this {\n this._titlePropertyName = titleProperty;\n return this;\n }\n\n public withI18nBase(base: ClassType<T> | string): this {\n if (typeof base !== 'string') {\n base = TypeUtil.findTypeName(base);\n }\n this._i18nBaseKey = base;\n return this;\n }\n\n public copy(): ModelDescriptor<T> {\n const model = new ModelDescriptor(this._type, this._idPropertyName, this._titlePropertyName);\n return model;\n }\n}\n","import {ButtonStyleBuilder} from '../../styles';\n\nexport class ActionButtonDescriptor {\n private _label?: string | null;\n\n private _icon?: string | null;\n private _iconPosition: 'left' | 'right' = 'left';\n\n private _styleClass = new ButtonStyleBuilder();\n\n private _badge?: string;\n private _tooltip?: string;\n\n public withLabel(label?: string | null): this {\n this._label = label;\n return this;\n }\n\n public withIcon(icon: string | null): this {\n this._icon = icon;\n return this;\n }\n\n public withIconPosition(iconPosition: 'left' | 'right'): this {\n this._iconPosition = iconPosition;\n return this;\n }\n\n public withStyleClass(style: ButtonStyleBuilder): this {\n this._styleClass = style;\n return this;\n }\n\n public withBadge(badge: string): this {\n this._badge = badge;\n return this;\n }\n\n public withTooltip(tooltip: string): this {\n this._tooltip = tooltip;\n return this;\n }\n\n public get label() {\n return this._label;\n }\n\n public get icon() {\n return this._icon;\n }\n\n public get iconPosition() {\n return this._iconPosition;\n }\n\n public get styleClass() {\n return this._styleClass;\n }\n\n public get badge() {\n return this._badge;\n }\n\n public get tooltip() {\n return this._tooltip;\n }\n\n public copy(): ActionButtonDescriptor {\n const descriptor = new ActionButtonDescriptor();\n descriptor._label = this._label;\n descriptor._icon = this._icon;\n descriptor._iconPosition = this._iconPosition;\n descriptor._styleClass = this._styleClass.copy();\n descriptor._badge = this._badge;\n descriptor._tooltip = this._tooltip;\n return descriptor;\n }\n}\n","import {Confirmation} from 'primeng/api';\n\nimport {ActionContext} from '../../components/action/models';\nimport {ButtonStyleBuilder} from '../../styles';\nimport {StyleLevelEnum} from '../../styles/models';\nimport {ActionButtonDescriptor} from './action-button.descriptor';\n\nexport class ActionConfirmationDialogDescriptor<T> {\n private _icon?: string; // Icon to display next to message.\n private _title?: string | null; // Translation for title text of the dialog.\n private _message?: string | null; // Translation for body text of the dialog.\n\n private _acceptButton: ActionButtonDescriptor;\n private _rejectButton?: ActionButtonDescriptor;\n\n private _closeOnEscape = true; // Defines if dialog closes when esc key is pressed.\n private _closable = true; // Defines if dialog is closable.\n private _runConfirmationConfigMapFn?: ConfigurationConfigMapFn<T>; //function used to generate the confirmation dialogue. **WARNING** changing the *accept* and *reject* methods of the *confirmConfig* parameter may lead to unexpected behaviour\n\n constructor() {\n this._acceptButton = new ActionButtonDescriptor().withIcon('pi pi-check').withStyleClass(new ButtonStyleBuilder(StyleLevelEnum.Default));\n this._rejectButton = new ActionButtonDescriptor().withIcon('pi pi-times').withStyleClass(new ButtonStyleBuilder(StyleLevelEnum.Default).withTextButton());\n this._icon = 'pi pi-exclamation-triangle';\n }\n\n public withIcon(icon?: string): this {\n this._icon = icon;\n return this;\n }\n\n public withTitle(title?: string | null): this {\n this._title = title;\n return this;\n }\n\n public withMessage(message?: string | null): this {\n this._message = message;\n return this;\n }\n\n public withAcceptButton(actionButtonDescriptor: ActionButtonDescriptor): this {\n this._acceptButton = actionButtonDescriptor;\n return this;\n }\n\n public withRejectButton(actionButtonDescriptor?: ActionButtonDescriptor): this {\n this._rejectButton = actionButtonDescriptor;\n return this;\n }\n\n /**\n * set if dialog can be closed on escaped pressed\n * if true, then closable is also set to true\n * @param closeOnEscape\n */\n public withCloseOnEscape(closeOnEscape: boolean): this {\n if (closeOnEscape) {\n this._closable = true;\n }\n this._closeOnEscape = closeOnEscape;\n return this;\n }\n\n public withClosable(closable: boolean): this {\n this._closable = closable;\n return this;\n }\n\n public withRunConfirmationConfigMapFn(runConfirmationConfigMapFn?: ConfigurationConfigMapFn<T>): this {\n this._runConfirmationConfigMapFn = runConfirmationConfigMapFn;\n return this;\n }\n\n public get icon() {\n return this._icon;\n }\n\n public get title() {\n return this._title;\n }\n\n public get message() {\n return this._message;\n }\n\n public get closeOnEscape() {\n return this._closeOnEscape;\n }\n\n public get closable() {\n return this._closable;\n }\n\n public get runConfirmationConfigMapFn() {\n return this._runConfirmationConfigMapFn;\n }\n\n public get acceptButton() {\n return this._acceptButton;\n }\n\n public get rejectButton() {\n return this._rejectButton;\n }\n}\n\nexport type ConfigurationConfigMapFn<T> = (ctx: ActionContext<T, any>, confirmConfig: Confirmation) => Confirmation;\n","import {Type} from '@angular/core';\nimport {Params, QueryParamsHandling} from '@angular/router';\n\nimport {Observable, of} from 'rxjs';\n\nimport {ModelDescriptor} from '../';\nimport {ActionContext, ActionContextValidation, IActionComponent, TableviewActionDefaultCategories} from '../../components/action/models';\nimport {DataProvider, EditorDataProvider, IDataProvider, IEditorDataProvider} from '../../data-providers';\nimport {MngErrorInternal} from '../../models';\nimport {APermissions} from '../../security/model';\nimport {ButtonStyleBuilder} from '../../styles';\nimport {StyleLevelEnum, StyleSizeEnum} from '../../styles/models';\nimport {ClassType, IdType} from '../../types';\nimport {ActionDataProviderUtil, TypeUtil} from '../../utils';\nimport {EditorDescriptor} from '../editor';\nimport {ActionActivationTriggerEnum, ActionEditorSubmitTypeEnum, ActionPositionEnum, ActionTypeEnum} from '../types';\nimport {ActionButtonDescriptor} from './action-button.descriptor';\nimport {ActionConfirmationDialogDescriptor} from './action-confirmation.descriptor';\n\nexport class ActionDescriptor<T> {\n protected readonly _model: ModelDescriptor<T> | null;\n protected readonly _actionName: string;\n protected readonly _actionNameLong: string;\n protected readonly _parentType?: ClassType<unknown>;\n protected readonly _parentTypeName?: string;\n protected readonly _parentProperty?: string;\n\n protected _i18nModelActionBaseKey?: string;\n\n protected _type: ActionTypeEnum = ActionTypeEnum.Direct;\n protected _activationTrigger: ActionActivationTriggerEnum = ActionActivationTriggerEnum.OnClick;\n protected _position: ActionPositionEnum = ActionPositionEnum.ToolbarRight;\n protected _level: StyleLevelEnum = StyleLevelEnum.Default;\n private _positionTableviewCategories?: string[];\n protected _tableviewCategory?: string;\n\n protected _routeUrl: string | null = null;\n\n protected _dataProvider?: IDataProvider<T, any>;\n protected _runFunction?: (ctx: ActionContext<T, any>) => Observable<T | undefined | null>;\n protected _isVisibleFunction?: (ctx: ActionContextValidation<T, any>) => Observable<boolean>;\n protected _isEnabledFunction?: (ctx: ActionContextValidation<T, any>) => Observable<boolean>;\n\n protected _runConfirmationDialogDescriptor?: ActionConfirmationDialogDescriptor<T>;\n\n protected _hasRunNotificationSuccess = true;\n protected _runNotificationSuccessTitle?: string;\n protected _runNotificationSuccessMessage?: string;\n\n protected _hasRunNotificationError = true;\n protected _runNotificationErrorTitle?: string;\n protected _runNotificationErrorMessage?: string;\n\n protected _afterRunAction?: ActionDescriptor<unknown>;\n protected _onRunErrorAction?: ActionDescriptor<T>;\n\n // security\n protected _permissions?: APermissions;\n\n //button\n protected _button = new ActionButtonDescriptor();\n\n // multiple row selection\n protected _hasItemsSelection = false;\n\n // custom action component\n protected _component?: Type<IActionComponent<T>>;\n\n // subactions\n protected _subactionsAsMenu = false;\n protected _subactions: Array<ActionDescriptor<T>> = [];\n\n constructor(model: ModelDescriptor<T> | null, actionName: string, parentType?: ClassType<unknown>, parentProperty?: string) {\n this._model = model;\n this._actionName = actionName;\n\n if ((parentType && !parentProperty) || (!parentProperty && parentProperty)) {\n throw new MngErrorInternal(`Provide both the parent type and parent property or none: ${parentType}, ${parentProperty}.`, 'ActionDescriptor error').consoleError();\n }\n this._parentType = parentType;\n this._parentTypeName = parentType ? TypeUtil.findTypeName(parentType) : undefined;\n this._parentProperty = parentProperty;\n\n this.setI18nModelActionBaseKey();\n\n let displayName = actionName;\n if (this._model) displayName = `${this._model.typeName}.${displayName}`;\n if (this._parentTypeName) {\n displayName = `${this._parentTypeName}.${this._parentProperty}_${displayName}`;\n }\n this._actionNameLong = displayName;\n }\n\n public get model() {\n return this._model;\n }\n\n public get parentTypeName() {\n return this._parentTypeName;\n }\n\n public get parentProperty() {\n return this._parentProperty;\n }\n\n public get i18nModelActionBaseKey() {\n return this._i18nModelActionBaseKey;\n }\n\n public get type() {\n return this._type;\n }\n\n public get activationTrigger() {\n return this._activationTrigger;\n }\n\n public get position() {\n return this._position;\n }\n\n public get level() {\n return this._level;\n }\n\n public get routeUrl() {\n return this._routeUrl;\n }\n\n public get dataProvider() {\n return this._dataProvider;\n }\n\n public get hasRunFunction(): boolean {\n return typeof this._runFunction === 'function';\n }\n\n public get runFunction(): (ctx: ActionContext<T, any>) => Observable<T | undefined | null> {\n if (!this._runFunction) {\n throw new MngErrorInternal('Run function is not defined and cannot be invoked', 'ActionDescriptor error').consoleError();\n }\n return this._runFunction;\n }\n\n public get isVisibleFunction() {\n return this._isVisibleFunction;\n }\n\n public get isEnabledFunction() {\n return this._isEnabledFunction;\n }\n\n public get actionName() {\n return this._actionName;\n }\n\n public get actionNameLong() {\n return this._actionNameLong;\n }\n\n public get className() {\n return this.button.styleClass.customClass;\n }\n\n public get runConfirmationDialogDescriptor() {\n return this._runConfirmationDialogDescriptor;\n }\n\n public get hasRunConfirmation() {\n return this._runConfirmationDialogDescriptor !== null && this._runConfirmationDialogDescriptor !== undefined;\n }\n\n public get hasRunNotificationSuccess() {\n return this._hasRunNotificationSuccess;\n }\n\n public get runNotificationSuccessTitle() {\n return this._runNotificationSuccessTitle;\n }\n\n public get runNotificationSuccessMessage() {\n return this._runNotificationSuccessMessage;\n }\n\n public get hasRunNotificationError() {\n return this._hasRunNotificationError;\n }\n\n public get runNotificationErrorTitle() {\n return this._runNotificationErrorTitle;\n }\n\n public get runNotificationErrorMessage() {\n return this._runNotificationErrorMessage;\n }\n\n public get afterRunAction() {\n return this._afterRunAction;\n }\n\n public get onRunErrorAction() {\n return this._onRunErrorAction;\n }\n\n public get permissions() {\n return this._permissions;\n }\n\n public get tableviewCategory() {\n return this._tableviewCategory;\n }\n\n public get hasItemsSelection() {\n return this._hasItemsSelection;\n }\n\n public get button() {\n return this._button;\n }\n\n public get component() {\n return this._component;\n }\n\n public get positionTableviewCategories() {\n return this._positionTableviewCategories;\n }\n\n public get subactionsAsMenu() {\n return this._subactionsAsMenu;\n }\n\n public get subactions() {\n return this._subactions;\n }\n\n protected setI18nModelActionBaseKey(base?: string) {\n if (this._parentTypeName || this._model) {\n this._i18nModelActionBaseKey = this._parentTypeName\n ? `${this._parentTypeName}.actions.${this._parentProperty}_${this._actionName}`\n : `${base ?? this._model!.i18nBaseKey}.actions.${this._actionName}`;\n }\n }\n\n public withDataProvider(dataProvider: IDataProvider<T, any>): this {\n this._dataProvider = dataProvider;\n return this;\n }\n\n public withServiceType<S>(serviceType: Type<S>): this {\n if (!this._model) {\n throw new MngErrorInternal(`Cannot set data provider if no model type is provided for action ${this._actionName}`, 'ActionDescriptor error').consoleError();\n }\n this._dataProvider = new DataProvider(this._model.type, serviceType);\n return this;\n }\n\n public withRunFunction<S>(fn: (ctx: ActionContext<T, S>) => Observable<T | undefined | null>): this {\n this._runFunction = fn;\n return this;\n }\n\n public withIsVisibleFunction<S>(fn: (ctx: ActionContextValidation<T, S>) => Observable<boolean>): this {\n this._isVisibleFunction = fn;\n return this;\n }\n\n public withIsEnabledFunction<S>(fn: (ctx: ActionContextValidation<T, S>) => Observable<boolean>): this {\n this._isEnabledFunction = fn;\n return this;\n }\n\n public withRouteTrigger(routeUrl: string): this {\n this._activationTrigger = ActionActivationTriggerEnum.OnRoute;\n this._routeUrl = routeUrl;\n return this;\n }\n\n public withPosition(position: ActionPositionEnum): this {\n this._position = position;\n return this;\n }\n\n /**\n * creates confirmation action with default style based on action descriptor\n */\n public withRunConfirmation(): ActionConfirmationDialogDescriptor<T> {\n this._runConfirmationDialogDescriptor = new ActionConfirmationDialogDescriptor<T>();\n this._runConfirmationDialogDescriptor.acceptButton.styleClass.withActionLevel(this._level);\n this._runConfirmationDialogDescriptor.rejectButton?.styleClass.withActionLevel(this._level);\n\n return this._runConfirmationDialogDescriptor;\n }\n\n /**\n * Add a configuration dialogue to action using ActionConfigurationDescriptor\n * @param runConfirmationDialogDescriptor descriptor with customizable information for dialog\n */\n public withRunConfirmationDescriptor(runConfirmationDialogDescriptor: ActionConfirmationDialogDescriptor<T>): this {\n this._runConfirmationDialogDescriptor = runConfirmationDialogDescriptor;\n return this;\n }\n\n public withRunNotificationSuccess(title?: string, message?: string, hasNotification = true): this {\n this._hasRunNotificationSuccess = hasNotification;\n this._runNotificationSuccessTitle = title;\n this._runNotificationSuccessMessage = message;\n return this;\n }\n\n public withRunNotificationError(title?: string, message?: string, hasNotification = true): this {\n this._hasRunNotificationError = hasNotification;\n this._runNotificationErrorTitle = title;\n this._runNotificationErrorMessage = message;\n return this;\n }\n\n public withAfterRunAction<RT>(action: ActionDescriptor<RT>): this {\n this._afterRunAction = action as ActionDescriptor<unknown>;\n return this;\n }\n\n public withOnRunErrorAction(action: ActionDescriptor<T>): this {\n this._onRunErrorAction = action;\n return this;\n }\n\n public withPermissions(permissions: APermissions): this {\n if (this._tableviewCategory) {\n console.warn(`Permissions set on action ${this._actionNameLong} with route type '${this._tableviewCategory}' will be omitted in route guard validation.`);\n }\n this._permissions = permissions;\n return this;\n }\n\n public withTableviewCategory(permissionsRouteType: string): this {\n this._tableviewCategory = permissionsRouteType;\n return this;\n }\n\n public withButtonDescriptor(button: ActionButtonDescriptor): this {\n this._button = button;\n return this;\n }\n\n public withButton(label?: string | null, icon: string | null = null, styleLevel = StyleLevelEnum.Default, styleText = false): this {\n this._button = new ActionButtonDescriptor().withLabel(label).withIcon(icon).withStyleClass(new ButtonStyleBuilder(styleLevel).withTextButton(styleText));\n return this;\n }\n\n public withItemsSelection(hasSelection = true): this {\n this._hasItemsSelection = hasSelection;\n this._isEnabledFunction = this._isEnabledFunction ?? (ctx => of((ctx.parameters.selectedItems?.length ?? 0) > 0));\n return this;\n }\n\n public withComponent(component: Type<IActionComponent<T>>): this {\n this._component = component;\n return this;\n }\n\n public withPositionTableviewCategories(positionTableviewCategories: string[]): this {\n this._positionTableviewCategories = positionTableviewCategories;\n return this;\n }\n\n public withI18nBase(base: ClassType<unknown> | string): this {\n if (typeof base !== 'string') {\n base = TypeUtil.findTypeName(base);\n }\n this.setI18nModelActionBaseKey(base);\n return this;\n }\n\n public withSubactionsAsMenu(): this {\n this._subactionsAsMenu = true;\n return this;\n }\n\n public withSubactions(...subactions: Array<ActionDescriptor<T>>): this {\n this._subactions.push(...subactions);\n return this;\n }\n\n public copyTo(descriptor: ActionDescriptor<T>): ActionDescriptor<T> {\n descriptor._i18nModelActionBaseKey = this._i18nModelActionBaseKey;\n descriptor._type = this._type;\n descriptor._activationTrigger = this._activationTrigger;\n descriptor._position = this._position;\n descriptor._level = this._level;\n descriptor._positionTableviewCategories = this._positionTableviewCategories;\n\n descriptor._tableviewCategory = this._tableviewCategory;\n descriptor._routeUrl = this._routeUrl;\n descriptor._dataProvider = this._dataProvider;\n\n descriptor._runFunction = this._runFunction;\n descriptor._isVisibleFunction = this._isVisibleFunction;\n descriptor._isEnabledFunction = this._isEnabledFunction;\n\n descriptor._runConfirmationDialogDescriptor = this._runConfirmationDialogDescriptor;\n\n descriptor._hasRunNotificationSuccess = this._hasRunNotificationSuccess;\n descriptor._runNotificationSuccessTitle = this._runNotificationSuccessTitle;\n descriptor._runNotificationSuccessMessage = this._runNotificationSuccessMessage;\n\n descriptor._hasRunNotificationError = this._hasRunNotificationError;\n descriptor._runNotificationErrorTitle = this._runNotificationErrorTitle;\n descriptor._runNotificationErrorMessage = this._runNotificationErrorMessage;\n\n descriptor._afterRunAction = this._afterRunAction;\n descriptor._onRunErrorAction = this._onRunErrorAction;\n\n descriptor._permissions = this._permissions;\n\n descriptor._button = this._button.copy();\n\n descriptor._hasItemsSelection = this._hasItemsSelection;\n descriptor._component = this._component;\n descriptor._subactionsAsMenu = this._subactionsAsMenu;\n descriptor._subactions = this._subactions;\n\n return descriptor;\n }\n}\n\nexport class ActionSimpleDescriptor<T> extends ActionDescriptor<T> {\n constructor(actionName: string, modelType?: ClassType<T>, idProperty?: string, titleProperty?: string, i18nBaseKey?: string | ClassType<unknown>) {\n const model = modelType ? new ModelDescriptor<T>(modelType, idProperty, titleProperty, i18nBaseKey) : null;\n super(model, actionName);\n }\n}\n\nexport class ActionEditorDescriptor<T> extends ActionDescriptor<T> {\n private readonly _editorDescriptor: EditorDescriptor<T>;\n\n protected _editorActions: ActionDescriptor<T>[] = [];\n protected _editorTitle?: string | null = undefined;\n protected _editorTitleParams?: any = undefined;\n\n protected _hasFetchNotificationSuccess = false;\n protected _fetchNotificationSuccessTitle?: string;\n protected _fetchNotificationSuccessMessage?: string;\n\n protected _dialogSize = StyleSizeEnum.Normal;\n protected _dialogClassName?: string;\n\n protected override _dataProvider?: IEditorDataProvider<T, any> = undefined;\n protected _fetchFunction?: (ctx: ActionContext<T, any>) => Observable<T>;\n protected _submitFunction?: (ctx: ActionContext<T, any>) => Observable<T>;\n\n protected _editorComponent?: Type<any>;\n\n protected _resubmitEnabled?: boolean;\n protected _resubmitRefetch = true;\n\n constructor(editorDescriptor: EditorDescriptor<T>, actionName: string, parentType?: ClassType<unknown>, parentProperty?: string) {\n super(editorDescriptor.model, actionName, parentType, parentProperty);\n this._type = ActionTypeEnum.Editor;\n this._editorDescriptor = editorDescriptor;\n this._editorActions.push(ActionEditorSubmitDescriptor.forPrimary(this), ActionEditorSubmitDescriptor.forSecondary(this));\n }\n\n public get editorTitle() {\n return this._editorTitle;\n }\n\n public get editorTitleParams() {\n return this._editorTitleParams;\n }\n\n public get editorDescriptor() {\n return this._editorDescriptor;\n }\n\n public get dialogSize() {\n return this._dialogSize;\n }\n\n public get dialogClassName() {\n return this._dialogClassName;\n }\n\n public get hasFetchNotificationSuccess() {\n return this._hasFetchNotificationSuccess;\n }\n\n public get fetchNotificationSuccessTitle() {\n return this._fetchNotificationSuccessTitle;\n }\n\n public get fetchNotificationSuccessMessage() {\n return this._fetchNotificationSuccessMessage;\n }\n\n public override get dataProvider() {\n return this._dataProvider;\n }\n\n public override get runFunction(): (ctx: ActionContext<T, unknown>) => Observable<T> {\n throw new MngErrorInternal('Run function cannot be used in editor action. Use submit function instead!', 'ActionDescriptor error').consoleError();\n }\n\n public get fetchFunction() {\n return this._fetchFunction;\n }\n\n public get submitFunction() {\n return this._submitFunction;\n }\n\n public get editorActions() {\n return this._editorActions;\n }\n\n public get editorComponent() {\n return this._editorComponent;\n }\n\n public get resubmitEnabled() {\n return this._resubmitEnabled;\n }\n\n public get resubmitRefetch() {\n return this._resubmitRefetch;\n }\n\n public withEditorTitle(title: string | null, params?: any): this {\n this._editorTitle = title;\n this._editorTitleParams = params;\n return this;\n }\n\n public override withDataProvider(dataProvider: IEditorDataProvider<T, any>): this {\n this._dataProvider = dataProvider;\n return this;\n }\n\n public override withServiceType<S>(serviceType: Type<S>): this {\n if (!this._model) {\n throw new MngErrorInternal(`Cannot set data provider if no model type is provided for action ${this._actionName}`, 'ActionDescriptor error').consoleError();\n }\n this._dataProvider = new EditorDataProvider(this._model.type, serviceType);\n return this;\n }\n\n public withDialogSize(size = StyleSizeEnum.Normal): this {\n this._dialogSize = size;\n return this;\n }\n\n public withDialogClassName(className: string): this {\n this._dialogClassName = className;\n return this;\n }\n\n public override withRunFunction<S>(fn: (ctx: ActionContext<T, S>) => Observable<T>): this {\n return this.withSubmitFunction(fn as (ctx: ActionContext<T, S>) => Observable<T>);\n }\n\n public withFetchFunction<S>(fn: (ctx: ActionContext<T, S>) => Observable<T>): this {\n this._fetchFunction = fn;\n return this;\n }\n\n public withSubmitFunction<S>(fn: (ctx: ActionContext<T, S>) => Observable<T>): this {\n this._submitFunction = fn;\n return this;\n }\n\n public withFetchNotificationError(title?: string, message?: string, hasNotification = true): this {\n this._hasFetchNotificationSuccess = hasNotification;\n this._fetchNotificationSuccessTitle = title;\n this._fetchNotificationSuccessMessage = message;\n return this;\n }\n\n public withEditorAction(action: ActionDescriptor<T>): this {\n this._editorActions.push(action);\n return this;\n }\n\n public withEditorActions(actions: ActionDescriptor<T>[]): this {\n this._editorActions = actions;\n return this;\n }\n\n public withEditorComponent(editorComponent: Type<any>): this {\n this._editorComponent = editorComponent;\n return this;\n }\n\n public withResubmit(enabled?: boolean, refetch = true): this {\n this._resubmitEnabled = enabled;\n this._resubmitRefetch = refetch;\n return this;\n }\n}\n\nexport class ActionEditorSubmitDescriptor<T> extends ActionDescriptor<T> {\n private readonly _editorAction: ActionEditorDescriptor<T>;\n private readonly _submitType: ActionEditorSubmitTypeEnum;\n\n constructor(editorAction: ActionEditorDescriptor<T>, submitType = ActionEditorSubmitTypeEnum.Submit) {\n super(editorAction.model, submitType === ActionEditorSubmitTypeEnum.Submit ? `${editorAction.actionName}.submit` : `${editorAction.actionName}.cancel`);\n this._editorAction = editorAction;\n this._submitType = submitType;\n this._position = ActionPositionEnum.FooterRight;\n\n this.button.styleClass.withActionLevel(editorAction.level).withTextButton();\n }\n\n /**\n * creates primary action with primary button style\n * @param editorAction\n * @param submitType\n */\n static forPrimary<T>(editorAction: ActionEditorDescriptor<T>, submitType = ActionEditorSubmitTypeEnum.Submit): ActionEditorSubmitDescriptor<T> {\n return new ActionEditorSubmitDescriptor(editorAction, submitType).withButtonDescriptor(new ActionButtonDescriptor().withStyleClass(new ButtonStyleBuilder()));\n }\n\n /**\n * creates secondary button with text button style\n * @param editorAction\n * @param submitType\n */\n static forSecondary<T>(editorAction: ActionEditorDescriptor<T>, submitType = ActionEditorSubmitTypeEnum.Cancel): ActionEditorSubmitDescriptor<T> {\n return new ActionEditorSubmitDescriptor(editorAction, submitType).withButtonDescriptor(\n new ActionButtonDescriptor().withStyleClass(new ButtonStyleBuilder().withTextButton())\n );\n }\n\n public get submitType() {\n return this._submitType;\n }\n}\n\nexport class ActionEditorDetailsDescriptor<T> extends ActionEditorDescriptor<T> {\n public static readonly ACTION_NAME = 'details';\n\n constructor(editorDescriptor: EditorDescriptor<T>) {\n super(editorDescriptor, ActionEditorDetailsDescriptor.ACTION_NAME);\n this.withPosition(ActionPositionEnum.RowClick);\n this.withRouteTrigger(':itemId');\n this.withFetchFunction(ActionDataProviderUtil.runFetchOrFail);\n\n this.withEditorActions([new ActionEditorSubmitDescriptor(this, ActionEditorSubmitTypeEnum.Cancel)]);\n this.withTableviewCategory(TableviewActionDefaultCategories.DETAILS);\n }\n\n public override withServiceType<S>(serviceType: Type<S>): this {\n return this.withServiceFetchFunction(serviceType);\n }\n\n public withServiceFetchFunction<S>(serviceType: Type<S>, fetchFn?: (id: IdType, service?: S) => Observable<T>): this {\n const dataProvider = new EditorDataProvider(this._model!.type, serviceType);\n if (fetchFn) {\n dataProvider.withFetch(fetchFn);\n }\n this._dataProvider = dataProvider;\n return this;\n }\n}\n\nexport class ActionEditorAddDescriptor<T> extends ActionEditorDescriptor<T> {\n public static readonly ACTION_NAME = 'add';\n\n constructor(editorDescriptor: EditorDescriptor<T>) {\n super(editorDescriptor, ActionEditorAddDescriptor.ACTION_NAME);\n this.withPosition(ActionPositionEnum.ToolbarLeft);\n this.withRouteTrigger('add');\n this.withSubmitFunction(ActionDataProviderUtil.runCreateOrFail);\n\n this.button.withIcon('pi pi-plus');\n this.withTableviewCategory(TableviewActionDefaultCategories.ADD);\n }\n\n public override withServiceType<S>(serviceType: Type<S>): this {\n return this.withServiceSubmitFunction(serviceType);\n }\n\n public withServiceSubmitFunction<S>(serviceType: Type<S>, createFn?: (item?: T, service?: S) => Observable<T>, fetchFn?: (id: IdType, service?: S) => Observable<T>): this {\n const dataProvider = new EditorDataProvider(this._model!.type, serviceType);\n if (createFn) {\n dataProvider.withCreate(createFn);\n }\n if (fetchFn) {\n dataProvider.withFetch(fetchFn);\n }\n this._dataProvider = dataProvider;\n return this;\n }\n}\n\nexport class ActionEditorEditDescriptor<T> extends ActionEditorDescriptor<T> {\n public static readonly ACTION_NAME = 'edit';\n\n constructor(editorDescriptor: EditorDescriptor<T>) {\n super(editorDescriptor, ActionEditorEditDescriptor.ACTION_NAME);\n this.withPosition(ActionPositionEnum.RowInline);\n this.button.styleClass.withSize(StyleSizeEnum.Small);\n this.withRouteTrigger(':itemId/edit');\n this.withFetchFunction(ActionDataProviderUtil.runFetchOrFail);\n this.withSubmitFunction(ActionDataProviderUtil.runUpdateOrFail);\n this.withTableviewCategory(TableviewActionDefaultCategories.EDIT);\n this.button.withLabel(null).withIcon('pi pi-pencil');\n }\n\n public override withServiceType<S>(serviceType: Type<S>): this {\n return this.withServiceSubmitFunction(serviceType);\n }\n\n public withServiceSubmitFunction<S>(\n serviceType: Type<S>,\n updateFn?: (id: IdType, item?: T, service?: S) => Observable<T>,\n fetchFn?: (id: IdType, service?: S) => Observable<T>\n ): this {\n const dataProvider = new EditorDataProvider(this._model!.type, serviceType);\n if (updateFn) {\n dataProvider.withUpdate(updateFn);\n }\n if (fetchFn) {\n dataProvider.withFetch(fetchFn);\n }\n this._dataProvider = dataProvider;\n return this;\n }\n}\n\nexport class ActionDeleteDescriptor<T> extends ActionDescriptor<T> {\n public static readonly ACTION_NAME = 'delete';\n\n constructor(model: ModelDescriptor<T>) {\n super(model, ActionDeleteDescriptor.ACTION_NAME);\n this.withPosition(ActionPositionEnum.RowInline);\n this.button.styleClass.withSize(StyleSizeEnum.Small);\n this.withRunFunction(ActionDataProviderUtil.runDeleteOrFail);\n this.button.styleClass.withActionLevel(StyleLevelEnum.Danger);\n this.withRunConfirmation();\n this.withTableviewCategory(TableviewActionDefaultCategories.DELETE);\n this.button.withLabel(null).withIcon('pi pi-trash');\n }\n\n public override withServiceType<S>(serviceType: Type<S>): this {\n return this.withServiceDeleteFunction(serviceType);\n }\n\n public withServiceDeleteFunction<S>(serviceType: Type<S>, deleteFn?: (id: IdType, item?: T, service?: S) => Observable<T>): this {\n const dataProvider = new EditorDataProvider(this._model!.type, serviceType);\n if (deleteFn) {\n dataProvider.withDelete(deleteFn);\n }\n this._dataProvider = dataProvider;\n return this;\n }\n}\n\nexport class ActionLinkDescriptor<T> extends ActionDescriptor<T> {\n private _url = '';\n private _pathSegments: string[] = [];\n private _queryParams?: Params;\n private _queryParamsHandling?: QueryParamsHandling;\n private _replaceUrl = false;\n private _target = '_self';\n private _isStyleLink = false;\n\n constructor(model: ModelDescriptor<T> | null = null, actionName = 'link') {\n super(model, actionName);\n }\n\n public static fromActionDescriptor<T>(actionDescriptor: ActionDescriptor<T>): ActionLinkDescriptor<T> {\n const descriptor = new ActionLinkDescriptor<T>(actionDescriptor.model, actionDescriptor.actionName);\n\n actionDescriptor.copyTo(descriptor);\n\n descriptor._dataProvider = undefined;\n descriptor._runConfirmationDialogDescriptor = undefined;\n\n descriptor._hasRunNotificationSuccess = false;\n descriptor._runNotificationSuccessTitle = undefined;\n descriptor._runNotificationSuccessMessage = undefined;\n\n descriptor._hasRunNotificationError = false;\n descriptor._runNotificationErrorTitle = undefined;\n descriptor._runNotificationErrorMessage = undefined;\n\n descriptor._afterRunAction = undefined;\n descriptor._onRunErrorAction = undefined;\n\n descriptor._hasItemsSelection = false;\n descriptor._subactionsAsMenu = false;\n descriptor._subactions = [];\n\n return descriptor;\n }\n\n public get url(): string {\n return this._url;\n }\n\n public get pathSegments(): string[] {\n return this._pathSegments;\n }\n\n public get queryParams(): Params | undefined {\n return this._queryParams;\n }\n\n public get queryParamsHandling(): QueryParamsHandling | undefined {\n return this._queryParamsHandling;\n }\n\n public get replaceUrl(): boolean {\n return this._replaceUrl;\n }\n\n public get target(): string {\n return this._target;\n }\n\n public get isStyleLink(): boolean {\n return this._isStyleLink;\n }\n\n public withHref(url: string): this {\n this._url = url;\n return this;\n }\n\n public withRouterLink(...pathSegments: string[]): this {\n this._pathSegments = pathSegments;\n return this;\n }\n\n public withQueryParams(queryParams: Params, queryParamsHandling?: QueryParamsHandling): this {\n this._queryParams = queryParams;\n this._queryParamsHandling = queryParamsHandling;\n return this;\n }\n\n public withReplaceUrl(replaceUrl = false): this {\n this._replaceUrl = replaceUrl;\n return this;\n }\n\n public withTarget(target: '_self' | '_blank' = '_self'): this {\n this._target = target;\n return this;\n }\n\n public withStyleLink(isStyleLink: boolean): this {\n this._isStyleLink = isStyleLink;\n return this;\n }\n}\n","import {ApplicationRef, ComponentRef, Directive, ElementRef, EventEmitter, Injector, Input, OnInit, Output, Type, ViewContainerRef, createComponent} from '@angular/core';\n\nimport {IColumnValueComponent} from '../models';\n\n@Directive({\n standalone: true,\n selector: '[mngComponent]'\n})\nexport class MngComponentDirective<C> implements OnInit {\n @Input('mngComponent') component!: Type<C>;\n @Input() inputs?: {[key: string]: any};\n @Input() attachToHost = false;\n @Output('instanceCreated') private componentInstanceEventEmitter = new EventEmitter<C>();\n\n public componentRef!: ComponentRef<C>;\n\n constructor(public viewContainerRef: ViewContainerRef, private elementRef: ElementRef, private applicationRef: ApplicationRef, private injector: Injector) {}\n\n ngOnInit() {\n if (this.attachToHost) {\n this.componentRef = createComponent(this.component, {\n hostElement: this.elementRef.nativeElement,\n environmentInjector: this.applicationRef.injector,\n elementInjector: this.injector\n });\n } else {\n this.viewContainerRef.clear();\n this.componentRef = this.viewContainerRef.createComponent<any>(this.component);\n }\n\n if (this.inputs) {\n if (this.isCmpInstanceOfColumnValue(this.componentRef.instance)) {\n this.componentRef.instance.setColumnValue(this.inputs['value'], this.inputs['item'], this.inputs['descriptor']);\n } else {\n for (const input in this.inputs) {\n this.componentRef.setInput(input, this.inputs[input]);\n }\n }\n }\n\n if (this.attachToHost) {\n this.applicationRef.attachView(this.componentRef.hostView);\n }\n\n this.componentInstanceEventEmitter.next(this.componentRef.instance);\n }\n\n private isCmpInstanceOfColumnValue(cmp: any): cmp is IColumnValueComponent<any> {\n return typeof cmp.setColumnValue === 'function';\n }\n}\n","import {Directive, Input, TemplateRef, ViewContainerRef} from '@angular/core';\n\n@Directive({\n standalone: true,\n selector: '[mngTemplate]'\n})\nexport class MngTemplateDirective {\n @Input() type!: string;\n @Input('mngTemplate') name!: string;\n\n constructor(public template: TemplateRef<any>, private viewContainerRef: ViewContainerRef) {}\n\n public getType(): string {\n return this.name;\n }\n\n public getViewContainerRef(): ViewContainerRef {\n return this.viewContainerRef;\n }\n}\n","export enum AuthorizationTypeEnum {\n All = 'ALL',\n Any = 'ANY',\n Rbac = 'ROLE_BASED_ACCESS_CONTROL',\n Service = 'SERVICE'\n}\n","import {Type} from '@angular/core';\n\nimport {AuthorizationTypeEnum} from './authorization.type';\nimport {IPermissionService} from './permission-service.interface';\n\nexport abstract class APermissions {\n private readonly _authorizationType: AuthorizationTypeEnum;\n\n constructor(type: AuthorizationTypeEnum) {\n this._authorizationType = type;\n }\n\n public get authorizationType() {\n return this._authorizationType;\n }\n}\n\nexport namespace Permissions {\n export class All extends APermissions {\n private _permissions: Array<APermissions> = [];\n\n private constructor() {\n super(AuthorizationTypeEnum.All);\n }\n\n public static of(...permissions: Array<APermissions>): All {\n const inst = new All();\n inst.and(...permissions);\n return inst;\n }\n\n public get permissions() {\n return this._permissions;\n }\n\n public and(...permissions: Array<APermissions>): this {\n this._permissions.push(...permissions);\n return this;\n }\n }\n\n export class Any extends APermissions {\n private _permissions: Array<APermissions> = [];\n\n private constructor() {\n super(AuthorizationTypeEnum.Any);\n }\n\n public static of(...permissions: Array<APermissions>): Any {\n const inst = new Any();\n inst.or(...permissions);\n return inst;\n }\n\n public get permissions() {\n return this._permissions;\n }\n\n public or(...permissions: Array<APermissions>): this {\n this._permissions.push(...permissions);\n return this;\n }\n }\n\n export class Roles extends APermissions {\n private _roles: Array<Array<string>> = [];\n\n private constructor() {\n super(AuthorizationTypeEnum.Rbac);\n }\n\n public static of(...roles: Array<string>): Roles {\n const inst = new Roles();\n inst.or(...roles);\n return inst;\n }\n\n public get roles() {\n return this._roles;\n }\n\n public and(...roles: Array<string>): this {\n if (this._roles.length === 0) {\n this._roles.push([]);\n }\n this._roles[this._roles.length - 1].push(...roles);\n return this;\n }\n\n public or(...roles: Array<string>): this {\n this._roles.push(...roles.map(s => [s]));\n return this;\n }\n }\n\n export class Service extends APermissions {\n private constructor(public readonly service: Type<IPermissionService>) {\n super(AuthorizationTypeEnum.Service);\n }\n\n public static of(service: Type<IPermissionService>): Service {\n return new Service(service);\n }\n }\n}\n","import {APermissions, AuthorizationTypeEnum, Permissions} from './model';\n\nexport class AuthorizationUtil {\n public static isPermitted(permissions: APermissions, userRoles: Array<string>): boolean {\n switch (permissions.authorizationType) {\n case AuthorizationTypeEnum.Rbac:\n return AuthorizationUtil.isRbacPermitted(permissions as Permissions.Roles, userRoles);\n default:\n console.error(`Permission type \"${permissions.authorizationType}\" not implemented`);\n return false;\n }\n }\n\n public static isRbacPermitted(permissions: Permissions.Roles, userRoles: Array<string>): boolean {\n return permissions.roles.some(prg => prg.every(pr => userRoles.indexOf(pr) > -1));\n }\n}\n","import {Injectable, Injector} from '@angular/core';\nimport {ActivatedRouteSnapshot, Router} from '@angular/router';\n\nimport {Observable, combineLatest, of} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {ActionContextValidation} from '../components/action/models';\nimport {APermissions, AuthorizationTypeEnum, Permissions} from '../security/model';\nimport {MngCommonsService} from '../services';\nimport {AuthorizationUtil} from './authorization.util';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MngAuthorizationService {\n constructor(private injector: Injector, private router: Router, private commons: MngCommonsService) {}\n\n public isPermitted(permissions: APermissions, route?: ActivatedRouteSnapshot, actionCtx?: ActionContextValidation<unknown, unknown>): Observable<boolean> {\n switch (permissions.authorizationType) {\n case AuthorizationTypeEnum.All:\n return this.isPermittedAll(permissions as Permissions.All, route, actionCtx);\n case AuthorizationTypeEnum.Any:\n return this.isPermittedAny(permissions as Permissions.Any, route, actionCtx);\n case AuthorizationTypeEnum.Service:\n return this.isPermittedService(permissions as Permissions.Service, route, actionCtx);\n default:\n return this.commons.userRoles$.pipe(map(ur => AuthorizationUtil.isPermitted(permissions, ur)));\n }\n }\n\n private isPermittedAll(permission: Permissions.All, route?: ActivatedRouteSnapshot, actionCtx?: ActionContextValidation<unknown, unknown>) {\n return combineLatest(permission.permissions.map(p => this.isPermitted(p, route, actionCtx))).pipe(map(res => res.every(ip => ip === true)));\n }\n\n private isPermittedAny(permission: Permissions.Any, route?: ActivatedRouteSnapshot, actionCtx?: ActionContextValidation<unknown, unknown>) {\n return combineLatest(permission.permissions.map(p => this.isPermitted(p, route, actionCtx))).pipe(map(res => res.some(ip => ip === true)));\n }\n\n private isPermittedService(permission: Permissions.Service, route?: ActivatedRouteSnapshot, actionCtx?: ActionContextValidation<unknown, unknown>) {\n const serviceInstance = this.injector.get(permission.service);\n if (!serviceInstance) {\n console.warn(`Service instance could not be retreived for type ${permission.service}`);\n return of(false);\n }\n return serviceInstance.isPermitted(route, this.router.routerState.snapshot, actionCtx);\n }\n}\n","import {Injectable} from '@angular/core';\nimport {ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, UrlTree} from '@angular/router';\n\nimport {Observable, of} from 'rxjs';\nimport {first} from 'rxjs/operators';\n\nimport {MngRouterData} from '../router/models';\nimport {MngAuthorizationService} from './authorization.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MngAuthorizationGuard implements CanActivate {\n constructor(private authorization: MngAuthorizationService) {}\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n const data = route.data as MngRouterData;\n\n if (data.permissions) {\n return this.authorization.isPermitted(data.permissions).pipe(first());\n } else {\n return of(true);\n }\n }\n}\n","import {AsyncPipe, NgIf} 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 {ConfirmationService, MenuItem} from 'primeng/api';\nimport {ButtonModule} from 'primeng/button';\nimport {ConfirmDialogModule} from 'primeng/confirmdialog';\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 {MediusQueryParam} from '../../api/models';\nimport {IDataProvider} from '../../data-providers';\nimport {ActionDescriptor, ActionLinkDescriptor} from '../../descriptors/action';\nimport {MngComponentDirective} from '../../directives';\nimport {IViewContainer, IViewContainerTable, MngErrorInternal} from '../../models';\nimport {MngParametrizePipe} from '../../pipes';\nimport {MngRouterData} from '../../router/models';\nimport {MngAuthorizationService} from '../../security';\nimport {APermissions, Permissions} from '../../security/model';\nimport {MngActionExecutorService, MngViewContainerComponentService} from '../../services';\nimport {IdType} from '../../types';\nimport {I18nUtils} from '../../utils';\nimport {ActionContextValidation, ActionData, ActionInstance, ActionParameters, IActionComponent, IActionConfirmationService} from './models';\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, NgIf, ButtonModule, RippleModule, TooltipModule, MngParametrizePipe, MngComponentDirective, ConfirmDialogModule, SplitButtonModule, MenuModule],\n providers: [ConfirmationService]\n})\nexport class MngActionComponent<T, S> implements OnInit, OnChanges, OnDestroy, IActionConfirmationService {\n @HostBinding('class') hostClass = 'mng-action-button';\n @HostBinding('class.m-0') isHostHidden = false;\n\n // metadata and editor mode input\n @Input() public action!: ActionDescriptor<T>;\n @Input() public item?: T;\n @Input() public itemId?: IdType;\n @Input() public actionData?: ActionData;\n @Input() public queryParam?: MediusQueryParam;\n @Input() public dataProvider?: IDataProvider<T, S>;\n @Input() public hostComponent?: unknown;\n @Input('route') public routeInit?: ActivatedRoute;\n @Input('disabled') public inputDisabled: Observable<boolean> = of(false);\n @Input('loading') public inputLoading: Observable<boolean> = of(false);\n @Input('viewContainer') public viewContainerInit?: IViewContainer<T, S>;\n @Input() public selectedItems: Array<T> = [];\n\n @Output('finish') public finishEventEmitter = new EventEmitter<ActionInstance<T, S>>();\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 public cmpId: string = Math.random().toString(36).substring(2);\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 viewContainer?: IViewContainer<T, S>;\n\n public actionLink?: ActionLinkDescriptor<T>;\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 constructor(\n private routeService: ActivatedRoute,\n private translate: TranslateService,\n private authorization: MngAuthorizationService,\n private actionExecutor: MngActionExecutorService,\n private confirmationService: ConfirmationService,\n @Optional() private viewContainerService: MngViewContainerComponentService<T, S> | null\n ) {\n this.loadingSubject.next(false);\n }\n\n public ngOnInit() {\n this.initializeViewContainer();\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 MngRouterData;\n if (this.action instanceof ActionLinkDescriptor) {\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 if (changes['viewContainerInit'] && !changes['viewContainerInit'].firstChange) {\n this.initializeViewContainer();\n }\n }\n\n ngOnDestroy(): void {\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: ActionDescriptor<T>, parameters?: ActionParameters<T>, event?: Event) {\n if (action.subactionsAsMenu) {\n this.subactionsMenu?.toggle(event);\n return;\n }\n\n const actionData = this.actionData ? this.actionData : {};\n actionData['cmpId'] = this.cmpId;\n\n parameters ??= new ActionParameters(this.itemId, this.item)\n .withActionData(actionData)\n .withQueryParam(this.queryParam)\n .withRoute(this.route)\n .withViewContainer(this.viewContainer)\n .withSourceComponent(this)\n .withHostComponent(this.hostComponent)\n .withSelectedItems(this.selectedItems);\n\n const instance = this.actionExecutor.triggerAction<T, S>(action, parameters);\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 as IViewContainerTable<T, S>)?.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 this.subscriptions.push(\n instance.isRunLoading$.subscribe({\n next: res => {\n this.loadingSubject.next(res);\n }\n })\n );\n\n this.actionExecutor.run(context);\n }\n\n public getConfirmationService() {\n return this.confirmationService;\n }\n\n public getConfirmationServiceInstanceKey() {\n return `${this.action.actionName}_${this.cmpId}`;\n }\n\n public onCustomActionCmpInst(instance: IActionComponent<T>) {\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 = new ActionParameters(this.itemId, this.item)\n .withActionData(this.actionData)\n .withViewContainer(this.viewContainer ?? undefined)\n .withSourceComponent(this);\n\n if (subaction.hasItemsSelection) {\n parameters.withSelectedItems(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 subaction.isEnabledFunction(context).subscribe({\n next: res => (menuItem.disabled = !res)\n })\n );\n }\n if (typeof subaction.isVisibleFunction === 'function') {\n this.subactionSubscriptions.push(\n subaction.isVisibleFunction(context).subscribe({\n next: res => (menuItem.visible = res)\n })\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 = new ActionParameters(this.itemId, this.item)\n .withActionData(this.actionData)\n .withViewContainer(this.viewContainer ?? undefined)\n .withSourceComponent(this);\n\n if (this.action.hasItemsSelection) {\n parameters.withSelectedItems(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 = 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 = 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 private initializeViewContainer() {\n this.viewContainer = this.viewContainerInit ?? this.viewContainerService ?? undefined;\n }\n}\n","<ng-container *ngIf=\"($isVisible | async) && ($isPermitted | async)\">\n <a\n *ngIf=\"actionLink && actionLink.url !== ''; else routerLink\"\n pButton\n pRipple\n [label]=\"($label | async) ?? ''\"\n [icon]=\"$any(action.button.icon)\"\n [iconPos]=\"$any(action.button.iconPosition)\"\n [href]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : (actionLink.url | parametrize : itemId : item : actionData)\"\n [target]=\"actionLink.target\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [pTooltip]=\"$any($tooltip | async)\"\n [class]=\"buttonClass\"></a>\n <ng-template #routerLink>\n <a\n *ngIf=\"actionLink; else customComponent\"\n pButton\n pRipple\n [icon]=\"$any(action.button.icon)\"\n [iconPos]=\"$any(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 | parametrize : itemId : item : actionData)\"\n [relativeTo]=\"route\"\n [queryParams]=\"actionLink.queryParams | parametrize : itemId : item : actionData\"\n [queryParamsHandling]=\"actionLink.queryParamsHandling\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [pTooltip]=\"$any($tooltip | async)\"\n [class]=\"buttonClass\"></a>\n </ng-template>\n <ng-template #customComponent>\n <ng-container\n *ngIf=\"action.component; else splitButton\"\n [mngComponent]=\"action.component\"\n [inputs]=\"{\n action: action,\n item: item,\n itemId: itemId,\n actionData: actionData,\n enabled: $isEnabled,\n loading: $loading,\n viewContainer: viewContainer\n }\"\n (instanceCreated)=\"onCustomActionCmpInst($event)\">\n </ng-container>\n </ng-template>\n <ng-template #splitButton>\n <p-splitButton\n *ngIf=\"action.subactions.length > 0 && !action.subactionsAsMenu; else button\"\n [icon]=\"$any(action.button.icon)\"\n [iconPos]=\"$any(action.button.iconPosition)\"\n [label]=\"($label | async) ?? ''\"\n [pTooltip]=\"$any($tooltip | async)\"\n [disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n (onClick)=\"triggerAction(action)\"\n [class]=\"buttonClass\"\n [model]=\"subactions\">\n </p-splitButton>\n </ng-template>\n <ng-template #button>\n <button\n pButton\n pRipple\n type=\"button\"\n [icon]=\"$any(action.button.icon)\"\n [iconPos]=\"$any(action.button.iconPosition)\"\n [label]=\"($label | async) ?? ''\"\n [pTooltip]=\"$any($tooltip | async)\"\n [loading]=\"(($loading | async) ?? false) || ((inputLoading | async) ?? false)\"\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\" styleClass=\"mng-action-menu\"></p-menu>\n </ng-template>\n <p-confirmDialog\n *ngIf=\"actionOrSubactionHasRunConfirmation\"\n [key]=\"action.actionName + '_' + cmpId\"\n [baseZIndex]=\"50\"\n appendTo=\"body\"\n [closable]=\"action.runConfirmationDialogDescriptor?.closable ?? true\"></p-confirmDialog>\n</ng-container>\n","import {ChangeDetectionStrategy, Component, OnDestroy, OnInit, Optional} from '@angular/core';\nimport {ActivatedRoute, NavigationCancel, NavigationEnd, NavigationError, NavigationSkipped, NavigationStart, Params, Router} from '@angular/router';\n\nimport {ConfirmationService, MessageService} from 'primeng/api';\nimport {ConfirmDialogModule} from 'primeng/confirmdialog';\nimport {Subscription} from 'rxjs';\n\nimport {ActionDescriptor} from '../../../descriptors/action';\nimport {ActionActivationTriggerEnum} from '../../../descriptors/types';\nimport {MngActionExecutorService, MngNavigationService, MngViewContainerComponentService} from '../../../services';\nimport {ActionData, ActionInstance, ActionInstanceStateEnum, ActionParameters, IActionConfirmationService} from '../models';\n\n@Component({\n standalone: true,\n selector: 'mng-action-route',\n templateUrl: './action-route.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ConfirmDialogModule],\n providers: [MessageService, ConfirmationService]\n})\nexport class MngActionRouteComponent<T, S> implements OnInit, OnDestroy, IActionConfirmationService {\n public cmpId: string = Math.random().toString(36).substring(2);\n private actions: Array<ActionDescriptor<T>> = [];\n private instance?: ActionInstance<T, S>;\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 confirmationService: ConfirmationService,\n private navigationService: MngNavigationService,\n private actionExecutor: MngActionExecutorService,\n @Optional() private viewContainerService: MngViewContainerComponentService<T, S> | null\n ) {}\n\n public ngOnInit() {\n this.actions = this.viewContainerService?.getActions().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 public getConfirmationService() {\n return this.confirmationService;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public getConfirmationServiceInstanceKey(action: ActionDescriptor<any>) {\n return `actionRoute_${this.cmpId}`;\n }\n\n private activateAction(action: ActionDescriptor<T>, 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(\n action,\n new ActionParameters<T>(itemId)\n .withActionData(actionData)\n .withViewContainer(this.viewContainerService ?? undefined)\n .withSourceComponent(this)\n .withRoute(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): ActionDescriptor<T> | null {\n const urlSegments = this.route.snapshot.url;\n for (const action of this.actions) {\n let actionUrl = action.routeUrl ?? '';\n // TODO: dont strip '/', but use it accordingly with Angular's router patterns (/, ./, ../)\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: ActionInstance<T, S>) {\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.viewContainerService?.reloadTable(); // reload only if no error in action and\n break;\n case ActionInstanceStateEnum.FinishSuccessFinal:\n this.viewContainerService?.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 private unsetInstance() {\n this.instance = undefined;\n this.instanceStateSubscription?.unsubscribe();\n this.instanceReactivationSubscription?.unsubscribe();\n }\n}\n","<p-confirmDialog [key]=\"'actionRoute_' + cmpId\" [baseZIndex]=\"50\" appendTo=\"body\"></p-confirmDialog>\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} 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, ReplaySubject, Subscription, debounceTime, distinctUntilChanged, of} from 'rxjs';\n\nimport {EditorDescriptor} from '../../../descriptors/editor';\nimport {TableviewEditorTypeEnum} from '../../../descriptors/types';\nimport {MngTemplateDirective} from '../../../directives';\nimport {IViewContainer} from '../../../models';\nimport {MngCommonsService} from '../../../services';\nimport {EditorFormlyUtil, NotificationUtil, ObjectUtil} from '../../../utils';\nimport {MngFormlyFieldConfig} from '../formly/models';\nimport {IFormEditorComponent, MngFormEditorSubmitEvent, MngFormEventTypeEnum, MngFormFieldEventComponentSubtype} from '../models';\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 MngFormEditorComponent<T> implements IFormEditorComponent<T>, OnInit, OnChanges, OnDestroy {\n // metadata and editor mode input\n @Input() public descriptor?: EditorDescriptor<T>;\n @Input() public submitLoading: Observable<boolean> | boolean = false;\n\n // data source inputs;\n @Input() public item?: T;\n @Input('viewContainer') public viewContainerInit?: IViewContainer<T, unknown>;\n private viewContainerSubject = new ReplaySubject<IViewContainer<T, unknown>>(1);\n public viewContainer$ = this.viewContainerSubject.asObservable();\n\n // extra features input\n @Input() public isFormDisabled = false;\n\n // event outputs\n @Output('formSubmit') public formSubmitEventEmitter = new EventEmitter<MngFormEditorSubmitEvent<T>>();\n\n // content and view queries\n @ContentChildren(MngTemplateDirective) public templates!: QueryList<MngTemplateDirective>;\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<T>;\n\n private subscriptions: Subscription[] = [];\n\n constructor(private mngCommonsService: MngCommonsService, private translateService: TranslateService) {}\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 NotificationUtil.getFormEditorInfoMessage(\n this.translateService,\n 'mngEditor.localizations.addInDefaultLanguageTitle',\n 'mngEditor.localizations.addInDefaultLanguageDescription',\n {defaultLanguage: this.mngCommonsService.defaultDataLanguage}\n )\n );\n }\n }\n\n // emit lifecycle event\n this.descriptor?.nextEvent(MngFormEventTypeEnum.ComponentLifecycle, MngFormEditorComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_INIT\n });\n\n this.subscriptions.push(\n this.form.valueChanges.pipe(debounceTime(250), distinctUntilChanged()).subscribe(v => {\n this.descriptor?.nextEvent(MngFormEventTypeEnum.ValueChange, MngFormEditorComponent, this, {\n value: v,\n formValue: () => this.getFormValue()\n });\n })\n );\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['viewContainerInit'] && !changes['viewContainerInit'].firstChange) {\n this.viewContainerSubject.next(changes['viewContainerInit'] as any);\n }\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(MngFormEventTypeEnum.ComponentLifecycle, MngFormEditorComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.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(new MngFormEditorSubmitEvent(formSubmitItem));\n this.descriptor?.nextEvent(MngFormEventTypeEnum.Submit, MngFormEditorComponent, 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 MngFormlyFieldConfig).props.label) + '_invalid'] = isInvalid;\n }\n }\n const event = new MngFormEditorSubmitEvent(formSubmitItem);\n event.success = false;\n this.formMessages.push(NotificationUtil.getFormEditorWarningMessage(this.translateService, 'mngEditor.invalidFormToastTitle', 'mngEditor.invalidFormToastMessage'));\n\n this.formSubmitEventEmitter.next(event);\n this.descriptor?.nextEvent(MngFormEventTypeEnum.Submit, MngFormEditorComponent, this, {\n submitValid: false,\n submitValue: formSubmitItem\n });\n }\n }\n\n public getFormValue(): T {\n const formValue = ObjectUtil.deepCopyObject(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?: T) {\n if (typeof item !== 'undefined') {\n this.originalItemPrototype = Object.getPrototypeOf(item);\n }\n\n const formModel = ObjectUtil.deepCopyObject(item, {mapGettersToProperties: true}) ?? {};\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);\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 }\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 console.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 console.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 console.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 #submitButton pButton type=\"submit\" class=\"hidden\" [disabled]=\"form.disabled\" [loading]=\"(submitLoading$ | async) ?? false\"></button>\n</form>\n<p-messages [value]=\"formMessages\" [enableService]=\"false\"></p-messages>\n","import {NgIf} from '@angular/common';\nimport {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, NgIf, TranslateModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormlyFieldNoLabelWrapperComponent 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 <small *ngIf=\"props['descriptor']?.['helpText']\" class=\"block\">{{ props['descriptor']?.['helpText'] | translate }}</small>\n <small *ngIf=\"showError && shouldShowError()\" class=\"block p-error\">\n <formly-validation-message [field]=\"sanitizeErrorsForGroups(field)\"></formly-validation-message>\n </small>\n</div>\n","import {NgIf} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, OnInit} from '@angular/core';\n\nimport {FieldWrapper, FormlyModule} from '@ngx-formly/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {of} from 'rxjs';\n\nimport {ActionButtonDescriptor, ActionDescriptor, ActionEditorDescriptor, ActionEditorSubmitDescriptor} from '../../../../../descriptors/action';\nimport {ActionEditorSubmitTypeEnum} from '../../../../../descriptors/types';\nimport {ButtonStyleBuilder} from '../../../../../styles';\nimport {StyleSizeEnum} from '../../../../../styles/models';\nimport {MngActionComponent} from '../../../../action';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-wrapper',\n templateUrl: './formly-field-wrapper.component.html',\n imports: [TranslateModule, NgIf, FormlyModule, MngActionComponent],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormlyFieldWrapperComponent extends FieldWrapper implements OnInit {\n public localizationAction!: ActionDescriptor<unknown>;\n\n public ngOnInit() {\n if (this.props?.['descriptor']?.isLocalized) {\n if (this.formState.disabled) {\n this.addMissingTranslationHelperText();\n const viewLocalizationsAction = new ActionEditorDescriptor(this.props?.['descriptor']?.localizationTableview.detailsEditor, 'localization-details')\n .withEditorTitle('localization-details.title', {fieldName: this.props?.['descriptor']?.property})\n .withDialogClassName('mng-field-dialog mng-action-editor-dialog')\n .withDialogSize(StyleSizeEnum.Small)\n .withButtonDescriptor(\n new ActionButtonDescriptor()\n .withIcon('pi pi-language')\n .withLabel('mngEditor.localizations.showTranslations')\n .withStyleClass(new ButtonStyleBuilder().withTextButton().withCustomClass('py-0 mb-1 w-auto'))\n )\n .withFetchFunction(() => of(this.model));\n viewLocalizationsAction.withEditorActions([new ActionEditorSubmitDescriptor(viewLocalizationsAction, ActionEditorSubmitTypeEnum.Cancel)]);\n this.localizationAction = viewLocalizationsAction;\n } else if (this.formState.edit) {\n this.props?.['descriptor']?.withHelpText('');\n this.localizationAction = new ActionEditorDescriptor(this.props?.['descriptor']?.localizationTableview.editEditor, 'localization-edit')\n .withEditorTitle('localization-edit.title', {fieldName: this.props?.['descriptor']?.property})\n .withDialogClassName('mng-field-dialog mng-action-editor-dialog')\n .withDialogSize(StyleSizeEnum.Small)\n .withButtonDescriptor(\n new ActionButtonDescriptor()\n .withIcon('pi pi-language')\n .withLabel('mngEditor.localizations.showTranslations')\n .withStyleClass(new ButtonStyleBuilder().withTextButton().withCustomClass('py-0 mb-1 w-auto'))\n )\n .withFetchFunction(() => of(this.model))\n .withSubmitFunction(ctx => {\n this.form\n .get(this.props?.['descriptor'].editor.localizationLocalizationProperty)!\n .patchValue((ctx.parameters.item as any)[this.props?.['descriptor'].editor.localizationLocalizationProperty]);\n return of(ctx.parameters.item);\n });\n } else if (this.formState.add) {\n this.props?.['descriptor']?.withHelpText('');\n this.localizationAction = new ActionEditorDescriptor(this.props?.['descriptor']?.localizationTableview.addEditor, 'localization-add')\n .withEditorTitle('localization-add.title', {fieldName: this.props?.['descriptor']?.property})\n .withDialogClassName('mng-field-dialog mng-action-editor-dialog')\n .withDialogSize(StyleSizeEnum.Small)\n .withButtonDescriptor(\n new ActionButtonDescriptor()\n .withIcon('pi pi-language')\n .withLabel('mngEditor.localizations.showTranslations')\n .withStyleClass(new ButtonStyleBuilder().withTextButton().withCustomClass('py-0 mb-1 w-auto'))\n )\n .withSubmitFunction(ctx => {\n this.form\n .get(this.props?.['descriptor'].editor.localizationLocalizationProperty)!\n .patchValue((ctx.parameters.item as any)[this.props?.['descriptor'].editor.localizationLocalizationProperty]);\n return of(ctx.parameters.item);\n });\n }\n }\n }\n\n private addMissingTranslationHelperText(): void {\n if (!this.model[this.props?.['descriptor'].property + 'Translated']) {\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 <label *ngIf=\"props.label\" [for]=\"key\" class=\"col\" [class]=\"props['descriptor']?.['labelClassName'] ?? ''\"\n >{{ props!.label! | translate }} <span *ngIf=\"props.required && props['hideRequiredMarker'] !== true\">*</span></label\n >\n <mng-action *ngIf=\"props['descriptor']?.['_isLocalized'] && !this.formState.disabled\" class=\"col text-right\" [action]=\"localizationAction\"></mng-action>\n </div>\n <ng-container #fieldComponent></ng-container>\n <small *ngIf=\"props['descriptor']?.['helpText']\" class=\"block\">{{ props['descriptor']?.['helpText'] | translate }}</small>\n <small *ngIf=\"showError\" class=\"p-error block\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n</div>\n","import {AsyncPipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, EventEmitter, ExistingProvider, Injector, Input, OnDestroy, OnInit, Optional, Output, ViewChild, forwardRef} from '@angular/core';\nimport {ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule} from '@angular/forms';\n\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {AutoComplete, AutoCompleteModule} from 'primeng/autocomplete';\nimport {BehaviorSubject, Observable, Subscription, of, switchMap} from 'rxjs';\nimport {first, map} from 'rxjs/operators';\n\nimport {MediusFilterMatchType, MediusQueryParam, MediusQueryParamBuilder} from '../../../api/models';\nimport {ILookupDataProvider} from '../../../data-providers';\nimport {MngErrorInternal} from '../../../models';\nimport {MngFormlyFieldWrapperComponent} from '../formly/wrappers';\n\nexport const MNG_AUTOCOMPLETE_VALUE_ACCESSOR: ExistingProvider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MngAutocompleteComponent),\n multi: true\n};\n\n@Component({\n standalone: true,\n selector: 'mng-autocomplete',\n templateUrl: './autocomplete.component.html',\n providers: [MNG_AUTOCOMPLETE_VALUE_ACCESSOR],\n imports: [AutoCompleteModule, ReactiveFormsModule, AsyncPipe, TranslateModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngAutocompleteComponent implements OnInit, OnDestroy, ControlValueAccessor {\n @Input() public dataProvider?: ILookupDataProvider<any, any>;\n @Input() public dataKeyProperty?: string;\n @Input('itemsValueProperty') public itemsValuePropertyInit?: string;\n @Input('itemsLabelProperty') public itemsLabelPropertyInit?: string;\n @Input() public itemsLabelTranslate = false;\n @Input() public inlineSearch = false;\n @Input() public openOnFocus = false;\n @Input() public multiselect = false;\n @Input() public placeholder?: string;\n @Input() public className: string | null = null;\n @Input() public dropdownClassName: string | null = null;\n @Input() public showClear = false;\n @Input() public autoClear = false;\n @Input() public selectFirst = false; //on every input field change return first given value (or null)\n\n @Output('valueChange') public valueChangeEventEmitter = new EventEmitter();\n\n @ViewChild(AutoComplete) public primeAutocomplete?: AutoComplete;\n\n private isInited = false;\n private suggestionsSubject: BehaviorSubject<Array<any>> = new BehaviorSubject<Array<any>>([]);\n private searchSubscription: Subscription | null = null;\n private dataProviderService: any = null;\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChangeFn: any = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouchedFn: any = () => {};\n\n public itemsLabelProperty?: string;\n public itemsValueProperty?: string;\n public autocompleteFormControl: FormControl = new FormControl();\n public suggestions$: Observable<Array<any>> = this.suggestionsSubject.asObservable();\n public suggestionSubscription?: Subscription;\n\n constructor(private injector: Injector, private translate: TranslateService, @Optional() private formlyWrapper: MngFormlyFieldWrapperComponent) {}\n\n ngOnInit() {\n this.setItemsAndDataProvider();\n if (this.selectFirst) {\n this.suggestionSubscription = this.suggestions$.subscribe(e => this.valueChangeEventEmitter.emit(e.length === 0 ? null : e[0]));\n }\n }\n\n ngOnDestroy() {\n this.searchSubscription?.unsubscribe();\n this.suggestionSubscription?.unsubscribe();\n }\n\n onSearch(event: any) {\n this.searchSubscription?.unsubscribe();\n\n if (this.dataProvider) {\n const queryParamBuilder = MediusQueryParamBuilder.create();\n if (this.itemsLabelProperty) {\n queryParamBuilder.withSort(this.itemsLabelProperty);\n }\n if (event.query && event.query.length > 0 && this.itemsLabelProperty) {\n queryParamBuilder.withFilter(this.itemsLabelProperty, event.query, undefined, MediusFilterMatchType.StartsWith);\n }\n this.searchSubscription = this.getLookup(queryParamBuilder.build(), event.query).subscribe({\n next: items => {\n this.setSuggestionsFromItems(items, event.query);\n }\n });\n }\n }\n\n onSelect(value: any) {\n let outputValue = value;\n if (this.itemsValueProperty && typeof value === 'object') {\n outputValue = value[this.itemsValueProperty];\n }\n this.onChangeFn(outputValue);\n this.valueChangeEventEmitter.next(outputValue);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onFocus(event: Event) {\n if (this.openOnFocus) {\n this.primeAutocomplete?.show();\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onBlur(event: any) {\n this.formlyWrapper?.formControl?.markAsTouched();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onClear(event: Event) {\n this.onChangeFn();\n this.valueChangeEventEmitter.next(null);\n }\n\n registerOnChange(fn: any): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n if (isDisabled) {\n this.autocompleteFormControl.disable();\n } else {\n this.autocompleteFormControl.enable();\n }\n }\n\n writeValue(value: any): void {\n this.setItemsAndDataProvider();\n\n if (this.itemsValuePropertyInit && value != null && typeof value !== 'object') {\n const defaultItem: any = {[this.itemsValuePropertyInit]: value};\n if (this.itemsLabelProperty) {\n defaultItem[this.itemsLabelProperty] = value;\n }\n\n const matchedItem = this.suggestionsSubject.value.find(i => i[this.itemsValuePropertyInit!] === value);\n if (matchedItem) {\n this.autocompleteFormControl.setValue(matchedItem, {emitEvent: false});\n } else if (this.dataProvider) {\n const queryParamBuilder = MediusQueryParamBuilder.create();\n queryParamBuilder.withFilter(this.itemsValuePropertyInit, value, undefined, MediusFilterMatchType.Equals);\n\n this.getLookup(queryParamBuilder.build())\n .pipe(first())\n .subscribe({\n next: items => {\n let isMatch = false;\n if (items.length === 1) {\n this.autocompleteFormControl.setValue(items[0]);\n isMatch = true;\n } else if (items.length > 1) {\n // for lookup data providers not using query params\n const matchedItem = items.find(i => i[this.itemsValuePropertyInit!] === value);\n if (matchedItem) {\n this.setAutocompleteValueFromWrite(matchedItem);\n isMatch = true;\n }\n }\n\n if (!isMatch) {\n this.setAutocompleteValueFromWrite(defaultItem);\n }\n },\n error: () => {\n this.setAutocompleteValueFromWrite(defaultItem);\n }\n });\n } else {\n this.setAutocompleteValueFromWrite(defaultItem);\n }\n } else {\n this.setAutocompleteValueFromWrite(value);\n }\n }\n\n private setItemsAndDataProvider() {\n if (this.isInited) {\n return;\n }\n\n this.itemsLabelProperty = this.itemsLabelPropertyInit;\n this.itemsValueProperty = this.itemsValuePropertyInit;\n\n if (this.dataProvider) {\n this.dataProviderService = this.dataProvider.serviceType ? this.injector.get<any>(this.dataProvider.serviceType) : null;\n\n if (this.itemsLabelTranslate) {\n // setup translation properties\n if (this.itemsLabelPropertyInit) {\n this.itemsLabelProperty = `${this.itemsLabelPropertyInit}_i18n`;\n } else if (!this.itemsLabelProperty && !this.itemsValuePropertyInit) {\n this.itemsLabelProperty = 'title_i18n';\n this.itemsValueProperty = 'value';\n } else {\n throw new MngErrorInternal(\n `Invalid use with value (${this.itemsLabelPropertyInit}) and label (${this.itemsLabelPropertyInit}) property setup.`,\n 'MngAutocompleteComponent error'\n ).consoleError();\n }\n }\n } else {\n console.warn(`Data provider should be provided for MngAutocompleteComponent.`);\n }\n\n if (this.openOnFocus) {\n this.onSearch({query: ''});\n }\n\n this.isInited = true;\n }\n\n private setAutocompleteValueFromWrite(value: any) {\n if (value && this.itemsLabelTranslate) {\n value = this.i18nPopulateItems([value], this.translate.instant(this.i18nGetItemsKeys([value])))[0];\n }\n this.autocompleteFormControl.setValue(value, {emitEvent: false});\n }\n\n private getLookup(qp: MediusQueryParam, query?: string): Observable<Array<any>> {\n if (this.dataProvider) {\n return this.dataProvider.lookup(qp, this.dataProviderService, query).pipe(\n switchMap(items => {\n if (this.itemsLabelTranslate) {\n const translatedItems = this.i18nGetItemsKeys(items);\n if (translatedItems.length === 0) {\n return of([]);\n }\n\n return this.translate.stream(translatedItems).pipe(map(translations => this.i18nPopulateItems(items, translations)));\n } else {\n return of(items);\n }\n })\n );\n } else {\n return of([]);\n }\n }\n\n private i18nGetItemsKeys(items: Array<any>): Array<string> {\n return items.map(item => (typeof item === 'object' && this.itemsLabelPropertyInit ? (item[this.itemsLabelPropertyInit as keyof object] as string) : item) as string);\n }\n\n private i18nPopulateItems(items: Array<any>, i18nMap: any): Array<any> {\n return items.map(item => {\n if (typeof item === 'object' && this.itemsLabelPropertyInit) {\n const label = item[this.itemsLabelPropertyInit as keyof object] as string;\n const translation: string | undefined = i18nMap[label];\n if (translation) {\n return {...item, [this.itemsLabelProperty!]: translation};\n }\n return {...item};\n } else {\n const translation = i18nMap[item];\n return {\n [this.itemsLabelProperty!]: translation ?? item,\n [this.itemsValueProperty!]: item\n };\n }\n });\n }\n\n private setSuggestionsFromItems(items: Array<any>, query?: string) {\n if (this.inlineSearch) {\n const queryLowerCase = query?.toLowerCase() ?? '';\n const filteredItems = items.filter(i => {\n let itemLabel = i;\n if (this.itemsLabelProperty && typeof i === 'object') {\n itemLabel = i[this.itemsLabelProperty];\n }\n if (itemLabel == null) {\n return queryLowerCase == null || !queryLowerCase.length;\n }\n if (typeof itemLabel !== 'string') {\n itemLabel = itemLabel.toString();\n }\n return itemLabel.toLowerCase().startsWith(queryLowerCase);\n });\n this.suggestionsSubject.next([...filteredItems]);\n } else {\n this.suggestionsSubject.next([...items]);\n }\n }\n}\n","<p-autoComplete\n (onFocus)=\"onFocus($event)\"\n [formControl]=\"autocompleteFormControl\"\n [placeholder]=\"$any(placeholder)\"\n [dropdown]=\"true\"\n [dataKey]=\"$any(dataKeyProperty)\"\n [field]=\"$any(itemsLabelProperty)\"\n [suggestions]=\"(suggestions$ | async) ?? []\"\n [multiple]=\"multiselect\"\n [showEmptyMessage]=\"true\"\n [emptyMessage]=\"'mngAutocomplete.noMatches' | translate\"\n [styleClass]=\"$any(className)\"\n [panelStyleClass]=\"$any(dropdownClassName)\"\n [minLength]=\"openOnFocus ? 0 : 1\"\n [showClear]=\"showClear\"\n [forceSelection]=\"autoClear\"\n (completeMethod)=\"onSearch($event)\"\n (onSelect)=\"onSelect($event)\"\n (onBlur)=\"onBlur($event)\"\n (onClear)=\"onClear($event)\"\n appendTo=\"body\"\n dropdownMode=\"current\">\n</p-autoComplete>\n","import {AsyncPipe, NgIf} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, EventEmitter, ExistingProvider, Injector, Input, OnDestroy, OnInit, Optional, Output, ViewChild, forwardRef} from '@angular/core';\nimport {ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule} from '@angular/forms';\n\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {Dropdown, DropdownModule} from 'primeng/dropdown';\nimport {MultiSelectModule} from 'primeng/multiselect';\nimport {Observable, ReplaySubject, Subject, Subscription, of, switchMap} from 'rxjs';\nimport {first, map} from 'rxjs/operators';\n\nimport {MediusQueryParamBuilder} from '../../../api/models';\nimport {ILookupDataProvider} from '../../../data-providers';\nimport {MngErrorInternal} from '../../../models';\nimport {MngFormlyFieldWrapperComponent} from '../formly/wrappers';\n\nexport const MNG_DROPDOWN_VALUE_ACCESSOR: ExistingProvider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MngDropdownComponent),\n multi: true\n};\n\n@Component({\n standalone: true,\n selector: 'mng-dropdown',\n templateUrl: './dropdown.component.html',\n providers: [MNG_DROPDOWN_VALUE_ACCESSOR],\n imports: [DropdownModule, MultiSelectModule, TranslateModule, AsyncPipe, NgIf, ReactiveFormsModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngDropdownComponent implements OnInit, OnDestroy, ControlValueAccessor {\n @Input() public dataProvider?: ILookupDataProvider<any, any>;\n @Input() public dataKeyProperty?: string;\n @Input('itemsLabelProperty') public itemsLabelPropertyInit?: string;\n @Input() public itemsLabelTranslate = false;\n @Input('itemsValueProperty') public itemsValuePropertyInit?: string;\n @Input() public itemsDisabledProperty?: string;\n @Input() public multiselect = false;\n @Input() public placeholder?: string;\n @Input() public showClear = true;\n @Input() public selectFirstItem = false;\n @Input() public className: string | null = null;\n @Input() public dropdownClassName: string | null = null;\n @Input() public changeValueOnBlur = false;\n\n private loadingSubject = new ReplaySubject<boolean>(1);\n public $loading: Observable<boolean> = this.loadingSubject.asObservable();\n\n @Output('valueChange') public valueChangeEventEmitter = new EventEmitter();\n\n @ViewChild(Dropdown) public primeDropdown?: Dropdown;\n\n public itemsLabelProperty?: string;\n public itemsValueProperty?: string;\n private itemsSubject: Subject<Array<any>> = new ReplaySubject<Array<any>>(1);\n private dataProviderService: any = null;\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChangeFn: any;\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouchedFn: any = () => {};\n\n public dropdownFormControl: FormControl = new FormControl();\n public items$: Observable<Array<any>> = this.itemsSubject.asObservable();\n private itemsSubscription?: Subscription;\n\n constructor(private injector: Injector, private translate: TranslateService, @Optional() private formlyWrapper: MngFormlyFieldWrapperComponent) {\n this.loadingSubject.next(false);\n }\n\n ngOnInit(): void {\n this.itemsLabelProperty = this.itemsLabelPropertyInit;\n this.itemsValueProperty = this.itemsValuePropertyInit;\n\n this.dropdownFormControl.valueChanges.subscribe(v => {\n if (!this.changeValueOnBlur) {\n this.propagateValueChange(v);\n }\n });\n\n if (this.dataProvider) {\n this.loadingSubject.next(true);\n this.dataProviderService = this.dataProvider.serviceType ? this.injector.get<any>(this.dataProvider.serviceType) : null;\n\n const queryParamBuilder = MediusQueryParamBuilder.create();\n\n if (this.itemsLabelTranslate) {\n // setup translation properties\n if (this.itemsLabelPropertyInit) {\n this.itemsLabelProperty = `${this.itemsLabelPropertyInit}_i18n`;\n } else if (!this.itemsLabelProperty && !this.itemsValuePropertyInit) {\n this.itemsLabelProperty = 'title_i18n';\n this.itemsValueProperty = 'value';\n } else {\n throw new MngErrorInternal(\n `Invalid use with value (${this.itemsLabelPropertyInit}) and label (${this.itemsLabelPropertyInit}) property setup.`,\n 'MngDropdownComponent error'\n ).consoleError();\n }\n }\n\n this.itemsSubscription = this.dataProvider\n .lookup(queryParamBuilder.build(), this.dataProviderService)\n .pipe(\n switchMap(items => {\n if (this.itemsLabelTranslate) {\n const translationKeys: string[] = items.map(\n item => (typeof item === 'object' && this.itemsLabelPropertyInit ? (item[this.itemsLabelPropertyInit as keyof object] as string) : item) as string\n );\n\n if (translationKeys.length === 0) {\n return of([]);\n }\n\n return this.translate.stream(translationKeys).pipe(\n map(translations =>\n items.map(item => {\n if (typeof item === 'object' && this.itemsLabelPropertyInit) {\n const label = item[this.itemsLabelPropertyInit as keyof object] as string;\n const translation: string | undefined = translations[label];\n if (translation) {\n return {...item, [this.itemsLabelProperty!]: translation};\n }\n return {...item};\n } else {\n const translation = translations[item];\n return {\n [this.itemsLabelProperty!]: translation ?? item,\n [this.itemsValueProperty!]: item\n };\n }\n })\n )\n );\n } else {\n return of(items);\n }\n })\n )\n .subscribe(res => {\n this.itemsSubject.next(res);\n this.loadingSubject.next(false);\n });\n\n if (this.selectFirstItem && !this.dropdownFormControl?.value) {\n this.items$.pipe(first()).subscribe(res => {\n const value = this.itemsValueProperty ? res[0][this.itemsValueProperty] : res[0];\n this.dropdownFormControl?.setValue(value);\n });\n }\n } else {\n console.warn(`Data provider should be provided for MngDropdownComponent.`);\n }\n }\n\n ngOnDestroy() {\n this.itemsSubscription?.unsubscribe();\n }\n\n registerOnChange(fn: any): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n if (isDisabled) {\n this.dropdownFormControl.disable();\n } else {\n this.dropdownFormControl.enable();\n }\n }\n\n writeValue(obj: any): void {\n // this check is required because angular in some cases writes null value\n // before value accessor is initialized\n // if form control value is of primitive type (ex: enums) then write value is not called (we think)\n if (!this.itemsValuePropertyInit && obj === null && !this.isValueAccessorInitialized()) {\n return;\n }\n this.dropdownFormControl.setValue(obj, {emitEvent: false});\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onDropdownBlur(event: any) {\n if (this.changeValueOnBlur) {\n this.propagateValueChange(this.dropdownFormControl.value);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onPanelHide(event: any) {\n if (this.changeValueOnBlur) {\n this.propagateValueChange(this.dropdownFormControl.value);\n }\n }\n\n private propagateValueChange(value: any) {\n if (!this.isValueAccessorInitialized()) {\n return;\n }\n\n this.formlyWrapper?.formControl?.markAsTouched();\n\n this.onChangeFn(value);\n this.valueChangeEventEmitter.next(value);\n }\n\n /**\n * Prevents executions for writing and outputting value which is sometimes committed as null in cmp initialization stage.\n * In dropdown (from ang. 15 and switch to standalone cmp) null value was always committed to dropdown even if default value was set (using ngModel or formControl) which is incorrect.\n * Github issue: https://github.com/angular/angular/issues/14988\n * @private\n */\n private isValueAccessorInitialized() {\n return typeof this.onChangeFn !== 'undefined';\n }\n}\n","<p-dropdown\n *ngIf=\"!multiselect; else pMultiselect\"\n [formControl]=\"dropdownFormControl\"\n [placeholder]=\"$any(placeholder)\"\n [dataKey]=\"$any(dataKeyProperty)\"\n [optionLabel]=\"$any(itemsLabelProperty)\"\n [optionValue]=\"$any(itemsValueProperty)\"\n [optionDisabled]=\"$any(itemsDisabledProperty)\"\n [options]=\"$any(items$ | async)\"\n [showClear]=\"showClear\"\n [autoDisplayFirst]=\"false\"\n [styleClass]=\"$any(className)\"\n [panelStyleClass]=\"$any(dropdownClassName)\"\n (onBlur)=\"onDropdownBlur($event)\"\n [dropdownIcon]=\"($loading | async) ?? false ? 'pi pi-spinner pi-spin' : 'pi pi-chevron-down'\"\n appendTo=\"body\">\n</p-dropdown>\n<ng-template #pMultiselect>\n <p-multiSelect\n [maxSelectedLabels]=\"1\"\n [selectedItemsLabel]=\"'mngDropdown.multiselectOverMaxDisplayLimit' | translate\"\n [formControl]=\"dropdownFormControl\"\n [defaultLabel]=\"$any(placeholder)\"\n [dataKey]=\"$any(dataKeyProperty)\"\n [optionLabel]=\"$any(itemsLabelProperty)\"\n [optionValue]=\"$any(itemsValueProperty)\"\n [optionDisabled]=\"$any(itemsDisabledProperty)\"\n [options]=\"(items$ | async) ?? []\"\n [styleClass]=\"$any(className)\"\n [panelStyleClass]=\"$any(dropdownClassName)\"\n [filter]=\"true\"\n [showToggleAll]=\"false\"\n (onPanelHide)=\"onPanelHide($event)\"\n appendTo=\"body\">\n </p-multiSelect>\n</ng-template>\n","import {NgIf} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, ExistingProvider, Input, OnDestroy, OnInit, forwardRef} from '@angular/core';\nimport {ControlValueAccessor, FormBuilder, FormControl, FormGroup, NG_VALUE_ACCESSOR, ReactiveFormsModule} from '@angular/forms';\n\nimport {CalendarModule} from 'primeng/calendar';\nimport {Subscription, merge} from 'rxjs';\n\nexport const MNG_DATE_RANGE_VALUE_ACCESSOR: ExistingProvider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MngDateRangeComponent),\n multi: true\n};\n\n@Component({\n standalone: true,\n selector: 'mng-date-range',\n templateUrl: './date-range.component.html',\n providers: [MNG_DATE_RANGE_VALUE_ACCESSOR],\n imports: [CalendarModule, ReactiveFormsModule, NgIf],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngDateRangeComponent implements OnInit, OnDestroy, ControlValueAccessor {\n @Input() public placeholder?: string;\n @Input() public showTime = false;\n @Input() public showSeconds = false;\n @Input() public dateFormat?: string;\n\n private fromToFormControl!: FormGroup;\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChangeFn: any = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onTouchedFn: any = () => {};\n\n private subscriptions: Subscription[] = [];\n\n constructor(private formBuilder: FormBuilder) {}\n\n public get fromCtrl() {\n return this.fromToFormControl.get('from') as FormControl;\n }\n\n public get toCtrl() {\n return this.fromToFormControl.get('to') as FormControl;\n }\n\n public get dateRangeCtrl() {\n return this.fromToFormControl.get('dateRange') as FormControl;\n }\n\n ngOnInit() {\n this.fromToFormControl = this.formBuilder.group({\n from: [],\n to: [],\n dateRange: []\n });\n\n this.subscriptions.push(merge(this.fromCtrl.valueChanges, this.toCtrl.valueChanges, this.dateRangeCtrl.valueChanges).subscribe(() => this.onValueChange()));\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(value => value.unsubscribe());\n }\n\n registerOnChange(fn: any): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n if (isDisabled) {\n this.fromToFormControl.disable();\n } else {\n this.fromToFormControl.enable();\n }\n }\n\n writeValue(obj: any): void {\n let startDate: Date | null = null;\n let endDate: Date | null = null;\n\n if (Array.isArray(obj)) {\n if (obj.length > 0 && (obj[0] instanceof Date || typeof obj[0] === 'string' || typeof obj[0] === 'number')) {\n startDate = new Date(obj[0]);\n }\n if (obj.length > 1 && (obj[1] instanceof Date || typeof obj[1] === 'string' || typeof obj[1] === 'number')) {\n endDate = new Date(obj[1]);\n }\n } else if (obj instanceof Date || typeof obj === 'string' || typeof obj === 'number') {\n startDate = new Date(obj);\n }\n\n if (this.showTime) {\n this.fromCtrl.setValue(startDate);\n this.toCtrl.setValue(endDate);\n } else if (startDate || endDate) {\n this.dateRangeCtrl.setValue([startDate, endDate]);\n } else {\n this.dateRangeCtrl.setValue(null);\n }\n }\n\n private onValueChange() {\n if (this.showTime) {\n const fromDate = this.fromCtrl.value as Date;\n const toDate = this.toCtrl.value as Date;\n this.onChangeFn([fromDate, toDate]);\n } else {\n const date = this.dateRangeCtrl.value as Date[];\n this.onChangeFn(date);\n }\n }\n}\n","<ng-container *ngIf=\"showTime; else defaultRange\">\n <div class=\"flex gap-2\">\n <p-calendar\n appendTo=\"body\"\n [formControl]=\"fromCtrl\"\n [maxDate]=\"toCtrl.value\"\n [placeholder]=\"$any(placeholder)\"\n [dateFormat]=\"$any(dateFormat)\"\n [showTime]=\"showTime\"\n [showSeconds]=\"showSeconds\"\n [showIcon]=\"true\"\n [firstDayOfWeek]=\"1\"\n (onFocus)=\"onTouchedFn()\"></p-calendar>\n <p-calendar\n appendTo=\"body\"\n [formControl]=\"toCtrl\"\n [minDate]=\"fromCtrl.value\"\n [placeholder]=\"$any(placeholder)\"\n [dateFormat]=\"$any(dateFormat)\"\n [showTime]=\"showTime\"\n [showSeconds]=\"showSeconds\"\n [showIcon]=\"true\"\n [firstDayOfWeek]=\"1\"\n (onFocus)=\"onTouchedFn()\"></p-calendar>\n </div>\n</ng-container>\n<ng-template #defaultRange>\n <p-calendar\n appendTo=\"body\"\n [formControl]=\"dateRangeCtrl\"\n [placeholder]=\"$any(placeholder)\"\n [dateFormat]=\"$any(dateFormat)\"\n selectionMode=\"range\"\n [showIcon]=\"true\"\n [firstDayOfWeek]=\"1\"\n (onFocus)=\"onTouchedFn()\"></p-calendar>\n</ng-template>\n","import {AsyncPipe, NgForOf, NgIf} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Injector,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {DynamicDialogConfig, DynamicDialogRef} from 'primeng/dynamicdialog';\nimport {ProgressSpinnerModule} from 'primeng/progressspinner';\nimport {ToolbarModule} from 'primeng/toolbar';\nimport {Observable, ReplaySubject, Subscription, of} from 'rxjs';\nimport {take} from 'rxjs/operators';\n\nimport {IEditorDataProvider} from '../../../data-providers';\nimport {ActionDescriptor, ActionEditorDescriptor, ActionEditorSubmitDescriptor} from '../../../descriptors/action';\nimport {ActionActivationTriggerEnum, ActionEditorSubmitTypeEnum, ActionPositionEnum} from '../../../descriptors/types';\nimport {MngTemplateDirective} from '../../../directives';\nimport {IViewContainer, IViewContainerEditor, MngErrorInternal} from '../../../models';\nimport {MngActionExecutorService, MngCommonsService, MngNavigationService, MngViewContainerComponentService} from '../../../services';\nimport {IdType} from '../../../types';\nimport {I18nUtils} from '../../../utils';\nimport {MngFormEditorComponent} from '../../form';\nimport {MngFormEditorSubmitEvent} from '../../form/models';\nimport {MngActionComponent} from '../action.component';\nimport {ActionData, ActionInstance, ActionInstanceStateEnum, ActionParameters} from '../models';\n\n@Component({\n standalone: true,\n selector: 'mng-action-editor',\n templateUrl: './action-editor.component.html',\n imports: [NgIf, ToolbarModule, MngActionComponent, NgForOf, AsyncPipe, ProgressSpinnerModule, MngFormEditorComponent],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngActionEditorComponent<T, S> implements OnInit, OnChanges, OnDestroy {\n public readonly actionEditorSubmitTypeSubmit = ActionEditorSubmitTypeEnum.Submit;\n public readonly actionDefaultLoadingInput = of(false);\n\n // metadata and editor mode input\n @Input() public action!: ActionEditorDescriptor<T>;\n\n // data source inputs\n @Input('itemId') public itemIdInit?: IdType;\n @Input('item') public itemInit?: T;\n @Input() public actionData?: ActionData;\n @Input() public dataProvider?: IEditorDataProvider<T, S>;\n @Input('viewContainer') public viewContainerInit?: IViewContainer<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 // content and view queries\n @ContentChildren(MngTemplateDirective) public templates!: QueryList<MngTemplateDirective>;\n @ViewChild('submitButton') public submitButtonElementRef!: ElementRef;\n @ViewChild(MngFormEditorComponent) public editorComponent!: MngFormEditorComponent<T>;\n\n public title?: string;\n public isDialog = true;\n public isFormDisabled = false;\n\n // actions\n public itemId?: IdType;\n public item?: T;\n private instance?: ActionInstance<T, S>;\n private instanceStateSubscription?: Subscription;\n private instanceReactivationSubscription?: Subscription;\n private instanceSubmitFormItem?: T | null;\n private instanceSubmitResult?: T | null;\n private previousActionInstance?: ActionInstance<unknown, unknown>;\n public toolbarLeftActions: ActionDescriptor<T>[] = [];\n public toolbarRightActions: ActionDescriptor<T>[] = [];\n public footerLeftActions: ActionDescriptor<T>[] = [];\n public footerRightActions: ActionDescriptor<T>[] = [];\n\n private loadingSubject = new ReplaySubject<boolean>(1);\n public loading$: Observable<boolean> = this.loadingSubject.asObservable();\n private fetchExecutionSubscription?: Subscription;\n private submitActionIdSubject = new ReplaySubject<boolean>(1);\n private submitLoadingSubject = new ReplaySubject<boolean>(1);\n public submitLoading$: Observable<boolean> = this.submitLoadingSubject.asObservable();\n private submitExecutionSubscription?: Subscription;\n\n public viewContainer?: IViewContainer<T, S>;\n public dialogRoute?: ActivatedRoute;\n private sourceComponent: any = this;\n\n private subscriptions: Array<Subscription> = [];\n\n constructor(\n private injector: Injector,\n private translate: TranslateService,\n private actionExecutor: MngActionExecutorService,\n private mngCommonsService: MngCommonsService,\n private navigationService: MngNavigationService,\n @Optional() private dialogRef: DynamicDialogRef | null,\n @Optional() private dialogConfig: DynamicDialogConfig | null,\n @Optional() private viewContainerService: MngViewContainerComponentService<T, S> | null\n ) {}\n\n ngOnInit() {\n this.initializeAsDialog();\n this.initializeAsStandalone();\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.action, this.instance));\n\n // set title\n this.updateTitle();\n\n // subscribe to events that could be triggered from outside from any reason\n if (typeof (this.viewContainer as IViewContainerEditor<T, S>)?.getEditorReset$ === 'function') {\n const viewContainerEditor = this.viewContainer as IViewContainerEditor<T, S>;\n this.subscriptions.push(\n viewContainerEditor.getEditorReset$().subscribe({\n next: e => {\n if (e.fetch) {\n this.fetchItem();\n } else if (e.item) {\n this.editorComponent?.resetFormModel(e.item);\n } else if (e.fields) {\n for (const key in e.fields) {\n this.editorComponent?.resetFormFieldValue(key, e.fields[key]);\n }\n }\n }\n })\n );\n }\n\n if (typeof (this.viewContainer as IViewContainerEditor<T, S>)?.getEditorClose$ === 'function') {\n const viewContainerEditor = this.viewContainer as IViewContainerEditor<T, S>;\n this.subscriptions.push(\n viewContainerEditor.getEditorClose$().subscribe({\n next: () => {\n this.cancel();\n }\n })\n );\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['viewContainerInit'] && !changes['viewContainerInit'].firstChange) {\n this.initializeViewContainer();\n }\n if (changes['itemIdInit'] && !changes['itemIdInit'].firstChange) {\n this.itemId = this.itemIdInit;\n }\n if (changes['itemInit'] && !changes['itemInit'].firstChange) {\n this.item = this.itemInit;\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 this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n public onSubmit(event: MngFormEditorSubmitEvent<T>) {\n if (!this.instance) {\n throw new MngErrorInternal(`Action is not instantiated in action editor for action ${this.action.actionName}.`);\n }\n if (event.success) {\n this.instanceSubmitFormItem = event.formItem;\n\n // prepare parameters\n const actionParameters = new ActionParameters(this.itemId, event.formItem)\n .withActionData(this.actionData)\n .withViewContainer(this.viewContainer)\n .withSourceComponent(this.sourceComponent);\n if (this.action.editorDescriptor.isLocalized) {\n actionParameters.withLocale(this.mngCommonsService.appDataLanguageDefault);\n }\n\n const context = this.actionExecutor.prepareContextForEditorSubmit(this.action, actionParameters, this.dataProvider, this.instance, this.previousActionInstance);\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.action.model?.idPropertyName) {\n // to cover creation!\n this.itemId = res[this.action.model.idPropertyName 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 console.warn('Action editor cannot be canceled, because no action instance is present');\n return;\n }\n this.actionCancelEventEmitter.next(undefined);\n this.actionExecutor.finishAction(this.instance);\n }\n\n public triggerSubmit() {\n this.editorComponent.submit();\n }\n\n private initializeAsDialog() {\n if (!this.dialogConfig?.data) {\n this.isDialog = false;\n return;\n }\n\n this.isDialog = true;\n\n // initialize action from dialog data\n if (this.dialogConfig.data.actionInstance) {\n this.processActionInstance(this.dialogConfig.data.actionInstance);\n if (this.dialogConfig.data.previousActionInstance) {\n this.previousActionInstance = this.dialogConfig.data.previousActionInstance;\n }\n }\n if (this.instance) {\n this.action = this.instance.action as ActionEditorDescriptor<T>;\n }\n this.itemId = this.instance?.activationParameters?.itemId;\n this.item = this.instance?.activationParameters?.item;\n this.actionData = this.instance?.activationParameters?.actionData;\n this.viewContainer = this.instance?.activationParameters?.viewContainer as IViewContainer<T, S>;\n this.sourceComponent = this.instance?.activationParameters?.sourceComponent;\n this.dialogRoute = this.instance?.activationParameters?.route;\n if (!this.dataProvider && this.viewContainer) {\n const dataProvider = this.viewContainer.getDataProvider();\n if (dataProvider && typeof dataProvider['fetch' as keyof object] === 'function') {\n this.dataProvider = dataProvider as IEditorDataProvider<T, S>;\n }\n }\n }\n\n private initializeAsStandalone() {\n if (this.isDialog) {\n return;\n }\n\n this.itemId = this.itemIdInit;\n this.item = this.itemInit;\n this.initializeViewContainer();\n }\n\n private initializeSubActions() {\n for (const action of this.action.editorActions) {\n if (action instanceof ActionEditorSubmitDescriptor) {\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.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.cancel();\n return of(null);\n });\n }\n }\n this.placeActionsOnPositions(action);\n }\n\n for (const action of this.viewContainer?.getActions().filter(value => value.positionTableviewCategories?.includes(this.action.tableviewCategory!)) ?? []) {\n this.placeActionsOnPositions(action);\n }\n\n this.toolbarRightActions = this.toolbarRightActions.reverse();\n this.footerRightActions = this.footerRightActions.reverse();\n }\n\n private fetchItem() {\n if (!this.instance) {\n throw new MngErrorInternal(`Action is not instantiated in action editor for action ${this.action.actionName}.`);\n }\n\n const actionParameters = new ActionParameters(this.itemId, this.item)\n .withActionData(this.actionData)\n .withViewContainer(this.viewContainer)\n .withSourceComponent(this.sourceComponent);\n if (this.action.editorDescriptor.isLocalized) {\n if (this.action.editorDescriptor.disabled) {\n actionParameters.withLocale(this.mngCommonsService.appDataLanguage!);\n } else {\n actionParameters.withLocale(this.mngCommonsService.appDataLanguageDefault);\n }\n }\n if (this.instance?.previousInstance?.context?.parameters.item) {\n actionParameters.withFormItem(this.instance?.previousInstance?.context?.parameters.item);\n }\n if (typeof this.instance?.previousInstance?.result !== 'undefined') {\n actionParameters.withSubmitResult(this.instance?.previousInstance?.result);\n }\n\n const context = this.actionExecutor.prepareContextForEditorFetch(this.action, actionParameters, this.dataProvider, this.instance, this.previousActionInstance);\n this.fetchExecutionSubscription?.unsubscribe();\n this.fetchExecutionSubscription = context.execution$.pipe(take(1)).subscribe(res => {\n this.item = res ?? undefined;\n this.updateTitle();\n });\n\n this.actionExecutor.run(context);\n }\n\n private updateTitle() {\n if (this.action.editorTitle === null) {\n this.title = undefined;\n if (this.dialogConfig) {\n requestAnimationFrame(() => {\n this.dialogConfig!.header = undefined;\n });\n }\n return;\n }\n const subscription = I18nUtils.Action.getEditorTitleAsync(this.translate, this.action, this.item).subscribe(t => {\n this.title = t ?? undefined;\n if (this.dialogConfig) {\n requestAnimationFrame(() => {\n this.dialogConfig!.header = t ?? undefined;\n if (this.action.activationTrigger === ActionActivationTriggerEnum.OnRoute) {\n this.mngCommonsService.setPageTitle(t ?? undefined);\n }\n });\n }\n });\n this.subscriptions.push(subscription);\n }\n\n private placeActionsOnPositions(action: ActionDescriptor<any>) {\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.FooterLeft:\n this.footerLeftActions.push(action);\n break;\n case ActionPositionEnum.FooterRight:\n this.footerRightActions.push(action);\n break;\n }\n }\n\n private initializeViewContainer() {\n if (this.isDialog) {\n return;\n }\n this.viewContainer = this.viewContainerInit ?? this.viewContainerService ?? undefined;\n }\n\n private setEditorEnabled(isEnabled = true) {\n this.isFormDisabled = !isEnabled;\n }\n\n private processActionInstance(instance: ActionInstance<T, S>) {\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.loadingSubject.next(true);\n break;\n case ActionInstanceStateEnum.FetchError:\n this.loadingSubject.next(false);\n break;\n case ActionInstanceStateEnum.FetchEnd:\n this.setEditorEnabled(true);\n this.loadingSubject.next(false);\n break;\n case ActionInstanceStateEnum.RunStart:\n this.setEditorEnabled(false);\n this.submitLoadingSubject.next(true);\n break;\n case ActionInstanceStateEnum.RunEnd:\n case ActionInstanceStateEnum.RunError:\n this.setEditorEnabled(true);\n this.submitLoadingSubject.next(false);\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","<h5 *ngIf=\"!isDialog && title\">{{ title }}</h5>\n<div class=\"h-full flex flex-column\">\n <div class=\"flex-grow-1 mng-action-editor-toolbar-container\" *ngIf=\"toolbarLeftActions.length > 0 || toolbarRightActions.length > 0\">\n <p-toolbar styleClass=\"mng-action-editor-toolbar\">\n <ng-template pTemplate=\"left\">\n <mng-action\n *ngFor=\"let action of toolbarLeftActions\"\n [action]=\"action\"\n [disabled]=\"submitLoading$\"\n [loading]=\"$any(action).submitType === actionEditorSubmitTypeSubmit ? submitLoading$ : actionDefaultLoadingInput\"\n [viewContainer]=\"viewContainer\"\n [hostComponent]=\"this\"\n [route]=\"dialogRoute\"\n [item]=\"item\"\n [itemId]=\"itemId\"></mng-action>\n </ng-template>\n <ng-template pTemplate=\"right\">\n <mng-action\n *ngFor=\"let action of toolbarRightActions\"\n [action]=\"action\"\n [disabled]=\"submitLoading$\"\n [loading]=\"$any(action).submitType === actionEditorSubmitTypeSubmit ? submitLoading$ : actionDefaultLoadingInput\"\n [viewContainer]=\"viewContainer\"\n [hostComponent]=\"this\"\n [route]=\"dialogRoute\"\n [item]=\"item\"\n [itemId]=\"itemId\"></mng-action>\n </ng-template>\n </p-toolbar>\n </div>\n\n <div class=\"flex-grow-1 mng-action-editor-form-container\">\n <div class=\"text-center\" *ngIf=\"loading$ | async\">\n <p-progressSpinner [style]=\"{width: '3rem', height: '3rem'}\" strokeWidth=\"3\"></p-progressSpinner>\n </div>\n <mng-form-editor\n *ngIf=\"action.editorDescriptor && (loading$ | async) === false\"\n [descriptor]=\"action.editorDescriptor\"\n [item]=\"item\"\n [viewContainer]=\"viewContainer\"\n [isFormDisabled]=\"isFormDisabled\"\n (formSubmit)=\"onSubmit($event)\">\n </mng-form-editor>\n </div>\n\n <div class=\"flex flex-row justify-content-between mng-action-editor-footer-container\">\n <div>\n <mng-action\n *ngFor=\"let action of footerLeftActions\"\n [action]=\"action\"\n [disabled]=\"submitLoading$\"\n [loading]=\"$any(action).submitType === actionEditorSubmitTypeSubmit ? submitLoading$ : actionDefaultLoadingInput\"\n [viewContainer]=\"viewContainer\"\n [hostComponent]=\"this\"\n [route]=\"dialogRoute\"\n [item]=\"item\"\n [itemId]=\"itemId\"></mng-action>\n </div>\n <div>\n <mng-action\n *ngFor=\"let action of footerRightActions\"\n [action]=\"action\"\n [disabled]=\"submitLoading$\"\n [loading]=\"$any(action).submitType === actionEditorSubmitTypeSubmit ? submitLoading$ : actionDefaultLoadingInput\"\n [viewContainer]=\"viewContainer\"\n [hostComponent]=\"this\"\n [route]=\"dialogRoute\"\n [item]=\"item\"\n [itemId]=\"itemId\"></mng-action>\n </div>\n </div>\n</div>\n","import {Component, EventEmitter, Input, Output, ViewChild} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\n\nimport {of} from 'rxjs';\n\nimport {LookupDataProvider} from '../../../data-providers';\nimport {ActionDescriptor} from '../../../descriptors/action';\nimport {IViewContainer, IViewContainerTable} from '../../../models';\nimport {MngCommonsService} from '../../../services';\nimport {IdType} from '../../../types';\nimport {MngDropdownComponent} from '../../form';\nimport {ActionData, ActionParameters, IActionComponent} from '../models';\n\n@Component({\n standalone: true,\n selector: 'mng-data-language-dropdown',\n imports: [MngDropdownComponent, FormsModule],\n templateUrl: 'data-language-dropdown.component.html'\n})\nexport class MngDataLanguageDropdownComponent<T> implements IActionComponent<T> {\n @Input() public action!: ActionDescriptor<T>;\n @Input() public actionData!: ActionData;\n @Input() public item!: T;\n @Input() public itemId!: IdType;\n @Input() public enabled!: boolean;\n @Input() public loading!: boolean;\n\n @Input() public viewContainer!: IViewContainer<T, unknown>;\n @Output() public triggerActionEventEmitter: EventEmitter<ActionParameters<T>> = new EventEmitter<ActionParameters<T>>();\n @ViewChild(MngDropdownComponent) private dropdown?: MngDropdownComponent;\n\n // dropdown properties\n public selectionItemsDataProvider: LookupDataProvider<any, any>;\n\n constructor(public mngCommons: MngCommonsService) {\n this.selectionItemsDataProvider = new LookupDataProvider(null).withLookup(() => of(mngCommons.appDataLanguages));\n }\n\n public updateDataLanguage(dataLang: string): void {\n this.mngCommons.appDataLanguage = dataLang;\n (this.viewContainer as IViewContainerTable<T, unknown>)?.reloadTable?.({});\n }\n}\n","<mng-dropdown [dataProvider]=\"selectionItemsDataProvider\" [ngModel]=\"mngCommons.appDataLanguage\" [showClear]=\"false\" (valueChange)=\"updateDataLanguage($event)\"></mng-dropdown>\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 {FieldLookupDescriptor} from '../../../../../descriptors/editor';\nimport {MngAutocompleteComponent} from '../../../autocomplete/autocomplete.component';\nimport {MngFormFieldEventComponentSubtype, MngFormFieldEventTypeEnum} from '../../../models';\nimport {MngFormlyFieldConfig} from '../../models';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-autocomplete',\n templateUrl: './formly-field-autocomplete.component.html',\n imports: [MngAutocompleteComponent, ReactiveFormsModule, FormlyModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormlyFieldAutocompleteComponent<T, ET> extends FieldType<MngFormlyFieldConfig> 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(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldAutocompleteComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_INIT\n });\n\n const subscription = this.aFormControl.valueChanges.pipe(startWith(this.aFormControl.value), distinctUntilChanged()).subscribe(v => {\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ValueChange, MngFormlyFieldAutocompleteComponent, 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(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldAutocompleteComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.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(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldAutocompleteComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n}\n","<mng-autocomplete\n [id]=\"$any(key)\"\n [formControl]=\"aFormControl\"\n [formlyAttributes]=\"field\"\n [dataProvider]=\"$any(descriptor.dataProvider)\"\n [dataKeyProperty]=\"$any(descriptor.dataKeyProperty)\"\n [itemsLabelProperty]=\"$any(descriptor.itemsLabelProperty)\"\n [itemsValueProperty]=\"$any(descriptor.itemsValueProperty)\"\n [className]=\"descriptor.inputClassName\"\n [showClear]=\"!props.required\"\n [selectFirst]=\"descriptor.autocompleteSelectFirst\"\n [autoClear]=\"descriptor.autocompleteAutoClear\">\n</mng-autocomplete>\n","import {NgForOf, NgIf, NgSwitch, NgSwitchCase, NgSwitchDefault} from '@angular/common';\nimport {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 {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 {FieldInputDescriptor} from '../../../../../descriptors/editor';\nimport {FieldInputTypeEnum} from '../../../../../descriptors/types';\nimport {NotificationUtil} from '../../../../../utils';\nimport {MngFormEditorComponent} from '../../../editor/form-editor.component';\nimport {MngFormFieldEventComponentSubtype, MngFormFieldEventTypeEnum} from '../../../models';\nimport {MngFormlyFieldConfig} from '../../models';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-input',\n templateUrl: './formly-field-input.component.html',\n imports: [\n NgSwitch,\n InputNumberModule,\n NgSwitchCase,\n ReactiveFormsModule,\n FormlyModule,\n TranslateModule,\n InputSwitchModule,\n NgIf,\n RadioButtonModule,\n NgForOf,\n CalendarModule,\n InputMaskModule,\n FileUploadModule,\n ImageModule,\n NgSwitchDefault,\n InputTextareaModule,\n InputTextModule,\n RippleModule\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormlyFieldInputComponent<ET> extends FieldType<MngFormlyFieldConfig> implements OnInit, OnDestroy {\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?: MngFormEditorComponent<unknown>;\n\n constructor(@Inject(LOCALE_ID) public applicationLocale: string, private formBuilder: FormBuilder, private translateService: TranslateService) {\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 MngFormEditorComponent<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(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldInputComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.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 }\n\n const subscription = this.formControl!.valueChanges.pipe(startWith(this.formControl!.value), distinctUntilChanged()).subscribe(v => {\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ValueChange, MngFormlyFieldInputComponent, 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(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldInputComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n\n public onFileSelect(event: any) {\n const files = event.files as File[];\n this.files = [...files];\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 = NotificationUtil.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","<ng-container [ngSwitch]=\"props.type\">\n <p-inputNumber\n *ngSwitchCase=\"'number'\"\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [min]=\"$any(descriptor.numberAutoCorrect ? descriptor.numberMin : null)\"\n [max]=\"$any(descriptor.numberAutoCorrect ? descriptor.numberMax : null)\"\n [step]=\"$any(descriptor.numberStep)\"\n [useGrouping]=\"$any(descriptor.numberUseGrouping)\"\n [minFractionDigits]=\"descriptor.numberMinFractionDigits || 0\"\n [maxFractionDigits]=\"descriptor.numberMaxFractionDigits || 0\"\n [inputStyleClass]=\"descriptor.inputClassName\"\n [locale]=\"$any(descriptor.locale ?? applicationLocale)\"\n [mode]=\"$any(numberFieldMode)\"\n [currency]=\"$any(currency)\"\n [currencyDisplay]=\"$any(descriptor.currencyDisplay)\">\n </p-inputNumber>\n\n <div *ngSwitchCase=\"'switch'\" class=\"field flex flex-column\">\n <label [for]=\"key\" [class]=\"descriptor.labelClassName\">{{ props.label! | translate }} <span *ngIf=\"props.required && props['hideRequiredMarker'] !== true\">*</span></label>\n <p-inputSwitch [id]=\"$any(key)\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" [styleClass]=\"descriptor.inputClassName\"></p-inputSwitch>\n <small *ngIf=\"showError\" class=\"p-error\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n </div>\n\n <ng-container *ngSwitchCase=\"'radio'\">\n <div *ngFor=\"let option of descriptor.radioOptions\" [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 </ng-container>\n\n <textarea\n *ngSwitchCase=\"'textarea'\"\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [rows]=\"descriptor.rows ?? 3\"\n pInputTextarea\n [class]=\"descriptor.inputClassName\">\n </textarea>\n\n <p-calendar\n *ngSwitchCase=\"'datepicker'\"\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\"\n [showSeconds]=\"descriptor.datePickerShowSeconds\"\n [showIcon]=\"true\"\n [inputStyleClass]=\"descriptor.inputClassName\"\n [firstDayOfWeek]=\"1\">\n </p-calendar>\n\n <p-inputMask\n *ngSwitchCase=\"'mask'\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [mask]=\"$any(descriptor.mask)\"\n [placeholder]=\"$any(descriptor.placeholder)\"\n [slotChar]=\"$any(descriptor.slotChar)\"\n [styleClass]=\"descriptor.inputClassName\">\n </p-inputMask>\n\n <p-fileUpload\n *ngSwitchCase=\"'file'\"\n [multiple]=\"descriptor.fileMultiple\"\n [accept]=\"$any(descriptor.fileAccept)\"\n [maxFileSize]=\"descriptor.fileMaxFileSize\"\n [showUploadButton]=\"false\"\n (onSelect)=\"onFileSelect($event)\"\n (onRemove)=\"onFileRemove($event)\"\n (onClear)=\"onFileClear($event)\">\n </p-fileUpload>\n\n <div *ngSwitchCase=\"'imageUrl'\">\n <div *ngIf=\"descriptor.imagePreview\" class=\"flex flex-wrap justify-content-start\">\n <ng-container *ngFor=\"let image of imageFormArray.controls; let idx = index\">\n <p-image\n *ngIf=\"imageFormArray.at(idx).valid && imageFormArray.at(idx).value; else noImage\"\n [src]=\"imageFormArray.at(idx).value\"\n [preview]=\"true\"\n (onImageError)=\"onImageUrlLoadError()\"\n styleClass=\"mng-image m-2\"></p-image>\n </ng-container>\n <ng-template #noImage>\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 </ng-template>\n </div>\n <ng-container *ngIf=\"!descriptor.imagePreview || descriptor.imageUrlInputVisibleOnDisabled || !iFormControl.disabled\">\n <div *ngFor=\"let imageCtrlName of imageFormArray.controls; let idx = index\" 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 <button *ngIf=\"descriptor.fileMultiple && !iFormControl.disabled\" type=\"button\" pButton pRipple icon=\"pi pi-minus\" (click)=\"removeImageUrlAt(idx)\"></button>\n </div>\n <button\n *ngIf=\"descriptor.fileMultiple && !iFormControl.disabled\"\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 </ng-container>\n </div>\n\n <input *ngSwitchDefault pInputText [id]=\"$any(key)\" [type]=\"props.type || 'text'\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" />\n</ng-container>\n","import {ChangeDetectionStrategy, Component, HostBinding, OnInit} from '@angular/core';\n\nimport {FieldType} from '@ngx-formly/core';\n\nimport {FieldInputDescriptor} from '../../../../../descriptors/editor';\nimport {MngFormlyFieldConfig} from '../../models';\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 MngFormlyFieldLabelComponent<ET> extends FieldType<MngFormlyFieldConfig> 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 {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 {FieldLookupDescriptor} from '../../../../../descriptors/editor';\nimport {MngDropdownComponent} from '../../../dropdown/dropdown.component';\nimport {MngFormFieldEventComponentSubtype, MngFormFieldEventTypeEnum} from '../../../models';\nimport {MngFormlyFieldConfig} from '../../models';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-dropdown',\n templateUrl: './formly-field-dropdown.component.html',\n imports: [MngDropdownComponent, ReactiveFormsModule, FormlyModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormlyFieldDropdownComponent<T, ET> extends FieldType<MngFormlyFieldConfig> 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(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldDropdownComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_INIT\n });\n\n const subscription = this.dFormControl.valueChanges.pipe(startWith(this.dFormControl.value), distinctUntilChanged()).subscribe(v => {\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ValueChange, MngFormlyFieldDropdownComponent, 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(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldDropdownComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.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 [itemsLabelProperty]=\"descriptor.itemsLabelProperty\"\n [itemsLabelTranslate]=\"descriptor.itemsLabelTranslate\"\n [itemsValueProperty]=\"descriptor.itemsValueProperty\"\n [itemsDisabledProperty]=\"descriptor.itemsDisabledProperty\"\n [dataKeyProperty]=\"descriptor.dataKeyProperty\"\n [showClear]=\"!props.required\"\n [className]=\"descriptor.inputClassName\">\n</mng-dropdown>\n","import {LazyLoadEvent} from 'primeng/api';\n\nimport {MediusQueryParam} from '../../../api/models';\nimport {ColumnDescriptor} from '../../../descriptors/table';\n\nexport class MngTableLoadEvent {\n public queryParam?: MediusQueryParam;\n public originalEvent?: LazyLoadEvent;\n}\n\nexport class MngTableCellClickEvent<T> {\n constructor(public readonly column: ColumnDescriptor<any, T>, public readonly rowItem: T, public readonly rowIndex: number) {}\n}\n\nexport class MngTableReloadEvent {\n public resetParams = false;\n public emitEvent = false;\n}\n","import {NgIf, NgSwitch, NgSwitchCase} from '@angular/common';\nimport {Component, Input, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {FilterMetadata, PrimeNGConfig, SelectItem} from 'primeng/api';\nimport {CalendarModule} from 'primeng/calendar';\nimport {ColumnFilter, TableModule} from 'primeng/table';\nimport {Subject, Subscription, debounceTime, distinctUntilChanged} from 'rxjs';\n\nimport {FilterDescriptor, FilterLookupDescriptor} from '../../../../descriptors/filter';\nimport {FilterLookupTypeEnum, FilterMatchModeEnum, FilterTypeEnum, TableFilterDisplayEnum} from '../../../../descriptors/types';\nimport {MngAutocompleteComponent, MngDateRangeComponent, MngDropdownComponent} from '../../../form';\n\n/**\n * Cannot be on push change detection strategy because of filter updates triggered from route which causes to force update values in force metadata\n * and these must be propagated through to this component and beyond to primeNG.\n */\n@Component({\n standalone: true,\n selector: 'mng-table-column-filter',\n imports: [TableModule, TranslateModule, MngDateRangeComponent, CalendarModule, FormsModule, NgSwitch, MngAutocompleteComponent, NgSwitchCase, MngDropdownComponent, NgIf],\n templateUrl: './column-filter.component.html'\n})\nexport class MngTableColumnFilterComponent<T> implements OnInit, OnDestroy {\n public readonly lookupTypeDropdown: FilterLookupTypeEnum = FilterLookupTypeEnum.Dropdown;\n public readonly lookupTypeAutocomplete: FilterLookupTypeEnum = FilterLookupTypeEnum.Autocomplete;\n\n @Input() descriptor!: FilterDescriptor<T>;\n @Input() display!: TableFilterDisplayEnum;\n\n @ViewChild(ColumnFilter) public primeColumnFilter!: ColumnFilter;\n\n public lookupDescriptor?: FilterLookupDescriptor<T>;\n\n public primeField!: string;\n public primeType = 'text';\n public primeShowMatchMode = true;\n public primeDefaultMatchMode!: FilterMatchModeEnum;\n public primeDisplay = 'row';\n public primeMatchModeCustomOptions: SelectItem[] | null = null;\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n private dateFilterCallback?: Function;\n private dateDebounceSubject = new Subject<Date | Date[] | null>();\n private dateDebounceSubscription?: Subscription;\n\n constructor(private primeConfig: PrimeNGConfig) {\n this.dateDebounceSubscription = this.dateDebounceSubject.pipe(debounceTime(500), distinctUntilChanged()).subscribe(v => {\n this.dateFilterCallback?.(v);\n });\n }\n\n public get activeMatchMode(): FilterMatchModeEnum | undefined {\n const filter = this.primeColumnFilter?.dt.filters[this.descriptor.property] as FilterMetadata;\n return filter?.matchMode as FilterMatchModeEnum | undefined;\n }\n\n ngOnInit() {\n this.primeDefaultMatchMode = this.descriptor.defaultFilterMatchMode ?? FilterMatchModeEnum.Equals;\n\n switch (this.descriptor.filterType) {\n case FilterTypeEnum.Boolean:\n this.primeType = 'boolean';\n this.primeShowMatchMode = false;\n break;\n case FilterTypeEnum.Number:\n this.primeType = 'numeric';\n break;\n case FilterTypeEnum.Date:\n this.primeType = 'date';\n this.primeDefaultMatchMode = FilterMatchModeEnum.DateIs;\n break;\n case FilterTypeEnum.Lookup:\n this.primeType = 'lookup';\n this.lookupDescriptor = this.descriptor as FilterLookupDescriptor<T>;\n this.primeField = `${this.descriptor.property}${this.lookupDescriptor.itemsValueProperty ? `.${this.lookupDescriptor.itemsValueProperty}` : ''}`;\n this.primeMatchModeCustomOptions = [\n {value: FilterMatchModeEnum.Equals, label: this.primeConfig.getTranslation(FilterMatchModeEnum.Equals)},\n {value: FilterMatchModeEnum.NotEquals, label: this.primeConfig.getTranslation(FilterMatchModeEnum.NotEquals)}\n ];\n\n if (this.lookupDescriptor.multiselect) {\n this.primeMatchModeCustomOptions = null;\n this.primeDefaultMatchMode = FilterMatchModeEnum.In;\n }\n\n break;\n case FilterTypeEnum.String:\n this.primeType = 'text';\n this.primeDefaultMatchMode = FilterMatchModeEnum.Contains;\n break;\n }\n\n if (this.descriptor.matchModes) {\n this.primeMatchModeCustomOptions = this.descriptor.matchModes.map(mm => <SelectItem>{value: mm, label: this.primeConfig.getTranslation(mm)});\n\n if (!this.primeMatchModeCustomOptions.map(matchMode => matchMode.value).includes(this.primeDefaultMatchMode)) {\n this.primeDefaultMatchMode = this.descriptor.matchModes[0] as FilterMatchModeEnum;\n }\n\n this.primeShowMatchMode = this.primeMatchModeCustomOptions?.length > 1;\n }\n\n if (this.display === TableFilterDisplayEnum.Menu) {\n this.primeDisplay = 'menu';\n }\n }\n\n ngOnDestroy() {\n this.dateDebounceSubscription?.unsubscribe();\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n dateFilter(value: Date | Date[] | null, filterCallback: Function) {\n this.dateFilterCallback = filterCallback;\n if (this.activeMatchMode === FilterMatchModeEnum.Between && Array.isArray(value)) {\n const dateValues = value.filter(v => v instanceof Date);\n if (dateValues.length <= 1) {\n return;\n }\n }\n this.dateDebounceSubject.next(value);\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n dateRangeChange(value: Date[] | null, filterCallback: Function) {\n filterCallback(value);\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n autocompleteFilter(value: T, filterCallback: Function) {\n filterCallback(value);\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-types, @typescript-eslint/no-explicit-any\n dropdownFilter(value: any, filterCallback: Function) {\n if (Array.isArray(value) && value.length === 0) {\n value = undefined;\n }\n filterCallback(value);\n }\n}\n","<p-columnFilter\n class=\"ml-auto\"\n [type]=\"primeType\"\n [field]=\"descriptor.property\"\n [display]=\"primeDisplay\"\n [matchMode]=\"$any(primeDefaultMatchMode)\"\n [matchModeOptions]=\"$any(primeMatchModeCustomOptions)\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.typeToFilter' | translate\"\n [showMatchModes]=\"true\"\n [showOperator]=\"false\"\n [showAddButton]=\"false\"\n [hideOnClear]=\"true\"\n [showMenu]=\"primeShowMatchMode\"\n [minFractionDigits]=\"$any(descriptor.numberMinFractionDigits)\"\n [maxFractionDigits]=\"$any(descriptor.numberMaxFractionDigits)\"\n [useGrouping]=\"descriptor.numberUseGrouping\">\n <ng-template *ngIf=\"primeType === 'date'\" pTemplate=\"filter\" let-value let-filterCallback=\"filterCallback\">\n <ng-container *ngIf=\"activeMatchMode === 'between'; else datePicker\">\n <mng-date-range\n [ngModel]=\"value\"\n (ngModelChange)=\"dateFilter($event, filterCallback)\"\n [showTime]=\"descriptor.datePickerShowTime\"\n [dateFormat]=\"descriptor.datePickerFormat\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.typeToFilter' | translate\"></mng-date-range>\n </ng-container>\n <ng-template #datePicker>\n <p-calendar\n appendTo=\"body\"\n [ngModel]=\"value\"\n (ngModelChange)=\"dateFilter($event, filterCallback)\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.typeToFilter' | translate\"\n [showIcon]=\"true\"\n [dateFormat]=\"descriptor.datePickerFormat ?? 'dd.mm.yy'\"\n [showTime]=\"descriptor.datePickerShowTime\"\n [firstDayOfWeek]=\"1\">\n </p-calendar>\n </ng-template>\n </ng-template>\n <ng-template *ngIf=\"lookupDescriptor\" pTemplate=\"filter\" let-value let-filterCallback=\"filterCallback\">\n <ng-container [ngSwitch]=\"lookupDescriptor.lookupType\">\n <mng-autocomplete\n *ngSwitchCase=\"lookupTypeAutocomplete\"\n [ngModel]=\"value\"\n [dataProvider]=\"lookupDescriptor.dataProvider\"\n [dataKeyProperty]=\"lookupDescriptor.itemsValueProperty\"\n [itemsValueProperty]=\"lookupDescriptor.itemsValueProperty\"\n [itemsLabelProperty]=\"lookupDescriptor.itemsLabelProperty\"\n [itemsLabelTranslate]=\"lookupDescriptor.itemsLabelTranslate\"\n [multiselect]=\"lookupDescriptor.multiselect\"\n [openOnFocus]=\"lookupDescriptor.autocompleteOpenOnFocus\"\n [inlineSearch]=\"lookupDescriptor.autocompleteInlineSearch\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.searchToFilter' | translate\"\n [className]=\"lookupDescriptor.className\"\n [dropdownClassName]=\"lookupDescriptor.dropdownClassName\"\n (valueChange)=\"autocompleteFilter($event, filterCallback)\">\n </mng-autocomplete>\n <mng-dropdown\n *ngSwitchCase=\"lookupTypeDropdown\"\n [ngModel]=\"value\"\n [dataProvider]=\"lookupDescriptor.dataProvider\"\n [itemsValueProperty]=\"lookupDescriptor.itemsValueProperty\"\n [itemsLabelProperty]=\"lookupDescriptor.itemsLabelProperty\"\n [itemsLabelTranslate]=\"lookupDescriptor.itemsLabelTranslate\"\n [multiselect]=\"lookupDescriptor.multiselect\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.selectToFilter' | translate\"\n [className]=\"lookupDescriptor.className\"\n [dropdownClassName]=\"lookupDescriptor.dropdownClassName\"\n [showClear]=\"false\"\n [changeValueOnBlur]=\"lookupDescriptor.multiselect\"\n (valueChange)=\"dropdownFilter($event, filterCallback)\">\n </mng-dropdown>\n </ng-container>\n </ng-template>\n</p-columnFilter>\n","import {CurrencyPipe, DatePipe, DecimalPipe, NgIf, NgSwitch, NgSwitchCase} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, ElementRef, HostBinding, Input, OnInit} from '@angular/core';\n\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {MessageService} from 'primeng/api';\nimport {ButtonModule} from 'primeng/button';\nimport {RippleModule} from 'primeng/ripple';\nimport {TooltipModule} from 'primeng/tooltip';\n\nimport {ColumnDescriptor} from '../../../../descriptors/table';\nimport {ColumnDisplayTypeEnum} from '../../../../descriptors/types';\nimport {MngComponentDirective} from '../../../../directives';\nimport {JsonPathPipe, MngBooleanPipe, MngEnumPipe, MngGetterPipe, MngTemplatePipe} from '../../../../pipes';\n\n@Component({\n standalone: true,\n selector: 'mng-table-column-value',\n templateUrl: './column-value.component.html',\n styleUrls: ['./column-value.component.scss'],\n imports: [\n NgSwitch,\n NgIf,\n TooltipModule,\n TranslateModule,\n NgSwitchCase,\n DecimalPipe,\n CurrencyPipe,\n DatePipe,\n MngBooleanPipe,\n MngEnumPipe,\n MngComponentDirective,\n ButtonModule,\n RippleModule\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngTableColumnValueComponent<T, TT> implements OnInit {\n public readonly columnDisplayTypeString: ColumnDisplayTypeEnum = ColumnDisplayTypeEnum.String;\n public readonly columnDisplayTypeNumber: ColumnDisplayTypeEnum = ColumnDisplayTypeEnum.Number;\n public readonly columnDisplayTypeCurrency: ColumnDisplayTypeEnum = ColumnDisplayTypeEnum.Currency;\n public readonly columnDisplayTypeBoolean: ColumnDisplayTypeEnum = ColumnDisplayTypeEnum.Boolean;\n public readonly columnDisplayTypeDate: ColumnDisplayTypeEnum = ColumnDisplayTypeEnum.Date;\n public readonly columnDisplayTypeEnum: ColumnDisplayTypeEnum = ColumnDisplayTypeEnum.Enum;\n public readonly columnDisplayTypeComponent: ColumnDisplayTypeEnum = ColumnDisplayTypeEnum.Component;\n public readonly columnDisplayTypeHtml: ColumnDisplayTypeEnum = ColumnDisplayTypeEnum.Html;\n\n @Input() descriptor!: ColumnDescriptor<T, TT>;\n @Input() item!: any;\n\n @HostBinding('style.max-width.px') public styleMaxWidth: number | null = null;\n @HostBinding('class') public className = 'nowrap';\n\n public currency?: string;\n\n public jsonPath = '$';\n\n public value: any;\n\n constructor(\n private elementRef: ElementRef,\n private messageService: MessageService,\n private translate: TranslateService,\n private jsonPathPipe: JsonPathPipe,\n private getterPipe: MngGetterPipe,\n private templatePipe: MngTemplatePipe\n ) {}\n\n public ngOnInit() {\n if (this.descriptor.columnDisplayType === ColumnDisplayTypeEnum.Currency) {\n this.currency = this.descriptor.currencyFromProperty ? this.item[this.descriptor.currencyFromProperty] : this.descriptor.currencyCode ?? 'EUR';\n } else if (this.descriptor.columnDisplayType === ColumnDisplayTypeEnum.String) {\n if (this.descriptor.isMultiline) {\n this.className += ' multiline';\n }\n }\n\n if (this.descriptor.maxWidth) {\n this.styleMaxWidth = this.descriptor.maxWidth;\n }\n\n if (this.descriptor.jsonPath) {\n this.jsonPath = this.descriptor.jsonPath;\n } else {\n this.jsonPath = `$.${this.descriptor.property}`;\n if (this.descriptor.objectModelType) {\n this.jsonPath = `$.${this.descriptor.property}.${this.descriptor.objectTitleProperty}`;\n }\n }\n\n let value = this.jsonPathPipe.transform(this.item, this.jsonPath);\n\n if (typeof this.descriptor.getter === 'function') {\n value = this.getterPipe.transform(this.item, this.descriptor.getter, value);\n }\n if (this.descriptor.template) {\n value = this.templatePipe.transform(value, this.descriptor.template);\n }\n\n this.value = value;\n }\n\n public copyToClipboard(event: Event) {\n event.stopPropagation();\n const value = this.elementRef.nativeElement.innerText.trim();\n navigator.clipboard.writeText(value);\n const title = this.translate.instant('mngTable.copyNotificationTitle');\n const message = this.translate.instant('mngTable.copyNotificationMessage', {value});\n this.messageService.add({severity: 'info', summary: title, detail: message});\n }\n}\n","<ng-container [ngSwitch]=\"descriptor.columnDisplayType\">\n <i\n *ngIf=\"descriptor.localizationExistsProperty && !item[descriptor.localizationExistsProperty]\"\n class=\"pi pi-exclamation-circle\"\n [pTooltip]=\"'mngTable.translationMissing' | translate\"></i>\n <ng-container *ngSwitchCase=\"columnDisplayTypeString\">\n <span *ngIf=\"descriptor.hasValueAsTooltip\" [pTooltip]=\"value\" tooltipPosition=\"left\">{{ value }}</span>\n <ng-container *ngIf=\"!descriptor.hasValueAsTooltip\">{{ value }}</ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"columnDisplayTypeHtml\">\n <span [innerHTML]=\"value\"></span>\n </ng-container>\n <ng-container *ngSwitchCase=\"columnDisplayTypeNumber\">\n {{ value | number : descriptor.displayFormat : descriptor.locale }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnDisplayTypeCurrency\">\n {{ value | currency : currency : descriptor.currencyDisplay : descriptor.displayFormat : descriptor.locale }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnDisplayTypeDate\">\n {{ value | date : descriptor.displayFormat }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnDisplayTypeBoolean\">\n <ng-container *ngIf=\"descriptor.booleanAsIcon; else booleanText\">\n <i [class]=\"value | boolean : descriptor.booleanYes : descriptor.booleanNo : true\"></i>\n </ng-container>\n <ng-template #booleanText>\n {{ value | boolean : descriptor.booleanYes : descriptor.booleanNo | translate }}\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"columnDisplayTypeEnum\">\n {{ value | enum : descriptor.enumType : descriptor.enumTitlePath : descriptor.enumNameAsValue | translate }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnDisplayTypeComponent\">\n <ng-container\n [mngComponent]=\"descriptor.customComponentType!\"\n [inputs]=\"{\n value: value,\n item: item,\n descriptor: descriptor\n }\"></ng-container>\n </ng-container>\n</ng-container>\n<div class=\"help-buttons\" *ngIf=\"descriptor.hasCopyToClipboard\">\n <button pButton pRipple type=\"button\" icon=\"pi pi-copy\" class=\"p-button-rounded p-button-info p-button-sm\" (click)=\"copyToClipboard($event)\"></button>\n</div>\n","import {AsyncPipe, NgClass, NgForOf, NgIf, NgStyle, NgTemplateOutlet} from '@angular/common';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n EventEmitter,\n Injector,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n Type,\n ViewChild,\n ViewChildren\n} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {ActivatedRoute, NavigationCancel, NavigationEnd, NavigationError, NavigationStart, Params, Router} from '@angular/router';\n\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {FilterMatchMode, FilterMetadata, LazyLoadEvent, SortMeta} from 'primeng/api';\nimport {ButtonModule} from 'primeng/button';\nimport {MultiSelectModule} from 'primeng/multiselect';\nimport {SkeletonModule} from 'primeng/skeleton';\nimport {Table, TableModule} from 'primeng/table';\nimport {TooltipModule} from 'primeng/tooltip';\nimport {BehaviorSubject, Observable, ReplaySubject, Subscription, isObservable, of} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nimport {MediusFilterMatchType, MediusQueryParam, MediusQueryParamBuilder, MediusQueryResult} from '../../../api/models';\nimport {MediusRestUtil} from '../../../api/utils';\nimport {ITableDataProvider} from '../../../data-providers';\nimport {ActionDescriptor} from '../../../descriptors/action';\nimport {FilterDescriptor, FilterLookupDescriptor} from '../../../descriptors/filter';\nimport {ColumnDescriptor, TableDescriptor, TableDynamicDescriptor} from '../../../descriptors/table';\nimport {ActionPositionEnum, FilterTypeEnum, TableFilterDisplayEnum, TablePaginationModeEnum, TableSizeEnum} from '../../../descriptors/types';\nimport {MngComponentDirective, MngTemplateDirective} from '../../../directives';\nimport {IViewContainer} from '../../../models';\nimport {MngClassMapPipe, MngI18nPropertyPipe, MngLocaleDefaultRowClassPipe} from '../../../pipes';\nimport {MngActionExecutorService, MngCommonsService, MngLocalStorageService, MngViewContainerComponentService} from '../../../services';\nimport {StylesUtil} from '../../../styles';\nimport {NotificationUtil} from '../../../utils';\nimport {TableviewUtil} from '../../../utils/tableview.util';\nimport {MngActionComponent} from '../../action';\nimport {ActionInstance, ActionParameters} from '../../action/models';\nimport {MngTableCellClickEvent, MngTableLoadEvent} from '../models';\nimport {MngTableColumnFilterComponent} from './column-filter/column-filter.component';\nimport {MngTableColumnValueComponent} from './column-value/column-value.component';\nimport {ColumnWithPreferences, TableLayoutPreferences} from './models';\n\n@Component({\n standalone: true,\n selector: 'mng-table',\n templateUrl: './table.component.html',\n imports: [\n NgIf,\n AsyncPipe,\n TableModule,\n TranslateModule,\n MngComponentDirective,\n MngI18nPropertyPipe,\n NgForOf,\n NgClass,\n NgStyle,\n NgTemplateOutlet,\n MngTableColumnFilterComponent,\n MngClassMapPipe,\n MngLocaleDefaultRowClassPipe,\n MngTableColumnValueComponent,\n MngActionComponent,\n SkeletonModule,\n MultiSelectModule,\n ButtonModule,\n TooltipModule,\n FormsModule\n ],\n styleUrls: ['table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngTableComponent<T, S> implements OnInit, OnChanges, AfterContentInit, OnDestroy {\n public readonly filterDisplayRow: TableFilterDisplayEnum = TableFilterDisplayEnum.Row;\n public readonly filterDisplayMenu: TableFilterDisplayEnum = TableFilterDisplayEnum.Menu;\n public readonly cmpTypeName = 'MngTableComponent';\n\n // metadata input\n @Input('descriptor') public initialDescriptor!: TableDescriptor<T>;\n public descriptor?: TableDescriptor<T>;\n\n // data source inputs\n @Input() public items?: Observable<Array<T>> | Array<T>;\n @Input() public queryResult?: Observable<MediusQueryResult<T>> | MediusQueryResult<T>;\n @Input() public loading?: Observable<boolean> | boolean;\n @Input() public dataProvider?: ITableDataProvider<T, any>;\n @Input() public useQueryParams = false;\n\n // extra features input\n @Input() public selectionMode = 'multiple';\n @Input() public selectionEnabled = false;\n\n // actions\n @Input() public actions: Array<ActionDescriptor<T>> = [];\n\n // visual\n @Input() public isColumnClickable?: boolean;\n\n // component inputs\n @Input('viewContainer') public viewContainerInit?: IViewContainer<T, S>;\n @Input() public captionComponent?: Type<any>;\n @Input() public columnActionComponent?: Type<any>;\n @Input() public columnActionMinWidth: number | null = null;\n @Input('globalFilterFields') public globalFilterFieldsInit?: string[];\n\n // event outputs\n @Output('tableLoad') public loadEventEmitter = new EventEmitter<MngTableLoadEvent>();\n @Output('cellClick') public cellClickEventEmitter = new EventEmitter<MngTableCellClickEvent<T>>();\n @Output('selectionChange') public selectionChangeEventEmitter = new EventEmitter<Array<T>>();\n @Output('captionComponentInstance') public captionCmpInstEventEmitter = new EventEmitter<any>();\n @Output('columnActionComponentInstance') public columnActionCmpInstEventEmitter = new EventEmitter<any>();\n\n // content and view queries\n @ContentChildren(MngTemplateDirective) public templates!: QueryList<MngTemplateDirective>;\n @ViewChildren(MngComponentDirective) public components!: QueryList<MngComponentDirective<any>>;\n @ViewChild(Table) public primeTable!: Table;\n\n // templates\n public captionTemplate?: TemplateRef<any>;\n public columnActionTemplate?: TemplateRef<any>;\n public footerTemplate?: TemplateRef<any>;\n\n // data provider and items\n public isLazy = false;\n public isPagination = false;\n private useDataProvider = false;\n private useQueryParamsInitializedSubejct = new BehaviorSubject(false);\n public useQueryParamsInitialized$ = this.useQueryParamsInitializedSubejct.asObservable();\n public queryResult$?: Observable<MediusQueryResult<T>>;\n public loading$?: Observable<boolean>;\n public dataProviderInfiniteScrollItems: Array<T> = [];\n private itemsSubject = new ReplaySubject<Array<T>>(1);\n\n private queryResultSubscription?: Subscription;\n\n // pagination, sort and filters\n public rowsPerPageOptions!: Array<number>;\n public rows!: number;\n public offset = 0;\n public multiSortMeta: SortMeta[] | null = null;\n public filterMetadata: {[s: string]: FilterMetadata} = {};\n public globalFilterFields: string[] = [];\n\n // infinite scroll\n public infiniteScroll = false;\n\n // visual\n public className!: string;\n public tableFullHeightOffset: number | null = null;\n public rowHeight: number | null = null;\n\n // selection\n public selection: Array<T> = [];\n\n // data provider\n private dataProviderService: any = null;\n private dataProviderQueryResultSubject = new ReplaySubject<MediusQueryResult<T>>(1);\n private dataProviderLoadingSubject = new ReplaySubject<boolean>(1);\n private dataProviderLatestLazyLoadEvent?: LazyLoadEvent;\n private dataProviderLatestLazyLoadEventVersion = 0;\n private dataProviderLatestQueryParam?: MediusQueryParam;\n private dataProviderLatestQueryParamVersion = 0;\n private dataProviderSubscription?: Subscription;\n\n // filter, sort\n public hasColumnFilters = false;\n private isFilterChanged = false;\n private isSortChanged = false;\n private filterDescriptors: Array<FilterDescriptor<any>> = [];\n\n // actions\n public showInlineActionsColumn = false;\n public rowClickActions: ActionDescriptor<T>[] = [];\n public rowInlineActions: ActionDescriptor<T>[] = [];\n\n // other\n private routerIsNavigationOutsideInProgress = false;\n public viewContainer?: IViewContainer<T, S>;\n private subscriptions: Subscription[] = [];\n public areColumnsReorderable = false;\n public areColumnsToggleable = false;\n public columns: ColumnWithPreferences[] = [];\n public visibleColumns: ColumnWithPreferences[] = [];\n private layoutPreferences: TableLayoutPreferences = {columnWidths: {}};\n private localstorageKey = '';\n\n constructor(\n private injector: Injector,\n private router: Router,\n private route: ActivatedRoute,\n private translate: TranslateService,\n private mngCommonsService: MngCommonsService,\n private actionExecutor: MngActionExecutorService,\n @Optional() private viewContainerService: MngViewContainerComponentService<T, S> | null,\n private localStorageService: MngLocalStorageService\n ) {}\n\n public ngOnInit() {\n this.initializeViewContainer();\n // Used for configs within this method and is not dynamically set by TableDynamicDescriptor\n const baseConfigDescriptor = this.initialDescriptor;\n\n if (!(this.initialDescriptor instanceof TableDynamicDescriptor)) {\n this.descriptor = this.initialDescriptor;\n }\n\n // map row settings\n this.filterDescriptors = this.descriptor?.columns.filter(c => typeof c.filterDescriptor !== 'undefined').map(c => c.filterDescriptor!) ?? [];\n this.hasColumnFilters = this.filterDescriptors.length > 0;\n this.rows = baseConfigDescriptor?.defaultNumRows ?? 25;\n this.rowsPerPageOptions = baseConfigDescriptor?.rowsPerPageOptions ?? [25, 50, 100];\n\n // get layout preferences if they exist\n if (this.descriptor?.model.typeName) {\n this.localstorageKey = TableviewUtil.generateTableLayoutPrefsKey(this.descriptor?.model.typeName, this.router.url, this.descriptor?.dataKey);\n const preferences = this.localStorageService.getItem<TableLayoutPreferences>(this.cmpTypeName, this.localstorageKey);\n if (preferences && typeof preferences === 'object') {\n if (preferences.columnWidths) {\n this.layoutPreferences.columnWidths = preferences.columnWidths as Record<string, number>;\n }\n if (preferences.columnOrder && Array.isArray(preferences.columnOrder) && preferences.columnOrder.every((el: any) => typeof el === 'string')) {\n this.layoutPreferences.columnOrder = preferences.columnOrder;\n }\n if (preferences.columnVisibility && Array.isArray(preferences.columnVisibility) && preferences.columnVisibility.every((el: any) => typeof el === 'string')) {\n this.layoutPreferences.columnVisibility = preferences.columnVisibility;\n }\n }\n }\n\n // initialize columns with additional properties\n if (this.descriptor?.columns) {\n this.areColumnsReorderable = this.descriptor.columns.some(value => value.isReorderable);\n this.areColumnsToggleable = this.descriptor.columns.some(value => value.isToggleable);\n\n this.columns = this.descriptor.columns.map(col => ({\n descriptor: col,\n disabled: !col.isToggleable,\n isVisible: this.layoutPreferences.columnVisibility ? this.layoutPreferences.columnVisibility.includes(col.property) : col.isVisible,\n width: this.layoutPreferences.columnWidths?.[col.property]\n }));\n\n if (this.layoutPreferences.columnOrder) {\n const newColumnOrder: ColumnWithPreferences[] = [];\n for (const colName of this.layoutPreferences.columnOrder) {\n const foundCol = this.columns.find(el => el.descriptor.property === colName);\n if (foundCol) {\n newColumnOrder.push(foundCol);\n }\n }\n\n if (newColumnOrder.length === this.columns.length) this.columns = newColumnOrder;\n }\n\n this.visibleColumns = this.columns.filter(el => el.isVisible);\n }\n\n // process actions\n for (const action of this.actions) {\n switch (action.position) {\n case ActionPositionEnum.RowClick:\n this.rowClickActions.push(action);\n break;\n case ActionPositionEnum.RowInline:\n this.rowInlineActions.push(action);\n break;\n }\n }\n this.showInlineActionsColumn = typeof this.columnActionComponent !== 'undefined' || this.rowInlineActions.length > 0;\n\n // define all styles\n this.className = baseConfigDescriptor?.className ?? '';\n this.tableFullHeightOffset = baseConfigDescriptor?.tableFullHeightOffset ?? null;\n this.rowHeight = baseConfigDescriptor?.rowHeight ?? null;\n if (typeof this.isColumnClickable === 'undefined') {\n // define if cell click is being observed via output\n this.isColumnClickable = this.rowClickActions.length > 0 || this.cellClickEventEmitter.observed;\n }\n switch (baseConfigDescriptor?.size) {\n case TableSizeEnum.Small:\n this.className += ' p-datatable-sm';\n break;\n case TableSizeEnum.Large:\n this.className += ' p-datatable-lg';\n break;\n }\n if (baseConfigDescriptor?.hasGridlines) {\n this.className += ' p-datatable-gridlines';\n }\n if (baseConfigDescriptor && !this.columnActionMinWidth) {\n this.columnActionMinWidth = StylesUtil.calculateTableColumnActionWidth(\n baseConfigDescriptor as TableDescriptor<unknown>,\n this.rowInlineActions as Array<ActionDescriptor<unknown>>\n );\n }\n\n // check if infinite scroll\n let paginationMode = TablePaginationModeEnum.None;\n if (typeof baseConfigDescriptor?.paginationMode !== 'undefined') {\n // descriptor choice is the most strong - if defined, use this value\n paginationMode = baseConfigDescriptor.paginationMode;\n } else if (typeof this.dataProvider !== 'undefined') {\n // when data provider is used, use pagination\n paginationMode = TablePaginationModeEnum.Pagination;\n }\n\n if (paginationMode === TablePaginationModeEnum.InfiniteScroll) {\n this.infiniteScroll = true;\n this.tableFullHeightOffset = baseConfigDescriptor?.tableFullHeightOffset ?? 315;\n this.rowHeight = baseConfigDescriptor?.rowHeight ?? 45;\n this.useQueryParams = false;\n } else if (paginationMode === TablePaginationModeEnum.Pagination) {\n this.isPagination = true;\n }\n\n // check if data provider is supplied, if is, use it primarily\n if (this.dataProvider) {\n // map subjects to observables and initiate data\n this.useDataProvider = true;\n this.isLazy = this.dataProvider.isLazy;\n this.queryResult$ = this.dataProviderQueryResultSubject.asObservable();\n this.loading$ = this.dataProviderLoadingSubject.asObservable();\n const emptyQueryResult = new MediusQueryResult<T>();\n emptyQueryResult.pageData = [];\n emptyQueryResult.allDataCount = 0;\n this.dataProviderLoadingSubject.next(false);\n this.dataProviderQueryResultSubject.next(emptyQueryResult);\n\n // inject service\n if (this.dataProvider.serviceType) {\n this.dataProviderService = this.injector.get<any>(this.dataProvider.serviceType);\n }\n\n const reloadSubscription = this.dataProvider.getAllReload$.subscribe({\n next: () => {\n this.reload();\n }\n });\n this.subscriptions.push(reloadSubscription);\n } else {\n // if query result is provided, use it as secondary source or else try to use items\n if (this.queryResult) {\n this.queryResult$ = this.queryResult instanceof Observable ? this.queryResult : of(this.queryResult);\n } else {\n this.queryResult$ = (isObservable(this.items) ? this.items : this.itemsSubject.asObservable()).pipe(\n // distinctUntilChanged((v1, v2) => v1.length === v2.length &&\n // v1.every((v1i, idx) => v1i[this.descriptor.dataKeyProperty] === v2[idx][this.descriptor.dataKeyProperty])),\n map(items => {\n const queryResult = new MediusQueryResult<T>();\n queryResult.pageData = items;\n queryResult.allDataCount = items.length;\n return queryResult;\n })\n );\n if (!isObservable(this.items)) {\n this.itemsSubject.next(this.items ?? []);\n }\n }\n if (typeof this.loading !== 'undefined') {\n this.loading$ = this.loading instanceof Observable ? this.loading : of(this.loading);\n }\n }\n\n if (this.useQueryParams) {\n const rowParams = this.route.snapshot.queryParamMap.get('rows');\n const rows = rowParams ? parseInt(rowParams) : this.rows;\n\n const mediusQueryParam = MediusRestUtil.get().fromAngularQueryParamsToMediusQueryParams(this.route.snapshot.queryParams, this.filterDescriptors, this.rows);\n const event: LazyLoadEvent = {};\n event.multiSortMeta = this.createSortMeta(mediusQueryParam) ?? undefined;\n event.filters = this.createFilterMeta(mediusQueryParam);\n event.rows = rows;\n\n // first navigate to correct url with default filters/sorts\n this.router\n .navigate([], {\n relativeTo: this.route,\n replaceUrl: true,\n queryParams: MediusRestUtil.get().fromPrimeLazyLoadEventToAngularQueryParams(event)\n })\n .then(() => {\n this.initializeDataLoadingTriggers();\n });\n } else {\n this.initializeDataLoadingTriggers();\n }\n this.queryResultSubscription = this.queryResult$.subscribe(e => (this.queryResult = e));\n }\n\n public ngAfterContentInit() {\n this.templates.forEach(template => {\n switch (template.getType()) {\n case 'caption':\n this.captionTemplate = template.template;\n break;\n case 'columnAction':\n this.columnActionTemplate = template.template;\n if (!this.showInlineActionsColumn) {\n this.showInlineActionsColumn = true;\n }\n break;\n case 'footer':\n this.footerTemplate = template.template;\n break;\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['items'] && !changes['items'].firstChange && Array.isArray(changes['items'].currentValue)) {\n this.itemsSubject.next(changes['items'].currentValue);\n }\n\n if (changes['viewContainerInit'] && !changes['viewContainerInit'].firstChange) {\n this.initializeViewContainer();\n }\n\n if (this.globalFilterFieldsInit) {\n this.globalFilterFields = this.globalFilterFieldsInit;\n } else {\n this.globalFilterFields = (this.descriptor || this.initialDescriptor).columns.map((el: ColumnDescriptor<any, T>) => el.property);\n }\n }\n\n public ngOnDestroy() {\n this.dataProviderSubscription?.unsubscribe();\n this.queryResultSubscription?.unsubscribe();\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n public reload(emitEvent = false, resetParams = false) {\n const queryParamsBuilder = resetParams\n ? MediusQueryParamBuilder.create(this.rows, 0)\n : MediusQueryParamBuilder.createFromExisting(this.dataProviderLatestQueryParam ?? new MediusQueryParam())\n .withItemsPerPage(this.rows)\n .withItemsOffset(this.offset);\n\n this.loadTableWithDataProvider(queryParamsBuilder.build(), emitEvent);\n }\n\n public onTableLazyLoad(event: LazyLoadEvent) {\n this.dataProviderLatestLazyLoadEvent = event;\n this.dataProviderLatestLazyLoadEventVersion++;\n\n if (this.useQueryParams) {\n if (!event.multiSortMeta || event.multiSortMeta.length === 0) {\n // add default sort meta to event if not multisort meta is present\n event.multiSortMeta = this.createSortMeta() ?? undefined;\n }\n if (!event.filters) {\n event.filters = this.createFilterMeta();\n }\n\n if (!this.routerIsNavigationOutsideInProgress) {\n // this check is necessary: from some reason, primeNG commits one last lazy load event whenever any angular router navigation occurs\n this.router.navigate([], {\n relativeTo: this.route,\n replaceUrl: true,\n queryParams: MediusRestUtil.get().fromPrimeLazyLoadEventToAngularQueryParams(event)\n });\n }\n } else {\n const mediusQueryParams = event ? MediusRestUtil.get().fromPrimeLazyLoadEventToMediusQueryParams(event) : new MediusQueryParam();\n this.loadTableWithDataProvider(mediusQueryParams);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public onTableSort(event: any) {\n this.isSortChanged = true;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public onTableFilter(event: any) {\n this.isFilterChanged = true;\n }\n\n public onCellClick(event: Event, col: ColumnDescriptor<any, T>, item: T, idx: number) {\n const mngEvent = new MngTableCellClickEvent<T>(col, item, idx);\n this.cellClickEventEmitter.next(mngEvent);\n if (this.rowClickActions.length) {\n for (const action of this.rowClickActions) {\n const idProp = this.descriptor?.dataKeyProperty ?? action?.model?.idPropertyName;\n const parameters = new ActionParameters(idProp ? item[idProp as keyof object] : undefined, item)\n .withRoute(this.route)\n .withViewContainer(this.viewContainer)\n .withSourceComponent(this);\n this.actionExecutor.triggerAction(action, parameters, true);\n }\n }\n }\n\n public onSelectionChange(event: Array<T>) {\n this.selectionChangeEventEmitter.emit(event);\n }\n\n public onCaptionCmpInst<C>(instance: C) {\n this.captionCmpInstEventEmitter.next(instance);\n }\n\n public onColumnActionCmpInst<C>(instance: C) {\n this.columnActionCmpInstEventEmitter.next(instance);\n }\n\n public onActionFinish(runResult: ActionInstance<T, S>) {\n if (!runResult.error) {\n this.reload();\n }\n }\n\n /**\n * Method is called on column resize\n * @param element event's element\n */\n public onTableColumnResize({element}: any): void {\n const fieldId: string = element.id;\n const width: number = element.offsetWidth;\n\n const col = this.columns.find(el => el.descriptor.property === fieldId);\n if (col) col.width = width;\n if (!this.layoutPreferences.columnWidths) this.layoutPreferences.columnWidths = {};\n\n this.layoutPreferences.columnWidths[fieldId] = width;\n this.saveLayoutPreferences();\n }\n\n private loadTableWithDataProvider(queryParam: MediusQueryParam | null = null, emitEvent = true) {\n if (!this.useDataProvider) {\n return;\n }\n\n this.dataProviderSubscription?.unsubscribe();\n this.dataProviderLoadingSubject.next(true);\n\n if (!queryParam) {\n queryParam = MediusQueryParamBuilder.create(this.rows).build();\n }\n this.dataProviderLatestQueryParam = queryParam;\n this.dataProviderLatestQueryParamVersion++;\n\n MediusRestUtil.get().modifyFilterProperties(queryParam, this.filterDescriptors);\n MediusRestUtil.get().modifySortProperties(queryParam, this.descriptor?.columns);\n\n this.dataProviderSubscription = this.dataProvider\n ?.getAll(queryParam, this.dataProviderService, this.descriptor?.isLocalized ? this.mngCommonsService.appDataLanguage ?? undefined : undefined)\n .subscribe({\n next: res => {\n if (this.initialDescriptor instanceof TableDynamicDescriptor) {\n this.descriptor = this.initialDescriptor.toTableDescriptorFromData(res);\n this.filterDescriptors = this.descriptor.columns.filter(c => typeof c.filterDescriptor !== 'undefined').map(c => c.filterDescriptor!);\n this.hasColumnFilters = this.filterDescriptors.length > 0;\n\n this.isPagination = false;\n this.infiniteScroll = false;\n this.rows = this.initialDescriptor.defaultNumRows;\n this.rowsPerPageOptions = this.initialDescriptor.rowsPerPageOptions;\n }\n\n if (this.infiniteScroll) {\n if (this.isFilterChanged || this.isSortChanged) {\n this.dataProviderInfiniteScrollItems = [];\n }\n this.dataProviderInfiniteScrollItems.splice(queryParam!.itemsOffset ?? 0, queryParam!.itemsPerPage ?? this.rows, ...(res.pageData ?? []));\n this.dataProviderInfiniteScrollItems = [...this.dataProviderInfiniteScrollItems];\n } else {\n this.dataProviderQueryResultSubject.next(res);\n }\n this.isFilterChanged = false;\n this.isSortChanged = false;\n this.dataProviderLoadingSubject.next(false);\n },\n error: err => {\n // TODO: check what happens on error with no model iniside descriptor\n NotificationUtil.tableNotificationError(this.translate, this.descriptor!, err, this.viewContainer);\n const emptyQueryResult = new MediusQueryResult<T>();\n emptyQueryResult.pageData = [];\n emptyQueryResult.allDataCount = 0;\n this.dataProviderQueryResultSubject.next(emptyQueryResult);\n this.dataProviderLoadingSubject.next(false);\n }\n });\n\n if (emitEvent) {\n const mngEvent = new MngTableLoadEvent();\n mngEvent.originalEvent = this.dataProviderLatestLazyLoadEvent ?? undefined;\n mngEvent.queryParam = queryParam;\n this.loadEventEmitter.next(mngEvent);\n }\n }\n\n private loadTableFromRouteUpdate(params: Params) {\n const mediusQueryParam = MediusRestUtil.get().fromAngularQueryParamsToMediusQueryParams(params, this.filterDescriptors, this.rows);\n if (this.dataProviderLatestLazyLoadEventVersion < this.dataProviderLatestQueryParamVersion + 1) {\n // update only if new version from query params will be higher\n this.updatePrimeSortAndFilter(mediusQueryParam);\n }\n this.useQueryParamsInitializedSubejct.next(true);\n this.loadTableWithDataProvider(mediusQueryParam);\n }\n\n private updatePrimeSortAndFilter(mediusQueryParam: MediusQueryParam) {\n this.multiSortMeta = this.createSortMeta(mediusQueryParam);\n this.filterMetadata = this.createFilterMeta(mediusQueryParam);\n this.rows = mediusQueryParam?.itemsPerPage ?? this.rows;\n this.offset = mediusQueryParam?.itemsOffset ?? 0;\n }\n\n private createFilterMeta(mediusQueryParam?: MediusQueryParam) {\n let params: MediusQueryParam;\n if (!mediusQueryParam) {\n params = new MediusQueryParam();\n } else {\n params = mediusQueryParam;\n }\n\n const primeFilterMeta: {[s: string]: FilterMetadata} = {};\n // if any filter is present, no default filters should be applied!\n const applyDefaultFilters = (params.filterParams?.length ?? 0) === 0;\n\n this.filterDescriptors.forEach(f => {\n let matchMode;\n switch (f.filterType) {\n case FilterTypeEnum.String:\n matchMode = FilterMatchMode.CONTAINS;\n break;\n case FilterTypeEnum.Date:\n matchMode = FilterMatchMode.DATE_IS;\n break;\n case FilterTypeEnum.Lookup:\n case FilterTypeEnum.LookupEnum: {\n const lookupFilter = f as FilterLookupDescriptor<any>;\n if (lookupFilter.multiselect) {\n matchMode = FilterMatchMode.IN;\n } else {\n matchMode = FilterMatchMode.EQUALS;\n }\n break;\n }\n default:\n matchMode = FilterMatchMode.EQUALS;\n break;\n }\n\n if (f.defaultFilterMatchMode) {\n matchMode = f.defaultFilterMatchMode;\n }\n\n if (f.matchModes && !f.matchModes?.includes(matchMode)) {\n matchMode = f.matchModes[0];\n }\n\n let value = null;\n if (applyDefaultFilters) {\n if (f.defaultValueTo && f.defaultValue) {\n value = [f.defaultValue, f.defaultValueTo];\n } else if (f.defaultValue) {\n value = f.defaultValue;\n }\n }\n\n primeFilterMeta[f.property] = {\n value: value,\n matchMode: matchMode\n };\n });\n\n params.filterParams?.forEach(f => {\n const descriptor = this.filterDescriptors.find(fd => fd.filterProperty === f.property || fd.property === f.property);\n const matchMode = f.filterMatchType && descriptor ? MediusRestUtil.get().getMapping(f.filterMatchType, descriptor.filterType, 2)?.[0] : MediusFilterMatchType.Equals;\n if (descriptor && matchMode) {\n let filterValue = f.filterValue;\n if (descriptor.filterType === FilterTypeEnum.Date && typeof filterValue !== 'undefined') {\n if (typeof filterValue === 'string' || typeof filterValue === 'number') {\n filterValue = new Date(filterValue);\n }\n // if range is provided, take that into account\n if (typeof f.filterValueTo === 'string' || typeof f.filterValueTo === 'number') {\n const filterValueTo = new Date(f.filterValueTo);\n filterValue = [filterValue, filterValueTo];\n }\n }\n primeFilterMeta[descriptor.property] = {\n value: filterValue,\n matchMode: matchMode\n };\n }\n });\n return primeFilterMeta;\n }\n\n private createSortMeta(mediusQueryParam?: MediusQueryParam): SortMeta[] | null {\n let params: MediusQueryParam;\n if (!mediusQueryParam) {\n params = new MediusQueryParam();\n } else {\n params = mediusQueryParam;\n }\n\n let sortMeta: SortMeta[];\n const applyDefaultSorts = (params.sortProperty?.length ?? 0) === 0;\n\n if (applyDefaultSorts && this.descriptor?.hasDefaultSort) {\n sortMeta = this.descriptor.defaultSortProperty.map(\n (p, idx) =>\n <SortMeta>{\n field: p,\n order: this.descriptor!.defaultSortAsc[idx] ? 1 : -1\n }\n );\n } else {\n sortMeta = [];\n }\n\n params.sortProperty?.forEach((s, idx) => {\n const existingIndex = sortMeta.findIndex(value => value.field === s);\n if (existingIndex > -1) {\n sortMeta[existingIndex].order = params.sortAsc?.[idx] ?? true ? 1 : -1;\n } else {\n sortMeta.push({\n field: s,\n order: params.sortAsc?.[idx] ?? true ? 1 : -1\n });\n }\n });\n\n return sortMeta.length === 0 ? null : sortMeta;\n }\n\n private initializeDataLoadingTriggers() {\n if (this.useQueryParams) {\n // trigger table loads from route updates\n const routeQpSubscription = this.route.queryParams.subscribe(qp => {\n this.loadTableFromRouteUpdate(qp);\n });\n const routerEvSubscription = this.router.events\n .pipe(\n filter(\n e =>\n (e instanceof NavigationStart && e.url.split('?')[0].split('#')[0] !== this.router.url.split('?')[0].split('#')[0]) ||\n e instanceof NavigationEnd ||\n e instanceof NavigationCancel ||\n e instanceof NavigationError\n )\n )\n .subscribe(e => {\n this.routerIsNavigationOutsideInProgress = e instanceof NavigationStart;\n });\n\n this.subscriptions.push(routeQpSubscription);\n this.subscriptions.push(routerEvSubscription);\n } else {\n // load data immediately by creating default sorts and filters (primeng will trigger onLazyLoad event on sort&filter metadata change)\n const defaultSort = this.createSortMeta();\n if (!defaultSort || defaultSort.length > 0) {\n this.multiSortMeta = defaultSort;\n }\n\n const defaultFilter = this.createFilterMeta();\n if (defaultFilter) {\n this.filterMetadata = defaultFilter;\n }\n }\n }\n\n private initializeViewContainer() {\n this.viewContainer = this.viewContainerInit ?? this.viewContainerService ?? undefined;\n }\n\n public onColumnToggle(event: any) {\n if (event.itemValue) {\n event.itemValue.isVisible = !event.itemValue.isVisible;\n } else {\n for (const col of this.columns) {\n col.isVisible = event.value.includes(col);\n }\n }\n this.layoutPreferences.columnVisibility = this.visibleColumns.map(el => el.descriptor.property);\n this.saveLayoutPreferences();\n }\n\n /**\n * Propagates the column move from the this.visibleColumns array to this.columns array\n * @param event: MultiSelectChangeEvent\n */\n public onColumnReorder(event: any) {\n const col = this.visibleColumns[event.dropIndex];\n const colIndex = this.columns.findIndex(el => el === col);\n\n if (colIndex > -1) {\n this.columns.splice(colIndex, 1);\n const dropIndex = event.dropIndex > 0 ? this.columns.findIndex(el => el === this.visibleColumns[event.dropIndex - 1]) + 1 : 0;\n this.columns = [...this.columns.slice(0, dropIndex), col, ...this.columns.slice(dropIndex)];\n this.layoutPreferences.columnOrder = this.columns.map(el => el.descriptor.property);\n this.saveLayoutPreferences();\n }\n }\n\n private saveLayoutPreferences() {\n if (this.descriptor?.model.typeName) {\n this.localStorageService.setItem(this.cmpTypeName, this.localstorageKey, this.layoutPreferences);\n }\n }\n\n /**\n * Reset column order and column visibility to default settings\n */\n public resetDefaultLayout() {\n this.columns = this.descriptor ? this.descriptor.columns.map(col => ({descriptor: col, disabled: !col.isToggleable, isVisible: col.isVisible})) : [];\n this.visibleColumns = this.columns.filter(el => el.isVisible);\n if (this.descriptor?.model.typeName) {\n this.localStorageService.removeItem(this.cmpTypeName, this.localstorageKey);\n }\n\n this.layoutPreferences = {};\n }\n}\n","<div [style.height]=\"tableFullHeightOffset ? 'calc(100vh - ' + tableFullHeightOffset + 'px)' : null\">\n <!-- MUST NOT use observable for value when using virtual scroll - does not work for some reason -->\n <p-table\n *ngIf=\"!useQueryParams || (useQueryParamsInitialized$ | async)\"\n [value]=\"infiniteScroll ? dataProviderInfiniteScrollItems : (queryResult$ | async)?.pageData ?? []\"\n [dataKey]=\"$any(descriptor?.dataKeyProperty ?? null)\"\n [lazy]=\"isLazy\"\n [loading]=\"(loading$ | async) ?? false\"\n [paginator]=\"isPagination && !infiniteScroll\"\n [rows]=\"$any(infiniteScroll ? 20 : rows)\"\n [first]=\"$any(infiniteScroll ? 0 : offset)\"\n [totalRecords]=\"$any(infiniteScroll ? null : (queryResult$ | async)?.allDataCount ?? 0)\"\n [rowsPerPageOptions]=\"$any(infiniteScroll ? null : rowsPerPageOptions)\"\n [showCurrentPageReport]=\"!infiniteScroll\"\n [currentPageReportTemplate]=\"'mngTable.paginationMsg' | translate\"\n [multiSortMeta]=\"$any(multiSortMeta)\"\n [filters]=\"filterMetadata\"\n [globalFilterFields]=\"globalFilterFields\"\n sortMode=\"multiple\"\n [(selection)]=\"selection\"\n (selectionChange)=\"onSelectionChange($event)\"\n [selectionMode]=\"$any(selectionEnabled ? selectionMode : null)\"\n [scrollable]=\"true\"\n [virtualScroll]=\"infiniteScroll\"\n [virtualScrollItemSize]=\"$any(rowHeight)\"\n scrollHeight=\"flex\"\n [rowHover]=\"descriptor?.hasHover ?? true\"\n [styleClass]=\"className\"\n [resizableColumns]=\"descriptor?.hasResizableColumns ?? false\"\n [columnResizeMode]=\"descriptor?.columnResizeMode ?? 'fit'\"\n [reorderableColumns]=\"areColumnsReorderable\"\n [columns]=\"visibleColumns\"\n (onColResize)=\"onTableColumnResize($event)\"\n (onColReorder)=\"onColumnReorder($event)\"\n (onLazyLoad)=\"onTableLazyLoad($event)\"\n (onSort)=\"onTableSort($event)\"\n (onFilter)=\"onTableFilter($event)\">\n <ng-template *ngIf=\"captionTemplate || captionComponent || descriptor?.title\" pTemplate=\"caption\">\n <ng-container *ngIf=\"captionTemplate; else componentOrDefaultCaption\">\n <ng-container *ngTemplateOutlet=\"captionTemplate\"></ng-container>\n </ng-container>\n <ng-template #componentOrDefaultCaption>\n <div *ngIf=\"captionComponent; else defaultCaption\" [mngComponent]=\"captionComponent\" (instanceCreated)=\"onCaptionCmpInst($event)\"></div>\n <ng-template #defaultCaption>\n <h5 class=\"p-0 m-0\">{{ descriptor?.title }}</h5>\n </ng-template>\n </ng-template>\n </ng-template>\n\n <ng-template pTemplate=\"header\">\n <tr *ngIf=\"!descriptor?.hideHeader\" class=\"mng-table-header\" [class]=\"descriptor?.headerClassName\">\n <th *ngIf=\"selectionEnabled && selectionMode === 'multiple'\" style=\"min-width: 36px\" pFrozenColumn>\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\n </th>\n <!-- We need the line below, because otherwise p-tableRadioButton shifts the rest of the columns in table -->\n <th *ngIf=\"selectionEnabled && selectionMode === 'single'\" style=\"min-width: 36px\" pFrozenColumn></th>\n <ng-container *ngFor=\"let col of columns\">\n <ng-container *ngIf=\"col.isVisible\">\n <ng-template #sortableColumnTHTemplate>\n <div class=\"flex justify-content-between align-items-center\">\n {{ col.descriptor.title ?? (col.descriptor.property | i18nProperty : descriptor!.model) | translate }}\n <p-sortIcon [field]=\"col.descriptor.property\"></p-sortIcon>\n <mng-table-column-filter\n *ngIf=\"col.descriptor.filterDescriptor && descriptor!.filterDisplay === filterDisplayMenu\"\n class=\"ml-auto\"\n [display]=\"descriptor!.filterDisplay\"\n [descriptor]=\"col.descriptor.filterDescriptor\">\n </mng-table-column-filter>\n </div>\n </ng-template>\n <th\n *ngIf=\"col.descriptor.isSortEnabled && col.descriptor.isReorderable\"\n pResizableColumn\n pReorderableColumn\n [id]=\"col.descriptor.property\"\n [pSortableColumn]=\"col.descriptor.property\"\n [style.width]=\"col.width ? col.width + 'px' : col.descriptor.width + '%'\"\n [style.min-width.px]=\"col.descriptor.minWidth\"\n [style.max-width.px]=\"col.width ?? col.descriptor.maxWidth\"\n [class]=\"\n col.descriptor.headerClassName +\n (descriptor?.filterDisplay === filterDisplayRow && hasColumnFilters && col.descriptor.filterDescriptor\n ? ' mng-column-filter-' + col.descriptor.filterDescriptor.filterType\n : '')\n \">\n <ng-container *ngTemplateOutlet=\"sortableColumnTHTemplate\"></ng-container>\n </th>\n <th\n *ngIf=\"col.descriptor.isSortEnabled && !col.descriptor.isReorderable\"\n pResizableColumn\n [id]=\"col.descriptor.property\"\n [pSortableColumn]=\"col.descriptor.property\"\n [style.width]=\"col.width ? col.width + 'px' : col.descriptor.width + '%'\"\n [style.min-width.px]=\"col.descriptor.minWidth\"\n [style.max-width.px]=\"col.width ?? col.descriptor.maxWidth\"\n [class]=\"\n col.descriptor.headerClassName +\n (descriptor?.filterDisplay === filterDisplayRow && hasColumnFilters && col.descriptor.filterDescriptor\n ? ' mng-column-filter-' + col.descriptor.filterDescriptor.filterType\n : '')\n \">\n <ng-container *ngTemplateOutlet=\"sortableColumnTHTemplate\"></ng-container>\n </th>\n <ng-template #nonSortableColumnTHTemplate>\n {{ col.descriptor.title ?? (col.descriptor.property | i18nProperty : descriptor!.model) | translate }}\n <ng-container>\n <mng-table-column-filter\n *ngIf=\"col.descriptor.filterDescriptor && descriptor!.filterDisplay === filterDisplayMenu\"\n class=\"ml-auto\"\n [display]=\"descriptor!.filterDisplay\"\n [descriptor]=\"col.descriptor.filterDescriptor\">\n </mng-table-column-filter>\n </ng-container>\n </ng-template>\n <th\n pResizableColumn\n pReorderableColumn\n [id]=\"col.descriptor.property\"\n *ngIf=\"!col.descriptor.isSortEnabled && col.descriptor.isReorderable\"\n [style.width]=\"col.width ? col.width + 'px' : col.descriptor.width + '%'\"\n [style.min-width.px]=\"col.descriptor.minWidth\"\n [style.max-width.px]=\"col.width ?? col.descriptor.maxWidth\"\n [class]=\"\n col.descriptor.headerClassName +\n (descriptor?.filterDisplay === filterDisplayRow && hasColumnFilters && col.descriptor.filterDescriptor\n ? ' mng-column-filter-' + col.descriptor.filterDescriptor.filterType\n : '')\n \">\n <ng-container *ngTemplateOutlet=\"nonSortableColumnTHTemplate\"></ng-container>\n </th>\n <th\n *ngIf=\"!col.descriptor.isSortEnabled && !col.descriptor.isReorderable\"\n pResizableColumn\n [id]=\"col.descriptor.property\"\n [style.width]=\"col.width ? col.width + 'px' : col.descriptor.width + '%'\"\n [style.min-width.px]=\"col.descriptor.minWidth\"\n [style.max-width.px]=\"col.width ?? col.descriptor.maxWidth\"\n [class]=\"\n col.descriptor.headerClassName +\n (descriptor?.filterDisplay === filterDisplayRow && hasColumnFilters && col.descriptor.filterDescriptor\n ? ' mng-column-filter-' + col.descriptor.filterDescriptor.filterType\n : '')\n \">\n <ng-container *ngTemplateOutlet=\"nonSortableColumnTHTemplate\"></ng-container>\n </th>\n </ng-container>\n </ng-container>\n <th\n *ngIf=\"showInlineActionsColumn || areColumnsToggleable || areColumnsReorderable\"\n [style.min-width.px]=\"columnActionMinWidth\"\n pFrozenColumn\n alignFrozen=\"right\"\n class=\"text-right\">\n <p-multiSelect\n #columnToggleMultiselect\n *ngIf=\"areColumnsToggleable || areColumnsReorderable || descriptor?.hasResizableColumns\"\n class=\"col-8 adjustTableDropdown p-button-primary\"\n appendTo=\"body\"\n optionDisabled=\"disabled\"\n [filter]=\"false\"\n [options]=\"columns\"\n [(ngModel)]=\"visibleColumns\"\n [pTooltip]=\"'mngTable.adjustTable' | translate\"\n tooltipPosition=\"left\"\n defaultLabel=\"\"\n dropdownIcon=\"pi pi-sliders-h\"\n [displaySelectedLabel]=\"false\"\n (onChange)=\"onColumnToggle($event)\">\n <ng-template pTemplate=\"filter\">\n <div class=\"p-checkbox p-component ml-1\" [ngClass]=\"{'p-checkbox-disabled': !areColumnsToggleable}\">\n <div class=\"p-hidden-accessible\">\n <input\n type=\"checkbox\"\n readonly=\"readonly\"\n [checked]=\"columnToggleMultiselect.allChecked\"\n (focus)=\"columnToggleMultiselect.onHeaderCheckboxFocus()\"\n (blur)=\"columnToggleMultiselect.onHeaderCheckboxBlur()\"\n (keydown.space)=\"columnToggleMultiselect.toggleAll($event)\"\n [disabled]=\"!areColumnsToggleable\" />\n </div>\n <div\n class=\"p-checkbox-box\"\n role=\"checkbox\"\n [attr.aria-checked]=\"columnToggleMultiselect.allChecked\"\n [ngClass]=\"{\n 'p-highlight': columnToggleMultiselect.allChecked,\n 'p-focus': columnToggleMultiselect.headerCheckboxFocus,\n 'p-disabled': !areColumnsToggleable\n }\"\n (click)=\"columnToggleMultiselect.toggleAll($event)\">\n <span class=\"p-checkbox-icon\" [ngClass]=\"{'pi pi-check': columnToggleMultiselect.allChecked}\"></span>\n </div>\n </div>\n <p-button\n icon=\"pi pi-replay\"\n styleClass=\"p-button-secondary\"\n [pTooltip]=\"'mngTable.resetLayout' | translate\"\n tooltipPosition=\"left\"\n (click)=\"resetDefaultLayout()\"></p-button>\n </ng-template>\n <ng-template let-item pTemplate=\"item\">\n {{ item.descriptor.title ?? (item.descriptor.property | i18nProperty : descriptor!.model) | translate }}\n </ng-template>\n </p-multiSelect>\n </th>\n </tr>\n <tr *ngIf=\"descriptor?.filterDisplay === filterDisplayRow && hasColumnFilters\" class=\"mng-column-filter-row\">\n <!-- We need the line below, because otherwise p-tableRadioButton shifts the rest of the columns in table -->\n <th *ngIf=\"selectionEnabled && selectionMode === 'single'\" style=\"min-width: 36px\" pFrozenColumn></th>\n <ng-container *ngFor=\"let col of columns\">\n <th\n *ngIf=\"col.isVisible\"\n [class]=\"\n (col.descriptor.filterDescriptor ? 'mng-column-filter-' + col.descriptor.filterDescriptor.filterType + ' ' : ' ') +\n col.descriptor.filterDescriptor?.columnClassName\n \"\n [style.width.%]=\"col.descriptor.filterDescriptor?.columnWidth ?? col.descriptor.width\"\n [style.min-width.px]=\"col.descriptor.filterDescriptor?.columnMinWidth ?? col.descriptor.minWidth\"\n [style.max-width.px]=\"col.descriptor.maxWidth\">\n <div class=\"flex\" *ngIf=\"col.descriptor.filterDescriptor\">\n <mng-table-column-filter [display]=\"descriptor!.filterDisplay\" [descriptor]=\"col.descriptor.filterDescriptor\"></mng-table-column-filter>\n </div>\n </th>\n </ng-container>\n <th\n *ngIf=\"showInlineActionsColumn || areColumnsToggleable || areColumnsReorderable\"\n [style.min-width.px]=\"columnActionMinWidth\"\n pFrozenColumn\n alignFrozen=\"right\"></th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-item let-idx=\"rowIndex\">\n <tr\n [style.height.px]=\"rowHeight\"\n [ngClass]=\"descriptor?.rowClassName | mngClassMapPipe : descriptor?.rowClassNameMapFn : item | mngLocaleDefaultRowClass : descriptor : item\">\n <td *ngIf=\"selectionEnabled && selectionMode === 'multiple'\" style=\"min-width: 36px\" pFrozenColumn>\n <p-tableCheckbox [value]=\"item\"></p-tableCheckbox>\n </td>\n <td *ngIf=\"selectionEnabled && selectionMode === 'single'\" style=\"min-width: 36px\" pFrozenColumn>\n <p-tableRadioButton [value]=\"item\"></p-tableRadioButton>\n </td>\n <ng-container *ngFor=\"let col of columns\">\n <td\n *ngIf=\"col.isVisible\"\n (click)=\"onCellClick($event, col.descriptor, item, idx)\"\n [class]=\"\n col.descriptor.className +\n (descriptor?.filterDisplay === filterDisplayRow && hasColumnFilters && col.descriptor.filterDescriptor\n ? ' mng-column-filter-' + col.descriptor.filterDescriptor.filterType\n : '')\n \"\n [class.clickable]=\"isColumnClickable\"\n [style.width]=\"col.width ? col.width + 'px' : col.descriptor.width + '%'\"\n [style.min-width.px]=\"col.descriptor.minWidth\"\n [style.max-width.px]=\"col.width ?? col.descriptor.maxWidth\">\n <span class=\"p-column-title\">{{ col.descriptor.title ?? (col.descriptor.property | i18nProperty : descriptor!.model) | translate }}</span>\n <mng-table-column-value [descriptor]=\"col.descriptor\" [item]=\"item\"></mng-table-column-value>\n </td>\n </ng-container>\n <td\n *ngIf=\"showInlineActionsColumn\"\n class=\"column-action justify-content-end text-right\"\n [style.min-width.px]=\"columnActionMinWidth\"\n pFrozenColumn\n alignFrozen=\"right\">\n <ng-container *ngIf=\"columnActionTemplate; else showColumnActionComponentOrDefault\">\n <ng-container *ngTemplateOutlet=\"columnActionTemplate; context: {rowItem: item, rowIndex: idx}\"></ng-container>\n </ng-container>\n <ng-template #showColumnActionComponentOrDefault>\n <span\n *ngIf=\"columnActionComponent; else defaultColumnActions\"\n [mngComponent]=\"columnActionComponent!\"\n (instanceCreated)=\"onColumnActionCmpInst($event)\"></span>\n </ng-template>\n <ng-template #defaultColumnActions>\n <mng-action\n *ngFor=\"let action of rowInlineActions\"\n [action]=\"action\"\n [item]=\"item\"\n [viewContainer]=\"viewContainer\"\n [hostComponent]=\"this\"\n [itemId]=\"descriptor?.model?.idPropertyName ? item[descriptor!.model!.idPropertyName!] : null\"\n [actionData]=\"{itemIndex: idx}\"\n (finish)=\"onActionFinish($event)\">\n </mng-action>\n </ng-template>\n </td>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"loadingbody\">\n <tr [style.height.px]=\"rowHeight\">\n <td [attr.colspan]=\"(descriptor?.columns?.length ?? 0) + (showInlineActionsColumn ? 1 : 0) + (selectionEnabled ? 1 : 0)\">\n <div class=\"loading-text\"></div>\n <p-skeleton [ngStyle]=\"{width: '100%'}\"></p-skeleton>\n </td>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"emptymessage\">\n <tr [style.height.px]=\"rowHeight\">\n <td [attr.colspan]=\"(descriptor?.columns?.length ?? 0) + (showInlineActionsColumn ? 1 : 0) + (selectionEnabled ? 1 : 0)\">\n {{ 'mngTable.noItems' | translate }}\n </td>\n </tr>\n </ng-template>\n\n <ng-template *ngIf=\"footerTemplate\" pTemplate=\"summary\">\n <ng-container [ngTemplateOutlet]=\"footerTemplate\" [ngTemplateOutletContext]=\"{queryResult: queryResult}\"></ng-container>\n </ng-template>\n </p-table>\n</div>\n","import {NgForOf, NgIf, NgTemplateOutlet} from '@angular/common';\nimport {AfterContentInit, Component, ContentChildren, Input, OnDestroy, OnInit, QueryList, TemplateRef, ViewChild} from '@angular/core';\nimport {ActivatedRoute, RouterOutlet} from '@angular/router';\n\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {ConfirmationService, Message, MessageService} from 'primeng/api';\nimport {DialogModule} from 'primeng/dialog';\nimport {ToastModule} from 'primeng/toast';\nimport {ToolbarModule} from 'primeng/toolbar';\nimport {Subscription} from 'rxjs';\n\nimport {MediusQueryParam} from '../../api/models';\nimport {IDataProvider, ITableviewDataProvider} from '../../data-providers';\nimport {ActionDescriptor} from '../../descriptors/action';\nimport {TableviewDescriptor} from '../../descriptors/tableview';\nimport {ActionPositionEnum} from '../../descriptors/types';\nimport {MngTemplateDirective} from '../../directives';\nimport {IViewContainer} from '../../models';\nimport {MngActionExecutorService, MngViewContainerComponentService} from '../../services';\nimport {MngActionComponent} from '../action';\nimport {TableviewActionDefaultCategories} from '../action/models';\nimport {MngTableLoadEvent} from './models';\nimport {MngTableComponent} from './table/table.component';\n\n@Component({\n standalone: true,\n selector: 'mng-tableview',\n templateUrl: './tableview.component.html',\n imports: [\n ToastModule,\n DialogModule,\n ToolbarModule,\n NgForOf,\n TranslateModule,\n NgTemplateOutlet,\n NgIf,\n MngActionComponent,\n MngTableComponent,\n MngTemplateDirective,\n RouterOutlet\n ],\n providers: [MessageService, ConfirmationService, MngViewContainerComponentService]\n})\nexport class MngTableviewComponent<T, S> implements OnInit, OnDestroy, AfterContentInit, IViewContainer<T, S> {\n @Input() public descriptor!: TableviewDescriptor<T>;\n @Input() public dataProvider?: ITableviewDataProvider<T, S>;\n @Input() public actions: Array<ActionDescriptor<T>> = [];\n\n @ViewChild(MngTableComponent) public tableComponent?: MngTableComponent<T, S>;\n\n public tableActions: ActionDescriptor<T>[] = [];\n public toolbarLeftActions: ActionDescriptor<T>[] = [];\n public toolbarRightActions: ActionDescriptor<T>[] = [];\n\n public tableQueryParam?: MediusQueryParam;\n\n private subscriptions: Subscription[] = [];\n\n public hasItemSelectionAction = false;\n public selectedItems: T[] = [];\n\n @ContentChildren(MngTemplateDirective) public templates!: QueryList<MngTemplateDirective>;\n public footerTemplate?: TemplateRef<any>;\n\n public showingNotification: Message | null = null;\n public readonly notificationCutoff = 70;\n\n constructor(\n private route: ActivatedRoute,\n private messageService: MessageService,\n private translateService: TranslateService,\n private confirmationService: ConfirmationService,\n private actionExecutor: MngActionExecutorService,\n private viewContainerService: MngViewContainerComponentService<T, S>\n ) {}\n\n ngOnInit() {\n this.viewContainerService.setActions(this.actions);\n\n if (this.dataProvider) {\n this.viewContainerService.dataProvider = this.dataProvider;\n }\n const reloadTableSubscription = this.viewContainerService.getTableReload$().subscribe(() => {\n this.reloadTable();\n });\n this.subscriptions.push(reloadTableSubscription);\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 ngOnDestroy() {\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n getMessageService(): MessageService {\n return this.messageService;\n }\n\n getDataProvider(): IDataProvider<T, S> | undefined {\n return this.dataProvider;\n }\n\n getActions() {\n return this.actions;\n }\n\n public reloadTable() {\n this.tableComponent?.reload();\n }\n\n public onTableLoad(event: MngTableLoadEvent) {\n this.tableQueryParam = event.queryParam;\n }\n\n public selectionChange(selectedItems: Array<T>): void {\n this.selectedItems = selectedItems;\n }\n\n public getNotificationIconClass(message: Message | null): string {\n if (message?.icon) return message.icon;\n\n switch (message?.severity) {\n case 'info':\n return 'pi-info-circle';\n case 'warning':\n return 'pi-exclamation-triangle';\n case 'error':\n return 'pi-times-circle';\n case 'success':\n return 'pi-check';\n default:\n return '';\n }\n }\n}\n","<div class=\"mng-tableview\">\n <p-toast>\n <ng-template let-message pTemplate=\"message\">\n <span [class]=\"'p-toast-message-icon pi ' + getNotificationIconClass(message)\"></span>\n <div class=\"p-toast-message-text\">\n <div class=\"p-toast-summary\">{{ message.summary }}</div>\n <div class=\"p-toast-detail\">{{ message.detail.slice(0, notificationCutoff) + (message.detail.length > notificationCutoff ? '...' : '') }}</div>\n <div *ngIf=\"message.detail.length > notificationCutoff\" (click)=\"showingNotification = message\" class=\"p-link font-semibold text-sm mt-2 flex align-items-center\">\n <i class=\"pi pi-chevron-down mr-1\"></i>{{ 'notification.details' | translate }}\n </div>\n </div>\n </ng-template>\n </p-toast>\n <p-dialog\n [(visible)]=\"showingNotification\"\n [styleClass]=\"'p-fluid mng-dialog mng-dialog-xs ' + 'mng-message-detail-dialog mng-message-detail-dialog-' + (showingNotification?.severity ?? '')\">\n <ng-template pTemplate=\"header\">\n <span class=\"p-dialog-title font-bold mng-dialog-success\">\n <span [class]=\"'mr-2 pi ' + getNotificationIconClass(showingNotification)\"></span>\n {{ showingNotification?.summary ?? '' }}\n </span>\n </ng-template>\n <div>\n {{ showingNotification?.detail ?? '' }}\n </div>\n </p-dialog>\n\n <div class=\"card\">\n <p-toolbar styleClass=\"mb-4\" *ngIf=\"toolbarLeftActions.length > 0 || toolbarRightActions.length > 0\">\n <ng-template pTemplate=\"left\">\n <mng-action\n *ngFor=\"let action of toolbarLeftActions\"\n [action]=\"action\"\n [queryParam]=\"tableQueryParam\"\n [hostComponent]=\"this\"\n [selectedItems]=\"selectedItems\"></mng-action>\n </ng-template>\n\n <ng-template pTemplate=\"right\">\n <mng-action\n *ngFor=\"let action of toolbarRightActions\"\n [action]=\"action\"\n [queryParam]=\"tableQueryParam\"\n [hostComponent]=\"this\"\n [selectedItems]=\"selectedItems\"></mng-action>\n </ng-template>\n </p-toolbar>\n\n <mng-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 <ng-template let-queryResult=\"queryResult\" mngTemplate=\"footer\">\n <ng-container *ngIf=\"footerTemplate\" [ngTemplateOutlet]=\"footerTemplate\" [ngTemplateOutletContext]=\"{queryResult: queryResult}\"></ng-container>\n </ng-template>\n </mng-table>\n </div>\n\n <router-outlet></router-outlet>\n</div>\n","import {Directive, OnInit, inject} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {of, tap} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {MediusQueryParamBuilder} from '../../../api/models/builders/query-param.builder';\nimport {ITableviewDataProvider} from '../../../data-providers';\nimport {ModelDescriptor} from '../../../descriptors';\nimport {\n ActionButtonDescriptor,\n ActionDeleteDescriptor,\n ActionDescriptor,\n ActionEditorAddDescriptor,\n ActionEditorDetailsDescriptor,\n ActionEditorEditDescriptor,\n ActionLinkDescriptor\n} from '../../../descriptors/action';\nimport {EditorDescriptor} from '../../../descriptors/editor';\nimport {TableviewDescriptor} from '../../../descriptors/tableview';\nimport {ActionPositionEnum} from '../../../descriptors/types';\nimport {IViewContainerEditor, IViewContainerTable} from '../../../models';\nimport {MngRouterData} from '../../../router/models';\nimport {ButtonStyleRoundedEnum} from '../../../styles';\nimport {StyleLevelEnum, StyleSizeEnum} from '../../../styles/models';\nimport {ActionDataProviderUtil, ExportUtils, FileUtil} from '../../../utils';\nimport {MngDataLanguageDropdownComponent} from '../../action';\nimport {ActionContext, TableviewActionDefaultCategories} from '../../action/models';\n\n@Directive({\n standalone: true\n})\nexport abstract class AMngTableviewRouteComponent<T, S> implements OnInit {\n public descriptor!: TableviewDescriptor<T>;\n public dataProvider!: ITableviewDataProvider<T, S>;\n public actions!: Array<ActionDescriptor<T>>;\n\n protected route: ActivatedRoute;\n protected translateService: TranslateService;\n\n constructor() {\n this.route = inject(ActivatedRoute);\n this.translateService = inject(TranslateService);\n }\n\n protected get routeData() {\n return this.route.snapshot.data as MngRouterData;\n }\n\n public ngOnInit() {\n this.descriptor = this.createTableviewDescriptor();\n this.dataProvider = this.createTableviewDataProvider();\n this.actions = this.createActionDescriptors();\n }\n\n protected abstract createTableviewDescriptor(): TableviewDescriptor<T>;\n\n protected abstract createTableviewDataProvider(): ITableviewDataProvider<T, S>;\n\n protected createActionDescriptors(): Array<ActionDescriptor<T>> {\n const editDescriptor = this.createActionDescriptorForEdit();\n return [\n this.createActionDescriptorForDetails(),\n this.createActionDescriptorForAdd(),\n editDescriptor,\n this.createActionDescriptorForDelete(),\n this.createActionDescriptorForRefresh(),\n this.createActionDescriptorForExport(),\n this.createActionDescriptorForDataTranslate(),\n\n //details actions\n this.createActionDescriptorForDetailsEditLink(this.descriptor.model, editDescriptor),\n this.createActionDescriptorForDetailsDelete()\n ].filter(e => e != null) as Array<ActionDescriptor<T>>;\n }\n\n protected createActionDescriptorForDetails(descriptor: EditorDescriptor<T> = this.descriptor.detailsEditor): ActionEditorDetailsDescriptor<T> | null {\n return !this.routeData.tableviewActions || this.routeData.tableviewActions.hasDetails ? new ActionEditorDetailsDescriptor(descriptor) : null;\n }\n\n protected createActionDescriptorForAdd(descriptor: EditorDescriptor<T> = this.descriptor.addEditor): ActionEditorAddDescriptor<T> | null {\n return !this.routeData.tableviewActions || this.routeData.tableviewActions.hasAdd ? new ActionEditorAddDescriptor(descriptor) : null;\n }\n\n protected createActionDescriptorForEdit(descriptor: EditorDescriptor<T> = this.descriptor.editEditor): ActionEditorEditDescriptor<T> | null {\n return !this.routeData.tableviewActions || this.routeData.tableviewActions.hasEdit ? new ActionEditorEditDescriptor(descriptor) : null;\n }\n\n protected createActionDescriptorForDetailsEditLink(\n descriptor: ModelDescriptor<T> = this.descriptor.model,\n editDescriptor: ActionEditorEditDescriptor<T> | null\n ): ActionLinkDescriptor<T> | null {\n if (!this.routeData.tableviewActions || this.routeData.tableviewActions.hasEdit) {\n const action = editDescriptor\n ? ActionLinkDescriptor.fromActionDescriptor(editDescriptor)\n : new ActionLinkDescriptor(descriptor, ActionEditorEditDescriptor.ACTION_NAME);\n\n action\n .withTableviewCategory(TableviewActionDefaultCategories.EDIT)\n .withPositionTableviewCategories([TableviewActionDefaultCategories.DETAILS])\n .withPosition(ActionPositionEnum.FooterLeft)\n .withRouterLink('./edit');\n action.button.styleClass.withActionLevel(StyleLevelEnum.Secondary);\n action.button.styleClass.withSize(StyleSizeEnum.Normal);\n action.button.styleClass.withRoundedButton(ButtonStyleRoundedEnum.DEFAULT);\n action.button.withLabel();\n if (!editDescriptor) action.button.withIcon('pi pi-pencil');\n\n return action;\n }\n\n return null;\n }\n\n protected createActionDescriptorForDetailsDelete(): ActionDescriptor<T> | null {\n const action = this.createActionDescriptorForDelete();\n if (action) {\n action\n .withTableviewCategory(TableviewActionDefaultCategories.DELETE)\n .withPositionTableviewCategories([TableviewActionDefaultCategories.DETAILS])\n .withPosition(ActionPositionEnum.FooterLeft)\n .withRunFunction(ctx =>\n ActionDataProviderUtil.runDeleteOrFail(ctx).pipe(\n tap(() => {\n (ctx.parameters.viewContainer as IViewContainerTable<unknown, unknown>)?.reloadTable?.({});\n (ctx.parameters.viewContainer as IViewContainerEditor<unknown, unknown>)?.closeEditor?.();\n })\n )\n );\n action.button.withLabel(undefined);\n action.button.styleClass.withSize(StyleSizeEnum.Normal);\n\n return action;\n }\n\n return null;\n }\n\n protected createActionDescriptorForDelete(descriptor: ModelDescriptor<T> = this.descriptor.model): ActionDeleteDescriptor<T> | null {\n return !this.routeData.tableviewActions || this.routeData.tableviewActions.hasDelete ? new ActionDeleteDescriptor(descriptor) : null;\n }\n\n protected createActionDescriptorForExport(descriptor: ModelDescriptor<T> = this.descriptor.model): ActionDescriptor<T> | null {\n const exportAction = new ActionDescriptor(descriptor, 'export').withButtonDescriptor(new ActionButtonDescriptor().withIcon('pi pi-download')).withSubactionsAsMenu();\n exportAction.withSubactions(this.createActionDescriptorForExportJson(descriptor), this.createActionDescriptorForExportCsv(descriptor));\n return exportAction;\n }\n\n protected createActionDescriptorForExportJson(descriptor: ModelDescriptor<T> = this.descriptor.model): ActionDescriptor<T> {\n return new ActionDescriptor(descriptor, 'exportJson')\n .withRunFunction(ctx => {\n const queryParamBuilder = ctx.parameters.queryParam ? MediusQueryParamBuilder.createFromExisting(ctx.parameters.queryParam) : MediusQueryParamBuilder.create();\n queryParamBuilder.withItemsOffset(0).withItemsPerPage(500);\n ctx.parameters.withQueryParam(queryParamBuilder.build());\n return ActionDataProviderUtil.runGetAllOrFail(ctx).pipe(\n map(res => {\n const blob = new Blob([JSON.stringify(res.pageData, undefined, 4)], {type: 'application/json;charset=utf-8'});\n const typeName = ctx.instance.action.model?.typeName ?? '';\n FileUtil.saveAs(blob, `${typeName ? typeName + '_' : ''}${ctx.instance.action.actionName}.json`);\n return undefined;\n })\n );\n })\n .withButtonDescriptor(new ActionButtonDescriptor().withIcon('pi pi-code'))\n .withPosition(ActionPositionEnum.ToolbarRight);\n }\n\n protected createActionDescriptorForExportCsv(descriptor: ModelDescriptor<T> = this.descriptor.model): ActionDescriptor<T> {\n return new ActionDescriptor(descriptor, 'exportCsv')\n .withRunFunction(ctx => {\n const queryParamBuilder = ctx.parameters.queryParam ? MediusQueryParamBuilder.createFromExisting(ctx.parameters.queryParam) : MediusQueryParamBuilder.create();\n queryParamBuilder.withItemsOffset(0).withItemsPerPage(500);\n ctx.parameters.withQueryParam(queryParamBuilder.build());\n return ActionDataProviderUtil.runGetAllOrFail(ctx).pipe(\n map(res => {\n if (!res.pageData) {\n return undefined;\n }\n const blob = new Blob([ExportUtils.prepareDataForExport(res.pageData, ',', this.descriptor, this.translateService)], {type: 'text/csv;charset=utf-8'});\n const typeName = ctx.instance.action.model?.typeName ?? '';\n FileUtil.saveAs(blob, `${typeName ? typeName + '_' : ''}${ctx.instance.action.actionName}.csv`);\n return undefined;\n })\n );\n })\n .withButtonDescriptor(new ActionButtonDescriptor().withIcon('pi pi-file'))\n .withPosition(ActionPositionEnum.ToolbarRight);\n }\n\n protected createActionDescriptorForRefresh(descriptor: ModelDescriptor<T> = this.descriptor.model): ActionDescriptor<T> | null {\n const action = new ActionDescriptor<T>(descriptor, 'refresh')\n .withPosition(ActionPositionEnum.ToolbarRight)\n .withTableviewCategory(TableviewActionDefaultCategories.READ)\n .withRunNotificationSuccess(undefined, undefined, false)\n .withRunFunction((ctx: ActionContext<T, S>) => {\n (ctx.parameters.viewContainer as IViewContainerTable<T, S>)?.reloadTable?.({});\n return of(null);\n });\n action.button.withIcon('pi pi-refresh').styleClass.withActionLevel(StyleLevelEnum.Secondary);\n return action;\n }\n\n protected createActionDescriptorForDataTranslate(descriptor: ModelDescriptor<T> = this.descriptor.model): ActionDescriptor<T> | null {\n return this.descriptor.isLocalized()\n ? new ActionDescriptor<T>(descriptor, 'translator').withPosition(ActionPositionEnum.ToolbarLeft).withComponent(MngDataLanguageDropdownComponent)\n : null;\n }\n}\n","import {Component, Input, OnInit, ViewChild} from '@angular/core';\n\nimport {ITableviewDataProvider} from '../../../data-providers';\nimport {ActionDescriptor} from '../../../descriptors/action';\nimport {TableviewDescriptor} from '../../../descriptors/tableview';\nimport {MngTableviewComponent} from '../tableview.component';\nimport {AMngTableviewRouteComponent} from './tableview-route.abstract.component';\n\n@Component({\n standalone: true,\n selector: 'mng-tableview-route',\n imports: [MngTableviewComponent],\n templateUrl: '../../../../templates/tableview-route.component.html'\n})\nexport class MngTableviewRouteComponent<T, S> extends AMngTableviewRouteComponent<T, S> implements OnInit {\n @Input('descriptor') public descriptorInit?: TableviewDescriptor<T>;\n @Input('dataProvider') public dataProviderInit?: ITableviewDataProvider<T, S>;\n @Input('actions') public actionsInit?: Array<ActionDescriptor<T>>;\n\n @ViewChild(MngTableviewComponent)\n public tableviewComponent?: MngTableviewComponent<T, S>;\n\n protected createTableviewDescriptor(): TableviewDescriptor<T> {\n if (this.descriptorInit) {\n return this.descriptorInit;\n }\n if (this.routeData?.tableview?.descriptor) {\n throw Error('Tableview requires a descriptor.');\n }\n return this.routeData.tableview!.descriptor;\n }\n\n protected createTableviewDataProvider(): ITableviewDataProvider<T, S> {\n if (this.dataProviderInit) {\n return this.dataProviderInit;\n }\n if (this.routeData?.tableview?.dataProvider) {\n throw Error('Tableview requires a data provider.');\n }\n return this.routeData.tableview!.dataProvider;\n }\n\n protected override createActionDescriptors(): Array<ActionDescriptor<T>> {\n if (this.actionsInit) {\n return this.actionsInit;\n }\n return this.routeData?.tableview?.actions ?? super.createActionDescriptors();\n }\n\n public reloadTable() {\n this.tableviewComponent?.reloadTable();\n }\n}\n","<div class=\"grid\">\n <div class=\"col-12\">\n <mng-tableview [descriptor]=\"descriptor\" [dataProvider]=\"dataProvider\" [actions]=\"actions\"> </mng-tableview>\n </div>\n</div>\n","import {AsyncPipe, NgIf} from '@angular/common';\nimport {AfterViewInit, ChangeDetectionStrategy, Component, Injector, OnDestroy, OnInit, ViewChild} 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 {MediusQueryParamBuilder, MediusQueryResult} from '../../../../../api/models';\nimport {FieldLookupDescriptor} from '../../../../../descriptors/editor';\nimport {FieldLookupConfig} from '../../../../../descriptors/interfaces';\nimport {IViewContainer, MngErrorInternal} from '../../../../../models';\nimport {MngTableComponent} from '../../../../tableview';\nimport {MngFormEditorComponent} from '../../../editor/form-editor.component';\nimport {MngFormFieldEventComponentSubtype, MngFormFieldEventDialogSubtype, MngFormFieldEventTypeEnum} from '../../../models';\nimport {MngFormlyFieldConfig} from '../../models';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-lookup-dialog',\n templateUrl: 'formly-field-lookup-dialog.component.html',\n imports: [TranslateModule, FormlyModule, ReactiveFormsModule, ButtonModule, RippleModule, DialogModule, AsyncPipe, NgIf, MngTableComponent, MessagesModule, InputTextModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormlyFieldLookupDialogComponent<T, ET> extends FieldType<MngFormlyFieldConfig> implements OnInit, AfterViewInit, OnDestroy {\n @ViewChild(MngTableComponent) public mngTable?: MngTableComponent<any, any>;\n\n public descriptor!: FieldLookupDescriptor<T, ET>;\n public config!: FieldLookupConfig;\n public fieldLabelFormControl: FormControl = new FormControl();\n\n public itemsSubject: Subject<T> = new ReplaySubject(1);\n public itemsAsync: Observable<T> = this.itemsSubject.asObservable();\n public addItemsSubject: Subject<MediusQueryResult<T>> = new ReplaySubject(1);\n public addItemsAsync: Observable<MediusQueryResult<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 public viewContainer?: IViewContainer<any, unknown>;\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 this.subscriptions.push((this.props.formEditorComponent as MngFormEditorComponent<unknown>).viewContainer$.subscribe(value => (this.viewContainer = value)));\n\n // emit lifecycle event\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldLookupDialogComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.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!.dataKeyProperty ?? this.descriptor.dialogTableDescriptor!.model.idPropertyName;\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.itemsSubject.next(v);\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.ValueChange, MngFormlyFieldLookupDialogComponent, 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(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldLookupDialogComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.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(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldLookupDialogComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n\n openSelectDialog() {\n if (!this.dialogAreItemsLoaded && this.dialogUseDataProvider) {\n this.dialogIsLoadingSubject.next(true);\n const queryParamBuilder = MediusQueryParamBuilder.create(50);\n if (this.descriptor.dialogTableDescriptor!.hasDefaultSort) {\n this.descriptor.dialogTableDescriptor!.defaultSortProperty.forEach((p, idx) =>\n queryParamBuilder.withSort(p, this.descriptor.dialogTableDescriptor!.defaultSortAsc[idx])\n );\n }\n this.lookupDataProviderSubscription = this.descriptor.dataProvider?.lookup(queryParamBuilder.build(), this.dialogDataProviderService).subscribe({\n next: res => {\n const mqr = new MediusQueryResult<T>();\n mqr.pageData = res;\n mqr.allDataCount = res.length;\n this.addItemsSubject.next(mqr);\n this.dialogAreItemsLoaded = true;\n this.dialogIsLoadingSubject.next(false);\n\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.DataProvider, MngFormlyFieldLookupDialogComponent, this, {\n eventSubtype: 'LookupNext',\n queryResult: mqr\n });\n },\n error: err => {\n this.dialogIsLoadingSubject.next(false);\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.DataProvider, MngFormlyFieldLookupDialogComponent, this, {\n eventSubtype: 'LookupError',\n queryResult: err\n });\n }\n });\n }\n this.dialogSelectedItem = null;\n this.isDialogVisible = true;\n\n this.formControl.markAsTouched();\n\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.DialogLifecycle, MngFormlyFieldLookupDialogComponent, this, {\n eventSubtype: MngFormFieldEventDialogSubtype.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(MngFormFieldEventTypeEnum.DialogLifecycle, MngFormlyFieldLookupDialogComponent, this, {\n eventSubtype: MngFormFieldEventDialogSubtype.TABLE_CAPTION_COMPONENT_INSTANCE,\n captionComponentInstance: instance\n });\n }\n\n onColumnActionCmpInst(instance: any) {\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.DialogLifecycle, MngFormlyFieldLookupDialogComponent, this, {\n eventSubtype: MngFormFieldEventDialogSubtype.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(MngFormFieldEventTypeEnum.DialogLifecycle, MngFormlyFieldLookupDialogComponent, this, {\n eventSubtype: MngFormFieldEventDialogSubtype.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.itemsLabelProperty ?? this.descriptor.dialogTableDescriptor?.model.titlePropertyName;\n if (!labelProperty) {\n throw new MngErrorInternal('Could not determine label property.', 'MngFormlyFieldLookupDialog error').consoleError();\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 <i class=\"mng-dropdown-clear-icon pi pi-times\" (click)=\"clear()\" *ngIf=\"!props.required && formControl?.value && !formControl?.disabled\"></i>\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\">\n <mng-table\n [descriptor]=\"descriptor.dialogTableDescriptor!\"\n [dataProvider]=\"descriptor.dialogTableDataProvider\"\n [queryResult]=\"addItemsAsync\"\n [selectionEnabled]=\"true\"\n [selectionMode]=\"'single'\"\n [loading]=\"dialogIsLoading$\"\n [captionComponent]=\"config.table?.captionComponent\"\n [columnActionComponent]=\"config.table?.columnActionComponent\"\n [viewContainer]=\"viewContainer\"\n (selectionChange)=\"onSelectionChange($event)\"\n (captionComponentInstance)=\"onCaptionCmpInst($event)\"\n (columnActionComponentInstance)=\"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 [disabled]=\"form.disabled\"></button>\n </ng-template>\n</p-dialog>\n","import {NgForOf, NgIf} from '@angular/common';\nimport {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 {ActionButtonDescriptor, ActionDescriptor, ActionEditorDescriptor, ActionEditorSubmitDescriptor} from '../../../../../descriptors/action';\nimport {FieldManyEditorDescriptor} from '../../../../../descriptors/editor';\nimport {ActionEditorSubmitTypeEnum, ActionPositionEnum, FieldManyEditorActionEnum} from '../../../../../descriptors/types';\nimport {MngTemplateDirective} from '../../../../../directives';\nimport {IViewContainer, MngErrorInternal} from '../../../../../models';\nimport {MngCommonsService} from '../../../../../services';\nimport {ButtonStyleBuilder} from '../../../../../styles';\nimport {StyleLevelEnum, StyleSizeEnum} from '../../../../../styles/models';\nimport {MngActionComponent} from '../../../../action';\nimport {ActionContextValidation} from '../../../../action/models';\nimport {MngTableComponent} from '../../../../tableview';\nimport {MngFormEditorComponent} from '../../../editor/form-editor.component';\nimport {MngFormFieldEventComponentSubtype, MngFormFieldEventTypeEnum} from '../../../models';\nimport {MngFormlyFieldConfig} from '../../models';\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, NgForOf, NgIf, MngActionComponent, MngTableComponent, MngTemplateDirective],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormlyFieldTableDialogFormComponent<T, ET> extends FieldType<MngFormlyFieldConfig> 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<ActionDescriptor<T>> = [];\n public toolbarRightActions: Array<ActionDescriptor<T>> = [];\n\n public viewContainer?: IViewContainer<any, unknown>;\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 this.subscriptions.push((this.props.formEditorComponent as MngFormEditorComponent<unknown>).viewContainer$.subscribe(value => (this.viewContainer = value)));\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 = new ActionEditorDescriptor(this.descriptor.tableviewDescriptor.detailsEditor, 'details', this.descriptor.editor.model.type, this.descriptor.property)\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([new ActionEditorSubmitDescriptor(viewAction, ActionEditorSubmitTypeEnum.Cancel)]);\n viewAction.button.withLabel(null);\n this.actions.push(viewAction as ActionDescriptor<T>);\n }\n\n if (hasAddAction) {\n const addAction = new ActionEditorDescriptor(this.descriptor.tableviewDescriptor.addEditor, 'add', this.descriptor.editor.model.type, this.descriptor.property)\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 MngErrorInternal(`No item was provided in context, add cannot be done.`, 'FormlyFieldTableDialogFormComponent error').consoleError()\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 as ActionDescriptor<T>);\n }\n if (hasEditAction) {\n const editAction = new ActionEditorDescriptor(this.descriptor.tableviewDescriptor.editEditor, 'edit', this.descriptor.editor.model.type, this.descriptor.property)\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 MngErrorInternal(`No item was provided in context, edit cannot be done.`, 'FormlyFieldTableDialogFormComponent error').consoleError()\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 as ActionDescriptor<T>);\n }\n if (hasDeleteAction) {\n const deleteAction = new ActionDescriptor(this.descriptor.tableviewDescriptor.model, 'delete', this.descriptor.editor.model.type, this.descriptor.property)\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 MngErrorInternal(`No item was provided in context, delete cannot be done.`, 'FormlyFieldTableDialogFormComponent error').consoleError()\n );\n }\n let formControlValue = this.formControl.value as Array<T>;\n const compareProperty = this.descriptor.tableDescriptor.dataKeyProperty\n ? this.descriptor.tableDescriptor.dataKeyProperty\n : this.descriptor.tableDescriptor.model.idPropertyName;\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 new MngErrorInternal(\n 'Cannot compare items, please provide main table data key property or model id property.',\n 'FormlyFieldTableDialogFormComponent error'\n ).consoleError()\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(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldTableDialogFormComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.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(MngFormFieldEventTypeEnum.ValueChange, MngFormlyFieldTableDialogFormComponent, 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(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldTableDialogFormComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.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(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldTableDialogFormComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.ON_DESTROY\n });\n }\n\n private hideActionsForRowWithDefaultLocalization(ctx: ActionContextValidation<T, unknown>) {\n if (this.descriptor.tableDescriptor.isLocalized) {\n if ((ctx.parameters.item as any)[this.descriptor.tableDescriptor.localizationLocaleProperty!] === this.injector.get(MngCommonsService).defaultDataLanguage) {\n return true;\n }\n }\n return false;\n }\n}\n","<mng-table [descriptor]=\"descriptor.tableDescriptor\" [items]=\"items$\" [actions]=\"actions\" [viewContainer]=\"viewContainer\">\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 }} <span *ngIf=\"props.required && props['hideRequiredMarker'] !== true\">*</span></label\n >\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\" [viewContainer]=\"viewContainer\"></mng-action>\n </div>\n </ng-template>\n</mng-table>\n","import {AsyncPipe, NgIf, NgStyle} from '@angular/common';\nimport {AfterViewInit, ChangeDetectionStrategy, Component, Injector, OnDestroy, OnInit, ViewChild} 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 {MediusFilterMatchType, MediusQueryParamBuilder, MediusQueryResult} from '../../../../../api/models';\nimport {FieldManyToManyEditorDescriptor} from '../../../../../descriptors/editor';\nimport {FieldManyToManyEditorActionEnum} from '../../../../../descriptors/types';\nimport {MngTemplateDirective} from '../../../../../directives';\nimport {IViewContainer, MngErrorInternal} from '../../../../../models';\nimport {MngTableComponent} from '../../../../tableview';\nimport {MngFormEditorComponent} from '../../../editor/form-editor.component';\nimport {MngFormFieldEventComponentSubtype, MngFormFieldEventDialogSubtype, MngFormFieldEventTypeEnum} from '../../../models';\nimport {MngFormlyFieldConfig} from '../../models';\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, NgIf, AsyncPipe, MngTableComponent, DialogModule, ButtonModule, RippleModule, MngTemplateDirective, InputTextModule, NgStyle],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormlyFieldTableDialogMultiselectComponent<T, ET> extends FieldType<MngFormlyFieldConfig> implements OnInit, AfterViewInit, OnDestroy {\n public descriptor!: FieldManyToManyEditorDescriptor<T, ET>;\n\n public itemsSubject: Subject<Array<T>> = new ReplaySubject(1);\n public itemsAsync: Observable<Array<T>> = this.itemsSubject.asObservable();\n public addItemsSubject: Subject<MediusQueryResult<T>> = new ReplaySubject(1);\n public addItemsAsync: Observable<MediusQueryResult<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 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 public viewContainer?: IViewContainer<any, unknown>;\n\n @ViewChild('addTableComponent') addTableComponent?: MngTableComponent<T, ET>;\n\n constructor(private injector: Injector) {\n super();\n }\n\n public ngOnInit() {\n this.descriptor = this.props.descriptor as FieldManyToManyEditorDescriptor<T, ET>;\n this.props.fieldComponent = this;\n this.subscriptions.push((this.props.formEditorComponent as MngFormEditorComponent<unknown>).viewContainer$.subscribe(value => (this.viewContainer = value)));\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(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldTableDialogMultiselectComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.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(MngFormFieldEventTypeEnum.ValueChange, MngFormlyFieldTableDialogMultiselectComponent, 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(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldTableDialogMultiselectComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.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(MngFormFieldEventTypeEnum.ComponentLifecycle, MngFormlyFieldTableDialogMultiselectComponent, this, {\n eventSubtype: MngFormFieldEventComponentSubtype.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 queryParamBuilder = MediusQueryParamBuilder.create(50);\n if (this.descriptor.lookupTableDescriptor.hasDefaultSort) {\n this.descriptor.lookupTableDescriptor.defaultSortProperty.forEach((p, idx) =>\n queryParamBuilder.withSort(p, this.descriptor.lookupTableDescriptor.defaultSortAsc[idx])\n );\n }\n if (this.descriptor.hasLookupExcludeValues) {\n const filterValues = this.formControl.value.map((i: any) => i[this.descriptor.excludeValueProperty]);\n queryParamBuilder.withFilter(this.descriptor.excludeFilterProperty, filterValues, undefined, MediusFilterMatchType.NotIn);\n }\n this.lookupDataProviderSubscription = this.descriptor.lookupTableDataProvider?.getAll(queryParamBuilder.build(), this.dialogDataProviderService).subscribe({\n next: res => {\n this.addItemsSubject.next(res);\n this.dialogAreItemsLoaded = true;\n this.dialogIsLoadingSubject.next(false);\n },\n error: () => {\n this.dialogIsLoadingSubject.next(false);\n }\n });\n });\n }\n\n this.formControl.markAsTouched();\n\n this.descriptor.nextEvent(MngFormFieldEventTypeEnum.DialogLifecycle, MngFormlyFieldTableDialogMultiselectComponent, this, {\n eventSubtype: MngFormFieldEventDialogSubtype.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(MngFormFieldEventTypeEnum.DialogLifecycle, MngFormlyFieldTableDialogMultiselectComponent, this, {\n eventSubtype: MngFormFieldEventDialogSubtype.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.dataKeyProperty\n ? this.descriptor.mainTableDescriptor.dataKeyProperty\n : this.descriptor.mainTableDescriptor.model.idPropertyName;\n if (!compareProperty) {\n throw new MngErrorInternal(\n 'Cannot compare items, please provide main table data key property or model id property.',\n 'FormlyFieldTableDialogMultiselectComponent error'\n ).consoleError();\n }\n value = value.filter((i: any) => i[compareProperty] !== 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\" [viewContainer]=\"viewContainer\">\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 }} <span *ngIf=\"props.required && props['hideRequiredMarker'] !== true\">*</span></label\n >\n <button\n *ngIf=\"hasAddAction && !options?.formState?.disabled\"\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 </div>\n </ng-template>\n <ng-template mngTemplate=\"columnAction\" let-item=\"rowItem\">\n <button\n *ngIf=\"hasDeleteAction && !options?.formState?.disabled\"\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 </ng-template>\n</mng-table>\n\n<p-dialog\n *ngIf=\"hasAddAction\"\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\">\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.mainTableDescriptor\"\n [globalFilterFields]=\"descriptor.searchFields\"\n [queryResult]=\"addItemsAsync\"\n [selectionEnabled]=\"true\"\n [loading]=\"dialogIsLoading$\"\n (selectionChange)=\"onSelectionChange($event)\"\n [viewContainer]=\"viewContainer\">\n <ng-template *ngIf=\"descriptor.searchEnabled\" 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 </mng-table>\n </div>\n </div>\n\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 [disabled]=\"form.disabled\"></button>\n </div>\n </div>\n </ng-template>\n</p-dialog>\n","import {NgForOf} from '@angular/common';\nimport {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 {MngFormlyFieldConfig} from '../../models';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-tabs',\n templateUrl: './formly-field-tabs.component.html',\n imports: [TabViewModule, NgForOf, TranslateModule, FormlyModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormlyFieldTabsComponent extends FieldType<MngFormlyFieldConfig> {}\n","<p-tabView>\n <p-tabPanel\n *ngFor=\"let tab of field.fieldGroup; let i = index; let last = last\"\n [header]=\"tab.props?.label! | translate\"\n [headerStyleClass]=\"$any(formControl!.valid ? 'p-tabview-title' : null)\">\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</p-tabView>\n","import {NgForOf, NgSwitch, NgSwitchCase, NgSwitchDefault} from '@angular/common';\nimport {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 {FieldGroupDescriptor} from '../../../../../descriptors/editor';\nimport {FieldGroupTypeEnum} from '../../../../../descriptors/types';\nimport {MngFormlyFieldConfig} from '../../models';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-fieldset',\n templateUrl: './formly-field-fieldset.component.html',\n imports: [NgSwitch, NgForOf, FieldsetModule, NgSwitchCase, FormlyModule, TranslateModule, NgSwitchDefault],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormlyFieldFieldsetComponent<ET> extends FieldType<MngFormlyFieldConfig> 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","<ng-container *ngFor=\"let group of field.fieldGroup; let i = index; let last = last\">\n <ng-container [ngSwitch]=\"group?.props?.['descriptor']?.type\">\n <p-fieldset *ngSwitchCase=\"typeFieldset\" [legend]=\"group.props?.label! | translate\">\n <formly-field [field]=\"group\"></formly-field>\n </p-fieldset>\n <formly-field *ngSwitchDefault [field]=\"group\"></formly-field>\n </ng-container>\n</ng-container>\n","import {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 {RippleModule} from 'primeng/ripple';\nimport {TooltipModule} from 'primeng/tooltip';\n\nimport {FieldActionDescriptor} from '../../../../../descriptors/editor';\nimport {IFormEditorComponent} from '../../../models';\nimport {MngFormlyFieldConfig} from '../../models';\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],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormlyFieldActionComponent<ET> extends FieldType<MngFormlyFieldConfig> implements OnInit {\n public descriptor!: FieldActionDescriptor<ET>;\n\n public buttonClass = 'p-button-primary';\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.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}\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\"></button>\n","import {ChangeDetectionStrategy, Component, OnInit} from '@angular/core';\n\nimport {FieldType} from '@ngx-formly/core';\n\nimport {FieldInputDescriptor} from '../../../../../descriptors/editor';\nimport {MngComponentDirective} from '../../../../../directives';\nimport {MngFormlyFieldConfig} from '../../models';\n\n@Component({\n standalone: true,\n selector: 'mng-formly-field-custom',\n template: `\n <ng-container\n [mngComponent]=\"descriptor.customComponentType!\"\n [inputs]=\"{\n field: field,\n model: model,\n form: form,\n options: options,\n key: key,\n formControl: formControl,\n props: props,\n showError: showError,\n id: id,\n formState: formState,\n }\">\n </ng-container>\n `,\n imports: [MngComponentDirective],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFormlyFieldCustomComponent<ET> extends FieldType<MngFormlyFieldConfig> implements OnInit {\n public descriptor!: FieldInputDescriptor<ET>;\n\n ngOnInit() {\n this.descriptor = this.props.descriptor as FieldInputDescriptor<ET>;\n }\n}\n","import {Directive, Input} from '@angular/core';\nimport {AbstractControl, FormArray, FormGroup} from '@angular/forms';\n\nimport {FieldType, FormlyFormOptions} from '@ngx-formly/core';\n\nimport {MngFormlyFieldConfig} from '../../models';\n\n@Directive()\nexport abstract class AMngFormlyCustomFieldComponent extends FieldType<MngFormlyFieldConfig> {\n @Input('field') override field!: MngFormlyFieldConfig;\n @Input('model') _model: any;\n @Input('form') _form!: FormGroup | FormArray;\n @Input('options') _options!: FormlyFormOptions;\n @Input('key') _key!: string | number | (string | number)[];\n @Input('formControl') _formControl!: AbstractControl;\n @Input('props') _props!: MngFormlyFieldConfig['props'];\n @Input('showError') _showError!: boolean;\n @Input('id') _id!: string;\n @Input('formState') _formState: any;\n\n override get model() {\n return this._model;\n }\n override get form() {\n return this._form;\n }\n override get options() {\n return this._options;\n }\n override get key() {\n return this._key;\n }\n override get formControl() {\n return this._formControl;\n }\n override get props() {\n return this._props;\n }\n override get showError() {\n return this._showError;\n }\n override get id() {\n return this._id;\n }\n override get formState() {\n return this._formState;\n }\n}\n","import {AsyncPipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component} from '@angular/core';\n\nimport {BreadcrumbModule} from 'primeng/breadcrumb';\n\nimport {MngCommonsService} from '../../services';\n\n@Component({\n standalone: true,\n selector: 'mng-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n imports: [BreadcrumbModule, AsyncPipe],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngBreadcrumbComponent {\n constructor(public mngCommons: MngCommonsService) {}\n}\n","<div class=\"layout-breadcrumb-container\">\n <div class=\"layout-breadcrumb\">\n <p-breadcrumb [home]=\"$any(mngCommons.breadcrumbHome$ | async)\" [model]=\"$any(mngCommons.breadcrumbs$ | async)\" styleClass=\"layout-breadcrumb py-2\"></p-breadcrumb>\n </div>\n</div>\n","import {ChangeDetectionStrategy, Component} from '@angular/core';\n\nimport {TranslateModule} from '@ngx-translate/core';\n\nimport {MngCommonsService} from '../../services';\n\n@Component({\n standalone: true,\n selector: 'mng-footer',\n templateUrl: './footer.component.html',\n imports: [TranslateModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngFooterComponent {\n public currentYear = new Date().getFullYear();\n\n constructor(public mngCommons: MngCommonsService) {}\n}\n","<div class=\"layout-footer\">\n <div class=\"footer-logo-container\">\n <img id=\"footer-logo\" [src]=\"mngCommons.colorSchemeIsLight ? mngCommons.appLogoDark : mngCommons.appLogoLight\" alt=\"atlantis-layout\" />\n <span class=\"app-name\">{{ mngCommons.appName | translate }}</span>\n </div>\n <span class=\"copyright\">&#169; {{ mngCommons.appOwner | translate }} - {{ currentYear }}</span>\n</div>\n","import {MenuItem} from 'primeng/api';\n\nimport {MngErrorInternal} from '../models';\n\nexport class RouteUtil {\n public static removeEmptyPathSegments(path: Array<string>) {\n const filteredPath = path.filter(ps => typeof ps === 'string' && ps.length > 0);\n return filteredPath.length > 0 ? filteredPath : [''];\n }\n\n public static appendPathToBasePath(basePath: Array<string>, path: Array<string>) {\n if (path.length > 0) {\n if (path[0].startsWith('/')) {\n return path;\n } else if (path[0].startsWith('../')) {\n // TODO: process multi upper folder\n throw new MngErrorInternal('Not implemented', 'RouteUtils error').consoleError();\n } else {\n return RouteUtil.removeEmptyPathSegments([...basePath, ...path]);\n }\n } else {\n return basePath;\n }\n }\n\n public static adjustMenuLazyChildrenRouterLinks(rootMenuItem: MenuItem, lazyChildren: Array<MenuItem>) {\n return lazyChildren.map(i => {\n const childMenuItem = {...i};\n if (childMenuItem.routerLink) {\n childMenuItem.routerLink = RouteUtil.appendPathToBasePath(\n rootMenuItem.routerLink,\n typeof childMenuItem.routerLink === 'string' ? [childMenuItem.routerLink] : childMenuItem.routerLink\n );\n }\n if (Array.isArray(childMenuItem.items)) {\n childMenuItem.items = this.adjustMenuLazyChildrenRouterLinks(rootMenuItem, childMenuItem.items);\n }\n return childMenuItem;\n });\n }\n}\n","import {Injectable} from '@angular/core';\n\nimport {BehaviorSubject, Observable, Subject} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {MngCommonsService} from '../../../services';\n\n@Injectable()\nexport class MngMainLayoutComponentService {\n private _overlayMenuActive = false;\n private _overlayMenuActiveSubject: Subject<boolean> = new BehaviorSubject(this._overlayMenuActive);\n private _staticMenuDesktopInactive = false;\n private _staticMenuDesktopInactiveSubject: Subject<boolean> = new BehaviorSubject(this._staticMenuDesktopInactive);\n private _staticMenuMobileActive = false;\n private _staticMenuMobileActiveSubject: Subject<boolean> = new BehaviorSubject(this._staticMenuMobileActive);\n\n private _sidebarActive = true;\n private _sidebarActiveSubject: Subject<boolean> = new BehaviorSubject(this._sidebarActive);\n private _sidebarStatic = true;\n private _sidebarStaticSubject: Subject<boolean> = new BehaviorSubject(this._sidebarStatic);\n\n private _menuClick = false;\n private _menuHoverActive = false;\n private _topbarItemClick = false;\n\n private _activeTopbarItem: any = null;\n private _activeTopbarItemSubject: Subject<any> = new BehaviorSubject(this._activeTopbarItem);\n\n private _pinActive = true;\n private _pinActiveSubject: Subject<boolean> = new BehaviorSubject(this._pinActive);\n\n private _innerWidth = 1920;\n private _innerWidthSubject: Subject<number> = new BehaviorSubject(this._innerWidth);\n\n constructor(private mngCommons: MngCommonsService) {\n this.sidebarActive = !mngCommons.menuSidebarSlim;\n this.sidebarStatic = !mngCommons.menuSidebarSlim;\n }\n\n get overlayMenuActive$(): Observable<boolean> {\n return this._overlayMenuActiveSubject.asObservable();\n }\n\n set overlayMenuActive(value: boolean) {\n this._overlayMenuActive = value;\n this._overlayMenuActiveSubject.next(value);\n }\n\n get staticMenuDesktopInactive$(): Observable<boolean> {\n return this._staticMenuDesktopInactiveSubject.asObservable();\n }\n\n set staticMenuDesktopInactive(value: boolean) {\n this._staticMenuDesktopInactive = value;\n this._staticMenuDesktopInactiveSubject.next(value);\n }\n\n get staticMenuMobileActive$(): Observable<boolean> {\n return this._staticMenuMobileActiveSubject.asObservable();\n }\n\n set staticMenuMobileActive(value: boolean) {\n this._staticMenuMobileActive = value;\n this._staticMenuMobileActiveSubject.next(value);\n }\n\n get sidebarActive$(): Observable<boolean> {\n return this._sidebarActiveSubject.asObservable();\n }\n\n set sidebarActive(value: boolean) {\n this._sidebarActive = value;\n this._sidebarActiveSubject.next(value);\n }\n\n get sidebarStatic$(): Observable<boolean> {\n return this._sidebarStaticSubject.asObservable();\n }\n\n set sidebarStatic(value: boolean) {\n this._sidebarStatic = value;\n this._sidebarStaticSubject.next(value);\n }\n\n set menuHoverActive(value: boolean) {\n this._menuHoverActive = value;\n }\n\n set topbarItemClick(value: boolean) {\n this._topbarItemClick = value;\n }\n\n get activeTopbarItem$(): Observable<any> {\n return this._activeTopbarItemSubject.asObservable();\n }\n\n set activeTopbarItem(value: any) {\n this._activeTopbarItem = value;\n this._activeTopbarItemSubject.next(value);\n }\n\n get pinActive$(): Observable<boolean> {\n return this._pinActiveSubject.asObservable();\n }\n\n set pinActive(value: boolean) {\n this._pinActive = value;\n this._pinActiveSubject.next(value);\n }\n\n get isDesktop$() {\n return this._innerWidthSubject.asObservable().pipe(map(e => this.isWidthDesktop(e)));\n }\n\n get isMobile$() {\n return this._innerWidthSubject.asObservable().pipe(map(e => this.isWidthMobile(e)));\n }\n\n set innerWidth(value: number) {\n this._innerWidth = value;\n this._innerWidthSubject.next(value);\n }\n\n onLayoutClick() {\n if (!this._topbarItemClick) {\n this.activeTopbarItem = null;\n }\n\n if (!this._menuClick) {\n if (this.mngCommons.menuModeIsSlim && !this.isMobile()) {\n this.mngCommons.menuReset();\n this.menuHoverActive = false;\n }\n\n if (this._overlayMenuActive || this._staticMenuMobileActive) {\n this.overlayMenuActive = false;\n this.staticMenuMobileActive = false;\n }\n }\n\n this._menuClick = false;\n this.topbarItemClick = false;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onSidebarClick(event: any) {\n this._menuClick = true;\n }\n\n onToggleMenu(event: any) {\n this._menuClick = true;\n\n if (this._overlayMenuActive) {\n this.overlayMenuActive = false;\n }\n\n if (this._sidebarActive) {\n this.sidebarStatic = !this._sidebarStatic;\n }\n\n event.preventDefault();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onSidebarMouseOver(event: any) {\n if (this.mngCommons.menuModeIsSidebar && !this._sidebarStatic) {\n this.sidebarActive = this.isDesktop();\n setTimeout(() => {\n this.pinActive = this.isDesktop();\n }, 200);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onSidebarMouseLeave(event: any) {\n if (this.mngCommons.menuModeIsSidebar && !this._sidebarStatic) {\n setTimeout(() => {\n this.sidebarActive = false;\n this.pinActive = false;\n }, 250);\n }\n }\n\n onMenuButtonClick(event: any) {\n this._menuClick = true;\n\n if (this.mngCommons.menuModeIsOverlay) {\n this.overlayMenuActive = !this._overlayMenuActive;\n }\n\n if (this.isDesktop()) {\n this.staticMenuDesktopInactive = !this._staticMenuDesktopInactive;\n } else {\n this.staticMenuMobileActive = !this._staticMenuMobileActive;\n }\n\n event.preventDefault();\n }\n\n onTopbarItemClick(event: any, item: any) {\n this._topbarItemClick = true;\n\n if (this._activeTopbarItem === item) {\n this.activeTopbarItem = null;\n } else {\n this.activeTopbarItem = item;\n }\n\n event.preventDefault();\n }\n\n onTopbarSubItemClick(event: any) {\n event.preventDefault();\n }\n\n /**\n * Checks if is desktop width, DO NOT use within HTML templates or within functions called by HTML templates\n */\n public isDesktop() {\n return this.isWidthDesktop(this._innerWidth);\n }\n\n /**\n * Checks if is mobile width, DO NOT use within HTML templates or within functions called by HTML templates\n */\n public isMobile() {\n return this.isWidthMobile(this._innerWidth);\n }\n\n private isWidthDesktop(width: number) {\n return width > 991;\n }\n\n private isWidthMobile(width: number) {\n return width <= 991;\n }\n}\n","import {animate, state, style, transition, trigger} from '@angular/animations';\nimport {AsyncPipe, NgClass, NgForOf, NgIf} from '@angular/common';\nimport {Component, EventEmitter, HostBinding, Injector, Input, OnDestroy, OnInit, Output} from '@angular/core';\nimport {\n ActivatedRoute,\n CanActivate,\n GuardsCheckEnd,\n IsActiveMatchOptions,\n NavigationEnd,\n Router,\n RouterLink,\n RouterLinkActive,\n RouterStateSnapshot,\n UrlTree\n} from '@angular/router';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {RippleModule} from 'primeng/ripple';\nimport {BehaviorSubject, Observable, Subscription, combineLatest, distinctUntilChanged, from, of} from 'rxjs';\nimport {first, map} from 'rxjs/operators';\n\nimport {MngMenuItem} from '../../models';\nimport {MngRouterData} from '../../router/models';\nimport {MngAuthorizationService} from '../../security';\nimport {MngCommonsService, MngRouterService} from '../../services';\nimport {RouteUtil} from '../../utils/route.util';\nimport {MngMainLayoutComponentService} from './services';\n\n@Component({\n standalone: true,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[mng-menuitem]',\n templateUrl: './menu-item.component.html',\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[class.layout-root-menuitem]': 'root',\n '[class.active-menuitem]': 'active'\n },\n imports: [AsyncPipe, TranslateModule, NgClass, NgForOf, NgIf, RippleModule, RouterLink, RouterLinkActive],\n animations: [\n trigger('children', [\n state(\n 'void',\n style({\n height: '0px'\n })\n ),\n state(\n 'hiddenAnimated',\n style({\n height: '0px'\n })\n ),\n state(\n 'visibleAnimated',\n style({\n height: '*'\n })\n ),\n state(\n 'visible',\n style({\n height: '*',\n 'z-index': 100\n })\n ),\n state(\n 'hidden',\n style({\n height: '0px',\n 'z-index': '*'\n })\n ),\n transition('visibleAnimated => hiddenAnimated', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')),\n transition('hiddenAnimated => visibleAnimated', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')),\n transition('void => visibleAnimated, visibleAnimated => void', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)'))\n ])\n ]\n // changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngMenuItemComponent implements OnInit, OnDestroy {\n @Input() item!: MngMenuItem;\n @Input() index = 0;\n @Input() root = false;\n @Input() parentKey: string | null = null;\n\n @Output('visibleChange') visibleChangeEventEmitter = new EventEmitter<boolean>();\n\n @HostBinding('class.py-0') private hostClassNoPadding = false;\n @HostBinding('class.hidden') private hostClassChildrenHidden = false;\n\n public key = '';\n public active = false;\n public hover = false;\n\n private guardsIsAllowedSubject = new BehaviorSubject(true);\n private guardsIsAllowed$: Observable<boolean>;\n private isPermittedSubject = new BehaviorSubject(true);\n private isPermitted$: Observable<boolean>;\n private isVisibleSubject = new BehaviorSubject(true);\n public isVisible$: Observable<boolean>;\n\n private childrenVisibilitySubject: BehaviorSubject<boolean>[] = [];\n\n private itemUrl?: string | UrlTree;\n private menuSourceSubscription?: Subscription;\n private menuResetSubscription?: Subscription;\n private routerEventsSubscription?: Subscription;\n private guardsIsAllowedSubscription?: Subscription;\n private isPermittedSubscription?: Subscription;\n private isVisibleSubscription?: Subscription;\n private isVisibleCombinedSubscription?: Subscription;\n private areChildrenVisibleSubscription?: Subscription;\n private routeLoadedChildrenSubscription?: Subscription;\n\n constructor(\n private injector: Injector,\n private router: Router,\n private route: ActivatedRoute,\n private mngRouter: MngRouterService,\n private authorization: MngAuthorizationService,\n public mngCommons: MngCommonsService,\n public mainLayoutService: MngMainLayoutComponentService\n ) {\n this.guardsIsAllowed$ = this.guardsIsAllowedSubject.asObservable().pipe(distinctUntilChanged());\n this.isPermitted$ = this.isPermittedSubject.asObservable().pipe(distinctUntilChanged());\n this.isVisible$ = this.isVisibleSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n ngOnInit() {\n this.key = this.parentKey ? this.parentKey + '-' + this.index : String(this.index);\n if (this.item.routerLink) {\n if (typeof this.item.routerLink === 'string') {\n this.itemUrl = this.item.routerLink;\n } else {\n this.itemUrl = this.router.parseUrl(this.item.routerLink.join('/'));\n }\n }\n\n if (!this.mngCommons.menuModeIsSlim && this.item.routerLink) {\n this.updateActiveStateFromRoute();\n }\n\n this.menuSourceSubscription = this.mngCommons.menuActiveKey$.subscribe(key => {\n // deactivate current active menu\n if (this.active && this.key !== key && key.indexOf(this.key) !== 0) {\n this.active = false;\n }\n });\n\n this.menuResetSubscription = this.mngCommons.menuReset$.subscribe(() => {\n this.active = false;\n });\n\n if (this.item.lazyChildren) {\n this.routeLoadedChildrenSubscription = this.mngRouter.getRouteLoadedChildren$(this.item.routerLink ?? '/').subscribe({\n next: routes => {\n let menuItems = routes.filter(r => Array.isArray((r.data as MngRouterData | undefined)?.menuItems)).flatMap(r => (r.data as MngRouterData).menuItems!);\n menuItems = RouteUtil.adjustMenuLazyChildrenRouterLinks(this.item, menuItems);\n\n this.item.items = menuItems;\n this.item.lazyChildren = false;\n\n this.processItemChildrenVisibility();\n }\n });\n }\n\n this.routerEventsSubscription = this.router.events.subscribe(next => {\n if (next instanceof GuardsCheckEnd && next.shouldActivate) {\n this.checkIfMenuItemIsAllowedFromGuard(next.state);\n } else if (next instanceof NavigationEnd) {\n if (this.mngCommons.menuModeIsSlim && !this.mainLayoutService.isMobile()) {\n this.active = false;\n } else {\n this.updateActiveStateFromRoute();\n }\n }\n });\n\n if (this.item.permissions) {\n this.isPermittedSubscription = this.authorization.isPermitted(this.item.permissions).subscribe({\n next: isPermitted => {\n this.isPermittedSubject.next(isPermitted);\n }\n });\n }\n\n this.checkIfMenuItemIsAllowedFromGuard(this.router.routerState.snapshot);\n\n this.isVisibleCombinedSubscription = combineLatest([of(this.item.visible !== false), this.isPermitted$, this.guardsIsAllowed$]).subscribe({\n next: res => {\n const isVisible = res.every(r => r === true);\n this.hostClassNoPadding = !isVisible;\n this.isVisibleSubject.next(isVisible);\n }\n });\n this.isVisibleSubscription = this.isVisible$.subscribe(v => {\n this.visibleChangeEventEmitter.emit(v);\n });\n\n this.processItemChildrenVisibility();\n }\n\n updateActiveStateFromRoute() {\n if (this.itemUrl) {\n this.active = this.router.isActive(this.itemUrl, <IsActiveMatchOptions>{\n matrixParams: 'ignored',\n queryParams: 'ignored',\n paths: this.item.items ? 'subset' : 'exact',\n fragment: 'ignored'\n });\n } else {\n this.active = false;\n }\n }\n\n itemClick(event: Event) {\n // avoid processing disabled items\n if (this.item.disabled) {\n event.preventDefault();\n return;\n }\n\n // navigate with hover in horizontal mode\n if (this.root) {\n this.mainLayoutService.menuHoverActive = !this.mainLayoutService.menuHoverActive;\n }\n\n // notify other items\n this.mngCommons.menuChangeActiveKey(this.key);\n\n // toggle active state\n if (this.item.items) {\n this.active = !this.active;\n } else {\n // activate item\n this.active = true;\n\n if (this.mainLayoutService.isMobile()) {\n this.mainLayoutService.staticMenuMobileActive = false;\n }\n\n if (this.mngCommons.menuModeIsOverlay) {\n this.mainLayoutService.overlayMenuActive = false;\n }\n\n // reset horizontal menu\n if (this.mngCommons.menuModeIsSlim && !this.mainLayoutService.isMobile()) {\n this.mngCommons.menuReset();\n this.mainLayoutService.menuHoverActive = false;\n }\n }\n }\n\n onMouseEnter() {\n // activate item on hover\n if (this.root && this.mainLayoutService.menuHoverActive && this.mngCommons.menuModeIsSlim && this.mainLayoutService.isDesktop()) {\n this.mngCommons.menuChangeActiveKey(this.key);\n this.active = true;\n }\n }\n\n ngOnDestroy() {\n this.menuSourceSubscription?.unsubscribe();\n this.menuResetSubscription?.unsubscribe();\n this.routerEventsSubscription?.unsubscribe();\n this.guardsIsAllowedSubscription?.unsubscribe();\n this.isPermittedSubscription?.unsubscribe();\n this.isVisibleSubscription?.unsubscribe();\n this.isVisibleCombinedSubscription?.unsubscribe();\n this.areChildrenVisibleSubscription?.unsubscribe();\n this.routeLoadedChildrenSubscription?.unsubscribe();\n }\n\n onChildVisibleChange(visible: boolean, item: MngMenuItem, idx: number) {\n this.childrenVisibilitySubject[idx].next(visible);\n }\n\n private checkIfMenuItemIsAllowedFromGuard(routerState: RouterStateSnapshot) {\n this.guardsIsAllowedSubscription?.unsubscribe();\n if (this.item.guards?.length) {\n const obs = [];\n for (const guard of this.item.guards) {\n const tokenInjectedInstance = this.injector.get(guard);\n if (tokenInjectedInstance && 'canActivate' in tokenInjectedInstance) {\n const guardInstance = tokenInjectedInstance as CanActivate;\n const canActivateRes = guardInstance.canActivate(this.route.snapshot, routerState);\n\n let canActivateObs: Observable<boolean | UrlTree>;\n if (canActivateRes instanceof Observable) {\n canActivateObs = canActivateRes;\n } else if (canActivateRes instanceof Promise) {\n canActivateObs = from(canActivateRes);\n } else {\n canActivateObs = of(canActivateRes);\n }\n obs.push(\n canActivateObs.pipe(\n first(),\n map(res => res === true) // if url tree is present, that means redirect and implies not allowed\n )\n );\n }\n }\n this.guardsIsAllowedSubscription = combineLatest(obs)\n .pipe(first())\n .subscribe(next => {\n const result = next.every(n => n === true);\n this.guardsIsAllowedSubject.next(result);\n });\n } else {\n this.guardsIsAllowedSubject.next(true);\n }\n }\n\n private processItemChildrenVisibility() {\n if (this.item.items) {\n this.childrenVisibilitySubject = this.item.items.map(() => new BehaviorSubject<boolean>(true));\n\n this.areChildrenVisibleSubscription = combineLatest(this.childrenVisibilitySubject.map(s => s.asObservable().pipe(distinctUntilChanged()))).subscribe(visible => {\n const anyChildVisible = visible.some(v => v === true);\n this.hostClassChildrenHidden = !anyChildVisible;\n });\n }\n }\n}\n","<ng-container *ngIf=\"isVisible$ | async\">\n <div *ngIf=\"root\" class=\"layout-menuitem-root-text\">\n {{ item.label! | translate }}\n </div>\n <a\n *ngIf=\"!item.routerLink || item.items\"\n [attr.href]=\"item.href\"\n (click)=\"itemClick($event)\"\n (mouseenter)=\"onMouseEnter()\"\n (keydown.enter)=\"itemClick($event)\"\n [routerLink]=\"item.routerLink\"\n [attr.target]=\"item.target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item.className ?? ''\"\n pRipple>\n <i [ngClass]=\"item.icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item.label! | translate }}</span>\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\" *ngIf=\"item.items || item.lazyChildren\"></i>\n <span class=\"menuitem-badge\" *ngIf=\"item.badge\">{{ item.badge }}</span>\n </a>\n <a\n *ngIf=\"item.routerLink && !item.items\"\n (click)=\"itemClick($event)\"\n (mouseenter)=\"hover = true\"\n (mouseleave)=\"hover = false\"\n [routerLink]=\"item.routerLink\"\n routerLinkActive=\"active-menuitem-routerlink\"\n [routerLinkActiveOptions]=\"{paths: 'exact', matrixParams: 'ignored', queryParams: 'ignored', fragment: 'ignored'}\"\n [attr.target]=\"item.target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item.className ?? ''\"\n pRipple>\n <i [ngClass]=\"item.icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item.label! | translate }}</span>\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\" *ngIf=\"item.items || item.lazyChildren\"></i>\n <span class=\"menuitem-badge\" *ngIf=\"item.badge\">{{ item.badge }}</span>\n </a>\n <ul\n *ngIf=\"item.items || (item.items && (mngCommons.menuModeIsStatic$ | async) && root)\"\n [@children]=\"\n (mngCommons.menuModeIsSlim$ | async) && (mainLayoutService.isMobile$ | async) === false && root\n ? active\n ? 'visible'\n : 'hidden'\n : (mngCommons.menuModeIsStatic$ | async) && root && (mainLayoutService.isMobile$ | async) === false\n ? 'visible'\n : active\n ? 'visibleAnimated'\n : 'hiddenAnimated'\n \">\n <ng-template ngFor let-child let-i=\"index\" [ngForOf]=\"item.items\">\n <li mng-menuitem [item]=\"child\" [index]=\"i\" [parentKey]=\"key\" [class]=\"child.badgeClassName\" (visibleChange)=\"onChildVisibleChange($event, item, i)\"></li>\n </ng-template>\n </ul>\n</ng-container>\n","import {AsyncPipe, NgForOf, NgIf} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Input, OnInit} from '@angular/core';\n\nimport {BehaviorSubject} from 'rxjs';\n\nimport {VersionConfig, VersionConfigType, VersionInfo} from '../../models';\nimport {JsonPathPipe} from '../../pipes';\nimport {MngVersionService} from '../../services';\n\n@Component({\n standalone: true,\n selector: 'mng-version',\n templateUrl: './version.component.html',\n imports: [AsyncPipe, NgForOf, NgIf],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngVersionComponent implements OnInit {\n @Input('version') public initVersion?: VersionConfigType;\n\n public displayName?: string;\n public displayVersion?: string;\n public versions?: Array<VersionConfig>;\n\n private loadingSubject = new BehaviorSubject(false);\n public loading$ = this.loadingSubject.asObservable();\n\n constructor(private versionService: MngVersionService, private jsonPathPipe: JsonPathPipe) {}\n\n ngOnInit() {\n if (Array.isArray(this.initVersion)) {\n this.versions = this.initVersion;\n } else if (typeof this.initVersion === 'string') {\n this.displayVersion = this.initVersion;\n } else if (typeof this.initVersion !== 'undefined') {\n if (this.initVersion['info' as keyof object] || this.initVersion['urlPath' as keyof object]) {\n const config = this.initVersion as VersionConfig;\n this.displayName = config.displayName;\n\n if (config.urlPath) {\n this.loadingSubject.next(true);\n this.versionService.loadVersion(config.urlPath, config.urlBaseConfigKey).subscribe({\n next: res => {\n this.displayVersion = this.jsonPathPipe.transform(res, config.infoJsonPath ?? '$');\n this.loadingSubject.next(false);\n },\n error: () => {\n this.displayVersion = '';\n this.loadingSubject.next(false);\n }\n });\n } else {\n this.displayVersion = this.jsonPathPipe.transform(config.info, config.infoJsonPath ?? '$.raw');\n }\n } else {\n const info = this.initVersion as VersionInfo;\n this.displayVersion = this.jsonPathPipe.transform(info, '$.raw');\n }\n }\n }\n}\n","<ng-container *ngIf=\"versions; else version\">\n <ng-container *ngFor=\"let v of versions; let last = last\"> <mng-version [version]=\"v\"></mng-version><br *ngIf=\"!last\" /> </ng-container>\n</ng-container>\n<ng-template #version>\n <ng-container *ngIf=\"displayName\">{{ displayName }}: </ng-container>\n <ng-container *ngIf=\"(loading$ | async) === false\">{{ displayVersion }}</ng-container>\n</ng-template>\n","import {AsyncPipe, NgClass, NgForOf, NgIf} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, OnInit} from '@angular/core';\nimport {ActivatedRoute, RouterLink} from '@angular/router';\n\nimport {MngMenuItem} from '../../models';\nimport {MngRouterData} from '../../router/models';\nimport {MngCommonsService} from '../../services';\nimport {MngMenuItemComponent} from './menu-item.component';\nimport {MngMainLayoutComponentService} from './services';\nimport {MngVersionComponent} from './version.component';\n\n@Component({\n standalone: true,\n selector: 'mng-menu',\n templateUrl: './menu.component.html',\n imports: [NgClass, AsyncPipe, NgIf, NgForOf, MngMenuItemComponent, MngVersionComponent, RouterLink],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngMenuComponent implements OnInit {\n public menuItems: Array<MngMenuItem> = [];\n\n constructor(private route: ActivatedRoute, public mngCommons: MngCommonsService, public mainLayoutService: MngMainLayoutComponentService) {}\n\n ngOnInit(): void {\n if (Array.isArray(this.mngCommons.menuItems)) {\n this.menuItems = this.mngCommons.menuItems;\n } else if (Array.isArray((this.route.snapshot.data as MngRouterData | undefined)?.menuItems)) {\n this.menuItems = (this.route.snapshot.data as MngRouterData).menuItems!;\n }\n }\n}\n","<div\n class=\"layout-menu-wrapper\"\n [ngClass]=\"{'layout-sidebar-active': (mainLayoutService.sidebarActive$ | async)}\"\n (click)=\"mainLayoutService.onSidebarClick($event)\"\n (mouseover)=\"mainLayoutService.onSidebarMouseOver($event)\"\n (mouseleave)=\"mainLayoutService.onSidebarMouseLeave($event)\">\n <div class=\"menu-logo\">\n <a routerLink=\"/\" class=\"logo\">\n <img [src]=\"mngCommons.colorSchemeIsLight ? mngCommons.appLogoDark : mngCommons.appLogoLight\" />\n </a>\n\n <a routerLink=\"/\" class=\"app-name\" *ngIf=\"(mngCommons.menuModeIsSlim$ | async) === false || (mainLayoutService.isMobile$ | async)\">\n <img [src]=\"mngCommons.colorSchemeIsLight ? mngCommons.appLogoNameDark : mngCommons.appLogoNameLight\" />\n </a>\n <a *ngIf=\"mngCommons.menuPinEnabled\" class=\"menu-pin\" (click)=\"mainLayoutService.onToggleMenu($event)\">\n <span *ngIf=\"mngCommons.menuModeIsOverlay$ | async\" class=\"pi pi-times\"></span>\n <span\n *ngIf=\"(mngCommons.menuModeIsSidebar$ | async) && (mainLayoutService.sidebarStatic$ | async) === false && (mainLayoutService.pinActive$ | async)\"\n class=\"pi pi-unlock\"></span>\n <span *ngIf=\"(mngCommons.menuModeIsSidebar$ | async) && (mainLayoutService.sidebarStatic$ | async) && (mainLayoutService.pinActive$ | async)\" class=\"pi pi-lock\"></span>\n </a>\n </div>\n\n <div class=\"layout-menu-container\">\n <ul class=\"layout-menu\">\n <ng-container *ngFor=\"let item of menuItems; let i = index\">\n <li mng-menuitem *ngIf=\"!item.separator\" [item]=\"item\" [index]=\"i\" [root]=\"true\"></li>\n <li *ngIf=\"item.separator\" class=\"menu-separator\"></li>\n </ng-container>\n </ul>\n </div>\n\n <div class=\"menu-version\">\n <mng-version [version]=\"mngCommons.appVersion\"></mng-version>\n </div>\n</div>\n","import {AsyncPipe, NgClass, NgIf} from '@angular/common';\nimport {Component, ElementRef, OnDestroy, OnInit, inject} from '@angular/core';\nimport {DomSanitizer} from '@angular/platform-browser';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {Observable, Subscription} from 'rxjs';\n\nimport {IUser} from '../../models';\nimport {MngEnumerateAsyncPipe} from '../../pipes';\nimport {MngCommonsService} from '../../services';\nimport {MngMainLayoutComponentService} from './services';\n\n@Component({\n standalone: true,\n selector: 'mng-topbar-user-component',\n imports: [NgClass, NgIf, AsyncPipe, TranslateModule, MngEnumerateAsyncPipe],\n templateUrl: './topbar-user.component.html'\n})\nexport class MngTopbarUserComponent implements OnInit, OnDestroy {\n public user?: IUser;\n public userRoles$!: Observable<string[]>;\n public hrefJsVoid = inject(DomSanitizer).bypassSecurityTrustUrl('javascript:void(0)');\n\n private subscriptions: Subscription[] = [];\n\n constructor(public mngCommons: MngCommonsService, public mainLayoutService: MngMainLayoutComponentService, public elementRef: ElementRef) {}\n\n ngOnInit() {\n this.subscriptions.push(\n this.mngCommons.user$.subscribe(u => {\n this.user = u;\n })\n );\n this.userRoles$ = this.mngCommons.userRoles$;\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(value => value.unsubscribe());\n }\n\n public logout(user: IUser | undefined, event: Event) {\n if (typeof user?.logout === 'function') {\n event.preventDefault();\n event.stopPropagation();\n user.logout();\n }\n }\n\n public click(event: any) {\n this.mainLayoutService.onTopbarItemClick(event, this.elementRef.nativeElement);\n }\n}\n","<a href=\"#\" class=\"user-block\" (click)=\"click($event)\">\n <i class=\"pi pi-fw pi-user\"></i>\n <span class=\"profile-item-username hidden sm:inline-block\">&nbsp; {{ user?.displayName ?? user?.username }}</span>\n</a>\n<ul class=\"fadeInDown dropdown-window\">\n <li role=\"menuitem\">\n <a>\n <div class=\"flex\">\n <div class=\"flex-grow-0\">\n <i class=\"pi pi-fw pi-user\"></i>\n </div>\n <div class=\"flex-grow-1\">\n <strong>{{ user?.displayName ?? user?.username }}</strong>\n <small *ngIf=\"((userRoles$ | async)?.length ?? 0) > 0\">\n <br />\n {{ userRoles$ | mgnEnumerateAsync : undefined : undefined : undefined : 'roles' | async }}\n </small>\n </div>\n </div>\n </a>\n </li>\n <li role=\"menuitem\" *ngIf=\"user?.logout || user?.logoutUrl\">\n <a [href]=\"user?.logoutUrl ?? hrefJsVoid\" (click)=\"logout(user, $event)\">\n <i class=\"pi pi-fw pi-sign-out\"></i>\n <span>{{ 'mngTopbar.logout' | translate }}</span>\n </a>\n </li>\n</ul>\n","import {AsyncPipe, NgClass, NgIf} from '@angular/common';\nimport {ApplicationRef, ChangeDetectionStrategy, Component, ElementRef, Inject, OnInit, QueryList, Type, ViewChild, ViewChildren} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {ActivatedRoute, RouterModule} from '@angular/router';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {DropdownModule} from 'primeng/dropdown';\n\nimport {MngComponentDirective, MngTemplateDirective} from '../../directives';\nimport {MngModuleConfig} from '../../models';\nimport {MngEnumerateAsyncPipe} from '../../pipes';\nimport {MngCommonsService} from '../../services';\nimport {MNG_MODULE_CONFIG_IT} from '../../services/tokens';\nimport {MngBreadcrumbComponent} from './breadcrumb.component';\nimport {MngMenuComponent} from './menu.component';\nimport {MngMainLayoutComponentService} from './services';\nimport {MngTopbarUserComponent} from './topbar-user.component';\n\n@Component({\n standalone: true,\n selector: 'mng-topbar',\n templateUrl: './topbar.component.html',\n imports: [AsyncPipe, NgClass, TranslateModule, NgIf, MngComponentDirective, MngEnumerateAsyncPipe, DropdownModule, FormsModule, RouterModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngTopbarComponent implements OnInit {\n @ViewChildren(MngTemplateDirective) templates!: QueryList<MngTemplateDirective>;\n @ViewChild('userMenuItem') topbarInjectionRef!: ElementRef;\n\n public breadcrumbComponent: Type<any> = MngBreadcrumbComponent;\n public menuComponent: Type<any> = MngMenuComponent;\n public topbarUserComponent: Type<any> = MngTopbarUserComponent;\n\n public languages: Array<string> = ['en'];\n public selectedLanguage = 'en';\n\n constructor(\n private applicationRef: ApplicationRef,\n private route: ActivatedRoute,\n public mngCommons: MngCommonsService,\n public mainLayoutService: MngMainLayoutComponentService,\n @Inject(MNG_MODULE_CONFIG_IT) private config: MngModuleConfig\n ) {}\n\n ngOnInit(): void {\n if (this.config.components?.layout?.topbarUser) {\n this.topbarUserComponent = this.config.components.layout.topbarUser;\n }\n if (this.config.components?.layout?.breadcrumb) {\n this.breadcrumbComponent = this.config.components.layout.breadcrumb;\n }\n if (this.config.components?.layout?.menu) {\n this.menuComponent = this.config.components.layout.menu;\n }\n\n this.languages = this.mngCommons.appLanguages;\n this.selectedLanguage = this.mngCommons.getOrInitLanguage();\n }\n\n public switchLanguage(language: string) {\n this.mngCommons.appLanguage = language;\n }\n}\n","<div class=\"layout-topbar\">\n <div class=\"layout-topbar-left\">\n <a\n href=\"#\"\n class=\"topbar-menu-button\"\n (click)=\"mainLayoutService.onMenuButtonClick($event)\"\n *ngIf=\"(mngCommons.menuModeIsOverlay$ | async) || (mainLayoutService.isMobile$ | async)\">\n <i class=\"pi pi-bars\"></i>\n </a>\n\n <ng-container [mngComponent]=\"breadcrumbComponent\"></ng-container>\n </div>\n\n <ng-container [mngComponent]=\"menuComponent\"></ng-container>\n\n <div class=\"layout-topbar-right\">\n <ul class=\"layout-topbar-right-items\">\n <li\n #userMenuItem\n class=\"profile-item profile-item-extended\"\n [ngClass]=\"{'active-topmenuitem': (mainLayoutService.activeTopbarItem$ | async) === userMenuItem}\"\n [mngComponent]=\"topbarUserComponent\"\n [attachToHost]=\"true\"></li>\n <li *ngIf=\"languages.length > 1\" class=\"profile-item\">\n <i class=\"pi pi-fw pi-globe\"></i>\n <p-dropdown [ngModel]=\"selectedLanguage\" [options]=\"languages\" (onChange)=\"switchLanguage($event.value)\"></p-dropdown>\n </li>\n </ul>\n </div>\n</div>\n","import {AsyncPipe, NgClass, NgIf} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, HostListener, Inject, OnInit, QueryList, Type, ViewChildren} from '@angular/core';\nimport {ActivatedRoute, RouterOutlet} from '@angular/router';\n\nimport {MngComponentDirective, MngTemplateDirective} from '../../directives';\nimport {MngModuleConfig} from '../../models';\nimport {MngCommonsService} from '../../services';\nimport {MNG_MODULE_CONFIG_IT} from '../../services/tokens';\nimport {MngFooterComponent} from './footer.component';\nimport {MngMenuComponent} from './menu.component';\nimport {MngMainLayoutComponentService} from './services';\nimport {MngTopbarComponent} from './topbar.component';\n\n@Component({\n standalone: true,\n selector: 'mng-main-layout',\n templateUrl: './main-layout.component.html',\n providers: [MngMainLayoutComponentService],\n imports: [NgClass, AsyncPipe, MngComponentDirective, NgIf, RouterOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngMainLayoutComponent implements OnInit {\n @ViewChildren(MngTemplateDirective) templates!: QueryList<MngTemplateDirective>;\n\n public topbarComponent: Type<any> = MngTopbarComponent;\n public menuComponent: Type<any> = MngMenuComponent;\n public footerComponent: Type<any> = MngFooterComponent;\n\n constructor(\n private route: ActivatedRoute,\n public mngCommons: MngCommonsService,\n public mainLayoutService: MngMainLayoutComponentService,\n @Inject(MNG_MODULE_CONFIG_IT) private config: MngModuleConfig\n ) {}\n\n ngOnInit() {\n if (this.config.components?.layout?.topbar) {\n this.topbarComponent = this.config.components.layout.topbar;\n }\n if (this.config.components?.layout?.menu) {\n this.menuComponent = this.config.components.layout.menu;\n }\n if (this.config.components?.layout?.footer) {\n this.footerComponent = this.config.components.layout.footer;\n }\n\n this.mainLayoutService.innerWidth = window.innerWidth;\n }\n\n @HostListener('window:resize', ['$event'])\n onWindowResize(event: UIEvent) {\n const target: any = event.target;\n this.mainLayoutService.innerWidth = target?.innerWidth ?? window.innerWidth;\n }\n}\n","<div\n class=\"layout-wrapper\"\n (click)=\"mainLayoutService.onLayoutClick()\"\n [ngClass]=\"{\n 'layout-static': mngCommons.menuModeIsStatic$ | async,\n 'layout-overlay': mngCommons.menuModeIsOverlay$ | async,\n 'layout-slim': mngCommons.menuModeIsSlim$ | async,\n 'layout-sidebar': mngCommons.menuModeIsSidebar$ | async,\n 'layout-sidebar-static': (mngCommons.menuModeIsSidebar$ | async) && (mainLayoutService.sidebarStatic$ | async),\n 'layout-overlay-active': mainLayoutService.overlayMenuActive$ | async,\n 'layout-mobile-active': mainLayoutService.staticMenuMobileActive$ | async,\n 'layout-static-inactive': (mainLayoutService.staticMenuDesktopInactive$ | async) && (mngCommons.menuModeIsStatic$ | async)\n }\">\n <div class=\"layout-main\">\n <ng-container [mngComponent]=\"topbarComponent\"></ng-container>\n\n <ng-container\n *ngIf=\"\n (mainLayoutService.isMobile$ | async) === false &&\n ((mngCommons.menuModeIsStatic$ | async) || (mngCommons.menuModeIsSlim$ | async) || (mngCommons.menuModeIsSidebar$ | async))\n \"\n [mngComponent]=\"menuComponent\">\n </ng-container>\n\n <div class=\"layout-main-content\">\n <router-outlet></router-outlet>\n </div>\n\n <ng-container [mngComponent]=\"footerComponent\"></ng-container>\n </div>\n</div>\n","import {Component} from '@angular/core';\nimport {RouterLink} from '@angular/router';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ButtonModule} from 'primeng/button';\n\nimport {MngCommonsService} from '../../../services';\n\n@Component({\n standalone: true,\n selector: 'mng-error-page',\n imports: [ButtonModule, TranslateModule, RouterLink],\n templateUrl: './error-page.component.html'\n})\nexport class MngErrorPageComponent {\n constructor(public mngCommons: MngCommonsService) {}\n}\n","<div class=\"exception-body error\">\n <div class=\"exception-panel\">\n <h1>{{ 'pages.error.title' | translate }}</h1>\n <h3>{{ 'pages.error.subtitle' | translate }}</h3>\n <button type=\"button\" pButton [label]=\"'general.returnHome' | translate\" [routerLink]=\"['/']\"></button>\n </div>\n <div class=\"exception-footer\">\n <img alt=\"logo\" [src]=\"mngCommons.colorSchemeIsLight ? mngCommons.appLogoDark : mngCommons.appLogoLight\" class=\"exception-logo\" />\n <img alt=\"logo_appname\" [src]=\"mngCommons.colorSchemeIsLight ? mngCommons.appLogoNameDark : mngCommons.appLogoNameLight\" class=\"exception-appname\" />\n </div>\n</div>\n","import {Component} from '@angular/core';\nimport {RouterLink} from '@angular/router';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ButtonModule} from 'primeng/button';\n\nimport {MngCommonsService} from '../../../services';\n\n@Component({\n standalone: true,\n selector: 'mng-not-found-page',\n imports: [ButtonModule, RouterLink, TranslateModule],\n templateUrl: './not-found-page.component.html'\n})\nexport class MngNotFoundPageComponent {\n constructor(public mngCommons: MngCommonsService) {}\n}\n","<div class=\"exception-body notfound\">\n <div class=\"exception-panel\">\n <h1>{{ 'pages.notFound.title' | translate }}</h1>\n <h3>{{ 'pages.notFound.subtitle' | translate }}</h3>\n <p>{{ 'pages.notFound.message' | translate }}</p>\n <button type=\"button\" pButton [label]=\"'general.returnHome' | translate\" [routerLink]=\"['/']\"></button>\n </div>\n <div class=\"exception-footer\">\n <img alt=\"logo\" [src]=\"mngCommons.colorSchemeIsLight ? mngCommons.appLogoDark : mngCommons.appLogoLight\" class=\"exception-logo\" />\n <img alt=\"logo_appname\" [src]=\"mngCommons.colorSchemeIsLight ? mngCommons.appLogoNameDark : mngCommons.appLogoNameLight\" class=\"exception-appname\" />\n </div>\n</div>\n","import {Observable} from 'rxjs';\n\nimport {MngCommonsInitService} from './commons-init.service';\n\nexport function mngCommonsInitializerProvider(mngCommonsInit: MngCommonsInitService): () => Observable<void> {\n return () => mngCommonsInit.initialize();\n}\n","import {Inject, Injectable, Optional} from '@angular/core';\n\nimport {TranslateService} from '@ngx-translate/core';\nimport {Observable, combineLatest, mergeMap, of} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {MngCommonsService, MngConfigurationService, MngRouterService} from '../';\nimport {MNG_COMMONS_INITIALIZER_IT} from '../tokens';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MngCommonsInitService {\n private isInitialized = false;\n\n constructor(\n private translate: TranslateService,\n private configurationService: MngConfigurationService,\n private mngCommons: MngCommonsService,\n private mngRouter: MngRouterService,\n @Inject(MNG_COMMONS_INITIALIZER_IT) @Optional() private readonly commonsInitializers: ReadonlyArray<() => Observable<unknown>>\n ) {}\n\n public initialize(): Observable<void> {\n if (this.isInitialized) {\n return of(void 0);\n }\n\n this.mngRouter.initialize();\n\n return this.configurationService.loadJsonConfigurations().pipe(\n mergeMap(() => {\n if (this.commonsInitializers) {\n return combineLatest(this.commonsInitializers.map(ci => ci())).pipe(map(res => res));\n } else {\n return of(true);\n }\n }),\n map(() => this.mngCommons.reset())\n );\n\n this.isInitialized = true;\n }\n}\n","import {HttpClient} from '@angular/common/http';\n\nimport {Observable, combineLatest, of} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {MngModuleConfig} from '../../models';\nimport {MngConfigurationService} from '../configuration.service';\n\nexport const mngConfigurationServiceProvider = (httpClient: HttpClient, moduleConfig?: MngModuleConfig): MngConfigurationService => {\n const service = MngConfigurationService.init(httpClient);\n if (moduleConfig?.configuration?.projectEnvironment) {\n service.addEnvironmentSource(moduleConfig.configuration.projectEnvironment);\n }\n return service;\n};\n\nexport function mngConfigJsonAppInitializerProvider(configService: MngConfigurationService, moduleConfig: MngModuleConfig): () => Observable<boolean> {\n return () => {\n if (moduleConfig?.configuration?.skipJsonSourceInit) {\n return of(false);\n } else {\n const jsonSourceEnableEnvProd = moduleConfig?.configuration?.jsonSourceEnableEnvProd ?? false;\n const jsonSource = moduleConfig?.configuration?.jsonSource;\n if (!jsonSource) {\n return configService.addJsonSource({enableEnvProd: jsonSourceEnableEnvProd});\n } else if (Array.isArray(jsonSource)) {\n return combineLatest(jsonSource.map(source => configService.addJsonSource({url: source, enableEnvProd: jsonSourceEnableEnvProd}))).pipe(\n map(sourcesRes => sourcesRes.every(s => s))\n );\n } else {\n return configService.addJsonSource({url: jsonSource, enableEnvProd: jsonSourceEnableEnvProd});\n }\n }\n };\n}\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 {FieldInputDescriptor} from '../../../descriptors/editor';\nimport {\n MngFormlyFieldActionComponent,\n MngFormlyFieldAutocompleteComponent,\n MngFormlyFieldDropdownComponent,\n MngFormlyFieldFieldsetComponent,\n MngFormlyFieldInputComponent,\n MngFormlyFieldLabelComponent,\n MngFormlyFieldLookupDialogComponent,\n MngFormlyFieldTableDialogFormComponent,\n MngFormlyFieldTableDialogMultiselectComponent,\n MngFormlyFieldTabsComponent\n} from './fields';\nimport {MngFormlyFieldCustomComponent} from './fields/formly-field-custom/formly-field-custom.component';\nimport {MngFormlyFieldConfig, MngFormlyTypeConfig} from './models';\nimport {MngFormlyFieldNoLabelWrapperComponent, MngFormlyFieldWrapperComponent} from './wrappers';\n\nexport const formlyWrappersConfig: WrapperOption[] = [\n {name: 'field', component: MngFormlyFieldWrapperComponent},\n {name: 'field-no-label', component: MngFormlyFieldNoLabelWrapperComponent}\n];\n\nexport const formlyTypesConfig: MngFormlyTypeConfig[] = [\n {\n name: 'label',\n component: MngFormlyFieldLabelComponent,\n wrappers: ['field']\n },\n {\n name: 'input',\n component: MngFormlyFieldInputComponent,\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: MngFormlyFieldInputComponent,\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: MngFormlyFieldInputComponent,\n defaultOptions: {\n props: {\n type: 'imageUrl'\n }\n },\n wrappers: ['field']\n },\n {\n name: 'dropdown',\n component: MngFormlyFieldDropdownComponent,\n wrappers: ['field']\n },\n {name: 'enum', extends: 'dropdown'},\n {\n name: 'autocomplete',\n component: MngFormlyFieldAutocompleteComponent,\n wrappers: ['field']\n },\n {\n name: 'action',\n component: MngFormlyFieldActionComponent,\n wrappers: ['field-no-label']\n },\n {\n name: 'dialog',\n component: MngFormlyFieldLookupDialogComponent,\n wrappers: ['field']\n },\n {\n name: 'table-dialog-multiselect',\n component: MngFormlyFieldTableDialogMultiselectComponent,\n wrappers: ['field-no-label']\n },\n {\n name: 'table-dialog-form',\n component: MngFormlyFieldTableDialogFormComponent,\n wrappers: ['field-no-label']\n },\n {\n name: 'tabs',\n component: MngFormlyFieldTabsComponent,\n wrappers: []\n },\n {\n name: 'fieldset',\n component: MngFormlyFieldFieldsetComponent,\n wrappers: []\n },\n {\n name: 'formly-group',\n wrappers: ['field-no-label']\n },\n {\n name: 'custom',\n component: MngFormlyFieldCustomComponent,\n wrappers: []\n }\n];\n\nexport function getRequiredValidationMessage(translate: TranslateService): (error: any, field: MngFormlyFieldConfig) => Observable<string> {\n return (error: any, field: MngFormlyFieldConfig) => {\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: MngFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: MngFormlyFieldConfig) => {\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: MngFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: MngFormlyFieldConfig) => {\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: MngFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: MngFormlyFieldConfig) => {\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: MngFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: MngFormlyFieldConfig) => {\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: MngFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: MngFormlyFieldConfig) => {\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: MngFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: MngFormlyFieldConfig) => {\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: MngFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: MngFormlyFieldConfig) => {\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: MngFormlyFieldConfig) => Observable<string> | undefined {\n return (error: any, field: MngFormlyFieldConfig) => {\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 {formlyTypesConfig, formlyWrappersConfig, getFormlyValidationMessages} from '../../components/form/formly';\nimport {MngModuleConfig} from '../../models';\n\nexport function mngFormlyConfigProvider(translate: TranslateService, datePipe: DatePipe, moduleConfig: MngModuleConfig = {}): ConfigOption {\n const merge = moduleConfig.formly?.merge ?? true;\n\n let types = formlyTypesConfig;\n if (moduleConfig.formly?.types) {\n if (!merge) {\n types = [];\n }\n types = [...types, ...moduleConfig.formly.types];\n }\n\n let wrappers = formlyWrappersConfig;\n if (moduleConfig.formly?.wrappers) {\n if (!merge) {\n wrappers = [];\n }\n wrappers = [...wrappers, ...moduleConfig.formly.wrappers];\n }\n\n let validationMessages = getFormlyValidationMessages(translate, datePipe);\n if (typeof moduleConfig.formly?.getValidationMessages === 'function') {\n if (!merge) {\n validationMessages = [];\n }\n validationMessages = [...validationMessages, ...moduleConfig.formly.getValidationMessages(translate)];\n }\n\n return {\n types: types,\n wrappers: wrappers,\n validationMessages: validationMessages\n };\n}\n","import {DatePipe} from '@angular/common';\nimport {HttpClient} from '@angular/common/http';\nimport {APP_INITIALIZER, Provider} from '@angular/core';\n\nimport {FORMLY_CONFIG} from '@ngx-formly/core';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ConfirmationService, MessageService} from 'primeng/api';\nimport {DialogService} from 'primeng/dynamicdialog';\n\nimport {ObjectSerializer} from './api/utils';\nimport {MngActionEditorComponent} from './components/action';\nimport {MngModuleConfig} from './models';\nimport {\n JsonPathPipe,\n MngBooleanPipe,\n MngClassMapPipe,\n MngEnumPipe,\n MngEnumerateAsyncPipe,\n MngEnumeratePipe,\n MngGetterPipe,\n MngI18nPropertyPipe,\n MngLocaleDefaultRowClassPipe,\n MngParametrizePipe,\n MngTemplatePipe\n} from './pipes';\nimport {DefaultMngErrorMapperService, MngConfigurationService, MngErrorMapperService} from './services';\nimport {MngCommonsInitService, mngCommonsInitializerProvider} from './services/internal';\nimport {mngConfigJsonAppInitializerProvider, mngConfigurationServiceProvider, mngFormlyConfigProvider} from './services/providers';\nimport {ACTION_EDITOR_DIALOG_COMPONENT_SETTING, MNG_MODULE_CONFIG_IT} from './services/tokens';\n\nexport function provideMngCommons(config: MngModuleConfig): Provider[] {\n return [\n // primeng services\n DialogService,\n MessageService,\n ConfirmationService,\n\n // pipes\n JsonPathPipe,\n MngEnumPipe,\n MngBooleanPipe,\n MngI18nPropertyPipe,\n MngParametrizePipe,\n MngGetterPipe,\n MngTemplatePipe,\n MngClassMapPipe,\n MngEnumeratePipe,\n MngEnumerateAsyncPipe,\n MngLocaleDefaultRowClassPipe,\n DatePipe,\n\n {\n provide: MNG_MODULE_CONFIG_IT,\n useValue: config\n },\n {\n provide: ObjectSerializer,\n useFactory: () => ObjectSerializer.get()\n },\n {\n provide: MngConfigurationService,\n useFactory: mngConfigurationServiceProvider,\n deps: [HttpClient, MNG_MODULE_CONFIG_IT]\n },\n {\n provide: APP_INITIALIZER,\n useFactory: mngConfigJsonAppInitializerProvider,\n deps: [MngConfigurationService, MNG_MODULE_CONFIG_IT],\n multi: true\n },\n {\n provide: APP_INITIALIZER,\n useFactory: mngCommonsInitializerProvider,\n deps: [MngCommonsInitService],\n multi: true\n },\n {\n provide: FORMLY_CONFIG,\n multi: true,\n useFactory: mngFormlyConfigProvider,\n deps: [TranslateService, DatePipe, MNG_MODULE_CONFIG_IT]\n },\n {\n provide: ACTION_EDITOR_DIALOG_COMPONENT_SETTING,\n useValue: MngActionEditorComponent\n },\n {\n provide: MngErrorMapperService,\n useClass: DefaultMngErrorMapperService\n }\n ];\n}\n","import {CommonModule} from '@angular/common';\nimport {HttpClientModule} from '@angular/common/http';\nimport {ModuleWithProviders, NgModule} from '@angular/core';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {RouterModule} from '@angular/router';\n\nimport {FormlyModule} from '@ngx-formly/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {AutoCompleteModule} from 'primeng/autocomplete';\nimport {BreadcrumbModule} from 'primeng/breadcrumb';\nimport {ButtonModule} from 'primeng/button';\nimport {CalendarModule} from 'primeng/calendar';\nimport {CardModule} from 'primeng/card';\nimport {CheckboxModule} from 'primeng/checkbox';\nimport {ChipModule} from 'primeng/chip';\nimport {ConfirmDialogModule} from 'primeng/confirmdialog';\nimport {ConfirmPopupModule} from 'primeng/confirmpopup';\nimport {DialogModule} from 'primeng/dialog';\nimport {DropdownModule} from 'primeng/dropdown';\nimport {DynamicDialogModule} from 'primeng/dynamicdialog';\nimport {FieldsetModule} from 'primeng/fieldset';\nimport {FileUploadModule} from 'primeng/fileupload';\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 {MessagesModule} from 'primeng/messages';\nimport {MultiSelectModule} from 'primeng/multiselect';\nimport {PaginatorModule} from 'primeng/paginator';\nimport {ProgressSpinnerModule} from 'primeng/progressspinner';\nimport {RadioButtonModule} from 'primeng/radiobutton';\nimport {RippleModule} from 'primeng/ripple';\nimport {SelectButtonModule} from 'primeng/selectbutton';\nimport {SkeletonModule} from 'primeng/skeleton';\nimport {SlideMenuModule} from 'primeng/slidemenu';\nimport {SplitButtonModule} from 'primeng/splitbutton';\nimport {TableModule} from 'primeng/table';\nimport {TabViewModule} from 'primeng/tabview';\nimport {TagModule} from 'primeng/tag';\nimport {ToastModule} from 'primeng/toast';\nimport {ToggleButtonModule} from 'primeng/togglebutton';\nimport {ToolbarModule} from 'primeng/toolbar';\nimport {TooltipModule} from 'primeng/tooltip';\n\nimport {MngActionComponent, MngActionEditorComponent, MngActionRouteComponent, MngDataLanguageDropdownComponent} from './components/action';\nimport {MngAutocompleteComponent, MngDateRangeComponent, MngDropdownComponent, MngFormEditorComponent} from './components/form';\nimport {\n MngFormlyFieldActionComponent,\n MngFormlyFieldAutocompleteComponent,\n MngFormlyFieldCustomComponent,\n MngFormlyFieldDropdownComponent,\n MngFormlyFieldFieldsetComponent,\n MngFormlyFieldInputComponent,\n MngFormlyFieldLabelComponent,\n MngFormlyFieldLookupDialogComponent,\n MngFormlyFieldTableDialogFormComponent,\n MngFormlyFieldTableDialogMultiselectComponent,\n MngFormlyFieldTabsComponent\n} from './components/form/formly/fields';\nimport {MngFormlyFieldNoLabelWrapperComponent, MngFormlyFieldWrapperComponent} from './components/form/formly/wrappers';\nimport {\n MngBreadcrumbComponent,\n MngFooterComponent,\n MngMainLayoutComponent,\n MngMenuComponent,\n MngMenuItemComponent,\n MngTopbarComponent,\n MngTopbarUserComponent,\n MngVersionComponent\n} from './components/layout';\nimport {MngErrorPageComponent, MngNotFoundPageComponent} from './components/pages';\nimport {MngTableColumnFilterComponent, MngTableColumnValueComponent, MngTableComponent, MngTableviewComponent, MngTableviewRouteComponent} from './components/tableview';\nimport {MngComponentDirective, MngTemplateDirective} from './directives';\nimport {MngModuleConfig} from './models';\nimport {\n JsonPathPipe,\n MngBooleanPipe,\n MngClassMapPipe,\n MngEnumPipe,\n MngEnumerateAsyncPipe,\n MngEnumeratePipe,\n MngGetterPipe,\n MngI18nPropertyPipe,\n MngLocaleDefaultRowClassPipe,\n MngParametrizePipe,\n MngTemplatePipe\n} from './pipes';\nimport {provideMngCommons} from './provide-commons';\n\n// primeng modules\nexport const primeNgModules = [\n AutoCompleteModule,\n BreadcrumbModule,\n ButtonModule,\n CalendarModule,\n CardModule,\n CheckboxModule,\n ChipModule,\n ConfirmDialogModule,\n ConfirmPopupModule,\n DialogModule,\n DynamicDialogModule,\n DropdownModule,\n FileUploadModule,\n InputNumberModule,\n InputMaskModule,\n InputSwitchModule,\n InputTextModule,\n InputTextareaModule,\n PaginatorModule,\n RadioButtonModule,\n RippleModule,\n SelectButtonModule,\n SplitButtonModule,\n TableModule,\n TagModule,\n ToastModule,\n ToggleButtonModule,\n ToolbarModule,\n TooltipModule,\n MessagesModule,\n ProgressSpinnerModule,\n TabViewModule,\n FieldsetModule,\n MultiSelectModule,\n SkeletonModule,\n SlideMenuModule,\n ImageModule\n];\n\nconst standalone = [\n MngActionRouteComponent,\n\n // directives\n MngComponentDirective,\n MngTemplateDirective,\n\n // pipes\n JsonPathPipe,\n MngEnumPipe,\n MngBooleanPipe,\n MngI18nPropertyPipe,\n MngParametrizePipe,\n MngGetterPipe,\n MngTemplatePipe,\n MngClassMapPipe,\n MngEnumeratePipe,\n MngEnumerateAsyncPipe,\n MngLocaleDefaultRowClassPipe,\n\n // layout components\n MngBreadcrumbComponent,\n MngFooterComponent,\n MngMainLayoutComponent,\n MngMenuComponent,\n MngMenuItemComponent,\n MngTopbarComponent,\n MngTopbarUserComponent,\n MngVersionComponent,\n\n // mng fields\n MngAutocompleteComponent,\n MngDropdownComponent,\n MngDateRangeComponent,\n\n // formly wrappers\n MngFormlyFieldWrapperComponent,\n MngFormlyFieldNoLabelWrapperComponent,\n\n // formly fields\n MngFormlyFieldInputComponent,\n MngFormlyFieldLabelComponent,\n MngFormlyFieldDropdownComponent,\n MngFormlyFieldAutocompleteComponent,\n MngFormlyFieldLookupDialogComponent,\n MngFormlyFieldTableDialogMultiselectComponent,\n MngFormlyFieldTableDialogFormComponent,\n MngFormlyFieldTabsComponent,\n MngFormlyFieldFieldsetComponent,\n MngFormlyFieldActionComponent,\n MngFormlyFieldCustomComponent,\n\n // table components\n MngTableComponent,\n MngTableviewComponent,\n MngTableColumnValueComponent,\n MngTableColumnFilterComponent,\n MngTableviewRouteComponent,\n\n // editor components\n MngFormEditorComponent,\n MngActionComponent,\n MngActionEditorComponent,\n MngDataLanguageDropdownComponent,\n\n // pages\n MngErrorPageComponent,\n MngNotFoundPageComponent\n];\n\n@NgModule({\n imports: [\n // angular modules\n CommonModule,\n RouterModule,\n HttpClientModule,\n ReactiveFormsModule,\n\n // other modules\n TranslateModule.forChild({\n extend: true\n }),\n FormlyModule.forChild(),\n ...primeNgModules,\n\n // standalone components\n ...standalone\n ],\n exports: [...primeNgModules, ...standalone]\n})\nexport class MngCommonsModule {\n static forRoot(config: MngModuleConfig): ModuleWithProviders<MngCommonsModule> {\n return {\n ngModule: MngCommonsModule,\n providers: provideMngCommons(config)\n };\n }\n}\n","import {HttpClient} from '@angular/common/http';\nimport {inject} from '@angular/core';\n\nimport {ClassType} from '../../types';\nimport {MediusQueryParam} from '../models';\nimport {ObjectSerializer} from '../utils';\n\nexport abstract class AMngBaseApiService {\n protected readonly objectSerializer: ObjectSerializer = ObjectSerializer.get();\n protected readonly http: HttpClient;\n\n protected constructor() {\n this.http = inject(HttpClient);\n }\n\n protected abstract getBasePath(): string;\n\n protected abstract getServiceBasePath(): string | null;\n\n protected getUrl(...pathSegments: Array<string>): string {\n let baseUrl = this.getBasePath();\n if (baseUrl.endsWith('/')) {\n baseUrl = baseUrl.substring(0, baseUrl.length - 1);\n }\n const serviceBasePath = this.getServiceBasePath();\n let path = [serviceBasePath, ...pathSegments].filter(s => s && s.length).join('/');\n // omit first and last '/'\n if (path.startsWith('/')) {\n path = path.substring(1);\n }\n if (path.endsWith('/')) {\n path = path.substring(0, path.length - 1);\n }\n // replace any double '//' from path that could come from joining paths\n path = path.replace('//', '/');\n return `${baseUrl}/${path}`;\n }\n\n protected serializeQueryParam(queryParam: MediusQueryParam, type = 'QueryParam') {\n return this.objectSerializer.serialize(queryParam, type);\n }\n\n protected deserializeQueryResult<QR>(item: any, qrType: ClassType<QR>): QR {\n return this.deserializeClass(item, qrType);\n }\n\n protected deserializeClass<C>(item: any, type: ClassType<C>): C {\n return this.objectSerializer.deserializeClass(item, type);\n }\n\n protected deserializeClassArray<C>(item: any, type: ClassType<C>): Array<C> {\n return this.objectSerializer.deserializeClassArray(item, type);\n }\n\n protected serializeClass<C>(item: C, type: ClassType<C>): any {\n return this.objectSerializer.serializeClass(item, type);\n }\n\n protected serializeClassArray<C>(item: Array<C>, type: ClassType<C>): any {\n return this.objectSerializer.serializeClassArray(item, type);\n }\n}\n\nexport abstract class AMngApiService<T> extends AMngBaseApiService {\n protected constructor(protected type: ClassType<T>) {\n super();\n }\n\n protected deserialize(item: any): T {\n return this.deserializeClass(item, this.type);\n }\n\n protected serialize(item: T): any {\n return this.serializeClass(item, this.type);\n }\n}\n","import {HttpParams} from '@angular/common/http';\n\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {ClassType} from '../../types';\nimport {MediusQueryParam, MediusQueryResult} from '../models';\nimport {AMngApiService} from './api.abstract.service';\n\nexport interface IMngGetAllApiService<QRT extends MediusQueryResult<any>> {\n getAllPost(queryParamBody?: MediusQueryParam, params?: HttpParams, locale?: string): Observable<QRT>;\n}\n\nexport abstract class AMngGetAllApiService<T, QRT extends MediusQueryResult<any>> extends AMngApiService<T> implements IMngGetAllApiService<QRT> {\n protected constructor(type: ClassType<T>, protected queryResultType: ClassType<QRT>) {\n super(type);\n }\n\n public getAllPost(queryParamBody?: MediusQueryParam, params?: HttpParams, locale?: string): Observable<QRT> {\n const url = this.getUrl(this.getGetAllPostPath());\n if (params && locale) {\n params = params.set('lang', locale);\n } else if (locale) {\n params = new HttpParams().set('lang', locale);\n }\n return this.http\n .post<any>(url, queryParamBody ? this.serializeQueryParam(queryParamBody) : undefined, {\n withCredentials: true,\n observe: 'body',\n reportProgress: false,\n params: params\n })\n .pipe(map(res => this.deserializeQueryResult(res, this.queryResultType)));\n }\n\n protected getGetAllPostPath(): string {\n return '/get-all';\n }\n}\n","import {HttpParams} from '@angular/common/http';\n\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {ClassType, IdType} from '../../types';\nimport {MediusQueryResult} from '../models';\nimport {AMngGetAllApiService} from './get-all-api.abstract.service';\n\nexport interface IMngCrudApiService<T> {\n createPost?(item: T, params?: HttpParams): Observable<T>;\n\n getByIdGet?(id: IdType, params?: HttpParams, locale?: string): Observable<T>;\n\n updatePut?(id: IdType, item: T, params?: HttpParams): Observable<T>;\n\n removeDelete?(id: IdType, item?: T, params?: HttpParams): Observable<T | null>;\n}\n\nexport abstract class AMngCrudApiService<T, QRT extends MediusQueryResult<any>> extends AMngGetAllApiService<T, QRT> implements IMngCrudApiService<T> {\n protected constructor(type: ClassType<T>, queryResultType: ClassType<QRT>) {\n super(type, queryResultType);\n }\n\n public createPost(item: T, params?: HttpParams): Observable<T> {\n const url = this.getUrl(this.getCreatePostPath(item));\n return this.http\n .post<unknown>(url, this.serialize(item), {\n withCredentials: true,\n observe: 'body',\n reportProgress: false,\n params: params\n })\n .pipe(map(res => this.deserialize(res)));\n }\n\n public getByIdGet(id: IdType, params?: HttpParams, locale?: string): Observable<T> {\n const url = this.getUrl(this.getGetByIdGetPath(id));\n if (params && locale) {\n params = params.set('lang', locale);\n } else if (locale) {\n params = new HttpParams().set('lang', locale);\n }\n return this.http\n .get<unknown>(url, {\n withCredentials: true,\n observe: 'body',\n reportProgress: false,\n params: params\n })\n .pipe(map(res => this.deserialize(res)));\n }\n\n public updatePut(id: IdType, item: T, params?: HttpParams): Observable<T> {\n const url = this.getUrl(this.getUpdatePutPath(id, item));\n return this.http\n .put<unknown>(url, this.serialize(item), {\n withCredentials: true,\n observe: 'body',\n reportProgress: false,\n params: params\n })\n .pipe(map(res => this.deserialize(res)));\n }\n\n public removeDelete(id: IdType, item?: T, params?: HttpParams): Observable<T | null> {\n const url = this.getUrl(this.getRemoveDeletePath(id, item));\n return this.http\n .request<unknown>('delete', url, {\n withCredentials: true,\n observe: 'body',\n reportProgress: false,\n body: item ? this.serialize(item) : undefined,\n params: params\n })\n .pipe(map(res => (res ? this.deserialize(res) : null)));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n protected getCreatePostPath(item: T): string {\n return '';\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n protected getUpdatePutPath(id: IdType, item: T): string {\n return `/${id}`;\n }\n\n protected getGetByIdGetPath(id: IdType): string {\n return `/${id}`;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n protected getRemoveDeletePath(id: IdType, item?: T) {\n return `/${id}`;\n }\n}\n","import {Type} from '@angular/core';\nimport {DefaultExport, LoadChildren, Route} from '@angular/router';\n\nimport {Observable} from 'rxjs';\n\nimport {MngMainLayoutComponent} from '../components/layout';\nimport {MngErrorInternal, MngMenuItem} from '../models';\nimport {MngAuthorizationGuard} from '../security';\nimport {APermissions} from '../security/model';\nimport {RouteUtil} from '../utils/route.util';\nimport {BreadcrumbType, MngRouterData} from './models';\nimport {RoutesBuilder} from './routes-builder';\nimport {TableviewRouteBuilderInternal} from './tableview-route-builder';\n\nexport class RouteBuilder {\n private readonly route: Route;\n private routePath: Array<string> = [];\n protected routeData: MngRouterData = {breadcrumb: null};\n private root?: RoutesBuilder;\n private parent?: RouteBuilder;\n private children: Array<RouteBuilder> = [];\n\n private menuItem?: MngMenuItem;\n private menuItemChildren: Array<MngMenuItem> = [];\n\n private breadcrumb?: BreadcrumbType;\n private pageTitle?: string;\n\n private permissions?: APermissions;\n\n protected constructor(route: Route) {\n this.route = route;\n if (this.route.path && this.route.path.length > 0) {\n this.routePath = [this.route.path];\n }\n }\n\n public static create(path: string, component: Type<any>): RouteBuilder {\n return new RouteBuilder({\n path: path,\n component: component\n });\n }\n\n public static createRedirect(path: string, redirectTo: string, pathMatch: 'full' | 'prefix' = 'prefix'): RouteBuilder {\n return new RouteBuilder({\n path: path,\n redirectTo: redirectTo,\n pathMatch: pathMatch\n });\n }\n\n /**\n * @deprecated This method is deprecated and should not be used.\n * Use method {@link createLazyRouteComponent} or {@link createLazyRouteModule} instead.\n */\n public static createLazyRoute(path: string, loadChildren: LoadChildren, canLoad?: Array<any>): RouteBuilder {\n const route: Route = {path: path, loadChildren: loadChildren};\n if (canLoad?.length) {\n route.canLoad = canLoad;\n }\n return new RouteBuilder(route);\n }\n\n public static createLazyRouteModule(path: string, loadChildren: LoadChildren, canMatch?: Array<any>): RouteBuilder {\n const route: Route = {path: path, loadChildren: loadChildren};\n if (canMatch?.length) {\n route.canMatch = canMatch;\n }\n return new RouteBuilder(route);\n }\n\n public static createLazyRouteComponent(\n path: string,\n loadComponent: () => Type<unknown> | Observable<Type<unknown> | DefaultExport<Type<unknown>>> | Promise<Type<unknown> | DefaultExport<Type<unknown>>>,\n canMatch?: Array<any>\n ): RouteBuilder {\n const route: Route = {path: path, loadComponent: loadComponent};\n if (canMatch?.length) {\n route.canMatch = canMatch;\n }\n return new RouteBuilder(route);\n }\n\n public static createFromRoute(route: Route): RouteBuilder {\n return new RouteBuilder(route);\n }\n\n public static createLayoutRoute(path: string, layoutComponent = MngMainLayoutComponent): RouteBuilder {\n return RouteBuilder.create(path, layoutComponent);\n }\n\n public withRoot(routesBuilder: RoutesBuilder): this {\n this.root = routesBuilder;\n return this;\n }\n\n public withParent(parent: RouteBuilder): this {\n this.parent = parent;\n this.routePath = RouteUtil.removeEmptyPathSegments([...this.parent.routePath, this.route.path ?? '']);\n return this;\n }\n\n public withBreadcrumb(breadcrumb: BreadcrumbType): this {\n this.breadcrumb = breadcrumb;\n this.routeData.breadcrumb = breadcrumb;\n return this;\n }\n\n public withPageTitle(pageTitle: string): this {\n this.pageTitle = pageTitle;\n this.routeData.pageTitle = pageTitle;\n return this;\n }\n\n public withRedirectTo(redirectTo: string): this {\n this.route.redirectTo = redirectTo;\n return this;\n }\n\n public withPathMatch(pathMatch: 'full' | 'prefix'): this {\n this.route.pathMatch = pathMatch;\n return this;\n }\n\n public withTitle(title: string): this {\n this.withPageTitle(title);\n this.withBreadcrumb(title);\n return this;\n }\n\n public withCanActivate(diToken: any): this {\n if (!this.route.canActivate) {\n this.route.canActivate = [];\n }\n this.route.canActivate.push(diToken);\n return this;\n }\n\n public withCanDeactivate(diToken: any): this {\n if (!this.route.canDeactivate) {\n this.route.canDeactivate = [];\n }\n this.route.canDeactivate.push(diToken);\n return this;\n }\n\n public withResolver(diToken: any, name: string): this {\n if (!this.route.resolve) {\n this.route.resolve = {};\n }\n this.route.resolve[name] = diToken;\n return this;\n }\n\n public withData(data: MngRouterData): this {\n if (!data.breadcrumb) {\n data.breadcrumb = null;\n }\n this.routeData = data;\n return this;\n }\n\n public withMngMenuItem(menuItem: MngMenuItem): this {\n this.menuItem = menuItem;\n return this;\n }\n\n public withMenuItem(icon?: string, label?: string, routerLink?: Array<string>): this {\n this.menuItem = this.createMenuItem(icon, label, routerLink);\n return this;\n }\n\n public withMenuItemChild(label: string, icon?: string, routerLink?: Array<string>): this {\n this.menuItemChildren.push(this.createMenuItem(icon, label, routerLink));\n return this;\n }\n\n public withMngMenuItemChild(menuItem: MngMenuItem): this {\n this.menuItemChildren.push(menuItem);\n return this;\n }\n\n public withMenuItemLazyChildren(): this {\n if (!this.menuItem) {\n this.menuItem = {};\n }\n this.menuItem.lazyChildren = true;\n return this;\n }\n\n public withPermissions(permissions: APermissions): this {\n this.permissions = permissions;\n this.withCanActivate(MngAuthorizationGuard);\n return this;\n }\n\n public addChild(path: string, component: Type<any>): RouteBuilder {\n const childRouteBuilder = RouteBuilder.create(path, component);\n this.addChildBuilder(childRouteBuilder);\n return childRouteBuilder;\n }\n\n public addChildBuilder(builder: RouteBuilder | TableviewRouteBuilderInternal): this {\n builder.withParent(this);\n if (this.root) {\n builder.withRoot(this.root);\n }\n this.children.push(builder);\n return this;\n }\n\n public toParent(): RouteBuilder {\n if (!this.parent) {\n throw new MngErrorInternal('Parent was not provided.', 'RouteBuilder error').consoleError();\n }\n return this.parent;\n }\n\n public toRoot(): RoutesBuilder {\n if (!this.root) {\n throw new MngErrorInternal('Root was not provided.', 'RouteBuilder error').consoleError();\n }\n return this.root;\n }\n\n public finish(): RoutesBuilder {\n return this.toRoot();\n }\n\n public build(): Route {\n const angularRoute: Route = {\n ...this.route\n };\n\n if (angularRoute.data) {\n angularRoute.data = {\n ...angularRoute.data,\n ...this.routeData\n };\n } else {\n angularRoute.data = {...this.routeData};\n }\n\n // append permissions if not already in route data\n if (this.permissions && !(angularRoute.data as MngRouterData).permissions) {\n (angularRoute.data as MngRouterData).permissions = this.permissions;\n }\n\n const menu = this.buildMenu();\n if (menu.length > 0) {\n (angularRoute.data as MngRouterData).menuItems = menu;\n }\n\n if ((this.route.children?.length ?? 0) > 0 || this.children.length > 0) {\n // route has children\n angularRoute.children = [];\n if (this.route.children?.length) {\n angularRoute.children.push(...this.route.children);\n }\n if (this.children.length) {\n for (const childRoute of this.children) {\n angularRoute.children.push(childRoute.build());\n }\n }\n }\n\n if (this.route.canActivate) {\n angularRoute.canActivate = [...this.route.canActivate];\n }\n if (this.route.canActivateChild) {\n angularRoute.canActivateChild = [...this.route.canActivateChild];\n }\n if (this.route.canLoad) {\n angularRoute.canLoad = [...this.route.canLoad];\n }\n if (this.route.canDeactivate) {\n angularRoute.canDeactivate = [...this.route.canDeactivate];\n }\n if (this.route.resolve) {\n angularRoute.resolve = {...this.route.resolve};\n }\n\n return angularRoute;\n }\n\n private buildMenu(): Array<MngMenuItem> {\n const menuItemBuild: MngMenuItem | null = this.menuItem ? {...this.menuItem} : null;\n const routeChildrenMenuItems: Array<MngMenuItem> = this.children.flatMap(child => child.buildMenu());\n const menuItemChildren: Array<MngMenuItem> = [];\n const menuItemChildrenBuild: Array<MngMenuItem> = [];\n\n if (menuItemBuild?.items) {\n menuItemChildrenBuild.push(...menuItemBuild.items);\n }\n\n for (const menuItemChild of this.menuItemChildren) {\n const finalMenuItemChild: MngMenuItem = {...menuItemChild};\n if (!finalMenuItemChild.routerLink) {\n finalMenuItemChild.routerLink = this.routePath;\n }\n if (typeof finalMenuItemChild.routerLink === 'string') {\n finalMenuItemChild.routerLink = [finalMenuItemChild.routerLink];\n }\n finalMenuItemChild.routerLink = RouteUtil.removeEmptyPathSegments(finalMenuItemChild.routerLink);\n menuItemChildren.push(finalMenuItemChild);\n }\n\n menuItemChildrenBuild.push(...menuItemChildren, ...routeChildrenMenuItems);\n\n if (!menuItemBuild) {\n return menuItemChildrenBuild;\n }\n\n menuItemBuild.label = menuItemBuild.label ?? this.pageTitle;\n if (typeof menuItemBuild.routerLink === 'string') {\n menuItemBuild.routerLink = [menuItemBuild.routerLink];\n }\n menuItemBuild.routerLink = RouteUtil.removeEmptyPathSegments(menuItemBuild.routerLink ?? this.routePath);\n if (menuItemChildrenBuild.length > 0) {\n menuItemBuild.items = menuItemChildrenBuild;\n }\n\n if (!menuItemBuild.guards) {\n const guards = this.findMenuItemGuards();\n if (guards.length > 0) {\n menuItemBuild.guards = guards;\n }\n }\n\n if (!menuItemBuild.permissions) {\n menuItemBuild.permissions = this.findMenuItemPermissions();\n }\n\n return [menuItemBuild];\n }\n\n private createMenuItem(icon?: string, label?: string, routerLink?: Array<string>) {\n const menuItem: MngMenuItem = {};\n if (icon) {\n menuItem.icon = icon;\n }\n if (label) {\n menuItem.label = label;\n }\n if (routerLink) {\n menuItem.routerLink = routerLink;\n }\n return menuItem;\n }\n\n private findMenuItemGuards(): Array<any> {\n const guards: Array<any> = [];\n if (this.route.canActivate?.length) {\n guards.push(...this.route.canActivate);\n }\n if (this.parent) {\n // Check for parent guards that should be included in decision to hide menu item!\n // Some parent routes might have guards, but no menu items, so this guards must be taken into account here,\n // because there is no parent menu item to hide.\n this.parent.findMenuItemGuards().forEach(g => {\n if (guards.indexOf(g) < 0) {\n guards.push(g);\n }\n });\n }\n return guards;\n }\n\n protected findMenuItemPermissions() {\n if (this.menuItem?.permissions) {\n return this.menuItem.permissions;\n }\n if (this.routeData.permissions) {\n // this is already built\n return this.routeData.permissions;\n }\n if (this.permissions) {\n return this.permissions;\n }\n return undefined;\n }\n}\n","import {Type} from '@angular/core';\nimport {DefaultExport, LoadChildren, Route, Routes} from '@angular/router';\n\nimport {Observable} from 'rxjs';\n\nimport {MngMainLayoutComponent} from '../components/layout';\nimport {MngErrorInternal} from '../models';\nimport {RouteBuilder} from './route-builder';\nimport {TableviewRouteBuilderInternal} from './tableview-route-builder';\n\nexport class RoutesBuilder {\n private readonly layoutRoute?: RouteBuilder;\n private routes: Array<RouteBuilder> = [];\n private currentRoute?: RouteBuilder;\n\n private constructor(layoutRoute?: RouteBuilder) {\n this.layoutRoute = layoutRoute?.withRoot(this);\n this.currentRoute = layoutRoute;\n }\n\n public static create(): RoutesBuilder {\n return new RoutesBuilder();\n }\n\n public static createWithLayout(layoutComponent = MngMainLayoutComponent): RoutesBuilder {\n const layoutRoute = RouteBuilder.createLayoutRoute('', layoutComponent);\n return new RoutesBuilder(layoutRoute);\n }\n\n public addAngularRoute(route: Route): this {\n return this.addRouteBuilder(RouteBuilder.createFromRoute(route));\n }\n\n public addRouteRedirect(path: string, redirectTo: string, pathMatch: 'full' | 'prefix' = 'prefix'): this {\n return this.addRouteBuilder(RouteBuilder.createRedirect(path, redirectTo, pathMatch));\n }\n\n /**\n * @deprecated This method is deprecated and should not be used.\n * Use method {@link addLazyRouteComponent} or {@link addLazyRouteModule} instead.\n */\n public addLazyRoute(path: string, loadChildren: LoadChildren, canLoad?: Array<any>): this {\n return this.addRouteBuilder(RouteBuilder.createLazyRoute(path, loadChildren, canLoad));\n }\n\n public addLazyRouteComponent(\n path: string,\n loadComponent: () => Type<unknown> | Observable<Type<unknown> | DefaultExport<Type<unknown>>> | Promise<Type<unknown> | DefaultExport<Type<unknown>>>,\n canMatch?: Array<any>\n ): this {\n return this.addRouteBuilder(RouteBuilder.createLazyRouteComponent(path, loadComponent, canMatch));\n }\n\n public addLazyRouteModule(path: string, loadChildren: LoadChildren, canMatch?: Array<any>): this {\n return this.addRouteBuilder(RouteBuilder.createLazyRouteModule(path, loadChildren, canMatch));\n }\n\n public addRoute(path: string, component: Type<any>): this {\n return this.addRouteBuilder(RouteBuilder.create(path, component));\n }\n\n public addTableview(builder: TableviewRouteBuilderInternal): this {\n return this.addRouteBuilder(builder);\n }\n\n public addRouteBuilder(routeBuilder: RouteBuilder): this {\n this.currentRoute = routeBuilder.withRoot(this);\n this.routes.push(routeBuilder);\n return this;\n }\n\n public toRoute(): RouteBuilder {\n if (!this.currentRoute) {\n throw new MngErrorInternal('No routes were added!', 'RoutesBuilder error').consoleError();\n }\n return this.currentRoute;\n }\n\n public build(): Routes {\n let angularRoutes: Routes = [];\n for (const route of this.routes) {\n angularRoutes.push(route.build());\n }\n\n if (this.layoutRoute) {\n const layoutAngularRoute = this.layoutRoute.build();\n if (angularRoutes.length > 0) {\n layoutAngularRoute.children = angularRoutes;\n }\n angularRoutes = [layoutAngularRoute];\n }\n\n return angularRoutes;\n }\n}\n","import {Type} from '@angular/core';\nimport {Route} from '@angular/router';\n\nimport {MngActionRouteComponent} from '../components/action';\nimport {TableviewActionDefaultCategories} from '../components/action/models';\nimport {AMngTableviewRouteComponent} from '../components/tableview';\nimport {ITableviewDataProvider} from '../data-providers';\nimport {ActionDescriptor, ActionEditorAddDescriptor, ActionEditorDetailsDescriptor, ActionEditorEditDescriptor} from '../descriptors/action';\nimport {TableviewDescriptor} from '../descriptors/tableview';\nimport {APermissions} from '../security/model';\nimport {MngRouterData} from './models';\nimport {RouteBuilder} from './route-builder';\n\nexport class TableviewRouteBuilderInternal extends RouteBuilder {\n private readonly descriptor?: TableviewDescriptor<any>;\n private readonly dataProvider?: ITableviewDataProvider<any, any>;\n private readonly actions?: Array<ActionDescriptor<any>>;\n private readonly isFromComponent: boolean = true;\n\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: TableviewDescriptor<any>;\n dataProvider: ITableviewDataProvider<any, any>;\n actions: Array<ActionDescriptor<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 ActionEditorDetailsDescriptor) {\n this.hasDetails = true;\n } else if (action instanceof ActionEditorAddDescriptor) {\n this.hasAdd = true;\n } else if (action instanceof ActionEditorEditDescriptor) {\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: MngRouterData = {\n ...this.routeData,\n breadcrumb: null,\n menuItems: undefined,\n permissions: undefined\n };\n\n // list route\n const rootChildRouteBuilder = RouteBuilder.create('', MngActionRouteComponent);\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, MngActionRouteComponent);\n routeBuilder.withData({...childrenRouteData});\n if (this.tableviewPermissions?.[TableviewActionDefaultCategories.ADD]) {\n routeBuilder.withPermissions(this.tableviewPermissions[TableviewActionDefaultCategories.ADD]);\n }\n this.addChildBuilder(routeBuilder);\n }\n if (this.hasDetails) {\n const routeBuilder = RouteBuilder.create(this.detailsPath, MngActionRouteComponent);\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, MngActionRouteComponent);\n routeBuilder.withData({...childrenRouteData});\n if (this.tableviewPermissions?.[TableviewActionDefaultCategories.EDIT]) {\n routeBuilder.withPermissions(this.tableviewPermissions[TableviewActionDefaultCategories.EDIT]);\n }\n this.addChildBuilder(routeBuilder);\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 extends AMngTableviewRouteComponent<any, any>>(path: string, component: Type<C>): TableviewRouteBuilderInternal {\n return new TableviewRouteBuilderInternal(path, {component});\n }\n\n public static from(\n path: string,\n descriptor: TableviewDescriptor<any>,\n dataProvider: ITableviewDataProvider<any, any>,\n actions: Array<ActionDescriptor<any>>\n ): TableviewRouteBuilderInternal {\n return new TableviewRouteBuilderInternal(path, {descriptor, dataProvider, actions});\n }\n}\n","import {TypeUtil} from '../utils';\n\nexport function TypeName(typeName: string): ClassDecorator {\n return function (target: any) {\n TypeUtil.defineReflectTypeName(target, typeName);\n };\n}\n\nexport function IdProperty(): PropertyDecorator {\n return function (target: any, prop: string | symbol) {\n TypeUtil.defineReflectTypeIdProperty(target, prop);\n };\n}\n\nexport function TitleProperty(): PropertyDecorator {\n return function (target: any, prop: string | symbol) {\n TypeUtil.defineReflectTypeTitleProperty(target, prop);\n };\n}\n\nexport function EnumName(typeName: string): ClassDecorator {\n return function (target: any) {\n TypeUtil.defineReflectEnumName(target, typeName);\n };\n}\n","/*\n * Public API Surface of mng-commons\n */\n\n// module\nexport * from './lib/mng-commons.module';\nexport * from './lib/provide-commons';\n\n// services\nexport * from './lib/api/services';\nexport * from './lib/components/layout/services';\nexport * from './lib/services';\nexport * from './lib/services/providers';\n\n// injection tokens\nexport * from './lib/services/tokens';\n\n// utils\nexport * from './lib/api/utils';\nexport * from './lib/utils';\n\n// components\nexport * from './lib/components/action';\nexport * from './lib/components/form';\nexport * from './lib/components/form/formly/fields';\nexport * from './lib/components/form/formly/wrappers';\nexport * from './lib/components/layout';\nexport * from './lib/components/tableview';\nexport * from './lib/components/pages';\n\n// directives\nexport * from './lib/directives';\n\n// pipes\nexport * from './lib/pipes';\n\n// api models\nexport * from './lib/api/models';\n\n// component models\nexport * from './lib/components/action/models';\nexport * from './lib/components/form/models';\nexport * from './lib/components/tableview/models';\n\n// formly\nexport * from './lib/components/form/formly/models';\nexport * from './lib/components/form/formly';\n\n// data providers\nexport * from './lib/data-providers';\n\n// descriptors\nexport * from './lib/descriptors';\nexport * from './lib/descriptors/action';\nexport * from './lib/descriptors/editor';\nexport * from './lib/descriptors/filter';\nexport * from './lib/descriptors/interfaces';\nexport * from './lib/descriptors/table';\nexport * from './lib/descriptors/tableview';\nexport * from './lib/descriptors/types';\n\n// general models\nexport * from './lib/models';\n\n// router\nexport * from './lib/router';\nexport * from './lib/router/models';\n\n// security\nexport * from './lib/security';\nexport * from './lib/security/model';\n\n// types\nexport * from './lib/types';\n\n// styles\nexport * from './lib/styles';\nexport * from './lib/styles/models';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3","i2","i1.JsonPathPipe","i1.MngParametrizePipe","i1","i2.MngConfigurationService","mergeMap","i2.MngCommonsService","i1.MngAuthorizationService","i3.MngAuthorizationService","i4.MngActionExecutorService","i5","i4.MngViewContainerComponentService","i7","i8","i3.MngNavigationService","i3.MngActionExecutorService","i3.MngViewContainerComponentService","i4","i1.MngCommonsService","i2.MngFormlyFieldWrapperComponent","take","i2.MngActionExecutorService","i2.MngNavigationService","i2.MngViewContainerComponentService","i9","i10","i14","i3.JsonPathPipe","i3.MngGetterPipe","i3.MngTemplatePipe","i6","i3.MngCommonsService","i3.MngLocalStorageService","i2.MngRouterService","i4.MngMainLayoutComponentService","i1.MngVersionService","i2.JsonPathPipe","i3.MngMainLayoutComponentService","i2.MngMainLayoutComponentService"],"mappings":"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"}