@valtimo/components 4.15.3-next-main.14 → 4.16.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 (291) hide show
  1. package/bundles/valtimo-components.umd.js +408 -302
  2. package/bundles/valtimo-components.umd.js.map +1 -1
  3. package/bundles/valtimo-components.umd.min.js +2 -2
  4. package/bundles/valtimo-components.umd.min.js.map +1 -1
  5. package/esm2015/lib/components/alert/alert.component.js +140 -0
  6. package/esm2015/lib/{topbar/topbar.module.js → components/alert/alert.module.js} +7 -11
  7. package/esm2015/lib/components/alert/alert.service.js +81 -0
  8. package/esm2015/lib/components/bpmn-js-diagram/bpmn-js-diagram.component.js +160 -0
  9. package/esm2015/lib/{alert/alert.module.js → components/bpmn-js-diagram/bpmn-js-diagram.module.js} +6 -6
  10. package/esm2015/lib/components/breadcrumb-navigation/breadcrumb-navigation.component.js +93 -0
  11. package/esm2015/lib/components/breadcrumb-navigation/breadcrumb-navigation.module.js +30 -0
  12. package/esm2015/lib/components/camunda/form/camunda-form.components.js +37 -0
  13. package/esm2015/lib/components/camunda/form/camunda-form.module.js +30 -0
  14. package/esm2015/lib/components/camunda/form/custom/camunda-custom-form.component.js +42 -0
  15. package/esm2015/lib/components/camunda/form/custom/camunda-custom-form.module.js +28 -0
  16. package/esm2015/lib/components/camunda/form/generated/camunda-generated-form.component.js +69 -0
  17. package/esm2015/lib/components/camunda/form/generated/camunda-generated-form.module.js +58 -0
  18. package/esm2015/lib/{camunda → components/camunda}/form/generated/formfield/boolean/camunda-boolean-formfield.component.js +3 -4
  19. package/esm2015/lib/components/camunda/form/generated/formfield/camunda-formfield-generator.directive.js +64 -0
  20. package/esm2015/lib/components/camunda/form/generated/formfield/camunda-formfield.service.js +66 -0
  21. package/esm2015/lib/{camunda → components/camunda}/form/generated/formfield/choicefield/camunda-choicefield-formfield.component.js +5 -3
  22. package/esm2015/lib/components/camunda/form/generated/formfield/date/camunda-date-formfield.component.js +66 -0
  23. package/esm2015/lib/components/camunda/form/generated/formfield/enum/camunda-enum-formfield.component.js +30 -0
  24. package/esm2015/lib/{menu/submenu-item-text.component.js → components/camunda/form/generated/formfield/formfield.model.js} +1 -18
  25. package/esm2015/lib/{camunda → components/camunda}/form/generated/formfield/long/camunda-long-formfield.component.js +3 -4
  26. package/esm2015/lib/{camunda → components/camunda}/form/generated/formfield/string/camunda-string-formfield.component.js +3 -4
  27. package/esm2015/lib/{camunda → components/camunda}/form/generated/formfield/textarea/camunda-textarea-formfield.component.js +3 -4
  28. package/esm2015/lib/components/camunda/form/generated/formfield/validation/camunda-formfield-validation.component.js +35 -0
  29. package/esm2015/lib/components/camunda/form/generated/formfield/validation/date.validators.js +60 -0
  30. package/esm2015/lib/{form-io/form-io-builder.component.js → components/card/card.component.js} +15 -18
  31. package/esm2015/lib/components/card/card.module.js +28 -0
  32. package/esm2015/lib/{camunda/form/generated/formfield/formfield.model.js → components/components.module.js} +7 -1
  33. package/esm2015/lib/{data-list → components/data-list}/data-list.component.js +2 -3
  34. package/esm2015/lib/components/data-list/data-list.module.js +28 -0
  35. package/esm2015/lib/components/dropzone/dropzone.component.js +143 -0
  36. package/esm2015/lib/components/dropzone/dropzone.module.js +32 -0
  37. package/esm2015/lib/components/field-auto-focus/field-auto-focus.directive.js +35 -0
  38. package/esm2015/lib/components/field-auto-focus/field-auto-focus.module.js +28 -0
  39. package/esm2015/lib/{view-content/type-converters/enumTypeConverter.js → components/file-size/file-size.module.js} +12 -8
  40. package/esm2015/lib/components/file-size/file-size.pipe.js +38 -0
  41. package/esm2015/lib/components/filter-sidebar/filter-sidebar.component.js +46 -0
  42. package/esm2015/lib/components/filter-sidebar/filter-sidebar.module.js +28 -0
  43. package/esm2015/lib/components/form-io/form-io-builder.component.js +38 -0
  44. package/esm2015/lib/components/form-io/form-io-uploader/form-io-uploader-edit-form.js +90 -0
  45. package/esm2015/lib/components/form-io/form-io-uploader/form-io-uploader.component.js +74 -0
  46. package/esm2015/lib/components/form-io/form-io-uploader/form-io-uploader.formio.js +26 -0
  47. package/esm2015/lib/components/form-io/form-io.component.js +163 -0
  48. package/esm2015/lib/components/form-io/form-io.module.js +56 -0
  49. package/esm2015/lib/components/form-io/formio-config.js +22 -0
  50. package/esm2015/lib/components/form-io/services/form-io-dom.service.js +23 -0
  51. package/esm2015/lib/components/form-io/services/form-io-state.service.js +24 -0
  52. package/esm2015/lib/components/left-sidebar/left-sidebar.component.js +114 -0
  53. package/esm2015/lib/components/left-sidebar/left-sidebar.module.js +30 -0
  54. package/esm2015/lib/components/list/ListFilterPipe.directive.js +31 -0
  55. package/esm2015/lib/components/list/list.component.js +179 -0
  56. package/esm2015/lib/components/list/list.module.js +33 -0
  57. package/esm2015/lib/components/menu/menu-item-text.component.js +38 -0
  58. package/esm2015/lib/components/menu/menu-routing.module.js +27 -0
  59. package/esm2015/lib/components/menu/menu.component.js +65 -0
  60. package/esm2015/lib/components/menu/menu.init.js +34 -0
  61. package/esm2015/lib/components/menu/menu.module.js +34 -0
  62. package/esm2015/lib/components/menu/menu.service.js +126 -0
  63. package/esm2015/lib/components/menu/submenu-item-text.component.js +33 -0
  64. package/esm2015/lib/{modal → components/modal}/modal.component.js +1 -1
  65. package/esm2015/lib/components/modal/modal.module.js +28 -0
  66. package/esm2015/lib/{page-header → components/page-header}/page-header.component.js +1 -1
  67. package/esm2015/lib/components/page-header/page-header.module.js +30 -0
  68. package/esm2015/lib/components/page-title/page-title.component.js +76 -0
  69. package/esm2015/lib/components/page-title/page-title.module.js +29 -0
  70. package/esm2015/lib/components/progress-bar/progress-bar.component.js +26 -0
  71. package/esm2015/lib/{bpmn-js-diagram/bpmn-js-diagram.module.js → components/progress-bar/progress-bar.module.js} +7 -9
  72. package/esm2015/lib/components/right-sidebar/right-sidebar.component.js +133 -0
  73. package/esm2015/lib/components/right-sidebar/right-sidebar.module.js +49 -0
  74. package/esm2015/lib/components/searchable-dropdown/searchable-dropdown.component.js +187 -0
  75. package/esm2015/lib/components/searchable-dropdown/searchable-dropdown.module.js +29 -0
  76. package/esm2015/lib/components/searchable-dropdown-select/searchable-dropdown-select.component.js +52 -0
  77. package/esm2015/lib/components/searchable-dropdown-select/searchable-dropdown-select.module.js +30 -0
  78. package/esm2015/lib/{spinner → components/spinner}/spinner.component.js +2 -2
  79. package/esm2015/lib/components/spinner/spinner.module.js +30 -0
  80. package/esm2015/lib/components/timeline/timeline.component.js +29 -0
  81. package/esm2015/lib/{progress-bar/progress-bar.module.js → components/timeline/timeline.module.js} +8 -9
  82. package/esm2015/lib/{topbar → components/topbar}/topbar.component.js +2 -3
  83. package/esm2015/lib/components/topbar/topbar.module.js +29 -0
  84. package/esm2015/lib/components/uploader/uploader-drag-drop.directive.js +49 -0
  85. package/esm2015/lib/components/uploader/uploader.component.js +68 -0
  86. package/esm2015/lib/components/uploader/uploader.module.js +30 -0
  87. package/esm2015/lib/components/version/version.service.js +38 -0
  88. package/esm2015/lib/components/view-content/type-converters/booleanTypeConverter.js +29 -0
  89. package/esm2015/lib/components/view-content/type-converters/dateTypeConverter.js +30 -0
  90. package/esm2015/lib/components/view-content/type-converters/enumTypeConverter.js +24 -0
  91. package/esm2015/lib/components/view-content/type-converters/relatedFilesTypeConverter.js +24 -0
  92. package/esm2015/lib/components/view-content/type-converters/stringReplaceUnderscoreTypeConverter.js +27 -0
  93. package/esm2015/lib/components/view-content/type-converters/stringTypeConverter.js +24 -0
  94. package/esm2015/lib/components/view-content/type-converters/type-converters.model.js +37 -0
  95. package/esm2015/lib/{view-content → components/view-content}/view-content.service.js +3 -3
  96. package/esm2015/lib/components/webcam/webcam.component.js +102 -0
  97. package/esm2015/lib/components/webcam/webcam.module.js +29 -0
  98. package/esm2015/lib/components/widget/widget.component.js +80 -0
  99. package/esm2015/lib/{file-size/file-size.module.js → components/widget/widget.module.js} +7 -9
  100. package/esm2015/lib/models/alert.model.js +30 -0
  101. package/esm2015/lib/models/form-io.model.js +30 -0
  102. package/esm2015/lib/models/index.js +24 -0
  103. package/esm2015/lib/models/pagination.model.js +1 -0
  104. package/esm2015/lib/models/searchable-dropdown.model.js +1 -0
  105. package/esm2015/lib/models/timeline.model.js +44 -0
  106. package/esm2015/lib/models/version.model.js +16 -0
  107. package/esm2015/public_api.js +67 -66
  108. package/esm2015/valtimo-components.js +23 -23
  109. package/fesm2015/valtimo-components.js +352 -303
  110. package/fesm2015/valtimo-components.js.map +1 -1
  111. package/lib/{alert → components/alert}/alert.component.d.ts +1 -1
  112. package/lib/{alert → components/alert}/alert.module.d.ts +0 -0
  113. package/lib/{alert → components/alert}/alert.service.d.ts +1 -1
  114. package/lib/{bpmn-js-diagram → components/bpmn-js-diagram}/bpmn-js-diagram.component.d.ts +0 -0
  115. package/lib/{bpmn-js-diagram → components/bpmn-js-diagram}/bpmn-js-diagram.module.d.ts +0 -0
  116. package/lib/{breadcrumb-navigation → components/breadcrumb-navigation}/breadcrumb-navigation.component.d.ts +0 -0
  117. package/lib/{breadcrumb-navigation → components/breadcrumb-navigation}/breadcrumb-navigation.module.d.ts +0 -0
  118. package/lib/{camunda → components/camunda}/form/camunda-form.components.d.ts +0 -0
  119. package/lib/{camunda → components/camunda}/form/camunda-form.module.d.ts +0 -0
  120. package/lib/{camunda → components/camunda}/form/custom/camunda-custom-form.component.d.ts +0 -0
  121. package/lib/{camunda → components/camunda}/form/custom/camunda-custom-form.module.d.ts +0 -0
  122. package/lib/{camunda → components/camunda}/form/generated/camunda-generated-form.component.d.ts +0 -0
  123. package/lib/{camunda → components/camunda}/form/generated/camunda-generated-form.module.d.ts +0 -0
  124. package/lib/{camunda → components/camunda}/form/generated/formfield/boolean/camunda-boolean-formfield.component.d.ts +0 -0
  125. package/lib/{camunda → components/camunda}/form/generated/formfield/camunda-formfield-generator.directive.d.ts +0 -0
  126. package/lib/{camunda → components/camunda}/form/generated/formfield/camunda-formfield.service.d.ts +0 -0
  127. package/lib/{camunda → components/camunda}/form/generated/formfield/choicefield/camunda-choicefield-formfield.component.d.ts +0 -0
  128. package/lib/{camunda → components/camunda}/form/generated/formfield/date/camunda-date-formfield.component.d.ts +0 -0
  129. package/lib/{camunda → components/camunda}/form/generated/formfield/enum/camunda-enum-formfield.component.d.ts +0 -0
  130. package/lib/{camunda → components/camunda}/form/generated/formfield/formfield.model.d.ts +0 -0
  131. package/lib/{camunda → components/camunda}/form/generated/formfield/long/camunda-long-formfield.component.d.ts +0 -0
  132. package/lib/{camunda → components/camunda}/form/generated/formfield/string/camunda-string-formfield.component.d.ts +0 -0
  133. package/lib/{camunda → components/camunda}/form/generated/formfield/textarea/camunda-textarea-formfield.component.d.ts +0 -0
  134. package/lib/{camunda → components/camunda}/form/generated/formfield/validation/camunda-formfield-validation.component.d.ts +0 -0
  135. package/lib/{camunda → components/camunda}/form/generated/formfield/validation/date.validators.d.ts +0 -0
  136. package/lib/{card → components/card}/card.component.d.ts +0 -0
  137. package/lib/{card → components/card}/card.module.d.ts +0 -0
  138. package/lib/{components.module.d.ts → components/components.module.d.ts} +0 -0
  139. package/lib/{data-list → components/data-list}/data-list.component.d.ts +0 -0
  140. package/lib/{data-list → components/data-list}/data-list.module.d.ts +0 -0
  141. package/lib/{dropzone → components/dropzone}/dropzone.component.d.ts +0 -0
  142. package/lib/{dropzone → components/dropzone}/dropzone.module.d.ts +0 -0
  143. package/lib/{field-auto-focus → components/field-auto-focus}/field-auto-focus.directive.d.ts +0 -0
  144. package/lib/{field-auto-focus → components/field-auto-focus}/field-auto-focus.module.d.ts +0 -0
  145. package/lib/{file-size → components/file-size}/file-size.module.d.ts +0 -0
  146. package/lib/{file-size → components/file-size}/file-size.pipe.d.ts +0 -0
  147. package/lib/{filter-sidebar → components/filter-sidebar}/filter-sidebar.component.d.ts +0 -0
  148. package/lib/{filter-sidebar → components/filter-sidebar}/filter-sidebar.module.d.ts +0 -0
  149. package/lib/{form-io → components/form-io}/form-io-builder.component.d.ts +0 -0
  150. package/lib/{form-io → components/form-io}/form-io-uploader/form-io-uploader-edit-form.d.ts +0 -0
  151. package/lib/{form-io → components/form-io}/form-io-uploader/form-io-uploader.component.d.ts +1 -1
  152. package/lib/{form-io → components/form-io}/form-io-uploader/form-io-uploader.formio.d.ts +0 -0
  153. package/lib/{form-io → components/form-io}/form-io.component.d.ts +8 -5
  154. package/lib/{form-io → components/form-io}/form-io.module.d.ts +0 -0
  155. package/lib/{form-io → components/form-io}/formio-config.d.ts +0 -0
  156. package/lib/{form-io → components/form-io}/services/form-io-dom.service.d.ts +0 -0
  157. package/lib/{form-io → components/form-io}/services/form-io-state.service.d.ts +0 -0
  158. package/lib/{left-sidebar → components/left-sidebar}/left-sidebar.component.d.ts +0 -0
  159. package/lib/{left-sidebar → components/left-sidebar}/left-sidebar.module.d.ts +0 -0
  160. package/lib/{list → components/list}/ListFilterPipe.directive.d.ts +0 -0
  161. package/lib/{list → components/list}/list.component.d.ts +1 -1
  162. package/lib/{list → components/list}/list.module.d.ts +0 -0
  163. package/lib/{menu → components/menu}/menu-item-text.component.d.ts +1 -1
  164. package/lib/{menu → components/menu}/menu-routing.module.d.ts +0 -0
  165. package/lib/{menu → components/menu}/menu.component.d.ts +1 -1
  166. package/lib/{menu → components/menu}/menu.init.d.ts +0 -0
  167. package/lib/{menu → components/menu}/menu.module.d.ts +0 -0
  168. package/lib/{menu → components/menu}/menu.service.d.ts +1 -1
  169. package/lib/{menu → components/menu}/submenu-item-text.component.d.ts +1 -1
  170. package/lib/{modal → components/modal}/modal.component.d.ts +0 -0
  171. package/lib/{modal → components/modal}/modal.module.d.ts +0 -0
  172. package/lib/{page-header → components/page-header}/page-header.component.d.ts +0 -0
  173. package/lib/{page-header → components/page-header}/page-header.module.d.ts +0 -0
  174. package/lib/{page-title → components/page-title}/page-title.component.d.ts +0 -0
  175. package/lib/{page-title → components/page-title}/page-title.module.d.ts +0 -0
  176. package/lib/{progress-bar → components/progress-bar}/progress-bar.component.d.ts +0 -0
  177. package/lib/{progress-bar → components/progress-bar}/progress-bar.module.d.ts +0 -0
  178. package/lib/{right-sidebar → components/right-sidebar}/right-sidebar.component.d.ts +2 -1
  179. package/lib/{right-sidebar → components/right-sidebar}/right-sidebar.module.d.ts +0 -0
  180. package/lib/{searchable-dropdown → components/searchable-dropdown}/searchable-dropdown.component.d.ts +1 -1
  181. package/lib/{searchable-dropdown → components/searchable-dropdown}/searchable-dropdown.module.d.ts +0 -0
  182. package/lib/{searchable-dropdown-select → components/searchable-dropdown-select}/searchable-dropdown-select.component.d.ts +1 -1
  183. package/lib/{searchable-dropdown-select → components/searchable-dropdown-select}/searchable-dropdown-select.module.d.ts +0 -0
  184. package/lib/{spinner → components/spinner}/spinner.component.d.ts +0 -0
  185. package/lib/{spinner → components/spinner}/spinner.module.d.ts +0 -0
  186. package/lib/{timeline → components/timeline}/timeline.component.d.ts +1 -1
  187. package/lib/{timeline → components/timeline}/timeline.module.d.ts +0 -0
  188. package/lib/{topbar → components/topbar}/topbar.component.d.ts +0 -0
  189. package/lib/{topbar → components/topbar}/topbar.module.d.ts +0 -0
  190. package/lib/{uploader → components/uploader}/uploader-drag-drop.directive.d.ts +0 -0
  191. package/lib/{uploader → components/uploader}/uploader.component.d.ts +1 -2
  192. package/lib/{uploader → components/uploader}/uploader.module.d.ts +0 -0
  193. package/lib/{version → components/version}/version.service.d.ts +1 -1
  194. package/lib/{view-content → components/view-content}/type-converters/booleanTypeConverter.d.ts +0 -0
  195. package/lib/{view-content → components/view-content}/type-converters/dateTypeConverter.d.ts +0 -0
  196. package/lib/{view-content → components/view-content}/type-converters/enumTypeConverter.d.ts +0 -0
  197. package/lib/{view-content → components/view-content}/type-converters/relatedFilesTypeConverter.d.ts +0 -0
  198. package/lib/{view-content → components/view-content}/type-converters/stringReplaceUnderscoreTypeConverter.d.ts +0 -0
  199. package/lib/{view-content → components/view-content}/type-converters/stringTypeConverter.d.ts +0 -0
  200. package/lib/{view-content → components/view-content}/type-converters/type-converters.model.d.ts +0 -0
  201. package/lib/{view-content → components/view-content}/view-content.service.d.ts +0 -0
  202. package/lib/{webcam → components/webcam}/webcam.component.d.ts +0 -0
  203. package/lib/{webcam → components/webcam}/webcam.module.d.ts +0 -0
  204. package/lib/{widget → components/widget}/widget.component.d.ts +0 -0
  205. package/lib/{widget → components/widget}/widget.module.d.ts +0 -0
  206. package/lib/models/alert.model.d.ts +21 -0
  207. package/lib/models/form-io.model.d.ts +27 -0
  208. package/lib/models/index.d.ts +6 -0
  209. package/lib/models/pagination.model.d.ts +7 -0
  210. package/lib/models/searchable-dropdown.model.d.ts +5 -0
  211. package/lib/models/timeline.model.d.ts +23 -0
  212. package/lib/models/version.model.d.ts +4 -0
  213. package/package.json +1 -1
  214. package/public_api.d.ts +66 -65
  215. package/valtimo-components.d.ts +22 -22
  216. package/valtimo-components.metadata.json +1 -1
  217. package/esm2015/lib/alert/alert.component.js +0 -142
  218. package/esm2015/lib/alert/alert.service.js +0 -81
  219. package/esm2015/lib/bpmn-js-diagram/bpmn-js-diagram.component.js +0 -160
  220. package/esm2015/lib/breadcrumb-navigation/breadcrumb-navigation.component.js +0 -93
  221. package/esm2015/lib/breadcrumb-navigation/breadcrumb-navigation.module.js +0 -34
  222. package/esm2015/lib/camunda/form/camunda-form.components.js +0 -37
  223. package/esm2015/lib/camunda/form/camunda-form.module.js +0 -38
  224. package/esm2015/lib/camunda/form/custom/camunda-custom-form.component.js +0 -42
  225. package/esm2015/lib/camunda/form/custom/camunda-custom-form.module.js +0 -34
  226. package/esm2015/lib/camunda/form/generated/camunda-generated-form.component.js +0 -69
  227. package/esm2015/lib/camunda/form/generated/camunda-generated-form.module.js +0 -63
  228. package/esm2015/lib/camunda/form/generated/formfield/camunda-formfield-generator.directive.js +0 -64
  229. package/esm2015/lib/camunda/form/generated/formfield/camunda-formfield.service.js +0 -67
  230. package/esm2015/lib/camunda/form/generated/formfield/date/camunda-date-formfield.component.js +0 -66
  231. package/esm2015/lib/camunda/form/generated/formfield/enum/camunda-enum-formfield.component.js +0 -31
  232. package/esm2015/lib/camunda/form/generated/formfield/validation/camunda-formfield-validation.component.js +0 -36
  233. package/esm2015/lib/camunda/form/generated/formfield/validation/date.validators.js +0 -60
  234. package/esm2015/lib/card/card.component.js +0 -37
  235. package/esm2015/lib/card/card.module.js +0 -30
  236. package/esm2015/lib/components.module.js +0 -22
  237. package/esm2015/lib/data-list/data-list.module.js +0 -30
  238. package/esm2015/lib/dropzone/dropzone.component.js +0 -143
  239. package/esm2015/lib/dropzone/dropzone.module.js +0 -32
  240. package/esm2015/lib/field-auto-focus/field-auto-focus.directive.js +0 -35
  241. package/esm2015/lib/field-auto-focus/field-auto-focus.module.js +0 -32
  242. package/esm2015/lib/file-size/file-size.pipe.js +0 -45
  243. package/esm2015/lib/filter-sidebar/filter-sidebar.component.js +0 -46
  244. package/esm2015/lib/filter-sidebar/filter-sidebar.module.js +0 -30
  245. package/esm2015/lib/form-io/form-io-uploader/form-io-uploader-edit-form.js +0 -90
  246. package/esm2015/lib/form-io/form-io-uploader/form-io-uploader.component.js +0 -72
  247. package/esm2015/lib/form-io/form-io-uploader/form-io-uploader.formio.js +0 -26
  248. package/esm2015/lib/form-io/form-io.component.js +0 -158
  249. package/esm2015/lib/form-io/form-io.module.js +0 -56
  250. package/esm2015/lib/form-io/formio-config.js +0 -22
  251. package/esm2015/lib/form-io/services/form-io-dom.service.js +0 -23
  252. package/esm2015/lib/form-io/services/form-io-state.service.js +0 -24
  253. package/esm2015/lib/left-sidebar/left-sidebar.component.js +0 -114
  254. package/esm2015/lib/left-sidebar/left-sidebar.module.js +0 -34
  255. package/esm2015/lib/list/ListFilterPipe.directive.js +0 -35
  256. package/esm2015/lib/list/list.component.js +0 -177
  257. package/esm2015/lib/list/list.module.js +0 -33
  258. package/esm2015/lib/menu/menu-item-text.component.js +0 -36
  259. package/esm2015/lib/menu/menu-routing.module.js +0 -29
  260. package/esm2015/lib/menu/menu.component.js +0 -65
  261. package/esm2015/lib/menu/menu.init.js +0 -34
  262. package/esm2015/lib/menu/menu.module.js +0 -39
  263. package/esm2015/lib/menu/menu.service.js +0 -127
  264. package/esm2015/lib/modal/modal.module.js +0 -28
  265. package/esm2015/lib/page-header/page-header.module.js +0 -34
  266. package/esm2015/lib/page-title/page-title.component.js +0 -76
  267. package/esm2015/lib/page-title/page-title.module.js +0 -32
  268. package/esm2015/lib/progress-bar/progress-bar.component.js +0 -26
  269. package/esm2015/lib/right-sidebar/right-sidebar.component.js +0 -131
  270. package/esm2015/lib/right-sidebar/right-sidebar.module.js +0 -49
  271. package/esm2015/lib/searchable-dropdown/searchable-dropdown.component.js +0 -185
  272. package/esm2015/lib/searchable-dropdown/searchable-dropdown.module.js +0 -29
  273. package/esm2015/lib/searchable-dropdown-select/searchable-dropdown-select.component.js +0 -52
  274. package/esm2015/lib/searchable-dropdown-select/searchable-dropdown-select.module.js +0 -30
  275. package/esm2015/lib/spinner/spinner.module.js +0 -36
  276. package/esm2015/lib/timeline/timeline.component.js +0 -29
  277. package/esm2015/lib/timeline/timeline.module.js +0 -32
  278. package/esm2015/lib/uploader/uploader-drag-drop.directive.js +0 -49
  279. package/esm2015/lib/uploader/uploader.component.js +0 -70
  280. package/esm2015/lib/uploader/uploader.module.js +0 -33
  281. package/esm2015/lib/version/version.service.js +0 -38
  282. package/esm2015/lib/view-content/type-converters/booleanTypeConverter.js +0 -29
  283. package/esm2015/lib/view-content/type-converters/dateTypeConverter.js +0 -30
  284. package/esm2015/lib/view-content/type-converters/relatedFilesTypeConverter.js +0 -24
  285. package/esm2015/lib/view-content/type-converters/stringReplaceUnderscoreTypeConverter.js +0 -27
  286. package/esm2015/lib/view-content/type-converters/stringTypeConverter.js +0 -24
  287. package/esm2015/lib/view-content/type-converters/type-converters.model.js +0 -37
  288. package/esm2015/lib/webcam/webcam.component.js +0 -103
  289. package/esm2015/lib/webcam/webcam.module.js +0 -32
  290. package/esm2015/lib/widget/widget.component.js +0 -80
  291. package/esm2015/lib/widget/widget.module.js +0 -30
@@ -0,0 +1,140 @@
1
+ /*
2
+ * Copyright 2015-2020 Ritense BV, the Netherlands.
3
+ *
4
+ * Licensed under EUPL, Version 1.2 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" basis,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { Component } from '@angular/core';
17
+ import { AlertType } from '../../models';
18
+ import { AlertService } from './alert.service';
19
+ export class AlertComponent {
20
+ constructor(alertService) {
21
+ this.alertService = alertService;
22
+ this.alerts = [];
23
+ this.autoCloseInMS = 5000;
24
+ }
25
+ ngOnInit() { }
26
+ ngAfterContentInit() {
27
+ this.subscription = this.alertService.onAlert().subscribe(alert => {
28
+ if (!alert.message) {
29
+ // clear alerts when an empty alert is received
30
+ this.alerts = [];
31
+ return;
32
+ }
33
+ // set empty array when an empty alert confirmations is received
34
+ if (!alert.confirmations) {
35
+ alert.confirmations = [];
36
+ }
37
+ // add alert to array if not exist
38
+ const alertExist = this.alerts.filter(x => x.message === alert.message);
39
+ if (alertExist.length === 0) {
40
+ this.alerts.push(alert);
41
+ }
42
+ if (this.inModal(alert)) {
43
+ setTimeout(() => {
44
+ this.openModal();
45
+ }, 300);
46
+ }
47
+ // auto close except alert confirmations not empty
48
+ if (this.autoCloseInMS > 0 && alert.confirmations.length === 0) {
49
+ setTimeout(() => {
50
+ this.removeAlert(alert);
51
+ }, this.autoCloseInMS);
52
+ }
53
+ });
54
+ }
55
+ closeModal() {
56
+ $('#modalNotification').modal('hide');
57
+ }
58
+ openModal() {
59
+ $('#modalNotification').modal('show');
60
+ }
61
+ alertConfirm(alert, confirm) {
62
+ alert.confirm = confirm;
63
+ this.alertService.emitAlertConfirmEvent(alert);
64
+ this.removeAlert(alert);
65
+ }
66
+ ngOnDestroy() {
67
+ // unsubscribe to avoid memory leaks
68
+ this.subscription.unsubscribe();
69
+ }
70
+ removeAlert(alert) {
71
+ if (this.inModal(alert)) {
72
+ this.closeModal();
73
+ }
74
+ // remove specified alert from array
75
+ this.alerts = this.alerts.filter(x => x.message !== alert.message);
76
+ }
77
+ inModal(alert) {
78
+ if (!alert) {
79
+ return;
80
+ }
81
+ // return true based on AlertType.ModalNotification
82
+ switch (alert.type) {
83
+ case AlertType.ModalNotification:
84
+ return true;
85
+ default:
86
+ return false;
87
+ }
88
+ }
89
+ cssClass(alert) {
90
+ if (!alert) {
91
+ return;
92
+ }
93
+ // return css class based on alert type
94
+ switch (alert.type) {
95
+ case AlertType.Success:
96
+ return 'alert alert-success';
97
+ case AlertType.Error:
98
+ return 'alert alert-danger';
99
+ case AlertType.Info:
100
+ return 'alert alert-info';
101
+ case AlertType.Warning:
102
+ return 'alert alert-warning';
103
+ case AlertType.Notification:
104
+ return 'alert alert-light';
105
+ case AlertType.ModalNotification:
106
+ return 'alert alert-light';
107
+ }
108
+ }
109
+ cssIconClass(alert) {
110
+ if (!alert) {
111
+ return;
112
+ }
113
+ // return css class based on alert type
114
+ switch (alert.type) {
115
+ case AlertType.Success:
116
+ return 'mdi mdi-check';
117
+ case AlertType.Error:
118
+ return 'mdi mdi-close-circle-o';
119
+ case AlertType.Info:
120
+ return 'mdi mdi-info-outline';
121
+ case AlertType.Warning:
122
+ return 'mdi mdi-alert-triangle';
123
+ case AlertType.Notification:
124
+ return 'mdi mdi-notifications';
125
+ case AlertType.ModalNotification:
126
+ return 'mdi mdi-notifications';
127
+ }
128
+ }
129
+ }
130
+ AlertComponent.decorators = [
131
+ { type: Component, args: [{
132
+ selector: 'valtimo-alert',
133
+ template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div *ngFor=\"let alert of alerts\" class=\"{{ cssClass(alert) }} rounded-0 m-0 alert-dismissable\">\n <div *ngIf=\"inModal(alert)\">\n <!-- Modal -->\n <div class=\"modal fade\" id=\"modalNotification\" tabindex=\"-1\" role=\"dialog\">\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-body p-0\">\n <button class=\"close\" type=\"button\" (click)=\"removeAlert(alert)\">\n <span class=\"mdi mdi-close\" aria-hidden=\"true\"></span>\n </button>\n <div class=\"icon\">\n <span class=\"{{ alert.iconClass || cssIconClass(alert) }}\"></span>\n </div>\n <div class=\"message\">\n <div [innerHTML]=\"alert.message\"></div>\n </div>\n </div>\n <div class=\"modal-footer pt-0\" *ngIf=\"alert.confirmations?.length\">\n <button\n class=\"{{ confirmation.class }} mr-2\"\n *ngFor=\"let confirmation of alert.confirmations\"\n (click)=\"alertConfirm(alert, confirmation.value)\"\n >\n {{ confirmation.label }}\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"!inModal(alert)\" class=\"alert-block\">\n <div class=\"icon\"><span class=\"{{ alert.iconClass || cssIconClass(alert) }}\"></span></div>\n <div class=\"message\">\n <div [innerHTML]=\"alert.message\"></div>\n <div class=\"mt-3\" *ngIf=\"alert.confirmations?.length\">\n <button\n class=\"{{ confirmation.class }} mr-2\"\n *ngFor=\"let confirmation of alert.confirmations\"\n (click)=\"alertConfirm(alert, confirmation.value)\"\n >\n {{ confirmation.label }}\n </button>\n </div>\n </div>\n <button class=\"close\" type=\"button\" (click)=\"removeAlert(alert)\">\n <span class=\"mdi mdi-close\" aria-hidden=\"true\"></span>\n </button>\n </div>\n</div>\n",
134
+ styles: [".alert-block{display:flex;flex-direction:row;justify-content:space-between}.alert-block .message{width:100%}.alert-block .icon{align-items:center;display:flex}.alert .message{font-size:1.1rem!important;line-height:1.5rem!important;padding:2rem 5rem 2rem 2rem!important}.alert .close{color:#fff!important;opacity:1!important;padding:2rem 2rem 0 0!important;right:0!important}.alert .icon{padding-left:2rem!important}.alert-warning{color:#404040!important}.alert-light .close,.alert-warning .close{color:#404040!important;opacity:1!important}"]
135
+ },] }
136
+ ];
137
+ AlertComponent.ctorParameters = () => [
138
+ { type: AlertService }
139
+ ];
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii90bXAvamVua2lucy00YzNiYjc3MC93b3Jrc3BhY2UvVmFsdGltb18tX0FuZ3VsYXJfTGlicmFyaWVzX21haW4vcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2FsZXJ0L2FsZXJ0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBbUIsU0FBUyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUU3RSxPQUFPLEVBQVEsU0FBUyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQzlDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQVM3QyxNQUFNLE9BQU8sY0FBYztJQUt6QixZQUFvQixZQUEwQjtRQUExQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUo5QyxXQUFNLEdBQVksRUFBRSxDQUFDO1FBS25CLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQzVCLENBQUM7SUFFRCxRQUFRLEtBQUksQ0FBQztJQUViLGtCQUFrQjtRQUNoQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2hFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFO2dCQUNsQiwrQ0FBK0M7Z0JBQy9DLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO2dCQUNqQixPQUFPO2FBQ1I7WUFFRCxnRUFBZ0U7WUFDaEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUU7Z0JBQ3hCLEtBQUssQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO2FBQzFCO1lBRUQsa0NBQWtDO1lBQ2xDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMs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QUFDO0lBRUQsWUFBWSxDQUFDLEtBQVk7UUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE9BQU87U0FDUjtRQUVELHVDQUF1QztRQUN2QyxRQUFRLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFDbEIsS0FBSyxTQUFTLENBQUMsT0FBTztnQkFDcEIsT0FBTyxlQUFlLENBQUM7WUFDekIsS0FBSyxTQUFTLENBQUMsS0FBSztnQkFDbEIsT0FBTyx3QkFBd0IsQ0FBQztZQUNsQyxLQUFLLFNBQVMsQ0FBQyxJQUFJO2dCQUNqQixPQUFPLHNCQUFzQixDQUFDO1lBQ2hDLEtBQUssU0FBUyxDQUFDLE9BQU87Z0JBQ3BCLE9BQU8sd0JBQXdCLENBQUM7WUFDbEMsS0FBSyxTQUFTLENBQUMsWUFBWTtnQkFDekIsT0FBTyx1QkFBdUIsQ0FBQztZQUNqQyxLQUFLLFNBQVMsQ0FBQyxpQkFBaUI7Z0JBQzlCLE9BQU8sdUJBQXVCLENBQUM7U0FDbEM7SUFDSCxDQUFDOzs7WUFySUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxlQUFlO2dCQUN6QixncEZBQXFDOzthQUV0Qzs7O1lBUk8sWUFBWSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIwIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7QWZ0ZXJDb250ZW50SW5pdCwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0FsZXJ0LCBBbGVydFR5cGV9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge0FsZXJ0U2VydmljZX0gZnJvbSAnLi9hbGVydC5zZXJ2aWNlJztcblxuZGVjbGFyZSB2YXIgJDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1hbGVydCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hbGVydC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FsZXJ0LmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQWxlcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gIGFsZXJ0czogQWxlcnRbXSA9IFtdO1xuICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgYXV0b0Nsb3NlSW5NUzogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UpIHtcbiAgICB0aGlzLmF1dG9DbG9zZUluTVMgPSA1MDAwO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7fVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuYWxlcnRTZXJ2aWNlLm9uQWxlcnQoKS5zdWJzY3JpYmUoYWxlcnQgPT4ge1xuICAgICAgaWYgKCFhbGVydC5tZXNzYWdlKSB7XG4gICAgICAgIC8vIGNsZWFyIGFsZXJ0cyB3aGVuIGFuIGVtcHR5IGFsZXJ0IGlzIHJlY2VpdmVkXG4gICAgICAgIHRoaXMuYWxlcnRzID0gW107XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gc2V0IGVtcHR5IGFycmF5IHdoZW4gYW4gZW1wdHkgYWxlcnQgY29uZmlybWF0aW9ucyBpcyByZWNlaXZlZFxuICAgICAgaWYgKCFhbGVydC5jb25maXJtYXRpb25zKSB7XG4gICAgICAgIGFsZXJ0LmNvbmZpcm1hdGlvbnMgPSBbXTtcbiAgICAgIH1cblxuICAgICAgLy8gYWRkIGFsZXJ0IHRvIGFycmF5IGlmIG5vdCBleGlzdFxuICAgICAgY29uc3QgYWxlcnRFeGlzdCA9IHRoaXMuYWxlcnRzLmZpbHRlcih4ID0+IHgubWVzc2FnZSA9PT0gYWxlcnQubWVzc2FnZSk7XG4gICAgICBpZiAoYWxlcnRFeGlzdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy5hbGVydHMucHVzaChhbGVydCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmluTW9kYWwoYWxlcnQpKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMub3Blbk1vZGFsKCk7XG4gICAgICAgIH0sIDMwMCk7XG4gICAgICB9XG5cbiAgICAgIC8vIGF1dG8gY2xvc2UgZXhjZXB0IGFsZXJ0IGNvbmZpcm1hdGlvbnMgbm90IGVtcHR5XG4gICAgICBpZiAodGhpcy5hdXRvQ2xvc2VJbk1TID4gMCAmJiBhbGVydC5jb25maXJtYXRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLnJlbW92ZUFsZXJ0KGFsZXJ0KTtcbiAgICAgICAgfSwgdGhpcy5hdXRvQ2xvc2VJbk1TKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGNsb3NlTW9kYWwoKSB7XG4gICAgJCgnI21vZGFsTm90aWZpY2F0aW9uJykubW9kYWwoJ2hpZGUnKTtcbiAgfVxuXG4gIG9wZW5Nb2RhbCgpIHtcbiAgICAkKCcjbW9kYWxOb3RpZmljYXRpb24nKS5tb2RhbCgnc2hvdycpO1xuICB9XG5cbiAgYWxlcnRDb25maXJtKGFsZXJ0OiBBbGVydCwgY29uZmlybTogYW55KSB7XG4gICAgYWxlcnQuY29uZmlybSA9IGNvbmZpcm07XG4gICAgdGhpcy5hbGVydFNlcnZpY2UuZW1pdEFsZXJ0Q29uZmlybUV2ZW50KGFsZXJ0KTtcbiAgICB0aGlzLnJlbW92ZUFsZXJ0KGFsZXJ0KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIC8vIHVuc3Vic2NyaWJlIHRvIGF2b2lkIG1lbW9yeSBsZWFrc1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICByZW1vdmVBbGVydChhbGVydDogQWxlcnQpIHtcbiAgICBpZiAodGhpcy5pbk1vZGFsKGFsZXJ0KSkge1xuICAgICAgdGhpcy5jbG9zZU1vZGFsKCk7XG4gICAgfVxuICAgIC8vIHJlbW92ZSBzcGVjaWZpZWQgYWxlcnQgZnJvbSBhcnJheVxuICAgIHRoaXMuYWxlcnRzID0gdGhpcy5hbGVydHMuZmlsdGVyKHggPT4geC5tZXNzYWdlICE9PSBhbGVydC5tZXNzYWdlKTtcbiAgfVxuXG4gIGluTW9kYWwoYWxlcnQ6IEFsZXJ0KSB7XG4gICAgaWYgKCFhbGVydCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIHJldHVybiB0cnVlIGJhc2VkIG9uIEFsZXJ0VHlwZS5Nb2RhbE5vdGlmaWNhdGlvblxuICAgIHN3aXRjaCAoYWxlcnQudHlwZSkge1xuICAgICAgY2FzZSBBbGVydFR5cGUuTW9kYWxOb3RpZmljYXRpb246XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGNzc0NsYXNzKGFsZXJ0OiBBbGVydCkge1xuICAgIGlmICghYWxlcnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyByZXR1cm4gY3NzIGNsYXNzIGJhc2VkIG9uIGFsZXJ0IHR5cGVcbiAgICBzd2l0Y2ggKGFsZXJ0LnR5cGUpIHtcbiAgICAgIGNhc2UgQWxlcnRUeXBlLlN1Y2Nlc3M6XG4gICAgICAgIHJldHVybiAnYWxlcnQgYWxlcnQtc3VjY2Vzcyc7XG4gICAgICBjYXNlIEFsZXJ0VHlwZS5FcnJvcjpcbiAgICAgICAgcmV0dXJuICdhbGVydCBhbGVydC1kYW5nZXInO1xuICAgICAgY2FzZSBBbGVydFR5cGUuSW5mbzpcbiAgICAgICAgcmV0dXJuICdhbGVydCBhbGVydC1pbmZvJztcbiAgICAgIGNhc2UgQWxlcnRUeXBlLldhcm5pbmc6XG4gICAgICAgIHJldHVybiAnYWxlcnQgYWxlcnQtd2FybmluZyc7XG4gICAgICBjYXNlIEFsZXJ0VHlwZS5Ob3RpZmljYXRpb246XG4gICAgICAgIHJldHVybiAnYWxlcnQgYWxlcnQtbGlnaHQnO1xuICAgICAgY2FzZSBBbGVydFR5cGUuTW9kYWxOb3RpZmljYXRpb246XG4gICAgICAgIHJldHVybiAnYWxlcnQgYWxlcnQtbGlnaHQnO1xuICAgIH1cbiAgfVxuXG4gIGNzc0ljb25DbGFzcyhhbGVydDogQWxlcnQpIHtcbiAgICBpZiAoIWFsZXJ0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gcmV0dXJuIGNzcyBjbGFzcyBiYXNlZCBvbiBhbGVydCB0eXBlXG4gICAgc3dpdGNoIChhbGVydC50eXBlKSB7XG4gICAgICBjYXNlIEFsZXJ0VHlwZS5TdWNjZXNzOlxuICAgICAgICByZXR1cm4gJ21kaSBtZGktY2hlY2snO1xuICAgICAgY2FzZSBBbGVydFR5cGUuRXJyb3I6XG4gICAgICAgIHJldHVybiAnbWRpIG1kaS1jbG9zZS1jaXJjbGUtbyc7XG4gICAgICBjYXNlIEFsZXJ0VHlwZS5JbmZvOlxuICAgICAgICByZXR1cm4gJ21kaSBtZGktaW5mby1vdXRsaW5lJztcbiAgICAgIGNhc2UgQWxlcnRUeXBlLldhcm5pbmc6XG4gICAgICAgIHJldHVybiAnbWRpIG1kaS1hbGVydC10cmlhbmdsZSc7XG4gICAgICBjYXNlIEFsZXJ0VHlwZS5Ob3RpZmljYXRpb246XG4gICAgICAgIHJldHVybiAnbWRpIG1kaS1ub3RpZmljYXRpb25zJztcbiAgICAgIGNhc2UgQWxlcnRUeXBlLk1vZGFsTm90aWZpY2F0aW9uOlxuICAgICAgICByZXR1cm4gJ21kaSBtZGktbm90aWZpY2F0aW9ucyc7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -15,18 +15,14 @@
15
15
  */
16
16
  import { NgModule } from '@angular/core';
17
17
  import { CommonModule } from '@angular/common';
18
- import { TopbarComponent } from './topbar.component';
19
- import { RouterModule } from '@angular/router';
20
- export class TopbarModule {
18
+ import { AlertComponent } from './alert.component';
19
+ export class AlertModule {
21
20
  }
22
- TopbarModule.decorators = [
21
+ AlertModule.decorators = [
23
22
  { type: NgModule, args: [{
24
- declarations: [TopbarComponent],
25
- imports: [
26
- CommonModule,
27
- RouterModule
28
- ],
29
- exports: [TopbarComponent]
23
+ imports: [CommonModule],
24
+ declarations: [AlertComponent],
25
+ exports: [AlertComponent],
30
26
  },] }
31
27
  ];
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wYmFyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vY29tcG9uZW50cy9zcmMvbGliL3RvcGJhci90b3BiYXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQVU3QyxNQUFNLE9BQU8sWUFBWTs7O1lBUnhCLFFBQVEsU0FBQztnQkFDUixZQUFZLEVBQUUsQ0FBQyxlQUFlLENBQUM7Z0JBQy9CLE9BQU8sRUFBRTtvQkFDUCxZQUFZO29CQUNaLFlBQVk7aUJBQ2I7Z0JBQ0QsT0FBTyxFQUFFLENBQUMsZUFBZSxDQUFDO2FBQzNCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjAgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7VG9wYmFyQ29tcG9uZW50fSBmcm9tICcuL3RvcGJhci5jb21wb25lbnQnO1xuaW1wb3J0IHtSb3V0ZXJNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1RvcGJhckNvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUm91dGVyTW9kdWxlXG4gIF0sXG4gIGV4cG9ydHM6IFtUb3BiYXJDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIFRvcGJhck1vZHVsZSB7XG59XG4iXX0=
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Ii90bXAvamVua2lucy00YzNiYjc3MC93b3Jrc3BhY2UvVmFsdGltb18tX0FuZ3VsYXJfTGlicmFyaWVzX21haW4vcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2FsZXJ0L2FsZXJ0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQU9qRCxNQUFNLE9BQU8sV0FBVzs7O1lBTHZCLFFBQVEsU0FBQztnQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7Z0JBQ3ZCLFlBQVksRUFBRSxDQUFDLGNBQWMsQ0FBQztnQkFDOUIsT0FBTyxFQUFFLENBQUMsY0FBYyxDQUFDO2FBQzFCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjAgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7QWxlcnRDb21wb25lbnR9IGZyb20gJy4vYWxlcnQuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGRlY2xhcmF0aW9uczogW0FsZXJ0Q29tcG9uZW50XSxcbiAgZXhwb3J0czogW0FsZXJ0Q29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgQWxlcnRNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,81 @@
1
+ /*
2
+ * Copyright 2015-2020 Ritense BV, the Netherlands.
3
+ *
4
+ * Licensed under EUPL, Version 1.2 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" basis,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { EventEmitter, Injectable } from '@angular/core';
17
+ import { NavigationStart, Router } from '@angular/router';
18
+ import { Subject } from 'rxjs';
19
+ import { Alert, AlertType } from '../../models';
20
+ import * as i0 from "@angular/core";
21
+ import * as i1 from "@angular/router";
22
+ export class AlertService {
23
+ constructor(router) {
24
+ this.router = router;
25
+ this.confirmed = new EventEmitter();
26
+ this.subject = new Subject();
27
+ // clear alert messages on route change unless 'keepAfterRouteChange' flag is true
28
+ this.router.events.subscribe(event => {
29
+ if (event instanceof NavigationStart) {
30
+ // clear alert messages
31
+ this.clear();
32
+ }
33
+ });
34
+ }
35
+ // enable subscribing to alerts observable
36
+ onAlert() {
37
+ return this.subject.asObservable();
38
+ }
39
+ // convenience methods
40
+ success(message, confirmations, iconClass) {
41
+ this.alert(new Alert({ message, type: AlertType.Success, confirmations, iconClass }));
42
+ }
43
+ error(message, confirmations, iconClass) {
44
+ this.alert(new Alert({ message, type: AlertType.Error, confirmations, iconClass }));
45
+ }
46
+ info(message, confirmations, iconClass) {
47
+ this.alert(new Alert({ message, type: AlertType.Info, confirmations, iconClass }));
48
+ }
49
+ warning(message, confirmations, iconClass) {
50
+ this.alert(new Alert({ message, type: AlertType.Warning, confirmations, iconClass }));
51
+ }
52
+ notification(message, confirmations, iconClass) {
53
+ this.alert(new Alert({ message, type: AlertType.Notification, confirmations, iconClass }));
54
+ }
55
+ modalNotification(message, confirmations, iconClass) {
56
+ this.alert(new Alert({ message, type: AlertType.ModalNotification, confirmations, iconClass }));
57
+ }
58
+ // main alert method
59
+ alert(alert) {
60
+ this.subject.next(alert);
61
+ }
62
+ // clear alerts
63
+ clear() {
64
+ this.subject.next(new Alert({}));
65
+ }
66
+ // emit confirm
67
+ emitAlertConfirmEvent(alert) {
68
+ this.confirmed.emit(alert);
69
+ }
70
+ getAlertConfirmChangeEmitter() {
71
+ return this.confirmed;
72
+ }
73
+ }
74
+ AlertService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AlertService_Factory() { return new AlertService(i0.ɵɵinject(i1.Router)); }, token: AlertService, providedIn: "root" });
75
+ AlertService.decorators = [
76
+ { type: Injectable, args: [{ providedIn: 'root' },] }
77
+ ];
78
+ AlertService.ctorParameters = () => [
79
+ { type: Router }
80
+ ];
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIvdG1wL2plbmtpbnMtNGMzYmI3NzAvd29ya3NwYWNlL1ZhbHRpbW9fLV9Bbmd1bGFyX0xpYnJhcmllc19tYWluL3Byb2plY3RzL3ZhbHRpbW8vY29tcG9uZW50cy9zcmMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9hbGVydC9hbGVydC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFlBQVksRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFDLGVBQWUsRUFBRSxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQWEsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxLQUFLLEVBQUUsU0FBUyxFQUFDLE1BQU0sY0FBYyxDQUFDOzs7QUFHOUMsTUFBTSxPQUFPLFlBQVk7SUFJdkIsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFIM0IsY0FBUyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pELFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFBUyxDQUFDO1FBR3JDLGtGQUFrRjtRQUNsRixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDbkMsSUFBSSxLQUFLLFlBQVksZUFBZSxFQUFFO2dCQUNwQyx1QkFBdUI7Z0JBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNkO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsMENBQTBDO0lBQzFDLE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELHNCQUFzQjtJQUN0QixPQUFPLENBQUMsT0FBZSxFQUFFLGFBQW1CLEVBQUUsU0FBa0I7UUFDOUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBZSxFQUFFLGFBQW1CLEVBQUUsU0FBa0I7UUFDNUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFRCxJQUFJLENBQUMsT0FBZSxFQUFFLGFBQW1CLEVBQUUsU0FBa0I7UUFDM0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRCxPQUFPLENBQUMsT0FBZSxFQUFFLGFBQW1CLEVBQUUsU0FBa0I7UUFDOUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFRCxZQUFZLENBQUMsT0FBZSxFQUFFLGFBQW1CLEVBQUUsU0FBa0I7UUFDbkUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxPQUFlLEVBQUUsYUFBbUIsRUFBRSxTQUFrQjtRQUN4RSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBRUQsb0JBQW9CO0lBQ3BCLEtBQUssQ0FBQyxLQUFZO1FBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxlQUFlO0lBQ2YsS0FBSztRQUNILElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELGVBQWU7SUFDZixxQkFBcUIsQ0FBQyxLQUFZO1FBQ2hDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCw0QkFBNEI7UUFDMUIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7Ozs7WUE5REYsVUFBVSxTQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQzs7O1lBSlAsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIwIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7RXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmF2aWdhdGlvblN0YXJ0LCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge09ic2VydmFibGUsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBbGVydCwgQWxlcnRUeXBlfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBBbGVydFNlcnZpY2Uge1xuICBwdWJsaWMgY29uZmlybWVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcHJpdmF0ZSBzdWJqZWN0ID0gbmV3IFN1YmplY3Q8QWxlcnQ+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge1xuICAgIC8vIGNsZWFyIGFsZXJ0IG1lc3NhZ2VzIG9uIHJvdXRlIGNoYW5nZSB1bmxlc3MgJ2tlZXBBZnRlclJvdXRlQ2hhbmdlJyBmbGFnIGlzIHRydWVcbiAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xuICAgICAgICAvLyBjbGVhciBhbGVydCBtZXNzYWdlc1xuICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyBlbmFibGUgc3Vic2NyaWJpbmcgdG8gYWxlcnRzIG9ic2VydmFibGVcbiAgb25BbGVydCgpOiBPYnNlcnZhYmxlPEFsZXJ0PiB7XG4gICAgcmV0dXJuIHRoaXMuc3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8vIGNvbnZlbmllbmNlIG1ldGhvZHNcbiAgc3VjY2VzcyhtZXNzYWdlOiBzdHJpbmcsIGNvbmZpcm1hdGlvbnM/OiBhbnksIGljb25DbGFzcz86IHN0cmluZykge1xuICAgIHRoaXMuYWxlcnQobmV3IEFsZXJ0KHttZXNzYWdlLCB0eXBlOiBBbGVydFR5cGUuU3VjY2VzcywgY29uZmlybWF0aW9ucywgaWNvbkNsYXNzfSkpO1xuICB9XG5cbiAgZXJyb3IobWVzc2FnZTogc3RyaW5nLCBjb25maXJtYXRpb25zPzogYW55LCBpY29uQ2xhc3M/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmFsZXJ0KG5ldyBBbGVydCh7bWVzc2FnZSwgdHlwZTogQWxlcnRUeXBlLkVycm9yLCBjb25maXJtYXRpb25zLCBpY29uQ2xhc3N9KSk7XG4gIH1cblxuICBpbmZvKG1lc3NhZ2U6IHN0cmluZywgY29uZmlybWF0aW9ucz86IGFueSwgaWNvbkNsYXNzPzogc3RyaW5nKSB7XG4gICAgdGhpcy5hbGVydChuZXcgQWxlcnQoe21lc3NhZ2UsIHR5cGU6IEFsZXJ0VHlwZS5JbmZvLCBjb25maXJtYXRpb25zLCBpY29uQ2xhc3N9KSk7XG4gIH1cblxuICB3YXJuaW5nKG1lc3NhZ2U6IHN0cmluZywgY29uZmlybWF0aW9ucz86IGFueSwgaWNvbkNsYXNzPzogc3RyaW5nKSB7XG4gICAgdGhpcy5hbGVydChuZXcgQWxlcnQoe21lc3NhZ2UsIHR5cGU6IEFsZXJ0VHlwZS5XYXJuaW5nLCBjb25maXJtYXRpb25zLCBpY29uQ2xhc3N9KSk7XG4gIH1cblxuICBub3RpZmljYXRpb24obWVzc2FnZTogc3RyaW5nLCBjb25maXJtYXRpb25zPzogYW55LCBpY29uQ2xhc3M/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmFsZXJ0KG5ldyBBbGVydCh7bWVzc2FnZSwgdHlwZTogQWxlcnRUeXBlLk5vdGlmaWNhdGlvbiwgY29uZmlybWF0aW9ucywgaWNvbkNsYXNzfSkpO1xuICB9XG5cbiAgbW9kYWxOb3RpZmljYXRpb24obWVzc2FnZTogc3RyaW5nLCBjb25maXJtYXRpb25zPzogYW55LCBpY29uQ2xhc3M/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmFsZXJ0KG5ldyBBbGVydCh7bWVzc2FnZSwgdHlwZTogQWxlcnRUeXBlLk1vZGFsTm90aWZpY2F0aW9uLCBjb25maXJtYXRpb25zLCBpY29uQ2xhc3N9KSk7XG4gIH1cblxuICAvLyBtYWluIGFsZXJ0IG1ldGhvZFxuICBhbGVydChhbGVydDogQWxlcnQpIHtcbiAgICB0aGlzLnN1YmplY3QubmV4dChhbGVydCk7XG4gIH1cblxuICAvLyBjbGVhciBhbGVydHNcbiAgY2xlYXIoKSB7XG4gICAgdGhpcy5zdWJqZWN0Lm5leHQobmV3IEFsZXJ0KHt9KSk7XG4gIH1cblxuICAvLyBlbWl0IGNvbmZpcm1cbiAgZW1pdEFsZXJ0Q29uZmlybUV2ZW50KGFsZXJ0OiBBbGVydCkge1xuICAgIHRoaXMuY29uZmlybWVkLmVtaXQoYWxlcnQpO1xuICB9XG5cbiAgZ2V0QWxlcnRDb25maXJtQ2hhbmdlRW1pdHRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maXJtZWQ7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,160 @@
1
+ /*
2
+ * Copyright 2015-2020 Ritense BV, the Netherlands.
3
+ *
4
+ * Licensed under EUPL, Version 1.2 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" basis,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { Component, ElementRef, Input, Output, ViewChild, EventEmitter, } from '@angular/core';
17
+ import * as BpmnJS from 'bpmn-js/dist/bpmn-navigated-viewer.production.min.js';
18
+ import * as heatmap from 'heatmap.js-fixed/build/heatmap.js';
19
+ export class BpmnJsDiagramComponent {
20
+ constructor() {
21
+ this.importDone = new EventEmitter();
22
+ this.heatPoints = { data: [] };
23
+ }
24
+ ngOnInit() {
25
+ this.bpmnJS = new BpmnJS();
26
+ this.bpmnJS.on('import.done', ({ error }) => {
27
+ if (!error) {
28
+ const canvas = this.bpmnJS.get('canvas'), eventBus = this.bpmnJS.get('eventBus');
29
+ if (this.historicActivityInstances) {
30
+ this.historicActivityInstances.forEach(instance => {
31
+ canvas.addMarker(instance.activityId, instance.endTime ? 'highlight-overlay-past' : 'highlight-overlay-current');
32
+ });
33
+ }
34
+ canvas.zoom('fit-viewport', 'auto');
35
+ if (this.heatmapDuration || this.heatmapCount) {
36
+ eventBus.on('canvas.init', () => {
37
+ if (this.heatmapMode) {
38
+ this.clearHeatmap();
39
+ }
40
+ this.getHeatmapData();
41
+ });
42
+ eventBus.on('canvas.viewbox.changing', () => {
43
+ if (this.heatmapMode) {
44
+ this.clearHeatmap();
45
+ }
46
+ });
47
+ eventBus.on('canvas.viewbox.changed', () => {
48
+ this.getHeatmapData();
49
+ });
50
+ }
51
+ }
52
+ });
53
+ }
54
+ ngAfterContentInit() {
55
+ this.bpmnJS.importXML(this.bpmn20Xml);
56
+ this.bpmnJS.attachTo(this.el.nativeElement);
57
+ }
58
+ getHeatmapData() {
59
+ let inputData, valueKey;
60
+ this.heatPoints = { data: [] };
61
+ this.min = 0;
62
+ this.max = 0;
63
+ if (this.heatmapDuration) {
64
+ inputData = this.heatmapDuration;
65
+ valueKey = 'averageDurationInMilliseconds';
66
+ }
67
+ else if (this.heatmapCount) {
68
+ inputData = this.heatmapCount;
69
+ valueKey = 'totalCount';
70
+ }
71
+ if (inputData) {
72
+ Object.keys(inputData).forEach(key => {
73
+ const diagramContainer = this.el.nativeElement.querySelector('svg').getBoundingClientRect(), diagramElm = this.el.nativeElement
74
+ .querySelector(`g[data-element-id=${key}]`)
75
+ .getBoundingClientRect();
76
+ this.setMax(key);
77
+ this.heatPoints.data.push({
78
+ x: Math.round(diagramElm.x - diagramContainer.x + diagramElm.width / 2),
79
+ y: Math.round(diagramElm.y - diagramContainer.y + diagramElm.height / 2),
80
+ value: inputData[key][valueKey],
81
+ radius: diagramElm.width / 2,
82
+ });
83
+ if (inputData[key].count > 0) {
84
+ this.addCounterActiveOverlays(key, inputData);
85
+ }
86
+ });
87
+ if (this.heatmapMode) {
88
+ this.showHeatmap();
89
+ }
90
+ }
91
+ }
92
+ setMax(key) {
93
+ if (this.heatmapDuration) {
94
+ this.max = Math.max(this.heatmapDuration[key].averageDurationInMilliseconds, this.max);
95
+ }
96
+ else if (this.heatmapCount) {
97
+ this.max = Math.max(this.heatmapCount[key].totalCount + this.heatmapCount[key].count, this.max);
98
+ }
99
+ }
100
+ addCounterActiveOverlays(key, inputData) {
101
+ const overlays = this.bpmnJS.get('overlays');
102
+ overlays.add(key, {
103
+ position: {
104
+ bottom: -10,
105
+ left: 0,
106
+ },
107
+ show: {
108
+ minZoom: 0,
109
+ maxZoom: 5.0,
110
+ },
111
+ html: `<span class="badge badge-pill badge-primary">${inputData[key].count}</span>`,
112
+ });
113
+ }
114
+ showHeatmap() {
115
+ this.heatMapInstance = heatmap.create({
116
+ radius: 54,
117
+ blur: 0.7,
118
+ maxOpacity: 0.4,
119
+ minOpacity: 0,
120
+ container: this.el.nativeElement,
121
+ });
122
+ this.heatMapInstance.setData({
123
+ min: this.min,
124
+ max: this.max,
125
+ data: this.heatPoints.data,
126
+ });
127
+ }
128
+ clearHeatmap() {
129
+ this.heatMapInstance.setData({ data: [] });
130
+ }
131
+ toggleHeatmap() {
132
+ this.heatmapMode = !this.heatmapMode;
133
+ if (this.heatmapMode) {
134
+ this.showHeatmap();
135
+ }
136
+ else {
137
+ this.clearHeatmap();
138
+ }
139
+ }
140
+ ngOnDestroy() {
141
+ this.bpmnJS.destroy();
142
+ }
143
+ }
144
+ BpmnJsDiagramComponent.decorators = [
145
+ { type: Component, args: [{
146
+ selector: 'valtimo-bpmn-js-diagram',
147
+ template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"p-4\" *ngIf=\"heatmapDuration || heatmapCount\">\n <div class=\"switch-button switch-button-sm switch-button-success\">\n <input\n type=\"checkbox\"\n id=\"toggleHeatmap\"\n [checked]=\"heatmapMode\"\n (click)=\"toggleHeatmap()\"\n /><span> <label for=\"toggleHeatmap\"></label></span>\n </div>\n</div>\n\n<div #ref class=\"diagram-container\"></div>\n\n<div *ngIf=\"historicActivityInstances\" class=\"p-4 text-center legenda-holder\">\n <span\n ><div class=\"legenda highlight-overlay-past\"></div>\n Executed tasks</span\n >\n <span class=\"ml-3\"\n ><div class=\"legenda highlight-overlay-current\"></div>\n Current tasks</span\n >\n</div>\n\n<div *ngIf=\"heatmapDuration || heatmapCount\" class=\"p-4 text-center legenda-holder\">\n <span\n ><span class=\"badge badge-pill badge-primary\">N</span>&nbsp;&nbsp;Amount of currently active\n instances of this task.</span\n >\n <span\n >&nbsp;&nbsp;|&nbsp;&nbsp;Red/yellow/green orbs: The amount of times the task is executed in\n comparison to the other tasks.</span\n >\n</div>\n",
148
+ styles: [""]
149
+ },] }
150
+ ];
151
+ BpmnJsDiagramComponent.ctorParameters = () => [];
152
+ BpmnJsDiagramComponent.propDecorators = {
153
+ el: [{ type: ViewChild, args: ['ref', { static: true },] }],
154
+ importDone: [{ type: Output }],
155
+ bpmn20Xml: [{ type: Input }],
156
+ heatmapDuration: [{ type: Input }],
157
+ heatmapCount: [{ type: Input }],
158
+ historicActivityInstances: [{ type: Input }]
159
+ };
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnBtbi1qcy1kaWFncmFtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvdG1wL2plbmtpbnMtNGMzYmI3NzAvd29ya3NwYWNlL1ZhbHRpbW9fLV9Bbmd1bGFyX0xpYnJhcmllc19tYWluL3Byb2plY3RzL3ZhbHRpbW8vY29tcG9uZW50cy9zcmMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9icG1uLWpzLWRpYWdyYW0vYnBtbi1qcy1kaWFncmFtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULFlBQVksR0FFYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEtBQUssTUFBTSxNQUFNLHNEQUFzRCxDQUFDO0FBQy9FLE9BQU8sS0FBSyxPQUFPLE1BQU0sbUNBQW1DLENBQUM7QUFPN0QsTUFBTSxPQUFPLHNCQUFzQjtJQWdCakM7UUFYaUIsZUFBVSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBTzdELGVBQVUsR0FBRyxFQUFDLElBQUksRUFBRSxFQUFFLEVBQUMsQ0FBQztJQUloQixDQUFDO0lBRWhCLFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksTUFBTSxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUMsRUFBQyxLQUFLLEVBQUMsRUFBRSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ1YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQ3RDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFFekMsSUFBSSxJQUFJLENBQUMseUJBQXlCLEVBQUU7b0JBQ2xDLElBQUks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aktGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUseUJBQXlCO2dCQUNuQyw2dURBQStDOzthQUVoRDs7OztpQkFLRSxTQUFTLFNBQUMsS0FBSyxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQzt5QkFDL0IsTUFBTTt3QkFDTixLQUFLOzhCQUNMLEtBQUs7MkJBQ0wsS0FBSzt3Q0FDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjAgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICogYXMgQnBtbkpTIGZyb20gJ2JwbW4tanMvZGlzdC9icG1uLW5hdmlnYXRlZC12aWV3ZXIucHJvZHVjdGlvbi5taW4uanMnO1xuaW1wb3J0ICogYXMgaGVhdG1hcCBmcm9tICdoZWF0bWFwLmpzLWZpeGVkL2J1aWxkL2hlYXRtYXAuanMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWJwbW4tanMtZGlhZ3JhbScsXG4gIHRlbXBsYXRlVXJsOiAnLi9icG1uLWpzLWRpYWdyYW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9icG1uLWpzLWRpYWdyYW0uY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBCcG1uSnNEaWFncmFtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIGJwbW5KUzogQnBtbkpTO1xuICBwcml2YXRlIGhlYXRNYXBJbnN0YW5jZTogYW55O1xuXG4gIEBWaWV3Q2hpbGQoJ3JlZicsIHtzdGF0aWM6IHRydWV9KSBwdWJsaWMgZWw6IEVsZW1lbnRSZWY7XG4gIEBPdXRwdXQoKSBwdWJsaWMgaW1wb3J0RG9uZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBJbnB1dCgpIHB1YmxpYyBicG1uMjBYbWw6IGFueTtcbiAgQElucHV0KCkgcHVibGljIGhlYXRtYXBEdXJhdGlvbj86IGFueTtcbiAgQElucHV0KCkgcHVibGljIGhlYXRtYXBDb3VudD86IGFueTtcbiAgQElucHV0KCkgcHVibGljIGhpc3RvcmljQWN0aXZpdHlJbnN0YW5jZXM/OiBhbnk7XG5cbiAgcHVibGljIGhlYXRtYXBNb2RlOiBib29sZWFuO1xuICBwdWJsaWMgaGVhdFBvaW50cyA9IHtkYXRhOiBbXX07XG4gIHB1YmxpYyBtaW46IG51bWJlcjtcbiAgcHVibGljIG1heDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmJwbW5KUyA9IG5ldyBCcG1uSlMoKTtcbiAgICB0aGlzLmJwbW5KUy5vbignaW1wb3J0LmRvbmUnLCAoe2Vycm9yfSkgPT4ge1xuICAgICAgaWYgKCFlcnJvcikge1xuICAgICAgICBjb25zdCBjYW52YXMgPSB0aGlzLmJwbW5KUy5nZXQoJ2NhbnZhcycpLFxuICAgICAgICAgIGV2ZW50QnVzID0gdGhpcy5icG1uSlMuZ2V0KCdldmVudEJ1cycpO1xuXG4gICAgICAgIGlmICh0aGlzLmhpc3RvcmljQWN0aXZpdHlJbnN0YW5jZXMpIHtcbiAgICAgICAgICB0aGlzLmhpc3RvcmljQWN0aXZpdHlJbnN0YW5jZXMuZm9yRWFjaChpbnN0YW5jZSA9PiB7XG4gICAgICAgICAgICBjYW52YXMuYWRkTWFya2VyKFxuICAgICAgICAgICAgICBpbnN0YW5jZS5hY3Rpdml0eUlkLFxuICAgICAgICAgICAgICBpbnN0YW5jZS5lbmRUaW1lID8gJ2hpZ2hsaWdodC1vdmVybGF5LXBhc3QnIDogJ2hpZ2hsaWdodC1vdmVybGF5LWN1cnJlbnQnXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FudmFzLnpvb20oJ2ZpdC12aWV3cG9ydCcsICdhdXRvJyk7XG5cbiAgICAgICAgaWYgKHRoaXMuaGVhdG1hcER1cmF0aW9uIHx8IHRoaXMuaGVhdG1hcENvdW50KSB7XG4gICAgICAgICAgZXZlbnRCdXMub24oJ2NhbnZhcy5pbml0JywgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaGVhdG1hcE1vZGUpIHtcbiAgICAgICAgICAgICAgdGhpcy5jbGVhckhlYXRtYXAoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZ2V0SGVhdG1hcERhdGEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBldmVudEJ1cy5vbignY2FudmFzLnZpZXdib3guY2hhbmdpbmcnLCAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5oZWF0bWFwTW9kZSkge1xuICAgICAgICAgICAgICB0aGlzLmNsZWFySGVhdG1hcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGV2ZW50QnVzLm9uKCdjYW52YXMudmlld2JveC5jaGFuZ2VkJywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5nZXRIZWF0bWFwRGF0YSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5icG1uSlMuaW1wb3J0WE1MKHRoaXMuYnBtbjIwWG1sKTtcbiAgICB0aGlzLmJwbW5KUy5hdHRhY2hUbyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgZ2V0SGVhdG1hcERhdGEoKSB7XG4gICAgbGV0IGlucHV0RGF0YTogYW55LCB2YWx1ZUtleTogYW55O1xuXG4gICAgdGhpcy5oZWF0UG9pbnRzID0ge2RhdGE6IFtdfTtcbiAgICB0aGlzLm1pbiA9IDA7XG4gICAgdGhpcy5tYXggPSAwO1xuXG4gICAgaWYgKHRoaXMuaGVhdG1hcER1cmF0aW9uKSB7XG4gICAgICBpbnB1dERhdGEgPSB0aGlzLmhlYXRtYXBEdXJhdGlvbjtcbiAgICAgIHZhbHVlS2V5ID0gJ2F2ZXJhZ2VEdXJhdGlvbkluTWlsbGlzZWNvbmRzJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuaGVhdG1hcENvdW50KSB7XG4gICAgICBpbnB1dERhdGEgPSB0aGlzLmhlYXRtYXBDb3VudDtcbiAgICAgIHZhbHVlS2V5ID0gJ3RvdGFsQ291bnQnO1xuICAgIH1cblxuICAgIGlmIChpbnB1dERhdGEpIHtcbiAgICAgIE9iamVjdC5rZXlzKGlucHV0RGF0YSkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICBjb25zdCBkaWFncmFtQ29udGFpbmVyID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgICAgICAgIGRpYWdyYW1FbG0gPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgICAgIC5xdWVyeVNlbGVjdG9yKGBnW2RhdGEtZWxlbWVudC1pZD0ke2tleX1dYClcbiAgICAgICAgICAgIC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgdGhpcy5zZXRNYXgoa2V5KTtcbiAgICAgICAgdGhpcy5oZWF0UG9pbnRzLmRhdGEucHVzaCh7XG4gICAgICAgICAgeDogTWF0aC5yb3VuZChkaWFncmFtRWxtLnggLSBkaWFncmFtQ29udGFpbmVyLnggKyBkaWFncmFtRWxtLndpZHRoIC8gMiksXG4gICAgICAgICAgeTogTWF0aC5yb3VuZChkaWFncmFtRWxtLnkgLSBkaWFncmFtQ29udGFpbmVyLnkgKyBkaWFncmFtRWxtLmhlaWdodCAvIDIpLFxuICAgICAgICAgIHZhbHVlOiBpbnB1dERhdGFba2V5XVt2YWx1ZUtleV0sXG4gICAgICAgICAgcmFkaXVzOiBkaWFncmFtRWxtLndpZHRoIC8gMixcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChpbnB1dERhdGFba2V5XS5jb3VudCA+IDApIHtcbiAgICAgICAgICB0aGlzLmFkZENvdW50ZXJBY3RpdmVPdmVybGF5cyhrZXksIGlucHV0RGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy5oZWF0bWFwTW9kZSkge1xuICAgICAgICB0aGlzLnNob3dIZWF0bWFwKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0TWF4KGtleTogYW55KSB7XG4gICAgaWYgKHRoaXMuaGVhdG1hcER1cmF0aW9uKSB7XG4gICAgICB0aGlzLm1heCA9IE1hdGgubWF4KHRoaXMuaGVhdG1hcER1cmF0aW9uW2tleV0uYXZlcmFnZUR1cmF0aW9uSW5NaWxsaXNlY29uZHMsIHRoaXMubWF4KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaGVhdG1hcENvdW50KSB7XG4gICAgICB0aGlzLm1heCA9IE1hdGgubWF4KFxuICAgICAgICB0aGlzLmhlYXRtYXBDb3VudFtrZXldLnRvdGFsQ291bnQgKyB0aGlzLmhlYXRtYXBDb3VudFtrZXldLmNvdW50LFxuICAgICAgICB0aGlzLm1heFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBhZGRDb3VudGVyQWN0aXZlT3ZlcmxheXMoa2V5OiBhbnksIGlucHV0RGF0YTogYW55KSB7XG4gICAgY29uc3Qgb3ZlcmxheXMgPSB0aGlzLmJwbW5KUy5nZXQoJ292ZXJsYXlzJyk7XG4gICAgb3ZlcmxheXMuYWRkKGtleSwge1xuICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgYm90dG9tOiAtMTAsXG4gICAgICAgIGxlZnQ6IDAsXG4gICAgICB9LFxuICAgICAgc2hvdzoge1xuICAgICAgICBtaW5ab29tOiAwLFxuICAgICAgICBtYXhab29tOiA1LjAsXG4gICAgICB9LFxuICAgICAgaHRtbDogYDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtcGlsbCBiYWRnZS1wcmltYXJ5XCI+JHtpbnB1dERhdGFba2V5XS5jb3VudH08L3NwYW4+YCxcbiAgICB9KTtcbiAgfVxuXG4gIHNob3dIZWF0bWFwKCkge1xuICAgIHRoaXMuaGVhdE1hcEluc3RhbmNlID0gaGVhdG1hcC5jcmVhdGUoe1xuICAgICAgcmFkaXVzOiA1NCxcbiAgICAgIGJsdXI6IDAuNyxcbiAgICAgIG1heE9wYWNpdHk6IDAuNCxcbiAgICAgIG1pbk9wYWNpdHk6IDAsXG4gICAgICBjb250YWluZXI6IHRoaXMuZWwubmF0aXZlRWxlbWVudCxcbiAgICB9KTtcbiAgICB0aGlzLmhlYXRNYXBJbnN0YW5jZS5zZXREYXRhKHtcbiAgICAgIG1pbjogdGhpcy5taW4sXG4gICAgICBtYXg6IHRoaXMubWF4LFxuICAgICAgZGF0YTogdGhpcy5oZWF0UG9pbnRzLmRhdGEsXG4gICAgfSk7XG4gIH1cblxuICBjbGVhckhlYXRtYXAoKSB7XG4gICAgdGhpcy5oZWF0TWFwSW5zdGFuY2Uuc2V0RGF0YSh7ZGF0YTogW119KTtcbiAgfVxuXG4gIHRvZ2dsZUhlYXRtYXAoKSB7XG4gICAgdGhpcy5oZWF0bWFwTW9kZSA9ICF0aGlzLmhlYXRtYXBNb2RlO1xuICAgIGlmICh0aGlzLmhlYXRtYXBNb2RlKSB7XG4gICAgICB0aGlzLnNob3dIZWF0bWFwKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2xlYXJIZWF0bWFwKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5icG1uSlMuZGVzdHJveSgpO1xuICB9XG59XG4iXX0=
@@ -15,14 +15,14 @@
15
15
  */
16
16
  import { NgModule } from '@angular/core';
17
17
  import { CommonModule } from '@angular/common';
18
- import { AlertComponent } from './alert.component';
19
- export class AlertModule {
18
+ import { BpmnJsDiagramComponent } from './bpmn-js-diagram.component';
19
+ export class BpmnJsDiagramModule {
20
20
  }
21
- AlertModule.decorators = [
21
+ BpmnJsDiagramModule.decorators = [
22
22
  { type: NgModule, args: [{
23
+ declarations: [BpmnJsDiagramComponent],
23
24
  imports: [CommonModule],
24
- declarations: [AlertComponent],
25
- exports: [AlertComponent]
25
+ exports: [BpmnJsDiagramComponent],
26
26
  },] }
27
27
  ];
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy9saWIvYWxlcnQvYWxlcnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBT2pELE1BQU0sT0FBTyxXQUFXOzs7WUFMdkIsUUFBUSxTQUFDO2dCQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztnQkFDdkIsWUFBWSxFQUFFLENBQUMsY0FBYyxDQUFDO2dCQUM5QixPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUM7YUFDMUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtBbGVydENvbXBvbmVudH0gZnJvbSAnLi9hbGVydC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgZGVjbGFyYXRpb25zOiBbQWxlcnRDb21wb25lbnRdLFxuICBleHBvcnRzOiBbQWxlcnRDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIEFsZXJ0TW9kdWxlIHtcbn1cbiJdfQ==
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnBtbi1qcy1kaWFncmFtLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIvdG1wL2plbmtpbnMtNGMzYmI3NzAvd29ya3NwYWNlL1ZhbHRpbW9fLV9Bbmd1bGFyX0xpYnJhcmllc19tYWluL3Byb2plY3RzL3ZhbHRpbW8vY29tcG9uZW50cy9zcmMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9icG1uLWpzLWRpYWdyYW0vYnBtbi1qcy1kaWFncmFtLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBT25FLE1BQU0sT0FBTyxtQkFBbUI7OztZQUwvQixRQUFRLFNBQUM7Z0JBQ1IsWUFBWSxFQUFFLENBQUMsc0JBQXNCLENBQUM7Z0JBQ3RDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztnQkFDdkIsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7YUFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtCcG1uSnNEaWFncmFtQ29tcG9uZW50fSBmcm9tICcuL2JwbW4tanMtZGlhZ3JhbS5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtCcG1uSnNEaWFncmFtQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGV4cG9ydHM6IFtCcG1uSnNEaWFncmFtQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgQnBtbkpzRGlhZ3JhbU1vZHVsZSB7fVxuIl19
@@ -0,0 +1,93 @@
1
+ /*
2
+ * Copyright 2015-2020 Ritense BV, the Netherlands.
3
+ *
4
+ * Licensed under EUPL, Version 1.2 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" basis,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { Component } from '@angular/core';
17
+ import { ActivatedRoute, NavigationEnd, PRIMARY_OUTLET, Router } from '@angular/router';
18
+ import { filter, map } from 'rxjs/operators';
19
+ import { Subscription } from 'rxjs';
20
+ export class BreadcrumbNavigationComponent {
21
+ constructor(router, route) {
22
+ this.router = router;
23
+ this.route = route;
24
+ this.breadcrumbs = [];
25
+ this.appTitle = 'Valtimo';
26
+ this.routerSub = Subscription.EMPTY;
27
+ }
28
+ ngOnInit() {
29
+ this.setBreadcrumbs(this.route);
30
+ this.routerSub = this.router.events
31
+ .pipe(filter(event => event instanceof NavigationEnd))
32
+ .pipe(map(() => this.route))
33
+ .pipe(map(route => {
34
+ while (route.firstChild) {
35
+ route = route.firstChild;
36
+ }
37
+ return route;
38
+ }))
39
+ .pipe(filter(route => route.outlet === PRIMARY_OUTLET))
40
+ .subscribe(route => {
41
+ this.setBreadcrumbs(route);
42
+ });
43
+ }
44
+ setBreadcrumbs(route) {
45
+ while (route.firstChild) {
46
+ route = route.firstChild;
47
+ }
48
+ if (route.outlet === PRIMARY_OUTLET) {
49
+ const snapshot = route.snapshot;
50
+ const activeRoute = {
51
+ url: snapshot.url.join('/'),
52
+ path: snapshot.routeConfig.path,
53
+ label: snapshot.data['title'],
54
+ params: snapshot.params,
55
+ };
56
+ this.generateBreadcrumbs(activeRoute);
57
+ }
58
+ }
59
+ generateBreadcrumbs(activeBreadcrumb) {
60
+ this.breadcrumbs = [];
61
+ this.router.config.map(routerConfig => {
62
+ if (activeBreadcrumb.path.indexOf(routerConfig.path + '/') === 0 &&
63
+ activeBreadcrumb.path !== routerConfig.path &&
64
+ routerConfig.path !== '') {
65
+ const parentRoute = {
66
+ url: routerConfig.path.replace(/:(.+?)\b/g, (_, p1) => activeBreadcrumb.params[p1]),
67
+ path: routerConfig.path,
68
+ label: routerConfig.data['title'],
69
+ params: activeBreadcrumb.params,
70
+ };
71
+ const exist = this.breadcrumbs.findIndex(item => item.url === parentRoute.url);
72
+ if (exist === -1) {
73
+ this.breadcrumbs.push(parentRoute);
74
+ }
75
+ }
76
+ });
77
+ }
78
+ ngOnDestroy() {
79
+ this.routerSub.unsubscribe();
80
+ }
81
+ }
82
+ BreadcrumbNavigationComponent.decorators = [
83
+ { type: Component, args: [{
84
+ selector: 'valtimo-breadcrumb-navigation',
85
+ template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<nav aria-label=\"breadcrumb\" role=\"navigation\">\n <ol class=\"breadcrumb page-head-nav\">\n <li class=\"breadcrumb-item\">\n <a [routerLink]=\"['/']\">{{ appTitle }}</a>\n </li>\n <li class=\"breadcrumb-item\" *ngFor=\"let item of breadcrumbs\">\n <a [routerLink]=\"[item.url]\">{{ item.label | translate }}</a>\n </li>\n </ol>\n</nav>\n",
86
+ styles: [""]
87
+ },] }
88
+ ];
89
+ BreadcrumbNavigationComponent.ctorParameters = () => [
90
+ { type: Router },
91
+ { type: ActivatedRoute }
92
+ ];
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi1uYXZpZ2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvdG1wL2plbmtpbnMtNGMzYmI3NzAvd29ya3NwYWNlL1ZhbHRpbW9fLV9Bbmd1bGFyX0xpYnJhcmllc19tYWluL3Byb2plY3RzL3ZhbHRpbW8vY29tcG9uZW50cy9zcmMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9icmVhZGNydW1iLW5hdmlnYXRpb24vYnJlYWRjcnVtYi1uYXZpZ2F0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBQyxjQUFjLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RixPQUFPLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFPbEMsTUFBTSxPQUFPLDZCQUE2QjtJQUt4QyxZQUFvQixNQUFjLEVBQVUsS0FBcUI7UUFBN0MsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBSjFELGdCQUFXLEdBQWUsRUFBRSxDQUFDO1FBQzdCLGFBQVEsR0FBRyxTQUFTLENBQUM7UUFDcEIsY0FBUyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7SUFFNkIsQ0FBQztJQUVyRSxRQUFRO1FBQ04sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07YUFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssWUFBWSxhQUFhLENBQUMsQ0FBQzthQUNy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c291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjAgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25FbmQsIFBSSU1BUllfT1VUTEVULCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge2ZpbHRlciwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tYnJlYWRjcnVtYi1uYXZpZ2F0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2JyZWFkY3J1bWItbmF2aWdhdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2JyZWFkY3J1bWItbmF2aWdhdGlvbi5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJyZWFkY3J1bWJOYXZpZ2F0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwdWJsaWMgYnJlYWRjcnVtYnM6IEFycmF5PGFueT4gPSBbXTtcbiAgcHVibGljIGFwcFRpdGxlID0gJ1ZhbHRpbW8nO1xuICBwcml2YXRlIHJvdXRlclN1YiA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNldEJyZWFkY3J1bWJzKHRoaXMucm91dGUpO1xuICAgIHRoaXMucm91dGVyU3ViID0gdGhpcy5yb3V0ZXIuZXZlbnRzXG4gICAgICAucGlwZShmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSlcbiAgICAgIC5waXBlKG1hcCgoKSA9PiB0aGlzLnJvdXRlKSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAocm91dGUgPT4ge1xuICAgICAgICAgIHdoaWxlIChyb3V0ZS5maXJzdENoaWxkKSB7XG4gICAgICAgICAgICByb3V0ZSA9IHJvdXRlLmZpcnN0Q2hpbGQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByb3V0ZTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5waXBlKGZpbHRlcihyb3V0ZSA9PiByb3V0ZS5vdXRsZXQgPT09IFBSSU1BUllfT1VUTEVUKSlcbiAgICAgIC5zdWJzY3JpYmUocm91dGUgPT4ge1xuICAgICAgICB0aGlzLnNldEJyZWFkY3J1bWJzKHJvdXRlKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRCcmVhZGNydW1icyhyb3V0ZTogQWN0aXZhdGVkUm91dGUpIHtcbiAgICB3aGlsZSAocm91dGUuZmlyc3RDaGlsZCkge1xuICAgICAgcm91dGUgPSByb3V0ZS5maXJzdENoaWxkO1xuICAgIH1cbiAgICBpZiAocm91dGUub3V0bGV0ID09PSBQUklNQVJZX09VVExFVCkge1xuICAgICAgY29uc3Qgc25hcHNob3QgPSByb3V0ZS5zbmFwc2hvdDtcbiAgICAgIGNvbnN0IGFjdGl2ZVJvdXRlID0ge1xuICAgICAgICB1cmw6IHNuYXBzaG90LnVybC5qb2luKCcvJyksXG4gICAgICAgIHBhdGg6IHNuYXBzaG90LnJvdXRlQ29uZmlnLnBhdGgsXG4gICAgICAgIGxhYmVsOiBzbmFwc2hvdC5kYXRhWyd0aXRsZSddLFxuICAgICAgICBwYXJhbXM6IHNuYXBzaG90LnBhcmFtcyxcbiAgICAgIH07XG4gICAgICB0aGlzLmdlbmVyYXRlQnJlYWRjcnVtYnMoYWN0aXZlUm91dGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVCcmVhZGNydW1icyhhY3RpdmVCcmVhZGNydW1iOiBhbnkpIHtcbiAgICB0aGlzLmJyZWFkY3J1bWJzID0gW107XG4gICAgdGhpcy5yb3V0ZXIuY29uZmlnLm1hcChyb3V0ZXJDb25maWcgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICBhY3RpdmVCcmVhZGNydW1iLnBhdGguaW5kZXhPZihyb3V0ZXJDb25maWcucGF0aCArICcvJykgPT09IDAgJiZcbiAgICAgICAgYWN0aXZlQnJlYWRjcnVtYi5wYXRoICE9PSByb3V0ZXJDb25maWcucGF0aCAmJlxuICAgICAgICByb3V0ZXJDb25maWcucGF0aCAhPT0gJydcbiAgICAgICkge1xuICAgICAgICBjb25zdCBwYXJlbnRSb3V0ZSA9IHtcbiAgICAgICAgICB1cmw6IHJvdXRlckNvbmZpZy5wYXRoLnJlcGxhY2UoLzooLis/KVxcYi9nLCAoXywgcDEpID0+IGFjdGl2ZUJyZWFkY3J1bWIucGFyYW1zW3AxXSksXG4gICAgICAgICAgcGF0aDogcm91dGVyQ29uZmlnLnBhdGgsXG4gICAgICAgICAgbGFiZWw6IHJvdXRlckNvbmZpZy5kYXRhWyd0aXRsZSddLFxuICAgICAgICAgIHBhcmFtczogYWN0aXZlQnJlYWRjcnVtYi5wYXJhbXMsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGV4aXN0ID0gdGhpcy5icmVhZGNydW1icy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLnVybCA9PT0gcGFyZW50Um91dGUudXJsKTtcbiAgICAgICAgaWYgKGV4aXN0ID09PSAtMSkge1xuICAgICAgICAgIHRoaXMuYnJlYWRjcnVtYnMucHVzaChwYXJlbnRSb3V0ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMucm91dGVyU3ViLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiJdfQ==