@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"valtimo-components.js","sources":["../../../../projects/valtimo/components/src/lib/camunda/form/camunda-form.components.ts","../../../../projects/valtimo/components/src/lib/camunda/form/custom/camunda-custom-form.component.ts","../../../../projects/valtimo/components/src/lib/camunda/form/custom/camunda-custom-form.module.ts","../../../../projects/valtimo/components/src/lib/camunda/form/generated/formfield/validation/date.validators.ts","../../../../projects/valtimo/components/src/lib/camunda/form/generated/formfield/camunda-formfield.service.ts","../../../../projects/valtimo/components/src/lib/camunda/form/generated/camunda-generated-form.component.ts","../../../../projects/valtimo/components/src/lib/camunda/form/generated/formfield/string/camunda-string-formfield.component.ts","../../../../projects/valtimo/components/src/lib/camunda/form/generated/formfield/boolean/camunda-boolean-formfield.component.ts","../../../../projects/valtimo/components/src/lib/camunda/form/generated/formfield/date/camunda-date-formfield.component.ts","../../../../projects/valtimo/components/src/lib/camunda/form/generated/formfield/long/camunda-long-formfield.component.ts","../../../../projects/valtimo/components/src/lib/camunda/form/generated/formfield/enum/camunda-enum-formfield.component.ts","../../../../projects/valtimo/components/src/lib/camunda/form/generated/formfield/textarea/camunda-textarea-formfield.component.ts","../../../../projects/valtimo/components/src/lib/camunda/form/generated/formfield/choicefield/camunda-choicefield-formfield.component.ts","../../../../projects/valtimo/components/src/lib/camunda/form/generated/formfield/camunda-formfield-generator.directive.ts","../../../../projects/valtimo/components/src/lib/camunda/form/generated/formfield/validation/camunda-formfield-validation.component.ts","../../../../projects/valtimo/components/src/lib/camunda/form/generated/camunda-generated-form.module.ts","../../../../projects/valtimo/components/src/lib/camunda/form/camunda-form.module.ts","../../../../projects/valtimo/components/src/lib/topbar/topbar.component.ts","../../../../projects/valtimo/components/src/lib/topbar/topbar.module.ts","../../../../projects/valtimo/components/src/lib/menu/menu.service.ts","../../../../projects/valtimo/components/src/lib/menu/menu-routing.module.ts","../../../../projects/valtimo/components/src/lib/menu/menu.component.ts","../../../../projects/valtimo/components/src/lib/menu/menu-item-text.component.ts","../../../../projects/valtimo/components/src/lib/menu/submenu-item-text.component.ts","../../../../projects/valtimo/components/src/lib/menu/menu.module.ts","../../../../projects/valtimo/components/src/lib/menu/menu.init.ts","../../../../projects/valtimo/components/src/lib/version/version.service.ts","../../../../projects/valtimo/components/src/lib/right-sidebar/right-sidebar.component.ts","../../../../projects/valtimo/components/src/lib/right-sidebar/right-sidebar.module.ts","../../../../projects/valtimo/components/src/lib/left-sidebar/left-sidebar.component.ts","../../../../projects/valtimo/components/src/lib/page-title/page-title.component.ts","../../../../projects/valtimo/components/src/lib/page-title/page-title.module.ts","../../../../projects/valtimo/components/src/lib/left-sidebar/left-sidebar.module.ts","../../../../projects/valtimo/components/src/lib/view-content/type-converters/stringTypeConverter.ts","../../../../projects/valtimo/components/src/lib/view-content/type-converters/booleanTypeConverter.ts","../../../../projects/valtimo/components/src/lib/view-content/type-converters/dateTypeConverter.ts","../../../../projects/valtimo/components/src/lib/view-content/type-converters/enumTypeConverter.ts","../../../../projects/valtimo/components/src/lib/view-content/type-converters/stringReplaceUnderscoreTypeConverter.ts","../../../../projects/valtimo/components/src/lib/view-content/type-converters/relatedFilesTypeConverter.ts","../../../../projects/valtimo/components/src/lib/view-content/type-converters/type-converters.model.ts","../../../../projects/valtimo/components/src/lib/view-content/view-content.service.ts","../../../../projects/valtimo/components/src/lib/list/list.component.ts","../../../../projects/valtimo/components/src/lib/list/ListFilterPipe.directive.ts","../../../../projects/valtimo/components/src/lib/card/card.component.ts","../../../../projects/valtimo/components/src/lib/card/card.module.ts","../../../../projects/valtimo/components/src/lib/list/list.module.ts","../../../../projects/valtimo/components/src/lib/page-header/page-header.component.ts","../../../../projects/valtimo/components/src/lib/breadcrumb-navigation/breadcrumb-navigation.component.ts","../../../../projects/valtimo/components/src/lib/breadcrumb-navigation/breadcrumb-navigation.module.ts","../../../../projects/valtimo/components/src/lib/page-header/page-header.module.ts","../../../../projects/valtimo/components/src/lib/widget/widget.component.ts","../../../../projects/valtimo/components/src/lib/widget/widget.module.ts","../../../../projects/valtimo/components/src/lib/field-auto-focus/field-auto-focus.directive.ts","../../../../projects/valtimo/components/src/lib/field-auto-focus/field-auto-focus.module.ts","../../../../projects/valtimo/components/src/lib/bpmn-js-diagram/bpmn-js-diagram.component.ts","../../../../projects/valtimo/components/src/lib/bpmn-js-diagram/bpmn-js-diagram.module.ts","../../../../projects/valtimo/components/src/lib/timeline/timeline.component.ts","../../../../projects/valtimo/components/src/lib/timeline/timeline.module.ts","../../../../projects/valtimo/components/src/lib/components.module.ts","../../../../projects/valtimo/components/src/lib/filter-sidebar/filter-sidebar.component.ts","../../../../projects/valtimo/components/src/lib/filter-sidebar/filter-sidebar.module.ts","../../../../projects/valtimo/components/src/lib/uploader/uploader.component.ts","../../../../projects/valtimo/components/src/lib/uploader/uploader-drag-drop.directive.ts","../../../../projects/valtimo/components/src/lib/file-size/file-size.pipe.ts","../../../../projects/valtimo/components/src/lib/file-size/file-size.module.ts","../../../../projects/valtimo/components/src/lib/uploader/uploader.module.ts","../../../../projects/valtimo/components/src/lib/alert/alert.service.ts","../../../../projects/valtimo/components/src/lib/alert/alert.component.ts","../../../../projects/valtimo/components/src/lib/alert/alert.module.ts","../../../../projects/valtimo/components/src/lib/data-list/data-list.component.ts","../../../../projects/valtimo/components/src/lib/data-list/data-list.module.ts","../../../../projects/valtimo/components/src/lib/form-io/services/form-io-state.service.ts","../../../../projects/valtimo/components/src/lib/form-io/form-io.component.ts","../../../../projects/valtimo/components/src/lib/form-io/form-io-builder.component.ts","../../../../projects/valtimo/components/src/lib/form-io/formio-config.ts","../../../../projects/valtimo/components/src/lib/form-io/services/form-io-dom.service.ts","../../../../projects/valtimo/components/src/lib/form-io/form-io-uploader/form-io-uploader.component.ts","../../../../projects/valtimo/components/src/lib/dropzone/dropzone.component.ts","../../../../projects/valtimo/components/src/lib/progress-bar/progress-bar.component.ts","../../../../projects/valtimo/components/src/lib/progress-bar/progress-bar.module.ts","../../../../projects/valtimo/components/src/lib/webcam/webcam.component.ts","../../../../projects/valtimo/components/src/lib/webcam/webcam.module.ts","../../../../projects/valtimo/components/src/lib/dropzone/dropzone.module.ts","../../../../projects/valtimo/components/src/lib/form-io/form-io.module.ts","../../../../projects/valtimo/components/src/lib/modal/modal.component.ts","../../../../projects/valtimo/components/src/lib/modal/modal.module.ts","../../../../projects/valtimo/components/src/lib/spinner/spinner.component.ts","../../../../projects/valtimo/components/src/lib/spinner/spinner.module.ts","../../../../projects/valtimo/components/src/lib/searchable-dropdown/searchable-dropdown.component.ts","../../../../projects/valtimo/components/src/lib/searchable-dropdown/searchable-dropdown.module.ts","../../../../projects/valtimo/components/src/lib/form-io/form-io-uploader/form-io-uploader-edit-form.ts","../../../../projects/valtimo/components/src/lib/form-io/form-io-uploader/form-io-uploader.formio.ts","../../../../projects/valtimo/components/src/lib/searchable-dropdown-select/searchable-dropdown-select.component.ts","../../../../projects/valtimo/components/src/lib/searchable-dropdown-select/searchable-dropdown-select.module.ts","../../../../projects/valtimo/components/src/public_api.ts","../../../../projects/valtimo/components/src/valtimo-components.ts"],"sourcesContent":["/*\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\nimport {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {FormField} from './generated/formfield/formfield.model';\n\n@Component({\n selector: 'valtimo-camunda-form',\n templateUrl: './camunda-form.component.html'\n})\nexport class CamundaFormComponent {\n\n @Input() componentName: string;\n @Input() formFields: FormField[];\n @Output() submitted?: EventEmitter<any> = new EventEmitter();\n\n constructor() {\n }\n\n onSubmitted(event) {\n this.submitted.emit(event);\n }\n\n}\n","/*\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\nimport {Component, ComponentFactoryResolver, Input, OnInit, Type, ViewChild, ViewContainerRef} from '@angular/core';\n\n@Component({\n selector: 'valtimo-custom-form',\n templateUrl: './camunda-custom-form.component.html',\n styleUrls: ['./camunda-custom-form.component.css']\n})\nexport class CamundaCustomFormComponent implements OnInit {\n\n @Input() componentName: string;\n @ViewChild('customFormContainer', {read: ViewContainerRef, static: true}) viewContainerRef;\n\n constructor(private resolver: ComponentFactoryResolver) {\n }\n\n ngOnInit() {\n const factories = Array.from(this.resolver['_factories'].keys());\n const factoryClass = <Type<any>>factories.find((x: any) => x.name === this.componentName);\n const cmpFactory = this.resolver.resolveComponentFactory(factoryClass);\n this.viewContainerRef.createComponent(cmpFactory);\n }\n\n}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {CamundaCustomFormComponent} from './camunda-custom-form.component';\n\n@NgModule({\n declarations: [\n CamundaCustomFormComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [\n CamundaCustomFormComponent\n ]\n})\nexport class CamundaCustomFormModule { }\n","/*\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\nimport * as momentImported from 'moment';\nimport {AbstractControl, ValidatorFn} from '@angular/forms';\n\nconst moment = momentImported;\nmoment.locale(localStorage.getItem('langKey'));\nconst DATE_FORMAT = 'DD-MM-YYYY';\n\nexport function minDate(minDateIn: string): ValidatorFn {\n return (control: AbstractControl): { [key: string]: any } | null => {\n if (!control.value) {\n return null;\n }\n const controlDate = moment.utc(control.value).startOf('day');\n const momentMinDate = moment.utc(minDateIn, DATE_FORMAT, true);\n\n if (!controlDate.isSameOrAfter(momentMinDate)) {\n return {\n minDate: {\n minDate: momentMinDate.format(DATE_FORMAT),\n actual: controlDate.format(DATE_FORMAT)\n }\n };\n } else {\n return null;\n }\n };\n}\n\nexport function maxDate(maxDateIn: string): ValidatorFn {\n return (control: AbstractControl): { [key: string]: any } | null => {\n if (!control.value) {\n return null;\n }\n const controlDate = moment.utc(control.value).startOf('day');\n const momentMaxDate = moment.utc(maxDateIn, DATE_FORMAT, true);\n\n if (!controlDate.isSameOrBefore(momentMaxDate)) {\n return {\n maxDate: {\n maxDate: momentMaxDate.format(DATE_FORMAT),\n actual: controlDate.format(DATE_FORMAT)\n }\n };\n } else {\n return null;\n }\n };\n}\n","/*\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\nimport {Injectable} from '@angular/core';\nimport {Validators} from '@angular/forms';\nimport {maxDate, minDate} from './validation/date.validators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CamundaFormfieldService {\n\n constructor() {\n }\n\n public isFormFieldDisabled(formField) {\n return formField.validationConstraints.filter(vc => vc.name === 'readonly').length > 0;\n }\n\n public getMinDate(formField) {\n return formField.validationConstraints.filter(vc => vc.name === 'minDate' && vc.configuration)[0];\n }\n\n public getMaxDate(formField) {\n return formField.validationConstraints.filter(vc => vc.name === 'maxDate' && vc.configuration)[0];\n }\n\n public getValidatorTypes(formField) {\n const validatorTypes = [];\n formField.validationConstraints.forEach(validationConstraint => {\n if (validationConstraint.name === 'required') {\n validatorTypes.push(Validators.required);\n }\n if (validationConstraint.name === 'minlength') {\n validatorTypes.push(Validators.minLength(+validationConstraint.configuration));\n }\n if (validationConstraint.name === 'maxlength') {\n validatorTypes.push(Validators.maxLength(+validationConstraint.configuration));\n }\n if (validationConstraint.name === 'min') {\n validatorTypes.push(Validators.min(+validationConstraint.configuration));\n }\n if (validationConstraint.name === 'max') {\n validatorTypes.push(Validators.max(+validationConstraint.configuration));\n }\n if (validationConstraint.name === 'minDate') {\n validatorTypes.push(minDate(validationConstraint.configuration));\n }\n if (validationConstraint.name === 'maxDate') {\n validatorTypes.push(maxDate(validationConstraint.configuration));\n }\n });\n return validatorTypes;\n }\n\n}\n","/*\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\nimport {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\nimport {FormBuilder, FormControl, FormGroup} from '@angular/forms';\nimport {FormField} from './formfield/formfield.model';\nimport {CamundaFormfieldService} from './formfield/camunda-formfield.service';\nimport {Location} from '@angular/common';\n\n@Component({\n selector: 'valtimo-camunda-generated-form',\n templateUrl: './camunda-generated-form.component.html'\n})\nexport class CamundaGeneratedFormComponent implements OnInit {\n\n @Output() submitted: EventEmitter<any> = new EventEmitter<any>();\n @Input() formFields: FormField[] = [];\n public formGroup: FormGroup;\n\n constructor(\n private formBuilder: FormBuilder,\n private camundaFormFieldService: CamundaFormfieldService,\n private location: Location\n ) {\n }\n\n ngOnInit(): void {\n this.formGroup = this.createFormGroup();\n }\n\n private createFormGroup() {\n const group = this.formBuilder.group({});\n this.formFields.forEach(formField => {\n const control = new FormControl({\n value: formField.defaultValue,\n disabled: this.camundaFormFieldService.isFormFieldDisabled(formField)\n }, this.camundaFormFieldService.getValidatorTypes(formField));\n group.addControl(formField.id, control);\n });\n return group;\n }\n\n public reset() {\n this.formGroup.reset();\n }\n\n public back() {\n this.location.back();\n }\n\n public handleSubmit(event) {\n event.preventDefault();\n event.stopPropagation();\n this.submitted.emit(this.formGroup.value);\n }\n\n}\n","/*\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\nimport {Component} from '@angular/core';\nimport {FormGroup} from '@angular/forms';\nimport {FormField} from '../formfield.model';\n\n@Component({\n selector: 'valtimo-camunda-string-formfield',\n templateUrl: './camunda-string-formfield.component.html'\n})\nexport class CamundaStringFormfieldComponent {\n\n public formGroup: FormGroup;\n public formField: FormField;\n\n constructor() {\n }\n\n}\n","/*\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\nimport {Component} from '@angular/core';\nimport {FormGroup} from '@angular/forms';\nimport {FormField} from '../formfield.model';\n\n@Component({\n selector: 'valtimo-camunda-boolean-formfield',\n templateUrl: './camunda-boolean-formfield.component.html'\n})\nexport class CamundaBooleanFormfieldComponent {\n\n public formGroup: FormGroup;\n public formField: FormField;\n\n constructor() {\n }\n}\n","/*\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\nimport {AfterViewInit, Component, OnInit} from '@angular/core';\nimport {FormGroup} from '@angular/forms';\nimport {FormField} from '../formfield.model';\nimport {CamundaFormfieldService} from '../camunda-formfield.service';\nimport * as momentImported from 'moment';\n\nconst moment = momentImported;\nmoment.locale(localStorage.getItem('langKey'));\ndeclare var $;\n\n@Component({\n selector: 'valtimo-camunda-date-formfield',\n templateUrl: './camunda-date-formfield.component.html'\n})\nexport class CamundaDateFormfieldComponent implements OnInit, AfterViewInit {\n\n public formGroup: FormGroup;\n public formField: FormField;\n\n private INPUT_SELECTOR: string;\n private datePickerOptions: any = {};\n\n constructor(private formFieldService: CamundaFormfieldService) {\n }\n\n ngOnInit(): void {\n this.INPUT_SELECTOR = '#' + this.formField.id;\n this.datePickerOptions = {\n autoclose: true,\n componentIcon: '.mdi.mdi-calendar',\n navIcons: {\n rightIcon: 'mdi mdi-chevron-right',\n leftIcon: 'mdi mdi-chevron-left'\n },\n format: 'dd-mm-yyyy'\n };\n }\n\n ngAfterViewInit(): void {\n const formGroup = this.formGroup;\n const formField = this.formField;\n\n const maxDate = this.formFieldService.getMaxDate(this.formField);\n if (maxDate) {\n this.datePickerOptions.endDate = maxDate.configuration;\n }\n\n const minDate = this.formFieldService.getMinDate(this.formField);\n if (minDate) {\n this.datePickerOptions.startDate = minDate.configuration;\n }\n\n $(this.INPUT_SELECTOR).datetimepicker(this.datePickerOptions);\n $(this.INPUT_SELECTOR).on('changeDate', function(e) {\n formGroup.patchValue({\n [formField.id]: moment(e.date.valueOf()).format('DD/MM/YYYY')\n });\n });\n }\n\n}\n","/*\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\nimport {Component} from '@angular/core';\nimport {FormGroup} from '@angular/forms';\nimport {FormField} from '../formfield.model';\n\n@Component({\n selector: 'valtimo-camunda-long-formfield',\n templateUrl: './camunda-long-formfield.component.html'\n})\nexport class CamundaLongFormfieldComponent {\n\n public formGroup: FormGroup;\n public formField: FormField;\n\n constructor() {\n }\n}\n","/*\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\nimport {Component, OnInit} from '@angular/core';\nimport {FormGroup} from '@angular/forms';\nimport {FormField} from '../formfield.model';\n\n@Component({\n selector: 'valtimo-camunda-enum-formfield',\n templateUrl: './camunda-enum-formfield.component.html'\n})\nexport class CamundaEnumFormfieldComponent implements OnInit {\n\n public formGroup: FormGroup;\n public formField: FormField;\n\n public valueKeys;\n\n constructor() {\n }\n\n ngOnInit(): void {\n this.valueKeys = Object.keys(this.formField.type.values);\n }\n}\n","/*\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\nimport {Component} from '@angular/core';\nimport {FormGroup} from '@angular/forms';\nimport {FormField} from '../formfield.model';\n\n@Component({\n selector: 'valtimo-camunda-textarea-formfield',\n templateUrl: './camunda-textarea-formfield.component.html'\n})\nexport class CamundaTextareaFormfieldComponent {\n\n public formGroup: FormGroup;\n public formField: FormField;\n\n constructor() {\n }\n\n}\n","/*\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\nimport {Component, OnInit} from '@angular/core';\nimport {FormGroup} from '@angular/forms';\nimport {FormField} from '../formfield.model';\nimport {ChoicefieldService} from '@valtimo/choicefield';\n\n@Component({\n selector: 'valtimo-camunda-choicefield-formfield',\n templateUrl: './camunda-choicefield-formfield.component.html'\n})\n\nexport class CamundaChoicefieldFormfieldComponent implements OnInit {\n\n public formGroup: FormGroup;\n public formField: FormField;\n public choicefieldValues: Array<any> = [];\n\n constructor(private choicefieldService: ChoicefieldService) { }\n\n ngOnInit(): void {\n this.choicefieldService.getChoiceFieldValuesByName( this.formField.properties['choicefield'] ).subscribe(\n data => {\n this.choicefieldValues = data;\n });\n }\n}\n","/*\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\nimport {ComponentFactoryResolver, ComponentRef, Directive, Input, OnInit, ViewContainerRef} from '@angular/core';\nimport {FormGroup} from '@angular/forms';\nimport {FormField} from './formfield.model';\nimport {CamundaStringFormfieldComponent} from './string/camunda-string-formfield.component';\nimport {CamundaBooleanFormfieldComponent} from './boolean/camunda-boolean-formfield.component';\nimport {CamundaDateFormfieldComponent} from './date/camunda-date-formfield.component';\nimport {CamundaLongFormfieldComponent} from './long/camunda-long-formfield.component';\nimport {CamundaEnumFormfieldComponent} from './enum/camunda-enum-formfield.component';\nimport {CamundaTextareaFormfieldComponent} from './textarea/camunda-textarea-formfield.component';\nimport {CamundaChoicefieldFormfieldComponent} from './choicefield/camunda-choicefield-formfield.component';\n\n@Directive({\n selector: '[valtimoCamundaFormfieldGenerator]'\n})\nexport class CamundaFormfieldGeneratorDirective implements OnInit {\n @Input() formField: FormField;\n\n @Input() formGroup: FormGroup;\n\n private readonly COMPONENTS = {\n string: CamundaStringFormfieldComponent,\n boolean: CamundaBooleanFormfieldComponent,\n date: CamundaDateFormfieldComponent,\n long: CamundaLongFormfieldComponent,\n enum: CamundaEnumFormfieldComponent,\n textarea: CamundaTextareaFormfieldComponent,\n choicefield: CamundaChoicefieldFormfieldComponent\n };\n\n private component: ComponentRef<any>;\n\n constructor(\n private viewContainerRef: ViewContainerRef,\n private componentFactoryResolver: ComponentFactoryResolver\n ) {\n\n }\n\n ngOnInit(): void {\n const typeName = this.formField.typeName.toLowerCase();\n if ( !this.COMPONENTS[typeName] ) {\n throw new Error(\n 'Could not find component for formfield type: ' + typeName\n );\n }\n const component = this.COMPONENTS[ typeName ];\n const factory = this.componentFactoryResolver.resolveComponentFactory(component);\n this.component = this.viewContainerRef.createComponent(factory);\n this.component.instance.formGroup = this.formGroup;\n this.component.instance.formField = this.formField;\n }\n\n\n}\n\n","/*\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\nimport {Component, Input, OnInit} from '@angular/core';\nimport {FormGroup} from '@angular/forms';\nimport {FormField} from '../formfield.model';\n\n@Component({\n selector: 'valtimo-camunda-formfield-validation',\n templateUrl: './camunda-formfield-validation.component.html'\n})\nexport class CamundaFormfieldValidationComponent implements OnInit {\n\n @Input() public formGroup: FormGroup;\n @Input() public formField: FormField;\n\n formControl: any;\n\n constructor() {\n }\n\n ngOnInit(): void {\n this.formControl = this.formGroup.get(this.formField.id);\n }\n\n}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {CamundaGeneratedFormComponent} from './camunda-generated-form.component';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {CamundaStringFormfieldComponent} from './formfield/string/camunda-string-formfield.component';\nimport {CamundaFormfieldGeneratorDirective} from './formfield/camunda-formfield-generator.directive';\nimport {CamundaBooleanFormfieldComponent} from './formfield/boolean/camunda-boolean-formfield.component';\nimport {CamundaDateFormfieldComponent} from './formfield/date/camunda-date-formfield.component';\nimport {CamundaLongFormfieldComponent} from './formfield/long/camunda-long-formfield.component';\nimport {CamundaEnumFormfieldComponent} from './formfield/enum/camunda-enum-formfield.component';\nimport {CamundaTextareaFormfieldComponent} from './formfield/textarea/camunda-textarea-formfield.component';\nimport {CamundaChoicefieldFormfieldComponent} from './formfield/choicefield/camunda-choicefield-formfield.component';\nimport {CamundaFormfieldValidationComponent} from './formfield/validation/camunda-formfield-validation.component';\n\n@NgModule({\n declarations: [\n CamundaStringFormfieldComponent,\n CamundaBooleanFormfieldComponent,\n CamundaDateFormfieldComponent,\n CamundaFormfieldGeneratorDirective,\n CamundaLongFormfieldComponent,\n CamundaEnumFormfieldComponent,\n CamundaTextareaFormfieldComponent,\n CamundaChoicefieldFormfieldComponent,\n CamundaFormfieldValidationComponent,\n CamundaGeneratedFormComponent\n ],\n imports: [\n CommonModule,\n ReactiveFormsModule\n ],\n exports: [\n CamundaGeneratedFormComponent\n ],\n entryComponents: [\n CamundaStringFormfieldComponent,\n CamundaBooleanFormfieldComponent,\n CamundaDateFormfieldComponent,\n CamundaLongFormfieldComponent,\n CamundaEnumFormfieldComponent,\n CamundaTextareaFormfieldComponent,\n CamundaChoicefieldFormfieldComponent\n ]\n})\nexport class CamundaGeneratedFormModule {\n}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {CamundaFormComponent} from './camunda-form.components';\nimport {CamundaCustomFormModule} from './custom/camunda-custom-form.module';\nimport {CamundaGeneratedFormModule} from './generated/camunda-generated-form.module';\n\n@NgModule({\n declarations: [\n CamundaFormComponent\n ],\n imports: [\n CommonModule,\n CamundaGeneratedFormModule,\n CamundaCustomFormModule\n ],\n exports: [\n CamundaFormComponent\n ]\n})\nexport class CamundaFormModule { }\n","/*\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\nimport {Component} from '@angular/core';\n\n@Component({\n selector: 'valtimo-topbar',\n templateUrl: './topbar.component.html',\n styleUrls: ['./topbar.component.css']\n})\nexport class TopbarComponent {\n\n constructor() {\n }\n\n}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TopbarComponent} from './topbar.component';\nimport {RouterModule} from '@angular/router';\n\n@NgModule({\n declarations: [TopbarComponent],\n imports: [\n CommonModule,\n RouterModule\n ],\n exports: [TopbarComponent]\n})\nexport class TopbarModule {\n}\n","/*\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\nimport {Injectable} from '@angular/core';\nimport {MenuConfig, MenuItem} from '@valtimo/contract';\nimport {NGXLogger} from 'ngx-logger';\nimport {ConfigService} from '@valtimo/config';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {DocumentService} from '@valtimo/document';\nimport {UserProviderService} from '@valtimo/security';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MenuService {\n\n private _menuItems$ = new BehaviorSubject<MenuItem[]>(undefined);\n private menuConfig: MenuConfig;\n\n constructor(\n private configService: ConfigService,\n private documentService: DocumentService,\n private userProviderService: UserProviderService,\n private logger: NGXLogger\n ) {\n this.menuConfig = configService.config.menu;\n }\n\n init(): void {\n this.reload();\n this.logger.debug('Menu initialized');\n }\n\n public get menuItems$(): Observable<MenuItem[]> {\n return this._menuItems$.asObservable();\n }\n\n public reload(): void {\n return this._menuItems$.next(this.loadMenuItems());\n }\n\n private loadMenuItems(): MenuItem[] {\n let menuItems: MenuItem[] = [];\n this.menuConfig.menuItems.forEach((menuItem: MenuItem) => {\n menuItem.show = true;\n menuItems.push(menuItem);\n });\n menuItems = this.sortMenuItems(menuItems);\n this.appendDossierSubMenuItems(menuItems).subscribe(value =>\n menuItems = this.applyMenuRoleSecurity(value)\n );\n return menuItems;\n }\n\n private sortMenuItems(menuItems: MenuItem[]): MenuItem[] {\n return menuItems.sort((a, b) => {\n return a.sequence - b.sequence;\n });\n }\n\n private appendDossierSubMenuItems(menuItems: MenuItem[]): Observable<MenuItem[]> {\n return new Observable(subscriber => {\n this.logger.debug('appendDossierSubMenuItems');\n this.documentService.getAllDefinitions().subscribe(definitions => {\n const dossierMenuItems: MenuItem[] = definitions.content\n .map((definition, index) => ({\n link: ['/dossiers/' + definition.id.name],\n title: definition.schema.title,\n iconClass: 'icon mdi mdi-dot-circle',\n sequence: index,\n show: true\n } as MenuItem)\n );\n this.logger.debug('found dossierMenuItems', dossierMenuItems);\n const menuItemIndex = menuItems.findIndex(({title}) => title === 'Dossiers');\n if (menuItemIndex > 0) {\n const dossierMenu = menuItems[menuItemIndex];\n this.logger.debug('updating dossierMenu', dossierMenu);\n dossierMenu.children = dossierMenuItems;\n menuItems[menuItemIndex] = dossierMenu;\n }\n subscriber.next(menuItems);\n this.logger.debug('appendDossierSubMenuItems finished');\n });\n });\n }\n\n private applyMenuRoleSecurity(menuItems: MenuItem[]): MenuItem[] {\n this.userProviderService.getUserSubject().subscribe(user => {\n if (user.roles != null) {\n this.logger.debug('applyMenuRoleSecurity');\n const userRoles = user.roles;\n menuItems.forEach((menuItem: MenuItem) => {\n const access = this.determineRoleAccess(menuItem, userRoles);\n this.logger.debug('Menu: check role access', menuItem.roles, access);\n if (menuItem.show !== access) {\n this.logger.debug('Menu: Change access', menuItem, access);\n menuItem.show = access;\n }\n });\n }\n });\n return menuItems;\n }\n\n private determineRoleAccess(menuItem: MenuItem, roles: string[]): boolean {\n if (!menuItem.roles) {\n return true;\n } else if (menuItem.roles.some(role => roles.includes(role))) {\n return true;\n } else {\n return false;\n }\n }\n\n}\n","/*\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\nimport {RouterModule, Routes} from '@angular/router';\nimport {NgModule} from '@angular/core';\n\nconst routes: Routes = [];\n\n@NgModule({\n imports: [\n RouterModule.forChild(routes)\n ],\n exports: [RouterModule]\n})\nexport class MenuRoutingModule {\n}\n","/*\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\nimport {Component, ElementRef, OnDestroy, OnInit, Renderer2} from '@angular/core';\nimport {Event, NavigationEnd, Router} from '@angular/router';\nimport {MenuItem} from '@valtimo/contract';\nimport {Subscription} from 'rxjs';\nimport {MenuService} from './menu.service';\n\n@Component({\n selector: 'valtimo-menu',\n templateUrl: './menu.component.html',\n styleUrls: ['./menu.component.css']\n})\nexport class MenuComponent implements OnInit, OnDestroy {\n public menuItems: MenuItem[];\n private routerSubscription: Subscription;\n private menuItemSubscription: Subscription;\n\n constructor(\n private menuService: MenuService,\n private elRef: ElementRef,\n private renderer: Renderer2,\n private router: Router\n ) {\n }\n\n ngOnInit(): void {\n this.openRouterSubscription();\n this.menuItemSubscription = this.menuService.menuItems$.subscribe(value => this.menuItems = value);\n }\n\n ngOnDestroy(): void {\n this.routerSubscription.unsubscribe();\n this.menuItemSubscription.unsubscribe();\n }\n\n private openRouterSubscription(): void {\n this.routerSubscription = this.router.events.subscribe((event: Event) => {\n if (event instanceof NavigationEnd) {\n this.closeSubMenu();\n }\n });\n }\n\n public closeSubMenu() {\n const visibleSubMenuElm = this.elRef.nativeElement.querySelector('.sub-menu.visible');\n if (visibleSubMenuElm) {\n this.renderer.removeClass(visibleSubMenuElm, 'visible');\n const topLevelMenuItem = this.elRef.nativeElement.querySelector('li.parent.open');\n if (topLevelMenuItem) {\n this.renderer.removeClass(topLevelMenuItem, 'open');\n }\n }\n }\n\n}\n","/*\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\nimport {Component, Input} from '@angular/core';\nimport {MenuItem} from '@valtimo/contract';\n\n@Component({\n selector: 'valtimo-menu-item-text',\n template: `\n <i class=\"{{ menuItem.iconClass }}\"\n container=\"body\"\n placement=\"right\"\n ngbTooltip=\"{{ menuItem.title | translate }}\"\n autoClose=\"true\">\n </i>\n <span>{{ menuItem.title | translate }}</span>\n `,\n})\nexport class MenuItemTextComponent {\n\n @Input() menuItem: MenuItem;\n\n}\n","/*\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\nimport {Component, Input} from '@angular/core';\nimport {MenuItem} from '@valtimo/contract';\n\n@Component({\n selector: 'valtimo-submenu-item-text',\n template: `\n <span [ngClass]=\"submenuItem.textClass\">\n {{ submenuItem.title | translate }}\n <ng-container *ngIf=\"!submenuItem.link\">></ng-container>\n </span>\n `,\n})\nexport class SubmenuItemTextComponent {\n\n @Input() submenuItem: MenuItem;\n\n}\n\n\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MenuComponent} from './menu.component';\nimport {RouterModule} from '@angular/router';\nimport {NgbTooltipModule} from '@ng-bootstrap/ng-bootstrap';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {MenuItemTextComponent} from './menu-item-text.component';\nimport {SubmenuItemTextComponent} from './submenu-item-text.component';\n\n@NgModule({\n declarations: [MenuComponent, MenuItemTextComponent, SubmenuItemTextComponent],\n imports: [\n CommonModule,\n RouterModule,\n NgbTooltipModule,\n TranslateModule\n ],\n exports: [MenuComponent],\n providers: []\n})\nexport class MenuModule {\n\n}\n","/*\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\nimport {Injector} from '@angular/core';\nimport {NGXLogger} from 'ngx-logger';\nimport {MenuService} from './menu.service';\n\nexport function menuInitializer(\n injector: Injector,\n logger: NGXLogger\n): () => Promise<any> {\n const menuService = injector.get<MenuService>(MenuService);\n return (): Promise<any> => {\n return new Promise((resolve, reject) => {\n try {\n logger.debug('menu initializer before init');\n menuService.init();\n logger.debug('menu initializer after init');\n resolve();\n } catch (error) {\n logger.debug('menu initializer error', error);\n reject(error);\n }\n });\n };\n}\n","/*\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\nimport {Injectable} from '@angular/core';\nimport {HttpClient} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {ValtimoVersion} from '@valtimo/contract';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class VersionService {\n constructor(\n private http: HttpClient\n ) { }\n\n public getVersion(): Observable<ValtimoVersion> {\n // TODO: this hardcoded string should be taken care of with the introduction of a config service\n return this.http.get<ValtimoVersion>(`/api/valtimo/version`);\n }\n}\n","/*\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\nimport { HttpClient } from '@angular/common/http';\nimport { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ContextService } from '@valtimo/context';\nimport { UserIdentity, ValtimoVersion } from '@valtimo/contract';\nimport { UserProviderService } from '@valtimo/security';\nimport { NGXLogger } from 'ngx-logger';\nimport { combineLatest } from 'rxjs';\nimport { VersionService } from '../version/version.service';\n\n@Component({\n selector: 'valtimo-right-sidebar',\n templateUrl: './right-sidebar.component.html',\n styleUrls: ['./right-sidebar.component.css']\n})\nexport class RightSidebarComponent implements OnInit {\n\n public userIdentity: UserIdentity;\n public frequencies: Array<any>;\n public settingsForm: FormGroup;\n public build: ValtimoVersion;\n public userContexts: Array<any>;\n public userContextActive: any;\n\n constructor(\n private userProviderService: UserProviderService,\n private formBuilder: FormBuilder,\n private versionService: VersionService,\n public translate: TranslateService,\n private contextService: ContextService,\n private http: HttpClient,\n private logger: NGXLogger\n ) {\n }\n\n ngOnInit() {\n this.frequencies = [\n 'emailNotificationOnMonday',\n 'emailNotificationOnTuesday',\n 'emailNotificationOnWednesday',\n 'emailNotificationOnThursday',\n 'emailNotificationOnFriday',\n 'emailNotificationOnSaturday',\n 'emailNotificationOnSunday'\n ];\n this.settingsForm = this.formBuilder.group({\n taskNotifications: new FormControl(false),\n emailNotifications: new FormControl(false),\n emailNotificationOnMonday: new FormControl(false),\n emailNotificationOnTuesday: new FormControl(false),\n emailNotificationOnWednesday: new FormControl(false),\n emailNotificationOnThursday: new FormControl(false),\n emailNotificationOnFriday: new FormControl(false),\n emailNotificationOnSaturday: new FormControl(false),\n emailNotificationOnSunday: new FormControl(false)\n });\n this.getUserSettings();\n }\n\n private loadContextSwitch() {\n combineLatest([this.contextService.getUserContexts(), this.contextService.getUserContextActive()])\n .subscribe(([userContexts, userContextActive]) => {\n this.userContextActive = userContextActive;\n this.userContexts = userContexts;\n });\n }\n\n public setUserContext(contextId: number) {\n this.contextService.setUserContext(contextId).subscribe();\n location.href = '/';\n }\n\n public loadUserSettingsTab() {\n this.userProviderService.getEmailNotificationSettings().subscribe(results => {\n if (results !== null) {\n this.settingsForm.controls.taskNotifications.setValue(results.taskNotifications);\n this.settingsForm.controls.emailNotifications.setValue(results.emailNotifications);\n this.settingsForm.controls.emailNotificationOnMonday.setValue(results.emailNotificationOnMonday);\n this.settingsForm.controls.emailNotificationOnTuesday.setValue(results.emailNotificationOnTuesday);\n this.settingsForm.controls.emailNotificationOnWednesday.setValue(results.emailNotificationOnWednesday);\n this.settingsForm.controls.emailNotificationOnThursday.setValue(results.emailNotificationOnThursday);\n this.settingsForm.controls.emailNotificationOnFriday.setValue(results.emailNotificationOnFriday);\n this.settingsForm.controls.emailNotificationOnSaturday.setValue(results.emailNotificationOnSaturday);\n this.settingsForm.controls.emailNotificationOnSunday.setValue(results.emailNotificationOnSunday);\n } else {\n // default is true in the database, even if api returns no content\n this.settingsForm.controls.taskNotifications.setValue(true);\n }\n });\n this.getVersion();\n }\n\n public getUserSettings() {\n this.userProviderService.getUserSubject().subscribe(userIdentity => {\n this.logger.debug('user', userIdentity);\n this.userIdentity = userIdentity;\n this.loadContextSwitch();\n });\n }\n\n public getVersion() {\n this.versionService.getVersion().subscribe((build: ValtimoVersion) => {\n this.build = build;\n });\n }\n\n onSettingsSubmit() {\n if (!this.settingsForm.pristine) {\n this.userProviderService.updateEmailNotificationSettings(this.settingsForm.value).subscribe();\n }\n }\n\n updateUserLanguage(langKey: string) {\n this.translate.use(langKey).subscribe(() => {\n localStorage.setItem('langKey', langKey);\n });\n }\n\n logout() {\n this.userProviderService.logout();\n }\n\n}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {RightSidebarComponent} from './right-sidebar.component';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {RouterModule} from '@angular/router';\nimport {HttpClient} from '@angular/common/http';\nimport {TranslateLoader, TranslateModule} from '@ngx-translate/core';\nimport {HttpLoaderFactory} from '@valtimo/contract';\nimport {NgbTooltipModule} from '@ng-bootstrap/ng-bootstrap';\n\n@NgModule({\n declarations: [RightSidebarComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient]\n }\n }),\n NgbTooltipModule\n ],\n exports: [RightSidebarComponent]\n})\nexport class RightSidebarModule {\n}\n","/*\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\nimport {AfterViewInit, Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild} from '@angular/core';\nimport {TranslateService} from '@ngx-translate/core';\nimport {BehaviorSubject, combineLatest, fromEvent, Subscription} from 'rxjs';\nimport {debounceTime, map, take} from 'rxjs/operators';\n\n@Component({\n selector: 'valtimo-left-sidebar',\n templateUrl: './left-sidebar.component.html',\n styleUrls: ['./left-sidebar.component.css']\n})\nexport class LeftSidebarComponent implements OnInit, AfterViewInit, OnDestroy {\n @ViewChild('toggleButton') toggleButtonRef: ElementRef;\n\n @Input() menuIsOpen: boolean;\n @Output() menuWidthChanged: EventEmitter<number> = new EventEmitter();\n\n readonly menuTooltipText$ = this.translateService.stream('interface.mainMenu');\n readonly toggleMenuText$ = this.translateService.stream('interface.toggleMenu');\n\n readonly mouseIsOnResizeBorder$ = new BehaviorSubject<boolean>(false);\n readonly menuWidth$ = new BehaviorSubject<number>(undefined);\n readonly isResizing$ = new BehaviorSubject<boolean>(false);\n\n private bodyStyle: any;\n\n private xOnClick: number;\n private menuWidthOnClick: number;\n\n private mouseXSubscription: Subscription;\n private mouseUpSubscription: Subscription;\n\n private readonly defaultMenuWidth = 230;\n private readonly maxMenuWidth = 330;\n private readonly minMenuWidth = 120;\n\n private readonly mouseX$ = fromEvent(document.body, 'mousemove').pipe(map((e: MouseEvent) => e.pageX));\n\n constructor(private translateService: TranslateService, private readonly elementRef: ElementRef) {\n this.bodyStyle = elementRef.nativeElement.ownerDocument.body.style;\n }\n\n ngOnInit(): void {\n this.setMenuWidth(this.defaultMenuWidth);\n }\n\n ngAfterViewInit(): void {\n this.mouseXSubscription = combineLatest([this.mouseX$, this.isResizing$])\n .pipe(debounceTime(3))\n .subscribe(([x, isResizing]) => {\n const menuOpen = this.menuIsOpen;\n\n if (isResizing) {\n const offSetWidth = this.xOnClick - x;\n const newMenuWidth = this.menuWidthOnClick - offSetWidth;\n const snapMargin = 35;\n const snapInside = newMenuWidth < this.minMenuWidth - snapMargin;\n const snapOutside = !menuOpen && offSetWidth < -snapMargin;\n\n if (menuOpen && newMenuWidth <= this.maxMenuWidth && newMenuWidth >= this.minMenuWidth) {\n this.setMenuWidth(newMenuWidth);\n } else if (snapInside || snapOutside) {\n this.snapMenu(snapInside ? this.menuWidthOnClick : this.defaultMenuWidth);\n }\n }\n });\n\n this.mouseUpSubscription = fromEvent(document, 'mouseup').subscribe(() => {\n this.stopResizing();\n });\n }\n\n ngOnDestroy(): void {\n this.mouseXSubscription.unsubscribe();\n this.mouseUpSubscription.unsubscribe();\n }\n\n enterBorder(): void {\n this.mouseIsOnResizeBorder$.next(true);\n }\n\n leaveBorder(): void {\n this.mouseIsOnResizeBorder$.next(false);\n }\n\n resizeBorderClick(e: MouseEvent): void {\n this.menuWidth$.pipe(take(1)).subscribe(menuWidth => {\n this.menuWidthOnClick = menuWidth;\n this.xOnClick = e.pageX;\n this.bodyStyle.userSelect = 'none';\n this.bodyStyle.cursor = 'col-resize';\n this.isResizing$.next(true);\n });\n }\n\n private snapMenu(snapTo: number): void {\n this.stopResizing();\n this.setMenuWidth(snapTo);\n setTimeout(() => {\n this.toggleButtonRef.nativeElement.click();\n });\n }\n\n private stopResizing(): void {\n this.bodyStyle.cursor = 'auto';\n this.bodyStyle.userSelect = 'auto';\n this.isResizing$.next(false);\n }\n\n private setMenuWidth(width: number): void {\n this.menuWidth$.next(width);\n this.menuWidthChanged.emit(width);\n }\n}\n","/*\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\nimport {Component, OnDestroy, OnInit} from '@angular/core';\nimport {ActivatedRoute, NavigationEnd, Router} from '@angular/router';\nimport {Title} from '@angular/platform-browser';\nimport {filter} from 'rxjs/operators';\nimport {Subscription} from 'rxjs';\nimport {TranslateService} from '@ngx-translate/core';\nimport {NGXLogger} from 'ngx-logger';\n\n@Component({\n selector: 'valtimo-page-title',\n templateUrl: './page-title.component.html',\n styleUrls: ['./page-title.component.css']\n})\nexport class PageTitleComponent implements OnInit, OnDestroy {\n\n public title: string;\n public appTitle = 'Valtimo';\n private routerSub = Subscription.EMPTY;\n\n constructor(\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private titleService: Title,\n private translateService: TranslateService,\n private logger: NGXLogger\n ) {\n }\n\n private setTitle() {\n this.title = this.activatedRoute.snapshot.firstChild.data.title;\n\n // When loading lazy title is nested\n if (!this.title) {\n this.title = this.activatedRoute.snapshot.firstChild.children[0].data.title;\n }\n if (this.title) {\n this.translateService.stream(this.title).subscribe((title: string) => {\n this.logger.debug('PageTitle: setTitle translated async', title);\n this.titleService.setTitle(this.appTitle + ' - ' + title);\n }\n );\n } else {\n this.logger.debug('PageTitle: setTitle default', this.appTitle);\n this.titleService.setTitle(this.appTitle);\n }\n }\n\n ngOnInit() {\n this.setTitle();\n this.routerSub = this.router.events\n .pipe(filter(event => event instanceof NavigationEnd))\n .subscribe((event) => {\n this.setTitle();\n });\n }\n\n ngOnDestroy() {\n this.routerSub.unsubscribe();\n }\n\n}\n","/*\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\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PageTitleComponent } from '../page-title/page-title.component';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@NgModule({\n declarations: [PageTitleComponent],\n imports: [\n CommonModule,\n TranslateModule\n ],\n exports: [PageTitleComponent]\n})\nexport class PageTitleModule {}\n","/*\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\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LeftSidebarComponent } from './left-sidebar.component';\nimport { PageTitleModule } from '../page-title/page-title.module';\nimport { MenuModule } from '../menu/menu.module';\n\n@NgModule({\n declarations: [LeftSidebarComponent],\n imports: [\n CommonModule,\n MenuModule,\n PageTitleModule\n ],\n exports: [LeftSidebarComponent]\n})\nexport class LeftSidebarModule { }\n","/*\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\nimport { TypeConverter } from './type-converters.model';\n\nexport class StringTypeConverter implements TypeConverter {\n\n getTypeString(): string {\n return 'string';\n }\n\n convert(value: any, definition: any): string {\n return value;\n }\n}\n","/*\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\nimport { TypeConverter } from './type-converters.model';\n\nexport class BooleanTypeConverter implements TypeConverter {\n\n getTypeString(): string {\n return 'boolean';\n }\n\n convert(value: any, definition: any): string {\n if (!definition.enum) {\n return value ? 'Yes' : 'No';\n } else {\n return value ? (definition.enum[0] || 'Yes') : (definition.enum[1] || 'No');\n }\n }\n}\n","/*\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\nimport {TypeConverter} from './type-converters.model';\n\nimport * as momentImported from 'moment';\n\nconst moment = momentImported;\nmoment.locale(localStorage.getItem('langKey'));\n\nexport class DateTypeConverter implements TypeConverter {\n\n getTypeString(): string {\n return 'date';\n }\n\n convert(value: any, definition: any): string {\n if (!value) {\n return '-';\n }\n return moment(value).format('DD-MM-YYYY, hh:mm A');\n }\n}\n","/*\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\nimport { TypeConverter } from './type-converters.model';\n\nexport class EnumTypeConverter implements TypeConverter {\n\n getTypeString(): string {\n return 'enum';\n }\n\n convert(value: any, definition: any): string {\n return definition.enum[value];\n }\n}\n","/*\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\nimport { TypeConverter } from './type-converters.model';\n\nexport class StringReplaceUnderscoreTypeConverter implements TypeConverter {\n\n public regExpStringRemoveUnderscore = /_/g;\n\n getTypeString(): string {\n return 'stringReplaceUnderscore';\n }\n\n convert(value: any, definition: any): string {\n return value.replace(this.regExpStringRemoveUnderscore, ' ');\n }\n}\n","/*\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\nimport {TypeConverter} from './type-converters.model';\n\nexport class RelatedFilesTypeConverter implements TypeConverter {\n getTypeString(): string {\n return 'relatedFiles';\n }\n\n convert(value: any, definition: any): string {\n return value.length || '-';\n }\n}\n","/*\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\nimport {StringTypeConverter} from './stringTypeConverter';\nimport {BooleanTypeConverter} from './booleanTypeConverter';\nimport {DateTypeConverter} from './dateTypeConverter';\nimport {EnumTypeConverter} from './enumTypeConverter';\nimport {StringReplaceUnderscoreTypeConverter} from './stringReplaceUnderscoreTypeConverter';\nimport {RelatedFilesTypeConverter} from './relatedFilesTypeConverter';\n\nconst stringTypeConverter = new StringTypeConverter();\nconst booleanTypeConverter = new BooleanTypeConverter();\nconst dateTypeConverter = new DateTypeConverter();\nconst enumTypeConverter = new EnumTypeConverter();\nconst stringReplaceUnderscoreTypeConverter = new StringReplaceUnderscoreTypeConverter();\nconst relatedFilesTypeConverter = new RelatedFilesTypeConverter();\n\n// TODO: Via injection\nexport const TYPE_CONVERTERS: Array<TypeConverter> = [\n stringTypeConverter,\n booleanTypeConverter,\n dateTypeConverter,\n enumTypeConverter,\n stringReplaceUnderscoreTypeConverter,\n relatedFilesTypeConverter\n];\n\nexport interface TypeConverter {\n getTypeString(): string;\n\n convert(value: any, definition: any): string;\n}\n","/*\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\nimport { Injectable } from '@angular/core';\nimport { StringTypeConverter } from './type-converters/stringTypeConverter';\nimport { TYPE_CONVERTERS, TypeConverter } from './type-converters/type-converters.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ViewContentService {\n\n private converters: { [key: string]: TypeConverter } = {};\n private defaultConverter: TypeConverter;\n\n constructor() {\n this.defaultConverter = new StringTypeConverter();\n\n TYPE_CONVERTERS.forEach(converter => this.addConverter(converter));\n }\n\n public get(value: any, definition: any) {\n if (!definition.viewType) {\n definition.viewType = typeof (value);\n }\n\n if (typeof this.converters[definition.viewType] !== 'undefined') {\n return this.converters[definition.viewType].convert(value, definition);\n } else {\n return this.defaultConverter.convert(value, definition);\n }\n }\n\n public addConverter(converter: TypeConverter) {\n if (typeof this.converters[converter.getTypeString()] !== 'undefined') {\n throw new Error('Converter with name ' + converter.getTypeString() + ' already exists');\n }\n\n this.converters[converter.getTypeString()] = converter;\n }\n}\n","/*\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\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport {SortState, Direction} from '@valtimo/contract';\nimport {NGXLogger} from 'ngx-logger';\nimport {BehaviorSubject, fromEvent} from 'rxjs';\nimport {debounceTime, take} from 'rxjs/operators';\nimport {ViewContentService} from '../view-content/view-content.service';\n\n@Component({\n selector: 'valtimo-list',\n templateUrl: './list.component.html',\n styleUrls: ['./list.component.scss']\n})\nexport class ListComponent implements OnChanges, OnInit, AfterViewInit {\n private static PAGINATION_SIZE = 'PaginationSize';\n\n @Input() items: Array<any>;\n @Input() fields: Array<any>;\n @Input() pagination?: any;\n @Input() viewMode?: boolean;\n @Input() isSearchable?: boolean;\n @Input() header?: boolean;\n @Input() actions: any[] = [];\n @Input() paginationIdentifier?: string;\n @Input() initialSortState: SortState;\n @Output() rowClicked: EventEmitter<any> = new EventEmitter();\n @Output() paginationClicked: EventEmitter<any> = new EventEmitter();\n @Output() paginationSet: EventEmitter<any> = new EventEmitter();\n @Output() search: EventEmitter<any> = new EventEmitter();\n @Output() sortChanged: EventEmitter<SortState> = new EventEmitter();\n\n public headerProvided = false;\n public viewListAs: string;\n public searchModel: string;\n public regExpStringRemoveUnderscore = /_/g;\n @ViewChild('searchBox') searchBox: ElementRef;\n\n readonly sort$ = new BehaviorSubject<SortState>({\n state: {name: '', direction: 'DESC'},\n isSorting: false\n });\n\n constructor(private viewContentService: ViewContentService, private logger: NGXLogger) {\n this.viewListAs = localStorage.getItem('viewListAs') || 'table';\n }\n\n loadPaginationSize() {\n const entries = localStorage.getItem(`${this.paginationIdentifier}${ListComponent.PAGINATION_SIZE}`);\n if (entries !== null) {\n this.pagination.size = +entries;\n this.paginationSet.emit(+entries);\n this.logger.debug('Pagination loaded from local storage for this list. Current: ', entries);\n } else {\n this.logger.debug(\n 'Pagination does NOT exist in local storage for this list. Will use default. Change it to create an entry.'\n );\n }\n this.paginationSet.emit();\n }\n\n setPaginationSize(numberOfEntries: string) {\n localStorage.setItem(`${this.paginationIdentifier}${ListComponent.PAGINATION_SIZE}`, numberOfEntries);\n this.pagination.size = numberOfEntries;\n this.logger.debug('Pagination set in local storage for this list: ', numberOfEntries);\n this.paginationSet.emit(numberOfEntries);\n }\n\n ngOnInit() {\n if (this.pagination) {\n this.loadPaginationSize();\n }\n\n if (this.initialSortState) {\n this.sort$.next(this.initialSortState);\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.items && changes.items.currentValue) {\n this.transformListItemsMatchFields();\n }\n }\n\n ngAfterViewInit() {\n if (this.isSearchable) {\n fromEvent(this.searchBox.nativeElement, 'keyup')\n .pipe(debounceTime(500))\n .subscribe(() => {\n const value = this.searchBox.nativeElement.value;\n if (this.search.observers.length > 0) {\n // custom search callbak is specified, perhaps to query on the server side\n this.search.emit(value);\n } else {\n this.searchModel = value;\n }\n });\n }\n }\n\n public transformListItemsMatchFields() {\n if (this.items && this.fields) {\n this.items.forEach(item => {\n item.listItemFields = this.fields.map(field => ({\n key: field.key,\n label: field.label,\n value: this.resolveObject(field, item)\n }));\n });\n }\n }\n\n public onClickRow(item) {\n this.rowClicked.emit(item);\n }\n\n public resolveObject(definition: any, obj: any) {\n const definitionKey = definition.key;\n const customPropString = '$.';\n const key = definitionKey.includes(customPropString) ? definitionKey.split(customPropString)[1] : definitionKey;\n const resolvedObjValue = key.split('.').reduce(function (prev, curr) {\n return prev ? prev[curr] : null;\n }, obj || self);\n return this.viewContentService.get(resolvedObjValue, definition);\n }\n\n public switchView(type) {\n localStorage.setItem('viewListAs', type);\n this.viewListAs = type;\n }\n\n public getTotalPageCount() {\n return Math.ceil(this.pagination.collectionSize / this.pagination.size);\n }\n\n public onClickPagination(page) {\n this.paginationClicked.emit(page);\n }\n\n public handleFieldClick(key: string, sortable: boolean): void {\n const desc: Direction = 'DESC';\n const asc: Direction = 'ASC';\n\n if (!sortable) {\n return;\n }\n\n this.sort$.pipe(take(1)).subscribe(sort => {\n let newState: SortState;\n\n if (sort.state.name === key) {\n if (!sort.isSorting) {\n newState = {state: {...sort.state, direction: desc}, isSorting: true};\n } else {\n if (sort.state.direction === desc) {\n newState = {...sort, state: {...sort.state, direction: asc}};\n } else {\n newState = {state: {...sort.state, direction: desc}, isSorting: false};\n }\n }\n } else {\n newState = {state: {name: key, direction: desc}, isSorting: true};\n }\n\n this.sort$.next(newState);\n this.sortChanged.emit(newState);\n });\n }\n}\n","/*\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\nimport {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n name: 'listFilter'\n})\nexport class ListFilterPipe implements PipeTransform {\n\n transform(list: any[], filterText: string): any {\n list = list || [];\n if (!filterText) {\n return list;\n }\n return list.filter(item =>\n Object.keys(item).some(\n k =>\n item[k] != null &&\n item[k]\n .toString()\n .toLowerCase()\n .includes(filterText.toLowerCase())));\n }\n\n}\n","/*\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\nimport {Component, Input, OnInit} from '@angular/core';\n\n/**\n * Component used to display a card element\n */\n@Component({\n selector: 'valtimo-card',\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.css']\n})\nexport class CardComponent implements OnInit {\n\n /**\n * The main title used on the card\n */\n @Input() title?: string;\n\n /**\n * The smaller font size sub title used on the card\n */\n @Input() subtitle?: string;\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {CardComponent} from './card.component';\n\n@NgModule({\n declarations: [CardComponent],\n imports: [\n CommonModule\n ],\n exports: [CardComponent]\n})\nexport class CardModule { }\n","/*\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\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {NgbPaginationModule} from '@ng-bootstrap/ng-bootstrap';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CardModule} from '../card/card.module';\nimport {ListComponent} from './list.component';\nimport {ListFilterPipe} from './ListFilterPipe.directive';\n\n@NgModule({\n declarations: [ListComponent, ListFilterPipe],\n imports: [CommonModule, CardModule, NgbPaginationModule, FormsModule, TranslateModule],\n exports: [ListComponent, ListFilterPipe]\n})\nexport class ListModule {}\n","/*\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\nimport { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'valtimo-page-header',\n templateUrl: './page-header.component.html',\n styleUrls: ['./page-header.component.css']\n})\nexport class PageHeaderComponent implements OnInit {\n\n constructor () { }\n\n ngOnInit () { }\n\n}\n","/*\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\nimport {Component, OnDestroy, OnInit} from '@angular/core';\nimport {ActivatedRoute, NavigationEnd, PRIMARY_OUTLET, Router} from '@angular/router';\nimport {filter, map} from 'rxjs/operators';\nimport {Subscription} from 'rxjs';\n\n@Component({\n selector: 'valtimo-breadcrumb-navigation',\n templateUrl: './breadcrumb-navigation.component.html',\n styleUrls: ['./breadcrumb-navigation.component.css']\n})\nexport class BreadcrumbNavigationComponent implements OnInit, OnDestroy {\n\n public breadcrumbs: Array<any> = [];\n public appTitle = 'Valtimo';\n private routerSub = Subscription.EMPTY;\n\n constructor(\n private router: Router,\n private route: ActivatedRoute\n ) {\n }\n\n ngOnInit() {\n this.setBreadcrumbs(this.route);\n this.routerSub = this.router.events\n .pipe(filter(event => event instanceof NavigationEnd))\n .pipe(map(() => this.route))\n .pipe(map((route) => {\n while (route.firstChild) {\n route = route.firstChild;\n }\n return route;\n }))\n .pipe(filter(route => route.outlet === PRIMARY_OUTLET))\n .subscribe(route => {\n this.setBreadcrumbs(route);\n });\n }\n\n private setBreadcrumbs(route: ActivatedRoute) {\n while (route.firstChild) {\n route = route.firstChild;\n }\n if (route.outlet === PRIMARY_OUTLET) {\n const snapshot = route.snapshot;\n const activeRoute = {\n url: snapshot.url.join('/'),\n path: snapshot.routeConfig.path,\n label: snapshot.data['title'],\n params: snapshot.params\n };\n this.generateBreadcrumbs(activeRoute);\n }\n }\n\n private generateBreadcrumbs(activeBreadcrumb: any) {\n this.breadcrumbs = [];\n this.router.config.map(routerConfig => {\n if (activeBreadcrumb.path.indexOf(routerConfig.path + '/') === 0\n && activeBreadcrumb.path !== routerConfig.path\n && routerConfig.path !== ''\n ) {\n const parentRoute = {\n url: routerConfig.path.replace(/:(.+?)\\b/g, (_, p1) => activeBreadcrumb.params[p1]),\n path: routerConfig.path,\n label: routerConfig.data['title'],\n params: activeBreadcrumb.params\n };\n const exist = this.breadcrumbs.findIndex(item => item.url === parentRoute.url);\n if (exist === -1) {\n this.breadcrumbs.push(parentRoute);\n }\n }\n });\n }\n\n ngOnDestroy() {\n this.routerSub.unsubscribe();\n }\n\n}\n","/*\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\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { BreadcrumbNavigationComponent } from '../breadcrumb-navigation/breadcrumb-navigation.component';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@NgModule({\n declarations: [BreadcrumbNavigationComponent],\n imports: [\n CommonModule,\n RouterModule,\n TranslateModule\n ],\n exports: [BreadcrumbNavigationComponent]\n})\nexport class BreadcrumbNavigationModule { }\n","/*\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\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PageHeaderComponent } from './page-header.component';\nimport { PageTitleModule } from '../page-title/page-title.module';\nimport { BreadcrumbNavigationModule } from '../breadcrumb-navigation/breadcrumb-navigation.module';\n\n\n@NgModule({\n declarations: [PageHeaderComponent],\n imports: [\n CommonModule,\n PageTitleModule,\n BreadcrumbNavigationModule\n ],\n exports: [PageHeaderComponent]\n})\nexport class PageHeaderModule { }\n","/*\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\nimport {Component, Input, OnInit} from '@angular/core';\n\n/**\n * Component used to display a widget element\n */\n@Component({\n selector: 'valtimo-widget',\n templateUrl: './widget.component.html',\n styleUrls: ['./widget.component.css']\n})\nexport class WidgetComponent implements OnInit {\n @Input() type?: string;\n @Input() name?: string;\n @Input() icon?: string;\n @Input() contrast?: string;\n @Input() divider?: string;\n @Input() title?: string;\n @Input() subtitle?: string;\n @Input() collapseAble?: string;\n @Input() collapse?: string;\n @Input() additionalClasses?: string;\n\n public cardClassName: string;\n public contrastClass: string;\n public dividerClass: string;\n public isCollapsed: boolean;\n\n ngOnInit(): void {\n this.setCardClassName();\n this.setType();\n this.setAdditionalClasses();\n this.setContrast();\n this.setDivider();\n this.setCollapse();\n }\n\n public toggleContent(): void {\n if (this.collapseAble) {\n this.isCollapsed = !this.isCollapsed;\n }\n }\n\n private setCardClassName(): void {\n this.cardClassName = 'card-full-default';\n }\n\n private setType(): void {\n if (this.type) {\n this.cardClassName = `card-full-${this.type}`;\n }\n }\n\n private setAdditionalClasses(): void {\n if (this.additionalClasses) {\n this.cardClassName = `${this.cardClassName} ${this.additionalClasses}`;\n }\n }\n\n private setContrast(): void {\n if (this.contrast) {\n this.contrastClass = 'card-header-contrast';\n }\n }\n\n private setDivider(): void {\n if (this.divider) {\n this.dividerClass = 'card-header-divider';\n }\n }\n\n private setCollapse(): void {\n this.isCollapsed = !(this.collapseAble && this.collapse === 'hide');\n }\n}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {WidgetComponent} from './widget.component';\n\n@NgModule({\n declarations: [WidgetComponent],\n imports: [\n CommonModule\n ],\n exports: [WidgetComponent]\n})\nexport class WidgetModule { }\n","/*\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\nimport { AfterContentInit, Directive, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '[valtimoFieldAutoFocus]'\n})\nexport class FieldAutoFocusDirective implements AfterContentInit {\n\n constructor(private el: ElementRef) { }\n\n public ngAfterContentInit() {\n setTimeout(() => {\n this.el.nativeElement.focus();\n }, 300);\n }\n\n}\n","/*\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\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FieldAutoFocusDirective } from './field-auto-focus.directive';\n\n@NgModule({\n declarations: [FieldAutoFocusDirective],\n exports: [\n FieldAutoFocusDirective\n ],\n imports: [\n CommonModule\n ]\n})\nexport class FieldAutoFocusModule { }\n","/*\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\nimport {\n AfterContentInit,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n EventEmitter,\n OnInit\n} from '@angular/core';\nimport * as BpmnJS from 'bpmn-js/dist/bpmn-navigated-viewer.production.min.js';\nimport * as heatmap from 'heatmap.js-fixed/build/heatmap.js';\n\n@Component({\n selector: 'valtimo-bpmn-js-diagram',\n templateUrl: './bpmn-js-diagram.component.html',\n styleUrls: ['./bpmn-js-diagram.component.css']\n})\n\nexport class BpmnJsDiagramComponent implements OnInit, AfterContentInit, OnDestroy {\n\n private bpmnJS: BpmnJS;\n private heatMapInstance: any;\n\n @ViewChild('ref', { static: true }) public el: ElementRef;\n @Output() public importDone: EventEmitter<any> = new EventEmitter();\n @Input() public bpmn20Xml: any;\n @Input() public heatmapDuration?: any;\n @Input() public heatmapCount?: any;\n @Input() public historicActivityInstances?: any;\n\n public heatmapMode: boolean;\n public heatPoints = {data: []};\n public min: number;\n public max: number;\n\n constructor() { }\n\n ngOnInit(): void {\n this.bpmnJS = new BpmnJS();\n this.bpmnJS.on('import.done', ({error}) => {\n if (!error) {\n const canvas = this.bpmnJS.get('canvas')\n , eventBus = this.bpmnJS.get('eventBus');\n\n if (this.historicActivityInstances) {\n this.historicActivityInstances.forEach(instance => {\n canvas.addMarker(instance.activityId, instance.endTime ? 'highlight-overlay-past' : 'highlight-overlay-current');\n });\n }\n\n canvas.zoom('fit-viewport', 'auto');\n\n if (this.heatmapDuration || this.heatmapCount) {\n eventBus.on('canvas.init', () => {\n if (this.heatmapMode) {\n this.clearHeatmap();\n }\n this.getHeatmapData();\n });\n eventBus.on('canvas.viewbox.changing', () => {\n if (this.heatmapMode) {\n this.clearHeatmap();\n }\n });\n eventBus.on('canvas.viewbox.changed', () => {\n this.getHeatmapData();\n });\n }\n }\n });\n }\n\n ngAfterContentInit(): void {\n this.bpmnJS.importXML(this.bpmn20Xml);\n this.bpmnJS.attachTo(this.el.nativeElement);\n }\n\n getHeatmapData() {\n let inputData: any\n , valueKey: any;\n\n this.heatPoints = {data: []};\n this.min = 0;\n this.max = 0;\n\n if (this.heatmapDuration) {\n inputData = this.heatmapDuration;\n valueKey = 'averageDurationInMilliseconds';\n } else if (this.heatmapCount) {\n inputData = this.heatmapCount;\n valueKey = 'totalCount';\n }\n\n if (inputData) {\n Object.keys(inputData).forEach(key => {\n const diagramContainer = this.el.nativeElement.querySelector('svg')\n .getBoundingClientRect(),\n diagramElm = this.el.nativeElement.querySelector(`g[data-element-id=${key}]`)\n .getBoundingClientRect();\n this.setMax(key);\n this.heatPoints.data.push({\n x: Math.round(diagramElm.x - diagramContainer.x + diagramElm.width / 2),\n y: Math.round(diagramElm.y - diagramContainer.y + diagramElm.height / 2),\n value: inputData[key][valueKey],\n radius: diagramElm.width / 2\n });\n if (inputData[key].count > 0) {\n this.addCounterActiveOverlays(key, inputData);\n }\n });\n\n if (this.heatmapMode) {\n this.showHeatmap();\n }\n }\n }\n\n setMax(key: any) {\n if (this.heatmapDuration) {\n this.max = Math.max(this.heatmapDuration[key].averageDurationInMilliseconds, this.max);\n } else if (this.heatmapCount) {\n this.max = Math.max(this.heatmapCount[key].totalCount + this.heatmapCount[key].count, this.max);\n }\n }\n\n addCounterActiveOverlays(key: any, inputData: any) {\n const overlays = this.bpmnJS.get('overlays');\n overlays.add(key, {\n position: {\n bottom: -10,\n left: 0\n },\n show: {\n minZoom: 0,\n maxZoom: 5.0\n },\n html: `<span class=\"badge badge-pill badge-primary\">${inputData[key].count}</span>`\n });\n }\n\n showHeatmap() {\n this.heatMapInstance = heatmap.create({\n radius: 54,\n blur: .70,\n maxOpacity: .4,\n minOpacity: 0,\n container: this.el.nativeElement\n });\n this.heatMapInstance.setData({\n min: this.min,\n max: this.max,\n data: this.heatPoints.data\n });\n }\n\n clearHeatmap() {\n this.heatMapInstance.setData({data: []});\n }\n\n toggleHeatmap() {\n this.heatmapMode = !this.heatmapMode;\n if (this.heatmapMode) {\n this.showHeatmap();\n } else {\n this.clearHeatmap();\n }\n }\n\n ngOnDestroy(): void {\n this.bpmnJS.destroy();\n }\n\n}\n","/*\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\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BpmnJsDiagramComponent } from './bpmn-js-diagram.component';\n\n@NgModule({\n declarations: [BpmnJsDiagramComponent],\n imports: [\n CommonModule\n ],\n exports: [BpmnJsDiagramComponent]\n})\n\nexport class BpmnJsDiagramModule { }\n","/*\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\nimport {Component, Input} from '@angular/core';\nimport {TimelineItem} from '@valtimo/contract';\n\n@Component({\n selector: 'valtimo-timeline',\n templateUrl: './timeline.component.html',\n styleUrls: ['./timeline.component.css']\n})\nexport class TimelineComponent {\n\n @Input() items: Array<TimelineItem>;\n\n}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TimelineComponent} from './timeline.component';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@NgModule({\n declarations: [TimelineComponent],\n imports: [\n CommonModule,\n TranslateModule,\n ],\n exports: [TimelineComponent]\n})\nexport class TimelineModule {\n}\n","/*\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\nimport { NgModule } from '@angular/core';\n\n@NgModule()\nexport class ComponentsModule {}\n","/*\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\nimport {Component, OnDestroy, OnInit} from '@angular/core';\n\ndeclare var $;\n\n@Component({\n selector: 'valtimo-filter-sidebar',\n templateUrl: './filter-sidebar.component.html',\n styleUrls: ['./filter-sidebar.component.css']\n})\nexport class FilterSidebarComponent implements OnInit, OnDestroy {\n\n public filterSidebar: string;\n\n constructor() {\n this.filterSidebar = localStorage.getItem('filterSidebar') || 'show';\n }\n\n ngOnInit() {\n if (this.filterSidebar === 'show') {\n localStorage.setItem('filterSidebar', 'show');\n $('.be-content').addClass('be-aside');\n }\n $('[data-toggle=\"tooltip\"]').tooltip();\n }\n\n ngOnDestroy() {\n $('.be-content').removeClass('be-aside');\n }\n\n toggleFilterSidebar() {\n const beContent = $('.be-content');\n beContent.toggleClass('be-aside');\n this.filterSidebar = beContent.hasClass('be-aside') ? 'show' : 'hide';\n localStorage.setItem('filterSidebar', this.filterSidebar);\n }\n\n}\n","/*\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\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FilterSidebarComponent } from './filter-sidebar.component';\n\n@NgModule({\n declarations: [FilterSidebarComponent],\n imports: [\n CommonModule\n ],\n exports: [FilterSidebarComponent]\n})\nexport class FilterSidebarModule { }\n","/*\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\nimport {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\nimport {S3Service} from '@valtimo/resource';\nimport {S3Resource} from '@valtimo/contract';\n\n@Component({\n selector: 'valtimo-uploader',\n templateUrl: './uploader.component.html',\n styleUrls: ['./uploader.component.css']\n})\nexport class UploaderComponent implements OnInit {\n\n public resources: any = [];\n @Output() resourcesChanged: EventEmitter<any> = new EventEmitter();\n @Output() resourceRegistered: EventEmitter<S3Resource> = new EventEmitter();\n @Input() showFileList = true;\n\n constructor(\n private s3Service: S3Service\n ) {\n }\n\n ngOnInit() {\n }\n\n onFileFieldChange(files) {\n for (const file of files) {\n this.uploadFile(file);\n }\n }\n\n uploadFile(file: File) {\n this.s3Service.getPreSignedUrl(file.name).subscribe(value => {\n const preSignedUrl: URL = new URL(value);\n this.s3Service.upload(preSignedUrl, file).subscribe(result => {\n const s3ResourceDTO = new S3Resource(file, preSignedUrl);\n this.s3Service.registerResource(s3ResourceDTO).subscribe(resource => {\n this.resources.push(resource);\n this.resourceRegistered.emit(resource);\n this.resourcesChanged.emit(this.resources);\n });\n });\n });\n }\n\n deleteResource(resource) {\n this.s3Service.delete(resource.id).subscribe(result => {\n const index = this.resources.findIndex(res => res.id === resource.id);\n this.resources.splice(index, 1);\n this.resourcesChanged.emit(this.resources);\n });\n }\n\n}\n","/*\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\nimport {Directive, EventEmitter, HostListener, Output} from '@angular/core';\n\n@Directive({\n selector: '[valtimoUploaderDragDrop]'\n})\nexport class UploaderDragDropDirective {\n @Output() fileDropped = new EventEmitter<any>();\n\n @HostListener('dragover', ['$event']) onDragOver(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n }\n\n @HostListener('dragleave', ['$event'])\n public onDragLeave(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n }\n\n @HostListener('drop', ['$event'])\n public ondrop(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n const files = evt.dataTransfer.files;\n if (files.length > 0) {\n this.fileDropped.emit(files);\n }\n }\n\n}\n","/*\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\nimport {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n name: 'filesize'\n})\nexport class FileSizePipe implements PipeTransform {\n\n private units = [\n 'bytes',\n 'KB',\n 'MB',\n 'GB',\n 'TB',\n 'PB'\n ];\n\n transform(bytes: number = 0, precision: number = 2 ): string {\n if (isNaN(parseFloat(String(bytes))) || !isFinite(bytes)) {\n return '?';\n }\n\n let unit = 0;\n\n while (bytes >= 1024) {\n bytes /= 1024;\n unit++;\n }\n\n return bytes.toFixed(+precision) + ' ' + this.units[unit];\n }\n}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FileSizePipe} from './file-size.pipe';\n\n@NgModule({\n declarations: [FileSizePipe],\n imports: [\n CommonModule\n ],\n exports: [FileSizePipe]\n})\nexport class FileSizeModule { }\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {UploaderComponent} from './uploader.component';\nimport {UploaderDragDropDirective} from './uploader-drag-drop.directive';\nimport {FileSizeModule} from '../file-size/file-size.module';\n\n@NgModule({\n declarations: [UploaderComponent, UploaderDragDropDirective],\n imports: [\n CommonModule,\n FileSizeModule\n ],\n exports: [UploaderComponent, UploaderDragDropDirective]\n})\nexport class UploaderModule {\n}\n","/*\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\nimport {EventEmitter, Injectable} from '@angular/core';\nimport {NavigationStart, Router} from '@angular/router';\nimport {Observable, Subject} from 'rxjs';\nimport {Alert, AlertType} from '@valtimo/contract';\n\n@Injectable({providedIn: 'root'})\nexport class AlertService {\n public confirmed: EventEmitter<any> = new EventEmitter();\n private subject = new Subject<Alert>();\n\n constructor(private router: Router) {\n // clear alert messages on route change unless 'keepAfterRouteChange' flag is true\n this.router.events.subscribe(event => {\n if (event instanceof NavigationStart) {\n // clear alert messages\n this.clear();\n }\n });\n }\n\n // enable subscribing to alerts observable\n onAlert(): Observable<Alert> {\n return this.subject.asObservable();\n }\n\n // convenience methods\n success(message: string, confirmations?: any, iconClass?: string) {\n this.alert(new Alert({message, type: AlertType.Success, confirmations, iconClass}));\n }\n\n error(message: string, confirmations?: any, iconClass?: string) {\n this.alert(new Alert({message, type: AlertType.Error, confirmations, iconClass}));\n }\n\n info(message: string, confirmations?: any, iconClass?: string) {\n this.alert(new Alert({message, type: AlertType.Info, confirmations, iconClass}));\n }\n\n warning(message: string, confirmations?: any, iconClass?: string) {\n this.alert(new Alert({message, type: AlertType.Warning, confirmations, iconClass}));\n }\n\n notification(message: string, confirmations?: any, iconClass?: string) {\n this.alert(new Alert({message, type: AlertType.Notification, confirmations, iconClass}));\n }\n\n modalNotification(message: string, confirmations?: any, iconClass?: string) {\n this.alert(new Alert({message, type: AlertType.ModalNotification, confirmations, iconClass}));\n }\n\n // main alert method\n alert(alert: Alert) {\n this.subject.next(alert);\n }\n\n // clear alerts\n clear() {\n this.subject.next(new Alert({}));\n }\n\n // emit confirm\n emitAlertConfirmEvent(alert: Alert) {\n this.confirmed.emit(alert);\n }\n\n getAlertConfirmChangeEmitter() {\n return this.confirmed;\n }\n}\n","/*\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\nimport {AfterContentInit, Component, OnDestroy, OnInit} from '@angular/core';\nimport {Subscription} from 'rxjs';\nimport {Alert, AlertType} from '@valtimo/contract';\nimport {AlertService} from './alert.service';\n\ndeclare var $;\n\n@Component({\n selector: 'valtimo-alert',\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.css']\n})\nexport class AlertComponent implements OnInit, AfterContentInit, OnDestroy {\n alerts: Alert[] = [];\n subscription: Subscription;\n autoCloseInMS: number;\n\n constructor(\n private alertService: AlertService\n ) {\n this.autoCloseInMS = 5000;\n }\n\n ngOnInit() {\n }\n\n ngAfterContentInit() {\n this.subscription = this.alertService.onAlert()\n .subscribe(alert => {\n\n if (!alert.message) {\n // clear alerts when an empty alert is received\n this.alerts = [];\n return;\n }\n\n // set empty array when an empty alert confirmations is received\n if (!alert.confirmations) {\n alert.confirmations = [];\n }\n\n // add alert to array if not exist\n const alertExist = this.alerts.filter(x => x.message === alert.message);\n if (alertExist.length === 0) {\n this.alerts.push(alert);\n }\n\n if (this.inModal(alert)) {\n setTimeout(() => {\n this.openModal();\n }, 300);\n }\n\n // auto close except alert confirmations not empty\n if (this.autoCloseInMS > 0 && alert.confirmations.length === 0) {\n setTimeout(() => {\n this.removeAlert(alert);\n }, this.autoCloseInMS);\n }\n });\n }\n\n closeModal() {\n $('#modalNotification').modal('hide');\n }\n\n openModal() {\n $('#modalNotification').modal('show');\n }\n\n alertConfirm(alert: Alert, confirm: any) {\n alert.confirm = confirm;\n this.alertService.emitAlertConfirmEvent(alert);\n this.removeAlert(alert);\n }\n\n ngOnDestroy() {\n // unsubscribe to avoid memory leaks\n this.subscription.unsubscribe();\n }\n\n removeAlert(alert: Alert) {\n if (this.inModal(alert)) {\n this.closeModal();\n }\n // remove specified alert from array\n this.alerts = this.alerts.filter(x => x.message !== alert.message);\n }\n\n inModal(alert: Alert) {\n if (!alert) {\n return;\n }\n\n // return true based on AlertType.ModalNotification\n switch (alert.type) {\n case AlertType.ModalNotification:\n return true;\n default:\n return false;\n }\n }\n\n cssClass(alert: Alert) {\n if (!alert) {\n return;\n }\n\n // return css class based on alert type\n switch (alert.type) {\n case AlertType.Success:\n return 'alert alert-success';\n case AlertType.Error:\n return 'alert alert-danger';\n case AlertType.Info:\n return 'alert alert-info';\n case AlertType.Warning:\n return 'alert alert-warning';\n case AlertType.Notification:\n return 'alert alert-light';\n case AlertType.ModalNotification:\n return 'alert alert-light';\n }\n }\n\n cssIconClass(alert: Alert) {\n if (!alert) {\n return;\n }\n\n // return css class based on alert type\n switch (alert.type) {\n case AlertType.Success:\n return 'mdi mdi-check';\n case AlertType.Error:\n return 'mdi mdi-close-circle-o';\n case AlertType.Info:\n return 'mdi mdi-info-outline';\n case AlertType.Warning:\n return 'mdi mdi-alert-triangle';\n case AlertType.Notification:\n return 'mdi mdi-notifications';\n case AlertType.ModalNotification:\n return 'mdi mdi-notifications';\n }\n }\n\n}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {AlertComponent} from './alert.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [AlertComponent],\n exports: [AlertComponent]\n})\nexport class AlertModule {\n}\n","/*\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\nimport { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'valtimo-data-list',\n templateUrl: './data-list.component.html',\n styleUrls: ['./data-list.component.css']\n})\nexport class DataListComponent implements OnInit {\n\n @Input() collection?: Array<any>;\n @Input() object?: any;\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","/*\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\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DataListComponent } from './data-list.component';\n\n@NgModule({\n declarations: [DataListComponent],\n imports: [\n CommonModule\n ],\n exports: [DataListComponent]\n})\nexport class DataListModule { }\n","import {Injectable} from '@angular/core';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {FormioComponent} from 'angular-formio';\n\n@Injectable()\nexport class FormIoStateService {\n\n private _documentDefinitionName$ = new BehaviorSubject<string>(undefined);\n\n private _currentForm$ = new BehaviorSubject<FormioComponent>(undefined);\n\n public get documentDefinitionName$(): Observable<string> {\n return this._documentDefinitionName$.asObservable();\n }\n\n public setDocumentDefinitionName(documentDefinitionName: string) {\n this._documentDefinitionName$.next(documentDefinitionName);\n }\n\n public get currentForm$(): Observable<FormioComponent> {\n return this._currentForm$.asObservable();\n }\n\n public set currentForm(form: FormioComponent) {\n this._currentForm$.next(form);\n }\n}\n","/*\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\nimport {Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges} from '@angular/core';\nimport {FormioSubmission, ValtimoFormioOptions} from '@valtimo/contract';\nimport {UserProviderService} from '@valtimo/security';\nimport {Formio, FormioComponent as FormIoSourceComponent, FormioForm} from 'angular-formio';\nimport {FormioRefreshValue} from 'angular-formio/formio.common';\nimport jwt_decode from 'jwt-decode';\nimport {NGXLogger} from 'ngx-logger';\nimport {from, Subject, Subscription, timer} from 'rxjs';\nimport {switchMap, take} from 'rxjs/operators';\nimport {FormIoStateService} from './services/form-io-state.service';\nimport {ActivatedRoute} from '@angular/router';\n\n@Component({\n selector: 'valtimo-form-io',\n templateUrl: './form-io.component.html',\n styleUrls: ['./form-io.component.css']\n})\nexport class FormioComponent implements OnInit, OnChanges, OnDestroy {\n @Input() form: any;\n @Input() options: ValtimoFormioOptions;\n @Input() submission?: object | {} = {};\n @Input() formRefresh$!: Subject<FormioRefreshValue>;\n @Output() submit: EventEmitter<any> = new EventEmitter();\n @Output() change: EventEmitter<any> = new EventEmitter();\n refreshForm: EventEmitter<FormioRefreshValue> = new EventEmitter();\n formDefinition: FormioForm;\n language: string;\n public errors: string[] = [];\n\n private tokenRefreshTimerSubscription: Subscription;\n private formRefreshSubscription: Subscription;\n\n constructor(\n private userProviderService: UserProviderService,\n private logger: NGXLogger,\n private readonly stateService: FormIoStateService,\n private readonly route: ActivatedRoute\n ) {\n }\n\n ngOnInit() {\n const documentDefinitionName = this.route.snapshot.paramMap.get('documentDefinitionName');\n const formDefinition = this.form;\n\n this.loadUserLanguageSetting();\n this.formDefinition = formDefinition;\n this.errors = [];\n\n if (this.formHasLegacyUpload(formDefinition)) {\n this.setInitialToken();\n }\n\n if (documentDefinitionName) {\n this.stateService.setDocumentDefinitionName(documentDefinitionName);\n }\n\n this.subscribeFormRefresh();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const currentForm = changes.form.currentValue;\n this.formDefinition = currentForm;\n this.loadUserLanguageSetting();\n this.reloadForm();\n\n if (this.formHasLegacyUpload(currentForm)) {\n this.setInitialToken();\n }\n\n if (changes.formDefinitionRefresh$) {\n this.unsubscribeFormRefresh();\n this.subscribeFormRefresh();\n }\n }\n\n ngOnDestroy(): void {\n this.unsubscribeFormRefresh();\n\n if (this.tokenRefreshTimerSubscription) {\n this.tokenRefreshTimerSubscription.unsubscribe();\n }\n }\n\n loadUserLanguageSetting(): void {\n this.language = localStorage.getItem('langKey') || '';\n }\n\n reloadForm() {\n this.refreshForm.emit({\n form: this.formDefinition\n });\n }\n\n showErrors(errors: string[]) {\n this.errors = errors;\n }\n\n onSubmit(submission: FormioSubmission) {\n this.errors = [];\n this.submit.emit(submission);\n }\n\n formReady(form: FormIoSourceComponent): void {\n this.reloadForm();\n this.stateService.currentForm = form;\n }\n\n onChange(object: any): void {\n this.change.emit(object);\n }\n\n private formHasLegacyUpload(formDefinition: any): boolean {\n const stringifiedFormDefinition = JSON.stringify(formDefinition);\n const legacyUploadString = '\"type\":\"file\"';\n\n return stringifiedFormDefinition.includes(legacyUploadString);\n }\n\n private setInitialToken(): void {\n this.userProviderService.getToken().then((token: string) => {\n this.setToken(token);\n });\n }\n\n private setToken(token: string): void {\n Formio.setToken(token);\n this.setTimerForTokenRefresh(token);\n\n this.logger.debug('New token set for form.io.');\n }\n\n private setTimerForTokenRefresh(token: string): void {\n const tokenExp = (jwt_decode(token) as any).exp * 1000;\n const expiryTime = tokenExp - Date.now() - 1000;\n this.tokenRefreshTimerSubscription = timer(expiryTime).subscribe(() => {\n this.refreshToken();\n });\n\n this.logger.debug(`Timer for form.io token refresh set for: ${expiryTime}ms.`);\n }\n\n private refreshToken(): void {\n from(this.userProviderService.updateToken(-1))\n .pipe(\n switchMap(() => this.userProviderService.getToken()),\n take(1)\n )\n .subscribe(token => {\n this.setToken(token);\n });\n }\n\n private subscribeFormRefresh(): void {\n if (this.formRefresh$) {\n this.formRefreshSubscription = this.formRefresh$.subscribe((refreshValue) => {\n if (refreshValue) {\n this.refreshForm.emit(refreshValue);\n }\n });\n }\n }\n\n private unsubscribeFormRefresh(): void {\n if (this.formRefreshSubscription) {\n this.formRefreshSubscription.unsubscribe();\n }\n }\n}\n","/*\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\nimport {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\n\n@Component({\n selector: 'valtimo-form-io-builder',\n templateUrl: './form-io-builder.component.html',\n styleUrls: ['./form-io-builder.component.css']\n})\nexport class FormioBuilderComponent implements OnInit {\n\n @Input() form: any;\n @Output() change: EventEmitter<any> = new EventEmitter();\n\n constructor() {\n }\n\n ngOnInit() {\n }\n\n onChange(event) {\n this.change.emit(event);\n }\n\n}\n","/*\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\nexport const AppConfig = {\n appUrl: 'http://localhost:4200',\n apiUrl: 'http://localhost:4200',\n icons: 'fontawesome',\n formOnly: false\n};\n","import {Injectable} from '@angular/core';\nimport {FormIoStateService} from './form-io-state.service';\nimport {take} from 'rxjs/operators';\n\n@Injectable()\nexport class FormIoDomService {\n\n constructor(\n private readonly stateService: FormIoStateService\n ) {\n }\n\n toggleSubmitButton(disabled: boolean): void {\n this.stateService.currentForm$.pipe(take(1)).subscribe((form) => {\n const button = (form.formioElement.nativeElement\n .getElementsByClassName('formio-component-submit')[0]\n .getElementsByClassName('btn-primary')[0] as HTMLInputElement);\n\n button.disabled = disabled;\n });\n }\n}\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {FormioCustomComponent} from 'angular-formio';\nimport {BehaviorSubject} from 'rxjs';\nimport {ResourceDto, ResourceFile} from '@valtimo/contract';\nimport {FormIoStateService} from '../services/form-io-state.service';\nimport {take} from 'rxjs/operators';\nimport {FormIoDomService} from '../services/form-io-dom.service';\nimport {DownloadService, UploadProviderService} from '@valtimo/resource';\n\n@Component({\n selector: 'valtimo-formio-uploader',\n templateUrl: './form-io-uploader.component.html',\n styleUrls: ['./form-io-uploader.component.scss']\n})\nexport class FormIoUploaderComponent implements FormioCustomComponent<Array<ResourceFile>> {\n @Input() disabled: boolean;\n @Input() title: string;\n @Input() hideTitle: boolean;\n @Input() subtitle: string;\n @Input() maxFileSize: number;\n @Input() hideMaxFileSize: boolean;\n @Input() camera: boolean;\n @Output() valueChange = new EventEmitter<Array<ResourceFile>>();\n\n readonly uploading$ = new BehaviorSubject<boolean>(false);\n\n constructor(\n private readonly uploadProviderService: UploadProviderService,\n private readonly stateService: FormIoStateService,\n private readonly domService: FormIoDomService,\n private readonly downloadService: DownloadService,\n ) {\n }\n\n _value: Array<ResourceFile> = [];\n\n public get value(): Array<ResourceFile> {\n return this._value;\n }\n\n @Input()\n public set value(value: Array<ResourceFile>) {\n if (Array.isArray(value)) {\n this._value = value;\n }\n }\n\n downloadFile(resourceFile: ResourceFile) {\n this.uploadProviderService.getResource(resourceFile.data.resourceId).subscribe((resource: ResourceDto) => {\n this.downloadService.downloadFile(resource.url, resource.resource.name);\n });\n }\n\n fileSelected(file: File) {\n this.domService.toggleSubmitButton(true);\n this.uploading$.next(true);\n this.stateService.documentDefinitionName$.pipe(take(1)).subscribe((name) => {\n this.uploadProviderService.uploadFile(file, name).subscribe((result) => {\n this.domService.toggleSubmitButton(false);\n this.uploading$.next(false);\n this._value.push(result);\n this.valueChange.emit(this._value);\n });\n });\n }\n\n deleteFile(resourceId: string): void {\n this.domService.toggleSubmitButton(true);\n this._value = this._value.filter((file: ResourceFile) => file?.data ? file?.data?.resourceId !== resourceId : true);\n this.valueChange.emit(this._value);\n }\n}\n","/*\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\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild\n} from '@angular/core';\nimport {TranslateService} from '@ngx-translate/core';\nimport * as Dropzone from 'dropzone';\nimport {BehaviorSubject, combineLatest, Observable, Subject, Subscription} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\n@Component({\n selector: 'valtimo-dropzone',\n templateUrl: './dropzone.component.html',\n styleUrls: ['./dropzone.component.scss']\n})\nexport class DropzoneComponent implements OnInit, AfterViewInit, OnDestroy {\n @ViewChild('dropzone') dropzoneRef: ElementRef<any>;\n\n @Input() title: string;\n @Input() hideTitle: boolean;\n @Input() subtitle: string;\n @Input() externalError$: BehaviorSubject<string> = new BehaviorSubject<string>('');\n @Input() maxFileSize = 5;\n @Input() showMaxFileSize = true;\n @Input() acceptedFiles = '.json';\n @Input() clear$: Subject<any> = new Subject();\n @Input() disabled: boolean;\n @Input() hideFilePreview: boolean;\n @Input() uploading: boolean;\n @Input() camera = false;\n\n @Output() fileSelected: EventEmitter<File> = new EventEmitter();\n\n private clearSubscription: Subscription;\n\n private dropzone: Dropzone;\n\n readonly file$ = new BehaviorSubject<File>(undefined);\n\n readonly showingCamera$ = new BehaviorSubject<boolean>(false);\n\n private readonly error$ = new BehaviorSubject<string>('');\n\n private readonly errorMessagesStrings: {[key: string]: string} = {\n tooBig: 'too big',\n wrongType: 'this type'\n };\n\n readonly errorMessage$: Observable<string> = combineLatest([\n this.error$,\n this.translateService.stream('dropzone.error.generic'),\n this.translateService.stream('dropzone.error.tooBig'),\n this.translateService.stream('dropzone.error.wrongType')\n ]).pipe(\n map(([dropzoneError, generic, tooBig, wrongType]) => {\n const strings = this.errorMessagesStrings;\n\n if (dropzoneError) {\n if (dropzoneError.includes(strings.tooBig)) {\n return tooBig;\n } else if (dropzoneError.includes(strings.wrongType)) {\n return wrongType;\n } else {\n return generic;\n }\n } else {\n return '';\n }\n })\n );\n\n constructor(private readonly translateService: TranslateService) {}\n\n ngOnInit(): void {\n this.clearSubscription = this.clear$.subscribe(() => {\n this.clearFile();\n this.clearError();\n });\n }\n\n ngAfterViewInit() {\n this.initDropzone();\n }\n\n ngOnDestroy(): void {\n this.clearSubscription.unsubscribe();\n }\n\n\n showCamera(): void {\n this.showingCamera$.next(true);\n }\n\n webcamImageSaved(image: File): void {\n if (image) {\n this.setFile(image);\n }\n\n this.showingCamera$.next(false);\n }\n\n private initDropzone(): void {\n this.dropzone = new Dropzone(this.dropzoneRef.nativeElement, {\n url: '/',\n maxFilesize: this.maxFileSize,\n clickable: this.dropzoneRef.nativeElement,\n autoProcessQueue: false,\n createImageThumbnails: false,\n acceptedFiles: this.acceptedFiles,\n previewTemplate: `<p style='display:none'></p>`,\n accept: file => {\n this.dropzone.removeAllFiles();\n this.setFile(file);\n }\n });\n\n this.setDropzoneEvents();\n }\n\n private setDropzoneEvents(): void {\n this.dropzone.on('error', (file, message) => {\n this.clearFile();\n this.error$.next(message.toString());\n this.fileSelected.emit();\n });\n }\n\n private clearFile(): void {\n this.file$.next(undefined);\n }\n\n private clearError(): void {\n this.error$.next('');\n }\n\n private setFile(file: File): void {\n this.file$.next(file);\n this.clearError();\n this.fileSelected.emit(file);\n }\n}\n","/*\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\nimport {Component} from '@angular/core';\n\n@Component({\n selector: 'valtimo-progress-bar',\n templateUrl: './progress-bar.component.html',\n styleUrls: ['./progress-bar.component.scss']\n})\nexport class ProgressBarComponent {\n}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ProgressBarComponent} from './progress-bar.component';\n\n@NgModule({\n declarations: [ProgressBarComponent],\n imports: [\n CommonModule,\n ],\n exports: [ProgressBarComponent]\n})\nexport class ProgressBarModule { }\n","/*\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\nimport {AfterViewInit, Component, EventEmitter, Output} from '@angular/core';\nimport {BehaviorSubject} from 'rxjs';\nimport {take} from 'rxjs/operators';\n\n@Component({\n selector: 'valtimo-webcam',\n templateUrl: './webcam.component.html',\n styleUrls: ['./webcam.component.scss']\n})\nexport class WebcamComponent implements AfterViewInit {\n\n @Output() imageSaved = new EventEmitter<File>();\n\n readonly showing$ = new BehaviorSubject<boolean>(false);\n\n readonly stream$ = new BehaviorSubject<MediaStream>(undefined);\n\n readonly picture$ = new BehaviorSubject<{ file: File; uri: string }>(undefined);\n\n ngAfterViewInit(): void {\n const video = this.getVideoElement();\n\n setTimeout(() => {\n this.toggleFade();\n });\n\n if (navigator.mediaDevices.getUserMedia) {\n navigator.mediaDevices.getUserMedia({video: true})\n .then((stream) => {\n video.srcObject = stream;\n this.stream$.next(stream);\n });\n }\n }\n\n captureImage(): boolean {\n const video = this.getVideoElement();\n const canvas: HTMLCanvasElement = document.querySelector('#canvas');\n\n canvas.width = 640;\n canvas.height = 480;\n\n const ctx = canvas.getContext('2d');\n\n ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n\n const dataURI = canvas.toDataURL('image/jpeg');\n\n this.picture$.next({file: this.dataURItoFile(dataURI), uri: dataURI});\n\n return false;\n }\n\n clearImage(): boolean {\n this.picture$.next(undefined);\n\n return false;\n }\n\n close(emitImage: boolean = true): boolean {\n if (!emitImage) {\n this.clearImage();\n }\n\n\n this.toggleFade();\n this.emitOnTimeOut();\n\n return false;\n }\n\n private stopStream(): void {\n this.stream$.pipe(take(1)).subscribe((mediaStream) => {\n if (mediaStream) {\n mediaStream.getTracks().forEach((stream) => stream.stop());\n }\n });\n }\n\n private getVideoElement(): HTMLVideoElement {\n return document.querySelector('#videoElement');\n }\n\n private emitOnTimeOut(): void {\n setTimeout(() => {\n this.stopStream();\n this.imageSaved.emit(this.picture$.getValue()?.file);\n }, 250);\n }\n\n private toggleFade(): void {\n this.showing$.next(!this.showing$.getValue());\n }\n\n private dataURItoFile(dataURI): File {\n const binary = atob(dataURI.split(',')[1]);\n const array = [];\n\n for (let i = 0; i < binary.length; i++) {\n array.push(binary.charCodeAt(i));\n }\n\n const blob = new Blob([new Uint8Array(array)], {type: 'image/jpeg'});\n\n const imgFileName = `IMG_${new Date().toISOString().replace(/[-:.]/g, '')}.jpg`;\n\n return new File([blob], imgFileName);\n }\n}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {WebcamComponent} from './webcam.component';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@NgModule({\n declarations: [WebcamComponent],\n imports: [\n CommonModule,\n TranslateModule\n ],\n exports: [WebcamComponent]\n})\nexport class WebcamModule {\n}\n","/*\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\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {DropzoneComponent} from './dropzone.component';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {FileSizeModule} from '../file-size/file-size.module';\nimport {ProgressBarModule} from '../progress-bar/progress-bar.module';\nimport {WebcamModule} from '../webcam/webcam.module';\n\n@NgModule({\n declarations: [DropzoneComponent],\n imports: [CommonModule, TranslateModule, FileSizeModule, ProgressBarModule, WebcamModule],\n exports: [DropzoneComponent]\n})\nexport class DropzoneModule {\n}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormioComponent} from './form-io.component';\nimport {FormioBuilderComponent} from './form-io-builder.component';\nimport {FormioAppConfig, FormioModule} from 'angular-formio';\nimport {AppConfig} from './formio-config';\nimport {FormIoUploaderComponent} from './form-io-uploader/form-io-uploader.component';\nimport {FormIoStateService} from './services/form-io-state.service';\nimport {DropzoneModule} from '../dropzone/dropzone.module';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {DocumentModule} from '@valtimo/document';\nimport {FormIoDomService} from './services/form-io-dom.service';\nimport {FileSizeModule} from '../file-size/file-size.module';\nimport {ResourceModule} from '@valtimo/resource';\nimport {RouterModule} from '@angular/router';\n\n@NgModule({\n imports: [\n CommonModule,\n FormioModule,\n DropzoneModule,\n TranslateModule,\n DocumentModule,\n FileSizeModule,\n ResourceModule,\n RouterModule\n ],\n declarations: [FormioComponent, FormioBuilderComponent, FormIoUploaderComponent],\n exports: [FormioComponent, FormioBuilderComponent, FormIoUploaderComponent],\n providers: [\n FormIoStateService,\n FormIoDomService,\n {provide: FormioAppConfig, useValue: AppConfig}\n ],\n})\n\nexport class FormIoModule {\n}\n","/*\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\nimport { AfterViewInit, Component, Input, TemplateRef } from '@angular/core';\n\ndeclare var $;\n\n@Component({\n selector: 'valtimo-modal',\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.scss']\n})\nexport class ModalComponent implements AfterViewInit {\n @Input() elementId: string;\n @Input() title = '';\n @Input() subtitle = '';\n @Input() templateBelowSubtitle: TemplateRef<any>;\n @Input() showFooter = false;\n\n constructor() {}\n\n ngAfterViewInit() {\n $(`#${this.elementId}`).modal({ show: false });\n }\n\n show() {\n $(`#${this.elementId}`).modal('show');\n }\n\n hide() {\n $(`#${this.elementId}`).modal('hide');\n }\n}\n","/*\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\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ModalComponent } from './modal.component';\n\n@NgModule({\n declarations: [ModalComponent],\n imports: [CommonModule],\n exports: [ModalComponent]\n})\nexport class ModalModule {}\n","/*\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\nimport {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'valtimo-spinner',\n templateUrl: './spinner.component.html',\n styleUrls: ['./spinner.component.scss']\n})\nexport class SpinnerComponent {\n @Input() useBootstrapSpinner = true;\n @Input() name: string;\n @Input() type = 'ball-clip-rotate';\n @Input() size = 'medium';\n @Input() color = 'currentColor';\n @Input() bdColor = 'rgba(0,0,0,0)';\n @Input() fullScreen = false;\n @Input() noMarginTop = false;\n}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {SpinnerComponent} from './spinner.component';\nimport {NgxSpinnerModule} from 'ngx-spinner';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@NgModule({\n declarations: [SpinnerComponent],\n exports: [\n SpinnerComponent\n ],\n imports: [\n CommonModule,\n NgxSpinnerModule,\n TranslateModule\n ]\n})\nexport class SpinnerModule {\n}\n","/*\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\nimport {\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n ViewChildren\n} from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { DropdownButtonStyle, DropdownItem } from '@valtimo/contract';\nimport { BehaviorSubject, combineLatest, fromEvent, Subscription } from 'rxjs';\nimport { debounceTime, take } from 'rxjs/operators';\n\n@Component({\n selector: 'valtimo-searchable-dropdown',\n templateUrl: './searchable-dropdown.component.html',\n styleUrls: ['./searchable-dropdown.component.scss']\n})\nexport class SearchableDropdownComponent implements OnInit, OnDestroy, OnChanges {\n @Input() style: DropdownButtonStyle;\n @Input() items: Array<DropdownItem>;\n @Input() buttonText: string;\n @Input() searchText: string;\n @Input() noResultsText: string;\n @Input() disabled: boolean;\n @Input() width = 250;\n\n @Output() itemSelected = new EventEmitter();\n\n @ViewChildren('button') buttons: QueryList<ElementRef>;\n\n private readonly searchId = 'search';\n\n readonly searchTerm = new FormControl('');\n\n readonly focusedItemId$ = new BehaviorSubject<string>(this.searchId);\n\n readonly open$ = new BehaviorSubject<boolean>(false);\n\n readonly filteredItems$ = new BehaviorSubject<Array<DropdownItem>>(undefined);\n\n private wasInside = false;\n\n private keySubscription: Subscription;\n\n private searchSubscription: Subscription;\n\n private readonly mouseOnList$ = new BehaviorSubject<boolean>(false);\n\n @HostListener('click')\n clickInside() {\n this.wasInside = true;\n }\n\n @HostListener('document:click')\n clickout() {\n if (!this.wasInside) {\n this.closeDropdown();\n }\n this.wasInside = false;\n }\n\n ngOnInit(): void {\n this.openKeysSubscription();\n this.openSearchSubscription();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const itemChanges = changes.items;\n const currenItems = itemChanges.currentValue;\n if (itemChanges && !itemChanges.previousValue && currenItems) {\n this.filteredItems$.next(currenItems);\n }\n }\n\n ngOnDestroy(): void {\n this.keySubscription.unsubscribe();\n this.searchSubscription.unsubscribe();\n }\n\n openDropdown(): void {\n this.open$.next(true);\n }\n\n hoverOverButton(id: string): void {\n this.focusedItemId$.next(id);\n }\n\n mouseEnterList(): void {\n this.mouseOnList$.next(true);\n }\n\n mouseLeaveList(): void {\n this.mouseOnList$.next(false);\n }\n\n resetFocus(): void {\n this.focusedItemId$.next(this.searchId);\n }\n\n submit(id: string): void {\n this.itemSelected.emit(id);\n }\n\n private closeDropdown(): void {\n this.searchTerm.setValue('');\n this.resetFocus();\n this.open$.next(false);\n }\n\n private openKeysSubscription(): void {\n this.keySubscription = fromEvent(document, 'keyup')\n .pipe(debounceTime(50))\n .subscribe((event: KeyboardEvent) => {\n combineLatest([this.mouseOnList$, this.filteredItems$, this.focusedItemId$])\n .pipe(take(1))\n .subscribe(([mouseOnList, items, focusedId]) => {\n const length = items.length;\n const focusedIndex = items.findIndex((item) => item.id === focusedId);\n const code = event.code;\n const shiftKey = event.shiftKey;\n const down = 'ArrowDown';\n const tab = 'Tab';\n const up = 'ArrowUp';\n const enter = 'Enter';\n const escape = 'Escape';\n\n // close dropdown on pressing escape\n if (code === escape) {\n this.closeDropdown();\n }\n\n // submit item when focus is on an item in the list and enter is pressed\n if (code === enter && focusedId !== this.searchId) {\n this.submit(focusedId);\n }\n\n // only handle tab or arrow keypresses when items are shown and the mouse is not on the list\n if (length > 0 && !mouseOnList) {\n // handle moving down in the list with arrow down or tab\n if (code === down || (code === tab && !shiftKey)) {\n // move focus to first item in the list when focus is on search box\n if (focusedId === this.searchId) {\n this.focusedItemId$.next(items[0].id);\n this.scrollButtonIntoView(focusedId);\n // move focus to next item in the list if focus is not on last item\n } else if (focusedIndex + 1 < length) {\n this.focusedItemId$.next(items[focusedIndex + 1].id);\n this.scrollButtonIntoView(focusedId);\n }\n // handle moving up in the list with up arrow up or shift+tab\n } else if ((code === up || (code === tab && shiftKey)) && focusedId !== this.searchId) {\n // move to previous item if focus is not on the first item in the list\n if (focusedIndex > 0) {\n this.focusedItemId$.next(items[focusedIndex - 1].id);\n this.scrollButtonIntoView(focusedId);\n // move focus to search box if focus is on first item in the list\n } else {\n this.resetFocus();\n }\n }\n }\n });\n });\n }\n\n private openSearchSubscription(): void {\n this.searchSubscription = this.searchTerm.valueChanges.subscribe((searchTerm) => {\n this.focusedItemId$.pipe(take(1)).subscribe((focusedItemId) => {\n if (!searchTerm) {\n this.filteredItems$.next(this.items);\n } else {\n const filteredItems = this.items.filter((item) => item.text.toUpperCase().includes(searchTerm.toUpperCase()));\n\n this.filteredItems$.next(filteredItems);\n\n // move focus to search box if filtered list length is 0 or previously focused item is not in filtered list anymore\n if (filteredItems.length === 0 || !filteredItems.some((item) => item.id === focusedItemId)) {\n this.resetFocus();\n }\n }\n\n // move scrolling button into view to end of queue, so that DOM can be updated first\n setTimeout(() => {\n this.scrollButtonIntoView(focusedItemId);\n });\n });\n });\n }\n\n private scrollButtonIntoView(id: string): void {\n this.filteredItems$.pipe(take(1)).subscribe((items) => {\n const focusItemIndex = items.findIndex((item) => item.id === id);\n const focusedButton = this.buttons.toArray()[focusItemIndex];\n\n if (focusedButton) {\n focusedButton.nativeElement.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }\n });\n }\n}\n","/*\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\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { SearchableDropdownComponent } from './searchable-dropdown.component';\n\n@NgModule({\n declarations: [SearchableDropdownComponent],\n imports: [CommonModule, ReactiveFormsModule],\n exports: [SearchableDropdownComponent]\n})\nexport class SearchableDropdownModule {}\n","export const formIoUploaderEditForm = () => ({\n components: [\n {key: 'type', type: 'hidden'},\n {\n type: 'textfield',\n input: true,\n key: 'label',\n label: 'Label',\n placeholder: 'Label',\n validate: {\n required: true,\n },\n },\n {\n type: 'textfield',\n input: true,\n key: 'key',\n label: 'Property Name',\n placeholder: 'Property Name',\n tooltip: 'The name of this field in the API endpoint.',\n validate: {\n required: true,\n }\n },\n {\n type: 'textfield',\n input: true,\n key: 'customOptions.title',\n label: 'Title',\n placeholder: 'Title',\n tooltip: 'Leave empty to use the default title',\n validate: {\n required: false,\n },\n },\n {\n type: 'checkbox',\n input: true,\n inputType: 'checkbox',\n key: 'customOptions.hideTitle',\n label: 'Hide title',\n validate: {\n required: false,\n },\n },\n {\n type: 'textfield',\n input: true,\n key: 'customOptions.subtitle',\n label: 'Subtitle',\n placeholder: 'Title',\n tooltip: 'Leave empty to hide subtitle',\n validate: {\n required: false,\n },\n },\n {\n type: 'number',\n input: true,\n key: 'customOptions.maxFileSize',\n label: 'Maximum file size',\n placeholder: 'Maximum file size',\n defaultValue: 5,\n validate: {\n required: true,\n },\n },\n {\n type: 'checkbox',\n input: true,\n inputType: 'checkbox',\n key: 'customOptions.hideMaxFileSize',\n label: 'Hide maximum file size',\n validate: {\n required: false,\n },\n },\n {\n type: 'checkbox',\n input: true,\n inputType: 'checkbox',\n key: 'customOptions.camera',\n label: 'Allow camera uploads',\n validate: {\n required: false,\n },\n }\n ],\n});\n","import {Injector} from '@angular/core';\nimport {createCustomFormioComponent, FormioCustomComponentInfo, registerCustomFormioComponentWithClass} from 'angular-formio';\nimport {FormIoUploaderComponent} from './form-io-uploader.component';\nimport {formIoUploaderEditForm} from './form-io-uploader-edit-form';\n\nexport const customUploaderType = 'valtimo-file';\n\nconst COMPONENT_OPTIONS: FormioCustomComponentInfo = {\n type: customUploaderType,\n selector: 'valtimo-form-io-uploader',\n title: 'Valtimo File Upload',\n group: 'basic',\n icon: 'upload',\n // set empty value to force formio to accept arrays as valid input value for this field type\n emptyValue: [],\n editForm: formIoUploaderEditForm,\n};\n\nexport function registerFormioUploadComponent(injector: Injector) {\n\n const originalUploadComponent = createCustomFormioComponent(COMPONENT_OPTIONS);\n\n // override setValue function to allow for setting an array value\n class UploaderComponent extends originalUploadComponent {\n setValue (value): boolean {\n this._customAngularElement.value = value;\n return true;\n }\n }\n registerCustomFormioComponentWithClass(\n COMPONENT_OPTIONS,\n FormIoUploaderComponent,\n UploaderComponent,\n injector\n );\n}\n","/*\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\nimport {\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport {DropdownButtonStyle, DropdownItem} from '@valtimo/contract';\n\n@Component({\n selector: 'valtimo-searchable-dropdown-select',\n templateUrl: './searchable-dropdown-select.component.html',\n styleUrls: ['./searchable-dropdown-select.component.scss']\n})\nexport class SearchableDropdownSelectComponent {\n @Input() style: DropdownButtonStyle;\n @Input() items: Array<DropdownItem>;\n @Input() buttonText: string;\n @Input() searchText: string;\n @Input() noResultsText: string;\n @Input() disabled: boolean;\n @Input() selectedText: string;\n @Input() selectedTextValue: string;\n @Input() clearSelectionButtonTitle: string;\n @Input() hasSelection: boolean;\n @Input() width = 250;\n\n @Output() itemSelected = new EventEmitter();\n @Output() clearSelection = new EventEmitter();\n\n onSelect(id: string): void {\n this.itemSelected.emit(id);\n }\n\n onClearSelection(): void {\n this.clearSelection.emit();\n }\n}\n","/*\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\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { SearchableDropdownSelectComponent } from './searchable-dropdown-select.component';\nimport {SearchableDropdownModule} from '../searchable-dropdown/searchable-dropdown.module';\n\n@NgModule({\n declarations: [SearchableDropdownSelectComponent],\n imports: [CommonModule, ReactiveFormsModule, SearchableDropdownModule],\n exports: [SearchableDropdownSelectComponent]\n})\nexport class SearchableDropdownSelectModule {}\n","/*\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/*\n * Public API Surface of components\n */\n\nexport * from './lib/camunda/form/camunda-form.components';\nexport * from './lib/camunda/form/camunda-form.module';\n\nexport * from './lib/topbar/topbar.component';\nexport * from './lib/topbar/topbar.module';\n\nexport * from './lib/menu/menu.service';\nexport * from './lib/menu/menu-routing.module';\nexport * from './lib/menu/menu.module';\nexport * from './lib/menu/menu.init';\n\nexport * from './lib/right-sidebar/right-sidebar.component';\nexport * from './lib/right-sidebar/right-sidebar.module';\n\nexport * from './lib/left-sidebar/left-sidebar.component';\nexport * from './lib/left-sidebar/left-sidebar.module';\n\nexport * from './lib/list/list.component';\nexport * from './lib/list/ListFilterPipe.directive';\nexport * from './lib/list/list.module';\n\nexport * from './lib/page-header/page-header.component';\nexport * from './lib/page-header/page-header.module';\n\nexport * from './lib/page-title/page-title.component';\nexport * from './lib/page-title/page-title.module';\n\nexport * from './lib/breadcrumb-navigation/breadcrumb-navigation.component';\nexport * from './lib/breadcrumb-navigation/breadcrumb-navigation.module';\n\nexport * from './lib/breadcrumb-navigation/breadcrumb-navigation.component';\nexport * from './lib/breadcrumb-navigation/breadcrumb-navigation.module';\n\nexport * from './lib/widget/widget.component';\nexport * from './lib/widget/widget.module';\n\nexport * from './lib/field-auto-focus/field-auto-focus.directive';\nexport * from './lib/field-auto-focus/field-auto-focus.module';\n\nexport * from './lib/card/card.component';\nexport * from './lib/card/card.module';\n\nexport * from './lib/bpmn-js-diagram/bpmn-js-diagram.component';\nexport * from './lib/bpmn-js-diagram/bpmn-js-diagram.module';\n\nexport * from './lib/timeline/timeline.component';\nexport * from './lib/timeline/timeline.module';\n\nexport * from './lib/components.module';\n\nexport * from './lib/filter-sidebar/filter-sidebar.component';\nexport * from './lib/filter-sidebar/filter-sidebar.module';\n\nexport * from './lib/uploader/uploader.component';\nexport * from './lib/uploader/uploader-drag-drop.directive';\nexport * from './lib/uploader/uploader.module';\n\nexport * from './lib/file-size/file-size.module';\nexport * from './lib/file-size/file-size.pipe';\n\nexport * from './lib/alert/alert.component';\nexport * from './lib/alert/alert.service';\nexport * from './lib/alert/alert.module';\n\nexport * from './lib/data-list/data-list.component';\nexport * from './lib/data-list/data-list.module';\n\nexport * from './lib/view-content/view-content.service';\n\nexport * from './lib/form-io/form-io.component';\nexport * from './lib/form-io/form-io-builder.component';\nexport * from './lib/form-io/form-io.module';\n\nexport * from './lib/modal/modal.module';\nexport * from './lib/modal/modal.component';\n\nexport * from './lib/spinner/spinner.module';\n\nexport * from './lib/searchable-dropdown/searchable-dropdown.module';\nexport * from './lib/searchable-dropdown/searchable-dropdown.component';\n\nexport * from './lib/dropzone/dropzone.module';\nexport * from './lib/dropzone/dropzone.component';\n\nexport * from './lib/form-io/form-io-uploader/form-io-uploader.component';\nexport * from './lib/form-io/form-io-uploader/form-io-uploader.formio';\n\nexport * from './lib/webcam/webcam.module';\nexport * from './lib/webcam/webcam.component';\n\nexport * from './lib/progress-bar/progress-bar.module';\nexport * from './lib/progress-bar/progress-bar.component';\n\nexport * from './lib/searchable-dropdown-select/searchable-dropdown-select.module';\nexport * from './lib/searchable-dropdown-select/searchable-dropdown-select.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n\nexport {CamundaCustomFormComponent as ɵn} from './lib/camunda/form/custom/camunda-custom-form.component';\nexport {CamundaCustomFormModule as ɵm} from './lib/camunda/form/custom/camunda-custom-form.module';\nexport {CamundaGeneratedFormComponent as ɵl} from './lib/camunda/form/generated/camunda-generated-form.component';\nexport {CamundaGeneratedFormModule as ɵa} from './lib/camunda/form/generated/camunda-generated-form.module';\nexport {CamundaBooleanFormfieldComponent as ɵc} from './lib/camunda/form/generated/formfield/boolean/camunda-boolean-formfield.component';\nexport {CamundaFormfieldGeneratorDirective as ɵf} from './lib/camunda/form/generated/formfield/camunda-formfield-generator.directive';\nexport {CamundaFormfieldService as ɵe} from './lib/camunda/form/generated/formfield/camunda-formfield.service';\nexport {CamundaChoicefieldFormfieldComponent as ɵj} from './lib/camunda/form/generated/formfield/choicefield/camunda-choicefield-formfield.component';\nexport {CamundaDateFormfieldComponent as ɵd} from './lib/camunda/form/generated/formfield/date/camunda-date-formfield.component';\nexport {CamundaEnumFormfieldComponent as ɵh} from './lib/camunda/form/generated/formfield/enum/camunda-enum-formfield.component';\nexport {CamundaLongFormfieldComponent as ɵg} from './lib/camunda/form/generated/formfield/long/camunda-long-formfield.component';\nexport {CamundaStringFormfieldComponent as ɵb} from './lib/camunda/form/generated/formfield/string/camunda-string-formfield.component';\nexport {CamundaTextareaFormfieldComponent as ɵi} from './lib/camunda/form/generated/formfield/textarea/camunda-textarea-formfield.component';\nexport {CamundaFormfieldValidationComponent as ɵk} from './lib/camunda/form/generated/formfield/validation/camunda-formfield-validation.component';\nexport {AppConfig as ɵu} from './lib/form-io/formio-config';\nexport {FormIoDomService as ɵt} from './lib/form-io/services/form-io-dom.service';\nexport {FormIoStateService as ɵs} from './lib/form-io/services/form-io-state.service';\nexport {MenuItemTextComponent as ɵp} from './lib/menu/menu-item-text.component';\nexport {MenuComponent as ɵo} from './lib/menu/menu.component';\nexport {SubmenuItemTextComponent as ɵq} from './lib/menu/submenu-item-text.component';\nexport {SpinnerComponent as ɵv} from './lib/spinner/spinner.component';\nexport {VersionService as ɵr} from './lib/version/version.service';"],"names":["moment","heatmap.create"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"valtimo-components.js","sources":["../../../../projects/valtimo/components/src/lib/models/alert.model.ts","../../../../projects/valtimo/components/src/lib/models/form-io.model.ts","../../../../projects/valtimo/components/src/lib/models/timeline.model.ts","../../../../projects/valtimo/components/src/lib/models/version.model.ts","../../../../projects/valtimo/components/src/lib/models/index.ts","../../../../projects/valtimo/components/src/lib/components/camunda/form/camunda-form.components.ts","../../../../projects/valtimo/components/src/lib/components/camunda/form/custom/camunda-custom-form.component.ts","../../../../projects/valtimo/components/src/lib/components/camunda/form/custom/camunda-custom-form.module.ts","../../../../projects/valtimo/components/src/lib/components/camunda/form/generated/formfield/validation/date.validators.ts","../../../../projects/valtimo/components/src/lib/components/camunda/form/generated/formfield/camunda-formfield.service.ts","../../../../projects/valtimo/components/src/lib/components/camunda/form/generated/camunda-generated-form.component.ts","../../../../projects/valtimo/components/src/lib/components/camunda/form/generated/formfield/string/camunda-string-formfield.component.ts","../../../../projects/valtimo/components/src/lib/components/camunda/form/generated/formfield/boolean/camunda-boolean-formfield.component.ts","../../../../projects/valtimo/components/src/lib/components/camunda/form/generated/formfield/date/camunda-date-formfield.component.ts","../../../../projects/valtimo/components/src/lib/components/camunda/form/generated/formfield/long/camunda-long-formfield.component.ts","../../../../projects/valtimo/components/src/lib/components/camunda/form/generated/formfield/enum/camunda-enum-formfield.component.ts","../../../../projects/valtimo/components/src/lib/components/camunda/form/generated/formfield/textarea/camunda-textarea-formfield.component.ts","../../../../projects/valtimo/components/src/lib/components/camunda/form/generated/formfield/choicefield/camunda-choicefield-formfield.component.ts","../../../../projects/valtimo/components/src/lib/components/camunda/form/generated/formfield/camunda-formfield-generator.directive.ts","../../../../projects/valtimo/components/src/lib/components/camunda/form/generated/formfield/validation/camunda-formfield-validation.component.ts","../../../../projects/valtimo/components/src/lib/components/camunda/form/generated/camunda-generated-form.module.ts","../../../../projects/valtimo/components/src/lib/components/camunda/form/camunda-form.module.ts","../../../../projects/valtimo/components/src/lib/components/topbar/topbar.component.ts","../../../../projects/valtimo/components/src/lib/components/topbar/topbar.module.ts","../../../../projects/valtimo/components/src/lib/components/menu/menu.service.ts","../../../../projects/valtimo/components/src/lib/components/menu/menu-routing.module.ts","../../../../projects/valtimo/components/src/lib/components/menu/menu.component.ts","../../../../projects/valtimo/components/src/lib/components/menu/menu-item-text.component.ts","../../../../projects/valtimo/components/src/lib/components/menu/submenu-item-text.component.ts","../../../../projects/valtimo/components/src/lib/components/menu/menu.module.ts","../../../../projects/valtimo/components/src/lib/components/menu/menu.init.ts","../../../../projects/valtimo/components/src/lib/components/version/version.service.ts","../../../../projects/valtimo/components/src/lib/components/right-sidebar/right-sidebar.component.ts","../../../../projects/valtimo/components/src/lib/components/right-sidebar/right-sidebar.module.ts","../../../../projects/valtimo/components/src/lib/components/left-sidebar/left-sidebar.component.ts","../../../../projects/valtimo/components/src/lib/components/page-title/page-title.component.ts","../../../../projects/valtimo/components/src/lib/components/page-title/page-title.module.ts","../../../../projects/valtimo/components/src/lib/components/left-sidebar/left-sidebar.module.ts","../../../../projects/valtimo/components/src/lib/components/view-content/type-converters/stringTypeConverter.ts","../../../../projects/valtimo/components/src/lib/components/view-content/type-converters/booleanTypeConverter.ts","../../../../projects/valtimo/components/src/lib/components/view-content/type-converters/dateTypeConverter.ts","../../../../projects/valtimo/components/src/lib/components/view-content/type-converters/enumTypeConverter.ts","../../../../projects/valtimo/components/src/lib/components/view-content/type-converters/stringReplaceUnderscoreTypeConverter.ts","../../../../projects/valtimo/components/src/lib/components/view-content/type-converters/relatedFilesTypeConverter.ts","../../../../projects/valtimo/components/src/lib/components/view-content/type-converters/type-converters.model.ts","../../../../projects/valtimo/components/src/lib/components/view-content/view-content.service.ts","../../../../projects/valtimo/components/src/lib/components/list/list.component.ts","../../../../projects/valtimo/components/src/lib/components/list/ListFilterPipe.directive.ts","../../../../projects/valtimo/components/src/lib/components/card/card.component.ts","../../../../projects/valtimo/components/src/lib/components/card/card.module.ts","../../../../projects/valtimo/components/src/lib/components/list/list.module.ts","../../../../projects/valtimo/components/src/lib/components/page-header/page-header.component.ts","../../../../projects/valtimo/components/src/lib/components/breadcrumb-navigation/breadcrumb-navigation.component.ts","../../../../projects/valtimo/components/src/lib/components/breadcrumb-navigation/breadcrumb-navigation.module.ts","../../../../projects/valtimo/components/src/lib/components/page-header/page-header.module.ts","../../../../projects/valtimo/components/src/lib/components/widget/widget.component.ts","../../../../projects/valtimo/components/src/lib/components/widget/widget.module.ts","../../../../projects/valtimo/components/src/lib/components/field-auto-focus/field-auto-focus.directive.ts","../../../../projects/valtimo/components/src/lib/components/field-auto-focus/field-auto-focus.module.ts","../../../../projects/valtimo/components/src/lib/components/bpmn-js-diagram/bpmn-js-diagram.component.ts","../../../../projects/valtimo/components/src/lib/components/bpmn-js-diagram/bpmn-js-diagram.module.ts","../../../../projects/valtimo/components/src/lib/components/timeline/timeline.component.ts","../../../../projects/valtimo/components/src/lib/components/timeline/timeline.module.ts","../../../../projects/valtimo/components/src/lib/components/components.module.ts","../../../../projects/valtimo/components/src/lib/components/filter-sidebar/filter-sidebar.component.ts","../../../../projects/valtimo/components/src/lib/components/filter-sidebar/filter-sidebar.module.ts","../../../../projects/valtimo/components/src/lib/components/uploader/uploader.component.ts","../../../../projects/valtimo/components/src/lib/components/uploader/uploader-drag-drop.directive.ts","../../../../projects/valtimo/components/src/lib/components/file-size/file-size.pipe.ts","../../../../projects/valtimo/components/src/lib/components/file-size/file-size.module.ts","../../../../projects/valtimo/components/src/lib/components/uploader/uploader.module.ts","../../../../projects/valtimo/components/src/lib/components/alert/alert.service.ts","../../../../projects/valtimo/components/src/lib/components/alert/alert.component.ts","../../../../projects/valtimo/components/src/lib/components/alert/alert.module.ts","../../../../projects/valtimo/components/src/lib/components/data-list/data-list.component.ts","../../../../projects/valtimo/components/src/lib/components/data-list/data-list.module.ts","../../../../projects/valtimo/components/src/lib/components/form-io/services/form-io-state.service.ts","../../../../projects/valtimo/components/src/lib/components/form-io/form-io.component.ts","../../../../projects/valtimo/components/src/lib/components/form-io/form-io-builder.component.ts","../../../../projects/valtimo/components/src/lib/components/form-io/formio-config.ts","../../../../projects/valtimo/components/src/lib/components/form-io/services/form-io-dom.service.ts","../../../../projects/valtimo/components/src/lib/components/form-io/form-io-uploader/form-io-uploader.component.ts","../../../../projects/valtimo/components/src/lib/components/dropzone/dropzone.component.ts","../../../../projects/valtimo/components/src/lib/components/progress-bar/progress-bar.component.ts","../../../../projects/valtimo/components/src/lib/components/progress-bar/progress-bar.module.ts","../../../../projects/valtimo/components/src/lib/components/webcam/webcam.component.ts","../../../../projects/valtimo/components/src/lib/components/webcam/webcam.module.ts","../../../../projects/valtimo/components/src/lib/components/dropzone/dropzone.module.ts","../../../../projects/valtimo/components/src/lib/components/form-io/form-io.module.ts","../../../../projects/valtimo/components/src/lib/components/modal/modal.component.ts","../../../../projects/valtimo/components/src/lib/components/modal/modal.module.ts","../../../../projects/valtimo/components/src/lib/components/spinner/spinner.component.ts","../../../../projects/valtimo/components/src/lib/components/spinner/spinner.module.ts","../../../../projects/valtimo/components/src/lib/components/searchable-dropdown/searchable-dropdown.component.ts","../../../../projects/valtimo/components/src/lib/components/searchable-dropdown/searchable-dropdown.module.ts","../../../../projects/valtimo/components/src/lib/components/form-io/form-io-uploader/form-io-uploader-edit-form.ts","../../../../projects/valtimo/components/src/lib/components/form-io/form-io-uploader/form-io-uploader.formio.ts","../../../../projects/valtimo/components/src/lib/components/searchable-dropdown-select/searchable-dropdown-select.component.ts","../../../../projects/valtimo/components/src/lib/components/searchable-dropdown-select/searchable-dropdown-select.module.ts","../../../../projects/valtimo/components/src/public_api.ts","../../../../projects/valtimo/components/src/valtimo-components.ts"],"sourcesContent":["/*\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\nexport class Alert {\n type: AlertType;\n message: string;\n confirmations: Array<AlertConfirmation>;\n confirm: any;\n iconClass: string;\n constructor(init?: Partial<Alert>) {\n Object.assign(this, init);\n }\n}\n\nexport interface AlertConfirmation {\n label: string;\n class: string;\n value: any;\n}\n\nexport enum AlertType {\n Success,\n Error,\n Info,\n Warning,\n Notification,\n ModalNotification,\n}\n","/*\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\nimport {\n AlertsOptions,\n ErrorsOptions,\n FormioBeforeSubmit,\n FormioHookOptions,\n FormioOptions,\n} from 'angular-formio/formio.common';\n\nexport interface FormioSubmission {\n data: {\n submit: boolean;\n };\n metadata: object;\n state: string;\n}\n\nexport class AlertsOptionsImpl implements AlertsOptions {\n submitMessage: string;\n\n constructor(submitMessage: string) {\n this.submitMessage = submitMessage;\n }\n}\n\nexport interface ValtimoFormioOptions extends FormioOptions {\n setAlertMessage(submitMessage: string);\n setHooks(submitFunction: FormioBeforeSubmit);\n}\n\nexport class FormioOptionsImpl implements ValtimoFormioOptions {\n errors?: ErrorsOptions;\n alerts?: AlertsOptions;\n disableAlerts?: boolean;\n i18n?: object;\n fileService?: object;\n hooks?: FormioHookOptions;\n\n constructor() {}\n\n setAlertMessage(submitMessage: string) {\n this.alerts = new AlertsOptionsImpl(submitMessage);\n }\n\n setHooks(beforeSubmit: FormioBeforeSubmit) {\n this.hooks = {beforeSubmit: beforeSubmit};\n }\n}\n","/*\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\nexport interface TimelineItem {\n date: string;\n time: string;\n user: string;\n activity: string;\n summaryTranslationKey: string;\n summaryTranslationParams: object;\n}\n\nexport class TimelineItemImpl implements TimelineItem {\n private readonly _date: string;\n private readonly _time: string;\n private readonly _user: string;\n private readonly _activity: string;\n private readonly _summaryTranslationKey: string;\n private readonly _summaryTranslationParams: object;\n\n constructor(\n date: string,\n time: string,\n user: string,\n activity: string,\n summaryTranslationKey: string,\n summaryTranslationParams: object\n ) {\n this._date = date;\n this._time = time;\n this._user = user;\n this._activity = activity;\n this._summaryTranslationKey = summaryTranslationKey;\n this._summaryTranslationParams = summaryTranslationParams;\n }\n\n get date(): string {\n return this._date;\n }\n\n get time(): string {\n return this._time;\n }\n\n get user(): string {\n return this._user;\n }\n\n get activity(): string {\n return this._activity;\n }\n\n get summaryTranslationKey(): string {\n return this._summaryTranslationKey;\n }\n\n get summaryTranslationParams(): object {\n return this._summaryTranslationParams;\n }\n}\n","/*\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\nexport interface ValtimoVersion {\n title: string;\n version: string;\n}\n","/*\n *\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\nexport * from './alert.model';\nexport * from './form-io.model';\nexport * from './pagination.model';\nexport * from './searchable-dropdown.model';\nexport * from './timeline.model';\nexport * from './version.model';\n","/*\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\nimport {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {FormField} from './generated/formfield/formfield.model';\n\n@Component({\n selector: 'valtimo-camunda-form',\n templateUrl: './camunda-form.component.html',\n})\nexport class CamundaFormComponent {\n @Input() componentName: string;\n @Input() formFields: FormField[];\n @Output() submitted?: EventEmitter<any> = new EventEmitter();\n\n constructor() {}\n\n onSubmitted(event) {\n this.submitted.emit(event);\n }\n}\n","/*\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\nimport {\n Component,\n ComponentFactoryResolver,\n Input,\n OnInit,\n Type,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\n@Component({\n selector: 'valtimo-custom-form',\n templateUrl: './camunda-custom-form.component.html',\n styleUrls: ['./camunda-custom-form.component.css'],\n})\nexport class CamundaCustomFormComponent implements OnInit {\n @Input() componentName: string;\n @ViewChild('customFormContainer', {read: ViewContainerRef, static: true}) viewContainerRef;\n\n constructor(private resolver: ComponentFactoryResolver) {}\n\n ngOnInit() {\n const factories = Array.from(this.resolver['_factories'].keys());\n const factoryClass = <Type<any>>factories.find((x: any) => x.name === this.componentName);\n const cmpFactory = this.resolver.resolveComponentFactory(factoryClass);\n this.viewContainerRef.createComponent(cmpFactory);\n }\n}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {CamundaCustomFormComponent} from './camunda-custom-form.component';\n\n@NgModule({\n declarations: [CamundaCustomFormComponent],\n imports: [CommonModule],\n exports: [CamundaCustomFormComponent],\n})\nexport class CamundaCustomFormModule {}\n","/*\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\nimport * as momentImported from 'moment';\nimport {AbstractControl, ValidatorFn} from '@angular/forms';\n\nconst moment = momentImported;\nmoment.locale(localStorage.getItem('langKey'));\nconst DATE_FORMAT = 'DD-MM-YYYY';\n\nexport function minDate(minDateIn: string): ValidatorFn {\n return (control: AbstractControl): {[key: string]: any} | null => {\n if (!control.value) {\n return null;\n }\n const controlDate = moment.utc(control.value).startOf('day');\n const momentMinDate = moment.utc(minDateIn, DATE_FORMAT, true);\n\n if (!controlDate.isSameOrAfter(momentMinDate)) {\n return {\n minDate: {\n minDate: momentMinDate.format(DATE_FORMAT),\n actual: controlDate.format(DATE_FORMAT),\n },\n };\n } else {\n return null;\n }\n };\n}\n\nexport function maxDate(maxDateIn: string): ValidatorFn {\n return (control: AbstractControl): {[key: string]: any} | null => {\n if (!control.value) {\n return null;\n }\n const controlDate = moment.utc(control.value).startOf('day');\n const momentMaxDate = moment.utc(maxDateIn, DATE_FORMAT, true);\n\n if (!controlDate.isSameOrBefore(momentMaxDate)) {\n return {\n maxDate: {\n maxDate: momentMaxDate.format(DATE_FORMAT),\n actual: controlDate.format(DATE_FORMAT),\n },\n };\n } else {\n return null;\n }\n };\n}\n","/*\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\nimport {Injectable} from '@angular/core';\nimport {Validators} from '@angular/forms';\nimport {maxDate, minDate} from './validation/date.validators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CamundaFormfieldService {\n constructor() {}\n\n public isFormFieldDisabled(formField) {\n return formField.validationConstraints.filter(vc => vc.name === 'readonly').length > 0;\n }\n\n public getMinDate(formField) {\n return formField.validationConstraints.filter(\n vc => vc.name === 'minDate' && vc.configuration\n )[0];\n }\n\n public getMaxDate(formField) {\n return formField.validationConstraints.filter(\n vc => vc.name === 'maxDate' && vc.configuration\n )[0];\n }\n\n public getValidatorTypes(formField) {\n const validatorTypes = [];\n formField.validationConstraints.forEach(validationConstraint => {\n if (validationConstraint.name === 'required') {\n validatorTypes.push(Validators.required);\n }\n if (validationConstraint.name === 'minlength') {\n validatorTypes.push(Validators.minLength(+validationConstraint.configuration));\n }\n if (validationConstraint.name === 'maxlength') {\n validatorTypes.push(Validators.maxLength(+validationConstraint.configuration));\n }\n if (validationConstraint.name === 'min') {\n validatorTypes.push(Validators.min(+validationConstraint.configuration));\n }\n if (validationConstraint.name === 'max') {\n validatorTypes.push(Validators.max(+validationConstraint.configuration));\n }\n if (validationConstraint.name === 'minDate') {\n validatorTypes.push(minDate(validationConstraint.configuration));\n }\n if (validationConstraint.name === 'maxDate') {\n validatorTypes.push(maxDate(validationConstraint.configuration));\n }\n });\n return validatorTypes;\n }\n}\n","/*\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\nimport {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\nimport {FormBuilder, FormControl, FormGroup} from '@angular/forms';\nimport {FormField} from './formfield/formfield.model';\nimport {CamundaFormfieldService} from './formfield/camunda-formfield.service';\nimport {Location} from '@angular/common';\n\n@Component({\n selector: 'valtimo-camunda-generated-form',\n templateUrl: './camunda-generated-form.component.html',\n})\nexport class CamundaGeneratedFormComponent implements OnInit {\n @Output() submitted: EventEmitter<any> = new EventEmitter<any>();\n @Input() formFields: FormField[] = [];\n public formGroup: FormGroup;\n\n constructor(\n private formBuilder: FormBuilder,\n private camundaFormFieldService: CamundaFormfieldService,\n private location: Location\n ) {}\n\n ngOnInit(): void {\n this.formGroup = this.createFormGroup();\n }\n\n private createFormGroup() {\n const group = this.formBuilder.group({});\n this.formFields.forEach(formField => {\n const control = new FormControl(\n {\n value: formField.defaultValue,\n disabled: this.camundaFormFieldService.isFormFieldDisabled(formField),\n },\n this.camundaFormFieldService.getValidatorTypes(formField)\n );\n group.addControl(formField.id, control);\n });\n return group;\n }\n\n public reset() {\n this.formGroup.reset();\n }\n\n public back() {\n this.location.back();\n }\n\n public handleSubmit(event) {\n event.preventDefault();\n event.stopPropagation();\n this.submitted.emit(this.formGroup.value);\n }\n}\n","/*\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\nimport {Component} from '@angular/core';\nimport {FormGroup} from '@angular/forms';\nimport {FormField} from '../formfield.model';\n\n@Component({\n selector: 'valtimo-camunda-string-formfield',\n templateUrl: './camunda-string-formfield.component.html',\n})\nexport class CamundaStringFormfieldComponent {\n public formGroup: FormGroup;\n public formField: FormField;\n\n constructor() {}\n}\n","/*\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\nimport {Component} from '@angular/core';\nimport {FormGroup} from '@angular/forms';\nimport {FormField} from '../formfield.model';\n\n@Component({\n selector: 'valtimo-camunda-boolean-formfield',\n templateUrl: './camunda-boolean-formfield.component.html',\n})\nexport class CamundaBooleanFormfieldComponent {\n public formGroup: FormGroup;\n public formField: FormField;\n\n constructor() {}\n}\n","/*\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\nimport {AfterViewInit, Component, OnInit} from '@angular/core';\nimport {FormGroup} from '@angular/forms';\nimport {FormField} from '../formfield.model';\nimport {CamundaFormfieldService} from '../camunda-formfield.service';\nimport * as momentImported from 'moment';\n\nconst moment = momentImported;\nmoment.locale(localStorage.getItem('langKey'));\ndeclare var $;\n\n@Component({\n selector: 'valtimo-camunda-date-formfield',\n templateUrl: './camunda-date-formfield.component.html',\n})\nexport class CamundaDateFormfieldComponent implements OnInit, AfterViewInit {\n public formGroup: FormGroup;\n public formField: FormField;\n\n private INPUT_SELECTOR: string;\n private datePickerOptions: any = {};\n\n constructor(private formFieldService: CamundaFormfieldService) {}\n\n ngOnInit(): void {\n this.INPUT_SELECTOR = '#' + this.formField.id;\n this.datePickerOptions = {\n autoclose: true,\n componentIcon: '.mdi.mdi-calendar',\n navIcons: {\n rightIcon: 'mdi mdi-chevron-right',\n leftIcon: 'mdi mdi-chevron-left',\n },\n format: 'dd-mm-yyyy',\n };\n }\n\n ngAfterViewInit(): void {\n const formGroup = this.formGroup;\n const formField = this.formField;\n\n const maxDate = this.formFieldService.getMaxDate(this.formField);\n if (maxDate) {\n this.datePickerOptions.endDate = maxDate.configuration;\n }\n\n const minDate = this.formFieldService.getMinDate(this.formField);\n if (minDate) {\n this.datePickerOptions.startDate = minDate.configuration;\n }\n\n $(this.INPUT_SELECTOR).datetimepicker(this.datePickerOptions);\n $(this.INPUT_SELECTOR).on('changeDate', function (e) {\n formGroup.patchValue({\n [formField.id]: moment(e.date.valueOf()).format('DD/MM/YYYY'),\n });\n });\n }\n}\n","/*\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\nimport {Component} from '@angular/core';\nimport {FormGroup} from '@angular/forms';\nimport {FormField} from '../formfield.model';\n\n@Component({\n selector: 'valtimo-camunda-long-formfield',\n templateUrl: './camunda-long-formfield.component.html',\n})\nexport class CamundaLongFormfieldComponent {\n public formGroup: FormGroup;\n public formField: FormField;\n\n constructor() {}\n}\n","/*\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\nimport {Component, OnInit} from '@angular/core';\nimport {FormGroup} from '@angular/forms';\nimport {FormField} from '../formfield.model';\n\n@Component({\n selector: 'valtimo-camunda-enum-formfield',\n templateUrl: './camunda-enum-formfield.component.html',\n})\nexport class CamundaEnumFormfieldComponent implements OnInit {\n public formGroup: FormGroup;\n public formField: FormField;\n\n public valueKeys;\n\n constructor() {}\n\n ngOnInit(): void {\n this.valueKeys = Object.keys(this.formField.type.values);\n }\n}\n","/*\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\nimport {Component} from '@angular/core';\nimport {FormGroup} from '@angular/forms';\nimport {FormField} from '../formfield.model';\n\n@Component({\n selector: 'valtimo-camunda-textarea-formfield',\n templateUrl: './camunda-textarea-formfield.component.html',\n})\nexport class CamundaTextareaFormfieldComponent {\n public formGroup: FormGroup;\n public formField: FormField;\n\n constructor() {}\n}\n","/*\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\nimport {Component, OnInit} from '@angular/core';\nimport {FormGroup} from '@angular/forms';\nimport {FormField} from '../formfield.model';\nimport {ChoicefieldService} from '@valtimo/choicefield';\n\n@Component({\n selector: 'valtimo-camunda-choicefield-formfield',\n templateUrl: './camunda-choicefield-formfield.component.html',\n})\nexport class CamundaChoicefieldFormfieldComponent implements OnInit {\n public formGroup: FormGroup;\n public formField: FormField;\n public choicefieldValues: Array<any> = [];\n\n constructor(private choicefieldService: ChoicefieldService) {}\n\n ngOnInit(): void {\n this.choicefieldService\n .getChoiceFieldValuesByName(this.formField.properties['choicefield'])\n .subscribe(data => {\n this.choicefieldValues = data;\n });\n }\n}\n","/*\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\nimport {\n ComponentFactoryResolver,\n ComponentRef,\n Directive,\n Input,\n OnInit,\n ViewContainerRef,\n} from '@angular/core';\nimport {FormGroup} from '@angular/forms';\nimport {FormField} from './formfield.model';\nimport {CamundaStringFormfieldComponent} from './string/camunda-string-formfield.component';\nimport {CamundaBooleanFormfieldComponent} from './boolean/camunda-boolean-formfield.component';\nimport {CamundaDateFormfieldComponent} from './date/camunda-date-formfield.component';\nimport {CamundaLongFormfieldComponent} from './long/camunda-long-formfield.component';\nimport {CamundaEnumFormfieldComponent} from './enum/camunda-enum-formfield.component';\nimport {CamundaTextareaFormfieldComponent} from './textarea/camunda-textarea-formfield.component';\nimport {CamundaChoicefieldFormfieldComponent} from './choicefield/camunda-choicefield-formfield.component';\n\n@Directive({\n selector: '[valtimoCamundaFormfieldGenerator]',\n})\nexport class CamundaFormfieldGeneratorDirective implements OnInit {\n @Input() formField: FormField;\n\n @Input() formGroup: FormGroup;\n\n private readonly COMPONENTS = {\n string: CamundaStringFormfieldComponent,\n boolean: CamundaBooleanFormfieldComponent,\n date: CamundaDateFormfieldComponent,\n long: CamundaLongFormfieldComponent,\n enum: CamundaEnumFormfieldComponent,\n textarea: CamundaTextareaFormfieldComponent,\n choicefield: CamundaChoicefieldFormfieldComponent,\n };\n\n private component: ComponentRef<any>;\n\n constructor(\n private viewContainerRef: ViewContainerRef,\n private componentFactoryResolver: ComponentFactoryResolver\n ) {}\n\n ngOnInit(): void {\n const typeName = this.formField.typeName.toLowerCase();\n if (!this.COMPONENTS[typeName]) {\n throw new Error('Could not find component for formfield type: ' + typeName);\n }\n const component = this.COMPONENTS[typeName];\n const factory = this.componentFactoryResolver.resolveComponentFactory(component);\n this.component = this.viewContainerRef.createComponent(factory);\n this.component.instance.formGroup = this.formGroup;\n this.component.instance.formField = this.formField;\n }\n}\n","/*\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\nimport {Component, Input, OnInit} from '@angular/core';\nimport {FormGroup} from '@angular/forms';\nimport {FormField} from '../formfield.model';\n\n@Component({\n selector: 'valtimo-camunda-formfield-validation',\n templateUrl: './camunda-formfield-validation.component.html',\n})\nexport class CamundaFormfieldValidationComponent implements OnInit {\n @Input() public formGroup: FormGroup;\n @Input() public formField: FormField;\n\n formControl: any;\n\n constructor() {}\n\n ngOnInit(): void {\n this.formControl = this.formGroup.get(this.formField.id);\n }\n}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {CamundaGeneratedFormComponent} from './camunda-generated-form.component';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {CamundaStringFormfieldComponent} from './formfield/string/camunda-string-formfield.component';\nimport {CamundaFormfieldGeneratorDirective} from './formfield/camunda-formfield-generator.directive';\nimport {CamundaBooleanFormfieldComponent} from './formfield/boolean/camunda-boolean-formfield.component';\nimport {CamundaDateFormfieldComponent} from './formfield/date/camunda-date-formfield.component';\nimport {CamundaLongFormfieldComponent} from './formfield/long/camunda-long-formfield.component';\nimport {CamundaEnumFormfieldComponent} from './formfield/enum/camunda-enum-formfield.component';\nimport {CamundaTextareaFormfieldComponent} from './formfield/textarea/camunda-textarea-formfield.component';\nimport {CamundaChoicefieldFormfieldComponent} from './formfield/choicefield/camunda-choicefield-formfield.component';\nimport {CamundaFormfieldValidationComponent} from './formfield/validation/camunda-formfield-validation.component';\n\n@NgModule({\n declarations: [\n CamundaStringFormfieldComponent,\n CamundaBooleanFormfieldComponent,\n CamundaDateFormfieldComponent,\n CamundaFormfieldGeneratorDirective,\n CamundaLongFormfieldComponent,\n CamundaEnumFormfieldComponent,\n CamundaTextareaFormfieldComponent,\n CamundaChoicefieldFormfieldComponent,\n CamundaFormfieldValidationComponent,\n CamundaGeneratedFormComponent,\n ],\n imports: [CommonModule, ReactiveFormsModule],\n exports: [CamundaGeneratedFormComponent],\n entryComponents: [\n CamundaStringFormfieldComponent,\n CamundaBooleanFormfieldComponent,\n CamundaDateFormfieldComponent,\n CamundaLongFormfieldComponent,\n CamundaEnumFormfieldComponent,\n CamundaTextareaFormfieldComponent,\n CamundaChoicefieldFormfieldComponent,\n ],\n})\nexport class CamundaGeneratedFormModule {}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {CamundaFormComponent} from './camunda-form.components';\nimport {CamundaCustomFormModule} from './custom/camunda-custom-form.module';\nimport {CamundaGeneratedFormModule} from './generated/camunda-generated-form.module';\n\n@NgModule({\n declarations: [CamundaFormComponent],\n imports: [CommonModule, CamundaGeneratedFormModule, CamundaCustomFormModule],\n exports: [CamundaFormComponent],\n})\nexport class CamundaFormModule {}\n","/*\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\nimport {Component} from '@angular/core';\n\n@Component({\n selector: 'valtimo-topbar',\n templateUrl: './topbar.component.html',\n styleUrls: ['./topbar.component.css'],\n})\nexport class TopbarComponent {\n constructor() {}\n}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TopbarComponent} from './topbar.component';\nimport {RouterModule} from '@angular/router';\n\n@NgModule({\n declarations: [TopbarComponent],\n imports: [CommonModule, RouterModule],\n exports: [TopbarComponent],\n})\nexport class TopbarModule {}\n","/*\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\nimport {Injectable} from '@angular/core';\nimport {MenuConfig, MenuItem} from '@valtimo/config';\nimport {NGXLogger} from 'ngx-logger';\nimport {ConfigService} from '@valtimo/config';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {DocumentService} from '@valtimo/document';\nimport {UserProviderService} from '@valtimo/security';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MenuService {\n private _menuItems$ = new BehaviorSubject<MenuItem[]>(undefined);\n private menuConfig: MenuConfig;\n\n constructor(\n private configService: ConfigService,\n private documentService: DocumentService,\n private userProviderService: UserProviderService,\n private logger: NGXLogger\n ) {\n this.menuConfig = configService.config.menu;\n }\n\n init(): void {\n this.reload();\n this.logger.debug('Menu initialized');\n }\n\n public get menuItems$(): Observable<MenuItem[]> {\n return this._menuItems$.asObservable();\n }\n\n public reload(): void {\n return this._menuItems$.next(this.loadMenuItems());\n }\n\n private loadMenuItems(): MenuItem[] {\n let menuItems: MenuItem[] = [];\n this.menuConfig.menuItems.forEach((menuItem: MenuItem) => {\n menuItem.show = true;\n menuItems.push(menuItem);\n });\n menuItems = this.sortMenuItems(menuItems);\n this.appendDossierSubMenuItems(menuItems).subscribe(\n value => (menuItems = this.applyMenuRoleSecurity(value))\n );\n return menuItems;\n }\n\n private sortMenuItems(menuItems: MenuItem[]): MenuItem[] {\n return menuItems.sort((a, b) => {\n return a.sequence - b.sequence;\n });\n }\n\n private appendDossierSubMenuItems(menuItems: MenuItem[]): Observable<MenuItem[]> {\n return new Observable(subscriber => {\n this.logger.debug('appendDossierSubMenuItems');\n this.documentService.getAllDefinitions().subscribe(definitions => {\n const dossierMenuItems: MenuItem[] = definitions.content.map(\n (definition, index) =>\n ({\n link: ['/dossiers/' + definition.id.name],\n title: definition.schema.title,\n iconClass: 'icon mdi mdi-dot-circle',\n sequence: index,\n show: true,\n } as MenuItem)\n );\n this.logger.debug('found dossierMenuItems', dossierMenuItems);\n const menuItemIndex = menuItems.findIndex(({title}) => title === 'Dossiers');\n if (menuItemIndex > 0) {\n const dossierMenu = menuItems[menuItemIndex];\n this.logger.debug('updating dossierMenu', dossierMenu);\n dossierMenu.children = dossierMenuItems;\n menuItems[menuItemIndex] = dossierMenu;\n }\n subscriber.next(menuItems);\n this.logger.debug('appendDossierSubMenuItems finished');\n });\n });\n }\n\n private applyMenuRoleSecurity(menuItems: MenuItem[]): MenuItem[] {\n this.userProviderService.getUserSubject().subscribe(user => {\n if (user.roles != null) {\n this.logger.debug('applyMenuRoleSecurity');\n const userRoles = user.roles;\n menuItems.forEach((menuItem: MenuItem) => {\n const access = this.determineRoleAccess(menuItem, userRoles);\n this.logger.debug('Menu: check role access', menuItem.roles, access);\n if (menuItem.show !== access) {\n this.logger.debug('Menu: Change access', menuItem, access);\n menuItem.show = access;\n }\n });\n }\n });\n return menuItems;\n }\n\n private determineRoleAccess(menuItem: MenuItem, roles: string[]): boolean {\n if (!menuItem.roles) {\n return true;\n } else if (menuItem.roles.some(role => roles.includes(role))) {\n return true;\n } else {\n return false;\n }\n }\n}\n","/*\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\nimport {RouterModule, Routes} from '@angular/router';\nimport {NgModule} from '@angular/core';\n\nconst routes: Routes = [];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class MenuRoutingModule {}\n","/*\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\nimport {Component, ElementRef, OnDestroy, OnInit, Renderer2} from '@angular/core';\nimport {Event, NavigationEnd, Router} from '@angular/router';\nimport {MenuItem} from '@valtimo/config';\nimport {Subscription} from 'rxjs';\nimport {MenuService} from './menu.service';\n\n@Component({\n selector: 'valtimo-menu',\n templateUrl: './menu.component.html',\n styleUrls: ['./menu.component.css'],\n})\nexport class MenuComponent implements OnInit, OnDestroy {\n public menuItems: MenuItem[];\n private routerSubscription: Subscription;\n private menuItemSubscription: Subscription;\n\n constructor(\n private menuService: MenuService,\n private elRef: ElementRef,\n private renderer: Renderer2,\n private router: Router\n ) {}\n\n ngOnInit(): void {\n this.openRouterSubscription();\n this.menuItemSubscription = this.menuService.menuItems$.subscribe(\n value => (this.menuItems = value)\n );\n }\n\n ngOnDestroy(): void {\n this.routerSubscription.unsubscribe();\n this.menuItemSubscription.unsubscribe();\n }\n\n private openRouterSubscription(): void {\n this.routerSubscription = this.router.events.subscribe((event: Event) => {\n if (event instanceof NavigationEnd) {\n this.closeSubMenu();\n }\n });\n }\n\n public closeSubMenu() {\n const visibleSubMenuElm = this.elRef.nativeElement.querySelector('.sub-menu.visible');\n if (visibleSubMenuElm) {\n this.renderer.removeClass(visibleSubMenuElm, 'visible');\n const topLevelMenuItem = this.elRef.nativeElement.querySelector('li.parent.open');\n if (topLevelMenuItem) {\n this.renderer.removeClass(topLevelMenuItem, 'open');\n }\n }\n }\n}\n","/*\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\nimport {Component, Input} from '@angular/core';\nimport {MenuItem} from '@valtimo/config';\n\n@Component({\n selector: 'valtimo-menu-item-text',\n template: `\n <i\n class=\"{{ menuItem.iconClass }}\"\n container=\"body\"\n placement=\"right\"\n ngbTooltip=\"{{ menuItem.title | translate }}\"\n autoClose=\"true\"\n >\n </i>\n <span>{{ menuItem.title | translate }}</span>\n `,\n})\nexport class MenuItemTextComponent {\n @Input() menuItem: MenuItem;\n}\n","/*\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\nimport {Component, Input} from '@angular/core';\nimport {MenuItem} from '@valtimo/config';\n\n@Component({\n selector: 'valtimo-submenu-item-text',\n template: `\n <span [ngClass]=\"submenuItem.textClass\">\n {{ submenuItem.title | translate }}\n <ng-container *ngIf=\"!submenuItem.link\">></ng-container>\n </span>\n `,\n})\nexport class SubmenuItemTextComponent {\n @Input() submenuItem: MenuItem;\n}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MenuComponent} from './menu.component';\nimport {RouterModule} from '@angular/router';\nimport {NgbTooltipModule} from '@ng-bootstrap/ng-bootstrap';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {MenuItemTextComponent} from './menu-item-text.component';\nimport {SubmenuItemTextComponent} from './submenu-item-text.component';\n\n@NgModule({\n declarations: [MenuComponent, MenuItemTextComponent, SubmenuItemTextComponent],\n imports: [CommonModule, RouterModule, NgbTooltipModule, TranslateModule],\n exports: [MenuComponent],\n providers: [],\n})\nexport class MenuModule {}\n","/*\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\nimport {Injector} from '@angular/core';\nimport {NGXLogger} from 'ngx-logger';\nimport {MenuService} from './menu.service';\n\nexport function menuInitializer(injector: Injector, logger: NGXLogger): () => Promise<any> {\n const menuService = injector.get<MenuService>(MenuService);\n return (): Promise<any> => {\n return new Promise((resolve, reject) => {\n try {\n logger.debug('menu initializer before init');\n menuService.init();\n logger.debug('menu initializer after init');\n resolve();\n } catch (error) {\n logger.debug('menu initializer error', error);\n reject(error);\n }\n });\n };\n}\n","/*\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\nimport {Injectable} from '@angular/core';\nimport {HttpClient} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {ValtimoVersion} from '../../models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class VersionService {\n constructor(private http: HttpClient) {}\n\n public getVersion(): Observable<ValtimoVersion> {\n // TODO: this hardcoded string should be taken care of with the introduction of a config service\n return this.http.get<ValtimoVersion>(`/api/valtimo/version`);\n }\n}\n","/*\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\nimport {HttpClient} from '@angular/common/http';\nimport {Component, OnInit} from '@angular/core';\nimport {FormBuilder, FormControl, FormGroup} from '@angular/forms';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ContextService} from '@valtimo/context';\nimport {ValtimoVersion} from '../../models';\nimport {UserIdentity} from '@valtimo/config';\nimport {UserProviderService} from '@valtimo/security';\nimport {NGXLogger} from 'ngx-logger';\nimport {combineLatest} from 'rxjs';\nimport {VersionService} from '../version/version.service';\n\n@Component({\n selector: 'valtimo-right-sidebar',\n templateUrl: './right-sidebar.component.html',\n styleUrls: ['./right-sidebar.component.css'],\n})\nexport class RightSidebarComponent implements OnInit {\n public userIdentity: UserIdentity;\n public frequencies: Array<any>;\n public settingsForm: FormGroup;\n public build: ValtimoVersion;\n public userContexts: Array<any>;\n public userContextActive: any;\n\n constructor(\n private userProviderService: UserProviderService,\n private formBuilder: FormBuilder,\n private versionService: VersionService,\n public translate: TranslateService,\n private contextService: ContextService,\n private http: HttpClient,\n private logger: NGXLogger\n ) {}\n\n ngOnInit() {\n this.frequencies = [\n 'emailNotificationOnMonday',\n 'emailNotificationOnTuesday',\n 'emailNotificationOnWednesday',\n 'emailNotificationOnThursday',\n 'emailNotificationOnFriday',\n 'emailNotificationOnSaturday',\n 'emailNotificationOnSunday',\n ];\n this.settingsForm = this.formBuilder.group({\n taskNotifications: new FormControl(false),\n emailNotifications: new FormControl(false),\n emailNotificationOnMonday: new FormControl(false),\n emailNotificationOnTuesday: new FormControl(false),\n emailNotificationOnWednesday: new FormControl(false),\n emailNotificationOnThursday: new FormControl(false),\n emailNotificationOnFriday: new FormControl(false),\n emailNotificationOnSaturday: new FormControl(false),\n emailNotificationOnSunday: new FormControl(false),\n });\n this.getUserSettings();\n }\n\n private loadContextSwitch() {\n combineLatest([\n this.contextService.getUserContexts(),\n this.contextService.getUserContextActive(),\n ]).subscribe(([userContexts, userContextActive]) => {\n this.userContextActive = userContextActive;\n this.userContexts = userContexts;\n });\n }\n\n public setUserContext(contextId: number) {\n this.contextService.setUserContext(contextId).subscribe();\n location.href = '/';\n }\n\n public loadUserSettingsTab() {\n this.userProviderService.getEmailNotificationSettings().subscribe(results => {\n if (results !== null) {\n this.settingsForm.controls.taskNotifications.setValue(results.taskNotifications);\n this.settingsForm.controls.emailNotifications.setValue(results.emailNotifications);\n this.settingsForm.controls.emailNotificationOnMonday.setValue(\n results.emailNotificationOnMonday\n );\n this.settingsForm.controls.emailNotificationOnTuesday.setValue(\n results.emailNotificationOnTuesday\n );\n this.settingsForm.controls.emailNotificationOnWednesday.setValue(\n results.emailNotificationOnWednesday\n );\n this.settingsForm.controls.emailNotificationOnThursday.setValue(\n results.emailNotificationOnThursday\n );\n this.settingsForm.controls.emailNotificationOnFriday.setValue(\n results.emailNotificationOnFriday\n );\n this.settingsForm.controls.emailNotificationOnSaturday.setValue(\n results.emailNotificationOnSaturday\n );\n this.settingsForm.controls.emailNotificationOnSunday.setValue(\n results.emailNotificationOnSunday\n );\n } else {\n // default is true in the database, even if api returns no content\n this.settingsForm.controls.taskNotifications.setValue(true);\n }\n });\n this.getVersion();\n }\n\n public getUserSettings() {\n this.userProviderService.getUserSubject().subscribe(userIdentity => {\n this.logger.debug('user', userIdentity);\n this.userIdentity = userIdentity;\n this.loadContextSwitch();\n });\n }\n\n public getVersion() {\n this.versionService.getVersion().subscribe((build: ValtimoVersion) => {\n this.build = build;\n });\n }\n\n onSettingsSubmit() {\n if (!this.settingsForm.pristine) {\n this.userProviderService.updateEmailNotificationSettings(this.settingsForm.value).subscribe();\n }\n }\n\n updateUserLanguage(langKey: string) {\n this.translate.use(langKey).subscribe(() => {\n localStorage.setItem('langKey', langKey);\n });\n }\n\n logout() {\n this.userProviderService.logout();\n }\n}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {RightSidebarComponent} from './right-sidebar.component';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {RouterModule} from '@angular/router';\nimport {HttpClient} from '@angular/common/http';\nimport {TranslateLoader, TranslateModule} from '@ngx-translate/core';\nimport {HttpLoaderFactory} from '@valtimo/config';\nimport {NgbTooltipModule} from '@ng-bootstrap/ng-bootstrap';\n\n@NgModule({\n declarations: [RightSidebarComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient],\n },\n }),\n NgbTooltipModule,\n ],\n exports: [RightSidebarComponent],\n})\nexport class RightSidebarModule {}\n","/*\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\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {TranslateService} from '@ngx-translate/core';\nimport {BehaviorSubject, combineLatest, fromEvent, Subscription} from 'rxjs';\nimport {debounceTime, map, take} from 'rxjs/operators';\n\n@Component({\n selector: 'valtimo-left-sidebar',\n templateUrl: './left-sidebar.component.html',\n styleUrls: ['./left-sidebar.component.css'],\n})\nexport class LeftSidebarComponent implements OnInit, AfterViewInit, OnDestroy {\n @ViewChild('toggleButton') toggleButtonRef: ElementRef;\n\n @Input() menuIsOpen: boolean;\n @Output() menuWidthChanged: EventEmitter<number> = new EventEmitter();\n\n readonly menuTooltipText$ = this.translateService.stream('interface.mainMenu');\n readonly toggleMenuText$ = this.translateService.stream('interface.toggleMenu');\n\n readonly mouseIsOnResizeBorder$ = new BehaviorSubject<boolean>(false);\n readonly menuWidth$ = new BehaviorSubject<number>(undefined);\n readonly isResizing$ = new BehaviorSubject<boolean>(false);\n\n private bodyStyle: any;\n\n private xOnClick: number;\n private menuWidthOnClick: number;\n\n private mouseXSubscription: Subscription;\n private mouseUpSubscription: Subscription;\n\n private readonly defaultMenuWidth = 230;\n private readonly maxMenuWidth = 330;\n private readonly minMenuWidth = 120;\n\n private readonly mouseX$ = fromEvent(document.body, 'mousemove').pipe(\n map((e: MouseEvent) => e.pageX)\n );\n\n constructor(private translateService: TranslateService, private readonly elementRef: ElementRef) {\n this.bodyStyle = elementRef.nativeElement.ownerDocument.body.style;\n }\n\n ngOnInit(): void {\n this.setMenuWidth(this.defaultMenuWidth);\n }\n\n ngAfterViewInit(): void {\n this.mouseXSubscription = combineLatest([this.mouseX$, this.isResizing$])\n .pipe(debounceTime(3))\n .subscribe(([x, isResizing]) => {\n const menuOpen = this.menuIsOpen;\n\n if (isResizing) {\n const offSetWidth = this.xOnClick - x;\n const newMenuWidth = this.menuWidthOnClick - offSetWidth;\n const snapMargin = 35;\n const snapInside = newMenuWidth < this.minMenuWidth - snapMargin;\n const snapOutside = !menuOpen && offSetWidth < -snapMargin;\n\n if (menuOpen && newMenuWidth <= this.maxMenuWidth && newMenuWidth >= this.minMenuWidth) {\n this.setMenuWidth(newMenuWidth);\n } else if (snapInside || snapOutside) {\n this.snapMenu(snapInside ? this.menuWidthOnClick : this.defaultMenuWidth);\n }\n }\n });\n\n this.mouseUpSubscription = fromEvent(document, 'mouseup').subscribe(() => {\n this.stopResizing();\n });\n }\n\n ngOnDestroy(): void {\n this.mouseXSubscription.unsubscribe();\n this.mouseUpSubscription.unsubscribe();\n }\n\n enterBorder(): void {\n this.mouseIsOnResizeBorder$.next(true);\n }\n\n leaveBorder(): void {\n this.mouseIsOnResizeBorder$.next(false);\n }\n\n resizeBorderClick(e: MouseEvent): void {\n this.menuWidth$.pipe(take(1)).subscribe(menuWidth => {\n this.menuWidthOnClick = menuWidth;\n this.xOnClick = e.pageX;\n this.bodyStyle.userSelect = 'none';\n this.bodyStyle.cursor = 'col-resize';\n this.isResizing$.next(true);\n });\n }\n\n private snapMenu(snapTo: number): void {\n this.stopResizing();\n this.setMenuWidth(snapTo);\n setTimeout(() => {\n this.toggleButtonRef.nativeElement.click();\n });\n }\n\n private stopResizing(): void {\n this.bodyStyle.cursor = 'auto';\n this.bodyStyle.userSelect = 'auto';\n this.isResizing$.next(false);\n }\n\n private setMenuWidth(width: number): void {\n this.menuWidth$.next(width);\n this.menuWidthChanged.emit(width);\n }\n}\n","/*\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\nimport {Component, OnDestroy, OnInit} from '@angular/core';\nimport {ActivatedRoute, NavigationEnd, Router} from '@angular/router';\nimport {Title} from '@angular/platform-browser';\nimport {filter} from 'rxjs/operators';\nimport {Subscription} from 'rxjs';\nimport {TranslateService} from '@ngx-translate/core';\nimport {NGXLogger} from 'ngx-logger';\n\n@Component({\n selector: 'valtimo-page-title',\n templateUrl: './page-title.component.html',\n styleUrls: ['./page-title.component.css'],\n})\nexport class PageTitleComponent implements OnInit, OnDestroy {\n public title: string;\n public appTitle = 'Valtimo';\n private routerSub = Subscription.EMPTY;\n\n constructor(\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private titleService: Title,\n private translateService: TranslateService,\n private logger: NGXLogger\n ) {}\n\n private setTitle() {\n this.title = this.activatedRoute.snapshot.firstChild.data.title;\n\n // When loading lazy title is nested\n if (!this.title) {\n this.title = this.activatedRoute.snapshot.firstChild.children[0].data.title;\n }\n if (this.title) {\n this.translateService.stream(this.title).subscribe((title: string) => {\n this.logger.debug('PageTitle: setTitle translated async', title);\n this.titleService.setTitle(this.appTitle + ' - ' + title);\n });\n } else {\n this.logger.debug('PageTitle: setTitle default', this.appTitle);\n this.titleService.setTitle(this.appTitle);\n }\n }\n\n ngOnInit() {\n this.setTitle();\n this.routerSub = this.router.events\n .pipe(filter(event => event instanceof NavigationEnd))\n .subscribe(event => {\n this.setTitle();\n });\n }\n\n ngOnDestroy() {\n this.routerSub.unsubscribe();\n }\n}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {PageTitleComponent} from './page-title.component';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@NgModule({\n declarations: [PageTitleComponent],\n imports: [CommonModule, TranslateModule],\n exports: [PageTitleComponent],\n})\nexport class PageTitleModule {}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {LeftSidebarComponent} from './left-sidebar.component';\nimport {PageTitleModule} from '../page-title/page-title.module';\nimport {MenuModule} from '../menu/menu.module';\n\n@NgModule({\n declarations: [LeftSidebarComponent],\n imports: [CommonModule, MenuModule, PageTitleModule],\n exports: [LeftSidebarComponent],\n})\nexport class LeftSidebarModule {}\n","/*\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\nimport {TypeConverter} from './type-converters.model';\n\nexport class StringTypeConverter implements TypeConverter {\n getTypeString(): string {\n return 'string';\n }\n\n convert(value: any, definition: any): string {\n return value;\n }\n}\n","/*\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\nimport {TypeConverter} from './type-converters.model';\n\nexport class BooleanTypeConverter implements TypeConverter {\n getTypeString(): string {\n return 'boolean';\n }\n\n convert(value: any, definition: any): string {\n if (!definition.enum) {\n return value ? 'Yes' : 'No';\n } else {\n return value ? definition.enum[0] || 'Yes' : definition.enum[1] || 'No';\n }\n }\n}\n","/*\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\nimport {TypeConverter} from './type-converters.model';\n\nimport * as momentImported from 'moment';\n\nconst moment = momentImported;\nmoment.locale(localStorage.getItem('langKey'));\n\nexport class DateTypeConverter implements TypeConverter {\n getTypeString(): string {\n return 'date';\n }\n\n convert(value: any, definition: any): string {\n if (!value) {\n return '-';\n }\n return moment(value).format('DD-MM-YYYY, hh:mm A');\n }\n}\n","/*\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\nimport {TypeConverter} from './type-converters.model';\n\nexport class EnumTypeConverter implements TypeConverter {\n getTypeString(): string {\n return 'enum';\n }\n\n convert(value: any, definition: any): string {\n return definition.enum[value];\n }\n}\n","/*\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\nimport {TypeConverter} from './type-converters.model';\n\nexport class StringReplaceUnderscoreTypeConverter implements TypeConverter {\n public regExpStringRemoveUnderscore = /_/g;\n\n getTypeString(): string {\n return 'stringReplaceUnderscore';\n }\n\n convert(value: any, definition: any): string {\n return value.replace(this.regExpStringRemoveUnderscore, ' ');\n }\n}\n","/*\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\nimport {TypeConverter} from './type-converters.model';\n\nexport class RelatedFilesTypeConverter implements TypeConverter {\n getTypeString(): string {\n return 'relatedFiles';\n }\n\n convert(value: any, definition: any): string {\n return value.length || '-';\n }\n}\n","/*\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\nimport {StringTypeConverter} from './stringTypeConverter';\nimport {BooleanTypeConverter} from './booleanTypeConverter';\nimport {DateTypeConverter} from './dateTypeConverter';\nimport {EnumTypeConverter} from './enumTypeConverter';\nimport {StringReplaceUnderscoreTypeConverter} from './stringReplaceUnderscoreTypeConverter';\nimport {RelatedFilesTypeConverter} from './relatedFilesTypeConverter';\n\nconst stringTypeConverter = new StringTypeConverter();\nconst booleanTypeConverter = new BooleanTypeConverter();\nconst dateTypeConverter = new DateTypeConverter();\nconst enumTypeConverter = new EnumTypeConverter();\nconst stringReplaceUnderscoreTypeConverter = new StringReplaceUnderscoreTypeConverter();\nconst relatedFilesTypeConverter = new RelatedFilesTypeConverter();\n\n// TODO: Via injection\nexport const TYPE_CONVERTERS: Array<TypeConverter> = [\n stringTypeConverter,\n booleanTypeConverter,\n dateTypeConverter,\n enumTypeConverter,\n stringReplaceUnderscoreTypeConverter,\n relatedFilesTypeConverter,\n];\n\nexport interface TypeConverter {\n getTypeString(): string;\n\n convert(value: any, definition: any): string;\n}\n","/*\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\nimport {Injectable} from '@angular/core';\nimport {StringTypeConverter} from './type-converters/stringTypeConverter';\nimport {TYPE_CONVERTERS, TypeConverter} from './type-converters/type-converters.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ViewContentService {\n private converters: {[key: string]: TypeConverter} = {};\n private defaultConverter: TypeConverter;\n\n constructor() {\n this.defaultConverter = new StringTypeConverter();\n\n TYPE_CONVERTERS.forEach(converter => this.addConverter(converter));\n }\n\n public get(value: any, definition: any) {\n if (!definition.viewType) {\n definition.viewType = typeof value;\n }\n\n if (typeof this.converters[definition.viewType] !== 'undefined') {\n return this.converters[definition.viewType].convert(value, definition);\n } else {\n return this.defaultConverter.convert(value, definition);\n }\n }\n\n public addConverter(converter: TypeConverter) {\n if (typeof this.converters[converter.getTypeString()] !== 'undefined') {\n throw new Error('Converter with name ' + converter.getTypeString() + ' already exists');\n }\n\n this.converters[converter.getTypeString()] = converter;\n }\n}\n","/*\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\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport {SortState, Direction} from '@valtimo/document';\nimport {NGXLogger} from 'ngx-logger';\nimport {BehaviorSubject, fromEvent} from 'rxjs';\nimport {debounceTime, take} from 'rxjs/operators';\nimport {ViewContentService} from '../view-content/view-content.service';\n\n@Component({\n selector: 'valtimo-list',\n templateUrl: './list.component.html',\n styleUrls: ['./list.component.scss'],\n})\nexport class ListComponent implements OnChanges, OnInit, AfterViewInit {\n private static PAGINATION_SIZE = 'PaginationSize';\n\n @Input() items: Array<any>;\n @Input() fields: Array<any>;\n @Input() pagination?: any;\n @Input() viewMode?: boolean;\n @Input() isSearchable?: boolean;\n @Input() header?: boolean;\n @Input() actions: any[] = [];\n @Input() paginationIdentifier?: string;\n @Input() initialSortState: SortState;\n @Output() rowClicked: EventEmitter<any> = new EventEmitter();\n @Output() paginationClicked: EventEmitter<any> = new EventEmitter();\n @Output() paginationSet: EventEmitter<any> = new EventEmitter();\n @Output() search: EventEmitter<any> = new EventEmitter();\n @Output() sortChanged: EventEmitter<SortState> = new EventEmitter();\n\n public headerProvided = false;\n public viewListAs: string;\n public searchModel: string;\n public regExpStringRemoveUnderscore = /_/g;\n @ViewChild('searchBox') searchBox: ElementRef;\n\n readonly sort$ = new BehaviorSubject<SortState>({\n state: {name: '', direction: 'DESC'},\n isSorting: false,\n });\n\n constructor(private viewContentService: ViewContentService, private logger: NGXLogger) {\n this.viewListAs = localStorage.getItem('viewListAs') || 'table';\n }\n\n loadPaginationSize() {\n const entries = localStorage.getItem(\n `${this.paginationIdentifier}${ListComponent.PAGINATION_SIZE}`\n );\n if (entries !== null) {\n this.pagination.size = +entries;\n this.paginationSet.emit(+entries);\n this.logger.debug('Pagination loaded from local storage for this list. Current: ', entries);\n } else {\n this.logger.debug(\n 'Pagination does NOT exist in local storage for this list. Will use default. Change it to create an entry.'\n );\n }\n this.paginationSet.emit();\n }\n\n setPaginationSize(numberOfEntries: string) {\n localStorage.setItem(\n `${this.paginationIdentifier}${ListComponent.PAGINATION_SIZE}`,\n numberOfEntries\n );\n this.pagination.size = numberOfEntries;\n this.logger.debug('Pagination set in local storage for this list: ', numberOfEntries);\n this.paginationSet.emit(numberOfEntries);\n }\n\n ngOnInit() {\n if (this.pagination) {\n this.loadPaginationSize();\n }\n\n if (this.initialSortState) {\n this.sort$.next(this.initialSortState);\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.items && changes.items.currentValue) {\n this.transformListItemsMatchFields();\n }\n }\n\n ngAfterViewInit() {\n if (this.isSearchable) {\n fromEvent(this.searchBox.nativeElement, 'keyup')\n .pipe(debounceTime(500))\n .subscribe(() => {\n const value = this.searchBox.nativeElement.value;\n if (this.search.observers.length > 0) {\n // custom search callbak is specified, perhaps to query on the server side\n this.search.emit(value);\n } else {\n this.searchModel = value;\n }\n });\n }\n }\n\n public transformListItemsMatchFields() {\n if (this.items && this.fields) {\n this.items.forEach(item => {\n item.listItemFields = this.fields.map(field => ({\n key: field.key,\n label: field.label,\n value: this.resolveObject(field, item),\n }));\n });\n }\n }\n\n public onClickRow(item) {\n this.rowClicked.emit(item);\n }\n\n public resolveObject(definition: any, obj: any) {\n const definitionKey = definition.key;\n const customPropString = '$.';\n const key = definitionKey.includes(customPropString)\n ? definitionKey.split(customPropString)[1]\n : definitionKey;\n const resolvedObjValue = key.split('.').reduce(function (prev, curr) {\n return prev ? prev[curr] : null;\n }, obj || self);\n return this.viewContentService.get(resolvedObjValue, definition);\n }\n\n public switchView(type) {\n localStorage.setItem('viewListAs', type);\n this.viewListAs = type;\n }\n\n public getTotalPageCount() {\n return Math.ceil(this.pagination.collectionSize / this.pagination.size);\n }\n\n public onClickPagination(page) {\n this.paginationClicked.emit(page);\n }\n\n public handleFieldClick(key: string, sortable: boolean): void {\n const desc: Direction = 'DESC';\n const asc: Direction = 'ASC';\n\n if (!sortable) {\n return;\n }\n\n this.sort$.pipe(take(1)).subscribe(sort => {\n let newState: SortState;\n\n if (sort.state.name === key) {\n if (!sort.isSorting) {\n newState = {state: {...sort.state, direction: desc}, isSorting: true};\n } else {\n if (sort.state.direction === desc) {\n newState = {...sort, state: {...sort.state, direction: asc}};\n } else {\n newState = {state: {...sort.state, direction: desc}, isSorting: false};\n }\n }\n } else {\n newState = {state: {name: key, direction: desc}, isSorting: true};\n }\n\n this.sort$.next(newState);\n this.sortChanged.emit(newState);\n });\n }\n}\n","/*\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\nimport {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n name: 'listFilter',\n})\nexport class ListFilterPipe implements PipeTransform {\n transform(list: any[], filterText: string): any {\n list = list || [];\n if (!filterText) {\n return list;\n }\n return list.filter(item =>\n Object.keys(item).some(\n k => item[k] != null && item[k].toString().toLowerCase().includes(filterText.toLowerCase())\n )\n );\n }\n}\n","/*\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\nimport {Component, Input, OnInit} from '@angular/core';\n\n/**\n * Component used to display a card element\n */\n@Component({\n selector: 'valtimo-card',\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.css'],\n})\nexport class CardComponent implements OnInit {\n /**\n * The main title used on the card\n */\n @Input() title?: string;\n\n /**\n * The smaller font size sub title used on the card\n */\n @Input() subtitle?: string;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {CardComponent} from './card.component';\n\n@NgModule({\n declarations: [CardComponent],\n imports: [CommonModule],\n exports: [CardComponent],\n})\nexport class CardModule {}\n","/*\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\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {NgbPaginationModule} from '@ng-bootstrap/ng-bootstrap';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CardModule} from '../card/card.module';\nimport {ListComponent} from './list.component';\nimport {ListFilterPipe} from './ListFilterPipe.directive';\n\n@NgModule({\n declarations: [ListComponent, ListFilterPipe],\n imports: [CommonModule, CardModule, NgbPaginationModule, FormsModule, TranslateModule],\n exports: [ListComponent, ListFilterPipe],\n})\nexport class ListModule {}\n","/*\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\nimport {Component, OnInit} from '@angular/core';\n\n@Component({\n selector: 'valtimo-page-header',\n templateUrl: './page-header.component.html',\n styleUrls: ['./page-header.component.css'],\n})\nexport class PageHeaderComponent implements OnInit {\n constructor() {}\n\n ngOnInit() {}\n}\n","/*\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\nimport {Component, OnDestroy, OnInit} from '@angular/core';\nimport {ActivatedRoute, NavigationEnd, PRIMARY_OUTLET, Router} from '@angular/router';\nimport {filter, map} from 'rxjs/operators';\nimport {Subscription} from 'rxjs';\n\n@Component({\n selector: 'valtimo-breadcrumb-navigation',\n templateUrl: './breadcrumb-navigation.component.html',\n styleUrls: ['./breadcrumb-navigation.component.css'],\n})\nexport class BreadcrumbNavigationComponent implements OnInit, OnDestroy {\n public breadcrumbs: Array<any> = [];\n public appTitle = 'Valtimo';\n private routerSub = Subscription.EMPTY;\n\n constructor(private router: Router, private route: ActivatedRoute) {}\n\n ngOnInit() {\n this.setBreadcrumbs(this.route);\n this.routerSub = this.router.events\n .pipe(filter(event => event instanceof NavigationEnd))\n .pipe(map(() => this.route))\n .pipe(\n map(route => {\n while (route.firstChild) {\n route = route.firstChild;\n }\n return route;\n })\n )\n .pipe(filter(route => route.outlet === PRIMARY_OUTLET))\n .subscribe(route => {\n this.setBreadcrumbs(route);\n });\n }\n\n private setBreadcrumbs(route: ActivatedRoute) {\n while (route.firstChild) {\n route = route.firstChild;\n }\n if (route.outlet === PRIMARY_OUTLET) {\n const snapshot = route.snapshot;\n const activeRoute = {\n url: snapshot.url.join('/'),\n path: snapshot.routeConfig.path,\n label: snapshot.data['title'],\n params: snapshot.params,\n };\n this.generateBreadcrumbs(activeRoute);\n }\n }\n\n private generateBreadcrumbs(activeBreadcrumb: any) {\n this.breadcrumbs = [];\n this.router.config.map(routerConfig => {\n if (\n activeBreadcrumb.path.indexOf(routerConfig.path + '/') === 0 &&\n activeBreadcrumb.path !== routerConfig.path &&\n routerConfig.path !== ''\n ) {\n const parentRoute = {\n url: routerConfig.path.replace(/:(.+?)\\b/g, (_, p1) => activeBreadcrumb.params[p1]),\n path: routerConfig.path,\n label: routerConfig.data['title'],\n params: activeBreadcrumb.params,\n };\n const exist = this.breadcrumbs.findIndex(item => item.url === parentRoute.url);\n if (exist === -1) {\n this.breadcrumbs.push(parentRoute);\n }\n }\n });\n }\n\n ngOnDestroy() {\n this.routerSub.unsubscribe();\n }\n}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {RouterModule} from '@angular/router';\nimport {BreadcrumbNavigationComponent} from './breadcrumb-navigation.component';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@NgModule({\n declarations: [BreadcrumbNavigationComponent],\n imports: [CommonModule, RouterModule, TranslateModule],\n exports: [BreadcrumbNavigationComponent],\n})\nexport class BreadcrumbNavigationModule {}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {PageHeaderComponent} from './page-header.component';\nimport {PageTitleModule} from '../page-title/page-title.module';\nimport {BreadcrumbNavigationModule} from '../breadcrumb-navigation/breadcrumb-navigation.module';\n\n@NgModule({\n declarations: [PageHeaderComponent],\n imports: [CommonModule, PageTitleModule, BreadcrumbNavigationModule],\n exports: [PageHeaderComponent],\n})\nexport class PageHeaderModule {}\n","/*\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\nimport {Component, Input, OnInit} from '@angular/core';\n\n/**\n * Component used to display a widget element\n */\n@Component({\n selector: 'valtimo-widget',\n templateUrl: './widget.component.html',\n styleUrls: ['./widget.component.css'],\n})\nexport class WidgetComponent implements OnInit {\n @Input() type?: string;\n @Input() name?: string;\n @Input() icon?: string;\n @Input() contrast?: string;\n @Input() divider?: string;\n @Input() title?: string;\n @Input() subtitle?: string;\n @Input() collapseAble?: string;\n @Input() collapse?: string;\n @Input() additionalClasses?: string;\n\n public cardClassName: string;\n public contrastClass: string;\n public dividerClass: string;\n public isCollapsed: boolean;\n\n ngOnInit(): void {\n this.setCardClassName();\n this.setType();\n this.setAdditionalClasses();\n this.setContrast();\n this.setDivider();\n this.setCollapse();\n }\n\n public toggleContent(): void {\n if (this.collapseAble) {\n this.isCollapsed = !this.isCollapsed;\n }\n }\n\n private setCardClassName(): void {\n this.cardClassName = 'card-full-default';\n }\n\n private setType(): void {\n if (this.type) {\n this.cardClassName = `card-full-${this.type}`;\n }\n }\n\n private setAdditionalClasses(): void {\n if (this.additionalClasses) {\n this.cardClassName = `${this.cardClassName} ${this.additionalClasses}`;\n }\n }\n\n private setContrast(): void {\n if (this.contrast) {\n this.contrastClass = 'card-header-contrast';\n }\n }\n\n private setDivider(): void {\n if (this.divider) {\n this.dividerClass = 'card-header-divider';\n }\n }\n\n private setCollapse(): void {\n this.isCollapsed = !(this.collapseAble && this.collapse === 'hide');\n }\n}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {WidgetComponent} from './widget.component';\n\n@NgModule({\n declarations: [WidgetComponent],\n imports: [CommonModule],\n exports: [WidgetComponent],\n})\nexport class WidgetModule {}\n","/*\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\nimport {AfterContentInit, Directive, ElementRef} from '@angular/core';\n\n@Directive({\n selector: '[valtimoFieldAutoFocus]',\n})\nexport class FieldAutoFocusDirective implements AfterContentInit {\n constructor(private el: ElementRef) {}\n\n public ngAfterContentInit() {\n setTimeout(() => {\n this.el.nativeElement.focus();\n }, 300);\n }\n}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FieldAutoFocusDirective} from './field-auto-focus.directive';\n\n@NgModule({\n declarations: [FieldAutoFocusDirective],\n exports: [FieldAutoFocusDirective],\n imports: [CommonModule],\n})\nexport class FieldAutoFocusModule {}\n","/*\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\nimport {\n AfterContentInit,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n EventEmitter,\n OnInit,\n} from '@angular/core';\nimport * as BpmnJS from 'bpmn-js/dist/bpmn-navigated-viewer.production.min.js';\nimport * as heatmap from 'heatmap.js-fixed/build/heatmap.js';\n\n@Component({\n selector: 'valtimo-bpmn-js-diagram',\n templateUrl: './bpmn-js-diagram.component.html',\n styleUrls: ['./bpmn-js-diagram.component.css'],\n})\nexport class BpmnJsDiagramComponent implements OnInit, AfterContentInit, OnDestroy {\n private bpmnJS: BpmnJS;\n private heatMapInstance: any;\n\n @ViewChild('ref', {static: true}) public el: ElementRef;\n @Output() public importDone: EventEmitter<any> = new EventEmitter();\n @Input() public bpmn20Xml: any;\n @Input() public heatmapDuration?: any;\n @Input() public heatmapCount?: any;\n @Input() public historicActivityInstances?: any;\n\n public heatmapMode: boolean;\n public heatPoints = {data: []};\n public min: number;\n public max: number;\n\n constructor() {}\n\n ngOnInit(): void {\n this.bpmnJS = new BpmnJS();\n this.bpmnJS.on('import.done', ({error}) => {\n if (!error) {\n const canvas = this.bpmnJS.get('canvas'),\n eventBus = this.bpmnJS.get('eventBus');\n\n if (this.historicActivityInstances) {\n this.historicActivityInstances.forEach(instance => {\n canvas.addMarker(\n instance.activityId,\n instance.endTime ? 'highlight-overlay-past' : 'highlight-overlay-current'\n );\n });\n }\n\n canvas.zoom('fit-viewport', 'auto');\n\n if (this.heatmapDuration || this.heatmapCount) {\n eventBus.on('canvas.init', () => {\n if (this.heatmapMode) {\n this.clearHeatmap();\n }\n this.getHeatmapData();\n });\n eventBus.on('canvas.viewbox.changing', () => {\n if (this.heatmapMode) {\n this.clearHeatmap();\n }\n });\n eventBus.on('canvas.viewbox.changed', () => {\n this.getHeatmapData();\n });\n }\n }\n });\n }\n\n ngAfterContentInit(): void {\n this.bpmnJS.importXML(this.bpmn20Xml);\n this.bpmnJS.attachTo(this.el.nativeElement);\n }\n\n getHeatmapData() {\n let inputData: any, valueKey: any;\n\n this.heatPoints = {data: []};\n this.min = 0;\n this.max = 0;\n\n if (this.heatmapDuration) {\n inputData = this.heatmapDuration;\n valueKey = 'averageDurationInMilliseconds';\n } else if (this.heatmapCount) {\n inputData = this.heatmapCount;\n valueKey = 'totalCount';\n }\n\n if (inputData) {\n Object.keys(inputData).forEach(key => {\n const diagramContainer = this.el.nativeElement.querySelector('svg').getBoundingClientRect(),\n diagramElm = this.el.nativeElement\n .querySelector(`g[data-element-id=${key}]`)\n .getBoundingClientRect();\n this.setMax(key);\n this.heatPoints.data.push({\n x: Math.round(diagramElm.x - diagramContainer.x + diagramElm.width / 2),\n y: Math.round(diagramElm.y - diagramContainer.y + diagramElm.height / 2),\n value: inputData[key][valueKey],\n radius: diagramElm.width / 2,\n });\n if (inputData[key].count > 0) {\n this.addCounterActiveOverlays(key, inputData);\n }\n });\n\n if (this.heatmapMode) {\n this.showHeatmap();\n }\n }\n }\n\n setMax(key: any) {\n if (this.heatmapDuration) {\n this.max = Math.max(this.heatmapDuration[key].averageDurationInMilliseconds, this.max);\n } else if (this.heatmapCount) {\n this.max = Math.max(\n this.heatmapCount[key].totalCount + this.heatmapCount[key].count,\n this.max\n );\n }\n }\n\n addCounterActiveOverlays(key: any, inputData: any) {\n const overlays = this.bpmnJS.get('overlays');\n overlays.add(key, {\n position: {\n bottom: -10,\n left: 0,\n },\n show: {\n minZoom: 0,\n maxZoom: 5.0,\n },\n html: `<span class=\"badge badge-pill badge-primary\">${inputData[key].count}</span>`,\n });\n }\n\n showHeatmap() {\n this.heatMapInstance = heatmap.create({\n radius: 54,\n blur: 0.7,\n maxOpacity: 0.4,\n minOpacity: 0,\n container: this.el.nativeElement,\n });\n this.heatMapInstance.setData({\n min: this.min,\n max: this.max,\n data: this.heatPoints.data,\n });\n }\n\n clearHeatmap() {\n this.heatMapInstance.setData({data: []});\n }\n\n toggleHeatmap() {\n this.heatmapMode = !this.heatmapMode;\n if (this.heatmapMode) {\n this.showHeatmap();\n } else {\n this.clearHeatmap();\n }\n }\n\n ngOnDestroy(): void {\n this.bpmnJS.destroy();\n }\n}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {BpmnJsDiagramComponent} from './bpmn-js-diagram.component';\n\n@NgModule({\n declarations: [BpmnJsDiagramComponent],\n imports: [CommonModule],\n exports: [BpmnJsDiagramComponent],\n})\nexport class BpmnJsDiagramModule {}\n","/*\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\nimport {Component, Input} from '@angular/core';\nimport {TimelineItem} from '../../models';\n\n@Component({\n selector: 'valtimo-timeline',\n templateUrl: './timeline.component.html',\n styleUrls: ['./timeline.component.css'],\n})\nexport class TimelineComponent {\n @Input() items: Array<TimelineItem>;\n}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TimelineComponent} from './timeline.component';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@NgModule({\n declarations: [TimelineComponent],\n imports: [CommonModule, TranslateModule],\n exports: [TimelineComponent],\n})\nexport class TimelineModule {}\n","/*\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\nimport {NgModule} from '@angular/core';\n\n@NgModule()\nexport class ComponentsModule {}\n","/*\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\nimport {Component, OnDestroy, OnInit} from '@angular/core';\n\ndeclare var $;\n\n@Component({\n selector: 'valtimo-filter-sidebar',\n templateUrl: './filter-sidebar.component.html',\n styleUrls: ['./filter-sidebar.component.css'],\n})\nexport class FilterSidebarComponent implements OnInit, OnDestroy {\n public filterSidebar: string;\n\n constructor() {\n this.filterSidebar = localStorage.getItem('filterSidebar') || 'show';\n }\n\n ngOnInit() {\n if (this.filterSidebar === 'show') {\n localStorage.setItem('filterSidebar', 'show');\n $('.be-content').addClass('be-aside');\n }\n $('[data-toggle=\"tooltip\"]').tooltip();\n }\n\n ngOnDestroy() {\n $('.be-content').removeClass('be-aside');\n }\n\n toggleFilterSidebar() {\n const beContent = $('.be-content');\n beContent.toggleClass('be-aside');\n this.filterSidebar = beContent.hasClass('be-aside') ? 'show' : 'hide';\n localStorage.setItem('filterSidebar', this.filterSidebar);\n }\n}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FilterSidebarComponent} from './filter-sidebar.component';\n\n@NgModule({\n declarations: [FilterSidebarComponent],\n imports: [CommonModule],\n exports: [FilterSidebarComponent],\n})\nexport class FilterSidebarModule {}\n","/*\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\nimport {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\nimport {S3Service, S3Resource} from '@valtimo/resource';\n\n@Component({\n selector: 'valtimo-uploader',\n templateUrl: './uploader.component.html',\n styleUrls: ['./uploader.component.css'],\n})\nexport class UploaderComponent implements OnInit {\n public resources: any = [];\n @Output() resourcesChanged: EventEmitter<any> = new EventEmitter();\n @Output() resourceRegistered: EventEmitter<S3Resource> = new EventEmitter();\n @Input() showFileList = true;\n\n constructor(private s3Service: S3Service) {}\n\n ngOnInit() {}\n\n onFileFieldChange(files) {\n for (const file of files) {\n this.uploadFile(file);\n }\n }\n\n uploadFile(file: File) {\n this.s3Service.getPreSignedUrl(file.name).subscribe(value => {\n const preSignedUrl: URL = new URL(value);\n this.s3Service.upload(preSignedUrl, file).subscribe(result => {\n const s3ResourceDTO = new S3Resource(file, preSignedUrl);\n this.s3Service.registerResource(s3ResourceDTO).subscribe(resource => {\n this.resources.push(resource);\n this.resourceRegistered.emit(resource);\n this.resourcesChanged.emit(this.resources);\n });\n });\n });\n }\n\n deleteResource(resource) {\n this.s3Service.delete(resource.id).subscribe(result => {\n const index = this.resources.findIndex(res => res.id === resource.id);\n this.resources.splice(index, 1);\n this.resourcesChanged.emit(this.resources);\n });\n }\n}\n","/*\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\nimport {Directive, EventEmitter, HostListener, Output} from '@angular/core';\n\n@Directive({\n selector: '[valtimoUploaderDragDrop]',\n})\nexport class UploaderDragDropDirective {\n @Output() fileDropped = new EventEmitter<any>();\n\n @HostListener('dragover', ['$event']) onDragOver(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n }\n\n @HostListener('dragleave', ['$event'])\n public onDragLeave(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n }\n\n @HostListener('drop', ['$event'])\n public ondrop(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n const files = evt.dataTransfer.files;\n if (files.length > 0) {\n this.fileDropped.emit(files);\n }\n }\n}\n","/*\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\nimport {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n name: 'filesize',\n})\nexport class FileSizePipe implements PipeTransform {\n private units = ['bytes', 'KB', 'MB', 'GB', 'TB', 'PB'];\n\n transform(bytes: number = 0, precision: number = 2): string {\n if (isNaN(parseFloat(String(bytes))) || !isFinite(bytes)) {\n return '?';\n }\n\n let unit = 0;\n\n while (bytes >= 1024) {\n bytes /= 1024;\n unit++;\n }\n\n return bytes.toFixed(+precision) + ' ' + this.units[unit];\n }\n}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FileSizePipe} from './file-size.pipe';\n\n@NgModule({\n declarations: [FileSizePipe],\n imports: [CommonModule],\n exports: [FileSizePipe],\n})\nexport class FileSizeModule {}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {UploaderComponent} from './uploader.component';\nimport {UploaderDragDropDirective} from './uploader-drag-drop.directive';\nimport {FileSizeModule} from '../file-size/file-size.module';\n\n@NgModule({\n declarations: [UploaderComponent, UploaderDragDropDirective],\n imports: [CommonModule, FileSizeModule],\n exports: [UploaderComponent, UploaderDragDropDirective],\n})\nexport class UploaderModule {}\n","/*\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\nimport {EventEmitter, Injectable} from '@angular/core';\nimport {NavigationStart, Router} from '@angular/router';\nimport {Observable, Subject} from 'rxjs';\nimport {Alert, AlertType} from '../../models';\n\n@Injectable({providedIn: 'root'})\nexport class AlertService {\n public confirmed: EventEmitter<any> = new EventEmitter();\n private subject = new Subject<Alert>();\n\n constructor(private router: Router) {\n // clear alert messages on route change unless 'keepAfterRouteChange' flag is true\n this.router.events.subscribe(event => {\n if (event instanceof NavigationStart) {\n // clear alert messages\n this.clear();\n }\n });\n }\n\n // enable subscribing to alerts observable\n onAlert(): Observable<Alert> {\n return this.subject.asObservable();\n }\n\n // convenience methods\n success(message: string, confirmations?: any, iconClass?: string) {\n this.alert(new Alert({message, type: AlertType.Success, confirmations, iconClass}));\n }\n\n error(message: string, confirmations?: any, iconClass?: string) {\n this.alert(new Alert({message, type: AlertType.Error, confirmations, iconClass}));\n }\n\n info(message: string, confirmations?: any, iconClass?: string) {\n this.alert(new Alert({message, type: AlertType.Info, confirmations, iconClass}));\n }\n\n warning(message: string, confirmations?: any, iconClass?: string) {\n this.alert(new Alert({message, type: AlertType.Warning, confirmations, iconClass}));\n }\n\n notification(message: string, confirmations?: any, iconClass?: string) {\n this.alert(new Alert({message, type: AlertType.Notification, confirmations, iconClass}));\n }\n\n modalNotification(message: string, confirmations?: any, iconClass?: string) {\n this.alert(new Alert({message, type: AlertType.ModalNotification, confirmations, iconClass}));\n }\n\n // main alert method\n alert(alert: Alert) {\n this.subject.next(alert);\n }\n\n // clear alerts\n clear() {\n this.subject.next(new Alert({}));\n }\n\n // emit confirm\n emitAlertConfirmEvent(alert: Alert) {\n this.confirmed.emit(alert);\n }\n\n getAlertConfirmChangeEmitter() {\n return this.confirmed;\n }\n}\n","/*\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\nimport {AfterContentInit, Component, OnDestroy, OnInit} from '@angular/core';\nimport {Subscription} from 'rxjs';\nimport {Alert, AlertType} from '../../models';\nimport {AlertService} from './alert.service';\n\ndeclare var $;\n\n@Component({\n selector: 'valtimo-alert',\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.css'],\n})\nexport class AlertComponent implements OnInit, AfterContentInit, OnDestroy {\n alerts: Alert[] = [];\n subscription: Subscription;\n autoCloseInMS: number;\n\n constructor(private alertService: AlertService) {\n this.autoCloseInMS = 5000;\n }\n\n ngOnInit() {}\n\n ngAfterContentInit() {\n this.subscription = this.alertService.onAlert().subscribe(alert => {\n if (!alert.message) {\n // clear alerts when an empty alert is received\n this.alerts = [];\n return;\n }\n\n // set empty array when an empty alert confirmations is received\n if (!alert.confirmations) {\n alert.confirmations = [];\n }\n\n // add alert to array if not exist\n const alertExist = this.alerts.filter(x => x.message === alert.message);\n if (alertExist.length === 0) {\n this.alerts.push(alert);\n }\n\n if (this.inModal(alert)) {\n setTimeout(() => {\n this.openModal();\n }, 300);\n }\n\n // auto close except alert confirmations not empty\n if (this.autoCloseInMS > 0 && alert.confirmations.length === 0) {\n setTimeout(() => {\n this.removeAlert(alert);\n }, this.autoCloseInMS);\n }\n });\n }\n\n closeModal() {\n $('#modalNotification').modal('hide');\n }\n\n openModal() {\n $('#modalNotification').modal('show');\n }\n\n alertConfirm(alert: Alert, confirm: any) {\n alert.confirm = confirm;\n this.alertService.emitAlertConfirmEvent(alert);\n this.removeAlert(alert);\n }\n\n ngOnDestroy() {\n // unsubscribe to avoid memory leaks\n this.subscription.unsubscribe();\n }\n\n removeAlert(alert: Alert) {\n if (this.inModal(alert)) {\n this.closeModal();\n }\n // remove specified alert from array\n this.alerts = this.alerts.filter(x => x.message !== alert.message);\n }\n\n inModal(alert: Alert) {\n if (!alert) {\n return;\n }\n\n // return true based on AlertType.ModalNotification\n switch (alert.type) {\n case AlertType.ModalNotification:\n return true;\n default:\n return false;\n }\n }\n\n cssClass(alert: Alert) {\n if (!alert) {\n return;\n }\n\n // return css class based on alert type\n switch (alert.type) {\n case AlertType.Success:\n return 'alert alert-success';\n case AlertType.Error:\n return 'alert alert-danger';\n case AlertType.Info:\n return 'alert alert-info';\n case AlertType.Warning:\n return 'alert alert-warning';\n case AlertType.Notification:\n return 'alert alert-light';\n case AlertType.ModalNotification:\n return 'alert alert-light';\n }\n }\n\n cssIconClass(alert: Alert) {\n if (!alert) {\n return;\n }\n\n // return css class based on alert type\n switch (alert.type) {\n case AlertType.Success:\n return 'mdi mdi-check';\n case AlertType.Error:\n return 'mdi mdi-close-circle-o';\n case AlertType.Info:\n return 'mdi mdi-info-outline';\n case AlertType.Warning:\n return 'mdi mdi-alert-triangle';\n case AlertType.Notification:\n return 'mdi mdi-notifications';\n case AlertType.ModalNotification:\n return 'mdi mdi-notifications';\n }\n }\n}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {AlertComponent} from './alert.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [AlertComponent],\n exports: [AlertComponent],\n})\nexport class AlertModule {}\n","/*\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\nimport {Component, Input, OnInit} from '@angular/core';\n\n@Component({\n selector: 'valtimo-data-list',\n templateUrl: './data-list.component.html',\n styleUrls: ['./data-list.component.css'],\n})\nexport class DataListComponent implements OnInit {\n @Input() collection?: Array<any>;\n @Input() object?: any;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {DataListComponent} from './data-list.component';\n\n@NgModule({\n declarations: [DataListComponent],\n imports: [CommonModule],\n exports: [DataListComponent],\n})\nexport class DataListModule {}\n","import {Injectable} from '@angular/core';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {FormioComponent} from 'angular-formio';\n\n@Injectable()\nexport class FormIoStateService {\n private _documentDefinitionName$ = new BehaviorSubject<string>(undefined);\n\n private _currentForm$ = new BehaviorSubject<FormioComponent>(undefined);\n\n public get documentDefinitionName$(): Observable<string> {\n return this._documentDefinitionName$.asObservable();\n }\n\n public setDocumentDefinitionName(documentDefinitionName: string) {\n this._documentDefinitionName$.next(documentDefinitionName);\n }\n\n public get currentForm$(): Observable<FormioComponent> {\n return this._currentForm$.asObservable();\n }\n\n public set currentForm(form: FormioComponent) {\n this._currentForm$.next(form);\n }\n}\n","/*\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\nimport {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport {FormioSubmission, ValtimoFormioOptions} from '../../models';\nimport {UserProviderService} from '@valtimo/security';\nimport {Formio, FormioComponent as FormIoSourceComponent, FormioForm} from 'angular-formio';\nimport {FormioRefreshValue} from 'angular-formio/formio.common';\nimport jwt_decode from 'jwt-decode';\nimport {NGXLogger} from 'ngx-logger';\nimport {BehaviorSubject, from, Subject, Subscription, timer} from 'rxjs';\nimport {switchMap, take} from 'rxjs/operators';\nimport {FormIoStateService} from './services/form-io-state.service';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\n\n@Component({\n selector: 'valtimo-form-io',\n templateUrl: './form-io.component.html',\n styleUrls: ['./form-io.component.css'],\n})\nexport class FormioComponent implements OnInit, OnChanges, OnDestroy {\n @Input() form: any;\n @Input() options: ValtimoFormioOptions;\n @Input() submission?: object | {} = {};\n @Input() formRefresh$!: Subject<FormioRefreshValue>;\n @Output() submit: EventEmitter<any> = new EventEmitter();\n @Output() change: EventEmitter<any> = new EventEmitter();\n refreshForm: EventEmitter<FormioRefreshValue> = new EventEmitter();\n formDefinition: FormioForm;\n public errors: string[] = [];\n\n private tokenRefreshTimerSubscription: Subscription;\n private formRefreshSubscription: Subscription;\n\n readonly currentLanguage$ = new BehaviorSubject<string>(this.translateService.currentLang);\n private languageSubscription!: Subscription;\n\n constructor(\n private userProviderService: UserProviderService,\n private logger: NGXLogger,\n private readonly stateService: FormIoStateService,\n private readonly route: ActivatedRoute,\n private readonly translateService: TranslateService\n ) {}\n\n ngOnInit() {\n const documentDefinitionName = this.route.snapshot.paramMap.get('documentDefinitionName');\n const formDefinition = this.form;\n\n this.formDefinition = formDefinition;\n this.errors = [];\n\n if (this.formHasLegacyUpload(formDefinition)) {\n this.setInitialToken();\n }\n\n if (documentDefinitionName) {\n this.stateService.setDocumentDefinitionName(documentDefinitionName);\n }\n\n this.subscribeFormRefresh();\n this.openLanguageSubscription();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const currentForm = changes.form.currentValue;\n this.formDefinition = currentForm;\n this.reloadForm();\n\n if (this.formHasLegacyUpload(currentForm)) {\n this.setInitialToken();\n }\n\n if (changes.formDefinitionRefresh$) {\n this.unsubscribeFormRefresh();\n this.subscribeFormRefresh();\n }\n }\n\n ngOnDestroy(): void {\n this.unsubscribeFormRefresh();\n\n this.tokenRefreshTimerSubscription?.unsubscribe();\n this.languageSubscription?.unsubscribe();\n }\n\n reloadForm() {\n this.refreshForm.emit({\n form: this.formDefinition,\n });\n }\n\n showErrors(errors: string[]) {\n this.errors = errors;\n }\n\n onSubmit(submission: FormioSubmission) {\n this.errors = [];\n this.submit.emit(submission);\n }\n\n formReady(form: FormIoSourceComponent): void {\n this.reloadForm();\n this.stateService.currentForm = form;\n }\n\n onChange(object: any): void {\n this.change.emit(object);\n }\n\n private formHasLegacyUpload(formDefinition: any): boolean {\n const stringifiedFormDefinition = JSON.stringify(formDefinition);\n const legacyUploadString = '\"type\":\"file\"';\n\n return stringifiedFormDefinition.includes(legacyUploadString);\n }\n\n private setInitialToken(): void {\n this.userProviderService.getToken().then((token: string) => {\n this.setToken(token);\n });\n }\n\n private setToken(token: string): void {\n Formio.setToken(token);\n this.setTimerForTokenRefresh(token);\n\n this.logger.debug('New token set for form.io.');\n }\n\n private setTimerForTokenRefresh(token: string): void {\n const tokenExp = (jwt_decode(token) as any).exp * 1000;\n const expiryTime = tokenExp - Date.now() - 1000;\n this.tokenRefreshTimerSubscription = timer(expiryTime).subscribe(() => {\n this.refreshToken();\n });\n\n this.logger.debug(`Timer for form.io token refresh set for: ${expiryTime}ms.`);\n }\n\n private refreshToken(): void {\n from(this.userProviderService.updateToken(-1))\n .pipe(\n switchMap(() => this.userProviderService.getToken()),\n take(1)\n )\n .subscribe(token => {\n this.setToken(token);\n });\n }\n\n private subscribeFormRefresh(): void {\n if (this.formRefresh$) {\n this.formRefreshSubscription = this.formRefresh$.subscribe(refreshValue => {\n if (refreshValue) {\n this.refreshForm.emit(refreshValue);\n }\n });\n }\n }\n\n private unsubscribeFormRefresh(): void {\n if (this.formRefreshSubscription) {\n this.formRefreshSubscription.unsubscribe();\n }\n }\n\n private openLanguageSubscription(): void {\n this.languageSubscription = this.translateService.stream('key').subscribe(() => {\n this.currentLanguage$.next(this.translateService.currentLang);\n });\n }\n}\n","/*\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\nimport {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\n\n@Component({\n selector: 'valtimo-form-io-builder',\n templateUrl: './form-io-builder.component.html',\n styleUrls: ['./form-io-builder.component.css'],\n})\nexport class FormioBuilderComponent implements OnInit {\n @Input() form: any;\n @Output() change: EventEmitter<any> = new EventEmitter();\n\n constructor() {}\n\n ngOnInit() {}\n\n onChange(event) {\n this.change.emit(event);\n }\n}\n","/*\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\nexport const AppConfig = {\n appUrl: 'http://localhost:4200',\n apiUrl: 'http://localhost:4200',\n icons: 'fontawesome',\n formOnly: false,\n};\n","import {Injectable} from '@angular/core';\nimport {FormIoStateService} from './form-io-state.service';\nimport {take} from 'rxjs/operators';\n\n@Injectable()\nexport class FormIoDomService {\n constructor(private readonly stateService: FormIoStateService) {}\n\n toggleSubmitButton(disabled: boolean): void {\n this.stateService.currentForm$.pipe(take(1)).subscribe(form => {\n const button = form.formioElement.nativeElement\n .getElementsByClassName('formio-component-submit')[0]\n .getElementsByClassName('btn-primary')[0] as HTMLInputElement;\n\n button.disabled = disabled;\n });\n }\n}\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {FormioCustomComponent} from 'angular-formio';\nimport {BehaviorSubject} from 'rxjs';\nimport {ResourceDto, ResourceFile} from '@valtimo/resource';\nimport {FormIoStateService} from '../services/form-io-state.service';\nimport {take} from 'rxjs/operators';\nimport {FormIoDomService} from '../services/form-io-dom.service';\nimport {DownloadService, UploadProviderService} from '@valtimo/resource';\n\n@Component({\n selector: 'valtimo-formio-uploader',\n templateUrl: './form-io-uploader.component.html',\n styleUrls: ['./form-io-uploader.component.scss'],\n})\nexport class FormIoUploaderComponent implements FormioCustomComponent<Array<ResourceFile>> {\n @Input() disabled: boolean;\n @Input() title: string;\n @Input() hideTitle: boolean;\n @Input() subtitle: string;\n @Input() maxFileSize: number;\n @Input() hideMaxFileSize: boolean;\n @Input() camera: boolean;\n @Output() valueChange = new EventEmitter<Array<ResourceFile>>();\n\n readonly uploading$ = new BehaviorSubject<boolean>(false);\n\n constructor(\n private readonly uploadProviderService: UploadProviderService,\n private readonly stateService: FormIoStateService,\n private readonly domService: FormIoDomService,\n private readonly downloadService: DownloadService\n ) {}\n\n _value: Array<ResourceFile> = [];\n\n public get value(): Array<ResourceFile> {\n return this._value;\n }\n\n @Input()\n public set value(value: Array<ResourceFile>) {\n if (Array.isArray(value)) {\n this._value = value;\n }\n }\n\n downloadFile(resourceFile: ResourceFile) {\n this.uploadProviderService\n .getResource(resourceFile.data.resourceId)\n .subscribe((resource: ResourceDto) => {\n this.downloadService.downloadFile(resource.url, resource.resource.name);\n });\n }\n\n fileSelected(file: File) {\n this.domService.toggleSubmitButton(true);\n this.uploading$.next(true);\n this.stateService.documentDefinitionName$.pipe(take(1)).subscribe(name => {\n this.uploadProviderService.uploadFile(file, name).subscribe(result => {\n this.domService.toggleSubmitButton(false);\n this.uploading$.next(false);\n this._value.push(result);\n this.valueChange.emit(this._value);\n });\n });\n }\n\n deleteFile(resourceId: string): void {\n this.domService.toggleSubmitButton(true);\n this._value = this._value.filter((file: ResourceFile) =>\n file?.data ? file?.data?.resourceId !== resourceId : true\n );\n this.valueChange.emit(this._value);\n }\n}\n","/*\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\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {TranslateService} from '@ngx-translate/core';\nimport * as Dropzone from 'dropzone';\nimport {BehaviorSubject, combineLatest, Observable, Subject, Subscription} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\n@Component({\n selector: 'valtimo-dropzone',\n templateUrl: './dropzone.component.html',\n styleUrls: ['./dropzone.component.scss'],\n})\nexport class DropzoneComponent implements OnInit, AfterViewInit, OnDestroy {\n @ViewChild('dropzone') dropzoneRef: ElementRef<any>;\n\n @Input() title: string;\n @Input() hideTitle: boolean;\n @Input() subtitle: string;\n @Input() externalError$: BehaviorSubject<string> = new BehaviorSubject<string>('');\n @Input() maxFileSize = 5;\n @Input() showMaxFileSize = true;\n @Input() acceptedFiles = '.json';\n @Input() clear$: Subject<any> = new Subject();\n @Input() disabled: boolean;\n @Input() hideFilePreview: boolean;\n @Input() uploading: boolean;\n @Input() camera = false;\n\n @Output() fileSelected: EventEmitter<File> = new EventEmitter();\n\n private clearSubscription: Subscription;\n\n private dropzone: Dropzone;\n\n readonly file$ = new BehaviorSubject<File>(undefined);\n\n readonly showingCamera$ = new BehaviorSubject<boolean>(false);\n\n private readonly error$ = new BehaviorSubject<string>('');\n\n private readonly errorMessagesStrings: {[key: string]: string} = {\n tooBig: 'too big',\n wrongType: 'this type',\n };\n\n readonly errorMessage$: Observable<string> = combineLatest([\n this.error$,\n this.translateService.stream('dropzone.error.generic'),\n this.translateService.stream('dropzone.error.tooBig'),\n this.translateService.stream('dropzone.error.wrongType'),\n ]).pipe(\n map(([dropzoneError, generic, tooBig, wrongType]) => {\n const strings = this.errorMessagesStrings;\n\n if (dropzoneError) {\n if (dropzoneError.includes(strings.tooBig)) {\n return tooBig;\n } else if (dropzoneError.includes(strings.wrongType)) {\n return wrongType;\n } else {\n return generic;\n }\n } else {\n return '';\n }\n })\n );\n\n constructor(private readonly translateService: TranslateService) {}\n\n ngOnInit(): void {\n this.clearSubscription = this.clear$.subscribe(() => {\n this.clearFile();\n this.clearError();\n });\n }\n\n ngAfterViewInit() {\n this.initDropzone();\n }\n\n ngOnDestroy(): void {\n this.clearSubscription.unsubscribe();\n }\n\n showCamera(): void {\n this.showingCamera$.next(true);\n }\n\n webcamImageSaved(image: File): void {\n if (image) {\n this.setFile(image);\n }\n\n this.showingCamera$.next(false);\n }\n\n private initDropzone(): void {\n this.dropzone = new Dropzone(this.dropzoneRef.nativeElement, {\n url: '/',\n maxFilesize: this.maxFileSize,\n clickable: this.dropzoneRef.nativeElement,\n autoProcessQueue: false,\n createImageThumbnails: false,\n acceptedFiles: this.acceptedFiles,\n previewTemplate: `<p style='display:none'></p>`,\n accept: file => {\n this.dropzone.removeAllFiles();\n this.setFile(file);\n },\n });\n\n this.setDropzoneEvents();\n }\n\n private setDropzoneEvents(): void {\n this.dropzone.on('error', (file, message) => {\n this.clearFile();\n this.error$.next(message.toString());\n this.fileSelected.emit();\n });\n }\n\n private clearFile(): void {\n this.file$.next(undefined);\n }\n\n private clearError(): void {\n this.error$.next('');\n }\n\n private setFile(file: File): void {\n this.file$.next(file);\n this.clearError();\n this.fileSelected.emit(file);\n }\n}\n","/*\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\nimport {Component} from '@angular/core';\n\n@Component({\n selector: 'valtimo-progress-bar',\n templateUrl: './progress-bar.component.html',\n styleUrls: ['./progress-bar.component.scss'],\n})\nexport class ProgressBarComponent {}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ProgressBarComponent} from './progress-bar.component';\n\n@NgModule({\n declarations: [ProgressBarComponent],\n imports: [CommonModule],\n exports: [ProgressBarComponent],\n})\nexport class ProgressBarModule {}\n","/*\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\nimport {AfterViewInit, Component, EventEmitter, Output} from '@angular/core';\nimport {BehaviorSubject} from 'rxjs';\nimport {take} from 'rxjs/operators';\n\n@Component({\n selector: 'valtimo-webcam',\n templateUrl: './webcam.component.html',\n styleUrls: ['./webcam.component.scss'],\n})\nexport class WebcamComponent implements AfterViewInit {\n @Output() imageSaved = new EventEmitter<File>();\n\n readonly showing$ = new BehaviorSubject<boolean>(false);\n\n readonly stream$ = new BehaviorSubject<MediaStream>(undefined);\n\n readonly picture$ = new BehaviorSubject<{file: File; uri: string}>(undefined);\n\n ngAfterViewInit(): void {\n const video = this.getVideoElement();\n\n setTimeout(() => {\n this.toggleFade();\n });\n\n if (navigator.mediaDevices.getUserMedia) {\n navigator.mediaDevices.getUserMedia({video: true}).then(stream => {\n video.srcObject = stream;\n this.stream$.next(stream);\n });\n }\n }\n\n captureImage(): boolean {\n const video = this.getVideoElement();\n const canvas: HTMLCanvasElement = document.querySelector('#canvas');\n\n canvas.width = 640;\n canvas.height = 480;\n\n const ctx = canvas.getContext('2d');\n\n ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n\n const dataURI = canvas.toDataURL('image/jpeg');\n\n this.picture$.next({file: this.dataURItoFile(dataURI), uri: dataURI});\n\n return false;\n }\n\n clearImage(): boolean {\n this.picture$.next(undefined);\n\n return false;\n }\n\n close(emitImage: boolean = true): boolean {\n if (!emitImage) {\n this.clearImage();\n }\n\n this.toggleFade();\n this.emitOnTimeOut();\n\n return false;\n }\n\n private stopStream(): void {\n this.stream$.pipe(take(1)).subscribe(mediaStream => {\n if (mediaStream) {\n mediaStream.getTracks().forEach(stream => stream.stop());\n }\n });\n }\n\n private getVideoElement(): HTMLVideoElement {\n return document.querySelector('#videoElement');\n }\n\n private emitOnTimeOut(): void {\n setTimeout(() => {\n this.stopStream();\n this.imageSaved.emit(this.picture$.getValue()?.file);\n }, 250);\n }\n\n private toggleFade(): void {\n this.showing$.next(!this.showing$.getValue());\n }\n\n private dataURItoFile(dataURI): File {\n const binary = atob(dataURI.split(',')[1]);\n const array = [];\n\n for (let i = 0; i < binary.length; i++) {\n array.push(binary.charCodeAt(i));\n }\n\n const blob = new Blob([new Uint8Array(array)], {type: 'image/jpeg'});\n\n const imgFileName = `IMG_${new Date().toISOString().replace(/[-:.]/g, '')}.jpg`;\n\n return new File([blob], imgFileName);\n }\n}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {WebcamComponent} from './webcam.component';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@NgModule({\n declarations: [WebcamComponent],\n imports: [CommonModule, TranslateModule],\n exports: [WebcamComponent],\n})\nexport class WebcamModule {}\n","/*\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\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {DropzoneComponent} from './dropzone.component';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {FileSizeModule} from '../file-size/file-size.module';\nimport {ProgressBarModule} from '../progress-bar/progress-bar.module';\nimport {WebcamModule} from '../webcam/webcam.module';\n\n@NgModule({\n declarations: [DropzoneComponent],\n imports: [CommonModule, TranslateModule, FileSizeModule, ProgressBarModule, WebcamModule],\n exports: [DropzoneComponent],\n})\nexport class DropzoneModule {}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormioComponent} from './form-io.component';\nimport {FormioBuilderComponent} from './form-io-builder.component';\nimport {FormioAppConfig, FormioModule} from 'angular-formio';\nimport {AppConfig} from './formio-config';\nimport {FormIoUploaderComponent} from './form-io-uploader/form-io-uploader.component';\nimport {FormIoStateService} from './services/form-io-state.service';\nimport {DropzoneModule} from '../dropzone/dropzone.module';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {DocumentModule} from '@valtimo/document';\nimport {FormIoDomService} from './services/form-io-dom.service';\nimport {FileSizeModule} from '../file-size/file-size.module';\nimport {ResourceModule} from '@valtimo/resource';\nimport {RouterModule} from '@angular/router';\n\n@NgModule({\n imports: [\n CommonModule,\n FormioModule,\n DropzoneModule,\n TranslateModule,\n DocumentModule,\n FileSizeModule,\n ResourceModule,\n RouterModule,\n ],\n declarations: [FormioComponent, FormioBuilderComponent, FormIoUploaderComponent],\n exports: [FormioComponent, FormioBuilderComponent, FormIoUploaderComponent],\n providers: [\n FormIoStateService,\n FormIoDomService,\n {provide: FormioAppConfig, useValue: AppConfig},\n ],\n})\nexport class FormIoModule {}\n","/*\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\nimport {AfterViewInit, Component, Input, TemplateRef} from '@angular/core';\n\ndeclare var $;\n\n@Component({\n selector: 'valtimo-modal',\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.scss'],\n})\nexport class ModalComponent implements AfterViewInit {\n @Input() elementId: string;\n @Input() title = '';\n @Input() subtitle = '';\n @Input() templateBelowSubtitle: TemplateRef<any>;\n @Input() showFooter = false;\n\n constructor() {}\n\n ngAfterViewInit() {\n $(`#${this.elementId}`).modal({show: false});\n }\n\n show() {\n $(`#${this.elementId}`).modal('show');\n }\n\n hide() {\n $(`#${this.elementId}`).modal('hide');\n }\n}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ModalComponent} from './modal.component';\n\n@NgModule({\n declarations: [ModalComponent],\n imports: [CommonModule],\n exports: [ModalComponent],\n})\nexport class ModalModule {}\n","/*\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\nimport {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'valtimo-spinner',\n templateUrl: './spinner.component.html',\n styleUrls: ['./spinner.component.scss'],\n})\nexport class SpinnerComponent {\n @Input() useBootstrapSpinner = true;\n @Input() name: string;\n @Input() type = 'ball-clip-rotate';\n @Input() size = 'medium';\n @Input() color = 'currentColor';\n @Input() bdColor = 'rgba(0,0,0,0)';\n @Input() fullScreen = false;\n @Input() noMarginTop = false;\n}\n","/*\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\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {SpinnerComponent} from './spinner.component';\nimport {NgxSpinnerModule} from 'ngx-spinner';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@NgModule({\n declarations: [SpinnerComponent],\n exports: [SpinnerComponent],\n imports: [CommonModule, NgxSpinnerModule, TranslateModule],\n})\nexport class SpinnerModule {}\n","/*\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\nimport {\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n ViewChildren,\n} from '@angular/core';\nimport {FormControl} from '@angular/forms';\nimport {DropdownButtonStyle, DropdownItem} from '../../models';\nimport {BehaviorSubject, combineLatest, fromEvent, Subscription} from 'rxjs';\nimport {debounceTime, take} from 'rxjs/operators';\n\n@Component({\n selector: 'valtimo-searchable-dropdown',\n templateUrl: './searchable-dropdown.component.html',\n styleUrls: ['./searchable-dropdown.component.scss'],\n})\nexport class SearchableDropdownComponent implements OnInit, OnDestroy, OnChanges {\n @Input() style: DropdownButtonStyle;\n @Input() items: Array<DropdownItem>;\n @Input() buttonText: string;\n @Input() searchText: string;\n @Input() noResultsText: string;\n @Input() disabled: boolean;\n @Input() width = 250;\n\n @Output() itemSelected = new EventEmitter();\n\n @ViewChildren('button') buttons: QueryList<ElementRef>;\n\n private readonly searchId = 'search';\n\n readonly searchTerm = new FormControl('');\n\n readonly focusedItemId$ = new BehaviorSubject<string>(this.searchId);\n\n readonly open$ = new BehaviorSubject<boolean>(false);\n\n readonly filteredItems$ = new BehaviorSubject<Array<DropdownItem>>(undefined);\n\n private wasInside = false;\n\n private keySubscription: Subscription;\n\n private searchSubscription: Subscription;\n\n private readonly mouseOnList$ = new BehaviorSubject<boolean>(false);\n\n @HostListener('click')\n clickInside() {\n this.wasInside = true;\n }\n\n @HostListener('document:click')\n clickout() {\n if (!this.wasInside) {\n this.closeDropdown();\n }\n this.wasInside = false;\n }\n\n ngOnInit(): void {\n this.openKeysSubscription();\n this.openSearchSubscription();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const itemChanges = changes.items;\n const currenItems = itemChanges.currentValue;\n if (itemChanges && !itemChanges.previousValue && currenItems) {\n this.filteredItems$.next(currenItems);\n }\n }\n\n ngOnDestroy(): void {\n this.keySubscription.unsubscribe();\n this.searchSubscription.unsubscribe();\n }\n\n openDropdown(): void {\n this.open$.next(true);\n }\n\n hoverOverButton(id: string): void {\n this.focusedItemId$.next(id);\n }\n\n mouseEnterList(): void {\n this.mouseOnList$.next(true);\n }\n\n mouseLeaveList(): void {\n this.mouseOnList$.next(false);\n }\n\n resetFocus(): void {\n this.focusedItemId$.next(this.searchId);\n }\n\n submit(id: string): void {\n this.itemSelected.emit(id);\n }\n\n private closeDropdown(): void {\n this.searchTerm.setValue('');\n this.resetFocus();\n this.open$.next(false);\n }\n\n private openKeysSubscription(): void {\n this.keySubscription = fromEvent(document, 'keyup')\n .pipe(debounceTime(50))\n .subscribe((event: KeyboardEvent) => {\n combineLatest([this.mouseOnList$, this.filteredItems$, this.focusedItemId$])\n .pipe(take(1))\n .subscribe(([mouseOnList, items, focusedId]) => {\n const length = items.length;\n const focusedIndex = items.findIndex(item => item.id === focusedId);\n const code = event.code;\n const shiftKey = event.shiftKey;\n const down = 'ArrowDown';\n const tab = 'Tab';\n const up = 'ArrowUp';\n const enter = 'Enter';\n const escape = 'Escape';\n\n // close dropdown on pressing escape\n if (code === escape) {\n this.closeDropdown();\n }\n\n // submit item when focus is on an item in the list and enter is pressed\n if (code === enter && focusedId !== this.searchId) {\n this.submit(focusedId);\n }\n\n // only handle tab or arrow keypresses when items are shown and the mouse is not on the list\n if (length > 0 && !mouseOnList) {\n // handle moving down in the list with arrow down or tab\n if (code === down || (code === tab && !shiftKey)) {\n // move focus to first item in the list when focus is on search box\n if (focusedId === this.searchId) {\n this.focusedItemId$.next(items[0].id);\n this.scrollButtonIntoView(focusedId);\n // move focus to next item in the list if focus is not on last item\n } else if (focusedIndex + 1 < length) {\n this.focusedItemId$.next(items[focusedIndex + 1].id);\n this.scrollButtonIntoView(focusedId);\n }\n // handle moving up in the list with up arrow up or shift+tab\n } else if (\n (code === up || (code === tab && shiftKey)) &&\n focusedId !== this.searchId\n ) {\n // move to previous item if focus is not on the first item in the list\n if (focusedIndex > 0) {\n this.focusedItemId$.next(items[focusedIndex - 1].id);\n this.scrollButtonIntoView(focusedId);\n // move focus to search box if focus is on first item in the list\n } else {\n this.resetFocus();\n }\n }\n }\n });\n });\n }\n\n private openSearchSubscription(): void {\n this.searchSubscription = this.searchTerm.valueChanges.subscribe(searchTerm => {\n this.focusedItemId$.pipe(take(1)).subscribe(focusedItemId => {\n if (!searchTerm) {\n this.filteredItems$.next(this.items);\n } else {\n const filteredItems = this.items.filter(item =>\n item.text.toUpperCase().includes(searchTerm.toUpperCase())\n );\n\n this.filteredItems$.next(filteredItems);\n\n // move focus to search box if filtered list length is 0 or previously focused item is not in filtered list anymore\n if (\n filteredItems.length === 0 ||\n !filteredItems.some(item => item.id === focusedItemId)\n ) {\n this.resetFocus();\n }\n }\n\n // move scrolling button into view to end of queue, so that DOM can be updated first\n setTimeout(() => {\n this.scrollButtonIntoView(focusedItemId);\n });\n });\n });\n }\n\n private scrollButtonIntoView(id: string): void {\n this.filteredItems$.pipe(take(1)).subscribe(items => {\n const focusItemIndex = items.findIndex(item => item.id === id);\n const focusedButton = this.buttons.toArray()[focusItemIndex];\n\n if (focusedButton) {\n focusedButton.nativeElement.scrollIntoView({behavior: 'smooth', block: 'center'});\n }\n });\n }\n}\n","/*\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\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {SearchableDropdownComponent} from './searchable-dropdown.component';\n\n@NgModule({\n declarations: [SearchableDropdownComponent],\n imports: [CommonModule, ReactiveFormsModule],\n exports: [SearchableDropdownComponent],\n})\nexport class SearchableDropdownModule {}\n","export const formIoUploaderEditForm = () => ({\n components: [\n {key: 'type', type: 'hidden'},\n {\n type: 'textfield',\n input: true,\n key: 'label',\n label: 'Label',\n placeholder: 'Label',\n validate: {\n required: true,\n },\n },\n {\n type: 'textfield',\n input: true,\n key: 'key',\n label: 'Property Name',\n placeholder: 'Property Name',\n tooltip: 'The name of this field in the API endpoint.',\n validate: {\n required: true,\n },\n },\n {\n type: 'textfield',\n input: true,\n key: 'customOptions.title',\n label: 'Title',\n placeholder: 'Title',\n tooltip: 'Leave empty to use the default title',\n validate: {\n required: false,\n },\n },\n {\n type: 'checkbox',\n input: true,\n inputType: 'checkbox',\n key: 'customOptions.hideTitle',\n label: 'Hide title',\n validate: {\n required: false,\n },\n },\n {\n type: 'textfield',\n input: true,\n key: 'customOptions.subtitle',\n label: 'Subtitle',\n placeholder: 'Title',\n tooltip: 'Leave empty to hide subtitle',\n validate: {\n required: false,\n },\n },\n {\n type: 'number',\n input: true,\n key: 'customOptions.maxFileSize',\n label: 'Maximum file size',\n placeholder: 'Maximum file size',\n defaultValue: 5,\n validate: {\n required: true,\n },\n },\n {\n type: 'checkbox',\n input: true,\n inputType: 'checkbox',\n key: 'customOptions.hideMaxFileSize',\n label: 'Hide maximum file size',\n validate: {\n required: false,\n },\n },\n {\n type: 'checkbox',\n input: true,\n inputType: 'checkbox',\n key: 'customOptions.camera',\n label: 'Allow camera uploads',\n validate: {\n required: false,\n },\n },\n ],\n});\n","import {Injector} from '@angular/core';\nimport {\n createCustomFormioComponent,\n FormioCustomComponentInfo,\n registerCustomFormioComponentWithClass,\n} from 'angular-formio';\nimport {FormIoUploaderComponent} from './form-io-uploader.component';\nimport {formIoUploaderEditForm} from './form-io-uploader-edit-form';\n\nexport const customUploaderType = 'valtimo-file';\n\nconst COMPONENT_OPTIONS: FormioCustomComponentInfo = {\n type: customUploaderType,\n selector: 'valtimo-form-io-uploader',\n title: 'Valtimo File Upload',\n group: 'basic',\n icon: 'upload',\n // set empty value to force formio to accept arrays as valid input value for this field type\n emptyValue: [],\n editForm: formIoUploaderEditForm,\n};\n\nexport function registerFormioUploadComponent(injector: Injector) {\n const originalUploadComponent = createCustomFormioComponent(COMPONENT_OPTIONS);\n\n // override setValue function to allow for setting an array value\n class UploaderComponent extends originalUploadComponent {\n setValue(value): boolean {\n this._customAngularElement.value = value;\n return true;\n }\n }\n registerCustomFormioComponentWithClass(\n COMPONENT_OPTIONS,\n FormIoUploaderComponent,\n UploaderComponent,\n injector\n );\n}\n","/*\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\nimport {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {DropdownButtonStyle, DropdownItem} from '../../models';\n\n@Component({\n selector: 'valtimo-searchable-dropdown-select',\n templateUrl: './searchable-dropdown-select.component.html',\n styleUrls: ['./searchable-dropdown-select.component.scss'],\n})\nexport class SearchableDropdownSelectComponent {\n @Input() style: DropdownButtonStyle;\n @Input() items: Array<DropdownItem>;\n @Input() buttonText: string;\n @Input() searchText: string;\n @Input() noResultsText: string;\n @Input() disabled: boolean;\n @Input() selectedText: string;\n @Input() selectedTextValue: string;\n @Input() clearSelectionButtonTitle: string;\n @Input() hasSelection: boolean;\n @Input() width = 250;\n\n @Output() itemSelected = new EventEmitter();\n @Output() clearSelection = new EventEmitter();\n\n onSelect(id: string): void {\n this.itemSelected.emit(id);\n }\n\n onClearSelection(): void {\n this.clearSelection.emit();\n }\n}\n","/*\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\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {SearchableDropdownSelectComponent} from './searchable-dropdown-select.component';\nimport {SearchableDropdownModule} from '../searchable-dropdown/searchable-dropdown.module';\n\n@NgModule({\n declarations: [SearchableDropdownSelectComponent],\n imports: [CommonModule, ReactiveFormsModule, SearchableDropdownModule],\n exports: [SearchableDropdownSelectComponent],\n})\nexport class SearchableDropdownSelectModule {}\n","/*\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/*\n * Public API Surface of components\n */\n\nexport * from './lib/models';\n\nexport * from './lib/components/camunda/form/camunda-form.components';\nexport * from './lib/components/camunda/form/camunda-form.module';\n\nexport * from './lib/components/topbar/topbar.component';\nexport * from './lib/components/topbar/topbar.module';\n\nexport * from './lib/components/menu/menu.service';\nexport * from './lib/components/menu/menu-routing.module';\nexport * from './lib/components/menu/menu.module';\nexport * from './lib/components/menu/menu.init';\n\nexport * from './lib/components/right-sidebar/right-sidebar.component';\nexport * from './lib/components/right-sidebar/right-sidebar.module';\n\nexport * from './lib/components/left-sidebar/left-sidebar.component';\nexport * from './lib/components/left-sidebar/left-sidebar.module';\n\nexport * from './lib/components/list/list.component';\nexport * from './lib/components/list/ListFilterPipe.directive';\nexport * from './lib/components/list/list.module';\n\nexport * from './lib/components/page-header/page-header.component';\nexport * from './lib/components/page-header/page-header.module';\n\nexport * from './lib/components/page-title/page-title.component';\nexport * from './lib/components/page-title/page-title.module';\n\nexport * from './lib/components/breadcrumb-navigation/breadcrumb-navigation.component';\nexport * from './lib/components/breadcrumb-navigation/breadcrumb-navigation.module';\n\nexport * from './lib/components/breadcrumb-navigation/breadcrumb-navigation.component';\nexport * from './lib/components/breadcrumb-navigation/breadcrumb-navigation.module';\n\nexport * from './lib/components/widget/widget.component';\nexport * from './lib/components/widget/widget.module';\n\nexport * from './lib/components/field-auto-focus/field-auto-focus.directive';\nexport * from './lib/components/field-auto-focus/field-auto-focus.module';\n\nexport * from './lib/components/card/card.component';\nexport * from './lib/components/card/card.module';\n\nexport * from './lib/components/bpmn-js-diagram/bpmn-js-diagram.component';\nexport * from './lib/components/bpmn-js-diagram/bpmn-js-diagram.module';\n\nexport * from './lib/components/timeline/timeline.component';\nexport * from './lib/components/timeline/timeline.module';\n\nexport * from './lib/components/components.module';\n\nexport * from './lib/components/filter-sidebar/filter-sidebar.component';\nexport * from './lib/components/filter-sidebar/filter-sidebar.module';\n\nexport * from './lib/components/uploader/uploader.component';\nexport * from './lib/components/uploader/uploader-drag-drop.directive';\nexport * from './lib/components/uploader/uploader.module';\n\nexport * from './lib/components/file-size/file-size.module';\nexport * from './lib/components/file-size/file-size.pipe';\n\nexport * from './lib/components/alert/alert.component';\nexport * from './lib/components/alert/alert.service';\nexport * from './lib/components/alert/alert.module';\n\nexport * from './lib/components/data-list/data-list.component';\nexport * from './lib/components/data-list/data-list.module';\n\nexport * from './lib/components/view-content/view-content.service';\n\nexport * from './lib/components/form-io/form-io.component';\nexport * from './lib/components/form-io/form-io-builder.component';\nexport * from './lib/components/form-io/form-io.module';\n\nexport * from './lib/components/modal/modal.module';\nexport * from './lib/components/modal/modal.component';\n\nexport * from './lib/components/spinner/spinner.module';\n\nexport * from './lib/components/searchable-dropdown/searchable-dropdown.module';\nexport * from './lib/components/searchable-dropdown/searchable-dropdown.component';\n\nexport * from './lib/components/dropzone/dropzone.module';\nexport * from './lib/components/dropzone/dropzone.component';\n\nexport * from './lib/components/form-io/form-io-uploader/form-io-uploader.component';\nexport * from './lib/components/form-io/form-io-uploader/form-io-uploader.formio';\n\nexport * from './lib/components/webcam/webcam.module';\nexport * from './lib/components/webcam/webcam.component';\n\nexport * from './lib/components/progress-bar/progress-bar.module';\nexport * from './lib/components/progress-bar/progress-bar.component';\n\nexport * from './lib/components/searchable-dropdown-select/searchable-dropdown-select.module';\nexport * from './lib/components/searchable-dropdown-select/searchable-dropdown-select.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n\nexport {CamundaCustomFormComponent as ɵn} from './lib/components/camunda/form/custom/camunda-custom-form.component';\nexport {CamundaCustomFormModule as ɵm} from './lib/components/camunda/form/custom/camunda-custom-form.module';\nexport {CamundaGeneratedFormComponent as ɵl} from './lib/components/camunda/form/generated/camunda-generated-form.component';\nexport {CamundaGeneratedFormModule as ɵa} from './lib/components/camunda/form/generated/camunda-generated-form.module';\nexport {CamundaBooleanFormfieldComponent as ɵc} from './lib/components/camunda/form/generated/formfield/boolean/camunda-boolean-formfield.component';\nexport {CamundaFormfieldGeneratorDirective as ɵf} from './lib/components/camunda/form/generated/formfield/camunda-formfield-generator.directive';\nexport {CamundaFormfieldService as ɵe} from './lib/components/camunda/form/generated/formfield/camunda-formfield.service';\nexport {CamundaChoicefieldFormfieldComponent as ɵj} from './lib/components/camunda/form/generated/formfield/choicefield/camunda-choicefield-formfield.component';\nexport {CamundaDateFormfieldComponent as ɵd} from './lib/components/camunda/form/generated/formfield/date/camunda-date-formfield.component';\nexport {CamundaEnumFormfieldComponent as ɵh} from './lib/components/camunda/form/generated/formfield/enum/camunda-enum-formfield.component';\nexport {CamundaLongFormfieldComponent as ɵg} from './lib/components/camunda/form/generated/formfield/long/camunda-long-formfield.component';\nexport {CamundaStringFormfieldComponent as ɵb} from './lib/components/camunda/form/generated/formfield/string/camunda-string-formfield.component';\nexport {CamundaTextareaFormfieldComponent as ɵi} from './lib/components/camunda/form/generated/formfield/textarea/camunda-textarea-formfield.component';\nexport {CamundaFormfieldValidationComponent as ɵk} from './lib/components/camunda/form/generated/formfield/validation/camunda-formfield-validation.component';\nexport {AppConfig as ɵu} from './lib/components/form-io/formio-config';\nexport {FormIoDomService as ɵt} from './lib/components/form-io/services/form-io-dom.service';\nexport {FormIoStateService as ɵs} from './lib/components/form-io/services/form-io-state.service';\nexport {MenuItemTextComponent as ɵp} from './lib/components/menu/menu-item-text.component';\nexport {MenuComponent as ɵo} from './lib/components/menu/menu.component';\nexport {SubmenuItemTextComponent as ɵq} from './lib/components/menu/submenu-item-text.component';\nexport {SpinnerComponent as ɵv} from './lib/components/spinner/spinner.component';\nexport {VersionService as ɵr} from './lib/components/version/version.service';"],"names":["moment","heatmap.create"],"mappings":"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"}
|