@hmcts/rpx-xui-common-lib 2.1.0-angular-upgrade-11 → 2.1.1-angular-upgrade-11

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 (270) hide show
  1. package/bundles/hmcts-rpx-xui-common-lib.umd.js +7051 -2390
  2. package/bundles/hmcts-rpx-xui-common-lib.umd.js.map +1 -1
  3. package/bundles/hmcts-rpx-xui-common-lib.umd.min.js +15 -1
  4. package/bundles/hmcts-rpx-xui-common-lib.umd.min.js.map +1 -1
  5. package/esm2015/hmcts-rpx-xui-common-lib.js +8 -2
  6. package/esm2015/lib/components/accessibility/accessibility.component.js +9 -3
  7. package/esm2015/lib/components/checkbox-list/checkbox-list.component.js +112 -14
  8. package/esm2015/lib/components/contact-details/contact-details.component.js +12 -2
  9. package/esm2015/lib/components/cookie-banner/cookie-banner.component.js +65 -4
  10. package/esm2015/lib/components/due-date/due-date.component.js +97 -2
  11. package/esm2015/lib/components/exui-main-wrapper/exui-page-wrapper.component.js +21 -7
  12. package/esm2015/lib/components/find-location/find-location.component.js +119 -10
  13. package/esm2015/lib/components/find-person/find-person.component.js +150 -9
  14. package/esm2015/lib/components/generic-filter/generic-filter-utils.js +55 -11
  15. package/esm2015/lib/components/generic-filter/generic-filter.component.js +276 -27
  16. package/esm2015/lib/components/hmcts-session-dialog/hmcts-session-dialog.component.js +18 -3
  17. package/esm2015/lib/components/index.js +7 -2
  18. package/esm2015/lib/components/invite-user-form/invite-user-form.component.js +22 -2
  19. package/esm2015/lib/components/invite-user-permissions/invite-user-permission.component.js +21 -2
  20. package/esm2015/lib/components/loading-spinner/loading-spinner.component.js +12 -3
  21. package/esm2015/lib/components/pagination/pagination.component.js +24 -2
  22. package/esm2015/lib/components/public_api.js +33 -33
  23. package/esm2015/lib/components/search-judicials/search-judicials.component.js +133 -10
  24. package/esm2015/lib/components/search-location/search-location.component.js +158 -7
  25. package/esm2015/lib/components/search-venue/search-venue.component.js +135 -12
  26. package/esm2015/lib/components/selected-case/selected-case.component.js +176 -20
  27. package/esm2015/lib/components/selected-case-confirm/selected-case-confirm.component.js +41 -3
  28. package/esm2015/lib/components/selected-case-list/selected-case-list.component.js +52 -3
  29. package/esm2015/lib/components/service-message/service-message.component.js +20 -2
  30. package/esm2015/lib/components/service-messages/service-messages.component.js +65 -7
  31. package/esm2015/lib/components/share-case/share-case.component.js +87 -6
  32. package/esm2015/lib/components/share-case-confirm/share-case-confirm.component.js +37 -4
  33. package/esm2015/lib/components/tab/tab.component.js +26 -2
  34. package/esm2015/lib/components/tc-confirm/tc-confirm.component.js +17 -2
  35. package/esm2015/lib/components/terms-and-conditions/tc-display/tc-display-html/tc-display-html.component.js +8 -2
  36. package/esm2015/lib/components/terms-and-conditions/tc-display/tc-display-plain/tc-display-plain.component.js +8 -2
  37. package/esm2015/lib/components/terms-and-conditions/terms-and-conditions.component.js +12 -2
  38. package/esm2015/lib/components/user-details/user-details.component.js +39 -2
  39. package/esm2015/lib/components/user-list/user-list.component.js +32 -2
  40. package/esm2015/lib/components/user-select/user-select.component.js +52 -5
  41. package/esm2015/lib/directives/feature-toggle/feature-toggle.directive.js +56 -3
  42. package/esm2015/lib/directives/index.js +7 -2
  43. package/esm2015/lib/directives/let/let.directive.js +39 -1
  44. package/esm2015/lib/directives/public-api.js +8 -3
  45. package/esm2015/lib/exui-common-lib.module.js +26 -3
  46. package/esm2015/lib/gov-ui/components/gov-uk-checkbox/gov-uk-checkbox.component.js +22 -2
  47. package/esm2015/lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.js +13 -2
  48. package/esm2015/lib/gov-ui/components/gov-uk-date/gov-uk-date.component.js +54 -4
  49. package/esm2015/lib/gov-ui/components/gov-uk-error-message/gov-uk-error-message.component.js +14 -2
  50. package/esm2015/lib/gov-ui/components/gov-uk-fieldset/gov-uk-fieldset.component.js +17 -2
  51. package/esm2015/lib/gov-ui/components/gov-uk-file-upload/gov-uk-file-upload.component.js +24 -2
  52. package/esm2015/lib/gov-ui/components/gov-uk-form-group-wrapper/gov-uk-form-group-wrapper.component.js +16 -2
  53. package/esm2015/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.js +22 -2
  54. package/esm2015/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.js +12 -2
  55. package/esm2015/lib/gov-ui/components/gov-uk-radio/gov-uk-radio.component.js +24 -6
  56. package/esm2015/lib/gov-ui/components/gov-uk-radios/gov-uk-radios.component.js +13 -2
  57. package/esm2015/lib/gov-ui/components/gov-uk-select/gov-uk-select.component.js +21 -2
  58. package/esm2015/lib/gov-ui/components/gov-uk-table/gov-uk-table.component.js +32 -2
  59. package/esm2015/lib/gov-ui/components/gov-uk-textarea/gov-uk-textarea.component.js +18 -2
  60. package/esm2015/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.js +14 -2
  61. package/esm2015/lib/gov-ui/components/hmcts-error-summary/hmcts-error-summary.component.js +44 -2
  62. package/esm2015/lib/gov-ui/components/hmcts-identity-bar/hmcts-identity-bar.component.js +16 -2
  63. package/esm2015/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.js +36 -2
  64. package/esm2015/lib/gov-ui/components/hmcts-pagination/hmcts-pagination.component.js +23 -2
  65. package/esm2015/lib/gov-ui/components/hmcts-primary-navigation/hmcts-primary-navigation.component.js +22 -2
  66. package/esm2015/lib/gov-ui/components/hmcts-sub-navigation/hmcts-sub-navigation.component.js +30 -3
  67. package/esm2015/lib/gov-ui/components/index.js +7 -2
  68. package/esm2015/lib/gov-ui/components/public_api.js +7 -22
  69. package/esm2015/lib/gov-ui/directives/remove-host.directive.js +22 -1
  70. package/esm2015/lib/gov-ui/gov-ui.service.js +8 -2
  71. package/esm2015/lib/gov-ui/index.js +7 -2
  72. package/esm2015/lib/gov-ui/models/banner-data-model.js +16 -2
  73. package/esm2015/lib/gov-ui/models/checkboxes-model.js +22 -2
  74. package/esm2015/lib/gov-ui/models/error-messages-model.js +16 -2
  75. package/esm2015/lib/gov-ui/models/gov-ui-config-model.js +36 -2
  76. package/esm2015/lib/gov-ui/models/index.js +7 -2
  77. package/esm2015/lib/gov-ui/models/isession-storage.interface.js +24 -2
  78. package/esm2015/lib/gov-ui/models/public_api.js +10 -5
  79. package/esm2015/lib/gov-ui/public_api.js +9 -5
  80. package/esm2015/lib/gov-ui/util/helpers/html-templates.helper.js +14 -4
  81. package/esm2015/lib/gov-ui/util/session-storage/session-storage-utils.js +48 -12
  82. package/esm2015/lib/gov-ui/validators/checkboxes-be-checked.validator.js +24 -5
  83. package/esm2015/lib/gov-ui/validators/date.validator.js +20 -3
  84. package/esm2015/lib/gov-ui/validators/index.js +7 -2
  85. package/esm2015/lib/gov-ui/validators/public_api.js +9 -4
  86. package/esm2015/lib/gov-ui/validators/radio-group.validator.js +15 -3
  87. package/esm2015/lib/models/case-share.model.js +26 -2
  88. package/esm2015/lib/models/contact-details.model.js +31 -7
  89. package/esm2015/lib/models/due-date.model.js +14 -7
  90. package/esm2015/lib/models/feature-user.js +16 -1
  91. package/esm2015/lib/models/filter.model.js +116 -1
  92. package/esm2015/lib/models/idle-config.model.js +20 -2
  93. package/esm2015/lib/models/index.js +19 -14
  94. package/esm2015/lib/models/location.model.js +108 -2
  95. package/esm2015/lib/models/pagination.model.js +18 -2
  96. package/esm2015/lib/models/person.model.js +92 -17
  97. package/esm2015/lib/models/public_api.js +11 -6
  98. package/esm2015/lib/models/search-options.model.js +22 -2
  99. package/esm2015/lib/models/tcDocument.model.js +18 -2
  100. package/esm2015/lib/models/timeout-notification.model.js +18 -2
  101. package/esm2015/lib/models/user-details.model.js +22 -2
  102. package/esm2015/lib/models/user.model.js +25 -2
  103. package/esm2015/lib/services/case-sharing-state/case-sharing-state.service.js +84 -9
  104. package/esm2015/lib/services/cookie/cookie.service.js +71 -8
  105. package/esm2015/lib/services/feature-toggle/feature-toggle.guard.js +43 -4
  106. package/esm2015/lib/services/feature-toggle/feature-toggle.service.js +28 -2
  107. package/esm2015/lib/services/feature-toggle/launch-darkly.service.js +94 -12
  108. package/esm2015/lib/services/filter/filter.service.js +56 -2
  109. package/esm2015/lib/services/find-person/find-person.service.js +123 -15
  110. package/esm2015/lib/services/google-analytics/google-analytics.service.js +63 -8
  111. package/esm2015/lib/services/google-tag-manager/google-tag-manager.service.js +64 -10
  112. package/esm2015/lib/services/index.js +7 -2
  113. package/esm2015/lib/services/loading/loading.service.js +41 -2
  114. package/esm2015/lib/services/locations/location.service.js +28 -12
  115. package/esm2015/lib/services/manage-session/manage-session.services.js +63 -10
  116. package/esm2015/lib/services/public-api.js +22 -13
  117. package/esm2015/lib/services/role-guard/role.guard.js +53 -12
  118. package/esm2015/lib/services/role-guard/role.service.js +21 -2
  119. package/esm2015/lib/services/session-storage/session-storage.service.js +17 -3
  120. package/esm2015/lib/services/timeout-notifications/timeout-notifications.service.js +75 -9
  121. package/esm2015/lib/window.js +10 -1
  122. package/esm2015/public-api.js +13 -8
  123. package/esm5/hmcts-rpx-xui-common-lib.js +74 -0
  124. package/esm5/lib/components/accessibility/accessibility.component.js +22 -0
  125. package/esm5/lib/components/checkbox-list/checkbox-list.component.js +391 -0
  126. package/esm5/lib/components/contact-details/contact-details.component.js +29 -0
  127. package/esm5/lib/components/cookie-banner/cookie-banner.component.js +154 -0
  128. package/esm5/lib/components/due-date/due-date.component.js +254 -0
  129. package/esm5/lib/components/exui-main-wrapper/exui-page-wrapper.component.js +45 -0
  130. package/esm5/lib/components/find-location/find-location.component.js +279 -0
  131. package/esm5/lib/components/find-person/find-person.component.js +286 -0
  132. package/esm5/lib/components/generic-filter/generic-filter-utils.js +66 -0
  133. package/esm5/lib/components/generic-filter/generic-filter.component.js +822 -0
  134. package/esm5/lib/components/hmcts-session-dialog/hmcts-session-dialog.component.js +47 -0
  135. package/esm5/lib/components/index.js +7 -0
  136. package/esm5/lib/components/invite-user-form/invite-user-form.component.js +54 -0
  137. package/esm5/lib/components/invite-user-permissions/invite-user-permission.component.js +46 -0
  138. package/esm5/lib/components/loading-spinner/loading-spinner.component.js +29 -0
  139. package/esm5/lib/components/pagination/pagination.component.js +58 -0
  140. package/esm5/lib/components/public_api.js +33 -0
  141. package/esm5/lib/components/search-judicials/search-judicials.component.js +291 -0
  142. package/esm5/lib/components/search-location/search-location.component.js +302 -0
  143. package/esm5/lib/components/search-venue/search-venue.component.js +290 -0
  144. package/esm5/lib/components/selected-case/selected-case.component.js +430 -0
  145. package/esm5/lib/components/selected-case-confirm/selected-case-confirm.component.js +84 -0
  146. package/esm5/lib/components/selected-case-list/selected-case-list.component.js +109 -0
  147. package/esm5/lib/components/service-message/service-message.component.js +46 -0
  148. package/esm5/lib/components/service-messages/service-messages.component.js +122 -0
  149. package/esm5/lib/components/share-case/share-case.component.js +223 -0
  150. package/esm5/lib/components/share-case-confirm/share-case-confirm.component.js +70 -0
  151. package/esm5/lib/components/tab/tab.component.js +51 -0
  152. package/esm5/lib/components/tc-confirm/tc-confirm.component.js +42 -0
  153. package/esm5/lib/components/terms-and-conditions/tc-display/tc-display-html/tc-display-html.component.js +22 -0
  154. package/esm5/lib/components/terms-and-conditions/tc-display/tc-display-plain/tc-display-plain.component.js +22 -0
  155. package/esm5/lib/components/terms-and-conditions/terms-and-conditions.component.js +29 -0
  156. package/esm5/lib/components/user-details/user-details.component.js +92 -0
  157. package/esm5/lib/components/user-list/user-list.component.js +76 -0
  158. package/esm5/lib/components/user-select/user-select.component.js +131 -0
  159. package/esm5/lib/directives/feature-toggle/feature-toggle.directive.js +104 -0
  160. package/esm5/lib/directives/index.js +7 -0
  161. package/esm5/lib/directives/let/let.directive.js +78 -0
  162. package/esm5/lib/directives/public-api.js +8 -0
  163. package/esm5/lib/exui-common-lib.module.js +178 -0
  164. package/esm5/lib/gov-ui/components/gov-uk-checkbox/gov-uk-checkbox.component.js +56 -0
  165. package/esm5/lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.js +36 -0
  166. package/esm5/lib/gov-ui/components/gov-uk-date/gov-uk-date.component.js +135 -0
  167. package/esm5/lib/gov-ui/components/gov-uk-error-message/gov-uk-error-message.component.js +37 -0
  168. package/esm5/lib/gov-ui/components/gov-uk-fieldset/gov-uk-fieldset.component.js +49 -0
  169. package/esm5/lib/gov-ui/components/gov-uk-file-upload/gov-uk-file-upload.component.js +65 -0
  170. package/esm5/lib/gov-ui/components/gov-uk-form-group-wrapper/gov-uk-form-group-wrapper.component.js +40 -0
  171. package/esm5/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.js +66 -0
  172. package/esm5/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.js +34 -0
  173. package/esm5/lib/gov-ui/components/gov-uk-radio/gov-uk-radio.component.js +67 -0
  174. package/esm5/lib/gov-ui/components/gov-uk-radios/gov-uk-radios.component.js +36 -0
  175. package/esm5/lib/gov-ui/components/gov-uk-select/gov-uk-select.component.js +52 -0
  176. package/esm5/lib/gov-ui/components/gov-uk-table/gov-uk-table.component.js +77 -0
  177. package/esm5/lib/gov-ui/components/gov-uk-textarea/gov-uk-textarea.component.js +50 -0
  178. package/esm5/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.js +38 -0
  179. package/esm5/lib/gov-ui/components/hmcts-error-summary/hmcts-error-summary.component.js +108 -0
  180. package/esm5/lib/gov-ui/components/hmcts-identity-bar/hmcts-identity-bar.component.js +40 -0
  181. package/esm5/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.js +87 -0
  182. package/esm5/lib/gov-ui/components/hmcts-pagination/hmcts-pagination.component.js +51 -0
  183. package/esm5/lib/gov-ui/components/hmcts-primary-navigation/hmcts-primary-navigation.component.js +49 -0
  184. package/esm5/lib/gov-ui/components/hmcts-sub-navigation/hmcts-sub-navigation.component.js +46 -0
  185. package/esm5/lib/gov-ui/components/index.js +7 -0
  186. package/esm5/lib/gov-ui/components/public_api.js +7 -0
  187. package/esm5/lib/gov-ui/directives/remove-host.directive.js +52 -0
  188. package/esm5/lib/gov-ui/gov-ui.service.js +22 -0
  189. package/esm5/lib/gov-ui/index.js +7 -0
  190. package/esm5/lib/gov-ui/models/banner-data-model.js +16 -0
  191. package/esm5/lib/gov-ui/models/checkboxes-model.js +22 -0
  192. package/esm5/lib/gov-ui/models/error-messages-model.js +16 -0
  193. package/esm5/lib/gov-ui/models/gov-ui-config-model.js +36 -0
  194. package/esm5/lib/gov-ui/models/index.js +7 -0
  195. package/esm5/lib/gov-ui/models/isession-storage.interface.js +24 -0
  196. package/esm5/lib/gov-ui/models/public_api.js +13 -0
  197. package/esm5/lib/gov-ui/public_api.js +12 -0
  198. package/esm5/lib/gov-ui/util/helpers/html-templates.helper.js +57 -0
  199. package/esm5/lib/gov-ui/util/session-storage/session-storage-utils.js +58 -0
  200. package/esm5/lib/gov-ui/validators/checkboxes-be-checked.validator.js +38 -0
  201. package/esm5/lib/gov-ui/validators/date.validator.js +32 -0
  202. package/esm5/lib/gov-ui/validators/index.js +7 -0
  203. package/esm5/lib/gov-ui/validators/public_api.js +12 -0
  204. package/esm5/lib/gov-ui/validators/radio-group.validator.js +27 -0
  205. package/esm5/lib/models/case-share.model.js +26 -0
  206. package/esm5/lib/models/contact-details.model.js +31 -0
  207. package/esm5/lib/models/due-date.model.js +15 -0
  208. package/esm5/lib/models/feature-user.js +28 -0
  209. package/esm5/lib/models/filter.model.js +122 -0
  210. package/esm5/lib/models/idle-config.model.js +20 -0
  211. package/esm5/lib/models/index.js +19 -0
  212. package/esm5/lib/models/location.model.js +108 -0
  213. package/esm5/lib/models/pagination.model.js +18 -0
  214. package/esm5/lib/models/person.model.js +92 -0
  215. package/esm5/lib/models/public_api.js +11 -0
  216. package/esm5/lib/models/search-options.model.js +22 -0
  217. package/esm5/lib/models/tcDocument.model.js +18 -0
  218. package/esm5/lib/models/timeout-notification.model.js +18 -0
  219. package/esm5/lib/models/user-details.model.js +22 -0
  220. package/esm5/lib/models/user.model.js +25 -0
  221. package/esm5/lib/services/case-sharing-state/case-sharing-state.service.js +289 -0
  222. package/esm5/lib/services/cookie/cookie.service.js +136 -0
  223. package/esm5/lib/services/feature-toggle/feature-toggle.guard.js +89 -0
  224. package/esm5/lib/services/feature-toggle/feature-toggle.service.js +90 -0
  225. package/esm5/lib/services/feature-toggle/launch-darkly.service.js +187 -0
  226. package/esm5/lib/services/filter/filter.service.js +153 -0
  227. package/esm5/lib/services/find-person/find-person.service.js +238 -0
  228. package/esm5/lib/services/google-analytics/google-analytics.service.js +128 -0
  229. package/esm5/lib/services/google-tag-manager/google-tag-manager.service.js +135 -0
  230. package/esm5/lib/services/index.js +7 -0
  231. package/esm5/lib/services/loading/loading.service.js +109 -0
  232. package/esm5/lib/services/locations/location.service.js +82 -0
  233. package/esm5/lib/services/manage-session/manage-session.services.js +111 -0
  234. package/esm5/lib/services/public-api.js +25 -0
  235. package/esm5/lib/services/role-guard/role.guard.js +81 -0
  236. package/esm5/lib/services/role-guard/role.service.js +45 -0
  237. package/esm5/lib/services/session-storage/session-storage.service.js +96 -0
  238. package/esm5/lib/services/timeout-notifications/timeout-notifications.service.js +190 -0
  239. package/esm5/lib/window.js +13 -0
  240. package/esm5/public-api.js +16 -0
  241. package/fesm2015/hmcts-rpx-xui-common-lib.js +4742 -871
  242. package/fesm2015/hmcts-rpx-xui-common-lib.js.map +1 -1
  243. package/fesm5/hmcts-rpx-xui-common-lib.js +9247 -0
  244. package/fesm5/hmcts-rpx-xui-common-lib.js.map +1 -0
  245. package/hmcts-rpx-xui-common-lib.d.ts +1 -0
  246. package/hmcts-rpx-xui-common-lib.metadata.json +1 -1
  247. package/lib/components/checkbox-list/checkbox-list.component.d.ts +5 -6
  248. package/lib/components/due-date/due-date.component.d.ts +4 -4
  249. package/lib/components/find-location/find-location.component.d.ts +2 -4
  250. package/lib/components/generic-filter/generic-filter.component.d.ts +2 -4
  251. package/lib/components/invite-user-form/invite-user-form.component.d.ts +1 -1
  252. package/lib/components/public_api.d.ts +0 -5
  253. package/lib/components/search-judicials/search-judicials.component.d.ts +1 -1
  254. package/lib/components/search-location/search-location.component.d.ts +2 -4
  255. package/lib/components/search-venue/search-venue.component.d.ts +1 -1
  256. package/lib/directives/feature-toggle/feature-toggle.directive.d.ts +1 -1
  257. package/lib/directives/let/let.directive.d.ts +1 -1
  258. package/lib/exui-common-lib.module.d.ts +3 -1
  259. package/lib/gov-ui/components/hmcts-error-summary/hmcts-error-summary.component.d.ts +1 -1
  260. package/lib/gov-ui/components/hmcts-identity-bar/hmcts-identity-bar.component.d.ts +1 -1
  261. package/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.d.ts +1 -1
  262. package/lib/gov-ui/components/hmcts-primary-navigation/hmcts-primary-navigation.component.d.ts +1 -1
  263. package/lib/gov-ui/components/public_api.d.ts +0 -20
  264. package/lib/gov-ui/public_api.d.ts +0 -1
  265. package/lib/services/case-sharing-state/case-sharing-state.service.d.ts +1 -1
  266. package/lib/services/loading/loading.service.d.ts +2 -2
  267. package/lib/services/public-api.d.ts +4 -0
  268. package/lib/services/role-guard/role.service.d.ts +1 -2
  269. package/lib/window.d.ts +1 -1
  270. package/package.json +16 -6
@@ -0,0 +1,286 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * Generated from: lib/components/find-person/find-person.component.ts
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
+ */
6
+ import { ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';
7
+ import { FormControl, FormGroup } from '@angular/forms';
8
+ import { of, zip } from 'rxjs';
9
+ import { catchError, debounceTime, filter, map, switchMap, tap } from 'rxjs/operators';
10
+ import { PersonRole } from '../../models';
11
+ import { FindAPersonService } from '../../services/find-person/find-person.service';
12
+ var FindPersonComponent = /** @class */ (function () {
13
+ function FindPersonComponent(findPersonService, cd) {
14
+ this.findPersonService = findPersonService;
15
+ this.cd = cd;
16
+ this.personSelected = new EventEmitter();
17
+ this.personFieldChanged = new EventEmitter();
18
+ this.boldTitle = 'Find the person';
19
+ this.subTitle = 'Type the name of the person and select them.';
20
+ this.domain = PersonRole.ALL;
21
+ this.findPersonGroup = new FormGroup({});
22
+ this.submitted = true;
23
+ this.userIncluded = false;
24
+ this.placeholderContent = '';
25
+ this.isNoResultsShown = true;
26
+ this.showUpdatedColor = false;
27
+ this.selectedPersons = [];
28
+ this.errorMessage = 'You must select a name';
29
+ this.idValue = '';
30
+ this.services = ['IA'];
31
+ this.disabled = null;
32
+ this.showAutocomplete = false;
33
+ this.filteredOptions = [];
34
+ this.minSearchCharacters = 2;
35
+ }
36
+ /**
37
+ * @return {?}
38
+ */
39
+ FindPersonComponent.prototype.ngOnDestroy = /**
40
+ * @return {?}
41
+ */
42
+ function () {
43
+ if (this.sub) {
44
+ this.sub.unsubscribe();
45
+ }
46
+ };
47
+ /**
48
+ * @return {?}
49
+ */
50
+ FindPersonComponent.prototype.ngOnInit = /**
51
+ * @return {?}
52
+ */
53
+ function () {
54
+ var _this = this;
55
+ this.findPersonControl = new FormControl(this.selectedPerson);
56
+ this.findPersonGroup.addControl('findPersonControl', this.findPersonControl);
57
+ this.sub = this.findPersonControl.valueChanges.pipe(tap((/**
58
+ * @return {?}
59
+ */
60
+ function () { return _this.showAutocomplete = false; })), tap((/**
61
+ * @return {?}
62
+ */
63
+ function () { return _this.filteredOptions = []; })), debounceTime(300), tap((/**
64
+ * @param {?} searchTerm
65
+ * @return {?}
66
+ */
67
+ function (searchTerm) { return typeof searchTerm === 'string' ? _this.personSelected.emit(null) : void 0; })), filter((/**
68
+ * @param {?} searchTerm
69
+ * @return {?}
70
+ */
71
+ function (searchTerm) { return searchTerm && searchTerm.length > _this.minSearchCharacters; })), switchMap((/**
72
+ * @param {?} searchTerm
73
+ * @return {?}
74
+ */
75
+ function (searchTerm) { return _this.filter(searchTerm).pipe(tap((/**
76
+ * @return {?}
77
+ */
78
+ function () { return _this.showAutocomplete = true; })), catchError((/**
79
+ * @return {?}
80
+ */
81
+ function () { return _this.filteredOptions = []; }))); }))).subscribe((/**
82
+ * @param {?} people
83
+ * @return {?}
84
+ */
85
+ function (people) {
86
+ _this.filteredOptions = people;
87
+ _this.cd.detectChanges();
88
+ }));
89
+ };
90
+ /**
91
+ * @param {?} searchTerm
92
+ * @return {?}
93
+ */
94
+ FindPersonComponent.prototype.filter = /**
95
+ * @param {?} searchTerm
96
+ * @return {?}
97
+ */
98
+ function (searchTerm) {
99
+ var _this = this;
100
+ /** @type {?} */
101
+ var findJudicialPeople = this.findPersonService.find({ searchTerm: searchTerm, userRole: this.domain, services: this.services, userIncluded: this.userIncluded, assignedUser: this.assignedUser });
102
+ /** @type {?} */
103
+ var findCaseworkersOrAdmins = this.findPersonService.findCaseworkers({ searchTerm: searchTerm, userRole: this.domain, services: this.services, userIncluded: this.userIncluded, assignedUser: this.assignedUser });
104
+ if (searchTerm && searchTerm.length > this.minSearchCharacters) {
105
+ switch (this.domain) {
106
+ case PersonRole.JUDICIAL: {
107
+ return findJudicialPeople.pipe(map((/**
108
+ * @param {?} persons
109
+ * @return {?}
110
+ */
111
+ function (persons) {
112
+ /** @type {?} */
113
+ var ids = _this.selectedPersons.map((/**
114
+ * @param {?} __0
115
+ * @return {?}
116
+ */
117
+ function (_a) {
118
+ var id = _a.id;
119
+ return id;
120
+ }));
121
+ return persons.filter((/**
122
+ * @param {?} __0
123
+ * @return {?}
124
+ */
125
+ function (_a) {
126
+ var id = _a.id;
127
+ return !ids.includes(id);
128
+ }));
129
+ })));
130
+ }
131
+ case PersonRole.ALL: {
132
+ return zip(findJudicialPeople, findCaseworkersOrAdmins).pipe(map((/**
133
+ * @param {?} separatePeople
134
+ * @return {?}
135
+ */
136
+ function (separatePeople) { return separatePeople[0].concat(separatePeople[1]); })));
137
+ }
138
+ case PersonRole.CASEWORKER:
139
+ case PersonRole.ADMIN: {
140
+ return findCaseworkersOrAdmins;
141
+ }
142
+ default: {
143
+ return of([]);
144
+ }
145
+ }
146
+ }
147
+ return of([]);
148
+ };
149
+ /**
150
+ * @param {?} selectedPerson
151
+ * @return {?}
152
+ */
153
+ FindPersonComponent.prototype.onSelectionChange = /**
154
+ * @param {?} selectedPerson
155
+ * @return {?}
156
+ */
157
+ function (selectedPerson) {
158
+ this.personSelected.emit(selectedPerson);
159
+ this.findPersonControl.setValue(this.getDisplayName(selectedPerson), { emitEvent: false, onlySelf: true });
160
+ };
161
+ /**
162
+ * @param {?} selectedPerson
163
+ * @return {?}
164
+ */
165
+ FindPersonComponent.prototype.getDisplayName = /**
166
+ * @param {?} selectedPerson
167
+ * @return {?}
168
+ */
169
+ function (selectedPerson) {
170
+ if (!selectedPerson) {
171
+ return '';
172
+ }
173
+ if (selectedPerson.domain === PersonRole.JUDICIAL && selectedPerson.knownAs) {
174
+ return selectedPerson.knownAs + " (" + selectedPerson.email + ")";
175
+ }
176
+ return selectedPerson.email ? selectedPerson.name + " (" + selectedPerson.email + ")" : selectedPerson.name;
177
+ };
178
+ /**
179
+ * @return {?}
180
+ */
181
+ FindPersonComponent.prototype.onInput = /**
182
+ * @return {?}
183
+ */
184
+ function () {
185
+ this.personFieldChanged.emit();
186
+ };
187
+ FindPersonComponent.decorators = [
188
+ { type: Component, args: [{
189
+ selector: 'xuilib-find-person',
190
+ template: "<h1 class=\"govuk-heading-l\" *ngIf=\"title && title.length\">\n <span class=\"govuk-caption-l\">{{title}}</span>\n {{boldTitle}}\n</h1>\n<div class=\"govuk-form-group\" [formGroup]=\"findPersonGroup\"\n [ngClass]=\"{'form-group-error': findPersonGroup.get('findPersonControl').invalid && submitted}\">\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"sub-title-hint\">\n <div id=\"sub-title-hint\" class=\"govuk-hint\" *ngIf=\"subTitle && subTitle.length\">\n {{subTitle}}\n </div>\n <span id=\"validation-error\" class=\"govuk-error-message\" *ngIf=\"findPersonGroup && findPersonGroup.errors\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{findPersonGroup.errors.error ? findPersonGroup.errors.error : errorMessage}}\n </span>\n <input id=\"inputSelectPerson{{idValue}}\" type=\"text\" aria-label=\"select a person\"\n formControlName=\"findPersonControl\"\n [matAutocomplete]=\"auto\"\n class=\"govuk-input govuk-!-width-one-third\"\n [placeholder]=\"placeholderContent\"\n [attr.disabled]=\"disabled\"\n (input)=\"onInput()\">\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" (optionSelected)=\"onSelectionChange($event.option.value)\">\n <mat-option *ngFor=\"let option of filteredOptions\"\n [value]=\"option\"\n [ngClass]=\"{'hide-autocomplete': !showAutocomplete, 'select-option': showUpdatedColor}\">\n {{getDisplayName(option)}}\n </mat-option>\n <mat-option [ngClass]=\"{'select-option': showUpdatedColor}\" *ngIf=\"isNoResultsShown && !filteredOptions.length && showAutocomplete\">No results found</mat-option>\n </mat-autocomplete>\n </fieldset>\n</div>\n",
191
+ styles: [".mat-option:hover{background:#2596be}.mat-option.select-option:hover{background:#1d70b8;color:#fff}.hide-autocomplete{display:none}"]
192
+ }] }
193
+ ];
194
+ /** @nocollapse */
195
+ FindPersonComponent.ctorParameters = function () { return [
196
+ { type: FindAPersonService },
197
+ { type: ChangeDetectorRef }
198
+ ]; };
199
+ FindPersonComponent.propDecorators = {
200
+ personSelected: [{ type: Output }],
201
+ personFieldChanged: [{ type: Output }],
202
+ title: [{ type: Input }],
203
+ boldTitle: [{ type: Input }],
204
+ subTitle: [{ type: Input }],
205
+ domain: [{ type: Input }],
206
+ findPersonGroup: [{ type: Input }],
207
+ selectedPerson: [{ type: Input }],
208
+ submitted: [{ type: Input }],
209
+ userIncluded: [{ type: Input }],
210
+ assignedUser: [{ type: Input }],
211
+ placeholderContent: [{ type: Input }],
212
+ isNoResultsShown: [{ type: Input }],
213
+ showUpdatedColor: [{ type: Input }],
214
+ selectedPersons: [{ type: Input }],
215
+ errorMessage: [{ type: Input }],
216
+ idValue: [{ type: Input }],
217
+ services: [{ type: Input }],
218
+ disabled: [{ type: Input }]
219
+ };
220
+ return FindPersonComponent;
221
+ }());
222
+ export { FindPersonComponent };
223
+ if (false) {
224
+ /** @type {?} */
225
+ FindPersonComponent.prototype.personSelected;
226
+ /** @type {?} */
227
+ FindPersonComponent.prototype.personFieldChanged;
228
+ /** @type {?} */
229
+ FindPersonComponent.prototype.title;
230
+ /** @type {?} */
231
+ FindPersonComponent.prototype.boldTitle;
232
+ /** @type {?} */
233
+ FindPersonComponent.prototype.subTitle;
234
+ /** @type {?} */
235
+ FindPersonComponent.prototype.domain;
236
+ /** @type {?} */
237
+ FindPersonComponent.prototype.findPersonGroup;
238
+ /** @type {?} */
239
+ FindPersonComponent.prototype.selectedPerson;
240
+ /** @type {?} */
241
+ FindPersonComponent.prototype.submitted;
242
+ /** @type {?} */
243
+ FindPersonComponent.prototype.userIncluded;
244
+ /** @type {?} */
245
+ FindPersonComponent.prototype.assignedUser;
246
+ /** @type {?} */
247
+ FindPersonComponent.prototype.placeholderContent;
248
+ /** @type {?} */
249
+ FindPersonComponent.prototype.isNoResultsShown;
250
+ /** @type {?} */
251
+ FindPersonComponent.prototype.showUpdatedColor;
252
+ /** @type {?} */
253
+ FindPersonComponent.prototype.selectedPersons;
254
+ /** @type {?} */
255
+ FindPersonComponent.prototype.errorMessage;
256
+ /** @type {?} */
257
+ FindPersonComponent.prototype.idValue;
258
+ /** @type {?} */
259
+ FindPersonComponent.prototype.services;
260
+ /** @type {?} */
261
+ FindPersonComponent.prototype.disabled;
262
+ /** @type {?} */
263
+ FindPersonComponent.prototype.showAutocomplete;
264
+ /** @type {?} */
265
+ FindPersonComponent.prototype.findPersonControl;
266
+ /** @type {?} */
267
+ FindPersonComponent.prototype.filteredOptions;
268
+ /** @type {?} */
269
+ FindPersonComponent.prototype.minSearchCharacters;
270
+ /**
271
+ * @type {?}
272
+ * @private
273
+ */
274
+ FindPersonComponent.prototype.sub;
275
+ /**
276
+ * @type {?}
277
+ * @private
278
+ */
279
+ FindPersonComponent.prototype.findPersonService;
280
+ /**
281
+ * @type {?}
282
+ * @private
283
+ */
284
+ FindPersonComponent.prototype.cd;
285
+ }
286
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1wZXJzb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGhtY3RzL3JweC14dWktY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2ZpbmQtcGVyc29uL2ZpbmQtcGVyc29uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzNHLE9BQU8sRUFBQyxXQUFXLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFhLEVBQUUsRUFBZ0IsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBQyxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3JGLE9BQU8sRUFBUyxVQUFVLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDaEQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFFbEY7SUFnQ0UsNkJBQTZCLGlCQUFxQyxFQUFtQixFQUFxQjtRQUE3RSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW9CO1FBQW1CLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBekJ6RixtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDNUMsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUUvQyxjQUFTLEdBQUcsaUJBQWlCLENBQUM7UUFDOUIsYUFBUSxHQUFHLDhDQUE4QyxDQUFDO1FBQzFELFdBQU0sR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDO1FBQ3hCLG9CQUFlLEdBQWMsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFL0MsY0FBUyxHQUFZLElBQUksQ0FBQztRQUMxQixp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TUFBTTt3QkFDTixLQUFLOzRCQUNMLEtBQUs7MkJBQ0wsS0FBSzt5QkFDTCxLQUFLO2tDQUNMLEtBQUs7aUNBQ0wsS0FBSzs0QkFDTCxLQUFLOytCQUNMLEtBQUs7K0JBQ0wsS0FBSztxQ0FDTCxLQUFLO21DQUNMLEtBQUs7bUNBQ0wsS0FBSztrQ0FDTCxLQUFLOytCQUNMLEtBQUs7MEJBQ0wsS0FBSzsyQkFDTCxLQUFLOzJCQUNMLEtBQUs7O0lBK0VSLDBCQUFDO0NBQUEsQUF4R0QsSUF3R0M7U0FsR1ksbUJBQW1COzs7SUFDOUIsNkNBQTZEOztJQUM3RCxpREFBK0Q7O0lBQy9ELG9DQUE4Qjs7SUFDOUIsd0NBQThDOztJQUM5Qyx1Q0FBMEU7O0lBQzFFLHFDQUF3Qzs7SUFDeEMsOENBQStEOztJQUMvRCw2Q0FBdUM7O0lBQ3ZDLHdDQUEwQzs7SUFDMUMsMkNBQStDOztJQUMvQywyQ0FBc0M7O0lBQ3RDLGlEQUFnRDs7SUFDaEQsK0NBQWlEOztJQUNqRCwrQ0FBa0Q7O0lBQ2xELDhDQUErQzs7SUFDL0MsMkNBQWdFOztJQUNoRSxzQ0FBcUM7O0lBQ3JDLHVDQUE0Qzs7SUFDNUMsdUNBQXlDOztJQUN6QywrQ0FBeUM7O0lBQ3pDLGdEQUFzQzs7SUFDdEMsOENBQXNDOztJQUN0QyxrREFBd0M7Ozs7O0lBQ3hDLGtDQUEwQjs7Ozs7SUFFZCxnREFBc0Q7Ozs7O0lBQUUsaUNBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybUNvbnRyb2wsIEZvcm1Hcm91cH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaXB0aW9uLCB6aXB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtjYXRjaEVycm9yLCBkZWJvdW5jZVRpbWUsIGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtQZXJzb24sIFBlcnNvblJvbGV9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge0ZpbmRBUGVyc29uU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmluZC1wZXJzb24vZmluZC1wZXJzb24uc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3h1aWxpYi1maW5kLXBlcnNvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9maW5kLXBlcnNvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpbmQtcGVyc29uLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuXG5leHBvcnQgY2xhc3MgRmluZFBlcnNvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQE91dHB1dCgpIHB1YmxpYyBwZXJzb25TZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8UGVyc29uPigpO1xuICBAT3V0cHV0KCkgcHVibGljIHBlcnNvbkZpZWxkQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQElucHV0KCkgcHVibGljIHRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBib2xkVGl0bGUgPSAnRmluZCB0aGUgcGVyc29uJztcbiAgQElucHV0KCkgcHVibGljIHN1YlRpdGxlID0gJ1R5cGUgdGhlIG5hbWUgb2YgdGhlIHBlcnNvbiBhbmQgc2VsZWN0IHRoZW0uJztcbiAgQElucHV0KCkgcHVibGljIGRvbWFpbiA9IFBlcnNvblJvbGUuQUxMO1xuICBASW5wdXQoKSBwdWJsaWMgZmluZFBlcnNvbkdyb3VwOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgQElucHV0KCkgcHVibGljIHNlbGVjdGVkUGVyc29uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBzdWJtaXR0ZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgdXNlckluY2x1ZGVkPzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgYXNzaWduZWRVc2VyPzogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXJDb250ZW50OiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcHVibGljIGlzTm9SZXN1bHRzU2hvd246IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgc2hvd1VwZGF0ZWRDb2xvcjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0ZWRQZXJzb25zOiBQZXJzb25bXSA9IFtdO1xuICBASW5wdXQoKSBwdWJsaWMgZXJyb3JNZXNzYWdlOiBzdHJpbmcgPSAnWW91IG11c3Qgc2VsZWN0IGEgbmFtZSc7XG4gIEBJbnB1dCgpIHB1YmxpYyBpZFZhbHVlOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcHVibGljIHNlcnZpY2VzOiBzdHJpbmdbXSA9IFsnSUEnXTtcbiAgQElucHV0KCkgcHVibGljIGRpc2FibGVkOiBib29sZWFuID0gbnVsbDtcbiAgcHVibGljIHNob3dBdXRvY29tcGxldGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGZpbmRQZXJzb25Db250cm9sOiBGb3JtQ29udHJvbDtcbiAgcHVibGljIGZpbHRlcmVkT3B0aW9uczogUGVyc29uW10gPSBbXTtcbiAgcHVibGljIHJlYWRvbmx5IG1pblNlYXJjaENoYXJhY3RlcnMgPSAyO1xuICBwcml2YXRlIHN1YjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZmluZFBlcnNvblNlcnZpY2U6IEZpbmRBUGVyc29uU2VydmljZSwgcHJpdmF0ZSByZWFkb25seSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5zdWIpIHtcbiAgICAgIHRoaXMuc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZmluZFBlcnNvbkNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2wodGhpcy5zZWxlY3RlZFBlcnNvbik7XG4gICAgdGhpcy5maW5kUGVyc29uR3JvdXAuYWRkQ29udHJvbCgnZmluZFBlcnNvbkNvbnRyb2wnLCB0aGlzLmZpbmRQZXJzb25Db250cm9sKTtcbiAgICB0aGlzLnN1YiA9IHRoaXMuZmluZFBlcnNvbkNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICB0YXAoKCkgPT4gdGhpcy5zaG93QXV0b2NvbXBsZXRlID0gZmFsc2UpLFxuICAgICAgdGFwKCgpID0+IHRoaXMuZmlsdGVyZWRPcHRpb25zID0gW10pLFxuICAgICAgZGVib3VuY2VUaW1lKDMwMCksXG4gICAgICB0YXAoKHNlYXJjaFRlcm0pID0+IHR5cGVvZiBzZWFyY2hUZXJtID09PSAnc3RyaW5nJyA/IHRoaXMucGVyc29uU2VsZWN0ZWQuZW1pdChudWxsKSA6IHZvaWQgMCksXG4gICAgICBmaWx0ZXIoKHNlYXJjaFRlcm06IHN0cmluZykgPT4gc2VhcmNoVGVybSAmJiBzZWFyY2hUZXJtLmxlbmd0aCA+IHRoaXMubWluU2VhcmNoQ2hhcmFjdGVycyksXG4gICAgICBzd2l0Y2hNYXAoKHNlYXJjaFRlcm06IHN0cmluZykgPT4gdGhpcy5maWx0ZXIoc2VhcmNoVGVybSkucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuc2hvd0F1dG9jb21wbGV0ZSA9IHRydWUpLFxuICAgICAgICBjYXRjaEVycm9yKCgpID0+IHRoaXMuZmlsdGVyZWRPcHRpb25zID0gW10pLFxuICAgICAgKSlcbiAgICApLnN1YnNjcmliZSgocGVvcGxlOiBQZXJzb25bXSkgPT4ge1xuICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBwZW9wbGU7XG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBmaWx0ZXIoc2VhcmNoVGVybTogc3RyaW5nKTogT2JzZXJ2YWJsZTxQZXJzb25bXT4ge1xuICAgIGNvbnN0IGZpbmRKdWRpY2lhbFBlb3BsZSA9IHRoaXMuZmluZFBlcnNvblNlcnZpY2UuZmluZCh7c2VhcmNoVGVybSwgdXNlclJvbGU6IHRoaXMuZG9tYWluLCBzZXJ2aWNlczogdGhpcy5zZXJ2aWNlcywgdXNlckluY2x1ZGVkOiB0aGlzLnVzZXJJbmNsdWRlZCwgYXNzaWduZWRVc2VyOiB0aGlzLmFzc2lnbmVkVXNlcn0pO1xuICAgIGNvbnN0IGZpbmRDYXNld29ya2Vyc09yQWRtaW5zID0gdGhpcy5maW5kUGVyc29uU2VydmljZS5maW5kQ2FzZXdvcmtlcnMoe3NlYXJjaFRlcm0sIHVzZXJSb2xlOiB0aGlzLmRvbWFpbiwgc2VydmljZXM6IHRoaXMuc2VydmljZXMsIHVzZXJJbmNsdWRlZDogdGhpcy51c2VySW5jbHVkZWQsIGFzc2lnbmVkVXNlcjogdGhpcy5hc3NpZ25lZFVzZXJ9KTtcbiAgICBpZiAoc2VhcmNoVGVybSAmJiBzZWFyY2hUZXJtLmxlbmd0aCA+IHRoaXMubWluU2VhcmNoQ2hhcmFjdGVycykge1xuICAgICAgc3dpdGNoICh0aGlzLmRvbWFpbikge1xuICAgICAgICBjYXNlIFBlcnNvblJvbGUuSlVESUNJQUw6IHtcbiAgICAgICAgICByZXR1cm4gZmluZEp1ZGljaWFsUGVvcGxlLnBpcGUobWFwKHBlcnNvbnMgPT4ge1xuICAgICAgICAgICAgY29uc3QgaWRzOiBzdHJpbmdbXSA9IHRoaXMuc2VsZWN0ZWRQZXJzb25zLm1hcCgoe2lkfSkgPT4gaWQpO1xuICAgICAgICAgICAgcmV0dXJuIHBlcnNvbnMuZmlsdGVyKCh7IGlkIH0pID0+ICFpZHMuaW5jbHVkZXMoaWQpKTtcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBQZXJzb25Sb2xlLkFMTDoge1xuICAgICAgICAgIHJldHVybiB6aXAoZmluZEp1ZGljaWFsUGVvcGxlLCBmaW5kQ2FzZXdvcmtlcnNPckFkbWlucykucGlwZShtYXAoc2VwYXJhdGVQZW9wbGUgPT4gc2VwYXJhdGVQZW9wbGVbMF0uY29uY2F0KHNlcGFyYXRlUGVvcGxlWzFdKSkpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgUGVyc29uUm9sZS5DQVNFV09SS0VSOlxuICAgICAgICBjYXNlIFBlcnNvblJvbGUuQURNSU46IHtcbiAgICAgICAgICByZXR1cm4gZmluZENhc2V3b3JrZXJzT3JBZG1pbnM7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9mKFtdKTtcbiAgfVxuXG4gIHB1YmxpYyBvblNlbGVjdGlvbkNoYW5nZShzZWxlY3RlZFBlcnNvbjogUGVyc29uKTogdm9pZCB7XG4gICAgdGhpcy5wZXJzb25TZWxlY3RlZC5lbWl0KHNlbGVjdGVkUGVyc29uKTtcbiAgICB0aGlzLmZpbmRQZXJzb25Db250cm9sLnNldFZhbHVlKHRoaXMuZ2V0RGlzcGxheU5hbWUoc2VsZWN0ZWRQZXJzb24pLCB7ZW1pdEV2ZW50OiBmYWxzZSwgb25seVNlbGY6IHRydWV9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREaXNwbGF5TmFtZShzZWxlY3RlZFBlcnNvbjogUGVyc29uKTogc3RyaW5nIHtcbiAgICBpZiAoIXNlbGVjdGVkUGVyc29uKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGlmIChzZWxlY3RlZFBlcnNvbi5kb21haW4gPT09IFBlcnNvblJvbGUuSlVESUNJQUwgJiYgc2VsZWN0ZWRQZXJzb24ua25vd25Bcykge1xuICAgICAgcmV0dXJuIGAke3NlbGVjdGVkUGVyc29uLmtub3duQXN9ICgke3NlbGVjdGVkUGVyc29uLmVtYWlsfSlgO1xuICAgIH1cbiAgICByZXR1cm4gc2VsZWN0ZWRQZXJzb24uZW1haWwgPyBgJHtzZWxlY3RlZFBlcnNvbi5uYW1lfSAoJHtzZWxlY3RlZFBlcnNvbi5lbWFpbH0pYCA6IHNlbGVjdGVkUGVyc29uLm5hbWU7XG4gIH1cblxuICBwdWJsaWMgb25JbnB1dCgpOiB2b2lkIHtcbiAgICB0aGlzLnBlcnNvbkZpZWxkQ2hhbmdlZC5lbWl0KCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,66 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * Generated from: lib/components/generic-filter/generic-filter-utils.ts
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
+ */
6
+ import * as tslib_1 from "tslib";
7
+ /**
8
+ * @template T
9
+ * @param {?} min
10
+ * @return {?}
11
+ */
12
+ export function minSelectedValidator(min) {
13
+ return (/**
14
+ * @param {?} control
15
+ * @return {?}
16
+ */
17
+ function (control) {
18
+ /** @type {?} */
19
+ var values = (/** @type {?} */ (control.value));
20
+ return values.length && values.filter((/**
21
+ * @param {?} value
22
+ * @return {?}
23
+ */
24
+ function (value) { return value; })).length >= min ? null : { minLength: true };
25
+ });
26
+ }
27
+ /**
28
+ * @template T
29
+ * @param {?} max
30
+ * @return {?}
31
+ */
32
+ export function maxSelectedValidator(max) {
33
+ return (/**
34
+ * @param {?} control
35
+ * @return {?}
36
+ */
37
+ function (control) {
38
+ /** @type {?} */
39
+ var values = (/** @type {?} */ (control.value));
40
+ return values.length && values.filter((/**
41
+ * @param {?} value
42
+ * @return {?}
43
+ */
44
+ function (value) { return value; })).length <= max ? null : { maxLength: true };
45
+ });
46
+ }
47
+ /**
48
+ * @param {?} options
49
+ * @param {?} values
50
+ * @return {?}
51
+ */
52
+ export function getValues(options, values) {
53
+ return options.reduce((/**
54
+ * @param {?} acc
55
+ * @param {?} option
56
+ * @param {?} index
57
+ * @return {?}
58
+ */
59
+ function (acc, option, index) {
60
+ if (values[index]) {
61
+ return tslib_1.__spread(acc, [option.key]);
62
+ }
63
+ return acc;
64
+ }), []);
65
+ }
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1maWx0ZXItdXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaG1jdHMvcnB4LXh1aS1jb21tb24tbGliLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvZ2VuZXJpYy1maWx0ZXIvZ2VuZXJpYy1maWx0ZXItdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFFQSxNQUFNLFVBQVUsb0JBQW9CLENBQUksR0FBVztJQUNqRDs7OztJQUFPLFVBQUMsT0FBd0I7O1lBQ3hCLE1BQU0sR0FBRyxtQkFBQSxPQUFPLENBQUMsS0FBSyxFQUFPO1FBQ25DLE9BQU8sTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTTs7OztRQUFDLFVBQUEsS0FBSyxJQUFJLE9BQUEsS0FBSyxFQUFMLENBQUssRUFBQyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFDLENBQUM7SUFDakcsQ0FBQyxFQUFDO0FBQ0osQ0FBQzs7Ozs7O0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFJLEdBQVc7SUFDakQ7Ozs7SUFBTyxVQUFDLE9BQXdCOztZQUN4QixNQUFNLEdBQUcsbUJBQUEsT0FBTyxDQUFDLEtBQUssRUFBTztRQUNuQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU07Ozs7UUFBQyxVQUFBLEtBQUssSUFBSSxPQUFBLEtBQUssRUFBTCxDQUFLLEVBQUMsQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBQyxDQUFDO0lBQ2pHLENBQUMsRUFBQztBQUNKLENBQUM7Ozs7OztBQUVELE1BQU0sVUFBVSxTQUFTLENBQUMsT0FBMkQsRUFBRSxNQUFhO0lBQ2xHLE9BQU8sT0FBTyxDQUFDLE1BQU07Ozs7OztJQUFDLFVBQUMsR0FBYSxFQUFFLE1BQXNDLEVBQUUsS0FBYTtRQUN6RixJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNqQix3QkFBVyxHQUFHLEdBQUUsTUFBTSxDQUFDLEdBQUcsR0FBRTtTQUM3QjtRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ1QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gbWluU2VsZWN0ZWRWYWxpZGF0b3I8VD4obWluOiBudW1iZXIpOiBWYWxpZGF0b3JGbiB7XG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgIGNvbnN0IHZhbHVlcyA9IGNvbnRyb2wudmFsdWUgYXMgVFtdO1xuICAgIHJldHVybiB2YWx1ZXMubGVuZ3RoICYmIHZhbHVlcy5maWx0ZXIodmFsdWUgPT4gdmFsdWUpLmxlbmd0aCA+PSBtaW4gPyBudWxsIDoge21pbkxlbmd0aDogdHJ1ZX07XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXhTZWxlY3RlZFZhbGlkYXRvcjxUPihtYXg6IG51bWJlcik6IFZhbGlkYXRvckZuIHtcbiAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgY29uc3QgdmFsdWVzID0gY29udHJvbC52YWx1ZSBhcyBUW107XG4gICAgcmV0dXJuIHZhbHVlcy5sZW5ndGggJiYgdmFsdWVzLmZpbHRlcih2YWx1ZSA9PiB2YWx1ZSkubGVuZ3RoIDw9IG1heCA/IG51bGwgOiB7bWF4TGVuZ3RoOiB0cnVlfTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbHVlcyhvcHRpb25zOiB7IGtleTogc3RyaW5nLCBsYWJlbDogc3RyaW5nLCBzZWxlY3RBbGw/OiB0cnVlIH1bXSwgdmFsdWVzOiBhbnlbXSk6IGFueVtdIHtcbiAgcmV0dXJuIG9wdGlvbnMucmVkdWNlKChhY2M6IHN0cmluZ1tdLCBvcHRpb246IHsga2V5OiBzdHJpbmcsIGxhYmVsOiBzdHJpbmcgfSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGlmICh2YWx1ZXNbaW5kZXhdKSB7XG4gICAgICByZXR1cm4gWy4uLmFjYywgb3B0aW9uLmtleV07XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcbn1cblxuIl19