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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (245) hide show
  1. package/core/data-list/data-list-params-helpers.d.ts +82 -0
  2. package/core/descriptors/action.descriptor.d.ts +3 -3
  3. package/core/descriptors/column.descriptor.d.ts +1 -1
  4. package/core/descriptors/editor.descriptor.d.ts +6 -6
  5. package/core/descriptors/enum.descriptor.d.ts +6 -0
  6. package/core/descriptors/filter.descriptor.d.ts +1 -1
  7. package/core/descriptors/model.descriptor.d.ts +1 -1
  8. package/core/descriptors/table.descriptor.d.ts +6 -6
  9. package/core/descriptors/tableview.descriptor.d.ts +10 -10
  10. package/core/enum/enum-helpers.d.ts +49 -0
  11. package/core/error/error-helpers.d.ts +114 -0
  12. package/core/helpers/date.d.ts +14 -0
  13. package/core/helpers/object.d.ts +27 -0
  14. package/core/helpers/route.d.ts +35 -0
  15. package/core/helpers/string.d.ts +7 -0
  16. package/core/helpers/templates.d.ts +3 -0
  17. package/core/i18n/i18n-common.d.ts +6 -0
  18. package/core/i18n/i18n-error.d.ts +4 -0
  19. package/core/i18n/i18n-type.d.ts +20 -0
  20. package/core/index.d.ts +15 -9
  21. package/{model → core}/pipes/enum.pipe.d.ts +2 -2
  22. package/core/pipes/enumerate.pipe.d.ts +3 -3
  23. package/{model → core}/pipes/i18n-property.pipe.d.ts +2 -2
  24. package/core/pipes/template.pipe.d.ts +0 -2
  25. package/core/router/route-builder.d.ts +2 -4
  26. package/core/router/routes-builder.d.ts +5 -6
  27. package/core/security/permission-helpers.d.ts +3 -0
  28. package/core/security/permissions.model.d.ts +2 -2
  29. package/esm2022/core/components/notification/notification-wrapper.component.mjs +4 -4
  30. package/esm2022/core/components/pages/error/error.page.component.mjs +3 -3
  31. package/esm2022/core/components/pages/not-found/not-found.page.component.mjs +3 -3
  32. package/esm2022/core/data-list/data-list-params-helpers.mjs +415 -0
  33. package/esm2022/core/data-list/filter-match.model.mjs +1 -1
  34. package/esm2022/core/data-providers/base.data-provider.mjs +1 -1
  35. package/esm2022/core/descriptors/action.descriptor.mjs +1 -1
  36. package/esm2022/core/descriptors/column.descriptor.mjs +1 -1
  37. package/esm2022/core/descriptors/editor.descriptor.mjs +1 -1
  38. package/esm2022/core/descriptors/enum.descriptor.mjs +2 -0
  39. package/esm2022/core/descriptors/filter.descriptor.mjs +1 -1
  40. package/esm2022/core/descriptors/model.descriptor.mjs +1 -1
  41. package/esm2022/core/descriptors/table.descriptor.mjs +1 -1
  42. package/esm2022/core/descriptors/tableview.descriptor.mjs +1 -1
  43. package/esm2022/core/directives/component.directive.mjs +4 -4
  44. package/esm2022/core/directives/dialog-keydown-handler.directive.mjs +4 -4
  45. package/esm2022/core/directives/template.directive.mjs +3 -3
  46. package/esm2022/core/enum/enum-helpers.mjs +81 -0
  47. package/esm2022/core/error/error-handler.mjs +3 -3
  48. package/esm2022/core/error/error-helpers.mjs +247 -0
  49. package/esm2022/core/helpers/coercion.mjs +1 -1
  50. package/esm2022/core/helpers/date.mjs +119 -0
  51. package/esm2022/core/helpers/object.mjs +145 -0
  52. package/esm2022/core/helpers/route.mjs +58 -0
  53. package/esm2022/core/helpers/string.mjs +57 -0
  54. package/esm2022/core/helpers/templates.mjs +4 -0
  55. package/esm2022/core/i18n/i18n-common.mjs +24 -0
  56. package/esm2022/core/i18n/i18n-error.mjs +27 -0
  57. package/esm2022/core/i18n/i18n-type.mjs +79 -0
  58. package/esm2022/core/index.mjs +17 -11
  59. package/esm2022/core/log/log-publisher-console.service.mjs +3 -3
  60. package/esm2022/core/log/logger.service.mjs +3 -3
  61. package/esm2022/core/pipes/boolean.pipe.mjs +4 -4
  62. package/esm2022/core/pipes/class-map.pipe.mjs +4 -4
  63. package/esm2022/core/pipes/enum.pipe.mjs +27 -0
  64. package/esm2022/core/pipes/enumerate-async.pipe.mjs +8 -8
  65. package/esm2022/core/pipes/enumerate.pipe.mjs +10 -10
  66. package/esm2022/core/pipes/getter.pipe.mjs +4 -4
  67. package/esm2022/core/pipes/i18n-property.pipe.mjs +19 -0
  68. package/esm2022/core/pipes/json-path.pipe.mjs +6 -6
  69. package/esm2022/core/pipes/parametrize.pipe.mjs +6 -6
  70. package/esm2022/core/pipes/template.pipe.mjs +7 -8
  71. package/esm2022/core/provide.mjs +1 -21
  72. package/esm2022/core/reflect/type-enum-metadata.mjs +1 -1
  73. package/esm2022/core/registry/type-registry.mjs +1 -1
  74. package/esm2022/core/router/route-builder.mjs +8 -24
  75. package/esm2022/core/router/routes-builder.mjs +17 -16
  76. package/esm2022/core/security/permission-helpers.mjs +14 -0
  77. package/esm2022/core/security/permission.guard.mjs +1 -1
  78. package/esm2022/core/security/permission.service.mjs +6 -6
  79. package/esm2022/core/security/permissions.model.mjs +1 -1
  80. package/esm2022/core/services/commons-configuration.service.mjs +6 -6
  81. package/esm2022/core/services/commons-init.service.mjs +4 -4
  82. package/esm2022/core/services/commons-router.service.mjs +4 -4
  83. package/esm2022/core/services/commons.service.mjs +4 -4
  84. package/esm2022/core/services/local-storage-config.service.mjs +4 -4
  85. package/esm2022/filter/descriptors/filter-lookup.descriptor.mjs +9 -10
  86. package/esm2022/filter/descriptors/filter.descriptor.mjs +1 -1
  87. package/esm2022/form/api/data-providers/lookup.data-provider.mjs +1 -1
  88. package/esm2022/form/api/descriptors/button-style.builder.mjs +1 -1
  89. package/esm2022/form/components/autocomplete/autocomplete.component.mjs +7 -7
  90. package/esm2022/form/components/date-range/date-range.component.mjs +4 -4
  91. package/esm2022/form/components/dropdown/dropdown.component.mjs +7 -7
  92. package/esm2022/form/directives/input-trim.directive.mjs +4 -4
  93. package/esm2022/model/descriptors/enum.descriptor.mjs +1 -1
  94. package/esm2022/model/descriptors/model.descriptor.mjs +4 -4
  95. package/esm2022/model/helpers/i18n.mjs +45 -0
  96. package/esm2022/model/helpers/model.mjs +71 -0
  97. package/esm2022/model/index.mjs +4 -7
  98. package/esm2022/table/api/data-providers/table.data-provider.mjs +1 -1
  99. package/esm2022/table/api/descriptors/column.descriptor.mjs +1 -1
  100. package/esm2022/table/api/descriptors/table.descriptor.mjs +36 -8
  101. package/esm2022/table/api/helpers/class-attribute-converter.mjs +1 -1
  102. package/esm2022/table/components/column-filter-full/column-filter-full.component.mjs +9 -9
  103. package/esm2022/table/components/column-value/column-value.component.mjs +12 -14
  104. package/esm2022/table/components/table/table.component.mjs +20 -37
  105. package/esm2022/table/helpers/notification.mjs +4 -4
  106. package/esm2022/table/pipes/locale-default-row-class.pipe.mjs +4 -4
  107. package/esm2022/table/pipes/table-column-filter-class.pipe.mjs +4 -4
  108. package/esm2022/table/services/data-list.service.mjs +3 -3
  109. package/esm2022/tableview/action/components/action/action.component.mjs +9 -9
  110. package/esm2022/tableview/action/components/editor/action-editor.component.mjs +4 -4
  111. package/esm2022/tableview/action/components/editor/injector-context/action-editor-injector-context.component.mjs +6 -6
  112. package/esm2022/tableview/action/components/localization/data-language-dropdown.component.mjs +3 -3
  113. package/esm2022/tableview/action/components/route/action-route.component.mjs +4 -4
  114. package/esm2022/tableview/action/components/table/action-table.component.mjs +12 -24
  115. package/esm2022/tableview/action/helpers/i18n.mjs +82 -0
  116. package/esm2022/tableview/action/helpers/notification.mjs +8 -8
  117. package/esm2022/tableview/action/helpers/styles.mjs +1 -1
  118. package/esm2022/tableview/action/models/execution/action-context.model.mjs +1 -1
  119. package/esm2022/tableview/action/models/execution/action-instance.model.mjs +1 -1
  120. package/esm2022/tableview/action/services/action-error-mapper.service.mjs +1 -1
  121. package/esm2022/tableview/action/services/action-executor.service.mjs +9 -8
  122. package/esm2022/tableview/action/services/component-action-executor.service.mjs +3 -3
  123. package/esm2022/tableview/action/services/data-provider-executor.service.mjs +3 -3
  124. package/esm2022/tableview/action/services/navigation.service.mjs +4 -4
  125. package/esm2022/tableview/action/services/providers/provide-view-container.mjs +1 -1
  126. package/esm2022/tableview/action/services/root-action-executor.service.mjs +3 -3
  127. package/esm2022/tableview/action/services/view-container.service.mjs +3 -3
  128. package/esm2022/tableview/api/action/descriptors/action-confirmation.descriptor.mjs +1 -1
  129. package/esm2022/tableview/api/action/descriptors/action-editor.descriptor.mjs +1 -1
  130. package/esm2022/tableview/api/action/descriptors/action.descriptor.mjs +1 -1
  131. package/esm2022/tableview/api/action/helpers/data-provider-executors.mjs +1 -1
  132. package/esm2022/tableview/api/editor/data-providers/editor.data-provider.mjs +1 -1
  133. package/esm2022/tableview/api/editor/descriptors/editor.descriptor.mjs +4 -4
  134. package/esm2022/tableview/api/editor/descriptors/field-action.descriptor.mjs +1 -1
  135. package/esm2022/tableview/api/editor/descriptors/field-base.descriptor.mjs +3 -3
  136. package/esm2022/tableview/api/editor/descriptors/field-group.descriptor.mjs +1 -1
  137. package/esm2022/tableview/api/editor/descriptors/field-lookup.descriptor.mjs +8 -8
  138. package/esm2022/tableview/api/editor/descriptors/field-many.descriptor.mjs +1 -1
  139. package/esm2022/tableview/api/editor/descriptors/field.descriptor.mjs +4 -4
  140. package/esm2022/tableview/api/editor/helpers/class-attribute-converter.mjs +1 -1
  141. package/esm2022/tableview/api/editor/helpers/field-validators.mjs +1 -1
  142. package/esm2022/tableview/api/editor/models/editor-fields.model.mjs +1 -1
  143. package/esm2022/tableview/api/editor/models/formly-custom-field.model.mjs +3 -3
  144. package/esm2022/tableview/api/tableview/data-providers/tableview.data-provider.mjs +1 -1
  145. package/esm2022/tableview/api/tableview/descriptors/tableview.descriptor.mjs +4 -4
  146. package/esm2022/tableview/api/tableview/helpers/class-attribute-converter.mjs +1 -1
  147. package/esm2022/tableview/api/tableview/helpers/files-export.mjs +1 -1
  148. package/esm2022/tableview/api/tableview/helpers/tableview-default-actions.mjs +4 -4
  149. package/esm2022/tableview/api/tableview/helpers/tableview-input-builder.mjs +1 -1
  150. package/esm2022/tableview/editor/components/editor/form-editor.component.mjs +9 -9
  151. package/esm2022/tableview/editor/components/formly/fields/formly-field-action/formly-field-action.component.mjs +4 -4
  152. package/esm2022/tableview/editor/components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +4 -4
  153. package/esm2022/tableview/editor/components/formly/fields/formly-field-custom/formly-field-custom.component.mjs +3 -3
  154. package/esm2022/tableview/editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +4 -4
  155. package/esm2022/tableview/editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +3 -3
  156. package/esm2022/tableview/editor/components/formly/fields/formly-field-input/formly-field-input.component.mjs +4 -4
  157. package/esm2022/tableview/editor/components/formly/fields/formly-field-label/formly-field-label.component.mjs +3 -3
  158. package/esm2022/tableview/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +7 -7
  159. package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +4 -4
  160. package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +9 -9
  161. package/esm2022/tableview/editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +3 -3
  162. package/esm2022/tableview/editor/components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.mjs +4 -4
  163. package/esm2022/tableview/editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +4 -4
  164. package/esm2022/tableview/editor/helpers/editor-formly.mjs +335 -0
  165. package/esm2022/tableview/editor/helpers/formly-config.mjs +1 -1
  166. package/esm2022/tableview/editor/services/formly-config.provider.mjs +1 -1
  167. package/esm2022/tableview/index.mjs +3 -5
  168. package/esm2022/tableview/provide.mjs +2 -1
  169. package/esm2022/tableview/tableview/components/route/tableview-route.component.mjs +3 -3
  170. package/esm2022/tableview/tableview/components/tableview/tableview.component.mjs +10 -19
  171. package/esm2022/tableview/tableview/router/tableview-route-builder.mjs +1 -1
  172. package/fesm2022/mediusinc-mng-commons-core.mjs +1367 -1389
  173. package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -1
  174. package/fesm2022/mediusinc-mng-commons-filter.mjs +8 -9
  175. package/fesm2022/mediusinc-mng-commons-filter.mjs.map +1 -1
  176. package/fesm2022/mediusinc-mng-commons-form-api.mjs.map +1 -1
  177. package/fesm2022/mediusinc-mng-commons-form.mjs +17 -17
  178. package/fesm2022/mediusinc-mng-commons-form.mjs.map +1 -1
  179. package/fesm2022/mediusinc-mng-commons-model.mjs +99 -148
  180. package/fesm2022/mediusinc-mng-commons-model.mjs.map +1 -1
  181. package/fesm2022/mediusinc-mng-commons-table-api.mjs +35 -7
  182. package/fesm2022/mediusinc-mng-commons-table-api.mjs.map +1 -1
  183. package/fesm2022/mediusinc-mng-commons-table.mjs +48 -65
  184. package/fesm2022/mediusinc-mng-commons-table.mjs.map +1 -1
  185. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +19 -19
  186. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
  187. package/fesm2022/mediusinc-mng-commons-tableview.mjs +507 -572
  188. package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
  189. package/filter/descriptors/filter.descriptor.d.ts +2 -2
  190. package/model/descriptors/model.descriptor.d.ts +2 -2
  191. package/model/helpers/i18n.d.ts +10 -0
  192. package/model/helpers/model.d.ts +5 -0
  193. package/model/index.d.ts +2 -4
  194. package/package.json +7 -7
  195. package/table/api/descriptors/table.descriptor.d.ts +10 -0
  196. package/table/components/column-value/column-value.component.d.ts +3 -4
  197. package/table/components/table/table.component.d.ts +13 -13
  198. package/tableview/action/components/table/action-table.component.d.ts +6 -6
  199. package/tableview/action/helpers/i18n.d.ts +22 -0
  200. package/tableview/action/models/execution/action-instance-state.model.d.ts +21 -21
  201. package/tableview/action/services/action-executor.service.d.ts +1 -1
  202. package/tableview/api/action/descriptors/action-editor.descriptor.d.ts +1 -1
  203. package/tableview/api/action/descriptors/action.descriptor.d.ts +3 -3
  204. package/tableview/api/action/models/action.type.d.ts +2 -2
  205. package/tableview/api/action/models/execution/action-instance-state.model.d.ts +21 -21
  206. package/tableview/api/editor/descriptors/editor.descriptor.d.ts +2 -2
  207. package/tableview/api/editor/descriptors/field-action.descriptor.d.ts +2 -2
  208. package/tableview/api/editor/descriptors/field-base.descriptor.d.ts +5 -5
  209. package/tableview/api/editor/descriptors/field-group.descriptor.d.ts +4 -4
  210. package/tableview/api/editor/descriptors/field-lookup.descriptor.d.ts +4 -4
  211. package/tableview/api/editor/descriptors/field-many.descriptor.d.ts +4 -4
  212. package/tableview/api/editor/descriptors/field.descriptor.d.ts +2 -2
  213. package/tableview/api/editor/models/editor-fields.model.d.ts +3 -3
  214. package/tableview/api/tableview/descriptors/tableview.descriptor.d.ts +2 -2
  215. package/tableview/editor/helpers/editor-formly.d.ts +10 -0
  216. package/tableview/index.d.ts +2 -2
  217. package/tableview/tableview/components/tableview/tableview.component.d.ts +5 -5
  218. package/core/data-list/data-list-params.util.d.ts +0 -84
  219. package/core/enum/enum.util.d.ts +0 -51
  220. package/core/error/error.util.d.ts +0 -116
  221. package/core/security/permission.util.d.ts +0 -5
  222. package/core/utils/date.util.d.ts +0 -20
  223. package/core/utils/i18n.util.d.ts +0 -36
  224. package/core/utils/object.util.d.ts +0 -31
  225. package/core/utils/route.util.d.ts +0 -37
  226. package/core/utils/string.util.d.ts +0 -9
  227. package/esm2022/core/data-list/data-list-params.util.mjs +0 -417
  228. package/esm2022/core/enum/enum.util.mjs +0 -83
  229. package/esm2022/core/error/error.util.mjs +0 -249
  230. package/esm2022/core/security/permission.util.mjs +0 -16
  231. package/esm2022/core/utils/date.util.mjs +0 -136
  232. package/esm2022/core/utils/i18n.util.mjs +0 -137
  233. package/esm2022/core/utils/object.util.mjs +0 -147
  234. package/esm2022/core/utils/route.util.mjs +0 -60
  235. package/esm2022/core/utils/string.util.mjs +0 -59
  236. package/esm2022/model/pipes/enum.pipe.mjs +0 -26
  237. package/esm2022/model/pipes/i18n-property.pipe.mjs +0 -19
  238. package/esm2022/model/utils/i18n.util.mjs +0 -51
  239. package/esm2022/model/utils/model.util.mjs +0 -73
  240. package/esm2022/tableview/action/utils/i18n.util.mjs +0 -126
  241. package/esm2022/tableview/editor/utils/editor-formly.util.mjs +0 -337
  242. package/model/utils/i18n.util.d.ts +0 -15
  243. package/model/utils/model.util.d.ts +0 -8
  244. package/tableview/action/utils/i18n.util.d.ts +0 -48
  245. package/tableview/editor/utils/editor-formly.util.d.ts +0 -12
@@ -1,6 +1,4 @@
1
- import { findReflectEnumName, TypeRegistry, findReflectTypeName, CommonsInternalError, EnumUtil, I18nUtils as I18nUtils$1 } from '@mediusinc/mng-commons/core';
2
- import * as i0 from '@angular/core';
3
- import { Pipe } from '@angular/core';
1
+ import { findReflectEnumName, TypeRegistry, findReflectTypeName, CommonsInternalError, getI18n, getI18nTypeName, getI18nTypeNameAsync, getI18nTypeParams, getI18nTypeParamsAsync, getI18nTypeKeyBasePath } from '@mediusinc/mng-commons/core';
4
2
  import { map } from 'rxjs/operators';
5
3
 
6
4
  class EnumDescriptor {
@@ -33,73 +31,71 @@ function enumModelGeneric(type, i18nBaseKey = null, nameAsValue = false) {
33
31
  return EnumDescriptor.create(undefined, type, i18nBaseKey, nameAsValue);
34
32
  }
35
33
 
36
- class ModelUtil {
37
- static findIdAttribute(classType) {
38
- if (!classType)
39
- return null;
40
- const attrDef = ModelUtil.getAttributeDef(classType);
41
- if (!attrDef) {
42
- return null;
43
- }
44
- let idAttribute = ModelUtil.findAttributeByTypeAndName(attrDef, ['string', 'number'], 'id', 'uuid', 'code', 'sifra');
45
- if (!idAttribute) {
46
- // if no id or code, take the first attribute
47
- idAttribute = attrDef[0];
48
- }
49
- return idAttribute?.name ?? null;
50
- }
51
- static findTitleAttribute(classType) {
52
- if (!classType)
53
- return null;
54
- const attrDef = ModelUtil.getAttributeDef(classType);
55
- if (!attrDef) {
56
- return null;
57
- }
58
- let titleAttribute = ModelUtil.findAttributeByTypeAndName(attrDef, ['string'], 'name', 'ime', 'title', 'naziv');
59
- if (!titleAttribute) {
60
- // if no name or title, take the first attribute
61
- titleAttribute = attrDef[0];
62
- }
63
- return titleAttribute?.name ?? null;
64
- }
65
- static getAttributeDef(classType) {
66
- if (!classType)
67
- return null;
68
- const attrDefByFn = classType.getAttributeTypeMap?.();
69
- if (attrDefByFn)
70
- return attrDefByFn;
71
- const attrDefByProp = classType.attributeTypeMap;
72
- if (attrDefByProp)
73
- return attrDefByProp;
74
- const attrByObjSer = TypeRegistry.get().findAttributesDefinitionByClassType(classType);
75
- if (attrByObjSer)
76
- return attrByObjSer;
34
+ function findClassIdAttribute(classType) {
35
+ if (!classType)
36
+ return null;
37
+ const attrDef = getClassAttributeDef(classType);
38
+ if (!attrDef) {
77
39
  return null;
78
40
  }
79
- static findAttributeByTypeAndName(attributes, types, ...names) {
80
- for (const name of names) {
81
- const attribute = attributes.find(a => types.some(t => t === a.type) && a.name === name);
82
- if (attribute) {
83
- return attribute;
84
- }
85
- }
41
+ let idAttribute = findAttributeByTypeAndName(attrDef, ['string', 'number'], 'id', 'uuid', 'code', 'sifra');
42
+ if (!idAttribute) {
43
+ // if no id or code, take the first attribute
44
+ idAttribute = attrDef[0];
45
+ }
46
+ return idAttribute?.name ?? null;
47
+ }
48
+ function findClassTitleAttribute(classType) {
49
+ if (!classType)
50
+ return null;
51
+ const attrDef = getClassAttributeDef(classType);
52
+ if (!attrDef) {
86
53
  return null;
87
54
  }
88
- static trySetLookupItemsProperties(lookup, idAsTrack = true) {
89
- if (lookup.dataProvider.classType) {
90
- if (!lookup.optionsValueProperty && !lookup.optionsTrackProperty) {
91
- const idProperty = ModelUtil.findIdAttribute(lookup.dataProvider.classType) ?? undefined;
92
- if (idProperty && !lookup.optionsValueProperty && !lookup.optionsTrackProperty) {
93
- if (idAsTrack) {
94
- lookup.withOptionsTrackPropertyUnsafe(idProperty);
95
- }
55
+ let titleAttribute = findAttributeByTypeAndName(attrDef, ['string'], 'name', 'ime', 'title', 'naziv');
56
+ if (!titleAttribute) {
57
+ // if no name or title, take the first attribute
58
+ titleAttribute = attrDef[0];
59
+ }
60
+ return titleAttribute?.name ?? null;
61
+ }
62
+ function getClassAttributeDef(classType) {
63
+ if (!classType)
64
+ return null;
65
+ const attrDefByFn = classType.getAttributeTypeMap?.();
66
+ if (attrDefByFn)
67
+ return attrDefByFn;
68
+ const attrDefByProp = classType.attributeTypeMap;
69
+ if (attrDefByProp)
70
+ return attrDefByProp;
71
+ const attrByObjSer = TypeRegistry.get().findAttributesDefinitionByClassType(classType);
72
+ if (attrByObjSer)
73
+ return attrByObjSer;
74
+ return null;
75
+ }
76
+ function findAttributeByTypeAndName(attributes, types, ...names) {
77
+ for (const name of names) {
78
+ const attribute = attributes.find(a => types.some(t => t === a.type) && a.name === name);
79
+ if (attribute) {
80
+ return attribute;
81
+ }
82
+ }
83
+ return null;
84
+ }
85
+ function trySetLookupItemsProperties(lookup, idAsTrack = true) {
86
+ if (lookup.dataProvider.classType) {
87
+ if (!lookup.optionsValueProperty && !lookup.optionsTrackProperty) {
88
+ const idProperty = findClassIdAttribute(lookup.dataProvider.classType) ?? undefined;
89
+ if (idProperty && !lookup.optionsValueProperty && !lookup.optionsTrackProperty) {
90
+ if (idAsTrack) {
91
+ lookup.withOptionsTrackPropertyUnsafe(idProperty);
96
92
  }
97
93
  }
98
- if (!lookup.optionsLabelProperty) {
99
- const labelProperty = ModelUtil.findTitleAttribute(lookup.dataProvider.classType);
100
- if (labelProperty) {
101
- lookup.withOptionsLabelPropertyUnsafe(labelProperty);
102
- }
94
+ }
95
+ if (!lookup.optionsLabelProperty) {
96
+ const labelProperty = findClassTitleAttribute(lookup.dataProvider.classType);
97
+ if (labelProperty) {
98
+ lookup.withOptionsLabelPropertyUnsafe(labelProperty);
103
99
  }
104
100
  }
105
101
  }
@@ -112,10 +108,10 @@ class ModelDescriptor {
112
108
  this._idProperty = idProperty;
113
109
  this._titleProperty = titleProperty;
114
110
  if (!this._idProperty && type) {
115
- this._idProperty = ModelUtil.findIdAttribute(type) ?? undefined;
111
+ this._idProperty = findClassIdAttribute(type) ?? undefined;
116
112
  }
117
113
  if (!this._titleProperty && type) {
118
- this._titleProperty = ModelUtil.findTitleAttribute(type) ?? undefined;
114
+ this._titleProperty = findClassTitleAttribute(type) ?? undefined;
119
115
  }
120
116
  this._i18nBaseKey = (typeof i18nBaseKey === 'string' || typeof i18nBaseKey === 'undefined' ? i18nBaseKey : findReflectTypeName(i18nBaseKey)) ?? this._typeName ?? '';
121
117
  }
@@ -202,93 +198,48 @@ function typeClass(type) {
202
198
  return TypeDescriptor.fromClass(type);
203
199
  }
204
200
 
205
- class EnumPipe {
206
- transform(value, enumDesc, i18nPath) {
207
- if (!value || (typeof value !== 'number' && typeof value !== 'string')) {
208
- return value;
201
+ function getI18nForModel(translate, model, keyPath, customKey, item, fallbackKey, params) {
202
+ const keys = getKeysByPriority(model, keyPath, customKey, fallbackKey);
203
+ const i18nParams = getI18nModelParams(translate, model, item, params);
204
+ return getI18n(translate, i18nParams, ...keys);
205
+ }
206
+ function getI18nModelName(translate, model, singular) {
207
+ return getI18nTypeName(translate, model.i18nBaseKey, singular);
208
+ }
209
+ function getI18nModelNameAsync(translate, model, singular) {
210
+ return getI18nTypeNameAsync(translate, model.i18nBaseKey, singular);
211
+ }
212
+ function getI18nModelParams(translate, model, item, params = {}) {
213
+ const i18nParams = getI18nTypeParams(translate, model?.i18nBaseKey, item, params);
214
+ return populateI18nModelParams(model?.idProperty, model?.titleProperty, item, i18nParams);
215
+ }
216
+ function getI18nModelParamsAsync(translate, model, item, params = {}) {
217
+ return getI18nTypeParamsAsync(translate, model?.i18nBaseKey, item, params).pipe(map(i18nParams => populateI18nModelParams(model?.idProperty, model?.titleProperty, item, i18nParams)));
218
+ }
219
+ function populateI18nModelParams(idProperty, titleProperty, item, params = {}) {
220
+ const paramsRes = { ...params, itemId: '', itemTitle: '' };
221
+ if (item) {
222
+ if (idProperty && item[idProperty]) {
223
+ paramsRes.itemId = item[idProperty];
209
224
  }
210
- const enumConstantName = !enumDesc || enumDesc.nameAsValue ? value : EnumUtil.getConstantNameFromEnumObject(enumDesc.type, value) ?? value;
211
- if (typeof i18nPath === 'undefined' && enumDesc) {
212
- i18nPath = enumDesc.i18nBaseKey === undefined ? findReflectEnumName(enumDesc.type) : null;
225
+ if (titleProperty && item[titleProperty]) {
226
+ paramsRes.itemTitle = item[titleProperty];
213
227
  }
214
- return i18nPath ? `${i18nPath}.${enumConstantName}` : enumConstantName;
215
228
  }
216
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: EnumPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
217
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.1", ngImport: i0, type: EnumPipe, isStandalone: true, name: "mngEnum" }); }
229
+ return paramsRes;
218
230
  }
219
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: EnumPipe, decorators: [{
220
- type: Pipe,
221
- args: [{
222
- standalone: true,
223
- name: 'mngEnum',
224
- pure: true
225
- }]
226
- }] });
227
-
228
- class I18nPropertyPipe {
229
- transform(property, model) {
230
- return I18nUtils$1.Type.getPropertyKey(model.i18nBaseKey, property);
231
+ function getKeysByPriority(model, keyPath, customKey, fallbackKey) {
232
+ const keys = [];
233
+ if (customKey) {
234
+ keys.push(customKey);
231
235
  }
232
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: I18nPropertyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
233
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.1", ngImport: i0, type: I18nPropertyPipe, isStandalone: true, name: "mngI18nProperty" }); }
234
- }
235
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: I18nPropertyPipe, decorators: [{
236
- type: Pipe,
237
- args: [{
238
- standalone: true,
239
- name: 'mngI18nProperty',
240
- pure: true
241
- }]
242
- }] });
243
-
244
- var I18nUtils;
245
- (function (I18nUtils) {
246
- class Model {
247
- static get(translate, model, keyPath, customKey, item, fallbackKey, params) {
248
- const keys = I18nUtils.Model.getKeysByPriority(model, keyPath, customKey, fallbackKey);
249
- const i18nParams = I18nUtils.Model.getParams(translate, model, item, params);
250
- return I18nUtils$1.Common.get(translate, i18nParams, ...keys);
251
- }
252
- static getName(translate, model, singular) {
253
- return I18nUtils$1.Type.getName(translate, model.i18nBaseKey, singular);
254
- }
255
- static getNameAsync(translate, model, singular) {
256
- return I18nUtils$1.Type.getNameAsync(translate, model.i18nBaseKey, singular);
257
- }
258
- static getParams(translate, model, item, params = {}) {
259
- const i18nParams = I18nUtils$1.Type.getParams(translate, model?.i18nBaseKey, item, params);
260
- return I18nUtils.Model.populateParams(model?.idProperty, model?.titleProperty, item, i18nParams);
261
- }
262
- static getParamsAsync(translate, model, item, params = {}) {
263
- return I18nUtils$1.Type.getParamsAsync(translate, model?.i18nBaseKey, item, params).pipe(map(i18nParams => I18nUtils.Model.populateParams(model?.idProperty, model?.titleProperty, item, i18nParams)));
264
- }
265
- static populateParams(idProperty, titleProperty, item, params = {}) {
266
- const paramsRes = { ...params, itemId: '', itemTitle: '' };
267
- if (item) {
268
- if (idProperty && item[idProperty]) {
269
- paramsRes.itemId = item[idProperty];
270
- }
271
- if (titleProperty && item[titleProperty]) {
272
- paramsRes.itemTitle = item[titleProperty];
273
- }
274
- }
275
- return paramsRes;
276
- }
277
- static getKeysByPriority(model, keyPath, customKey, fallbackKey) {
278
- const keys = [];
279
- if (customKey) {
280
- keys.push(customKey);
281
- }
282
- const modelActionKey = I18nUtils$1.Type.getPath(model.i18nBaseKey, ...keyPath);
283
- keys.push(modelActionKey);
284
- if (fallbackKey) {
285
- keys.push(fallbackKey);
286
- }
287
- return keys;
288
- }
236
+ const modelActionKey = getI18nTypeKeyBasePath(model.i18nBaseKey, ...keyPath);
237
+ keys.push(modelActionKey);
238
+ if (fallbackKey) {
239
+ keys.push(fallbackKey);
289
240
  }
290
- I18nUtils.Model = Model;
291
- })(I18nUtils || (I18nUtils = {}));
241
+ return keys;
242
+ }
292
243
 
293
244
  // descriptors
294
245
 
@@ -296,5 +247,5 @@ var I18nUtils;
296
247
  * Generated bundle index. Do not edit.
297
248
  */
298
249
 
299
- export { EnumDescriptor, EnumPipe, I18nPropertyPipe, I18nUtils, ModelDescriptor, ModelUtil, TypeDescriptor, enumModel, enumModelGeneric, model, modelFromClass, modelFromType, type, typeClass };
250
+ export { EnumDescriptor, ModelDescriptor, TypeDescriptor, enumModel, enumModelGeneric, findClassIdAttribute, findClassTitleAttribute, getClassAttributeDef, getI18nForModel, getI18nModelName, getI18nModelNameAsync, getI18nModelParams, getI18nModelParamsAsync, model, modelFromClass, modelFromType, populateI18nModelParams, trySetLookupItemsProperties, type, typeClass };
300
251
  //# sourceMappingURL=mediusinc-mng-commons-model.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"mediusinc-mng-commons-model.mjs","sources":["../../model/src/descriptors/enum.descriptor.ts","../../model/src/utils/model.util.ts","../../model/src/descriptors/model.descriptor.ts","../../model/src/descriptors/type.descriptor.ts","../../model/src/pipes/enum.pipe.ts","../../model/src/pipes/i18n-property.pipe.ts","../../model/src/utils/i18n.util.ts","../../model/src/index.ts","../../model/src/mediusinc-mng-commons-model.ts"],"sourcesContent":["import {EnumType, findReflectEnumName} from '@mediusinc/mng-commons/core';\n\nexport class EnumDescriptor<Enum> {\n private readonly _value: Enum;\n private readonly _type: EnumType;\n private readonly _nameAsValue;\n private readonly _i18nBaseKey: string | null;\n\n protected constructor(value: Enum, type: EnumType, i18nBaseKey?: string | null, nameAsValue = false) {\n this._value = value;\n this._type = type;\n this._nameAsValue = nameAsValue;\n\n if (typeof i18nBaseKey === 'undefined') {\n i18nBaseKey = findReflectEnumName(type);\n }\n this._i18nBaseKey = i18nBaseKey;\n }\n\n public get type() {\n return this._type;\n }\n\n public get i18nBaseKey() {\n return this._i18nBaseKey;\n }\n\n public get nameAsValue() {\n return this._nameAsValue;\n }\n\n public static create<Enum>(value: Enum, type: EnumType, i18nBaseKey: string | undefined | null = null, nameAsValue = false) {\n return new EnumDescriptor<Enum>(value, type, i18nBaseKey, nameAsValue);\n }\n}\n\nexport function enumModel<Enum>(value: Enum, type: EnumType, i18nBaseKey: string | undefined | null = null, nameAsValue = false) {\n return EnumDescriptor.create<Enum>(value, type, i18nBaseKey, nameAsValue);\n}\n\nexport function enumModelGeneric(type: EnumType, i18nBaseKey: string | undefined | null = null, nameAsValue = false) {\n return EnumDescriptor.create<any>(undefined, type, i18nBaseKey, nameAsValue);\n}\n","import {ClassAttributeDef, ClassType, ILookupDescriptor, TypeRegistry} from '@mediusinc/mng-commons/core';\n\nexport class ModelUtil {\n public static findIdAttribute<T>(classType?: ClassType<T>): string | null {\n if (!classType) return null;\n\n const attrDef = ModelUtil.getAttributeDef(classType);\n if (!attrDef) {\n return null;\n }\n\n let idAttribute = ModelUtil.findAttributeByTypeAndName(attrDef, ['string', 'number'], 'id', 'uuid', 'code', 'sifra');\n if (!idAttribute) {\n // if no id or code, take the first attribute\n idAttribute = attrDef[0];\n }\n\n return idAttribute?.name ?? null;\n }\n\n public static findTitleAttribute<T>(classType?: ClassType<T>): string | null {\n if (!classType) return null;\n\n const attrDef = ModelUtil.getAttributeDef(classType);\n if (!attrDef) {\n return null;\n }\n\n let titleAttribute = ModelUtil.findAttributeByTypeAndName(attrDef, ['string'], 'name', 'ime', 'title', 'naziv');\n if (!titleAttribute) {\n // if no name or title, take the first attribute\n titleAttribute = attrDef[0];\n }\n\n return titleAttribute?.name ?? null;\n }\n\n public static getAttributeDef<T>(classType?: ClassType<T>) {\n if (!classType) return null;\n const attrDefByFn = (classType as any).getAttributeTypeMap?.() as Array<ClassAttributeDef> | undefined;\n if (attrDefByFn) return attrDefByFn;\n const attrDefByProp = (classType as any).attributeTypeMap as Array<ClassAttributeDef> | undefined;\n if (attrDefByProp) return attrDefByProp;\n const attrByObjSer = TypeRegistry.get().findAttributesDefinitionByClassType(classType);\n if (attrByObjSer) return attrByObjSer;\n return null;\n }\n\n private static findAttributeByTypeAndName(attributes: ClassAttributeDef[], types: string[], ...names: string[]): ClassAttributeDef | null {\n for (const name of names) {\n const attribute = attributes.find(a => types.some(t => t === a.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>, idAsTrack = true) {\n if (lookup.dataProvider.classType) {\n if (!lookup.optionsValueProperty && !lookup.optionsTrackProperty) {\n const idProperty = ModelUtil.findIdAttribute(lookup.dataProvider.classType) ?? undefined;\n if (idProperty && !lookup.optionsValueProperty && !lookup.optionsTrackProperty) {\n if (idAsTrack) {\n lookup.withOptionsTrackPropertyUnsafe(idProperty);\n }\n }\n }\n if (!lookup.optionsLabelProperty) {\n const labelProperty = ModelUtil.findTitleAttribute(lookup.dataProvider.classType);\n if (labelProperty) {\n lookup.withOptionsLabelPropertyUnsafe(labelProperty);\n }\n }\n }\n }\n}\n","import {ClassOptType, ClassType, CommonsInternalError, IModelDescriptorInternal, findReflectTypeName} from '@mediusinc/mng-commons/core';\n\nimport {ModelUtil} from '../utils/model.util';\nimport {TypeDescriptor} from './type.descriptor';\n\nexport class ModelDescriptor<Model, ModelClass = ClassOptType<Model>> implements IModelDescriptorInternal<Model, ModelClass> {\n private readonly _type: ModelClass;\n private readonly _typeName?: string;\n private _i18nBaseKey: string;\n private _idProperty?: string;\n private _titleProperty?: string;\n\n protected constructor(type: ModelClass, idProperty?: string, titleProperty?: string, i18nBaseKey?: string | ClassType<any>) {\n this._type = type;\n this._typeName = findReflectTypeName(type as ClassType<Model>) ?? undefined;\n this._idProperty = idProperty;\n this._titleProperty = titleProperty;\n if (!this._idProperty && type) {\n this._idProperty = ModelUtil.findIdAttribute(type as unknown as ClassType<Model>) ?? undefined;\n }\n if (!this._titleProperty && type) {\n this._titleProperty = ModelUtil.findTitleAttribute(type as unknown as ClassType<Model>) ?? undefined;\n }\n this._i18nBaseKey = (typeof i18nBaseKey === 'string' || typeof i18nBaseKey === 'undefined' ? i18nBaseKey : findReflectTypeName(i18nBaseKey)) ?? this._typeName ?? '';\n }\n\n public static create<Model>(idProperty?: keyof Model, titleProperty?: keyof Model, i18nBaseKey?: string | ClassType<unknown>): ModelDescriptor<Model, undefined> {\n return new ModelDescriptor(undefined, idProperty as string, titleProperty as string, i18nBaseKey);\n }\n\n public static fromClass<Model>(\n type: ClassType<Model>,\n idProperty?: keyof Model,\n titleProperty?: keyof Model,\n i18nBaseKey?: string | ClassType<unknown>\n ): ModelDescriptor<Model, ClassType<Model>> {\n return new ModelDescriptor(type, idProperty as string, titleProperty as string, i18nBaseKey);\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 idProperty() {\n return this._idProperty;\n }\n\n public get titleProperty() {\n return this._titleProperty;\n }\n\n public withIdProperty(property: keyof Model): this {\n this._idProperty = property as string;\n return this;\n }\n\n public withIdPropertyUnsafe(property: string): this {\n this._idProperty = property;\n return this;\n }\n\n public withTitleProperty(property: keyof Model): this {\n this._titleProperty = property as string;\n return this;\n }\n\n public withTitlePropertyUnsafe(property: string): this {\n this._titleProperty = property;\n return this;\n }\n\n public withI18nBase(base: ClassType<any> | string): this {\n if (typeof base !== 'string') {\n const typeName = findReflectTypeName(base);\n if (!typeName) {\n throw new CommonsInternalError(`Could not find define i18nBaseKey for ${base} on model ${this.typeName}`);\n }\n base = typeName;\n }\n this._i18nBaseKey = base;\n return this;\n }\n\n public copy(): ModelDescriptor<Model, ModelClass> {\n return new ModelDescriptor<Model, ModelClass>(this._type, this._idProperty, this._titleProperty, this._i18nBaseKey);\n }\n}\n\nexport type ModelDescriptorCreateOpts<Model> = {\n id?: keyof Model;\n title?: keyof Model;\n i18nBase?: string | ClassType<any>;\n};\n\nexport function modelFromClass<Model>(type: ClassType<Model>, opts?: ModelDescriptorCreateOpts<Model>): ModelDescriptor<Model, ClassType<Model>> {\n return ModelDescriptor.fromClass(type, opts?.id, opts?.title, opts?.i18nBase);\n}\n\nexport function modelFromType<Model>(type: TypeDescriptor<Model>, opts?: ModelDescriptorCreateOpts<Model>): ModelDescriptor<Model, undefined> {\n return ModelDescriptor.create<Model>(opts?.id, opts?.title, opts?.i18nBase);\n}\n\nexport function model<Model>(opts?: ModelDescriptorCreateOpts<Model>): ModelDescriptor<Model, undefined> {\n return ModelDescriptor.create<Model>(opts?.id, opts?.title, opts?.i18nBase);\n}\n","import {ClassType} from '@mediusinc/mng-commons/core';\n\nexport class TypeDescriptor<Type> {\n private readonly _classType?: ClassType<Type>;\n\n protected constructor(classType?: ClassType<Type>) {\n this._classType = classType;\n }\n\n public static create<Type>() {\n return new TypeDescriptor<Type>();\n }\n\n public static fromClass<Type>(type: ClassType<Type>) {\n return new TypeDescriptor<Type>(type);\n }\n\n public get classType() {\n return this._classType;\n }\n}\n\nexport function type<Type>(): TypeDescriptor<Type> {\n return TypeDescriptor.create<Type>();\n}\n\nexport function typeClass<TypeClass>(type: ClassType<TypeClass>): TypeDescriptor<TypeClass> {\n return TypeDescriptor.fromClass(type);\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nimport {EnumType, EnumUtil, findReflectEnumName} from '@mediusinc/mng-commons/core';\n\nimport {EnumDescriptor} from '../descriptors/enum.descriptor';\n\n@Pipe({\n standalone: true,\n name: 'mngEnum',\n pure: true\n})\nexport class EnumPipe implements PipeTransform {\n transform(value: unknown, enumDesc?: EnumDescriptor<any>, i18nPath?: string | null): any {\n if (!value || (typeof value !== 'number' && typeof value !== 'string')) {\n return value;\n }\n const enumConstantName = !enumDesc || enumDesc.nameAsValue ? value : EnumUtil.getConstantNameFromEnumObject(enumDesc.type, value) ?? value;\n if (typeof i18nPath === 'undefined' && enumDesc) {\n i18nPath = enumDesc.i18nBaseKey === undefined ? findReflectEnumName(enumDesc.type as EnumType) : null;\n }\n return i18nPath ? `${i18nPath}.${enumConstantName}` : enumConstantName;\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nimport {I18nUtils} from '@mediusinc/mng-commons/core';\n\nimport {ModelDescriptor} from '../descriptors/model.descriptor';\n\n@Pipe({\n standalone: true,\n name: 'mngI18nProperty',\n pure: true\n})\nexport class I18nPropertyPipe implements PipeTransform {\n transform(property: string, model: ModelDescriptor<any>): any {\n return I18nUtils.Type.getPropertyKey(model.i18nBaseKey, property);\n }\n}\n","import {TranslateService} from '@ngx-translate/core';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {I18nUtils as CoreI18nUtils, KeyOfType} from '@mediusinc/mng-commons/core';\n\nimport {ModelDescriptor} from '../descriptors/model.descriptor';\n\nexport namespace I18nUtils {\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 CoreI18nUtils.Common.get(translate, i18nParams, ...keys);\n }\n\n public static getName(translate: TranslateService, model: ModelDescriptor<any>, singular?: boolean): string | null {\n return CoreI18nUtils.Type.getName(translate, model.i18nBaseKey, singular);\n }\n\n public static getNameAsync(translate: TranslateService, model: ModelDescriptor<any>, singular?: boolean): Observable<string | null> {\n return CoreI18nUtils.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 = CoreI18nUtils.Type.getParams(translate, model?.i18nBaseKey, item, params);\n return I18nUtils.Model.populateParams(model?.idProperty, model?.titleProperty, item, i18nParams);\n }\n\n public static getParamsAsync(translate: TranslateService, model?: ModelDescriptor<any>, item?: any, params: any = {}): Observable<any> {\n return CoreI18nUtils.Type.getParamsAsync(translate, model?.i18nBaseKey, item, params).pipe(\n map(i18nParams => I18nUtils.Model.populateParams(model?.idProperty, model?.titleProperty, item, i18nParams))\n );\n }\n\n public static populateParams(idProperty?: KeyOfType, titleProperty?: KeyOfType, 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 = CoreI18nUtils.Type.getPath(model.i18nBaseKey, ...keyPath);\n keys.push(modelActionKey);\n if (fallbackKey) {\n keys.push(fallbackKey);\n }\n return keys;\n }\n }\n}\n","// descriptors\nexport * from './descriptors/enum.descriptor';\nexport * from './descriptors/model.descriptor';\nexport * from './descriptors/type.descriptor';\n\n// pipes\nexport * from './pipes/enum.pipe';\nexport * from './pipes/i18n-property.pipe';\n\n// utils\nexport * from './utils/i18n.util';\nexport * from './utils/model.util';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["I18nUtils","CoreI18nUtils"],"mappings":"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"}
1
+ {"version":3,"file":"mediusinc-mng-commons-model.mjs","sources":["../../model/src/descriptors/enum.descriptor.ts","../../model/src/helpers/model.ts","../../model/src/descriptors/model.descriptor.ts","../../model/src/descriptors/type.descriptor.ts","../../model/src/helpers/i18n.ts","../../model/src/index.ts","../../model/src/mediusinc-mng-commons-model.ts"],"sourcesContent":["import {EnumType, findReflectEnumName} from '@mediusinc/mng-commons/core';\n\nexport class EnumDescriptor<Enum> {\n private readonly _value: Enum;\n private readonly _type: EnumType;\n private readonly _nameAsValue;\n private readonly _i18nBaseKey: string | null;\n\n protected constructor(value: Enum, type: EnumType, i18nBaseKey?: string | null, nameAsValue = false) {\n this._value = value;\n this._type = type;\n this._nameAsValue = nameAsValue;\n\n if (typeof i18nBaseKey === 'undefined') {\n i18nBaseKey = findReflectEnumName(type);\n }\n this._i18nBaseKey = i18nBaseKey;\n }\n\n public get type() {\n return this._type;\n }\n\n public get i18nBaseKey() {\n return this._i18nBaseKey;\n }\n\n public get nameAsValue() {\n return this._nameAsValue;\n }\n\n public static create<Enum>(value: Enum, type: EnumType, i18nBaseKey: string | undefined | null = null, nameAsValue = false) {\n return new EnumDescriptor<Enum>(value, type, i18nBaseKey, nameAsValue);\n }\n}\n\nexport function enumModel<Enum>(value: Enum, type: EnumType, i18nBaseKey: string | undefined | null = null, nameAsValue = false) {\n return EnumDescriptor.create<Enum>(value, type, i18nBaseKey, nameAsValue);\n}\n\nexport function enumModelGeneric(type: EnumType, i18nBaseKey: string | undefined | null = null, nameAsValue = false) {\n return EnumDescriptor.create<any>(undefined, type, i18nBaseKey, nameAsValue);\n}\n","import {ClassAttributeDef, ClassType, ILookupDescriptor, TypeRegistry} from '@mediusinc/mng-commons/core';\n\nexport function findClassIdAttribute<T>(classType?: ClassType<T>): string | null {\n if (!classType) return null;\n\n const attrDef = getClassAttributeDef(classType);\n if (!attrDef) {\n return null;\n }\n\n let idAttribute = findAttributeByTypeAndName(attrDef, ['string', 'number'], 'id', 'uuid', 'code', 'sifra');\n if (!idAttribute) {\n // if no id or code, take the first attribute\n idAttribute = attrDef[0];\n }\n\n return idAttribute?.name ?? null;\n}\n\nexport function findClassTitleAttribute<T>(classType?: ClassType<T>): string | null {\n if (!classType) return null;\n\n const attrDef = getClassAttributeDef(classType);\n if (!attrDef) {\n return null;\n }\n\n let titleAttribute = findAttributeByTypeAndName(attrDef, ['string'], 'name', 'ime', 'title', 'naziv');\n if (!titleAttribute) {\n // if no name or title, take the first attribute\n titleAttribute = attrDef[0];\n }\n\n return titleAttribute?.name ?? null;\n}\n\nexport function getClassAttributeDef<T>(classType?: ClassType<T>) {\n if (!classType) return null;\n const attrDefByFn = (classType as any).getAttributeTypeMap?.() as Array<ClassAttributeDef> | undefined;\n if (attrDefByFn) return attrDefByFn;\n const attrDefByProp = (classType as any).attributeTypeMap as Array<ClassAttributeDef> | undefined;\n if (attrDefByProp) return attrDefByProp;\n const attrByObjSer = TypeRegistry.get().findAttributesDefinitionByClassType(classType);\n if (attrByObjSer) return attrByObjSer;\n return null;\n}\n\nfunction findAttributeByTypeAndName(attributes: ClassAttributeDef[], types: string[], ...names: string[]): ClassAttributeDef | null {\n for (const name of names) {\n const attribute = attributes.find(a => types.some(t => t === a.type) && a.name === name);\n if (attribute) {\n return attribute;\n }\n }\n return null;\n}\n\nexport function trySetLookupItemsProperties<T>(lookup: ILookupDescriptor<T>, idAsTrack = true) {\n if (lookup.dataProvider.classType) {\n if (!lookup.optionsValueProperty && !lookup.optionsTrackProperty) {\n const idProperty = findClassIdAttribute(lookup.dataProvider.classType) ?? undefined;\n if (idProperty && !lookup.optionsValueProperty && !lookup.optionsTrackProperty) {\n if (idAsTrack) {\n lookup.withOptionsTrackPropertyUnsafe(idProperty);\n }\n }\n }\n if (!lookup.optionsLabelProperty) {\n const labelProperty = findClassTitleAttribute(lookup.dataProvider.classType);\n if (labelProperty) {\n lookup.withOptionsLabelPropertyUnsafe(labelProperty);\n }\n }\n }\n}\n","import {ClassOptType, ClassType, CommonsInternalError, IModelDescriptor, findReflectTypeName} from '@mediusinc/mng-commons/core';\n\nimport {findClassIdAttribute, findClassTitleAttribute} from '../helpers/model';\nimport {TypeDescriptor} from './type.descriptor';\n\nexport class ModelDescriptor<Model, ModelClass = ClassOptType<Model>> implements IModelDescriptor<Model, ModelClass> {\n private readonly _type: ModelClass;\n private readonly _typeName?: string;\n private _i18nBaseKey: string;\n private _idProperty?: string;\n private _titleProperty?: string;\n\n protected constructor(type: ModelClass, idProperty?: string, titleProperty?: string, i18nBaseKey?: string | ClassType<any>) {\n this._type = type;\n this._typeName = findReflectTypeName(type as ClassType<Model>) ?? undefined;\n this._idProperty = idProperty;\n this._titleProperty = titleProperty;\n if (!this._idProperty && type) {\n this._idProperty = findClassIdAttribute(type as unknown as ClassType<Model>) ?? undefined;\n }\n if (!this._titleProperty && type) {\n this._titleProperty = findClassTitleAttribute(type as unknown as ClassType<Model>) ?? undefined;\n }\n this._i18nBaseKey = (typeof i18nBaseKey === 'string' || typeof i18nBaseKey === 'undefined' ? i18nBaseKey : findReflectTypeName(i18nBaseKey)) ?? this._typeName ?? '';\n }\n\n public static create<Model>(idProperty?: keyof Model, titleProperty?: keyof Model, i18nBaseKey?: string | ClassType<unknown>): ModelDescriptor<Model, undefined> {\n return new ModelDescriptor(undefined, idProperty as string, titleProperty as string, i18nBaseKey);\n }\n\n public static fromClass<Model>(\n type: ClassType<Model>,\n idProperty?: keyof Model,\n titleProperty?: keyof Model,\n i18nBaseKey?: string | ClassType<unknown>\n ): ModelDescriptor<Model, ClassType<Model>> {\n return new ModelDescriptor(type, idProperty as string, titleProperty as string, i18nBaseKey);\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 idProperty() {\n return this._idProperty;\n }\n\n public get titleProperty() {\n return this._titleProperty;\n }\n\n public withIdProperty(property: keyof Model): this {\n this._idProperty = property as string;\n return this;\n }\n\n public withIdPropertyUnsafe(property: string): this {\n this._idProperty = property;\n return this;\n }\n\n public withTitleProperty(property: keyof Model): this {\n this._titleProperty = property as string;\n return this;\n }\n\n public withTitlePropertyUnsafe(property: string): this {\n this._titleProperty = property;\n return this;\n }\n\n public withI18nBase(base: ClassType<any> | string): this {\n if (typeof base !== 'string') {\n const typeName = findReflectTypeName(base);\n if (!typeName) {\n throw new CommonsInternalError(`Could not find define i18nBaseKey for ${base} on model ${this.typeName}`);\n }\n base = typeName;\n }\n this._i18nBaseKey = base;\n return this;\n }\n\n public copy(): ModelDescriptor<Model, ModelClass> {\n return new ModelDescriptor<Model, ModelClass>(this._type, this._idProperty, this._titleProperty, this._i18nBaseKey);\n }\n}\n\nexport type ModelDescriptorCreateOpts<Model> = {\n id?: keyof Model;\n title?: keyof Model;\n i18nBase?: string | ClassType<any>;\n};\n\nexport function modelFromClass<Model>(type: ClassType<Model>, opts?: ModelDescriptorCreateOpts<Model>): ModelDescriptor<Model, ClassType<Model>> {\n return ModelDescriptor.fromClass(type, opts?.id, opts?.title, opts?.i18nBase);\n}\n\nexport function modelFromType<Model>(type: TypeDescriptor<Model>, opts?: ModelDescriptorCreateOpts<Model>): ModelDescriptor<Model, undefined> {\n return ModelDescriptor.create<Model>(opts?.id, opts?.title, opts?.i18nBase);\n}\n\nexport function model<Model>(opts?: ModelDescriptorCreateOpts<Model>): ModelDescriptor<Model, undefined> {\n return ModelDescriptor.create<Model>(opts?.id, opts?.title, opts?.i18nBase);\n}\n","import {ClassType} from '@mediusinc/mng-commons/core';\n\nexport class TypeDescriptor<Type> {\n private readonly _classType?: ClassType<Type>;\n\n protected constructor(classType?: ClassType<Type>) {\n this._classType = classType;\n }\n\n public static create<Type>() {\n return new TypeDescriptor<Type>();\n }\n\n public static fromClass<Type>(type: ClassType<Type>) {\n return new TypeDescriptor<Type>(type);\n }\n\n public get classType() {\n return this._classType;\n }\n}\n\nexport function type<Type>(): TypeDescriptor<Type> {\n return TypeDescriptor.create<Type>();\n}\n\nexport function typeClass<TypeClass>(type: ClassType<TypeClass>): TypeDescriptor<TypeClass> {\n return TypeDescriptor.fromClass(type);\n}\n","import {TranslateService} from '@ngx-translate/core';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {KeyOfType, getI18n, getI18nTypeKeyBasePath, getI18nTypeName, getI18nTypeNameAsync, getI18nTypeParams, getI18nTypeParamsAsync} from '@mediusinc/mng-commons/core';\n\nimport {ModelDescriptor} from '../descriptors/model.descriptor';\n\nexport function getI18nForModel(\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 = getKeysByPriority(model, keyPath, customKey, fallbackKey);\n const i18nParams = getI18nModelParams(translate, model, item, params);\n return getI18n(translate, i18nParams, ...keys);\n}\n\nexport function getI18nModelName(translate: TranslateService, model: ModelDescriptor<any>, singular?: boolean): string | null {\n return getI18nTypeName(translate, model.i18nBaseKey, singular);\n}\n\nexport function getI18nModelNameAsync(translate: TranslateService, model: ModelDescriptor<any>, singular?: boolean): Observable<string | null> {\n return getI18nTypeNameAsync(translate, model.i18nBaseKey, singular);\n}\n\nexport function getI18nModelParams(translate: TranslateService, model?: ModelDescriptor<any>, item?: any, params: any = {}): any {\n const i18nParams = getI18nTypeParams(translate, model?.i18nBaseKey, item, params);\n return populateI18nModelParams(model?.idProperty, model?.titleProperty, item, i18nParams);\n}\n\nexport function getI18nModelParamsAsync(translate: TranslateService, model?: ModelDescriptor<any>, item?: any, params: any = {}): Observable<any> {\n return getI18nTypeParamsAsync(translate, model?.i18nBaseKey, item, params).pipe(\n map(i18nParams => populateI18nModelParams(model?.idProperty, model?.titleProperty, item, i18nParams))\n );\n}\n\nexport function populateI18nModelParams(idProperty?: KeyOfType, titleProperty?: KeyOfType, 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\nfunction getKeysByPriority(model: ModelDescriptor<any>, keyPath: string, customKey?: string, fallbackKey?: string) {\n const keys = [];\n if (customKey) {\n keys.push(customKey);\n }\n const modelActionKey = getI18nTypeKeyBasePath(model.i18nBaseKey, ...keyPath);\n keys.push(modelActionKey);\n if (fallbackKey) {\n keys.push(fallbackKey);\n }\n return keys;\n}\n","// descriptors\nexport * from './descriptors/enum.descriptor';\nexport * from './descriptors/model.descriptor';\nexport * from './descriptors/type.descriptor';\n\n// helpers\nexport * from './helpers/i18n';\nexport * from './helpers/model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { Subject } from 'rxjs';
2
2
  import { map } from 'rxjs/operators';
3
- import { DataProviderInst, toObservable, TypeRegistry, CommonsInternalError, DateUtil, ObjectUtil } from '@mediusinc/mng-commons/core';
3
+ import { DataProviderInst, toObservable, TypeRegistry, CommonsInternalError, fromAngularDateFormatToPrime, angularDateFormatHasTime, angularDateFormatHasSeconds, flattenObjectKeys } from '@mediusinc/mng-commons/core';
4
4
  import { FilterDescriptor, FilterLookupDescriptor, FilterLookupEnumDescriptor, FilterTypeEnum } from '@mediusinc/mng-commons/filter';
5
- import { enumModelGeneric, ModelUtil, ModelDescriptor } from '@mediusinc/mng-commons/model';
5
+ import { enumModelGeneric, findClassTitleAttribute, ModelDescriptor } from '@mediusinc/mng-commons/model';
6
6
 
7
7
  class TableDataProviderInst extends DataProviderInst {
8
8
  constructor(type, serviceType) {
@@ -628,6 +628,9 @@ class TableDescriptorInst {
628
628
  this._sorts = [];
629
629
  // localization
630
630
  this._isLocalized = false;
631
+ // row expand
632
+ this._rowExpandable = false;
633
+ this._rowExpandableColSpan = 100;
631
634
  this._model = model;
632
635
  this._trackProperty = this._model.idProperty;
633
636
  this._autoGenerated = autoGenerated;
@@ -716,6 +719,18 @@ class TableDescriptorInst {
716
719
  get localizationLocaleProperty() {
717
720
  return this._localizationLocaleProperty;
718
721
  }
722
+ get rowExpandable() {
723
+ return this._rowExpandable;
724
+ }
725
+ get rowExpandableColSpan() {
726
+ return this._rowExpandableColSpan;
727
+ }
728
+ /**
729
+ * This table model property tells us if the specific row should be expandable or not based on row item value
730
+ */
731
+ get rowExpandableProperty() {
732
+ return this._rowExpandableProperty;
733
+ }
719
734
  /**
720
735
  * Track property is used for the purpose of combined saving user preferences in localstorage if 2 tables have the same track properties they will share the same localstorage entry.
721
736
  * 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).
@@ -963,9 +978,9 @@ class TableDescriptorInst {
963
978
  else if (filterType === FilterTypeEnum.Date) {
964
979
  const displayFormat = column.displayFormat;
965
980
  if (displayFormat) {
966
- const filterDisplayFormat = DateUtil.fromAngularToPrimeDateFormat(displayFormat);
967
- const hasTime = DateUtil.fromAngularDateFormatHasTime(displayFormat);
968
- const hasSeconds = DateUtil.fromAngularDateFormatHasSeconds(displayFormat);
981
+ const filterDisplayFormat = fromAngularDateFormatToPrime(displayFormat);
982
+ const hasTime = angularDateFormatHasTime(displayFormat);
983
+ const hasSeconds = angularDateFormatHasSeconds(displayFormat);
969
984
  filterDescriptor.withDateFormat(filterDisplayFormat, hasTime, hasSeconds);
970
985
  }
971
986
  }
@@ -1044,6 +1059,16 @@ class TableDescriptorInst {
1044
1059
  this._localizationLocaleProperty = localizationLocaleProperty;
1045
1060
  return this;
1046
1061
  }
1062
+ withRowExpandable(property, colSpan) {
1063
+ this._rowExpandable = true;
1064
+ if (property) {
1065
+ this._rowExpandableProperty = property;
1066
+ }
1067
+ if (colSpan) {
1068
+ this._rowExpandableColSpan = colSpan;
1069
+ }
1070
+ return this;
1071
+ }
1047
1072
  copyFieldsTo(obj) {
1048
1073
  obj._title = this._title;
1049
1074
  obj._hideHeader = this._hideHeader;
@@ -1064,6 +1089,9 @@ class TableDescriptorInst {
1064
1089
  obj._localizationLocaleProperty = this._localizationLocaleProperty;
1065
1090
  obj._paginationMode = this._paginationMode;
1066
1091
  obj._rowsPerPageOptions = this._rowsPerPageOptions;
1092
+ obj._rowExpandable = this._rowExpandable;
1093
+ obj._rowExpandableColSpan = this._rowExpandableColSpan;
1094
+ obj._rowExpandableProperty = this._rowExpandableProperty;
1067
1095
  }
1068
1096
  copy() {
1069
1097
  const descriptor = new TableDescriptorInst(this.model.copy());
@@ -1149,7 +1177,7 @@ class TableDescriptorInst {
1149
1177
  }
1150
1178
  column = column.asType(attribute.columnType, attribute.columnDisplayType, ...args);
1151
1179
  if (attribute.classType) {
1152
- const titleProperty = ModelUtil.findTitleAttribute(attribute.classType) ?? undefined;
1180
+ const titleProperty = findClassTitleAttribute(attribute.classType) ?? undefined;
1153
1181
  if (titleProperty) {
1154
1182
  column.withGetter(value => value?.[titleProperty]);
1155
1183
  }
@@ -1273,7 +1301,7 @@ class TableDynamicDescriptorInst extends TableDescriptorInst {
1273
1301
  return tableDescriptor;
1274
1302
  }
1275
1303
  const objectModel = data.data[0];
1276
- const entries = ObjectUtil.flattenObjectKeys(objectModel)
1304
+ const entries = flattenObjectKeys(objectModel)
1277
1305
  .filter(([key]) => !this._excludedColumns.includes(key))
1278
1306
  .filter(([, value]) => !Array.isArray(value)); //exclude arrays and sets
1279
1307
  for (const [key, value] of entries) {