@hmcts/rpx-xui-common-lib 2.1.2-angular-upgrade-11 → 2.1.2-google-analytics

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 (513) hide show
  1. package/README.md +1 -1
  2. package/esm2022/hmcts-rpx-xui-common-lib.mjs +5 -0
  3. package/esm2022/lib/components/accessibility/accessibility.component.mjs +833 -0
  4. package/esm2022/lib/components/checkbox-list/checkbox-list.component.mjs +232 -0
  5. package/esm2022/lib/components/contact-details/contact-details.component.mjs +123 -0
  6. package/esm2022/lib/components/cookie-banner/cookie-banner.component.mjs +151 -0
  7. package/esm2022/lib/components/due-date/due-date.component.mjs +141 -0
  8. package/esm2022/lib/components/exui-main-wrapper/exui-page-wrapper.component.mjs +80 -0
  9. package/esm2022/lib/components/find-location/find-location.component.mjs +220 -0
  10. package/esm2022/lib/components/find-person/find-person.component.mjs +234 -0
  11. package/esm2022/lib/components/find-service/find-service.component.mjs +193 -0
  12. package/esm2022/lib/components/find-task-name/find-task-name.component.mjs +200 -0
  13. package/esm2022/lib/components/generic-filter/generic-filter-utils.mjs +21 -0
  14. package/esm2022/lib/components/generic-filter/generic-filter.component.mjs +1224 -0
  15. package/esm2022/lib/components/hmcts-session-dialog/hmcts-session-dialog.component.mjs +56 -0
  16. package/esm2022/lib/components/index.mjs +2 -0
  17. package/esm2022/lib/components/invite-user-form/invite-user-form.component.mjs +51 -0
  18. package/esm2022/lib/components/invite-user-permissions/invite-user-permission.component.mjs +54 -0
  19. package/esm2022/lib/components/loading-spinner/loading-spinner.component.mjs +33 -0
  20. package/esm2022/lib/components/pagination/pagination.component.mjs +92 -0
  21. package/esm2022/lib/components/public_api.mjs +39 -0
  22. package/esm2022/lib/components/search-judicials/search-judicials.component.mjs +185 -0
  23. package/esm2022/lib/components/search-location/search-location.component.mjs +240 -0
  24. package/esm2022/lib/components/search-service/search-service.component.mjs +94 -0
  25. package/esm2022/lib/components/search-venue/search-venue.component.mjs +188 -0
  26. package/esm2022/lib/components/selected-case/selected-case.component.mjs +381 -0
  27. package/esm2022/lib/components/selected-case-confirm/selected-case-confirm.component.mjs +135 -0
  28. package/esm2022/lib/components/selected-case-list/selected-case-list.component.mjs +98 -0
  29. package/esm2022/lib/components/service-message/service-message.component.mjs +62 -0
  30. package/esm2022/lib/components/service-messages/service-messages.component.mjs +165 -0
  31. package/esm2022/lib/components/share-case/share-case.component.mjs +427 -0
  32. package/esm2022/lib/components/share-case-confirm/share-case-confirm.component.mjs +85 -0
  33. package/esm2022/lib/components/tab/tab.component.mjs +40 -0
  34. package/esm2022/lib/components/tc-confirm/tc-confirm.component.mjs +66 -0
  35. package/esm2022/lib/components/terms-and-conditions/tc-display/tc-display-html/tc-display-html.component.mjs +17 -0
  36. package/esm2022/lib/components/terms-and-conditions/tc-display/tc-display-plain/tc-display-plain.component.mjs +17 -0
  37. package/esm2022/lib/components/terms-and-conditions/terms-and-conditions.component.mjs +58 -0
  38. package/esm2022/lib/components/user-details/user-details.component.mjs +276 -0
  39. package/esm2022/lib/components/user-list/user-list.component.mjs +100 -0
  40. package/esm2022/lib/components/user-select/user-select.component.mjs +94 -0
  41. package/esm2022/lib/components/write-address/write-address.component.mjs +342 -0
  42. package/esm2022/lib/components/write-address-inputs/write-address-inputs.component.mjs +165 -0
  43. package/esm2022/lib/directives/feature-toggle/feature-toggle.directive.mjs +41 -0
  44. package/esm2022/lib/directives/index.mjs +2 -0
  45. package/esm2022/lib/directives/let/let.directive.mjs +29 -0
  46. package/esm2022/lib/directives/public-api.mjs +3 -0
  47. package/esm2022/lib/exui-common-lib.module.mjs +313 -0
  48. package/esm2022/lib/gov-ui/components/gov-uk-checkbox/gov-uk-checkbox.component.mjs +55 -0
  49. package/esm2022/lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.mjs +137 -0
  50. package/esm2022/lib/gov-ui/components/gov-uk-date/gov-uk-date.component.mjs +127 -0
  51. package/esm2022/lib/gov-ui/components/gov-uk-error-message/gov-uk-error-message.component.mjs +46 -0
  52. package/esm2022/lib/gov-ui/components/gov-uk-fieldset/gov-uk-fieldset.component.mjs +79 -0
  53. package/esm2022/lib/gov-ui/components/gov-uk-file-upload/gov-uk-file-upload.component.mjs +79 -0
  54. package/esm2022/lib/gov-ui/components/gov-uk-form-group-wrapper/gov-uk-form-group-wrapper.component.mjs +45 -0
  55. package/esm2022/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.mjs +71 -0
  56. package/esm2022/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.mjs +84 -0
  57. package/esm2022/lib/gov-ui/components/gov-uk-radio/gov-uk-radio.component.mjs +48 -0
  58. package/esm2022/lib/gov-ui/components/gov-uk-radios/gov-uk-radios.component.mjs +42 -0
  59. package/esm2022/lib/gov-ui/components/gov-uk-select/gov-uk-select.component.mjs +80 -0
  60. package/esm2022/lib/gov-ui/components/gov-uk-table/gov-uk-table.component.mjs +185 -0
  61. package/esm2022/lib/gov-ui/components/gov-uk-textarea/gov-uk-textarea.component.mjs +57 -0
  62. package/esm2022/lib/gov-ui/components/hmcts-banner/hmcts-banner-info.interface.mjs +2 -0
  63. package/esm2022/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.mjs +111 -0
  64. package/esm2022/lib/gov-ui/components/hmcts-error-summary/hmcts-error-summary.component.mjs +140 -0
  65. package/esm2022/lib/gov-ui/components/hmcts-identity-bar/hmcts-identity-bar.component.mjs +34 -0
  66. package/esm2022/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.mjs +129 -0
  67. package/esm2022/lib/gov-ui/components/hmcts-pagination/hmcts-pagination.component.mjs +204 -0
  68. package/esm2022/lib/gov-ui/components/hmcts-primary-navigation/hmcts-primary-navigation.component.mjs +60 -0
  69. package/esm2022/lib/gov-ui/components/hmcts-sub-navigation/hmcts-sub-navigation.component.mjs +58 -0
  70. package/esm2022/lib/gov-ui/components/index.mjs +2 -0
  71. package/esm2022/lib/gov-ui/components/public_api.mjs +22 -0
  72. package/esm2022/lib/gov-ui/directives/remove-host.directive.mjs +30 -0
  73. package/esm2022/lib/gov-ui/gov-ui.service.mjs +14 -0
  74. package/esm2022/lib/gov-ui/index.mjs +2 -0
  75. package/esm2022/lib/gov-ui/models/checkboxes-model.mjs +2 -0
  76. package/esm2022/lib/gov-ui/models/error-messages-model.mjs +2 -0
  77. package/esm2022/lib/gov-ui/models/gov-ui-config-model.mjs +2 -0
  78. package/esm2022/lib/gov-ui/models/index.mjs +2 -0
  79. package/esm2022/lib/gov-ui/models/public_api.mjs +7 -0
  80. package/esm2022/lib/gov-ui/models/radio-buttons.model.mjs +2 -0
  81. package/esm2022/lib/gov-ui/public_api.mjs +8 -0
  82. package/esm2022/lib/gov-ui/util/helpers/html-templates.helper.mjs +22 -0
  83. package/esm2022/lib/gov-ui/validators/checkboxes-be-checked.validator.mjs +18 -0
  84. package/esm2022/lib/gov-ui/validators/date.validator.mjs +15 -0
  85. package/esm2022/lib/gov-ui/validators/index.mjs +2 -0
  86. package/esm2022/lib/gov-ui/validators/public_api.mjs +7 -0
  87. package/esm2022/lib/gov-ui/validators/radio-group.validator.mjs +15 -0
  88. package/esm2022/lib/models/address-message.enum.mjs +11 -0
  89. package/esm2022/lib/models/address-option.model.mjs +21 -0
  90. package/esm2022/lib/models/address.model.mjs +4 -0
  91. package/esm2022/lib/models/case-share.model.mjs +7 -0
  92. package/esm2022/lib/models/contact-details.model.mjs +7 -0
  93. package/esm2022/lib/models/due-date.model.mjs +8 -0
  94. package/esm2022/lib/models/feature-user.mjs +5 -0
  95. package/esm2022/lib/models/filter.model.mjs +3 -0
  96. package/esm2022/lib/models/idle-config.model.mjs +2 -0
  97. package/esm2022/lib/models/index.mjs +19 -0
  98. package/esm2022/lib/models/location.model.mjs +7 -0
  99. package/esm2022/lib/models/pagination.model.mjs +2 -0
  100. package/esm2022/lib/models/person.model.mjs +19 -0
  101. package/esm2022/lib/models/public_api.mjs +7 -0
  102. package/esm2022/lib/models/search-options.model.mjs +2 -0
  103. package/esm2022/lib/models/service-message.model.mjs +2 -0
  104. package/esm2022/lib/models/task-name.model.mjs +2 -0
  105. package/esm2022/lib/models/tcDocument.model.mjs +2 -0
  106. package/esm2022/lib/models/timeout-notification.model.mjs +2 -0
  107. package/esm2022/lib/models/user-access-type.model.mjs +2 -0
  108. package/esm2022/lib/models/user-details.model.mjs +2 -0
  109. package/esm2022/lib/models/user.model.mjs +2 -0
  110. package/esm2022/lib/pipes/capitalize/capitalize.pipe.mjs +15 -0
  111. package/esm2022/lib/pipes/index.mjs +2 -0
  112. package/esm2022/lib/services/address/address-parser.mjs +76 -0
  113. package/esm2022/lib/services/address/address-type.enum.mjs +7 -0
  114. package/esm2022/lib/services/address/address.service.mjs +55 -0
  115. package/esm2022/lib/services/case-sharing-state/case-sharing-state.service.mjs +170 -0
  116. package/esm2022/lib/services/cookie/cookie.service.mjs +48 -0
  117. package/esm2022/lib/services/feature-toggle/feature-toggle.guard.mjs +37 -0
  118. package/esm2022/lib/services/feature-toggle/feature-toggle.service.mjs +33 -0
  119. package/esm2022/lib/services/feature-toggle/launch-darkly.service.mjs +65 -0
  120. package/esm2022/lib/services/filter/filter.service.mjs +95 -0
  121. package/esm2022/lib/services/find-person/find-person.service.mjs +92 -0
  122. package/esm2022/lib/services/google-analytics/google-analytics.service.mjs +73 -0
  123. package/esm2022/lib/services/google-tag-manager/google-tag-manager.service.mjs +85 -0
  124. package/esm2022/lib/services/index.mjs +2 -0
  125. package/esm2022/lib/services/loading/loading.service.mjs +41 -0
  126. package/esm2022/lib/services/locations/location.service.mjs +38 -0
  127. package/esm2022/lib/services/manage-session/manage-session.services.mjs +50 -0
  128. package/esm2022/lib/services/public-api.mjs +18 -0
  129. package/esm2022/lib/services/ref-data/index.mjs +4 -0
  130. package/esm2022/lib/services/ref-data/models/ref-data-htmcs-service.model.mjs +2 -0
  131. package/esm2022/lib/services/ref-data/models/ref-data-region.model.mjs +2 -0
  132. package/esm2022/lib/services/ref-data/ref-data-data-access/models/ref-data-locations-by-service-code-response.model.mjs +2 -0
  133. package/esm2022/lib/services/ref-data/ref-data-data-access/ref-data-data-access.service.mjs +33 -0
  134. package/esm2022/lib/services/ref-data/ref-data.service.mjs +34 -0
  135. package/esm2022/lib/services/role-guard/role.guard.mjs +43 -0
  136. package/esm2022/lib/services/role-guard/role.service.mjs +22 -0
  137. package/esm2022/lib/services/storage/session-storage/session-storage.service.mjs +43 -0
  138. package/esm2022/lib/services/task-name/task-name.service.mjs +35 -0
  139. package/esm2022/lib/services/timeout-notifications/timeout-notifications.service.mjs +103 -0
  140. package/esm2022/lib/window.mjs +4 -0
  141. package/esm2022/public-api.mjs +12 -0
  142. package/fesm2022/hmcts-rpx-xui-common-lib.mjs +10377 -0
  143. package/fesm2022/hmcts-rpx-xui-common-lib.mjs.map +1 -0
  144. package/index.d.ts +5 -0
  145. package/lib/components/accessibility/accessibility.component.d.ts +7 -1
  146. package/lib/components/checkbox-list/checkbox-list.component.d.ts +14 -7
  147. package/lib/components/contact-details/contact-details.component.d.ts +3 -0
  148. package/lib/components/cookie-banner/cookie-banner.component.d.ts +5 -1
  149. package/lib/components/due-date/due-date.component.d.ts +12 -6
  150. package/lib/components/exui-main-wrapper/exui-page-wrapper.component.d.ts +3 -0
  151. package/lib/components/find-location/find-location.component.d.ts +16 -8
  152. package/lib/components/find-person/find-person.component.d.ts +5 -2
  153. package/lib/components/find-service/find-service.component.d.ts +29 -0
  154. package/lib/components/find-task-name/find-task-name.component.d.ts +44 -0
  155. package/lib/components/generic-filter/generic-filter-utils.d.ts +2 -5
  156. package/lib/components/generic-filter/generic-filter.component.d.ts +29 -8
  157. package/lib/components/hmcts-session-dialog/hmcts-session-dialog.component.d.ts +3 -0
  158. package/lib/components/invite-user-form/invite-user-form.component.d.ts +4 -1
  159. package/lib/components/invite-user-permissions/invite-user-permission.component.d.ts +3 -0
  160. package/lib/components/loading-spinner/loading-spinner.component.d.ts +8 -1
  161. package/lib/components/pagination/pagination.component.d.ts +3 -0
  162. package/lib/components/public_api.d.ts +11 -0
  163. package/lib/components/search-judicials/search-judicials.component.d.ts +4 -1
  164. package/lib/components/search-location/search-location.component.d.ts +27 -20
  165. package/lib/components/search-service/search-service.component.d.ts +20 -0
  166. package/lib/components/search-venue/search-venue.component.d.ts +4 -2
  167. package/lib/components/selected-case/selected-case.component.d.ts +4 -1
  168. package/lib/components/selected-case-confirm/selected-case-confirm.component.d.ts +3 -0
  169. package/lib/components/selected-case-list/selected-case-list.component.d.ts +4 -0
  170. package/lib/components/service-message/service-message.component.d.ts +9 -4
  171. package/lib/components/service-messages/service-messages.component.d.ts +15 -5
  172. package/lib/components/share-case/share-case.component.d.ts +41 -2
  173. package/lib/components/share-case-confirm/share-case-confirm.component.d.ts +3 -0
  174. package/lib/components/tab/tab.component.d.ts +3 -0
  175. package/lib/components/tc-confirm/tc-confirm.component.d.ts +3 -0
  176. package/lib/components/terms-and-conditions/tc-display/tc-display-html/tc-display-html.component.d.ts +3 -0
  177. package/lib/components/terms-and-conditions/tc-display/tc-display-plain/tc-display-plain.component.d.ts +3 -0
  178. package/lib/components/terms-and-conditions/terms-and-conditions.component.d.ts +3 -0
  179. package/lib/components/user-details/user-details.component.d.ts +4 -0
  180. package/lib/components/user-list/user-list.component.d.ts +3 -0
  181. package/lib/components/user-select/user-select.component.d.ts +5 -3
  182. package/lib/components/write-address/write-address.component.d.ts +45 -0
  183. package/lib/components/write-address-inputs/write-address-inputs.component.d.ts +16 -0
  184. package/lib/directives/feature-toggle/feature-toggle.directive.d.ts +4 -1
  185. package/lib/directives/let/let.directive.d.ts +4 -1
  186. package/lib/exui-common-lib.module.d.ts +83 -4
  187. package/lib/gov-ui/components/gov-uk-checkbox/gov-uk-checkbox.component.d.ts +3 -0
  188. package/lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.d.ts +17 -5
  189. package/lib/gov-ui/components/gov-uk-date/gov-uk-date.component.d.ts +3 -0
  190. package/lib/gov-ui/components/gov-uk-error-message/gov-uk-error-message.component.d.ts +3 -0
  191. package/lib/gov-ui/components/gov-uk-fieldset/gov-uk-fieldset.component.d.ts +3 -0
  192. package/lib/gov-ui/components/gov-uk-file-upload/gov-uk-file-upload.component.d.ts +3 -0
  193. package/lib/gov-ui/components/gov-uk-form-group-wrapper/gov-uk-form-group-wrapper.component.d.ts +3 -0
  194. package/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.d.ts +4 -2
  195. package/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.d.ts +4 -0
  196. package/lib/gov-ui/components/gov-uk-radio/gov-uk-radio.component.d.ts +3 -0
  197. package/lib/gov-ui/components/gov-uk-radios/gov-uk-radios.component.d.ts +5 -2
  198. package/lib/gov-ui/components/gov-uk-select/gov-uk-select.component.d.ts +3 -0
  199. package/lib/gov-ui/components/gov-uk-table/gov-uk-table.component.d.ts +3 -0
  200. package/lib/gov-ui/components/gov-uk-textarea/gov-uk-textarea.component.d.ts +3 -0
  201. package/lib/gov-ui/components/hmcts-banner/hmcts-banner-info.interface.d.ts +7 -0
  202. package/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.d.ts +7 -2
  203. package/lib/gov-ui/components/hmcts-error-summary/hmcts-error-summary.component.d.ts +4 -1
  204. package/lib/gov-ui/components/hmcts-identity-bar/hmcts-identity-bar.component.d.ts +4 -1
  205. package/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.d.ts +6 -3
  206. package/lib/gov-ui/components/hmcts-pagination/hmcts-pagination.component.d.ts +3 -0
  207. package/lib/gov-ui/components/hmcts-primary-navigation/hmcts-primary-navigation.component.d.ts +4 -1
  208. package/lib/gov-ui/components/hmcts-sub-navigation/hmcts-sub-navigation.component.d.ts +3 -0
  209. package/lib/gov-ui/components/public_api.d.ts +20 -0
  210. package/lib/gov-ui/directives/remove-host.directive.d.ts +3 -0
  211. package/lib/gov-ui/gov-ui.service.d.ts +3 -0
  212. package/lib/gov-ui/models/checkboxes-model.d.ts +4 -7
  213. package/lib/gov-ui/models/gov-ui-config-model.d.ts +2 -0
  214. package/lib/gov-ui/models/public_api.d.ts +0 -1
  215. package/lib/gov-ui/models/radio-buttons.model.d.ts +9 -0
  216. package/lib/gov-ui/public_api.d.ts +1 -0
  217. package/lib/models/address-message.enum.d.ts +9 -0
  218. package/lib/models/address-option.model.d.ts +9 -0
  219. package/lib/models/address.model.d.ts +9 -0
  220. package/lib/models/case-share.model.d.ts +5 -0
  221. package/lib/models/contact-details.model.d.ts +4 -0
  222. package/lib/models/feature-user.d.ts +4 -6
  223. package/lib/models/filter.model.d.ts +43 -9
  224. package/lib/models/index.d.ts +4 -0
  225. package/lib/models/location.model.d.ts +12 -12
  226. package/lib/models/person.model.d.ts +3 -0
  227. package/lib/models/public_api.d.ts +1 -0
  228. package/lib/models/search-options.model.d.ts +1 -1
  229. package/lib/models/service-message.model.d.ts +8 -0
  230. package/lib/models/task-name.model.d.ts +4 -0
  231. package/lib/models/user-access-type.model.d.ts +6 -0
  232. package/lib/models/user-details.model.d.ts +2 -0
  233. package/lib/pipes/capitalize/capitalize.pipe.d.ts +7 -0
  234. package/lib/pipes/index.d.ts +1 -0
  235. package/lib/services/address/address-parser.d.ts +17 -0
  236. package/lib/services/address/address-type.enum.d.ts +5 -0
  237. package/lib/services/address/address.service.d.ts +15 -0
  238. package/lib/services/case-sharing-state/case-sharing-state.service.d.ts +5 -2
  239. package/lib/services/cookie/cookie.service.d.ts +3 -0
  240. package/lib/services/feature-toggle/feature-toggle.guard.d.ts +8 -2
  241. package/lib/services/feature-toggle/feature-toggle.service.d.ts +4 -0
  242. package/lib/services/feature-toggle/launch-darkly.service.d.ts +14 -10
  243. package/lib/services/filter/filter.service.d.ts +6 -0
  244. package/lib/services/find-person/find-person.service.d.ts +5 -2
  245. package/lib/services/google-analytics/google-analytics.service.d.ts +4 -1
  246. package/lib/services/google-tag-manager/google-tag-manager.service.d.ts +5 -1
  247. package/lib/services/loading/loading.service.d.ts +5 -2
  248. package/lib/services/locations/location.service.d.ts +4 -1
  249. package/lib/services/manage-session/manage-session.services.d.ts +3 -0
  250. package/lib/services/public-api.d.ts +2 -4
  251. package/lib/services/ref-data/index.d.ts +3 -0
  252. package/lib/services/ref-data/models/ref-data-htmcs-service.model.d.ts +13 -0
  253. package/lib/services/ref-data/models/ref-data-region.model.d.ts +4 -0
  254. package/lib/services/ref-data/ref-data-data-access/models/ref-data-locations-by-service-code-response.model.d.ts +8 -0
  255. package/lib/services/ref-data/ref-data-data-access/ref-data-data-access.service.d.ts +18 -0
  256. package/lib/services/ref-data/ref-data.service.d.ts +17 -0
  257. package/lib/services/role-guard/role.guard.d.ts +7 -3
  258. package/lib/services/role-guard/role.service.d.ts +9 -4
  259. package/lib/services/{session-storage → storage/session-storage}/session-storage.service.d.ts +3 -0
  260. package/lib/services/task-name/task-name.service.d.ts +17 -0
  261. package/lib/services/timeout-notifications/timeout-notifications.service.d.ts +8 -2
  262. package/lib/window.d.ts +1 -1
  263. package/package.json +22 -22
  264. package/public-api.d.ts +1 -0
  265. package/bundles/hmcts-rpx-xui-common-lib.umd.js +0 -9742
  266. package/bundles/hmcts-rpx-xui-common-lib.umd.js.map +0 -1
  267. package/bundles/hmcts-rpx-xui-common-lib.umd.min.js +0 -16
  268. package/bundles/hmcts-rpx-xui-common-lib.umd.min.js.map +0 -1
  269. package/esm2015/hmcts-rpx-xui-common-lib.js +0 -73
  270. package/esm2015/lib/components/accessibility/accessibility.component.js +0 -20
  271. package/esm2015/lib/components/checkbox-list/checkbox-list.component.js +0 -275
  272. package/esm2015/lib/components/contact-details/contact-details.component.js +0 -27
  273. package/esm2015/lib/components/cookie-banner/cookie-banner.component.js +0 -129
  274. package/esm2015/lib/components/due-date/due-date.component.js +0 -210
  275. package/esm2015/lib/components/exui-main-wrapper/exui-page-wrapper.component.js +0 -42
  276. package/esm2015/lib/components/find-location/find-location.component.js +0 -240
  277. package/esm2015/lib/components/find-person/find-person.component.js +0 -259
  278. package/esm2015/lib/components/generic-filter/generic-filter-utils.js +0 -65
  279. package/esm2015/lib/components/generic-filter/generic-filter.component.js +0 -636
  280. package/esm2015/lib/components/hmcts-session-dialog/hmcts-session-dialog.component.js +0 -42
  281. package/esm2015/lib/components/index.js +0 -7
  282. package/esm2015/lib/components/invite-user-form/invite-user-form.component.js +0 -45
  283. package/esm2015/lib/components/invite-user-permissions/invite-user-permission.component.js +0 -44
  284. package/esm2015/lib/components/loading-spinner/loading-spinner.component.js +0 -27
  285. package/esm2015/lib/components/pagination/pagination.component.js +0 -50
  286. package/esm2015/lib/components/public_api.js +0 -33
  287. package/esm2015/lib/components/search-judicials/search-judicials.component.js +0 -249
  288. package/esm2015/lib/components/search-location/search-location.component.js +0 -294
  289. package/esm2015/lib/components/search-venue/search-venue.component.js +0 -246
  290. package/esm2015/lib/components/selected-case/selected-case.component.js +0 -316
  291. package/esm2015/lib/components/selected-case-confirm/selected-case-confirm.component.js +0 -74
  292. package/esm2015/lib/components/selected-case-list/selected-case-list.component.js +0 -94
  293. package/esm2015/lib/components/service-message/service-message.component.js +0 -40
  294. package/esm2015/lib/components/service-messages/service-messages.component.js +0 -106
  295. package/esm2015/lib/components/share-case/share-case.component.js +0 -172
  296. package/esm2015/lib/components/share-case-confirm/share-case-confirm.component.js +0 -67
  297. package/esm2015/lib/components/tab/tab.component.js +0 -45
  298. package/esm2015/lib/components/tc-confirm/tc-confirm.component.js +0 -37
  299. package/esm2015/lib/components/terms-and-conditions/tc-display/tc-display-html/tc-display-html.component.js +0 -19
  300. package/esm2015/lib/components/terms-and-conditions/tc-display/tc-display-plain/tc-display-plain.component.js +0 -19
  301. package/esm2015/lib/components/terms-and-conditions/terms-and-conditions.component.js +0 -26
  302. package/esm2015/lib/components/user-details/user-details.component.js +0 -78
  303. package/esm2015/lib/components/user-list/user-list.component.js +0 -63
  304. package/esm2015/lib/components/user-select/user-select.component.js +0 -105
  305. package/esm2015/lib/directives/feature-toggle/feature-toggle.directive.js +0 -95
  306. package/esm2015/lib/directives/index.js +0 -7
  307. package/esm2015/lib/directives/let/let.directive.js +0 -68
  308. package/esm2015/lib/directives/public-api.js +0 -8
  309. package/esm2015/lib/exui-common-lib.module.js +0 -162
  310. package/esm2015/lib/gov-ui/components/gov-uk-checkbox/gov-uk-checkbox.component.js +0 -51
  311. package/esm2015/lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.js +0 -32
  312. package/esm2015/lib/gov-ui/components/gov-uk-date/gov-uk-date.component.js +0 -114
  313. package/esm2015/lib/gov-ui/components/gov-uk-error-message/gov-uk-error-message.component.js +0 -34
  314. package/esm2015/lib/gov-ui/components/gov-uk-fieldset/gov-uk-fieldset.component.js +0 -43
  315. package/esm2015/lib/gov-ui/components/gov-uk-file-upload/gov-uk-file-upload.component.js +0 -57
  316. package/esm2015/lib/gov-ui/components/gov-uk-form-group-wrapper/gov-uk-form-group-wrapper.component.js +0 -37
  317. package/esm2015/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.js +0 -54
  318. package/esm2015/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.js +0 -31
  319. package/esm2015/lib/gov-ui/components/gov-uk-radio/gov-uk-radio.component.js +0 -51
  320. package/esm2015/lib/gov-ui/components/gov-uk-radios/gov-uk-radios.component.js +0 -32
  321. package/esm2015/lib/gov-ui/components/gov-uk-select/gov-uk-select.component.js +0 -46
  322. package/esm2015/lib/gov-ui/components/gov-uk-table/gov-uk-table.component.js +0 -69
  323. package/esm2015/lib/gov-ui/components/gov-uk-textarea/gov-uk-textarea.component.js +0 -43
  324. package/esm2015/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.js +0 -35
  325. package/esm2015/lib/gov-ui/components/hmcts-error-summary/hmcts-error-summary.component.js +0 -90
  326. package/esm2015/lib/gov-ui/components/hmcts-identity-bar/hmcts-identity-bar.component.js +0 -33
  327. package/esm2015/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.js +0 -75
  328. package/esm2015/lib/gov-ui/components/hmcts-pagination/hmcts-pagination.component.js +0 -49
  329. package/esm2015/lib/gov-ui/components/hmcts-primary-navigation/hmcts-primary-navigation.component.js +0 -43
  330. package/esm2015/lib/gov-ui/components/hmcts-sub-navigation/hmcts-sub-navigation.component.js +0 -42
  331. package/esm2015/lib/gov-ui/components/index.js +0 -7
  332. package/esm2015/lib/gov-ui/components/public_api.js +0 -7
  333. package/esm2015/lib/gov-ui/directives/remove-host.directive.js +0 -50
  334. package/esm2015/lib/gov-ui/gov-ui.service.js +0 -19
  335. package/esm2015/lib/gov-ui/index.js +0 -7
  336. package/esm2015/lib/gov-ui/models/banner-data-model.js +0 -16
  337. package/esm2015/lib/gov-ui/models/checkboxes-model.js +0 -22
  338. package/esm2015/lib/gov-ui/models/error-messages-model.js +0 -16
  339. package/esm2015/lib/gov-ui/models/gov-ui-config-model.js +0 -36
  340. package/esm2015/lib/gov-ui/models/index.js +0 -7
  341. package/esm2015/lib/gov-ui/models/isession-storage.interface.js +0 -24
  342. package/esm2015/lib/gov-ui/models/public_api.js +0 -13
  343. package/esm2015/lib/gov-ui/public_api.js +0 -12
  344. package/esm2015/lib/gov-ui/util/helpers/html-templates.helper.js +0 -32
  345. package/esm2015/lib/gov-ui/util/session-storage/session-storage-utils.js +0 -58
  346. package/esm2015/lib/gov-ui/validators/checkboxes-be-checked.validator.js +0 -37
  347. package/esm2015/lib/gov-ui/validators/date.validator.js +0 -32
  348. package/esm2015/lib/gov-ui/validators/index.js +0 -7
  349. package/esm2015/lib/gov-ui/validators/public_api.js +0 -12
  350. package/esm2015/lib/gov-ui/validators/radio-group.validator.js +0 -27
  351. package/esm2015/lib/models/case-share.model.js +0 -26
  352. package/esm2015/lib/models/contact-details.model.js +0 -31
  353. package/esm2015/lib/models/due-date.model.js +0 -15
  354. package/esm2015/lib/models/feature-user.js +0 -20
  355. package/esm2015/lib/models/filter.model.js +0 -120
  356. package/esm2015/lib/models/idle-config.model.js +0 -20
  357. package/esm2015/lib/models/index.js +0 -20
  358. package/esm2015/lib/models/location.model.js +0 -129
  359. package/esm2015/lib/models/pagination.model.js +0 -18
  360. package/esm2015/lib/models/person.model.js +0 -92
  361. package/esm2015/lib/models/public_api.js +0 -11
  362. package/esm2015/lib/models/search-options.model.js +0 -22
  363. package/esm2015/lib/models/tcDocument.model.js +0 -18
  364. package/esm2015/lib/models/timeout-notification.model.js +0 -18
  365. package/esm2015/lib/models/user-details.model.js +0 -22
  366. package/esm2015/lib/models/user.model.js +0 -25
  367. package/esm2015/lib/services/case-sharing-state/case-sharing-state.service.js +0 -218
  368. package/esm2015/lib/services/cookie/cookie.service.js +0 -110
  369. package/esm2015/lib/services/feature-toggle/feature-toggle.guard.js +0 -74
  370. package/esm2015/lib/services/feature-toggle/feature-toggle.service.js +0 -53
  371. package/esm2015/lib/services/feature-toggle/launch-darkly.service.js +0 -141
  372. package/esm2015/lib/services/filter/filter.service.js +0 -118
  373. package/esm2015/lib/services/find-person/find-person.service.js +0 -214
  374. package/esm2015/lib/services/google-analytics/google-analytics.service.js +0 -123
  375. package/esm2015/lib/services/google-tag-manager/google-tag-manager.service.js +0 -125
  376. package/esm2015/lib/services/index.js +0 -7
  377. package/esm2015/lib/services/loading/loading.service.js +0 -78
  378. package/esm2015/lib/services/locations/location.service.js +0 -57
  379. package/esm2015/lib/services/manage-session/manage-session.services.js +0 -105
  380. package/esm2015/lib/services/public-api.js +0 -25
  381. package/esm2015/lib/services/role-guard/role.guard.js +0 -78
  382. package/esm2015/lib/services/role-guard/role.service.js +0 -39
  383. package/esm2015/lib/services/session-storage/session-storage.service.js +0 -55
  384. package/esm2015/lib/services/timeout-notifications/timeout-notifications.service.js +0 -158
  385. package/esm2015/lib/window.js +0 -13
  386. package/esm2015/public-api.js +0 -16
  387. package/esm5/hmcts-rpx-xui-common-lib.js +0 -73
  388. package/esm5/lib/components/accessibility/accessibility.component.js +0 -22
  389. package/esm5/lib/components/checkbox-list/checkbox-list.component.js +0 -391
  390. package/esm5/lib/components/contact-details/contact-details.component.js +0 -29
  391. package/esm5/lib/components/cookie-banner/cookie-banner.component.js +0 -154
  392. package/esm5/lib/components/due-date/due-date.component.js +0 -254
  393. package/esm5/lib/components/exui-main-wrapper/exui-page-wrapper.component.js +0 -45
  394. package/esm5/lib/components/find-location/find-location.component.js +0 -293
  395. package/esm5/lib/components/find-person/find-person.component.js +0 -286
  396. package/esm5/lib/components/generic-filter/generic-filter-utils.js +0 -66
  397. package/esm5/lib/components/generic-filter/generic-filter.component.js +0 -839
  398. package/esm5/lib/components/hmcts-session-dialog/hmcts-session-dialog.component.js +0 -47
  399. package/esm5/lib/components/index.js +0 -7
  400. package/esm5/lib/components/invite-user-form/invite-user-form.component.js +0 -54
  401. package/esm5/lib/components/invite-user-permissions/invite-user-permission.component.js +0 -46
  402. package/esm5/lib/components/loading-spinner/loading-spinner.component.js +0 -29
  403. package/esm5/lib/components/pagination/pagination.component.js +0 -58
  404. package/esm5/lib/components/public_api.js +0 -33
  405. package/esm5/lib/components/search-judicials/search-judicials.component.js +0 -291
  406. package/esm5/lib/components/search-location/search-location.component.js +0 -330
  407. package/esm5/lib/components/search-venue/search-venue.component.js +0 -290
  408. package/esm5/lib/components/selected-case/selected-case.component.js +0 -430
  409. package/esm5/lib/components/selected-case-confirm/selected-case-confirm.component.js +0 -84
  410. package/esm5/lib/components/selected-case-list/selected-case-list.component.js +0 -109
  411. package/esm5/lib/components/service-message/service-message.component.js +0 -46
  412. package/esm5/lib/components/service-messages/service-messages.component.js +0 -122
  413. package/esm5/lib/components/share-case/share-case.component.js +0 -223
  414. package/esm5/lib/components/share-case-confirm/share-case-confirm.component.js +0 -70
  415. package/esm5/lib/components/tab/tab.component.js +0 -51
  416. package/esm5/lib/components/tc-confirm/tc-confirm.component.js +0 -42
  417. package/esm5/lib/components/terms-and-conditions/tc-display/tc-display-html/tc-display-html.component.js +0 -22
  418. package/esm5/lib/components/terms-and-conditions/tc-display/tc-display-plain/tc-display-plain.component.js +0 -22
  419. package/esm5/lib/components/terms-and-conditions/terms-and-conditions.component.js +0 -29
  420. package/esm5/lib/components/user-details/user-details.component.js +0 -92
  421. package/esm5/lib/components/user-list/user-list.component.js +0 -76
  422. package/esm5/lib/components/user-select/user-select.component.js +0 -131
  423. package/esm5/lib/directives/feature-toggle/feature-toggle.directive.js +0 -104
  424. package/esm5/lib/directives/index.js +0 -7
  425. package/esm5/lib/directives/let/let.directive.js +0 -78
  426. package/esm5/lib/directives/public-api.js +0 -8
  427. package/esm5/lib/exui-common-lib.module.js +0 -162
  428. package/esm5/lib/gov-ui/components/gov-uk-checkbox/gov-uk-checkbox.component.js +0 -56
  429. package/esm5/lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.js +0 -36
  430. package/esm5/lib/gov-ui/components/gov-uk-date/gov-uk-date.component.js +0 -135
  431. package/esm5/lib/gov-ui/components/gov-uk-error-message/gov-uk-error-message.component.js +0 -37
  432. package/esm5/lib/gov-ui/components/gov-uk-fieldset/gov-uk-fieldset.component.js +0 -49
  433. package/esm5/lib/gov-ui/components/gov-uk-file-upload/gov-uk-file-upload.component.js +0 -65
  434. package/esm5/lib/gov-ui/components/gov-uk-form-group-wrapper/gov-uk-form-group-wrapper.component.js +0 -40
  435. package/esm5/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.js +0 -66
  436. package/esm5/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.js +0 -34
  437. package/esm5/lib/gov-ui/components/gov-uk-radio/gov-uk-radio.component.js +0 -67
  438. package/esm5/lib/gov-ui/components/gov-uk-radios/gov-uk-radios.component.js +0 -36
  439. package/esm5/lib/gov-ui/components/gov-uk-select/gov-uk-select.component.js +0 -52
  440. package/esm5/lib/gov-ui/components/gov-uk-table/gov-uk-table.component.js +0 -77
  441. package/esm5/lib/gov-ui/components/gov-uk-textarea/gov-uk-textarea.component.js +0 -50
  442. package/esm5/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.js +0 -38
  443. package/esm5/lib/gov-ui/components/hmcts-error-summary/hmcts-error-summary.component.js +0 -108
  444. package/esm5/lib/gov-ui/components/hmcts-identity-bar/hmcts-identity-bar.component.js +0 -40
  445. package/esm5/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.js +0 -87
  446. package/esm5/lib/gov-ui/components/hmcts-pagination/hmcts-pagination.component.js +0 -51
  447. package/esm5/lib/gov-ui/components/hmcts-primary-navigation/hmcts-primary-navigation.component.js +0 -49
  448. package/esm5/lib/gov-ui/components/hmcts-sub-navigation/hmcts-sub-navigation.component.js +0 -46
  449. package/esm5/lib/gov-ui/components/index.js +0 -7
  450. package/esm5/lib/gov-ui/components/public_api.js +0 -7
  451. package/esm5/lib/gov-ui/directives/remove-host.directive.js +0 -52
  452. package/esm5/lib/gov-ui/gov-ui.service.js +0 -22
  453. package/esm5/lib/gov-ui/index.js +0 -7
  454. package/esm5/lib/gov-ui/models/banner-data-model.js +0 -16
  455. package/esm5/lib/gov-ui/models/checkboxes-model.js +0 -22
  456. package/esm5/lib/gov-ui/models/error-messages-model.js +0 -16
  457. package/esm5/lib/gov-ui/models/gov-ui-config-model.js +0 -36
  458. package/esm5/lib/gov-ui/models/index.js +0 -7
  459. package/esm5/lib/gov-ui/models/isession-storage.interface.js +0 -24
  460. package/esm5/lib/gov-ui/models/public_api.js +0 -13
  461. package/esm5/lib/gov-ui/public_api.js +0 -12
  462. package/esm5/lib/gov-ui/util/helpers/html-templates.helper.js +0 -57
  463. package/esm5/lib/gov-ui/util/session-storage/session-storage-utils.js +0 -58
  464. package/esm5/lib/gov-ui/validators/checkboxes-be-checked.validator.js +0 -38
  465. package/esm5/lib/gov-ui/validators/date.validator.js +0 -32
  466. package/esm5/lib/gov-ui/validators/index.js +0 -7
  467. package/esm5/lib/gov-ui/validators/public_api.js +0 -12
  468. package/esm5/lib/gov-ui/validators/radio-group.validator.js +0 -27
  469. package/esm5/lib/models/case-share.model.js +0 -26
  470. package/esm5/lib/models/contact-details.model.js +0 -31
  471. package/esm5/lib/models/due-date.model.js +0 -15
  472. package/esm5/lib/models/feature-user.js +0 -28
  473. package/esm5/lib/models/filter.model.js +0 -124
  474. package/esm5/lib/models/idle-config.model.js +0 -20
  475. package/esm5/lib/models/index.js +0 -20
  476. package/esm5/lib/models/location.model.js +0 -129
  477. package/esm5/lib/models/pagination.model.js +0 -18
  478. package/esm5/lib/models/person.model.js +0 -92
  479. package/esm5/lib/models/public_api.js +0 -11
  480. package/esm5/lib/models/search-options.model.js +0 -22
  481. package/esm5/lib/models/tcDocument.model.js +0 -18
  482. package/esm5/lib/models/timeout-notification.model.js +0 -18
  483. package/esm5/lib/models/user-details.model.js +0 -22
  484. package/esm5/lib/models/user.model.js +0 -25
  485. package/esm5/lib/services/case-sharing-state/case-sharing-state.service.js +0 -289
  486. package/esm5/lib/services/cookie/cookie.service.js +0 -136
  487. package/esm5/lib/services/feature-toggle/feature-toggle.guard.js +0 -89
  488. package/esm5/lib/services/feature-toggle/feature-toggle.service.js +0 -90
  489. package/esm5/lib/services/feature-toggle/launch-darkly.service.js +0 -187
  490. package/esm5/lib/services/filter/filter.service.js +0 -153
  491. package/esm5/lib/services/find-person/find-person.service.js +0 -238
  492. package/esm5/lib/services/google-analytics/google-analytics.service.js +0 -128
  493. package/esm5/lib/services/google-tag-manager/google-tag-manager.service.js +0 -135
  494. package/esm5/lib/services/index.js +0 -7
  495. package/esm5/lib/services/loading/loading.service.js +0 -109
  496. package/esm5/lib/services/locations/location.service.js +0 -86
  497. package/esm5/lib/services/manage-session/manage-session.services.js +0 -111
  498. package/esm5/lib/services/public-api.js +0 -25
  499. package/esm5/lib/services/role-guard/role.guard.js +0 -81
  500. package/esm5/lib/services/role-guard/role.service.js +0 -45
  501. package/esm5/lib/services/session-storage/session-storage.service.js +0 -96
  502. package/esm5/lib/services/timeout-notifications/timeout-notifications.service.js +0 -190
  503. package/esm5/lib/window.js +0 -13
  504. package/esm5/public-api.js +0 -16
  505. package/fesm2015/hmcts-rpx-xui-common-lib.js +0 -7973
  506. package/fesm2015/hmcts-rpx-xui-common-lib.js.map +0 -1
  507. package/fesm5/hmcts-rpx-xui-common-lib.js +0 -9423
  508. package/fesm5/hmcts-rpx-xui-common-lib.js.map +0 -1
  509. package/hmcts-rpx-xui-common-lib.d.ts +0 -67
  510. package/hmcts-rpx-xui-common-lib.metadata.json +0 -1
  511. package/lib/gov-ui/models/banner-data-model.d.ts +0 -4
  512. package/lib/gov-ui/models/isession-storage.interface.d.ts +0 -4
  513. package/lib/gov-ui/util/session-storage/session-storage-utils.d.ts +0 -6
@@ -0,0 +1,234 @@
1
+ import { ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { FormControl, FormGroup } from '@angular/forms';
3
+ import { zip } from 'rxjs';
4
+ import { of } from 'rxjs/internal/observable/of';
5
+ import { catchError, debounceTime, filter, map, switchMap, tap } from 'rxjs/operators';
6
+ import { PersonRole } from '../../models';
7
+ import { FindAPersonService } from '../../services/find-person/find-person.service';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "../../services/find-person/find-person.service";
10
+ import * as i2 from "@angular/common";
11
+ import * as i3 from "@angular/forms";
12
+ import * as i4 from "@angular/material/legacy-autocomplete";
13
+ import * as i5 from "@angular/material/legacy-core";
14
+ import * as i6 from "rpx-xui-translation";
15
+ const _c0 = a0 => ({ "form-group-error": a0 });
16
+ const _c1 = (a0, a1) => ({ "hide-autocomplete": a0, "select-option": a1 });
17
+ const _c2 = a0 => ({ "select-option": a0 });
18
+ function FindPersonComponent_h1_0_Template(rf, ctx) { if (rf & 1) {
19
+ i0.ɵɵelementStart(0, "h1", 10)(1, "span", 11);
20
+ i0.ɵɵtext(2);
21
+ i0.ɵɵpipe(3, "rpxTranslate");
22
+ i0.ɵɵelementEnd();
23
+ i0.ɵɵtext(4);
24
+ i0.ɵɵpipe(5, "rpxTranslate");
25
+ i0.ɵɵelementEnd();
26
+ } if (rf & 2) {
27
+ const ctx_r1 = i0.ɵɵnextContext();
28
+ i0.ɵɵadvance(2);
29
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 2, ctx_r1.title));
30
+ i0.ɵɵadvance(2);
31
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(5, 4, ctx_r1.boldTitle), "\n");
32
+ } }
33
+ function FindPersonComponent_div_3_Template(rf, ctx) { if (rf & 1) {
34
+ i0.ɵɵelementStart(0, "div", 12);
35
+ i0.ɵɵtext(1);
36
+ i0.ɵɵpipe(2, "rpxTranslate");
37
+ i0.ɵɵelementEnd();
38
+ } if (rf & 2) {
39
+ const ctx_r1 = i0.ɵɵnextContext();
40
+ i0.ɵɵadvance();
41
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, ctx_r1.subTitle), " ");
42
+ } }
43
+ function FindPersonComponent_span_4_Template(rf, ctx) { if (rf & 1) {
44
+ i0.ɵɵelementStart(0, "span", 13)(1, "span", 14);
45
+ i0.ɵɵtext(2);
46
+ i0.ɵɵpipe(3, "rpxTranslate");
47
+ i0.ɵɵelementEnd();
48
+ i0.ɵɵtext(4);
49
+ i0.ɵɵelementEnd();
50
+ } if (rf & 2) {
51
+ const ctx_r1 = i0.ɵɵnextContext();
52
+ i0.ɵɵadvance(2);
53
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 2, "Error:"));
54
+ i0.ɵɵadvance(2);
55
+ i0.ɵɵtextInterpolate1("", ctx_r1.findPersonGroup.errors.error ? ctx_r1.findPersonGroup.errors.error : ctx_r1.errorMessage, " ");
56
+ } }
57
+ function FindPersonComponent_mat_option_8_Template(rf, ctx) { if (rf & 1) {
58
+ i0.ɵɵelementStart(0, "mat-option", 15);
59
+ i0.ɵɵtext(1);
60
+ i0.ɵɵpipe(2, "rpxTranslate");
61
+ i0.ɵɵelementEnd();
62
+ } if (rf & 2) {
63
+ const option_r3 = ctx.$implicit;
64
+ const ctx_r1 = i0.ɵɵnextContext();
65
+ i0.ɵɵproperty("value", option_r3)("ngClass", i0.ɵɵpureFunction2(5, _c1, !ctx_r1.showAutocomplete, ctx_r1.showUpdatedColor));
66
+ i0.ɵɵadvance();
67
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 3, ctx_r1.getDisplayName(option_r3)), " ");
68
+ } }
69
+ function FindPersonComponent_mat_option_9_Template(rf, ctx) { if (rf & 1) {
70
+ i0.ɵɵelementStart(0, "mat-option", 16);
71
+ i0.ɵɵtext(1);
72
+ i0.ɵɵpipe(2, "rpxTranslate");
73
+ i0.ɵɵelementEnd();
74
+ } if (rf & 2) {
75
+ const ctx_r1 = i0.ɵɵnextContext();
76
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(4, _c2, ctx_r1.showUpdatedColor));
77
+ i0.ɵɵadvance();
78
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 2, "No results found"));
79
+ } }
80
+ export class FindPersonComponent {
81
+ constructor(findPersonService, cd) {
82
+ this.findPersonService = findPersonService;
83
+ this.cd = cd;
84
+ this.personSelected = new EventEmitter();
85
+ this.personFieldChanged = new EventEmitter();
86
+ this.boldTitle = 'Find the person';
87
+ this.subTitle = 'Type the name of the person and select them.';
88
+ this.domain = PersonRole.ALL;
89
+ this.findPersonGroup = new FormGroup({});
90
+ this.submitted = true;
91
+ this.userIncluded = false;
92
+ this.placeholderContent = '';
93
+ this.isNoResultsShown = true;
94
+ this.showUpdatedColor = false;
95
+ this.selectedPersons = [];
96
+ this.errorMessage = 'You must select a name';
97
+ this.idValue = '';
98
+ this.services = 'IA';
99
+ this.disabled = null;
100
+ this.showAutocomplete = false;
101
+ this.filteredOptions = [];
102
+ this.minSearchCharacters = 2;
103
+ }
104
+ ngOnDestroy() {
105
+ if (this.sub) {
106
+ this.sub.unsubscribe();
107
+ }
108
+ }
109
+ ngOnInit() {
110
+ this.findPersonControl = new FormControl(this.selectedPerson);
111
+ this.findPersonGroup.addControl('findPersonControl', this.findPersonControl);
112
+ this.sub = this.findPersonControl.valueChanges.pipe(tap(() => this.showAutocomplete = false), tap(() => this.filteredOptions = []), debounceTime(300), tap((searchTerm) => typeof searchTerm === 'string' ? this.personSelected.emit(null) : void 0), filter((searchTerm) => searchTerm && searchTerm.length > this.minSearchCharacters), switchMap((searchTerm) => this.filter(searchTerm).pipe(tap(() => this.showAutocomplete = true), catchError(() => this.filteredOptions = [])))).subscribe((people) => {
113
+ this.filteredOptions = people;
114
+ this.cd.detectChanges();
115
+ });
116
+ }
117
+ filter(searchTerm) {
118
+ const findJudicialOrCTSCPeople = this.findPersonService.find({ searchTerm, userRole: this.domain, services: [this.services], userIncluded: this.userIncluded, assignedUser: this.assignedUser });
119
+ const findCaseworkersOrAdminsOrCtsc = this.findPersonService.findCaseworkers({ searchTerm, userRole: this.domain, services: [this.services], userIncluded: this.userIncluded, assignedUser: this.assignedUser });
120
+ if (searchTerm && searchTerm.length > this.minSearchCharacters) {
121
+ switch (this.domain) {
122
+ case PersonRole.JUDICIAL: {
123
+ return findJudicialOrCTSCPeople.pipe(map(persons => {
124
+ const ids = this.selectedPersons.map(({ id }) => id);
125
+ return persons.filter(({ id }) => !ids.includes(id));
126
+ }));
127
+ }
128
+ case PersonRole.ALL: {
129
+ return zip(findJudicialOrCTSCPeople, findCaseworkersOrAdminsOrCtsc).pipe(map(separatePeople => separatePeople[0].concat(separatePeople[1])));
130
+ }
131
+ case PersonRole.CTSC:
132
+ case PersonRole.CASEWORKER:
133
+ case PersonRole.ADMIN: {
134
+ return findCaseworkersOrAdminsOrCtsc;
135
+ }
136
+ default: {
137
+ return of([]);
138
+ }
139
+ }
140
+ }
141
+ return of([]);
142
+ }
143
+ onSelectionChange(selectedPerson) {
144
+ this.personSelected.emit(selectedPerson);
145
+ this.findPersonControl.setValue(this.getDisplayName(selectedPerson), { emitEvent: false, onlySelf: true });
146
+ }
147
+ getDisplayName(selectedPerson) {
148
+ if (!selectedPerson) {
149
+ return '';
150
+ }
151
+ if (selectedPerson.domain === PersonRole.JUDICIAL && selectedPerson.fullName) {
152
+ return `${selectedPerson.fullName} (${selectedPerson.email})`;
153
+ }
154
+ return selectedPerson.email ? `${selectedPerson.name} (${selectedPerson.email})` : selectedPerson.name;
155
+ }
156
+ onInput() {
157
+ this.personFieldChanged.emit();
158
+ }
159
+ static { this.ɵfac = function FindPersonComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || FindPersonComponent)(i0.ɵɵdirectiveInject(i1.FindAPersonService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); }; }
160
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FindPersonComponent, selectors: [["xuilib-find-person"]], inputs: { title: "title", boldTitle: "boldTitle", subTitle: "subTitle", domain: "domain", findPersonGroup: "findPersonGroup", selectedPerson: "selectedPerson", submitted: "submitted", userIncluded: "userIncluded", assignedUser: "assignedUser", placeholderContent: "placeholderContent", isNoResultsShown: "isNoResultsShown", showUpdatedColor: "showUpdatedColor", selectedPersons: "selectedPersons", errorMessage: "errorMessage", idValue: "idValue", services: "services", disabled: "disabled" }, outputs: { personSelected: "personSelected", personFieldChanged: "personFieldChanged" }, decls: 10, vars: 14, consts: [["auto", "matAutocomplete"], ["class", "govuk-heading-l", 4, "ngIf"], [1, "govuk-form-group", 3, "formGroup", "ngClass"], ["aria-describedby", "sub-title-hint", 1, "govuk-fieldset"], ["id", "sub-title-hint", "class", "govuk-hint", 4, "ngIf"], ["id", "validation-error", "class", "govuk-error-message", 4, "ngIf"], ["type", "text", "aria-label", "select a person", "formControlName", "findPersonControl", 1, "govuk-input", "govuk-!-width-one-third", 3, "input", "id", "matAutocomplete", "placeholder"], ["autoActiveFirstOption", "", 3, "optionSelected"], [3, "value", "ngClass", 4, "ngFor", "ngForOf"], [3, "ngClass", 4, "ngIf"], [1, "govuk-heading-l"], [1, "govuk-caption-l"], ["id", "sub-title-hint", 1, "govuk-hint"], ["id", "validation-error", 1, "govuk-error-message"], [1, "govuk-visually-hidden"], [3, "value", "ngClass"], [3, "ngClass"]], template: function FindPersonComponent_Template(rf, ctx) { if (rf & 1) {
161
+ const _r1 = i0.ɵɵgetCurrentView();
162
+ i0.ɵɵtemplate(0, FindPersonComponent_h1_0_Template, 6, 6, "h1", 1);
163
+ i0.ɵɵelementStart(1, "div", 2)(2, "fieldset", 3);
164
+ i0.ɵɵtemplate(3, FindPersonComponent_div_3_Template, 3, 3, "div", 4)(4, FindPersonComponent_span_4_Template, 5, 4, "span", 5);
165
+ i0.ɵɵelementStart(5, "input", 6);
166
+ i0.ɵɵlistener("input", function FindPersonComponent_Template_input_input_5_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onInput()); });
167
+ i0.ɵɵelementEnd();
168
+ i0.ɵɵelementStart(6, "mat-autocomplete", 7, 0);
169
+ i0.ɵɵlistener("optionSelected", function FindPersonComponent_Template_mat_autocomplete_optionSelected_6_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onSelectionChange($event.option.value)); });
170
+ i0.ɵɵtemplate(8, FindPersonComponent_mat_option_8_Template, 3, 8, "mat-option", 8)(9, FindPersonComponent_mat_option_9_Template, 3, 6, "mat-option", 9);
171
+ i0.ɵɵelementEnd()()();
172
+ } if (rf & 2) {
173
+ const auto_r4 = i0.ɵɵreference(7);
174
+ i0.ɵɵproperty("ngIf", ctx.title && ctx.title.length);
175
+ i0.ɵɵadvance();
176
+ i0.ɵɵproperty("formGroup", ctx.findPersonGroup)("ngClass", i0.ɵɵpureFunction1(12, _c0, ctx.findPersonGroup.get("findPersonControl").invalid && ctx.submitted));
177
+ i0.ɵɵadvance(2);
178
+ i0.ɵɵproperty("ngIf", ctx.subTitle && ctx.subTitle.length);
179
+ i0.ɵɵadvance();
180
+ i0.ɵɵproperty("ngIf", ctx.findPersonGroup && ctx.findPersonGroup.errors);
181
+ i0.ɵɵadvance();
182
+ i0.ɵɵpropertyInterpolate1("id", "inputSelectPerson", ctx.idValue, "");
183
+ i0.ɵɵproperty("matAutocomplete", auto_r4)("placeholder", ctx.placeholderContent);
184
+ i0.ɵɵattribute("disabled", ctx.disabled);
185
+ i0.ɵɵadvance(3);
186
+ i0.ɵɵproperty("ngForOf", ctx.filteredOptions);
187
+ i0.ɵɵadvance();
188
+ i0.ɵɵproperty("ngIf", ctx.isNoResultsShown && !ctx.filteredOptions.length && ctx.showAutocomplete);
189
+ } }, dependencies: [i2.NgClass, i2.NgForOf, i2.NgIf, i3.DefaultValueAccessor, i3.NgControlStatus, i3.NgControlStatusGroup, i3.FormGroupDirective, i3.FormControlName, i4.MatLegacyAutocomplete, i4.MatLegacyAutocompleteTrigger, i5.MatLegacyOption, i6.RpxTranslatePipe], styles: [".mat-option[_ngcontent-%COMP%]:hover{background:#2596be}.mat-option.select-option[_ngcontent-%COMP%]:hover{background:#1d70b8;color:#fff}.hide-autocomplete[_ngcontent-%COMP%]{display:none}"] }); }
190
+ }
191
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FindPersonComponent, [{
192
+ type: Component,
193
+ args: [{ selector: 'xuilib-find-person', template: "<h1 class=\"govuk-heading-l\" *ngIf=\"title && title.length\">\n <span class=\"govuk-caption-l\">{{title | rpxTranslate}}</span>\n {{boldTitle | rpxTranslate}}\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 | rpxTranslate}}\n </div>\n <span id=\"validation-error\" class=\"govuk-error-message\" *ngIf=\"findPersonGroup && findPersonGroup.errors\">\n <span class=\"govuk-visually-hidden\">{{'Error:' | rpxTranslate}}</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) | rpxTranslate}}\n </mat-option>\n <mat-option [ngClass]=\"{'select-option': showUpdatedColor}\" *ngIf=\"isNoResultsShown && !filteredOptions.length && showAutocomplete\">{{'No results found' | rpxTranslate}}</mat-option>\n </mat-autocomplete>\n </fieldset>\n</div>\n", styles: [".mat-option:hover{background:#2596be}.mat-option.select-option:hover{background:#1d70b8;color:#fff}.hide-autocomplete{display:none}\n"] }]
194
+ }], () => [{ type: i1.FindAPersonService }, { type: i0.ChangeDetectorRef }], { personSelected: [{
195
+ type: Output
196
+ }], personFieldChanged: [{
197
+ type: Output
198
+ }], title: [{
199
+ type: Input
200
+ }], boldTitle: [{
201
+ type: Input
202
+ }], subTitle: [{
203
+ type: Input
204
+ }], domain: [{
205
+ type: Input
206
+ }], findPersonGroup: [{
207
+ type: Input
208
+ }], selectedPerson: [{
209
+ type: Input
210
+ }], submitted: [{
211
+ type: Input
212
+ }], userIncluded: [{
213
+ type: Input
214
+ }], assignedUser: [{
215
+ type: Input
216
+ }], placeholderContent: [{
217
+ type: Input
218
+ }], isNoResultsShown: [{
219
+ type: Input
220
+ }], showUpdatedColor: [{
221
+ type: Input
222
+ }], selectedPersons: [{
223
+ type: Input
224
+ }], errorMessage: [{
225
+ type: Input
226
+ }], idValue: [{
227
+ type: Input
228
+ }], services: [{
229
+ type: Input
230
+ }], disabled: [{
231
+ type: Input
232
+ }] }); })();
233
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FindPersonComponent, { className: "FindPersonComponent", filePath: "lib/components/find-person/find-person.component.ts", lineNumber: 15 }); })();
234
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1wZXJzb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh1aS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9maW5kLXBlcnNvbi9maW5kLXBlcnNvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2ZpbmQtcGVyc29uL2ZpbmQtcGVyc29uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUE0QixHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZGLE9BQU8sRUFBVSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7Ozs7Ozs7Ozs7OztJQ0xsRixBQURGLDhCQUEwRCxlQUMxQjtJQUFBLFlBQXdCOztJQUFBLGlCQUFPO0lBQzdELFlBQ0Y7O0lBQUEsaUJBQUs7OztJQUYyQixlQUF3QjtJQUF4Qix3REFBd0I7SUFDdEQsZUFDRjtJQURFLHdFQUNGOzs7SUFJSSwrQkFBZ0Y7SUFDOUUsWUFDRjs7SUFBQSxpQkFBTTs7O0lBREosY0FDRjtJQURFLHNFQUNGOzs7SUFFSSxB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S1ksY0FBcUU7WUFBckUsa0dBQXFFOzs7aUZEWjNILG1CQUFtQjtjQU4vQixTQUFTOzJCQUNFLG9CQUFvQjttRkFNYixjQUFjO2tCQUE5QixNQUFNO1lBQ1Usa0JBQWtCO2tCQUFsQyxNQUFNO1lBQ1MsS0FBSztrQkFBcEIsS0FBSztZQUNVLFNBQVM7a0JBQXhCLEtBQUs7WUFDVSxRQUFRO2tCQUF2QixLQUFLO1lBQ1UsTUFBTTtrQkFBckIsS0FBSztZQUNVLGVBQWU7a0JBQTlCLEtBQUs7WUFDVSxjQUFjO2tCQUE3QixLQUFLO1lBQ1UsU0FBUztrQkFBeEIsS0FBSztZQUNVLFlBQVk7a0JBQTNCLEtBQUs7WUFDVSxZQUFZO2tCQUEzQixLQUFLO1lBQ1Usa0JBQWtCO2tCQUFqQyxLQUFLO1lBQ1UsZ0JBQWdCO2tCQUEvQixLQUFLO1lBQ1UsZ0JBQWdCO2tCQUEvQixLQUFLO1lBQ1UsZUFBZTtrQkFBOUIsS0FBSztZQUNVLFlBQVk7a0JBQTNCLEtBQUs7WUFDVSxPQUFPO2tCQUF0QixLQUFLO1lBQ1UsUUFBUTtrQkFBdkIsS0FBSztZQUNVLFFBQVE7a0JBQXZCLEtBQUs7O2tGQW5CSyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCB6aXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcy9pbnRlcm5hbC9vYnNlcnZhYmxlL29mJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGRlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUGVyc29uLCBQZXJzb25Sb2xlIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IEZpbmRBUGVyc29uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZpbmQtcGVyc29uL2ZpbmQtcGVyc29uLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd4dWlsaWItZmluZC1wZXJzb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZmluZC1wZXJzb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maW5kLXBlcnNvbi5jb21wb25lbnQuc2NzcyddLFxufSlcblxuZXhwb3J0IGNsYXNzIEZpbmRQZXJzb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBPdXRwdXQoKSBwdWJsaWMgcGVyc29uU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFBlcnNvbj4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBwZXJzb25GaWVsZENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBJbnB1dCgpIHB1YmxpYyB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgYm9sZFRpdGxlID0gJ0ZpbmQgdGhlIHBlcnNvbic7XG4gIEBJbnB1dCgpIHB1YmxpYyBzdWJUaXRsZSA9ICdUeXBlIHRoZSBuYW1lIG9mIHRoZSBwZXJzb24gYW5kIHNlbGVjdCB0aGVtLic7XG4gIEBJbnB1dCgpIHB1YmxpYyBkb21haW4gPSBQZXJzb25Sb2xlLkFMTDtcbiAgQElucHV0KCkgcHVibGljIGZpbmRQZXJzb25Hcm91cDogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gIEBJbnB1dCgpIHB1YmxpYyBzZWxlY3RlZFBlcnNvbjogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgc3VibWl0dGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIHVzZXJJbmNsdWRlZD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGFzc2lnbmVkVXNlcj86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXJDb250ZW50OiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcHVibGljIGlzTm9SZXN1bHRzU2hvd246IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgc2hvd1VwZGF0ZWRDb2xvcjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0ZWRQZXJzb25zOiBQZXJzb25bXSA9IFtdO1xuICBASW5wdXQoKSBwdWJsaWMgZXJyb3JNZXNzYWdlOiBzdHJpbmcgPSAnWW91IG11c3Qgc2VsZWN0IGEgbmFtZSc7XG4gIEBJbnB1dCgpIHB1YmxpYyBpZFZhbHVlOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcHVibGljIHNlcnZpY2VzOiBzdHJpbmcgPSAnSUEnO1xuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQ6IGJvb2xlYW4gPSBudWxsO1xuICBwdWJsaWMgc2hvd0F1dG9jb21wbGV0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgZmluZFBlcnNvbkNvbnRyb2w6IEZvcm1Db250cm9sO1xuICBwdWJsaWMgZmlsdGVyZWRPcHRpb25zOiBQZXJzb25bXSA9IFtdO1xuICBwdWJsaWMgcmVhZG9ubHkgbWluU2VhcmNoQ2hhcmFjdGVycyA9IDI7XG4gIHByaXZhdGUgc3ViOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBmaW5kUGVyc29uU2VydmljZTogRmluZEFQZXJzb25TZXJ2aWNlLCBwcml2YXRlIHJlYWRvbmx5IGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLnN1Yikge1xuICAgICAgdGhpcy5zdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5maW5kUGVyc29uQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCh0aGlzLnNlbGVjdGVkUGVyc29uKTtcbiAgICB0aGlzLmZpbmRQZXJzb25Hcm91cC5hZGRDb250cm9sKCdmaW5kUGVyc29uQ29udHJvbCcsIHRoaXMuZmluZFBlcnNvbkNvbnRyb2wpO1xuICAgIHRoaXMuc3ViID0gdGhpcy5maW5kUGVyc29uQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgIHRhcCgoKSA9PiB0aGlzLnNob3dBdXRvY29tcGxldGUgPSBmYWxzZSksXG4gICAgICB0YXAoKCkgPT4gdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBbXSksXG4gICAgICBkZWJvdW5jZVRpbWUoMzAwKSxcbiAgICAgIHRhcCgoc2VhcmNoVGVybSkgPT4gdHlwZW9mIHNlYXJjaFRlcm0gPT09ICdzdHJpbmcnID8gdGhpcy5wZXJzb25TZWxlY3RlZC5lbWl0KG51bGwpIDogdm9pZCAwKSxcbiAgICAgIGZpbHRlcigoc2VhcmNoVGVybTogc3RyaW5nKSA9PiBzZWFyY2hUZXJtICYmIHNlYXJjaFRlcm0ubGVuZ3RoID4gdGhpcy5taW5TZWFyY2hDaGFyYWN0ZXJzKSxcbiAgICAgIHN3aXRjaE1hcCgoc2VhcmNoVGVybTogc3RyaW5nKSA9PiB0aGlzLmZpbHRlcihzZWFyY2hUZXJtKS5waXBlKFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5zaG93QXV0b2NvbXBsZXRlID0gdHJ1ZSksXG4gICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBbXSksXG4gICAgICApKVxuICAgICkuc3Vic2NyaWJlKChwZW9wbGU6IFBlcnNvbltdKSA9PiB7XG4gICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHBlb3BsZTtcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGZpbHRlcihzZWFyY2hUZXJtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFBlcnNvbltdPiB7XG4gICAgY29uc3QgZmluZEp1ZGljaWFsT3JDVFNDUGVvcGxlID0gdGhpcy5maW5kUGVyc29uU2VydmljZS5maW5kKHtzZWFyY2hUZXJtLCB1c2VyUm9sZTogdGhpcy5kb21haW4sIHNlcnZpY2VzOiBbdGhpcy5zZXJ2aWNlc10sIHVzZXJJbmNsdWRlZDogdGhpcy51c2VySW5jbHVkZWQsIGFzc2lnbmVkVXNlcjogdGhpcy5hc3NpZ25lZFVzZXJ9KTtcbiAgICBjb25zdCBmaW5kQ2FzZXdvcmtlcnNPckFkbWluc09yQ3RzYyA9IHRoaXMuZmluZFBlcnNvblNlcnZpY2UuZmluZENhc2V3b3JrZXJzKHtzZWFyY2hUZXJtLCB1c2VyUm9sZTogdGhpcy5kb21haW4sIHNlcnZpY2VzOiBbdGhpcy5zZXJ2aWNlc10sIHVzZXJJbmNsdWRlZDogdGhpcy51c2VySW5jbHVkZWQsIGFzc2lnbmVkVXNlcjogdGhpcy5hc3NpZ25lZFVzZXJ9KTtcbiAgICBpZiAoc2VhcmNoVGVybSAmJiBzZWFyY2hUZXJtLmxlbmd0aCA+IHRoaXMubWluU2VhcmNoQ2hhcmFjdGVycykge1xuICAgICAgc3dpdGNoICh0aGlzLmRvbWFpbikge1xuICAgICAgICBjYXNlIFBlcnNvblJvbGUuSlVESUNJQUw6IHtcbiAgICAgICAgICByZXR1cm4gZmluZEp1ZGljaWFsT3JDVFNDUGVvcGxlLnBpcGUobWFwKHBlcnNvbnMgPT4ge1xuICAgICAgICAgICAgY29uc3QgaWRzOiBzdHJpbmdbXSA9IHRoaXMuc2VsZWN0ZWRQZXJzb25zLm1hcCgoe2lkfSkgPT4gaWQpO1xuICAgICAgICAgICAgcmV0dXJuIHBlcnNvbnMuZmlsdGVyKCh7IGlkIH0pID0+ICFpZHMuaW5jbHVkZXMoaWQpKTtcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBQZXJzb25Sb2xlLkFMTDoge1xuICAgICAgICAgIHJldHVybiB6aXAoZmluZEp1ZGljaWFsT3JDVFNDUGVvcGxlLCBmaW5kQ2FzZXdvcmtlcnNPckFkbWluc09yQ3RzYykucGlwZShtYXAoc2VwYXJhdGVQZW9wbGUgPT4gc2VwYXJhdGVQZW9wbGVbMF0uY29uY2F0KHNlcGFyYXRlUGVvcGxlWzFdKSkpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgUGVyc29uUm9sZS5DVFNDOlxuICAgICAgICBjYXNlIFBlcnNvblJvbGUuQ0FTRVdPUktFUjpcbiAgICAgICAgY2FzZSBQZXJzb25Sb2xlLkFETUlOOiB7XG4gICAgICAgICAgcmV0dXJuIGZpbmRDYXNld29ya2Vyc09yQWRtaW5zT3JDdHNjO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvZihbXSk7XG4gIH1cblxuICBwdWJsaWMgb25TZWxlY3Rpb25DaGFuZ2Uoc2VsZWN0ZWRQZXJzb246IFBlcnNvbik6IHZvaWQge1xuICAgIHRoaXMucGVyc29uU2VsZWN0ZWQuZW1pdChzZWxlY3RlZFBlcnNvbik7XG4gICAgdGhpcy5maW5kUGVyc29uQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmdldERpc3BsYXlOYW1lKHNlbGVjdGVkUGVyc29uKSwge2VtaXRFdmVudDogZmFsc2UsIG9ubHlTZWxmOiB0cnVlfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGlzcGxheU5hbWUoc2VsZWN0ZWRQZXJzb246IFBlcnNvbik6IHN0cmluZyB7XG4gICAgaWYgKCFzZWxlY3RlZFBlcnNvbikge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBpZiAoc2VsZWN0ZWRQZXJzb24uZG9tYWluID09PSBQZXJzb25Sb2xlLkpVRElDSUFMICYmIHNlbGVjdGVkUGVyc29uLmZ1bGxOYW1lKSB7XG4gICAgICByZXR1cm4gYCR7c2VsZWN0ZWRQZXJzb24uZnVsbE5hbWV9ICgke3NlbGVjdGVkUGVyc29uLmVtYWlsfSlgO1xuICAgIH1cbiAgICByZXR1cm4gc2VsZWN0ZWRQZXJzb24uZW1haWwgPyBgJHtzZWxlY3RlZFBlcnNvbi5uYW1lfSAoJHtzZWxlY3RlZFBlcnNvbi5lbWFpbH0pYCA6IHNlbGVjdGVkUGVyc29uLm5hbWU7XG4gIH1cblxuICBwdWJsaWMgb25JbnB1dCgpOiB2b2lkIHtcbiAgICB0aGlzLnBlcnNvbkZpZWxkQ2hhbmdlZC5lbWl0KCk7XG4gIH1cbn1cbiIsIjxoMSBjbGFzcz1cImdvdnVrLWhlYWRpbmctbFwiICpuZ0lmPVwidGl0bGUgJiYgdGl0bGUubGVuZ3RoXCI+XG4gIDxzcGFuIGNsYXNzPVwiZ292dWstY2FwdGlvbi1sXCI+e3t0aXRsZSB8IHJweFRyYW5zbGF0ZX19PC9zcGFuPlxuICB7e2JvbGRUaXRsZSB8IHJweFRyYW5zbGF0ZX19XG48L2gxPlxuPGRpdiBjbGFzcz1cImdvdnVrLWZvcm0tZ3JvdXBcIiBbZm9ybUdyb3VwXT1cImZpbmRQZXJzb25Hcm91cFwiXG4gICAgIFtuZ0NsYXNzXT1cInsnZm9ybS1ncm91cC1lcnJvcic6IGZpbmRQZXJzb25Hcm91cC5nZXQoJ2ZpbmRQZXJzb25Db250cm9sJykuaW52YWxpZCAmJiBzdWJtaXR0ZWR9XCI+XG4gIDxmaWVsZHNldCBjbGFzcz1cImdvdnVrLWZpZWxkc2V0XCIgYXJpYS1kZXNjcmliZWRieT1cInN1Yi10aXRsZS1oaW50XCI+XG4gICAgPGRpdiBpZD1cInN1Yi10aXRsZS1oaW50XCIgY2xhc3M9XCJnb3Z1ay1oaW50XCIgKm5nSWY9XCJzdWJUaXRsZSAmJiBzdWJUaXRsZS5sZW5ndGhcIj5cbiAgICAgIHt7c3ViVGl0bGUgfCBycHhUcmFuc2xhdGV9fVxuICAgIDwvZGl2PlxuICAgIDxzcGFuIGlkPVwidmFsaWRhdGlvbi1lcnJvclwiIGNsYXNzPVwiZ292dWstZXJyb3ItbWVzc2FnZVwiICpuZ0lmPVwiZmluZFBlcnNvbkdyb3VwICYmIGZpbmRQZXJzb25Hcm91cC5lcnJvcnNcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJnb3Z1ay12aXN1YWxseS1oaWRkZW5cIj57eydFcnJvcjonIHwgcnB4VHJhbnNsYXRlfX08L3NwYW4+e3tmaW5kUGVyc29uR3JvdXAuZXJyb3JzLmVycm9yID8gZmluZFBlcnNvbkdyb3VwLmVycm9ycy5lcnJvciA6IGVycm9yTWVzc2FnZX19XG4gICAgPC9zcGFuPlxuICAgIDxpbnB1dCBpZD1cImlucHV0U2VsZWN0UGVyc29ue3tpZFZhbHVlfX1cIiB0eXBlPVwidGV4dFwiIGFyaWEtbGFiZWw9XCJzZWxlY3QgYSBwZXJzb25cIlxuICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJmaW5kUGVyc29uQ29udHJvbFwiXG4gICAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXG4gICAgICAgICAgIGNsYXNzPVwiZ292dWstaW5wdXQgZ292dWstIS13aWR0aC1vbmUtdGhpcmRcIlxuICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJDb250ZW50XCJcbiAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAoaW5wdXQpPVwib25JbnB1dCgpXCI+XG4gICAgPG1hdC1hdXRvY29tcGxldGUgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCIgKG9wdGlvblNlbGVjdGVkKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKCRldmVudC5vcHRpb24udmFsdWUpXCI+XG4gICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGZpbHRlcmVkT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnaGlkZS1hdXRvY29tcGxldGUnOiAhc2hvd0F1dG9jb21wbGV0ZSwgJ3NlbGVjdC1vcHRpb24nOiBzaG93VXBkYXRlZENvbG9yfVwiPlxuICAgICAgICB7e2dldERpc3BsYXlOYW1lKG9wdGlvbikgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgPG1hdC1vcHRpb24gW25nQ2xhc3NdPVwieydzZWxlY3Qtb3B0aW9uJzogc2hvd1VwZGF0ZWRDb2xvcn1cIiAqbmdJZj1cImlzTm9SZXN1bHRzU2hvd24gJiYgIWZpbHRlcmVkT3B0aW9ucy5sZW5ndGggJiYgc2hvd0F1dG9jb21wbGV0ZVwiPnt7J05vIHJlc3VsdHMgZm91bmQnIHwgcnB4VHJhbnNsYXRlfX08L21hdC1vcHRpb24+XG4gICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxuICA8L2ZpZWxkc2V0PlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,193 @@
1
+ import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
+ import { FormControl, FormGroup } from '@angular/forms';
3
+ import { Subject } from 'rxjs';
4
+ import { SearchServiceComponent } from '../search-service/search-service.component';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
7
+ import * as i2 from "../search-service/search-service.component";
8
+ import * as i3 from "rpx-xui-translation";
9
+ function FindServiceComponent_label_3_Template(rf, ctx) { if (rf & 1) {
10
+ i0.ɵɵelementStart(0, "label", 8);
11
+ i0.ɵɵtext(1);
12
+ i0.ɵɵpipe(2, "rpxTranslate");
13
+ i0.ɵɵelementEnd();
14
+ } if (rf & 2) {
15
+ const ctx_r0 = i0.ɵɵnextContext();
16
+ i0.ɵɵadvance();
17
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, ctx_r0.serviceTitle), " ");
18
+ } }
19
+ function FindServiceComponent_a_6_Template(rf, ctx) { if (rf & 1) {
20
+ const _r2 = i0.ɵɵgetCurrentView();
21
+ i0.ɵɵelementStart(0, "a", 9);
22
+ i0.ɵɵlistener("click", function FindServiceComponent_a_6_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.addOption(ctx_r0.tempSelectedService)); });
23
+ i0.ɵɵtext(1);
24
+ i0.ɵɵpipe(2, "rpxTranslate");
25
+ i0.ɵɵelementStart(3, "span", 10);
26
+ i0.ɵɵtext(4);
27
+ i0.ɵɵpipe(5, "rpxTranslate");
28
+ i0.ɵɵelementEnd()();
29
+ } if (rf & 2) {
30
+ i0.ɵɵadvance();
31
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, "Add"), " ");
32
+ i0.ɵɵadvance(3);
33
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(5, 4, "service"));
34
+ } }
35
+ function FindServiceComponent_ul_7_li_1_Template(rf, ctx) { if (rf & 1) {
36
+ const _r3 = i0.ɵɵgetCurrentView();
37
+ i0.ɵɵelementStart(0, "li", 13)(1, "a", 14);
38
+ i0.ɵɵlistener("click", function FindServiceComponent_ul_7_li_1_Template_a_click_1_listener() { const selection_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.removeOption(selection_r4)); });
39
+ i0.ɵɵtext(2);
40
+ i0.ɵɵpipe(3, "rpxTranslate");
41
+ i0.ɵɵelementEnd()();
42
+ } if (rf & 2) {
43
+ const selection_r4 = ctx.$implicit;
44
+ i0.ɵɵadvance(2);
45
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 1, selection_r4.label), " ");
46
+ } }
47
+ function FindServiceComponent_ul_7_Template(rf, ctx) { if (rf & 1) {
48
+ i0.ɵɵelementStart(0, "ul", 11);
49
+ i0.ɵɵtemplate(1, FindServiceComponent_ul_7_li_1_Template, 4, 3, "li", 12);
50
+ i0.ɵɵelementEnd();
51
+ } if (rf & 2) {
52
+ const ctx_r0 = i0.ɵɵnextContext();
53
+ i0.ɵɵadvance();
54
+ i0.ɵɵproperty("ngForOf", ctx_r0.selectedServices);
55
+ } }
56
+ export class FindServiceComponent {
57
+ constructor() {
58
+ this.disabled = false;
59
+ this.serviceFieldChanged = new EventEmitter();
60
+ this.isSelectedAll = false;
61
+ this.tempSelectedService = null;
62
+ }
63
+ get selectedServices() {
64
+ const selectAllValue = this.field.options.find(item => item.selectAll);
65
+ return this.isSelectedAll ? [selectAllValue] : this.form.get(this.field.name)?.value;
66
+ }
67
+ ngOnInit() {
68
+ this.sortOptionsAlphabetically();
69
+ // Patch Default Option
70
+ if (this.field.defaultOption) {
71
+ this.addOption(this.field.defaultOption);
72
+ }
73
+ if (this.formSubmissionEvent$) {
74
+ this.formSubmissionEventSubscription = this.formSubmissionEvent$.subscribe(() => {
75
+ const oneSelectedAndMaxSelectedOne = this.selectedServices.length === 1 && this.field.maxSelected === 1;
76
+ if (!oneSelectedAndMaxSelectedOne) {
77
+ this.searchServiceComponent.resetSearchTerm();
78
+ }
79
+ });
80
+ }
81
+ }
82
+ addOption(option) {
83
+ if (option) {
84
+ if (option.selectAll) {
85
+ this.isSelectedAll = true;
86
+ this.removeAllSelectedValues();
87
+ this.field.options.forEach(item => {
88
+ if (!item.selectAll) {
89
+ this.addSelectedServiceToForm(item);
90
+ }
91
+ });
92
+ }
93
+ else {
94
+ if (this.isSelectedAll) {
95
+ this.removeAllSelectedValues();
96
+ this.isSelectedAll = false;
97
+ }
98
+ this.addSelectedServiceToForm(option);
99
+ }
100
+ this.tempSelectedService = null;
101
+ this.serviceFieldChanged.emit();
102
+ this.searchServiceComponent.resetSearchTerm();
103
+ }
104
+ }
105
+ removeOption(service) {
106
+ if (service.selectAll) {
107
+ this.removeAllSelectedValues();
108
+ this.isSelectedAll = false;
109
+ }
110
+ else if (service.key) {
111
+ const formArray = this.form.get(this.field.name);
112
+ const index = (formArray.value).findIndex((selectedService) => selectedService.key.toLowerCase() === service.key.toLowerCase());
113
+ if (index > -1) {
114
+ formArray.removeAt(index);
115
+ }
116
+ this.serviceFieldChanged.emit();
117
+ }
118
+ }
119
+ onOptionSelected(option) {
120
+ if (!this.field.enableAddButton && this.field.maxSelected === 1) {
121
+ this.removeAllSelectedValues();
122
+ this.addSelectedServiceToForm(option);
123
+ this.serviceFieldChanged.emit();
124
+ }
125
+ else {
126
+ this.tempSelectedService = option;
127
+ }
128
+ }
129
+ removeAllSelectedValues() {
130
+ const formArray = this.form.get(this.field.name);
131
+ formArray.clear();
132
+ }
133
+ addSelectedServiceToForm(service) {
134
+ const formArray = this.form.get(this.field.name);
135
+ formArray.push(new FormControl(service));
136
+ }
137
+ sortOptionsAlphabetically() {
138
+ return this.field.options.sort((a, b) => {
139
+ return a.label.toLowerCase() > b.label.toLowerCase() ? 1 : (b.label.toLowerCase() > a.label.toLowerCase() ? -1 : 0);
140
+ });
141
+ }
142
+ ngOnDestroy() {
143
+ this.formSubmissionEventSubscription?.unsubscribe();
144
+ }
145
+ static { this.ɵfac = function FindServiceComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || FindServiceComponent)(); }; }
146
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FindServiceComponent, selectors: [["xuilib-find-service"]], viewQuery: function FindServiceComponent_Query(rf, ctx) { if (rf & 1) {
147
+ i0.ɵɵviewQuery(SearchServiceComponent, 7);
148
+ } if (rf & 2) {
149
+ let _t;
150
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.searchServiceComponent = _t.first);
151
+ } }, inputs: { field: "field", serviceTitle: "serviceTitle", form: "form", disabled: "disabled", formSubmissionEvent$: "formSubmissionEvent$" }, outputs: { serviceFieldChanged: "serviceFieldChanged" }, decls: 8, vars: 6, consts: [[1, "service-picker-custom"], [1, "search-service"], [1, "govuk-body"], ["id", "selectServiceSearch-label", "for", "serviceSearch__select", 4, "ngIf"], [1, "search-service__input-container"], [1, "search-service__input", 3, "optionChanged", "options", "selectedOptions", "disabled"], ["href", "javascript:void(0)", "class", "govuk-button govuk-button--secondary govuk-!-margin-bottom-0", "data-module", "govuk-button", "id", "add-service", 3, "click", 4, "ngIf"], ["class", "hmcts-filter-tags selection-container", 4, "ngIf"], ["id", "selectServiceSearch-label", "for", "serviceSearch__select"], ["href", "javascript:void(0)", "data-module", "govuk-button", "id", "add-service", 1, "govuk-button", "govuk-button--secondary", "govuk-!-margin-bottom-0", 3, "click"], [1, "govuk-visually-hidden"], [1, "hmcts-filter-tags", "selection-container"], ["class", "location-selection", 4, "ngFor", "ngForOf"], [1, "location-selection"], ["href", "javascript:void(0)", 1, "hmcts-filter__tag", 3, "click"]], template: function FindServiceComponent_Template(rf, ctx) { if (rf & 1) {
152
+ i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2);
153
+ i0.ɵɵtemplate(3, FindServiceComponent_label_3_Template, 3, 3, "label", 3);
154
+ i0.ɵɵelementEnd();
155
+ i0.ɵɵelementStart(4, "div", 4)(5, "exui-search-service", 5);
156
+ i0.ɵɵlistener("optionChanged", function FindServiceComponent_Template_exui_search_service_optionChanged_5_listener($event) { return ctx.onOptionSelected($event); });
157
+ i0.ɵɵelementEnd();
158
+ i0.ɵɵtemplate(6, FindServiceComponent_a_6_Template, 6, 6, "a", 6);
159
+ i0.ɵɵelementEnd()();
160
+ i0.ɵɵtemplate(7, FindServiceComponent_ul_7_Template, 2, 1, "ul", 7);
161
+ i0.ɵɵelementEnd();
162
+ } if (rf & 2) {
163
+ i0.ɵɵadvance(3);
164
+ i0.ɵɵproperty("ngIf", ctx.serviceTitle);
165
+ i0.ɵɵadvance(2);
166
+ i0.ɵɵproperty("options", ctx.field.options)("selectedOptions", ctx.selectedServices)("disabled", ctx.disabled);
167
+ i0.ɵɵadvance();
168
+ i0.ɵɵproperty("ngIf", ctx.field == null ? null : ctx.field.enableAddButton);
169
+ i0.ɵɵadvance();
170
+ i0.ɵɵproperty("ngIf", ctx.field.maxSelected != 1);
171
+ } }, dependencies: [i1.NgForOf, i1.NgIf, i2.SearchServiceComponent, i3.RpxTranslatePipe], styles: ["#add-service[_ngcontent-%COMP%]{background-color:#ddd}"] }); }
172
+ }
173
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FindServiceComponent, [{
174
+ type: Component,
175
+ args: [{ selector: 'xuilib-find-service', template: "<div class=\"service-picker-custom\">\n <div class=\"search-service\">\n <div class=\"govuk-body\">\n <label id=\"selectServiceSearch-label\" for=\"serviceSearch__select\" *ngIf=\"serviceTitle\">\n {{ serviceTitle | rpxTranslate}}\n </label>\n </div>\n <div class=\"search-service__input-container\">\n <exui-search-service class=\"search-service__input\"\n [options]=\"field.options\"\n [selectedOptions]=\"selectedServices\"\n [disabled]=\"disabled\"\n (optionChanged)=\"onOptionSelected($event)\">\n </exui-search-service>\n <a href=\"javascript:void(0)\" (click)=\"addOption(tempSelectedService)\"\n class=\"govuk-button govuk-button--secondary govuk-!-margin-bottom-0\" data-module=\"govuk-button\"\n *ngIf=\"field?.enableAddButton\" id=\"add-service\">\n {{ 'Add' | rpxTranslate}}\n <span class=\"govuk-visually-hidden\">{{'service' | rpxTranslate}}</span>\n </a>\n </div>\n </div>\n <ul class=\"hmcts-filter-tags selection-container\" *ngIf=\"field.maxSelected != 1\">\n <li class=\"location-selection\" *ngFor=\"let selection of selectedServices\">\n <a class=\"hmcts-filter__tag\" (click)=\"removeOption(selection)\" href=\"javascript:void(0)\">\n {{ selection.label | rpxTranslate }}\n </a>\n </li>\n </ul>\n</div>\n", styles: ["#add-service{background-color:#ddd}\n"] }]
176
+ }], null, { field: [{
177
+ type: Input
178
+ }], serviceTitle: [{
179
+ type: Input
180
+ }], form: [{
181
+ type: Input
182
+ }], disabled: [{
183
+ type: Input
184
+ }], formSubmissionEvent$: [{
185
+ type: Input
186
+ }], searchServiceComponent: [{
187
+ type: ViewChild,
188
+ args: [SearchServiceComponent, { static: true }]
189
+ }], serviceFieldChanged: [{
190
+ type: Output
191
+ }] }); })();
192
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FindServiceComponent, { className: "FindServiceComponent", filePath: "lib/components/find-service/find-service.component.ts", lineNumber: 12 }); })();
193
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1zZXJ2aWNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dWktY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvZmluZC1zZXJ2aWNlL2ZpbmQtc2VydmljZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2ZpbmQtc2VydmljZS9maW5kLXNlcnZpY2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFBYSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkUsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFFN0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7Ozs7OztJQ0Q5RSxnQ0FBdUY7SUFDckYsWUFDRjs7SUFBQSxpQkFBUTs7O0lBRE4sY0FDRjtJQURFLDBFQUNGOzs7O0lBU0EsNEJBRWtEO0lBRnJCLHlLQUFTLDRDQUE4QixLQUFDO0lBR25FLFlBQ0E7O0lBQUEsZ0NBQW9DO0lBQUEsWUFBNEI7O0lBQ2xFLEFBRGtFLGlCQUFPLEVBQ3JFOztJQUZGLGNBQ0E7SUFEQSw0REFDQTtJQUFvQyxlQUE0QjtJQUE1QixxREFBNEI7Ozs7SUFNbEUsQUFERiw4QkFBMEUsWUFDaUI7SUFBNUQsK01BQVMsaUNBQXVCLEtBQUM7SUFDNUQsWUFDRjs7SUFDRixBQURFLGlCQUFJLEVBQ0Q7OztJQUZELGVBQ0Y7SUFERSx5RUFDRjs7O0lBSkosOEJBQWlGO0lBQy9FLHlFQUEwRTtJQUs1RSxpQkFBSzs7O0lBTGtELGNBQW1CO0lBQW5CLGlEQUFtQjs7QURaNUUsTUFBTSxPQUFPLG9CQUFvQjtJQUxqQztRQVNrQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBR3pCLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbEQsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFHdkIsd0JBQW1CLEdBQXVCLElBQUksQ0FBQztLQTBGdkQ7SUF6RkMsSUFBVyxnQkFBZ0I7UUFDekIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZFLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUM7SUFDdkYsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztRQUVqQyx1QkFBdUI7UUFDdkIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsK0JBQStCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQzlFLE1BQU0sNEJBQTRCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEtBQUssQ0FBQyxDQUFDO2dCQUN4RyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztvQkFDbEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUNoRCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVNLFNBQVMsQ0FBQyxNQUEwQjtRQUN6QyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO2dCQUMxQixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO3dCQUNwQixJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3RDLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO29CQUMvQixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztnQkFDN0IsQ0FBQztnQkFDRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDeEMsQ0FBQztZQUVELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7WUFDaEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNoRCxDQUFDO0lBQ0gsQ0FBQztJQUVNLFlBQVksQ0FBQyxPQUEyQjtRQUM3QyxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUM3QixDQUFDO2FBQU0sSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDdkIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQWMsQ0FBQztZQUM5RCxNQUFNLEtBQUssR0FBRyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxlQUFtQyxFQUFFLEVBQUUsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxLQUFLLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUNwSixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNmLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUIsQ0FBQztZQUNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQyxDQUFDO0lBQ0gsQ0FBQztJQUVNLGdCQUFnQixDQUFDLE1BQTBCO1FBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNoRSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2xDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLG1CQUFtQixHQUFHLE1BQU0sQ0FBQztRQUNwQyxDQUFDO0lBQ0gsQ0FBQztJQUVPLHVCQUF1QjtRQUM3QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBYyxDQUFDO1FBQzlELFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRU8sd0JBQXdCLENBQUMsT0FBMkI7UUFDMUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQWMsQ0FBQztRQUM5RCxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVPLHlCQUF5QjtRQUMvQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN0QyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLCtCQUErQixFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ3RELENBQUM7cUhBcEdVLG9CQUFvQjtvRUFBcEIsb0JBQW9COzJCQU1wQixzQkFBc0I7Ozs7O1lDZi9CLEFBREYsQUFERiw4QkFBbUMsYUFDTCxhQUNGO1lBQ3RCLHlFQUF1RjtZQUd6RixpQkFBTTtZQUVKLEFBREYsOEJBQTZDLDZCQUtFO1lBQTNDLG9JQUFpQiw0QkFBd0IsSUFBQztZQUM1QyxpQkFBc0I7WUFDdEIsaUVBRWtEO1lBS3RELEFBREUsaUJBQU0sRUFDRjtZQUNOLG1FQUFpRjtZQU9uRixpQkFBTTs7WUExQm1FLGVBQWtCO1lBQWxCLHVDQUFrQjtZQU1uRixlQUF5QjtZQUV6QixBQURBLEFBREEsMkNBQXlCLHlDQUNXLDBCQUNmO1lBS3BCLGNBQTRCO1lBQTVCLDJFQUE0QjtZQU1nQixjQUE0QjtZQUE1QixpREFBNEI7OztpRkRYcEUsb0JBQW9CO2NBTGhDLFNBQVM7MkJBQ0UscUJBQXFCO2dCQUtmLEtBQUs7a0JBQXBCLEtBQUs7WUFDVSxZQUFZO2tCQUEzQixLQUFLO1lBQ1UsSUFBSTtrQkFBbkIsS0FBSztZQUNVLFFBQVE7a0JBQXZCLEtBQUs7WUFDVSxvQkFBb0I7a0JBQW5DLEtBQUs7WUFDc0Qsc0JBQXNCO2tCQUFqRixTQUFTO21CQUFDLHNCQUFzQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQUNsQyxtQkFBbUI7a0JBQW5DLE1BQU07O2tGQVBJLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZpbHRlckNvbmZpZ09wdGlvbiwgRmlsdGVyRmllbGRDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgU2VhcmNoU2VydmljZUNvbXBvbmVudCB9IGZyb20gJy4uL3NlYXJjaC1zZXJ2aWNlL3NlYXJjaC1zZXJ2aWNlLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3h1aWxpYi1maW5kLXNlcnZpY2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmluZC1zZXJ2aWNlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmluZC1zZXJ2aWNlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRmluZFNlcnZpY2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHB1YmxpYyBmaWVsZDogRmlsdGVyRmllbGRDb25maWc7XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXJ2aWNlVGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIGZvcm06IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgcHVibGljIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtU3VibWlzc2lvbkV2ZW50JDogU3ViamVjdDx2b2lkPjtcbiAgQFZpZXdDaGlsZChTZWFyY2hTZXJ2aWNlQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBwdWJsaWMgc2VhcmNoU2VydmljZUNvbXBvbmVudDogU2VhcmNoU2VydmljZUNvbXBvbmVudDtcbiAgQE91dHB1dCgpIHB1YmxpYyBzZXJ2aWNlRmllbGRDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBwcml2YXRlIGlzU2VsZWN0ZWRBbGwgPSBmYWxzZTtcbiAgcHJpdmF0ZSBmb3JtU3VibWlzc2lvbkV2ZW50U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgcHVibGljIHRlbXBTZWxlY3RlZFNlcnZpY2U6IEZpbHRlckNvbmZpZ09wdGlvbiA9IG51bGw7XG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWRTZXJ2aWNlcygpOiBGaWx0ZXJDb25maWdPcHRpb25bXSB7XG4gICAgY29uc3Qgc2VsZWN0QWxsVmFsdWUgPSB0aGlzLmZpZWxkLm9wdGlvbnMuZmluZChpdGVtID0+IGl0ZW0uc2VsZWN0QWxsKTtcbiAgICByZXR1cm4gdGhpcy5pc1NlbGVjdGVkQWxsID8gW3NlbGVjdEFsbFZhbHVlXSA6IHRoaXMuZm9ybS5nZXQodGhpcy5maWVsZC5uYW1lKT8udmFsdWU7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zb3J0T3B0aW9uc0FscGhhYmV0aWNhbGx5KCk7XG5cbiAgICAvLyBQYXRjaCBEZWZhdWx0IE9wdGlvblxuICAgIGlmICh0aGlzLmZpZWxkLmRlZmF1bHRPcHRpb24pIHtcbiAgICAgIHRoaXMuYWRkT3B0aW9uKHRoaXMuZmllbGQuZGVmYXVsdE9wdGlvbik7XG4gICAgfVxuICAgIGlmICh0aGlzLmZvcm1TdWJtaXNzaW9uRXZlbnQkKSB7XG4gICAgICB0aGlzLmZvcm1TdWJtaXNzaW9uRXZlbnRTdWJzY3JpcHRpb24gPSB0aGlzLmZvcm1TdWJtaXNzaW9uRXZlbnQkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IG9uZVNlbGVjdGVkQW5kTWF4U2VsZWN0ZWRPbmUgPSB0aGlzLnNlbGVjdGVkU2VydmljZXMubGVuZ3RoID09PSAxICYmIHRoaXMuZmllbGQubWF4U2VsZWN0ZWQgPT09IDE7XG4gICAgICAgIGlmICghb25lU2VsZWN0ZWRBbmRNYXhTZWxlY3RlZE9uZSkge1xuICAgICAgICAgIHRoaXMuc2VhcmNoU2VydmljZUNvbXBvbmVudC5yZXNldFNlYXJjaFRlcm0oKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFkZE9wdGlvbihvcHRpb246IEZpbHRlckNvbmZpZ09wdGlvbik6IHZvaWQge1xuICAgIGlmIChvcHRpb24pIHtcbiAgICAgIGlmIChvcHRpb24uc2VsZWN0QWxsKSB7XG4gICAgICAgIHRoaXMuaXNTZWxlY3RlZEFsbCA9IHRydWU7XG4gICAgICAgIHRoaXMucmVtb3ZlQWxsU2VsZWN0ZWRWYWx1ZXMoKTtcbiAgICAgICAgdGhpcy5maWVsZC5vcHRpb25zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgaWYgKCFpdGVtLnNlbGVjdEFsbCkge1xuICAgICAgICAgICAgdGhpcy5hZGRTZWxlY3RlZFNlcnZpY2VUb0Zvcm0oaXRlbSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLmlzU2VsZWN0ZWRBbGwpIHtcbiAgICAgICAgICB0aGlzLnJlbW92ZUFsbFNlbGVjdGVkVmFsdWVzKCk7XG4gICAgICAgICAgdGhpcy5pc1NlbGVjdGVkQWxsID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hZGRTZWxlY3RlZFNlcnZpY2VUb0Zvcm0ob3B0aW9uKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy50ZW1wU2VsZWN0ZWRTZXJ2aWNlID0gbnVsbDtcbiAgICAgIHRoaXMuc2VydmljZUZpZWxkQ2hhbmdlZC5lbWl0KCk7XG4gICAgICB0aGlzLnNlYXJjaFNlcnZpY2VDb21wb25lbnQucmVzZXRTZWFyY2hUZXJtKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlbW92ZU9wdGlvbihzZXJ2aWNlOiBGaWx0ZXJDb25maWdPcHRpb24pOiB2b2lkIHtcbiAgICBpZiAoc2VydmljZS5zZWxlY3RBbGwpIHtcbiAgICAgIHRoaXMucmVtb3ZlQWxsU2VsZWN0ZWRWYWx1ZXMoKTtcbiAgICAgIHRoaXMuaXNTZWxlY3RlZEFsbCA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoc2VydmljZS5rZXkpIHtcbiAgICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuZm9ybS5nZXQodGhpcy5maWVsZC5uYW1lKSBhcyBGb3JtQXJyYXk7XG4gICAgICBjb25zdCBpbmRleCA9IChmb3JtQXJyYXkudmFsdWUpLmZpbmRJbmRleCgoc2VsZWN0ZWRTZXJ2aWNlOiBGaWx0ZXJDb25maWdPcHRpb24pID0+IHNlbGVjdGVkU2VydmljZS5rZXkudG9Mb3dlckNhc2UoKSA9PT0gc2VydmljZS5rZXkudG9Mb3dlckNhc2UoKSk7XG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICBmb3JtQXJyYXkucmVtb3ZlQXQoaW5kZXgpO1xuICAgICAgfVxuICAgICAgdGhpcy5zZXJ2aWNlRmllbGRDaGFuZ2VkLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25PcHRpb25TZWxlY3RlZChvcHRpb246IEZpbHRlckNvbmZpZ09wdGlvbik6IHZvaWQge1xuICAgIGlmICghdGhpcy5maWVsZC5lbmFibGVBZGRCdXR0b24gJiYgdGhpcy5maWVsZC5tYXhTZWxlY3RlZCA9PT0gMSkge1xuICAgICAgdGhpcy5yZW1vdmVBbGxTZWxlY3RlZFZhbHVlcygpO1xuICAgICAgdGhpcy5hZGRTZWxlY3RlZFNlcnZpY2VUb0Zvcm0ob3B0aW9uKTtcbiAgICAgIHRoaXMuc2VydmljZUZpZWxkQ2hhbmdlZC5lbWl0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGVtcFNlbGVjdGVkU2VydmljZSA9IG9wdGlvbjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUFsbFNlbGVjdGVkVmFsdWVzKCk6IHZvaWQge1xuICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuZm9ybS5nZXQodGhpcy5maWVsZC5uYW1lKSBhcyBGb3JtQXJyYXk7XG4gICAgZm9ybUFycmF5LmNsZWFyKCk7XG4gIH1cblxuICBwcml2YXRlIGFkZFNlbGVjdGVkU2VydmljZVRvRm9ybShzZXJ2aWNlOiBGaWx0ZXJDb25maWdPcHRpb24pOiB2b2lkIHtcbiAgICBjb25zdCBmb3JtQXJyYXkgPSB0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQubmFtZSkgYXMgRm9ybUFycmF5O1xuICAgIGZvcm1BcnJheS5wdXNoKG5ldyBGb3JtQ29udHJvbChzZXJ2aWNlKSk7XG4gIH1cblxuICBwcml2YXRlIHNvcnRPcHRpb25zQWxwaGFiZXRpY2FsbHkoKTogRmlsdGVyQ29uZmlnT3B0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLm9wdGlvbnMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgcmV0dXJuIGEubGFiZWwudG9Mb3dlckNhc2UoKSA+IGIubGFiZWwudG9Mb3dlckNhc2UoKSA/IDEgOiAoYi5sYWJlbC50b0xvd2VyQ2FzZSgpID4gYS5sYWJlbC50b0xvd2VyQ2FzZSgpID8gLTEgOiAwKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmZvcm1TdWJtaXNzaW9uRXZlbnRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJzZXJ2aWNlLXBpY2tlci1jdXN0b21cIj5cbiAgPGRpdiBjbGFzcz1cInNlYXJjaC1zZXJ2aWNlXCI+XG4gICAgPGRpdiBjbGFzcz1cImdvdnVrLWJvZHlcIj5cbiAgICAgIDxsYWJlbCBpZD1cInNlbGVjdFNlcnZpY2VTZWFyY2gtbGFiZWxcIiBmb3I9XCJzZXJ2aWNlU2VhcmNoX19zZWxlY3RcIiAqbmdJZj1cInNlcnZpY2VUaXRsZVwiPlxuICAgICAgICB7eyBzZXJ2aWNlVGl0bGUgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgPC9sYWJlbD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLXNlcnZpY2VfX2lucHV0LWNvbnRhaW5lclwiPlxuICAgICAgPGV4dWktc2VhcmNoLXNlcnZpY2UgY2xhc3M9XCJzZWFyY2gtc2VydmljZV9faW5wdXRcIlxuICAgICAgICBbb3B0aW9uc109XCJmaWVsZC5vcHRpb25zXCJcbiAgICAgICAgW3NlbGVjdGVkT3B0aW9uc109XCJzZWxlY3RlZFNlcnZpY2VzXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgKG9wdGlvbkNoYW5nZWQpPVwib25PcHRpb25TZWxlY3RlZCgkZXZlbnQpXCI+XG4gICAgICA8L2V4dWktc2VhcmNoLXNlcnZpY2U+XG4gICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cImFkZE9wdGlvbih0ZW1wU2VsZWN0ZWRTZXJ2aWNlKVwiXG4gICAgICAgIGNsYXNzPVwiZ292dWstYnV0dG9uIGdvdnVrLWJ1dHRvbi0tc2Vjb25kYXJ5IGdvdnVrLSEtbWFyZ2luLWJvdHRvbS0wXCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1idXR0b25cIlxuICAgICAgICAqbmdJZj1cImZpZWxkPy5lbmFibGVBZGRCdXR0b25cIiBpZD1cImFkZC1zZXJ2aWNlXCI+XG4gICAgICAgIHt7ICdBZGQnIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJnb3Z1ay12aXN1YWxseS1oaWRkZW5cIj57eydzZXJ2aWNlJyB8IHJweFRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPHVsIGNsYXNzPVwiaG1jdHMtZmlsdGVyLXRhZ3Mgc2VsZWN0aW9uLWNvbnRhaW5lclwiICpuZ0lmPVwiZmllbGQubWF4U2VsZWN0ZWQgIT0gMVwiPlxuICAgIDxsaSBjbGFzcz1cImxvY2F0aW9uLXNlbGVjdGlvblwiICpuZ0Zvcj1cImxldCBzZWxlY3Rpb24gb2Ygc2VsZWN0ZWRTZXJ2aWNlc1wiPlxuICAgICAgPGEgY2xhc3M9XCJobWN0cy1maWx0ZXJfX3RhZ1wiIChjbGljayk9XCJyZW1vdmVPcHRpb24oc2VsZWN0aW9uKVwiIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIj5cbiAgICAgICAge3sgc2VsZWN0aW9uLmxhYmVsICB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgPC9hPlxuICAgIDwvbGk+XG4gIDwvdWw+XG48L2Rpdj5cbiJdfQ==