@hmcts/rpx-xui-common-lib 2.1.7-angular-upgrade-11 → 2.1.7-javascript-void

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 (361) 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/invite-user-form/invite-user-form.component.mjs +51 -0
  17. package/esm2022/lib/components/invite-user-permissions/invite-user-permission.component.mjs +54 -0
  18. package/esm2022/lib/components/loading-spinner/loading-spinner.component.mjs +33 -0
  19. package/esm2022/lib/components/pagination/pagination.component.mjs +92 -0
  20. package/esm2022/lib/components/public_api.mjs +39 -0
  21. package/esm2022/lib/components/search-judicials/search-judicials.component.mjs +185 -0
  22. package/esm2022/lib/components/search-location/search-location.component.mjs +240 -0
  23. package/esm2022/lib/components/search-service/search-service.component.mjs +94 -0
  24. package/esm2022/lib/components/search-venue/search-venue.component.mjs +188 -0
  25. package/esm2022/lib/components/selected-case/selected-case.component.mjs +381 -0
  26. package/esm2022/lib/components/selected-case-confirm/selected-case-confirm.component.mjs +135 -0
  27. package/esm2022/lib/components/selected-case-list/selected-case-list.component.mjs +98 -0
  28. package/esm2022/lib/components/service-message/service-message.component.mjs +62 -0
  29. package/esm2022/lib/components/service-messages/service-messages.component.mjs +167 -0
  30. package/esm2022/lib/components/share-case/share-case.component.mjs +427 -0
  31. package/esm2022/lib/components/share-case-confirm/share-case-confirm.component.mjs +85 -0
  32. package/esm2022/lib/components/tab/tab.component.mjs +40 -0
  33. package/esm2022/lib/components/tc-confirm/tc-confirm.component.mjs +66 -0
  34. package/esm2022/lib/components/terms-and-conditions/tc-display/tc-display-html/tc-display-html.component.mjs +17 -0
  35. package/esm2022/lib/components/terms-and-conditions/tc-display/tc-display-plain/tc-display-plain.component.mjs +17 -0
  36. package/esm2022/lib/components/terms-and-conditions/terms-and-conditions.component.mjs +58 -0
  37. package/esm2022/lib/components/user-details/user-details.component.mjs +276 -0
  38. package/esm2022/lib/components/user-list/user-list.component.mjs +100 -0
  39. package/esm2022/lib/components/user-select/user-select.component.mjs +94 -0
  40. package/esm2022/lib/components/write-address/write-address.component.mjs +342 -0
  41. package/esm2022/lib/components/write-address-inputs/write-address-inputs.component.mjs +165 -0
  42. package/esm2022/lib/directives/feature-toggle/feature-toggle.directive.mjs +41 -0
  43. package/esm2022/lib/directives/let/let.directive.mjs +29 -0
  44. package/esm2022/lib/exui-common-lib.module.mjs +313 -0
  45. package/esm2022/lib/gov-ui/components/gov-uk-checkbox/gov-uk-checkbox.component.mjs +55 -0
  46. package/esm2022/lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.mjs +137 -0
  47. package/esm2022/lib/gov-ui/components/gov-uk-date/gov-uk-date.component.mjs +127 -0
  48. package/esm2022/lib/gov-ui/components/gov-uk-error-message/gov-uk-error-message.component.mjs +46 -0
  49. package/esm2022/lib/gov-ui/components/gov-uk-fieldset/gov-uk-fieldset.component.mjs +79 -0
  50. package/esm2022/lib/gov-ui/components/gov-uk-file-upload/gov-uk-file-upload.component.mjs +79 -0
  51. package/esm2022/lib/gov-ui/components/gov-uk-form-group-wrapper/gov-uk-form-group-wrapper.component.mjs +45 -0
  52. package/esm2022/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.mjs +71 -0
  53. package/esm2022/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.mjs +84 -0
  54. package/esm2022/lib/gov-ui/components/gov-uk-radio/gov-uk-radio.component.mjs +48 -0
  55. package/esm2022/lib/gov-ui/components/gov-uk-radios/gov-uk-radios.component.mjs +42 -0
  56. package/esm2022/lib/gov-ui/components/gov-uk-select/gov-uk-select.component.mjs +80 -0
  57. package/esm2022/lib/gov-ui/components/gov-uk-table/gov-uk-table.component.mjs +185 -0
  58. package/esm2022/lib/gov-ui/components/gov-uk-textarea/gov-uk-textarea.component.mjs +57 -0
  59. package/esm2022/lib/gov-ui/components/hmcts-banner/hmcts-banner-info.interface.mjs +2 -0
  60. package/esm2022/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.mjs +111 -0
  61. package/esm2022/lib/gov-ui/components/hmcts-error-summary/hmcts-error-summary.component.mjs +140 -0
  62. package/esm2022/lib/gov-ui/components/hmcts-identity-bar/hmcts-identity-bar.component.mjs +34 -0
  63. package/esm2022/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.mjs +129 -0
  64. package/esm2022/lib/gov-ui/components/hmcts-pagination/hmcts-pagination.component.mjs +204 -0
  65. package/esm2022/lib/gov-ui/components/hmcts-primary-navigation/hmcts-primary-navigation.component.mjs +60 -0
  66. package/esm2022/lib/gov-ui/components/hmcts-sub-navigation/hmcts-sub-navigation.component.mjs +58 -0
  67. package/esm2022/lib/gov-ui/directives/remove-host.directive.mjs +30 -0
  68. package/esm2022/lib/gov-ui/gov-ui.service.mjs +14 -0
  69. package/esm2022/lib/gov-ui/models/checkboxes-model.mjs +2 -0
  70. package/{esm2015/lib/gov-ui/models/gov-ui-config-model.js → esm2022/lib/gov-ui/models/gov-ui-config-model.mjs} +1 -1
  71. package/{esm2015/lib/gov-ui/models/public_api.js → esm2022/lib/gov-ui/models/public_api.mjs} +1 -2
  72. package/esm2022/lib/gov-ui/models/radio-buttons.model.mjs +2 -0
  73. package/esm2022/lib/gov-ui/util/helpers/html-templates.helper.mjs +22 -0
  74. package/{esm2015/lib/gov-ui/validators/checkboxes-be-checked.validator.js → esm2022/lib/gov-ui/validators/checkboxes-be-checked.validator.mjs} +1 -1
  75. package/{esm2015/lib/gov-ui/validators/date.validator.js → esm2022/lib/gov-ui/validators/date.validator.mjs} +1 -1
  76. package/esm2022/lib/gov-ui/validators/radio-group.validator.mjs +15 -0
  77. package/esm2022/lib/models/address-message.enum.mjs +11 -0
  78. package/esm2022/lib/models/address-option.model.mjs +21 -0
  79. package/esm2022/lib/models/address.model.mjs +4 -0
  80. package/{esm2015/lib/models/contact-details.model.js → esm2022/lib/models/contact-details.model.mjs} +1 -1
  81. package/esm2022/lib/models/feature-user.mjs +5 -0
  82. package/esm2022/lib/models/filter.model.mjs +3 -0
  83. package/esm2022/lib/models/index.mjs +19 -0
  84. package/esm2022/lib/models/location.model.mjs +7 -0
  85. package/esm2022/lib/models/person.model.mjs +21 -0
  86. package/{esm2015/lib/models/public_api.js → esm2022/lib/models/public_api.mjs} +2 -1
  87. package/{esm2015/lib/models/search-options.model.js → esm2022/lib/models/search-options.model.mjs} +1 -1
  88. package/esm2022/lib/models/service-message.model.mjs +2 -0
  89. package/esm2022/lib/models/task-name.model.mjs +2 -0
  90. package/esm2022/lib/models/user-access-type.model.mjs +2 -0
  91. package/esm2022/lib/models/user-details.model.mjs +2 -0
  92. package/esm2022/lib/pipes/capitalize/capitalize.pipe.mjs +15 -0
  93. package/esm2022/lib/pipes/index.mjs +2 -0
  94. package/esm2022/lib/services/address/address-parser.mjs +76 -0
  95. package/esm2022/lib/services/address/address-type.enum.mjs +7 -0
  96. package/esm2022/lib/services/address/address.service.mjs +55 -0
  97. package/esm2022/lib/services/case-sharing-state/case-sharing-state.service.mjs +170 -0
  98. package/esm2022/lib/services/cookie/cookie.service.mjs +48 -0
  99. package/esm2022/lib/services/feature-toggle/feature-toggle.guard.mjs +37 -0
  100. package/esm2022/lib/services/feature-toggle/feature-toggle.service.mjs +33 -0
  101. package/esm2022/lib/services/feature-toggle/launch-darkly.service.mjs +70 -0
  102. package/esm2022/lib/services/filter/filter.service.mjs +95 -0
  103. package/esm2022/lib/services/find-person/find-person.service.mjs +92 -0
  104. package/esm2022/lib/services/google-analytics/google-analytics.service.mjs +73 -0
  105. package/esm2022/lib/services/google-tag-manager/google-tag-manager.service.mjs +85 -0
  106. package/{esm2015/lib/services/loading/loading.service.js → esm2022/lib/services/loading/loading.service.mjs} +8 -6
  107. package/esm2022/lib/services/locations/location.service.mjs +38 -0
  108. package/{esm2015/lib/services/manage-session/manage-session.services.js → esm2022/lib/services/manage-session/manage-session.services.mjs} +8 -10
  109. package/esm2022/lib/services/public-api.mjs +18 -0
  110. package/esm2022/lib/services/ref-data/index.mjs +4 -0
  111. package/esm2022/lib/services/ref-data/models/ref-data-htmcs-service.model.mjs +2 -0
  112. package/esm2022/lib/services/ref-data/models/ref-data-region.model.mjs +2 -0
  113. package/esm2022/lib/services/ref-data/ref-data-data-access/models/ref-data-locations-by-service-code-response.model.mjs +2 -0
  114. package/esm2022/lib/services/ref-data/ref-data-data-access/ref-data-data-access.service.mjs +33 -0
  115. package/esm2022/lib/services/ref-data/ref-data.service.mjs +34 -0
  116. package/esm2022/lib/services/role-guard/role.guard.mjs +43 -0
  117. package/esm2022/lib/services/role-guard/role.service.mjs +22 -0
  118. package/esm2022/lib/services/storage/session-storage/session-storage.service.mjs +43 -0
  119. package/esm2022/lib/services/task-name/task-name.service.mjs +35 -0
  120. package/esm2022/lib/services/timeout-notifications/timeout-notifications.service.mjs +103 -0
  121. package/{esm2015/public-api.js → esm2022/public-api.mjs} +2 -1
  122. package/fesm2022/hmcts-rpx-xui-common-lib.mjs +10386 -0
  123. package/fesm2022/hmcts-rpx-xui-common-lib.mjs.map +1 -0
  124. package/index.d.ts +5 -0
  125. package/lib/components/accessibility/accessibility.component.d.ts +7 -1
  126. package/lib/components/checkbox-list/checkbox-list.component.d.ts +8 -2
  127. package/lib/components/contact-details/contact-details.component.d.ts +3 -0
  128. package/lib/components/cookie-banner/cookie-banner.component.d.ts +5 -1
  129. package/lib/components/due-date/due-date.component.d.ts +8 -2
  130. package/lib/components/exui-main-wrapper/exui-page-wrapper.component.d.ts +3 -0
  131. package/lib/components/find-location/find-location.component.d.ts +12 -6
  132. package/lib/components/find-person/find-person.component.d.ts +5 -2
  133. package/lib/components/find-service/find-service.component.d.ts +24 -9
  134. package/lib/components/find-task-name/find-task-name.component.d.ts +44 -0
  135. package/lib/components/generic-filter/generic-filter-utils.d.ts +2 -5
  136. package/lib/components/generic-filter/generic-filter.component.d.ts +25 -6
  137. package/lib/components/hmcts-session-dialog/hmcts-session-dialog.component.d.ts +3 -0
  138. package/lib/components/invite-user-form/invite-user-form.component.d.ts +3 -0
  139. package/lib/components/invite-user-permissions/invite-user-permission.component.d.ts +3 -0
  140. package/lib/components/loading-spinner/loading-spinner.component.d.ts +8 -1
  141. package/lib/components/pagination/pagination.component.d.ts +3 -0
  142. package/lib/components/public_api.d.ts +6 -0
  143. package/lib/components/search-judicials/search-judicials.component.d.ts +3 -0
  144. package/lib/components/search-location/search-location.component.d.ts +25 -20
  145. package/lib/components/search-service/search-service.component.d.ts +16 -9
  146. package/lib/components/search-venue/search-venue.component.d.ts +3 -1
  147. package/lib/components/selected-case/selected-case.component.d.ts +3 -0
  148. package/lib/components/selected-case-confirm/selected-case-confirm.component.d.ts +3 -0
  149. package/lib/components/selected-case-list/selected-case-list.component.d.ts +3 -0
  150. package/lib/components/service-message/service-message.component.d.ts +9 -4
  151. package/lib/components/service-messages/service-messages.component.d.ts +15 -5
  152. package/lib/components/share-case/share-case.component.d.ts +4 -0
  153. package/lib/components/share-case-confirm/share-case-confirm.component.d.ts +3 -0
  154. package/lib/components/tab/tab.component.d.ts +3 -0
  155. package/lib/components/tc-confirm/tc-confirm.component.d.ts +3 -0
  156. package/lib/components/terms-and-conditions/tc-display/tc-display-html/tc-display-html.component.d.ts +3 -0
  157. package/lib/components/terms-and-conditions/tc-display/tc-display-plain/tc-display-plain.component.d.ts +3 -0
  158. package/lib/components/terms-and-conditions/terms-and-conditions.component.d.ts +3 -0
  159. package/lib/components/user-details/user-details.component.d.ts +4 -0
  160. package/lib/components/user-list/user-list.component.d.ts +3 -0
  161. package/lib/components/user-select/user-select.component.d.ts +5 -3
  162. package/lib/components/write-address/write-address.component.d.ts +45 -0
  163. package/lib/components/write-address-inputs/write-address-inputs.component.d.ts +16 -0
  164. package/lib/directives/feature-toggle/feature-toggle.directive.d.ts +3 -0
  165. package/lib/directives/let/let.directive.d.ts +3 -0
  166. package/lib/exui-common-lib.module.d.ts +83 -4
  167. package/lib/gov-ui/components/gov-uk-checkbox/gov-uk-checkbox.component.d.ts +3 -0
  168. package/lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.d.ts +17 -5
  169. package/lib/gov-ui/components/gov-uk-date/gov-uk-date.component.d.ts +3 -0
  170. package/lib/gov-ui/components/gov-uk-error-message/gov-uk-error-message.component.d.ts +3 -0
  171. package/lib/gov-ui/components/gov-uk-fieldset/gov-uk-fieldset.component.d.ts +3 -0
  172. package/lib/gov-ui/components/gov-uk-file-upload/gov-uk-file-upload.component.d.ts +3 -0
  173. package/lib/gov-ui/components/gov-uk-form-group-wrapper/gov-uk-form-group-wrapper.component.d.ts +3 -0
  174. package/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.d.ts +4 -2
  175. package/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.d.ts +4 -0
  176. package/lib/gov-ui/components/gov-uk-radio/gov-uk-radio.component.d.ts +3 -0
  177. package/lib/gov-ui/components/gov-uk-radios/gov-uk-radios.component.d.ts +5 -2
  178. package/lib/gov-ui/components/gov-uk-select/gov-uk-select.component.d.ts +3 -0
  179. package/lib/gov-ui/components/gov-uk-table/gov-uk-table.component.d.ts +3 -0
  180. package/lib/gov-ui/components/gov-uk-textarea/gov-uk-textarea.component.d.ts +3 -0
  181. package/lib/gov-ui/components/hmcts-banner/hmcts-banner-info.interface.d.ts +7 -0
  182. package/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.d.ts +7 -2
  183. package/lib/gov-ui/components/hmcts-error-summary/hmcts-error-summary.component.d.ts +3 -0
  184. package/lib/gov-ui/components/hmcts-identity-bar/hmcts-identity-bar.component.d.ts +3 -0
  185. package/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.d.ts +6 -3
  186. package/lib/gov-ui/components/hmcts-pagination/hmcts-pagination.component.d.ts +3 -0
  187. package/lib/gov-ui/components/hmcts-primary-navigation/hmcts-primary-navigation.component.d.ts +3 -0
  188. package/lib/gov-ui/components/hmcts-sub-navigation/hmcts-sub-navigation.component.d.ts +3 -0
  189. package/lib/gov-ui/directives/remove-host.directive.d.ts +3 -0
  190. package/lib/gov-ui/gov-ui.service.d.ts +3 -0
  191. package/lib/gov-ui/models/checkboxes-model.d.ts +4 -7
  192. package/lib/gov-ui/models/gov-ui-config-model.d.ts +2 -0
  193. package/lib/gov-ui/models/public_api.d.ts +0 -1
  194. package/lib/gov-ui/models/radio-buttons.model.d.ts +9 -0
  195. package/lib/models/address-message.enum.d.ts +9 -0
  196. package/lib/models/address-option.model.d.ts +9 -0
  197. package/lib/models/address.model.d.ts +9 -0
  198. package/lib/models/contact-details.model.d.ts +4 -0
  199. package/lib/models/feature-user.d.ts +4 -6
  200. package/lib/models/filter.model.d.ts +42 -9
  201. package/lib/models/index.d.ts +4 -0
  202. package/lib/models/location.model.d.ts +12 -12
  203. package/lib/models/person.model.d.ts +5 -3
  204. package/lib/models/public_api.d.ts +1 -0
  205. package/lib/models/search-options.model.d.ts +1 -1
  206. package/lib/models/service-message.model.d.ts +8 -0
  207. package/lib/models/task-name.model.d.ts +4 -0
  208. package/lib/models/user-access-type.model.d.ts +6 -0
  209. package/lib/models/user-details.model.d.ts +2 -0
  210. package/lib/pipes/capitalize/capitalize.pipe.d.ts +7 -0
  211. package/lib/pipes/index.d.ts +1 -0
  212. package/lib/services/address/address-parser.d.ts +17 -0
  213. package/lib/services/address/address-type.enum.d.ts +5 -0
  214. package/lib/services/address/address.service.d.ts +15 -0
  215. package/lib/services/case-sharing-state/case-sharing-state.service.d.ts +3 -0
  216. package/lib/services/cookie/cookie.service.d.ts +3 -0
  217. package/lib/services/feature-toggle/feature-toggle.guard.d.ts +8 -2
  218. package/lib/services/feature-toggle/feature-toggle.service.d.ts +4 -0
  219. package/lib/services/feature-toggle/launch-darkly.service.d.ts +14 -10
  220. package/lib/services/filter/filter.service.d.ts +6 -0
  221. package/lib/services/find-person/find-person.service.d.ts +5 -2
  222. package/lib/services/google-analytics/google-analytics.service.d.ts +4 -1
  223. package/lib/services/google-tag-manager/google-tag-manager.service.d.ts +5 -1
  224. package/lib/services/loading/loading.service.d.ts +3 -0
  225. package/lib/services/locations/location.service.d.ts +4 -1
  226. package/lib/services/manage-session/manage-session.services.d.ts +3 -0
  227. package/lib/services/public-api.d.ts +2 -0
  228. package/lib/services/ref-data/index.d.ts +3 -0
  229. package/lib/services/ref-data/models/ref-data-htmcs-service.model.d.ts +13 -0
  230. package/lib/services/ref-data/models/ref-data-region.model.d.ts +4 -0
  231. package/lib/services/ref-data/ref-data-data-access/models/ref-data-locations-by-service-code-response.model.d.ts +8 -0
  232. package/lib/services/ref-data/ref-data-data-access/ref-data-data-access.service.d.ts +18 -0
  233. package/lib/services/ref-data/ref-data.service.d.ts +17 -0
  234. package/lib/services/role-guard/role.guard.d.ts +7 -3
  235. package/lib/services/role-guard/role.service.d.ts +8 -4
  236. package/lib/services/{session-storage → storage/session-storage}/session-storage.service.d.ts +3 -0
  237. package/lib/services/task-name/task-name.service.d.ts +17 -0
  238. package/lib/services/timeout-notifications/timeout-notifications.service.d.ts +8 -2
  239. package/package.json +21 -11
  240. package/public-api.d.ts +1 -0
  241. package/bundles/hmcts-rpx-xui-common-lib.umd.js +0 -5141
  242. package/bundles/hmcts-rpx-xui-common-lib.umd.js.map +0 -1
  243. package/bundles/hmcts-rpx-xui-common-lib.umd.min.js +0 -2
  244. package/bundles/hmcts-rpx-xui-common-lib.umd.min.js.map +0 -1
  245. package/esm2015/hmcts-rpx-xui-common-lib.js +0 -70
  246. package/esm2015/lib/components/accessibility/accessibility.component.js +0 -14
  247. package/esm2015/lib/components/checkbox-list/checkbox-list.component.js +0 -177
  248. package/esm2015/lib/components/contact-details/contact-details.component.js +0 -17
  249. package/esm2015/lib/components/cookie-banner/cookie-banner.component.js +0 -68
  250. package/esm2015/lib/components/due-date/due-date.component.js +0 -115
  251. package/esm2015/lib/components/exui-main-wrapper/exui-page-wrapper.component.js +0 -28
  252. package/esm2015/lib/components/find-location/find-location.component.js +0 -124
  253. package/esm2015/lib/components/find-person/find-person.component.js +0 -118
  254. package/esm2015/lib/components/find-service/find-service.component.js +0 -31
  255. package/esm2015/lib/components/generic-filter/generic-filter-utils.js +0 -21
  256. package/esm2015/lib/components/generic-filter/generic-filter.component.js +0 -387
  257. package/esm2015/lib/components/hmcts-session-dialog/hmcts-session-dialog.component.js +0 -27
  258. package/esm2015/lib/components/invite-user-form/invite-user-form.component.js +0 -25
  259. package/esm2015/lib/components/invite-user-permissions/invite-user-permission.component.js +0 -25
  260. package/esm2015/lib/components/loading-spinner/loading-spinner.component.js +0 -18
  261. package/esm2015/lib/components/pagination/pagination.component.js +0 -28
  262. package/esm2015/lib/components/public_api.js +0 -33
  263. package/esm2015/lib/components/search-judicials/search-judicials.component.js +0 -126
  264. package/esm2015/lib/components/search-location/search-location.component.js +0 -133
  265. package/esm2015/lib/components/search-service/search-service.component.js +0 -31
  266. package/esm2015/lib/components/search-venue/search-venue.component.js +0 -123
  267. package/esm2015/lib/components/selected-case/selected-case.component.js +0 -158
  268. package/esm2015/lib/components/selected-case-confirm/selected-case-confirm.component.js +0 -36
  269. package/esm2015/lib/components/selected-case-list/selected-case-list.component.js +0 -49
  270. package/esm2015/lib/components/service-message/service-message.component.js +0 -22
  271. package/esm2015/lib/components/service-messages/service-messages.component.js +0 -48
  272. package/esm2015/lib/components/share-case/share-case.component.js +0 -205
  273. package/esm2015/lib/components/share-case-confirm/share-case-confirm.component.js +0 -34
  274. package/esm2015/lib/components/tab/tab.component.js +0 -21
  275. package/esm2015/lib/components/tc-confirm/tc-confirm.component.js +0 -22
  276. package/esm2015/lib/components/terms-and-conditions/tc-display/tc-display-html/tc-display-html.component.js +0 -13
  277. package/esm2015/lib/components/terms-and-conditions/tc-display/tc-display-plain/tc-display-plain.component.js +0 -13
  278. package/esm2015/lib/components/terms-and-conditions/terms-and-conditions.component.js +0 -16
  279. package/esm2015/lib/components/user-details/user-details.component.js +0 -41
  280. package/esm2015/lib/components/user-list/user-list.component.js +0 -33
  281. package/esm2015/lib/components/user-select/user-select.component.js +0 -58
  282. package/esm2015/lib/directives/feature-toggle/feature-toggle.directive.js +0 -42
  283. package/esm2015/lib/directives/let/let.directive.js +0 -30
  284. package/esm2015/lib/exui-common-lib.module.js +0 -160
  285. package/esm2015/lib/gov-ui/components/gov-uk-checkbox/gov-uk-checkbox.component.js +0 -31
  286. package/esm2015/lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.js +0 -21
  287. package/esm2015/lib/gov-ui/components/gov-uk-date/gov-uk-date.component.js +0 -64
  288. package/esm2015/lib/gov-ui/components/gov-uk-error-message/gov-uk-error-message.component.js +0 -22
  289. package/esm2015/lib/gov-ui/components/gov-uk-fieldset/gov-uk-fieldset.component.js +0 -28
  290. package/esm2015/lib/gov-ui/components/gov-uk-file-upload/gov-uk-file-upload.component.js +0 -35
  291. package/esm2015/lib/gov-ui/components/gov-uk-form-group-wrapper/gov-uk-form-group-wrapper.component.js +0 -23
  292. package/esm2015/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.js +0 -34
  293. package/esm2015/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.js +0 -21
  294. package/esm2015/lib/gov-ui/components/gov-uk-radio/gov-uk-radio.component.js +0 -33
  295. package/esm2015/lib/gov-ui/components/gov-uk-radios/gov-uk-radios.component.js +0 -21
  296. package/esm2015/lib/gov-ui/components/gov-uk-select/gov-uk-select.component.js +0 -27
  297. package/esm2015/lib/gov-ui/components/gov-uk-table/gov-uk-table.component.js +0 -39
  298. package/esm2015/lib/gov-ui/components/gov-uk-textarea/gov-uk-textarea.component.js +0 -27
  299. package/esm2015/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.js +0 -23
  300. package/esm2015/lib/gov-ui/components/hmcts-error-summary/hmcts-error-summary.component.js +0 -48
  301. package/esm2015/lib/gov-ui/components/hmcts-identity-bar/hmcts-identity-bar.component.js +0 -19
  302. package/esm2015/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.js +0 -41
  303. package/esm2015/lib/gov-ui/components/hmcts-pagination/hmcts-pagination.component.js +0 -28
  304. package/esm2015/lib/gov-ui/components/hmcts-primary-navigation/hmcts-primary-navigation.component.js +0 -23
  305. package/esm2015/lib/gov-ui/components/hmcts-sub-navigation/hmcts-sub-navigation.component.js +0 -15
  306. package/esm2015/lib/gov-ui/directives/remove-host.directive.js +0 -29
  307. package/esm2015/lib/gov-ui/gov-ui.service.js +0 -13
  308. package/esm2015/lib/gov-ui/models/banner-data-model.js +0 -2
  309. package/esm2015/lib/gov-ui/models/checkboxes-model.js +0 -2
  310. package/esm2015/lib/gov-ui/models/isession-storage.interface.js +0 -2
  311. package/esm2015/lib/gov-ui/util/helpers/html-templates.helper.js +0 -22
  312. package/esm2015/lib/gov-ui/util/session-storage/session-storage-utils.js +0 -22
  313. package/esm2015/lib/gov-ui/validators/radio-group.validator.js +0 -15
  314. package/esm2015/lib/models/feature-user.js +0 -5
  315. package/esm2015/lib/models/filter.model.js +0 -3
  316. package/esm2015/lib/models/index.js +0 -15
  317. package/esm2015/lib/models/location.model.js +0 -7
  318. package/esm2015/lib/models/person.model.js +0 -19
  319. package/esm2015/lib/models/user-details.model.js +0 -2
  320. package/esm2015/lib/services/case-sharing-state/case-sharing-state.service.js +0 -157
  321. package/esm2015/lib/services/cookie/cookie.service.js +0 -47
  322. package/esm2015/lib/services/feature-toggle/feature-toggle.guard.js +0 -35
  323. package/esm2015/lib/services/feature-toggle/feature-toggle.service.js +0 -27
  324. package/esm2015/lib/services/feature-toggle/launch-darkly.service.js +0 -59
  325. package/esm2015/lib/services/filter/filter.service.js +0 -64
  326. package/esm2015/lib/services/find-person/find-person.service.js +0 -106
  327. package/esm2015/lib/services/google-analytics/google-analytics.service.js +0 -68
  328. package/esm2015/lib/services/google-tag-manager/google-tag-manager.service.js +0 -71
  329. package/esm2015/lib/services/locations/location.service.js +0 -39
  330. package/esm2015/lib/services/public-api.js +0 -16
  331. package/esm2015/lib/services/role-guard/role.guard.js +0 -37
  332. package/esm2015/lib/services/role-guard/role.service.js +0 -20
  333. package/esm2015/lib/services/session-storage/session-storage.service.js +0 -41
  334. package/esm2015/lib/services/timeout-notifications/timeout-notifications.service.js +0 -94
  335. package/fesm2015/hmcts-rpx-xui-common-lib.js +0 -4174
  336. package/fesm2015/hmcts-rpx-xui-common-lib.js.map +0 -1
  337. package/hmcts-rpx-xui-common-lib.d.ts +0 -69
  338. package/hmcts-rpx-xui-common-lib.metadata.json +0 -1
  339. package/lib/gov-ui/models/banner-data-model.d.ts +0 -4
  340. package/lib/gov-ui/models/isession-storage.interface.d.ts +0 -4
  341. package/lib/gov-ui/util/session-storage/session-storage-utils.d.ts +0 -6
  342. /package/{esm2015/lib/components/index.js → esm2022/lib/components/index.mjs} +0 -0
  343. /package/{esm2015/lib/directives/index.js → esm2022/lib/directives/index.mjs} +0 -0
  344. /package/{esm2015/lib/directives/public-api.js → esm2022/lib/directives/public-api.mjs} +0 -0
  345. /package/{esm2015/lib/gov-ui/components/index.js → esm2022/lib/gov-ui/components/index.mjs} +0 -0
  346. /package/{esm2015/lib/gov-ui/components/public_api.js → esm2022/lib/gov-ui/components/public_api.mjs} +0 -0
  347. /package/{esm2015/lib/gov-ui/index.js → esm2022/lib/gov-ui/index.mjs} +0 -0
  348. /package/{esm2015/lib/gov-ui/models/error-messages-model.js → esm2022/lib/gov-ui/models/error-messages-model.mjs} +0 -0
  349. /package/{esm2015/lib/gov-ui/models/index.js → esm2022/lib/gov-ui/models/index.mjs} +0 -0
  350. /package/{esm2015/lib/gov-ui/public_api.js → esm2022/lib/gov-ui/public_api.mjs} +0 -0
  351. /package/{esm2015/lib/gov-ui/validators/index.js → esm2022/lib/gov-ui/validators/index.mjs} +0 -0
  352. /package/{esm2015/lib/gov-ui/validators/public_api.js → esm2022/lib/gov-ui/validators/public_api.mjs} +0 -0
  353. /package/{esm2015/lib/models/case-share.model.js → esm2022/lib/models/case-share.model.mjs} +0 -0
  354. /package/{esm2015/lib/models/due-date.model.js → esm2022/lib/models/due-date.model.mjs} +0 -0
  355. /package/{esm2015/lib/models/idle-config.model.js → esm2022/lib/models/idle-config.model.mjs} +0 -0
  356. /package/{esm2015/lib/models/pagination.model.js → esm2022/lib/models/pagination.model.mjs} +0 -0
  357. /package/{esm2015/lib/models/tcDocument.model.js → esm2022/lib/models/tcDocument.model.mjs} +0 -0
  358. /package/{esm2015/lib/models/timeout-notification.model.js → esm2022/lib/models/timeout-notification.model.mjs} +0 -0
  359. /package/{esm2015/lib/models/user.model.js → esm2022/lib/models/user.model.mjs} +0 -0
  360. /package/{esm2015/lib/services/index.js → esm2022/lib/services/index.mjs} +0 -0
  361. /package/{esm2015/lib/window.js → esm2022/lib/window.mjs} +0 -0
@@ -0,0 +1,100 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "@angular/router";
5
+ import * as i3 from "../../gov-ui/components/hmcts-pagination/hmcts-pagination.component";
6
+ import * as i4 from "ngx-pagination";
7
+ import * as i5 from "rpx-xui-translation";
8
+ const _c0 = (a0, a1, a2) => ({ itemsPerPage: a0, currentPage: a1, totalItems: a2 });
9
+ function UserListComponent_ng_container_13_Template(rf, ctx) { if (rf & 1) {
10
+ const _r1 = i0.ɵɵgetCurrentView();
11
+ i0.ɵɵelementContainerStart(0);
12
+ i0.ɵɵelementStart(1, "tr", 7)(2, "td", 8)(3, "a", 9);
13
+ i0.ɵɵlistener("click", function UserListComponent_ng_container_13_Template_a_click_3_listener() { const u_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onUserClick(u_r2)); });
14
+ i0.ɵɵtext(4);
15
+ i0.ɵɵelementEnd()();
16
+ i0.ɵɵelementStart(5, "td", 8);
17
+ i0.ɵɵtext(6);
18
+ i0.ɵɵelementEnd();
19
+ i0.ɵɵelementStart(7, "td", 8);
20
+ i0.ɵɵtext(8);
21
+ i0.ɵɵelementEnd()();
22
+ i0.ɵɵelementContainerEnd();
23
+ } if (rf & 2) {
24
+ const u_r2 = ctx.$implicit;
25
+ i0.ɵɵadvance(3);
26
+ i0.ɵɵproperty("routerLink", u_r2.routerLink);
27
+ i0.ɵɵattribute("title", u_r2.routerLinkTitle);
28
+ i0.ɵɵadvance();
29
+ i0.ɵɵtextInterpolate(u_r2.fullName);
30
+ i0.ɵɵadvance(2);
31
+ i0.ɵɵtextInterpolate(u_r2.email);
32
+ i0.ɵɵadvance(2);
33
+ i0.ɵɵtextInterpolate(u_r2.status);
34
+ } }
35
+ export class UserListComponent {
36
+ constructor() {
37
+ this.users = [];
38
+ this.userClick = new EventEmitter();
39
+ this.pageChange = new EventEmitter();
40
+ }
41
+ ngOnInit() {
42
+ this.pagination = { itemsPerPage: 50, currentPage: this.currentPageNumber, totalItems: this.pageTotalSize };
43
+ }
44
+ onUserClick(user) {
45
+ this.userClick.emit(user);
46
+ }
47
+ emitPageClickEvent(pageNumber) {
48
+ this.currentPageNumber = pageNumber;
49
+ this.pageChange.emit(pageNumber);
50
+ }
51
+ static { this.ɵfac = function UserListComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || UserListComponent)(); }; }
52
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UserListComponent, selectors: [["xuilib-user-list"]], inputs: { users: "users", currentPageNumber: "currentPageNumber", pageTotalSize: "pageTotalSize" }, outputs: { userClick: "userClick", pageChange: "pageChange" }, decls: 16, vars: 18, consts: [[1, "govuk-table"], ["clas", "govuk-table__head"], [1, "govuk-table__row"], ["scope", "col", 1, "govuk-table__header"], [1, "govuk-table__body"], [4, "ngFor", "ngForOf"], [3, "pageChange", "pageSize"], ["data-selector", "table-row", 1, "govuk-table__row"], ["data-selector", "table-cell", 1, "govuk-table__cell"], [1, "govuk-link", 3, "click", "routerLink"]], template: function UserListComponent_Template(rf, ctx) { if (rf & 1) {
53
+ i0.ɵɵelementStart(0, "table", 0)(1, "thead", 1)(2, "tr", 2)(3, "th", 3);
54
+ i0.ɵɵtext(4);
55
+ i0.ɵɵpipe(5, "rpxTranslate");
56
+ i0.ɵɵelementEnd();
57
+ i0.ɵɵelementStart(6, "th", 3);
58
+ i0.ɵɵtext(7);
59
+ i0.ɵɵpipe(8, "rpxTranslate");
60
+ i0.ɵɵelementEnd();
61
+ i0.ɵɵelementStart(9, "th", 3);
62
+ i0.ɵɵtext(10);
63
+ i0.ɵɵpipe(11, "rpxTranslate");
64
+ i0.ɵɵelementEnd()()();
65
+ i0.ɵɵelementStart(12, "tbody", 4);
66
+ i0.ɵɵtemplate(13, UserListComponent_ng_container_13_Template, 9, 5, "ng-container", 5);
67
+ i0.ɵɵpipe(14, "paginate");
68
+ i0.ɵɵelementEnd()();
69
+ i0.ɵɵelementStart(15, "xuilib-hmcts-pagination", 6);
70
+ i0.ɵɵlistener("pageChange", function UserListComponent_Template_xuilib_hmcts_pagination_pageChange_15_listener($event) { return ctx.emitPageClickEvent($event); });
71
+ i0.ɵɵelementEnd();
72
+ } if (rf & 2) {
73
+ i0.ɵɵadvance(4);
74
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(5, 5, "Name"));
75
+ i0.ɵɵadvance(3);
76
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(8, 7, "Email"));
77
+ i0.ɵɵadvance(3);
78
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 9, "Status"));
79
+ i0.ɵɵadvance(3);
80
+ i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind2(14, 11, ctx.users, i0.ɵɵpureFunction3(14, _c0, ctx.pagination.itemsPerPage, ctx.currentPageNumber, ctx.pagination.totalItems)));
81
+ i0.ɵɵadvance(2);
82
+ i0.ɵɵproperty("pageSize", ctx.pagination.itemsPerPage);
83
+ } }, dependencies: [i1.NgForOf, i2.RouterLink, i3.HmctsPaginationComponent, i4.PaginatePipe, i5.RpxTranslatePipe], styles: ["[_nghost-%COMP%]{display:block}"] }); }
84
+ }
85
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UserListComponent, [{
86
+ type: Component,
87
+ args: [{ selector: 'xuilib-user-list', template: "<table class=\"govuk-table\">\n\n <thead clas=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <th class=\"govuk-table__header\" scope=\"col\">{{'Name' | rpxTranslate}}</th>\n <th class=\"govuk-table__header\" scope=\"col\">{{'Email' | rpxTranslate}}</th>\n <th class=\"govuk-table__header\" scope=\"col\">{{'Status' | rpxTranslate}}</th>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\">\n <ng-container *ngFor=\"let u of users | paginate: { itemsPerPage: pagination.itemsPerPage, currentPage: currentPageNumber, totalItems: pagination.totalItems }\">\n <tr class=\"govuk-table__row\" data-selector=\"table-row\">\n <td class=\"govuk-table__cell\" data-selector=\"table-cell\">\n <a class=\"govuk-link\" [attr.title]=\"u.routerLinkTitle\" [routerLink]=\"u.routerLink\" (click)=\"onUserClick(u)\">{{ u.fullName }}</a>\n </td>\n <td class=\"govuk-table__cell\" data-selector=\"table-cell\">{{ u.email }}</td>\n <td class=\"govuk-table__cell\" data-selector=\"table-cell\">{{ u.status }}</td>\n </tr>\n </ng-container>\n </tbody>\n</table>\n<xuilib-hmcts-pagination (pageChange)=\"emitPageClickEvent($event)\" [pageSize]=\"pagination.itemsPerPage\"></xuilib-hmcts-pagination>\n", styles: [":host{display:block}\n"] }]
88
+ }], null, { users: [{
89
+ type: Input
90
+ }], currentPageNumber: [{
91
+ type: Input
92
+ }], pageTotalSize: [{
93
+ type: Input
94
+ }], userClick: [{
95
+ type: Output
96
+ }], pageChange: [{
97
+ type: Output
98
+ }] }); })();
99
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(UserListComponent, { className: "UserListComponent", filePath: "lib/components/user-list/user-list.component.ts", lineNumber: 10 }); })();
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dWktY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvdXNlci1saXN0L3VzZXItbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL3VzZXItbGlzdC91c2VyLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7OztJQ1V6RSw2QkFBK0o7SUFHdkosQUFERixBQURKLDZCQUF1RCxZQUNNLFdBQ3FEO0lBQXpCLHlNQUFTLHdCQUFjLEtBQUM7SUFBQyxZQUFnQjtJQUM5SCxBQUQ4SCxpQkFBSSxFQUM3SDtJQUNMLDZCQUF5RDtJQUFBLFlBQWE7SUFBQSxpQkFBSztJQUMzRSw2QkFBeUQ7SUFBQSxZQUFjO0lBQzNFLEFBRDJFLGlCQUFLLEVBQzNFOzs7O0lBSndELGVBQTJCO0lBQTNCLDRDQUEyQjs7SUFBMEIsY0FBZ0I7SUFBaEIsbUNBQWdCO0lBRXJFLGVBQWE7SUFBYixnQ0FBYTtJQUNiLGVBQWM7SUFBZCxpQ0FBYzs7QURQbkYsTUFBTSxPQUFPLGlCQUFpQjtJQUw5QjtRQU1vQixVQUFLLEdBQVcsRUFBRSxDQUFDO1FBR2xCLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3JDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0tBZ0JwRDtJQVpVLFFBQVE7UUFDYixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFDLENBQUM7SUFDN0csQ0FBQztJQUVNLFdBQVcsQ0FBQyxJQUFVO1FBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxVQUFlO1FBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxVQUFVLENBQUM7UUFDcEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbkMsQ0FBQztrSEFwQlEsaUJBQWlCO29FQUFqQixpQkFBaUI7WUNMbEIsQUFESixBQURKLEFBRkosZ0NBQTJCLGVBRVMsWUFDQyxZQUNtQjtZQUFBLFlBQXlCOztZQUFBLGlCQUFLO1lBQzFFLDZCQUE0QztZQUFBLFlBQTBCOztZQUFBLGlCQUFLO1lBQzNFLDZCQUE0QztZQUFBLGFBQTJCOztZQUUvRSxBQURJLEFBRDJFLGlCQUFLLEVBQzNFLEVBQ0Q7WUFDUixpQ0FBaUM7WUFDL0Isc0ZBQStKOztZQVVySyxBQURJLGlCQUFRLEVBQ0o7WUFDUixtREFBd0c7WUFBL0UsZ0lBQWMsOEJBQTBCLElBQUM7WUFBc0MsaUJBQTBCOztZQWpCMUUsZUFBeUI7WUFBekIsa0RBQXlCO1lBQ3pCLGVBQTBCO1lBQTFCLG1EQUEwQjtZQUMxQixlQUEyQjtZQUEzQixxREFBMkI7WUFJakQsZUFBaUk7WUFBakksdUtBQWlJO1lBV2hHLGVBQW9DO1lBQXBDLHNEQUFvQzs7O2lGRFoxRixpQkFBaUI7Y0FMN0IsU0FBUzsyQkFDSSxrQkFBa0I7Z0JBS1osS0FBSztrQkFBcEIsS0FBSztZQUNVLGlCQUFpQjtrQkFBaEMsS0FBSztZQUNVLGFBQWE7a0JBQTVCLEtBQUs7WUFDVyxTQUFTO2tCQUF6QixNQUFNO1lBQ1UsVUFBVTtrQkFBMUIsTUFBTTs7a0ZBTEUsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGFnaW5hdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3VzZXIubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3h1aWxpYi11c2VyLWxpc3QnLFxuICAgIHN0eWxlVXJsczogWycuL3VzZXItbGlzdC5jb21wb25lbnQuc2NzcyddLFxuICAgIHRlbXBsYXRlVXJsOiAnLi91c2VyLWxpc3QuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKSBwdWJsaWMgdXNlcnM6IFVzZXJbXSA9IFtdO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBjdXJyZW50UGFnZU51bWJlcj86IG51bWJlcjtcbiAgICBASW5wdXQoKSBwdWJsaWMgcGFnZVRvdGFsU2l6ZT86IGFueTtcbiAgICBAT3V0cHV0KCkgcHVibGljIHVzZXJDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8VXNlcj4oKTtcbiAgICBAT3V0cHV0KCkgcHVibGljIHBhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBwdWJsaWMgcGFnaW5hdGlvbjogUGFnaW5hdGlvbjtcblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgIHRoaXMucGFnaW5hdGlvbiA9IHsgaXRlbXNQZXJQYWdlOiA1MCwgY3VycmVudFBhZ2U6IHRoaXMuY3VycmVudFBhZ2VOdW1iZXIsIHRvdGFsSXRlbXM6IHRoaXMucGFnZVRvdGFsU2l6ZX07XG4gICAgfVxuXG4gICAgcHVibGljIG9uVXNlckNsaWNrKHVzZXI6IFVzZXIpIHtcbiAgICAgIHRoaXMudXNlckNsaWNrLmVtaXQodXNlcik7XG4gICAgfVxuXG4gICAgcHVibGljIGVtaXRQYWdlQ2xpY2tFdmVudChwYWdlTnVtYmVyOiBhbnkpIHtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2VOdW1iZXIgPSBwYWdlTnVtYmVyO1xuICAgICAgdGhpcy5wYWdlQ2hhbmdlLmVtaXQocGFnZU51bWJlcik7XG4gICAgfVxufVxuIiwiPHRhYmxlIGNsYXNzPVwiZ292dWstdGFibGVcIj5cblxuICAgIDx0aGVhZCBjbGFzPVwiZ292dWstdGFibGVfX2hlYWRcIj5cbiAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICAgPHRoIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwiY29sXCI+e3snTmFtZScgfCBycHhUcmFuc2xhdGV9fTwvdGg+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJjb2xcIj57eydFbWFpbCcgfCBycHhUcmFuc2xhdGV9fTwvdGg+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJjb2xcIj57eydTdGF0dXMnIHwgcnB4VHJhbnNsYXRlfX08L3RoPlxuICAgICAgICA8L3RyPlxuICAgIDwvdGhlYWQ+XG4gICAgPHRib2R5IGNsYXNzPVwiZ292dWstdGFibGVfX2JvZHlcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHUgb2YgdXNlcnMgfCBwYWdpbmF0ZTogeyBpdGVtc1BlclBhZ2U6IHBhZ2luYXRpb24uaXRlbXNQZXJQYWdlLCBjdXJyZW50UGFnZTogY3VycmVudFBhZ2VOdW1iZXIsIHRvdGFsSXRlbXM6IHBhZ2luYXRpb24udG90YWxJdGVtcyB9XCI+XG4gICAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIiBkYXRhLXNlbGVjdG9yPVwidGFibGUtcm93XCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiIGRhdGEtc2VsZWN0b3I9XCJ0YWJsZS1jZWxsXCI+XG4gICAgICAgICAgICAgIDxhIGNsYXNzPVwiZ292dWstbGlua1wiIFthdHRyLnRpdGxlXT1cInUucm91dGVyTGlua1RpdGxlXCIgW3JvdXRlckxpbmtdPVwidS5yb3V0ZXJMaW5rXCIgKGNsaWNrKT1cIm9uVXNlckNsaWNrKHUpXCI+e3sgdS5mdWxsTmFtZSB9fTwvYT5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiIGRhdGEtc2VsZWN0b3I9XCJ0YWJsZS1jZWxsXCI+e3sgdS5lbWFpbCB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiIGRhdGEtc2VsZWN0b3I9XCJ0YWJsZS1jZWxsXCI+e3sgdS5zdGF0dXMgfX08L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC90Ym9keT5cbjwvdGFibGU+XG48eHVpbGliLWhtY3RzLXBhZ2luYXRpb24gKHBhZ2VDaGFuZ2UpPVwiZW1pdFBhZ2VDbGlja0V2ZW50KCRldmVudClcIiBbcGFnZVNpemVdPVwicGFnaW5hdGlvbi5pdGVtc1BlclBhZ2VcIj48L3h1aWxpYi1obWN0cy1wYWdpbmF0aW9uPlxuIl19
@@ -0,0 +1,94 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { FormControl } from '@angular/forms';
3
+ import { map } from 'rxjs/operators';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ import * as i2 from "@angular/forms";
7
+ import * as i3 from "@angular/material/legacy-autocomplete";
8
+ import * as i4 from "@angular/material/legacy-core";
9
+ import * as i5 from "rpx-xui-translation";
10
+ function UserSelectComponent_mat_option_4_Template(rf, ctx) { if (rf & 1) {
11
+ i0.ɵɵelementStart(0, "mat-option", 4);
12
+ i0.ɵɵtext(1);
13
+ i0.ɵɵpipe(2, "rpxTranslate");
14
+ i0.ɵɵpipe(3, "rpxTranslate");
15
+ i0.ɵɵelementEnd();
16
+ } if (rf & 2) {
17
+ const user_r2 = ctx.$implicit;
18
+ i0.ɵɵproperty("value", user_r2);
19
+ i0.ɵɵadvance();
20
+ i0.ɵɵtextInterpolate3(" ", i0.ɵɵpipeBind1(2, 4, user_r2.firstName), " ", i0.ɵɵpipeBind1(3, 6, user_r2.lastName), " - ", user_r2.email, " ");
21
+ } }
22
+ export class UserSelectComponent {
23
+ constructor() {
24
+ this.selected = new EventEmitter();
25
+ this.control = new FormControl();
26
+ }
27
+ ngOnInit() {
28
+ this.filteredUsers = this.control.valueChanges.pipe(map(value => typeof value === typeof 'string' ? this.filterUsers(value) : this.users));
29
+ // TEST-TODO
30
+ // these are changes made per ngModel 18 upgrade and may not be correct
31
+ // TODO: Confirm changes are correctly picked up post Angular 18 upgrade
32
+ this.control.valueChanges.subscribe(newUserValue => {
33
+ if (!newUserValue || !newUserValue.email) {
34
+ this.selected.emit(null);
35
+ }
36
+ });
37
+ }
38
+ displayValue(user) {
39
+ return user ? `${user.firstName} ${user.lastName} - ${user.email}` : '';
40
+ }
41
+ onSelected(e) {
42
+ this.selected.emit(e.option.value);
43
+ }
44
+ clear() {
45
+ this.control.setValue(null);
46
+ }
47
+ filterUsers(value) {
48
+ if (value) {
49
+ value = value.toLowerCase();
50
+ return this.users.filter(user => {
51
+ if (user.firstName.toLowerCase().includes(value)) {
52
+ return true;
53
+ }
54
+ if (user.lastName.toLowerCase().includes(value)) {
55
+ return true;
56
+ }
57
+ if (user.email.toLowerCase().includes(value)) {
58
+ return true;
59
+ }
60
+ return false;
61
+ });
62
+ }
63
+ return [];
64
+ }
65
+ static { this.ɵfac = function UserSelectComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || UserSelectComponent)(); }; }
66
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UserSelectComponent, selectors: [["xuilib-user-select"]], inputs: { users: "users" }, outputs: { selected: "selected" }, decls: 6, vars: 9, consts: [["dropdown", "matAutocomplete"], ["type", "text", 1, "govuk-input", 3, "matAutocomplete", "formControl"], ["autoActiveFirstOption", "", 3, "optionSelected", "displayWith"], [3, "value", 4, "ngFor", "ngForOf"], [3, "value"]], template: function UserSelectComponent_Template(rf, ctx) { if (rf & 1) {
67
+ const _r1 = i0.ɵɵgetCurrentView();
68
+ i0.ɵɵelement(0, "input", 1);
69
+ i0.ɵɵpipe(1, "rpxTranslate");
70
+ i0.ɵɵelementStart(2, "mat-autocomplete", 2, 0);
71
+ i0.ɵɵlistener("optionSelected", function UserSelectComponent_Template_mat_autocomplete_optionSelected_2_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onSelected($event)); });
72
+ i0.ɵɵtemplate(4, UserSelectComponent_mat_option_4_Template, 4, 8, "mat-option", 3);
73
+ i0.ɵɵpipe(5, "async");
74
+ i0.ɵɵelementEnd();
75
+ } if (rf & 2) {
76
+ const dropdown_r3 = i0.ɵɵreference(3);
77
+ i0.ɵɵproperty("matAutocomplete", dropdown_r3)("formControl", ctx.control);
78
+ i0.ɵɵattribute("aria-labelledby", i0.ɵɵpipeBind1(1, 5, "add-user-hint"));
79
+ i0.ɵɵadvance(2);
80
+ i0.ɵɵproperty("displayWith", ctx.displayValue);
81
+ i0.ɵɵadvance(2);
82
+ i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(5, 7, ctx.filteredUsers));
83
+ } }, dependencies: [i1.NgForOf, i2.DefaultValueAccessor, i2.NgControlStatus, i2.FormControlDirective, i3.MatLegacyAutocomplete, i3.MatLegacyAutocompleteTrigger, i4.MatLegacyOption, i1.AsyncPipe, i5.RpxTranslatePipe] }); }
84
+ }
85
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UserSelectComponent, [{
86
+ type: Component,
87
+ args: [{ selector: 'xuilib-user-select', template: "<input class=\"govuk-input\" type=\"text\" [matAutocomplete]=\"dropdown\" [formControl]=\"control\"\n [attr.aria-labelledby]=\"'add-user-hint' | rpxTranslate\">\n\n<mat-autocomplete #dropdown=\"matAutocomplete\" [displayWith]=\"displayValue\" autoActiveFirstOption (optionSelected)=\"onSelected($event)\">\n <mat-option *ngFor=\"let user of filteredUsers | async\" [value]=\"user\">\n {{ user.firstName | rpxTranslate }} {{ user.lastName | rpxTranslate }} - {{ user.email }}\n </mat-option>\n</mat-autocomplete>\n" }]
88
+ }], () => [], { users: [{
89
+ type: Input
90
+ }], selected: [{
91
+ type: Output
92
+ }] }); })();
93
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(UserSelectComponent, { className: "UserSelectComponent", filePath: "lib/components/user-select/user-select.component.ts", lineNumber: 13 }); })();
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh1aS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy91c2VyLXNlbGVjdC91c2VyLXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL3VzZXItc2VsZWN0L3VzZXItc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzdDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7SUNBbkMscUNBQXNFO0lBQ3BFLFlBQ0Y7OztJQUFBLGlCQUFhOzs7SUFGMEMsK0JBQWM7SUFDbkUsY0FDRjtJQURFLDJJQUNGOztBRE1GLE1BQU0sT0FBTyxtQkFBbUI7SUFVOUI7UUFOaUIsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFlLENBQUM7UUFJckQsWUFBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7SUFFbkIsQ0FBQztJQUVWLFFBQVE7UUFDYixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDakQsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxLQUFLLEtBQUssT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FDdEYsQ0FBQztRQUNGLFlBQVk7UUFDWix1RUFBdUU7UUFDdkUsd0VBQXdFO1FBQ3hFLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUNqRCxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUN6QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sWUFBWSxDQUFDLElBQWlCO1FBQ25DLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMxRSxDQUFDO0lBRU0sVUFBVSxDQUFDLENBQStCO1FBQy9DLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRU8sV0FBVyxDQUFDLEtBQWE7UUFDL0IsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLEtBQUssR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDNUIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDOUIsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUNqRCxPQUFPLElBQUksQ0FBQztnQkFDZCxDQUFDO2dCQUNELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDaEQsT0FBTyxJQUFJLENBQUM7Z0JBQ2QsQ0FBQztnQkFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQzdDLE9BQU8sSUFBSSxDQUFDO2dCQUNkLENBQUM7Z0JBQ0QsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7UUFDQyxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7b0hBdkRVLG1CQUFtQjtvRUFBbkIsbUJBQW1COztZQ1poQywyQkFDK0Q7O1lBRS9ELDhDQUF1STtZQUF0Qyx3S0FBa0Isc0JBQWtCLEtBQUM7WUFDcEksa0ZBQXNFOztZQUd4RSxpQkFBbUI7OztZQVBpRCxBQUE3Qiw2Q0FBNEIsNEJBQXdCOztZQUc3QyxlQUE0QjtZQUE1Qiw4Q0FBNEI7WUFDM0MsZUFBd0I7WUFBeEIsaUVBQXdCOzs7aUZEUTFDLG1CQUFtQjtjQUwvQixTQUFTOzJCQUNFLG9CQUFvQjtvQkFNZCxLQUFLO2tCQUFwQixLQUFLO1lBRVcsUUFBUTtrQkFBeEIsTUFBTTs7a0ZBSkksbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRMZWdhY3lBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50IGFzIE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFVzZXJEZXRhaWxzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3VzZXItZGV0YWlscy5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3h1aWxpYi11c2VyLXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi91c2VyLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3VzZXItc2VsZWN0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgVXNlclNlbGVjdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgcHVibGljIHVzZXJzOiBVc2VyRGV0YWlsc1tdO1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFVzZXJEZXRhaWxzPigpO1xuXG4gIHB1YmxpYyBmaWx0ZXJlZFVzZXJzOiBPYnNlcnZhYmxlPFVzZXJEZXRhaWxzW10+O1xuXG4gIHB1YmxpYyBjb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5maWx0ZXJlZFVzZXJzID0gdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgbWFwKHZhbHVlID0+IHR5cGVvZiB2YWx1ZSA9PT0gdHlwZW9mICdzdHJpbmcnID8gdGhpcy5maWx0ZXJVc2Vycyh2YWx1ZSkgOiB0aGlzLnVzZXJzKVxuICAgICk7XG4gICAgLy8gVEVTVC1UT0RPXG4gICAgLy8gdGhlc2UgYXJlIGNoYW5nZXMgbWFkZSBwZXIgbmdNb2RlbCAxOCB1cGdyYWRlIGFuZCBtYXkgbm90IGJlIGNvcnJlY3RcbiAgICAvLyBUT0RPOiBDb25maXJtIGNoYW5nZXMgYXJlIGNvcnJlY3RseSBwaWNrZWQgdXAgcG9zdCBBbmd1bGFyIDE4IHVwZ3JhZGVcbiAgICB0aGlzLmNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZShuZXdVc2VyVmFsdWUgPT4ge1xuICAgICAgaWYgKCFuZXdVc2VyVmFsdWUgfHwgIW5ld1VzZXJWYWx1ZS5lbWFpbCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkLmVtaXQobnVsbCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZGlzcGxheVZhbHVlKHVzZXI6IFVzZXJEZXRhaWxzKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdXNlciA/IGAke3VzZXIuZmlyc3ROYW1lfSAke3VzZXIubGFzdE5hbWV9IC0gJHt1c2VyLmVtYWlsfWAgOiAnJztcbiAgfVxuXG4gIHB1YmxpYyBvblNlbGVjdGVkKGU6IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQpIHtcbiAgICB0aGlzLnNlbGVjdGVkLmVtaXQoZS5vcHRpb24udmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGNsZWFyKCkge1xuICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZShudWxsKTtcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyVXNlcnModmFsdWU6IHN0cmluZyk6IFVzZXJEZXRhaWxzW10ge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdmFsdWUgPSB2YWx1ZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgcmV0dXJuIHRoaXMudXNlcnMuZmlsdGVyKHVzZXIgPT4ge1xuICAgICAgICBpZiAodXNlci5maXJzdE5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodXNlci5sYXN0TmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1c2VyLmVtYWlsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSk7XG4gIH1cbiAgICByZXR1cm4gW107XG4gIH1cbn1cbiIsIjxpbnB1dCBjbGFzcz1cImdvdnVrLWlucHV0XCIgdHlwZT1cInRleHRcIiBbbWF0QXV0b2NvbXBsZXRlXT1cImRyb3Bkb3duXCIgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInYWRkLXVzZXItaGludCcgfCBycHhUcmFuc2xhdGVcIj5cblxuPG1hdC1hdXRvY29tcGxldGUgI2Ryb3Bkb3duPVwibWF0QXV0b2NvbXBsZXRlXCIgW2Rpc3BsYXlXaXRoXT1cImRpc3BsYXlWYWx1ZVwiIGF1dG9BY3RpdmVGaXJzdE9wdGlvbiAob3B0aW9uU2VsZWN0ZWQpPVwib25TZWxlY3RlZCgkZXZlbnQpXCI+XG4gIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCB1c2VyIG9mIGZpbHRlcmVkVXNlcnMgfCBhc3luY1wiIFt2YWx1ZV09XCJ1c2VyXCI+XG4gICAge3sgdXNlci5maXJzdE5hbWUgfCBycHhUcmFuc2xhdGUgfX0ge3sgdXNlci5sYXN0TmFtZSB8IHJweFRyYW5zbGF0ZSB9fSAtIHt7IHVzZXIuZW1haWwgfX1cbiAgPC9tYXQtb3B0aW9uPlxuPC9tYXQtYXV0b2NvbXBsZXRlPlxuIl19
@@ -0,0 +1,342 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { FormControl, FormGroup } from '@angular/forms';
3
+ import { AddressMessageEnum } from '../../models';
4
+ import { AddressOption } from '../../models/address-option.model';
5
+ import { AddressService } from '../../services/address/address.service';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../../services/address/address.service";
8
+ import * as i2 from "@angular/common";
9
+ import * as i3 from "@angular/forms";
10
+ import * as i4 from "../write-address-inputs/write-address-inputs.component";
11
+ const _c0 = a0 => ({ "govuk-form-group--error": a0 });
12
+ const _c1 = a0 => ({ "govuk-input--error": a0 });
13
+ function WriteAddressFieldComponent_p_1_Template(rf, ctx) { if (rf & 1) {
14
+ i0.ɵɵelementStart(0, "p", 5)(1, "span", 6);
15
+ i0.ɵɵtext(2, "Error:");
16
+ i0.ɵɵelementEnd();
17
+ i0.ɵɵtext(3);
18
+ i0.ɵɵelementEnd();
19
+ } if (rf & 2) {
20
+ const ctx_r0 = i0.ɵɵnextContext();
21
+ i0.ɵɵadvance(3);
22
+ i0.ɵɵtextInterpolate1("", ctx_r0.optionErrorMessage, " ");
23
+ } }
24
+ function WriteAddressFieldComponent_div_2_p_8_Template(rf, ctx) { if (rf & 1) {
25
+ i0.ɵɵelementStart(0, "p", 5)(1, "span", 6);
26
+ i0.ɵɵtext(2, "Error:");
27
+ i0.ɵɵelementEnd();
28
+ i0.ɵɵtext(3);
29
+ i0.ɵɵelementEnd();
30
+ } if (rf & 2) {
31
+ const ctx_r0 = i0.ɵɵnextContext(2);
32
+ i0.ɵɵadvance(3);
33
+ i0.ɵɵtextInterpolate1("", ctx_r0.postcodeErrorMessage, " ");
34
+ } }
35
+ function WriteAddressFieldComponent_div_2_div_13_p_5_Template(rf, ctx) { if (rf & 1) {
36
+ i0.ɵɵelementStart(0, "p", 5)(1, "span", 6);
37
+ i0.ɵɵtext(2, "Error:");
38
+ i0.ɵɵelementEnd();
39
+ i0.ɵɵtext(3);
40
+ i0.ɵɵelementEnd();
41
+ } if (rf & 2) {
42
+ const ctx_r0 = i0.ɵɵnextContext(3);
43
+ i0.ɵɵadvance(3);
44
+ i0.ɵɵtextInterpolate1("", ctx_r0.selectErrorMessage, " ");
45
+ } }
46
+ function WriteAddressFieldComponent_div_2_div_13_option_7_Template(rf, ctx) { if (rf & 1) {
47
+ i0.ɵɵelementStart(0, "option", 22);
48
+ i0.ɵɵtext(1);
49
+ i0.ɵɵelementEnd();
50
+ } if (rf & 2) {
51
+ const addressOption_r4 = ctx.$implicit;
52
+ i0.ɵɵproperty("ngValue", addressOption_r4.value);
53
+ i0.ɵɵadvance();
54
+ i0.ɵɵtextInterpolate1(" ", addressOption_r4.description, " ");
55
+ } }
56
+ function WriteAddressFieldComponent_div_2_div_13_Template(rf, ctx) { if (rf & 1) {
57
+ const _r3 = i0.ɵɵgetCurrentView();
58
+ i0.ɵɵelementStart(0, "div", 16)(1, "div", 17)(2, "label", 18)(3, "span", 19);
59
+ i0.ɵɵtext(4, "Select an address");
60
+ i0.ɵɵelementEnd()();
61
+ i0.ɵɵtemplate(5, WriteAddressFieldComponent_div_2_div_13_p_5_Template, 4, 1, "p", 1);
62
+ i0.ɵɵelementStart(6, "select", 20);
63
+ i0.ɵɵlistener("change", function WriteAddressFieldComponent_div_2_div_13_Template_select_change_6_listener() { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.addressSelected()); });
64
+ i0.ɵɵtemplate(7, WriteAddressFieldComponent_div_2_div_13_option_7_Template, 2, 2, "option", 21);
65
+ i0.ɵɵelementEnd()()();
66
+ } if (rf & 2) {
67
+ const ctx_r0 = i0.ɵɵnextContext(2);
68
+ i0.ɵɵadvance();
69
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c0, ctx_r0.postcodeErrorPresent(false)));
70
+ i0.ɵɵadvance(4);
71
+ i0.ɵɵproperty("ngIf", ctx_r0.postcodeErrorPresent(false));
72
+ i0.ɵɵadvance(2);
73
+ i0.ɵɵproperty("ngForOf", ctx_r0.addressOptions);
74
+ } }
75
+ function WriteAddressFieldComponent_div_2_a_14_Template(rf, ctx) { if (rf & 1) {
76
+ const _r5 = i0.ɵɵgetCurrentView();
77
+ i0.ɵɵelementStart(0, "a", 23);
78
+ i0.ɵɵlistener("click", function WriteAddressFieldComponent_div_2_a_14_Template_a_click_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r0 = i0.ɵɵnextContext(2); ctx_r0.blankAddress(); return i0.ɵɵresetView($event.preventDefault()); });
79
+ i0.ɵɵtext(1, "I can't enter a UK postcode");
80
+ i0.ɵɵelementEnd();
81
+ } }
82
+ function WriteAddressFieldComponent_div_2_Template(rf, ctx) { if (rf & 1) {
83
+ const _r2 = i0.ɵɵgetCurrentView();
84
+ i0.ɵɵelementStart(0, "div")(1, "span", 7)(2, "strong");
85
+ i0.ɵɵtext(3, "Provide address details");
86
+ i0.ɵɵelementEnd()();
87
+ i0.ɵɵelementStart(4, "div", 8)(5, "label", 9)(6, "span", 10);
88
+ i0.ɵɵtext(7, "Enter a UK postcode");
89
+ i0.ɵɵelementEnd()();
90
+ i0.ɵɵtemplate(8, WriteAddressFieldComponent_div_2_p_8_Template, 4, 1, "p", 1);
91
+ i0.ɵɵelementStart(9, "div", 11);
92
+ i0.ɵɵelement(10, "input", 12);
93
+ i0.ɵɵelementStart(11, "button", 13);
94
+ i0.ɵɵlistener("click", function WriteAddressFieldComponent_div_2_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.findAddress()); });
95
+ i0.ɵɵtext(12, "Find address");
96
+ i0.ɵɵelementEnd()()();
97
+ i0.ɵɵtemplate(13, WriteAddressFieldComponent_div_2_div_13_Template, 8, 5, "div", 14)(14, WriteAddressFieldComponent_div_2_a_14_Template, 2, 0, "a", 15);
98
+ i0.ɵɵelementEnd();
99
+ } if (rf & 2) {
100
+ const ctx_r0 = i0.ɵɵnextContext();
101
+ i0.ɵɵadvance(4);
102
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(5, _c0, ctx_r0.missingPostcode || ctx_r0.postcodeErrorPresent(true)));
103
+ i0.ɵɵadvance(4);
104
+ i0.ɵɵproperty("ngIf", ctx_r0.missingPostcode || ctx_r0.postcodeErrorPresent(true));
105
+ i0.ɵɵadvance(2);
106
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(7, _c1, ctx_r0.missingPostcode));
107
+ i0.ɵɵadvance(3);
108
+ i0.ɵɵproperty("ngIf", ctx_r0.addressOptions);
109
+ i0.ɵɵadvance();
110
+ i0.ɵɵproperty("ngIf", !ctx_r0.shouldShowDetailFields() || !ctx_r0.startedInternational && !ctx_r0.addressChosen);
111
+ } }
112
+ function WriteAddressFieldComponent_div_3_xuilib_write_address_inputs_10_Template(rf, ctx) { if (rf & 1) {
113
+ i0.ɵɵelement(0, "xuilib-write-address-inputs", 31);
114
+ } if (rf & 2) {
115
+ const ctx_r0 = i0.ɵɵnextContext(2);
116
+ i0.ɵɵproperty("formGroup", ctx_r0.formGroup)("isInternational", ctx_r0.isInternational)("submissionAttempted", ctx_r0.submissionAttempted);
117
+ } }
118
+ function WriteAddressFieldComponent_div_3_Template(rf, ctx) { if (rf & 1) {
119
+ const _r6 = i0.ɵɵgetCurrentView();
120
+ i0.ɵɵelementStart(0, "div", 24)(1, "div", 25)(2, "input", 26);
121
+ i0.ɵɵlistener("click", function WriteAddressFieldComponent_div_3_Template_input_click_2_listener() { i0.ɵɵrestoreView(_r6); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.setInternationalAddress(false)); });
122
+ i0.ɵɵelementEnd();
123
+ i0.ɵɵelementStart(3, "label", 27);
124
+ i0.ɵɵtext(4, " Yes ");
125
+ i0.ɵɵelementEnd()();
126
+ i0.ɵɵelementStart(5, "div", 25)(6, "input", 28);
127
+ i0.ɵɵlistener("click", function WriteAddressFieldComponent_div_3_Template_input_click_6_listener() { i0.ɵɵrestoreView(_r6); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.setInternationalAddress(true)); });
128
+ i0.ɵɵelementEnd();
129
+ i0.ɵɵelementStart(7, "label", 29);
130
+ i0.ɵɵtext(8, " No ");
131
+ i0.ɵɵelementEnd()();
132
+ i0.ɵɵelementStart(9, "div", 30);
133
+ i0.ɵɵtemplate(10, WriteAddressFieldComponent_div_3_xuilib_write_address_inputs_10_Template, 1, 3, "xuilib-write-address-inputs", 4);
134
+ i0.ɵɵelementEnd()();
135
+ } if (rf & 2) {
136
+ const ctx_r0 = i0.ɵɵnextContext();
137
+ i0.ɵɵadvance(10);
138
+ i0.ɵɵproperty("ngIf", ctx_r0.isInternational !== undefined);
139
+ } }
140
+ function WriteAddressFieldComponent_xuilib_write_address_inputs_4_Template(rf, ctx) { if (rf & 1) {
141
+ i0.ɵɵelement(0, "xuilib-write-address-inputs", 31);
142
+ } if (rf & 2) {
143
+ const ctx_r0 = i0.ɵɵnextContext();
144
+ i0.ɵɵproperty("formGroup", ctx_r0.formGroup)("isInternational", false)("submissionAttempted", ctx_r0.submissionAttempted);
145
+ } }
146
+ export class WriteAddressFieldComponent {
147
+ constructor(addressesService) {
148
+ this.addressesService = addressesService;
149
+ this.internationalMode = false;
150
+ this.submissionAttempted = false;
151
+ this.addressChosen = false;
152
+ this.postcodeOptionSelected = new EventEmitter();
153
+ this.internationalModeStart = new EventEmitter();
154
+ this.ukAddressOptionSelected = new EventEmitter();
155
+ // indicated what error to display to user
156
+ this.canSelectAddress = new EventEmitter();
157
+ // tells parent to reset submission attempted field
158
+ // only relevant to when user re-clicks find address
159
+ this.resetSubmission = new EventEmitter();
160
+ this.addressField = {
161
+ addressLine1: '',
162
+ addressLine2: '',
163
+ addressLine3: '',
164
+ postCode: '',
165
+ postTown: '',
166
+ country: '',
167
+ county: ''
168
+ };
169
+ this.optionErrorsPresent = false;
170
+ this.addressSelectable = false;
171
+ this.missingPostcode = false;
172
+ this.optionErrorMessage = AddressMessageEnum.NO_OPTION_SELECTED;
173
+ this.postcodeErrorMessage = AddressMessageEnum.NO_POSTCODE_SELECTED;
174
+ this.selectErrorMessage = AddressMessageEnum.SELECT_ADDRESS;
175
+ }
176
+ ngOnInit() {
177
+ if (!this.formGroup.get('address')) {
178
+ this.formGroup.addControl('address', new FormControl({}));
179
+ }
180
+ // set the form group relevant to only the external parent component
181
+ this.addressFormGroup = new FormGroup({
182
+ // relevant to international mode
183
+ ukAddress: new FormControl(this.isInternational !== undefined ? (this.isInternational ? 'no' : 'yes') : null),
184
+ // relevant to postocode lookup
185
+ postcode: new FormControl(''),
186
+ addressList: new FormControl('')
187
+ });
188
+ this.setPostcodeForm();
189
+ }
190
+ findAddress() {
191
+ this.resetSubmission.emit();
192
+ if (!this.addressFormGroup.get('postcode').value) {
193
+ this.missingPostcode = true;
194
+ this.canSelectAddress.emit(false);
195
+ }
196
+ else {
197
+ this.missingPostcode = false;
198
+ this.addressField = null;
199
+ const postcode = this.addressFormGroup.get('postcode').value;
200
+ this.addressOptions = [];
201
+ this.addressesService.getAddressesForPostcode(postcode.replace(' ', '').toUpperCase()).subscribe(result => {
202
+ result.forEach(address => {
203
+ this.addressOptions.push(new AddressOption(address, null));
204
+ });
205
+ this.addressOptions.unshift(new AddressOption(undefined, this.defaultLabel(this.addressOptions.length)));
206
+ }, (error) => {
207
+ // Edited this so that errors not produced if there are no results for a postcode
208
+ console.log(`An error occurred retrieving addresses for postcode ${postcode}. ${error}`);
209
+ this.addressOptions.unshift(new AddressOption(undefined, this.defaultLabel(this.addressOptions.length)));
210
+ });
211
+ this.addressFormGroup.get('addressList').setValue(undefined);
212
+ }
213
+ }
214
+ blankAddress() {
215
+ this.setFormValue();
216
+ this.resetSubmission.emit();
217
+ if (this.internationalMode) {
218
+ this.internationalModeStart.emit();
219
+ }
220
+ }
221
+ shouldShowDetailFields() {
222
+ if (!this.formGroup.get('address')) {
223
+ return false;
224
+ }
225
+ const address = this.formGroup.get('address').value;
226
+ let hasAddress = false;
227
+ if (address) {
228
+ Object.keys(address).forEach((key) => {
229
+ if (address[key] !== null) {
230
+ hasAddress = true;
231
+ }
232
+ });
233
+ }
234
+ return hasAddress;
235
+ }
236
+ addressSelected() {
237
+ this.missingPostcode = false;
238
+ this.addressField = this.addressFormGroup.get('addressList').value;
239
+ this.addressChosen = true;
240
+ this.setFormValue();
241
+ this.postcodeOptionSelected.emit();
242
+ }
243
+ ngOnChanges(changes) {
244
+ const addressChange = changes['addressField'];
245
+ const internationalChange = changes['isInternational'];
246
+ if (addressChange) {
247
+ this.setFormValue();
248
+ }
249
+ if (internationalChange && this.addressFormGroup && this.addressFormGroup.get('ukAddress')) {
250
+ this.addressFormGroup.get('ukAddress').patchValue(this.isInternational ? 'no' : 'yes');
251
+ }
252
+ if (!this.addressChosen && this.addressFormGroup && this.addressFormGroup.get('addressList')) {
253
+ // resets address options on internal back
254
+ this.addressFormGroup.get('addressList').patchValue(undefined);
255
+ }
256
+ this.checkIfErrorsNeeded();
257
+ }
258
+ checkIfErrorsNeeded() {
259
+ if (this.submissionAttempted && this.internationalMode && !this.postcodeLookupVisible()) {
260
+ // ensure errors present when submission attmempted on international radio buttons
261
+ this.optionErrorsPresent = true;
262
+ this.optionErrorMessage = AddressMessageEnum.NO_OPTION_SELECTED;
263
+ }
264
+ else {
265
+ this.optionErrorsPresent = false;
266
+ }
267
+ if (this.optionErrorsPresent && (this.addressChosen || this.isInternational !== undefined)) {
268
+ // ensure parent errors not present when the child form group is present
269
+ this.optionErrorsPresent = false;
270
+ }
271
+ }
272
+ setInternationalAddress(isInternational) {
273
+ this.isInternational = isInternational;
274
+ this.ukAddressOptionSelected.emit(this.isInternational);
275
+ }
276
+ postcodeErrorPresent(isPostcodeField) {
277
+ const checkForField = isPostcodeField ? !this.addressSelectable : this.addressSelectable;
278
+ return this.submissionAttempted && checkForField;
279
+ }
280
+ postcodeLookupVisible() {
281
+ return !this.shouldShowDetailFields() || (!this.startedInternational && !this.addressChosen);
282
+ }
283
+ defaultLabel(numberOfAddresses) {
284
+ this.addressSelectable = numberOfAddresses > 0 ? true : false;
285
+ this.canSelectAddress.emit(this.addressSelectable);
286
+ return numberOfAddresses === 0 ? 'No address found'
287
+ : `${numberOfAddresses}${numberOfAddresses === 1 ? ' address ' : ' addresses '}found`;
288
+ }
289
+ setFormValue() {
290
+ if (this.formGroup) {
291
+ this.formGroup.get('address').patchValue(this.addressField);
292
+ }
293
+ }
294
+ setPostcodeForm() {
295
+ const postcodeNeeded = this.isInternational === undefined && this.formGroup.get('address') && this.formGroup.get('address').get('postCode');
296
+ this.addressFormGroup.get('postcode').patchValue(postcodeNeeded ? this.formGroup.get('address').get('postCode').value : '');
297
+ }
298
+ static { this.ɵfac = function WriteAddressFieldComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || WriteAddressFieldComponent)(i0.ɵɵdirectiveInject(i1.AddressService)); }; }
299
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: WriteAddressFieldComponent, selectors: [["xuilib-write-address-field"]], inputs: { formGroup: "formGroup", internationalMode: "internationalMode", isInternational: "isInternational", submissionAttempted: "submissionAttempted", startedInternational: "startedInternational", addressChosen: "addressChosen" }, outputs: { postcodeOptionSelected: "postcodeOptionSelected", internationalModeStart: "internationalModeStart", ukAddressOptionSelected: "ukAddressOptionSelected", canSelectAddress: "canSelectAddress", resetSubmission: "resetSubmission" }, features: [i0.ɵɵNgOnChangesFeature], decls: 5, vars: 8, consts: [[1, "govuk-form-group", 3, "formGroup", "ngClass"], ["class", "govuk-error-message", 4, "ngIf"], [4, "ngIf"], ["id", "govuk-radios", "class", "govuk-radios", "data-module", "govuk-radios", 4, "ngIf"], [3, "formGroup", "isInternational", "submissionAttempted", 4, "ngIf"], [1, "govuk-error-message"], [1, "govuk-visually-hidden"], [1, "govuk-label"], ["id", "addressLookup", 1, "govuk-body", "postcode-lookup", 3, "ngClass"], ["for", "postcodeInput"], [1, "govuk-hint"], [1, "govuk-body"], ["type", "text", "id", "postcodeInput", "name", "postcode", "formControlName", "postcode", 1, "govuk-input", "govuk-!-width-one-third", "postcodeinput", "inline-block", 3, "ngClass"], ["type", "button", 1, "govuk-button", "find-address", 3, "click"], ["class", "govuk-body", "id", "selectAddress", 4, "ngIf"], ["class", "manual-link govuk-link", "href", "#", 3, "click", 4, "ngIf"], ["id", "selectAddress", 1, "govuk-body"], [1, "govuk-body", 3, "ngClass"], ["for", "addressList", 1, "govuk-label"], [1, "form-label"], ["id", "addressList", "name", "address", "formControlName", "addressList", "focusElement", "", 1, "form-control", "govuk-select", "ccd-dropdown", "addressList", 3, "change"], [3, "ngValue", 4, "ngFor", "ngForOf"], [3, "ngValue"], ["href", "#", 1, "manual-link", "govuk-link", 3, "click"], ["id", "govuk-radios", "data-module", "govuk-radios", 1, "govuk-radios"], [1, "govuk-radios__item"], ["id", "yes", "value", "yes", "name", "ukAddress", "type", "radio", "data-aria-controls", "address-fields", "formControlName", "ukAddress", 1, "govuk-radios__input", 3, "click"], ["for", "yes", 1, "govuk-label", "govuk-radios__label"], ["id", "no", "value", "no", "name", "ukAddress", "type", "radio", "data-aria-controls", "address-fields", "formControlName", "ukAddress", 1, "govuk-radios__input", 3, "click"], ["for", "no", 1, "govuk-label", "govuk-radios__label"], ["id", "address-fields", 1, "govuk-radios__conditional"], [3, "formGroup", "isInternational", "submissionAttempted"]], template: function WriteAddressFieldComponent_Template(rf, ctx) { if (rf & 1) {
300
+ i0.ɵɵelementStart(0, "div", 0);
301
+ i0.ɵɵtemplate(1, WriteAddressFieldComponent_p_1_Template, 4, 1, "p", 1)(2, WriteAddressFieldComponent_div_2_Template, 15, 9, "div", 2)(3, WriteAddressFieldComponent_div_3_Template, 11, 1, "div", 3)(4, WriteAddressFieldComponent_xuilib_write_address_inputs_4_Template, 1, 3, "xuilib-write-address-inputs", 4);
302
+ i0.ɵɵelementEnd();
303
+ } if (rf & 2) {
304
+ i0.ɵɵproperty("formGroup", ctx.addressFormGroup)("ngClass", i0.ɵɵpureFunction1(6, _c0, ctx.optionErrorsPresent));
305
+ i0.ɵɵadvance();
306
+ i0.ɵɵproperty("ngIf", ctx.optionErrorsPresent);
307
+ i0.ɵɵadvance();
308
+ i0.ɵɵproperty("ngIf", ctx.postcodeLookupVisible());
309
+ i0.ɵɵadvance();
310
+ i0.ɵɵproperty("ngIf", ctx.shouldShowDetailFields() && ctx.internationalMode && ctx.startedInternational && !ctx.addressChosen);
311
+ i0.ɵɵadvance();
312
+ i0.ɵɵproperty("ngIf", ctx.shouldShowDetailFields() && (ctx.addressChosen || !ctx.internationalMode));
313
+ } }, dependencies: [i2.NgClass, i2.NgForOf, i2.NgIf, i3.NgSelectOption, i3.ɵNgSelectMultipleOption, i3.DefaultValueAccessor, i3.SelectControlValueAccessor, i3.RadioControlValueAccessor, i3.NgControlStatus, i3.NgControlStatusGroup, i3.FormGroupDirective, i3.FormControlName, i4.WriteAddressInputsComponent], styles: [".manual-link[_ngcontent-%COMP%]{cursor:pointer;display:block;text-decoration:underline;font-size:1.1875rem}.postcode-lookup[_ngcontent-%COMP%]{margin-bottom:-20px}.find-address[_ngcontent-%COMP%]{left:1%}[_nghost-%COMP%]{display:block}"] }); }
314
+ }
315
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(WriteAddressFieldComponent, [{
316
+ type: Component,
317
+ args: [{ selector: 'xuilib-write-address-field', template: "<div class=\"govuk-form-group\" [formGroup]=\"addressFormGroup\"\n [ngClass]=\"{'govuk-form-group--error': optionErrorsPresent}\">\n <p class=\"govuk-error-message\" *ngIf=\"optionErrorsPresent\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{optionErrorMessage}}\n </p>\n <div *ngIf=\"postcodeLookupVisible()\">\n <span class=\"govuk-label\"><strong>Provide address details</strong></span>\n <div class=\"govuk-body postcode-lookup\" id=\"addressLookup\"\n [ngClass]=\"{'govuk-form-group--error': missingPostcode || postcodeErrorPresent(true)}\">\n <label for=\"postcodeInput\">\n <span class=\"govuk-hint\">Enter a UK postcode</span>\n </label>\n <p class=\"govuk-error-message\" *ngIf=\"missingPostcode || postcodeErrorPresent(true)\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{postcodeErrorMessage}}\n </p>\n <div class=\"govuk-body\">\n <input type=\"text\" [ngClass]=\"{'govuk-input--error': missingPostcode}\" id=\"postcodeInput\" name=\"postcode\"\n class=\"govuk-input govuk-!-width-one-third postcodeinput inline-block\" formControlName=\"postcode\">\n <button type=\"button\" class=\"govuk-button find-address\" (click)=\"findAddress()\">Find address</button>\n </div>\n </div>\n\n <div class=\"govuk-body\" *ngIf=\"addressOptions\" id=\"selectAddress\">\n <div class=\"govuk-body\" [ngClass]=\"{'govuk-form-group--error': postcodeErrorPresent(false)}\">\n <label class=\"govuk-label\" for=\"addressList\">\n <span class=\"form-label\">Select an address</span>\n </label>\n <p class=\"govuk-error-message\" *ngIf=\"postcodeErrorPresent(false)\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{selectErrorMessage}}\n </p>\n <select class=\"form-control govuk-select ccd-dropdown addressList\" id=\"addressList\" name=\"address\"\n formControlName=\"addressList\" (change)=\"addressSelected()\" focusElement>\n <option *ngFor=\"let addressOption of addressOptions\" [ngValue]=\"addressOption.value\">\n {{addressOption.description}}\n </option>\n </select>\n </div>\n </div>\n\n <a class=\"manual-link govuk-link\" *ngIf=\"!shouldShowDetailFields() || (!startedInternational && !addressChosen)\"\n (click)=\"blankAddress(); $event.preventDefault()\" href=\"#\">I can't enter a UK postcode</a>\n </div>\n\n <div id=\"govuk-radios\" class=\"govuk-radios\" data-module=\"govuk-radios\"\n *ngIf=\"shouldShowDetailFields() && internationalMode && startedInternational && !addressChosen\">\n <div class=\"govuk-radios__item\">\n <input class=\"govuk-radios__input\" id=\"yes\" value=\"yes\" name=\"ukAddress\" type=\"radio\"\n data-aria-controls=\"address-fields\" (click)=\"setInternationalAddress(false)\" formControlName=\"ukAddress\">\n <label class=\"govuk-label govuk-radios__label\" for=\"yes\">\n Yes\n </label>\n </div>\n <div class=\"govuk-radios__item\">\n <input class=\"govuk-radios__input\" id=\"no\" value=\"no\" name=\"ukAddress\" type=\"radio\"\n data-aria-controls=\"address-fields\" (click)=\"setInternationalAddress(true)\" formControlName=\"ukAddress\">\n <label class=\"govuk-label govuk-radios__label\" for=\"no\">\n No\n </label>\n </div>\n <div class=\"govuk-radios__conditional\" id=\"address-fields\">\n <xuilib-write-address-inputs *ngIf=\"isInternational !== undefined\" [formGroup]=\"formGroup\"\n [isInternational]=\"isInternational\" [submissionAttempted]=\"submissionAttempted\">\n </xuilib-write-address-inputs>\n </div>\n </div>\n\n <xuilib-write-address-inputs *ngIf=\"shouldShowDetailFields() && (addressChosen || !internationalMode)\"\n [formGroup]=\"formGroup\" [isInternational]=\"false\" [submissionAttempted]=\"submissionAttempted\">\n </xuilib-write-address-inputs>\n\n</div>", styles: [".manual-link{cursor:pointer;display:block;text-decoration:underline;font-size:1.1875rem}.postcode-lookup{margin-bottom:-20px}.find-address{left:1%}:host{display:block}\n"] }]
318
+ }], () => [{ type: i1.AddressService }], { formGroup: [{
319
+ type: Input
320
+ }], internationalMode: [{
321
+ type: Input
322
+ }], isInternational: [{
323
+ type: Input
324
+ }], submissionAttempted: [{
325
+ type: Input
326
+ }], startedInternational: [{
327
+ type: Input
328
+ }], addressChosen: [{
329
+ type: Input
330
+ }], postcodeOptionSelected: [{
331
+ type: Output
332
+ }], internationalModeStart: [{
333
+ type: Output
334
+ }], ukAddressOptionSelected: [{
335
+ type: Output
336
+ }], canSelectAddress: [{
337
+ type: Output
338
+ }], resetSubmission: [{
339
+ type: Output
340
+ }] }); })();
341
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(WriteAddressFieldComponent, { className: "WriteAddressFieldComponent", filePath: "lib/components/write-address/write-address.component.ts", lineNumber: 12 }); })();
342
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtYWRkcmVzcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL3dyaXRlLWFkZHJlc3Mvd3JpdGUtYWRkcmVzcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL3dyaXRlLWFkZHJlc3Mvd3JpdGUtYWRkcmVzcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDekcsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQWdCLE1BQU0sY0FBYyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7Ozs7OztJQ0RwRSxBQURGLDRCQUEyRCxjQUNyQjtJQUFBLHNCQUFNO0lBQUEsaUJBQU87SUFBQSxZQUNuRDtJQUFBLGlCQUFJOzs7SUFEK0MsZUFDbkQ7SUFEbUQseURBQ25EOzs7SUFTTSxBQURGLDRCQUFxRixjQUMvQztJQUFBLHNCQUFNO0lBQUEsaUJBQU87SUFBQSxZQUNuRDtJQUFBLGlCQUFJOzs7SUFEK0MsZUFDbkQ7SUFEbUQsMkRBQ25EOzs7SUFjSSxBQURGLDRCQUFtRSxjQUM3QjtJQUFBLHNCQUFNO0lBQUEsaUJBQU87SUFBQSxZQUNuRDtJQUFBLGlCQUFJOzs7SUFEK0MsZUFDbkQ7SUFEbUQseURBQ25EOzs7SUFHRSxrQ0FBcUY7SUFDbkYsWUFDRjtJQUFBLGlCQUFTOzs7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eUI7WUFBekIsOENBQXlCO1lBR25ELGNBQTZCO1lBQTdCLGtEQUE2QjtZQXVDaEMsY0FBNkY7WUFBN0YsOEhBQTZGO1lBc0JsRSxjQUF1RTtZQUF2RSxvR0FBdUU7OztpRkR2RDFGLDBCQUEwQjtjQUx0QyxTQUFTOzJCQUNFLDRCQUE0QjsrQ0FPL0IsU0FBUztrQkFEZixLQUFLO1lBR0MsaUJBQWlCO2tCQUR2QixLQUFLO1lBR0MsZUFBZTtrQkFEckIsS0FBSztZQUdDLG1CQUFtQjtrQkFEekIsS0FBSztZQUdDLG9CQUFvQjtrQkFEMUIsS0FBSztZQUdDLGFBQWE7a0JBRG5CLEtBQUs7WUFHVyxzQkFBc0I7a0JBQXRDLE1BQU07WUFDVSxzQkFBc0I7a0JBQXRDLE1BQU07WUFDVSx1QkFBdUI7a0JBQXZDLE1BQU07WUFFVSxnQkFBZ0I7a0JBQWhDLE1BQU07WUFHVSxlQUFlO2tCQUEvQixNQUFNOztrRkF0QkksMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWRkcmVzc01lc3NhZ2VFbnVtLCBBZGRyZXNzTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgQWRkcmVzc09wdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9hZGRyZXNzLW9wdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBBZGRyZXNzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FkZHJlc3MvYWRkcmVzcy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAneHVpbGliLXdyaXRlLWFkZHJlc3MtZmllbGQnLFxuICBzdHlsZVVybHM6IFsnLi93cml0ZS1hZGRyZXNzLmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi93cml0ZS1hZGRyZXNzLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBXcml0ZUFkZHJlc3NGaWVsZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpbnRlcm5hdGlvbmFsTW9kZSA9IGZhbHNlO1xuICBASW5wdXQoKVxuICBwdWJsaWMgaXNJbnRlcm5hdGlvbmFsOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc3VibWlzc2lvbkF0dGVtcHRlZCA9IGZhbHNlO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc3RhcnRlZEludGVybmF0aW9uYWw6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhZGRyZXNzQ2hvc2VuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIHB1YmxpYyBwb3N0Y29kZU9wdGlvblNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgcHVibGljIGludGVybmF0aW9uYWxNb2RlU3RhcnQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgdWtBZGRyZXNzT3B0aW9uU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIC8vIGluZGljYXRlZCB3aGF0IGVycm9yIHRvIGRpc3BsYXkgdG8gdXNlclxuICBAT3V0cHV0KCkgcHVibGljIGNhblNlbGVjdEFkZHJlc3MgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIC8vIHRlbGxzIHBhcmVudCB0byByZXNldCBzdWJtaXNzaW9uIGF0dGVtcHRlZCBmaWVsZFxuICAvLyBvbmx5IHJlbGV2YW50IHRvIHdoZW4gdXNlciByZS1jbGlja3MgZmluZCBhZGRyZXNzXG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVzZXRTdWJtaXNzaW9uID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHB1YmxpYyBhZGRyZXNzRmllbGQ6IEFkZHJlc3NNb2RlbCA9IHtcbiAgICBhZGRyZXNzTGluZTE6ICcnLFxuICAgIGFkZHJlc3NMaW5lMjogJycsXG4gICAgYWRkcmVzc0xpbmUzOiAnJyxcbiAgICBwb3N0Q29kZTogJycsXG4gICAgcG9zdFRvd246ICcnLFxuICAgIGNvdW50cnk6ICcnLFxuICAgIGNvdW50eTogJydcbiAgfTtcblxuICBwdWJsaWMgb3B0aW9uRXJyb3JzUHJlc2VudCA9IGZhbHNlO1xuICBwdWJsaWMgYWRkcmVzc1NlbGVjdGFibGUgPSBmYWxzZTtcblxuICBwdWJsaWMgYWRkcmVzc0Zvcm1Hcm91cDogRm9ybUdyb3VwO1xuXG4gIHB1YmxpYyBhZGRyZXNzT3B0aW9uczogQWRkcmVzc09wdGlvbltdO1xuXG4gIHB1YmxpYyBtaXNzaW5nUG9zdGNvZGUgPSBmYWxzZTtcblxuICBwdWJsaWMgb3B0aW9uRXJyb3JNZXNzYWdlID0gQWRkcmVzc01lc3NhZ2VFbnVtLk5PX09QVElPTl9TRUxFQ1RFRDtcbiAgcHVibGljIHBvc3Rjb2RlRXJyb3JNZXNzYWdlID0gQWRkcmVzc01lc3NhZ2VFbnVtLk5PX1BPU1RDT0RFX1NFTEVDVEVEO1xuICBwdWJsaWMgc2VsZWN0RXJyb3JNZXNzYWdlID0gQWRkcmVzc01lc3NhZ2VFbnVtLlNFTEVDVF9BRERSRVNTO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYWRkcmVzc2VzU2VydmljZTogQWRkcmVzc1NlcnZpY2UpIHtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZm9ybUdyb3VwLmdldCgnYWRkcmVzcycpKSB7XG4gICAgICB0aGlzLmZvcm1Hcm91cC5hZGRDb250cm9sKCdhZGRyZXNzJywgbmV3IEZvcm1Db250cm9sKHt9KSk7XG4gICAgfVxuICAgIC8vIHNldCB0aGUgZm9ybSBncm91cCByZWxldmFudCB0byBvbmx5IHRoZSBleHRlcm5hbCBwYXJlbnQgY29tcG9uZW50XG4gICAgdGhpcy5hZGRyZXNzRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAvLyByZWxldmFudCB0byBpbnRlcm5hdGlvbmFsIG1vZGVcbiAgICAgIHVrQWRkcmVzczogbmV3IEZvcm1Db250cm9sKHRoaXMuaXNJbnRlcm5hdGlvbmFsICE9PSB1bmRlZmluZWQgPyAodGhpcy5pc0ludGVybmF0aW9uYWwgPyAnbm8nIDogJ3llcycpIDogbnVsbCksXG4gICAgICAvLyByZWxldmFudCB0byBwb3N0b2NvZGUgbG9va3VwXG4gICAgICBwb3N0Y29kZTogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgICAgIGFkZHJlc3NMaXN0OiBuZXcgRm9ybUNvbnRyb2woJycpXG4gICAgfSk7XG4gICAgdGhpcy5zZXRQb3N0Y29kZUZvcm0oKTtcbiAgfVxuXG4gIHB1YmxpYyBmaW5kQWRkcmVzcygpIHtcbiAgICB0aGlzLnJlc2V0U3VibWlzc2lvbi5lbWl0KCk7XG4gICAgaWYgKCF0aGlzLmFkZHJlc3NGb3JtR3JvdXAuZ2V0KCdwb3N0Y29kZScpLnZhbHVlKSB7XG4gICAgICB0aGlzLm1pc3NpbmdQb3N0Y29kZSA9IHRydWU7XG4gICAgICB0aGlzLmNhblNlbGVjdEFkZHJlc3MuZW1pdChmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWlzc2luZ1Bvc3Rjb2RlID0gZmFsc2U7XG4gICAgICB0aGlzLmFkZHJlc3NGaWVsZCA9IG51bGw7XG4gICAgICBjb25zdCBwb3N0Y29kZSA9IHRoaXMuYWRkcmVzc0Zvcm1Hcm91cC5nZXQoJ3Bvc3Rjb2RlJykudmFsdWU7XG4gICAgICB0aGlzLmFkZHJlc3NPcHRpb25zID0gW107XG4gICAgICB0aGlzLmFkZHJlc3Nlc1NlcnZpY2UuZ2V0QWRkcmVzc2VzRm9yUG9zdGNvZGUocG9zdGNvZGUucmVwbGFjZSgnICcsICcnKS50b1VwcGVyQ2FzZSgpKS5zdWJzY3JpYmUoXG4gICAgICAgIHJlc3VsdCA9PiB7XG4gICAgICAgICAgcmVzdWx0LmZvckVhY2goXG4gICAgICAgICAgICBhZGRyZXNzID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5hZGRyZXNzT3B0aW9ucy5wdXNoKG5ldyBBZGRyZXNzT3B0aW9uKGFkZHJlc3MsIG51bGwpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuYWRkcmVzc09wdGlvbnMudW5zaGlmdChcbiAgICAgICAgICAgIG5ldyBBZGRyZXNzT3B0aW9uKHVuZGVmaW5lZCwgdGhpcy5kZWZhdWx0TGFiZWwodGhpcy5hZGRyZXNzT3B0aW9ucy5sZW5ndGgpKVxuICAgICAgICAgICk7XG4gICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgIC8vIEVkaXRlZCB0aGlzIHNvIHRoYXQgZXJyb3JzIG5vdCBwcm9kdWNlZCBpZiB0aGVyZSBhcmUgbm8gcmVzdWx0cyBmb3IgYSBwb3N0Y29kZVxuICAgICAgICAgIGNvbnNvbGUubG9nKGBBbiBlcnJvciBvY2N1cnJlZCByZXRyaWV2aW5nIGFkZHJlc3NlcyBmb3IgcG9zdGNvZGUgJHtwb3N0Y29kZX0uICR7ZXJyb3J9YCk7XG4gICAgICAgICAgdGhpcy5hZGRyZXNzT3B0aW9ucy51bnNoaWZ0KFxuICAgICAgICAgICAgbmV3IEFkZHJlc3NPcHRpb24odW5kZWZpbmVkLCB0aGlzLmRlZmF1bHRMYWJlbCh0aGlzLmFkZHJlc3NPcHRpb25zLmxlbmd0aCkpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB0aGlzLmFkZHJlc3NGb3JtR3JvdXAuZ2V0KCdhZGRyZXNzTGlzdCcpLnNldFZhbHVlKHVuZGVmaW5lZCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGJsYW5rQWRkcmVzcygpIHtcbiAgICB0aGlzLnNldEZvcm1WYWx1ZSgpO1xuICAgIHRoaXMucmVzZXRTdWJtaXNzaW9uLmVtaXQoKTtcbiAgICBpZiAodGhpcy5pbnRlcm5hdGlvbmFsTW9kZSkge1xuICAgICAgdGhpcy5pbnRlcm5hdGlvbmFsTW9kZVN0YXJ0LmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2hvdWxkU2hvd0RldGFpbEZpZWxkcygpIHtcbiAgICBpZiAoIXRoaXMuZm9ybUdyb3VwLmdldCgnYWRkcmVzcycpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGFkZHJlc3MgPSB0aGlzLmZvcm1Hcm91cC5nZXQoJ2FkZHJlc3MnKS52YWx1ZTtcbiAgICBsZXQgaGFzQWRkcmVzcyA9IGZhbHNlO1xuICAgIGlmIChhZGRyZXNzKSB7XG4gICAgICBPYmplY3Qua2V5cyhhZGRyZXNzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgaWYgKGFkZHJlc3Nba2V5XSAhPT0gbnVsbCkge1xuICAgICAgICAgIGhhc0FkZHJlc3MgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGhhc0FkZHJlc3M7XG4gIH1cblxuICBwdWJsaWMgYWRkcmVzc1NlbGVjdGVkKCkge1xuICAgIHRoaXMubWlzc2luZ1Bvc3Rjb2RlID0gZmFsc2U7XG4gICAgdGhpcy5hZGRyZXNzRmllbGQgPSB0aGlzLmFkZHJlc3NGb3JtR3JvdXAuZ2V0KCdhZGRyZXNzTGlzdCcpLnZhbHVlO1xuICAgIHRoaXMuYWRkcmVzc0Nob3NlbiA9IHRydWU7XG4gICAgdGhpcy5zZXRGb3JtVmFsdWUoKTtcbiAgICB0aGlzLnBvc3Rjb2RlT3B0aW9uU2VsZWN0ZWQuZW1pdCgpO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBjb25zdCBhZGRyZXNzQ2hhbmdlID0gY2hhbmdlc1snYWRkcmVzc0ZpZWxkJ107XG4gICAgY29uc3QgaW50ZXJuYXRpb25hbENoYW5nZSA9IGNoYW5nZXNbJ2lzSW50ZXJuYXRpb25hbCddO1xuICAgIGlmIChhZGRyZXNzQ2hhbmdlKSB7XG4gICAgICB0aGlzLnNldEZvcm1WYWx1ZSgpO1xuICAgIH1cbiAgICBpZiAoaW50ZXJuYXRpb25hbENoYW5nZSAmJiB0aGlzLmFkZHJlc3NGb3JtR3JvdXAgJiYgdGhpcy5hZGRyZXNzRm9ybUdyb3VwLmdldCgndWtBZGRyZXNzJykpIHtcbiAgICAgIHRoaXMuYWRkcmVzc0Zvcm1Hcm91cC5nZXQoJ3VrQWRkcmVzcycpLnBhdGNoVmFsdWUodGhpcy5pc0ludGVybmF0aW9uYWwgPyAnbm8nIDogJ3llcycpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuYWRkcmVzc0Nob3NlbiAmJiB0aGlzLmFkZHJlc3NGb3JtR3JvdXAgJiYgdGhpcy5hZGRyZXNzRm9ybUdyb3VwLmdldCgnYWRkcmVzc0xpc3QnKSkge1xuICAgICAgLy8gcmVzZXRzIGFkZHJlc3Mgb3B0aW9ucyBvbiBpbnRlcm5hbCBiYWNrXG4gICAgICB0aGlzLmFkZHJlc3NGb3JtR3JvdXAuZ2V0KCdhZGRyZXNzTGlzdCcpLnBhdGNoVmFsdWUodW5kZWZpbmVkKTtcbiAgICB9XG4gICAgdGhpcy5jaGVja0lmRXJyb3JzTmVlZGVkKCk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrSWZFcnJvcnNOZWVkZWQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3VibWlzc2lvbkF0dGVtcHRlZCAmJiB0aGlzLmludGVybmF0aW9uYWxNb2RlICYmICF0aGlzLnBvc3Rjb2RlTG9va3VwVmlzaWJsZSgpKSB7XG4gICAgICAvLyBlbnN1cmUgZXJyb3JzIHByZXNlbnQgd2hlbiBzdWJtaXNzaW9uIGF0dG1lbXB0ZWQgb24gaW50ZXJuYXRpb25hbCByYWRpbyBidXR0b25zXG4gICAgICB0aGlzLm9wdGlvbkVycm9yc1ByZXNlbnQgPSB0cnVlO1xuICAgICAgdGhpcy5vcHRpb25FcnJvck1lc3NhZ2UgPSBBZGRyZXNzTWVzc2FnZUVudW0uTk9fT1BUSU9OX1NFTEVDVEVEO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMub3B0aW9uRXJyb3JzUHJlc2VudCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhpcy5vcHRpb25FcnJvcnNQcmVzZW50ICYmICh0aGlzLmFkZHJlc3NDaG9zZW4gfHwgdGhpcy5pc0ludGVybmF0aW9uYWwgIT09IHVuZGVmaW5lZCkpIHtcbiAgICAgIC8vIGVuc3VyZSBwYXJlbnQgZXJyb3JzIG5vdCBwcmVzZW50IHdoZW4gdGhlIGNoaWxkIGZvcm0gZ3JvdXAgaXMgcHJlc2VudFxuICAgICAgdGhpcy5vcHRpb25FcnJvcnNQcmVzZW50ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldEludGVybmF0aW9uYWxBZGRyZXNzKGlzSW50ZXJuYXRpb25hbDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuaXNJbnRlcm5hdGlvbmFsID0gaXNJbnRlcm5hdGlvbmFsO1xuICAgIHRoaXMudWtBZGRyZXNzT3B0aW9uU2VsZWN0ZWQuZW1pdCh0aGlzLmlzSW50ZXJuYXRpb25hbCk7XG4gIH1cblxuICBwdWJsaWMgcG9zdGNvZGVFcnJvclByZXNlbnQoaXNQb3N0Y29kZUZpZWxkOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY2hlY2tGb3JGaWVsZCA9IGlzUG9zdGNvZGVGaWVsZCA/ICF0aGlzLmFkZHJlc3NTZWxlY3RhYmxlIDogdGhpcy5hZGRyZXNzU2VsZWN0YWJsZTtcbiAgICByZXR1cm4gdGhpcy5zdWJtaXNzaW9uQXR0ZW1wdGVkICYmIGNoZWNrRm9yRmllbGQ7XG4gIH1cblxuICBwdWJsaWMgcG9zdGNvZGVMb29rdXBWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5zaG91bGRTaG93RGV0YWlsRmllbGRzKCkgfHwgKCF0aGlzLnN0YXJ0ZWRJbnRlcm5hdGlvbmFsICYmICF0aGlzLmFkZHJlc3NDaG9zZW4pO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWZhdWx0TGFiZWwobnVtYmVyT2ZBZGRyZXNzZXM6IG51bWJlcikge1xuICAgIHRoaXMuYWRkcmVzc1NlbGVjdGFibGUgPSBudW1iZXJPZkFkZHJlc3NlcyA+IDAgPyB0cnVlIDogZmFsc2U7XG4gICAgdGhpcy5jYW5TZWxlY3RBZGRyZXNzLmVtaXQodGhpcy5hZGRyZXNzU2VsZWN0YWJsZSk7XG4gICAgcmV0dXJuIG51bWJlck9mQWRkcmVzc2VzID09PSAwID8gJ05vIGFkZHJlc3MgZm91bmQnXG4gICAgICA6IGAke251bWJlck9mQWRkcmVzc2VzfSR7bnVtYmVyT2ZBZGRyZXNzZXMgPT09IDEgPyAnIGFkZHJlc3MgJyA6ICcgYWRkcmVzc2VzICd9Zm91bmRgO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRGb3JtVmFsdWUoKSB7XG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwKSB7XG4gICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoJ2FkZHJlc3MnKS5wYXRjaFZhbHVlKFxuICAgICAgICB0aGlzLmFkZHJlc3NGaWVsZFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFBvc3Rjb2RlRm9ybSgpOiB2b2lkIHtcbiAgICBjb25zdCBwb3N0Y29kZU5lZWRlZCA9IHRoaXMuaXNJbnRlcm5hdGlvbmFsID09PSB1bmRlZmluZWQgJiYgdGhpcy5mb3JtR3JvdXAuZ2V0KCdhZGRyZXNzJykgJiYgdGhpcy5mb3JtR3JvdXAuZ2V0KCdhZGRyZXNzJykuZ2V0KCdwb3N0Q29kZScpO1xuICAgIHRoaXMuYWRkcmVzc0Zvcm1Hcm91cC5nZXQoJ3Bvc3Rjb2RlJykucGF0Y2hWYWx1ZShwb3N0Y29kZU5lZWRlZCA/IHRoaXMuZm9ybUdyb3VwLmdldCgnYWRkcmVzcycpLmdldCgncG9zdENvZGUnKS52YWx1ZSA6ICcnKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImdvdnVrLWZvcm0tZ3JvdXBcIiBbZm9ybUdyb3VwXT1cImFkZHJlc3NGb3JtR3JvdXBcIlxuICBbbmdDbGFzc109XCJ7J2dvdnVrLWZvcm0tZ3JvdXAtLWVycm9yJzogb3B0aW9uRXJyb3JzUHJlc2VudH1cIj5cbiAgPHAgY2xhc3M9XCJnb3Z1ay1lcnJvci1tZXNzYWdlXCIgKm5nSWY9XCJvcHRpb25FcnJvcnNQcmVzZW50XCI+XG4gICAgPHNwYW4gY2xhc3M9XCJnb3Z1ay12aXN1YWxseS1oaWRkZW5cIj5FcnJvcjo8L3NwYW4+e3tvcHRpb25FcnJvck1lc3NhZ2V9fVxuICA8L3A+XG4gIDxkaXYgKm5nSWY9XCJwb3N0Y29kZUxvb2t1cFZpc2libGUoKVwiPlxuICAgIDxzcGFuIGNsYXNzPVwiZ292dWstbGFiZWxcIj48c3Ryb25nPlByb3ZpZGUgYWRkcmVzcyBkZXRhaWxzPC9zdHJvbmc+PC9zcGFuPlxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ib2R5IHBvc3Rjb2RlLWxvb2t1cFwiIGlkPVwiYWRkcmVzc0xvb2t1cFwiXG4gICAgICBbbmdDbGFzc109XCJ7J2dvdnVrLWZvcm0tZ3JvdXAtLWVycm9yJzogbWlzc2luZ1Bvc3Rjb2RlIHx8IHBvc3Rjb2RlRXJyb3JQcmVzZW50KHRydWUpfVwiPlxuICAgICAgPGxhYmVsIGZvcj1cInBvc3Rjb2RlSW5wdXRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJnb3Z1ay1oaW50XCI+RW50ZXIgYSBVSyBwb3N0Y29kZTwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgICA8cCBjbGFzcz1cImdvdnVrLWVycm9yLW1lc3NhZ2VcIiAqbmdJZj1cIm1pc3NpbmdQb3N0Y29kZSB8fCBwb3N0Y29kZUVycm9yUHJlc2VudCh0cnVlKVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImdvdnVrLXZpc3VhbGx5LWhpZGRlblwiPkVycm9yOjwvc3Bhbj57e3Bvc3Rjb2RlRXJyb3JNZXNzYWdlfX1cbiAgICAgIDwvcD5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ib2R5XCI+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFtuZ0NsYXNzXT1cInsnZ292dWstaW5wdXQtLWVycm9yJzogbWlzc2luZ1Bvc3Rjb2RlfVwiIGlkPVwicG9zdGNvZGVJbnB1dFwiIG5hbWU9XCJwb3N0Y29kZVwiXG4gICAgICAgICAgY2xhc3M9XCJnb3Z1ay1pbnB1dCBnb3Z1ay0hLXdpZHRoLW9uZS10aGlyZCBwb3N0Y29kZWlucHV0IGlubGluZS1ibG9ja1wiIGZvcm1Db250cm9sTmFtZT1cInBvc3Rjb2RlXCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiZ292dWstYnV0dG9uIGZpbmQtYWRkcmVzc1wiIChjbGljayk9XCJmaW5kQWRkcmVzcygpXCI+RmluZCBhZGRyZXNzPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ib2R5XCIgKm5nSWY9XCJhZGRyZXNzT3B0aW9uc1wiIGlkPVwic2VsZWN0QWRkcmVzc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWJvZHlcIiBbbmdDbGFzc109XCJ7J2dvdnVrLWZvcm0tZ3JvdXAtLWVycm9yJzogcG9zdGNvZGVFcnJvclByZXNlbnQoZmFsc2UpfVwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbFwiIGZvcj1cImFkZHJlc3NMaXN0XCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb3JtLWxhYmVsXCI+U2VsZWN0IGFuIGFkZHJlc3M8L3NwYW4+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxwIGNsYXNzPVwiZ292dWstZXJyb3ItbWVzc2FnZVwiICpuZ0lmPVwicG9zdGNvZGVFcnJvclByZXNlbnQoZmFsc2UpXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJnb3Z1ay12aXN1YWxseS1oaWRkZW5cIj5FcnJvcjo8L3NwYW4+e3tzZWxlY3RFcnJvck1lc3NhZ2V9fVxuICAgICAgICA8L3A+XG4gICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZ292dWstc2VsZWN0IGNjZC1kcm9wZG93biBhZGRyZXNzTGlzdFwiIGlkPVwiYWRkcmVzc0xpc3RcIiBuYW1lPVwiYWRkcmVzc1wiXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYWRkcmVzc0xpc3RcIiAoY2hhbmdlKT1cImFkZHJlc3NTZWxlY3RlZCgpXCIgZm9jdXNFbGVtZW50PlxuICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGFkZHJlc3NPcHRpb24gb2YgYWRkcmVzc09wdGlvbnNcIiBbbmdWYWx1ZV09XCJhZGRyZXNzT3B0aW9uLnZhbHVlXCI+XG4gICAgICAgICAgICB7e2FkZHJlc3NPcHRpb24uZGVzY3JpcHRpb259fVxuICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGEgY2xhc3M9XCJtYW51YWwtbGluayBnb3Z1ay1saW5rXCIgKm5nSWY9XCIhc2hvdWxkU2hvd0RldGFpbEZpZWxkcygpIHx8ICghc3RhcnRlZEludGVybmF0aW9uYWwgJiYgIWFkZHJlc3NDaG9zZW4pXCJcbiAgICAgIChjbGljayk9XCJibGFua0FkZHJlc3MoKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIiBocmVmPVwiI1wiPkkgY2FuJ3QgZW50ZXIgYSBVSyBwb3N0Y29kZTwvYT5cbiAgPC9kaXY+XG5cbiAgPGRpdiBpZD1cImdvdnVrLXJhZGlvc1wiIGNsYXNzPVwiZ292dWstcmFkaW9zXCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1yYWRpb3NcIlxuICAgICpuZ0lmPVwic2hvdWxkU2hvd0RldGFpbEZpZWxkcygpICYmIGludGVybmF0aW9uYWxNb2RlICYmIHN0YXJ0ZWRJbnRlcm5hdGlvbmFsICYmICFhZGRyZXNzQ2hvc2VuXCI+XG4gICAgPGRpdiBjbGFzcz1cImdvdnVrLXJhZGlvc19faXRlbVwiPlxuICAgICAgPGlucHV0IGNsYXNzPVwiZ292dWstcmFkaW9zX19pbnB1dFwiIGlkPVwieWVzXCIgdmFsdWU9XCJ5ZXNcIiBuYW1lPVwidWtBZGRyZXNzXCIgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgZGF0YS1hcmlhLWNvbnRyb2xzPVwiYWRkcmVzcy1maWVsZHNcIiAoY2xpY2spPVwic2V0SW50ZXJuYXRpb25hbEFkZHJlc3MoZmFsc2UpXCIgZm9ybUNvbnRyb2xOYW1lPVwidWtBZGRyZXNzXCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1yYWRpb3NfX2xhYmVsXCIgZm9yPVwieWVzXCI+XG4gICAgICAgIFllc1xuICAgICAgPC9sYWJlbD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZ292dWstcmFkaW9zX19pdGVtXCI+XG4gICAgICA8aW5wdXQgY2xhc3M9XCJnb3Z1ay1yYWRpb3NfX2lucHV0XCIgaWQ9XCJub1wiIHZhbHVlPVwibm9cIiBuYW1lPVwidWtBZGRyZXNzXCIgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgZGF0YS1hcmlhLWNvbnRyb2xzPVwiYWRkcmVzcy1maWVsZHNcIiAoY2xpY2spPVwic2V0SW50ZXJuYXRpb25hbEFkZHJlc3ModHJ1ZSlcIiBmb3JtQ29udHJvbE5hbWU9XCJ1a0FkZHJlc3NcIj5cbiAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLXJhZGlvc19fbGFiZWxcIiBmb3I9XCJub1wiPlxuICAgICAgICBOb1xuICAgICAgPC9sYWJlbD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZ292dWstcmFkaW9zX19jb25kaXRpb25hbFwiIGlkPVwiYWRkcmVzcy1maWVsZHNcIj5cbiAgICAgIDx4dWlsaWItd3JpdGUtYWRkcmVzcy1pbnB1dHMgKm5nSWY9XCJpc0ludGVybmF0aW9uYWwgIT09IHVuZGVmaW5lZFwiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCJcbiAgICAgICAgW2lzSW50ZXJuYXRpb25hbF09XCJpc0ludGVybmF0aW9uYWxcIiBbc3VibWlzc2lvbkF0dGVtcHRlZF09XCJzdWJtaXNzaW9uQXR0ZW1wdGVkXCI+XG4gICAgICA8L3h1aWxpYi13cml0ZS1hZGRyZXNzLWlucHV0cz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPHh1aWxpYi13cml0ZS1hZGRyZXNzLWlucHV0cyAqbmdJZj1cInNob3VsZFNob3dEZXRhaWxGaWVsZHMoKSAmJiAoYWRkcmVzc0Nob3NlbiB8fCAhaW50ZXJuYXRpb25hbE1vZGUpXCJcbiAgICBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiIFtpc0ludGVybmF0aW9uYWxdPVwiZmFsc2VcIiBbc3VibWlzc2lvbkF0dGVtcHRlZF09XCJzdWJtaXNzaW9uQXR0ZW1wdGVkXCI+XG4gIDwveHVpbGliLXdyaXRlLWFkZHJlc3MtaW5wdXRzPlxuXG48L2Rpdj4iXX0=