@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.
- package/bundles/valtimo-components.umd.js +408 -302
- package/bundles/valtimo-components.umd.js.map +1 -1
- package/bundles/valtimo-components.umd.min.js +2 -2
- package/bundles/valtimo-components.umd.min.js.map +1 -1
- package/esm2015/lib/components/alert/alert.component.js +140 -0
- package/esm2015/lib/{topbar/topbar.module.js → components/alert/alert.module.js} +7 -11
- package/esm2015/lib/components/alert/alert.service.js +81 -0
- package/esm2015/lib/components/bpmn-js-diagram/bpmn-js-diagram.component.js +160 -0
- package/esm2015/lib/{alert/alert.module.js → components/bpmn-js-diagram/bpmn-js-diagram.module.js} +6 -6
- package/esm2015/lib/components/breadcrumb-navigation/breadcrumb-navigation.component.js +93 -0
- package/esm2015/lib/components/breadcrumb-navigation/breadcrumb-navigation.module.js +30 -0
- package/esm2015/lib/components/camunda/form/camunda-form.components.js +37 -0
- package/esm2015/lib/components/camunda/form/camunda-form.module.js +30 -0
- package/esm2015/lib/components/camunda/form/custom/camunda-custom-form.component.js +42 -0
- package/esm2015/lib/components/camunda/form/custom/camunda-custom-form.module.js +28 -0
- package/esm2015/lib/components/camunda/form/generated/camunda-generated-form.component.js +69 -0
- package/esm2015/lib/components/camunda/form/generated/camunda-generated-form.module.js +58 -0
- package/esm2015/lib/{camunda → components/camunda}/form/generated/formfield/boolean/camunda-boolean-formfield.component.js +3 -4
- package/esm2015/lib/components/camunda/form/generated/formfield/camunda-formfield-generator.directive.js +64 -0
- package/esm2015/lib/components/camunda/form/generated/formfield/camunda-formfield.service.js +66 -0
- package/esm2015/lib/{camunda → components/camunda}/form/generated/formfield/choicefield/camunda-choicefield-formfield.component.js +5 -3
- package/esm2015/lib/components/camunda/form/generated/formfield/date/camunda-date-formfield.component.js +66 -0
- package/esm2015/lib/components/camunda/form/generated/formfield/enum/camunda-enum-formfield.component.js +30 -0
- package/esm2015/lib/{menu/submenu-item-text.component.js → components/camunda/form/generated/formfield/formfield.model.js} +1 -18
- package/esm2015/lib/{camunda → components/camunda}/form/generated/formfield/long/camunda-long-formfield.component.js +3 -4
- package/esm2015/lib/{camunda → components/camunda}/form/generated/formfield/string/camunda-string-formfield.component.js +3 -4
- package/esm2015/lib/{camunda → components/camunda}/form/generated/formfield/textarea/camunda-textarea-formfield.component.js +3 -4
- package/esm2015/lib/components/camunda/form/generated/formfield/validation/camunda-formfield-validation.component.js +35 -0
- package/esm2015/lib/components/camunda/form/generated/formfield/validation/date.validators.js +60 -0
- package/esm2015/lib/{form-io/form-io-builder.component.js → components/card/card.component.js} +15 -18
- package/esm2015/lib/components/card/card.module.js +28 -0
- package/esm2015/lib/{camunda/form/generated/formfield/formfield.model.js → components/components.module.js} +7 -1
- package/esm2015/lib/{data-list → components/data-list}/data-list.component.js +2 -3
- package/esm2015/lib/components/data-list/data-list.module.js +28 -0
- package/esm2015/lib/components/dropzone/dropzone.component.js +143 -0
- package/esm2015/lib/components/dropzone/dropzone.module.js +32 -0
- package/esm2015/lib/components/field-auto-focus/field-auto-focus.directive.js +35 -0
- package/esm2015/lib/components/field-auto-focus/field-auto-focus.module.js +28 -0
- package/esm2015/lib/{view-content/type-converters/enumTypeConverter.js → components/file-size/file-size.module.js} +12 -8
- package/esm2015/lib/components/file-size/file-size.pipe.js +38 -0
- package/esm2015/lib/components/filter-sidebar/filter-sidebar.component.js +46 -0
- package/esm2015/lib/components/filter-sidebar/filter-sidebar.module.js +28 -0
- package/esm2015/lib/components/form-io/form-io-builder.component.js +38 -0
- package/esm2015/lib/components/form-io/form-io-uploader/form-io-uploader-edit-form.js +90 -0
- package/esm2015/lib/components/form-io/form-io-uploader/form-io-uploader.component.js +74 -0
- package/esm2015/lib/components/form-io/form-io-uploader/form-io-uploader.formio.js +26 -0
- package/esm2015/lib/components/form-io/form-io.component.js +163 -0
- package/esm2015/lib/components/form-io/form-io.module.js +56 -0
- package/esm2015/lib/components/form-io/formio-config.js +22 -0
- package/esm2015/lib/components/form-io/services/form-io-dom.service.js +23 -0
- package/esm2015/lib/components/form-io/services/form-io-state.service.js +24 -0
- package/esm2015/lib/components/left-sidebar/left-sidebar.component.js +114 -0
- package/esm2015/lib/components/left-sidebar/left-sidebar.module.js +30 -0
- package/esm2015/lib/components/list/ListFilterPipe.directive.js +31 -0
- package/esm2015/lib/components/list/list.component.js +179 -0
- package/esm2015/lib/components/list/list.module.js +33 -0
- package/esm2015/lib/components/menu/menu-item-text.component.js +38 -0
- package/esm2015/lib/components/menu/menu-routing.module.js +27 -0
- package/esm2015/lib/components/menu/menu.component.js +65 -0
- package/esm2015/lib/components/menu/menu.init.js +34 -0
- package/esm2015/lib/components/menu/menu.module.js +34 -0
- package/esm2015/lib/components/menu/menu.service.js +126 -0
- package/esm2015/lib/components/menu/submenu-item-text.component.js +33 -0
- package/esm2015/lib/{modal → components/modal}/modal.component.js +1 -1
- package/esm2015/lib/components/modal/modal.module.js +28 -0
- package/esm2015/lib/{page-header → components/page-header}/page-header.component.js +1 -1
- package/esm2015/lib/components/page-header/page-header.module.js +30 -0
- package/esm2015/lib/components/page-title/page-title.component.js +76 -0
- package/esm2015/lib/components/page-title/page-title.module.js +29 -0
- package/esm2015/lib/components/progress-bar/progress-bar.component.js +26 -0
- package/esm2015/lib/{bpmn-js-diagram/bpmn-js-diagram.module.js → components/progress-bar/progress-bar.module.js} +7 -9
- package/esm2015/lib/components/right-sidebar/right-sidebar.component.js +133 -0
- package/esm2015/lib/components/right-sidebar/right-sidebar.module.js +49 -0
- package/esm2015/lib/components/searchable-dropdown/searchable-dropdown.component.js +187 -0
- package/esm2015/lib/components/searchable-dropdown/searchable-dropdown.module.js +29 -0
- package/esm2015/lib/components/searchable-dropdown-select/searchable-dropdown-select.component.js +52 -0
- package/esm2015/lib/components/searchable-dropdown-select/searchable-dropdown-select.module.js +30 -0
- package/esm2015/lib/{spinner → components/spinner}/spinner.component.js +2 -2
- package/esm2015/lib/components/spinner/spinner.module.js +30 -0
- package/esm2015/lib/components/timeline/timeline.component.js +29 -0
- package/esm2015/lib/{progress-bar/progress-bar.module.js → components/timeline/timeline.module.js} +8 -9
- package/esm2015/lib/{topbar → components/topbar}/topbar.component.js +2 -3
- package/esm2015/lib/components/topbar/topbar.module.js +29 -0
- package/esm2015/lib/components/uploader/uploader-drag-drop.directive.js +49 -0
- package/esm2015/lib/components/uploader/uploader.component.js +68 -0
- package/esm2015/lib/components/uploader/uploader.module.js +30 -0
- package/esm2015/lib/components/version/version.service.js +38 -0
- package/esm2015/lib/components/view-content/type-converters/booleanTypeConverter.js +29 -0
- package/esm2015/lib/components/view-content/type-converters/dateTypeConverter.js +30 -0
- package/esm2015/lib/components/view-content/type-converters/enumTypeConverter.js +24 -0
- package/esm2015/lib/components/view-content/type-converters/relatedFilesTypeConverter.js +24 -0
- package/esm2015/lib/components/view-content/type-converters/stringReplaceUnderscoreTypeConverter.js +27 -0
- package/esm2015/lib/components/view-content/type-converters/stringTypeConverter.js +24 -0
- package/esm2015/lib/components/view-content/type-converters/type-converters.model.js +37 -0
- package/esm2015/lib/{view-content → components/view-content}/view-content.service.js +3 -3
- package/esm2015/lib/components/webcam/webcam.component.js +102 -0
- package/esm2015/lib/components/webcam/webcam.module.js +29 -0
- package/esm2015/lib/components/widget/widget.component.js +80 -0
- package/esm2015/lib/{file-size/file-size.module.js → components/widget/widget.module.js} +7 -9
- package/esm2015/lib/models/alert.model.js +30 -0
- package/esm2015/lib/models/form-io.model.js +30 -0
- package/esm2015/lib/models/index.js +24 -0
- package/esm2015/lib/models/pagination.model.js +1 -0
- package/esm2015/lib/models/searchable-dropdown.model.js +1 -0
- package/esm2015/lib/models/timeline.model.js +44 -0
- package/esm2015/lib/models/version.model.js +16 -0
- package/esm2015/public_api.js +67 -66
- package/esm2015/valtimo-components.js +23 -23
- package/fesm2015/valtimo-components.js +352 -303
- package/fesm2015/valtimo-components.js.map +1 -1
- package/lib/{alert → components/alert}/alert.component.d.ts +1 -1
- package/lib/{alert → components/alert}/alert.module.d.ts +0 -0
- package/lib/{alert → components/alert}/alert.service.d.ts +1 -1
- package/lib/{bpmn-js-diagram → components/bpmn-js-diagram}/bpmn-js-diagram.component.d.ts +0 -0
- package/lib/{bpmn-js-diagram → components/bpmn-js-diagram}/bpmn-js-diagram.module.d.ts +0 -0
- package/lib/{breadcrumb-navigation → components/breadcrumb-navigation}/breadcrumb-navigation.component.d.ts +0 -0
- package/lib/{breadcrumb-navigation → components/breadcrumb-navigation}/breadcrumb-navigation.module.d.ts +0 -0
- package/lib/{camunda → components/camunda}/form/camunda-form.components.d.ts +0 -0
- package/lib/{camunda → components/camunda}/form/camunda-form.module.d.ts +0 -0
- package/lib/{camunda → components/camunda}/form/custom/camunda-custom-form.component.d.ts +0 -0
- package/lib/{camunda → components/camunda}/form/custom/camunda-custom-form.module.d.ts +0 -0
- package/lib/{camunda → components/camunda}/form/generated/camunda-generated-form.component.d.ts +0 -0
- package/lib/{camunda → components/camunda}/form/generated/camunda-generated-form.module.d.ts +0 -0
- package/lib/{camunda → components/camunda}/form/generated/formfield/boolean/camunda-boolean-formfield.component.d.ts +0 -0
- package/lib/{camunda → components/camunda}/form/generated/formfield/camunda-formfield-generator.directive.d.ts +0 -0
- package/lib/{camunda → components/camunda}/form/generated/formfield/camunda-formfield.service.d.ts +0 -0
- package/lib/{camunda → components/camunda}/form/generated/formfield/choicefield/camunda-choicefield-formfield.component.d.ts +0 -0
- package/lib/{camunda → components/camunda}/form/generated/formfield/date/camunda-date-formfield.component.d.ts +0 -0
- package/lib/{camunda → components/camunda}/form/generated/formfield/enum/camunda-enum-formfield.component.d.ts +0 -0
- package/lib/{camunda → components/camunda}/form/generated/formfield/formfield.model.d.ts +0 -0
- package/lib/{camunda → components/camunda}/form/generated/formfield/long/camunda-long-formfield.component.d.ts +0 -0
- package/lib/{camunda → components/camunda}/form/generated/formfield/string/camunda-string-formfield.component.d.ts +0 -0
- package/lib/{camunda → components/camunda}/form/generated/formfield/textarea/camunda-textarea-formfield.component.d.ts +0 -0
- package/lib/{camunda → components/camunda}/form/generated/formfield/validation/camunda-formfield-validation.component.d.ts +0 -0
- package/lib/{camunda → components/camunda}/form/generated/formfield/validation/date.validators.d.ts +0 -0
- package/lib/{card → components/card}/card.component.d.ts +0 -0
- package/lib/{card → components/card}/card.module.d.ts +0 -0
- package/lib/{components.module.d.ts → components/components.module.d.ts} +0 -0
- package/lib/{data-list → components/data-list}/data-list.component.d.ts +0 -0
- package/lib/{data-list → components/data-list}/data-list.module.d.ts +0 -0
- package/lib/{dropzone → components/dropzone}/dropzone.component.d.ts +0 -0
- package/lib/{dropzone → components/dropzone}/dropzone.module.d.ts +0 -0
- package/lib/{field-auto-focus → components/field-auto-focus}/field-auto-focus.directive.d.ts +0 -0
- package/lib/{field-auto-focus → components/field-auto-focus}/field-auto-focus.module.d.ts +0 -0
- package/lib/{file-size → components/file-size}/file-size.module.d.ts +0 -0
- package/lib/{file-size → components/file-size}/file-size.pipe.d.ts +0 -0
- package/lib/{filter-sidebar → components/filter-sidebar}/filter-sidebar.component.d.ts +0 -0
- package/lib/{filter-sidebar → components/filter-sidebar}/filter-sidebar.module.d.ts +0 -0
- package/lib/{form-io → components/form-io}/form-io-builder.component.d.ts +0 -0
- package/lib/{form-io → components/form-io}/form-io-uploader/form-io-uploader-edit-form.d.ts +0 -0
- package/lib/{form-io → components/form-io}/form-io-uploader/form-io-uploader.component.d.ts +1 -1
- package/lib/{form-io → components/form-io}/form-io-uploader/form-io-uploader.formio.d.ts +0 -0
- package/lib/{form-io → components/form-io}/form-io.component.d.ts +8 -5
- package/lib/{form-io → components/form-io}/form-io.module.d.ts +0 -0
- package/lib/{form-io → components/form-io}/formio-config.d.ts +0 -0
- package/lib/{form-io → components/form-io}/services/form-io-dom.service.d.ts +0 -0
- package/lib/{form-io → components/form-io}/services/form-io-state.service.d.ts +0 -0
- package/lib/{left-sidebar → components/left-sidebar}/left-sidebar.component.d.ts +0 -0
- package/lib/{left-sidebar → components/left-sidebar}/left-sidebar.module.d.ts +0 -0
- package/lib/{list → components/list}/ListFilterPipe.directive.d.ts +0 -0
- package/lib/{list → components/list}/list.component.d.ts +1 -1
- package/lib/{list → components/list}/list.module.d.ts +0 -0
- package/lib/{menu → components/menu}/menu-item-text.component.d.ts +1 -1
- package/lib/{menu → components/menu}/menu-routing.module.d.ts +0 -0
- package/lib/{menu → components/menu}/menu.component.d.ts +1 -1
- package/lib/{menu → components/menu}/menu.init.d.ts +0 -0
- package/lib/{menu → components/menu}/menu.module.d.ts +0 -0
- package/lib/{menu → components/menu}/menu.service.d.ts +1 -1
- package/lib/{menu → components/menu}/submenu-item-text.component.d.ts +1 -1
- package/lib/{modal → components/modal}/modal.component.d.ts +0 -0
- package/lib/{modal → components/modal}/modal.module.d.ts +0 -0
- package/lib/{page-header → components/page-header}/page-header.component.d.ts +0 -0
- package/lib/{page-header → components/page-header}/page-header.module.d.ts +0 -0
- package/lib/{page-title → components/page-title}/page-title.component.d.ts +0 -0
- package/lib/{page-title → components/page-title}/page-title.module.d.ts +0 -0
- package/lib/{progress-bar → components/progress-bar}/progress-bar.component.d.ts +0 -0
- package/lib/{progress-bar → components/progress-bar}/progress-bar.module.d.ts +0 -0
- package/lib/{right-sidebar → components/right-sidebar}/right-sidebar.component.d.ts +2 -1
- package/lib/{right-sidebar → components/right-sidebar}/right-sidebar.module.d.ts +0 -0
- package/lib/{searchable-dropdown → components/searchable-dropdown}/searchable-dropdown.component.d.ts +1 -1
- package/lib/{searchable-dropdown → components/searchable-dropdown}/searchable-dropdown.module.d.ts +0 -0
- package/lib/{searchable-dropdown-select → components/searchable-dropdown-select}/searchable-dropdown-select.component.d.ts +1 -1
- package/lib/{searchable-dropdown-select → components/searchable-dropdown-select}/searchable-dropdown-select.module.d.ts +0 -0
- package/lib/{spinner → components/spinner}/spinner.component.d.ts +0 -0
- package/lib/{spinner → components/spinner}/spinner.module.d.ts +0 -0
- package/lib/{timeline → components/timeline}/timeline.component.d.ts +1 -1
- package/lib/{timeline → components/timeline}/timeline.module.d.ts +0 -0
- package/lib/{topbar → components/topbar}/topbar.component.d.ts +0 -0
- package/lib/{topbar → components/topbar}/topbar.module.d.ts +0 -0
- package/lib/{uploader → components/uploader}/uploader-drag-drop.directive.d.ts +0 -0
- package/lib/{uploader → components/uploader}/uploader.component.d.ts +1 -2
- package/lib/{uploader → components/uploader}/uploader.module.d.ts +0 -0
- package/lib/{version → components/version}/version.service.d.ts +1 -1
- package/lib/{view-content → components/view-content}/type-converters/booleanTypeConverter.d.ts +0 -0
- package/lib/{view-content → components/view-content}/type-converters/dateTypeConverter.d.ts +0 -0
- package/lib/{view-content → components/view-content}/type-converters/enumTypeConverter.d.ts +0 -0
- package/lib/{view-content → components/view-content}/type-converters/relatedFilesTypeConverter.d.ts +0 -0
- package/lib/{view-content → components/view-content}/type-converters/stringReplaceUnderscoreTypeConverter.d.ts +0 -0
- package/lib/{view-content → components/view-content}/type-converters/stringTypeConverter.d.ts +0 -0
- package/lib/{view-content → components/view-content}/type-converters/type-converters.model.d.ts +0 -0
- package/lib/{view-content → components/view-content}/view-content.service.d.ts +0 -0
- package/lib/{webcam → components/webcam}/webcam.component.d.ts +0 -0
- package/lib/{webcam → components/webcam}/webcam.module.d.ts +0 -0
- package/lib/{widget → components/widget}/widget.component.d.ts +0 -0
- package/lib/{widget → components/widget}/widget.module.d.ts +0 -0
- package/lib/models/alert.model.d.ts +21 -0
- package/lib/models/form-io.model.d.ts +27 -0
- package/lib/models/index.d.ts +6 -0
- package/lib/models/pagination.model.d.ts +7 -0
- package/lib/models/searchable-dropdown.model.d.ts +5 -0
- package/lib/models/timeline.model.d.ts +23 -0
- package/lib/models/version.model.d.ts +4 -0
- package/package.json +1 -1
- package/public_api.d.ts +66 -65
- package/valtimo-components.d.ts +22 -22
- package/valtimo-components.metadata.json +1 -1
- package/esm2015/lib/alert/alert.component.js +0 -142
- package/esm2015/lib/alert/alert.service.js +0 -81
- package/esm2015/lib/bpmn-js-diagram/bpmn-js-diagram.component.js +0 -160
- package/esm2015/lib/breadcrumb-navigation/breadcrumb-navigation.component.js +0 -93
- package/esm2015/lib/breadcrumb-navigation/breadcrumb-navigation.module.js +0 -34
- package/esm2015/lib/camunda/form/camunda-form.components.js +0 -37
- package/esm2015/lib/camunda/form/camunda-form.module.js +0 -38
- package/esm2015/lib/camunda/form/custom/camunda-custom-form.component.js +0 -42
- package/esm2015/lib/camunda/form/custom/camunda-custom-form.module.js +0 -34
- package/esm2015/lib/camunda/form/generated/camunda-generated-form.component.js +0 -69
- package/esm2015/lib/camunda/form/generated/camunda-generated-form.module.js +0 -63
- package/esm2015/lib/camunda/form/generated/formfield/camunda-formfield-generator.directive.js +0 -64
- package/esm2015/lib/camunda/form/generated/formfield/camunda-formfield.service.js +0 -67
- package/esm2015/lib/camunda/form/generated/formfield/date/camunda-date-formfield.component.js +0 -66
- package/esm2015/lib/camunda/form/generated/formfield/enum/camunda-enum-formfield.component.js +0 -31
- package/esm2015/lib/camunda/form/generated/formfield/validation/camunda-formfield-validation.component.js +0 -36
- package/esm2015/lib/camunda/form/generated/formfield/validation/date.validators.js +0 -60
- package/esm2015/lib/card/card.component.js +0 -37
- package/esm2015/lib/card/card.module.js +0 -30
- package/esm2015/lib/components.module.js +0 -22
- package/esm2015/lib/data-list/data-list.module.js +0 -30
- package/esm2015/lib/dropzone/dropzone.component.js +0 -143
- package/esm2015/lib/dropzone/dropzone.module.js +0 -32
- package/esm2015/lib/field-auto-focus/field-auto-focus.directive.js +0 -35
- package/esm2015/lib/field-auto-focus/field-auto-focus.module.js +0 -32
- package/esm2015/lib/file-size/file-size.pipe.js +0 -45
- package/esm2015/lib/filter-sidebar/filter-sidebar.component.js +0 -46
- package/esm2015/lib/filter-sidebar/filter-sidebar.module.js +0 -30
- package/esm2015/lib/form-io/form-io-uploader/form-io-uploader-edit-form.js +0 -90
- package/esm2015/lib/form-io/form-io-uploader/form-io-uploader.component.js +0 -72
- package/esm2015/lib/form-io/form-io-uploader/form-io-uploader.formio.js +0 -26
- package/esm2015/lib/form-io/form-io.component.js +0 -158
- package/esm2015/lib/form-io/form-io.module.js +0 -56
- package/esm2015/lib/form-io/formio-config.js +0 -22
- package/esm2015/lib/form-io/services/form-io-dom.service.js +0 -23
- package/esm2015/lib/form-io/services/form-io-state.service.js +0 -24
- package/esm2015/lib/left-sidebar/left-sidebar.component.js +0 -114
- package/esm2015/lib/left-sidebar/left-sidebar.module.js +0 -34
- package/esm2015/lib/list/ListFilterPipe.directive.js +0 -35
- package/esm2015/lib/list/list.component.js +0 -177
- package/esm2015/lib/list/list.module.js +0 -33
- package/esm2015/lib/menu/menu-item-text.component.js +0 -36
- package/esm2015/lib/menu/menu-routing.module.js +0 -29
- package/esm2015/lib/menu/menu.component.js +0 -65
- package/esm2015/lib/menu/menu.init.js +0 -34
- package/esm2015/lib/menu/menu.module.js +0 -39
- package/esm2015/lib/menu/menu.service.js +0 -127
- package/esm2015/lib/modal/modal.module.js +0 -28
- package/esm2015/lib/page-header/page-header.module.js +0 -34
- package/esm2015/lib/page-title/page-title.component.js +0 -76
- package/esm2015/lib/page-title/page-title.module.js +0 -32
- package/esm2015/lib/progress-bar/progress-bar.component.js +0 -26
- package/esm2015/lib/right-sidebar/right-sidebar.component.js +0 -131
- package/esm2015/lib/right-sidebar/right-sidebar.module.js +0 -49
- package/esm2015/lib/searchable-dropdown/searchable-dropdown.component.js +0 -185
- package/esm2015/lib/searchable-dropdown/searchable-dropdown.module.js +0 -29
- package/esm2015/lib/searchable-dropdown-select/searchable-dropdown-select.component.js +0 -52
- package/esm2015/lib/searchable-dropdown-select/searchable-dropdown-select.module.js +0 -30
- package/esm2015/lib/spinner/spinner.module.js +0 -36
- package/esm2015/lib/timeline/timeline.component.js +0 -29
- package/esm2015/lib/timeline/timeline.module.js +0 -32
- package/esm2015/lib/uploader/uploader-drag-drop.directive.js +0 -49
- package/esm2015/lib/uploader/uploader.component.js +0 -70
- package/esm2015/lib/uploader/uploader.module.js +0 -33
- package/esm2015/lib/version/version.service.js +0 -38
- package/esm2015/lib/view-content/type-converters/booleanTypeConverter.js +0 -29
- package/esm2015/lib/view-content/type-converters/dateTypeConverter.js +0 -30
- package/esm2015/lib/view-content/type-converters/relatedFilesTypeConverter.js +0 -24
- package/esm2015/lib/view-content/type-converters/stringReplaceUnderscoreTypeConverter.js +0 -27
- package/esm2015/lib/view-content/type-converters/stringTypeConverter.js +0 -24
- package/esm2015/lib/view-content/type-converters/type-converters.model.js +0 -37
- package/esm2015/lib/webcam/webcam.component.js +0 -103
- package/esm2015/lib/webcam/webcam.module.js +0 -32
- package/esm2015/lib/widget/widget.component.js +0 -80
- 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 {
|
|
19
|
-
|
|
20
|
-
export class TopbarModule {
|
|
18
|
+
import { AlertComponent } from './alert.component';
|
|
19
|
+
export class AlertModule {
|
|
21
20
|
}
|
|
22
|
-
|
|
21
|
+
AlertModule.decorators = [
|
|
23
22
|
{ type: NgModule, args: [{
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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,
|
|
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> Amount of currently active\n instances of this task.</span\n >\n <span\n > | 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnBtbi1qcy1kaWFncmFtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvdG1wL2plbmtpbnMtNGMzYmI3NzAvd29ya3NwYWNlL1ZhbHRpbW9fLV9Bbmd1bGFyX0xpYnJhcmllc19tYWluL3Byb2plY3RzL3ZhbHRpbW8vY29tcG9uZW50cy9zcmMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9icG1uLWpzLWRpYWdyYW0vYnBtbi1qcy1kaWFncmFtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULFlBQVksR0FFYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEtBQUssTUFBTSxNQUFNLHNEQUFzRCxDQUFDO0FBQy9FLE9BQU8sS0FBSyxPQUFPLE1BQU0sbUNBQW1DLENBQUM7QUFPN0QsTUFBTSxPQUFPLHNCQUFzQjtJQWdCakM7UUFYaUIsZUFBVSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBTzdELGVBQVUsR0FBRyxFQUFDLElBQUksRUFBRSxFQUFFLEVBQUMsQ0FBQztJQUloQixDQUFDO0lBRWhCLFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksTUFBTSxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUMsRUFBQyxLQUFLLEVBQUMsRUFBRSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ1YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQ3RDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFFekMsSUFBSSxJQUFJLENBQUMseUJBQXlCLEVBQUU7b0JBQ2xDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7d0JBQ2hELE1BQU0sQ0FBQyxTQUFTLENBQ2QsUUFBUSxDQUFDLFVBQVUsRUFDbkIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLDJCQUEyQixDQUMxRSxDQUFDO29CQUNKLENBQUMsQ0FBQyxDQUFDO2lCQUNKO2dCQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUVwQyxJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtvQkFDN0MsUUFBUSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFO3dCQUM5QixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7NEJBQ3BCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQzt5QkFDckI7d0JBQ0QsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO29CQUN4QixDQUFDLENBQUMsQ0FBQztvQkFDSCxRQUFRLENBQUMsRUFBRSxDQUFDLHlCQUF5QixFQUFFLEdBQUcsRUFBRTt3QkFDMUMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFOzRCQUNwQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7eUJBQ3JCO29CQUNILENBQUMsQ0FBQyxDQUFDO29CQUNILFFBQVEsQ0FBQyxFQUFFLENBQUMsd0JBQXdCLEVBQUUsR0FBRyxFQUFFO3dCQUN6QyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ3hCLENBQUMsQ0FBQyxDQUFDO2lCQUNKO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLFNBQWMsRUFBRSxRQUFhLENBQUM7UUFFbEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFDLElBQUksRUFBRSxFQUFFLEVBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUNiLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBRWIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3hCLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQ2pDLFFBQVEsR0FBRywrQkFBK0IsQ0FBQztTQUM1QzthQUFNLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUM1QixTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUM5QixRQUFRLEdBQUcsWUFBWSxDQUFDO1NBQ3pCO1FBRUQsSUFBSSxTQUFTLEVBQUU7WUFDYixNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDbkMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMscUJBQXFCLEVBQUUsRUFDekYsVUFBVSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYTtxQkFDL0IsYUFBYSxDQUFDLHFCQUFxQixHQUFHLEdBQUcsQ0FBQztxQkFDMUMscUJBQXFCLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO29CQUN4QixDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztvQkFDdkUsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7b0JBQ3hFLEtBQUssRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDO29CQUMvQixNQUFNLEVBQUUsVUFBVSxDQUFDLEtBQUssR0FBRyxDQUFDO2lCQUM3QixDQUFDLENBQUM7Z0JBQ0gsSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRTtvQkFDNUIsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztpQkFDL0M7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2FBQ3BCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQVE7UUFDYixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDeEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsNkJBQTZCLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3hGO2FBQU0sSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQzVCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQ2hFLElBQUksQ0FBQyxHQUFHLENBQ1QsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVELHdCQUF3QixDQUFDLEdBQVEsRUFBRSxTQUFjO1FBQy9DLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzdDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ2hCLFFBQVEsRUFBRTtnQkFDUixNQUFNLEVBQUUsQ0FBQyxFQUFFO2dCQUNYLElBQUksRUFBRSxDQUFDO2FBQ1I7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osT0FBTyxFQUFFLENBQUM7Z0JBQ1YsT0FBTyxFQUFFLEdBQUc7YUFDYjtZQUNELElBQUksRUFBRSxnREFBZ0QsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssU0FBUztTQUNwRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxlQUFlLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUNwQyxNQUFNLEVBQUUsRUFBRTtZQUNWLElBQUksRUFBRSxHQUFHO1lBQ1QsVUFBVSxFQUFFLEdBQUc7WUFDZixVQUFVLEVBQUUsQ0FBQztZQUNiLFNBQVMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWE7U0FDakMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUM7WUFDM0IsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1lBQ2IsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1lBQ2IsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSTtTQUMzQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEVBQUMsSUFBSSxFQUFFLEVBQUUsRUFBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNyQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BCO2FBQU07WUFDTCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckI7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDeEIsQ0FBQzs7O1lBaktGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUseUJBQXlCO2dCQUNuQyw2dURBQStDOzthQUVoRDs7OztpQkFLRSxTQUFTLFNBQUMsS0FBSyxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQzt5QkFDL0IsTUFBTTt3QkFDTixLQUFLOzhCQUNMLEtBQUs7MkJBQ0wsS0FBSzt3Q0FDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjAgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICogYXMgQnBtbkpTIGZyb20gJ2JwbW4tanMvZGlzdC9icG1uLW5hdmlnYXRlZC12aWV3ZXIucHJvZHVjdGlvbi5taW4uanMnO1xuaW1wb3J0ICogYXMgaGVhdG1hcCBmcm9tICdoZWF0bWFwLmpzLWZpeGVkL2J1aWxkL2hlYXRtYXAuanMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWJwbW4tanMtZGlhZ3JhbScsXG4gIHRlbXBsYXRlVXJsOiAnLi9icG1uLWpzLWRpYWdyYW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9icG1uLWpzLWRpYWdyYW0uY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBCcG1uSnNEaWFncmFtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIGJwbW5KUzogQnBtbkpTO1xuICBwcml2YXRlIGhlYXRNYXBJbnN0YW5jZTogYW55O1xuXG4gIEBWaWV3Q2hpbGQoJ3JlZicsIHtzdGF0aWM6IHRydWV9KSBwdWJsaWMgZWw6IEVsZW1lbnRSZWY7XG4gIEBPdXRwdXQoKSBwdWJsaWMgaW1wb3J0RG9uZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBJbnB1dCgpIHB1YmxpYyBicG1uMjBYbWw6IGFueTtcbiAgQElucHV0KCkgcHVibGljIGhlYXRtYXBEdXJhdGlvbj86IGFueTtcbiAgQElucHV0KCkgcHVibGljIGhlYXRtYXBDb3VudD86IGFueTtcbiAgQElucHV0KCkgcHVibGljIGhpc3RvcmljQWN0aXZpdHlJbnN0YW5jZXM/OiBhbnk7XG5cbiAgcHVibGljIGhlYXRtYXBNb2RlOiBib29sZWFuO1xuICBwdWJsaWMgaGVhdFBvaW50cyA9IHtkYXRhOiBbXX07XG4gIHB1YmxpYyBtaW46IG51bWJlcjtcbiAgcHVibGljIG1heDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmJwbW5KUyA9IG5ldyBCcG1uSlMoKTtcbiAgICB0aGlzLmJwbW5KUy5vbignaW1wb3J0LmRvbmUnLCAoe2Vycm9yfSkgPT4ge1xuICAgICAgaWYgKCFlcnJvcikge1xuICAgICAgICBjb25zdCBjYW52YXMgPSB0aGlzLmJwbW5KUy5nZXQoJ2NhbnZhcycpLFxuICAgICAgICAgIGV2ZW50QnVzID0gdGhpcy5icG1uSlMuZ2V0KCdldmVudEJ1cycpO1xuXG4gICAgICAgIGlmICh0aGlzLmhpc3RvcmljQWN0aXZpdHlJbnN0YW5jZXMpIHtcbiAgICAgICAgICB0aGlzLmhpc3RvcmljQWN0aXZpdHlJbnN0YW5jZXMuZm9yRWFjaChpbnN0YW5jZSA9PiB7XG4gICAgICAgICAgICBjYW52YXMuYWRkTWFya2VyKFxuICAgICAgICAgICAgICBpbnN0YW5jZS5hY3Rpdml0eUlkLFxuICAgICAgICAgICAgICBpbnN0YW5jZS5lbmRUaW1lID8gJ2hpZ2hsaWdodC1vdmVybGF5LXBhc3QnIDogJ2hpZ2hsaWdodC1vdmVybGF5LWN1cnJlbnQnXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FudmFzLnpvb20oJ2ZpdC12aWV3cG9ydCcsICdhdXRvJyk7XG5cbiAgICAgICAgaWYgKHRoaXMuaGVhdG1hcER1cmF0aW9uIHx8IHRoaXMuaGVhdG1hcENvdW50KSB7XG4gICAgICAgICAgZXZlbnRCdXMub24oJ2NhbnZhcy5pbml0JywgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaGVhdG1hcE1vZGUpIHtcbiAgICAgICAgICAgICAgdGhpcy5jbGVhckhlYXRtYXAoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZ2V0SGVhdG1hcERhdGEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBldmVudEJ1cy5vbignY2FudmFzLnZpZXdib3guY2hhbmdpbmcnLCAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5oZWF0bWFwTW9kZSkge1xuICAgICAgICAgICAgICB0aGlzLmNsZWFySGVhdG1hcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGV2ZW50QnVzLm9uKCdjYW52YXMudmlld2JveC5jaGFuZ2VkJywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5nZXRIZWF0bWFwRGF0YSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5icG1uSlMuaW1wb3J0WE1MKHRoaXMuYnBtbjIwWG1sKTtcbiAgICB0aGlzLmJwbW5KUy5hdHRhY2hUbyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgZ2V0SGVhdG1hcERhdGEoKSB7XG4gICAgbGV0IGlucHV0RGF0YTogYW55LCB2YWx1ZUtleTogYW55O1xuXG4gICAgdGhpcy5oZWF0UG9pbnRzID0ge2RhdGE6IFtdfTtcbiAgICB0aGlzLm1pbiA9IDA7XG4gICAgdGhpcy5tYXggPSAwO1xuXG4gICAgaWYgKHRoaXMuaGVhdG1hcER1cmF0aW9uKSB7XG4gICAgICBpbnB1dERhdGEgPSB0aGlzLmhlYXRtYXBEdXJhdGlvbjtcbiAgICAgIHZhbHVlS2V5ID0gJ2F2ZXJhZ2VEdXJhdGlvbkluTWlsbGlzZWNvbmRzJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuaGVhdG1hcENvdW50KSB7XG4gICAgICBpbnB1dERhdGEgPSB0aGlzLmhlYXRtYXBDb3VudDtcbiAgICAgIHZhbHVlS2V5ID0gJ3RvdGFsQ291bnQnO1xuICAgIH1cblxuICAgIGlmIChpbnB1dERhdGEpIHtcbiAgICAgIE9iamVjdC5rZXlzKGlucHV0RGF0YSkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICBjb25zdCBkaWFncmFtQ29udGFpbmVyID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgICAgICAgIGRpYWdyYW1FbG0gPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgICAgIC5xdWVyeVNlbGVjdG9yKGBnW2RhdGEtZWxlbWVudC1pZD0ke2tleX1dYClcbiAgICAgICAgICAgIC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgdGhpcy5zZXRNYXgoa2V5KTtcbiAgICAgICAgdGhpcy5oZWF0UG9pbnRzLmRhdGEucHVzaCh7XG4gICAgICAgICAgeDogTWF0aC5yb3VuZChkaWFncmFtRWxtLnggLSBkaWFncmFtQ29udGFpbmVyLnggKyBkaWFncmFtRWxtLndpZHRoIC8gMiksXG4gICAgICAgICAgeTogTWF0aC5yb3VuZChkaWFncmFtRWxtLnkgLSBkaWFncmFtQ29udGFpbmVyLnkgKyBkaWFncmFtRWxtLmhlaWdodCAvIDIpLFxuICAgICAgICAgIHZhbHVlOiBpbnB1dERhdGFba2V5XVt2YWx1ZUtleV0sXG4gICAgICAgICAgcmFkaXVzOiBkaWFncmFtRWxtLndpZHRoIC8gMixcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChpbnB1dERhdGFba2V5XS5jb3VudCA+IDApIHtcbiAgICAgICAgICB0aGlzLmFkZENvdW50ZXJBY3RpdmVPdmVybGF5cyhrZXksIGlucHV0RGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy5oZWF0bWFwTW9kZSkge1xuICAgICAgICB0aGlzLnNob3dIZWF0bWFwKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0TWF4KGtleTogYW55KSB7XG4gICAgaWYgKHRoaXMuaGVhdG1hcER1cmF0aW9uKSB7XG4gICAgICB0aGlzLm1heCA9IE1hdGgubWF4KHRoaXMuaGVhdG1hcER1cmF0aW9uW2tleV0uYXZlcmFnZUR1cmF0aW9uSW5NaWxsaXNlY29uZHMsIHRoaXMubWF4KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaGVhdG1hcENvdW50KSB7XG4gICAgICB0aGlzLm1heCA9IE1hdGgubWF4KFxuICAgICAgICB0aGlzLmhlYXRtYXBDb3VudFtrZXldLnRvdGFsQ291bnQgKyB0aGlzLmhlYXRtYXBDb3VudFtrZXldLmNvdW50LFxuICAgICAgICB0aGlzLm1heFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBhZGRDb3VudGVyQWN0aXZlT3ZlcmxheXMoa2V5OiBhbnksIGlucHV0RGF0YTogYW55KSB7XG4gICAgY29uc3Qgb3ZlcmxheXMgPSB0aGlzLmJwbW5KUy5nZXQoJ292ZXJsYXlzJyk7XG4gICAgb3ZlcmxheXMuYWRkKGtleSwge1xuICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgYm90dG9tOiAtMTAsXG4gICAgICAgIGxlZnQ6IDAsXG4gICAgICB9LFxuICAgICAgc2hvdzoge1xuICAgICAgICBtaW5ab29tOiAwLFxuICAgICAgICBtYXhab29tOiA1LjAsXG4gICAgICB9LFxuICAgICAgaHRtbDogYDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtcGlsbCBiYWRnZS1wcmltYXJ5XCI+JHtpbnB1dERhdGFba2V5XS5jb3VudH08L3NwYW4+YCxcbiAgICB9KTtcbiAgfVxuXG4gIHNob3dIZWF0bWFwKCkge1xuICAgIHRoaXMuaGVhdE1hcEluc3RhbmNlID0gaGVhdG1hcC5jcmVhdGUoe1xuICAgICAgcmFkaXVzOiA1NCxcbiAgICAgIGJsdXI6IDAuNyxcbiAgICAgIG1heE9wYWNpdHk6IDAuNCxcbiAgICAgIG1pbk9wYWNpdHk6IDAsXG4gICAgICBjb250YWluZXI6IHRoaXMuZWwubmF0aXZlRWxlbWVudCxcbiAgICB9KTtcbiAgICB0aGlzLmhlYXRNYXBJbnN0YW5jZS5zZXREYXRhKHtcbiAgICAgIG1pbjogdGhpcy5taW4sXG4gICAgICBtYXg6IHRoaXMubWF4LFxuICAgICAgZGF0YTogdGhpcy5oZWF0UG9pbnRzLmRhdGEsXG4gICAgfSk7XG4gIH1cblxuICBjbGVhckhlYXRtYXAoKSB7XG4gICAgdGhpcy5oZWF0TWFwSW5zdGFuY2Uuc2V0RGF0YSh7ZGF0YTogW119KTtcbiAgfVxuXG4gIHRvZ2dsZUhlYXRtYXAoKSB7XG4gICAgdGhpcy5oZWF0bWFwTW9kZSA9ICF0aGlzLmhlYXRtYXBNb2RlO1xuICAgIGlmICh0aGlzLmhlYXRtYXBNb2RlKSB7XG4gICAgICB0aGlzLnNob3dIZWF0bWFwKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2xlYXJIZWF0bWFwKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5icG1uSlMuZGVzdHJveSgpO1xuICB9XG59XG4iXX0=
|
package/esm2015/lib/{alert/alert.module.js → components/bpmn-js-diagram/bpmn-js-diagram.module.js}
RENAMED
|
@@ -15,14 +15,14 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { NgModule } from '@angular/core';
|
|
17
17
|
import { CommonModule } from '@angular/common';
|
|
18
|
-
import {
|
|
19
|
-
export class
|
|
18
|
+
import { BpmnJsDiagramComponent } from './bpmn-js-diagram.component';
|
|
19
|
+
export class BpmnJsDiagramModule {
|
|
20
20
|
}
|
|
21
|
-
|
|
21
|
+
BpmnJsDiagramModule.decorators = [
|
|
22
22
|
{ type: NgModule, args: [{
|
|
23
|
+
declarations: [BpmnJsDiagramComponent],
|
|
23
24
|
imports: [CommonModule],
|
|
24
|
-
|
|
25
|
-
exports: [AlertComponent]
|
|
25
|
+
exports: [BpmnJsDiagramComponent],
|
|
26
26
|
},] }
|
|
27
27
|
];
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
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==
|