@valtimo/components 4.15.2-next-main.8

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 +5089 -0
  2. package/bundles/valtimo-components.umd.js.map +1 -0
  3. package/bundles/valtimo-components.umd.min.js +17 -0
  4. package/bundles/valtimo-components.umd.min.js.map +1 -0
  5. package/esm2015/lib/alert/alert.component.js +142 -0
  6. package/esm2015/lib/alert/alert.module.js +28 -0
  7. package/esm2015/lib/alert/alert.service.js +81 -0
  8. package/esm2015/lib/bpmn-js-diagram/bpmn-js-diagram.component.js +160 -0
  9. package/esm2015/lib/bpmn-js-diagram/bpmn-js-diagram.module.js +30 -0
  10. package/esm2015/lib/breadcrumb-navigation/breadcrumb-navigation.component.js +93 -0
  11. package/esm2015/lib/breadcrumb-navigation/breadcrumb-navigation.module.js +34 -0
  12. package/esm2015/lib/camunda/form/camunda-form.components.js +37 -0
  13. package/esm2015/lib/camunda/form/camunda-form.module.js +38 -0
  14. package/esm2015/lib/camunda/form/custom/camunda-custom-form.component.js +42 -0
  15. package/esm2015/lib/camunda/form/custom/camunda-custom-form.module.js +34 -0
  16. package/esm2015/lib/camunda/form/generated/camunda-generated-form.component.js +69 -0
  17. package/esm2015/lib/camunda/form/generated/camunda-generated-form.module.js +63 -0
  18. package/esm2015/lib/camunda/form/generated/formfield/boolean/camunda-boolean-formfield.component.js +28 -0
  19. package/esm2015/lib/camunda/form/generated/formfield/camunda-formfield-generator.directive.js +64 -0
  20. package/esm2015/lib/camunda/form/generated/formfield/camunda-formfield.service.js +67 -0
  21. package/esm2015/lib/camunda/form/generated/formfield/choicefield/camunda-choicefield-formfield.component.js +38 -0
  22. package/esm2015/lib/camunda/form/generated/formfield/date/camunda-date-formfield.component.js +66 -0
  23. package/esm2015/lib/camunda/form/generated/formfield/enum/camunda-enum-formfield.component.js +31 -0
  24. package/esm2015/lib/camunda/form/generated/formfield/formfield.model.js +16 -0
  25. package/esm2015/lib/camunda/form/generated/formfield/long/camunda-long-formfield.component.js +28 -0
  26. package/esm2015/lib/camunda/form/generated/formfield/string/camunda-string-formfield.component.js +28 -0
  27. package/esm2015/lib/camunda/form/generated/formfield/textarea/camunda-textarea-formfield.component.js +28 -0
  28. package/esm2015/lib/camunda/form/generated/formfield/validation/camunda-formfield-validation.component.js +36 -0
  29. package/esm2015/lib/camunda/form/generated/formfield/validation/date.validators.js +60 -0
  30. package/esm2015/lib/card/card.component.js +37 -0
  31. package/esm2015/lib/card/card.module.js +30 -0
  32. package/esm2015/lib/components.module.js +22 -0
  33. package/esm2015/lib/data-list/data-list.component.js +34 -0
  34. package/esm2015/lib/data-list/data-list.module.js +30 -0
  35. package/esm2015/lib/dropzone/dropzone.component.js +143 -0
  36. package/esm2015/lib/dropzone/dropzone.module.js +32 -0
  37. package/esm2015/lib/field-auto-focus/field-auto-focus.directive.js +35 -0
  38. package/esm2015/lib/field-auto-focus/field-auto-focus.module.js +32 -0
  39. package/esm2015/lib/file-size/file-size.module.js +30 -0
  40. package/esm2015/lib/file-size/file-size.pipe.js +45 -0
  41. package/esm2015/lib/filter-sidebar/filter-sidebar.component.js +46 -0
  42. package/esm2015/lib/filter-sidebar/filter-sidebar.module.js +30 -0
  43. package/esm2015/lib/form-io/form-io-builder.component.js +39 -0
  44. package/esm2015/lib/form-io/form-io-uploader/form-io-uploader-edit-form.js +90 -0
  45. package/esm2015/lib/form-io/form-io-uploader/form-io-uploader.component.js +72 -0
  46. package/esm2015/lib/form-io/form-io-uploader/form-io-uploader.formio.js +26 -0
  47. package/esm2015/lib/form-io/form-io.component.js +160 -0
  48. package/esm2015/lib/form-io/form-io.module.js +56 -0
  49. package/esm2015/lib/form-io/formio-config.js +22 -0
  50. package/esm2015/lib/form-io/services/form-io-dom.service.js +23 -0
  51. package/esm2015/lib/form-io/services/form-io-state.service.js +24 -0
  52. package/esm2015/lib/left-sidebar/left-sidebar.component.js +114 -0
  53. package/esm2015/lib/left-sidebar/left-sidebar.module.js +34 -0
  54. package/esm2015/lib/list/ListFilterPipe.directive.js +35 -0
  55. package/esm2015/lib/list/list.component.js +177 -0
  56. package/esm2015/lib/list/list.module.js +33 -0
  57. package/esm2015/lib/menu/menu-item-text.component.js +36 -0
  58. package/esm2015/lib/menu/menu-routing.module.js +29 -0
  59. package/esm2015/lib/menu/menu.component.js +65 -0
  60. package/esm2015/lib/menu/menu.init.js +34 -0
  61. package/esm2015/lib/menu/menu.module.js +39 -0
  62. package/esm2015/lib/menu/menu.service.js +127 -0
  63. package/esm2015/lib/menu/submenu-item-text.component.js +33 -0
  64. package/esm2015/lib/modal/modal.component.js +48 -0
  65. package/esm2015/lib/modal/modal.module.js +28 -0
  66. package/esm2015/lib/page-header/page-header.component.js +29 -0
  67. package/esm2015/lib/page-header/page-header.module.js +34 -0
  68. package/esm2015/lib/page-title/page-title.component.js +76 -0
  69. package/esm2015/lib/page-title/page-title.module.js +32 -0
  70. package/esm2015/lib/progress-bar/progress-bar.component.js +26 -0
  71. package/esm2015/lib/progress-bar/progress-bar.module.js +30 -0
  72. package/esm2015/lib/right-sidebar/right-sidebar.component.js +131 -0
  73. package/esm2015/lib/right-sidebar/right-sidebar.module.js +49 -0
  74. package/esm2015/lib/searchable-dropdown/searchable-dropdown.component.js +185 -0
  75. package/esm2015/lib/searchable-dropdown/searchable-dropdown.module.js +29 -0
  76. package/esm2015/lib/searchable-dropdown-select/searchable-dropdown-select.component.js +52 -0
  77. package/esm2015/lib/searchable-dropdown-select/searchable-dropdown-select.module.js +30 -0
  78. package/esm2015/lib/spinner/spinner.component.js +43 -0
  79. package/esm2015/lib/spinner/spinner.module.js +36 -0
  80. package/esm2015/lib/timeline/timeline.component.js +29 -0
  81. package/esm2015/lib/timeline/timeline.module.js +32 -0
  82. package/esm2015/lib/topbar/topbar.component.js +29 -0
  83. package/esm2015/lib/topbar/topbar.module.js +32 -0
  84. package/esm2015/lib/uploader/uploader-drag-drop.directive.js +49 -0
  85. package/esm2015/lib/uploader/uploader.component.js +70 -0
  86. package/esm2015/lib/uploader/uploader.module.js +33 -0
  87. package/esm2015/lib/version/version.service.js +38 -0
  88. package/esm2015/lib/view-content/type-converters/booleanTypeConverter.js +29 -0
  89. package/esm2015/lib/view-content/type-converters/dateTypeConverter.js +30 -0
  90. package/esm2015/lib/view-content/type-converters/enumTypeConverter.js +24 -0
  91. package/esm2015/lib/view-content/type-converters/relatedFilesTypeConverter.js +24 -0
  92. package/esm2015/lib/view-content/type-converters/stringReplaceUnderscoreTypeConverter.js +27 -0
  93. package/esm2015/lib/view-content/type-converters/stringTypeConverter.js +24 -0
  94. package/esm2015/lib/view-content/type-converters/type-converters.model.js +37 -0
  95. package/esm2015/lib/view-content/view-content.service.js +51 -0
  96. package/esm2015/lib/webcam/webcam.component.js +103 -0
  97. package/esm2015/lib/webcam/webcam.module.js +32 -0
  98. package/esm2015/lib/widget/widget.component.js +80 -0
  99. package/esm2015/lib/widget/widget.module.js +30 -0
  100. package/esm2015/public_api.js +84 -0
  101. package/esm2015/valtimo-components.js +27 -0
  102. package/fesm2015/valtimo-components.js +4536 -0
  103. package/fesm2015/valtimo-components.js.map +1 -0
  104. package/lib/alert/alert.component.d.ts +21 -0
  105. package/lib/alert/alert.module.d.ts +2 -0
  106. package/lib/alert/alert.service.d.ts +21 -0
  107. package/lib/bpmn-js-diagram/bpmn-js-diagram.component.d.ts +27 -0
  108. package/lib/bpmn-js-diagram/bpmn-js-diagram.module.d.ts +2 -0
  109. package/lib/breadcrumb-navigation/breadcrumb-navigation.component.d.ts +14 -0
  110. package/lib/breadcrumb-navigation/breadcrumb-navigation.module.d.ts +2 -0
  111. package/lib/camunda/form/camunda-form.components.d.ts +9 -0
  112. package/lib/camunda/form/camunda-form.module.d.ts +2 -0
  113. package/lib/camunda/form/custom/camunda-custom-form.component.d.ts +8 -0
  114. package/lib/camunda/form/custom/camunda-custom-form.module.d.ts +2 -0
  115. package/lib/camunda/form/generated/camunda-generated-form.component.d.ts +19 -0
  116. package/lib/camunda/form/generated/camunda-generated-form.module.d.ts +2 -0
  117. package/lib/camunda/form/generated/formfield/boolean/camunda-boolean-formfield.component.d.ts +7 -0
  118. package/lib/camunda/form/generated/formfield/camunda-formfield-generator.directive.d.ts +13 -0
  119. package/lib/camunda/form/generated/formfield/camunda-formfield.service.d.ts +7 -0
  120. package/lib/camunda/form/generated/formfield/choicefield/camunda-choicefield-formfield.component.d.ts +12 -0
  121. package/lib/camunda/form/generated/formfield/date/camunda-date-formfield.component.d.ts +14 -0
  122. package/lib/camunda/form/generated/formfield/enum/camunda-enum-formfield.component.d.ts +10 -0
  123. package/lib/camunda/form/generated/formfield/formfield.model.d.ts +20 -0
  124. package/lib/camunda/form/generated/formfield/long/camunda-long-formfield.component.d.ts +7 -0
  125. package/lib/camunda/form/generated/formfield/string/camunda-string-formfield.component.d.ts +7 -0
  126. package/lib/camunda/form/generated/formfield/textarea/camunda-textarea-formfield.component.d.ts +7 -0
  127. package/lib/camunda/form/generated/formfield/validation/camunda-formfield-validation.component.d.ts +10 -0
  128. package/lib/camunda/form/generated/formfield/validation/date.validators.d.ts +3 -0
  129. package/lib/card/card.component.d.ts +16 -0
  130. package/lib/card/card.module.d.ts +2 -0
  131. package/lib/components.module.d.ts +2 -0
  132. package/lib/data-list/data-list.component.d.ts +7 -0
  133. package/lib/data-list/data-list.module.d.ts +2 -0
  134. package/lib/dropzone/dropzone.component.d.ts +38 -0
  135. package/lib/dropzone/dropzone.module.d.ts +2 -0
  136. package/lib/field-auto-focus/field-auto-focus.directive.d.ts +6 -0
  137. package/lib/field-auto-focus/field-auto-focus.module.d.ts +2 -0
  138. package/lib/file-size/file-size.module.d.ts +2 -0
  139. package/lib/file-size/file-size.pipe.d.ts +5 -0
  140. package/lib/filter-sidebar/filter-sidebar.component.d.ts +8 -0
  141. package/lib/filter-sidebar/filter-sidebar.module.d.ts +2 -0
  142. package/lib/form-io/form-io-builder.component.d.ts +8 -0
  143. package/lib/form-io/form-io-uploader/form-io-uploader-edit-form.d.ts +61 -0
  144. package/lib/form-io/form-io-uploader/form-io-uploader.component.d.ts +29 -0
  145. package/lib/form-io/form-io-uploader/form-io-uploader.formio.d.ts +3 -0
  146. package/lib/form-io/form-io.component.d.ts +45 -0
  147. package/lib/form-io/form-io.module.d.ts +2 -0
  148. package/lib/form-io/formio-config.d.ts +6 -0
  149. package/lib/form-io/services/form-io-dom.service.d.ts +6 -0
  150. package/lib/form-io/services/form-io-state.service.d.ts +10 -0
  151. package/lib/left-sidebar/left-sidebar.component.d.ts +34 -0
  152. package/lib/left-sidebar/left-sidebar.module.d.ts +2 -0
  153. package/lib/list/ListFilterPipe.directive.d.ts +4 -0
  154. package/lib/list/list.component.d.ts +43 -0
  155. package/lib/list/list.module.d.ts +2 -0
  156. package/lib/menu/menu-item-text.component.d.ts +4 -0
  157. package/lib/menu/menu-routing.module.d.ts +2 -0
  158. package/lib/menu/menu.component.d.ts +18 -0
  159. package/lib/menu/menu.init.d.ts +3 -0
  160. package/lib/menu/menu.module.d.ts +2 -0
  161. package/lib/menu/menu.service.d.ts +23 -0
  162. package/lib/menu/submenu-item-text.component.d.ts +4 -0
  163. package/lib/modal/modal.component.d.ts +12 -0
  164. package/lib/modal/modal.module.d.ts +2 -0
  165. package/lib/page-header/page-header.component.d.ts +5 -0
  166. package/lib/page-header/page-header.module.d.ts +2 -0
  167. package/lib/page-title/page-title.component.d.ts +19 -0
  168. package/lib/page-title/page-title.module.d.ts +2 -0
  169. package/lib/progress-bar/progress-bar.component.d.ts +2 -0
  170. package/lib/progress-bar/progress-bar.module.d.ts +2 -0
  171. package/lib/right-sidebar/right-sidebar.component.d.ts +34 -0
  172. package/lib/right-sidebar/right-sidebar.module.d.ts +2 -0
  173. package/lib/searchable-dropdown/searchable-dropdown.component.d.ts +39 -0
  174. package/lib/searchable-dropdown/searchable-dropdown.module.d.ts +2 -0
  175. package/lib/searchable-dropdown-select/searchable-dropdown-select.component.d.ts +19 -0
  176. package/lib/searchable-dropdown-select/searchable-dropdown-select.module.d.ts +2 -0
  177. package/lib/spinner/spinner.component.d.ts +9 -0
  178. package/lib/spinner/spinner.module.d.ts +2 -0
  179. package/lib/timeline/timeline.component.d.ts +4 -0
  180. package/lib/timeline/timeline.module.d.ts +2 -0
  181. package/lib/topbar/topbar.component.d.ts +3 -0
  182. package/lib/topbar/topbar.module.d.ts +2 -0
  183. package/lib/uploader/uploader-drag-drop.directive.d.ts +7 -0
  184. package/lib/uploader/uploader.component.d.ts +15 -0
  185. package/lib/uploader/uploader.module.d.ts +2 -0
  186. package/lib/version/version.service.d.ts +8 -0
  187. package/lib/view-content/type-converters/booleanTypeConverter.d.ts +5 -0
  188. package/lib/view-content/type-converters/dateTypeConverter.d.ts +5 -0
  189. package/lib/view-content/type-converters/enumTypeConverter.d.ts +5 -0
  190. package/lib/view-content/type-converters/relatedFilesTypeConverter.d.ts +5 -0
  191. package/lib/view-content/type-converters/stringReplaceUnderscoreTypeConverter.d.ts +6 -0
  192. package/lib/view-content/type-converters/stringTypeConverter.d.ts +5 -0
  193. package/lib/view-content/type-converters/type-converters.model.d.ts +5 -0
  194. package/lib/view-content/view-content.service.d.ts +8 -0
  195. package/lib/webcam/webcam.component.d.ts +20 -0
  196. package/lib/webcam/webcam.module.d.ts +2 -0
  197. package/lib/widget/widget.component.d.ts +28 -0
  198. package/lib/widget/widget.module.d.ts +2 -0
  199. package/package.json +34 -0
  200. package/public_api.d.ts +65 -0
  201. package/valtimo-components.d.ts +26 -0
  202. package/valtimo-components.metadata.json +1 -0
@@ -0,0 +1,131 @@
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 { HttpClient } from '@angular/common/http';
17
+ import { Component } from '@angular/core';
18
+ import { FormBuilder, FormControl } from '@angular/forms';
19
+ import { TranslateService } from '@ngx-translate/core';
20
+ import { ContextService } from '@valtimo/context';
21
+ import { UserProviderService } from '@valtimo/security';
22
+ import { NGXLogger } from 'ngx-logger';
23
+ import { combineLatest } from 'rxjs';
24
+ import { VersionService } from '../version/version.service';
25
+ export class RightSidebarComponent {
26
+ constructor(userProviderService, formBuilder, versionService, translate, contextService, http, logger) {
27
+ this.userProviderService = userProviderService;
28
+ this.formBuilder = formBuilder;
29
+ this.versionService = versionService;
30
+ this.translate = translate;
31
+ this.contextService = contextService;
32
+ this.http = http;
33
+ this.logger = logger;
34
+ }
35
+ ngOnInit() {
36
+ this.frequencies = [
37
+ 'emailNotificationOnMonday',
38
+ 'emailNotificationOnTuesday',
39
+ 'emailNotificationOnWednesday',
40
+ 'emailNotificationOnThursday',
41
+ 'emailNotificationOnFriday',
42
+ 'emailNotificationOnSaturday',
43
+ 'emailNotificationOnSunday'
44
+ ];
45
+ this.settingsForm = this.formBuilder.group({
46
+ taskNotifications: new FormControl(false),
47
+ emailNotifications: new FormControl(false),
48
+ emailNotificationOnMonday: new FormControl(false),
49
+ emailNotificationOnTuesday: new FormControl(false),
50
+ emailNotificationOnWednesday: new FormControl(false),
51
+ emailNotificationOnThursday: new FormControl(false),
52
+ emailNotificationOnFriday: new FormControl(false),
53
+ emailNotificationOnSaturday: new FormControl(false),
54
+ emailNotificationOnSunday: new FormControl(false)
55
+ });
56
+ this.getUserSettings();
57
+ }
58
+ loadContextSwitch() {
59
+ combineLatest([this.contextService.getUserContexts(), this.contextService.getUserContextActive()])
60
+ .subscribe(([userContexts, userContextActive]) => {
61
+ this.userContextActive = userContextActive;
62
+ this.userContexts = userContexts;
63
+ });
64
+ }
65
+ setUserContext(contextId) {
66
+ this.contextService.setUserContext(contextId).subscribe();
67
+ location.href = '/';
68
+ }
69
+ loadUserSettingsTab() {
70
+ this.userProviderService.getEmailNotificationSettings().subscribe(results => {
71
+ if (results !== null) {
72
+ this.settingsForm.controls.taskNotifications.setValue(results.taskNotifications);
73
+ this.settingsForm.controls.emailNotifications.setValue(results.emailNotifications);
74
+ this.settingsForm.controls.emailNotificationOnMonday.setValue(results.emailNotificationOnMonday);
75
+ this.settingsForm.controls.emailNotificationOnTuesday.setValue(results.emailNotificationOnTuesday);
76
+ this.settingsForm.controls.emailNotificationOnWednesday.setValue(results.emailNotificationOnWednesday);
77
+ this.settingsForm.controls.emailNotificationOnThursday.setValue(results.emailNotificationOnThursday);
78
+ this.settingsForm.controls.emailNotificationOnFriday.setValue(results.emailNotificationOnFriday);
79
+ this.settingsForm.controls.emailNotificationOnSaturday.setValue(results.emailNotificationOnSaturday);
80
+ this.settingsForm.controls.emailNotificationOnSunday.setValue(results.emailNotificationOnSunday);
81
+ }
82
+ else {
83
+ // default is true in the database, even if api returns no content
84
+ this.settingsForm.controls.taskNotifications.setValue(true);
85
+ }
86
+ });
87
+ this.getVersion();
88
+ }
89
+ getUserSettings() {
90
+ this.userProviderService.getUserSubject().subscribe(userIdentity => {
91
+ this.logger.debug('user', userIdentity);
92
+ this.userIdentity = userIdentity;
93
+ this.loadContextSwitch();
94
+ });
95
+ }
96
+ getVersion() {
97
+ this.versionService.getVersion().subscribe((build) => {
98
+ this.build = build;
99
+ });
100
+ }
101
+ onSettingsSubmit() {
102
+ if (!this.settingsForm.pristine) {
103
+ this.userProviderService.updateEmailNotificationSettings(this.settingsForm.value).subscribe();
104
+ }
105
+ }
106
+ updateUserLanguage(langKey) {
107
+ this.translate.use(langKey).subscribe(() => {
108
+ localStorage.setItem('langKey', langKey);
109
+ });
110
+ }
111
+ logout() {
112
+ this.userProviderService.logout();
113
+ }
114
+ }
115
+ RightSidebarComponent.decorators = [
116
+ { type: Component, args: [{
117
+ selector: 'valtimo-right-sidebar',
118
+ template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<nav class=\"be-right-sidebar\">\n <div class=\"sb-content\">\n <div class=\"tab-navigation\">\n <ul class=\"nav nav-tabs nav-justified\" role=\"tablist\">\n <li class=\"nav-item\" role=\"presentation\">\n <a class=\"nav-link active\" href=\"#account\" aria-controls=\"account\" role=\"tab\" data-toggle=\"tab\"\n translate=\"account.title\"></a>\n </li>\n <li class=\"nav-item\" role=\"presentation\">\n <a class=\"nav-link\" (click)=\"loadUserSettingsTab()\" href=\"#settings\" aria-controls=\"settings\" role=\"tab\"\n data-toggle=\"tab\" translate=\"settings.title\"></a>\n </li>\n </ul>\n </div>\n <div class=\"tab-panel\">\n <div class=\"tab-content\">\n <!-- account -->\n <div class=\"tab-pane tab-account active\" id=\"account\" role=\"tabpanel\">\n <div class=\"p-3 be-scroller-settings\" *ngIf=\"userIdentity\">\n <div class=\"content\">\n <div class=\"category-title border-0 m-0\">\n <div class=\"p-0 text-muted\">\n <dl class=\"row mb-0\">\n <dt class=\"col-sm-3\">Email</dt>\n <dd class=\"col-sm-9 mb-0 text-bold\">{{ userIdentity.email }}</dd>\n <ng-container *ngIf=\"userIdentity.username\">\n <dt class=\"col-sm-3\">Username</dt>\n <dd class=\"col-sm-9 mb-0 text-bold\">{{ userIdentity.username }}</dd>\n </ng-container>\n <dt class=\"col-sm-3\">Name</dt>\n <dd class=\"col-sm-9 mb-0 text-bold\">{{ userIdentity.firstName + ' ' + userIdentity.lastName }}</dd>\n </dl>\n </div>\n </div>\n <!-- context switch -->\n <ul class=\"settings-list\" *ngIf=\"userContexts?.length > 1\">\n <li ngbTooltip=\"{{ 'settings.context.title' | translate }}\">\n <select class=\"form-control\" #contextSelect (change)=\"setUserContext(+contextSelect.value)\">\n <option *ngFor=\"let context of userContexts\" [value]=\"context.id\"\n [selected]=\"context.id === userContextActive.id\">\n {{ context.name }}\n </option>\n </select>\n </li>\n </ul>\n <ul class=\"list-group list-group-flush m-0\">\n <li class=\"bg-transparent list-group-item px-0\">\n <a href=\"https://docs.valtimo.nl\" target=\"_blank\" class=\"d-block\" translate=\"account.links.help\"></a>\n </li>\n <li class=\"bg-transparent list-group-item px-0\">\n <a href=\"https://www.valtimo.nl/feedback/\" target=\"_blank\" class=\"d-block\"\n translate=\"account.links.feedback\"></a>\n </li>\n <li class=\"bg-transparent list-group-item px-0\">\n <a href=\"https://forum.valtimo.nl\" target=\"_blank\" class=\"d-block\"\n translate=\"account.links.forum\"></a>\n </li>\n <li class=\"bg-transparent list-group-item px-0\">\n <a href=\"javascript:void(0)\" class=\"d-block\" (click)=\"logout()\"\n translate=\"account.links.signOut\"></a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n\n <!-- settings -->\n <div class=\"tab-pane tab-settings\" id=\"settings\" role=\"tabpanel\">\n <div class=\"p-3 be-scroller-settings\">\n <div class=\"content\">\n <span class=\"category-title\" translate=\"settings.language.title\"></span>\n <ul class=\"settings-list\">\n <li>\n <select class=\"form-control\" #langSelect (change)=\"updateUserLanguage(langSelect.value)\">\n <option *ngFor=\"let lang of translate.getLangs()\" [value]=\"lang\"\n [selected]=\"lang === translate.currentLang\">\n {{ 'settings.language.options.' + lang | translate }}\n </option>\n </select>\n </li>\n </ul>\n\n <form [formGroup]=\"settingsForm\">\n <span class=\"category-title\" translate=\"settings.notification.title\"></span>\n <ul class=\"settings-list m-0\">\n <li>\n <div class=\"switch-button switch-button-sm switch-button-success\">\n <input type=\"checkbox\" formControlName=\"taskNotifications\" id=\"taskNotifications\"\n (ngModelChange)=\"onSettingsSubmit()\"><span>\n <label for=\"taskNotifications\"></label></span>\n </div>\n <span class=\"name\" translate=\"settings.notification.taskNotifications\"></span>\n <div class=\"text-muted info-text\" translate=\"settings.notification.taskNotificationsIntro\"></div>\n </li>\n\n <li>\n <div class=\"switch-button switch-button-sm switch-button-success\">\n <input type=\"checkbox\" formControlName=\"emailNotifications\" id=\"emailNotifications\"\n (ngModelChange)=\"onSettingsSubmit()\"><span>\n <label for=\"emailNotifications\"></label></span>\n </div>\n <span class=\"name\" translate=\"settings.notification.emailNotifications\"></span>\n <div class=\"text-muted info-text\" translate=\"settings.notification.emailNotificationsIntro\"></div>\n </li>\n </ul>\n\n <div *ngIf=\"settingsForm.value.emailNotifications\">\n <ul class=\"settings-list\">\n <li *ngFor=\"let frequency of frequencies\">\n <div class=\"switch-button switch-button-sm switch-button-success\">\n <input type=\"checkbox\" formControlName=\"{{ frequency }}\" id=\"{{ frequency }}\"\n (ngModelChange)=\"onSettingsSubmit()\"><span>\n <label for=\"{{ frequency }}\"></label></span>\n </div>\n <span class=\"name\">{{ 'settings.notification.' + frequency | translate }}</span>\n </li>\n </ul>\n </div>\n </form>\n\n <div class=\"version-holder\">\n <span class=\"category-title\" translate=\"settings.version.title\"></span>\n <ul class=\"settings-list\">\n <li *ngIf=\"build\">\n <div class=\"name\">{{ build.title }}</div>\n <div class=\"text-muted\">{{ build.version }}</div>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n </div>\n </div>\n</nav>\n",
119
+ styles: [".be-scroller-settings{padding-bottom:150px!important}.version-holder{background-color:#f8f9fa;bottom:0;position:fixed;width:259px}.info-text{line-height:1em!important;margin-bottom:15px;padding-right:70px}"]
120
+ },] }
121
+ ];
122
+ RightSidebarComponent.ctorParameters = () => [
123
+ { type: UserProviderService },
124
+ { type: FormBuilder },
125
+ { type: VersionService },
126
+ { type: TranslateService },
127
+ { type: ContextService },
128
+ { type: HttpClient },
129
+ { type: NGXLogger }
130
+ ];
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlnaHQtc2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9yaWdodC1zaWRlYmFyL3JpZ2h0LXNpZGViYXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN2QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQU81RCxNQUFNLE9BQU8scUJBQXFCO0lBU2hDLFlBQ1UsbUJBQXdDLEVBQ3hDLFdBQXdCLEVBQ3hCLGNBQThCLEVBQy9CLFNBQTJCLEVBQzFCLGNBQThCLEVBQzlCLElBQWdCLEVBQ2hCLE1BQWlCO1FBTmpCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQy9CLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzFCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hC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ZTtRQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3pDLFlBQVksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDcEMsQ0FBQzs7O1lBOUdGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsdUJBQXVCO2dCQUNqQyxpcVBBQTZDOzthQUU5Qzs7O1lBVFEsbUJBQW1CO1lBSm5CLFdBQVc7WUFPWCxjQUFjO1lBTmQsZ0JBQWdCO1lBQ2hCLGNBQWM7WUFKZCxVQUFVO1lBT1YsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIwIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBDb250ZXh0U2VydmljZSB9IGZyb20gJ0B2YWx0aW1vL2NvbnRleHQnO1xuaW1wb3J0IHsgVXNlcklkZW50aXR5LCBWYWx0aW1vVmVyc2lvbiB9IGZyb20gJ0B2YWx0aW1vL2NvbnRyYWN0JztcbmltcG9ydCB7IFVzZXJQcm92aWRlclNlcnZpY2UgfSBmcm9tICdAdmFsdGltby9zZWN1cml0eSc7XG5pbXBvcnQgeyBOR1hMb2dnZXIgfSBmcm9tICduZ3gtbG9nZ2VyJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFZlcnNpb25TZXJ2aWNlIH0gZnJvbSAnLi4vdmVyc2lvbi92ZXJzaW9uLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLXJpZ2h0LXNpZGViYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vcmlnaHQtc2lkZWJhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JpZ2h0LXNpZGViYXIuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIFJpZ2h0U2lkZWJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgcHVibGljIHVzZXJJZGVudGl0eTogVXNlcklkZW50aXR5O1xuICBwdWJsaWMgZnJlcXVlbmNpZXM6IEFycmF5PGFueT47XG4gIHB1YmxpYyBzZXR0aW5nc0Zvcm06IEZvcm1Hcm91cDtcbiAgcHVibGljIGJ1aWxkOiBWYWx0aW1vVmVyc2lvbjtcbiAgcHVibGljIHVzZXJDb250ZXh0czogQXJyYXk8YW55PjtcbiAgcHVibGljIHVzZXJDb250ZXh0QWN0aXZlOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB1c2VyUHJvdmlkZXJTZXJ2aWNlOiBVc2VyUHJvdmlkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgdmVyc2lvblNlcnZpY2U6IFZlcnNpb25TZXJ2aWNlLFxuICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgbG9nZ2VyOiBOR1hMb2dnZXJcbiAgKSB7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZyZXF1ZW5jaWVzID0gW1xuICAgICAgJ2VtYWlsTm90aWZpY2F0aW9uT25Nb25kYXknLFxuICAgICAgJ2VtYWlsTm90aWZpY2F0aW9uT25UdWVzZGF5JyxcbiAgICAgICdlbWFpbE5vdGlmaWNhdGlvbk9uV2VkbmVzZGF5JyxcbiAgICAgICdlbWFpbE5vdGlmaWNhdGlvbk9uVGh1cnNkYXknLFxuICAgICAgJ2VtYWlsTm90aWZpY2F0aW9uT25GcmlkYXknLFxuICAgICAgJ2VtYWlsTm90aWZpY2F0aW9uT25TYXR1cmRheScsXG4gICAgICAnZW1haWxOb3RpZmljYXRpb25PblN1bmRheSdcbiAgICBdO1xuICAgIHRoaXMuc2V0dGluZ3NGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICB0YXNrTm90aWZpY2F0aW9uczogbmV3IEZvcm1Db250cm9sKGZhbHNlKSxcbiAgICAgIGVtYWlsTm90aWZpY2F0aW9uczogbmV3IEZvcm1Db250cm9sKGZhbHNlKSxcbiAgICAgIGVtYWlsTm90aWZpY2F0aW9uT25Nb25kYXk6IG5ldyBGb3JtQ29udHJvbChmYWxzZSksXG4gICAgICBlbWFpbE5vdGlmaWNhdGlvbk9uVHVlc2RheTogbmV3IEZvcm1Db250cm9sKGZhbHNlKSxcbiAgICAgIGVtYWlsTm90aWZpY2F0aW9uT25XZWRuZXNkYXk6IG5ldyBGb3JtQ29udHJvbChmYWxzZSksXG4gICAgICBlbWFpbE5vdGlmaWNhdGlvbk9uVGh1cnNkYXk6IG5ldyBGb3JtQ29udHJvbChmYWxzZSksXG4gICAgICBlbWFpbE5vdGlmaWNhdGlvbk9uRnJpZGF5OiBuZXcgRm9ybUNvbnRyb2woZmFsc2UpLFxuICAgICAgZW1haWxOb3RpZmljYXRpb25PblNhdHVyZGF5OiBuZXcgRm9ybUNvbnRyb2woZmFsc2UpLFxuICAgICAgZW1haWxOb3RpZmljYXRpb25PblN1bmRheTogbmV3IEZvcm1Db250cm9sKGZhbHNlKVxuICAgIH0pO1xuICAgIHRoaXMuZ2V0VXNlclNldHRpbmdzKCk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRDb250ZXh0U3dpdGNoKCkge1xuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuY29udGV4dFNlcnZpY2UuZ2V0VXNlckNvbnRleHRzKCksIHRoaXMuY29udGV4dFNlcnZpY2UuZ2V0VXNlckNvbnRleHRBY3RpdmUoKV0pXG4gICAgICAuc3Vic2NyaWJlKChbdXNlckNvbnRleHRzLCB1c2VyQ29udGV4dEFjdGl2ZV0pID0+IHtcbiAgICAgICAgdGhpcy51c2VyQ29udGV4dEFjdGl2ZSA9IHVzZXJDb250ZXh0QWN0aXZlO1xuICAgICAgICB0aGlzLnVzZXJDb250ZXh0cyA9IHVzZXJDb250ZXh0cztcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHNldFVzZXJDb250ZXh0KGNvbnRleHRJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5jb250ZXh0U2VydmljZS5zZXRVc2VyQ29udGV4dChjb250ZXh0SWQpLnN1YnNjcmliZSgpO1xuICAgIGxvY2F0aW9uLmhyZWYgPSAnLyc7XG4gIH1cblxuICBwdWJsaWMgbG9hZFVzZXJTZXR0aW5nc1RhYigpIHtcbiAgICB0aGlzLnVzZXJQcm92aWRlclNlcnZpY2UuZ2V0RW1haWxOb3RpZmljYXRpb25TZXR0aW5ncygpLnN1YnNjcmliZShyZXN1bHRzID0+IHtcbiAgICAgIGlmIChyZXN1bHRzICE9PSBudWxsKSB7XG4gICAgICAgIHRoaXMuc2V0dGluZ3NGb3JtLmNvbnRyb2xzLnRhc2tOb3RpZmljYXRpb25zLnNldFZhbHVlKHJlc3VsdHMudGFza05vdGlmaWNhdGlvbnMpO1xuICAgICAgICB0aGlzLnNldHRpbmdzRm9ybS5jb250cm9scy5lbWFpbE5vdGlmaWNhdGlvbnMuc2V0VmFsdWUocmVzdWx0cy5lbWFpbE5vdGlmaWNhdGlvbnMpO1xuICAgICAgICB0aGlzLnNldHRpbmdzRm9ybS5jb250cm9scy5lbWFpbE5vdGlmaWNhdGlvbk9uTW9uZGF5LnNldFZhbHVlKHJlc3VsdHMuZW1haWxOb3RpZmljYXRpb25Pbk1vbmRheSk7XG4gICAgICAgIHRoaXMuc2V0dGluZ3NGb3JtLmNvbnRyb2xzLmVtYWlsTm90aWZpY2F0aW9uT25UdWVzZGF5LnNldFZhbHVlKHJlc3VsdHMuZW1haWxOb3RpZmljYXRpb25PblR1ZXNkYXkpO1xuICAgICAgICB0aGlzLnNldHRpbmdzRm9ybS5jb250cm9scy5lbWFpbE5vdGlmaWNhdGlvbk9uV2VkbmVzZGF5LnNldFZhbHVlKHJlc3VsdHMuZW1haWxOb3RpZmljYXRpb25PbldlZG5lc2RheSk7XG4gICAgICAgIHRoaXMuc2V0dGluZ3NGb3JtLmNvbnRyb2xzLmVtYWlsTm90aWZpY2F0aW9uT25UaHVyc2RheS5zZXRWYWx1ZShyZXN1bHRzLmVtYWlsTm90aWZpY2F0aW9uT25UaHVyc2RheSk7XG4gICAgICAgIHRoaXMuc2V0dGluZ3NGb3JtLmNvbnRyb2xzLmVtYWlsTm90aWZpY2F0aW9uT25GcmlkYXkuc2V0VmFsdWUocmVzdWx0cy5lbWFpbE5vdGlmaWNhdGlvbk9uRnJpZGF5KTtcbiAgICAgICAgdGhpcy5zZXR0aW5nc0Zvcm0uY29udHJvbHMuZW1haWxOb3RpZmljYXRpb25PblNhdHVyZGF5LnNldFZhbHVlKHJlc3VsdHMuZW1haWxOb3RpZmljYXRpb25PblNhdHVyZGF5KTtcbiAgICAgICAgdGhpcy5zZXR0aW5nc0Zvcm0uY29udHJvbHMuZW1haWxOb3RpZmljYXRpb25PblN1bmRheS5zZXRWYWx1ZShyZXN1bHRzLmVtYWlsTm90aWZpY2F0aW9uT25TdW5kYXkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gZGVmYXVsdCBpcyB0cnVlIGluIHRoZSBkYXRhYmFzZSwgZXZlbiBpZiBhcGkgcmV0dXJucyBubyBjb250ZW50XG4gICAgICAgIHRoaXMuc2V0dGluZ3NGb3JtLmNvbnRyb2xzLnRhc2tOb3RpZmljYXRpb25zLnNldFZhbHVlKHRydWUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuZ2V0VmVyc2lvbigpO1xuICB9XG5cbiAgcHVibGljIGdldFVzZXJTZXR0aW5ncygpIHtcbiAgICB0aGlzLnVzZXJQcm92aWRlclNlcnZpY2UuZ2V0VXNlclN1YmplY3QoKS5zdWJzY3JpYmUodXNlcklkZW50aXR5ID0+IHtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCd1c2VyJywgdXNlcklkZW50aXR5KTtcbiAgICAgIHRoaXMudXNlcklkZW50aXR5ID0gdXNlcklkZW50aXR5O1xuICAgICAgdGhpcy5sb2FkQ29udGV4dFN3aXRjaCgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldFZlcnNpb24oKSB7XG4gICAgdGhpcy52ZXJzaW9uU2VydmljZS5nZXRWZXJzaW9uKCkuc3Vic2NyaWJlKChidWlsZDogVmFsdGltb1ZlcnNpb24pID0+IHtcbiAgICAgIHRoaXMuYnVpbGQgPSBidWlsZDtcbiAgICB9KTtcbiAgfVxuXG4gIG9uU2V0dGluZ3NTdWJtaXQoKSB7XG4gICAgaWYgKCF0aGlzLnNldHRpbmdzRm9ybS5wcmlzdGluZSkge1xuICAgICAgdGhpcy51c2VyUHJvdmlkZXJTZXJ2aWNlLnVwZGF0ZUVtYWlsTm90aWZpY2F0aW9uU2V0dGluZ3ModGhpcy5zZXR0aW5nc0Zvcm0udmFsdWUpLnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVVzZXJMYW5ndWFnZShsYW5nS2V5OiBzdHJpbmcpIHtcbiAgICB0aGlzLnRyYW5zbGF0ZS51c2UobGFuZ0tleSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdsYW5nS2V5JywgbGFuZ0tleSk7XG4gICAgfSk7XG4gIH1cblxuICBsb2dvdXQoKSB7XG4gICAgdGhpcy51c2VyUHJvdmlkZXJTZXJ2aWNlLmxvZ291dCgpO1xuICB9XG5cbn1cbiJdfQ==
@@ -0,0 +1,49 @@
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 { RightSidebarComponent } from './right-sidebar.component';
19
+ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
20
+ import { RouterModule } from '@angular/router';
21
+ import { HttpClient } from '@angular/common/http';
22
+ import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
23
+ import { HttpLoaderFactory } from '@valtimo/contract';
24
+ import { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';
25
+ const ɵ0 = HttpLoaderFactory;
26
+ export class RightSidebarModule {
27
+ }
28
+ RightSidebarModule.decorators = [
29
+ { type: NgModule, args: [{
30
+ declarations: [RightSidebarComponent],
31
+ imports: [
32
+ CommonModule,
33
+ FormsModule,
34
+ ReactiveFormsModule,
35
+ RouterModule,
36
+ TranslateModule.forRoot({
37
+ loader: {
38
+ provide: TranslateLoader,
39
+ useFactory: ɵ0,
40
+ deps: [HttpClient]
41
+ }
42
+ }),
43
+ NgbTooltipModule
44
+ ],
45
+ exports: [RightSidebarComponent]
46
+ },] }
47
+ ];
48
+ export { ɵ0 };
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlnaHQtc2lkZWJhci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9yaWdodC1zaWRlYmFyL3JpZ2h0LXNpZGViYXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDaEUsT0FBTyxFQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFDLGVBQWUsRUFBRSxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztXQVl4QyxpQkFBaUI7QUFRckMsTUFBTSxPQUFPLGtCQUFrQjs7O1lBbEI5QixRQUFRLFNBQUM7Z0JBQ1IsWUFBWSxFQUFFLENBQUMscUJBQXFCLENBQUM7Z0JBQ3JDLE9BQU8sRUFBRTtvQkFDUCxZQUFZO29CQUNaLFdBQVc7b0JBQ1gsbUJBQW1CO29CQUNuQixZQUFZO29CQUNaLGVBQWUsQ0FBQyxPQUFPLENBQUM7d0JBQ3RCLE1BQU0sRUFBRTs0QkFDTixPQUFPLEVBQUUsZUFBZTs0QkFDeEIsVUFBVSxJQUFtQjs0QkFDN0IsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDO3lCQUNuQjtxQkFDRixDQUFDO29CQUNGLGdCQUFnQjtpQkFDakI7Z0JBQ0QsT0FBTyxFQUFFLENBQUMscUJBQXFCLENBQUM7YUFDakMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtSaWdodFNpZGViYXJDb21wb25lbnR9IGZyb20gJy4vcmlnaHQtc2lkZWJhci5jb21wb25lbnQnO1xuaW1wb3J0IHtGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtSb3V0ZXJNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0h0dHBDbGllbnR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7VHJhbnNsYXRlTG9hZGVyLCBUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtIdHRwTG9hZGVyRmFjdG9yeX0gZnJvbSAnQHZhbHRpbW8vY29udHJhY3QnO1xuaW1wb3J0IHtOZ2JUb29sdGlwTW9kdWxlfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1JpZ2h0U2lkZWJhckNvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLmZvclJvb3Qoe1xuICAgICAgbG9hZGVyOiB7XG4gICAgICAgIHByb3ZpZGU6IFRyYW5zbGF0ZUxvYWRlcixcbiAgICAgICAgdXNlRmFjdG9yeTogSHR0cExvYWRlckZhY3RvcnksXG4gICAgICAgIGRlcHM6IFtIdHRwQ2xpZW50XVxuICAgICAgfVxuICAgIH0pLFxuICAgIE5nYlRvb2x0aXBNb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW1JpZ2h0U2lkZWJhckNvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgUmlnaHRTaWRlYmFyTW9kdWxlIHtcbn1cbiJdfQ==
@@ -0,0 +1,185 @@
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, EventEmitter, HostListener, Input, Output, QueryList, ViewChildren } from '@angular/core';
17
+ import { FormControl } from '@angular/forms';
18
+ import { BehaviorSubject, combineLatest, fromEvent } from 'rxjs';
19
+ import { debounceTime, take } from 'rxjs/operators';
20
+ export class SearchableDropdownComponent {
21
+ constructor() {
22
+ this.width = 250;
23
+ this.itemSelected = new EventEmitter();
24
+ this.searchId = 'search';
25
+ this.searchTerm = new FormControl('');
26
+ this.focusedItemId$ = new BehaviorSubject(this.searchId);
27
+ this.open$ = new BehaviorSubject(false);
28
+ this.filteredItems$ = new BehaviorSubject(undefined);
29
+ this.wasInside = false;
30
+ this.mouseOnList$ = new BehaviorSubject(false);
31
+ }
32
+ clickInside() {
33
+ this.wasInside = true;
34
+ }
35
+ clickout() {
36
+ if (!this.wasInside) {
37
+ this.closeDropdown();
38
+ }
39
+ this.wasInside = false;
40
+ }
41
+ ngOnInit() {
42
+ this.openKeysSubscription();
43
+ this.openSearchSubscription();
44
+ }
45
+ ngOnChanges(changes) {
46
+ const itemChanges = changes.items;
47
+ const currenItems = itemChanges.currentValue;
48
+ if (itemChanges && !itemChanges.previousValue && currenItems) {
49
+ this.filteredItems$.next(currenItems);
50
+ }
51
+ }
52
+ ngOnDestroy() {
53
+ this.keySubscription.unsubscribe();
54
+ this.searchSubscription.unsubscribe();
55
+ }
56
+ openDropdown() {
57
+ this.open$.next(true);
58
+ }
59
+ hoverOverButton(id) {
60
+ this.focusedItemId$.next(id);
61
+ }
62
+ mouseEnterList() {
63
+ this.mouseOnList$.next(true);
64
+ }
65
+ mouseLeaveList() {
66
+ this.mouseOnList$.next(false);
67
+ }
68
+ resetFocus() {
69
+ this.focusedItemId$.next(this.searchId);
70
+ }
71
+ submit(id) {
72
+ this.itemSelected.emit(id);
73
+ }
74
+ closeDropdown() {
75
+ this.searchTerm.setValue('');
76
+ this.resetFocus();
77
+ this.open$.next(false);
78
+ }
79
+ openKeysSubscription() {
80
+ this.keySubscription = fromEvent(document, 'keyup')
81
+ .pipe(debounceTime(50))
82
+ .subscribe((event) => {
83
+ combineLatest([this.mouseOnList$, this.filteredItems$, this.focusedItemId$])
84
+ .pipe(take(1))
85
+ .subscribe(([mouseOnList, items, focusedId]) => {
86
+ const length = items.length;
87
+ const focusedIndex = items.findIndex((item) => item.id === focusedId);
88
+ const code = event.code;
89
+ const shiftKey = event.shiftKey;
90
+ const down = 'ArrowDown';
91
+ const tab = 'Tab';
92
+ const up = 'ArrowUp';
93
+ const enter = 'Enter';
94
+ const escape = 'Escape';
95
+ // close dropdown on pressing escape
96
+ if (code === escape) {
97
+ this.closeDropdown();
98
+ }
99
+ // submit item when focus is on an item in the list and enter is pressed
100
+ if (code === enter && focusedId !== this.searchId) {
101
+ this.submit(focusedId);
102
+ }
103
+ // only handle tab or arrow keypresses when items are shown and the mouse is not on the list
104
+ if (length > 0 && !mouseOnList) {
105
+ // handle moving down in the list with arrow down or tab
106
+ if (code === down || (code === tab && !shiftKey)) {
107
+ // move focus to first item in the list when focus is on search box
108
+ if (focusedId === this.searchId) {
109
+ this.focusedItemId$.next(items[0].id);
110
+ this.scrollButtonIntoView(focusedId);
111
+ // move focus to next item in the list if focus is not on last item
112
+ }
113
+ else if (focusedIndex + 1 < length) {
114
+ this.focusedItemId$.next(items[focusedIndex + 1].id);
115
+ this.scrollButtonIntoView(focusedId);
116
+ }
117
+ // handle moving up in the list with up arrow up or shift+tab
118
+ }
119
+ else if ((code === up || (code === tab && shiftKey)) && focusedId !== this.searchId) {
120
+ // move to previous item if focus is not on the first item in the list
121
+ if (focusedIndex > 0) {
122
+ this.focusedItemId$.next(items[focusedIndex - 1].id);
123
+ this.scrollButtonIntoView(focusedId);
124
+ // move focus to search box if focus is on first item in the list
125
+ }
126
+ else {
127
+ this.resetFocus();
128
+ }
129
+ }
130
+ }
131
+ });
132
+ });
133
+ }
134
+ openSearchSubscription() {
135
+ this.searchSubscription = this.searchTerm.valueChanges.subscribe((searchTerm) => {
136
+ this.focusedItemId$.pipe(take(1)).subscribe((focusedItemId) => {
137
+ if (!searchTerm) {
138
+ this.filteredItems$.next(this.items);
139
+ }
140
+ else {
141
+ const filteredItems = this.items.filter((item) => item.text.toUpperCase().includes(searchTerm.toUpperCase()));
142
+ this.filteredItems$.next(filteredItems);
143
+ // move focus to search box if filtered list length is 0 or previously focused item is not in filtered list anymore
144
+ if (filteredItems.length === 0 || !filteredItems.some((item) => item.id === focusedItemId)) {
145
+ this.resetFocus();
146
+ }
147
+ }
148
+ // move scrolling button into view to end of queue, so that DOM can be updated first
149
+ setTimeout(() => {
150
+ this.scrollButtonIntoView(focusedItemId);
151
+ });
152
+ });
153
+ });
154
+ }
155
+ scrollButtonIntoView(id) {
156
+ this.filteredItems$.pipe(take(1)).subscribe((items) => {
157
+ const focusItemIndex = items.findIndex((item) => item.id === id);
158
+ const focusedButton = this.buttons.toArray()[focusItemIndex];
159
+ if (focusedButton) {
160
+ focusedButton.nativeElement.scrollIntoView({ behavior: 'smooth', block: 'center' });
161
+ }
162
+ });
163
+ }
164
+ }
165
+ SearchableDropdownComponent.decorators = [
166
+ { type: Component, args: [{
167
+ selector: 'valtimo-searchable-dropdown',
168
+ template: "<ng-container *ngIf=\"buttonText && items\">\n <ng-container [ngTemplateOutlet]=\"(open$ | async) ? opened : closed\"> </ng-container>\n</ng-container>\n\n<ng-template #closed>\n <ng-container *ngIf=\"style === 'button' || !style\">\n <button class=\"btn btn-primary btn-sm dropdown-size\" (click)=\"openDropdown()\" [style.width.px]=\"width\">\n {{ buttonText }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"style === 'underlinedText'\">\n <h5 class=\"underline-button\" (click)=\"openDropdown()\" [style.width.px]=\"width\">\n <b>\n {{ buttonText }}\n </b>\n </h5>\n </ng-container>\n</ng-template>\n\n<ng-template #opened>\n <div class=\"dropdown-container\" [style.width.px]=\"width\">\n <div class=\"dropdown-size search\" [style.width.px]=\"width\">\n <input #search [ngClass]=\"{ disabled: disabled }\" [placeholder]=\"searchText\" [formControl]=\"searchTerm\" />\n {{ search.focus() }}\n </div>\n <div class=\"dropdown-list\" (mouseenter)=\"mouseEnterList()\" (mouseleave)=\"mouseLeaveList()\">\n <ng-container *ngIf=\"filteredItems$ | async as filteredItems\">\n <ng-container *ngIf=\"filteredItems.length > 0 && focusedItemId$ | async as focusedItemId; else noResults\">\n <button\n #button\n *ngFor=\"let item of filteredItems\"\n [ngClass]=\"{ focus: focusedItemId === item.id, disabled: disabled }\"\n class=\"dropdown-button dropdown-size\"\n (click)=\"submit(item.id)\"\n (mouseenter)=\"hoverOverButton(item.id)\"\n (mouseleave)=\"resetFocus()\"\n [style.width.px]=\"width\"\n >\n <span class=\"dropdown-button-text\">\n {{ item.text }}\n </span>\n </button>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <ng-container [ngTemplateOutlet]=\"space\"> </ng-container>\n</ng-template>\n\n<ng-template #noResults>\n <div class=\"dropdown-button dropdown-size disabled\" [style.width.px]=\"width\">\n <span class=\"dropdown-button-text\">{{ noResultsText }}</span>\n </div>\n</ng-template>\n\n<ng-template #space>\n <div *ngIf=\"style === 'button' || !style\" class=\"dropdown-size\" [style.width.px]=\"width\"></div>\n <h5 *ngIf=\"style === 'underlinedText'\" class=\"underline-button\"><b>-</b></h5>\n</ng-template>\n",
169
+ styles: [".dropdown-size{height:34px;width:250px}.underline-button{cursor:pointer;text-decoration:underline;width:250px}.dropdown-container{background-color:#fff;border:1px solid #e3e3e3;border-radius:3px;box-shadow:0 0 6px 0 rgba(0,0,0,.12);display:flex;flex-direction:column;max-height:300px;overflow:hidden;padding:7px 0;position:fixed;width:250px;z-index:999}.dropdown-list{list-style:none;margin:0;overflow:auto;overflow-x:hidden;padding:0;z-index:9999}.search{align-items:center;border-bottom:1px solid #dee2e6;display:flex;flex-shrink:0;height:44px;padding:8px 24px}.search input{padding:0;width:100%}.dropdown-button,.search input,.search input:focus{border:none;outline:none}.dropdown-button{align-items:center;background-color:#fff;color:#504e4e;cursor:pointer;display:flex;font-size:1rem;font-weight:400;padding:8px 24px}.dropdown-button.focus{background-color:#f5f5f5}.dropdown-button-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.disabled{color:#959595;cursor:default;pointer-events:none}"]
170
+ },] }
171
+ ];
172
+ SearchableDropdownComponent.propDecorators = {
173
+ style: [{ type: Input }],
174
+ items: [{ type: Input }],
175
+ buttonText: [{ type: Input }],
176
+ searchText: [{ type: Input }],
177
+ noResultsText: [{ type: Input }],
178
+ disabled: [{ type: Input }],
179
+ width: [{ type: Input }],
180
+ itemSelected: [{ type: Output }],
181
+ buttons: [{ type: ViewChildren, args: ['button',] }],
182
+ clickInside: [{ type: HostListener, args: ['click',] }],
183
+ clickout: [{ type: HostListener, args: ['document:click',] }]
184
+ };
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9zZWFyY2hhYmxlLWRyb3Bkb3duL3NlYXJjaGFibGUtZHJvcGRvd24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBQ04sU0FBUyxFQUVULFlBQVksRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUMvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBT3BELE1BQU0sT0FBTywyQkFBMkI7SUFMeEM7UUFZVyxVQUFLLEdBQUcsR0FBRyxDQUFDO1FBRVgsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBSTNCLGFBQVEsR0FBRyxRQUFRLENBQUM7UUFFNUIsZUFBVSxHQUFHLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRWpDLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQVMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTVELFVBQUssR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUU1QyxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFzQixTQUFTLENBQUMsQ0FBQztRQUV0RSxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBTVQsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztJQXlKdEUsQ0FBQztJQXRKQyxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUdELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNuQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDdEI7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUNsQyxNQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDO1FBQzdDLElBQUksV0FBVyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsSUFBSSxXQUFXLEVBQUU7WUFDNUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDdkM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELGVBQWUsQ0FBQyxFQUFVO1FBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsTUFBTSxDQUFDLEVBQVU7UUFDZixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRU8sYUFBYTtRQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixJQUFJLENBQUMsZUFBZSxHQUFHLFNBQVMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDO2FBQ2hELElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDdEIsU0FBUyxDQUFDLENBQUMsS0FBb0IsRUFBRSxFQUFFO1lBQ2xDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7aUJBQ3pFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ2IsU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUU7Z0JBQzdDLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7Z0JBQzVCLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssU0FBUyxDQUFDLENBQUM7Z0JBQ3RFLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ3hCLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7Z0JBQ2hDLE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQztnQkFDekIsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDO2dCQUNsQixNQUFNLEVBQUUsR0FBRyxTQUFTLENBQUM7Z0JBQ3JCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQztnQkFDdEIsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDO2dCQUV4QixvQ0FBb0M7Z0JBQ3BDLElBQUksSUFBSSxLQUFLLE1BQU0sRUFBRTtvQkFDbkIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2lCQUN0QjtnQkFFRCx3RUFBd0U7Z0JBQ3hFLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxTQUFTLEtBQUssSUFBSSxDQUFDLFFBQVEsRUFBRTtvQkFDakQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDeEI7Z0JBRUQsNEZBQTRGO2dCQUM1RixJQUFJLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7b0JBQzlCLHdEQUF3RDtvQkFDeEQsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO3dCQUNoRCxtRUFBbUU7d0JBQ25FLElBQUksU0FBUyxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUU7NEJBQy9CLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQzs0QkFDdEMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDOzRCQUNyQyxtRUFBbUU7eUJBQ3BFOzZCQUFNLElBQUksWUFBWSxHQUFHLENBQUMsR0FBRyxNQUFNLEVBQUU7NEJBQ3BDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7NEJBQ3JELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQzt5QkFDdEM7d0JBQ0QsNkRBQTZEO3FCQUM5RDt5QkFBTSxJQUFJLENBQUMsSUFBSSxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksS0FBSyxHQUFHLElBQUksUUFBUSxDQUFDLENBQUMsSUFBSSxTQUFTLEtBQUssSUFBSSxDQUFDLFFBQVEsRUFBRTt3QkFDckYsc0VBQXNFO3dCQUN0RSxJQUFJLFlBQVksR0FBRyxDQUFDLEVBQUU7NEJBQ3BCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7NEJBQ3JELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQzs0QkFDckMsaUVBQWlFO3lCQUNsRTs2QkFBTTs0QkFDTCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7eUJBQ25CO3FCQUNGO2lCQUNGO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxzQkFBc0I7UUFDNUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQzlFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFO2dCQUM1RCxJQUFJLENBQUMsVUFBVSxFQUFFO29CQUNmLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDdEM7cUJBQU07b0JBQ0wsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBRTlHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUV4QyxtSEFBbUg7b0JBQ25ILElBQUksYUFBYSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLGFBQWEsQ0FBQyxFQUFFO3dCQUMxRixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7cUJBQ25CO2lCQUNGO2dCQUVELG9GQUFvRjtnQkFDcEYsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDZCxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQzNDLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxFQUFVO1FBQ3JDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3BELE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDakUsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUU3RCxJQUFJLGFBQWEsRUFBRTtnQkFDakIsYUFBYSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO2FBQ3JGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzs7WUExTEYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSw2QkFBNkI7Z0JBQ3ZDLG8yRUFBbUQ7O2FBRXBEOzs7b0JBRUUsS0FBSztvQkFDTCxLQUFLO3lCQUNMLEtBQUs7eUJBQ0wsS0FBSzs0QkFDTCxLQUFLO3VCQUNMLEtBQUs7b0JBQ0wsS0FBSzsyQkFFTCxNQUFNO3NCQUVOLFlBQVksU0FBQyxRQUFROzBCQW9CckIsWUFBWSxTQUFDLE9BQU87dUJBS3BCLFlBQVksU0FBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZHJlblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRHJvcGRvd25CdXR0b25TdHlsZSwgRHJvcGRvd25JdGVtIH0gZnJvbSAnQHZhbHRpbW8vY29udHJhY3QnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmcm9tRXZlbnQsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLXNlYXJjaGFibGUtZHJvcGRvd24nLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoYWJsZS1kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlYXJjaGFibGUtZHJvcGRvd24uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hhYmxlRHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgc3R5bGU6IERyb3Bkb3duQnV0dG9uU3R5bGU7XG4gIEBJbnB1dCgpIGl0ZW1zOiBBcnJheTxEcm9wZG93bkl0ZW0+O1xuICBASW5wdXQoKSBidXR0b25UZXh0OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNlYXJjaFRleHQ6IHN0cmluZztcbiAgQElucHV0KCkgbm9SZXN1bHRzVGV4dDogc3RyaW5nO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcbiAgQElucHV0KCkgd2lkdGggPSAyNTA7XG5cbiAgQE91dHB1dCgpIGl0ZW1TZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAVmlld0NoaWxkcmVuKCdidXR0b24nKSBidXR0b25zOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzZWFyY2hJZCA9ICdzZWFyY2gnO1xuXG4gIHJlYWRvbmx5IHNlYXJjaFRlcm0gPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuXG4gIHJlYWRvbmx5IGZvY3VzZWRJdGVtSWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KHRoaXMuc2VhcmNoSWQpO1xuXG4gIHJlYWRvbmx5IG9wZW4kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcmVhZG9ubHkgZmlsdGVyZWRJdGVtcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFycmF5PERyb3Bkb3duSXRlbT4+KHVuZGVmaW5lZCk7XG5cbiAgcHJpdmF0ZSB3YXNJbnNpZGUgPSBmYWxzZTtcblxuICBwcml2YXRlIGtleVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIHByaXZhdGUgc2VhcmNoU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSByZWFkb25seSBtb3VzZU9uTGlzdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIGNsaWNrSW5zaWRlKCkge1xuICAgIHRoaXMud2FzSW5zaWRlID0gdHJ1ZTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJylcbiAgY2xpY2tvdXQoKSB7XG4gICAgaWYgKCF0aGlzLndhc0luc2lkZSkge1xuICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgfVxuICAgIHRoaXMud2FzSW5zaWRlID0gZmFsc2U7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5LZXlzU3Vic2NyaXB0aW9uKCk7XG4gICAgdGhpcy5vcGVuU2VhcmNoU3Vic2NyaXB0aW9uKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgY29uc3QgaXRlbUNoYW5nZXMgPSBjaGFuZ2VzLml0ZW1zO1xuICAgIGNvbnN0IGN1cnJlbkl0ZW1zID0gaXRlbUNoYW5nZXMuY3VycmVudFZhbHVlO1xuICAgIGlmIChpdGVtQ2hhbmdlcyAmJiAhaXRlbUNoYW5nZXMucHJldmlvdXNWYWx1ZSAmJiBjdXJyZW5JdGVtcykge1xuICAgICAgdGhpcy5maWx0ZXJlZEl0ZW1zJC5uZXh0KGN1cnJlbkl0ZW1zKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmtleVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc2VhcmNoU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBvcGVuRHJvcGRvd24oKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgaG92ZXJPdmVyQnV0dG9uKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmZvY3VzZWRJdGVtSWQkLm5leHQoaWQpO1xuICB9XG5cbiAgbW91c2VFbnRlckxpc3QoKTogdm9pZCB7XG4gICAgdGhpcy5tb3VzZU9uTGlzdCQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIG1vdXNlTGVhdmVMaXN0KCk6IHZvaWQge1xuICAgIHRoaXMubW91c2VPbkxpc3QkLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgcmVzZXRGb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLmZvY3VzZWRJdGVtSWQkLm5leHQodGhpcy5zZWFyY2hJZCk7XG4gIH1cblxuICBzdWJtaXQoaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaXRlbVNlbGVjdGVkLmVtaXQoaWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZURyb3Bkb3duKCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVGVybS5zZXRWYWx1ZSgnJyk7XG4gICAgdGhpcy5yZXNldEZvY3VzKCk7XG4gICAgdGhpcy5vcGVuJC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbktleXNTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5rZXlTdWJzY3JpcHRpb24gPSBmcm9tRXZlbnQoZG9jdW1lbnQsICdrZXl1cCcpXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoNTApKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5tb3VzZU9uTGlzdCQsIHRoaXMuZmlsdGVyZWRJdGVtcyQsIHRoaXMuZm9jdXNlZEl0ZW1JZCRdKVxuICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgLnN1YnNjcmliZSgoW21vdXNlT25MaXN0LCBpdGVtcywgZm9jdXNlZElkXSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGVuZ3RoID0gaXRlbXMubGVuZ3RoO1xuICAgICAgICAgICAgY29uc3QgZm9jdXNlZEluZGV4ID0gaXRlbXMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLmlkID09PSBmb2N1c2VkSWQpO1xuICAgICAgICAgICAgY29uc3QgY29kZSA9IGV2ZW50LmNvZGU7XG4gICAgICAgICAgICBjb25zdCBzaGlmdEtleSA9IGV2ZW50LnNoaWZ0S2V5O1xuICAgICAgICAgICAgY29uc3QgZG93biA9ICdBcnJvd0Rvd24nO1xuICAgICAgICAgICAgY29uc3QgdGFiID0gJ1RhYic7XG4gICAgICAgICAgICBjb25zdCB1cCA9ICdBcnJvd1VwJztcbiAgICAgICAgICAgIGNvbnN0IGVudGVyID0gJ0VudGVyJztcbiAgICAgICAgICAgIGNvbnN0IGVzY2FwZSA9ICdFc2NhcGUnO1xuXG4gICAgICAgICAgICAvLyBjbG9zZSBkcm9wZG93biBvbiBwcmVzc2luZyBlc2NhcGVcbiAgICAgICAgICAgIGlmIChjb2RlID09PSBlc2NhcGUpIHtcbiAgICAgICAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHN1Ym1pdCBpdGVtIHdoZW4gZm9jdXMgaXMgb24gYW4gaXRlbSBpbiB0aGUgbGlzdCBhbmQgZW50ZXIgaXMgcHJlc3NlZFxuICAgICAgICAgICAgaWYgKGNvZGUgPT09IGVudGVyICYmIGZvY3VzZWRJZCAhPT0gdGhpcy5zZWFyY2hJZCkge1xuICAgICAgICAgICAgICB0aGlzLnN1Ym1pdChmb2N1c2VkSWQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBvbmx5IGhhbmRsZSB0YWIgb3IgYXJyb3cga2V5cHJlc3NlcyB3aGVuIGl0ZW1zIGFyZSBzaG93biBhbmQgdGhlIG1vdXNlIGlzIG5vdCBvbiB0aGUgbGlzdFxuICAgICAgICAgICAgaWYgKGxlbmd0aCA+IDAgJiYgIW1vdXNlT25MaXN0KSB7XG4gICAgICAgICAgICAgIC8vIGhhbmRsZSBtb3ZpbmcgZG93biBpbiB0aGUgbGlzdCB3aXRoIGFycm93IGRvd24gb3IgdGFiXG4gICAgICAgICAgICAgIGlmIChjb2RlID09PSBkb3duIHx8IChjb2RlID09PSB0YWIgJiYgIXNoaWZ0S2V5KSkge1xuICAgICAgICAgICAgICAgIC8vIG1vdmUgZm9jdXMgdG8gZmlyc3QgaXRlbSBpbiB0aGUgbGlzdCB3aGVuIGZvY3VzIGlzIG9uIHNlYXJjaCBib3hcbiAgICAgICAgICAgICAgICBpZiAoZm9jdXNlZElkID09PSB0aGlzLnNlYXJjaElkKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLmZvY3VzZWRJdGVtSWQkLm5leHQoaXRlbXNbMF0uaWQpO1xuICAgICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxCdXR0b25JbnRvVmlldyhmb2N1c2VkSWQpO1xuICAgICAgICAgICAgICAgICAgLy8gbW92ZSBmb2N1cyB0byBuZXh0IGl0ZW0gaW4gdGhlIGxpc3QgaWYgZm9jdXMgaXMgbm90IG9uIGxhc3QgaXRlbVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9jdXNlZEluZGV4ICsgMSA8IGxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c2VkSXRlbUlkJC5uZXh0KGl0ZW1zW2ZvY3VzZWRJbmRleCArIDFdLmlkKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsQnV0dG9uSW50b1ZpZXcoZm9jdXNlZElkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gaGFuZGxlIG1vdmluZyB1cCBpbiB0aGUgbGlzdCB3aXRoIHVwIGFycm93IHVwIG9yIHNoaWZ0K3RhYlxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKChjb2RlID09PSB1cCB8fCAoY29kZSA9PT0gdGFiICYmIHNoaWZ0S2V5KSkgJiYgZm9jdXNlZElkICE9PSB0aGlzLnNlYXJjaElkKSB7XG4gICAgICAgICAgICAgICAgLy8gbW92ZSB0byBwcmV2aW91cyBpdGVtIGlmIGZvY3VzIGlzIG5vdCBvbiB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgbGlzdFxuICAgICAgICAgICAgICAgIGlmIChmb2N1c2VkSW5kZXggPiAwKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLmZvY3VzZWRJdGVtSWQkLm5leHQoaXRlbXNbZm9jdXNlZEluZGV4IC0gMV0uaWQpO1xuICAgICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxCdXR0b25JbnRvVmlldyhmb2N1c2VkSWQpO1xuICAgICAgICAgICAgICAgICAgLy8gbW92ZSBmb2N1cyB0byBzZWFyY2ggYm94IGlmIGZvY3VzIGlzIG9uIGZpcnN0IGl0ZW0gaW4gdGhlIGxpc3RcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldEZvY3VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlblNlYXJjaFN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFN1YnNjcmlwdGlvbiA9IHRoaXMuc2VhcmNoVGVybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChzZWFyY2hUZXJtKSA9PiB7XG4gICAgICB0aGlzLmZvY3VzZWRJdGVtSWQkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChmb2N1c2VkSXRlbUlkKSA9PiB7XG4gICAgICAgIGlmICghc2VhcmNoVGVybSkge1xuICAgICAgICAgIHRoaXMuZmlsdGVyZWRJdGVtcyQubmV4dCh0aGlzLml0ZW1zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBmaWx0ZXJlZEl0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0udGV4dC50b1VwcGVyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0udG9VcHBlckNhc2UoKSkpO1xuXG4gICAgICAgICAgdGhpcy5maWx0ZXJlZEl0ZW1zJC5uZXh0KGZpbHRlcmVkSXRlbXMpO1xuXG4gICAgICAgICAgLy8gbW92ZSBmb2N1cyB0byBzZWFyY2ggYm94IGlmIGZpbHRlcmVkIGxpc3QgbGVuZ3RoIGlzIDAgb3IgcHJldmlvdXNseSBmb2N1c2VkIGl0ZW0gaXMgbm90IGluIGZpbHRlcmVkIGxpc3QgYW55bW9yZVxuICAgICAgICAgIGlmIChmaWx0ZXJlZEl0ZW1zLmxlbmd0aCA9PT0gMCB8fCAhZmlsdGVyZWRJdGVtcy5zb21lKChpdGVtKSA9PiBpdGVtLmlkID09PSBmb2N1c2VkSXRlbUlkKSkge1xuICAgICAgICAgICAgdGhpcy5yZXNldEZvY3VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gbW92ZSBzY3JvbGxpbmcgYnV0dG9uIGludG8gdmlldyB0byBlbmQgb2YgcXVldWUsIHNvIHRoYXQgRE9NIGNhbiBiZSB1cGRhdGVkIGZpcnN0XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2Nyb2xsQnV0dG9uSW50b1ZpZXcoZm9jdXNlZEl0ZW1JZCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNjcm9sbEJ1dHRvbkludG9WaWV3KGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmZpbHRlcmVkSXRlbXMkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChpdGVtcykgPT4ge1xuICAgICAgY29uc3QgZm9jdXNJdGVtSW5kZXggPSBpdGVtcy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGlkKTtcbiAgICAgIGNvbnN0IGZvY3VzZWRCdXR0b24gPSB0aGlzLmJ1dHRvbnMudG9BcnJheSgpW2ZvY3VzSXRlbUluZGV4XTtcblxuICAgICAgaWYgKGZvY3VzZWRCdXR0b24pIHtcbiAgICAgICAgZm9jdXNlZEJ1dHRvbi5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,29 @@
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 { CommonModule } from '@angular/common';
17
+ import { NgModule } from '@angular/core';
18
+ import { ReactiveFormsModule } from '@angular/forms';
19
+ import { SearchableDropdownComponent } from './searchable-dropdown.component';
20
+ export class SearchableDropdownModule {
21
+ }
22
+ SearchableDropdownModule.decorators = [
23
+ { type: NgModule, args: [{
24
+ declarations: [SearchableDropdownComponent],
25
+ imports: [CommonModule, ReactiveFormsModule],
26
+ exports: [SearchableDropdownComponent]
27
+ },] }
28
+ ];
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS1kcm9wZG93bi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9zZWFyY2hhYmxlLWRyb3Bkb3duL3NlYXJjaGFibGUtZHJvcGRvd24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFPOUUsTUFBTSxPQUFPLHdCQUF3Qjs7O1lBTHBDLFFBQVEsU0FBQztnQkFDUixZQUFZLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztnQkFDM0MsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLG1CQUFtQixDQUFDO2dCQUM1QyxPQUFPLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQzthQUN2QyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIwIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNlYXJjaGFibGVEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4vc2VhcmNoYWJsZS1kcm9wZG93bi5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtTZWFyY2hhYmxlRHJvcGRvd25Db21wb25lbnRdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlXSxcbiAgZXhwb3J0czogW1NlYXJjaGFibGVEcm9wZG93bkNvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoYWJsZURyb3Bkb3duTW9kdWxlIHt9XG4iXX0=
@@ -0,0 +1,52 @@
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, EventEmitter, Input, Output, } from '@angular/core';
17
+ export class SearchableDropdownSelectComponent {
18
+ constructor() {
19
+ this.width = 250;
20
+ this.itemSelected = new EventEmitter();
21
+ this.clearSelection = new EventEmitter();
22
+ }
23
+ onSelect(id) {
24
+ this.itemSelected.emit(id);
25
+ }
26
+ onClearSelection() {
27
+ this.clearSelection.emit();
28
+ }
29
+ }
30
+ SearchableDropdownSelectComponent.decorators = [
31
+ { type: Component, args: [{
32
+ selector: 'valtimo-searchable-dropdown-select',
33
+ template: "<valtimo-searchable-dropdown\n *ngIf=\"!hasSelection; else selection\"\n [style]=\"style\"\n [items]=\"items\"\n [buttonText]=\"buttonText\"\n [searchText]=\"searchText\"\n [noResultsText]=\"noResultsText\"\n [disabled]=\"disabled\"\n [width]=\"width\"\n (itemSelected)=\"onSelect($event)\"\n>\n</valtimo-searchable-dropdown>\n\n<ng-template #selection>\n <div class=\"d-flex flex-row align-items-center\" [style.height.px]=\"style === 'button' ? 34 : null\">\n <h5 class=\"selected-text\">{{ selectedText }} <b>{{ selectedTextValue }}</b></h5>\n <button\n type=\"button\"\n class=\"close p-0 m-0 ml-2 d-flex text-danger\"\n aria-label=\"Close\"\n (click)=\"onClearSelection()\"\n [title]=\"clearSelectionButtonTitle\"\n >\n <i class=\"clear-icon fa fa-times text-danger\"></i>\n </button>\n </div>\n</ng-template>\n\n",
34
+ styles: [".selected-text{margin:0}.clear-icon{font-size:13px}"]
35
+ },] }
36
+ ];
37
+ SearchableDropdownSelectComponent.propDecorators = {
38
+ style: [{ type: Input }],
39
+ items: [{ type: Input }],
40
+ buttonText: [{ type: Input }],
41
+ searchText: [{ type: Input }],
42
+ noResultsText: [{ type: Input }],
43
+ disabled: [{ type: Input }],
44
+ selectedText: [{ type: Input }],
45
+ selectedTextValue: [{ type: Input }],
46
+ clearSelectionButtonTitle: [{ type: Input }],
47
+ hasSelection: [{ type: Input }],
48
+ width: [{ type: Input }],
49
+ itemSelected: [{ type: Output }],
50
+ clearSelection: [{ type: Output }]
51
+ };
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS1kcm9wZG93bi1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy9saWIvc2VhcmNoYWJsZS1kcm9wZG93bi1zZWxlY3Qvc2VhcmNoYWJsZS1kcm9wZG93bi1zZWxlY3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQVF2QixNQUFNLE9BQU8saUNBQWlDO0lBTDlDO1FBZ0JXLFVBQUssR0FBRyxHQUFHLENBQUM7UUFFWCxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbEMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBU2hELENBQUM7SUFQQyxRQUFRLENBQUMsRUFBVTtRQUNqQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM3QixDQUFDOzs7WUEzQkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxvQ0FBb0M7Z0JBQzlDLG0zQkFBMEQ7O2FBRTNEOzs7b0JBRUUsS0FBSztvQkFDTCxLQUFLO3lCQUNMLEtBQUs7eUJBQ0wsS0FBSzs0QkFDTCxLQUFLO3VCQUNMLEtBQUs7MkJBQ0wsS0FBSztnQ0FDTCxLQUFLO3dDQUNMLEtBQUs7MkJBQ0wsS0FBSztvQkFDTCxLQUFLOzJCQUVMLE1BQU07NkJBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIwIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RHJvcGRvd25CdXR0b25TdHlsZSwgRHJvcGRvd25JdGVtfSBmcm9tICdAdmFsdGltby9jb250cmFjdCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tc2VhcmNoYWJsZS1kcm9wZG93bi1zZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoYWJsZS1kcm9wZG93bi1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2hhYmxlLWRyb3Bkb3duLXNlbGVjdC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaGFibGVEcm9wZG93blNlbGVjdENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHN0eWxlOiBEcm9wZG93bkJ1dHRvblN0eWxlO1xuICBASW5wdXQoKSBpdGVtczogQXJyYXk8RHJvcGRvd25JdGVtPjtcbiAgQElucHV0KCkgYnV0dG9uVGV4dDogc3RyaW5nO1xuICBASW5wdXQoKSBzZWFyY2hUZXh0OiBzdHJpbmc7XG4gIEBJbnB1dCgpIG5vUmVzdWx0c1RleHQ6IHN0cmluZztcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHNlbGVjdGVkVGV4dDogc3RyaW5nO1xuICBASW5wdXQoKSBzZWxlY3RlZFRleHRWYWx1ZTogc3RyaW5nO1xuICBASW5wdXQoKSBjbGVhclNlbGVjdGlvbkJ1dHRvblRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGhhc1NlbGVjdGlvbjogYm9vbGVhbjtcbiAgQElucHV0KCkgd2lkdGggPSAyNTA7XG5cbiAgQE91dHB1dCgpIGl0ZW1TZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGNsZWFyU2VsZWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIG9uU2VsZWN0KGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLml0ZW1TZWxlY3RlZC5lbWl0KGlkKTtcbiAgfVxuXG4gIG9uQ2xlYXJTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhclNlbGVjdGlvbi5lbWl0KCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,30 @@
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 { CommonModule } from '@angular/common';
17
+ import { NgModule } from '@angular/core';
18
+ import { ReactiveFormsModule } from '@angular/forms';
19
+ import { SearchableDropdownSelectComponent } from './searchable-dropdown-select.component';
20
+ import { SearchableDropdownModule } from '../searchable-dropdown/searchable-dropdown.module';
21
+ export class SearchableDropdownSelectModule {
22
+ }
23
+ SearchableDropdownSelectModule.decorators = [
24
+ { type: NgModule, args: [{
25
+ declarations: [SearchableDropdownSelectComponent],
26
+ imports: [CommonModule, ReactiveFormsModule, SearchableDropdownModule],
27
+ exports: [SearchableDropdownSelectComponent]
28
+ },] }
29
+ ];
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS1kcm9wZG93bi1zZWxlY3QubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy9saWIvc2VhcmNoYWJsZS1kcm9wZG93bi1zZWxlY3Qvc2VhcmNoYWJsZS1kcm9wZG93bi1zZWxlY3QubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDM0YsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFPM0YsTUFBTSxPQUFPLDhCQUE4Qjs7O1lBTDFDLFFBQVEsU0FBQztnQkFDUixZQUFZLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQztnQkFDakQsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLHdCQUF3QixDQUFDO2dCQUN0RSxPQUFPLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQzthQUM3QyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIwIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNlYXJjaGFibGVEcm9wZG93blNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4vc2VhcmNoYWJsZS1kcm9wZG93bi1zZWxlY3QuY29tcG9uZW50JztcbmltcG9ydCB7U2VhcmNoYWJsZURyb3Bkb3duTW9kdWxlfSBmcm9tICcuLi9zZWFyY2hhYmxlLWRyb3Bkb3duL3NlYXJjaGFibGUtZHJvcGRvd24ubW9kdWxlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbU2VhcmNoYWJsZURyb3Bkb3duU2VsZWN0Q29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgU2VhcmNoYWJsZURyb3Bkb3duTW9kdWxlXSxcbiAgZXhwb3J0czogW1NlYXJjaGFibGVEcm9wZG93blNlbGVjdENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoYWJsZURyb3Bkb3duU2VsZWN0TW9kdWxlIHt9XG4iXX0=