@mediusinc/mng-commons 0.0.1-rc.3 → 0.2.1-rc

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 (488) hide show
  1. package/.browserslistrc +16 -0
  2. package/README.md +96 -1
  3. package/assets/i18n/en.json +156 -0
  4. package/assets/i18n/sl.json +156 -0
  5. package/assets/images/effect-ondark.png +0 -0
  6. package/assets/images/effect-ondark.svg +38 -0
  7. package/assets/images/effect-ondark@2x.png +0 -0
  8. package/assets/images/effect-onlight.png +0 -0
  9. package/assets/images/effect-onlight.svg +38 -0
  10. package/assets/images/effect-onlight@2x.png +0 -0
  11. package/assets/images/pages/exception-ondark.png +0 -0
  12. package/assets/images/pages/exception-onlight.png +0 -0
  13. package/assets/images/pages/login-ondark.png +0 -0
  14. package/assets/images/pages/login-onlight.png +0 -0
  15. package/assets/templates/tableview-route.component.html +5 -0
  16. package/karma.conf.js +51 -0
  17. package/ng-package.json +14 -0
  18. package/package.json +3 -24
  19. package/scss/common/layout/_breadcrumb.scss +96 -0
  20. package/scss/common/layout/_config.scss +101 -0
  21. package/scss/common/layout/_dashboard.scss +16 -0
  22. package/scss/common/layout/_exception.scss +131 -0
  23. package/scss/common/layout/_footer.scss +29 -0
  24. package/scss/common/layout/_help.scss +157 -0
  25. package/scss/common/layout/_inlinemenu.scss +55 -0
  26. package/scss/common/layout/_invoice.scss +176 -0
  27. package/scss/common/layout/_landing.scss +639 -0
  28. package/scss/common/layout/_layout_dark.scss +23 -0
  29. package/scss/common/layout/_layout_light.scss +23 -0
  30. package/scss/common/layout/_loader.scss +18 -0
  31. package/scss/common/layout/_login.scss +106 -0
  32. package/scss/common/layout/_main.scss +45 -0
  33. package/scss/common/layout/_mixins.scss +214 -0
  34. package/scss/common/layout/_rightmenu.scss +125 -0
  35. package/scss/common/layout/_topbar.scss +189 -0
  36. package/scss/common/layout/_typography.scss +63 -0
  37. package/scss/common/layout/_utils.scss +96 -0
  38. package/scss/common/layout/_widgets.scss +391 -0
  39. package/scss/common/layout/menu/_menu.scss +7 -0
  40. package/scss/common/layout/menu/_menu_common.scss +183 -0
  41. package/scss/common/layout/menu/_menu_overlay.scss +52 -0
  42. package/scss/common/layout/menu/_menu_sidebar.scss +232 -0
  43. package/scss/common/layout/menu/_menu_slim.scss +138 -0
  44. package/scss/common/layout/menu/_menu_static.scss +70 -0
  45. package/scss/common/layout/menu/_menu_theme.scss +365 -0
  46. package/scss/common/theme/_theme_dark.scss +5 -0
  47. package/scss/common/theme/_theme_light.scss +5 -0
  48. package/scss/common/theme/designer/_colors.scss +18 -0
  49. package/scss/common/theme/designer/_common.scss +40 -0
  50. package/scss/common/theme/designer/_components.scss +101 -0
  51. package/scss/common/theme/designer/_mixins.scss +174 -0
  52. package/scss/common/theme/designer/components/button/_button.scss +560 -0
  53. package/scss/common/theme/designer/components/button/_speeddial.scss +79 -0
  54. package/scss/common/theme/designer/components/button/_splitbutton.scss +1 -0
  55. package/scss/common/theme/designer/components/data/_carousel.scss +37 -0
  56. package/scss/common/theme/designer/components/data/_datatable.scss +266 -0
  57. package/scss/common/theme/designer/components/data/_dataview.scss +55 -0
  58. package/scss/common/theme/designer/components/data/_filter.scss +138 -0
  59. package/scss/common/theme/designer/components/data/_fullcalendar.scss +324 -0
  60. package/scss/common/theme/designer/components/data/_orderlist.scss +91 -0
  61. package/scss/common/theme/designer/components/data/_organizationchart.scss +50 -0
  62. package/scss/common/theme/designer/components/data/_paginator.scss +83 -0
  63. package/scss/common/theme/designer/components/data/_picklist.scss +91 -0
  64. package/scss/common/theme/designer/components/data/_timeline.scss +38 -0
  65. package/scss/common/theme/designer/components/data/_tree.scss +144 -0
  66. package/scss/common/theme/designer/components/data/_treetable.scss +242 -0
  67. package/scss/common/theme/designer/components/data/_virtualscroller.scss +28 -0
  68. package/scss/common/theme/designer/components/file/_fileupload.scss +58 -0
  69. package/scss/common/theme/designer/components/input/_autocomplete.scss +103 -0
  70. package/scss/common/theme/designer/components/input/_calendar.scss +212 -0
  71. package/scss/common/theme/designer/components/input/_cascadeselect.scss +98 -0
  72. package/scss/common/theme/designer/components/input/_checkbox.scss +85 -0
  73. package/scss/common/theme/designer/components/input/_chips.scss +41 -0
  74. package/scss/common/theme/designer/components/input/_colorpicker.scss +19 -0
  75. package/scss/common/theme/designer/components/input/_dropdown.scss +136 -0
  76. package/scss/common/theme/designer/components/input/_editor.scss +122 -0
  77. package/scss/common/theme/designer/components/input/_inputgroup.scss +69 -0
  78. package/scss/common/theme/designer/components/input/_inputmask.scss +3 -0
  79. package/scss/common/theme/designer/components/input/_inputnumber.scss +3 -0
  80. package/scss/common/theme/designer/components/input/_inputswitch.scss +58 -0
  81. package/scss/common/theme/designer/components/input/_inputtext.scss +97 -0
  82. package/scss/common/theme/designer/components/input/_listbox.scss +82 -0
  83. package/scss/common/theme/designer/components/input/_multiselect.scss +164 -0
  84. package/scss/common/theme/designer/components/input/_password.scss +33 -0
  85. package/scss/common/theme/designer/components/input/_radiobutton.scss +78 -0
  86. package/scss/common/theme/designer/components/input/_rating.scss +48 -0
  87. package/scss/common/theme/designer/components/input/_selectbutton.scss +50 -0
  88. package/scss/common/theme/designer/components/input/_slider.scss +69 -0
  89. package/scss/common/theme/designer/components/input/_togglebutton.scss +48 -0
  90. package/scss/common/theme/designer/components/input/_treeselect.scss +89 -0
  91. package/scss/common/theme/designer/components/menu/_breadcrumb.scss +42 -0
  92. package/scss/common/theme/designer/components/menu/_contextmenu.scss +50 -0
  93. package/scss/common/theme/designer/components/menu/_dock.scss +51 -0
  94. package/scss/common/theme/designer/components/menu/_megamenu.scss +102 -0
  95. package/scss/common/theme/designer/components/menu/_menu.scss +41 -0
  96. package/scss/common/theme/designer/components/menu/_menubar.scss +179 -0
  97. package/scss/common/theme/designer/components/menu/_panelmenu.scss +137 -0
  98. package/scss/common/theme/designer/components/menu/_slidemenu.scss +55 -0
  99. package/scss/common/theme/designer/components/menu/_steps.scss +55 -0
  100. package/scss/common/theme/designer/components/menu/_tabmenu.scss +49 -0
  101. package/scss/common/theme/designer/components/menu/_tieredmenu.scss +56 -0
  102. package/scss/common/theme/designer/components/messages/_inlinemessage.scss +64 -0
  103. package/scss/common/theme/designer/components/messages/_message.scss +102 -0
  104. package/scss/common/theme/designer/components/messages/_toast.scss +95 -0
  105. package/scss/common/theme/designer/components/misc/_avatar.scss +30 -0
  106. package/scss/common/theme/designer/components/misc/_badge.scss +48 -0
  107. package/scss/common/theme/designer/components/misc/_blockui.scss +3 -0
  108. package/scss/common/theme/designer/components/misc/_chip.scss +36 -0
  109. package/scss/common/theme/designer/components/misc/_inplace.scss +17 -0
  110. package/scss/common/theme/designer/components/misc/_progressbar.scss +17 -0
  111. package/scss/common/theme/designer/components/misc/_scrolltop.scss +20 -0
  112. package/scss/common/theme/designer/components/misc/_skeleton.scss +8 -0
  113. package/scss/common/theme/designer/components/misc/_tag.scss +33 -0
  114. package/scss/common/theme/designer/components/misc/_terminal.scss +11 -0
  115. package/scss/common/theme/designer/components/multimedia/_galleria.scss +141 -0
  116. package/scss/common/theme/designer/components/overlay/_confirmpopup.scss +67 -0
  117. package/scss/common/theme/designer/components/overlay/_dialog.scss +63 -0
  118. package/scss/common/theme/designer/components/overlay/_overlaypanel.scss +62 -0
  119. package/scss/common/theme/designer/components/overlay/_sidebar.scss +27 -0
  120. package/scss/common/theme/designer/components/overlay/_tooltip.scss +33 -0
  121. package/scss/common/theme/designer/components/panel/_accordion.scss +119 -0
  122. package/scss/common/theme/designer/components/panel/_card.scss +30 -0
  123. package/scss/common/theme/designer/components/panel/_divider.scss +31 -0
  124. package/scss/common/theme/designer/components/panel/_fieldset.scss +47 -0
  125. package/scss/common/theme/designer/components/panel/_panel.scss +42 -0
  126. package/scss/common/theme/designer/components/panel/_scrollpanel.scss +6 -0
  127. package/scss/common/theme/designer/components/panel/_splitter.scss +19 -0
  128. package/scss/common/theme/designer/components/panel/_tabview.scss +66 -0
  129. package/scss/common/theme/designer/components/panel/_toolbar.scss +10 -0
  130. package/scss/common/theme/extensions/_button.scss +99 -0
  131. package/scss/common/theme/extensions/_calendar.scss +18 -0
  132. package/scss/common/theme/extensions/_card.scss +6 -0
  133. package/scss/common/theme/extensions/_carousel.scss +13 -0
  134. package/scss/common/theme/extensions/_checkbox.scss +10 -0
  135. package/scss/common/theme/extensions/_contextmenu.scss +16 -0
  136. package/scss/common/theme/extensions/_datatable.scss +83 -0
  137. package/scss/common/theme/extensions/_dialog.scss +14 -0
  138. package/scss/common/theme/extensions/_fieldset.scss +6 -0
  139. package/scss/common/theme/extensions/_galleria.scss +25 -0
  140. package/scss/common/theme/extensions/_megamenu.scss +18 -0
  141. package/scss/common/theme/extensions/_menu.scss +14 -0
  142. package/scss/common/theme/extensions/_menubar.scss +14 -0
  143. package/scss/common/theme/extensions/_orderlist.scss +38 -0
  144. package/scss/common/theme/extensions/_paginator.scss +19 -0
  145. package/scss/common/theme/extensions/_panelmenu.scss +20 -0
  146. package/scss/common/theme/extensions/_password.scss +5 -0
  147. package/scss/common/theme/extensions/_picklist.scss +38 -0
  148. package/scss/common/theme/extensions/_radiobutton.scss +8 -0
  149. package/scss/common/theme/extensions/_sidebar.scss +19 -0
  150. package/scss/common/theme/extensions/_slidemenu.scss +10 -0
  151. package/scss/common/theme/extensions/_slider.scss +6 -0
  152. package/scss/common/theme/extensions/_steps.scss +50 -0
  153. package/scss/common/theme/extensions/_tieredmenu.scss +14 -0
  154. package/scss/common/theme/extensions/_toast.scss +6 -0
  155. package/scss/common/theme/extensions/_tree.scss +36 -0
  156. package/scss/common/theme/extensions/_treetable.scss +35 -0
  157. package/scss/common/theme/extensions/_vendor_extensions.scss +27 -0
  158. package/scss/common/variables/layout/_common.scss +12 -0
  159. package/scss/common/variables/layout/_layout_dark.scss +71 -0
  160. package/scss/common/variables/layout/_layout_light.scss +71 -0
  161. package/scss/common/variables/theme/_theme_dark.scss +897 -0
  162. package/scss/common/variables/theme/_theme_light.scss +885 -0
  163. package/scss/layout/default/_mng-variables-layout-dark.scss +2 -0
  164. package/scss/layout/default/_mng-variables-layout-light.scss +2 -0
  165. package/scss/layout/default/layout-dark.scss +2 -0
  166. package/scss/layout/default/layout-light.scss +2 -0
  167. package/scss/mng-commons-dark.scss +5 -0
  168. package/scss/mng-commons-light.scss +5 -0
  169. package/scss/mng-overrides/_layout_action.scss +3 -0
  170. package/scss/mng-overrides/_layout_dialog.scss +34 -0
  171. package/scss/mng-overrides/_layout_forms.scss +31 -0
  172. package/scss/mng-overrides/_layout_radio.scss +3 -0
  173. package/scss/mng-overrides/_layout_styles.scss +4 -0
  174. package/scss/mng-overrides/_theme_datatable.scss +9 -0
  175. package/scss/mng-overrides/_theme_dialog.scss +9 -0
  176. package/scss/mng-overrides/_theme_dropdown.scss +6 -0
  177. package/scss/mng-overrides/_theme_styles.scss +9 -0
  178. package/scss/mng-overrides/_theme_tableview.scss +94 -0
  179. package/scss/theme/default/_mng-variables-theme-dark.scss +8 -0
  180. package/scss/theme/default/_mng-variables-theme-light.scss +8 -0
  181. package/scss/theme/default/theme-dark.scss +2 -0
  182. package/scss/theme/default/theme-light.scss +2 -0
  183. package/src/lib/api/models/builders/query-param.builder.ts +54 -0
  184. package/src/lib/api/models/filter-match-type.model.ts +25 -0
  185. package/src/lib/api/models/filter-param.model.ts +59 -0
  186. package/{lib/api/models/index.d.ts → src/lib/api/models/index.ts} +10 -8
  187. package/src/lib/api/models/mappers.ts +18 -0
  188. package/{lib/api/models/query-mode.model.d.ts → src/lib/api/models/query-mode.model.ts} +18 -16
  189. package/src/lib/api/models/query-param.model.ts +99 -0
  190. package/src/lib/api/models/query-result.model.ts +77 -0
  191. package/{lib/api/models/serialization.model.d.ts → src/lib/api/models/serialization.model.ts} +9 -8
  192. package/src/lib/api/services/crud-api.abstract.service.ts +113 -0
  193. package/src/lib/api/services/index.ts +1 -0
  194. package/{lib/api/utils/index.d.ts → src/lib/api/utils/index.ts} +2 -2
  195. package/src/lib/api/utils/medius-rest.util.ts +146 -0
  196. package/src/lib/api/utils/object-serializer.util.ts +227 -0
  197. package/src/lib/components/action/action.component.html +30 -0
  198. package/src/lib/components/action/action.component.ts +77 -0
  199. package/src/lib/components/action/dialog/action-dialog.component.html +26 -0
  200. package/src/lib/components/action/dialog/action-dialog.component.ts +171 -0
  201. package/{lib/components/action/index.d.ts → src/lib/components/action/index.ts} +3 -3
  202. package/src/lib/components/action/models/action-confirmation-service.model.ts +7 -0
  203. package/src/lib/components/action/models/action-execution.model.ts +81 -0
  204. package/src/lib/components/action/models/index.ts +2 -0
  205. package/src/lib/components/action/route/action-route.component.html +1 -0
  206. package/src/lib/components/action/route/action-route.component.ts +159 -0
  207. package/src/lib/components/form/autocomplete/autocomplete.component.html +16 -0
  208. package/src/lib/components/form/autocomplete/autocomplete.component.ts +113 -0
  209. package/src/lib/components/form/dropdown/dropdown.component.html +29 -0
  210. package/src/lib/components/form/dropdown/dropdown.component.ts +109 -0
  211. package/src/lib/components/form/editor/form-editor.component.html +5 -0
  212. package/src/lib/components/form/editor/form-editor.component.ts +149 -0
  213. package/src/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.html +7 -0
  214. package/src/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.ts +21 -0
  215. package/src/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.html +9 -0
  216. package/src/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.ts +22 -0
  217. package/src/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.html +8 -0
  218. package/src/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.ts +10 -0
  219. package/src/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.html +56 -0
  220. package/src/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.ts +22 -0
  221. package/src/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.html +13 -0
  222. package/src/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.scss +4 -0
  223. package/src/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.ts +114 -0
  224. package/src/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.html +37 -0
  225. package/src/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.ts +133 -0
  226. package/src/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.html +10 -0
  227. package/src/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.ts +10 -0
  228. package/{lib/components/form/formly/fields/index.d.ts → src/lib/components/form/formly/fields/index.ts} +7 -7
  229. package/src/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.html +7 -0
  230. package/src/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.ts +13 -0
  231. package/src/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.html +6 -0
  232. package/src/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.ts +13 -0
  233. package/{lib/components/form/formly/wrappers/index.d.ts → src/lib/components/form/formly/wrappers/index.ts} +2 -2
  234. package/src/lib/components/form/index.ts +3 -0
  235. package/src/lib/components/form/models/form-editor.event.ts +7 -0
  236. package/src/lib/components/form/models/index.ts +1 -0
  237. package/src/lib/components/layout/breadcrumb.component.html +5 -0
  238. package/src/lib/components/layout/breadcrumb.component.ts +12 -0
  239. package/src/lib/components/layout/footer.component.html +7 -0
  240. package/src/lib/components/layout/footer.component.ts +15 -0
  241. package/src/lib/components/layout/index.ts +6 -0
  242. package/src/lib/components/layout/main-layout.component.html +26 -0
  243. package/src/lib/components/layout/main-layout.component.ts +54 -0
  244. package/src/lib/components/layout/menu-item.component.html +41 -0
  245. package/src/lib/components/layout/menu-item.component.ts +170 -0
  246. package/src/lib/components/layout/menu.component.html +27 -0
  247. package/src/lib/components/layout/menu.component.ts +17 -0
  248. package/src/lib/components/layout/services/index.ts +1 -0
  249. package/src/lib/components/layout/services/main-layout.component.service.ts +231 -0
  250. package/src/lib/components/layout/topbar.component.html +38 -0
  251. package/src/lib/components/layout/topbar.component.ts +62 -0
  252. package/{lib/components/tableview/index.d.ts → src/lib/components/tableview/index.ts} +5 -3
  253. package/src/lib/components/tableview/models/index.ts +1 -0
  254. package/src/lib/components/tableview/models/table.event.ts +22 -0
  255. package/src/lib/components/tableview/route/tableview-route.abstract.component.ts +31 -0
  256. package/src/lib/components/tableview/services/index.ts +1 -0
  257. package/src/lib/components/tableview/services/tableview.component.service.ts +22 -0
  258. package/src/lib/components/tableview/table/column-filter/column-filter.component.html +36 -0
  259. package/src/lib/components/tableview/table/column-filter/column-filter.component.ts +70 -0
  260. package/src/lib/components/tableview/table/column-value/column-value.component.html +14 -0
  261. package/src/lib/components/tableview/table/column-value/column-value.component.ts +19 -0
  262. package/src/lib/components/tableview/table/table.component.html +110 -0
  263. package/src/lib/components/tableview/table/table.component.ts +327 -0
  264. package/src/lib/components/tableview/tableview.component.html +37 -0
  265. package/src/lib/components/tableview/tableview.component.ts +78 -0
  266. package/src/lib/config/formly.config.ts +154 -0
  267. package/{lib/config/index.d.ts → src/lib/config/index.ts} +1 -1
  268. package/{lib/models/config/index.d.ts → src/lib/config/models/index.ts} +1 -1
  269. package/src/lib/config/models/mng-config.model.ts +35 -0
  270. package/src/lib/data-providers/base.data-provider.ts +42 -0
  271. package/src/lib/data-providers/editor.data-provider.ts +60 -0
  272. package/src/lib/data-providers/index.ts +5 -0
  273. package/src/lib/data-providers/lookup.data-provider.ts +29 -0
  274. package/src/lib/data-providers/table.data-provider.ts +8 -0
  275. package/src/lib/data-providers/tableview.data-provider.ts +29 -0
  276. package/src/lib/descriptors/action.descriptor.ts +439 -0
  277. package/src/lib/descriptors/editor.descriptor.ts +880 -0
  278. package/src/lib/descriptors/field.validator.ts +35 -0
  279. package/src/lib/descriptors/index.ts +7 -0
  280. package/src/lib/descriptors/lookup.descriptor.ts +20 -0
  281. package/src/lib/descriptors/model.descriptor.ts +47 -0
  282. package/src/lib/descriptors/table.descriptor.ts +514 -0
  283. package/src/lib/descriptors/tableview.descriptor.ts +180 -0
  284. package/src/lib/directives/component.directive.ts +18 -0
  285. package/src/lib/directives/index.ts +2 -0
  286. package/src/lib/directives/template.directive.ts +24 -0
  287. package/src/lib/mng-commons.module.ts +240 -0
  288. package/src/lib/models/index.ts +2 -0
  289. package/src/lib/models/router.model.ts +16 -0
  290. package/src/lib/models/user.model.ts +9 -0
  291. package/src/lib/pipes/boolean.pipe.ts +17 -0
  292. package/{lib/pipes/index.d.ts → src/lib/pipes/index.ts} +2 -1
  293. package/src/lib/pipes/property-path.pipe.ts +30 -0
  294. package/src/lib/services/action.service.ts +310 -0
  295. package/src/lib/services/commons.service.ts +407 -0
  296. package/src/lib/services/configuration.service.ts +98 -0
  297. package/{lib/services/index.d.ts → src/lib/services/index.ts} +4 -6
  298. package/src/lib/services/navigation.service.ts +42 -0
  299. package/src/lib/services/providers/commons-init.provider.ts +5 -0
  300. package/src/lib/services/providers/config-service.provider.ts +22 -0
  301. package/src/lib/services/providers/formly-config.provider.ts +39 -0
  302. package/{lib/services/providers/index.d.ts → src/lib/services/providers/index.ts} +3 -2
  303. package/src/lib/services/tokens/browser-storage.token.ts +9 -0
  304. package/src/lib/services/tokens/index.ts +2 -0
  305. package/src/lib/services/tokens/module-config.token.ts +5 -0
  306. package/{lib/models/types/index.d.ts → src/lib/types/index.ts} +2 -2
  307. package/src/lib/types/type.decorator.ts +7 -0
  308. package/src/lib/types/type.model.ts +12 -0
  309. package/src/lib/utils/editor-formly.util.ts +193 -0
  310. package/src/lib/utils/i18n.util.ts +148 -0
  311. package/{lib/utils/index.d.ts → src/lib/utils/index.ts} +5 -4
  312. package/src/lib/utils/model.util.ts +66 -0
  313. package/src/lib/utils/toast.util.ts +49 -0
  314. package/src/lib/utils/type.util.ts +44 -0
  315. package/{public-api.d.ts → src/public-api.ts} +42 -22
  316. package/src/test.ts +26 -0
  317. package/tsconfig.lib.json +15 -0
  318. package/tsconfig.lib.prod.json +10 -0
  319. package/tsconfig.spec.json +17 -0
  320. package/esm2020/lib/api/models/builders/query-param.builder.mjs +0 -49
  321. package/esm2020/lib/api/models/filter-match-type.model.mjs +0 -24
  322. package/esm2020/lib/api/models/filter-param.model.mjs +0 -46
  323. package/esm2020/lib/api/models/index.mjs +0 -9
  324. package/esm2020/lib/api/models/mappers.mjs +0 -17
  325. package/esm2020/lib/api/models/query-mode.model.mjs +0 -19
  326. package/esm2020/lib/api/models/query-param.model.mjs +0 -69
  327. package/esm2020/lib/api/models/query-result.model.mjs +0 -45
  328. package/esm2020/lib/api/models/serialization.model.mjs +0 -2
  329. package/esm2020/lib/api/services/abstract-crud-api.service.mjs +0 -72
  330. package/esm2020/lib/api/services/index.mjs +0 -2
  331. package/esm2020/lib/api/utils/index.mjs +0 -3
  332. package/esm2020/lib/api/utils/medius-rest.util.mjs +0 -70
  333. package/esm2020/lib/api/utils/object-serializer.util.mjs +0 -226
  334. package/esm2020/lib/components/action/action.component.mjs +0 -63
  335. package/esm2020/lib/components/action/dialog/action-dialog.component.mjs +0 -148
  336. package/esm2020/lib/components/action/index.mjs +0 -4
  337. package/esm2020/lib/components/action/route/action-route.component.mjs +0 -144
  338. package/esm2020/lib/components/form/editor/form-editor.component.mjs +0 -140
  339. package/esm2020/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +0 -58
  340. package/esm2020/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +0 -51
  341. package/esm2020/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +0 -16
  342. package/esm2020/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +0 -26
  343. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +0 -94
  344. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +0 -124
  345. package/esm2020/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +0 -17
  346. package/esm2020/lib/components/form/formly/fields/index.mjs +0 -8
  347. package/esm2020/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +0 -17
  348. package/esm2020/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.mjs +0 -16
  349. package/esm2020/lib/components/form/formly/wrappers/index.mjs +0 -3
  350. package/esm2020/lib/components/form/index.mjs +0 -2
  351. package/esm2020/lib/components/layout/app.breadcrumb.component.mjs +0 -27
  352. package/esm2020/lib/components/layout/app.footer.component.mjs +0 -35
  353. package/esm2020/lib/components/layout/app.main.component.mjs +0 -25
  354. package/esm2020/lib/components/layout/app.main.component.service.mjs +0 -133
  355. package/esm2020/lib/components/layout/app.menu.component.mjs +0 -38
  356. package/esm2020/lib/components/layout/app.menuitem.component.mjs +0 -243
  357. package/esm2020/lib/components/layout/app.topbar.component.mjs +0 -135
  358. package/esm2020/lib/components/layout/index.mjs +0 -7
  359. package/esm2020/lib/components/tableview/index.mjs +0 -4
  360. package/esm2020/lib/components/tableview/route/tableview-route.abstract.component.mjs +0 -31
  361. package/esm2020/lib/components/tableview/table/table.component.mjs +0 -173
  362. package/esm2020/lib/components/tableview/tableview.component.mjs +0 -82
  363. package/esm2020/lib/components/tableview/tableview.component.service.mjs +0 -18
  364. package/esm2020/lib/config/formly.config.mjs +0 -165
  365. package/esm2020/lib/config/index.mjs +0 -2
  366. package/esm2020/lib/directives/index.mjs +0 -2
  367. package/esm2020/lib/directives/template.directive.mjs +0 -25
  368. package/esm2020/lib/mng-commons.module.mjs +0 -338
  369. package/esm2020/lib/models/action/action.model.mjs +0 -58
  370. package/esm2020/lib/models/action/index.mjs +0 -2
  371. package/esm2020/lib/models/config/index.mjs +0 -2
  372. package/esm2020/lib/models/config/mng-config.model.mjs +0 -3
  373. package/esm2020/lib/models/descriptors/action-descriptor.model.mjs +0 -283
  374. package/esm2020/lib/models/descriptors/editor-descriptor.model.mjs +0 -647
  375. package/esm2020/lib/models/descriptors/index.mjs +0 -6
  376. package/esm2020/lib/models/descriptors/model-descriptor.model.mjs +0 -34
  377. package/esm2020/lib/models/descriptors/table-descriptor.model.mjs +0 -123
  378. package/esm2020/lib/models/descriptors/tableview-descriptor.model.mjs +0 -124
  379. package/esm2020/lib/models/events/editor-event.model.mjs +0 -14
  380. package/esm2020/lib/models/events/index.mjs +0 -3
  381. package/esm2020/lib/models/events/table-event.model.mjs +0 -16
  382. package/esm2020/lib/models/interfaces/confirmation-service.model.mjs +0 -2
  383. package/esm2020/lib/models/interfaces/index.mjs +0 -2
  384. package/esm2020/lib/models/providers/data-provider.model.mjs +0 -86
  385. package/esm2020/lib/models/providers/index.mjs +0 -2
  386. package/esm2020/lib/models/types/index.mjs +0 -3
  387. package/esm2020/lib/models/types/type.decorator.mjs +0 -8
  388. package/esm2020/lib/models/types/type.model.mjs +0 -2
  389. package/esm2020/lib/models/validators/field.validator.mjs +0 -21
  390. package/esm2020/lib/models/validators/index.mjs +0 -2
  391. package/esm2020/lib/pipes/index.mjs +0 -2
  392. package/esm2020/lib/pipes/property-path.pipe.mjs +0 -36
  393. package/esm2020/lib/services/action.service.mjs +0 -239
  394. package/esm2020/lib/services/breadcrumb.service.mjs +0 -21
  395. package/esm2020/lib/services/configuration.service.mjs +0 -77
  396. package/esm2020/lib/services/index.mjs +0 -7
  397. package/esm2020/lib/services/menu.service.mjs +0 -26
  398. package/esm2020/lib/services/navigation.service.mjs +0 -49
  399. package/esm2020/lib/services/providers/config-service.provider.mjs +0 -12
  400. package/esm2020/lib/services/providers/formly-config.provider.mjs +0 -31
  401. package/esm2020/lib/services/providers/index.mjs +0 -3
  402. package/esm2020/lib/services/settings.service.mjs +0 -40
  403. package/esm2020/lib/utils/editor-formly.util.mjs +0 -165
  404. package/esm2020/lib/utils/i18n.util.mjs +0 -75
  405. package/esm2020/lib/utils/index.mjs +0 -5
  406. package/esm2020/lib/utils/model.util.mjs +0 -38
  407. package/esm2020/lib/utils/type.util.mjs +0 -43
  408. package/esm2020/mediusinc-mng-commons.mjs +0 -5
  409. package/esm2020/public-api.mjs +0 -33
  410. package/fesm2015/mediusinc-mng-commons.mjs +0 -5056
  411. package/fesm2015/mediusinc-mng-commons.mjs.map +0 -1
  412. package/fesm2020/mediusinc-mng-commons.mjs +0 -5012
  413. package/fesm2020/mediusinc-mng-commons.mjs.map +0 -1
  414. package/lib/api/models/builders/query-param.builder.d.ts +0 -11
  415. package/lib/api/models/filter-match-type.model.d.ts +0 -21
  416. package/lib/api/models/filter-param.model.d.ts +0 -23
  417. package/lib/api/models/mappers.d.ts +0 -6
  418. package/lib/api/models/query-param.model.d.ts +0 -31
  419. package/lib/api/models/query-result.model.d.ts +0 -36
  420. package/lib/api/services/abstract-crud-api.service.d.ts +0 -23
  421. package/lib/api/services/index.d.ts +0 -1
  422. package/lib/api/utils/medius-rest.util.d.ts +0 -6
  423. package/lib/api/utils/object-serializer.util.d.ts +0 -30
  424. package/lib/components/action/action.component.d.ts +0 -36
  425. package/lib/components/action/dialog/action-dialog.component.d.ts +0 -48
  426. package/lib/components/action/route/action-route.component.d.ts +0 -32
  427. package/lib/components/form/editor/form-editor.component.d.ts +0 -37
  428. package/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.d.ts +0 -21
  429. package/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.d.ts +0 -19
  430. package/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.d.ts +0 -6
  431. package/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.d.ts +0 -12
  432. package/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +0 -17
  433. package/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +0 -36
  434. package/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.d.ts +0 -6
  435. package/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +0 -8
  436. package/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.d.ts +0 -8
  437. package/lib/components/form/index.d.ts +0 -1
  438. package/lib/components/layout/app.breadcrumb.component.d.ts +0 -16
  439. package/lib/components/layout/app.footer.component.d.ts +0 -8
  440. package/lib/components/layout/app.main.component.d.ts +0 -12
  441. package/lib/components/layout/app.main.component.service.d.ts +0 -40
  442. package/lib/components/layout/app.menu.component.d.ts +0 -14
  443. package/lib/components/layout/app.menuitem.component.d.ts +0 -31
  444. package/lib/components/layout/app.topbar.component.d.ts +0 -16
  445. package/lib/components/layout/index.d.ts +0 -6
  446. package/lib/components/tableview/route/tableview-route.abstract.component.d.ts +0 -15
  447. package/lib/components/tableview/table/table.component.d.ts +0 -47
  448. package/lib/components/tableview/tableview.component.d.ts +0 -36
  449. package/lib/components/tableview/tableview.component.service.d.ts +0 -11
  450. package/lib/config/formly.config.d.ts +0 -8
  451. package/lib/directives/index.d.ts +0 -1
  452. package/lib/directives/template.directive.d.ts +0 -11
  453. package/lib/mng-commons.module.d.ts +0 -74
  454. package/lib/models/action/action.model.d.ts +0 -53
  455. package/lib/models/action/index.d.ts +0 -1
  456. package/lib/models/config/mng-config.model.d.ts +0 -19
  457. package/lib/models/descriptors/action-descriptor.model.d.ts +0 -124
  458. package/lib/models/descriptors/editor-descriptor.model.d.ts +0 -248
  459. package/lib/models/descriptors/index.d.ts +0 -5
  460. package/lib/models/descriptors/model-descriptor.model.d.ts +0 -15
  461. package/lib/models/descriptors/table-descriptor.model.d.ts +0 -45
  462. package/lib/models/descriptors/tableview-descriptor.model.d.ts +0 -38
  463. package/lib/models/events/editor-event.model.d.ts +0 -11
  464. package/lib/models/events/index.d.ts +0 -2
  465. package/lib/models/events/table-event.model.d.ts +0 -17
  466. package/lib/models/interfaces/confirmation-service.model.d.ts +0 -6
  467. package/lib/models/interfaces/index.d.ts +0 -1
  468. package/lib/models/providers/data-provider.model.d.ts +0 -62
  469. package/lib/models/providers/index.d.ts +0 -1
  470. package/lib/models/types/type.decorator.d.ts +0 -2
  471. package/lib/models/types/type.model.d.ts +0 -10
  472. package/lib/models/validators/field.validator.d.ts +0 -18
  473. package/lib/models/validators/index.d.ts +0 -1
  474. package/lib/pipes/property-path.pipe.d.ts +0 -7
  475. package/lib/services/action.service.d.ts +0 -92
  476. package/lib/services/breadcrumb.service.d.ts +0 -9
  477. package/lib/services/configuration.service.d.ts +0 -35
  478. package/lib/services/menu.service.d.ts +0 -11
  479. package/lib/services/navigation.service.d.ts +0 -14
  480. package/lib/services/providers/config-service.provider.d.ts +0 -5
  481. package/lib/services/providers/formly-config.provider.d.ts +0 -4
  482. package/lib/services/settings.service.d.ts +0 -18
  483. package/lib/utils/editor-formly.util.d.ts +0 -9
  484. package/lib/utils/i18n.util.d.ts +0 -14
  485. package/lib/utils/model.util.d.ts +0 -5
  486. package/lib/utils/type.util.d.ts +0 -15
  487. package/mediusinc-mng-commons-0.0.1-rc.3.tgz +0 -0
  488. package/mediusinc-mng-commons.d.ts +0 -5
@@ -0,0 +1,407 @@
1
+ import {Inject, Injectable} from '@angular/core';
2
+ import {ActivatedRouteSnapshot, NavigationEnd, Router} from '@angular/router';
3
+ import {Title} from '@angular/platform-browser';
4
+
5
+ import {FilterMatchMode, MenuItem, PrimeNGConfig} from 'primeng/api';
6
+ import {TranslateService} from '@ngx-translate/core';
7
+ import {BehaviorSubject, Observable, ReplaySubject, Subject, Subscription} from 'rxjs';
8
+ import {filter, map} from 'rxjs/operators';
9
+
10
+ import {MngConfigurationService} from './configuration.service';
11
+ import {MngModuleConfig} from '../config/models';
12
+ import {MngBreadcrumbMenuItem, MngRouterData, IUser} from '../models';
13
+ import {MNG_BROWSER_STORAGE_IT, MNG_MODULE_CONFIG_IT} from './tokens';
14
+
15
+ @Injectable()
16
+ export class MngCommonsService {
17
+
18
+ // menu
19
+ private _menuMode: 'static'|'sidebar'|'slim'|'overlay' = 'sidebar';
20
+ private _menuModeSubject: Subject<'static'|'sidebar'|'slim'|'overlay'> = new BehaviorSubject(this._menuMode);
21
+ private _menuItems: MenuItem[] = [];
22
+ private _menuPinEnabled: boolean = false;
23
+ private _menuActiveKeySubject = new Subject<string>();
24
+ private _menuResetSubject = new Subject();
25
+
26
+ // breadcrumbs
27
+ private readonly breadcrumbHomeSubject = new BehaviorSubject<MenuItem|null>({
28
+ icon: 'pi pi-home',
29
+ routerLink: '/'
30
+ });
31
+ private readonly breadcrumbsSubject = new BehaviorSubject<MenuItem[]>([]);
32
+ private breadcrumbsTranslateSubscription?: Subscription;
33
+ private breadcrumbHomeTranslateSubscription?: Subscription;
34
+
35
+ // visual
36
+ private _colorScheme: 'light'|'dark' = 'light';
37
+
38
+ // user
39
+ private _user?: IUser;
40
+ private userSubject: Subject<IUser> = new ReplaySubject(1);
41
+
42
+ constructor(
43
+ private router: Router,
44
+ private primengConfig: PrimeNGConfig,
45
+ private translate: TranslateService,
46
+ private titleService: Title,
47
+ private configurationService: MngConfigurationService,
48
+ @Inject(MNG_MODULE_CONFIG_IT) private moduleConfig: MngModuleConfig,
49
+ @Inject(MNG_BROWSER_STORAGE_IT) private localStorage: Storage
50
+ ) { }
51
+
52
+ // APP section
53
+
54
+ public get appName() {
55
+ return this.moduleConfig?.app?.name ?? 'app.name';
56
+ }
57
+
58
+ public get appOwner() {
59
+ return this.moduleConfig?.app?.owner ?? 'app.owner';
60
+ }
61
+
62
+ public get appLogoLight() {
63
+ return this.moduleConfig?.app?.logoPathLight
64
+ ? this.moduleConfig.app.logoPathLight
65
+ : (this.moduleConfig?.app?.logoPath ?? 'assets/layout/images/logo.png');
66
+ }
67
+
68
+ public get appLogoDark() {
69
+ return this.moduleConfig?.app?.logoPathDark
70
+ ? this.moduleConfig.app.logoPathDark
71
+ : (this.moduleConfig?.app?.logoPath ?? 'assets/layout/images/logo.png');
72
+ }
73
+
74
+ public get appLogoNameLight() {
75
+ return this.moduleConfig?.app?.logoNamePathLight
76
+ ? this.moduleConfig.app.logoNamePathLight
77
+ : (this.moduleConfig?.app?.logoNamePath ?? 'assets/layout/images/logo-appname.png');
78
+ }
79
+
80
+ public get appLogoNameDark() {
81
+ return this.moduleConfig?.app?.logoNamePathDark
82
+ ? this.moduleConfig.app.logoNamePathDark
83
+ : (this.moduleConfig?.app?.logoNamePath ?? 'assets/layout/images/logo-appname.png');
84
+ }
85
+
86
+ public get appLanguages() {
87
+ return this.moduleConfig?.app?.languages ?? ['en'];
88
+ }
89
+
90
+ public get appLanguage(): string {
91
+ const lang = this.localStorage.getItem('lang');
92
+ if (lang) {
93
+ return lang;
94
+ }
95
+ const browserLang = this.translate.getBrowserLang();
96
+ if (browserLang && this.appLanguages.some(l => l === browserLang)) {
97
+ this.appLanguage = browserLang;
98
+ return browserLang;
99
+ }
100
+ this.appLanguage = 'en';
101
+ return 'en';
102
+ }
103
+
104
+ public set appLanguage(language: string) {
105
+ if (this.appLanguages.some(l => l === language)) {
106
+ this.localStorage.setItem('lang', language);
107
+ this.translate.use(language);
108
+ }
109
+ }
110
+
111
+ // MENU section
112
+
113
+ public get menuModeIsStatic() {
114
+ return this._menuMode === 'static';
115
+ }
116
+ public get menuModeIsStatic$(): Observable<boolean> {
117
+ return this._menuModeSubject.pipe(map(e => e === 'static'));
118
+ }
119
+
120
+ public get menuModeIsOverlay() {
121
+ return this._menuMode === 'overlay';
122
+ }
123
+ public get menuModeIsOverlay$(): Observable<boolean> {
124
+ return this._menuModeSubject.pipe(map(e => e === 'overlay'));
125
+ }
126
+
127
+ public get menuModeIsSlim() {
128
+ return this._menuMode === 'slim';
129
+ }
130
+ public get menuModeIsSlim$(): Observable<boolean> {
131
+ return this._menuModeSubject.pipe(map(e => e === 'slim'));
132
+ }
133
+
134
+ public get menuModeIsSidebar() {
135
+ return this._menuMode === 'sidebar';
136
+ }
137
+ public get menuModeIsSidebar$(): Observable<boolean> {
138
+ return this._menuModeSubject.pipe(map(e => e === 'sidebar'));
139
+ }
140
+
141
+ public get menuActiveKey$(): Observable<string> {
142
+ return this._menuActiveKeySubject.asObservable();
143
+ }
144
+
145
+ public get menuReset$(): Observable<any> {
146
+ return this._menuResetSubject.asObservable();
147
+ }
148
+
149
+ public get menuItems() {
150
+ return this._menuItems;
151
+ }
152
+
153
+ public set menuItems(menuItems: MenuItem[]) {
154
+ this._menuItems = menuItems;
155
+ }
156
+
157
+ public get menuPinEnabled() {
158
+ return this._menuPinEnabled;
159
+ }
160
+
161
+ // BREADCRUMB section
162
+ public get breadcrumbHome$() {
163
+ return this.breadcrumbHomeSubject.asObservable();
164
+ }
165
+
166
+ public get breadcrumbs$() {
167
+ return this.breadcrumbsSubject.asObservable();
168
+ }
169
+
170
+ // VISUAL section
171
+
172
+ public get colorSchemeIsLight() {
173
+ return this._colorScheme === 'light';
174
+ }
175
+
176
+ public get colorSchemeIsDark() {
177
+ return this._colorScheme === 'dark';
178
+ }
179
+
180
+ // USER section
181
+
182
+ public get user() {
183
+ // @ts-ignore
184
+ return this._user;
185
+ }
186
+
187
+ public get user$() {
188
+ return this.userSubject.asObservable();
189
+ }
190
+
191
+ public set user(user: IUser) {
192
+ this._user = user;
193
+ this.userSubject.next(user);
194
+ }
195
+
196
+ public initialize() {
197
+ console.log('Initializing app');
198
+
199
+ // menu
200
+ this._menuMode = this.moduleConfig?.menu?.mode ?? 'sidebar';
201
+ this._menuModeSubject.next(this._menuMode);
202
+ this._menuItems = this.moduleConfig?.menu?.menuItems ?? [];
203
+ this._menuPinEnabled = this.moduleConfig?.menu?.pinEnabled ?? false;
204
+
205
+ // visual
206
+ this._colorScheme = this.moduleConfig?.app?.colorScheme ?? 'light';
207
+
208
+ // ripple
209
+ this.primengConfig.ripple = true;
210
+ this.primengConfig.filterMatchModeOptions = {
211
+ text: [
212
+ FilterMatchMode.CONTAINS,
213
+ FilterMatchMode.EQUALS,
214
+ FilterMatchMode.NOT_EQUALS,
215
+ FilterMatchMode.STARTS_WITH,
216
+ FilterMatchMode.ENDS_WITH
217
+ ],
218
+ numeric: [
219
+ FilterMatchMode.EQUALS,
220
+ FilterMatchMode.NOT_EQUALS,
221
+ FilterMatchMode.LESS_THAN_OR_EQUAL_TO,
222
+ FilterMatchMode.GREATER_THAN_OR_EQUAL_TO
223
+ ],
224
+ date: [
225
+ FilterMatchMode.DATE_IS,
226
+ FilterMatchMode.DATE_IS_NOT,
227
+ FilterMatchMode.DATE_BEFORE,
228
+ FilterMatchMode.DATE_AFTER
229
+ ]
230
+ }
231
+
232
+ // translate
233
+ this.translate.langs = this.appLanguages;
234
+ this.translate.use(this.appLanguage);
235
+ this.translate.get('mngPrime').subscribe(value => this.primengConfig.setTranslation(value));
236
+
237
+ this.router.events.pipe(
238
+ // Filter the NavigationEnd events as the breadcrumb is updated only when the route reaches its end
239
+ filter((event) => event instanceof NavigationEnd)
240
+ )
241
+ .subscribe((event) => {
242
+ this.updateBreadcrumbs();
243
+ this.setPageTitle();
244
+ });
245
+ this.translate.onLangChange.subscribe(event => {
246
+ this.updateBreadcrumbs();
247
+ this.setPageTitle();
248
+ });
249
+ }
250
+
251
+ // MENU actions
252
+
253
+ menuChangeActiveKey(key: string) {
254
+ this._menuActiveKeySubject.next(key);
255
+ }
256
+
257
+ menuReset() {
258
+ this._menuResetSubject.next(null);
259
+ }
260
+
261
+ // BREADCRUMB actions
262
+
263
+ private updateBreadcrumbs() {
264
+ if (this.breadcrumbsTranslateSubscription) {
265
+ this.breadcrumbsTranslateSubscription.unsubscribe();
266
+ this.breadcrumbsTranslateSubscription = undefined;
267
+ }
268
+ if (this.breadcrumbHomeTranslateSubscription) {
269
+ this.breadcrumbHomeTranslateSubscription.unsubscribe();
270
+ this.breadcrumbHomeTranslateSubscription = undefined;
271
+ }
272
+
273
+ const rootRoute = this.router.routerState.snapshot.root;
274
+
275
+ const homeBreadcrumb = this.generateHomeBreadcrumb(rootRoute);
276
+ if (homeBreadcrumb) {
277
+ if (homeBreadcrumb.label) {
278
+ this.breadcrumbHomeTranslateSubscription = this.translate.get(homeBreadcrumb.label).subscribe(i18n => {
279
+ homeBreadcrumb.label = i18n;
280
+ this.breadcrumbHomeSubject.next(homeBreadcrumb);
281
+ });
282
+ } else {
283
+ this.breadcrumbHomeSubject.next(homeBreadcrumb);
284
+ }
285
+ }
286
+
287
+ const breadcrumbs: MenuItem[] = [];
288
+ this.generateBreadcrumbs(rootRoute, [], breadcrumbs);
289
+
290
+ // @ts-ignore
291
+ const i18nKeys: Array<string> = breadcrumbs.filter(b => typeof b.label === 'string').map(b => b.label);
292
+ if (i18nKeys.length > 0) {
293
+ this.breadcrumbsTranslateSubscription = this.translate.get(i18nKeys)
294
+ .subscribe(i18n => {
295
+ // Construct the breadcrumb hierarchy
296
+ breadcrumbs.forEach(b => {
297
+ if (b.label && i18n[b.label]) {
298
+ b.label = i18n[b.label];
299
+ }
300
+ });
301
+
302
+ // Emit the new breadcrumbs
303
+ this.breadcrumbsSubject.next(breadcrumbs);
304
+ });
305
+ } else {
306
+ this.breadcrumbsSubject.next(breadcrumbs);
307
+ }
308
+ }
309
+
310
+ private generateHomeBreadcrumb(route: ActivatedRouteSnapshot|null): MenuItem|null {
311
+ if (!route) {
312
+ return null;
313
+ }
314
+
315
+ const routeData = route.data as MngRouterData;
316
+ const breadcrumbRouteData = routeData?.breadcrumb;
317
+ if (breadcrumbRouteData && typeof breadcrumbRouteData === 'object' && 'isHome' in breadcrumbRouteData) {
318
+ if (breadcrumbRouteData.isHome === false) {
319
+ return null;
320
+ }
321
+ const breadcrumb = this.createBreadcrumb('/', breadcrumbRouteData, true);
322
+ if (breadcrumb) {
323
+ if (typeof breadcrumb.icon === 'undefined') {
324
+ breadcrumb.icon = 'pi pi-home';
325
+ }
326
+ return breadcrumb;
327
+ }
328
+ } else {
329
+ return this.generateHomeBreadcrumb(route.firstChild)
330
+ }
331
+ return null;
332
+ }
333
+
334
+ private generateBreadcrumbs(route: ActivatedRouteSnapshot | null, parentUrlSegments: string[], breadcrumbs: MenuItem[]) {
335
+ if (!route) {
336
+ return;
337
+ }
338
+
339
+ const routeData = route.data as MngRouterData;
340
+ const routeUrlSegments = parentUrlSegments.concat(route.url.map(url => url.path));
341
+ const routeUrl = `/${routeUrlSegments.join('/')}`;
342
+ if (routeData?.breadcrumb) {
343
+ const breadcrumbRouteData = routeData.breadcrumb;
344
+
345
+ if (Array.isArray(breadcrumbRouteData)) {
346
+ for (const breadcrumbRouteDataItem of breadcrumbRouteData) {
347
+ const breadcrumb = this.createBreadcrumb(routeUrl, breadcrumbRouteDataItem);
348
+ if (breadcrumb) {
349
+ breadcrumbs.push(breadcrumb);
350
+ }
351
+ }
352
+ } else if (typeof breadcrumbRouteData === 'function') {
353
+ breadcrumbs.push(...breadcrumbRouteData(routeUrl, route));
354
+ } else {
355
+ const breadcrumb = this.createBreadcrumb(routeUrl, breadcrumbRouteData);
356
+ if (breadcrumb) {
357
+ breadcrumbs.push(breadcrumb);
358
+ }
359
+ }
360
+ }
361
+ this.generateBreadcrumbs(route.firstChild, routeUrlSegments, breadcrumbs);
362
+ }
363
+
364
+ private createBreadcrumb(routeUrl: string, routeBreadcrumb: string|MngBreadcrumbMenuItem, includeHome: boolean = false): MenuItem|null {
365
+ if (typeof routeBreadcrumb === 'string') {
366
+ return {
367
+ label: routeBreadcrumb,
368
+ routerLink: routeUrl
369
+ };
370
+ } else {
371
+ if (!includeHome && typeof routeBreadcrumb.isHome !== 'undefined') {
372
+ // home should not be included
373
+ return null;
374
+ }
375
+ if (typeof routeBreadcrumb.routerLink === 'undefined') {
376
+ routeBreadcrumb.routerLink = routeUrl;
377
+ }
378
+ return routeBreadcrumb;
379
+ }
380
+ }
381
+
382
+ // TITLE section
383
+
384
+ public setPageTitle(title?: string) {
385
+ let currentRoute = this.router.routerState.snapshot.root;
386
+ while (currentRoute.firstChild) {
387
+ currentRoute = currentRoute.firstChild;
388
+ }
389
+
390
+ const routeData = currentRoute.data as MngRouterData;
391
+ const pageTitle = title ?? routeData.pageTitle;
392
+
393
+ this.titleService.setTitle(this.formatPageTitle(pageTitle));
394
+ }
395
+
396
+ private formatPageTitle(titlePrefix?: string) {
397
+ const titlePieces = [];
398
+
399
+ if (titlePrefix) {
400
+ titlePieces.push(this.translate.instant(titlePrefix));
401
+ }
402
+
403
+ titlePieces.push(this.translate.instant('app.name'));
404
+
405
+ return titlePieces.join(' - ');
406
+ }
407
+ }
@@ -0,0 +1,98 @@
1
+ import {HttpClient} from '@angular/common/http';
2
+
3
+ import {catchError, first, map} from 'rxjs/operators';
4
+ import {Observable} from 'rxjs';
5
+
6
+ export class MngConfigurationService {
7
+
8
+ private static _instance: MngConfigurationService|null = null;
9
+ public static init(httpClient: HttpClient): MngConfigurationService {
10
+ if (!this._instance) {
11
+ MngConfigurationService._instance = new MngConfigurationService(httpClient);
12
+ }
13
+ return MngConfigurationService.get();
14
+ }
15
+ public static get(): MngConfigurationService {
16
+ if (!MngConfigurationService._instance) {
17
+ throw new Error('Configuration service instance not set. Call init first.');
18
+ }
19
+ return MngConfigurationService._instance;
20
+ }
21
+
22
+ private projectEnvironment?: any;
23
+ private jsonEnvironments: Array<any> = [];
24
+
25
+ private configuration = {...this.projectEnvironment};
26
+
27
+ private constructor(private http: HttpClient) {
28
+ }
29
+
30
+ /**
31
+ * Add project environment source.
32
+ * @param environemnt Environment.
33
+ */
34
+ public addEnvironmentSource(environment: any): void {
35
+ this.projectEnvironment = environment;
36
+ this.mergeConfigs();
37
+ }
38
+
39
+ /**
40
+ * Adds new config source from JSON file.
41
+ * @param url Url to JSON file.
42
+ */
43
+ public addJsonSource(url: string = this.projectEnvironment.configurationJsonSource): Observable<boolean> {
44
+
45
+ if (!url) {
46
+ console.warn('No path to configuration file specified. Setting default.');
47
+ url = 'assets/config/env{{environment}}.json';
48
+ }
49
+
50
+ const envName = this.projectEnvironment.name || (this.projectEnvironment.production ? 'prod' : 'dev');
51
+ url = url.replace('{{environment}}', '.' + envName);
52
+
53
+ return this.http.get<any>(url)
54
+ .pipe(
55
+ catchError((err => {
56
+ console.warn('Error loading configuration file:' + err.message + '. Falling back to env.json');
57
+
58
+ const pathSegments = url.split('/');
59
+ pathSegments[pathSegments.length - 1] = 'env.json';
60
+ return this.http.get<any>(pathSegments.join('/'));
61
+ })),
62
+ first(),
63
+ map(res => {
64
+ this.jsonEnvironments.push(res);
65
+ this.mergeConfigs();
66
+ return true;
67
+ })
68
+ );
69
+ }
70
+
71
+ /**
72
+ * Get configuration.
73
+ */
74
+ public getConfig() {
75
+ return this.configuration;
76
+ }
77
+
78
+ /**
79
+ * Get configuration value for key.
80
+ * @param key Configuration key.
81
+ */
82
+ public getConfigValue(key: string) {
83
+ return this.configuration[key] ? this.configuration[key] : null;
84
+ }
85
+
86
+ /**
87
+ * Merges configuration from multiple sources with
88
+ */
89
+ private mergeConfigs() {
90
+ let config = {...this.projectEnvironment};
91
+ if (this.jsonEnvironments.length) {
92
+ for (const je of this.jsonEnvironments) {
93
+ config = {...config, ...je};
94
+ }
95
+ }
96
+ this.configuration = config;
97
+ }
98
+ }
@@ -1,6 +1,4 @@
1
- export * from './action.service';
2
- export * from './breadcrumb.service';
3
- export * from './configuration.service';
4
- export * from './menu.service';
5
- export * from './navigation.service';
6
- export * from './settings.service';
1
+ export * from './action.service';
2
+ export * from './configuration.service';
3
+ export * from './commons.service';
4
+ export * from './navigation.service';
@@ -0,0 +1,42 @@
1
+ import {Injectable} from '@angular/core';
2
+ import {NavigationEnd, Router} from '@angular/router';
3
+ import {Location} from '@angular/common';
4
+
5
+ @Injectable()
6
+ export class MngNavigationService {
7
+
8
+ private history: Array<string> = [];
9
+
10
+ constructor(private router: Router, private location: Location) {
11
+ this.router.events.subscribe((event) => {
12
+ if (event instanceof NavigationEnd) {
13
+ this.history.push(event.urlAfterRedirects);
14
+ }
15
+ });
16
+ }
17
+
18
+ public getCurrentLocation(): string|null {
19
+ if (this.history.length > 0) {
20
+ return this.history[this.history.length - 1];
21
+ } else {
22
+ return null;
23
+ }
24
+ }
25
+
26
+ public getPreviousLocation(): string|null {
27
+ if (this.history.length > 1) {
28
+ return this.history[this.history.length - 2];
29
+ } else {
30
+ return null;
31
+ }
32
+ }
33
+
34
+ public back(): void {
35
+ this.history.pop();
36
+ if (this.history.length > 0) {
37
+ this.location.back();
38
+ } else {
39
+ this.router.navigateByUrl('/')
40
+ }
41
+ }
42
+ }
@@ -0,0 +1,5 @@
1
+ import {MngCommonsService} from '../commons.service';
2
+
3
+ export function mngCommonsInitializerProvider(mngCommons: MngCommonsService) {
4
+ return () => mngCommons.initialize();
5
+ }
@@ -0,0 +1,22 @@
1
+ import {HttpClient} from '@angular/common/http';
2
+ import {MngModuleConfig} from '../../config/models';
3
+ import {MngConfigurationService} from '../configuration.service';
4
+ import {of} from 'rxjs';
5
+
6
+ export const mngConfigurationServiceProvider = (httpClient: HttpClient, moduleConfig: MngModuleConfig): MngConfigurationService => {
7
+ const service = MngConfigurationService.init(httpClient);
8
+ if (moduleConfig?.configuration?.projectEnvironment) {
9
+ service.addEnvironmentSource(moduleConfig.configuration.projectEnvironment);
10
+ }
11
+ return service;
12
+ }
13
+
14
+ export function mngConfigJsonAppInitializerProvider(configService: MngConfigurationService, moduleConfig: MngModuleConfig) {
15
+ return () => {
16
+ if (moduleConfig?.configuration?.skipJsonSourceInit) {
17
+ return of(false);
18
+ } else {
19
+ return configService.addJsonSource(moduleConfig?.configuration?.jsonSource ?? undefined);
20
+ }
21
+ }
22
+ }
@@ -0,0 +1,39 @@
1
+ import {TranslateService} from '@ngx-translate/core';
2
+ import {ConfigOption} from '@ngx-formly/core';
3
+
4
+ import {formlyTypesConfig, formlyWrappersConfig, getFormlyValidationMessages} from '../../config';
5
+ import {MngModuleConfig} from '../../config/models';
6
+
7
+ export function mngFormlyConfigProvider(translate: TranslateService, moduleConfig: MngModuleConfig = {}): ConfigOption {
8
+ const merge = moduleConfig.formly?.merge ?? true;
9
+
10
+ let types = formlyTypesConfig;
11
+ if (moduleConfig.formly?.types) {
12
+ if (!merge) {
13
+ types = [];
14
+ }
15
+ types = [...types, ...moduleConfig.formly.types];
16
+ }
17
+
18
+ let wrappers = formlyWrappersConfig;
19
+ if (moduleConfig.formly?.wrappers) {
20
+ if (!merge) {
21
+ wrappers = [];
22
+ }
23
+ wrappers = [...wrappers, ...moduleConfig.formly.wrappers];
24
+ }
25
+
26
+ let validationMessages = getFormlyValidationMessages(translate);
27
+ if (typeof moduleConfig.formly?.getValidationMessages === 'function') {
28
+ if (!merge) {
29
+ validationMessages = [];
30
+ }
31
+ validationMessages = [...validationMessages, ...moduleConfig.formly.getValidationMessages(translate)];
32
+ }
33
+
34
+ return {
35
+ types: types,
36
+ wrappers: wrappers,
37
+ validationMessages: validationMessages
38
+ };
39
+ }
@@ -1,2 +1,3 @@
1
- export * from './config-service.provider';
2
- export * from './formly-config.provider';
1
+ export * from './commons-init.provider';
2
+ export * from './config-service.provider';
3
+ export * from './formly-config.provider';
@@ -0,0 +1,9 @@
1
+ import {InjectionToken} from '@angular/core';
2
+
3
+ export const MNG_BROWSER_STORAGE_IT = new InjectionToken<Storage>(
4
+ 'Browser storage',
5
+ {
6
+ providedIn: 'root',
7
+ factory: () => localStorage
8
+ }
9
+ );
@@ -0,0 +1,2 @@
1
+ export * from './browser-storage.token';
2
+ export * from './module-config.token';
@@ -0,0 +1,5 @@
1
+ import {InjectionToken} from '@angular/core';
2
+
3
+ import {MngModuleConfig} from '../../config/models';
4
+
5
+ export const MNG_MODULE_CONFIG_IT = new InjectionToken<MngModuleConfig>('MngModuleConfig');
@@ -1,2 +1,2 @@
1
- export * from './type.decorator';
2
- export * from './type.model';
1
+ export * from './type.decorator';
2
+ export * from './type.model';
@@ -0,0 +1,7 @@
1
+ export const typeNameDecoratorPropertyName = 'typeName';
2
+
3
+ export function TypeName(typeName: string): ClassDecorator {
4
+ return function(target: any) {
5
+ target[typeNameDecoratorPropertyName] = typeName;
6
+ }
7
+ }
@@ -0,0 +1,12 @@
1
+ export interface ClassType<T> extends Function {
2
+ new(...args: any[]): T;
3
+ }
4
+
5
+ export interface EnumType {
6
+ [key: number]: EnumMemberType;
7
+ }
8
+ export type EnumMemberType = string|number;
9
+
10
+ export type IdType = number|string;
11
+ export type PrimitiveType = string|boolean|number;
12
+ export type PropertyType = PrimitiveType|Date|EnumType;