@netgrif/components 6.3.0 → 6.4.0-beta.2

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 (212) hide show
  1. package/esm2020/lib/admin/ldap-group-role-assignment/ldap-group-role-assignment.component.mjs +5 -5
  2. package/esm2020/lib/admin/role-assignment/role-assignment.component.mjs +5 -5
  3. package/esm2020/lib/admin/user-invite/user-invite.component.mjs +3 -3
  4. package/esm2020/lib/data-fields/boolean-field/boolean-default-field/boolean-default-field.component.mjs +28 -0
  5. package/esm2020/lib/data-fields/boolean-field/boolean-field.component.mjs +13 -22
  6. package/esm2020/lib/data-fields/button-field/button-default-field/button-default-field.component.mjs +40 -0
  7. package/esm2020/lib/data-fields/button-field/button-field.component.mjs +12 -30
  8. package/esm2020/lib/data-fields/case-ref-field/case-ref-default/case-ref-default.component.mjs +22 -0
  9. package/esm2020/lib/data-fields/data-field-template/data-field-template.component.mjs +8 -7
  10. package/esm2020/lib/data-fields/data-fields.module.mjs +87 -39
  11. package/esm2020/lib/data-fields/date-field/date-default-field/date-default-field.component.mjs +33 -0
  12. package/esm2020/lib/data-fields/date-field/date-field.component.mjs +12 -14
  13. package/esm2020/lib/data-fields/date-time-field/date-time-default-field/date-time-default-field.component.mjs +34 -0
  14. package/esm2020/lib/data-fields/date-time-field/date-time-field.component.mjs +12 -15
  15. package/esm2020/lib/data-fields/enumeration-field/enumeration-autocomplete-dynamic-field/enumeration-autocomplete-dynamic-field.component.mjs +15 -9
  16. package/esm2020/lib/data-fields/enumeration-field/enumeration-autocomplete-select-field/enumeration-autocomplete-select-field.component.mjs +15 -9
  17. package/esm2020/lib/data-fields/enumeration-field/enumeration-field.component.mjs +7 -10
  18. package/esm2020/lib/data-fields/enumeration-field/enumeration-icon-field/enumeration-icon-field.component.mjs +14 -9
  19. package/esm2020/lib/data-fields/enumeration-field/enumeration-list-field/enumeration-list-field.component.mjs +17 -11
  20. package/esm2020/lib/data-fields/enumeration-field/enumeration-select-field/enumeration-select-field.component.mjs +16 -10
  21. package/esm2020/lib/data-fields/enumeration-field/enumeration-stepper-field/enumeration-stepper-field.component.mjs +17 -12
  22. package/esm2020/lib/data-fields/file-field/file-default-field/file-default-field.component.mjs +50 -0
  23. package/esm2020/lib/data-fields/file-field/file-field.component.mjs +14 -40
  24. package/esm2020/lib/data-fields/file-list-field/file-list-default-field/file-list-default-field.component.mjs +32 -0
  25. package/esm2020/lib/data-fields/file-list-field/file-list-field.component.mjs +25 -0
  26. package/esm2020/lib/data-fields/filter-field/filter-default-field/filter-default-field.component.mjs +30 -0
  27. package/esm2020/lib/data-fields/filter-field/filter-field.component.mjs +11 -17
  28. package/esm2020/lib/data-fields/filter-field/tab-view-filter-field/filter-field-tab-view-content.component.mjs +3 -3
  29. package/esm2020/lib/data-fields/i18n-field/i18n-divider-field/i18n-divider-field.component.mjs +14 -9
  30. package/esm2020/lib/data-fields/i18n-field/i18n-field.component.mjs +7 -6
  31. package/esm2020/lib/data-fields/i18n-field/i18n-text-field/i18n-text-field.component.mjs +14 -9
  32. package/esm2020/lib/data-fields/multichoice-field/multichoice-autocomplete-field/multichoice-autocomplete-field.component.mjs +16 -10
  33. package/esm2020/lib/data-fields/multichoice-field/multichoice-field.component.mjs +7 -7
  34. package/esm2020/lib/data-fields/multichoice-field/multichoice-list-field/multichoice-list-field.component.mjs +16 -10
  35. package/esm2020/lib/data-fields/multichoice-field/multichoice-select-field/multichoice-select-field.component.mjs +17 -8
  36. package/esm2020/lib/data-fields/number-field/number-currency-field/number-currency-field.component.mjs +15 -9
  37. package/esm2020/lib/data-fields/number-field/number-default-field/number-default-field.component.mjs +15 -9
  38. package/esm2020/lib/data-fields/number-field/number-field.component.mjs +7 -6
  39. package/esm2020/lib/data-fields/public-api.mjs +1 -16
  40. package/esm2020/lib/data-fields/required-label/required-label.component.mjs +3 -3
  41. package/esm2020/lib/data-fields/task-ref-field/task-ref-dashboard-field/task-ref-dashboard-field.component.mjs +38 -0
  42. package/esm2020/lib/data-fields/task-ref-field/task-ref-field.component.mjs +12 -23
  43. package/esm2020/lib/data-fields/task-ref-field/task-ref-list-field/task-ref-list-field.component.mjs +22 -0
  44. package/esm2020/lib/data-fields/text-field/dashboard-bar-chart-text-field/dashboard-bar-chart-text-field.component.mjs +14 -9
  45. package/esm2020/lib/data-fields/text-field/dashboard-iframe-text-field/dashboard-iframe-text-field.component.mjs +14 -9
  46. package/esm2020/lib/data-fields/text-field/dashboard-line-chart-text-field/dashboard-line-chart-text-field.component.mjs +14 -9
  47. package/esm2020/lib/data-fields/text-field/dashboard-pie-chart-text-field/dashboard-pie-chart-text-field.component.mjs +14 -9
  48. package/esm2020/lib/data-fields/text-field/dashboard-portal-text-field/dashboard-portal-text-field.component.mjs +14 -9
  49. package/esm2020/lib/data-fields/text-field/html-textarea-field/html-textarea-field.component.mjs +19 -14
  50. package/esm2020/lib/data-fields/text-field/password-text-field/password-text-field.component.mjs +15 -9
  51. package/esm2020/lib/data-fields/text-field/rich-textarea-field/rich-textarea-field.component.mjs +17 -12
  52. package/esm2020/lib/data-fields/text-field/simple-text-field/simple-text-field.component.mjs +15 -9
  53. package/esm2020/lib/data-fields/text-field/text-field.component.mjs +8 -16
  54. package/esm2020/lib/data-fields/text-field/textarea-field/textarea-field.component.mjs +14 -9
  55. package/esm2020/lib/data-fields/user-field/user-default-field/user-default-field.component.mjs +35 -0
  56. package/esm2020/lib/data-fields/user-field/user-field.component.mjs +12 -19
  57. package/esm2020/lib/data-fields/user-list-field/user-list-default-field/user-list-default-field.component.mjs +39 -0
  58. package/esm2020/lib/data-fields/user-list-field/user-list-field.component.mjs +13 -23
  59. package/esm2020/lib/dialog/admin-impersonate-dialog/admin-impersonate-dialog.component.mjs +77 -0
  60. package/esm2020/lib/dialog/dialog.module.mjs +159 -0
  61. package/esm2020/lib/dialog/filter-selector-dialog/filter-selector-dialog.component.mjs +164 -0
  62. package/esm2020/lib/dialog/import-net-dialog/import-net-dialog.component.mjs +151 -0
  63. package/esm2020/lib/dialog/load-filter-dialog/load-filter-dialog.component.mjs +98 -0
  64. package/esm2020/lib/dialog/multi-user-assign-dialog/multi-user-assign-dialog.component.mjs +70 -0
  65. package/esm2020/lib/dialog/new-case-dialog/new-case-dialog.component.mjs +251 -0
  66. package/esm2020/lib/dialog/public-api.mjs +11 -0
  67. package/esm2020/lib/dialog/save-filter-dialog/save-filter-dialog.component.mjs +83 -0
  68. package/esm2020/lib/dialog/user-assign-dialog/user-assign-dialog.component.mjs +73 -0
  69. package/esm2020/lib/dialog/user-impersonate-dialog/user-impersonate-dialog.component.mjs +98 -0
  70. package/esm2020/lib/filter-field-content/filter-field-tab-view/filter-field-tab-view.component.mjs +3 -3
  71. package/esm2020/lib/forms/login/login-form.component.mjs +3 -3
  72. package/esm2020/lib/header/header-modes/edit-mode/edit-mode.component.mjs +3 -3
  73. package/esm2020/lib/header/header-modes/search-mode/search-mode.component.mjs +3 -3
  74. package/esm2020/lib/header/header-modes/sort-mode/sort-mode.component.mjs +3 -3
  75. package/esm2020/lib/header/header.component.mjs +3 -3
  76. package/esm2020/lib/navigation/breadcrumbs/breadcrumbs.component.mjs +2 -2
  77. package/esm2020/lib/navigation/group-navigation-component-resolver/default-components/default-case-ref-list-view/default-case-ref-list-view.component.mjs +105 -0
  78. package/esm2020/lib/navigation/group-navigation-component-resolver/default-components/default-simple-task-view/default-simple-task-view.component.mjs +7 -8
  79. package/esm2020/lib/navigation/group-navigation-component-resolver/default-components/default-tabbed-case-view/default-tabbed-case-view.component.mjs +6 -4
  80. package/esm2020/lib/navigation/group-navigation-component-resolver/default-components/default-tabbed-task-view/default-tabbed-task-view.component.mjs +7 -8
  81. package/esm2020/lib/navigation/group-navigation-component-resolver/default-components/default-task-view/default-task-view.component.mjs +63 -0
  82. package/esm2020/lib/navigation/navigation-double-drawer/navigation-double-drawer.component.mjs +3 -3
  83. package/esm2020/lib/navigation/navigation.module.mjs +9 -3
  84. package/esm2020/lib/navigation/public-api.mjs +2 -1
  85. package/esm2020/lib/panel/panel-item/panel-item.component.mjs +3 -3
  86. package/esm2020/lib/panel/panel.component.mjs +3 -3
  87. package/esm2020/lib/panel/task-panel/task-panel.component.mjs +3 -3
  88. package/esm2020/lib/panel/task-panel-list/task-list.component.mjs +5 -4
  89. package/esm2020/lib/panel/task-panel-list-pagination/task-list-pagination.component.mjs +3 -3
  90. package/esm2020/lib/panel/task-panel-single/single-task.component.mjs +2 -2
  91. package/esm2020/lib/panel/workflow-panel/workflow-panel.component.mjs +9 -10
  92. package/esm2020/lib/search/advanced-search/advanced-search-component/advanced-search.component.mjs +3 -3
  93. package/esm2020/lib/search/advanced-search/search-clause-component/search-clause.component.mjs +3 -3
  94. package/esm2020/lib/search/advanced-search/search-predicate-component/search-predicate.component.mjs +8 -8
  95. package/esm2020/lib/search/fulltext-search-component/fulltext-search.component.mjs +8 -6
  96. package/esm2020/lib/search/search-component/search.component.mjs +11 -10
  97. package/esm2020/lib/search/search.module.mjs +9 -3
  98. package/esm2020/lib/side-menu/content-components/admin-impersonate/side-menu-admin-impersonate-component.module.mjs +3 -3
  99. package/esm2020/lib/side-menu/content-components/filter-selector/side-menu-filter-selector-component.module.mjs +4 -2
  100. package/esm2020/lib/side-menu/content-components/multi-user-assign/side-menu-multi-user-assign-component.module.mjs +3 -3
  101. package/esm2020/lib/side-menu/content-components/public-api.mjs +5 -1
  102. package/esm2020/lib/side-menu/content-components/user-assign/side-menu-user-assign-component.module.mjs +3 -3
  103. package/esm2020/lib/tabs/tab-view/tab-view.component.mjs +7 -6
  104. package/esm2020/lib/task-content/field-component-resolver/field-component-resolver.component.mjs +18 -27
  105. package/esm2020/lib/task-content/task-content/task-content.component.mjs +3 -3
  106. package/esm2020/lib/user/profile/profile.component.mjs +2 -2
  107. package/esm2020/lib/view/case-view/components/case-list/case-list.component.mjs +3 -3
  108. package/esm2020/lib/view/case-view/components/case-list-paginator/case-list-paginator.component.mjs +3 -3
  109. package/esm2020/lib/view/case-view/components/create-case-button/create-case-button.component.mjs +10 -4
  110. package/esm2020/lib/view/workflow-view/workflow-view.component.mjs +22 -21
  111. package/esm2020/public-api.mjs +2 -1
  112. package/fesm2015/netgrif-components.mjs +3848 -2122
  113. package/fesm2015/netgrif-components.mjs.map +1 -1
  114. package/fesm2020/netgrif-components.mjs +3761 -2128
  115. package/fesm2020/netgrif-components.mjs.map +1 -1
  116. package/lib/data-fields/boolean-field/boolean-default-field/boolean-default-field.component.d.ts +8 -0
  117. package/lib/data-fields/boolean-field/boolean-field.component.d.ts +5 -5
  118. package/lib/data-fields/button-field/button-default-field/button-default-field.component.d.ts +12 -0
  119. package/lib/data-fields/button-field/button-field.component.d.ts +7 -8
  120. package/lib/data-fields/case-ref-field/case-ref-default/case-ref-default.component.d.ts +8 -0
  121. package/lib/data-fields/data-field-template/data-field-template.component.d.ts +3 -2
  122. package/lib/data-fields/data-fields.module.d.ts +34 -20
  123. package/lib/data-fields/date-field/date-default-field/date-default-field.component.d.ts +9 -0
  124. package/lib/data-fields/date-field/date-field.component.d.ts +5 -3
  125. package/lib/data-fields/date-time-field/date-time-default-field/date-time-default-field.component.d.ts +9 -0
  126. package/lib/data-fields/date-time-field/date-time-field.component.d.ts +5 -3
  127. package/lib/data-fields/enumeration-field/enumeration-autocomplete-dynamic-field/enumeration-autocomplete-dynamic-field.component.d.ts +3 -3
  128. package/lib/data-fields/enumeration-field/enumeration-autocomplete-select-field/enumeration-autocomplete-select-field.component.d.ts +3 -3
  129. package/lib/data-fields/enumeration-field/enumeration-field.component.d.ts +3 -0
  130. package/lib/data-fields/enumeration-field/enumeration-icon-field/enumeration-icon-field.component.d.ts +3 -3
  131. package/lib/data-fields/enumeration-field/enumeration-list-field/enumeration-list-field.component.d.ts +3 -3
  132. package/lib/data-fields/enumeration-field/enumeration-select-field/enumeration-select-field.component.d.ts +3 -3
  133. package/lib/data-fields/enumeration-field/enumeration-stepper-field/enumeration-stepper-field.component.d.ts +3 -3
  134. package/lib/data-fields/file-field/file-default-field/file-default-field.component.d.ts +13 -0
  135. package/lib/data-fields/file-field/file-field.component.d.ts +6 -9
  136. package/lib/data-fields/file-list-field/file-list-default-field/file-list-default-field.component.d.ts +8 -0
  137. package/lib/data-fields/file-list-field/file-list-field.component.d.ts +10 -0
  138. package/lib/data-fields/filter-field/filter-default-field/filter-default-field.component.d.ts +10 -0
  139. package/lib/data-fields/filter-field/filter-field.component.d.ts +6 -6
  140. package/lib/data-fields/filter-field/tab-view-filter-field/filter-field-tab-view-content.component.d.ts +2 -2
  141. package/lib/data-fields/i18n-field/i18n-divider-field/i18n-divider-field.component.d.ts +3 -3
  142. package/lib/data-fields/i18n-field/i18n-field.component.d.ts +3 -0
  143. package/lib/data-fields/i18n-field/i18n-text-field/i18n-text-field.component.d.ts +3 -3
  144. package/lib/data-fields/multichoice-field/multichoice-autocomplete-field/multichoice-autocomplete-field.component.d.ts +3 -3
  145. package/lib/data-fields/multichoice-field/multichoice-field.component.d.ts +3 -0
  146. package/lib/data-fields/multichoice-field/multichoice-list-field/multichoice-list-field.component.d.ts +3 -3
  147. package/lib/data-fields/multichoice-field/multichoice-select-field/multichoice-select-field.component.d.ts +3 -2
  148. package/lib/data-fields/number-field/number-currency-field/number-currency-field.component.d.ts +3 -3
  149. package/lib/data-fields/number-field/number-default-field/number-default-field.component.d.ts +3 -3
  150. package/lib/data-fields/number-field/number-field.component.d.ts +3 -0
  151. package/lib/data-fields/public-api.d.ts +0 -15
  152. package/lib/data-fields/task-ref-field/task-ref-dashboard-field/task-ref-dashboard-field.component.d.ts +13 -0
  153. package/lib/data-fields/task-ref-field/task-ref-field.component.d.ts +6 -7
  154. package/lib/data-fields/task-ref-field/task-ref-list-field/task-ref-list-field.component.d.ts +8 -0
  155. package/lib/data-fields/text-field/dashboard-bar-chart-text-field/dashboard-bar-chart-text-field.component.d.ts +3 -3
  156. package/lib/data-fields/text-field/dashboard-iframe-text-field/dashboard-iframe-text-field.component.d.ts +3 -3
  157. package/lib/data-fields/text-field/dashboard-line-chart-text-field/dashboard-line-chart-text-field.component.d.ts +3 -3
  158. package/lib/data-fields/text-field/dashboard-pie-chart-text-field/dashboard-pie-chart-text-field.component.d.ts +3 -3
  159. package/lib/data-fields/text-field/dashboard-portal-text-field/dashboard-portal-text-field.component.d.ts +3 -3
  160. package/lib/data-fields/text-field/html-textarea-field/html-textarea-field.component.d.ts +5 -5
  161. package/lib/data-fields/text-field/password-text-field/password-text-field.component.d.ts +3 -3
  162. package/lib/data-fields/text-field/rich-textarea-field/rich-textarea-field.component.d.ts +3 -3
  163. package/lib/data-fields/text-field/simple-text-field/simple-text-field.component.d.ts +3 -3
  164. package/lib/data-fields/text-field/text-field.component.d.ts +4 -2
  165. package/lib/data-fields/text-field/textarea-field/textarea-field.component.d.ts +3 -3
  166. package/lib/data-fields/user-field/user-default-field/user-default-field.component.d.ts +10 -0
  167. package/lib/data-fields/user-field/user-field.component.d.ts +6 -5
  168. package/lib/data-fields/user-list-field/user-list-default-field/user-list-default-field.component.d.ts +11 -0
  169. package/lib/data-fields/user-list-field/user-list-field.component.d.ts +6 -6
  170. package/lib/dialog/admin-impersonate-dialog/admin-impersonate-dialog.component.d.ts +42 -0
  171. package/lib/dialog/dialog.module.d.ts +31 -0
  172. package/lib/dialog/filter-selector-dialog/filter-selector-dialog.component.d.ts +96 -0
  173. package/lib/dialog/import-net-dialog/import-net-dialog.component.d.ts +36 -0
  174. package/lib/dialog/load-filter-dialog/load-filter-dialog.component.d.ts +18 -0
  175. package/lib/dialog/multi-user-assign-dialog/multi-user-assign-dialog.component.d.ts +24 -0
  176. package/lib/dialog/new-case-dialog/new-case-dialog.component.d.ts +66 -0
  177. package/lib/dialog/public-api.d.ts +10 -0
  178. package/lib/dialog/save-filter-dialog/save-filter-dialog.component.d.ts +16 -0
  179. package/lib/dialog/user-assign-dialog/user-assign-dialog.component.d.ts +42 -0
  180. package/lib/dialog/user-impersonate-dialog/user-impersonate-dialog.component.d.ts +16 -0
  181. package/lib/filter-field-content/filter-field-tab-view/filter-field-tab-view.component.d.ts +2 -2
  182. package/lib/navigation/group-navigation-component-resolver/default-components/default-case-ref-list-view/default-case-ref-list-view.component.d.ts +19 -0
  183. package/lib/navigation/group-navigation-component-resolver/default-components/default-task-view/default-task-view.component.d.ts +12 -0
  184. package/lib/navigation/navigation.module.d.ts +17 -15
  185. package/lib/navigation/public-api.d.ts +1 -0
  186. package/lib/search/search.module.d.ts +4 -0
  187. package/lib/side-menu/content-components/admin-impersonate/side-menu-admin-impersonate-component.module.d.ts +1 -1
  188. package/lib/side-menu/content-components/filter-selector/side-menu-filter-selector-component.module.d.ts +1 -1
  189. package/lib/side-menu/content-components/multi-user-assign/side-menu-multi-user-assign-component.module.d.ts +1 -1
  190. package/lib/side-menu/content-components/public-api.d.ts +4 -0
  191. package/lib/side-menu/content-components/user-assign/side-menu-user-assign-component.module.d.ts +1 -1
  192. package/lib/task-content/field-component-resolver/field-component-resolver.component.d.ts +2 -2
  193. package/lib/view/case-view/components/create-case-button/create-case-button.component.d.ts +3 -1
  194. package/lib/view/workflow-view/workflow-view.component.d.ts +4 -3
  195. package/nae-theme.scss +8 -2
  196. package/nae-typography.scss +1 -1
  197. package/package.json +2 -2
  198. package/public-api.d.ts +1 -0
  199. package/src/lib/admin/ldap-group-role-assignment/ldap-group-role-assignment.component.theme.scss +2 -2
  200. package/src/lib/admin/role-assignment/role-assignment.component.theme.scss +16 -0
  201. package/src/lib/data-fields/data-field.theme.scss +217 -18
  202. package/src/lib/dialog/dialog.theme.scss +40 -2
  203. package/src/lib/header/header.theme.scss +0 -9
  204. package/src/lib/navigation/navigation.theme.scss +20 -3
  205. package/src/lib/panel/panel.theme.scss +50 -4
  206. package/src/lib/search/advanced-search/advanced-search-component/advanced-search.component.theme.scss +9 -0
  207. package/src/lib/search/advanced-search/search-predicate-component/search-predicate.component.theme.scss +7 -0
  208. package/src/lib/search/search-component/search.component-theme.scss +21 -0
  209. package/src/lib/side-menu/side-menu.theme.scss +1 -1
  210. package/src/lib/tabs/tabs.theme.scss +15 -1
  211. package/esm2020/lib/data-fields/file-field-list/file-list-field.component.mjs +0 -33
  212. package/lib/data-fields/file-field-list/file-list-field.component.d.ts +0 -8
@@ -0,0 +1,251 @@
1
+ import { Component, Inject, Optional, ViewChild } from '@angular/core';
2
+ import { FormControl, Validators } from '@angular/forms';
3
+ import { BehaviorSubject, combineLatest, ReplaySubject } from 'rxjs';
4
+ import { LoadingEmitter, NAE_NET_ALL_VERSIONS, NAE_NET_VERSION_VISIBLE } from '@netgrif/components-core';
5
+ import { Hotkey } from 'angular2-hotkeys';
6
+ import { map, startWith, tap } from 'rxjs/operators';
7
+ import semver from 'semver';
8
+ import { MAT_DIALOG_DATA } from '@angular/material/dialog';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "@angular/material/dialog";
11
+ import * as i2 from "@angular/forms";
12
+ import * as i3 from "@netgrif/components-core";
13
+ import * as i4 from "angular2-hotkeys";
14
+ import * as i5 from "@ngx-translate/core";
15
+ import * as i6 from "@angular/material/stepper";
16
+ import * as i7 from "@angular/material/form-field";
17
+ import * as i8 from "@angular/material/autocomplete";
18
+ import * as i9 from "@angular/material/core";
19
+ import * as i10 from "@angular/material/button";
20
+ import * as i11 from "@angular/material/progress-spinner";
21
+ import * as i12 from "@angular/flex-layout/flex";
22
+ import * as i13 from "@angular/common";
23
+ import * as i14 from "@angular/material/input";
24
+ export class NewCaseDialogComponent {
25
+ constructor(_dialogRef, _data, _formBuilder, _snackBarService, _caseResourceService, _hotkeysService, _translate, isVersionVisible, allVersionEnabled) {
26
+ this._dialogRef = _dialogRef;
27
+ this._data = _data;
28
+ this._formBuilder = _formBuilder;
29
+ this._snackBarService = _snackBarService;
30
+ this._caseResourceService = _caseResourceService;
31
+ this._hotkeysService = _hotkeysService;
32
+ this._translate = _translate;
33
+ this.processFormControl = new FormControl('', Validators.required);
34
+ this.titleFormControl = new FormControl('', Validators.required);
35
+ this.options = [];
36
+ this.colors = [
37
+ { value: 'panel-primary-icon', viewValue: 'Primary' },
38
+ { value: 'panel-accent-icon', viewValue: 'Accent' },
39
+ ];
40
+ if (this._data) {
41
+ this._injectedData = this._data;
42
+ }
43
+ this.isVersionVisible = isVersionVisible !== null ? isVersionVisible : true;
44
+ this.allVersionEnabled = allVersionEnabled !== null ? allVersionEnabled : false;
45
+ if (!this._injectedData) {
46
+ this.closeNoNets();
47
+ }
48
+ this._hotkeysService.add(new Hotkey('enter', (event) => {
49
+ this.nextStep();
50
+ return false;
51
+ }));
52
+ this._hasMultipleNets$ = new ReplaySubject(1);
53
+ this._notInitialized$ = new BehaviorSubject(true);
54
+ this._options$ = new ReplaySubject(1);
55
+ this.loadingSubmit = new LoadingEmitter(false);
56
+ this._allowedNetsSubscription = this._injectedData.allowedNets$.pipe(map(nets => nets.map(petriNet => ({
57
+ value: petriNet.stringId,
58
+ viewValue: petriNet.title,
59
+ version: petriNet.version
60
+ }))), map(nets => {
61
+ if (!this.allVersionEnabled) {
62
+ return this.removeOldVersions(nets);
63
+ }
64
+ else {
65
+ return nets;
66
+ }
67
+ }), tap(options => {
68
+ if (options.length === 0) {
69
+ this.closeNoNets();
70
+ }
71
+ this.options = options;
72
+ this._hasMultipleNets$.next(options.length > 1);
73
+ })).subscribe(options => {
74
+ this._options$.next(options);
75
+ if (!this._notInitialized$.closed) {
76
+ this._notInitialized$.next(false);
77
+ this._notInitialized$.complete();
78
+ }
79
+ });
80
+ this.filteredOptions$ = combineLatest([this._options$, this.processFormControl.valueChanges.pipe(startWith(''))]).pipe(map(sources => {
81
+ const options = sources[0];
82
+ const input = typeof sources[1] === 'string' || sources[1] === null ? sources[1] : sources[1].viewValue;
83
+ return input ? this._filter(input, options) : options.slice();
84
+ }), tap(filteredOptions => {
85
+ if (filteredOptions.length === 1) {
86
+ this.processFormControl.setValue(filteredOptions[0], { emitEvent: false });
87
+ }
88
+ }));
89
+ }
90
+ ngOnDestroy() {
91
+ this._hasMultipleNets$.complete();
92
+ this.loadingSubmit.complete();
93
+ this._allowedNetsSubscription.unsubscribe();
94
+ }
95
+ get hasMultipleNets$() {
96
+ return this._hasMultipleNets$.asObservable();
97
+ }
98
+ get notInitialized$() {
99
+ return this._notInitialized$.asObservable();
100
+ }
101
+ displayFn(process) {
102
+ return process && process.viewValue ? process.viewValue : '';
103
+ }
104
+ createNewCase() {
105
+ if (this.loadingSubmit.value) {
106
+ return;
107
+ }
108
+ if (this.titleFormControl.valid || !this.isCaseTitleRequired()) {
109
+ const newCase = {
110
+ title: this.titleFormControl.value === '' ? null : this.titleFormControl.value,
111
+ color: 'panel-primary-icon',
112
+ netId: this.options.length === 1 ? this.options[0].value : this.processFormControl.value.value
113
+ };
114
+ this.loadingSubmit.on();
115
+ this._caseResourceService.createCase(newCase)
116
+ .subscribe((response) => {
117
+ this.loadingSubmit.off();
118
+ if (!!response.outcome) {
119
+ this._snackBarService.openSuccessSnackBar(response.outcome.message === undefined
120
+ ? this._translate.instant('side-menu.new-case.createCase') + ' ' + newCase.title
121
+ : response.outcome.message);
122
+ this._dialogRef.close({
123
+ opened: false,
124
+ message: response.outcome.message === undefined
125
+ ? 'Confirm new case setup'
126
+ : response.outcome.message,
127
+ data: response.outcome.aCase
128
+ });
129
+ }
130
+ else if (!!response.error) {
131
+ this._snackBarService.openWarningSnackBar(this._translate.instant('side-menu.new-case.createCaseError') + ' ' + newCase.title);
132
+ this._dialogRef.close({
133
+ opened: false,
134
+ message: response.error === undefined
135
+ ? 'Confirm new case setup'
136
+ : response.error
137
+ });
138
+ }
139
+ }, error => {
140
+ this.loadingSubmit.off();
141
+ this._snackBarService.openErrorSnackBar(error.message ? error.message : error);
142
+ });
143
+ }
144
+ }
145
+ /**
146
+ * Function to filter out matchless options without accent and case-sensitive differences
147
+ * @param value to compare matching options
148
+ * @param options that should be filtered
149
+ * @return return matched options
150
+ */
151
+ _filter(value, options) {
152
+ const filterValue = value.toLowerCase().normalize('NFD').replace(/[\u0300-\u036f]/g, '');
153
+ return options.filter(option => option.viewValue.toLowerCase().normalize('NFD')
154
+ .replace(/[\u0300-\u036f]/g, '').indexOf(filterValue) === 0);
155
+ }
156
+ closeNoNets() {
157
+ this._snackBarService.openErrorSnackBar(this._translate.instant('side-menu.new-case.noNets'));
158
+ this._dialogRef.close({
159
+ opened: false
160
+ });
161
+ }
162
+ nextStep() {
163
+ if (this.stepper1) {
164
+ if (this.stepper1.selectedIndex === 1) {
165
+ this.createNewCase();
166
+ }
167
+ else {
168
+ this.stepper1.next();
169
+ }
170
+ }
171
+ if (this.stepper2) {
172
+ if (this.stepper2.selectedIndex === 0) {
173
+ this.createNewCase();
174
+ }
175
+ else {
176
+ this.stepper2.next();
177
+ }
178
+ }
179
+ }
180
+ titleResolving() {
181
+ const caze = this._translate.instant('side-menu.new-case.case');
182
+ const name = typeof this.processFormControl.value === 'string' || this.processFormControl.value === null ?
183
+ undefined : this.processFormControl.value.viewValue;
184
+ return name === undefined ? caze : caze + ' - ' + name;
185
+ }
186
+ removeOldVersions(options) {
187
+ const tempNets = Object.assign([], options);
188
+ const petriNetIds = new Set(options.map(form => form.value));
189
+ const newestNets = new Array();
190
+ for (const value of petriNetIds) {
191
+ let current = { value, version: '1.0.0', viewValue: '' };
192
+ for (const net of tempNets) {
193
+ if (value === net.value && !semver.lt(net.version, current.version)) {
194
+ current = net;
195
+ }
196
+ }
197
+ newestNets.push(current);
198
+ }
199
+ return newestNets;
200
+ }
201
+ isCaseTitleEnabled() {
202
+ return !!(this._injectedData?.newCaseCreationConfiguration?.enableCaseTitle ?? true);
203
+ }
204
+ isCaseTitleRequired() {
205
+ return this.isCaseTitleEnabled() && !!(this._injectedData?.newCaseCreationConfiguration?.isCaseTitleRequired ?? true);
206
+ }
207
+ showVersion(option) {
208
+ if (option !== undefined && option.value !== undefined && option.value.version !== undefined)
209
+ this.netVersion = option.value.version;
210
+ }
211
+ checkVersion(viewValue) {
212
+ const currentOption = typeof viewValue === 'string' || viewValue === null ? undefined : viewValue.version;
213
+ if (currentOption === undefined) {
214
+ this.netVersion = '';
215
+ }
216
+ }
217
+ toNextStep(viewValue) {
218
+ if (viewValue !== null && viewValue.value !== undefined) {
219
+ this.stepper1.next();
220
+ }
221
+ }
222
+ }
223
+ NewCaseDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NewCaseDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i2.FormBuilder }, { token: i3.SnackBarService }, { token: i3.CaseResourceService }, { token: i4.HotkeysService }, { token: i5.TranslateService }, { token: NAE_NET_VERSION_VISIBLE, optional: true }, { token: NAE_NET_ALL_VERSIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component });
224
+ NewCaseDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: NewCaseDialogComponent, selector: "nc-new-case-dialog", viewQueries: [{ propertyName: "toolbar", first: true, predicate: ["toolbar"], descendants: true }, { propertyName: "stepper1", first: true, predicate: ["stepper1"], descendants: true }, { propertyName: "stepper2", first: true, predicate: ["stepper2"], descendants: true }], ngImport: i0, template: "<div #toolbar class=\"mat-dialog-title\" fxLayout=\"column\" fxLayoutAlign=\"center none\">\n {{titleResolving()}}\n</div>\n<div mat-dialog-content class=\"dialog-field-fix\">\n <mat-vertical-stepper *ngIf=\"hasMultipleNets$ | async\" linear #stepper1 class=\" netgrif-input\">\n <mat-step [stepControl]=\"processFormControl\" errorMessage=\"{{'side-menu.new-case.errFirst' | translate}}\" >\n <ng-template matStepLabel>{{'side-menu.new-case.choose' | translate}}</ng-template>\n <mat-form-field color=\"primary\" appearance=\"outline\" class=\"margin-top-field\">\n <mat-label>\n {{'side-menu.new-case.choose' | translate}}\n </mat-label>\n <input type=\"text\" matInput [formControl]=\"processFormControl\" [matAutocomplete]=\"auto\" required\n (keyup.enter)=\"nextStep()\" (change)=\"checkVersion(processFormControl.value)\">\n <span class=\"version-span\" *ngIf=\"isVersionVisible\" matSuffix>{{netVersion}}</span>\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"displayFn\"\n (optionSelected)=\"showVersion($event.option)\">\n <mat-option *ngFor=\"let option of filteredOptions$ | async\" [value]=\"option\">\n {{option.viewValue}}\n <span class=\"version-span\" *ngIf=\"isVersionVisible\">{{option.version}}</span>\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n <div mat-dialog-actions class=\"cvti-button-field\" >\n <button *ngIf=\"isCaseTitleEnabled()\" mat-stroked-button (click)=\"toNextStep(processFormControl.value)\">{{'side-menu.new-case.next' | translate}}</button>\n <button *ngIf=\"!isCaseTitleEnabled()\" mat-raised-button color=\"primary\" (click)=\"createNewCase()\" [class.spinner]=\"loadingSubmit | async\"\n [disabled]=\"loadingSubmit | async\">{{'side-menu.new-case.create' | translate}}</button>\n </div>\n </mat-step>\n <mat-step *ngIf=\"isCaseTitleEnabled()\" [stepControl]=\"titleFormControl\" errorMessage=\"{{'side-menu.new-case.errSecond' | translate}}\" >\n <ng-template matStepLabel>{{'side-menu.new-case.caseTitle' | translate}}</ng-template>\n <mat-form-field color=\"primary\" appearance=\"outline\" class=\"margin-top-field\">\n <mat-label>\n {{'side-menu.new-case.caseTitle' | translate}}\n </mat-label>\n <input matInput autocomplete=\"off\" [formControl]=\"titleFormControl\" [required]=\"isCaseTitleRequired()\" (keyup.enter)=\"nextStep()\">\n </mat-form-field>\n <div mat-dialog-actions class=\"cvti-button-field\">\n <button mat-button class=\"margin-right\" (click)=\"stepper1.reset(); checkVersion(processFormControl.value)\">{{'side-menu.new-case.reset' | translate}}</button>\n <button mat-stroked-button color=\"primary\" class=\"min-height-36px\" (click)=\"createNewCase()\" [class.spinner]=\"loadingSubmit | async\"\n [disabled]=\"loadingSubmit | async\">\n <span *ngIf=\"(loadingSubmit | async) === false\"\n fxFlex>{{'side-menu.new-case.create' | translate}}</span>\n </button>\n </div>\n </mat-step>\n </mat-vertical-stepper>\n <mat-vertical-stepper *ngIf=\"(hasMultipleNets$ | async) === false\" linear #stepper2 class=\" netgrif-input\">\n <mat-step [stepControl]=\"titleFormControl\" errorMessage=\"{{'side-menu.new-case.errSecond' | translate}}\" >\n <ng-template matStepLabel>{{'side-menu.new-case.caseTitle' | translate}}</ng-template>\n <mat-form-field color=\"primary\" appearance=\"outline\" class=\"margin-top-field\">\n <mat-label>\n {{'side-menu.new-case.caseTitle' | translate}}\n </mat-label>\n <input matInput autocomplete=\"off\" [formControl]=\"titleFormControl\" [required]=\"isCaseTitleRequired()\" (keyup.enter)=\"nextStep()\">\n </mat-form-field>\n <div mat-dialog-actions class=\"cvti-button-field\">\n <button mat-stroked-button (click)=\"stepper2.reset()\">{{'side-menu.new-case.reset' | translate}}</button>\n <button mat-raised-button color=\"primary\" (click)=\"createNewCase()\" [class.spinner]=\"loadingSubmit | async\"\n [disabled]=\"loadingSubmit | async\">{{'side-menu.new-case.create' | translate}}</button>\n </div>\n </mat-step>\n </mat-vertical-stepper>\n <div *ngIf=\"(notInitialized$ | async)\" class=\"spinner-padding\" fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <mat-spinner></mat-spinner>\n </div>\n\n</div>\n\n", styles: [".version-span{padding-left:8px;color:gray}.spinner-padding{padding:24px}.spinner-margin{margin-top:16px}.min-height-36px{min-height:36px}.margin-right{margin-right:8px}@keyframes spinner{to{transform:rotate(360deg)}}.spinner:before{content:\"\";box-sizing:border-box;position:absolute;top:50%;left:50%;width:20px;height:20px;margin-top:-10px;margin-left:-10px;border-radius:50%;border:2px solid #ffffff;border-top-color:#000;animation:spinner .8s linear infinite}.margin-top-field{margin-top:4px}\n"], components: [{ type: i6.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["selectedIndex", "disableRipple", "color", "labelPosition"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }, { type: i6.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { type: i7.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i8.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i9.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i10.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i11.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }], directives: [{ type: i12.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i12.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i13.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.MatStepLabel, selector: "[matStepLabel]" }, { type: i7.MatLabel, selector: "mat-label" }, { type: i14.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i8.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i7.MatSuffix, selector: "[matSuffix]" }, { type: i13.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i12.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }], pipes: { "async": i13.AsyncPipe, "translate": i5.TranslatePipe } });
225
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NewCaseDialogComponent, decorators: [{
226
+ type: Component,
227
+ args: [{ selector: 'nc-new-case-dialog', template: "<div #toolbar class=\"mat-dialog-title\" fxLayout=\"column\" fxLayoutAlign=\"center none\">\n {{titleResolving()}}\n</div>\n<div mat-dialog-content class=\"dialog-field-fix\">\n <mat-vertical-stepper *ngIf=\"hasMultipleNets$ | async\" linear #stepper1 class=\" netgrif-input\">\n <mat-step [stepControl]=\"processFormControl\" errorMessage=\"{{'side-menu.new-case.errFirst' | translate}}\" >\n <ng-template matStepLabel>{{'side-menu.new-case.choose' | translate}}</ng-template>\n <mat-form-field color=\"primary\" appearance=\"outline\" class=\"margin-top-field\">\n <mat-label>\n {{'side-menu.new-case.choose' | translate}}\n </mat-label>\n <input type=\"text\" matInput [formControl]=\"processFormControl\" [matAutocomplete]=\"auto\" required\n (keyup.enter)=\"nextStep()\" (change)=\"checkVersion(processFormControl.value)\">\n <span class=\"version-span\" *ngIf=\"isVersionVisible\" matSuffix>{{netVersion}}</span>\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"displayFn\"\n (optionSelected)=\"showVersion($event.option)\">\n <mat-option *ngFor=\"let option of filteredOptions$ | async\" [value]=\"option\">\n {{option.viewValue}}\n <span class=\"version-span\" *ngIf=\"isVersionVisible\">{{option.version}}</span>\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n <div mat-dialog-actions class=\"cvti-button-field\" >\n <button *ngIf=\"isCaseTitleEnabled()\" mat-stroked-button (click)=\"toNextStep(processFormControl.value)\">{{'side-menu.new-case.next' | translate}}</button>\n <button *ngIf=\"!isCaseTitleEnabled()\" mat-raised-button color=\"primary\" (click)=\"createNewCase()\" [class.spinner]=\"loadingSubmit | async\"\n [disabled]=\"loadingSubmit | async\">{{'side-menu.new-case.create' | translate}}</button>\n </div>\n </mat-step>\n <mat-step *ngIf=\"isCaseTitleEnabled()\" [stepControl]=\"titleFormControl\" errorMessage=\"{{'side-menu.new-case.errSecond' | translate}}\" >\n <ng-template matStepLabel>{{'side-menu.new-case.caseTitle' | translate}}</ng-template>\n <mat-form-field color=\"primary\" appearance=\"outline\" class=\"margin-top-field\">\n <mat-label>\n {{'side-menu.new-case.caseTitle' | translate}}\n </mat-label>\n <input matInput autocomplete=\"off\" [formControl]=\"titleFormControl\" [required]=\"isCaseTitleRequired()\" (keyup.enter)=\"nextStep()\">\n </mat-form-field>\n <div mat-dialog-actions class=\"cvti-button-field\">\n <button mat-button class=\"margin-right\" (click)=\"stepper1.reset(); checkVersion(processFormControl.value)\">{{'side-menu.new-case.reset' | translate}}</button>\n <button mat-stroked-button color=\"primary\" class=\"min-height-36px\" (click)=\"createNewCase()\" [class.spinner]=\"loadingSubmit | async\"\n [disabled]=\"loadingSubmit | async\">\n <span *ngIf=\"(loadingSubmit | async) === false\"\n fxFlex>{{'side-menu.new-case.create' | translate}}</span>\n </button>\n </div>\n </mat-step>\n </mat-vertical-stepper>\n <mat-vertical-stepper *ngIf=\"(hasMultipleNets$ | async) === false\" linear #stepper2 class=\" netgrif-input\">\n <mat-step [stepControl]=\"titleFormControl\" errorMessage=\"{{'side-menu.new-case.errSecond' | translate}}\" >\n <ng-template matStepLabel>{{'side-menu.new-case.caseTitle' | translate}}</ng-template>\n <mat-form-field color=\"primary\" appearance=\"outline\" class=\"margin-top-field\">\n <mat-label>\n {{'side-menu.new-case.caseTitle' | translate}}\n </mat-label>\n <input matInput autocomplete=\"off\" [formControl]=\"titleFormControl\" [required]=\"isCaseTitleRequired()\" (keyup.enter)=\"nextStep()\">\n </mat-form-field>\n <div mat-dialog-actions class=\"cvti-button-field\">\n <button mat-stroked-button (click)=\"stepper2.reset()\">{{'side-menu.new-case.reset' | translate}}</button>\n <button mat-raised-button color=\"primary\" (click)=\"createNewCase()\" [class.spinner]=\"loadingSubmit | async\"\n [disabled]=\"loadingSubmit | async\">{{'side-menu.new-case.create' | translate}}</button>\n </div>\n </mat-step>\n </mat-vertical-stepper>\n <div *ngIf=\"(notInitialized$ | async)\" class=\"spinner-padding\" fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <mat-spinner></mat-spinner>\n </div>\n\n</div>\n\n", styles: [".version-span{padding-left:8px;color:gray}.spinner-padding{padding:24px}.spinner-margin{margin-top:16px}.min-height-36px{min-height:36px}.margin-right{margin-right:8px}@keyframes spinner{to{transform:rotate(360deg)}}.spinner:before{content:\"\";box-sizing:border-box;position:absolute;top:50%;left:50%;width:20px;height:20px;margin-top:-10px;margin-left:-10px;border-radius:50%;border:2px solid #ffffff;border-top-color:#000;animation:spinner .8s linear infinite}.margin-top-field{margin-top:4px}\n"] }]
228
+ }], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
229
+ type: Inject,
230
+ args: [MAT_DIALOG_DATA]
231
+ }] }, { type: i2.FormBuilder }, { type: i3.SnackBarService }, { type: i3.CaseResourceService }, { type: i4.HotkeysService }, { type: i5.TranslateService }, { type: undefined, decorators: [{
232
+ type: Optional
233
+ }, {
234
+ type: Inject,
235
+ args: [NAE_NET_VERSION_VISIBLE]
236
+ }] }, { type: undefined, decorators: [{
237
+ type: Optional
238
+ }, {
239
+ type: Inject,
240
+ args: [NAE_NET_ALL_VERSIONS]
241
+ }] }]; }, propDecorators: { toolbar: [{
242
+ type: ViewChild,
243
+ args: ['toolbar']
244
+ }], stepper1: [{
245
+ type: ViewChild,
246
+ args: ['stepper1']
247
+ }], stepper2: [{
248
+ type: ViewChild,
249
+ args: ['stepper2']
250
+ }] } });
251
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LWNhc2UtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy9zcmMvbGliL2RpYWxvZy9uZXctY2FzZS1kaWFsb2cvbmV3LWNhc2UtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy9zcmMvbGliL2RpYWxvZy9uZXctY2FzZS1kaWFsb2cvbmV3LWNhc2UtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFhLFFBQVEsRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFjLFdBQVcsRUFBRSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBYyxhQUFhLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFFN0YsT0FBTyxFQUUwQixjQUFjLEVBQzNDLG9CQUFvQixFQUFFLHVCQUF1QixFQUdoRCxNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBQyxNQUFNLEVBQWlCLE1BQU0sa0JBQWtCLENBQUM7QUFFeEQsT0FBTyxFQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE9BQU8sRUFBQyxlQUFlLEVBQWUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQWF2RSxNQUFNLE9BQU8sc0JBQXNCO0lBMEIvQixZQUFzQixVQUFnRCxFQUN2QixLQUE0QixFQUNyRCxZQUF5QixFQUN6QixnQkFBaUMsRUFDakMsb0JBQXlDLEVBQ3pDLGVBQStCLEVBQy9CLFVBQTRCLEVBQ08sZ0JBQXlCLEVB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Q0FBQyxLQUFLLEtBQUssU0FBUyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxLQUFLLFNBQVM7WUFDeEYsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUMvQyxDQUFDO0lBRUQsWUFBWSxDQUFDLFNBQWM7UUFDdkIsTUFBTSxhQUFhLEdBQUcsT0FBTyxTQUFTLEtBQUssUUFBUSxJQUFJLFNBQVMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztRQUMxRyxJQUFJLGFBQWEsS0FBSyxTQUFTLEVBQUU7WUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7U0FDeEI7SUFDTCxDQUFDO0lBRUQsVUFBVSxDQUFDLFNBQWM7UUFDckIsSUFBSSxTQUFTLEtBQUssSUFBSSxJQUFJLFNBQVMsQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQ3JELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDeEI7SUFDTCxDQUFDOztvSEFuUFEsc0JBQXNCLDhDQTJCWCxlQUFlLHdLQU1ILHVCQUF1Qiw2QkFDdkIsb0JBQW9CO3dHQWxDM0Msc0JBQXNCLDRVQzdCbkMsKzJKQW9FQTs0RkR2Q2Esc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNJLG9CQUFvQjs7MEJBK0JqQixNQUFNOzJCQUFDLGVBQWU7OzBCQU10QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLHVCQUF1Qjs7MEJBQzFDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsb0JBQW9COzRDQXBCOUIsT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTO2dCQUVHLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkFDRSxRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5qZWN0LCBPbkRlc3Ryb3ksIE9wdGlvbmFsLCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtNYXRUb29sYmFyfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sYmFyJztcbmltcG9ydCB7XG4gICAgQ2FzZVJlc291cmNlU2VydmljZSwgQ3JlYXRlQ2FzZUV2ZW50T3V0Y29tZSxcbiAgICBFdmVudE91dGNvbWVNZXNzYWdlUmVzb3VyY2UsIExvYWRpbmdFbWl0dGVyLFxuICAgIE5BRV9ORVRfQUxMX1ZFUlNJT05TLCBOQUVfTkVUX1ZFUlNJT05fVklTSUJMRSxcbiAgICBOZXdDYXNlSW5qZWN0aW9uRGF0YSwgU2lkZU1lbnVJbmplY3Rpb25EYXRhLFxuICAgIFNuYWNrQmFyU2VydmljZVxufSBmcm9tICdAbmV0Z3JpZi9jb21wb25lbnRzLWNvcmUnO1xuaW1wb3J0IHtIb3RrZXksIEhvdGtleXNTZXJ2aWNlfSBmcm9tICdhbmd1bGFyMi1ob3RrZXlzJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge21hcCwgc3RhcnRXaXRoLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCBzZW12ZXIgZnJvbSAnc2VtdmVyJztcbmltcG9ydCB7TWF0T3B0aW9ufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7TUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWZ9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmludGVyZmFjZSBGb3JtIHtcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIHZpZXdWYWx1ZTogc3RyaW5nO1xuICAgIHZlcnNpb24/OiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmMtbmV3LWNhc2UtZGlhbG9nJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbmV3LWNhc2UtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9uZXctY2FzZS1kaWFsb2cuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBOZXdDYXNlRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICAgIGlzVmVyc2lvblZpc2libGU/OiBib29sZWFuO1xuICAgIGFsbFZlcnNpb25FbmFibGVkPzogYm9vbGVhbjtcbiAgICBwcm9jZXNzRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgIHRpdGxlRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgIG5ldFZlcnNpb246IHN0cmluZztcblxuICAgIG9wdGlvbnM6IEFycmF5PEZvcm0+ID0gW107XG4gICAgY29sb3JzOiBBcnJheTxGb3JtPiA9IFtcbiAgICAgICAge3ZhbHVlOiAncGFuZWwtcHJpbWFyeS1pY29uJywgdmlld1ZhbHVlOiAnUHJpbWFyeSd9LFxuICAgICAgICB7dmFsdWU6ICdwYW5lbC1hY2NlbnQtaWNvbicsIHZpZXdWYWx1ZTogJ0FjY2VudCd9LFxuICAgIF07XG4gICAgZmlsdGVyZWRPcHRpb25zJDogT2JzZXJ2YWJsZTxBcnJheTxGb3JtPj47XG4gICAgQFZpZXdDaGlsZCgndG9vbGJhcicpIHRvb2xiYXI6IE1hdFRvb2xiYXI7XG5cbiAgICBAVmlld0NoaWxkKCdzdGVwcGVyMScpIHN0ZXBwZXIxO1xuICAgIEBWaWV3Q2hpbGQoJ3N0ZXBwZXIyJykgc3RlcHBlcjI7XG5cbiAgICBwdWJsaWMgbG9hZGluZ1N1Ym1pdDogTG9hZGluZ0VtaXR0ZXI7XG4gICAgcHJvdGVjdGVkIF9vcHRpb25zJDogUmVwbGF5U3ViamVjdDxBcnJheTxGb3JtPj47XG4gICAgcHJvdGVjdGVkIF9pbmplY3RlZERhdGE6IE5ld0Nhc2VJbmplY3Rpb25EYXRhO1xuICAgIHByb3RlY3RlZCBfaGFzTXVsdGlwbGVOZXRzJDogUmVwbGF5U3ViamVjdDxib29sZWFuPjtcbiAgICBwcm90ZWN0ZWQgX25vdEluaXRpYWxpemVkJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+O1xuICAgIHByaXZhdGUgX2FsbG93ZWROZXRzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX2RpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPE5ld0Nhc2VEaWFsb2dDb21wb25lbnQ+LFxuICAgICAgICAgICAgICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwcm90ZWN0ZWQgX2RhdGE6IFNpZGVNZW51SW5qZWN0aW9uRGF0YSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2Zvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3NuYWNrQmFyU2VydmljZTogU25hY2tCYXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfY2FzZVJlc291cmNlU2VydmljZTogQ2FzZVJlc291cmNlU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2hvdGtleXNTZXJ2aWNlOiBIb3RrZXlzU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE5BRV9ORVRfVkVSU0lPTl9WSVNJQkxFKSBpc1ZlcnNpb25WaXNpYmxlOiBib29sZWFuLFxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTkFFX05FVF9BTExfVkVSU0lPTlMpIGFsbFZlcnNpb25FbmFibGVkOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh0aGlzLl9kYXRhKSB7XG4gICAgICAgICAgICB0aGlzLl9pbmplY3RlZERhdGEgPSB0aGlzLl9kYXRhIGFzIE5ld0Nhc2VJbmplY3Rpb25EYXRhO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNWZXJzaW9uVmlzaWJsZSA9IGlzVmVyc2lvblZpc2libGUgIT09IG51bGwgPyBpc1ZlcnNpb25WaXNpYmxlIDogdHJ1ZTtcbiAgICAgICAgdGhpcy5hbGxWZXJzaW9uRW5hYmxlZCA9IGFsbFZlcnNpb25FbmFibGVkICE9PSBudWxsID8gYWxsVmVyc2lvbkVuYWJsZWQgOiBmYWxzZTtcbiAgICAgICAgaWYgKCF0aGlzLl9pbmplY3RlZERhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VOb05ldHMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9ob3RrZXlzU2VydmljZS5hZGQobmV3IEhvdGtleSgnZW50ZXInLCAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiBib29sZWFuID0+IHtcbiAgICAgICAgICAgIHRoaXMubmV4dFN0ZXAoKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIHRoaXMuX2hhc011bHRpcGxlTmV0cyQgPSBuZXcgUmVwbGF5U3ViamVjdCgxKTtcbiAgICAgICAgdGhpcy5fbm90SW5pdGlhbGl6ZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyQgPSBuZXcgUmVwbGF5U3ViamVjdCgxKTtcbiAgICAgICAgdGhpcy5sb2FkaW5nU3VibWl0ID0gbmV3IExvYWRpbmdFbWl0dGVyKGZhbHNlKTtcblxuICAgICAgICB0aGlzLl9hbGxvd2VkTmV0c1N1YnNjcmlwdGlvbiA9IHRoaXMuX2luamVjdGVkRGF0YS5hbGxvd2VkTmV0cyQucGlwZShcbiAgICAgICAgICAgIG1hcChuZXRzID0+IG5ldHMubWFwKHBldHJpTmV0ID0+ICh7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHBldHJpTmV0LnN0cmluZ0lkLFxuICAgICAgICAgICAgICAgIHZpZXdWYWx1ZTogcGV0cmlOZXQudGl0bGUsXG4gICAgICAgICAgICAgICAgdmVyc2lvbjogcGV0cmlOZXQudmVyc2lvblxuICAgICAgICAgICAgfSkpKSxcbiAgICAgICAgICAgIG1hcChuZXRzID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuYWxsVmVyc2lvbkVuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVtb3ZlT2xkVmVyc2lvbnMobmV0cyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldHM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0YXAob3B0aW9ucyA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VOb05ldHMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICAgICAgICAgICAgICB0aGlzLl9oYXNNdWx0aXBsZU5ldHMkLm5leHQob3B0aW9ucy5sZW5ndGggPiAxKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICkuc3Vic2NyaWJlKG9wdGlvbnMgPT4ge1xuICAgICAgICAgICAgdGhpcy5fb3B0aW9ucyQubmV4dChvcHRpb25zKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5fbm90SW5pdGlhbGl6ZWQkLmNsb3NlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX25vdEluaXRpYWxpemVkJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9ub3RJbml0aWFsaXplZCQuY29tcGxldGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMkID0gY29tYmluZUxhdGVzdChbdGhpcy5fb3B0aW9ucyQsIHRoaXMucHJvY2Vzc0Zvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aCgnJykpXSkucGlwZShcbiAgICAgICAgICAgIG1hcChzb3VyY2VzID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25zID0gc291cmNlc1swXTtcbiAgICAgICAgICAgICAgICBjb25zdCBpbnB1dCA9IHR5cGVvZiBzb3VyY2VzWzFdID09PSAnc3RyaW5nJyB8fCBzb3VyY2VzWzFdID09PSBudWxsID8gc291cmNlc1sxXSA6IHNvdXJjZXNbMV0udmlld1ZhbHVlO1xuICAgICAgICAgICAgICAgIHJldHVybiBpbnB1dCA/IHRoaXMuX2ZpbHRlcihpbnB1dCwgb3B0aW9ucykgOiBvcHRpb25zLnNsaWNlKCk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRhcChmaWx0ZXJlZE9wdGlvbnMgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJlZE9wdGlvbnMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0Zvcm1Db250cm9sLnNldFZhbHVlKGZpbHRlcmVkT3B0aW9uc1swXSwge2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9oYXNNdWx0aXBsZU5ldHMkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMubG9hZGluZ1N1Ym1pdC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9hbGxvd2VkTmV0c1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGFzTXVsdGlwbGVOZXRzJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc011bHRpcGxlTmV0cyQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBub3RJbml0aWFsaXplZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ub3RJbml0aWFsaXplZCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgZGlzcGxheUZuKHByb2Nlc3M6IEZvcm0pOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gcHJvY2VzcyAmJiBwcm9jZXNzLnZpZXdWYWx1ZSA/IHByb2Nlc3Mudmlld1ZhbHVlIDogJyc7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZU5ld0Nhc2UoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmxvYWRpbmdTdWJtaXQudmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnRpdGxlRm9ybUNvbnRyb2wudmFsaWQgfHwgIXRoaXMuaXNDYXNlVGl0bGVSZXF1aXJlZCgpKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdDYXNlID0ge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0aGlzLnRpdGxlRm9ybUNvbnRyb2wudmFsdWUgPT09ICcnID8gbnVsbCA6IHRoaXMudGl0bGVGb3JtQ29udHJvbC52YWx1ZSxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ3BhbmVsLXByaW1hcnktaWNvbicsXG4gICAgICAgICAgICAgICAgbmV0SWQ6IHRoaXMub3B0aW9ucy5sZW5ndGggPT09IDEgPyB0aGlzLm9wdGlvbnNbMF0udmFsdWUgOiB0aGlzLnByb2Nlc3NGb3JtQ29udHJvbC52YWx1ZS52YWx1ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ1N1Ym1pdC5vbigpO1xuICAgICAgICAgICAgdGhpcy5fY2FzZVJlc291cmNlU2VydmljZS5jcmVhdGVDYXNlKG5ld0Nhc2UpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlOiBFdmVudE91dGNvbWVNZXNzYWdlUmVzb3VyY2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ1N1Ym1pdC5vZmYoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIXJlc3BvbnNlLm91dGNvbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zbmFja0JhclNlcnZpY2Uub3BlblN1Y2Nlc3NTbmFja0JhcihyZXNwb25zZS5vdXRjb21lLm1lc3NhZ2UgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdzaWRlLW1lbnUubmV3LWNhc2UuY3JlYXRlQ2FzZScpICsgJyAnICsgbmV3Q2FzZS50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHJlc3BvbnNlLm91dGNvbWUubWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGlhbG9nUmVmLmNsb3NlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlbmVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogcmVzcG9uc2Uub3V0Y29tZS5tZXNzYWdlID09PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ0NvbmZpcm0gbmV3IGNhc2Ugc2V0dXAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHJlc3BvbnNlLm91dGNvbWUubWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IChyZXNwb25zZS5vdXRjb21lIGFzIENyZWF0ZUNhc2VFdmVudE91dGNvbWUpLmFDYXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCEhcmVzcG9uc2UuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zbmFja0JhclNlcnZpY2Uub3Blbldhcm5pbmdTbmFja0Jhcih0aGlzLl90cmFuc2xhdGUuaW5zdGFudCgnc2lkZS1tZW51Lm5ldy1jYXNlLmNyZWF0ZUNhc2VFcnJvcicpICsgJyAnICsgbmV3Q2FzZS50aXRsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGlhbG9nUmVmLmNsb3NlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlbmVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogcmVzcG9uc2UuZXJyb3IgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnQ29uZmlybSBuZXcgY2FzZSBzZXR1cCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcmVzcG9uc2UuZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nU3VibWl0Lm9mZigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc25hY2tCYXJTZXJ2aWNlLm9wZW5FcnJvclNuYWNrQmFyKGVycm9yLm1lc3NhZ2UgPyBlcnJvci5tZXNzYWdlIDogZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZ1bmN0aW9uIHRvIGZpbHRlciBvdXQgbWF0Y2hsZXNzIG9wdGlvbnMgd2l0aG91dCBhY2NlbnQgYW5kIGNhc2Utc2Vuc2l0aXZlIGRpZmZlcmVuY2VzXG4gICAgICogQHBhcmFtIHZhbHVlIHRvIGNvbXBhcmUgbWF0Y2hpbmcgb3B0aW9uc1xuICAgICAqIEBwYXJhbSBvcHRpb25zIHRoYXQgc2hvdWxkIGJlIGZpbHRlcmVkXG4gICAgICogQHJldHVybiAgcmV0dXJuIG1hdGNoZWQgb3B0aW9uc1xuICAgICAqL1xuICAgIHByb3RlY3RlZCBfZmlsdGVyKHZhbHVlOiBzdHJpbmcsIG9wdGlvbnM6IEFycmF5PEZvcm0+KTogQXJyYXk8Rm9ybT4ge1xuICAgICAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHZhbHVlLnRvTG93ZXJDYXNlKCkubm9ybWFsaXplKCdORkQnKS5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCAnJyk7XG5cbiAgICAgICAgcmV0dXJuIG9wdGlvbnMuZmlsdGVyKG9wdGlvbiA9PiBvcHRpb24udmlld1ZhbHVlLnRvTG93ZXJDYXNlKCkubm9ybWFsaXplKCdORkQnKVxuICAgICAgICAgICAgLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csICcnKS5pbmRleE9mKGZpbHRlclZhbHVlKSA9PT0gMCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNsb3NlTm9OZXRzKCkge1xuICAgICAgICB0aGlzLl9zbmFja0JhclNlcnZpY2Uub3BlbkVycm9yU25hY2tCYXIodGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ3NpZGUtbWVudS5uZXctY2FzZS5ub05ldHMnKSk7XG4gICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5jbG9zZSh7XG4gICAgICAgICAgICBvcGVuZWQ6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5leHRTdGVwKCkge1xuICAgICAgICBpZiAodGhpcy5zdGVwcGVyMSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc3RlcHBlcjEuc2VsZWN0ZWRJbmRleCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlTmV3Q2FzZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXBwZXIxLm5leHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zdGVwcGVyMikge1xuICAgICAgICAgICAgaWYgKHRoaXMuc3RlcHBlcjIuc2VsZWN0ZWRJbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlTmV3Q2FzZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXBwZXIyLm5leHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRpdGxlUmVzb2x2aW5nKCkge1xuICAgICAgICBjb25zdCBjYXplID0gdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ3NpZGUtbWVudS5uZXctY2FzZS5jYXNlJyk7XG4gICAgICAgIGNvbnN0IG5hbWUgPSB0eXBlb2YgdGhpcy5wcm9jZXNzRm9ybUNvbnRyb2wudmFsdWUgPT09ICdzdHJpbmcnIHx8IHRoaXMucHJvY2Vzc0Zvcm1Db250cm9sLnZhbHVlID09PSBudWxsID9cbiAgICAgICAgICAgIHVuZGVmaW5lZCA6IHRoaXMucHJvY2Vzc0Zvcm1Db250cm9sLnZhbHVlLnZpZXdWYWx1ZTtcbiAgICAgICAgcmV0dXJuIG5hbWUgPT09IHVuZGVmaW5lZCA/IGNhemUgOiBjYXplICsgJyAtICcgKyBuYW1lO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVtb3ZlT2xkVmVyc2lvbnMob3B0aW9uczogQXJyYXk8Rm9ybT4pOiBBcnJheTxGb3JtPiB7XG4gICAgICAgIGNvbnN0IHRlbXBOZXRzID0gT2JqZWN0LmFzc2lnbihbXSwgb3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IHBldHJpTmV0SWRzID0gbmV3IFNldChvcHRpb25zLm1hcChmb3JtID0+IGZvcm0udmFsdWUpKTtcbiAgICAgICAgY29uc3QgbmV3ZXN0TmV0cyA9IG5ldyBBcnJheTxGb3JtPigpO1xuXG4gICAgICAgIGZvciAoY29uc3QgdmFsdWUgb2YgcGV0cmlOZXRJZHMpIHtcbiAgICAgICAgICAgIGxldCBjdXJyZW50OiBGb3JtID0ge3ZhbHVlLCB2ZXJzaW9uOiAnMS4wLjAnLCB2aWV3VmFsdWU6ICcnfTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbmV0IG9mIHRlbXBOZXRzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSBuZXQudmFsdWUgJiYgIXNlbXZlci5sdChuZXQudmVyc2lvbiwgY3VycmVudC52ZXJzaW9uKSkge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50ID0gbmV0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5ld2VzdE5ldHMucHVzaChjdXJyZW50KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3ZXN0TmV0cztcbiAgICB9XG5cbiAgICBpc0Nhc2VUaXRsZUVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhISh0aGlzLl9pbmplY3RlZERhdGE/Lm5ld0Nhc2VDcmVhdGlvbkNvbmZpZ3VyYXRpb24/LmVuYWJsZUNhc2VUaXRsZSA/PyB0cnVlKTtcbiAgICB9XG5cbiAgICBpc0Nhc2VUaXRsZVJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0Nhc2VUaXRsZUVuYWJsZWQoKSAmJiAhISh0aGlzLl9pbmplY3RlZERhdGE/Lm5ld0Nhc2VDcmVhdGlvbkNvbmZpZ3VyYXRpb24/LmlzQ2FzZVRpdGxlUmVxdWlyZWQgPz8gdHJ1ZSk7XG4gICAgfVxuXG4gICAgc2hvd1ZlcnNpb24ob3B0aW9uOiBNYXRPcHRpb24pOiB2b2lkIHtcbiAgICAgICAgaWYgKG9wdGlvbiAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbi52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbi52YWx1ZS52ZXJzaW9uICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICB0aGlzLm5ldFZlcnNpb24gPSBvcHRpb24udmFsdWUudmVyc2lvbjtcbiAgICB9XG5cbiAgICBjaGVja1ZlcnNpb24odmlld1ZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY3VycmVudE9wdGlvbiA9IHR5cGVvZiB2aWV3VmFsdWUgPT09ICdzdHJpbmcnIHx8IHZpZXdWYWx1ZSA9PT0gbnVsbCA/IHVuZGVmaW5lZCA6IHZpZXdWYWx1ZS52ZXJzaW9uO1xuICAgICAgICBpZiAoY3VycmVudE9wdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLm5ldFZlcnNpb24gPSAnJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRvTmV4dFN0ZXAodmlld1ZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHZpZXdWYWx1ZSAhPT0gbnVsbCAmJiB2aWV3VmFsdWUudmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5zdGVwcGVyMS5uZXh0KCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2ICN0b29sYmFyIGNsYXNzPVwibWF0LWRpYWxvZy10aXRsZVwiIGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBub25lXCI+XG4gICAge3t0aXRsZVJlc29sdmluZygpfX1cbjwvZGl2PlxuPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQgY2xhc3M9XCJkaWFsb2ctZmllbGQtZml4XCI+XG4gICAgPG1hdC12ZXJ0aWNhbC1zdGVwcGVyICpuZ0lmPVwiaGFzTXVsdGlwbGVOZXRzJCB8IGFzeW5jXCIgbGluZWFyICNzdGVwcGVyMSBjbGFzcz1cIiBuZXRncmlmLWlucHV0XCI+XG4gICAgICAgIDxtYXQtc3RlcCBbc3RlcENvbnRyb2xdPVwicHJvY2Vzc0Zvcm1Db250cm9sXCIgZXJyb3JNZXNzYWdlPVwie3snc2lkZS1tZW51Lm5ldy1jYXNlLmVyckZpcnN0JyB8IHRyYW5zbGF0ZX19XCIgPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFN0ZXBMYWJlbD57eydzaWRlLW1lbnUubmV3LWNhc2UuY2hvb3NlJyB8IHRyYW5zbGF0ZX19PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjb2xvcj1cInByaW1hcnlcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwibWFyZ2luLXRvcC1maWVsZFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIHt7J3NpZGUtbWVudS5uZXctY2FzZS5jaG9vc2UnIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgICA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwicHJvY2Vzc0Zvcm1Db250cm9sXCIgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCIgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIm5leHRTdGVwKClcIiAoY2hhbmdlKT1cImNoZWNrVmVyc2lvbihwcm9jZXNzRm9ybUNvbnRyb2wudmFsdWUpXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2ZXJzaW9uLXNwYW5cIiAqbmdJZj1cImlzVmVyc2lvblZpc2libGVcIiBtYXRTdWZmaXg+e3tuZXRWZXJzaW9ufX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPG1hdC1hdXRvY29tcGxldGUgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIiBbZGlzcGxheVdpdGhdPVwiZGlzcGxheUZuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3B0aW9uU2VsZWN0ZWQpPVwic2hvd1ZlcnNpb24oJGV2ZW50Lm9wdGlvbilcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXJlZE9wdGlvbnMkIHwgYXN5bmNcIiBbdmFsdWVdPVwib3B0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e29wdGlvbi52aWV3VmFsdWV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2ZXJzaW9uLXNwYW5cIiAqbmdJZj1cImlzVmVyc2lvblZpc2libGVcIj57e29wdGlvbi52ZXJzaW9ufX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICA8L21hdC1hdXRvY29tcGxldGU+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPGRpdiBtYXQtZGlhbG9nLWFjdGlvbnMgY2xhc3M9XCJjdnRpLWJ1dHRvbi1maWVsZFwiID5cbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiaXNDYXNlVGl0bGVFbmFibGVkKClcIiAgbWF0LXN0cm9rZWQtYnV0dG9uIChjbGljayk9XCJ0b05leHRTdGVwKHByb2Nlc3NGb3JtQ29udHJvbC52YWx1ZSlcIj57eydzaWRlLW1lbnUubmV3LWNhc2UubmV4dCcgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhaXNDYXNlVGl0bGVFbmFibGVkKClcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiY3JlYXRlTmV3Q2FzZSgpXCIgW2NsYXNzLnNwaW5uZXJdPVwibG9hZGluZ1N1Ym1pdCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nU3VibWl0IHwgYXN5bmNcIj57eydzaWRlLW1lbnUubmV3LWNhc2UuY3JlYXRlJyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9tYXQtc3RlcD5cbiAgICAgICAgPG1hdC1zdGVwICpuZ0lmPVwiaXNDYXNlVGl0bGVFbmFibGVkKClcIiBbc3RlcENvbnRyb2xdPVwidGl0bGVGb3JtQ29udHJvbFwiIGVycm9yTWVzc2FnZT1cInt7J3NpZGUtbWVudS5uZXctY2FzZS5lcnJTZWNvbmQnIHwgdHJhbnNsYXRlfX1cIiA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0U3RlcExhYmVsPnt7J3NpZGUtbWVudS5uZXctY2FzZS5jYXNlVGl0bGUnIHwgdHJhbnNsYXRlfX08L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNvbG9yPVwicHJpbWFyeVwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJtYXJnaW4tdG9wLWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAge3snc2lkZS1tZW51Lm5ldy1jYXNlLmNhc2VUaXRsZScgfCB0cmFuc2xhdGV9fVxuICAgICAgICAgICAgICAgIDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiBbZm9ybUNvbnRyb2xdPVwidGl0bGVGb3JtQ29udHJvbFwiIFtyZXF1aXJlZF09XCJpc0Nhc2VUaXRsZVJlcXVpcmVkKClcIiAoa2V5dXAuZW50ZXIpPVwibmV4dFN0ZXAoKVwiPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxkaXYgbWF0LWRpYWxvZy1hY3Rpb25zIGNsYXNzPVwiY3Z0aS1idXR0b24tZmllbGRcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gY2xhc3M9XCJtYXJnaW4tcmlnaHRcIiAoY2xpY2spPVwic3RlcHBlcjEucmVzZXQoKTsgY2hlY2tWZXJzaW9uKHByb2Nlc3NGb3JtQ29udHJvbC52YWx1ZSlcIj57eydzaWRlLW1lbnUubmV3LWNhc2UucmVzZXQnIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cIm1pbi1oZWlnaHQtMzZweFwiIChjbGljayk9XCJjcmVhdGVOZXdDYXNlKClcIiBbY2xhc3Muc3Bpbm5lcl09XCJsb2FkaW5nU3VibWl0IHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmdTdWJtaXQgfCBhc3luY1wiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIihsb2FkaW5nU3VibWl0IHwgYXN5bmMpID09PSBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZ4RmxleD57eydzaWRlLW1lbnUubmV3LWNhc2UuY3JlYXRlJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWF0LXN0ZXA+XG4gICAgPC9tYXQtdmVydGljYWwtc3RlcHBlcj5cbiAgICA8bWF0LXZlcnRpY2FsLXN0ZXBwZXIgKm5nSWY9XCIoaGFzTXVsdGlwbGVOZXRzJCB8IGFzeW5jKSA9PT0gZmFsc2VcIiBsaW5lYXIgI3N0ZXBwZXIyIGNsYXNzPVwiIG5ldGdyaWYtaW5wdXRcIj5cbiAgICAgICAgPG1hdC1zdGVwIFtzdGVwQ29udHJvbF09XCJ0aXRsZUZvcm1Db250cm9sXCIgZXJyb3JNZXNzYWdlPVwie3snc2lkZS1tZW51Lm5ldy1jYXNlLmVyclNlY29uZCcgfCB0cmFuc2xhdGV9fVwiID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRTdGVwTGFiZWw+e3snc2lkZS1tZW51Lm5ldy1jYXNlLmNhc2VUaXRsZScgfCB0cmFuc2xhdGV9fTwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY29sb3I9XCJwcmltYXJ5XCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cIm1hcmdpbi10b3AtZmllbGRcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICB7eydzaWRlLW1lbnUubmV3LWNhc2UuY2FzZVRpdGxlJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0ICBhdXRvY29tcGxldGU9XCJvZmZcIiBbZm9ybUNvbnRyb2xdPVwidGl0bGVGb3JtQ29udHJvbFwiIFtyZXF1aXJlZF09XCJpc0Nhc2VUaXRsZVJlcXVpcmVkKClcIiAoa2V5dXAuZW50ZXIpPVwibmV4dFN0ZXAoKVwiPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxkaXYgbWF0LWRpYWxvZy1hY3Rpb25zIGNsYXNzPVwiY3Z0aS1idXR0b24tZmllbGRcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiAoY2xpY2spPVwic3RlcHBlcjIucmVzZXQoKVwiPnt7J3NpZGUtbWVudS5uZXctY2FzZS5yZXNldCcgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImNyZWF0ZU5ld0Nhc2UoKVwiIFtjbGFzcy5zcGlubmVyXT1cImxvYWRpbmdTdWJtaXQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibG9hZGluZ1N1Ym1pdCB8IGFzeW5jXCI+e3snc2lkZS1tZW51Lm5ldy1jYXNlLmNyZWF0ZScgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWF0LXN0ZXA+XG4gICAgPC9tYXQtdmVydGljYWwtc3RlcHBlcj5cbiAgICA8ZGl2ICpuZ0lmPVwiKG5vdEluaXRpYWxpemVkJCB8IGFzeW5jKVwiIGNsYXNzPVwic3Bpbm5lci1wYWRkaW5nXCIgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiPlxuICAgICAgICA8bWF0LXNwaW5uZXI+PC9tYXQtc3Bpbm5lcj5cbiAgICA8L2Rpdj5cblxuPC9kaXY+XG5cbiJdfQ==
@@ -0,0 +1,11 @@
1
+ export * from './dialog.module';
2
+ export * from './new-case-dialog/new-case-dialog.component';
3
+ export * from './import-net-dialog/import-net-dialog.component';
4
+ export * from './user-assign-dialog/user-assign-dialog.component';
5
+ export * from './multi-user-assign-dialog/multi-user-assign-dialog.component';
6
+ export * from './admin-impersonate-dialog/admin-impersonate-dialog.component';
7
+ export * from './user-impersonate-dialog/user-impersonate-dialog.component';
8
+ export * from './filter-selector-dialog/filter-selector-dialog.component';
9
+ export * from './load-filter-dialog/load-filter-dialog.component';
10
+ export * from './save-filter-dialog/save-filter-dialog.component';
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy9zcmMvbGliL2RpYWxvZy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYywrREFBK0QsQ0FBQztBQUM5RSxjQUFjLCtEQUErRCxDQUFDO0FBQzlFLGNBQWMsNkRBQTZELENBQUM7QUFDNUUsY0FBYywyREFBMkQsQ0FBQztBQUMxRSxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsbURBQW1ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2RpYWxvZy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9uZXctY2FzZS1kaWFsb2cvbmV3LWNhc2UtZGlhbG9nLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2ltcG9ydC1uZXQtZGlhbG9nL2ltcG9ydC1uZXQtZGlhbG9nLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3VzZXItYXNzaWduLWRpYWxvZy91c2VyLWFzc2lnbi1kaWFsb2cuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbXVsdGktdXNlci1hc3NpZ24tZGlhbG9nL211bHRpLXVzZXItYXNzaWduLWRpYWxvZy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9hZG1pbi1pbXBlcnNvbmF0ZS1kaWFsb2cvYWRtaW4taW1wZXJzb25hdGUtZGlhbG9nLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3VzZXItaW1wZXJzb25hdGUtZGlhbG9nL3VzZXItaW1wZXJzb25hdGUtZGlhbG9nLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbHRlci1zZWxlY3Rvci1kaWFsb2cvZmlsdGVyLXNlbGVjdG9yLWRpYWxvZy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9sb2FkLWZpbHRlci1kaWFsb2cvbG9hZC1maWx0ZXItZGlhbG9nLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NhdmUtZmlsdGVyLWRpYWxvZy9zYXZlLWZpbHRlci1kaWFsb2cuY29tcG9uZW50JztcbiJdfQ==
@@ -0,0 +1,83 @@
1
+ import { Component, Inject } from '@angular/core';
2
+ import { AbstractTaskViewComponent, AllowedNetsService, AllowedNetsServiceFactory, NAE_BASE_FILTER, SearchService, SimpleFilter, TaskEvent, TaskViewService, UserFilterConstants, } from '@netgrif/components-core';
3
+ import { MAT_DIALOG_DATA } from '@angular/material/dialog';
4
+ import { localAllowedNetsFactory } from '../../side-menu/content-components/save-filter/save-filter.component';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/material/dialog";
7
+ import * as i2 from "@netgrif/components-core";
8
+ import * as i3 from "@angular/router";
9
+ import * as i4 from "../../panel/task-panel-list/task-list.component";
10
+ import * as i5 from "@angular/flex-layout/flex";
11
+ import * as i6 from "@ngx-translate/core";
12
+ export function saveBaseFilterFactory(dialogControl) {
13
+ if (!dialogControl) {
14
+ throw new Error('NewFilterCaseId was not provided in the sidemenu injectio data');
15
+ }
16
+ const injectedData = dialogControl;
17
+ return {
18
+ filter: SimpleFilter.fromTaskQuery({
19
+ case: { id: injectedData.newFilterCaseId },
20
+ transitionId: UserFilterConstants.NEW_FILTER_TRANSITION_ID
21
+ })
22
+ };
23
+ }
24
+ export class SaveFilterDialogComponent extends AbstractTaskViewComponent {
25
+ constructor(_dialogRef, _data, _userFilterService, _log, taskViewService, _activatedRoute) {
26
+ super(taskViewService, _activatedRoute);
27
+ this._dialogRef = _dialogRef;
28
+ this._data = _data;
29
+ this._userFilterService = _userFilterService;
30
+ this._log = _log;
31
+ if (this._data) {
32
+ this._injectedData = this._data;
33
+ }
34
+ }
35
+ processTaskEvents(notification) {
36
+ if (!notification.success) {
37
+ return;
38
+ }
39
+ if (notification.event === TaskEvent.FINISH) {
40
+ this._dialogRef.close({ opened: false, message: 'Filter saved' });
41
+ }
42
+ if (notification.event === TaskEvent.CANCEL) {
43
+ this._userFilterService.delete(this._injectedData.newFilterCaseId);
44
+ this._dialogRef.close({ opened: false, message: 'Filter save canceled' });
45
+ }
46
+ }
47
+ }
48
+ SaveFilterDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SaveFilterDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i2.UserFiltersService }, { token: i2.LoggerService }, { token: i2.TaskViewService }, { token: i3.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
49
+ SaveFilterDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: SaveFilterDialogComponent, selector: "nc-save-filter-dialog", providers: [
50
+ TaskViewService,
51
+ SearchService,
52
+ {
53
+ provide: NAE_BASE_FILTER,
54
+ useFactory: saveBaseFilterFactory,
55
+ deps: [MAT_DIALOG_DATA]
56
+ },
57
+ {
58
+ provide: AllowedNetsService,
59
+ useFactory: localAllowedNetsFactory,
60
+ deps: [AllowedNetsServiceFactory]
61
+ },
62
+ ], usesInheritance: true, ngImport: i0, template: "<div class=\"mat-dialog-title\" fxLayout=\"column\" fxLayoutAlign=\"center none\">\n {{ 'search.tooltip.save' | translate}}\n</div>\n<div mat-dialog-content class=\"save-filter-container side-menu-root\">\n <nc-task-list [allowMultiOpen]=\"false\" [tasks$]=\"tasks$\" [loading$]=\"loading$\" [textEllipsis]=\"true\" [forceLoadDataOnOpen]=\"true\"\n [responsiveBody]=\"true\" [selectedHeaders$]=\"selectedHeaders$\" (taskEvent)=\"processTaskEvents($event)\" fxFlex class=\"virtual-scroll-list-padding\"></nc-task-list>\n</div>\n\n", styles: [".save-filter-container{height:calc(100% - 64px);padding-left:8px;padding-right:8px;margin:0}.virtual-scroll-list-padding{padding-right:4px}\n"], components: [{ type: i4.TaskListComponent, selector: "nc-task-list" }], directives: [{ type: i5.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i5.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i5.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }], pipes: { "translate": i6.TranslatePipe } });
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SaveFilterDialogComponent, decorators: [{
64
+ type: Component,
65
+ args: [{ selector: 'nc-save-filter-dialog', providers: [
66
+ TaskViewService,
67
+ SearchService,
68
+ {
69
+ provide: NAE_BASE_FILTER,
70
+ useFactory: saveBaseFilterFactory,
71
+ deps: [MAT_DIALOG_DATA]
72
+ },
73
+ {
74
+ provide: AllowedNetsService,
75
+ useFactory: localAllowedNetsFactory,
76
+ deps: [AllowedNetsServiceFactory]
77
+ },
78
+ ], template: "<div class=\"mat-dialog-title\" fxLayout=\"column\" fxLayoutAlign=\"center none\">\n {{ 'search.tooltip.save' | translate}}\n</div>\n<div mat-dialog-content class=\"save-filter-container side-menu-root\">\n <nc-task-list [allowMultiOpen]=\"false\" [tasks$]=\"tasks$\" [loading$]=\"loading$\" [textEllipsis]=\"true\" [forceLoadDataOnOpen]=\"true\"\n [responsiveBody]=\"true\" [selectedHeaders$]=\"selectedHeaders$\" (taskEvent)=\"processTaskEvents($event)\" fxFlex class=\"virtual-scroll-list-padding\"></nc-task-list>\n</div>\n\n", styles: [".save-filter-container{height:calc(100% - 64px);padding-left:8px;padding-right:8px;margin:0}.virtual-scroll-list-padding{padding-right:4px}\n"] }]
79
+ }], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
80
+ type: Inject,
81
+ args: [MAT_DIALOG_DATA]
82
+ }] }, { type: i2.UserFiltersService }, { type: i2.LoggerService }, { type: i2.TaskViewService }, { type: i3.ActivatedRoute }]; } });
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZS1maWx0ZXItZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy9zcmMvbGliL2RpYWxvZy9zYXZlLWZpbHRlci1kaWFsb2cvc2F2ZS1maWx0ZXItZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy9zcmMvbGliL2RpYWxvZy9zYXZlLWZpbHRlci1kaWFsb2cvc2F2ZS1maWx0ZXItZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFDSCx5QkFBeUIsRUFDekIsa0JBQWtCLEVBQ2xCLHlCQUF5QixFQUV6QixlQUFlLEVBRWYsYUFBYSxFQUFFLFlBQVksRUFDM0IsU0FBUyxFQUVULGVBQWUsRUFBRSxtQkFBbUIsR0FFdkMsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUMsZUFBZSxFQUFlLE1BQU0sMEJBQTBCLENBQUM7QUFFdkUsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sc0VBQXNFLENBQUM7Ozs7Ozs7O0FBRTdHLE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxhQUFzQztJQUN4RSxJQUFJLENBQUMsYUFBYSxFQUFFO1FBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0VBQWdFLENBQUMsQ0FBQztLQUNyRjtJQUNELE1BQU0sWUFBWSxHQUFHLGFBQXdDLENBQUM7SUFFOUQsT0FBTztRQUNILE1BQU0sRUFBRSxZQUFZLENBQUMsYUFBYSxDQUFDO1lBQy9CLElBQUksRUFBRSxFQUFDLEVBQUUsRUFBRSxZQUFZLENBQUMsZUFBZSxFQUFDO1lBQ3hDLFlBQVksRUFBRSxtQkFBbUIsQ0FBQyx3QkFBd0I7U0FDN0QsQ0FBQztLQUNMLENBQUM7QUFDTixDQUFDO0FBc0JELE1BQU0sT0FBTyx5QkFBMEIsU0FBUSx5QkFBeUI7SUFJcEUsWUFBc0IsVUFBbUQsRUFDMUIsS0FBOEIsRUFDdkQsa0JBQXNDLEVBQ3RDLElBQW1CLEVBQzdCLGVBQWdDLEVBQ2hDLGVBQWdDO1FBQ3hDLEtBQUssQ0FBQyxlQUFlLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFOdEIsZUFBVSxHQUFWLFVBQVUsQ0FBeUM7UUFDMUIsVUFBSyxHQUFMLEtBQUssQ0FBeUI7UUFDdkQsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxTQUFJLEdBQUosSUFBSSxDQUFlO1FBSXJDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNaLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQWdDLENBQUM7U0FDOUQ7SUFDTCxDQUFDO0lBRU0saUJBQWlCLENBQUMsWUFBbUM7UUFDeEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUU7WUFDdkIsT0FBTztTQUNWO1FBRUQsSUFBSSxZQUFZLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxNQUFNLEVBQUU7WUFDekMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUMsQ0FBQyxDQUFDO1NBQ25FO1FBRUQsSUFBSSxZQUFZLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxNQUFNLEVBQUU7WUFDekMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ25FLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUMsQ0FBQyxDQUFDO1NBQzNFO0lBQ0wsQ0FBQzs7dUhBN0JRLHlCQUF5Qiw4Q0FLZCxlQUFlOzJHQUwxQix5QkFBeUIsZ0RBZnZCO1FBQ1AsZUFBZTtRQUNmLGFBQWE7UUFDYjtZQUNJLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLFVBQVUsRUFBRSxxQkFBcUI7WUFDakMsSUFBSSxFQUFFLENBQUMsZUFBZSxDQUFDO1NBQzFCO1FBQ0Q7WUFDSSxPQUFPLEVBQUUsa0JBQWtCO1lBQzNCLFVBQVUsRUFBRSx1QkFBdUI7WUFDbkMsSUFBSSxFQUFFLENBQUMseUJBQXlCLENBQUM7U0FDcEM7S0FDSixpRENsREwsMGlCQVFBOzRGRDRDYSx5QkFBeUI7a0JBbkJyQyxTQUFTOytCQUNJLHVCQUF1QixhQUd0Qjt3QkFDUCxlQUFlO3dCQUNmLGFBQWE7d0JBQ2I7NEJBQ0ksT0FBTyxFQUFFLGVBQWU7NEJBQ3hCLFVBQVUsRUFBRSxxQkFBcUI7NEJBQ2pDLElBQUksRUFBRSxDQUFDLGVBQWUsQ0FBQzt5QkFDMUI7d0JBQ0Q7NEJBQ0ksT0FBTyxFQUFFLGtCQUFrQjs0QkFDM0IsVUFBVSxFQUFFLHVCQUF1Qjs0QkFDbkMsSUFBSSxFQUFFLENBQUMseUJBQXlCLENBQUM7eUJBQ3BDO3FCQUNKOzswQkFPWSxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQWJzdHJhY3RUYXNrVmlld0NvbXBvbmVudCxcbiAgICBBbGxvd2VkTmV0c1NlcnZpY2UsXG4gICAgQWxsb3dlZE5ldHNTZXJ2aWNlRmFjdG9yeSwgQmFzZUZpbHRlcixcbiAgICBMb2dnZXJTZXJ2aWNlLFxuICAgIE5BRV9CQVNFX0ZJTFRFUixcbiAgICBTYXZlRmlsdGVySW5qZWN0aW9uRGF0YSxcbiAgICBTZWFyY2hTZXJ2aWNlLCBTaW1wbGVGaWx0ZXIsXG4gICAgVGFza0V2ZW50LFxuICAgIFRhc2tFdmVudE5vdGlmaWNhdGlvbixcbiAgICBUYXNrVmlld1NlcnZpY2UsIFVzZXJGaWx0ZXJDb25zdGFudHMsXG4gICAgVXNlckZpbHRlcnNTZXJ2aWNlLFxufSBmcm9tICdAbmV0Z3JpZi9jb21wb25lbnRzLWNvcmUnO1xuaW1wb3J0IHtNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge2xvY2FsQWxsb3dlZE5ldHNGYWN0b3J5fSBmcm9tICcuLi8uLi9zaWRlLW1lbnUvY29udGVudC1jb21wb25lbnRzL3NhdmUtZmlsdGVyL3NhdmUtZmlsdGVyLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzYXZlQmFzZUZpbHRlckZhY3RvcnkoZGlhbG9nQ29udHJvbDogU2F2ZUZpbHRlckluamVjdGlvbkRhdGEpOiBCYXNlRmlsdGVyIHtcbiAgICBpZiAoIWRpYWxvZ0NvbnRyb2wpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOZXdGaWx0ZXJDYXNlSWQgd2FzIG5vdCBwcm92aWRlZCBpbiB0aGUgc2lkZW1lbnUgaW5qZWN0aW8gZGF0YScpO1xuICAgIH1cbiAgICBjb25zdCBpbmplY3RlZERhdGEgPSBkaWFsb2dDb250cm9sIGFzIFNhdmVGaWx0ZXJJbmplY3Rpb25EYXRhO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgZmlsdGVyOiBTaW1wbGVGaWx0ZXIuZnJvbVRhc2tRdWVyeSh7XG4gICAgICAgICAgICBjYXNlOiB7aWQ6IGluamVjdGVkRGF0YS5uZXdGaWx0ZXJDYXNlSWR9LFxuICAgICAgICAgICAgdHJhbnNpdGlvbklkOiBVc2VyRmlsdGVyQ29uc3RhbnRzLk5FV19GSUxURVJfVFJBTlNJVElPTl9JRFxuICAgICAgICB9KVxuICAgIH07XG59XG5cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduYy1zYXZlLWZpbHRlci1kaWFsb2cnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zYXZlLWZpbHRlci1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3NhdmUtZmlsdGVyLWRpYWxvZy5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBUYXNrVmlld1NlcnZpY2UsXG4gICAgICAgIFNlYXJjaFNlcnZpY2UsXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5BRV9CQVNFX0ZJTFRFUixcbiAgICAgICAgICAgIHVzZUZhY3Rvcnk6IHNhdmVCYXNlRmlsdGVyRmFjdG9yeSxcbiAgICAgICAgICAgIGRlcHM6IFtNQVRfRElBTE9HX0RBVEFdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEFsbG93ZWROZXRzU2VydmljZSxcbiAgICAgICAgICAgIHVzZUZhY3Rvcnk6IGxvY2FsQWxsb3dlZE5ldHNGYWN0b3J5LFxuICAgICAgICAgICAgZGVwczogW0FsbG93ZWROZXRzU2VydmljZUZhY3RvcnldXG4gICAgICAgIH0sXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBTYXZlRmlsdGVyRGlhbG9nQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RUYXNrVmlld0NvbXBvbmVudCB7XG5cbiAgICBwcm90ZWN0ZWQgX2luamVjdGVkRGF0YTogU2F2ZUZpbHRlckluamVjdGlvbkRhdGE7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX2RpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFNhdmVGaWx0ZXJEaWFsb2dDb21wb25lbnQ+LFxuICAgICAgICAgICAgICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwcm90ZWN0ZWQgX2RhdGE6IFNhdmVGaWx0ZXJJbmplY3Rpb25EYXRhLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfdXNlckZpbHRlclNlcnZpY2U6IFVzZXJGaWx0ZXJzU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2xvZzogTG9nZ2VyU2VydmljZSxcbiAgICAgICAgICAgICAgICB0YXNrVmlld1NlcnZpY2U6IFRhc2tWaWV3U2VydmljZSxcbiAgICAgICAgICAgICAgICBfYWN0aXZhdGVkUm91dGU/OiBBY3RpdmF0ZWRSb3V0ZSkge1xuICAgICAgICBzdXBlcih0YXNrVmlld1NlcnZpY2UsIF9hY3RpdmF0ZWRSb3V0ZSk7XG4gICAgICAgIGlmICh0aGlzLl9kYXRhKSB7XG4gICAgICAgICAgICB0aGlzLl9pbmplY3RlZERhdGEgPSB0aGlzLl9kYXRhIGFzIFNhdmVGaWx0ZXJJbmplY3Rpb25EYXRhO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHByb2Nlc3NUYXNrRXZlbnRzKG5vdGlmaWNhdGlvbjogVGFza0V2ZW50Tm90aWZpY2F0aW9uKTogdm9pZCB7XG4gICAgICAgIGlmICghbm90aWZpY2F0aW9uLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChub3RpZmljYXRpb24uZXZlbnQgPT09IFRhc2tFdmVudC5GSU5JU0gpIHtcbiAgICAgICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5jbG9zZSh7b3BlbmVkOiBmYWxzZSwgbWVzc2FnZTogJ0ZpbHRlciBzYXZlZCd9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChub3RpZmljYXRpb24uZXZlbnQgPT09IFRhc2tFdmVudC5DQU5DRUwpIHtcbiAgICAgICAgICAgIHRoaXMuX3VzZXJGaWx0ZXJTZXJ2aWNlLmRlbGV0ZSh0aGlzLl9pbmplY3RlZERhdGEubmV3RmlsdGVyQ2FzZUlkKTtcbiAgICAgICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5jbG9zZSh7b3BlbmVkOiBmYWxzZSwgbWVzc2FnZTogJ0ZpbHRlciBzYXZlIGNhbmNlbGVkJ30pO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1hdC1kaWFsb2ctdGl0bGVcIiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgbm9uZVwiPlxuICAgIHt7ICdzZWFyY2gudG9vbHRpcC5zYXZlJyB8IHRyYW5zbGF0ZX19XG48L2Rpdj5cbjxkaXYgbWF0LWRpYWxvZy1jb250ZW50IGNsYXNzPVwic2F2ZS1maWx0ZXItY29udGFpbmVyIHNpZGUtbWVudS1yb290XCI+XG4gICAgPG5jLXRhc2stbGlzdCBbYWxsb3dNdWx0aU9wZW5dPVwiZmFsc2VcIiBbdGFza3MkXT1cInRhc2tzJFwiIFtsb2FkaW5nJF09XCJsb2FkaW5nJFwiIFt0ZXh0RWxsaXBzaXNdPVwidHJ1ZVwiIFtmb3JjZUxvYWREYXRhT25PcGVuXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgW3Jlc3BvbnNpdmVCb2R5XT1cInRydWVcIiBbc2VsZWN0ZWRIZWFkZXJzJF09XCJzZWxlY3RlZEhlYWRlcnMkXCIgKHRhc2tFdmVudCk9XCJwcm9jZXNzVGFza0V2ZW50cygkZXZlbnQpXCIgZnhGbGV4IGNsYXNzPVwidmlydHVhbC1zY3JvbGwtbGlzdC1wYWRkaW5nXCI+PC9uYy10YXNrLWxpc3Q+XG48L2Rpdj5cblxuIl19
@@ -0,0 +1,73 @@
1
+ import { Component, Inject } from '@angular/core';
2
+ import { UserListService } from '@netgrif/components-core';
3
+ import { FormControl } from '@angular/forms';
4
+ import { MAT_DIALOG_DATA } from '@angular/material/dialog';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/material/dialog";
7
+ import * as i2 from "@angular/material/form-field";
8
+ import * as i3 from "@angular/material/icon";
9
+ import * as i4 from "@angular/material/button";
10
+ import * as i5 from "../../side-menu/content-components/user-assign/user-assign-list/user-assign-list.component";
11
+ import * as i6 from "@angular/flex-layout/flex";
12
+ import * as i7 from "@angular/material/input";
13
+ import * as i8 from "@angular/forms";
14
+ import * as i9 from "@angular/common";
15
+ import * as i10 from "@ngx-translate/core";
16
+ export class UserAssignDialogComponent {
17
+ /**
18
+ * Inject and set data send from [UserFieldComponent]{@link AbstractUserFieldComponent} if the user is preselected.
19
+ * @param _sideMenuControl Contains [Roles]{@link ProcessRole} and [UserValue]{@link UserValue}.
20
+ */
21
+ constructor(_dialogRef, _data) {
22
+ this._dialogRef = _dialogRef;
23
+ this._data = _data;
24
+ /**
25
+ * Form control for user search value.
26
+ */
27
+ this.searchUserControl = new FormControl();
28
+ if (this._data) {
29
+ this.injectedData = this._data;
30
+ }
31
+ }
32
+ /**
33
+ * The user that is initially selected, or `undefined` if none is
34
+ */
35
+ get initiallySelectedUser() {
36
+ return this.injectedData ? this.injectedData.value : undefined;
37
+ }
38
+ get roles() {
39
+ return this.injectedData ? this.injectedData.roles : [];
40
+ }
41
+ get negativeRoles() {
42
+ return this.injectedData ? this.injectedData.negativeRoles : [];
43
+ }
44
+ /**
45
+ * On select user from users assign list publish side menu with selected user as data and message about selection.
46
+ * @param user Select current user as [UserValue]{@link UserValue}
47
+ */
48
+ userWasSelected(user) {
49
+ this._currentUser = user;
50
+ }
51
+ /**
52
+ * On assign button close side menu with selected user as data and message about confirm.
53
+ */
54
+ assign() {
55
+ if (this._currentUser !== undefined) {
56
+ this._dialogRef.close({
57
+ opened: false,
58
+ message: 'Selected user was confirmed',
59
+ data: this._currentUser
60
+ });
61
+ }
62
+ }
63
+ }
64
+ UserAssignDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: UserAssignDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
65
+ UserAssignDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: UserAssignDialogComponent, selector: "nc-user-assign-dialog", providers: [UserListService], ngImport: i0, template: "<div class=\"mat-dialog-title\" fxLayout=\"column\" fxLayoutAlign=\"center none\">\n {{ 'side-menu.user.assign' | translate }}\n</div>\n<div mat-dialog-content fxLayoutAlign=\"start stretch\" class=\"height-fix\">\n <div class=\"user-assign-container side-menu-root\" fxFlex fxLayout=\"column\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"netgrif-input netgrif-input-fix\">\n <mat-form-field fxFlex=\"100\" class=\"user-assign-search\" color=\"primary\" appearance=\"outline\">\n <mat-icon matPrefix class=\"prefix-icon\">search</mat-icon>\n <input matInput placeholder=\"{{ 'side-menu.user.choose' | translate }}\"\n [formControl]=\"searchUserControl\">\n <button mat-stroked-button *ngIf=\"searchUserControl.value\" matSuffix mat-icon-button\n (click)=\"searchUserControl.setValue('')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </div>\n\n <nc-user-assign-list fxFlex class=\"height-100\"\n [searchUserControl]=\"searchUserControl\"\n [roles]=\"roles\"\n [negativeRoles]=\"negativeRoles\"\n [initiallySelectedUser]=\"initiallySelectedUser\"\n (userSelected)=\"userWasSelected($event)\">\n </nc-user-assign-list>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"end center\">\n <button mat-raised-button color=\"primary\"\n (click)=\"assign()\">{{ 'tasks.view.assign' | translate | uppercase }}</button>\n </div>\n </div>\n</div>\n", styles: [".user-assign-container{padding:16px;position:relative;height:100%}.user-assign-search{width:100%}.prefix-icon{font-size:18px;color:#64748b}.height-100{height:100%}.height-fix{height:calc(100% - 44px)}\n"], components: [{ type: i2.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5.UserAssignListComponent, selector: "nc-user-assign-list" }], directives: [{ type: i6.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i6.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i6.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i2.MatPrefix, selector: "[matPrefix]" }, { type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.MatSuffix, selector: "[matSuffix]" }], pipes: { "translate": i10.TranslatePipe, "uppercase": i9.UpperCasePipe } });
66
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: UserAssignDialogComponent, decorators: [{
67
+ type: Component,
68
+ args: [{ selector: 'nc-user-assign-dialog', providers: [UserListService], template: "<div class=\"mat-dialog-title\" fxLayout=\"column\" fxLayoutAlign=\"center none\">\n {{ 'side-menu.user.assign' | translate }}\n</div>\n<div mat-dialog-content fxLayoutAlign=\"start stretch\" class=\"height-fix\">\n <div class=\"user-assign-container side-menu-root\" fxFlex fxLayout=\"column\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"netgrif-input netgrif-input-fix\">\n <mat-form-field fxFlex=\"100\" class=\"user-assign-search\" color=\"primary\" appearance=\"outline\">\n <mat-icon matPrefix class=\"prefix-icon\">search</mat-icon>\n <input matInput placeholder=\"{{ 'side-menu.user.choose' | translate }}\"\n [formControl]=\"searchUserControl\">\n <button mat-stroked-button *ngIf=\"searchUserControl.value\" matSuffix mat-icon-button\n (click)=\"searchUserControl.setValue('')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </div>\n\n <nc-user-assign-list fxFlex class=\"height-100\"\n [searchUserControl]=\"searchUserControl\"\n [roles]=\"roles\"\n [negativeRoles]=\"negativeRoles\"\n [initiallySelectedUser]=\"initiallySelectedUser\"\n (userSelected)=\"userWasSelected($event)\">\n </nc-user-assign-list>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"end center\">\n <button mat-raised-button color=\"primary\"\n (click)=\"assign()\">{{ 'tasks.view.assign' | translate | uppercase }}</button>\n </div>\n </div>\n</div>\n", styles: [".user-assign-container{padding:16px;position:relative;height:100%}.user-assign-search{width:100%}.prefix-icon{font-size:18px;color:#64748b}.height-100{height:100%}.height-fix{height:calc(100% - 44px)}\n"] }]
69
+ }], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
70
+ type: Inject,
71
+ args: [MAT_DIALOG_DATA]
72
+ }] }]; } });
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1hc3NpZ24tZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy9zcmMvbGliL2RpYWxvZy91c2VyLWFzc2lnbi1kaWFsb2cvdXNlci1hc3NpZ24tZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy9zcmMvbGliL2RpYWxvZy91c2VyLWFzc2lnbi1kaWFsb2cvdXNlci1hc3NpZ24tZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFFbUIsZUFBZSxFQUV4QyxNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsZUFBZSxFQUFlLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7OztBQVF2RSxNQUFNLE9BQU8seUJBQXlCO0lBZ0JsQzs7O09BR0c7SUFDSCxZQUFzQixVQUFtRCxFQUMxQixLQUEyQjtRQURwRCxlQUFVLEdBQVYsVUFBVSxDQUF5QztRQUMxQixVQUFLLEdBQUwsS0FBSyxDQUFzQjtRQXBCMUU7O1dBRUc7UUFDSSxzQkFBaUIsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBa0J6QyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDWixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUE2QixDQUFDO1NBQzFEO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxxQkFBcUI7UUFDNUIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQWtCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNoRixDQUFDO0lBRUQsSUFBVyxLQUFLO1FBQ1osT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzVELENBQUM7SUFFRCxJQUFXLGFBQWE7UUFDcEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3BFLENBQUM7SUFFRDs7O09BR0c7SUFDSSxlQUFlLENBQUMsSUFBZTtRQUNsQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUM3QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNO1FBQ1QsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLFNBQVMsRUFBRTtZQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztnQkFDbEIsTUFBTSxFQUFFLEtBQUs7Z0JBQ2IsT0FBTyxFQUFFLDZCQUE2QjtnQkFDdEMsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZO2FBQzFCLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQzs7dUhBN0RRLHlCQUF5Qiw4Q0FxQmQsZUFBZTsyR0FyQjFCLHlCQUF5QixnREFGdkIsQ0FBQyxlQUFlLENBQUMsMEJDYmhDLHlzREErQkE7NEZEaEJhLHlCQUF5QjtrQkFOckMsU0FBUzsrQkFDSSx1QkFBdUIsYUFHdEIsQ0FBQyxlQUFlLENBQUM7OzBCQXVCZixNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgUHJvY2Vzc1JvbGUsXG4gICAgVXNlckxpc3RJbmplY3RlZERhdGEsIFVzZXJMaXN0U2VydmljZSxcbiAgICBVc2VyVmFsdWVcbn0gZnJvbSAnQG5ldGdyaWYvY29tcG9uZW50cy1jb3JlJztcbmltcG9ydCB7Rm9ybUNvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWZ9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmMtdXNlci1hc3NpZ24tZGlhbG9nJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdXNlci1hc3NpZ24tZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi91c2VyLWFzc2lnbi1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtVc2VyTGlzdFNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJBc3NpZ25EaWFsb2dDb21wb25lbnQge1xuICAgIC8qKlxuICAgICAqIEZvcm0gY29udHJvbCBmb3IgdXNlciBzZWFyY2ggdmFsdWUuXG4gICAgICovXG4gICAgcHVibGljIHNlYXJjaFVzZXJDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG5cbiAgICAvKipcbiAgICAgKiBEYXRhIGFib3V0IHByZXNlbGVjdGVkIHVzZXIgc2VuZCBmcm9tIFtVc2VyRmllbGRDb21wb25lbnRde0BsaW5rIEFic3RyYWN0VXNlckZpZWxkQ29tcG9uZW50fS5cbiAgICAgKi9cbiAgICBwdWJsaWMgaW5qZWN0ZWREYXRhOiBVc2VyTGlzdEluamVjdGVkRGF0YTtcblxuICAgIC8qKlxuICAgICAqIFZhbHVlIG9mIHRoZSBjdXJyZW50IHNlbGVjdGVkIHVzZXIuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9jdXJyZW50VXNlcjogVXNlclZhbHVlO1xuXG4gICAgLyoqXG4gICAgICogSW5qZWN0IGFuZCBzZXQgZGF0YSBzZW5kIGZyb20gW1VzZXJGaWVsZENvbXBvbmVudF17QGxpbmsgQWJzdHJhY3RVc2VyRmllbGRDb21wb25lbnR9IGlmIHRoZSB1c2VyIGlzIHByZXNlbGVjdGVkLlxuICAgICAqIEBwYXJhbSBfc2lkZU1lbnVDb250cm9sIENvbnRhaW5zIFtSb2xlc117QGxpbmsgUHJvY2Vzc1JvbGV9IGFuZCBbVXNlclZhbHVlXXtAbGluayBVc2VyVmFsdWV9LlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8VXNlckFzc2lnbkRpYWxvZ0NvbXBvbmVudD4sXG4gICAgICAgICAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHByb3RlY3RlZCBfZGF0YTogVXNlckxpc3RJbmplY3RlZERhdGEpIHtcbiAgICAgICAgaWYgKHRoaXMuX2RhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWREYXRhID0gdGhpcy5fZGF0YSBhcyBVc2VyTGlzdEluamVjdGVkRGF0YTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSB1c2VyIHRoYXQgaXMgaW5pdGlhbGx5IHNlbGVjdGVkLCBvciBgdW5kZWZpbmVkYCBpZiBub25lIGlzXG4gICAgICovXG4gICAgcHVibGljIGdldCBpbml0aWFsbHlTZWxlY3RlZFVzZXIoKTogVXNlclZhbHVlIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5qZWN0ZWREYXRhID8gdGhpcy5pbmplY3RlZERhdGEudmFsdWUgYXMgVXNlclZhbHVlIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcm9sZXMoKTogQXJyYXk8c3RyaW5nPiB8IEFycmF5PFByb2Nlc3NSb2xlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmluamVjdGVkRGF0YSA/IHRoaXMuaW5qZWN0ZWREYXRhLnJvbGVzIDogW107XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBuZWdhdGl2ZVJvbGVzKCk6IEFycmF5PHN0cmluZz4gfCBBcnJheTxQcm9jZXNzUm9sZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbmplY3RlZERhdGEgPyB0aGlzLmluamVjdGVkRGF0YS5uZWdhdGl2ZVJvbGVzIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT24gc2VsZWN0IHVzZXIgZnJvbSB1c2VycyBhc3NpZ24gbGlzdCBwdWJsaXNoIHNpZGUgbWVudSB3aXRoIHNlbGVjdGVkIHVzZXIgYXMgZGF0YSBhbmQgbWVzc2FnZSBhYm91dCBzZWxlY3Rpb24uXG4gICAgICogQHBhcmFtIHVzZXIgU2VsZWN0IGN1cnJlbnQgdXNlciBhcyBbVXNlclZhbHVlXXtAbGluayBVc2VyVmFsdWV9XG4gICAgICovXG4gICAgcHVibGljIHVzZXJXYXNTZWxlY3RlZCh1c2VyOiBVc2VyVmFsdWUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY3VycmVudFVzZXIgPSB1c2VyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9uIGFzc2lnbiBidXR0b24gY2xvc2Ugc2lkZSBtZW51IHdpdGggc2VsZWN0ZWQgdXNlciBhcyBkYXRhIGFuZCBtZXNzYWdlIGFib3V0IGNvbmZpcm0uXG4gICAgICovXG4gICAgcHVibGljIGFzc2lnbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRVc2VyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5jbG9zZSh7XG4gICAgICAgICAgICAgICAgb3BlbmVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiAnU2VsZWN0ZWQgdXNlciB3YXMgY29uZmlybWVkJyxcbiAgICAgICAgICAgICAgICBkYXRhOiB0aGlzLl9jdXJyZW50VXNlclxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibWF0LWRpYWxvZy10aXRsZVwiIGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBub25lXCI+XG4gICAge3sgJ3NpZGUtbWVudS51c2VyLmFzc2lnbicgfCB0cmFuc2xhdGUgIH19XG48L2Rpdj5cbjxkaXYgbWF0LWRpYWxvZy1jb250ZW50IGZ4TGF5b3V0QWxpZ249XCJzdGFydCBzdHJldGNoXCIgY2xhc3M9XCJoZWlnaHQtZml4XCI+XG4gICAgPGRpdiBjbGFzcz1cInVzZXItYXNzaWduLWNvbnRhaW5lciBzaWRlLW1lbnUtcm9vdFwiIGZ4RmxleCBmeExheW91dD1cImNvbHVtblwiPlxuICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiIGNsYXNzPVwibmV0Z3JpZi1pbnB1dCBuZXRncmlmLWlucHV0LWZpeFwiPlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGZ4RmxleD1cIjEwMFwiIGNsYXNzPVwidXNlci1hc3NpZ24tc2VhcmNoXCIgY29sb3I9XCJwcmltYXJ5XCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gbWF0UHJlZml4IGNsYXNzPVwicHJlZml4LWljb25cIj5zZWFyY2g8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBwbGFjZWhvbGRlcj1cInt7ICdzaWRlLW1lbnUudXNlci5jaG9vc2UnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInNlYXJjaFVzZXJDb250cm9sXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gKm5nSWY9XCJzZWFyY2hVc2VyQ29udHJvbC52YWx1ZVwiIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWFyY2hVc2VyQ29udHJvbC5zZXRWYWx1ZSgnJylcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxuYy11c2VyLWFzc2lnbi1saXN0IGZ4RmxleCBjbGFzcz1cImhlaWdodC0xMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVXNlckNvbnRyb2xdPVwic2VhcmNoVXNlckNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm9sZXNdPVwicm9sZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmVnYXRpdmVSb2xlc109XCJuZWdhdGl2ZVJvbGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luaXRpYWxseVNlbGVjdGVkVXNlcl09XCJpbml0aWFsbHlTZWxlY3RlZFVzZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodXNlclNlbGVjdGVkKT1cInVzZXJXYXNTZWxlY3RlZCgkZXZlbnQpXCI+XG4gICAgICAgIDwvbmMtdXNlci1hc3NpZ24tbGlzdD5cblxuICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cImVuZCBjZW50ZXJcIj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFzc2lnbigpXCI+e3sgJ3Rhc2tzLnZpZXcuYXNzaWduJyB8IHRyYW5zbGF0ZSB8IHVwcGVyY2FzZSB9fTwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19