@mediusinc/mng-commons 0.0.1-rc.4 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (323) hide show
  1. package/.pnpm-debug.log +15 -0
  2. package/README.md +95 -0
  3. package/assets/i18n/en.json +54 -3
  4. package/assets/i18n/sl.json +54 -8
  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/esm2020/lib/api/models/builders/query-param.builder.mjs +8 -8
  16. package/esm2020/lib/api/models/filter-match-type.model.mjs +14 -12
  17. package/esm2020/lib/api/models/filter-param.model.mjs +6 -6
  18. package/esm2020/lib/api/models/mappers.mjs +12 -12
  19. package/esm2020/lib/api/models/query-mode.model.mjs +7 -7
  20. package/esm2020/lib/api/models/query-param.model.mjs +5 -5
  21. package/esm2020/lib/api/models/query-result.model.mjs +15 -15
  22. package/esm2020/lib/api/services/abstract-crud-api.service.mjs +1 -1
  23. package/esm2020/lib/api/utils/medius-rest.util.mjs +99 -47
  24. package/esm2020/lib/components/action/action.component.mjs +3 -3
  25. package/esm2020/lib/components/action/dialog/action-dialog.component.mjs +6 -4
  26. package/esm2020/lib/components/action/route/action-route.component.mjs +3 -3
  27. package/esm2020/lib/components/form/autocomplete/mng-autocomplete.component.mjs +114 -0
  28. package/esm2020/lib/components/form/dropdown/mng-dropdown.component.mjs +113 -0
  29. package/esm2020/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +7 -46
  30. package/esm2020/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +7 -39
  31. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +1 -1
  32. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +6 -6
  33. package/esm2020/lib/components/form/index.mjs +3 -1
  34. package/esm2020/lib/components/layout/breadcrumb.component.mjs +17 -0
  35. package/esm2020/lib/components/layout/footer.component.mjs +17 -0
  36. package/esm2020/lib/components/layout/index.mjs +7 -7
  37. package/esm2020/lib/components/layout/main-layout.component.mjs +33 -0
  38. package/esm2020/lib/components/layout/menu-item.component.mjs +173 -0
  39. package/esm2020/lib/components/layout/menu.component.mjs +20 -0
  40. package/esm2020/lib/components/layout/services/main-layout.component.service.mjs +190 -0
  41. package/esm2020/lib/components/layout/topbar.component.mjs +40 -0
  42. package/esm2020/lib/components/tableview/index.mjs +3 -1
  43. package/esm2020/lib/components/tableview/table/column-filter/column-filter.component.mjs +74 -0
  44. package/esm2020/lib/components/tableview/table/column-value/column-value.component.mjs +25 -0
  45. package/esm2020/lib/components/tableview/table/table.component.mjs +175 -41
  46. package/esm2020/lib/components/tableview/tableview.component.mjs +5 -5
  47. package/esm2020/lib/mng-commons.module.mjs +70 -40
  48. package/esm2020/lib/models/config/mng-config.model.mjs +1 -1
  49. package/esm2020/lib/models/descriptors/action-descriptor.model.mjs +1 -1
  50. package/esm2020/lib/models/descriptors/editor-descriptor.model.mjs +17 -12
  51. package/esm2020/lib/models/descriptors/table-descriptor.model.mjs +291 -13
  52. package/esm2020/lib/models/descriptors/tableview-descriptor.model.mjs +12 -3
  53. package/esm2020/lib/models/events/table-event.model.mjs +1 -1
  54. package/esm2020/lib/models/interfaces/index.mjs +2 -1
  55. package/esm2020/lib/models/interfaces/lookup.model.mjs +2 -0
  56. package/esm2020/lib/models/providers/data-provider.model.mjs +3 -3
  57. package/esm2020/lib/models/router/index.mjs +2 -0
  58. package/esm2020/lib/models/router/router.model.mjs +2 -0
  59. package/esm2020/lib/models/user/index.mjs +2 -0
  60. package/esm2020/lib/models/user/user.model.mjs +2 -0
  61. package/esm2020/lib/pipes/boolean.pipe.mjs +22 -0
  62. package/esm2020/lib/pipes/index.mjs +2 -1
  63. package/esm2020/lib/services/action.service.mjs +8 -7
  64. package/esm2020/lib/services/commons.service.mjs +357 -0
  65. package/esm2020/lib/services/configuration.service.mjs +7 -7
  66. package/esm2020/lib/services/index.mjs +2 -4
  67. package/esm2020/lib/services/navigation.service.mjs +5 -6
  68. package/esm2020/lib/services/providers/commons-init.provider.mjs +4 -0
  69. package/esm2020/lib/services/providers/config-service.provider.mjs +5 -5
  70. package/esm2020/lib/services/providers/formly-config.provider.mjs +2 -2
  71. package/esm2020/lib/utils/editor-formly.util.mjs +4 -4
  72. package/esm2020/lib/utils/i18n.util.mjs +37 -3
  73. package/esm2020/lib/utils/model.util.mjs +20 -1
  74. package/esm2020/lib/utils/toast.util.mjs +14 -1
  75. package/esm2020/public-api.mjs +3 -1
  76. package/fesm2015/mediusinc-mng-commons.mjs +3404 -2526
  77. package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
  78. package/fesm2020/mediusinc-mng-commons.mjs +3328 -2472
  79. package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
  80. package/lib/api/models/builders/query-param.builder.d.ts +9 -9
  81. package/lib/api/models/filter-match-type.model.d.ts +7 -5
  82. package/lib/api/models/filter-param.model.d.ts +3 -3
  83. package/lib/api/models/query-mode.model.d.ts +1 -1
  84. package/lib/api/models/query-param.model.d.ts +5 -5
  85. package/lib/api/models/query-result.model.d.ts +5 -5
  86. package/lib/api/services/abstract-crud-api.service.d.ts +3 -3
  87. package/lib/api/utils/medius-rest.util.d.ts +9 -3
  88. package/lib/components/action/action.component.d.ts +2 -2
  89. package/lib/components/action/dialog/action-dialog.component.d.ts +3 -2
  90. package/lib/components/action/route/action-route.component.d.ts +2 -2
  91. package/lib/components/form/autocomplete/mng-autocomplete.component.d.ts +36 -0
  92. package/lib/components/form/dropdown/mng-dropdown.component.d.ts +34 -0
  93. package/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.d.ts +1 -11
  94. package/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.d.ts +0 -8
  95. package/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +3 -3
  96. package/lib/components/form/index.d.ts +2 -0
  97. package/lib/components/layout/breadcrumb.component.d.ts +8 -0
  98. package/lib/components/layout/footer.component.d.ts +9 -0
  99. package/lib/components/layout/index.d.ts +6 -6
  100. package/lib/components/layout/main-layout.component.d.ts +13 -0
  101. package/lib/components/layout/menu-item.component.d.ts +29 -0
  102. package/lib/components/layout/menu.component.d.ts +10 -0
  103. package/lib/components/layout/services/main-layout.component.service.d.ts +65 -0
  104. package/lib/components/layout/topbar.component.d.ts +18 -0
  105. package/lib/components/tableview/index.d.ts +2 -0
  106. package/lib/components/tableview/table/column-filter/column-filter.component.d.ts +22 -0
  107. package/lib/components/tableview/table/column-value/column-value.component.d.ts +12 -0
  108. package/lib/components/tableview/table/table.component.d.ts +42 -10
  109. package/lib/components/tableview/tableview.component.d.ts +3 -3
  110. package/lib/mng-commons.module.d.ts +66 -59
  111. package/lib/models/config/mng-config.model.d.ts +18 -1
  112. package/lib/models/descriptors/editor-descriptor.model.d.ts +9 -7
  113. package/lib/models/descriptors/table-descriptor.model.d.ts +133 -14
  114. package/lib/models/descriptors/tableview-descriptor.model.d.ts +6 -3
  115. package/lib/models/events/table-event.model.d.ts +4 -4
  116. package/lib/models/interfaces/index.d.ts +1 -0
  117. package/lib/models/interfaces/lookup.model.d.ts +17 -0
  118. package/lib/models/providers/data-provider.model.d.ts +10 -10
  119. package/lib/models/router/index.d.ts +1 -0
  120. package/lib/models/router/router.model.d.ts +9 -0
  121. package/lib/models/user/index.d.ts +1 -0
  122. package/lib/models/user/user.model.d.ts +8 -0
  123. package/lib/pipes/boolean.pipe.d.ts +7 -0
  124. package/lib/pipes/index.d.ts +1 -0
  125. package/lib/services/action.service.d.ts +3 -3
  126. package/lib/services/commons.service.d.ts +74 -0
  127. package/lib/services/configuration.service.d.ts +3 -3
  128. package/lib/services/index.d.ts +1 -3
  129. package/lib/services/navigation.service.d.ts +3 -3
  130. package/lib/services/providers/commons-init.provider.d.ts +2 -0
  131. package/lib/services/providers/config-service.provider.d.ts +3 -3
  132. package/lib/services/providers/formly-config.provider.d.ts +1 -1
  133. package/lib/utils/i18n.util.d.ts +3 -0
  134. package/lib/utils/model.util.d.ts +2 -0
  135. package/lib/utils/toast.util.d.ts +2 -1
  136. package/mediusinc-mng-commons-0.1.0.tgz +0 -0
  137. package/package.json +37 -36
  138. package/public-api.d.ts +2 -0
  139. package/scss/common/layout/_breadcrumb.scss +96 -0
  140. package/scss/common/layout/_config.scss +101 -0
  141. package/scss/common/layout/_dashboard.scss +16 -0
  142. package/scss/common/layout/_exception.scss +131 -0
  143. package/scss/common/layout/_footer.scss +29 -0
  144. package/scss/common/layout/_help.scss +157 -0
  145. package/scss/common/layout/_inlinemenu.scss +55 -0
  146. package/scss/common/layout/_invoice.scss +176 -0
  147. package/scss/common/layout/_landing.scss +639 -0
  148. package/scss/common/layout/_layout_dark.scss +23 -0
  149. package/scss/common/layout/_layout_light.scss +23 -0
  150. package/scss/common/layout/_loader.scss +18 -0
  151. package/scss/common/layout/_login.scss +106 -0
  152. package/scss/common/layout/_main.scss +45 -0
  153. package/scss/common/layout/_mixins.scss +214 -0
  154. package/scss/common/layout/_rightmenu.scss +125 -0
  155. package/scss/common/layout/_topbar.scss +189 -0
  156. package/scss/common/layout/_typography.scss +63 -0
  157. package/scss/common/layout/_utils.scss +96 -0
  158. package/scss/common/layout/_widgets.scss +391 -0
  159. package/scss/common/layout/menu/_menu.scss +7 -0
  160. package/scss/common/layout/menu/_menu_common.scss +183 -0
  161. package/scss/common/layout/menu/_menu_overlay.scss +52 -0
  162. package/scss/common/layout/menu/_menu_sidebar.scss +232 -0
  163. package/scss/common/layout/menu/_menu_slim.scss +138 -0
  164. package/scss/common/layout/menu/_menu_static.scss +70 -0
  165. package/scss/common/layout/menu/_menu_theme.scss +365 -0
  166. package/scss/common/theme/_theme_dark.scss +5 -0
  167. package/scss/common/theme/_theme_light.scss +5 -0
  168. package/scss/common/theme/designer/_colors.scss +18 -0
  169. package/scss/common/theme/designer/_common.scss +40 -0
  170. package/scss/common/theme/designer/_components.scss +101 -0
  171. package/scss/common/theme/designer/_mixins.scss +174 -0
  172. package/scss/common/theme/designer/components/button/_button.scss +560 -0
  173. package/scss/common/theme/designer/components/button/_speeddial.scss +79 -0
  174. package/scss/common/theme/designer/components/button/_splitbutton.scss +1 -0
  175. package/scss/common/theme/designer/components/data/_carousel.scss +37 -0
  176. package/scss/common/theme/designer/components/data/_datatable.scss +266 -0
  177. package/scss/common/theme/designer/components/data/_dataview.scss +55 -0
  178. package/scss/common/theme/designer/components/data/_filter.scss +138 -0
  179. package/scss/common/theme/designer/components/data/_fullcalendar.scss +324 -0
  180. package/scss/common/theme/designer/components/data/_orderlist.scss +91 -0
  181. package/scss/common/theme/designer/components/data/_organizationchart.scss +50 -0
  182. package/scss/common/theme/designer/components/data/_paginator.scss +83 -0
  183. package/scss/common/theme/designer/components/data/_picklist.scss +91 -0
  184. package/scss/common/theme/designer/components/data/_timeline.scss +38 -0
  185. package/scss/common/theme/designer/components/data/_tree.scss +144 -0
  186. package/scss/common/theme/designer/components/data/_treetable.scss +242 -0
  187. package/scss/common/theme/designer/components/data/_virtualscroller.scss +28 -0
  188. package/scss/common/theme/designer/components/file/_fileupload.scss +58 -0
  189. package/scss/common/theme/designer/components/input/_autocomplete.scss +103 -0
  190. package/scss/common/theme/designer/components/input/_calendar.scss +212 -0
  191. package/scss/common/theme/designer/components/input/_cascadeselect.scss +98 -0
  192. package/scss/common/theme/designer/components/input/_checkbox.scss +85 -0
  193. package/scss/common/theme/designer/components/input/_chips.scss +41 -0
  194. package/scss/common/theme/designer/components/input/_colorpicker.scss +19 -0
  195. package/scss/common/theme/designer/components/input/_dropdown.scss +136 -0
  196. package/scss/common/theme/designer/components/input/_editor.scss +122 -0
  197. package/scss/common/theme/designer/components/input/_inputgroup.scss +69 -0
  198. package/scss/common/theme/designer/components/input/_inputmask.scss +3 -0
  199. package/scss/common/theme/designer/components/input/_inputnumber.scss +3 -0
  200. package/scss/common/theme/designer/components/input/_inputswitch.scss +58 -0
  201. package/scss/common/theme/designer/components/input/_inputtext.scss +97 -0
  202. package/scss/common/theme/designer/components/input/_listbox.scss +82 -0
  203. package/scss/common/theme/designer/components/input/_multiselect.scss +164 -0
  204. package/scss/common/theme/designer/components/input/_password.scss +33 -0
  205. package/scss/common/theme/designer/components/input/_radiobutton.scss +78 -0
  206. package/scss/common/theme/designer/components/input/_rating.scss +48 -0
  207. package/scss/common/theme/designer/components/input/_selectbutton.scss +50 -0
  208. package/scss/common/theme/designer/components/input/_slider.scss +69 -0
  209. package/scss/common/theme/designer/components/input/_togglebutton.scss +48 -0
  210. package/scss/common/theme/designer/components/input/_treeselect.scss +89 -0
  211. package/scss/common/theme/designer/components/menu/_breadcrumb.scss +42 -0
  212. package/scss/common/theme/designer/components/menu/_contextmenu.scss +50 -0
  213. package/scss/common/theme/designer/components/menu/_dock.scss +51 -0
  214. package/scss/common/theme/designer/components/menu/_megamenu.scss +102 -0
  215. package/scss/common/theme/designer/components/menu/_menu.scss +41 -0
  216. package/scss/common/theme/designer/components/menu/_menubar.scss +179 -0
  217. package/scss/common/theme/designer/components/menu/_panelmenu.scss +137 -0
  218. package/scss/common/theme/designer/components/menu/_slidemenu.scss +55 -0
  219. package/scss/common/theme/designer/components/menu/_steps.scss +55 -0
  220. package/scss/common/theme/designer/components/menu/_tabmenu.scss +49 -0
  221. package/scss/common/theme/designer/components/menu/_tieredmenu.scss +56 -0
  222. package/scss/common/theme/designer/components/messages/_inlinemessage.scss +64 -0
  223. package/scss/common/theme/designer/components/messages/_message.scss +102 -0
  224. package/scss/common/theme/designer/components/messages/_toast.scss +95 -0
  225. package/scss/common/theme/designer/components/misc/_avatar.scss +30 -0
  226. package/scss/common/theme/designer/components/misc/_badge.scss +48 -0
  227. package/scss/common/theme/designer/components/misc/_blockui.scss +3 -0
  228. package/scss/common/theme/designer/components/misc/_chip.scss +36 -0
  229. package/scss/common/theme/designer/components/misc/_inplace.scss +17 -0
  230. package/scss/common/theme/designer/components/misc/_progressbar.scss +17 -0
  231. package/scss/common/theme/designer/components/misc/_scrolltop.scss +20 -0
  232. package/scss/common/theme/designer/components/misc/_skeleton.scss +8 -0
  233. package/scss/common/theme/designer/components/misc/_tag.scss +33 -0
  234. package/scss/common/theme/designer/components/misc/_terminal.scss +11 -0
  235. package/scss/common/theme/designer/components/multimedia/_galleria.scss +141 -0
  236. package/scss/common/theme/designer/components/overlay/_confirmpopup.scss +67 -0
  237. package/scss/common/theme/designer/components/overlay/_dialog.scss +63 -0
  238. package/scss/common/theme/designer/components/overlay/_overlaypanel.scss +62 -0
  239. package/scss/common/theme/designer/components/overlay/_sidebar.scss +27 -0
  240. package/scss/common/theme/designer/components/overlay/_tooltip.scss +33 -0
  241. package/scss/common/theme/designer/components/panel/_accordion.scss +119 -0
  242. package/scss/common/theme/designer/components/panel/_card.scss +30 -0
  243. package/scss/common/theme/designer/components/panel/_divider.scss +31 -0
  244. package/scss/common/theme/designer/components/panel/_fieldset.scss +47 -0
  245. package/scss/common/theme/designer/components/panel/_panel.scss +42 -0
  246. package/scss/common/theme/designer/components/panel/_scrollpanel.scss +6 -0
  247. package/scss/common/theme/designer/components/panel/_splitter.scss +19 -0
  248. package/scss/common/theme/designer/components/panel/_tabview.scss +66 -0
  249. package/scss/common/theme/designer/components/panel/_toolbar.scss +10 -0
  250. package/scss/common/theme/extensions/_button.scss +99 -0
  251. package/scss/common/theme/extensions/_calendar.scss +18 -0
  252. package/scss/common/theme/extensions/_card.scss +6 -0
  253. package/scss/common/theme/extensions/_carousel.scss +13 -0
  254. package/scss/common/theme/extensions/_checkbox.scss +10 -0
  255. package/scss/common/theme/extensions/_contextmenu.scss +16 -0
  256. package/scss/common/theme/extensions/_datatable.scss +83 -0
  257. package/scss/common/theme/extensions/_dialog.scss +14 -0
  258. package/scss/common/theme/extensions/_fieldset.scss +6 -0
  259. package/scss/common/theme/extensions/_galleria.scss +25 -0
  260. package/scss/common/theme/extensions/_megamenu.scss +18 -0
  261. package/scss/common/theme/extensions/_menu.scss +14 -0
  262. package/scss/common/theme/extensions/_menubar.scss +14 -0
  263. package/scss/common/theme/extensions/_orderlist.scss +38 -0
  264. package/scss/common/theme/extensions/_paginator.scss +19 -0
  265. package/scss/common/theme/extensions/_panelmenu.scss +20 -0
  266. package/scss/common/theme/extensions/_password.scss +5 -0
  267. package/scss/common/theme/extensions/_picklist.scss +38 -0
  268. package/scss/common/theme/extensions/_radiobutton.scss +8 -0
  269. package/scss/common/theme/extensions/_sidebar.scss +19 -0
  270. package/scss/common/theme/extensions/_slidemenu.scss +10 -0
  271. package/scss/common/theme/extensions/_slider.scss +6 -0
  272. package/scss/common/theme/extensions/_steps.scss +50 -0
  273. package/scss/common/theme/extensions/_tieredmenu.scss +14 -0
  274. package/scss/common/theme/extensions/_toast.scss +6 -0
  275. package/scss/common/theme/extensions/_tree.scss +36 -0
  276. package/scss/common/theme/extensions/_treetable.scss +35 -0
  277. package/scss/common/theme/extensions/_vendor_extensions.scss +27 -0
  278. package/scss/common/variables/layout/_common.scss +10 -0
  279. package/scss/common/variables/layout/_layout_dark.scss +70 -0
  280. package/scss/common/variables/layout/_layout_light.scss +70 -0
  281. package/scss/common/variables/theme/_theme_dark.scss +897 -0
  282. package/scss/common/variables/theme/_theme_light.scss +885 -0
  283. package/scss/layout/default/_mng-variables-layout-dark.scss +2 -0
  284. package/scss/layout/default/_mng-variables-layout-light.scss +2 -0
  285. package/scss/layout/default/layout-dark.scss +2 -0
  286. package/scss/layout/default/layout-light.scss +2 -0
  287. package/scss/mng-commons-dark.scss +10 -0
  288. package/scss/mng-commons-light.scss +13 -0
  289. package/scss/mng-overrides/_layout_action.scss +3 -0
  290. package/scss/mng-overrides/_layout_dialog.scss +34 -0
  291. package/scss/mng-overrides/_layout_forms.scss +31 -0
  292. package/scss/mng-overrides/_layout_radio.scss +3 -0
  293. package/scss/mng-overrides/_layout_styles.scss +4 -0
  294. package/scss/mng-overrides/_theme_datatable.scss +9 -0
  295. package/scss/mng-overrides/_theme_dialog.scss +9 -0
  296. package/scss/mng-overrides/_theme_dropdown.scss +6 -0
  297. package/scss/mng-overrides/_theme_styles.scss +9 -0
  298. package/scss/mng-overrides/_theme_tableview.scss +94 -0
  299. package/scss/theme/default/_mng-variables-theme-dark.scss +8 -0
  300. package/scss/theme/default/_mng-variables-theme-light.scss +8 -0
  301. package/scss/theme/default/theme-dark.scss +2 -0
  302. package/scss/theme/default/theme-light.scss +2 -0
  303. package/esm2020/lib/components/layout/app.breadcrumb.component.mjs +0 -26
  304. package/esm2020/lib/components/layout/app.footer.component.mjs +0 -35
  305. package/esm2020/lib/components/layout/app.main.component.mjs +0 -25
  306. package/esm2020/lib/components/layout/app.main.component.service.mjs +0 -133
  307. package/esm2020/lib/components/layout/app.menu.component.mjs +0 -24
  308. package/esm2020/lib/components/layout/app.menuitem.component.mjs +0 -241
  309. package/esm2020/lib/components/layout/app.topbar.component.mjs +0 -135
  310. package/esm2020/lib/services/breadcrumb.service.mjs +0 -74
  311. package/esm2020/lib/services/menu.service.mjs +0 -37
  312. package/esm2020/lib/services/settings.service.mjs +0 -81
  313. package/lib/components/layout/app.breadcrumb.component.d.ts +0 -14
  314. package/lib/components/layout/app.footer.component.d.ts +0 -8
  315. package/lib/components/layout/app.main.component.d.ts +0 -12
  316. package/lib/components/layout/app.main.component.service.d.ts +0 -40
  317. package/lib/components/layout/app.menu.component.d.ts +0 -15
  318. package/lib/components/layout/app.menuitem.component.d.ts +0 -31
  319. package/lib/components/layout/app.topbar.component.d.ts +0 -15
  320. package/lib/services/breadcrumb.service.d.ts +0 -15
  321. package/lib/services/menu.service.d.ts +0 -16
  322. package/lib/services/settings.service.d.ts +0 -30
  323. package/mediusinc-mng-commons-0.0.1-rc.4.tgz +0 -0
@@ -1,241 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import { NavigationEnd } from '@angular/router';
3
- import { trigger, state, style, transition, animate } from '@angular/animations';
4
- import { filter } from 'rxjs/operators';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "../../services/settings.service";
7
- import * as i2 from "./app.main.component.service";
8
- import * as i3 from "@angular/router";
9
- import * as i4 from "../../services/menu.service";
10
- import * as i5 from "@angular/common";
11
- import * as i6 from "primeng/ripple";
12
- import * as i7 from "@ngx-translate/core";
13
- export class AppMenuitemComponent {
14
- constructor(appSettings, appMainService, router, cd, menuService) {
15
- this.appSettings = appSettings;
16
- this.appMainService = appMainService;
17
- this.router = router;
18
- this.cd = cd;
19
- this.menuService = menuService;
20
- this.index = 0;
21
- this.root = false;
22
- this.parentKey = null;
23
- this.active = false;
24
- this.hover = false;
25
- this.key = '';
26
- this.menuSourceSubscription = this.menuService.menu$.subscribe(key => {
27
- // deactivate current active menu
28
- if (this.active && this.key !== key && key.indexOf(this.key) !== 0) {
29
- this.active = false;
30
- }
31
- });
32
- this.menuResetSubscription = this.menuService.reset$.subscribe(() => {
33
- this.active = false;
34
- });
35
- this.router.events.pipe(filter(event => event instanceof NavigationEnd))
36
- .subscribe(params => {
37
- if ((this.appSettings.isSlim() || this.appSettings.isHorizontal()) && !this.appMainService.isMobile()) {
38
- this.active = false;
39
- }
40
- else {
41
- if (this.item.routerLink) {
42
- this.updateActiveStateFromRoute();
43
- }
44
- else {
45
- this.active = false;
46
- }
47
- }
48
- });
49
- }
50
- ngOnInit() {
51
- if (!(this.appSettings.isSlim() || this.appSettings.isHorizontal()) && this.item.routerLink) {
52
- this.updateActiveStateFromRoute();
53
- }
54
- this.key = this.parentKey ? this.parentKey + '-' + this.index : String(this.index);
55
- }
56
- updateActiveStateFromRoute() {
57
- this.active = this.router.isActive(this.item.routerLink[0], this.item.items ? false : true);
58
- }
59
- itemClick(event) {
60
- // avoid processing disabled items
61
- if (this.item.disabled) {
62
- event.preventDefault();
63
- return;
64
- }
65
- // navigate with hover in horizontal mode
66
- if (this.root) {
67
- this.appMainService.menuHoverActive = !this.appMainService.menuHoverActive;
68
- }
69
- // notify other items
70
- this.menuService.onMenuStateChange(this.key);
71
- // execute command
72
- if (this.item.command) {
73
- this.item.command({ originalEvent: event, item: this.item });
74
- }
75
- // toggle active state
76
- if (this.item.items) {
77
- this.active = !this.active;
78
- }
79
- else {
80
- // activate item
81
- this.active = true;
82
- if (this.appMainService.isMobile()) {
83
- this.appMainService.staticMenuMobileActive = false;
84
- }
85
- if (this.appSettings.isOverlay()) {
86
- this.appMainService.overlayMenuActive = false;
87
- }
88
- // reset horizontal menu
89
- if ((this.appSettings.isSlim() || this.appSettings.isHorizontal()) && !this.appMainService.isMobile()) {
90
- this.menuService.reset();
91
- this.appMainService.menuHoverActive = false;
92
- }
93
- }
94
- }
95
- onMouseEnter() {
96
- // activate item on hover
97
- if (this.root && this.appMainService.menuHoverActive && (this.appSettings.isSlim() || this.appSettings.isHorizontal()) && this.appMainService.isDesktop()) {
98
- this.menuService.onMenuStateChange(this.key);
99
- this.active = true;
100
- }
101
- }
102
- ngOnDestroy() {
103
- if (this.menuSourceSubscription) {
104
- this.menuSourceSubscription.unsubscribe();
105
- }
106
- if (this.menuResetSubscription) {
107
- this.menuResetSubscription.unsubscribe();
108
- }
109
- }
110
- }
111
- AppMenuitemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AppMenuitemComponent, deps: [{ token: i1.AppSettingsService }, { token: i2.AppMainComponentService }, { token: i3.Router }, { token: i0.ChangeDetectorRef }, { token: i4.MenuService }], target: i0.ɵɵFactoryTarget.Component });
112
- AppMenuitemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AppMenuitemComponent, selector: "[app-menuitem]", inputs: { item: "item", index: "index", root: "root", parentKey: "parentKey" }, host: { properties: { "class.layout-root-menuitem": "root", "class.active-menuitem": "active" } }, ngImport: i0, template: `
113
- <ng-container>
114
- <div *ngIf="root && item.visible !== false" class="layout-menuitem-root-text">{{ item.label | translate }}</div>
115
- <a [attr.href]="item.url" (click)="itemClick($event)" *ngIf="(!item.routerLink || item.items) && item.visible !== false"
116
- (mouseenter)="onMouseEnter()" (keydown.enter)="itemClick($event)"
117
- [attr.target]="item.target" [attr.tabindex]="0" [ngClass]="item.class" pRipple>
118
- <i [ngClass]="item.icon" class="layout-menuitem-icon"></i>
119
- <span class="layout-menuitem-text">{{ item.label | translate }}</span>
120
- <i class="pi pi-fw pi-angle-down layout-submenu-toggler" *ngIf="item.items"></i>
121
- <span class="menuitem-badge" *ngIf="item.badge">{{item.badge}}</span>
122
- </a>
123
- <a (click)="itemClick($event)" (mouseenter)="hover=true" (mouseleave)="hover=false"
124
- *ngIf="(item.routerLink && !item.items) && item.visible !== false"
125
- [routerLink]="item.routerLink" routerLinkActive="active-menuitem-routerlink"
126
- [routerLinkActiveOptions]="{exact: true}" [attr.target]="item.target" [attr.tabindex]="0"
127
- [ngClass]="item.class" pRipple>
128
- <i [ngClass]="item.icon" class="layout-menuitem-icon"></i>
129
- <span class="layout-menuitem-text">{{ item.label | translate }}</span>
130
- <i class="pi pi-fw pi-angle-down layout-submenu-toggler" *ngIf="item.items"></i>
131
- <span class="menuitem-badge" *ngIf="item.badge">{{item.badge}}</span>
132
- </a>
133
- <ul *ngIf="((item.items && active) || (item.items && appSettings.isStatic() && (root || active))) && item.visible !== false" [@children]="(
134
- (appSettings.isSlim()||appSettings.isHorizontal()) && !appMainService.isMobile() && root) ?
135
- (active ? 'visible' : 'hidden') :
136
- (appSettings.isStatic() && root && !appMainService.isMobile() ? 'visible' : (active ? 'visibleAnimated' : 'hiddenAnimated'))">
137
- <ng-template ngFor let-child let-i="index" [ngForOf]="item.items">
138
- <li app-menuitem [item]="child" [index]="i" [parentKey]="key" [class]="child.badgeClass"></li>
139
- </ng-template>
140
- </ul>
141
- </ng-container>
142
- `, isInline: true, components: [{ type: AppMenuitemComponent, selector: "[app-menuitem]", inputs: ["item", "index", "root", "parentKey"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.Ripple, selector: "[pRipple]" }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "translate": i7.TranslatePipe }, animations: [
143
- trigger('children', [
144
- state('void', style({
145
- height: '0px'
146
- })),
147
- state('hiddenAnimated', style({
148
- height: '0px'
149
- })),
150
- state('visibleAnimated', style({
151
- height: '*'
152
- })),
153
- state('visible', style({
154
- height: '*',
155
- 'z-index': 100
156
- })),
157
- state('hidden', style({
158
- height: '0px',
159
- 'z-index': '*'
160
- })),
161
- transition('visibleAnimated => hiddenAnimated', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')),
162
- transition('hiddenAnimated => visibleAnimated', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')),
163
- transition('void => visibleAnimated, visibleAnimated => void', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)'))
164
- ])
165
- ] });
166
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AppMenuitemComponent, decorators: [{
167
- type: Component,
168
- args: [{
169
- /* tslint:disable:component-selector */
170
- selector: '[app-menuitem]',
171
- /* tslint:enable:component-selector */
172
- template: `
173
- <ng-container>
174
- <div *ngIf="root && item.visible !== false" class="layout-menuitem-root-text">{{ item.label | translate }}</div>
175
- <a [attr.href]="item.url" (click)="itemClick($event)" *ngIf="(!item.routerLink || item.items) && item.visible !== false"
176
- (mouseenter)="onMouseEnter()" (keydown.enter)="itemClick($event)"
177
- [attr.target]="item.target" [attr.tabindex]="0" [ngClass]="item.class" pRipple>
178
- <i [ngClass]="item.icon" class="layout-menuitem-icon"></i>
179
- <span class="layout-menuitem-text">{{ item.label | translate }}</span>
180
- <i class="pi pi-fw pi-angle-down layout-submenu-toggler" *ngIf="item.items"></i>
181
- <span class="menuitem-badge" *ngIf="item.badge">{{item.badge}}</span>
182
- </a>
183
- <a (click)="itemClick($event)" (mouseenter)="hover=true" (mouseleave)="hover=false"
184
- *ngIf="(item.routerLink && !item.items) && item.visible !== false"
185
- [routerLink]="item.routerLink" routerLinkActive="active-menuitem-routerlink"
186
- [routerLinkActiveOptions]="{exact: true}" [attr.target]="item.target" [attr.tabindex]="0"
187
- [ngClass]="item.class" pRipple>
188
- <i [ngClass]="item.icon" class="layout-menuitem-icon"></i>
189
- <span class="layout-menuitem-text">{{ item.label | translate }}</span>
190
- <i class="pi pi-fw pi-angle-down layout-submenu-toggler" *ngIf="item.items"></i>
191
- <span class="menuitem-badge" *ngIf="item.badge">{{item.badge}}</span>
192
- </a>
193
- <ul *ngIf="((item.items && active) || (item.items && appSettings.isStatic() && (root || active))) && item.visible !== false" [@children]="(
194
- (appSettings.isSlim()||appSettings.isHorizontal()) && !appMainService.isMobile() && root) ?
195
- (active ? 'visible' : 'hidden') :
196
- (appSettings.isStatic() && root && !appMainService.isMobile() ? 'visible' : (active ? 'visibleAnimated' : 'hiddenAnimated'))">
197
- <ng-template ngFor let-child let-i="index" [ngForOf]="item.items">
198
- <li app-menuitem [item]="child" [index]="i" [parentKey]="key" [class]="child.badgeClass"></li>
199
- </ng-template>
200
- </ul>
201
- </ng-container>
202
- `,
203
- host: {
204
- '[class.layout-root-menuitem]': 'root',
205
- '[class.active-menuitem]': 'active'
206
- },
207
- animations: [
208
- trigger('children', [
209
- state('void', style({
210
- height: '0px'
211
- })),
212
- state('hiddenAnimated', style({
213
- height: '0px'
214
- })),
215
- state('visibleAnimated', style({
216
- height: '*'
217
- })),
218
- state('visible', style({
219
- height: '*',
220
- 'z-index': 100
221
- })),
222
- state('hidden', style({
223
- height: '0px',
224
- 'z-index': '*'
225
- })),
226
- transition('visibleAnimated => hiddenAnimated', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')),
227
- transition('hiddenAnimated => visibleAnimated', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')),
228
- transition('void => visibleAnimated, visibleAnimated => void', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)'))
229
- ])
230
- ]
231
- }]
232
- }], ctorParameters: function () { return [{ type: i1.AppSettingsService }, { type: i2.AppMainComponentService }, { type: i3.Router }, { type: i0.ChangeDetectorRef }, { type: i4.MenuService }]; }, propDecorators: { item: [{
233
- type: Input
234
- }], index: [{
235
- type: Input
236
- }], root: [{
237
- type: Input
238
- }], parentKey: [{
239
- type: Input
240
- }] } });
241
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLm1lbnVpdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21uZy1jb21tb25zL3NyYy9saWIvY29tcG9uZW50cy9sYXlvdXQvYXBwLm1lbnVpdGVtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBdUMsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxFQUFTLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFHL0UsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7QUFzRXRDLE1BQU0sT0FBTyxvQkFBb0I7SUFvQjdCLFlBQW1CLFdBQStCLEVBQVMsY0FBdUMsRUFBUyxNQUFjLEVBQVUsRUFBcUIsRUFBVSxXQUF3QjtRQUF2SyxnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFBUyxtQkFBYyxHQUFkLGNBQWMsQ0FBeUI7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQWhCakwsVUFBSyxHQUFXLENBQUMsQ0FBQztRQUVsQixTQUFJLEdBQVksS0FBSyxDQUFDO1FBRXRCLGNBQVMsR0FBZ0IsSUFBSSxDQUFDO1FBRXZDLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFFZixVQUFLLEdBQVksS0FBSyxDQUFDO1FBTXZCLFFBQUcsR0FBVyxFQUFFLENBQUM7UUFHYixJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2pFLGlDQUFpQztZQUNqQyxJQUFJ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S0FBSztzQkFBYixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIElucHV0LCBPbkluaXQsIENoYW5nZURldGVjdG9yUmVmLCBPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtSb3V0ZXIsIE5hdmlnYXRpb25FbmR9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge3RyaWdnZXIsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgYW5pbWF0ZX0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5cbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZmlsdGVyfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7TWVudVNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21lbnUuc2VydmljZSc7XG5pbXBvcnQge0FwcFNldHRpbmdzU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQge0FwcE1haW5Db21wb25lbnRTZXJ2aWNlfSBmcm9tICcuL2FwcC5tYWluLmNvbXBvbmVudC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgLyogdHNsaW50OmRpc2FibGU6Y29tcG9uZW50LXNlbGVjdG9yICovXG4gICAgc2VsZWN0b3I6ICdbYXBwLW1lbnVpdGVtXScsXG4gICAgLyogdHNsaW50OmVuYWJsZTpjb21wb25lbnQtc2VsZWN0b3IgKi9cbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInJvb3QgJiYgaXRlbS52aXNpYmxlICE9PSBmYWxzZVwiIGNsYXNzPVwibGF5b3V0LW1lbnVpdGVtLXJvb3QtdGV4dFwiPnt7IGl0ZW0ubGFiZWwgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgICAgICAgIDxhIFthdHRyLmhyZWZdPVwiaXRlbS51cmxcIiAoY2xpY2spPVwiaXRlbUNsaWNrKCRldmVudClcIiAqbmdJZj1cIighaXRlbS5yb3V0ZXJMaW5rIHx8IGl0ZW0uaXRlbXMpICYmIGl0ZW0udmlzaWJsZSAhPT0gZmFsc2VcIlxuICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwib25Nb3VzZUVudGVyKClcIiAoa2V5ZG93bi5lbnRlcik9XCJpdGVtQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAgICBbYXR0ci50YXJnZXRdPVwiaXRlbS50YXJnZXRcIiBbYXR0ci50YWJpbmRleF09XCIwXCIgW25nQ2xhc3NdPVwiaXRlbS5jbGFzc1wiIHBSaXBwbGU+XG4gICAgICAgICAgICAgICAgPGkgW25nQ2xhc3NdPVwiaXRlbS5pY29uXCIgY2xhc3M9XCJsYXlvdXQtbWVudWl0ZW0taWNvblwiPjwvaT5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxheW91dC1tZW51aXRlbS10ZXh0XCI+e3sgaXRlbS5sYWJlbCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWZ3IHBpLWFuZ2xlLWRvd24gbGF5b3V0LXN1Ym1lbnUtdG9nZ2xlclwiICpuZ0lmPVwiaXRlbS5pdGVtc1wiPjwvaT5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnVpdGVtLWJhZGdlXCIgKm5nSWY9XCJpdGVtLmJhZGdlXCI+e3tpdGVtLmJhZGdlfX08L3NwYW4+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8YSAoY2xpY2spPVwiaXRlbUNsaWNrKCRldmVudClcIiAobW91c2VlbnRlcik9XCJob3Zlcj10cnVlXCIgKG1vdXNlbGVhdmUpPVwiaG92ZXI9ZmFsc2VcIlxuICAgICAgICAgICAgICAgKm5nSWY9XCIoaXRlbS5yb3V0ZXJMaW5rICYmICFpdGVtLml0ZW1zKSAmJiBpdGVtLnZpc2libGUgIT09IGZhbHNlXCJcbiAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIml0ZW0ucm91dGVyTGlua1wiIHJvdXRlckxpbmtBY3RpdmU9XCJhY3RpdmUtbWVudWl0ZW0tcm91dGVybGlua1wiXG4gICAgICAgICAgICAgICBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNdPVwie2V4YWN0OiB0cnVlfVwiIFthdHRyLnRhcmdldF09XCJpdGVtLnRhcmdldFwiIFthdHRyLnRhYmluZGV4XT1cIjBcIlxuICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiaXRlbS5jbGFzc1wiIHBSaXBwbGU+XG4gICAgICAgICAgICAgICAgPGkgW25nQ2xhc3NdPVwiaXRlbS5pY29uXCIgY2xhc3M9XCJsYXlvdXQtbWVudWl0ZW0taWNvblwiPjwvaT5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxheW91dC1tZW51aXRlbS10ZXh0XCI+e3sgaXRlbS5sYWJlbCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWZ3IHBpLWFuZ2xlLWRvd24gbGF5b3V0LXN1Ym1lbnUtdG9nZ2xlclwiICpuZ0lmPVwiaXRlbS5pdGVtc1wiPjwvaT5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnVpdGVtLWJhZGdlXCIgKm5nSWY9XCJpdGVtLmJhZGdlXCI+e3tpdGVtLmJhZGdlfX08L3NwYW4+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8dWwgKm5nSWY9XCIoKGl0ZW0uaXRlbXMgJiYgYWN0aXZlKSB8fCAoaXRlbS5pdGVtcyAmJiBhcHBTZXR0aW5ncy5pc1N0YXRpYygpICYmIChyb290IHx8IGFjdGl2ZSkpKSAmJiBpdGVtLnZpc2libGUgIT09IGZhbHNlXCIgW0BjaGlsZHJlbl09XCIoXG4gICAgICAgICAgICAoYXBwU2V0dGluZ3MuaXNTbGltKCl8fGFwcFNldHRpbmdzLmlzSG9yaXpvbnRhbCgpKSAmJiAhYXBwTWFpblNlcnZpY2UuaXNNb2JpbGUoKSAmJiByb290KSA/XG4gICAgICAgICAgICAoYWN0aXZlID8gJ3Zpc2libGUnIDogJ2hpZGRlbicpIDpcbiAgICAgICAgICAgIChhcHBTZXR0aW5ncy5pc1N0YXRpYygpICYmIHJvb3QgJiYgIWFwcE1haW5TZXJ2aWNlLmlzTW9iaWxlKCkgPyAndmlzaWJsZScgOiAoYWN0aXZlID8gJ3Zpc2libGVBbmltYXRlZCcgOiAnaGlkZGVuQW5pbWF0ZWQnKSlcIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LWNoaWxkIGxldC1pPVwiaW5kZXhcIiBbbmdGb3JPZl09XCJpdGVtLml0ZW1zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgYXBwLW1lbnVpdGVtIFtpdGVtXT1cImNoaWxkXCIgW2luZGV4XT1cImlcIiBbcGFyZW50S2V5XT1cImtleVwiIFtjbGFzc109XCJjaGlsZC5iYWRnZUNsYXNzXCI+PC9saT5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgYCxcbiAgICBob3N0OiB7XG4gICAgICAgICdbY2xhc3MubGF5b3V0LXJvb3QtbWVudWl0ZW1dJzogJ3Jvb3QnLFxuICAgICAgICAnW2NsYXNzLmFjdGl2ZS1tZW51aXRlbV0nOiAnYWN0aXZlJ1xuICAgIH0sXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKCdjaGlsZHJlbicsIFtcbiAgICAgICAgICAgIHN0YXRlKCd2b2lkJywgc3R5bGUoe1xuICAgICAgICAgICAgICAgIGhlaWdodDogJzBweCdcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIHN0YXRlKCdoaWRkZW5BbmltYXRlZCcsIHN0eWxlKHtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICcwcHgnXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBzdGF0ZSgndmlzaWJsZUFuaW1hdGVkJywgc3R5bGUoe1xuICAgICAgICAgICAgICAgIGhlaWdodDogJyonXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBzdGF0ZSgndmlzaWJsZScsIHN0eWxlKHtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICcqJyxcbiAgICAgICAgICAgICAgICAnei1pbmRleCc6IDEwMFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgc3RhdGUoJ2hpZGRlbicsIHN0eWxlKHtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICcwcHgnLFxuICAgICAgICAgICAgICAgICd6LWluZGV4JzogJyonXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCd2aXNpYmxlQW5pbWF0ZWQgPT4gaGlkZGVuQW5pbWF0ZWQnLCBhbmltYXRlKCc0MDBtcyBjdWJpYy1iZXppZXIoMC44NiwgMCwgMC4wNywgMSknKSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCdoaWRkZW5BbmltYXRlZCA9PiB2aXNpYmxlQW5pbWF0ZWQnLCBhbmltYXRlKCc0MDBtcyBjdWJpYy1iZXppZXIoMC44NiwgMCwgMC4wNywgMSknKSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCd2b2lkID0+IHZpc2libGVBbmltYXRlZCwgdmlzaWJsZUFuaW1hdGVkID0+IHZvaWQnLCBhbmltYXRlKCc0MDBtcyBjdWJpYy1iZXppZXIoMC44NiwgMCwgMC4wNywgMSknKSlcbiAgICAgICAgXSlcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEFwcE1lbnVpdGVtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgQElucHV0KCkgaXRlbTogYW55O1xuXG4gICAgQElucHV0KCkgaW5kZXg6IG51bWJlciA9IDA7XG5cbiAgICBASW5wdXQoKSByb290OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBwYXJlbnRLZXk6IHN0cmluZ3xudWxsID0gbnVsbDtcblxuICAgIGFjdGl2ZSA9IGZhbHNlO1xuXG4gICAgaG92ZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIG1lbnVTb3VyY2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIG1lbnVSZXNldFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAga2V5OiBzdHJpbmcgPSAnJztcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBhcHBTZXR0aW5nczogQXBwU2V0dGluZ3NTZXJ2aWNlLCBwdWJsaWMgYXBwTWFpblNlcnZpY2U6IEFwcE1haW5Db21wb25lbnRTZXJ2aWNlLCBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIG1lbnVTZXJ2aWNlOiBNZW51U2VydmljZSkge1xuICAgICAgICB0aGlzLm1lbnVTb3VyY2VTdWJzY3JpcHRpb24gPSB0aGlzLm1lbnVTZXJ2aWNlLm1lbnUkLnN1YnNjcmliZShrZXkgPT4ge1xuICAgICAgICAgICAgLy8gZGVhY3RpdmF0ZSBjdXJyZW50IGFjdGl2ZSBtZW51XG4gICAgICAgICAgICBpZiAodGhpcy5hY3RpdmUgJiYgdGhpcy5rZXkgIT09IGtleSAmJiBrZXkuaW5kZXhPZih0aGlzLmtleSkgIT09IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm1lbnVSZXNldFN1YnNjcmlwdGlvbiA9IHRoaXMubWVudVNlcnZpY2UucmVzZXQkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnJvdXRlci5ldmVudHMucGlwZShmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoKHRoaXMuYXBwU2V0dGluZ3MuaXNTbGltKCkgfHwgdGhpcy5hcHBTZXR0aW5ncy5pc0hvcml6b250YWwoKSkgJiYgIXRoaXMuYXBwTWFpblNlcnZpY2UuaXNNb2JpbGUoKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLml0ZW0ucm91dGVyTGluaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVBY3RpdmVTdGF0ZUZyb21Sb3V0ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAoISh0aGlzLmFwcFNldHRpbmdzLmlzU2xpbSgpIHx8IHRoaXMuYXBwU2V0dGluZ3MuaXNIb3Jpem9udGFsKCkpICYmIHRoaXMuaXRlbS5yb3V0ZXJMaW5rKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUFjdGl2ZVN0YXRlRnJvbVJvdXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmtleSA9IHRoaXMucGFyZW50S2V5ID8gdGhpcy5wYXJlbnRLZXkgKyAnLScgKyB0aGlzLmluZGV4IDogU3RyaW5nKHRoaXMuaW5kZXgpO1xuICAgIH1cblxuICAgIHVwZGF0ZUFjdGl2ZVN0YXRlRnJvbVJvdXRlKCkge1xuICAgICAgICB0aGlzLmFjdGl2ZSA9IHRoaXMucm91dGVyLmlzQWN0aXZlKHRoaXMuaXRlbS5yb3V0ZXJMaW5rWzBdLCB0aGlzLml0ZW0uaXRlbXMgPyBmYWxzZSA6IHRydWUpO1xuICAgIH1cblxuICAgIGl0ZW1DbGljayhldmVudDogRXZlbnQpIHtcbiAgICAgICAgLy8gYXZvaWQgcHJvY2Vzc2luZyBkaXNhYmxlZCBpdGVtc1xuICAgICAgICBpZiAodGhpcy5pdGVtLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gbmF2aWdhdGUgd2l0aCBob3ZlciBpbiBob3Jpem9udGFsIG1vZGVcbiAgICAgICAgaWYgKHRoaXMucm9vdCkge1xuICAgICAgICAgICAgdGhpcy5hcHBNYWluU2VydmljZS5tZW51SG92ZXJBY3RpdmUgPSAhdGhpcy5hcHBNYWluU2VydmljZS5tZW51SG92ZXJBY3RpdmU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBub3RpZnkgb3RoZXIgaXRlbXNcbiAgICAgICAgdGhpcy5tZW51U2VydmljZS5vbk1lbnVTdGF0ZUNoYW5nZSh0aGlzLmtleSk7XG5cbiAgICAgICAgLy8gZXhlY3V0ZSBjb21tYW5kXG4gICAgICAgIGlmICh0aGlzLml0ZW0uY29tbWFuZCkge1xuICAgICAgICAgICAgdGhpcy5pdGVtLmNvbW1hbmQoe29yaWdpbmFsRXZlbnQ6IGV2ZW50LCBpdGVtOiB0aGlzLml0ZW19KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRvZ2dsZSBhY3RpdmUgc3RhdGVcbiAgICAgICAgaWYgKHRoaXMuaXRlbS5pdGVtcykge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSAhdGhpcy5hY3RpdmU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBhY3RpdmF0ZSBpdGVtXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmFwcE1haW5TZXJ2aWNlLmlzTW9iaWxlKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcE1haW5TZXJ2aWNlLnN0YXRpY01lbnVNb2JpbGVBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuYXBwU2V0dGluZ3MuaXNPdmVybGF5KCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcE1haW5TZXJ2aWNlLm92ZXJsYXlNZW51QWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHJlc2V0IGhvcml6b250YWwgbWVudVxuICAgICAgICAgICAgaWYgKCh0aGlzLmFwcFNldHRpbmdzLmlzU2xpbSgpIHx8IHRoaXMuYXBwU2V0dGluZ3MuaXNIb3Jpem9udGFsKCkpICYmICF0aGlzLmFwcE1haW5TZXJ2aWNlLmlzTW9iaWxlKCkpe1xuICAgICAgICAgICAgICAgIHRoaXMubWVudVNlcnZpY2UucmVzZXQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcE1haW5TZXJ2aWNlLm1lbnVIb3ZlckFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Nb3VzZUVudGVyKCkge1xuICAgICAgICAvLyBhY3RpdmF0ZSBpdGVtIG9uIGhvdmVyXG4gICAgICAgIGlmICh0aGlzLnJvb3QgJiYgdGhpcy5hcHBNYWluU2VydmljZS5tZW51SG92ZXJBY3RpdmUgJiYgKHRoaXMuYXBwU2V0dGluZ3MuaXNTbGltKCkgfHwgdGhpcy5hcHBTZXR0aW5ncy5pc0hvcml6b250YWwoKSkgJiYgdGhpcy5hcHBNYWluU2VydmljZS5pc0Rlc2t0b3AoKSkge1xuICAgICAgICAgICAgdGhpcy5tZW51U2VydmljZS5vbk1lbnVTdGF0ZUNoYW5nZSh0aGlzLmtleSk7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudVNvdXJjZVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5tZW51U291cmNlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tZW51UmVzZXRTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMubWVudVJlc2V0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -1,135 +0,0 @@
1
- import { Component } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "../../services/settings.service";
4
- import * as i2 from "./app.main.component.service";
5
- import * as i3 from "./app.breadcrumb.component";
6
- import * as i4 from "./app.menu.component";
7
- import * as i5 from "primeng/dropdown";
8
- import * as i6 from "@angular/common";
9
- import * as i7 from "@angular/forms";
10
- import * as i8 from "@ngx-translate/core";
11
- export class AppTopbarComponent {
12
- constructor(appSettings, appMainService
13
- // private userService: UserApiService TODO
14
- ) {
15
- this.appSettings = appSettings;
16
- this.appMainService = appMainService;
17
- // public user: UserDto; TODO
18
- this.languages = ['en'];
19
- this.selectedLanguage = 'en';
20
- }
21
- switchLanguage(language) {
22
- this.appSettings.applicationLanguage = language;
23
- }
24
- ngOnInit() {
25
- this.languages = this.appSettings.applicationLanguages;
26
- this.selectedLanguage = this.appSettings.applicationLanguage;
27
- // this.userService.getCurrentUser().subscribe(obj => this.user = obj);
28
- }
29
- }
30
- AppTopbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AppTopbarComponent, deps: [{ token: i1.AppSettingsService }, { token: i2.AppMainComponentService }], target: i0.ɵɵFactoryTarget.Component });
31
- AppTopbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AppTopbarComponent, selector: "app-topbar", ngImport: i0, template: `
32
- <div class="layout-topbar">
33
- <div class="layout-topbar-left">
34
- <a href="#" class="topbar-menu-button" (click)="appMainService.onMenuButtonClick($event)" *ngIf="appSettings.isOverlay() || appMainService.isMobile()">
35
- <i class="pi pi-bars"></i>
36
- </a>
37
-
38
- <app-breadcrumb></app-breadcrumb>
39
- </div>
40
-
41
- <app-menu></app-menu>
42
-
43
- <div class="layout-topbar-right">
44
- <ul class="layout-topbar-right-items">
45
- <li #profile class="profile-item" [ngClass]="{'active-topmenuitem':appMainService.activeTopbarItem === profile}">
46
- <!-- {{user?.name}} TODO -->
47
- <div *ngIf="languages.length > 1" class="flex align-items-center">
48
- <i class="pi pi-fw pi-globe"></i>
49
- <p-dropdown [ngModel]="selectedLanguage" [options]="languages" (onChange)="switchLanguage($event.value)"></p-dropdown>
50
- </div>
51
- <a href="#" (click)="appMainService.onTopbarItemClick($event,profile)">
52
- <i class="pi pi-fw pi-user"></i>
53
- </a>
54
-
55
- <ul class="fadeInDown">
56
- <li role="menuitem">
57
- <a href="#" (click)="appMainService.onTopbarSubItemClick($event)">
58
- <i class="pi pi-fw pi-user"></i>
59
- <span>{{ 'mngTopbar.profile' | translate }}</span>
60
- </a>
61
- </li>
62
- <li role="menuitem">
63
- <a href="#" (click)="appMainService.onTopbarSubItemClick($event)">
64
- <i class="pi pi-fw pi-cog"></i>
65
- <span>{{ 'mngTopbar.settings' | translate }}</span>
66
- </a>
67
- </li>
68
- <li role="menuitem">
69
- <a href="#" (click)="appMainService.onTopbarSubItemClick($event)">
70
- <i class="pi pi-fw pi-sign-out"></i>
71
- <span>{{ 'mngTopbar.logout' | translate }}</span>
72
- </a>
73
- </li>
74
- </ul>
75
- </li>
76
- </ul>
77
- </div>
78
- </div>
79
- `, isInline: true, components: [{ type: i3.AppBreadcrumbComponent, selector: "app-breadcrumb" }, { type: i4.AppMenuComponent, selector: "app-menu" }, { type: i5.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "virtualScroll", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaFilterLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "disabled", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "translate": i8.TranslatePipe } });
80
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AppTopbarComponent, decorators: [{
81
- type: Component,
82
- args: [{
83
- selector: 'app-topbar',
84
- template: `
85
- <div class="layout-topbar">
86
- <div class="layout-topbar-left">
87
- <a href="#" class="topbar-menu-button" (click)="appMainService.onMenuButtonClick($event)" *ngIf="appSettings.isOverlay() || appMainService.isMobile()">
88
- <i class="pi pi-bars"></i>
89
- </a>
90
-
91
- <app-breadcrumb></app-breadcrumb>
92
- </div>
93
-
94
- <app-menu></app-menu>
95
-
96
- <div class="layout-topbar-right">
97
- <ul class="layout-topbar-right-items">
98
- <li #profile class="profile-item" [ngClass]="{'active-topmenuitem':appMainService.activeTopbarItem === profile}">
99
- <!-- {{user?.name}} TODO -->
100
- <div *ngIf="languages.length > 1" class="flex align-items-center">
101
- <i class="pi pi-fw pi-globe"></i>
102
- <p-dropdown [ngModel]="selectedLanguage" [options]="languages" (onChange)="switchLanguage($event.value)"></p-dropdown>
103
- </div>
104
- <a href="#" (click)="appMainService.onTopbarItemClick($event,profile)">
105
- <i class="pi pi-fw pi-user"></i>
106
- </a>
107
-
108
- <ul class="fadeInDown">
109
- <li role="menuitem">
110
- <a href="#" (click)="appMainService.onTopbarSubItemClick($event)">
111
- <i class="pi pi-fw pi-user"></i>
112
- <span>{{ 'mngTopbar.profile' | translate }}</span>
113
- </a>
114
- </li>
115
- <li role="menuitem">
116
- <a href="#" (click)="appMainService.onTopbarSubItemClick($event)">
117
- <i class="pi pi-fw pi-cog"></i>
118
- <span>{{ 'mngTopbar.settings' | translate }}</span>
119
- </a>
120
- </li>
121
- <li role="menuitem">
122
- <a href="#" (click)="appMainService.onTopbarSubItemClick($event)">
123
- <i class="pi pi-fw pi-sign-out"></i>
124
- <span>{{ 'mngTopbar.logout' | translate }}</span>
125
- </a>
126
- </li>
127
- </ul>
128
- </li>
129
- </ul>
130
- </div>
131
- </div>
132
- `
133
- }]
134
- }], ctorParameters: function () { return [{ type: i1.AppSettingsService }, { type: i2.AppMainComponentService }]; } });
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLnRvcGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbmctY29tbW9ucy9zcmMvbGliL2NvbXBvbmVudHMvbGF5b3V0L2FwcC50b3BiYXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQVMsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7QUF5RGhELE1BQU0sT0FBTyxrQkFBa0I7SUFNM0IsWUFBbUIsV0FBK0IsRUFDL0IsY0FBdUM7SUFDOUMsMkNBQTJDOztRQUZwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDL0IsbUJBQWMsR0FBZCxjQUFjLENBQXlCO1FBTDFELDZCQUE2QjtRQUN0QixjQUFTLEdBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMscUJBQWdCLEdBQVcsSUFBSSxDQUFDO0lBS3BDLENBQUM7SUFFSixjQUFjLENBQUMsUUFBZ0I7UUFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsR0FBRyxRQUFRLENBQUM7SUFDcEQsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsb0JBQW9CLENBQUM7UUFDdkQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUM7UUFDN0QsdUVBQXVFO0lBQzNFLENBQUM7OytHQW5CUSxrQkFBa0I7bUdBQWxCLGtCQUFrQixrREFsRGpCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FnRFQ7MkZBRVEsa0JBQWtCO2tCQXBEOUIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FnRFQ7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtBcHBTZXR0aW5nc1NlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NldHRpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHtBcHBNYWluQ29tcG9uZW50U2VydmljZX0gZnJvbSAnLi9hcHAubWFpbi5jb21wb25lbnQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLXRvcGJhcicsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dC10b3BiYXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtdG9wYmFyLWxlZnRcIj5cbiAgICAgICAgICAgICAgICA8YSBocmVmPVwiI1wiIGNsYXNzPVwidG9wYmFyLW1lbnUtYnV0dG9uXCIgKGNsaWNrKT1cImFwcE1haW5TZXJ2aWNlLm9uTWVudUJ1dHRvbkNsaWNrKCRldmVudClcIiAqbmdJZj1cImFwcFNldHRpbmdzLmlzT3ZlcmxheSgpIHx8IGFwcE1haW5TZXJ2aWNlLmlzTW9iaWxlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1iYXJzXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvYT5cblxuICAgICAgICAgICAgICAgIDxhcHAtYnJlYWRjcnVtYj48L2FwcC1icmVhZGNydW1iPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxhcHAtbWVudT48L2FwcC1tZW51PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LXRvcGJhci1yaWdodFwiPlxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImxheW91dC10b3BiYXItcmlnaHQtaXRlbXNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxpICNwcm9maWxlIGNsYXNzPVwicHJvZmlsZS1pdGVtXCIgW25nQ2xhc3NdPVwieydhY3RpdmUtdG9wbWVudWl0ZW0nOmFwcE1haW5TZXJ2aWNlLmFjdGl2ZVRvcGJhckl0ZW0gPT09IHByb2ZpbGV9XCI+XG48IS0tICAgICAgICAgICAgICAgICAgICAgICAge3t1c2VyPy5uYW1lfX0gVE9ETyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJsYW5ndWFnZXMubGVuZ3RoID4gMVwiIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWZ3IHBpLWdsb2JlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWRyb3Bkb3duIFtuZ01vZGVsXT1cInNlbGVjdGVkTGFuZ3VhZ2VcIiBbb3B0aW9uc109XCJsYW5ndWFnZXNcIiAob25DaGFuZ2UpPVwic3dpdGNoTGFuZ3VhZ2UoJGV2ZW50LnZhbHVlKVwiPjwvcC1kcm9wZG93bj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cIiNcIiAoY2xpY2spPVwiYXBwTWFpblNlcnZpY2Uub25Ub3BiYXJJdGVtQ2xpY2soJGV2ZW50LHByb2ZpbGUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1mdyBwaS11c2VyXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJmYWRlSW5Eb3duXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIHJvbGU9XCJtZW51aXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiI1wiIChjbGljayk9XCJhcHBNYWluU2VydmljZS5vblRvcGJhclN1Ykl0ZW1DbGljaygkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWZ3IHBpLXVzZXJcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyAnbW5nVG9wYmFyLnByb2ZpbGUnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgcm9sZT1cIm1lbnVpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCIjXCIgKGNsaWNrKT1cImFwcE1haW5TZXJ2aWNlLm9uVG9wYmFyU3ViSXRlbUNsaWNrKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktZncgcGktY29nXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgJ21uZ1RvcGJhci5zZXR0aW5ncycgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSByb2xlPVwibWVudWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cIiNcIiAoY2xpY2spPVwiYXBwTWFpblNlcnZpY2Uub25Ub3BiYXJTdWJJdGVtQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1mdyBwaS1zaWduLW91dFwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ICdtbmdUb3BiYXIubG9nb3V0JyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgYFxufSlcbmV4cG9ydCBjbGFzcyBBcHBUb3BiYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgLy8gcHVibGljIHVzZXI6IFVzZXJEdG87IFRPRE9cbiAgICBwdWJsaWMgbGFuZ3VhZ2VzOiBBcnJheTxzdHJpbmc+ID0gWydlbiddO1xuICAgIHB1YmxpYyBzZWxlY3RlZExhbmd1YWdlOiBzdHJpbmcgPSAnZW4nO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGFwcFNldHRpbmdzOiBBcHBTZXR0aW5nc1NlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHVibGljIGFwcE1haW5TZXJ2aWNlOiBBcHBNYWluQ29tcG9uZW50U2VydmljZVxuICAgICAgICAgICAgICAgIC8vIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJBcGlTZXJ2aWNlIFRPRE9cbiAgICApIHt9XG5cbiAgICBzd2l0Y2hMYW5ndWFnZShsYW5ndWFnZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuYXBwU2V0dGluZ3MuYXBwbGljYXRpb25MYW5ndWFnZSA9IGxhbmd1YWdlO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxhbmd1YWdlcyA9IHRoaXMuYXBwU2V0dGluZ3MuYXBwbGljYXRpb25MYW5ndWFnZXM7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRMYW5ndWFnZSA9IHRoaXMuYXBwU2V0dGluZ3MuYXBwbGljYXRpb25MYW5ndWFnZTtcbiAgICAgICAgLy8gdGhpcy51c2VyU2VydmljZS5nZXRDdXJyZW50VXNlcigpLnN1YnNjcmliZShvYmogPT4gdGhpcy51c2VyID0gb2JqKTtcbiAgICB9XG59XG4iXX0=
@@ -1,74 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { BehaviorSubject } from 'rxjs';
3
- import { NavigationEnd } from '@angular/router';
4
- import { filter } from "rxjs/operators";
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/router";
7
- import * as i2 from "@ngx-translate/core";
8
- export class AppBreadcrumbService {
9
- constructor(router, translateService) {
10
- this.router = router;
11
- this.translateService = translateService;
12
- // Subject emitting the breadcrumb hierarchy
13
- this.breadcrumbsSubject = new BehaviorSubject([]);
14
- this.router.events.pipe(
15
- // Filter the NavigationEnd events as the breadcrumb is updated only when the route reaches its end
16
- filter((event) => event instanceof NavigationEnd)).subscribe(event => {
17
- // Construct the breadcrumb hierarchy
18
- const root = this.router.routerState.snapshot.root;
19
- const breadcrumbs = [];
20
- this.addBreadcrumb(root, [], breadcrumbs);
21
- breadcrumbs.forEach(breadcrumb => {
22
- if (breadcrumb.label) {
23
- this.translateService.get(breadcrumb.label).subscribe(translation => breadcrumb.label = translation);
24
- }
25
- else {
26
- console.error('Breadcrumb does not have a registered label');
27
- }
28
- });
29
- // Emit the new hierarchy
30
- this.breadcrumbsSubject.next(breadcrumbs);
31
- });
32
- }
33
- get breadcrumbs() {
34
- return this.breadcrumbsSubject.asObservable();
35
- }
36
- addBreadcrumb(route, parentUrl, breadcrumbs) {
37
- if (!route) {
38
- return;
39
- }
40
- const routeUrl = parentUrl.concat(route.url.map(url => url.path));
41
- if (route.data['breadcrumb']) {
42
- const breadcrumbData = route.data['breadcrumb'];
43
- if (Array.isArray(breadcrumbData)) {
44
- for (const breadcrumbPart of breadcrumbData) {
45
- const breadcrumb = {
46
- label: this.getLabel(route.data, breadcrumbPart),
47
- routerLink: '/' + routeUrl.join('/')
48
- };
49
- breadcrumbs.push(breadcrumb);
50
- }
51
- }
52
- else {
53
- const breadcrumb = {
54
- label: this.getLabel(route.data, breadcrumbData),
55
- routerLink: '/' + routeUrl.join('/')
56
- };
57
- breadcrumbs.push(breadcrumb);
58
- }
59
- }
60
- this.addBreadcrumb(route.firstChild, routeUrl, breadcrumbs);
61
- }
62
- getLabel(data, breadcrumb) {
63
- return typeof breadcrumb === 'function' ? breadcrumb(data) : breadcrumb;
64
- }
65
- }
66
- AppBreadcrumbService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AppBreadcrumbService, deps: [{ token: i1.Router }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable });
67
- AppBreadcrumbService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AppBreadcrumbService, providedIn: 'root' });
68
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AppBreadcrumbService, decorators: [{
69
- type: Injectable,
70
- args: [{
71
- providedIn: 'root'
72
- }]
73
- }], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.TranslateService }]; } });
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW5nLWNvbW1vbnMvc3JjL2xpYi9zZXJ2aWNlcy9icmVhZGNydW1iLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXZDLE9BQU8sRUFBK0IsYUFBYSxFQUFTLE1BQU0saUJBQWlCLENBQUM7QUFFcEYsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7O0FBS3RDLE1BQU0sT0FBTyxvQkFBb0I7SUFTN0IsWUFBb0IsTUFBYyxFQUNkLGdCQUFrQztRQURsQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQVJ0RCw0Q0FBNEM7UUFDM0IsdUJBQWtCLEdBQUcsSUFBSSxlQUFlLENBQWEsRUFBRSxDQUFDLENBQUM7UUFRdEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSTtRQUNuQixtR0FBbUc7UUFDbkcsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLFlBQVksYUFBYSxDQUFDLENBQ3BELENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2hCLHFDQUFxQztZQUNyQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ25ELE1BQU0sV0FBVyxHQUFlLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFFMUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDN0IsSUFBSSxVQUFVLENBQUMsS0FBSyxFQUFFO29CQUNsQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxDQUFDO2lCQUN4RztxQkFBTTtvQkFDSCxPQUFPLENBQUMsS0FBSyxDQUFDLDZDQUE2QyxDQUFDLENBQUM7aUJBQ2hFO1lBQ0wsQ0FBQyxDQUFDLENBQUM7WUFFSCx5QkFBeUI7WUFDekIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUExQkQsSUFBVyxXQUFXO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ2xELENBQUM7SUEwQk8sYUFBYSxDQUFDLEtBQW9DLEVBQUUsU0FBbUIsRUFBRSxXQUF1QjtRQUNwRyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1IsT0FBTztTQUNWO1FBRUQsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUUxQixNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBRWhELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsRUFBRTtnQkFDL0IsS0FBSyxNQUFNLGNBQWMsSUFBSSxjQUFjLEVBQUU7b0JBQ3pDLE1BQU0sVUFBVSxHQUFHO3dCQUNmLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDO3dCQUNoRCxVQUFVLEVBQUUsR0FBRyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO3FCQUN2QyxDQUFDO29CQUNGLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7aUJBQ2hDO2FBQ0o7aUJBQU07Z0JBQ0gsTUFBTSxVQUFVLEdBQUc7b0JBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxjQUFjLENBQUM7b0JBQ2hELFVBQVUsRUFBRSxHQUFHLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7aUJBQ3ZDLENBQUM7Z0JBQ0YsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUNoQztTQUNKO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRU8sUUFBUSxDQUFDLElBQVUsRUFBRSxVQUF3QztRQUNqRSxPQUFRLE9BQU8sVUFBVSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7SUFDN0UsQ0FBQzs7aUhBaEVRLG9CQUFvQjtxSEFBcEIsb0JBQW9CLGNBRmpCLE1BQU07MkZBRVQsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlU25hcHNob3QsIERhdGEsIE5hdmlnYXRpb25FbmQsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7ZmlsdGVyfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBcHBCcmVhZGNydW1iU2VydmljZSB7XG5cbiAgICAvLyBTdWJqZWN0IGVtaXR0aW5nIHRoZSBicmVhZGNydW1iIGhpZXJhcmNoeVxuICAgIHByaXZhdGUgcmVhZG9ubHkgYnJlYWRjcnVtYnNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNZW51SXRlbVtdPihbXSk7XG5cbiAgICBwdWJsaWMgZ2V0IGJyZWFkY3J1bWJzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5icmVhZGNydW1ic1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgICAgICAgICAvLyBGaWx0ZXIgdGhlIE5hdmlnYXRpb25FbmQgZXZlbnRzIGFzIHRoZSBicmVhZGNydW1iIGlzIHVwZGF0ZWQgb25seSB3aGVuIHRoZSByb3V0ZSByZWFjaGVzIGl0cyBlbmRcbiAgICAgICAgICAgIGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZClcbiAgICAgICAgKS5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICAgICAgLy8gQ29uc3RydWN0IHRoZSBicmVhZGNydW1iIGhpZXJhcmNoeVxuICAgICAgICAgICAgY29uc3Qgcm9vdCA9IHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LnJvb3Q7XG4gICAgICAgICAgICBjb25zdCBicmVhZGNydW1iczogTWVudUl0ZW1bXSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5hZGRCcmVhZGNydW1iKHJvb3QsIFtdLCBicmVhZGNydW1icyk7XG5cbiAgICAgICAgICAgIGJyZWFkY3J1bWJzLmZvckVhY2goYnJlYWRjcnVtYiA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGJyZWFkY3J1bWIubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldChicmVhZGNydW1iLmxhYmVsKS5zdWJzY3JpYmUodHJhbnNsYXRpb24gPT4gYnJlYWRjcnVtYi5sYWJlbCA9IHRyYW5zbGF0aW9uKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdCcmVhZGNydW1iIGRvZXMgbm90IGhhdmUgYSByZWdpc3RlcmVkIGxhYmVsJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIEVtaXQgdGhlIG5ldyBoaWVyYXJjaHlcbiAgICAgICAgICAgIHRoaXMuYnJlYWRjcnVtYnNTdWJqZWN0Lm5leHQoYnJlYWRjcnVtYnMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZEJyZWFkY3J1bWIocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QgfCBudWxsLCBwYXJlbnRVcmw6IHN0cmluZ1tdLCBicmVhZGNydW1iczogTWVudUl0ZW1bXSkge1xuICAgICAgICBpZiAoIXJvdXRlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByb3V0ZVVybCA9IHBhcmVudFVybC5jb25jYXQocm91dGUudXJsLm1hcCh1cmwgPT4gdXJsLnBhdGgpKTtcbiAgICAgICAgaWYgKHJvdXRlLmRhdGFbJ2JyZWFkY3J1bWInXSkge1xuXG4gICAgICAgICAgICBjb25zdCBicmVhZGNydW1iRGF0YSA9IHJvdXRlLmRhdGFbJ2JyZWFkY3J1bWInXTtcblxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYnJlYWRjcnVtYkRhdGEpKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBicmVhZGNydW1iUGFydCBvZiBicmVhZGNydW1iRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBicmVhZGNydW1iID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuZ2V0TGFiZWwocm91dGUuZGF0YSwgYnJlYWRjcnVtYlBhcnQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVyTGluazogJy8nICsgcm91dGVVcmwuam9pbignLycpXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFkY3J1bWJzLnB1c2goYnJlYWRjcnVtYik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBicmVhZGNydW1iID0ge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5nZXRMYWJlbChyb3V0ZS5kYXRhLCBicmVhZGNydW1iRGF0YSksXG4gICAgICAgICAgICAgICAgICAgIHJvdXRlckxpbms6ICcvJyArIHJvdXRlVXJsLmpvaW4oJy8nKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgYnJlYWRjcnVtYnMucHVzaChicmVhZGNydW1iKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFkZEJyZWFkY3J1bWIocm91dGUuZmlyc3RDaGlsZCwgcm91dGVVcmwsIGJyZWFkY3J1bWJzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldExhYmVsKGRhdGE6IERhdGEsIGJyZWFkY3J1bWI6IChhcmcwOiBEYXRhKSA9PiBhbnkgfCBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuICB0eXBlb2YgYnJlYWRjcnVtYiA9PT0gJ2Z1bmN0aW9uJyA/IGJyZWFkY3J1bWIoZGF0YSkgOiBicmVhZGNydW1iO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,37 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { Subject } from 'rxjs';
3
- import * as i0 from "@angular/core";
4
- export class MenuService {
5
- constructor() {
6
- this._menuItems = [];
7
- this.menuSourceSubject = new Subject();
8
- this.resetSourceSubject = new Subject();
9
- }
10
- onMenuStateChange(key) {
11
- this.menuSourceSubject.next(key);
12
- }
13
- reset() {
14
- this.resetSourceSubject.next(null);
15
- }
16
- get menu$() {
17
- return this.menuSourceSubject.asObservable();
18
- }
19
- get reset$() {
20
- return this.resetSourceSubject.asObservable();
21
- }
22
- get menuItems() {
23
- return this._menuItems;
24
- }
25
- set menuItems(value) {
26
- this._menuItems = value;
27
- }
28
- }
29
- MenuService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: MenuService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
30
- MenuService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: MenuService, providedIn: 'root' });
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: MenuService, decorators: [{
32
- type: Injectable,
33
- args: [{
34
- providedIn: 'root'
35
- }]
36
- }] });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW5nLWNvbW1vbnMvc3JjL2xpYi9zZXJ2aWNlcy9tZW51LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWEsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDOztBQU16QyxNQUFNLE9BQU8sV0FBVztJQUh4QjtRQUtZLGVBQVUsR0FBZSxFQUFFLENBQUM7UUFDNUIsc0JBQWlCLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUMxQyx1QkFBa0IsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0tBeUI5QztJQXZCRyxpQkFBaUIsQ0FBQyxHQUFXO1FBQ3pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELEtBQUs7UUFDRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFXLEtBQUs7UUFDWixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBRUQsSUFBVyxNQUFNO1FBQ2IsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVELElBQVcsU0FBUztRQUNoQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQVcsU0FBUyxDQUFDLEtBQWlCO1FBQ2xDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7O3dHQTVCUSxXQUFXOzRHQUFYLFdBQVcsY0FGUixNQUFNOzJGQUVULFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7TWVudUl0ZW19IGZyb20gXCJwcmltZW5nL2FwaVwiO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE1lbnVTZXJ2aWNlIHtcblxuICAgIHByaXZhdGUgX21lbnVJdGVtczogTWVudUl0ZW1bXSA9IFtdO1xuICAgIHByaXZhdGUgbWVudVNvdXJjZVN1YmplY3QgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gICAgcHJpdmF0ZSByZXNldFNvdXJjZVN1YmplY3QgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgb25NZW51U3RhdGVDaGFuZ2Uoa2V5OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5tZW51U291cmNlU3ViamVjdC5uZXh0KGtleSk7XG4gICAgfVxuXG4gICAgcmVzZXQoKSB7XG4gICAgICAgIHRoaXMucmVzZXRTb3VyY2VTdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtZW51JCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tZW51U291cmNlU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJlc2V0JCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXNldFNvdXJjZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtZW51SXRlbXMoKTogTWVudUl0ZW1bXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tZW51SXRlbXM7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBtZW51SXRlbXModmFsdWU6IE1lbnVJdGVtW10pIHtcbiAgICAgICAgdGhpcy5fbWVudUl0ZW1zID0gdmFsdWU7XG4gICAgfVxufVxuIl19