@valtimo/components 4.15.2-next-main.15 → 4.15.3-next-main.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (202) hide show
  1. package/bundles/valtimo-components.umd.js +4731 -4795
  2. package/bundles/valtimo-components.umd.js.map +1 -1
  3. package/bundles/valtimo-components.umd.min.js +2 -2
  4. package/bundles/valtimo-components.umd.min.js.map +1 -1
  5. package/esm2015/lib/alert/alert.component.js +140 -142
  6. package/esm2015/lib/alert/alert.module.js +28 -28
  7. package/esm2015/lib/alert/alert.service.js +81 -81
  8. package/esm2015/lib/bpmn-js-diagram/bpmn-js-diagram.component.js +160 -160
  9. package/esm2015/lib/bpmn-js-diagram/bpmn-js-diagram.module.js +28 -30
  10. package/esm2015/lib/breadcrumb-navigation/breadcrumb-navigation.component.js +93 -93
  11. package/esm2015/lib/breadcrumb-navigation/breadcrumb-navigation.module.js +30 -34
  12. package/esm2015/lib/camunda/form/camunda-form.components.js +37 -37
  13. package/esm2015/lib/camunda/form/camunda-form.module.js +30 -38
  14. package/esm2015/lib/camunda/form/custom/camunda-custom-form.component.js +42 -42
  15. package/esm2015/lib/camunda/form/custom/camunda-custom-form.module.js +28 -34
  16. package/esm2015/lib/camunda/form/generated/camunda-generated-form.component.js +69 -69
  17. package/esm2015/lib/camunda/form/generated/camunda-generated-form.module.js +58 -63
  18. package/esm2015/lib/camunda/form/generated/formfield/boolean/camunda-boolean-formfield.component.js +27 -28
  19. package/esm2015/lib/camunda/form/generated/formfield/camunda-formfield-generator.directive.js +64 -64
  20. package/esm2015/lib/camunda/form/generated/formfield/camunda-formfield.service.js +66 -67
  21. package/esm2015/lib/camunda/form/generated/formfield/choicefield/camunda-choicefield-formfield.component.js +40 -38
  22. package/esm2015/lib/camunda/form/generated/formfield/date/camunda-date-formfield.component.js +66 -66
  23. package/esm2015/lib/camunda/form/generated/formfield/enum/camunda-enum-formfield.component.js +30 -31
  24. package/esm2015/lib/camunda/form/generated/formfield/formfield.model.js +16 -16
  25. package/esm2015/lib/camunda/form/generated/formfield/long/camunda-long-formfield.component.js +27 -28
  26. package/esm2015/lib/camunda/form/generated/formfield/string/camunda-string-formfield.component.js +27 -28
  27. package/esm2015/lib/camunda/form/generated/formfield/textarea/camunda-textarea-formfield.component.js +27 -28
  28. package/esm2015/lib/camunda/form/generated/formfield/validation/camunda-formfield-validation.component.js +35 -36
  29. package/esm2015/lib/camunda/form/generated/formfield/validation/date.validators.js +60 -60
  30. package/esm2015/lib/card/card.component.js +36 -37
  31. package/esm2015/lib/card/card.module.js +28 -30
  32. package/esm2015/lib/components.module.js +22 -22
  33. package/esm2015/lib/data-list/data-list.component.js +33 -34
  34. package/esm2015/lib/data-list/data-list.module.js +28 -30
  35. package/esm2015/lib/dropzone/dropzone.component.js +143 -143
  36. package/esm2015/lib/dropzone/dropzone.module.js +32 -32
  37. package/esm2015/lib/field-auto-focus/field-auto-focus.directive.js +35 -35
  38. package/esm2015/lib/field-auto-focus/field-auto-focus.module.js +28 -32
  39. package/esm2015/lib/file-size/file-size.module.js +28 -30
  40. package/esm2015/lib/file-size/file-size.pipe.js +38 -45
  41. package/esm2015/lib/filter-sidebar/filter-sidebar.component.js +46 -46
  42. package/esm2015/lib/filter-sidebar/filter-sidebar.module.js +28 -30
  43. package/esm2015/lib/form-io/form-io-builder.component.js +38 -39
  44. package/esm2015/lib/form-io/form-io-uploader/form-io-uploader-edit-form.js +90 -90
  45. package/esm2015/lib/form-io/form-io-uploader/form-io-uploader.component.js +74 -72
  46. package/esm2015/lib/form-io/form-io-uploader/form-io-uploader.formio.js +26 -26
  47. package/esm2015/lib/form-io/form-io.component.js +163 -158
  48. package/esm2015/lib/form-io/form-io.module.js +56 -56
  49. package/esm2015/lib/form-io/formio-config.js +22 -22
  50. package/esm2015/lib/form-io/services/form-io-dom.service.js +23 -23
  51. package/esm2015/lib/form-io/services/form-io-state.service.js +24 -24
  52. package/esm2015/lib/left-sidebar/left-sidebar.component.js +114 -114
  53. package/esm2015/lib/left-sidebar/left-sidebar.module.js +30 -34
  54. package/esm2015/lib/list/ListFilterPipe.directive.js +31 -35
  55. package/esm2015/lib/list/list.component.js +179 -177
  56. package/esm2015/lib/list/list.module.js +33 -33
  57. package/esm2015/lib/menu/menu-item-text.component.js +35 -33
  58. package/esm2015/lib/menu/menu-routing.module.js +27 -29
  59. package/esm2015/lib/menu/menu.component.js +65 -65
  60. package/esm2015/lib/menu/menu.init.js +34 -34
  61. package/esm2015/lib/menu/menu.module.js +34 -39
  62. package/esm2015/lib/menu/menu.service.js +126 -127
  63. package/esm2015/lib/menu/submenu-item-text.component.js +29 -29
  64. package/esm2015/lib/modal/modal.component.js +48 -48
  65. package/esm2015/lib/modal/modal.module.js +28 -28
  66. package/esm2015/lib/page-header/page-header.component.js +29 -29
  67. package/esm2015/lib/page-header/page-header.module.js +30 -34
  68. package/esm2015/lib/page-title/page-title.component.js +76 -76
  69. package/esm2015/lib/page-title/page-title.module.js +29 -32
  70. package/esm2015/lib/progress-bar/progress-bar.component.js +26 -26
  71. package/esm2015/lib/progress-bar/progress-bar.module.js +28 -30
  72. package/esm2015/lib/right-sidebar/right-sidebar.component.js +133 -131
  73. package/esm2015/lib/right-sidebar/right-sidebar.module.js +49 -49
  74. package/esm2015/lib/searchable-dropdown/searchable-dropdown.component.js +187 -185
  75. package/esm2015/lib/searchable-dropdown/searchable-dropdown.module.js +29 -29
  76. package/esm2015/lib/searchable-dropdown-select/searchable-dropdown-select.component.js +52 -52
  77. package/esm2015/lib/searchable-dropdown-select/searchable-dropdown-select.module.js +30 -30
  78. package/esm2015/lib/spinner/spinner.component.js +45 -45
  79. package/esm2015/lib/spinner/spinner.module.js +30 -36
  80. package/esm2015/lib/timeline/timeline.component.js +29 -29
  81. package/esm2015/lib/timeline/timeline.module.js +29 -32
  82. package/esm2015/lib/topbar/topbar.component.js +28 -29
  83. package/esm2015/lib/topbar/topbar.module.js +29 -32
  84. package/esm2015/lib/uploader/uploader-drag-drop.directive.js +49 -49
  85. package/esm2015/lib/uploader/uploader.component.js +69 -70
  86. package/esm2015/lib/uploader/uploader.module.js +30 -33
  87. package/esm2015/lib/version/version.service.js +38 -38
  88. package/esm2015/lib/view-content/type-converters/booleanTypeConverter.js +29 -29
  89. package/esm2015/lib/view-content/type-converters/dateTypeConverter.js +30 -30
  90. package/esm2015/lib/view-content/type-converters/enumTypeConverter.js +24 -24
  91. package/esm2015/lib/view-content/type-converters/relatedFilesTypeConverter.js +24 -24
  92. package/esm2015/lib/view-content/type-converters/stringReplaceUnderscoreTypeConverter.js +27 -27
  93. package/esm2015/lib/view-content/type-converters/stringTypeConverter.js +24 -24
  94. package/esm2015/lib/view-content/type-converters/type-converters.model.js +37 -37
  95. package/esm2015/lib/view-content/view-content.service.js +51 -51
  96. package/esm2015/lib/webcam/webcam.component.js +102 -103
  97. package/esm2015/lib/webcam/webcam.module.js +29 -32
  98. package/esm2015/lib/widget/widget.component.js +80 -80
  99. package/esm2015/lib/widget/widget.module.js +28 -30
  100. package/esm2015/public_api.js +84 -84
  101. package/esm2015/valtimo-components.js +27 -27
  102. package/fesm2015/valtimo-components.js +4221 -4309
  103. package/fesm2015/valtimo-components.js.map +1 -1
  104. package/lib/alert/alert.component.d.ts +21 -21
  105. package/lib/alert/alert.module.d.ts +2 -2
  106. package/lib/alert/alert.service.d.ts +21 -21
  107. package/lib/bpmn-js-diagram/bpmn-js-diagram.component.d.ts +27 -27
  108. package/lib/bpmn-js-diagram/bpmn-js-diagram.module.d.ts +2 -2
  109. package/lib/breadcrumb-navigation/breadcrumb-navigation.component.d.ts +14 -14
  110. package/lib/breadcrumb-navigation/breadcrumb-navigation.module.d.ts +2 -2
  111. package/lib/camunda/form/camunda-form.components.d.ts +9 -9
  112. package/lib/camunda/form/camunda-form.module.d.ts +2 -2
  113. package/lib/camunda/form/custom/camunda-custom-form.component.d.ts +8 -8
  114. package/lib/camunda/form/custom/camunda-custom-form.module.d.ts +2 -2
  115. package/lib/camunda/form/generated/camunda-generated-form.component.d.ts +19 -19
  116. package/lib/camunda/form/generated/camunda-generated-form.module.d.ts +2 -2
  117. package/lib/camunda/form/generated/formfield/boolean/camunda-boolean-formfield.component.d.ts +7 -7
  118. package/lib/camunda/form/generated/formfield/camunda-formfield-generator.directive.d.ts +13 -13
  119. package/lib/camunda/form/generated/formfield/camunda-formfield.service.d.ts +7 -7
  120. package/lib/camunda/form/generated/formfield/choicefield/camunda-choicefield-formfield.component.d.ts +12 -12
  121. package/lib/camunda/form/generated/formfield/date/camunda-date-formfield.component.d.ts +14 -14
  122. package/lib/camunda/form/generated/formfield/enum/camunda-enum-formfield.component.d.ts +10 -10
  123. package/lib/camunda/form/generated/formfield/formfield.model.d.ts +20 -20
  124. package/lib/camunda/form/generated/formfield/long/camunda-long-formfield.component.d.ts +7 -7
  125. package/lib/camunda/form/generated/formfield/string/camunda-string-formfield.component.d.ts +7 -7
  126. package/lib/camunda/form/generated/formfield/textarea/camunda-textarea-formfield.component.d.ts +7 -7
  127. package/lib/camunda/form/generated/formfield/validation/camunda-formfield-validation.component.d.ts +10 -10
  128. package/lib/camunda/form/generated/formfield/validation/date.validators.d.ts +3 -3
  129. package/lib/card/card.component.d.ts +16 -16
  130. package/lib/card/card.module.d.ts +2 -2
  131. package/lib/components.module.d.ts +2 -2
  132. package/lib/data-list/data-list.component.d.ts +7 -7
  133. package/lib/data-list/data-list.module.d.ts +2 -2
  134. package/lib/dropzone/dropzone.component.d.ts +38 -38
  135. package/lib/dropzone/dropzone.module.d.ts +2 -2
  136. package/lib/field-auto-focus/field-auto-focus.directive.d.ts +6 -6
  137. package/lib/field-auto-focus/field-auto-focus.module.d.ts +2 -2
  138. package/lib/file-size/file-size.module.d.ts +2 -2
  139. package/lib/file-size/file-size.pipe.d.ts +5 -5
  140. package/lib/filter-sidebar/filter-sidebar.component.d.ts +8 -8
  141. package/lib/filter-sidebar/filter-sidebar.module.d.ts +2 -2
  142. package/lib/form-io/form-io-builder.component.d.ts +8 -8
  143. package/lib/form-io/form-io-uploader/form-io-uploader-edit-form.d.ts +61 -61
  144. package/lib/form-io/form-io-uploader/form-io-uploader.component.d.ts +29 -29
  145. package/lib/form-io/form-io-uploader/form-io-uploader.formio.d.ts +3 -3
  146. package/lib/form-io/form-io.component.d.ts +47 -44
  147. package/lib/form-io/form-io.module.d.ts +2 -2
  148. package/lib/form-io/formio-config.d.ts +6 -6
  149. package/lib/form-io/services/form-io-dom.service.d.ts +6 -6
  150. package/lib/form-io/services/form-io-state.service.d.ts +10 -10
  151. package/lib/left-sidebar/left-sidebar.component.d.ts +34 -34
  152. package/lib/left-sidebar/left-sidebar.module.d.ts +2 -2
  153. package/lib/list/ListFilterPipe.directive.d.ts +4 -4
  154. package/lib/list/list.component.d.ts +43 -43
  155. package/lib/list/list.module.d.ts +2 -2
  156. package/lib/menu/menu-item-text.component.d.ts +4 -4
  157. package/lib/menu/menu-routing.module.d.ts +2 -2
  158. package/lib/menu/menu.component.d.ts +18 -18
  159. package/lib/menu/menu.init.d.ts +3 -3
  160. package/lib/menu/menu.module.d.ts +2 -2
  161. package/lib/menu/menu.service.d.ts +23 -23
  162. package/lib/menu/submenu-item-text.component.d.ts +4 -4
  163. package/lib/modal/modal.component.d.ts +12 -12
  164. package/lib/modal/modal.module.d.ts +2 -2
  165. package/lib/page-header/page-header.component.d.ts +5 -5
  166. package/lib/page-header/page-header.module.d.ts +2 -2
  167. package/lib/page-title/page-title.component.d.ts +19 -19
  168. package/lib/page-title/page-title.module.d.ts +2 -2
  169. package/lib/progress-bar/progress-bar.component.d.ts +2 -2
  170. package/lib/progress-bar/progress-bar.module.d.ts +2 -2
  171. package/lib/right-sidebar/right-sidebar.component.d.ts +34 -34
  172. package/lib/right-sidebar/right-sidebar.module.d.ts +2 -2
  173. package/lib/searchable-dropdown/searchable-dropdown.component.d.ts +39 -39
  174. package/lib/searchable-dropdown/searchable-dropdown.module.d.ts +2 -2
  175. package/lib/searchable-dropdown-select/searchable-dropdown-select.component.d.ts +19 -19
  176. package/lib/searchable-dropdown-select/searchable-dropdown-select.module.d.ts +2 -2
  177. package/lib/spinner/spinner.component.d.ts +10 -10
  178. package/lib/spinner/spinner.module.d.ts +2 -2
  179. package/lib/timeline/timeline.component.d.ts +4 -4
  180. package/lib/timeline/timeline.module.d.ts +2 -2
  181. package/lib/topbar/topbar.component.d.ts +3 -3
  182. package/lib/topbar/topbar.module.d.ts +2 -2
  183. package/lib/uploader/uploader-drag-drop.directive.d.ts +7 -7
  184. package/lib/uploader/uploader.component.d.ts +15 -15
  185. package/lib/uploader/uploader.module.d.ts +2 -2
  186. package/lib/version/version.service.d.ts +8 -8
  187. package/lib/view-content/type-converters/booleanTypeConverter.d.ts +5 -5
  188. package/lib/view-content/type-converters/dateTypeConverter.d.ts +5 -5
  189. package/lib/view-content/type-converters/enumTypeConverter.d.ts +5 -5
  190. package/lib/view-content/type-converters/relatedFilesTypeConverter.d.ts +5 -5
  191. package/lib/view-content/type-converters/stringReplaceUnderscoreTypeConverter.d.ts +6 -6
  192. package/lib/view-content/type-converters/stringTypeConverter.d.ts +5 -5
  193. package/lib/view-content/type-converters/type-converters.model.d.ts +5 -5
  194. package/lib/view-content/view-content.service.d.ts +8 -8
  195. package/lib/webcam/webcam.component.d.ts +20 -20
  196. package/lib/webcam/webcam.module.d.ts +2 -2
  197. package/lib/widget/widget.component.d.ts +28 -28
  198. package/lib/widget/widget.module.d.ts +2 -2
  199. package/package.json +1 -1
  200. package/public_api.d.ts +65 -65
  201. package/valtimo-components.d.ts +26 -26
  202. package/valtimo-components.metadata.json +1 -1
@@ -1,142 +1,140 @@
1
- /*
2
- * Copyright 2015-2020 Ritense BV, the Netherlands.
3
- *
4
- * Licensed under EUPL, Version 1.2 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" basis,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { Component } from '@angular/core';
17
- import { AlertType } from '@valtimo/contract';
18
- import { AlertService } from './alert.service';
19
- export class AlertComponent {
20
- constructor(alertService) {
21
- this.alertService = alertService;
22
- this.alerts = [];
23
- this.autoCloseInMS = 5000;
24
- }
25
- ngOnInit() {
26
- }
27
- ngAfterContentInit() {
28
- this.subscription = this.alertService.onAlert()
29
- .subscribe(alert => {
30
- if (!alert.message) {
31
- // clear alerts when an empty alert is received
32
- this.alerts = [];
33
- return;
34
- }
35
- // set empty array when an empty alert confirmations is received
36
- if (!alert.confirmations) {
37
- alert.confirmations = [];
38
- }
39
- // add alert to array if not exist
40
- const alertExist = this.alerts.filter(x => x.message === alert.message);
41
- if (alertExist.length === 0) {
42
- this.alerts.push(alert);
43
- }
44
- if (this.inModal(alert)) {
45
- setTimeout(() => {
46
- this.openModal();
47
- }, 300);
48
- }
49
- // auto close except alert confirmations not empty
50
- if (this.autoCloseInMS > 0 && alert.confirmations.length === 0) {
51
- setTimeout(() => {
52
- this.removeAlert(alert);
53
- }, this.autoCloseInMS);
54
- }
55
- });
56
- }
57
- closeModal() {
58
- $('#modalNotification').modal('hide');
59
- }
60
- openModal() {
61
- $('#modalNotification').modal('show');
62
- }
63
- alertConfirm(alert, confirm) {
64
- alert.confirm = confirm;
65
- this.alertService.emitAlertConfirmEvent(alert);
66
- this.removeAlert(alert);
67
- }
68
- ngOnDestroy() {
69
- // unsubscribe to avoid memory leaks
70
- this.subscription.unsubscribe();
71
- }
72
- removeAlert(alert) {
73
- if (this.inModal(alert)) {
74
- this.closeModal();
75
- }
76
- // remove specified alert from array
77
- this.alerts = this.alerts.filter(x => x.message !== alert.message);
78
- }
79
- inModal(alert) {
80
- if (!alert) {
81
- return;
82
- }
83
- // return true based on AlertType.ModalNotification
84
- switch (alert.type) {
85
- case AlertType.ModalNotification:
86
- return true;
87
- default:
88
- return false;
89
- }
90
- }
91
- cssClass(alert) {
92
- if (!alert) {
93
- return;
94
- }
95
- // return css class based on alert type
96
- switch (alert.type) {
97
- case AlertType.Success:
98
- return 'alert alert-success';
99
- case AlertType.Error:
100
- return 'alert alert-danger';
101
- case AlertType.Info:
102
- return 'alert alert-info';
103
- case AlertType.Warning:
104
- return 'alert alert-warning';
105
- case AlertType.Notification:
106
- return 'alert alert-light';
107
- case AlertType.ModalNotification:
108
- return 'alert alert-light';
109
- }
110
- }
111
- cssIconClass(alert) {
112
- if (!alert) {
113
- return;
114
- }
115
- // return css class based on alert type
116
- switch (alert.type) {
117
- case AlertType.Success:
118
- return 'mdi mdi-check';
119
- case AlertType.Error:
120
- return 'mdi mdi-close-circle-o';
121
- case AlertType.Info:
122
- return 'mdi mdi-info-outline';
123
- case AlertType.Warning:
124
- return 'mdi mdi-alert-triangle';
125
- case AlertType.Notification:
126
- return 'mdi mdi-notifications';
127
- case AlertType.ModalNotification:
128
- return 'mdi mdi-notifications';
129
- }
130
- }
131
- }
132
- AlertComponent.decorators = [
133
- { type: Component, args: [{
134
- selector: 'valtimo-alert',
135
- template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div *ngFor=\"let alert of alerts\" class=\"{{cssClass(alert)}} rounded-0 m-0 alert-dismissable\">\n\n <div *ngIf=\"inModal(alert)\">\n <!-- Modal -->\n <div class=\"modal fade\" id=\"modalNotification\" tabindex=\"-1\" role=\"dialog\">\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-body p-0\">\n <button class=\"close\" type=\"button\" (click)=\"removeAlert(alert)\"><span class=\"mdi mdi-close\" aria-hidden=\"true\"></span></button>\n <div class=\"icon\"><span class=\"{{ alert.iconClass || cssIconClass(alert) }}\"></span></div>\n <div class=\"message\">\n <div [innerHTML]=\"alert.message\"></div>\n </div>\n </div>\n <div class=\"modal-footer pt-0\" *ngIf=\"alert.confirmations?.length\">\n <button class=\"{{ confirmation.class }} mr-2\"\n *ngFor=\"let confirmation of alert.confirmations\"\n (click)=\"alertConfirm(alert, confirmation.value)\">{{ confirmation.label }}</button>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"!inModal(alert)\" class=\"alert-block\">\n <div class=\"icon\"><span class=\"{{ alert.iconClass || cssIconClass(alert) }}\"></span></div>\n <div class=\"message\">\n <div [innerHTML]=\"alert.message\"></div>\n <div class=\"mt-3\" *ngIf=\"alert.confirmations?.length\">\n <button class=\"{{ confirmation.class }} mr-2\"\n *ngFor=\"let confirmation of alert.confirmations\"\n (click)=\"alertConfirm(alert, confirmation.value)\">{{ confirmation.label }}</button>\n </div>\n </div>\n <button class=\"close\" type=\"button\" (click)=\"removeAlert(alert)\"><span class=\"mdi mdi-close\" aria-hidden=\"true\"></span></button>\n </div>\n</div>\n",
136
- styles: [".alert-block{display:flex;flex-direction:row;justify-content:space-between}.alert-block .message{width:100%}.alert-block .icon{align-items:center;display:flex}.alert .message{font-size:1.1rem!important;line-height:1.5rem!important;padding:2rem 5rem 2rem 2rem!important}.alert .close{color:#fff!important;opacity:1!important;padding:2rem 2rem 0 0!important;right:0!important}.alert .icon{padding-left:2rem!important}.alert-warning{color:#404040!important}.alert-light .close,.alert-warning .close{color:#404040!important;opacity:1!important}"]
137
- },] }
138
- ];
139
- AlertComponent.ctorParameters = () => [
140
- { type: AlertService }
141
- ];
142
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy9saWIvYWxlcnQvYWxlcnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFtQixTQUFTLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBRTdFLE9BQU8sRUFBUSxTQUFTLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFTN0MsTUFBTSxPQUFPLGNBQWM7SUFLdkIsWUFDWSxZQUEwQjtRQUExQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUx0QyxXQUFNLEdBQVksRUFBRSxDQUFDO1FBT2pCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQzlCLENBQUM7SUFFRCxRQUFRO0lBQ1IsQ0FBQztJQUVELGtCQUFrQjtRQUNkLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUU7YUFDMUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBRWYsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUU7Z0JBQ2hCLCtDQUErQztnQkFDL0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7Z0JBQ2pCLE9BQU87YUFDVjtZQUVELGdFQUFnRTtZQUNoRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRTtnQkFDdEIsS0FBSyxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7YUFDNUI7WUFFRCxrQ0FBa0M7WUFDbEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FB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TztTQUNWO1FBRUQsdUNBQXVDO1FBQ3ZDLFFBQVEsS0FBSyxDQUFDLElBQUksRUFBRTtZQUNoQixLQUFLLFNBQVMsQ0FBQyxPQUFPO2dCQUNsQixPQUFPLGVBQWUsQ0FBQztZQUMzQixLQUFLLFNBQVMsQ0FBQyxLQUFLO2dCQUNoQixPQUFPLHdCQUF3QixDQUFDO1lBQ3BDLEtBQUssU0FBUyxDQUFDLElBQUk7Z0JBQ2YsT0FBTyxzQkFBc0IsQ0FBQztZQUNsQyxLQUFLLFNBQVMsQ0FBQyxPQUFPO2dCQUNsQixPQUFPLHdCQUF3QixDQUFDO1lBQ3BDLEtBQUssU0FBUyxDQUFDLFlBQVk7Z0JBQ3ZCLE9BQU8sdUJBQXVCLENBQUM7WUFDbkMsS0FBSyxTQUFTLENBQUMsaUJBQWlCO2dCQUM1QixPQUFPLHVCQUF1QixDQUFDO1NBQ3RDO0lBQ0wsQ0FBQzs7O1lBMUlKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsZUFBZTtnQkFDekIsOC9FQUFxQzs7YUFFeEM7OztZQVJPLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0FmdGVyQ29udGVudEluaXQsIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBbGVydCwgQWxlcnRUeXBlfSBmcm9tICdAdmFsdGltby9jb250cmFjdCc7XG5pbXBvcnQge0FsZXJ0U2VydmljZX0gZnJvbSAnLi9hbGVydC5zZXJ2aWNlJztcblxuZGVjbGFyZSB2YXIgJDtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd2YWx0aW1vLWFsZXJ0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYWxlcnQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2FsZXJ0LmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBBbGVydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgICBhbGVydHM6IEFsZXJ0W10gPSBbXTtcbiAgICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgICBhdXRvQ2xvc2VJbk1TOiBudW1iZXI7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLmF1dG9DbG9zZUluTVMgPSA1MDAwO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLmFsZXJ0U2VydmljZS5vbkFsZXJ0KClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoYWxlcnQgPT4ge1xuXG4gICAgICAgICAgICAgICAgaWYgKCFhbGVydC5tZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNsZWFyIGFsZXJ0cyB3aGVuIGFuIGVtcHR5IGFsZXJ0IGlzIHJlY2VpdmVkXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnRzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBzZXQgZW1wdHkgYXJyYXkgd2hlbiBhbiBlbXB0eSBhbGVydCBjb25maXJtYXRpb25zIGlzIHJlY2VpdmVkXG4gICAgICAgICAgICAgICAgaWYgKCFhbGVydC5jb25maXJtYXRpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIGFsZXJ0LmNvbmZpcm1hdGlvbnMgPSBbXTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBhZGQgYWxlcnQgdG8gYXJyYXkgaWYgbm90IGV4aXN0XG4gICAgICAgICAgICAgICAgY29uc3QgYWxlcnRFeGlzdCA9IHRoaXMuYWxlcnRzLmZpbHRlcih4ID0+IHgubWVzc2FnZSA9PT0gYWxlcnQubWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgaWYgKGFsZXJ0RXhpc3QubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnRzLnB1c2goYWxlcnQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmluTW9kYWwoYWxlcnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuTW9kYWwoKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgMzAwKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBhdXRvIGNsb3NlIGV4Y2VwdCBhbGVydCBjb25maXJtYXRpb25zIG5vdCBlbXB0eVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmF1dG9DbG9zZUluTVMgPiAwICYmIGFsZXJ0LmNvbmZpcm1hdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVBbGVydChhbGVydCk7XG4gICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuYXV0b0Nsb3NlSW5NUyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY2xvc2VNb2RhbCgpIHtcbiAgICAgICAgJCgnI21vZGFsTm90aWZpY2F0aW9uJykubW9kYWwoJ2hpZGUnKTtcbiAgICB9XG5cbiAgICBvcGVuTW9kYWwoKSB7XG4gICAgICAgICQoJyNtb2RhbE5vdGlmaWNhdGlvbicpLm1vZGFsKCdzaG93Jyk7XG4gICAgfVxuXG4gICAgYWxlcnRDb25maXJtKGFsZXJ0OiBBbGVydCwgY29uZmlybTogYW55KSB7XG4gICAgICAgIGFsZXJ0LmNvbmZpcm0gPSBjb25maXJtO1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lbWl0QWxlcnRDb25maXJtRXZlbnQoYWxlcnQpO1xuICAgICAgICB0aGlzLnJlbW92ZUFsZXJ0KGFsZXJ0KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgLy8gdW5zdWJzY3JpYmUgdG8gYXZvaWQgbWVtb3J5IGxlYWtzXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcmVtb3ZlQWxlcnQoYWxlcnQ6IEFsZXJ0KSB7XG4gICAgICAgIGlmICh0aGlzLmluTW9kYWwoYWxlcnQpKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlTW9kYWwoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyByZW1vdmUgc3BlY2lmaWVkIGFsZXJ0IGZyb20gYXJyYXlcbiAgICAgICAgdGhpcy5hbGVydHMgPSB0aGlzLmFsZXJ0cy5maWx0ZXIoeCA9PiB4Lm1lc3NhZ2UgIT09IGFsZXJ0Lm1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGluTW9kYWwoYWxlcnQ6IEFsZXJ0KSB7XG4gICAgICAgIGlmICghYWxlcnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHJldHVybiB0cnVlIGJhc2VkIG9uIEFsZXJ0VHlwZS5Nb2RhbE5vdGlmaWNhdGlvblxuICAgICAgICBzd2l0Y2ggKGFsZXJ0LnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgQWxlcnRUeXBlLk1vZGFsTm90aWZpY2F0aW9uOlxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjc3NDbGFzcyhhbGVydDogQWxlcnQpIHtcbiAgICAgICAgaWYgKCFhbGVydCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcmV0dXJuIGNzcyBjbGFzcyBiYXNlZCBvbiBhbGVydCB0eXBlXG4gICAgICAgIHN3aXRjaCAoYWxlcnQudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBBbGVydFR5cGUuU3VjY2VzczpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2FsZXJ0IGFsZXJ0LXN1Y2Nlc3MnO1xuICAgICAgICAgICAgY2FzZSBBbGVydFR5cGUuRXJyb3I6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdhbGVydCBhbGVydC1kYW5nZXInO1xuICAgICAgICAgICAgY2FzZSBBbGVydFR5cGUuSW5mbzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2FsZXJ0IGFsZXJ0LWluZm8nO1xuICAgICAgICAgICAgY2FzZSBBbGVydFR5cGUuV2FybmluZzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2FsZXJ0IGFsZXJ0LXdhcm5pbmcnO1xuICAgICAgICAgICAgY2FzZSBBbGVydFR5cGUuTm90aWZpY2F0aW9uOlxuICAgICAgICAgICAgICAgIHJldHVybiAnYWxlcnQgYWxlcnQtbGlnaHQnO1xuICAgICAgICAgICAgY2FzZSBBbGVydFR5cGUuTW9kYWxOb3RpZmljYXRpb246XG4gICAgICAgICAgICAgICAgcmV0dXJuICdhbGVydCBhbGVydC1saWdodCc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjc3NJY29uQ2xhc3MoYWxlcnQ6IEFsZXJ0KSB7XG4gICAgICAgIGlmICghYWxlcnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHJldHVybiBjc3MgY2xhc3MgYmFzZWQgb24gYWxlcnQgdHlwZVxuICAgICAgICBzd2l0Y2ggKGFsZXJ0LnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgQWxlcnRUeXBlLlN1Y2Nlc3M6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdtZGkgbWRpLWNoZWNrJztcbiAgICAgICAgICAgIGNhc2UgQWxlcnRUeXBlLkVycm9yOlxuICAgICAgICAgICAgICAgIHJldHVybiAnbWRpIG1kaS1jbG9zZS1jaXJjbGUtbyc7XG4gICAgICAgICAgICBjYXNlIEFsZXJ0VHlwZS5JbmZvOlxuICAgICAgICAgICAgICAgIHJldHVybiAnbWRpIG1kaS1pbmZvLW91dGxpbmUnO1xuICAgICAgICAgICAgY2FzZSBBbGVydFR5cGUuV2FybmluZzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ21kaSBtZGktYWxlcnQtdHJpYW5nbGUnO1xuICAgICAgICAgICAgY2FzZSBBbGVydFR5cGUuTm90aWZpY2F0aW9uOlxuICAgICAgICAgICAgICAgIHJldHVybiAnbWRpIG1kaS1ub3RpZmljYXRpb25zJztcbiAgICAgICAgICAgIGNhc2UgQWxlcnRUeXBlLk1vZGFsTm90aWZpY2F0aW9uOlxuICAgICAgICAgICAgICAgIHJldHVybiAnbWRpIG1kaS1ub3RpZmljYXRpb25zJztcbiAgICAgICAgfVxuICAgIH1cblxufVxuIl19
1
+ /*
2
+ * Copyright 2015-2020 Ritense BV, the Netherlands.
3
+ *
4
+ * Licensed under EUPL, Version 1.2 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" basis,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { Component } from '@angular/core';
17
+ import { AlertType } from '@valtimo/contract';
18
+ import { AlertService } from './alert.service';
19
+ export class AlertComponent {
20
+ constructor(alertService) {
21
+ this.alertService = alertService;
22
+ this.alerts = [];
23
+ this.autoCloseInMS = 5000;
24
+ }
25
+ ngOnInit() { }
26
+ ngAfterContentInit() {
27
+ this.subscription = this.alertService.onAlert().subscribe(alert => {
28
+ if (!alert.message) {
29
+ // clear alerts when an empty alert is received
30
+ this.alerts = [];
31
+ return;
32
+ }
33
+ // set empty array when an empty alert confirmations is received
34
+ if (!alert.confirmations) {
35
+ alert.confirmations = [];
36
+ }
37
+ // add alert to array if not exist
38
+ const alertExist = this.alerts.filter(x => x.message === alert.message);
39
+ if (alertExist.length === 0) {
40
+ this.alerts.push(alert);
41
+ }
42
+ if (this.inModal(alert)) {
43
+ setTimeout(() => {
44
+ this.openModal();
45
+ }, 300);
46
+ }
47
+ // auto close except alert confirmations not empty
48
+ if (this.autoCloseInMS > 0 && alert.confirmations.length === 0) {
49
+ setTimeout(() => {
50
+ this.removeAlert(alert);
51
+ }, this.autoCloseInMS);
52
+ }
53
+ });
54
+ }
55
+ closeModal() {
56
+ $('#modalNotification').modal('hide');
57
+ }
58
+ openModal() {
59
+ $('#modalNotification').modal('show');
60
+ }
61
+ alertConfirm(alert, confirm) {
62
+ alert.confirm = confirm;
63
+ this.alertService.emitAlertConfirmEvent(alert);
64
+ this.removeAlert(alert);
65
+ }
66
+ ngOnDestroy() {
67
+ // unsubscribe to avoid memory leaks
68
+ this.subscription.unsubscribe();
69
+ }
70
+ removeAlert(alert) {
71
+ if (this.inModal(alert)) {
72
+ this.closeModal();
73
+ }
74
+ // remove specified alert from array
75
+ this.alerts = this.alerts.filter(x => x.message !== alert.message);
76
+ }
77
+ inModal(alert) {
78
+ if (!alert) {
79
+ return;
80
+ }
81
+ // return true based on AlertType.ModalNotification
82
+ switch (alert.type) {
83
+ case AlertType.ModalNotification:
84
+ return true;
85
+ default:
86
+ return false;
87
+ }
88
+ }
89
+ cssClass(alert) {
90
+ if (!alert) {
91
+ return;
92
+ }
93
+ // return css class based on alert type
94
+ switch (alert.type) {
95
+ case AlertType.Success:
96
+ return 'alert alert-success';
97
+ case AlertType.Error:
98
+ return 'alert alert-danger';
99
+ case AlertType.Info:
100
+ return 'alert alert-info';
101
+ case AlertType.Warning:
102
+ return 'alert alert-warning';
103
+ case AlertType.Notification:
104
+ return 'alert alert-light';
105
+ case AlertType.ModalNotification:
106
+ return 'alert alert-light';
107
+ }
108
+ }
109
+ cssIconClass(alert) {
110
+ if (!alert) {
111
+ return;
112
+ }
113
+ // return css class based on alert type
114
+ switch (alert.type) {
115
+ case AlertType.Success:
116
+ return 'mdi mdi-check';
117
+ case AlertType.Error:
118
+ return 'mdi mdi-close-circle-o';
119
+ case AlertType.Info:
120
+ return 'mdi mdi-info-outline';
121
+ case AlertType.Warning:
122
+ return 'mdi mdi-alert-triangle';
123
+ case AlertType.Notification:
124
+ return 'mdi mdi-notifications';
125
+ case AlertType.ModalNotification:
126
+ return 'mdi mdi-notifications';
127
+ }
128
+ }
129
+ }
130
+ AlertComponent.decorators = [
131
+ { type: Component, args: [{
132
+ selector: 'valtimo-alert',
133
+ template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div *ngFor=\"let alert of alerts\" class=\"{{ cssClass(alert) }} rounded-0 m-0 alert-dismissable\">\n <div *ngIf=\"inModal(alert)\">\n <!-- Modal -->\n <div class=\"modal fade\" id=\"modalNotification\" tabindex=\"-1\" role=\"dialog\">\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-body p-0\">\n <button class=\"close\" type=\"button\" (click)=\"removeAlert(alert)\">\n <span class=\"mdi mdi-close\" aria-hidden=\"true\"></span>\n </button>\n <div class=\"icon\">\n <span class=\"{{ alert.iconClass || cssIconClass(alert) }}\"></span>\n </div>\n <div class=\"message\">\n <div [innerHTML]=\"alert.message\"></div>\n </div>\n </div>\n <div class=\"modal-footer pt-0\" *ngIf=\"alert.confirmations?.length\">\n <button\n class=\"{{ confirmation.class }} mr-2\"\n *ngFor=\"let confirmation of alert.confirmations\"\n (click)=\"alertConfirm(alert, confirmation.value)\"\n >\n {{ confirmation.label }}\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"!inModal(alert)\" class=\"alert-block\">\n <div class=\"icon\"><span class=\"{{ alert.iconClass || cssIconClass(alert) }}\"></span></div>\n <div class=\"message\">\n <div [innerHTML]=\"alert.message\"></div>\n <div class=\"mt-3\" *ngIf=\"alert.confirmations?.length\">\n <button\n class=\"{{ confirmation.class }} mr-2\"\n *ngFor=\"let confirmation of alert.confirmations\"\n (click)=\"alertConfirm(alert, confirmation.value)\"\n >\n {{ confirmation.label }}\n </button>\n </div>\n </div>\n <button class=\"close\" type=\"button\" (click)=\"removeAlert(alert)\">\n <span class=\"mdi mdi-close\" aria-hidden=\"true\"></span>\n </button>\n </div>\n</div>\n",
134
+ styles: [".alert-block{display:flex;flex-direction:row;justify-content:space-between}.alert-block .message{width:100%}.alert-block .icon{align-items:center;display:flex}.alert .message{font-size:1.1rem!important;line-height:1.5rem!important;padding:2rem 5rem 2rem 2rem!important}.alert .close{color:#fff!important;opacity:1!important;padding:2rem 2rem 0 0!important;right:0!important}.alert .icon{padding-left:2rem!important}.alert-warning{color:#404040!important}.alert-light .close,.alert-warning .close{color:#404040!important;opacity:1!important}"]
135
+ },] }
136
+ ];
137
+ AlertComponent.ctorParameters = () => [
138
+ { type: AlertService }
139
+ ];
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkQ6L1dvcmtzcGFjZS92YWx0aW1vL3ZhbHRpbW8tZnJvbnRlbmQtbGlicmFyaWVzL3Byb2plY3RzL3ZhbHRpbW8vY29tcG9uZW50cy9zcmMvIiwic291cmNlcyI6WyJsaWIvYWxlcnQvYWxlcnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFtQixTQUFTLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBRTdFLE9BQU8sRUFBUSxTQUFTLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFTN0MsTUFBTSxPQUFPLGNBQWM7SUFLekIsWUFBb0IsWUFBMEI7UUFBMUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFKOUMsV0FBTSxHQUFZLEVBQUUsQ0FBQztRQUtuQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztJQUM1QixDQUFDO0lBRUQsUUFBUSxLQUFJLENBQUM7SUFFYixrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNoRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRTtnQkFDbEIsK0NBQStDO2dCQUMvQyxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztnQkFDakIsT0FBTzthQUNSO1lBRUQsZ0VBQWdFO1lBQ2hFLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFO2dCQUN4QixLQUFLLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQzthQUMxQjtZQUVELGtDQUFrQztZQUNsQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxP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Q3ZCLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixPQUFPO1NBQ1I7UUFFRCx1Q0FBdUM7UUFDdkMsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFO1lBQ2xCLEtBQUssU0FBUyxDQUFDLE9BQU87Z0JBQ3BCLE9BQU8sZUFBZSxDQUFDO1lBQ3pCLEtBQUssU0FBUyxDQUFDLEtBQUs7Z0JBQ2xCLE9BQU8sd0JBQXdCLENBQUM7WUFDbEMsS0FBSyxTQUFTLENBQUMsSUFBSTtnQkFDakIsT0FBTyxzQkFBc0IsQ0FBQztZQUNoQyxLQUFLLFNBQVMsQ0FBQyxPQUFPO2dCQUNwQixPQUFPLHdCQUF3QixDQUFDO1lBQ2xDLEtBQUssU0FBUyxDQUFDLFlBQVk7Z0JBQ3pCLE9BQU8sdUJBQXVCLENBQUM7WUFDakMsS0FBSyxTQUFTLENBQUMsaUJBQWlCO2dCQUM5QixPQUFPLHVCQUF1QixDQUFDO1NBQ2xDO0lBQ0gsQ0FBQzs7O1lBcklGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsZUFBZTtnQkFDekIsZ3BGQUFxQzs7YUFFdEM7OztZQVJPLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0FmdGVyQ29udGVudEluaXQsIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBbGVydCwgQWxlcnRUeXBlfSBmcm9tICdAdmFsdGltby9jb250cmFjdCc7XG5pbXBvcnQge0FsZXJ0U2VydmljZX0gZnJvbSAnLi9hbGVydC5zZXJ2aWNlJztcblxuZGVjbGFyZSB2YXIgJDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1hbGVydCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hbGVydC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FsZXJ0LmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQWxlcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gIGFsZXJ0czogQWxlcnRbXSA9IFtdO1xuICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgYXV0b0Nsb3NlSW5NUzogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UpIHtcbiAgICB0aGlzLmF1dG9DbG9zZUluTVMgPSA1MDAwO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7fVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuYWxlcnRTZXJ2aWNlLm9uQWxlcnQoKS5zdWJzY3JpYmUoYWxlcnQgPT4ge1xuICAgICAgaWYgKCFhbGVydC5tZXNzYWdlKSB7XG4gICAgICAgIC8vIGNsZWFyIGFsZXJ0cyB3aGVuIGFuIGVtcHR5IGFsZXJ0IGlzIHJlY2VpdmVkXG4gICAgICAgIHRoaXMuYWxlcnRzID0gW107XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gc2V0IGVtcHR5IGFycmF5IHdoZW4gYW4gZW1wdHkgYWxlcnQgY29uZmlybWF0aW9ucyBpcyByZWNlaXZlZFxuICAgICAgaWYgKCFhbGVydC5jb25maXJtYXRpb25zKSB7XG4gICAgICAgIGFsZXJ0LmNvbmZpcm1hdGlvbnMgPSBbXTtcbiAgICAgIH1cblxuICAgICAgLy8gYWRkIGFsZXJ0IHRvIGFycmF5IGlmIG5vdCBleGlzdFxuICAgICAgY29uc3QgYWxlcnRFeGlzdCA9IHRoaXMuYWxlcnRzLmZpbHRlcih4ID0+IHgubWVzc2FnZSA9PT0gYWxlcnQubWVzc2FnZSk7XG4gICAgICBpZiAoYWxlcnRFeGlzdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy5hbGVydHMucHVzaChhbGVydCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmluTW9kYWwoYWxlcnQpKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMub3Blbk1vZGFsKCk7XG4gICAgICAgIH0sIDMwMCk7XG4gICAgICB9XG5cbiAgICAgIC8vIGF1dG8gY2xvc2UgZXhjZXB0IGFsZXJ0IGNvbmZpcm1hdGlvbnMgbm90IGVtcHR5XG4gICAgICBpZiAodGhpcy5hdXRvQ2xvc2VJbk1TID4gMCAmJiBhbGVydC5jb25maXJtYXRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLnJlbW92ZUFsZXJ0KGFsZXJ0KTtcbiAgICAgICAgfSwgdGhpcy5hdXRvQ2xvc2VJbk1TKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGNsb3NlTW9kYWwoKSB7XG4gICAgJCgnI21vZGFsTm90aWZpY2F0aW9uJykubW9kYWwoJ2hpZGUnKTtcbiAgfVxuXG4gIG9wZW5Nb2RhbCgpIHtcbiAgICAkKCcjbW9kYWxOb3RpZmljYXRpb24nKS5tb2RhbCgnc2hvdycpO1xuICB9XG5cbiAgYWxlcnRDb25maXJtKGFsZXJ0OiBBbGVydCwgY29uZmlybTogYW55KSB7XG4gICAgYWxlcnQuY29uZmlybSA9IGNvbmZpcm07XG4gICAgdGhpcy5hbGVydFNlcnZpY2UuZW1pdEFsZXJ0Q29uZmlybUV2ZW50KGFsZXJ0KTtcbiAgICB0aGlzLnJlbW92ZUFsZXJ0KGFsZXJ0KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIC8vIHVuc3Vic2NyaWJlIHRvIGF2b2lkIG1lbW9yeSBsZWFrc1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICByZW1vdmVBbGVydChhbGVydDogQWxlcnQpIHtcbiAgICBpZiAodGhpcy5pbk1vZGFsKGFsZXJ0KSkge1xuICAgICAgdGhpcy5jbG9zZU1vZGFsKCk7XG4gICAgfVxuICAgIC8vIHJlbW92ZSBzcGVjaWZpZWQgYWxlcnQgZnJvbSBhcnJheVxuICAgIHRoaXMuYWxlcnRzID0gdGhpcy5hbGVydHMuZmlsdGVyKHggPT4geC5tZXNzYWdlICE9PSBhbGVydC5tZXNzYWdlKTtcbiAgfVxuXG4gIGluTW9kYWwoYWxlcnQ6IEFsZXJ0KSB7XG4gICAgaWYgKCFhbGVydCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIHJldHVybiB0cnVlIGJhc2VkIG9uIEFsZXJ0VHlwZS5Nb2RhbE5vdGlmaWNhdGlvblxuICAgIHN3aXRjaCAoYWxlcnQudHlwZSkge1xuICAgICAgY2FzZSBBbGVydFR5cGUuTW9kYWxOb3RpZmljYXRpb246XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGNzc0NsYXNzKGFsZXJ0OiBBbGVydCkge1xuICAgIGlmICghYWxlcnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyByZXR1cm4gY3NzIGNsYXNzIGJhc2VkIG9uIGFsZXJ0IHR5cGVcbiAgICBzd2l0Y2ggKGFsZXJ0LnR5cGUpIHtcbiAgICAgIGNhc2UgQWxlcnRUeXBlLlN1Y2Nlc3M6XG4gICAgICAgIHJldHVybiAnYWxlcnQgYWxlcnQtc3VjY2Vzcyc7XG4gICAgICBjYXNlIEFsZXJ0VHlwZS5FcnJvcjpcbiAgICAgICAgcmV0dXJuICdhbGVydCBhbGVydC1kYW5nZXInO1xuICAgICAgY2FzZSBBbGVydFR5cGUuSW5mbzpcbiAgICAgICAgcmV0dXJuICdhbGVydCBhbGVydC1pbmZvJztcbiAgICAgIGNhc2UgQWxlcnRUeXBlLldhcm5pbmc6XG4gICAgICAgIHJldHVybiAnYWxlcnQgYWxlcnQtd2FybmluZyc7XG4gICAgICBjYXNlIEFsZXJ0VHlwZS5Ob3RpZmljYXRpb246XG4gICAgICAgIHJldHVybiAnYWxlcnQgYWxlcnQtbGlnaHQnO1xuICAgICAgY2FzZSBBbGVydFR5cGUuTW9kYWxOb3RpZmljYXRpb246XG4gICAgICAgIHJldHVybiAnYWxlcnQgYWxlcnQtbGlnaHQnO1xuICAgIH1cbiAgfVxuXG4gIGNzc0ljb25DbGFzcyhhbGVydDogQWxlcnQpIHtcbiAgICBpZiAoIWFsZXJ0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gcmV0dXJuIGNzcyBjbGFzcyBiYXNlZCBvbiBhbGVydCB0eXBlXG4gICAgc3dpdGNoIChhbGVydC50eXBlKSB7XG4gICAgICBjYXNlIEFsZXJ0VHlwZS5TdWNjZXNzOlxuICAgICAgICByZXR1cm4gJ21kaSBtZGktY2hlY2snO1xuICAgICAgY2FzZSBBbGVydFR5cGUuRXJyb3I6XG4gICAgICAgIHJldHVybiAnbWRpIG1kaS1jbG9zZS1jaXJjbGUtbyc7XG4gICAgICBjYXNlIEFsZXJ0VHlwZS5JbmZvOlxuICAgICAgICByZXR1cm4gJ21kaSBtZGktaW5mby1vdXRsaW5lJztcbiAgICAgIGNhc2UgQWxlcnRUeXBlLldhcm5pbmc6XG4gICAgICAgIHJldHVybiAnbWRpIG1kaS1hbGVydC10cmlhbmdsZSc7XG4gICAgICBjYXNlIEFsZXJ0VHlwZS5Ob3RpZmljYXRpb246XG4gICAgICAgIHJldHVybiAnbWRpIG1kaS1ub3RpZmljYXRpb25zJztcbiAgICAgIGNhc2UgQWxlcnRUeXBlLk1vZGFsTm90aWZpY2F0aW9uOlxuICAgICAgICByZXR1cm4gJ21kaSBtZGktbm90aWZpY2F0aW9ucyc7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,28 +1,28 @@
1
- /*
2
- * Copyright 2015-2020 Ritense BV, the Netherlands.
3
- *
4
- * Licensed under EUPL, Version 1.2 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" basis,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { NgModule } from '@angular/core';
17
- import { CommonModule } from '@angular/common';
18
- import { AlertComponent } from './alert.component';
19
- export class AlertModule {
20
- }
21
- AlertModule.decorators = [
22
- { type: NgModule, args: [{
23
- imports: [CommonModule],
24
- declarations: [AlertComponent],
25
- exports: [AlertComponent]
26
- },] }
27
- ];
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy9saWIvYWxlcnQvYWxlcnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBT2pELE1BQU0sT0FBTyxXQUFXOzs7WUFMdkIsUUFBUSxTQUFDO2dCQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztnQkFDdkIsWUFBWSxFQUFFLENBQUMsY0FBYyxDQUFDO2dCQUM5QixPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUM7YUFDMUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtBbGVydENvbXBvbmVudH0gZnJvbSAnLi9hbGVydC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgZGVjbGFyYXRpb25zOiBbQWxlcnRDb21wb25lbnRdLFxuICBleHBvcnRzOiBbQWxlcnRDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIEFsZXJ0TW9kdWxlIHtcbn1cbiJdfQ==
1
+ /*
2
+ * Copyright 2015-2020 Ritense BV, the Netherlands.
3
+ *
4
+ * Licensed under EUPL, Version 1.2 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" basis,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { NgModule } from '@angular/core';
17
+ import { CommonModule } from '@angular/common';
18
+ import { AlertComponent } from './alert.component';
19
+ export class AlertModule {
20
+ }
21
+ AlertModule.decorators = [
22
+ { type: NgModule, args: [{
23
+ imports: [CommonModule],
24
+ declarations: [AlertComponent],
25
+ exports: [AlertComponent],
26
+ },] }
27
+ ];
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IkQ6L1dvcmtzcGFjZS92YWx0aW1vL3ZhbHRpbW8tZnJvbnRlbmQtbGlicmFyaWVzL3Byb2plY3RzL3ZhbHRpbW8vY29tcG9uZW50cy9zcmMvIiwic291cmNlcyI6WyJsaWIvYWxlcnQvYWxlcnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBT2pELE1BQU0sT0FBTyxXQUFXOzs7WUFMdkIsUUFBUSxTQUFDO2dCQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztnQkFDdkIsWUFBWSxFQUFFLENBQUMsY0FBYyxDQUFDO2dCQUM5QixPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUM7YUFDMUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtBbGVydENvbXBvbmVudH0gZnJvbSAnLi9hbGVydC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgZGVjbGFyYXRpb25zOiBbQWxlcnRDb21wb25lbnRdLFxuICBleHBvcnRzOiBbQWxlcnRDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBBbGVydE1vZHVsZSB7fVxuIl19
@@ -1,81 +1,81 @@
1
- /*
2
- * Copyright 2015-2020 Ritense BV, the Netherlands.
3
- *
4
- * Licensed under EUPL, Version 1.2 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" basis,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { EventEmitter, Injectable } from '@angular/core';
17
- import { NavigationStart, Router } from '@angular/router';
18
- import { Subject } from 'rxjs';
19
- import { Alert, AlertType } from '@valtimo/contract';
20
- import * as i0 from "@angular/core";
21
- import * as i1 from "@angular/router";
22
- export class AlertService {
23
- constructor(router) {
24
- this.router = router;
25
- this.confirmed = new EventEmitter();
26
- this.subject = new Subject();
27
- // clear alert messages on route change unless 'keepAfterRouteChange' flag is true
28
- this.router.events.subscribe(event => {
29
- if (event instanceof NavigationStart) {
30
- // clear alert messages
31
- this.clear();
32
- }
33
- });
34
- }
35
- // enable subscribing to alerts observable
36
- onAlert() {
37
- return this.subject.asObservable();
38
- }
39
- // convenience methods
40
- success(message, confirmations, iconClass) {
41
- this.alert(new Alert({ message, type: AlertType.Success, confirmations, iconClass }));
42
- }
43
- error(message, confirmations, iconClass) {
44
- this.alert(new Alert({ message, type: AlertType.Error, confirmations, iconClass }));
45
- }
46
- info(message, confirmations, iconClass) {
47
- this.alert(new Alert({ message, type: AlertType.Info, confirmations, iconClass }));
48
- }
49
- warning(message, confirmations, iconClass) {
50
- this.alert(new Alert({ message, type: AlertType.Warning, confirmations, iconClass }));
51
- }
52
- notification(message, confirmations, iconClass) {
53
- this.alert(new Alert({ message, type: AlertType.Notification, confirmations, iconClass }));
54
- }
55
- modalNotification(message, confirmations, iconClass) {
56
- this.alert(new Alert({ message, type: AlertType.ModalNotification, confirmations, iconClass }));
57
- }
58
- // main alert method
59
- alert(alert) {
60
- this.subject.next(alert);
61
- }
62
- // clear alerts
63
- clear() {
64
- this.subject.next(new Alert({}));
65
- }
66
- // emit confirm
67
- emitAlertConfirmEvent(alert) {
68
- this.confirmed.emit(alert);
69
- }
70
- getAlertConfirmChangeEmitter() {
71
- return this.confirmed;
72
- }
73
- }
74
- AlertService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AlertService_Factory() { return new AlertService(i0.ɵɵinject(i1.Router)); }, token: AlertService, providedIn: "root" });
75
- AlertService.decorators = [
76
- { type: Injectable, args: [{ providedIn: 'root' },] }
77
- ];
78
- AlertService.ctorParameters = () => [
79
- { type: Router }
80
- ];
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vY29tcG9uZW50cy9zcmMvbGliL2FsZXJ0L2FsZXJ0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQUMsWUFBWSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBQUMsZUFBZSxFQUFFLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBYSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFDLEtBQUssRUFBRSxTQUFTLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBR25ELE1BQU0sT0FBTyxZQUFZO0lBSXZCLFlBQW9CLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBSDNCLGNBQVMsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqRCxZQUFPLEdBQUcsSUFBSSxPQUFPLEVBQVMsQ0FBQztRQUdyQyxrRkFBa0Y7UUFDbEYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ25DLElBQUksS0FBSyxZQUFZLGVBQWUsRUFBRTtnQkFDcEMsdUJBQXVCO2dCQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDZDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELDBDQUEwQztJQUMxQyxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxzQkFBc0I7SUFDdEIsT0FBTyxDQUFDLE9BQWUsRUFBRSxhQUFtQixFQUFFLFNBQWtCO1FBQzlELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQWUsRUFBRSxhQUFtQixFQUFFLFNBQWtCO1FBQzVELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQWUsRUFBRSxhQUFtQixFQUFFLFNBQWtCO1FBQzNELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQsT0FBTyxDQUFDLE9BQWUsRUFBRSxhQUFtQixFQUFFLFNBQWtCO1FBQzlELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQWUsRUFBRSxhQUFtQixFQUFFLFNBQWtCO1FBQ25FLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQsaUJBQWlCLENBQUMsT0FBZSxFQUFFLGFBQW1CLEVBQUUsU0FBa0I7UUFDeEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVELG9CQUFvQjtJQUNwQixLQUFLLENBQUMsS0FBWTtRQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsZUFBZTtJQUNmLEtBQUs7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxlQUFlO0lBQ2YscUJBQXFCLENBQUMsS0FBWTtRQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsNEJBQTRCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDOzs7O1lBOURGLFVBQVUsU0FBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUM7OztZQUpQLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0V2ZW50RW1pdHRlciwgSW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05hdmlnYXRpb25TdGFydCwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7QWxlcnQsIEFsZXJ0VHlwZX0gZnJvbSAnQHZhbHRpbW8vY29udHJhY3QnO1xuXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBBbGVydFNlcnZpY2Uge1xuICBwdWJsaWMgY29uZmlybWVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcHJpdmF0ZSBzdWJqZWN0ID0gbmV3IFN1YmplY3Q8QWxlcnQ+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge1xuICAgIC8vIGNsZWFyIGFsZXJ0IG1lc3NhZ2VzIG9uIHJvdXRlIGNoYW5nZSB1bmxlc3MgJ2tlZXBBZnRlclJvdXRlQ2hhbmdlJyBmbGFnIGlzIHRydWVcbiAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xuICAgICAgICAvLyBjbGVhciBhbGVydCBtZXNzYWdlc1xuICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyBlbmFibGUgc3Vic2NyaWJpbmcgdG8gYWxlcnRzIG9ic2VydmFibGVcbiAgb25BbGVydCgpOiBPYnNlcnZhYmxlPEFsZXJ0PiB7XG4gICAgcmV0dXJuIHRoaXMuc3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8vIGNvbnZlbmllbmNlIG1ldGhvZHNcbiAgc3VjY2VzcyhtZXNzYWdlOiBzdHJpbmcsIGNvbmZpcm1hdGlvbnM/OiBhbnksIGljb25DbGFzcz86IHN0cmluZykge1xuICAgIHRoaXMuYWxlcnQobmV3IEFsZXJ0KHttZXNzYWdlLCB0eXBlOiBBbGVydFR5cGUuU3VjY2VzcywgY29uZmlybWF0aW9ucywgaWNvbkNsYXNzfSkpO1xuICB9XG5cbiAgZXJyb3IobWVzc2FnZTogc3RyaW5nLCBjb25maXJtYXRpb25zPzogYW55LCBpY29uQ2xhc3M/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmFsZXJ0KG5ldyBBbGVydCh7bWVzc2FnZSwgdHlwZTogQWxlcnRUeXBlLkVycm9yLCBjb25maXJtYXRpb25zLCBpY29uQ2xhc3N9KSk7XG4gIH1cblxuICBpbmZvKG1lc3NhZ2U6IHN0cmluZywgY29uZmlybWF0aW9ucz86IGFueSwgaWNvbkNsYXNzPzogc3RyaW5nKSB7XG4gICAgdGhpcy5hbGVydChuZXcgQWxlcnQoe21lc3NhZ2UsIHR5cGU6IEFsZXJ0VHlwZS5JbmZvLCBjb25maXJtYXRpb25zLCBpY29uQ2xhc3N9KSk7XG4gIH1cblxuICB3YXJuaW5nKG1lc3NhZ2U6IHN0cmluZywgY29uZmlybWF0aW9ucz86IGFueSwgaWNvbkNsYXNzPzogc3RyaW5nKSB7XG4gICAgdGhpcy5hbGVydChuZXcgQWxlcnQoe21lc3NhZ2UsIHR5cGU6IEFsZXJ0VHlwZS5XYXJuaW5nLCBjb25maXJtYXRpb25zLCBpY29uQ2xhc3N9KSk7XG4gIH1cblxuICBub3RpZmljYXRpb24obWVzc2FnZTogc3RyaW5nLCBjb25maXJtYXRpb25zPzogYW55LCBpY29uQ2xhc3M/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmFsZXJ0KG5ldyBBbGVydCh7bWVzc2FnZSwgdHlwZTogQWxlcnRUeXBlLk5vdGlmaWNhdGlvbiwgY29uZmlybWF0aW9ucywgaWNvbkNsYXNzfSkpO1xuICB9XG5cbiAgbW9kYWxOb3RpZmljYXRpb24obWVzc2FnZTogc3RyaW5nLCBjb25maXJtYXRpb25zPzogYW55LCBpY29uQ2xhc3M/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmFsZXJ0KG5ldyBBbGVydCh7bWVzc2FnZSwgdHlwZTogQWxlcnRUeXBlLk1vZGFsTm90aWZpY2F0aW9uLCBjb25maXJtYXRpb25zLCBpY29uQ2xhc3N9KSk7XG4gIH1cblxuICAvLyBtYWluIGFsZXJ0IG1ldGhvZFxuICBhbGVydChhbGVydDogQWxlcnQpIHtcbiAgICB0aGlzLnN1YmplY3QubmV4dChhbGVydCk7XG4gIH1cblxuICAvLyBjbGVhciBhbGVydHNcbiAgY2xlYXIoKSB7XG4gICAgdGhpcy5zdWJqZWN0Lm5leHQobmV3IEFsZXJ0KHt9KSk7XG4gIH1cblxuICAvLyBlbWl0IGNvbmZpcm1cbiAgZW1pdEFsZXJ0Q29uZmlybUV2ZW50KGFsZXJ0OiBBbGVydCkge1xuICAgIHRoaXMuY29uZmlybWVkLmVtaXQoYWxlcnQpO1xuICB9XG5cbiAgZ2V0QWxlcnRDb25maXJtQ2hhbmdlRW1pdHRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maXJtZWQ7XG4gIH1cbn1cbiJdfQ==
1
+ /*
2
+ * Copyright 2015-2020 Ritense BV, the Netherlands.
3
+ *
4
+ * Licensed under EUPL, Version 1.2 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" basis,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { EventEmitter, Injectable } from '@angular/core';
17
+ import { NavigationStart, Router } from '@angular/router';
18
+ import { Subject } from 'rxjs';
19
+ import { Alert, AlertType } from '@valtimo/contract';
20
+ import * as i0 from "@angular/core";
21
+ import * as i1 from "@angular/router";
22
+ export class AlertService {
23
+ constructor(router) {
24
+ this.router = router;
25
+ this.confirmed = new EventEmitter();
26
+ this.subject = new Subject();
27
+ // clear alert messages on route change unless 'keepAfterRouteChange' flag is true
28
+ this.router.events.subscribe(event => {
29
+ if (event instanceof NavigationStart) {
30
+ // clear alert messages
31
+ this.clear();
32
+ }
33
+ });
34
+ }
35
+ // enable subscribing to alerts observable
36
+ onAlert() {
37
+ return this.subject.asObservable();
38
+ }
39
+ // convenience methods
40
+ success(message, confirmations, iconClass) {
41
+ this.alert(new Alert({ message, type: AlertType.Success, confirmations, iconClass }));
42
+ }
43
+ error(message, confirmations, iconClass) {
44
+ this.alert(new Alert({ message, type: AlertType.Error, confirmations, iconClass }));
45
+ }
46
+ info(message, confirmations, iconClass) {
47
+ this.alert(new Alert({ message, type: AlertType.Info, confirmations, iconClass }));
48
+ }
49
+ warning(message, confirmations, iconClass) {
50
+ this.alert(new Alert({ message, type: AlertType.Warning, confirmations, iconClass }));
51
+ }
52
+ notification(message, confirmations, iconClass) {
53
+ this.alert(new Alert({ message, type: AlertType.Notification, confirmations, iconClass }));
54
+ }
55
+ modalNotification(message, confirmations, iconClass) {
56
+ this.alert(new Alert({ message, type: AlertType.ModalNotification, confirmations, iconClass }));
57
+ }
58
+ // main alert method
59
+ alert(alert) {
60
+ this.subject.next(alert);
61
+ }
62
+ // clear alerts
63
+ clear() {
64
+ this.subject.next(new Alert({}));
65
+ }
66
+ // emit confirm
67
+ emitAlertConfirmEvent(alert) {
68
+ this.confirmed.emit(alert);
69
+ }
70
+ getAlertConfirmChangeEmitter() {
71
+ return this.confirmed;
72
+ }
73
+ }
74
+ AlertService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AlertService_Factory() { return new AlertService(i0.ɵɵinject(i1.Router)); }, token: AlertService, providedIn: "root" });
75
+ AlertService.decorators = [
76
+ { type: Injectable, args: [{ providedIn: 'root' },] }
77
+ ];
78
+ AlertService.ctorParameters = () => [
79
+ { type: Router }
80
+ ];
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJEOi9Xb3Jrc3BhY2UvdmFsdGltby92YWx0aW1vLWZyb250ZW5kLWxpYnJhcmllcy9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjLyIsInNvdXJjZXMiOlsibGliL2FsZXJ0L2FsZXJ0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQUMsWUFBWSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBQUMsZUFBZSxFQUFFLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBYSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFDLEtBQUssRUFBRSxTQUFTLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBR25ELE1BQU0sT0FBTyxZQUFZO0lBSXZCLFlBQW9CLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBSDNCLGNBQVMsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqRCxZQUFPLEdBQUcsSUFBSSxPQUFPLEVBQVMsQ0FBQztRQUdyQyxrRkFBa0Y7UUFDbEYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ25DLElBQUksS0FBSyxZQUFZLGVBQWUsRUFBRTtnQkFDcEMsdUJBQXVCO2dCQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDZDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELDBDQUEwQztJQUMxQyxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxzQkFBc0I7SUFDdEIsT0FBTyxDQUFDLE9BQWUsRUFBRSxhQUFtQixFQUFFLFNBQWtCO1FBQzlELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQWUsRUFBRSxhQUFtQixFQUFFLFNBQWtCO1FBQzVELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQWUsRUFBRSxhQUFtQixFQUFFLFNBQWtCO1FBQzNELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQsT0FBTyxDQUFDLE9BQWUsRUFBRSxhQUFtQixFQUFFLFNBQWtCO1FBQzlELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQWUsRUFBRSxhQUFtQixFQUFFLFNBQWtCO1FBQ25FLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQsaUJBQWlCLENBQUMsT0FBZSxFQUFFLGFBQW1CLEVBQUUsU0FBa0I7UUFDeEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVELG9CQUFvQjtJQUNwQixLQUFLLENBQUMsS0FBWTtRQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsZUFBZTtJQUNmLEtBQUs7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxlQUFlO0lBQ2YscUJBQXFCLENBQUMsS0FBWTtRQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsNEJBQTRCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDOzs7O1lBOURGLFVBQVUsU0FBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUM7OztZQUpQLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0V2ZW50RW1pdHRlciwgSW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05hdmlnYXRpb25TdGFydCwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7QWxlcnQsIEFsZXJ0VHlwZX0gZnJvbSAnQHZhbHRpbW8vY29udHJhY3QnO1xuXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBBbGVydFNlcnZpY2Uge1xuICBwdWJsaWMgY29uZmlybWVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcHJpdmF0ZSBzdWJqZWN0ID0gbmV3IFN1YmplY3Q8QWxlcnQ+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge1xuICAgIC8vIGNsZWFyIGFsZXJ0IG1lc3NhZ2VzIG9uIHJvdXRlIGNoYW5nZSB1bmxlc3MgJ2tlZXBBZnRlclJvdXRlQ2hhbmdlJyBmbGFnIGlzIHRydWVcbiAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xuICAgICAgICAvLyBjbGVhciBhbGVydCBtZXNzYWdlc1xuICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyBlbmFibGUgc3Vic2NyaWJpbmcgdG8gYWxlcnRzIG9ic2VydmFibGVcbiAgb25BbGVydCgpOiBPYnNlcnZhYmxlPEFsZXJ0PiB7XG4gICAgcmV0dXJuIHRoaXMuc3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8vIGNvbnZlbmllbmNlIG1ldGhvZHNcbiAgc3VjY2VzcyhtZXNzYWdlOiBzdHJpbmcsIGNvbmZpcm1hdGlvbnM/OiBhbnksIGljb25DbGFzcz86IHN0cmluZykge1xuICAgIHRoaXMuYWxlcnQobmV3IEFsZXJ0KHttZXNzYWdlLCB0eXBlOiBBbGVydFR5cGUuU3VjY2VzcywgY29uZmlybWF0aW9ucywgaWNvbkNsYXNzfSkpO1xuICB9XG5cbiAgZXJyb3IobWVzc2FnZTogc3RyaW5nLCBjb25maXJtYXRpb25zPzogYW55LCBpY29uQ2xhc3M/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmFsZXJ0KG5ldyBBbGVydCh7bWVzc2FnZSwgdHlwZTogQWxlcnRUeXBlLkVycm9yLCBjb25maXJtYXRpb25zLCBpY29uQ2xhc3N9KSk7XG4gIH1cblxuICBpbmZvKG1lc3NhZ2U6IHN0cmluZywgY29uZmlybWF0aW9ucz86IGFueSwgaWNvbkNsYXNzPzogc3RyaW5nKSB7XG4gICAgdGhpcy5hbGVydChuZXcgQWxlcnQoe21lc3NhZ2UsIHR5cGU6IEFsZXJ0VHlwZS5JbmZvLCBjb25maXJtYXRpb25zLCBpY29uQ2xhc3N9KSk7XG4gIH1cblxuICB3YXJuaW5nKG1lc3NhZ2U6IHN0cmluZywgY29uZmlybWF0aW9ucz86IGFueSwgaWNvbkNsYXNzPzogc3RyaW5nKSB7XG4gICAgdGhpcy5hbGVydChuZXcgQWxlcnQoe21lc3NhZ2UsIHR5cGU6IEFsZXJ0VHlwZS5XYXJuaW5nLCBjb25maXJtYXRpb25zLCBpY29uQ2xhc3N9KSk7XG4gIH1cblxuICBub3RpZmljYXRpb24obWVzc2FnZTogc3RyaW5nLCBjb25maXJtYXRpb25zPzogYW55LCBpY29uQ2xhc3M/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmFsZXJ0KG5ldyBBbGVydCh7bWVzc2FnZSwgdHlwZTogQWxlcnRUeXBlLk5vdGlmaWNhdGlvbiwgY29uZmlybWF0aW9ucywgaWNvbkNsYXNzfSkpO1xuICB9XG5cbiAgbW9kYWxOb3RpZmljYXRpb24obWVzc2FnZTogc3RyaW5nLCBjb25maXJtYXRpb25zPzogYW55LCBpY29uQ2xhc3M/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmFsZXJ0KG5ldyBBbGVydCh7bWVzc2FnZSwgdHlwZTogQWxlcnRUeXBlLk1vZGFsTm90aWZpY2F0aW9uLCBjb25maXJtYXRpb25zLCBpY29uQ2xhc3N9KSk7XG4gIH1cblxuICAvLyBtYWluIGFsZXJ0IG1ldGhvZFxuICBhbGVydChhbGVydDogQWxlcnQpIHtcbiAgICB0aGlzLnN1YmplY3QubmV4dChhbGVydCk7XG4gIH1cblxuICAvLyBjbGVhciBhbGVydHNcbiAgY2xlYXIoKSB7XG4gICAgdGhpcy5zdWJqZWN0Lm5leHQobmV3IEFsZXJ0KHt9KSk7XG4gIH1cblxuICAvLyBlbWl0IGNvbmZpcm1cbiAgZW1pdEFsZXJ0Q29uZmlybUV2ZW50KGFsZXJ0OiBBbGVydCkge1xuICAgIHRoaXMuY29uZmlybWVkLmVtaXQoYWxlcnQpO1xuICB9XG5cbiAgZ2V0QWxlcnRDb25maXJtQ2hhbmdlRW1pdHRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maXJtZWQ7XG4gIH1cbn1cbiJdfQ==