@hmcts/rpx-xui-common-lib 3.0.4 → 3.0.15-alpha-4

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 (207) hide show
  1. package/{esm2022 → esm2020}/lib/components/accessibility/accessibility.component.mjs +4 -4
  2. package/{esm2022 → esm2020}/lib/components/checkbox-list/checkbox-list.component.mjs +4 -4
  3. package/{esm2022 → esm2020}/lib/components/contact-details/contact-details.component.mjs +4 -4
  4. package/{esm2022 → esm2020}/lib/components/cookie-banner/cookie-banner.component.mjs +4 -4
  5. package/{esm2022 → esm2020}/lib/components/due-date/due-date.component.mjs +4 -4
  6. package/{esm2022 → esm2020}/lib/components/exui-main-wrapper/exui-page-wrapper.component.mjs +4 -4
  7. package/{esm2022 → esm2020}/lib/components/find-location/find-location.component.mjs +4 -4
  8. package/{esm2022 → esm2020}/lib/components/find-person/find-person.component.mjs +4 -4
  9. package/{esm2022 → esm2020}/lib/components/find-service/find-service.component.mjs +4 -4
  10. package/{esm2022 → esm2020}/lib/components/find-task-name/find-task-name.component.mjs +4 -4
  11. package/{esm2022 → esm2020}/lib/components/generic-filter/generic-filter.component.mjs +4 -4
  12. package/{esm2022 → esm2020}/lib/components/hmcts-session-dialog/hmcts-session-dialog.component.mjs +4 -4
  13. package/{esm2022 → esm2020}/lib/components/invite-user-form/invite-user-form.component.mjs +4 -4
  14. package/{esm2022 → esm2020}/lib/components/invite-user-permissions/invite-user-permission.component.mjs +4 -4
  15. package/{esm2022 → esm2020}/lib/components/loading-spinner/loading-spinner.component.mjs +4 -4
  16. package/{esm2022 → esm2020}/lib/components/pagination/pagination.component.mjs +4 -4
  17. package/{esm2022 → esm2020}/lib/components/search-judicials/search-judicials.component.mjs +4 -4
  18. package/{esm2022 → esm2020}/lib/components/search-location/search-location.component.mjs +11 -11
  19. package/{esm2022 → esm2020}/lib/components/search-service/search-service.component.mjs +4 -4
  20. package/{esm2022 → esm2020}/lib/components/search-venue/search-venue.component.mjs +4 -4
  21. package/{esm2022 → esm2020}/lib/components/selected-case/selected-case.component.mjs +4 -4
  22. package/{esm2022 → esm2020}/lib/components/selected-case-confirm/selected-case-confirm.component.mjs +4 -4
  23. package/{esm2022 → esm2020}/lib/components/selected-case-list/selected-case-list.component.mjs +4 -4
  24. package/{esm2022 → esm2020}/lib/components/service-message/service-message.component.mjs +4 -4
  25. package/{esm2022 → esm2020}/lib/components/service-messages/service-messages.component.mjs +4 -4
  26. package/{esm2022 → esm2020}/lib/components/share-case/share-case.component.mjs +4 -4
  27. package/{esm2022 → esm2020}/lib/components/share-case-confirm/share-case-confirm.component.mjs +4 -4
  28. package/{esm2022 → esm2020}/lib/components/tab/tab.component.mjs +4 -4
  29. package/{esm2022 → esm2020}/lib/components/tc-confirm/tc-confirm.component.mjs +4 -4
  30. package/{esm2022 → esm2020}/lib/components/terms-and-conditions/tc-display/tc-display-html/tc-display-html.component.mjs +4 -4
  31. package/{esm2022 → esm2020}/lib/components/terms-and-conditions/tc-display/tc-display-plain/tc-display-plain.component.mjs +4 -4
  32. package/{esm2022 → esm2020}/lib/components/terms-and-conditions/terms-and-conditions.component.mjs +4 -4
  33. package/{esm2022 → esm2020}/lib/components/user-details/user-details.component.mjs +4 -4
  34. package/esm2020/lib/components/user-list/user-list.component.mjs +40 -0
  35. package/{esm2022 → esm2020}/lib/components/user-select/user-select.component.mjs +4 -4
  36. package/{esm2022 → esm2020}/lib/directives/feature-toggle/feature-toggle.directive.mjs +8 -8
  37. package/{esm2022 → esm2020}/lib/directives/let/let.directive.mjs +4 -4
  38. package/esm2020/lib/exui-common-lib.module.mjs +300 -0
  39. package/{esm2022 → esm2020}/lib/gov-ui/components/gov-uk-checkbox/gov-uk-checkbox.component.mjs +4 -4
  40. package/{esm2022 → esm2020}/lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.mjs +4 -4
  41. package/{esm2022 → esm2020}/lib/gov-ui/components/gov-uk-date/gov-uk-date.component.mjs +4 -4
  42. package/{esm2022 → esm2020}/lib/gov-ui/components/gov-uk-error-message/gov-uk-error-message.component.mjs +4 -4
  43. package/{esm2022 → esm2020}/lib/gov-ui/components/gov-uk-fieldset/gov-uk-fieldset.component.mjs +4 -4
  44. package/{esm2022 → esm2020}/lib/gov-ui/components/gov-uk-file-upload/gov-uk-file-upload.component.mjs +4 -4
  45. package/esm2020/lib/gov-ui/components/gov-uk-form-group-wrapper/gov-uk-form-group-wrapper.component.mjs +28 -0
  46. package/{esm2022 → esm2020}/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.mjs +4 -4
  47. package/{esm2022 → esm2020}/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.mjs +4 -4
  48. package/{esm2022 → esm2020}/lib/gov-ui/components/gov-uk-radio/gov-uk-radio.component.mjs +4 -4
  49. package/{esm2022 → esm2020}/lib/gov-ui/components/gov-uk-radios/gov-uk-radios.component.mjs +4 -4
  50. package/{esm2022 → esm2020}/lib/gov-ui/components/gov-uk-select/gov-uk-select.component.mjs +4 -4
  51. package/{esm2022 → esm2020}/lib/gov-ui/components/gov-uk-table/gov-uk-table.component.mjs +4 -4
  52. package/{esm2022 → esm2020}/lib/gov-ui/components/gov-uk-textarea/gov-uk-textarea.component.mjs +4 -4
  53. package/{esm2022 → esm2020}/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.mjs +4 -4
  54. package/{esm2022 → esm2020}/lib/gov-ui/components/hmcts-error-summary/hmcts-error-summary.component.mjs +7 -7
  55. package/esm2020/lib/gov-ui/components/hmcts-identity-bar/hmcts-identity-bar.component.mjs +18 -0
  56. package/{esm2022 → esm2020}/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.mjs +7 -7
  57. package/{esm2022 → esm2020}/lib/gov-ui/components/hmcts-pagination/hmcts-pagination.component.mjs +4 -4
  58. package/{esm2022 → esm2020}/lib/gov-ui/components/hmcts-primary-navigation/hmcts-primary-navigation.component.mjs +6 -6
  59. package/{esm2022 → esm2020}/lib/gov-ui/components/hmcts-sub-navigation/hmcts-sub-navigation.component.mjs +4 -4
  60. package/{esm2022 → esm2020}/lib/gov-ui/directives/remove-host.directive.mjs +4 -4
  61. package/{esm2022 → esm2020}/lib/gov-ui/gov-ui.service.mjs +4 -4
  62. package/{esm2022 → esm2020}/lib/pipes/capitalize/capitalize.pipe.mjs +4 -4
  63. package/esm2020/lib/services/case-sharing-state/case-sharing-state.service.mjs +170 -0
  64. package/{esm2022 → esm2020}/lib/services/cookie/cookie.service.mjs +4 -4
  65. package/{esm2022 → esm2020}/lib/services/feature-toggle/feature-toggle.guard.mjs +4 -4
  66. package/{esm2022 → esm2020}/lib/services/feature-toggle/feature-toggle.service.mjs +4 -4
  67. package/{esm2022 → esm2020}/lib/services/feature-toggle/launch-darkly.service.mjs +4 -4
  68. package/{esm2022 → esm2020}/lib/services/filter/filter.service.mjs +4 -4
  69. package/esm2020/lib/services/find-person/find-person.service.mjs +111 -0
  70. package/{esm2022 → esm2020}/lib/services/google-analytics/google-analytics.service.mjs +4 -4
  71. package/{esm2022 → esm2020}/lib/services/google-tag-manager/google-tag-manager.service.mjs +4 -4
  72. package/{esm2022 → esm2020}/lib/services/loading/loading.service.mjs +4 -4
  73. package/{esm2022 → esm2020}/lib/services/locations/location.service.mjs +4 -4
  74. package/{esm2022 → esm2020}/lib/services/manage-session/manage-session.services.mjs +4 -4
  75. package/esm2020/lib/services/ref-data/ref-data-data-access/ref-data-data-access.service.mjs +33 -0
  76. package/{esm2022 → esm2020}/lib/services/ref-data/ref-data.service.mjs +4 -4
  77. package/{esm2022 → esm2020}/lib/services/role-guard/role.guard.mjs +4 -4
  78. package/{esm2022 → esm2020}/lib/services/role-guard/role.service.mjs +4 -4
  79. package/{esm2022 → esm2020}/lib/services/storage/session-storage/session-storage.service.mjs +4 -4
  80. package/esm2020/lib/services/task-name/task-name.service.mjs +33 -0
  81. package/{esm2022 → esm2020}/lib/services/timeout-notifications/timeout-notifications.service.mjs +4 -4
  82. package/fesm2015/hmcts-rpx-xui-common-lib.mjs +5024 -0
  83. package/fesm2015/hmcts-rpx-xui-common-lib.mjs.map +1 -0
  84. package/{fesm2022 → fesm2020}/hmcts-rpx-xui-common-lib.mjs +431 -425
  85. package/fesm2020/hmcts-rpx-xui-common-lib.mjs.map +1 -0
  86. package/lib/components/checkbox-list/checkbox-list.component.d.ts +1 -1
  87. package/lib/components/contact-details/contact-details.component.d.ts +1 -1
  88. package/lib/components/cookie-banner/cookie-banner.component.d.ts +1 -1
  89. package/lib/components/due-date/due-date.component.d.ts +1 -1
  90. package/lib/components/exui-main-wrapper/exui-page-wrapper.component.d.ts +1 -1
  91. package/lib/components/find-location/find-location.component.d.ts +1 -1
  92. package/lib/components/find-person/find-person.component.d.ts +1 -1
  93. package/lib/components/find-service/find-service.component.d.ts +1 -1
  94. package/lib/components/find-task-name/find-task-name.component.d.ts +1 -1
  95. package/lib/components/generic-filter/generic-filter.component.d.ts +1 -1
  96. package/lib/components/hmcts-session-dialog/hmcts-session-dialog.component.d.ts +1 -1
  97. package/lib/components/invite-user-form/invite-user-form.component.d.ts +1 -1
  98. package/lib/components/invite-user-permissions/invite-user-permission.component.d.ts +1 -1
  99. package/lib/components/loading-spinner/loading-spinner.component.d.ts +1 -1
  100. package/lib/components/pagination/pagination.component.d.ts +1 -1
  101. package/lib/components/search-judicials/search-judicials.component.d.ts +1 -1
  102. package/lib/components/search-location/search-location.component.d.ts +1 -1
  103. package/lib/components/search-service/search-service.component.d.ts +1 -1
  104. package/lib/components/search-venue/search-venue.component.d.ts +1 -1
  105. package/lib/components/selected-case/selected-case.component.d.ts +1 -1
  106. package/lib/components/selected-case-confirm/selected-case-confirm.component.d.ts +1 -1
  107. package/lib/components/selected-case-list/selected-case-list.component.d.ts +1 -1
  108. package/lib/components/service-message/service-message.component.d.ts +1 -1
  109. package/lib/components/service-messages/service-messages.component.d.ts +1 -1
  110. package/lib/components/share-case/share-case.component.d.ts +1 -1
  111. package/lib/components/share-case-confirm/share-case-confirm.component.d.ts +1 -1
  112. package/lib/components/tab/tab.component.d.ts +1 -1
  113. package/lib/components/tc-confirm/tc-confirm.component.d.ts +1 -1
  114. package/lib/components/terms-and-conditions/terms-and-conditions.component.d.ts +1 -1
  115. package/lib/components/user-details/user-details.component.d.ts +1 -1
  116. package/lib/components/user-list/user-list.component.d.ts +1 -1
  117. package/lib/components/user-select/user-select.component.d.ts +1 -1
  118. package/lib/directives/feature-toggle/feature-toggle.directive.d.ts +1 -1
  119. package/lib/directives/let/let.directive.d.ts +1 -1
  120. package/lib/exui-common-lib.module.d.ts +2 -1
  121. package/lib/gov-ui/components/gov-uk-checkbox/gov-uk-checkbox.component.d.ts +1 -1
  122. package/lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.d.ts +1 -1
  123. package/lib/gov-ui/components/gov-uk-date/gov-uk-date.component.d.ts +1 -1
  124. package/lib/gov-ui/components/gov-uk-error-message/gov-uk-error-message.component.d.ts +1 -1
  125. package/lib/gov-ui/components/gov-uk-fieldset/gov-uk-fieldset.component.d.ts +1 -1
  126. package/lib/gov-ui/components/gov-uk-file-upload/gov-uk-file-upload.component.d.ts +1 -1
  127. package/lib/gov-ui/components/gov-uk-form-group-wrapper/gov-uk-form-group-wrapper.component.d.ts +1 -1
  128. package/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.d.ts +1 -1
  129. package/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.d.ts +1 -1
  130. package/lib/gov-ui/components/gov-uk-radio/gov-uk-radio.component.d.ts +1 -1
  131. package/lib/gov-ui/components/gov-uk-radios/gov-uk-radios.component.d.ts +1 -1
  132. package/lib/gov-ui/components/gov-uk-select/gov-uk-select.component.d.ts +1 -1
  133. package/lib/gov-ui/components/gov-uk-table/gov-uk-table.component.d.ts +1 -1
  134. package/lib/gov-ui/components/gov-uk-textarea/gov-uk-textarea.component.d.ts +1 -1
  135. package/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.d.ts +1 -1
  136. package/lib/gov-ui/components/hmcts-error-summary/hmcts-error-summary.component.d.ts +1 -1
  137. package/lib/gov-ui/components/hmcts-identity-bar/hmcts-identity-bar.component.d.ts +1 -1
  138. package/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.d.ts +1 -1
  139. package/lib/gov-ui/components/hmcts-pagination/hmcts-pagination.component.d.ts +1 -1
  140. package/lib/gov-ui/components/hmcts-primary-navigation/hmcts-primary-navigation.component.d.ts +1 -1
  141. package/lib/gov-ui/components/hmcts-sub-navigation/hmcts-sub-navigation.component.d.ts +1 -1
  142. package/lib/models/feature-user.d.ts +1 -1
  143. package/lib/models/filter.model.d.ts +2 -2
  144. package/lib/services/feature-toggle/feature-toggle.guard.d.ts +2 -2
  145. package/lib/services/role-guard/role.guard.d.ts +2 -2
  146. package/lib/services/role-guard/role.service.d.ts +2 -2
  147. package/package.json +11 -5
  148. package/esm2022/lib/components/user-list/user-list.component.mjs +0 -36
  149. package/esm2022/lib/exui-common-lib.module.mjs +0 -295
  150. package/esm2022/lib/gov-ui/components/gov-uk-form-group-wrapper/gov-uk-form-group-wrapper.component.mjs +0 -27
  151. package/esm2022/lib/gov-ui/components/hmcts-identity-bar/hmcts-identity-bar.component.mjs +0 -18
  152. package/esm2022/lib/services/case-sharing-state/case-sharing-state.service.mjs +0 -170
  153. package/esm2022/lib/services/find-person/find-person.service.mjs +0 -111
  154. package/esm2022/lib/services/ref-data/ref-data-data-access/ref-data-data-access.service.mjs +0 -33
  155. package/esm2022/lib/services/task-name/task-name.service.mjs +0 -33
  156. package/fesm2022/hmcts-rpx-xui-common-lib.mjs.map +0 -1
  157. /package/{esm2022 → esm2020}/hmcts-rpx-xui-common-lib.mjs +0 -0
  158. /package/{esm2022 → esm2020}/lib/components/generic-filter/generic-filter-utils.mjs +0 -0
  159. /package/{esm2022 → esm2020}/lib/components/index.mjs +0 -0
  160. /package/{esm2022 → esm2020}/lib/components/public_api.mjs +0 -0
  161. /package/{esm2022 → esm2020}/lib/directives/index.mjs +0 -0
  162. /package/{esm2022 → esm2020}/lib/directives/public-api.mjs +0 -0
  163. /package/{esm2022 → esm2020}/lib/gov-ui/components/hmcts-banner/hmcts-banner-info.interface.mjs +0 -0
  164. /package/{esm2022 → esm2020}/lib/gov-ui/components/index.mjs +0 -0
  165. /package/{esm2022 → esm2020}/lib/gov-ui/components/public_api.mjs +0 -0
  166. /package/{esm2022 → esm2020}/lib/gov-ui/index.mjs +0 -0
  167. /package/{esm2022 → esm2020}/lib/gov-ui/models/checkboxes-model.mjs +0 -0
  168. /package/{esm2022 → esm2020}/lib/gov-ui/models/error-messages-model.mjs +0 -0
  169. /package/{esm2022 → esm2020}/lib/gov-ui/models/gov-ui-config-model.mjs +0 -0
  170. /package/{esm2022 → esm2020}/lib/gov-ui/models/index.mjs +0 -0
  171. /package/{esm2022 → esm2020}/lib/gov-ui/models/isession-storage.interface.mjs +0 -0
  172. /package/{esm2022 → esm2020}/lib/gov-ui/models/public_api.mjs +0 -0
  173. /package/{esm2022 → esm2020}/lib/gov-ui/models/radio-buttons.model.mjs +0 -0
  174. /package/{esm2022 → esm2020}/lib/gov-ui/public_api.mjs +0 -0
  175. /package/{esm2022 → esm2020}/lib/gov-ui/util/helpers/html-templates.helper.mjs +0 -0
  176. /package/{esm2022 → esm2020}/lib/gov-ui/util/session-storage/session-storage-utils.mjs +0 -0
  177. /package/{esm2022 → esm2020}/lib/gov-ui/validators/checkboxes-be-checked.validator.mjs +0 -0
  178. /package/{esm2022 → esm2020}/lib/gov-ui/validators/date.validator.mjs +0 -0
  179. /package/{esm2022 → esm2020}/lib/gov-ui/validators/index.mjs +0 -0
  180. /package/{esm2022 → esm2020}/lib/gov-ui/validators/public_api.mjs +0 -0
  181. /package/{esm2022 → esm2020}/lib/gov-ui/validators/radio-group.validator.mjs +0 -0
  182. /package/{esm2022 → esm2020}/lib/models/case-share.model.mjs +0 -0
  183. /package/{esm2022 → esm2020}/lib/models/contact-details.model.mjs +0 -0
  184. /package/{esm2022 → esm2020}/lib/models/due-date.model.mjs +0 -0
  185. /package/{esm2022 → esm2020}/lib/models/feature-user.mjs +0 -0
  186. /package/{esm2022 → esm2020}/lib/models/filter.model.mjs +0 -0
  187. /package/{esm2022 → esm2020}/lib/models/idle-config.model.mjs +0 -0
  188. /package/{esm2022 → esm2020}/lib/models/index.mjs +0 -0
  189. /package/{esm2022 → esm2020}/lib/models/location.model.mjs +0 -0
  190. /package/{esm2022 → esm2020}/lib/models/pagination.model.mjs +0 -0
  191. /package/{esm2022 → esm2020}/lib/models/person.model.mjs +0 -0
  192. /package/{esm2022 → esm2020}/lib/models/public_api.mjs +0 -0
  193. /package/{esm2022 → esm2020}/lib/models/search-options.model.mjs +0 -0
  194. /package/{esm2022 → esm2020}/lib/models/task-name.model.mjs +0 -0
  195. /package/{esm2022 → esm2020}/lib/models/tcDocument.model.mjs +0 -0
  196. /package/{esm2022 → esm2020}/lib/models/timeout-notification.model.mjs +0 -0
  197. /package/{esm2022 → esm2020}/lib/models/user-details.model.mjs +0 -0
  198. /package/{esm2022 → esm2020}/lib/models/user.model.mjs +0 -0
  199. /package/{esm2022 → esm2020}/lib/pipes/index.mjs +0 -0
  200. /package/{esm2022 → esm2020}/lib/services/index.mjs +0 -0
  201. /package/{esm2022 → esm2020}/lib/services/public-api.mjs +0 -0
  202. /package/{esm2022 → esm2020}/lib/services/ref-data/index.mjs +0 -0
  203. /package/{esm2022 → esm2020}/lib/services/ref-data/models/ref-data-htmcs-service.model.mjs +0 -0
  204. /package/{esm2022 → esm2020}/lib/services/ref-data/models/ref-data-region.model.mjs +0 -0
  205. /package/{esm2022 → esm2020}/lib/services/ref-data/ref-data-data-access/models/ref-data-locations-by-service-code-response.model.mjs +0 -0
  206. /package/{esm2022 → esm2020}/lib/window.mjs +0 -0
  207. /package/{esm2022 → esm2020}/public-api.mjs +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hmcts-rpx-xui-common-lib.mjs","sources":["../../../projects/exui-common-lib/src/lib/components/accessibility/accessibility.component.ts","../../../projects/exui-common-lib/src/lib/components/accessibility/accessibility.component.html","../../../projects/exui-common-lib/src/lib/components/checkbox-list/checkbox-list.component.ts","../../../projects/exui-common-lib/src/lib/components/checkbox-list/checkbox-list.component.html","../../../projects/exui-common-lib/src/lib/components/contact-details/contact-details.component.ts","../../../projects/exui-common-lib/src/lib/components/contact-details/contact-details.component.html","../../../projects/exui-common-lib/src/lib/models/due-date.model.ts","../../../projects/exui-common-lib/src/lib/components/due-date/due-date.component.ts","../../../projects/exui-common-lib/src/lib/components/due-date/due-date.component.html","../../../projects/exui-common-lib/src/lib/components/generic-filter/generic-filter-utils.ts","../../../projects/exui-common-lib/src/lib/services/feature-toggle/feature-toggle.service.ts","../../../projects/exui-common-lib/src/lib/services/feature-toggle/feature-toggle.guard.ts","../../../projects/exui-common-lib/src/lib/services/feature-toggle/launch-darkly.service.ts","../../../projects/exui-common-lib/src/lib/window.ts","../../../projects/exui-common-lib/src/lib/services/google-analytics/google-analytics.service.ts","../../../projects/exui-common-lib/src/lib/services/google-tag-manager/google-tag-manager.service.ts","../../../projects/exui-common-lib/src/lib/services/manage-session/manage-session.services.ts","../../../projects/exui-common-lib/src/lib/services/timeout-notifications/timeout-notifications.service.ts","../../../projects/exui-common-lib/src/lib/services/role-guard/role.service.ts","../../../projects/exui-common-lib/src/lib/services/role-guard/role.guard.ts","../../../projects/exui-common-lib/src/lib/services/cookie/cookie.service.ts","../../../projects/exui-common-lib/src/lib/services/loading/loading.service.ts","../../../projects/exui-common-lib/src/lib/services/filter/filter.service.ts","../../../projects/exui-common-lib/src/lib/services/ref-data/ref-data-data-access/ref-data-data-access.service.ts","../../../projects/exui-common-lib/src/lib/services/ref-data/ref-data.service.ts","../../../projects/exui-common-lib/src/lib/services/public-api.ts","../../../projects/exui-common-lib/src/lib/models/case-share.model.ts","../../../projects/exui-common-lib/src/lib/models/contact-details.model.ts","../../../projects/exui-common-lib/src/lib/models/feature-user.ts","../../../projects/exui-common-lib/src/lib/models/filter.model.ts","../../../projects/exui-common-lib/src/lib/models/location.model.ts","../../../projects/exui-common-lib/src/lib/models/person.model.ts","../../../projects/exui-common-lib/src/lib/gov-ui/util/session-storage/session-storage-utils.ts","../../../projects/exui-common-lib/src/lib/services/storage/session-storage/session-storage.service.ts","../../../projects/exui-common-lib/src/lib/services/find-person/find-person.service.ts","../../../projects/exui-common-lib/src/lib/components/find-person/find-person.component.ts","../../../projects/exui-common-lib/src/lib/components/find-person/find-person.component.html","../../../projects/exui-common-lib/src/lib/services/locations/location.service.ts","../../../projects/exui-common-lib/src/lib/components/search-location/search-location.component.ts","../../../projects/exui-common-lib/src/lib/components/search-location/search-location.component.html","../../../projects/exui-common-lib/src/lib/components/find-location/find-location.component.ts","../../../projects/exui-common-lib/src/lib/components/find-location/find-location.component.html","../../../projects/exui-common-lib/src/lib/services/task-name/task-name.service.ts","../../../projects/exui-common-lib/src/lib/components/find-task-name/find-task-name.component.ts","../../../projects/exui-common-lib/src/lib/components/find-task-name/find-task-name.component.html","../../../projects/exui-common-lib/src/lib/components/search-service/search-service.component.ts","../../../projects/exui-common-lib/src/lib/components/search-service/search-service.component.html","../../../projects/exui-common-lib/src/lib/components/find-service/find-service.component.ts","../../../projects/exui-common-lib/src/lib/components/find-service/find-service.component.html","../../../projects/exui-common-lib/src/lib/pipes/capitalize/capitalize.pipe.ts","../../../projects/exui-common-lib/src/lib/components/generic-filter/generic-filter.component.ts","../../../projects/exui-common-lib/src/lib/components/generic-filter/generic-filter.component.html","../../../projects/exui-common-lib/src/lib/components/hmcts-session-dialog/hmcts-session-dialog.component.ts","../../../projects/exui-common-lib/src/lib/components/hmcts-session-dialog/hmcts-session-dialog.component.html","../../../projects/exui-common-lib/src/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.ts","../../../projects/exui-common-lib/src/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.html","../../../projects/exui-common-lib/src/lib/gov-ui/directives/remove-host.directive.ts","../../../projects/exui-common-lib/src/lib/gov-ui/components/gov-uk-checkbox/gov-uk-checkbox.component.ts","../../../projects/exui-common-lib/src/lib/gov-ui/components/gov-uk-checkbox/gov-uk-checkbox.component.html","../../../projects/exui-common-lib/src/lib/gov-ui/components/gov-uk-error-message/gov-uk-error-message.component.ts","../../../projects/exui-common-lib/src/lib/gov-ui/components/gov-uk-error-message/gov-uk-error-message.component.html","../../../projects/exui-common-lib/src/lib/gov-ui/util/helpers/html-templates.helper.ts","../../../projects/exui-common-lib/src/lib/gov-ui/components/gov-uk-fieldset/gov-uk-fieldset.component.ts","../../../projects/exui-common-lib/src/lib/gov-ui/components/gov-uk-fieldset/gov-uk-fieldset.component.html","../../../projects/exui-common-lib/src/lib/gov-ui/components/gov-uk-form-group-wrapper/gov-uk-form-group-wrapper.component.ts","../../../projects/exui-common-lib/src/lib/gov-ui/components/gov-uk-form-group-wrapper/gov-uk-form-group-wrapper.component.html","../../../projects/exui-common-lib/src/lib/components/invite-user-permissions/invite-user-permission.component.ts","../../../projects/exui-common-lib/src/lib/components/invite-user-permissions/invite-user-permission.component.html","../../../projects/exui-common-lib/src/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.ts","../../../projects/exui-common-lib/src/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.html","../../../projects/exui-common-lib/src/lib/components/invite-user-form/invite-user-form.component.ts","../../../projects/exui-common-lib/src/lib/components/invite-user-form/invite-user-form.component.html","../../../projects/exui-common-lib/src/lib/components/loading-spinner/loading-spinner.component.ts","../../../projects/exui-common-lib/src/lib/components/loading-spinner/loading-spinner.component.html","../../../projects/exui-common-lib/src/lib/services/case-sharing-state/case-sharing-state.service.ts","../../../projects/exui-common-lib/src/lib/components/selected-case-confirm/selected-case-confirm.component.ts","../../../projects/exui-common-lib/src/lib/components/selected-case-confirm/selected-case-confirm.component.html","../../../projects/exui-common-lib/src/lib/components/selected-case/selected-case.component.ts","../../../projects/exui-common-lib/src/lib/components/selected-case/selected-case.component.html","../../../projects/exui-common-lib/src/lib/components/selected-case-list/selected-case-list.component.ts","../../../projects/exui-common-lib/src/lib/components/selected-case-list/selected-case-list.component.html","../../../projects/exui-common-lib/src/lib/components/service-message/service-message.component.ts","../../../projects/exui-common-lib/src/lib/components/service-message/service-message.component.html","../../../projects/exui-common-lib/src/lib/components/service-messages/service-messages.component.ts","../../../projects/exui-common-lib/src/lib/components/service-messages/service-messages.component.html","../../../projects/exui-common-lib/src/lib/components/share-case-confirm/share-case-confirm.component.ts","../../../projects/exui-common-lib/src/lib/components/share-case-confirm/share-case-confirm.component.html","../../../projects/exui-common-lib/src/lib/components/user-select/user-select.component.ts","../../../projects/exui-common-lib/src/lib/components/user-select/user-select.component.html","../../../projects/exui-common-lib/src/lib/gov-ui/components/hmcts-error-summary/hmcts-error-summary.component.ts","../../../projects/exui-common-lib/src/lib/gov-ui/components/hmcts-error-summary/hmcts-error-summary.component.html","../../../projects/exui-common-lib/src/lib/components/share-case/share-case.component.ts","../../../projects/exui-common-lib/src/lib/components/share-case/share-case.component.html","../../../projects/exui-common-lib/src/lib/components/tab/tab.component.ts","../../../projects/exui-common-lib/src/lib/components/tab/tab.component.html","../../../projects/exui-common-lib/src/lib/components/tc-confirm/tc-confirm.component.ts","../../../projects/exui-common-lib/src/lib/components/tc-confirm/tc-confirm.component.html","../../../projects/exui-common-lib/src/lib/components/terms-and-conditions/tc-display/tc-display-html/tc-display-html.component.ts","../../../projects/exui-common-lib/src/lib/components/terms-and-conditions/tc-display/tc-display-html/tc-display-html.component.html","../../../projects/exui-common-lib/src/lib/components/terms-and-conditions/tc-display/tc-display-plain/tc-display-plain.component.ts","../../../projects/exui-common-lib/src/lib/components/terms-and-conditions/tc-display/tc-display-plain/tc-display-plain.component.html","../../../projects/exui-common-lib/src/lib/components/terms-and-conditions/terms-and-conditions.component.ts","../../../projects/exui-common-lib/src/lib/components/terms-and-conditions/terms-and-conditions.component.html","../../../projects/exui-common-lib/src/lib/components/user-details/user-details.component.ts","../../../projects/exui-common-lib/src/lib/components/user-details/user-details.component.html","../../../projects/exui-common-lib/src/lib/gov-ui/components/hmcts-pagination/hmcts-pagination.component.ts","../../../projects/exui-common-lib/src/lib/gov-ui/components/hmcts-pagination/hmcts-pagination.component.html","../../../projects/exui-common-lib/src/lib/components/user-list/user-list.component.ts","../../../projects/exui-common-lib/src/lib/components/user-list/user-list.component.html","../../../projects/exui-common-lib/src/lib/components/cookie-banner/cookie-banner.component.ts","../../../projects/exui-common-lib/src/lib/components/cookie-banner/cookie-banner.component.html","../../../projects/exui-common-lib/src/lib/components/pagination/pagination.component.ts","../../../projects/exui-common-lib/src/lib/components/pagination/pagination.component.html","../../../projects/exui-common-lib/src/lib/components/search-venue/search-venue.component.ts","../../../projects/exui-common-lib/src/lib/components/search-venue/search-venue.component.html","../../../projects/exui-common-lib/src/lib/components/search-judicials/search-judicials.component.ts","../../../projects/exui-common-lib/src/lib/components/search-judicials/search-judicials.component.html","../../../projects/exui-common-lib/src/lib/components/exui-main-wrapper/exui-page-wrapper.component.ts","../../../projects/exui-common-lib/src/lib/components/exui-main-wrapper/exui-page-wrapper.component.html","../../../projects/exui-common-lib/src/lib/directives/feature-toggle/feature-toggle.directive.ts","../../../projects/exui-common-lib/src/lib/directives/let/let.directive.ts","../../../projects/exui-common-lib/src/lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.ts","../../../projects/exui-common-lib/src/lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.html","../../../projects/exui-common-lib/src/lib/gov-ui/components/gov-uk-date/gov-uk-date.component.ts","../../../projects/exui-common-lib/src/lib/gov-ui/components/gov-uk-date/gov-uk-date.component.html","../../../projects/exui-common-lib/src/lib/gov-ui/components/gov-uk-file-upload/gov-uk-file-upload.component.ts","../../../projects/exui-common-lib/src/lib/gov-ui/components/gov-uk-file-upload/gov-uk-file-upload.component.html","../../../projects/exui-common-lib/src/lib/gov-ui/components/gov-uk-radio/gov-uk-radio.component.ts","../../../projects/exui-common-lib/src/lib/gov-ui/components/gov-uk-radio/gov-uk-radio.component.html","../../../projects/exui-common-lib/src/lib/gov-ui/components/gov-uk-radios/gov-uk-radios.component.ts","../../../projects/exui-common-lib/src/lib/gov-ui/components/gov-uk-radios/gov-uk-radios.component.html","../../../projects/exui-common-lib/src/lib/gov-ui/components/gov-uk-select/gov-uk-select.component.ts","../../../projects/exui-common-lib/src/lib/gov-ui/components/gov-uk-select/gov-uk-select.component.html","../../../projects/exui-common-lib/src/lib/gov-ui/components/gov-uk-table/gov-uk-table.component.ts","../../../projects/exui-common-lib/src/lib/gov-ui/components/gov-uk-table/gov-uk-table.component.html","../../../projects/exui-common-lib/src/lib/gov-ui/components/gov-uk-textarea/gov-uk-textarea.component.ts","../../../projects/exui-common-lib/src/lib/gov-ui/components/gov-uk-textarea/gov-uk-textarea.component.html","../../../projects/exui-common-lib/src/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.ts","../../../projects/exui-common-lib/src/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.html","../../../projects/exui-common-lib/src/lib/gov-ui/components/hmcts-identity-bar/hmcts-identity-bar.component.ts","../../../projects/exui-common-lib/src/lib/gov-ui/components/hmcts-identity-bar/hmcts-identity-bar.component.html","../../../projects/exui-common-lib/src/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.ts","../../../projects/exui-common-lib/src/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.html","../../../projects/exui-common-lib/src/lib/gov-ui/components/hmcts-primary-navigation/hmcts-primary-navigation.component.ts","../../../projects/exui-common-lib/src/lib/gov-ui/components/hmcts-primary-navigation/hmcts-primary-navigation.component.html","../../../projects/exui-common-lib/src/lib/gov-ui/components/hmcts-sub-navigation/hmcts-sub-navigation.component.ts","../../../projects/exui-common-lib/src/lib/gov-ui/components/hmcts-sub-navigation/hmcts-sub-navigation.component.html","../../../projects/exui-common-lib/src/lib/exui-common-lib.module.ts","../../../projects/exui-common-lib/src/lib/gov-ui/gov-ui.service.ts","../../../projects/exui-common-lib/src/lib/gov-ui/validators/checkboxes-be-checked.validator.ts","../../../projects/exui-common-lib/src/lib/gov-ui/validators/date.validator.ts","../../../projects/exui-common-lib/src/lib/gov-ui/validators/radio-group.validator.ts","../../../projects/exui-common-lib/src/lib/gov-ui/validators/public_api.ts","../../../projects/exui-common-lib/src/lib/gov-ui/public_api.ts","../../../projects/exui-common-lib/src/public-api.ts","../../../projects/exui-common-lib/src/hmcts-rpx-xui-common-lib.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n selector: 'xuilib-accessibility',\n templateUrl: './accessibility.component.html',\n styleUrls: ['./accessibility.component.scss']\n})\n\nexport class AccessibilityComponent {\n constructor() {\n }\n}\n","<h1 class=\"govuk-heading-xl\" id=\"Accessibility-statement-for-Expert-UI\">Accessibility statement for Expert UI</h1>\n\n<ul class=\"govuk-list\">\n <li><a href=\"accessibility#immigration\">Immigration and Asylum</a></li>\n <li><a href=\"accessibility#family\">Family Public Law </a></li>\n</ul>\n\n<p class=\"govuk-body\">This website is run by HM Courts & Tribunals Service. We want as many people as possible to be\n able to use this website. For example, you should be able to:</p>\n\n<ul class=\"govuk-list govuk-list--bullet\">\n <li>change colours, contrast levels and fonts</li>\n <li>zoom in up to 300% without the text spilling off the screen</li>\n <li>navigate most of the website using just a keyboard</li>\n <li>navigate most of the website using speech recognition software</li>\n <li>listen to most of the website using a screen reader (including the most recent versions of JAWS, NVDA and\n VoiceOver)\n </li>\n</ul>\n\n<p class=\"govuk-body\">We’ve also made the website text as simple as possible to understand.</p>\n\n<p class=\"govuk-body\"><a rel=\"noopener noreferrer\" target=\"_blank\" href=\"https://mcmw.abilitynet.org.uk/\">AbilityNet</a>\n has advice on making your device easier to use if you have a disability.</p>\n\n<h2 class=\"govuk-heading-l\" id=\"How-accessible-this-website-is\">How accessible this website is</h2>\n\n<p class=\"govuk-body\">We know some parts of the website are not fully accessible:</p>\n\n<ul class=\"govuk-list govuk-list--bullet\">\n <li>some pages are difficult to navigate using just a keyboard</li>\n <li>some pages can’t be listened to in full using a screen reader</li>\n <li>some pages have problems with colour contrasts between text and background</li>\n <li>some PDFs may not be fully accessible to a screen reader</li>\n</ul>\n\n<h2 class=\"govuk-heading-l\" id=\"What-to-do-if-you-cannot-access-parts-of-this-website\">Feedback and contact\n information</h2>\n\n<p class=\"govuk-body\">If you need information on this website in a different format like accessible PDF, large print,\n easy read, audio recording or braille, you can:</p>\n\n<ul class=\"govuk-list govuk-list--bullet\">\n <li>email: <a href=\"mailto:HMCTSforms@justice.gov.uk\"> HMCTSforms@justice.gov.uk</a></li>\n <li>call: +44 (0) 300 123 1711</li>\n <li>contact your service representative</li>\n</ul>\n\n<p class=\"govuk-body\">We’ll consider your request and get back to you in 10 working days.</p>\n\n<h2 class=\"govuk-heading-l\" id=\"Reporting-accessibility-problems-with-this-website\">Reporting accessibility problems\n with this website</h2>\n\n<p class=\"govuk-body\">We’re always looking to improve the accessibility of this website. If you find any problems not\n listed on this page or think we’re not meeting accessibility requirements, contact:</p>\n\n<ul class=\"govuk-list govuk-list--bullet\">\n <li>email: <a href=\"mailto:customer.service@justice.gov.uk\"> customer.service@justice.gov.uk</a></li>\n <li>telephone: +44 (0) 300 123 1711</li>\n</ul>\n\n<h2 class=\"govuk-heading-l\" id=\"Enforcement-procedure \">Enforcement procedure</h2>\n\n<p class=\"govuk-body\">The Equality and Human Rights Commission (EHRC) is responsible for enforcing the Public Sector\n Bodies (Websites and Mobile Applications) (No. 2) Accessibility Regulations 2018 (the ‘accessibility\n regulations’). </p>\n\n<p class=\"govuk-body\">If you’re not happy with how we respond to your complaint, <a rel=\"noopener noreferrer\"\n target=\"_blank\"\n href=\"https://www.equalityadvisoryservice.com/\">contact\n the Equality Advisory and Support Service (EASS).</a></p>\n\n<h1 class=\"govuk-heading-l\" id=\"Contacting-us-by-phone-or-visiting-us-in-person\">Contacting us by phone or visiting us\n in person</h1>\n\n<p class=\"govuk-body\">We provide a text relay service for people who are D/deaf, hearing impaired or have a speech\n impediment.</p>\n\n<p class=\"govuk-body\">Our offices and tribunal venues have audio induction loops, or if you contact us before your visit\n we can arrange a British Sign Language (BSL) interpreter. You can also request step-free access or a foreign language\n interpreter.</p>\n\n<p class=\"govuk-body\">If you have a question about accessibility in our Tribunal venues, you can contact the First-tier\n Tribunal enquiry line: +44 (0) 300 123 1711. You can <a target=\"_blank\"\n href=\"https://courttribunalfinder.service.gov.uk/search/\">find\n the contact details for court and tribunal venues</a>. </p>\n\n<p class=\"govuk-body\">You can also contact your service representative for more information.</p>\n\n<h1 class=\"govuk-heading-l\" id=\"Technical-information-about-this-website’s-accessibility\">Technical information about\n this website’s accessibility</h1>\n\n<p class=\"govuk-body\">HMCTS is committed to making its website accessible, in accordance with the Public Sector Bodies\n (Websites and Mobile Applications) (No.2) Accessibility Regulations 2018.</p>\n\n<p class=\"govuk-body\">This website is partially compliant with the <a rel=\"noopener noreferrer\" target=\"_blank\"\n href=\"https://www.w3.org/TR/WCAG21/\">Web Content\n Accessibility Guidelines version 2.1</a>, due to the non-compliances listed below.</p>\n\n<h1 class=\"govuk-heading-l\" id=\"Non-accessible-content\">Non-accessible content </h1>\n\n<p class=\"govuk-body\">The content listed below is non-compliant for the following reasons.</p>\n\n<h2 class=\"govuk-heading-l\" id=\"Non-compliance-with-the-accessibility-regulations\">Non-compliance with the accessibility\n regulations</h2>\n\n<p class=\"govuk-body\">Some pages cannot be navigated completely using just a keyboard, so some people won’t be able to\n tab through the pages. This fails WCAG 2.1 success criterion 2.1 (keyboard accessible).</p>\n\n<p class=\"govuk-body\">Some pages can’t be listened to in full using a screen reader, so some people won’t be able to\n access the information. This fails WCAG 2.1 success criterion 1.2.5 (audio description – prerecorded).</p>\n\n<p class=\"govuk-body\">Some of the contrast ratios don’t meet the current accessibility requirements. This fails WCAG 2.1\n success criterion 1.4.3 (contrast – minimum).</p>\n\n<h3 class=\"govuk-heading-m\" id=\"immigration\">Immigration and Asylum</h3>\n\n<p class=\"govuk-body\">Some of the images on the service include text and are not accessible for some low vision users.\n We have identified a solution for this issue that we will implement as soon as possible.</p>\n\n<h3 class=\"govuk-heading-m\" id=\"family\">Family Public Law </h3>\n\n<ol class=\"govuk-list govuk-list--alpha\">\n <li>The navigation system used in family public law cannot be rendered well by screen readers, so features can’t be\n listened to in full\n </li>\n <li>Some essential functions within the family public law digital service cannot be accessed properly using screen\n readers\n </li>\n <li>Some complex forms within the service will not be rendered correctly or cannot be listened to by screen readers\n </li>\n</ol>\n\n<h2 class=\"govuk-heading-m\" id=\"Disproportionate burden \">Disproportionate burden </h2>\n\n<p class=\"govuk-body\">For Manage organisation, Register organisation, Approve organisations and Manage cases, we found\n the following issues that are currently being triaged to find out if there is a disproportionate burden:</p>\n\n<ol class=\"govuk-list govuk-list--alpha\">\n <li>Screen readers can’t switch between headers, read content in tabs and buttons</li>\n <li>Screen readers can’t tab between radio buttons, read links or content</li>\n <li>Colour contrast ratios uneven between page background and content</li>\n <li>Some labels, fields, error messages and other content can’t be clearly identified by screen readers and voice\n activation software\n </li>\n <li>Some page headings and titles don’t follow a logical structure for screen readers</li>\n <li>The navigation of some pages isn’t clear</li>\n <li>Some headings, links and button labels aren’t clearly descriptive</li>\n</ol>\n\n<h2 class=\"govuk-heading-m\" id=\"Content-that’s-not-within-the-scope-of-the-accessibility-regulations\">Content that’s not\n within the scope of the accessibility regulations </h2>\n\n<p class=\"govuk-body\">PDFs, documents and attachments to email notifications published before 23 September 2018 may not\n meet accessibility standards. For example, they may not be structured so they’re accessible to a screen reader.</p>\n\n<p class=\"govuk-body\">Any new PDFs or Word documents we publish will meet accessibility standards.</p>\n\n<h1 class=\"govuk-heading-l\" id=\"what-to-improve-accessibility\">What we’re doing to improve accessibility</h1>\n\n<p class=\"govuk-body\">We’re committed to ensuring our services are accessible to all our users and that they comply with\n level AA of the Web Content Accessibility Guidelines – WCAG 2.1.</p>\n\n<p class=\"govuk-body\">We’re actively working to improve the identified issues and make them AA-compliant by 23 September\n 2020. We’re also continuing to improve all other AAA-level accessibility issues as we iterate the service.</p>\n\n<h1 class=\"govuk-heading-l\" id=\"preparation-of-this-accessibility-statement\">Preparation of this accessibility\n statement</h1>\n\n<p class=\"govuk-body\">This statement was prepared on 16 September 2019. It was last reviewed on 16 September 2020.</p>\n\n<p class=\"govuk-body\">This website was last tested on 19 May 2020. The test was carried out by the <a target=\"_blank\"\n href=\"https://digitalaccessibilitycentre.org/\">Digital\n Accessibility Centre (DAC)</a>.</p>\n\n<h3 class=\"govuk-heading-m\">Family Private Law:</h3>\n\n<p class=\"govuk-body\">This service has not yet been tested for accessibility issues. In the future, we will conduct an\n accessibility audit in order to find out if there are any accessibility issues. The accessibility statement will be\n updated with any relevant changes that we find.</p>\n\n<p class=\"govuk-body\">If there are any issues with accessing information or using this website please contact:</p>\n\n<ol class=\"govuk-list govuk-list--bullet\">\n <li>Nicola Whitcher - 02380 384324</li>\n <li>Hannah Townley - 02380 384313</li>\n</ol>","import { Component, EventEmitter, Input, OnChanges, Output, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'xuilib-checkbox-list',\n templateUrl: 'checkbox-list.component.html',\n styleUrls: ['checkbox-list.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class CheckboxListComponent<T> implements OnChanges {\n\n /**\n * The options to show checkboxes for. Note that the type\n * within the array corresponds to the one for the component.\n */\n @Input() public options: T[] = [];\n\n /**\n * The initially-selected values to use. When the component renders,\n * the checkboxes that correspond to these values will be checked.\n */\n @Input() public preselection: T[];\n\n /**\n * This function is invoked for each item to display the appropriate\n * label beside the checkbox.\n */\n @Input() public labelFunction: (item: T) => string;\n\n /**\n * Whenever the selection changes, this event fires. What is dispatched\n * is the current selection, also retrievable from .selection.\n */\n @Output() public selectionChange: EventEmitter<T[]> = new EventEmitter<T[]>();\n\n /**\n * The currently selected values.\n * Note: This array is immutable, which means pushing and popping will\n * have no effect on which checkboxes are selected.\n */\n @Input()\n public get selection(): T[] {\n return this.pSelection ? [ ...this.pSelection ] : [];\n }\n public set selection(value: T[]) {\n this.pSelection = this.getSelection(value);\n }\n private pSelection: T[];\n private pSelectionMade: boolean;\n\n /**\n * Indicates whether or not all of the items are selected.\n */\n public get allSelected(): boolean {\n return this.selection.length === this.options.length;\n }\n\n // Catch any changes to any of the Input() properties.\n public ngOnChanges(): void {\n // Set up the pre-selected values.\n this.setupPreselection();\n // Now check the current selection to make sure it's valid.\n this.checkSelection();\n }\n\n /**\n * Indicates whether or not there are any options to render.\n */\n public get hasOptions(): boolean {\n return this.options && this.options.length > 0;\n }\n\n public get isFunctional(): boolean {\n return this.labelFunction && this.hasOptions;\n }\n\n /**\n * Indicates whether or not an item is part of the current selection.\n * @param item The item in question.\n */\n public isSelected(item: T): boolean {\n return this.selection.includes(item);\n }\n\n /**\n * If an item is already selected, it will be removed from the selection.\n * Otherwise, it will be added to the selection..\n */\n public toggleItemSelection(item: T): void {\n if (this.pSelection === undefined) {\n // If we don't have any selection at all yet, make it just this item.\n this.pSelection = [ item ];\n } else if (this.isSelected(item)) {\n // If this item is already selected, remove it.\n this.pSelection.splice(this.pSelection.indexOf(item), 1);\n } else {\n // If it's not selected, add it.\n this.pSelection.push(item);\n }\n\n // Indicate that the user has now made an active selection.\n this.pSelectionMade = true;\n\n // Now emit an event so any containers know about the change to selection.\n this.selectionChange.emit(this.selection);\n }\n\n /**\n * If all of the items are selected, deselect them all.\n * Otherwise, select them all.\n */\n public toggleSelectAll(): void {\n // Do we already have them all selected?\n if (this.allSelected) {\n // If so, clear out the selection.\n this.pSelection = [];\n } else {\n // If not, select all of them.\n this.pSelection = [ ...this.options ];\n }\n\n // Indicate that the user has now made an active selection.\n this.pSelectionMade = true;\n\n // Now emit an event so any containers know about the change to selection.\n this.selectionChange.emit(this.pSelection);\n }\n\n /**\n * Use the labelFunction to determine whether the options include the item.\n * This is to handle partial objects being set in the pre-selection where\n * they may not be available by the same mechanism as the options.\n *\n * @param items The array of items in which to look for the item.\n * @param item The item to check in the options.\n */\n public containsItem(items: T[], item: T): boolean {\n if (this.isFunctional) {\n const itemLabel: string = this.labelFunction(item);\n return items.some(opt => {\n return this.labelFunction(opt) === itemLabel;\n });\n }\n return false;\n }\n\n // Simple utility function to indicate whether there is an active preselection.\n private get hasPreselection(): boolean {\n return this.preselection && this.preselection.length > 0;\n }\n\n // Set up the initially selected values.\n // NOTE: If the preselection changes and the user has NOT made an active selection,\n // the current selection will also be changed. As soon as the user has made an\n // active selection, however, the preselection is no longer relevant.\n private setupPreselection(): void {\n if (this.isFunctional && !this.pSelectionMade && this.hasPreselection) {\n let changed = true; // Assume this is a change.\n if (this.pSelection) {\n // If there is no difference between the arrays, this is not a change.\n changed = this.pSelection.filter((item: T) => {\n return !this.containsItem(this.preselection, item);\n }).length > 0;\n }\n\n // If this is a change, update the selection and then emit an\n // event so any containers know about the change to selection.\n if (changed) {\n this.pSelection = this.getSelection(this.preselection);\n this.selectionChange.emit(this.selection);\n }\n }\n }\n\n private getSelection(items: T[]): T[] {\n return [\n ...this.options.filter(opt => {\n return this.containsItem(items, opt);\n })\n ];\n }\n\n // The options have changed. Let's make sure the selection\n // doesn't contain anything that's not currently an option.\n private checkSelection(): void {\n if (this.isFunctional) {\n // Check which of the currently selected items are actually options.\n const allowedSelection: T[] = this.selection.filter((item: T) => {\n return this.containsItem(this.options, item);\n });\n\n // If any have dropped out, change the selection.\n if (allowedSelection.length !== this.selection.length) {\n this.pSelection = [ ...allowedSelection ];\n\n // And emit an event so any containers know about the change to selection.\n this.selectionChange.emit(this.selection);\n }\n }\n }\n}\n","<div class=\"xui-checkbox-list govuk-checkboxes govuk-checkboxes--small\" *ngIf=\"isFunctional\">\n <div class=\"select-all govuk-checkboxes__item\">\n <input type=\"checkbox\" id=\"select_all\" class=\"govuk-checkboxes__input\" [checked]=\"allSelected\"\n (change)=\"toggleSelectAll()\" />\n <label for=\"select_all\" class=\"govuk-label govuk-checkboxes__label\">Select all / Deselect all</label>\n </div>\n <div class=\"checkbox-items\">\n <div *ngFor=\"let item of options; let i = index\" class=\"govuk-checkboxes__item\">\n <input type=\"checkbox\" [id]=\"'select_' + i\" class=\"govuk-checkboxes__input\" [checked]=\"isSelected(item)\"\n (change)=\"toggleItemSelection(item)\" />\n <label [for]=\"'select_' + i\" class=\"govuk-label govuk-checkboxes__label\">{{labelFunction(item)}}</label>\n </div>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { ContactDetailsDataModel } from '../../models';\n\n@Component({\n selector: 'xuilib-contact-details',\n templateUrl: './contact-details.component.html',\n styleUrls: ['contact-details.component.scss']\n})\nexport class ContactDetailsComponent {\n\n @Input() public data: ContactDetailsDataModel;\n\n constructor() {\n }\n}\n","<div class=\"contact-details\" *ngIf=\"data\">\n <h3 class=\"govuk-heading-m\" *ngIf=\"data.title\">{{ data.title }}</h3>\n <p *ngIf=\"data.badgeText\"><span [className]=\"'hmcts-badge ' + data.badgeColour\">{{ data.badgeText }}</span></p>\n <div class=\"email\" *ngIf=\"data.email\"><span class=\"govuk-!-font-weight-bold\">Email: </span> <a href=\"mailto:{{ data.email }}\">{{ data.email }}</a></div>\n <div class=\"phone\" *ngIf=\"data.phone\"><span class=\"govuk-!-font-weight-bold\">Phone: </span>{{ data.phone }}</div>\n <div class=\"opening-times\" *ngIf=\"data.openingTimes\"><span class=\"govuk-!-font-weight-bold\">Opening times: </span>{{ data.openingTimes}}</div>\n</div>\n\n","export enum DateBadgeColour {\n RED = 'hmcts-badge--red',\n ORANGE = 'hmcts-badge--orange',\n GREEN = 'hmcts-badge--green',\n}\n\nexport const SECONDS_IN_A_DAY: number = 60 * 60 * 24;\n","import { formatDate } from '@angular/common';\nimport { Component, Input, OnChanges, ViewEncapsulation } from '@angular/core';\n\nimport { DateBadgeColour, SECONDS_IN_A_DAY } from '../../models/due-date.model';\n\n@Component({\n selector: 'xuilib-due-date',\n templateUrl: 'due-date.component.html',\n styleUrls: ['due-date.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class DueDateComponent implements OnChanges {\n\n /**\n * The due date to use as the basis for rendering this component. It is\n * compared to the current date and displayed accordingly.\n */\n @Input() public dueDate: Date;\n\n /**\n * This should be considered HIGH urgency if there are fewer than this\n * many days until the due date.\n * * Set to 0 if you want it to show HIGH if it was due yesterday.\n * * Set to 1 if you want it to show HIGH if it's due today.\n * * Set to 2 if you want it to show HIGH if it's due tomorrow.\n *\n * Defaults to 0 (ZERO), which means it won't show as HIGH urgency until the\n * due date is in the past.\n *\n * NOTE: If this is higher than the mediumUrgencyCutoff value, MEDIUM urgency\n * will never be shown.\n *\n * ALSO NOTE: Anything overdue is automatically considered HIGH urgency.\n */\n @Input() public highUrgencyCutoff: number = 0; // Default\n\n /**\n * This should be considered MEDIUM urgency if there are fewer than this\n * many days until the due date.\n * * Set to 1 if you want it to show MEDIUM if it's due today.\n * * Set to 2 if you want it to show MEDIUM if it's due tomorrow.\n * * Set to 3 if you want it to show MEDIUM if it's due the day after tomorrow.\n *\n * Defaults to 2, which means it won't show as MEDIUM urgency unless the\n * due date is today or tomorrow.\n *\n * NOTE: If this is lower than the highUrgencyCutoff value, MEDIUM urgency\n * will never be shown.\n */\n @Input() public mediumUrgencyCutoff: number = 2;\n\n // The HMCTS badge class, used for colouration.\n private pBadge: string;\n public get badge(): string {\n return this.pBadge;\n }\n\n // The textual label to display in the component.\n private pLabel: string;\n public get label(): string {\n return this.pLabel;\n }\n\n // The accessible label, which is also used for the tooltip.\n private pAccessibleLabel: string;\n public get accessibleLabel(): string {\n return this.pAccessibleLabel;\n }\n\n // How many days the dueDate varies from today.\n private pDaysDiff: number;\n public get daysDiff(): number {\n return this.pDaysDiff;\n }\n\n // Catch any changes to any of the Input() properties.\n public ngOnChanges(): void {\n this.handleInputChanges();\n }\n\n // Set up the label, urgency class, and accessibility fields.\n private handleInputChanges() {\n // If we don't have a dueDate, skip out of here.\n if (!this.dueDate) {\n return;\n }\n\n // How many days from today is the due date?\n // Already happened means daysDiff > 0;\n // Today means daysDiff = 0;\n // Yet to come means daysDiff < 0;\n this.pDaysDiff = this.getDaysDifference(this.dueDate, new Date());\n\n // Is it overdue?\n if (this.daysDiff > 0) {\n this.pBadge = DateBadgeColour.RED;\n const daysLabel = this.daysDiff === 1 ? 'day' : 'days';\n this.pLabel = `+${this.daysDiff} ${daysLabel}`;\n this.pAccessibleLabel = `This task is ${this.daysDiff} ${daysLabel} past its due date`;\n } else {\n // Special label for \"Today\".\n if (this.daysDiff === 0) {\n this.pLabel = 'TODAY';\n this.pAccessibleLabel = 'This task is due to be completed today';\n } else {\n this.pLabel = `${formatDate(this.dueDate, 'd MMM', 'en-GB')}`;\n this.pAccessibleLabel = `This task is due to be completed by ${formatDate(this.dueDate, 'd MMMM y', 'en-GB')}`;\n }\n if (this.daysDiff + this.highUrgencyCutoff > 0) {\n this.pBadge = DateBadgeColour.RED;\n } else if (this.daysDiff + this.mediumUrgencyCutoff > 0) {\n this.pBadge = DateBadgeColour.ORANGE;\n } else {\n this.pBadge = DateBadgeColour.GREEN;\n }\n }\n }\n\n // This will return the difference between two dates.\n // If fromDate is BEFORE toDate, it will be a positive number.\n // If fromDate is AFTER toDate, it will be a negative number.\n private getDaysDifference(fromDate: Date, toDate: Date): number {\n const fromEpoch = fromDate.getTime();\n const toEpoch = toDate.getTime();\n const diffSecs = Math.floor((toEpoch - fromEpoch) / 1000);\n return Math.floor(diffSecs / SECONDS_IN_A_DAY);\n }\n}\n","<span *ngIf=\"dueDate\" class=\"due-date hmcts-badge\" [ngClass]=\"badge\"\n [title]=\"accessibleLabel\" [attr.aria-label]=\"accessibleLabel\">\n {{label}}\n</span>","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { FilterConfigOption } from '../../models';\n\nexport function minSelectedValidator<T>(min: number): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const values = control.value as T[];\n return values.length && values.filter(value => value).length >= min ? null : {minlength: true};\n };\n}\n\nexport function maxSelectedValidator<T>(max: number): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const values = control.value as T[];\n return values.length && values.filter(value => value).length <= max ? null : {maxLength: true};\n };\n}\n\nexport function getValues(options: FilterConfigOption[], values: any[]): any[] {\n return options.reduce((acc: string[], option: { key: string, label: string }, index: number) => {\n if (values[index]) {\n return [...acc, option.key];\n }\n return acc;\n }, []);\n}\n\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { FeatureUser } from '../../models/feature-user';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FeatureToggleService {\n // tslint:disable-next-line: variable-name\n public initialize(_user: FeatureUser, _clientId: string): void {\n throw new Error('Not implemented');\n }\n // tslint:disable-next-line: variable-name\n public isEnabled(_feature: string): Observable<boolean> {\n throw new Error('Not implemented');\n }\n // tslint:disable-next-line: variable-name\n public getValue<R>(_key: string, _defaultValue: R): Observable<R> {\n throw new Error('Not implemented');\n }\n\n // tslint:disable-next-line: variable-name\n public getValueOnce<R>(_key: string, _defaultValue: R): Observable<R> {\n throw new Error('Not implemented');\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, Router, UrlTree } from '@angular/router';\nimport { combineLatest, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { FeatureToggleService } from './feature-toggle.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FeatureToggleGuard implements CanActivate {\n\n public constructor(\n private readonly featureToggleService: FeatureToggleService,\n private readonly router: Router\n ) {}\n\n /**\n * Usage: Add the FeatureToggleGuard as the Guard for a route, and provide the following\n * in the data array for the route:\n * - needsFeaturesEnabled: An array of feature keys that need to be enabled for this route\n * - featureDisabledRedirect: the URL to redirect to when the this route is not accessible due to disabled features\n * @param route Automatically provided by Angular\n */\n public canActivate(route: ActivatedRouteSnapshot): Observable<boolean | UrlTree> {\n return combineLatest(...(route.data.needsFeaturesEnabled as string[]).map(\n feature => this.featureToggleService.getValueOnce<boolean>(feature, false)\n )).pipe(\n map(featureStatuses => featureStatuses.every(status => status)),\n map(status => status || this.router.parseUrl(route.data.featureDisabledRedirect as string))\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport * as LDClient from 'launchdarkly-js-client-sdk';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { distinctUntilChanged, filter, map } from 'rxjs/operators';\nimport { FeatureUser } from '../../models/feature-user';\nimport { FeatureToggleService } from './feature-toggle.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LaunchDarklyService implements FeatureToggleService {\n\n private client: LDClient.LDClient;\n private readonly ready: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n private readonly features: Record<string, BehaviorSubject<any>> = {};\n private user: FeatureUser = { anonymous: true };\n private clientId: string = '';\n\n public initialize(user: FeatureUser = { anonymous: true }, clientId: string): void {\n this.ready.next(false);\n this.user = user;\n this.clientId = clientId;\n this.client = LDClient.initialize(this.clientId, this.user, {});\n this.client.on('ready', () => {\n this.client.identify(this.user).then(() => this.ready.next(true));\n });\n }\n\n public isEnabled(feature: string): Observable<boolean> {\n return this.getValue<boolean>(feature, false);\n }\n\n public getArray<R = any>(feature: string): Observable<R[]> {\n return this.getValue<R[]>(feature, []);\n }\n\n public getValue<R>(feature: string, defaultValue: R): Observable<R> {\n if (!this.features.hasOwnProperty(feature)) {\n this.features[feature] = new BehaviorSubject<R>(defaultValue);\n this.ready.pipe(\n filter(ready => ready),\n map(() => this.client.variation(feature, defaultValue))\n ).subscribe(value => {\n this.features[feature].next(value);\n this.client.on(`change:${feature}`, (val: R) => {\n this.features[feature].next(val);\n });\n });\n }\n return this.features[feature].pipe(\n distinctUntilChanged()\n );\n }\n\n /**\n * This method returns an observable that will only get the state of the feature toggle\n * once. It calls the LD SDK directly, and should only be used in circumstances where\n * only one value should be emitted, that value coming directly from LD. This will likely\n * only apply for Guards, and should be used only when absolutely necessary.\n * @see getValue for regular usage.\n * @param feature string\n * @param defaultValue R\n */\n public getValueOnce<R>(feature: string, defaultValue: R): Observable<R> {\n return this.ready.pipe(\n filter(ready => ready),\n map(() => this.client.variation(feature, defaultValue))\n );\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const windowToken = new InjectionToken('Window');\nexport function windowProvider() { return window; }\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { windowToken } from '../../window';\n\n@Injectable({\n providedIn: 'root'\n})\n\nexport class GoogleAnalyticsService {\n\n private readonly document: Document;\n private readonly window: Window;\n\n public googleAnalyticsKey: string;\n constructor(\n private readonly router: Router,\n private readonly title: Title,\n @Inject(windowToken) window: any,\n @Inject(DOCUMENT) document: any,\n ) {\n this.window = window as Window;\n this.document = document as Document;\n\n }\n\n public init(googleAnalyticsKey: string) {\n this.googleAnalyticsKey = googleAnalyticsKey;\n try {\n const script1 = this.document.createElement('script');\n script1.async = true;\n script1.src = `https://www.googletagmanager.com/gtag/js?id=${this.googleAnalyticsKey}`;\n this.document.head.appendChild(script1);\n\n const script2 = this.document.createElement('script');\n script2.innerHTML = `\n window.dataLayer = window.dataLayer || [];\n function gtag(){dataLayer.push(arguments);}\n gtag('js', new Date());\n gtag('config', '${this.googleAnalyticsKey}', {'send_page_view': false});\n `;\n this.document.head.appendChild(script2);\n } catch (ex) {\n console.error('Error appending google analytics');\n console.error(ex);\n }\n this.listenForRouteChanges();\n }\n\n private listenForRouteChanges() {\n if (this.googleAnalyticsKey) {\n this.router.events.subscribe(event => {\n if (event instanceof NavigationEnd) {\n (this.window as any).gtag('config', this.googleAnalyticsKey, {\n page_path: event.urlAfterRedirects,\n page_title: this.title.getTitle(),\n });\n }\n });\n }\n }\n\n public event(eventName: string, params: {}) {\n (this.window as any).gtag('event', eventName, params);\n }\n\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { windowToken } from '../../window';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GoogleTagManagerService {\n private readonly document: Document;\n private readonly window: Window;\n\n public googleTagManagerKey: string;\n constructor(\n private readonly router: Router,\n private readonly title: Title,\n @Inject(windowToken) window: any,\n @Inject(DOCUMENT) document: any\n ) {\n this.window = window as Window;\n this.document = document as Document;\n }\n\n public init(googleTagManagerKey: string) {\n this.googleTagManagerKey = googleTagManagerKey;\n try {\n\n (this.window as any).dataLayer = (this.window as any).dataLayer || [];\n (this.window as any).dataLayer.push({\n 'gtm.start': new Date().getTime(),\n event: 'gtm.js'\n });\n\n const script = this.document.createElement('script');\n script.async = true;\n script.src = `https://www.googletagmanager.com/gtm.js?id=${this.googleTagManagerKey}`;\n this.document.head.appendChild(script);\n\n } catch (ex) {\n console.error('Error appending google tag manager');\n console.error(ex);\n }\n this.listenForRouteChanges();\n }\n\n private listenForRouteChanges() {\n if (this.googleTagManagerKey) {\n this.router.events.subscribe(event => {\n if (event instanceof NavigationEnd) {\n (this.window as any).dataLayer.push({\n event: 'pageview',\n page: {\n path: event.urlAfterRedirects,\n title: this.title.getTitle()\n }\n });\n }\n });\n }\n }\n\n public event(eventName: string, params: {}) {\n (this.window as any).dataLayer.push({\n event: eventName,\n params\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport {DocumentInterruptSource, Idle, } from '@ng-idle/core';\nimport {Keepalive} from '@ng-idle/keepalive';\nimport {Observable, Subject} from 'rxjs';\nimport {\n delay,\n distinctUntilChanged,\n map\n} from 'rxjs/operators';\nimport {IdleConfigModel} from '../../models/idle-config.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ManageSessionServices {\n private readonly appStateEmitter: Subject<{type: string, countdown?: string; isVisible?: boolean}>;\n\n constructor(\n private readonly idle: Idle,\n private readonly keepalive: Keepalive,\n ) {\n this.appStateEmitter = new Subject();\n }\n\n public init(idleConfig: IdleConfigModel): void {\n\n this.idle.setIdleName(idleConfig.idleServiceName);\n this.idle.setTimeout(idleConfig.timeout);\n\n const interrupt =\n new DocumentInterruptSource('mousedown keydown DOMMouseScroll mousewheel touchstart touchmove scroll');\n this.idle.setInterrupts([interrupt]);\n\n // adding delay so that user can click on sign out before the modal shuts\n this.idle.onIdleEnd.pipe(delay(250)).subscribe(() => {\n this.appStateEmitter.next({type: 'modal', countdown: undefined, isVisible: false});\n });\n\n this.idle.onTimeout.subscribe(() => {\n this.appStateEmitter.next({type: 'signout'});\n });\n\n this.idle.onTimeoutWarning.pipe(\n map(sec => (sec > 60) ? `${Math.ceil(sec / 60)} minutes` : `${sec} seconds`),\n distinctUntilChanged()\n ).subscribe((countdown) => {\n this.appStateEmitter.next({type: 'modal', countdown, isVisible: true});\n });\n\n this.keepalive.interval(idleConfig.keepAliveInSeconds);\n this.keepalive.onPing.subscribe(() => {\n this.appStateEmitter.next({type: 'keepalive'});\n });\n const idleInSeconds = Math.floor((idleConfig.idleMilliseconds / 1000)) - idleConfig.timeout;\n this.idle.setIdle(idleInSeconds);\n this.idle.watch();\n }\n\n public appStateChanges(): Observable<any> {\n return this.appStateEmitter.asObservable();\n }\n}\n","import { Injectable } from '@angular/core';\nimport {DocumentInterruptSource, Idle, WindowInterruptSource} from '@ng-idle/core';\nimport {Keepalive} from '@ng-idle/keepalive';\nimport {Observable, Subject} from 'rxjs';\nimport {\n distinctUntilChanged,\n map\n} from 'rxjs/operators';\nimport {TimeoutNotificationConfig} from '../../models/timeout-notification.model';\n\n/**\n * TimeoutNotificationsService\n *\n * The Timeout Notification Service allows your application to receive notifications\n * when a User is approaching the the total time that a User has been idle for.\n *\n * This can be set by your application using the Timeout Notification Config object.\n *\n * Your application will then have to listen to events coming from the Timeout Notification Service,\n * and handle these events within your application.\n *\n * @see README.md for implementation details and code, on how to implement the Timeout Notification\n * Service within your application.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class TimeoutNotificationsService {\n\n private readonly eventEmitter: Subject<{eventType: string, readableCountdown?: string; }>;\n\n constructor(\n private readonly idle: Idle,\n private readonly keepalive: Keepalive,\n ) {\n this.eventEmitter = new Subject();\n }\n\n /**\n * Convert milliseconds to seconds.\n *\n * @param milliseconds - 1000\n * @return seconds - 1\n */\n public millisecondsToSeconds = (milliseconds: number): number => milliseconds / 1000;\n\n /**\n * Initialise\n *\n * Initialise the Timeout Notification Events.\n *\n * I made the decision not to make ' minutes' and ' seconds' configurable via input parameters -\n * As I made an assumption that any Reform team would not need to change these to 'secs, mins' or 's, m'.\n *\n * idleModalDisplayTime and totalIdleTime need to be passed in, in milliseconds.\n *\n * @see README.md for more information on TimeoutNotificationService.\n */\n public initialise(config: TimeoutNotificationConfig): void {\n\n const DOCUMENT_INTERRUPTS = 'mousedown keydown DOMMouseScroll mousewheel touchstart touchmove scroll';\n\n const MINUTES = ' minutes';\n const SECONDS = ' seconds';\n\n const SIGNOUT_EVENT = 'sign-out';\n const COUNTDOWN_EVENT = 'countdown';\n const KEEP_ALIVE_EVENT = 'keep-alive';\n\n const {idleServiceName, idleModalDisplayTime, totalIdleTime} = config;\n\n this.idle.setIdleName(idleServiceName);\n\n const idleModalDisplayTimeInSeconds = this.millisecondsToSeconds(idleModalDisplayTime);\n const totalIdleTimeInSeconds = this.millisecondsToSeconds(totalIdleTime);\n\n this.idle.setTimeout(idleModalDisplayTimeInSeconds);\n\n const docInterrupts = new DocumentInterruptSource(DOCUMENT_INTERRUPTS);\n const windowInterrupts = new WindowInterruptSource(DOCUMENT_INTERRUPTS);\n this.idle.setInterrupts([docInterrupts, windowInterrupts]);\n\n this.idle.onTimeout.subscribe(() => {\n this.eventEmitter.next({eventType: SIGNOUT_EVENT});\n });\n\n this.idle.onTimeoutWarning.pipe(\n map(sec => (sec > 60) ? Math.ceil(sec / 60) + MINUTES : sec + SECONDS),\n distinctUntilChanged()\n ).subscribe((countdown) => {\n this.eventEmitter.next({eventType: COUNTDOWN_EVENT, readableCountdown: countdown});\n });\n this.idle.onIdleStart.subscribe(() => console.log('You\\'ve gone idle!'));\n this.idle.onIdleEnd.subscribe(() => console.log('You\\'re no longer idle!'));\n\n this.keepalive.interval(15);\n this.keepalive.onPing.subscribe(() => {\n this.eventEmitter.next({eventType: KEEP_ALIVE_EVENT});\n });\n\n const idleInSeconds = Math.floor(totalIdleTimeInSeconds) - idleModalDisplayTimeInSeconds;\n this.idle.setIdle(idleInSeconds);\n this.idle.watch();\n }\n\n /**\n * Expose the notification events, so that a 3rd party service can listen to the notifications.\n */\n public notificationOnChange(): Observable<any> {\n\n return this.eventEmitter.asObservable();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { skipWhile } from 'rxjs/operators';\n\n// use types so we can move to stricted typing later on\nexport type Role = string;\nexport type Roles = Role[];\n\n@Injectable({\n providedIn: 'root'\n })\nexport class RoleService {\n public readonly pRoles = new BehaviorSubject<Roles>(null);\n public roles$ = this.pRoles.asObservable().pipe(skipWhile(item => item === null));\n\n public set roles(roles: Roles) {\n this.pRoles.next(roles);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, Router, UrlTree } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { RoleService } from './role.service';\n\nexport enum RoleMatching {\n ALL,\n ANY\n}\n\n@Injectable({\n providedIn: 'root'\n })\nexport class RoleGuard implements CanActivate {\n\n public constructor(\n private readonly roleService: RoleService,\n private readonly router: Router\n ) {}\n\n public canActivate(route: ActivatedRouteSnapshot): Observable<boolean | UrlTree> {\n return this.roleService.roles$.pipe(\n map(roles => {\n const canActivateRoles = (route.data.needsRole as string[]);\n const check = (roleRegEx: string) => {\n const regex = new RegExp(roleRegEx);\n return roles.some(role => regex.test(role));\n };\n const match = route.data.roleMatching === RoleMatching.ALL ? canActivateRoles.every(check) : canActivateRoles.some(check);\n\n return match || this.router.parseUrl(route.data.noRoleMatchRedirect as string);\n })\n );\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CookieService {\n private readonly document?: Document;\n\n constructor(@Inject(DOCUMENT) doc?: any) {\n this.document = doc as Document;\n }\n\n public setCookie(key: string, value: string, expiryDate?: string): void {\n const expiry = expiryDate ? ` expires=${expiryDate}` : '';\n const cookie = `${key}=${value};${expiry}`;\n this.document.cookie = cookie;\n }\n\n public getCookie(key: string): string {\n const cookieValue = this.document.cookie\n .split('; ')\n .find(row => row.startsWith(`${key}=`))\n .split('=')[1];\n return cookieValue;\n }\n\n public deleteCookie(key: string, path?: string, domain?: string): void {\n const pathValue = path ? `; path=${path}` : '';\n const domainValue = domain ? `; domain=${domain}` : '';\n this.document.cookie = `${key}=${pathValue}${domainValue}; expires=Thu, 01 Jan 1970 00:00:01 GMT; max-age=0`;\n }\n\n public deleteCookieByPartialMatch(key: string, path?: string, domain?: string): void {\n this.document.cookie\n .split('; ')\n .filter(row => row.startsWith(`${key}`))\n .forEach(element => {\n this.deleteCookie(element.split('=')[0], path, domain);\n });\n }\n\n public checkCookie(key: string): boolean {\n return this.document.cookie.split('; ').some(item => item.trim().startsWith(`${key}=`));\n }\n}\n","import {Injectable} from '@angular/core';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {distinctUntilChanged} from 'rxjs/operators';\n\nexport abstract class HasLoadingState {\n public get isLoading(): Observable<boolean> {\n return;\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LoadingService implements HasLoadingState {\n private readonly registered = new Map<string, string>();\n private readonly loading = new BehaviorSubject<boolean>(false);\n\n public get isLoading(): Observable<boolean> {\n return this.loading.asObservable().pipe(distinctUntilChanged());\n }\n\n public register(): string {\n const token = this.generateToken();\n this.registered.set(token, token);\n this.loading.next(true);\n return token;\n }\n\n public unregister(token: string): void {\n this.registered.delete(token);\n this.loading.next(this.registered.size > 0);\n }\n\n private generateToken(): string {\n const timestamp = window.performance.now();\n return `common-lib-loading-${timestamp}`; // format: [source-library]-[unique incrementing number]\n }\n}\n\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { FilterError, FilterPersistence, FilterSetting } from '../../models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FilterService {\n public givenErrors: BehaviorSubject<FilterError[]> = new BehaviorSubject(null);\n public isInitialSetting: boolean = false;\n private readonly filterSettings: { [id: string]: FilterSetting } = {};\n private readonly streams: { [id: string]: BehaviorSubject<FilterSetting> } = {};\n\n public persist(setting: FilterSetting, persistence: FilterPersistence): void {\n switch (persistence) {\n case 'local':\n this.persistLocal(setting);\n break;\n case 'session':\n this.persistSession(setting);\n break;\n default:\n break;\n }\n this.persistMemory(setting);\n this.updateStreams(setting);\n }\n\n public get(id: string): FilterSetting | null {\n if (this.filterSettings[id]) {\n return this.filterSettings[id];\n }\n if (sessionStorage.getItem(id)) {\n return JSON.parse(sessionStorage.getItem(id));\n }\n if (localStorage.getItem(id)) {\n if (this.isSameUser(id)) {\n return JSON.parse(window.localStorage.getItem(id));\n } else {\n return null;\n }\n }\n return null;\n }\n\n public isSameUser(id: string): boolean {\n const filterSetting: FilterSetting = JSON.parse(window.localStorage.getItem(id));\n return !!filterSetting.idamId && filterSetting.idamId === this.getUserId();\n }\n\n public getStream(id: string): Observable<FilterSetting> {\n if (!this.streams[id]) {\n this.streams[id] = new BehaviorSubject<FilterSetting>(this.get(id));\n }\n return this.streams[id].asObservable();\n }\n\n public clearSessionAndLocalPersistance(id: string) {\n sessionStorage.removeItem(id);\n localStorage.removeItem(id);\n if (this.filterSettings[id] !== undefined) {\n this.filterSettings[id] = null;\n }\n if (this.streams[id] !== undefined) {\n this.streams[id].next(null);\n }\n }\n\n private persistLocal(setting: FilterSetting): void {\n setting.idamId = this.getUserId();\n window.localStorage.setItem(setting.id, JSON.stringify(setting));\n }\n\n private persistSession(setting: FilterSetting): void {\n sessionStorage.setItem(setting.id, JSON.stringify(setting));\n }\n\n private persistMemory(setting: FilterSetting): void {\n this.filterSettings[setting.id] = setting;\n }\n\n private updateStreams(setting: FilterSetting): void {\n if (this.streams[setting.id]) {\n this.streams[setting.id].next(setting);\n }\n }\n\n public getUserId(): string {\n const userInfoStr = window.sessionStorage.getItem('userDetails');\n let userId: string;\n if (userInfoStr) {\n const userInfo = JSON.parse(userInfoStr);\n userId = userInfo.id ? userInfo.id : userInfo.uid;\n }\n return userId;\n }\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { LocationModel } from '../../../models';\nimport { RefDataHMCTSService } from '../models/ref-data-htmcs-service.model';\nimport { RefDataRegion } from '../models/ref-data-region.model';\nimport {\n LocationModelsByServiceCodeResponse\n} from './models/ref-data-locations-by-service-code-response.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RefDataDataAccessService {\n public static refDataUrl: string = '/api/ref-data';\n public constructor(private readonly http: HttpClient) {}\n\n public getServices(): Observable<RefDataHMCTSService[]> {\n return this.http.get<RefDataHMCTSService[]>(`${RefDataDataAccessService.refDataUrl}/services`);\n }\n\n public getRegions(): Observable<RefDataRegion[]> {\n return this.http.get<RefDataRegion[]>(`${RefDataDataAccessService.refDataUrl}/regions`);\n }\n\n public getLocationsByServiceCode(serviceCode: string) {\n const httpParams = new HttpParams()\n .append('service_code', serviceCode);\n\n return this.http.get<LocationModelsByServiceCodeResponse>(`${RefDataDataAccessService.refDataUrl}/locations-by-service-code`, { params: httpParams });\n }\n\n public getLocations() {\n return this.http.get<LocationModel[]>(`${RefDataDataAccessService.refDataUrl}/locations`);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { forkJoin, Observable, of } from 'rxjs';\nimport { catchError, map, shareReplay, take } from 'rxjs/operators';\nimport { LocationByEPIMMSModel } from '../../models';\nimport { RefDataHMCTSService } from './models/ref-data-htmcs-service.model';\nimport { RefDataRegion } from './models/ref-data-region.model';\nimport { RefDataDataAccessService } from './ref-data-data-access/ref-data-data-access.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RefDataService {\n public regions$: Observable<RefDataRegion[]>;\n public services$: Observable<RefDataHMCTSService[]>;\n public locations$: Observable<LocationByEPIMMSModel[]>;\n private readonly locationsByServiceCodesCache: {[serviceCode: string]: Observable<LocationByEPIMMSModel[]>} = {};\n\n constructor(private readonly refDataDataAccessService: RefDataDataAccessService) {\n this.regions$ = this.refDataDataAccessService.getRegions().pipe(shareReplay());\n this.services$ = this.refDataDataAccessService.getServices().pipe(shareReplay());\n this.locations$ = this.refDataDataAccessService.getLocations().pipe(shareReplay());\n }\n\n public getLocationsByServiceCodes(serviceCodes: string[]): Observable<LocationByEPIMMSModel[]> {\n const observables: Observable<LocationByEPIMMSModel[]>[] = [];\n serviceCodes.forEach(serviceCode => {\n if (!this.locationsByServiceCodesCache[serviceCode]) {\n this.locationsByServiceCodesCache[serviceCode] = this.refDataDataAccessService.getLocationsByServiceCode(serviceCode).pipe(\n catchError(() => of({ court_venues: [] })),\n map(responseData => responseData.court_venues),\n shareReplay()\n );\n }\n\n observables.push(this.locationsByServiceCodesCache[serviceCode]);\n });\n\n return forkJoin(observables).pipe(\n map((values) => values.reduce((acc, val) => acc.concat(val)), []),\n take(1)\n );\n }\n}\n","/*\n * Public API Surface of exui-common-lib\n */\nexport * from './feature-toggle/feature-toggle.guard';\nexport * from './feature-toggle/feature-toggle.service';\nexport * from './feature-toggle/launch-darkly.service';\nexport * from './google-analytics/google-analytics.service';\nexport * from './google-tag-manager/google-tag-manager.service';\nexport * from './manage-session/manage-session.services';\nexport * from './timeout-notifications/timeout-notifications.service';\nexport * from './role-guard/role.guard';\nexport * from './role-guard/role.service';\nexport * from './cookie/cookie.service';\nexport * from './loading/loading.service';\nexport * from './filter/filter.service';\nexport * from './ref-data';\n","import { UserDetails } from './user-details.model';\n\nexport interface SharedCase {\n caseId: string;\n caseTitle: string;\n caseTypeId?: string;\n roles?: string[];\n sharedWith?: UserDetails[];\n pendingShares?: UserDetails[];\n pendingUnshares?: UserDetails[];\n}\n\nexport enum SharedCaseErrorMessages {\n OneCaseMustBeSelected = 'At least one case must be selected',\n NoChangesRequested = 'You have not requested any changes to case sharing',\n OnePersonMustBeAssigned = 'At least one person must be assigned to each case'\n}\n","export enum BadgeColour {\n BADGE_RED = 'hmcts-badge--red',\n BADGE_BLUE = 'hmcts-badge--blue',\n BADGE_GREEN = 'hmcts-badge--green',\n}\n\nexport interface ContactDetailsDataModel {\n title?: string;\n badgeColour?: BadgeColour;\n badgeText?: string;\n email?: string;\n phone?: string;\n openingTimes?: string;\n}\n","export class AnonymousFeatureUser {\n public anonymous: true;\n}\n\nexport class LoggedInFeatureUser {\n public key: string;\n public custom: {\n [key: string]: any,\n roles: string[],\n orgId: string\n };\n}\n\nexport type FeatureUser = AnonymousFeatureUser | LoggedInFeatureUser;\n","import { UntypedFormGroup } from '@angular/forms';\nimport { BookingCheckType } from './location.model';\nimport { PersonRole } from './person.model';\n\nexport type FilterFieldType = 'group-title' | 'checkbox' | 'radio' | 'select' | 'find-person' | 'find-location' | 'checkbox-large' | 'find-service' | 'text-input' | 'email-input' | 'group-select' | 'nested-checkbox' | 'find-task-name';\n\nexport type FilterPersistence = 'local' | 'session' | 'memory';\n\nexport interface FilterConfigOption {\n key: string;\n label: string;\n selectAll?: boolean;\n}\n\nexport interface FilterConfig {\n id: string;\n fields: FilterFieldConfig[];\n persistence: FilterPersistence;\n applyButtonText: string;\n enableDisabledButton?: boolean;\n cancelButtonText: string;\n cancelSetting?: FilterSetting;\n showCancelFilterButton?: boolean;\n preSelectedNestedCheckbox?: number[];\n cancelButtonCallback?(): void;\n applyButtonCallback?(): void;\n copyFields?(form: UntypedFormGroup): UntypedFormGroup;\n}\n\nexport interface FilterFieldOption {\n key: string;\n label: string;\n selectAll?: true;\n}\n\nexport interface FilterFieldConfig {\n name: string;\n options: FilterConfigOption[];\n minSelected: number;\n maxSelected: number;\n type: FilterFieldType;\n minSelectedError?: string;\n maxSelectedError?: string;\n displayMaxSelectedError?: boolean;\n displayMinSelectedError?: boolean;\n emailError?: string;\n lineBreakBefore?: boolean;\n showCondition?: string;\n enableCondition?: string;\n enableAddButton?: boolean;\n enableAddLocationButton?: boolean;\n enableAddTaskNameButton?: boolean;\n changeResetFields?: string[];\n findPersonField?: string;\n findLocationField?: string;\n findTaskNameField?: string;\n domainField?: string;\n disable?: boolean;\n disabledText?: string;\n domain?: PersonRole;\n title?: string;\n titleClasses?: string;\n titleHint?: string;\n subTitle?: string;\n locationTitle?: string;\n hintText?: string;\n radioSelectionChange?: string;\n bookingCheckType?: BookingCheckType;\n placeholderContent?: string;\n maxWidth480px?: boolean;\n maxRows?: number;\n groupOptions?: GroupOptions[];\n maxlength?: number;\n defaultOption?: FilterConfigOption;\n readonly?: boolean;\n servicesField?: string;\n services?: string[];\n propertyNameFilter?: string;\n}\n\nexport interface GroupOptions {\n group: string;\n options: FilterFieldOption[];\n placeholderContent?: string;\n}\n\nexport interface FilterSetting {\n id: string;\n idamId?: string;\n reset?: boolean;\n fields: { name: string, value: any[] }[];\n}\n\nexport class RadioFilterFieldConfig implements FilterFieldConfig {\n public name: string;\n public options: { key: string, label: string}[];\n public minSelected: 1;\n public maxSelected: 1;\n public type: 'radio';\n}\n\nexport interface FilterError {\n name: string;\n error: string;\n}\n","export interface LocationModel {\n court_venue_id: string;\n site_name: string;\n court_name?: string;\n epimms_id: string;\n open_for_public?: string;\n court_type_id: string;\n court_type: string;\n region_id: string;\n region: string;\n cluster_id?: string;\n cluster_name?: string;\n court_status?: string;\n court_open_date?: string;\n closed_date?: string;\n postcode: string;\n court_address: string;\n phone_number?: string;\n court_location_code?: string;\n dx_address?: string;\n welsh_site_name?: string;\n welsh_court_address?: string;\n venue_name?: string;\n is_case_management_location: string;\n is_hearing_location: string;\n}\n\nexport interface LocationByEPIMMSModel {\n epimms_id: string;\n site_name?: string;\n court_name?: string;\n open_for_public?: string;\n region_id?: string;\n region?: string;\n cluster_id?: string;\n cluster_name?: string;\n court_status?: string;\n court_open_date?: string;\n closed_date?: string;\n postcode?: string;\n court_address?: string;\n phone_number?: string;\n court_location_code?: string;\n dx_address?: string;\n welsh_site_name?: string;\n welsh_court_address?: string;\n venue_name?: string;\n is_case_management_location?: string;\n is_hearing_location?: string;\n}\n\nexport interface LocationsByService {\n service?: string;\n serviceCode?: string;\n bookable?: boolean;\n // EUI-7909 - replace line below\n locations?: LocationByEPIMMSModel[] | string[];\n // locations: LocationByEPIMMSModel[];\n}\n\nexport enum BookingCheckType {\n NO_CHECK = 'NO_CHECK',\n BOOKINGS_AND_BASE = 'BOOKINGS_AND_BASE',\n POSSIBLE_BOOKINGS = 'POSSIBLE_BOOKINGS',\n}\n\n","export interface Person {\n id: string;\n name: string;\n email?: string;\n domain: string;\n knownAs?: string;\n fullName?: string;\n}\n\nexport interface JudicialUserModel {\n emailId: string;\n fullName: string;\n idamId: string;\n isJudge: string;\n isMagistrate: string;\n isPanelMember: string;\n knownAs: string;\n personalCode: string;\n surname: string;\n title: string;\n}\n\nexport interface CaseworkersByService {\n service: string;\n caseworkers: Caseworker[];\n}\n\nexport interface Caseworker {\n idamId: string;\n firstName: string;\n lastName: string;\n email: string;\n knownAs?: string;\n roleCategory: string;\n}\n\nexport enum PersonRole {\n JUDICIAL = 'Judicial',\n CASEWORKER = 'Legal Ops',\n ADMIN = 'Admin',\n CTSC = 'CTSC',\n ALL = 'All',\n}\n\n// Note: RoleCategory could replace PersonRole possibly\n// However a lot of webapp logic is based on current PersonRole understanding\nexport enum RoleCategory {\n JUDICIAL = 'JUDICIAL',\n CASEWORKER = 'LEGAL_OPERATIONS',\n ADMIN = 'ADMIN',\n CTSC = 'CTSC',\n ALL = 'ALL'\n}\n","import { Caseworker, CaseworkersByService } from '../../../models';\nimport { ISessionStorageService } from '../../models/isession-storage.interface';\n\nexport const getAllCaseworkersFromServices = (caseworkersByService: CaseworkersByService[]): Caseworker[] => {\n let allCaseworkers: Caseworker[] = [];\n caseworkersByService.forEach(caseworkerListByService => {\n allCaseworkers = allCaseworkers.concat(caseworkerListByService.caseworkers);\n });\n return allCaseworkers;\n};\n\nexport const getSessionStorageKeyForServiceId = (serviceId: string): string => {\n return `${serviceId}-caseworkers`;\n};\n\nexport const getCaseworkers = (serviceId: string, sessionStorageService: ISessionStorageService): Caseworker[] => {\n const sessionKey = getSessionStorageKeyForServiceId(serviceId);\n const value = sessionStorageService.getItem(sessionKey);\n if (value) {\n return JSON.parse(value) as Caseworker[];\n }\n};\n\nexport const setCaseworkers = (serviceId: string, caseworkers: Caseworker[], sessionStorageService: ISessionStorageService): void => {\n const sessionKey = getSessionStorageKeyForServiceId(serviceId);\n sessionStorageService.setItem(sessionKey, JSON.stringify(caseworkers));\n};\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SessionStorageService {\n\n /**\n * Get an item from the session storage.\n * If remove is true, the item will be removed once read\n * @param removeAfterRead removed the key once it has been read\n */\n public getItem(key: string, removeAfterRead: boolean = false): string {\n const item = sessionStorage.getItem(key);\n\n if (removeAfterRead) { this.removeItem(key); }\n\n return item;\n }\n\n /**\n * Set an item in the session storage.\n */\n public setItem(key: string, value: string): void {\n sessionStorage.setItem(key, value);\n }\n\n /**\n * Remove an item in the session storage.\n */\n public removeItem(key: string): void {\n sessionStorage.removeItem(key);\n }\n\n /**\n * Clear all the items held in session storage.\n */\n public clear(): void {\n sessionStorage.clear();\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { map, tap } from 'rxjs/operators';\nimport {\n getAllCaseworkersFromServices,\n getSessionStorageKeyForServiceId,\n setCaseworkers\n} from '../../gov-ui/util/session-storage/session-storage-utils';\nimport {\n Caseworker,\n CaseworkersByService,\n JudicialUserModel,\n Person,\n PersonRole,\n RoleCategory,\n SearchOptions\n} from '../../models';\nimport { SessionStorageService } from '../storage/session-storage/session-storage.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FindAPersonService {\n\n public static caseworkersKey: string = 'caseworkers';\n public userId: string;\n public assignedUser: string;\n\n constructor(private readonly http: HttpClient, private readonly sessionStorageService: SessionStorageService) {\n }\n\n public find(searchOptions: SearchOptions): Observable<Person[]> {\n const userInfoStr = this.sessionStorageService.getItem('userDetails');\n if (userInfoStr && !searchOptions.userIncluded) {\n const userInfo = JSON.parse(userInfoStr);\n this.userId = userInfo.id ? userInfo.id : userInfo.uid;\n }\n this.assignedUser = searchOptions.assignedUser ? searchOptions.assignedUser : null;\n return this.http.post<Person[]>('/workallocation/findPerson', { searchOptions })\n .pipe(map(judiciary => judiciary.filter(judge => !([this.assignedUser, this.userId].includes(judge.id)))));\n }\n\n public findCaseworkers(searchOptions: SearchOptions): Observable<Person[]> {\n const userInfoStr = this.sessionStorageService.getItem('userDetails');\n if (userInfoStr) {\n const userInfo = JSON.parse(userInfoStr);\n this.userId = userInfo.id ? userInfo.id : userInfo.uid;\n }\n this.assignedUser = searchOptions.assignedUser ? searchOptions.assignedUser : null;\n const fullServices = searchOptions.services;\n const storedServices = [];\n const newServices: string[] = [];\n const storedCaseworkersByService: CaseworkersByService[] = [];\n fullServices.forEach(serviceId => {\n const serviceKey = getSessionStorageKeyForServiceId(serviceId);\n if (this.sessionStorageService.getItem(serviceKey)) {\n storedServices.push(serviceId);\n storedCaseworkersByService.push({ service: serviceId, caseworkers: JSON.parse(this.sessionStorageService.getItem(serviceKey)) });\n } else {\n newServices.push(serviceId);\n }\n });\n // if all services are stored then return the stored caseworkers by service\n if (storedServices.length === fullServices.length) {\n const storedCaseworkers = getAllCaseworkersFromServices(storedCaseworkersByService);\n return of(this.searchInCaseworkers(storedCaseworkers, searchOptions));\n }\n // all serviceIds passed in as node layer getting used anyway and caseworkers also stored there\n return this.http.post<CaseworkersByService[]>('/workallocation/retrieveCaseWorkersForServices', { fullServices }).pipe(\n tap(caseworkersByService => {\n caseworkersByService.forEach(caseworkerListByService => {\n // for any new service, ensure that they are then stored in the session\n if (newServices.includes(caseworkerListByService.service)) {\n setCaseworkers(caseworkerListByService.service, caseworkerListByService.caseworkers, this.sessionStorageService);\n }\n });\n }),\n map(caseworkersByService => {\n const givenCaseworkers = getAllCaseworkersFromServices(caseworkersByService);\n return this.searchInCaseworkers(givenCaseworkers, searchOptions);\n })\n );\n }\n\n public mapCaseworkers(caseworkers: Caseworker[], roleCategory: string): Person[] {\n const people: Person[] = [];\n caseworkers.forEach((caseworker) => {\n const thisPerson: Person = {\n email: caseworker.email,\n name: `${caseworker.firstName} ${caseworker.lastName}`,\n id: caseworker.idamId,\n domain: caseworker.roleCategory === RoleCategory.CASEWORKER ? PersonRole.CASEWORKER : PersonRole.ADMIN,\n // knownAs can be added if required\n };\n if (caseworker.roleCategory === roleCategory || roleCategory === RoleCategory.ALL) {\n people.push(thisPerson);\n }\n });\n return people;\n }\n\n public searchInCaseworkers(caseworkers: Caseworker[], searchOptions: SearchOptions): Person[] {\n let roleCategory = RoleCategory.ALL;\n if (!(searchOptions.userRole === PersonRole.ALL)) {\n if (searchOptions.userRole === PersonRole.CASEWORKER) {\n roleCategory = RoleCategory.CASEWORKER;\n } else if (searchOptions.userRole === PersonRole.ADMIN) {\n roleCategory = RoleCategory.ADMIN;\n } else if (searchOptions.userRole === PersonRole.CTSC) {\n roleCategory = RoleCategory.CTSC;\n }\n }\n const searchTerm = searchOptions && searchOptions.searchTerm ? searchOptions.searchTerm.toLowerCase() : '';\n const people = caseworkers ? this.mapCaseworkers(caseworkers, roleCategory) : [];\n const finalPeopleList = people.filter(person => person && person.name && person.name.toLowerCase().includes(searchTerm));\n return searchOptions.userIncluded ? finalPeopleList.filter(person => person && person.id !== this.assignedUser)\n : finalPeopleList.filter(person => person && person.id !== this.userId && person.id !== this.assignedUser);\n }\n\n public searchJudicial(value: string, serviceId: string): Observable<JudicialUserModel[]> {\n return this.http.post<JudicialUserModel[]>('api/prd/judicial/getJudicialUsersSearch',\n { searchString: value, serviceCode: serviceId });\n }\n}\n\n","import { ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { Observable, Subscription, zip } from 'rxjs';\nimport { of } from 'rxjs/internal/observable/of';\nimport { catchError, debounceTime, filter, map, switchMap, tap } from 'rxjs/operators';\nimport { Person, PersonRole } from '../../models';\nimport { FindAPersonService } from '../../services/find-person/find-person.service';\n\n@Component({\n selector: 'xuilib-find-person',\n templateUrl: './find-person.component.html',\n styleUrls: ['./find-person.component.scss'],\n})\n\nexport class FindPersonComponent implements OnInit, OnDestroy {\n @Output() public personSelected = new EventEmitter<Person>();\n @Output() public personFieldChanged = new EventEmitter<void>();\n @Input() public title: string;\n @Input() public boldTitle = 'Find the person';\n @Input() public subTitle = 'Type the name of the person and select them.';\n @Input() public domain = PersonRole.ALL;\n @Input() public findPersonGroup: UntypedFormGroup = new UntypedFormGroup({});\n @Input() public selectedPerson: string;\n @Input() public submitted: boolean = true;\n @Input() public userIncluded?: boolean = false;\n @Input() public assignedUser?: string;\n @Input() public placeholderContent: string = '';\n @Input() public isNoResultsShown: boolean = true;\n @Input() public showUpdatedColor: boolean = false;\n @Input() public selectedPersons: Person[] = [];\n @Input() public errorMessage: string = 'You must select a name';\n @Input() public idValue: string = '';\n @Input() public services: string = 'IA';\n @Input() public disabled: boolean = null;\n public showAutocomplete: boolean = false;\n public findPersonControl: UntypedFormControl;\n public filteredOptions: Person[] = [];\n public readonly minSearchCharacters = 2;\n private sub: Subscription;\n\n constructor(private readonly findPersonService: FindAPersonService, private readonly cd: ChangeDetectorRef) {\n }\n\n public ngOnDestroy() {\n if (this.sub) {\n this.sub.unsubscribe();\n }\n }\n\n public ngOnInit(): void {\n this.findPersonControl = new UntypedFormControl(this.selectedPerson);\n this.findPersonGroup.addControl('findPersonControl', this.findPersonControl);\n this.sub = this.findPersonControl.valueChanges.pipe(\n tap(() => this.showAutocomplete = false),\n tap(() => this.filteredOptions = []),\n debounceTime(300),\n tap((searchTerm) => typeof searchTerm === 'string' ? this.personSelected.emit(null) : void 0),\n filter((searchTerm: string) => searchTerm && searchTerm.length > this.minSearchCharacters),\n switchMap((searchTerm: string) => this.filter(searchTerm).pipe(\n tap(() => this.showAutocomplete = true),\n catchError(() => this.filteredOptions = []),\n ))\n ).subscribe((people: Person[]) => {\n this.filteredOptions = people;\n this.cd.detectChanges();\n });\n }\n\n public filter(searchTerm: string): Observable<Person[]> {\n const findJudicialOrCTSCPeople = this.findPersonService.find({searchTerm, userRole: this.domain, services: [this.services], userIncluded: this.userIncluded, assignedUser: this.assignedUser});\n const findCaseworkersOrAdminsOrCtsc = this.findPersonService.findCaseworkers({searchTerm, userRole: this.domain, services: [this.services], userIncluded: this.userIncluded, assignedUser: this.assignedUser});\n if (searchTerm && searchTerm.length > this.minSearchCharacters) {\n switch (this.domain) {\n case PersonRole.JUDICIAL: {\n return findJudicialOrCTSCPeople.pipe(map(persons => {\n const ids: string[] = this.selectedPersons.map(({id}) => id);\n return persons.filter(({ id }) => !ids.includes(id));\n }));\n }\n case PersonRole.ALL: {\n return zip(findJudicialOrCTSCPeople, findCaseworkersOrAdminsOrCtsc).pipe(map(separatePeople => separatePeople[0].concat(separatePeople[1])));\n }\n case PersonRole.CTSC:\n case PersonRole.CASEWORKER:\n case PersonRole.ADMIN: {\n return findCaseworkersOrAdminsOrCtsc;\n }\n default: {\n return of([]);\n }\n }\n }\n return of([]);\n }\n\n public onSelectionChange(selectedPerson: Person): void {\n this.personSelected.emit(selectedPerson);\n this.findPersonControl.setValue(this.getDisplayName(selectedPerson), {emitEvent: false, onlySelf: true});\n }\n\n public getDisplayName(selectedPerson: Person): string {\n if (!selectedPerson) {\n return '';\n }\n if (selectedPerson.domain === PersonRole.JUDICIAL && selectedPerson.fullName) {\n return `${selectedPerson.fullName} (${selectedPerson.email})`;\n }\n return selectedPerson.email ? `${selectedPerson.name} (${selectedPerson.email})` : selectedPerson.name;\n }\n\n public onInput(): void {\n this.personFieldChanged.emit();\n }\n}\n","<h1 class=\"govuk-heading-l\" *ngIf=\"title && title.length\">\n <span class=\"govuk-caption-l\">{{title}}</span>\n {{boldTitle}}\n</h1>\n<div class=\"govuk-form-group\" [formGroup]=\"findPersonGroup\"\n [ngClass]=\"{'form-group-error': findPersonGroup.get('findPersonControl').invalid && submitted}\">\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"sub-title-hint\">\n <div id=\"sub-title-hint\" class=\"govuk-hint\" *ngIf=\"subTitle && subTitle.length\">\n {{subTitle}}\n </div>\n <span id=\"validation-error\" class=\"govuk-error-message\" *ngIf=\"findPersonGroup && findPersonGroup.errors\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{findPersonGroup.errors.error ? findPersonGroup.errors.error : errorMessage}}\n </span>\n <input id=\"inputSelectPerson{{idValue}}\" type=\"text\" aria-label=\"select a person\"\n formControlName=\"findPersonControl\"\n [matAutocomplete]=\"auto\"\n class=\"govuk-input govuk-!-width-one-third\"\n [placeholder]=\"placeholderContent\"\n [attr.disabled]=\"disabled\"\n (input)=\"onInput()\">\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" (optionSelected)=\"onSelectionChange($event.option.value)\">\n <mat-option *ngFor=\"let option of filteredOptions\"\n [value]=\"option\"\n [ngClass]=\"{'hide-autocomplete': !showAutocomplete, 'select-option': showUpdatedColor}\">\n {{getDisplayName(option)}}\n </mat-option>\n <mat-option [ngClass]=\"{'select-option': showUpdatedColor}\" *ngIf=\"isNoResultsShown && !filteredOptions.length && showAutocomplete\">No results found</mat-option>\n </mat-autocomplete>\n </fieldset>\n</div>\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { LocationByEPIMMSModel, LocationsByService } from '../../models/location.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LocationService {\n\n constructor(private readonly http: HttpClient) {\n }\n\n /**\n * @description getAllLocations from service Ids/location type/search term\n * @param serviceIds: SSCS | SSCS,IA split with ','\n * @param locationType: optional | hearing | case_management\n * @param searchTerm: any search term for postcode | site name | venue name |court name | court address etc.\n * @return Observable<LocationByEPIMMSModel[]>: Array of locationModel in Observable\n */\n // EUI-7909 - replace definition\n /* public getAllLocations(serviceIds: string, locationType: string, searchTerm: string, userLocations: LocationsByService[]): Observable<LocationByEPIMMSModel[]> {\n return this.http.post<LocationByEPIMMSModel[]>(`api/locations/getLocations`, {serviceIds, locationType, searchTerm, userLocations}); */\n public getAllLocations(serviceIds: string, locationType: string, searchTerm: string, userLocations: LocationsByService[], bookingLocations: string[]): Observable<LocationByEPIMMSModel[]> {\n return this.http.post<LocationByEPIMMSModel[]>(`api/locations/getLocations`, {serviceIds, locationType, searchTerm, userLocations, bookingLocations});\n }\n\n /**\n * @description searchLocations from service Ids/location type/search term\n * @param serviceIds: BBA3 | BBA3,BFA1 split with ','\n * @param locationType: optional | hearing | case_management\n * @param searchTerm: any search term for postcode | site name | venue name |court name | court address etc.\n * @return Observable<LocationByEPIMMSModel[]>: Array of locationModel in Observable\n */\n public searchLocations(serviceIds: string, locationType: string, searchTerm: string): Observable<LocationByEPIMMSModel[]> {\n return this.http.get<LocationByEPIMMSModel[]>(`api/prd/location/getLocations?serviceIds=${serviceIds}&locationType=${locationType}&searchTerm=${searchTerm}`);\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { iif, Observable, of } from 'rxjs';\nimport { debounceTime, map, switchMap, tap } from 'rxjs/operators';\nimport {\n BookingCheckType, FilterConfigOption,\n FilterFieldConfig,\n LocationByEPIMMSModel,\n LocationsByService\n} from '../../models';\nimport { LocationService } from '../../services/locations/location.service';\nimport { RefDataService } from '../../services/ref-data';\nimport { SessionStorageService } from '../../services/storage/session-storage/session-storage.service';\n\n@Component({\n selector: 'exui-search-location',\n templateUrl: './search-location.component.html',\n styleUrls: ['./search-location.component.scss']\n})\nexport class SearchLocationComponent implements OnInit {\n @Input() public form: UntypedFormGroup;\n @Input() public field: FilterFieldConfig;\n @Input() public disabled: boolean = null;\n @Input() public singleMode: boolean = false;\n @Input() public locationType: string = '';\n @Input() public serviceIds: string = '';\n @Input() public submitted?: boolean = true;\n @Input() public bookingCheck: BookingCheckType;\n @Input() public selectedLocations: LocationByEPIMMSModel[] = [];\n @Input() public propertyNameFilter: keyof LocationByEPIMMSModel = 'site_name';\n @Input() public delay?: number = 500;\n @Output() public locationSelected = new EventEmitter<LocationByEPIMMSModel>();\n @Output() public locationTermSearchInputChanged: EventEmitter<string> = new EventEmitter<string>();\n @Output() public searchLocationChanged: EventEmitter<void> = new EventEmitter<void>();\n public searchTermFormControl = new UntypedFormControl('');\n public readonly minSearchCharacters = 3;\n public term: string = '';\n private pReset: boolean = true;\n public filteredList$: Observable<LocationByEPIMMSModel[] | boolean>;\n private readonly debounceTimeInput = 300;\n\n public get reset(): boolean {\n return this.pReset;\n }\n\n @Input()\n public set reset(value: boolean) {\n this.pReset = value;\n this.resetSearchTerm();\n }\n\n constructor(private readonly locationService: LocationService,\n private readonly sessionStorageService: SessionStorageService,\n private readonly refDataService: RefDataService\n ) {}\n\n public ngOnInit(): void {\n const searchInputChanges$ = this.searchTermFormControl.valueChanges\n .pipe(\n tap((term) => this.locationTermSearchInputChanged.emit(term))\n );\n\n // if servicesField exists, then we should filter locations by the service codes\n if (this.field && this.field.servicesField) {\n this.filteredList$ = searchInputChanges$.pipe(\n switchMap((term: string) => iif(\n // Seems more responsive to do length 0 if locationsByServiceCodes are cached\n () => (!!term && term.length >= 0),\n this.refDataService.getLocationsByServiceCodes(\n (this.form.get(this.field.servicesField)?.value as FilterConfigOption[]).map((service) => service.key)\n ).pipe(\n // Filter locations by the search input term and the chosen property name\n map((locations) => locations\n .filter((location) => location[this.propertyNameFilter].toLowerCase().includes(term.toLowerCase()))),\n // Filter out locations that are already selected\n map((locations) => this.filterUnselectedLocations(locations, this.selectedLocations, this.singleMode)),\n // Filter out duplicate locations (by propertyNameFilter)\n map((locations) => locations.filter((location, index, array) =>\n index === array.findIndex((item) => item[this.propertyNameFilter] === location[this.propertyNameFilter])\n )),\n ),\n // Returns false if the search term is empty to not show the autocomplete field i.e. ngIf should be false\n of(false)\n )),\n );\n } else {\n this.filteredList$ = searchInputChanges$.pipe(\n // Debounce needed to prevent multiple API calls being made\n debounceTime(this.debounceTimeInput),\n switchMap((term: string) => iif(\n () => (!!term && term.length >= this.minSearchCharacters),\n this.getLocations(term).pipe(\n map((locations) => this.filterUnselectedLocations(locations, this.selectedLocations, this.singleMode)),\n ),\n of(false)\n )),\n );\n }\n\n if (this.singleMode && this.selectedLocations.length > 0) {\n const location = this.selectedLocations[0];\n this.searchTermFormControl.patchValue(location[this.propertyNameFilter], {emitEvent: false, onlySelf: true});\n }\n }\n\n public onSelectedLocation(location: LocationByEPIMMSModel): void {\n this.searchTermFormControl.patchValue(location[this.propertyNameFilter], {emitEvent: false, onlySelf: true});\n this.locationSelected.emit(location);\n }\n public onInput(): void {\n this.searchLocationChanged.emit();\n }\n\n public getLocations(term: string): Observable<LocationByEPIMMSModel[]> {\n let userLocations;\n // EUI-7909 - remove line below\n let bookingLocations;\n // Booking type info - can create more\n // NO_CHECK - All work - Do not filter out locations - Default assumption\n // BOOKINGS_AND_BASE - My work - Try to only show base locations/regions\n // POSSIBLE_BOOKINGS - Create booking screen - Show only potential bookings\n if (this.bookingCheck === BookingCheckType.BOOKINGS_AND_BASE) {\n userLocations = JSON.parse(this.sessionStorageService.getItem('userLocations')) as LocationsByService[];\n // EUI - 7909 remove up to next reference of 7909\n bookingLocations = JSON.parse(this.sessionStorageService.getItem('bookingLocations'));\n const bookableServices = JSON.parse(this.sessionStorageService.getItem('bookableServices')) as string[];\n const knownBookableServices: string[] = [];\n // we do below in order to enable booking locations to be searched for bookable role assignments without base location or region\n // first get all bookable services existing in userLocations\n userLocations.forEach(userLocation => {\n if (userLocation.bookable) {\n knownBookableServices.push(userLocation.service);\n }\n });\n // then, from the full list of bookable services, add ones that are missing\n // this is so that booking locations will be checked for all relevant services\n bookableServices.forEach(bookableService => {\n if (!knownBookableServices.includes(bookableService)) {\n userLocations.push({service: bookableService, locations: [], bookable: true});\n }\n });\n // EUI-7909\n } else if (this.bookingCheck === BookingCheckType.POSSIBLE_BOOKINGS) {\n this.serviceIds = this.serviceIds && this.serviceIds.length ? this.serviceIds : JSON.parse(this.sessionStorageService.getItem('bookableServices'));\n // EUI-7909 - remove next three lines\n userLocations = JSON.parse(this.sessionStorageService.getItem('userLocations')) as LocationsByService[];\n // filter out any non-bookable services\n userLocations = userLocations.filter((userLocation) => userLocation.bookable);\n // EUI-7909 - uncomment out line below\n // userLocations = JSON.parse(this.sessionStorageService.getItem('bookableUserLocations')) as LocationsByService[];\n }\n // get all locations will resolve filter setting using objects above\n // if no userLocations, NO_CHECK\n // if just getting all substantive user locations, BOOKINGS_AND_BASE\n // fee paid user locations are used for POSSIBLE_BOOKINGS\n // EUI-7909 - swap lines below\n // return this.locationService.getAllLocations(this.serviceIds, this.locationType, term, userLocations);\n return this.locationService.getAllLocations(this.serviceIds, this.locationType, term, userLocations, bookingLocations);\n }\n\n public resetSearchTerm(): void {\n this.searchTermFormControl.setValue('');\n }\n\n private filterUnselectedLocations(\n locations: LocationByEPIMMSModel[],\n selectedLocations: LocationByEPIMMSModel[],\n singleMode: boolean\n ): LocationByEPIMMSModel[] {\n if (singleMode) {\n return locations;\n }\n return locations.filter(\n location => !selectedLocations.map(selectedLocation => selectedLocation.epimms_id).includes(location.epimms_id) && location[this.propertyNameFilter]\n );\n }\n}\n","<div class=\"auto-complete-container\">\n <input\n id=\"inputLocationSearch\"\n (input)=\"onInput()\"\n [formControl]=\"searchTermFormControl\"\n [matAutocomplete]=\"autoSearchLocation\"\n class=\"govuk-input\"\n [attr.disabled]=\"disabled\">\n <mat-autocomplete class=\"mat-autocomplete-panel-extend\" autoActiveFirstOption #autoSearchLocation=\"matAutocomplete\">\n <ng-container *ngIf=\"filteredList$ | async as filteredList\">\n <ng-container *ngIf=\"filteredList && filteredList.length >= 0\">\n <mat-option *ngFor=\"let location of filteredList\" (onSelectionChange)=\"onSelectedLocation(location)\">\n {{ location[propertyNameFilter] }}\n </mat-option>\n <mat-option *ngIf=\"filteredList.length === 0\">No results found</mat-option>\n </ng-container>\n </ng-container>\n </mat-autocomplete>\n</div>\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\nimport { UntypedFormArray, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { Subject, Subscription } from 'rxjs';\nimport { FilterFieldConfig, LocationByEPIMMSModel } from '../../models';\nimport { getValues } from '../generic-filter/generic-filter-utils';\nimport { SearchLocationComponent } from '../search-location/search-location.component';\n\n@Component({\n selector: 'xuilib-find-location',\n templateUrl: './find-location.component.html',\n styleUrls: ['./find-location.component.scss']\n})\nexport class FindLocationComponent implements OnInit, OnDestroy {\n @Output() public locationFieldChanged = new EventEmitter<void>();\n @Input() public submitted: boolean = true;\n @Input() public enableAddLocationButton: boolean = true;\n @Input() public form: UntypedFormGroup;\n @Input() public field: FilterFieldConfig;\n @Input() public fields: FilterFieldConfig[];\n @Input() public locationTitle = 'Search for a location by name';\n @Input() public disableInputField = false;\n @Input() public formSubmissionEvent$: Subject<void>;\n public tempSelectedLocation: LocationByEPIMMSModel = null;\n public serviceIds: string = 'SSCS,IA';\n @ViewChild(SearchLocationComponent, { static: true }) public searchLocationComponent: SearchLocationComponent;\n private pServices: string[] = [];\n private pDisabled: boolean = false;\n private formSubmissionEventSubscription: Subscription;\n\n public get disabled(): boolean {\n return this.pDisabled;\n }\n\n @Input()\n public set disabled(value: boolean) {\n if (value) {\n this.searchLocationComponent.resetSearchTerm();\n this.removeSelectedValues();\n }\n this.pDisabled = this.disableInputField === true ? true : null;\n }\n\n public get services(): string[] {\n return this.pServices;\n }\n\n @Input()\n public set services(value: string[]) {\n this.pServices = value;\n const field = this.fields.find(f => {\n if (this.field) {\n return f.name === this.field.findLocationField;\n }\n });\n\n if (field) {\n if (typeof value === 'string') {\n this.serviceIds = value;\n } else {\n this.serviceIds = getValues(field.options, value).filter(x => x !== 'services_all').join(',');\n }\n }\n }\n\n public get selectedLocations() {\n return (this.form.get(this.field.name)?.value as LocationByEPIMMSModel[])?.filter(location => location.epimms_id);\n }\n\n public get propertyNameFilter(): keyof LocationByEPIMMSModel {\n const DEFAULT_PROPERTY_NAME = 'site_name';\n return this.field.propertyNameFilter ? this.field.propertyNameFilter as keyof LocationByEPIMMSModel\n : DEFAULT_PROPERTY_NAME;\n }\n\n public ngOnInit(): void {\n if (this.formSubmissionEvent$) {\n this.formSubmissionEventSubscription = this.formSubmissionEvent$.subscribe(() => {\n // Shouldn't reset search term if single mode and already has selected\n const oneSelectedAndMaxSelectedOne = this.selectedLocations.length === 1 && this.field.maxSelected === 1;\n if (!oneSelectedAndMaxSelectedOne) {\n this.searchLocationComponent.resetSearchTerm();\n }\n });\n }\n }\n\n public addLocation(): void {\n if (this.tempSelectedLocation) {\n this.addSelectedLocationsToForm([this.tempSelectedLocation]);\n this.tempSelectedLocation = null;\n this.searchLocationComponent.resetSearchTerm();\n }\n }\n\n public removeLocation(location: LocationByEPIMMSModel): void {\n if (location.epimms_id) {\n const formArray = this.form.get(this.field.name) as UntypedFormArray;\n const index = (formArray.value as LocationByEPIMMSModel[]).findIndex(selectedLocation => selectedLocation.epimms_id === location.epimms_id);\n if (index > -1) {\n formArray.removeAt(index);\n }\n }\n }\n\n public onInputChanged(term: string): void {\n // if the filter is in single mode clear the selected locations\n if (typeof term === 'string' && this.field.maxSelected === 1) {\n this.removeSelectedValues();\n }\n }\n\n public onSearchInputChanged(): void {\n this.locationFieldChanged.emit();\n }\n\n public onLocationSelected(location: LocationByEPIMMSModel): void {\n if (this.field.maxSelected === 1) {\n this.removeSelectedValues();\n this.addSelectedLocationsToForm([location]);\n } else {\n if (!this.selectedLocations.find(x => x.epimms_id === location.epimms_id)) {\n if (location.epimms_id) {\n this.tempSelectedLocation = location;\n }\n }\n }\n }\n\n private removeSelectedValues(): void {\n const formArray = this.form.get(this.field?.name) as UntypedFormArray;\n if (formArray) {\n for (let i = 0; i < formArray.length; i++) {\n formArray.removeAt(i);\n }\n }\n }\n\n private addSelectedLocationsToForm(locations: LocationByEPIMMSModel[]): void {\n const formArray = this.form.get(this.field.name) as UntypedFormArray;\n for (const location of locations) {\n formArray.push(new UntypedFormControl(location));\n }\n }\n\n public ngOnDestroy() {\n this.formSubmissionEventSubscription?.unsubscribe();\n }\n}\n","<div class=\"location-picker-custom\">\n <div class=\"search-location\">\n <div>\n <label id=\"input-selected-location-label\" *ngIf=\"locationTitle\">{{locationTitle}}</label>\n </div>\n <exui-search-location class=\"search-location\"\n [form]=\"form\"\n [field]=\"field\"\n [selectedLocations]=\"selectedLocations\"\n [delay]=\"300\"\n [disabled]=\"disabled\"\n [singleMode]=\"field.maxSelected === 1\"\n [bookingCheck]=\"field.bookingCheckType\"\n [serviceIds]=\"serviceIds\"\n [propertyNameFilter]=\"propertyNameFilter\"\n (locationTermSearchInputChanged)=\"onInputChanged($event)\"\n (locationSelected)=\"onLocationSelected($event)\"\n (searchLocationChanged)=\"onSearchInputChanged()\"\n [locationType]=\"'case-management'\">\n </exui-search-location>\n </div>\n\n <div>\n <a href=\"javascript:void(0)\" (click)=\"addLocation()\" class=\"govuk-button add-location-button\" data-module=\"govuk-button\" *ngIf=\"enableAddLocationButton\">\n Add location\n </a>\n </div>\n\n <ul class=\"hmcts-filter-tags selection-container\" *ngIf=\"field.maxSelected != 1\">\n <li class=\"location-selection\" *ngFor=\"let selection of selectedLocations\">\n <a class=\"hmcts-filter__tag\" (click)=\"removeLocation(selection)\" href=\"javascript:void(0)\">\n {{ selection[propertyNameFilter] }}\n </a>\n </li>\n </ul>\n</div>\n","import {HttpClient} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {Observable, of} from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { TaskNameModel } from '../../models/task-name.model';\nimport { SessionStorageService } from '../storage/session-storage/session-storage.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TaskNameService {\n public static taskNamesKey: string = 'taskNames';\n\n constructor(private readonly http: HttpClient, private readonly sessionStorageService: SessionStorageService) {\n }\n\n /**\n * @return Observable<any[]>: Array of taskName in Observable\n */\n public getTaskName(service: string): Observable<TaskNameModel[]> {\n const serviceTaskTypeKey = `${service}-${TaskNameService.taskNamesKey}`;\n if (this.sessionStorageService.getItem(serviceTaskTypeKey)) {\n const taskNames = JSON.parse(this.sessionStorageService.getItem(serviceTaskTypeKey));\n return of(taskNames as TaskNameModel[]);\n }\n return this.http.post<TaskNameModel[]>(`/workallocation/taskNames`, {service}).pipe(\n tap(taskNames => this.sessionStorageService.setItem(serviceTaskTypeKey, JSON.stringify(taskNames)))\n );\n }\n}\n","import {ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\nimport {UntypedFormControl, UntypedFormGroup} from '@angular/forms';\nimport {Observable, Subscription} from 'rxjs';\nimport {debounceTime, filter, mergeMap, tap} from 'rxjs/operators';\nimport {PersonRole} from '../../models';\nimport { TaskNameModel } from '../../models/task-name.model';\nimport { TaskNameService } from '../../services/task-name/task-name.service';\n\n@Component({\n selector: 'xuilib-find-task-name',\n templateUrl: './find-task-name.component.html',\n styleUrls: ['./find-task-name.component.scss'],\n})\n\nexport class FindTaskNameComponent implements OnInit, OnDestroy {\n @Output() public taskNameSelected = new EventEmitter<any>();\n @Output() public taskNameFieldChanged = new EventEmitter<void>();\n @Input() public title: string;\n @Input() public boldTitle = 'Find the task name';\n @Input() public subTitle = 'Type the name of the task name and select them.';\n @Input() public domain = PersonRole.ALL;\n @Input() public findTaskNameGroup: UntypedFormGroup = new UntypedFormGroup({});\n @Input() public selectedTaskName: string;\n @Input() public submitted: boolean = true;\n @Input() public assignedUser?: string;\n @Input() public placeholderContent: string = '';\n @Input() public isNoResultsShown: boolean = true;\n @Input() public showUpdatedColor: boolean = false;\n @Input() public selectedTaskNames: TaskNameModel[] = [];\n @Input() public errorMessage: string = 'You must select a name';\n @Input() public idValue: string = '';\n @Input() public services: string = 'IA';\n @Input() public disabled: boolean = null;\n public showAutocomplete: boolean = false;\n public findTaskNameControl: UntypedFormControl;\n public filteredOptions: any[] = [];\n public readonly minSearchCharacters = 1;\n private sub: Subscription;\n public searchTerm: string = '';\n\n constructor(private readonly cd: ChangeDetectorRef, private readonly taskService: TaskNameService) {}\n\n public ngOnDestroy() {\n if (this.sub) {\n this.sub.unsubscribe();\n }\n }\n\n public ngOnInit(): void {\n this.findTaskNameControl = new UntypedFormControl(this.selectedTaskName);\n this.findTaskNameGroup.addControl('findTaskNameControl', this.findTaskNameControl);\n this.sub = this.findTaskNameControl.valueChanges\n .pipe(\n tap(() => this.showAutocomplete = false),\n tap(() => this.filteredOptions = []),\n debounceTime(300),\n tap((searchTerm) => this.searchTerm = searchTerm),\n tap((searchTerm) => typeof searchTerm === 'string' ? this.taskNameSelected.emit('null') : void 0),\n filter((searchTerm: string) => searchTerm && searchTerm.length >= this.minSearchCharacters),\n mergeMap(() => this.getTaskName()),\n ).subscribe((taskNameModel: TaskNameModel[]) => {\n this.filteredOptions = taskNameModel ? taskNameModel : [];\n if (this.searchTerm) {\n this.filteredOptions = this.filteredOptions.filter((taskType) => taskType.task_type.task_type_name.toLocaleLowerCase().includes(this.searchTerm.toLocaleLowerCase())).map(taskType=> taskType);\n }\n this.cd.detectChanges();\n });\n }\n\n public getTaskName(): Observable<TaskNameModel[]> {\n return this.taskService.getTaskName(this.services);\n }\n\n public onSelectionChange(selectedTaskTypeName: any): void {\n if (selectedTaskTypeName) {\n this.taskNameSelected.emit(selectedTaskTypeName);\n this.findTaskNameControl.setValue(this.getTaskTypeName(selectedTaskTypeName), {emitEvent: false, onlySelf: true});\n }\n }\n\n public getTaskTypeName(selectedTaskType: any): string {\n if (!selectedTaskType) {\n return '';\n }\n return selectedTaskType.task_type.task_type_name;\n }\n\n public onInput(): void {\n this.taskNameFieldChanged.emit();\n }\n}\n","<h1 class=\"govuk-heading-l\" *ngIf=\"title && title.length\">\n <span class=\"govuk-caption-l\">{{title}}</span>\n {{boldTitle}}\n</h1>\n<div class=\"govuk-form-group\" [formGroup]=\"findTaskNameGroup\"\n [ngClass]=\"{'form-group-error': findTaskNameGroup.get('findTaskNameControl')?.invalid && submitted}\">\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"sub-title-hint\">\n <div id=\"sub-title-hint\" class=\"govuk-hint\" *ngIf=\"subTitle && subTitle.length\">\n {{subTitle}}\n </div>\n <span id=\"validation-error\" class=\"govuk-error-message\" *ngIf=\"findTaskNameGroup && findTaskNameGroup.errors\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{findTaskNameGroup.errors.error ? findTaskNameGroup.errors.error : errorMessage}}\n </span>\n <input id=\"inputSelectTaskName{{idValue}}\" type=\"text\" aria-label=\"select a task name\"\n formControlName=\"findTaskNameControl\"\n [matAutocomplete]=\"auto\"\n class=\"govuk-input govuk-!-width-one-third\"\n [placeholder]=\"placeholderContent\"\n [attr.disabled]=\"disabled\"\n (input)=\"onInput()\">\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" (optionSelected)=\"onSelectionChange($event.option.value)\">\n <mat-option *ngFor=\"let option of filteredOptions\"\n [value]=\"option\"\n [ngClass]=\"{'hide-autocomplete': !showAutocomplete, 'select-option': showUpdatedColor}\">\n {{ getTaskTypeName(option) }}\n </mat-option>\n <mat-option [ngClass]=\"{'select-option': showUpdatedColor}\" *ngIf=\"isNoResultsShown && !filteredOptions.length && showAutocomplete\">No results found</mat-option>\n </mat-autocomplete>\n </fieldset>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FilterConfigOption } from '../../models';\n\n@Component({\n selector: 'exui-search-service',\n templateUrl: './search-service.component.html',\n styleUrls: ['./search-service.component.scss']\n})\nexport class SearchServiceComponent {\n @Input() public options: FilterConfigOption[];\n @Input() public selectedOptions: FilterConfigOption[];\n @Input() public disabled: any;\n @Input() public showAutocomplete: boolean = false;\n @Output() public optionChanged: EventEmitter<FilterConfigOption> = new EventEmitter<FilterConfigOption>();\n public searchTerm = '';\n public readonly MIN_SEARCH_CHARACTERS = 3;\n\n public get filteredOptions(): FilterConfigOption[] {\n const remainingServices = this.options.filter(s => !this.selectedOptions.find(ss => ss.key === s.key));\n\n return this.searchTerm?.length >= this.MIN_SEARCH_CHARACTERS ?\n remainingServices.filter(s => s.label.toLowerCase().includes(this.searchTerm.toLowerCase()))\n : remainingServices;\n }\n\n public resetSearchTerm(): void {\n this.searchTerm = '';\n }\n\n public onSelectionChanged($event: any): void {\n const label = $event.source?.value;\n if (label && $event.source.selected) {\n const selectedService = this.options.find(s => s.label === label);\n this.optionChanged.emit(selectedService);\n }\n }\n}\n","<div class=\"auto-complete-container\">\n <input id=\"inputServiceSearch\"\n class=\"govuk-input\"\n [(ngModel)]=\"searchTerm\"\n [matAutocomplete]=\"autoSearchService\"\n [attr.disabled]=\"disabled\">\n <mat-autocomplete class=\"mat-autocomplete-panel-extend\" autoActiveFirstOption #autoSearchService=\"matAutocomplete\">\n <mat-option *ngFor=\"let service of filteredOptions\" (onSelectionChange)=\"onSelectionChanged($event)\" [value]=\"service.label\">\n {{ service.label }}\n </mat-option>\n <mat-option *ngIf=\"!filteredOptions?.length && showAutocomplete\">\n No results found\n </mat-option>\n </mat-autocomplete>\n</div>\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\nimport { UntypedFormArray, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { Subject, Subscription } from 'rxjs';\nimport { FilterConfigOption, FilterFieldConfig } from '../../models';\nimport { SearchServiceComponent } from '../search-service/search-service.component';\n\n@Component({\n selector: 'xuilib-find-service',\n templateUrl: './find-service.component.html',\n styleUrls: ['./find-service.component.scss']\n})\nexport class FindServiceComponent implements OnInit, OnDestroy {\n @Input() public field: FilterFieldConfig;\n @Input() public serviceTitle: string;\n @Input() public form: UntypedFormGroup;\n @Input() public disabled: boolean = false;\n @Input() public formSubmissionEvent$: Subject<void>;\n @ViewChild(SearchServiceComponent, { static: true }) public searchServiceComponent: SearchServiceComponent;\n @Output() public serviceFieldChanged = new EventEmitter();\n private isSelectedAll = false;\n private formSubmissionEventSubscription: Subscription;\n\n public tempSelectedService: FilterConfigOption = null;\n public get selectedServices(): FilterConfigOption[] {\n const selectAllValue = this.field.options.find(item => item.selectAll);\n return this.isSelectedAll ? [selectAllValue] : this.form.get(this.field.name)?.value;\n }\n\n public ngOnInit(): void {\n this.sortOptionsAlphabetically();\n\n // Patch Default Option\n if (this.field.defaultOption) {\n this.addOption(this.field.defaultOption);\n }\n if (this.formSubmissionEvent$) {\n this.formSubmissionEventSubscription = this.formSubmissionEvent$.subscribe(() => {\n const oneSelectedAndMaxSelectedOne = this.selectedServices.length === 1 && this.field.maxSelected === 1;\n if (!oneSelectedAndMaxSelectedOne) {\n this.searchServiceComponent.resetSearchTerm();\n }\n });\n }\n }\n\n public addOption(option: FilterConfigOption): void {\n if (option) {\n if (option.selectAll) {\n this.isSelectedAll = true;\n this.removeAllSelectedValues();\n this.field.options.forEach(item => {\n if (!item.selectAll) {\n this.addSelectedServiceToForm(item);\n }\n });\n } else {\n if (this.isSelectedAll) {\n this.removeAllSelectedValues();\n this.isSelectedAll = false;\n }\n this.addSelectedServiceToForm(option);\n }\n\n this.tempSelectedService = null;\n this.serviceFieldChanged.emit();\n this.searchServiceComponent.resetSearchTerm();\n }\n }\n\n public removeOption(service: FilterConfigOption): void {\n if (service.selectAll) {\n this.removeAllSelectedValues();\n this.isSelectedAll = false;\n } else if (service.key) {\n const formArray = this.form.get(this.field.name) as UntypedFormArray;\n const index = (formArray.value).findIndex((selectedService: FilterConfigOption) => selectedService.key.toLowerCase() === service.key.toLowerCase());\n if (index > -1) {\n formArray.removeAt(index);\n }\n this.serviceFieldChanged.emit();\n }\n }\n\n public onOptionSelected(option: FilterConfigOption): void {\n if (!this.field.enableAddButton && this.field.maxSelected === 1) {\n this.removeAllSelectedValues();\n this.addSelectedServiceToForm(option);\n this.serviceFieldChanged.emit();\n } else {\n this.tempSelectedService = option;\n }\n }\n\n private removeAllSelectedValues(): void {\n const formArray = this.form.get(this.field.name) as UntypedFormArray;\n formArray.clear();\n }\n\n private addSelectedServiceToForm(service: FilterConfigOption): void {\n const formArray = this.form.get(this.field.name) as UntypedFormArray;\n formArray.push(new UntypedFormControl(service));\n }\n\n private sortOptionsAlphabetically(): FilterConfigOption[] {\n return this.field.options.sort((a, b) => {\n return a.label.toLowerCase() > b.label.toLowerCase() ? 1 : (b.label.toLowerCase() > a.label.toLowerCase() ? -1 : 0);\n });\n }\n\n public ngOnDestroy() {\n this.formSubmissionEventSubscription?.unsubscribe();\n }\n}\n","<div class=\"service-picker-custom\">\n <div class=\"search-service\">\n <div class=\"govuk-body\">\n <label id=\"selectServiceSearch-label\" for=\"serviceSearch__select\" *ngIf=\"serviceTitle\">\n {{ serviceTitle }}\n </label>\n </div>\n <div class=\"search-service__input-container\">\n <exui-search-service class=\"search-service__input\"\n [options]=\"field.options\"\n [selectedOptions]=\"selectedServices\"\n [disabled]=\"disabled\"\n (optionChanged)=\"onOptionSelected($event)\">\n </exui-search-service>\n <a href=\"javascript:void(0)\" (click)=\"addOption(tempSelectedService)\"\n class=\"govuk-button govuk-button--secondary govuk-!-margin-bottom-0\" data-module=\"govuk-button\"\n *ngIf=\"field?.enableAddButton\" id=\"add-service\">\n Add\n </a>\n </div>\n </div>\n <ul class=\"hmcts-filter-tags selection-container\" *ngIf=\"field.maxSelected != 1\">\n <li class=\"location-selection\" *ngFor=\"let selection of selectedServices\">\n <a class=\"hmcts-filter__tag\" (click)=\"removeOption(selection)\" href=\"javascript:void(0)\">\n {{ selection.label }}\n </a>\n </li>\n </ul>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({name: 'capitalize'})\nexport class CapitalizePipe implements PipeTransform {\n public transform(value: string): string {\n const lowerCaseString = value.toLowerCase();\n return lowerCaseString.charAt(0).toUpperCase() + lowerCaseString.slice(1);\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { AbstractControl, UntypedFormArray, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, ValidatorFn, Validators } from '@angular/forms';\nimport { Subject, Subscription } from 'rxjs';\nimport { FilterConfig, FilterConfigOption, FilterError, FilterFieldConfig, FilterSetting, GroupOptions } from '../../models';\nimport { FilterService } from '../../services';\nimport { getValues, maxSelectedValidator, minSelectedValidator } from './generic-filter-utils';\n\n@Component({\n selector: 'xuilib-generic-filter',\n templateUrl: 'generic-filter.component.html',\n styleUrls: ['generic-filter.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class GenericFilterComponent implements OnInit, OnDestroy {\n public form: UntypedFormGroup;\n public submitted = false;\n public formSub: Subscription;\n public filteredSkillsByServices: GroupOptions[];\n public filteredSkillsByServicesCheckbox: FilterConfigOption[];\n public previousSelectedNestedCheckbox: string[] = [];\n public formSubmissionEvent$ = new Subject<void>();\n\n constructor(private readonly filterService: FilterService, private readonly fb: UntypedFormBuilder) {}\n\n // tslint:disable-next-line:variable-name\n private _config: FilterConfig;\n\n public get config(): FilterConfig {\n return this._config;\n }\n\n @Input()\n public set config(value: FilterConfig) {\n this._config = {\n ...value,\n fields: value.fields.map(field => ({\n ...field,\n displayMinSelectedError: false,\n displayMaxSelectedError: false,\n }))\n };\n this._config = value;\n }\n\n // tslint:disable-next-line:variable-name\n private _settings?: FilterSetting;\n\n public get settings(): FilterSetting {\n return this._settings;\n }\n\n @Input()\n public set settings(value: FilterSetting) {\n if (!value) {\n this.getSettings();\n }\n if (value && value.fields) {\n this.mergeDefaultFields(value);\n }\n this._settings = value;\n }\n\n private static addFormValidators(field: FilterFieldConfig): Validators {\n const validators = [];\n if (field && field.minSelected > 0) {\n validators.push(minSelectedValidator(field.minSelected));\n }\n\n if (field && field.maxSelected > 0) {\n validators.push(maxSelectedValidator(field.maxSelected));\n }\n\n return validators;\n }\n\n public ngOnInit(): void {\n if (!this.settings) {\n this.getSettings();\n }\n this.mergeDefaultFields(this.settings);\n this.buildForm(this.config, this.settings);\n\n if (this._config.copyFields) {\n this.form = this._config.copyFields(this.form);\n }\n\n this.formSub = this.form.valueChanges.subscribe(() => this.submitted = false);\n this.filterSkillsByServices(null, this.config);\n const services = this.config.fields.find(field => field.name === 'user-services');\n if (services) {\n this.startFilterSkillsByServices(this.form, services);\n if(!this._config.copyFields) {\n this.initValuesFromCacheForSkillsByServices();\n }\n }\n }\n\n public ngOnDestroy(): void {\n this.filterService.givenErrors.next(null);\n\n if (this.formSub) {\n this.formSub.unsubscribe();\n }\n }\n\n public hidden(field: FilterFieldConfig, form: UntypedFormGroup): boolean {\n if (!field.showCondition) {\n return false;\n }\n if (typeof field.showCondition === 'string') {\n const control = form.get(field.name) as UntypedFormControl;\n const [name, value] = field.showCondition.split('=');\n if (form.value && form.value[name] === value) {\n if (field.type === 'find-person') {\n control.get('email').setValidators(Validators.required);\n control.get('email').updateValueAndValidity();\n } else {\n control.setValidators(Validators.required);\n control.updateValueAndValidity();\n }\n return false;\n } else {\n if (field.type === 'find-person') {\n control.get('email').clearValidators();\n control.get('email').updateValueAndValidity();\n } else {\n control.clearValidators();\n control.updateValueAndValidity();\n }\n }\n }\n return true;\n }\n\n public disabled(field: FilterFieldConfig, form: UntypedFormGroup): boolean {\n if (!field.enableCondition) {\n return null;\n }\n if (typeof field.enableCondition === 'string') {\n const control = form.get(field.name) as UntypedFormControl;\n const [name, value] = field.enableCondition.split('=');\n if (form.value && form.value[name] === value) {\n if (field.type === 'find-person') {\n control.get('email').setValidators(Validators.required);\n control.get('email').updateValueAndValidity();\n } else {\n control.setValidators(Validators.required);\n control.updateValueAndValidity();\n }\n return null;\n } else {\n if (field.type === 'find-person') {\n control.get('email').clearValidators();\n control.get('email').updateValueAndValidity();\n } else {\n control.clearValidators();\n control.updateValueAndValidity();\n }\n }\n }\n // find-location is special case where need to reset textbox (by existing disabling functionality)\n // field.disable referred to component itself\n if (field.type === 'find-location') {\n return true;\n }\n // Note: field.disable decides whether to actually disable or not\n return field.disable ? field.disable : null;\n }\n\n public applyFilter(form: UntypedFormGroup): void {\n this.formSubmissionEvent$.next();\n this.submitted = true;\n form.markAsTouched();\n if (form.valid) {\n this._settings = {\n id: this.config.id,\n idamId: this.filterService.getUserId(),\n fields: this.getSelectedValues(form.value, this.config)\n };\n this.filterService.givenErrors.next(null);\n const settings = {...this.settings, reset: false};\n this.filterService.persist(settings, this.config.persistence);\n } else {\n this.emitFormErrors(form);\n }\n\n if (this._config.applyButtonCallback) {\n this._config.applyButtonCallback();\n }\n }\n\n // when domain changes ensure that person field is reset\n public fieldChanged(field: FilterFieldConfig, form: UntypedFormGroup): void {\n // TODO - Do similar with jurisdiction/service for caseworkers by services\n if (field.changeResetFields && field.changeResetFields.length) {\n for (const resetField of field.changeResetFields) {\n this.resetField(resetField, form);\n }\n }\n }\n\n // when user enters input change radio button\n public inputChanged(field: FilterFieldConfig): void {\n if (field.radioSelectionChange && typeof field.radioSelectionChange === 'string') {\n const [name, value] = field.enableCondition.split('=');\n this.form.get(name).patchValue(value);\n }\n }\n\n public inputServiceChanged(field: FilterFieldConfig): void {\n if (field.name === 'user-services') {\n const selectedServices = this.getSelectedValuesForFields(this.form.controls, field);\n this.filterSkillsByServices(selectedServices, this.config);\n }\n }\n\n public cancelFilter(): void {\n this.buildForm(this.config, this.settings, true);\n if (this.config && this.config.cancelSetting) {\n this._settings.fields = JSON.parse(JSON.stringify(this.config.cancelSetting.fields));\n }\n const settings = {...this.settings, reset: true};\n this.filterService.persist(settings, this.config.persistence);\n this.filterService.givenErrors.next(null);\n this.submitted = false;\n\n if (this.config.cancelButtonCallback) {\n this.config.cancelButtonCallback();\n }\n }\n\n public updatePersonControls(values: any, field: FilterFieldConfig): void {\n let keys;\n if (!values) {\n keys = Object.keys(this.form.get(field.name).value);\n } else {\n keys = Object.keys(values);\n }\n for (const key of keys) {\n if (this.form.get(field.name) && this.form.get(field.name).get(key)) {\n const value = values && values[key] ? values[key] : null;\n this.form.get(field.name).get(key).patchValue(value);\n }\n }\n }\n\n public checkBoxChecked(field: any, i: number) {\n return (this.form.get(field.name) as UntypedFormArray)['controls'][i]['value'];\n }\n\n public updateTaskNameControls(values: any, field: FilterFieldConfig): void {\n let keys;\n if (!values) {\n keys = Object.keys(this.form.get(field.name).value);\n } else {\n keys = values.task_type ? Object.keys(values.task_type) : Object.keys(this.form.get(field.name).value);\n }\n for (const key of keys) {\n if (this.form.get(field.name) && this.form.get(field.name).get(key)) {\n const value = values.task_type && values.task_type[key] ? values.task_type[key] : null;\n this.form.get(field.name).get(key).patchValue(value);\n }\n }\n }\n\n public toggleSelectAll(event: any, form: UntypedFormGroup, item: { key: string; label: string; selectAll?: true }, field: FilterFieldConfig): void {\n const isChecked = event.target.checked;\n const formArray: UntypedFormArray = form.get(field.name) as UntypedFormArray;\n if (!item.selectAll) {\n const allChecked = formArray.controls.every((control: AbstractControl) => control.value);\n let index: number = null;\n const hasSelectAllOption = field.options.find((option, i) => {\n if (option.hasOwnProperty('selectAll')) {\n index = i;\n return true;\n }\n return false;\n });\n // tslint:disable-next-line:variable-name\n const isAllCheckedExcludingTheSelectAllOption = formArray.controls.filter((_control: AbstractControl, i: number) => i !== index)\n .every((control: AbstractControl) => control.value);\n\n if (!allChecked && hasSelectAllOption && !isChecked) {\n formArray.controls.forEach((control: AbstractControl, i: number) => {\n if (index === i) {\n control.patchValue(false);\n return;\n }\n });\n } else if (hasSelectAllOption && !allChecked && isChecked && isAllCheckedExcludingTheSelectAllOption) {\n formArray.controls[index].patchValue(true);\n }\n } else {\n formArray.controls.forEach((control: AbstractControl) => {\n if (isChecked) {\n control.patchValue(true);\n } else {\n control.patchValue(false);\n }\n });\n }\n if (field.changeResetFields && field.changeResetFields.length) {\n for (const resetField of field.changeResetFields) {\n this.resetField(resetField, form);\n }\n }\n if (field.name === 'user-services') {\n this.startFilterSkillsByServices(form, field);\n } else if (field.name === 'user-skills') {\n if (isChecked) {\n const selectedIndex = field.options.findIndex(option => Number(option.key) === Number(event.target.value));\n const selectedCheckbox = this.form.get('user-skills').value;\n selectedCheckbox[selectedIndex] = true;\n this.form.get('user-skills').setValue(selectedCheckbox);\n this.previousSelectedNestedCheckbox.push(event.target.value);\n } else {\n const index = this.previousSelectedNestedCheckbox.indexOf(event.target.value);\n if (index !== -1) {\n this.previousSelectedNestedCheckbox.splice(index, 1);\n }\n }\n }\n }\n\n private startFilterSkillsByServices(form: UntypedFormGroup, field: FilterFieldConfig) {\n const servicesArray: string[] = [];\n form.value[field.name].map((service: boolean, index: number) => {\n if (service) {\n servicesArray.push(field.options[index].key);\n }\n });\n this.filterSkillsByServices(servicesArray, this.config);\n }\n\n private resetField(resetField: string, form: UntypedFormGroup): void {\n const control = form.get(resetField);\n const defaultValue: { name: string, value: any[] } = this.config.cancelSetting.fields.find((f) => f.name === resetField);\n if (control instanceof UntypedFormArray) {\n for (let i = 0; i < control.length; i++) {\n control.removeAt(i);\n }\n } else if (control instanceof UntypedFormGroup) {\n const keys = Object.keys(control.value);\n for (const key of keys) {\n this.resetField(key, control);\n }\n } else if (control instanceof UntypedFormControl) {\n const value = defaultValue && defaultValue.value && defaultValue.value.length ? defaultValue.value[0] : null;\n control.setValue(value);\n }\n }\n\n private mergeDefaultFields(filter: FilterSetting): void {\n if (filter) {\n filter.fields = this.filterService.get(this.config.id) ? this.filterService.get(this.config.id).fields : filter.fields;\n } else if (this.config && this.config.cancelSetting) {\n this._settings = {\n id: this.config.id,\n fields: JSON.parse(JSON.stringify(this.config.cancelSetting.fields))\n };\n }\n }\n\n private getSettings(): void {\n this._settings = this.filterService.get(this.config.id);\n }\n\n private buildForm(config: FilterConfig, settings: FilterSetting, reset?: boolean): void {\n const findPersonControl = this.form ? this.form.get('findPersonControl') : null;\n const findTaskNameControl = this.form ? this.form.get('findTaskNameControl') : null;\n this.form = this.fb.group({});\n if (findPersonControl) {\n // in order to maintain find person component, control needs to be kept\n this.form.addControl('findPersonControl', findPersonControl);\n }\n if (findTaskNameControl) {\n this.form.addControl('findTaskNameControl', findTaskNameControl);\n }\n for (const field of config.fields) {\n if (field.type === 'checkbox' || field.type === 'checkbox-large' || field.type === 'nested-checkbox') {\n const formArray = this.buildCheckBoxFormArray(field, settings);\n this.form.addControl(field.name, formArray);\n } else if (field.type === 'find-location' || field.type === 'find-service') {\n const formArray = this.buildFormArray(field, settings);\n this.form.addControl(field.name, formArray);\n } else {\n const validators: ValidatorFn[] = [];\n if (field.minSelected && field.minSelected > 0) {\n validators.push(Validators.required);\n\n if (field.type === 'text-input') {\n validators.push(Validators.minLength(field.minSelected));\n }\n\n if (field.type === 'email-input') {\n validators.push(Validators.email);\n }\n }\n\n let defaultValue: any = null;\n if (reset && config.cancelSetting) {\n const cancelField = config.cancelSetting.fields.find((f) => f.name === field.name);\n defaultValue = cancelField && cancelField.value ? cancelField.value[0] : '';\n } else if (settings && settings.fields) {\n const lastSavedValue = settings.fields.find((f) => f.name === field.name);\n defaultValue = lastSavedValue && lastSavedValue ? lastSavedValue.value[0] : '';\n }\n // if field is find-person build a form group;\n if (field.type === 'find-person') {\n const formGroup = new UntypedFormGroup({\n domain: new UntypedFormControl(defaultValue && defaultValue.hasOwnProperty('domain') ? defaultValue.domain : ''),\n email: new UntypedFormControl(defaultValue && defaultValue.hasOwnProperty('email') ? defaultValue.email : '', validators),\n id: new UntypedFormControl(defaultValue && defaultValue.hasOwnProperty('id') ? defaultValue.id : ''),\n name: new UntypedFormControl(defaultValue && defaultValue.hasOwnProperty('name') ? defaultValue.name : ''),\n knownAs: new UntypedFormControl(defaultValue && defaultValue.hasOwnProperty('knownAs') ? defaultValue.knownAs : ''),\n });\n this.form.addControl(field.name, formGroup);\n } else if (field.type === 'find-task-name') {\n const formGroup = new UntypedFormGroup({\n task_type_id: new UntypedFormControl(defaultValue && defaultValue.hasOwnProperty('task_type_id') ? defaultValue.task_type_id : ''),\n task_type_name: new UntypedFormControl(defaultValue && defaultValue.hasOwnProperty('task_type_name') ? defaultValue.task_type_name : ''),\n });\n this.form.addControl(field.name, formGroup);\n if (!defaultValue || !defaultValue.task_type_id) {\n this.form.get('findTaskNameControl')?.patchValue('');\n }\n } else if (field.type !== 'group-title') {\n const control = new UntypedFormControl(defaultValue, validators);\n this.form.addControl(field.name, control);\n }\n\n // if field updates find person component set the initial domain\n if (field.findPersonField) {\n this.fieldChanged(field, this.form);\n }\n }\n }\n }\n\n private buildCheckBoxFormArray(field: FilterFieldConfig, settings: FilterSetting): UntypedFormArray {\n const validators = GenericFilterComponent.addFormValidators(field);\n const formArray = this.fb.array([], validators);\n let defaultValues;\n if (settings && settings.fields) {\n defaultValues = settings.fields.find((f) => f.name === field.name);\n }\n for (const option of field.options) {\n let checked = false;\n if (defaultValues && Array.isArray(defaultValues.value)) {\n checked = !!defaultValues.value.find((value) => value === option.key);\n }\n formArray.push(new UntypedFormControl(checked));\n }\n\n return formArray;\n }\n\n private buildFormArray(field: FilterFieldConfig, settings: FilterSetting): UntypedFormArray {\n const validators = GenericFilterComponent.addFormValidators(field);\n const formArray = this.fb.array([], validators);\n let defaultValues: { name: string; value: any[] };\n if (settings && settings.fields) {\n defaultValues = settings.fields.find((f) => f.name === field.name);\n if (defaultValues && defaultValues.value && defaultValues.value.length > 0) {\n for (const defaultValue of defaultValues.value) {\n formArray.push(new UntypedFormControl(defaultValue));\n }\n }\n }\n return formArray;\n }\n\n private getSelectedValues(formValues: any, config: FilterConfig): any {\n return Object.keys(formValues).map((name: string) => {\n const values = formValues[name];\n if (Array.isArray(values)) {\n const field = config.fields.find(f => f.name === name);\n if (field.type === 'find-location' || field.type === 'find-service') {\n return {value: values, name};\n } else {\n return {value: getValues(field.options, values), name};\n }\n } else {\n return {value: [values], name};\n }\n });\n }\n\n private emitFormErrors(form: UntypedFormGroup): void {\n let errors: FilterError[] = [];\n for (const field of this.config.fields) {\n const fieldName = field.name;\n const formGroup = form.get(fieldName);\n if (formGroup && formGroup.errors && (formGroup.errors.minlength || formGroup.errors.required)) {\n errors.push({name: fieldName, error: field.minSelectedError});\n }\n if (formGroup && formGroup.errors && formGroup.errors.maxlength) {\n errors.push({name: fieldName, error: field.maxSelectedError});\n }\n }\n\n // remove duplicates\n errors = errors.filter( (filterError, i, arr) => {\n return errors.indexOf(arr.find(item => item.name === filterError.name)) === i;\n });\n\n if (errors.length) {\n this.filterService.givenErrors.next(errors);\n }\n }\n\n public initValuesFromCacheForSkillsByServices() {\n if (this.settings && this.settings.fields) {\n const cachedValues = this.filteredSkillsByServicesCheckbox.map(skill => {\n let selected = false;\n let isSelectedUserSkill: number;\n const selectedUserSkills = this.settings.fields.find(setting => setting.name === 'user-skills');\n if (selectedUserSkills && selectedUserSkills.value && selectedUserSkills.value.length > 0) {\n isSelectedUserSkill = selectedUserSkills.value.findIndex(val => {\n return String(val) === String(skill.key);\n });\n selected = isSelectedUserSkill !== -1;\n }\n\n return selected;\n });\n\n if (cachedValues.length > 0) {\n this.form.get('user-skills').setValue(cachedValues);\n }\n }\n }\n\n public filterSkillsByServices(services: string[], config: FilterConfig) {\n this.filteredSkillsByServices = [];\n this.filteredSkillsByServicesCheckbox = [];\n const userSkillsSelectField = config.fields.find(f => f.name === 'user-skills' && f.type === 'group-select');\n const userSkillsCheckboxField = config.fields.find(f => f.name === 'user-skills' && f.type === 'nested-checkbox');\n\n if (userSkillsSelectField) {\n const userSkills = userSkillsSelectField.groupOptions;\n if (!services || services.length === 0) {\n this.filteredSkillsByServices = userSkills;\n } else {\n services.forEach(s => {\n const groupOption = userSkills.find(u => u.group.toLowerCase() === s.toLowerCase());\n if (groupOption) {\n this.filteredSkillsByServices.push(groupOption);\n }\n });\n }\n } else if (userSkillsCheckboxField) {\n const userSkills = userSkillsCheckboxField.groupOptions;\n if (!services || services.length === 0) {\n this.filteredSkillsByServices = userSkills;\n } else {\n services.forEach(s => {\n const groupOption = userSkills.find(u => u.group.toLowerCase() === s.toLowerCase());\n if (groupOption) {\n this.filteredSkillsByServices.push(groupOption);\n }\n });\n this.filteredSkillsByServicesCheckbox = this.filteredSkillsByServices.map(skill => {\n return skill.options;\n }).reduce((a, b) => {\n return a.concat(b);\n }, []);\n userSkillsCheckboxField.options = [];\n userSkillsCheckboxField.options = this.filteredSkillsByServicesCheckbox;\n\n this.form.setControl('user-skills', new UntypedFormArray([]));\n\n if (!this._config.copyFields) {\n this.filteredSkillsByServicesCheckbox.forEach(() => {\n (this.form.get('user-skills') as UntypedFormArray).push(new UntypedFormControl(false));\n });\n\n const prevValues = this.filteredSkillsByServicesCheckbox.map(skill => {\n let selected = false;\n if (this.settings && this.settings.fields) {\n if (this.previousSelectedNestedCheckbox.length > 0) {\n selected = this.previousSelectedNestedCheckbox.includes(skill.key);\n }\n let isSelectedUserSkill: number;\n const selectedUserSkills = this.settings.fields.find(setting => setting.name === 'user-skills');\n if (selectedUserSkills && selectedUserSkills.value && selectedUserSkills.value.length > 0) {\n isSelectedUserSkill = selectedUserSkills.value.findIndex(val => Number(val) === Number(skill.key));\n selected = isSelectedUserSkill !== -1;\n }\n if (this.previousSelectedNestedCheckbox.length > 0) {\n // Pick up from previous selected\n selected = this.previousSelectedNestedCheckbox.includes(String(skill.key));\n }\n }\n\n return selected;\n });\n\n this.form.get('user-skills').setValue(prevValues);\n } else {\n const preSelectedSkills: boolean[] = [];\n\n this.filteredSkillsByServicesCheckbox.map((skillsByServices, index) => {\n for(let i = 0; i<this._config.preSelectedNestedCheckbox.length; i++) {\n const skillCopyValue = this._config.preSelectedNestedCheckbox[i];\n\n if(skillCopyValue.toString() === skillsByServices.key.toString()) {\n preSelectedSkills[index] = true;\n break;\n } else {\n preSelectedSkills[index] = false;\n }\n }\n });\n\n if(preSelectedSkills.length > 0) {\n preSelectedSkills.forEach((h) => {\n (this.form.get('user-skills') as UntypedFormArray).push(new UntypedFormControl(h));\n });\n } else {\n this.filteredSkillsByServicesCheckbox.map(() => {\n (this.form.get('user-skills') as UntypedFormArray).push(new UntypedFormControl(false));\n });\n }\n }\n return this.filteredSkillsByServicesCheckbox;\n }\n }\n\n this.filteredSkillsByServices = this.sortGroupOptions(this.filteredSkillsByServices);\n\n return this.filteredSkillsByServices;\n }\n\n private getSelectedValuesForFields(formValues: any, field: FilterFieldConfig): string[] {\n const selectedValues: string[] = [];\n Object.keys(formValues).map((name: string) => {\n const values = formValues[name].value;\n if (name === field.name) {\n values.forEach((v: any) => {\n selectedValues.push(v.key);\n });\n }\n });\n return selectedValues;\n }\n\n private sortGroupOptions(groupOptions: GroupOptions[]): GroupOptions[] {\n const sortedResults: GroupOptions[] = [];\n const groups = groupOptions.map(go => go.group);\n groups.sort().forEach(g => {\n const options = groupOptions.find((go: any) => go.group === g).options;\n const sortedOptions = options.sort((a, b) => {\n return a.label.toLowerCase() > b.label.toLowerCase() ? 1 : (b.label.toLowerCase() > a.label.toLowerCase() ? -1 : 0);\n });\n const result = {\n group : g,\n options: sortedOptions\n };\n sortedResults.push(result);\n });\n return sortedResults;\n }\n}\n","<form [formGroup]=\"form\" (ngSubmit)=\"applyFilter(form)\">\n <div class=\"contain-classes\" *ngFor=\"let field of config.fields\">\n <hr *ngIf=\"field.lineBreakBefore\" class=\"govuk-section-break govuk-section-break--visible elevated-break\">\n <ng-container [ngSwitch]=\"field.type\">\n <ng-container *ngSwitchCase=\"'group-title'\">\n <div [class]=\"field.titleClasses ? field.titleClasses: 'govuk-label govuk-label--m govuk-!-margin-bottom-4'\">\n {{ field.name | capitalize }}\n </div>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <div class=\"govuk-form-group xui-generic-filter\"\n [hidden]=\"hidden(field, form)\"\n [id]=\"field.name\"\n [ngClass]=\"{'form-group-error': submitted && (form.get(field.name).errors?.required || form.get(field.name).errors?.minlength || form.get(field.name).errors?.maxLength)}\">\n <div *ngIf=\"field.title\" class=\"xui-generic-filter__field-title\">\n <h3 [class]=\"field.titleClasses ? field.titleClasses : 'govuk-heading-s'\" style=\"margin-bottom: 0!important\">\n {{field.title | capitalize}}\n </h3>\n <div *ngIf=\"field?.titleHint\" class=\"govuk-!-margin-left-2\">\n {{ field.titleHint }}\n </div>\n </div>\n <p class=\"govuk-body\" *ngIf=\"field.subTitle\">{{field.subTitle}}</p>\n <div *ngIf=\"field.hintText\"\n [id]=\"field.hintText + '-hint'\" class=\"govuk-hint\">\n {{ field.hintText }}\n </div>\n <span [id]=\"field.name + '-error'\" class=\"govuk-error-message\" *ngIf=\"field.displayMinSelectedError && submitted && (form.get(field.name).errors?.required || form.get(field.name).errors?.minlength)\">\n <span class=\"govuk-visually-hidden\">Error:</span> {{field.minSelectedError}}\n </span>\n <span [id]=\"field.name + '-error'\" class=\"govuk-error-message\" *ngIf=\"field.displayMaxSelectedError && submitted && form.get(field.name).errors?.maxLength\">\n <span class=\"govuk-visually-hidden\">Error:</span> {{field.maxSelectedError}}\n </span>\n <span [id]=\"field.name + '-error'\" class=\"govuk-error-message\"\n *ngIf=\"field.emailError && submitted && form.get(field.name).errors?.email\">\n <span class=\"govuk-visually-hidden\">Error:</span> {{field.emailError}}\n </span>\n <div class=\"govuk-body\" [class.govuk-body--maxWidth480px]=\"field.maxWidth480px\" [ngSwitch]=\"field.type\">\n <ng-container *ngSwitchCase=\"'select'\">\n <select class=\"govuk-select\" (change)=\"fieldChanged(field, form)\" [attr.disabled]=\"disabled(field, form)\" [name]=\"'select_' + field.name\" [id]=\"'select_' + field.name\" [formControlName]=\"field.name\">\n <option disabled selected hidden value=\"\">{{field.disabledText}}</option>\n <option *ngIf=\"field.defaultOption\" [attr.selected]=\"true\" [value]=\"field.defaultOption.key\">{{field.defaultOption.label}}</option>\n <option class=\"govuk-radios__item\" *ngFor=\"let item of field.options\" [value]=\"item.key\">{{item.label}}</option>\n </select>\n </ng-container>\n <ng-container *ngSwitchCase=\"'group-select'\">\n <select class=\"govuk-select\" (change)=\"fieldChanged(field, form)\" [attr.disabled]=\"disabled(field, form)\" [name]=\"'select_' + field.name\" [id]=\"'select_' + field.name\" [formControlName]=\"field.name\">\n <option disabled selected hidden value=\"\">{{field.disabledText}}</option>\n <option *ngIf=\"field.defaultOption\" selected [value]=\"field.defaultOption.key\">{{field.defaultOption.label}}</option>\n <optgroup *ngFor = 'let grp of filteredSkillsByServices' label=\"{{grp.group | titlecase}}\">\n <option *ngFor = 'let item of grp.options' [value]=\"item.key\">{{item.label}}</option>\n </optgroup>\n </select>\n </ng-container>\n <ng-container *ngSwitchCase=\"'checkbox'\">\n <div class=\"govuk-checkboxes govuk-checkboxes--small\" [formGroupName]=\"field.name\" [attr.field]=\"field.name\" [id]=\"'checkbox_' + field.name\">\n <div *ngFor=\"let item of field.options; let i = index\" class=\"govuk-checkboxes__item\">\n <input type=\"checkbox\" class=\"govuk-checkboxes__input\"\n [attr.disabled]=\"disabled(field, form)\"\n [formControlName]=\"i\"\n (change)=\"toggleSelectAll($event, form, item, field)\"\n [value]=\"item.key\" [id]=\"'checkbox_' + field.name + item.key\"\n [name]=\"'checkbox_' + field.name + item.key\"\n />\n <label\n [for]=\"'checkbox_' + field.name + item.key\"\n class=\"govuk-label govuk-checkboxes__label\"\n [ngClass]=\"{'govuk-!-font-weight-bold': item.selectAll}\"\n >{{item.label}}</label>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'nested-checkbox'\">\n <div class=\"govuk-checkboxes govuk-checkboxes--small\" [formGroupName]=\"field.name\" [attr.field]=\"field.name\" [id]=\"'checkbox_' + field.name\">\n <div *ngFor=\"let item of filteredSkillsByServicesCheckbox; let i = index\" class=\"govuk-checkboxes__item\">\n <input type=\"checkbox\" class=\"govuk-checkboxes__input\"\n [attr.disabled]=\"disabled(field, form)\"\n [formControlName]=\"i\"\n (change)=\"toggleSelectAll($event, form, item, field)\"\n [value]=\"item.key\" [id]=\"'checkbox_' + field.name + item.key\"\n [name]=\"'checkbox_' + field.name + item.key\"\n />\n <label\n [for]=\"'checkbox_' + field.name + item.key\"\n class=\"govuk-label govuk-checkboxes__label\"\n [ngClass]=\"{'govuk-!-font-weight-bold': item.selectAll}\"\n >{{item.label}}</label>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'checkbox-large'\">\n <div class=\"govuk-checkboxes\" [formGroupName]=\"field.name\" [attr.field]=\"field.name\" [id]=\"'checkbox_' + field.name\">\n <div *ngFor=\"let item of field.options; let i = index\" class=\"govuk-checkboxes__item\">\n <input type=\"checkbox\" class=\"govuk-checkboxes__input\"\n [attr.disabled]=\"disabled(field, form)\"\n [formControlName]=\"i\"\n (change)=\"toggleSelectAll($event, form, item, field)\"\n [value]=\"item.key\" [id]=\"'checkbox_' + field.name + item.key\"\n [name]=\"'checkbox_' + field.name + item.key\"\n />\n <label\n [for]=\"'checkbox_' + field.name + item.key\"\n class=\"govuk-label govuk-checkboxes__label\"\n [ngClass]=\"{'govuk-!-font-weight-bold': item.selectAll}\"\n >{{item.label}}</label>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'radio'\">\n <div class=\"govuk-radios\">\n <div *ngFor=\"let item of field.options\" class=\"govuk-radios__item\">\n <input type=\"radio\"\n [formControlName]=\"field.name\"\n [id]=\"'radio_' + item.key\"\n [attr.disabled]=\"disabled(field, form)\"\n [checked]=\"item.key === form.get(field.name).value\"\n class=\"govuk-radios__input\"\n [value]=\"item.key\"\n (change)=\"fieldChanged(field, form)\"\n />\n <label [for]=\"'radio_' + item.key\" class=\"govuk-label govuk-radios__label\">{{item.label}}</label>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'find-person'\">\n <xuilib-find-person subTitle=\"\" (personSelected)=\"updatePersonControls($event, field)\"\n (personFieldChanged)=\"inputChanged(field)\"\n [submitted]=\"submitted\"\n [disabled]=\"disabled(field, form)\"\n [domain]=\"form.get(field.domainField)?.value\"\n [findPersonGroup]=\"form\"\n [selectedPerson]=\"form.get(field.name)?.value?.email\"\n [userIncluded]=\"false\"\n [placeholderContent]=\"field.placeholderContent ? field.placeholderContent : ''\"\n [services]=\"form.get(field.servicesField)?.value\"\n ></xuilib-find-person>\n </ng-container>\n <ng-container *ngSwitchCase=\"'find-location'\">\n <xuilib-find-location (locationFieldChanged)=\"inputChanged(field)\"\n [form]=\"form\"\n [fields]=\"config.fields\"\n [locationTitle]=\"field.locationTitle\"\n [enableAddLocationButton]=\"field.enableAddButton\"\n [disabled]=\"disabled(field, form)\"\n [disableInputField]=\"field.disable\"\n [submitted]=\"submitted\"\n [field]=\"field\"\n [services]=\"form.get(field.findLocationField)?.value\"\n [formSubmissionEvent$]=\"formSubmissionEvent$\"\n ></xuilib-find-location>\n </ng-container>\n <ng-container *ngSwitchCase=\"'find-task-name'\">\n <xuilib-find-task-name subTitle=\"\" (taskNameSelected)=\"updateTaskNameControls($event, field)\"\n (taskNameFieldChanged)=\"inputChanged(field)\"\n [submitted]=\"submitted\"\n [disabled]=\"disabled(field, form)\"\n [domain]=\"form.get(field.domainField)?.value\"\n [findTaskNameGroup]=\"form\"\n [selectedTaskName]=\"form.get(field.name)?.value?.task_type_name\"\n [placeholderContent]=\"field.placeholderContent ? field.placeholderContent : ''\"\n [services]=\"form.get(field.servicesField)?.value\"\n ></xuilib-find-task-name>\n </ng-container>\n <ng-container *ngSwitchCase=\"'find-service'\">\n <xuilib-find-service (serviceFieldChanged)=\"inputServiceChanged(field)\"\n [field]=\"field\"\n [form]=\"form\"\n [formSubmissionEvent$]=\"formSubmissionEvent$\"\n [disabled]=\"disabled(field, form)\">\n </xuilib-find-service>\n </ng-container>\n <ng-container *ngSwitchCase=\"'text-input'\">\n <input class=\"govuk-input\" type=\"text\"\n [formControlName]=\"field.name\"\n [id]=\"field.name\"\n [attr.disabled]=\"disabled(field, form)\"\n (change)=\"fieldChanged(field, form)\"\n [attr.maxlength]=\"field.maxlength ? field.maxlength : null\"\n [readonly]=\"field.readonly\"\n />\n </ng-container>\n <ng-container *ngSwitchCase=\"'email-input'\">\n <input class=\"govuk-input\" type=\"email\"\n [formControlName]=\"field.name\"\n [id]=\"field.name\"\n [attr.disabled]=\"disabled(field, form)\"\n (change)=\"fieldChanged(field, form)\"\n [readonly]=\"field.readonly\"\n />\n </ng-container>\n </div>\n </div>\n </ng-container>\n</ng-container>\n </div>\n <hr class=\"govuk-section-break govuk-section-break--m govuk-section-break--visible\"/>\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-full\">\n <button\n class=\"govuk-button govuk-!-margin-right-1 govuk-!-margin-bottom-0\"\n type=\"submit\"\n id=\"applyFilter\"\n [disabled]=\"config.enableDisabledButton && form.invalid\"\n >{{config.applyButtonText || 'Apply'}}</button>\n <button *ngIf=\"config.showCancelFilterButton\"\n class=\"govuk-button govuk-button--secondary govuk-!-margin-bottom-0\"\n type=\"button\"\n id=\"cancelFilter\"\n (click)=\"cancelFilter()\">{{ config.cancelButtonText || 'Cancel'}}</button>\n </div>\n </div>\n</form>\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\n/*\n* Gov UK Dialog Component\n* Responsible for displaying dialog layout\n* using ng-content to display content from parent\n* */\n@Component({\n selector: 'xuilib-session-dialog',\n templateUrl: './hmcts-session-dialog.component.html',\n styleUrls: ['./hmcts-session-dialog.component.scss']\n})\nexport class HmctsSessionDialogComponent {\n\n @Input() public positionTop: string;\n @Output() public close = new EventEmitter();\n constructor() {}\n\n public onClose(): void {\n this.close.emit();\n }\n\n}\n","<div class=\"gem-c-modal-dialogue\" data-module=\"modal-dialogue\" id=\"modal-default\" style=\"display: block;\">\n <div class=\"gem-c-modal-dialogue__overlay\"></div>\n <dialog class=\"gem-c-modal-dialogue__box\" aria-modal=\"true\" role=\"dialog\" tabindex=\"0\" [ngStyle]=\"{'margin-top': positionTop}\">\n <div class=\"gem-c-modal-dialogue__header\">\n <svg role=\"presentation\" focusable=\"false\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 38 38\" height=\"33\" width=\"33\">\n <style type=\"text/css\">\n .st0{fill:#FFFFFF;}\n </style>\n <g id=\"_4_-_granular_components_warning_icon\" transform=\"translate(0.5 0.5)\">\n <g id=\"Warning_icon\" transform=\"translate(0)\">\n <path id=\"Exclusion_1\" class=\"st0\" d=\"M18.5,37.5c-5.04,0.01-9.88-1.99-13.44-5.57C1.49,28.38-0.51,23.54-0.5,18.5\n c-0.01-5.04,1.99-9.88,5.56-13.43C8.62,1.49,13.46-0.51,18.5-0.5c5.04-0.01,9.88,1.99,13.44,5.56c3.57,3.56,5.58,8.39,5.56,13.44\n c0.01,5.04-1.99,9.88-5.56,13.44C28.38,35.51,23.54,37.51,18.5,37.5z M18.52,24.29c-0.4,0-0.8,0.08-1.17,0.23\n c-0.36,0.15-0.69,0.37-0.97,0.64c-0.28,0.27-0.5,0.59-0.65,0.95c-0.16,0.36-0.24,0.76-0.23,1.15c0,0.4,0.08,0.8,0.23,1.17\n c0.15,0.36,0.37,0.68,0.65,0.96c0.28,0.27,0.61,0.49,0.97,0.64c0.37,0.16,0.77,0.24,1.17,0.24c0.4,0,0.79-0.08,1.15-0.24\n c0.35-0.15,0.67-0.37,0.95-0.64c0.27-0.27,0.49-0.6,0.64-0.96c0.16-0.37,0.24-0.77,0.23-1.17c0-0.4-0.08-0.79-0.23-1.15\n c-0.15-0.35-0.37-0.67-0.64-0.95c-0.27-0.27-0.6-0.49-0.95-0.64C19.31,24.37,18.92,24.29,18.52,24.29L18.52,24.29z M16.11,7.5\n l0.42,14.87h3.91L20.86,7.5H16.11z\"/>\n </g>\n </g>\n </svg>\n <div class=\"gem-c-modal-dialogue__title\">We are about to sign you out</div>\n </div>\n <div class=\"gem-c-modal-dialogue__content\">\n <ng-content></ng-content>\n </div>\n </dialog>\n</div>\n","import {Component, Input} from '@angular/core';\n\n/*\n* Gov UK Label component\n* Responsible for displaying label tag\n* @prop isPageHading - boolean to display h1\n* @prop config - obj with properties\n* */\n@Component({\n selector: 'xuilib-gov-label',\n templateUrl: './gov-uk-label.component.html',\n styleUrls: ['./gov-uk-label.component.scss']\n})\nexport class GovUkLabelComponent {\n constructor() { }\n @Input() public config: { label: string, name: string; id: string, isPageHeading: boolean, classes: string, optional?: string };\n\n}\n","<h1 *ngIf=\"config.isPageHeading else noHeading\">\n <label *ngIf=\"config.label\" [for]=\"config.id\" [class]=\"config.classes + ' govuk-label'\">\n <span>{{ config.label }}</span>\n <span class=\"govuk-label__optional\" *ngIf=\"config.optional\">(optional)</span>\n </label>\n</h1>\n<ng-template #noHeading>\n <label *ngIf=\"config.label\" [for]=\"config.id\" [class]=\"config.classes + ' govuk-label'\">\n <span>{{ config.label }}</span>\n <span class=\"govuk-label__optional\" *ngIf=\"config.optional\">(optional)</span>\n </label>\n</ng-template>\n","\nimport {Directive, ElementRef, OnInit} from '@angular/core';\n/*\n* Remove Host Directive\n* Used to remove native angular host tags tags\n* sometimes needed because of CSS dependencies\n* */\n@Directive({\n selector: '[appRemoveHost]'\n})\nexport class RemoveHostDirective implements OnInit {\n\n constructor(private readonly el: ElementRef) {}\n\n public ngOnInit() {\n const nativeElement: HTMLElement = this.el.nativeElement;\n const parentElement: HTMLElement = nativeElement.parentElement;\n // move all children out of the element\n while (nativeElement.firstChild) {\n parentElement.insertBefore(nativeElement.firstChild, nativeElement);\n }\n parentElement.removeChild(nativeElement);\n }\n}\n","import {Component, Input, OnInit} from '@angular/core';\nimport {UntypedFormGroup} from '@angular/forms';\nimport { GovUiConfigModel } from '../../models/gov-ui-config-model';\n/*\n* Gov Uk Checkbox Dumb Component responsible for\n* displaying checkbox input and hint\n*\n* */\n@Component({\n selector: 'xuilib-gov-checkbox',\n templateUrl: './gov-uk-checkbox.component.html'\n})\n\nexport class GovUkCheckboxComponent implements OnInit {\n constructor() { }\n @Input() public group: UntypedFormGroup;\n @Input() public config: GovUiConfigModel;\n @Input() public isChecked: boolean = false;\n // {value: string, label: string, hint: string; name: string; focusOn: string; id: string; classes: string};\n\n public id: string;\n\n public ngOnInit(): void {\n const id = this.config.focusOn ? this.config.focusOn : this.config.value;\n this.config.id = id;\n this.config.classes = this.config.classes ?\n this.config.classes.concat(' govuk-checkboxes__label') : 'govuk-checkboxes__label';\n }\n}\n","<div class=\"govuk-checkboxes__item\" [formGroup]=\"group\">\n <input class=\"govuk-checkboxes__input\" type=\"checkbox\" [attr.aria-describedby]=\"config.hint ? config.value+'-item-hint' : null\"\n [id]=\"config.id\" [name]=\"config.name\" [formControlName]=\"config.value\" [checked]=\"isChecked\">\n <xuilib-gov-label appRemoveHost [config]=\"config\"></xuilib-gov-label>\n <span [id]=\"config.value+'-item-hint'\" class=\"govuk-hint govuk-checkboxes__hint\">\n {{config.hint}}\n </span>\n</div>","import {Component, Input} from '@angular/core';\nimport { ErrorMessagesModel } from '../../models';\nimport { GovUiConfigModel } from '../../models/gov-ui-config-model';\n/*\n* Gov UK Error Message\n* Responsible for displaying in-line error messages\n* @prop config - obj with properties\n* @prop errorMessage - all error bject with messages property that is arry of strings.\n* */\n@Component({\n selector: ' xuilib-gov-uk-error-message',\n templateUrl: './gov-uk-error-message.component.html'\n})\nexport class GovUkErrorMessageComponent {\n constructor() { }\n @Input() public config: GovUiConfigModel;\n // { id: string };\n @Input() public errorMessage: ErrorMessagesModel;\n}\n","<span class=\"govuk-error-message\" [id]=\"config.id + '-error'\" *ngFor=\"let message of errorMessage?.messages\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{message}}\n</span>","import { ErrorMessagesModel } from '../../models';\nimport { GovUiConfigModel } from '../../models/gov-ui-config-model';\n\n/*\n * Helper Class\n * Used for dynamic templates manipulation\n * */\n\nexport class HtmlTemplatesHelper {\n /*\n * Sets described by string depending if\n * there is an error, error and hit or nothing\n * */\n public static setDescribedBy(errorMessage: ErrorMessagesModel, config: GovUiConfigModel) {\n if (!errorMessage) {\n return config.hint ? `${config.id}-hint` : null;\n } else if (errorMessage && errorMessage.isInvalid) {\n return config.hint ? `${config.id}-hint ${config.id}-error` : `${config.id}-error`;\n } else {\n return config.hint ? `${config.id}-hint` : null;\n }\n }\n}\n","import {Component, Input} from '@angular/core';\nimport { ErrorMessagesModel } from '../../models';\nimport { GovUiConfigModel } from '../../models/gov-ui-config-model';\nimport {HtmlTemplatesHelper} from '../../util/helpers/html-templates.helper';\n/*\n* Gov Uk Fieldset Component\n* Used to wrap group fieldset elements\n* it can conditionally display h1 tag\n* @param config\n* @param isHeading\n* @param errorMessage - used for aria tag\n* */\n@Component({\n selector: 'xuilib-gov-uk-fieldset',\n templateUrl: './gov-uk-fieldset.component.html'\n})\nexport class GovUkFieldsetComponent {\n constructor() { }\n @Input() public config: GovUiConfigModel;\n // {legend: string; classes: string, id: string, hint: string, key: string, isPageHeading: boolean};\n // @Input() public isPageHeading: boolean;\n @Input() public errorMessage: ErrorMessagesModel;\n\n public setDescribedBy(): string {\n return HtmlTemplatesHelper.setDescribedBy(this.errorMessage, this.config);\n }\n}\n","<fieldset class=\"govuk-fieldset\" [attr.aria-describedby]=\"setDescribedBy()\">\n <legend [class]=\"config.classes + ' govuk-fieldset__legend'\" *ngIf=\"!config.isPageHeading\">\n {{config.legend}}\n </legend>\n\n <legend [class]=\"config.classes + ' govuk-fieldset__legend'\" *ngIf=\"config.isPageHeading\">\n <h1>{{config.legend}}</h1>\n </legend>\n\n <span [id]=\"config.id+'-hint'\" class=\"govuk-hint\" *ngIf=\"config.hint\">\n {{config.hint}}\n </span>\n <ng-content></ng-content>\n</fieldset>","import {Component, Input} from '@angular/core';\nimport { ErrorMessagesModel } from '../../models';\nimport { GovUiConfigModel } from '../../models/gov-ui-config-model';\n/*\n* Gov Uk Form Group Wrapper\n* Used to wrap group form elements in html tags below such as\n* gov-uk-checkboxes and radio buttons\n* and errorMessage messages\n* */\n@Component({\n selector: 'xuilib-gov-uk-form-group-wrapper',\n templateUrl: './gov-uk-form-group-wrapper.component.html'\n})\nexport class GovUkFormGroupWrapperComponent {\n constructor() { }\n @Input() public error: ErrorMessagesModel;\n @Input() public group: string;\n @Input() public config: GovUiConfigModel;\n // {hint: string; legend: string, key: string, isPageHeading: boolean;}; // TODO create a global interface\n\n}\n\n","<div class=\"govuk-form-group\" [attr.formGroupName]=\"group\" [ngClass]=\"{'govuk-form-group--error': (error?.isInvalid)}\">\n <xuilib-gov-uk-fieldset\n [config]=\"{legend: config.legend, classes: 'govuk-label--m', id: config.key, hint: config.hint, isPageHeading: config.isPageHeading}\"\n [errorMessage]=\"error\">\n\n <xuilib-gov-uk-error-message [config]=\"{id: group}\" [errorMessage]=\"error\"></xuilib-gov-uk-error-message>\n\n <ng-content></ng-content>\n\n </xuilib-gov-uk-fieldset>\n</div>","import {Component, Input} from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { ErrorMessagesModel } from '../../gov-ui/models';\n\n@Component({\n selector: 'xuilib-invite-permission-form',\n templateUrl: './invite-user-permission.component.html',\n })\n\n export class InviteUserPermissionComponent {\n @Input() public inviteUserForm: UntypedFormGroup;\n @Input() public isPuiCaseManager: boolean = false;\n @Input() public isPuiUserManager: boolean = false;\n @Input() public isPuiOrganisationManager: boolean = false;\n @Input() public isPuiFinanceManager: boolean = false;\n @Input() public errorMessages: ErrorMessagesModel;\n }\n"," <!--permissions -->\n <ng-container [formGroup]=\"inviteUserForm\">\n <xuilib-gov-uk-form-group-wrapper\n [config]=\"{hint: 'Choose what the user will be able to do. You can change this later.', legend: 'Permissions', key: 'roles'}\"\n [formGroupName]=\"'roles'\"\n [error]=\"errorMessages\">\n\n <div class=\"govuk-checkboxes\">\n <xuilib-gov-checkbox\n [group]=\"inviteUserForm.controls['roles']\"\n [isChecked]=\"isPuiCaseManager\"\n [config]=\"{value: 'pui-case-manager', label: 'Manage Cases', name: 'roles', hint: 'View, create and progress cases.', focusOn: 'roles'}\">\n </xuilib-gov-checkbox>\n\n <xuilib-gov-checkbox\n [group]=\"inviteUserForm.controls['roles']\"\n [isChecked]=\"isPuiUserManager\"\n [config]=\"{value: 'pui-user-manager', label: 'Manage Users', name: 'roles',\n hint: 'Invite users.'}\">\n </xuilib-gov-checkbox>\n\n <xuilib-gov-checkbox\n [group]=\"inviteUserForm.controls['roles']\"\n [isChecked]=\"isPuiOrganisationManager\"\n [config]=\"{value: 'pui-organisation-manager', label: 'Manage Organisation', name: 'roles',\n hint: 'View organisation name and addresses.'}\">\n </xuilib-gov-checkbox>\n\n <!-- <xuilib-gov-checkbox\n [group]=\"inviteUserForm.controls['roles']\"\n [isChecked]=\"isPuiFinanceManager\"\n [config]=\"{value: 'pui-finance-manager', label: 'Manage Payments', name: 'roles',\n hint: 'View account balances, available credit and transactions.'}\">\n </xuilib-gov-checkbox> -->\n </div>\n\n </xuilib-gov-uk-form-group-wrapper>\n</ng-container>","import { Component, Input, OnInit } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { ErrorMessagesModel, GovUiConfigModel } from '../../models';\nimport { HtmlTemplatesHelper } from '../../util/helpers/html-templates.helper';\n/*\n* Gov UK Input component\n* Responsible for displaying input, hint and error messages\n* @prop errorMessages - array of messages\n* @prop focusOn - passing the FormGroup\n* @prop config - adding configuration\n* */\n@Component({\n selector: 'xuilib-gov-uk-input',\n templateUrl: './gov-uk-input.component.html',\n styleUrls: ['./gov-uk-input.component.scss']\n})\nexport class GovUkInputComponent implements OnInit {\n constructor() { }\n @Input() public errorMessage: ErrorMessagesModel;\n @Input() public group: UntypedFormGroup;\n @Input() public config: GovUiConfigModel;\n // { label: string, hint: string; name: string; id: string, type: string; isPageHeading: boolean, classes: string };\n\n public ngOnInit(): void {\n this.config.classes = typeof(this.config.classes) === 'string' ? this.config.classes : 'govuk-label govuk-label--m';\n }\n\n public setDescribedBy(): string {\n return HtmlTemplatesHelper.setDescribedBy(this.errorMessage, this.config);\n }\n}\n","<div class=\"govuk-form-group gov-uk-input\" [formGroup]=\"group\"\n[ngClass]=\"{'govuk-form-group--error': errorMessage?.isInvalid}\">\n\n<xuilib-gov-label [config]=\"config\"></xuilib-gov-label>\n\n<span *ngIf=\"config.hint\" [id]=\"config.id +'-hint'\" class=\"govuk-hint\">\n {{config.hint}}\n</span>\n\n<xuilib-gov-uk-error-message [config]=\"config\" [errorMessage]=\"errorMessage\"></xuilib-gov-uk-error-message>\n\n<input class=\"govuk-input\"\n [class.govuk-!-width-full]=\"config.fullWidth\"\n [ngClass]=\"{'govuk-input--error': errorMessage?.isInvalid}\"\n [id]=\"config.id\"\n [name]=\"config.name\"\n [type]=\"config.type\"\n [attr.aria-invalid]=\"errorMessage?.isInvalid\"\n [formControlName]=\"config.name\"\n [attr.aria-describedby]='setDescribedBy()'>\n</div>\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {UntypedFormGroup} from '@angular/forms';\n\n@Component({\n selector: 'xuilib-invite-user-form',\n templateUrl: './invite-user-form.component.html',\n})\n\nexport class InviteUserFormComponent {\n\n public isInvalid: any;\n\n @Output() public submitForm = new EventEmitter();\n @Input() public inviteUserForm: UntypedFormGroup;\n @Input() public set errorMessages(value: any) {\n this.isInvalid = value || {} ;\n }\n\n public onSubmit() {\n this.submitForm.emit();\n }\n}\n","\n<form [formGroup]=\"inviteUserForm\" (ngSubmit)=\"onSubmit()\" >\n\n <xuilib-gov-uk-input\n [config]=\"{label: 'First name', hint: 'Include all middle names.', name: 'firstName', id: 'firstName', type: 'text', classes: 'testClass'}\"\n [errorMessage]=\"isInvalid.firstName\"\n [group]=\"inviteUserForm\">\n </xuilib-gov-uk-input>\n\n <xuilib-gov-uk-input\n [config]=\"{label: 'Last name', name: 'lastName', id: 'lastName', type: 'text'}\"\n [errorMessage]=\"isInvalid.lastName\"\n [group]=\"inviteUserForm\">\n </xuilib-gov-uk-input>\n\n <xuilib-gov-uk-input\n [config]=\"{label: 'Email address', name: 'email', id: 'email', type: 'email'}\"\n [errorMessage]=\"isInvalid.email\"\n [group]=\"inviteUserForm\">\n </xuilib-gov-uk-input>\n\n <xuilib-invite-permission-form [inviteUserForm]=\"inviteUserForm\" [errorMessages]=\"isInvalid.roles\">\n </xuilib-invite-permission-form>\n\n <button type=\"submit\" class=\"govuk-button\">\n Send invitation\n </button>\n</form>\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'xuilib-loading-spinner',\n templateUrl: './loading-spinner.component.html',\n styleUrls: ['./loading-spinner.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\n\nexport class LoadingSpinnerComponent {\n @Input() public loadingText: string = 'Loading';\n}\n","<div class=\"spinner-container\">\n <div class=\"spinner-inner-container\">\n <p>{{loadingText}}</p>\n <div class=\"spinner\" style=\"margin: auto;\"></div>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { SharedCase } from '../../models/case-share.model';\nimport { UserDetails } from '../../models/user-details.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CaseSharingStateService {\n\n private caseState: SharedCase[] = [];\n private readonly subject = new BehaviorSubject<SharedCase[]>(this.caseState);\n\n public get state() {\n return this.subject.asObservable().pipe(\n distinctUntilChanged()\n );\n }\n\n constructor() { }\n\n public setCases(cases: SharedCase[]): void {\n this.caseState = [];\n cases.forEach(aCase => {\n this.caseState.push({ caseId: aCase.caseId, caseTitle: aCase.caseTitle, caseTypeId: aCase.caseTypeId, roles: aCase.roles,\n sharedWith: aCase.sharedWith, pendingShares: aCase.pendingShares, pendingUnshares: aCase.pendingUnshares });\n });\n this.subject.next(this.caseState);\n }\n\n public getCases(): SharedCase[] {\n return this.caseState;\n }\n\n public requestShare(user: UserDetails): SharedCase[] {\n const oldSharedCases: SharedCase[] = this.caseState.slice();\n const newSharedCases: SharedCase[] = [];\n for (const sharedCase of oldSharedCases) {\n if (!sharedCase.pendingShares) {\n sharedCase.pendingShares = [];\n }\n const newPendingShares = sharedCase.pendingShares.slice();\n if (!sharedCase.pendingUnshares) {\n sharedCase.pendingUnshares = [];\n }\n const newPendingUnshares = sharedCase.pendingUnshares.slice();\n if (!this.userHasAccess(sharedCase, user)) {\n if (!newPendingShares.some(u => u.email === user.email)) {\n newPendingShares.push(user);\n }\n } else {\n for (let u = 0, ul = newPendingUnshares.length; u < ul; u++) {\n if (newPendingUnshares[u].email === user.email) {\n newPendingUnshares.splice(u, 1);\n break;\n }\n }\n }\n const newSharedCase = {\n ...sharedCase,\n pendingUnshares: newPendingUnshares,\n pendingShares: newPendingShares\n };\n newSharedCases.push(newSharedCase);\n }\n this.subject.next(newSharedCases);\n return newSharedCases;\n }\n\n public requestUnshare(user: UserDetails, caseId?: string): SharedCase[] {\n const newSharedCases: SharedCase[] = [];\n for (const sharedCase of this.caseState) {\n // If no caseId, then request unshare from all shared cases\n if (caseId === undefined || sharedCase.caseId === caseId) {\n if (!sharedCase.pendingUnshares) {\n sharedCase.pendingUnshares = [];\n }\n const newPendingUnshares = sharedCase.pendingUnshares.slice();\n // If the user is pending shared access, just remove them from pendingShares\n let newPendingShares;\n let indexOfPreviouslyAddedUser = -1;\n if (sharedCase.pendingShares) {\n indexOfPreviouslyAddedUser = sharedCase.pendingShares.findIndex(u => u.idamId === user.idamId);\n if (indexOfPreviouslyAddedUser > -1) {\n newPendingShares = sharedCase.pendingShares.slice();\n newPendingShares.splice(indexOfPreviouslyAddedUser, 1);\n }\n }\n // If the user does not exist in pendingShares, and already has shared access (i.e. exists in sharedWith),\n // request removal of shared access\n if (indexOfPreviouslyAddedUser === -1 && sharedCase.sharedWith && sharedCase.sharedWith.findIndex(\n u => u.idamId === user.idamId) > -1) {\n if (!newPendingUnshares.some(u => u.email === user.email)) {\n newPendingUnshares.push(user);\n }\n }\n const newSharedCase = {\n ...sharedCase,\n pendingUnshares: newPendingUnshares,\n ...(newPendingShares && {\n pendingShares: newPendingShares\n })\n };\n newSharedCases.push(newSharedCase);\n } else {\n newSharedCases.push(sharedCase);\n }\n }\n this.subject.next(newSharedCases);\n return newSharedCases;\n }\n\n public requestCancel(caseId: string, user: UserDetails): void {\n const newSharedCases: SharedCase[] = [];\n for (const sharedCase of this.caseState) {\n if (sharedCase.caseId === caseId) {\n if (!sharedCase.pendingUnshares) {\n sharedCase.pendingUnshares = [];\n }\n const newPendingUnshares = sharedCase.pendingUnshares.slice();\n for (let iPendingUnshares = 0; iPendingUnshares < newPendingUnshares.length; iPendingUnshares++) {\n if (newPendingUnshares[iPendingUnshares].email === user.email) {\n newPendingUnshares.splice(iPendingUnshares, 1);\n break;\n }\n }\n if (!sharedCase.pendingShares) {\n sharedCase.pendingShares = [];\n }\n const newPendingShares = sharedCase.pendingShares.slice();\n for (let iPendingShares = 0; iPendingShares < newPendingShares.length; iPendingShares++) {\n if (newPendingShares[iPendingShares].email === user.email) {\n newPendingShares.splice(iPendingShares, 1);\n break;\n }\n }\n const newSharedCase = {\n ...sharedCase,\n pendingUnshares: newPendingUnshares,\n pendingShares: newPendingShares\n };\n newSharedCases.push(newSharedCase);\n } else {\n newSharedCases.push(sharedCase);\n }\n }\n this.subject.next(newSharedCases);\n return;\n }\n\n public removeCase(caseId: string): void {\n if (this.caseState.length > 1) {\n for (let i = 0, l = this.caseState.length; i < l; i++) {\n if (this.caseState[i].caseId === caseId) {\n this.caseState.splice(i, 1);\n this.subject.next(this.caseState);\n return;\n }\n }\n }\n }\n\n public userHasAccess(c: SharedCase, user: UserDetails): boolean {\n if (!c.sharedWith) {\n return false;\n }\n for (let i = 0, l = c.sharedWith.length; i < l; i++) {\n if (c.sharedWith[i].email === user.email) {\n return true;\n }\n }\n return false;\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { SharedCase } from '../../models/case-share.model';\nimport { UserDetails } from '../../models/user-details.model';\nimport { CaseSharingStateService } from '../../services/case-sharing-state/case-sharing-state.service';\n\n@Component({\n selector: 'xuilib-selected-case-confirm',\n templateUrl: './selected-case-confirm.component.html',\n styleUrls: ['./selected-case-confirm.component.scss']\n})\nexport class SelectedCaseConfirmComponent implements OnInit {\n\n @Input() public sharedCase: SharedCase;\n @Input() public changeLink: string = '';\n\n public shareCases: SharedCase[];\n public shareCases$: Observable<SharedCase[]>;\n\n constructor(private readonly stateService: CaseSharingStateService) { }\n\n public ngOnInit() {\n this.shareCases$ = this.stateService.state;\n this.shareCases$.subscribe(shareCases => this.shareCases = shareCases);\n }\n\n public trackByUserId(user: UserDetails): string {\n return user.idamId;\n }\n\n public showUserAccessBlock(): boolean {\n if (this.sharedCase.pendingShares && this.sharedCase.pendingShares.length > 0) {\n return true;\n }\n return this.sharedCase.pendingUnshares && this.sharedCase.pendingUnshares.length > 0;\n }\n}\n","<div id=\"user-access-block-{{ sharedCase.caseId }}\" *ngIf=\"showUserAccessBlock()\">\n <h2 class=\"govuk-heading-m case-share-confirm__title\">{{ sharedCase.caseTitle }}</h2>\n <div class=\"case-share-confirm__caption-area\">\n <div class=\"govuk-caption-m case-share-confirm__caption\">\n {{ sharedCase.caseId }}\n </div>\n <a [routerLink]=\"changeLink\" class=\"case-share-confirm__change-link govuk-link govuk-!-font-size-19\">Change</a>\n </div>\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <th class=\"govuk-table__header govuk-table-column-header\" scope=\"col\">Name</th>\n <th class=\"govuk-table__header govuk-table-column-header\" scope=\"col\">Email address</th>\n <th class=\"govuk-table__header govuk-table-column-actions\" scope=\"col\">Actions</th>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\" *ngFor=\"let user of sharedCase.pendingShares; trackBy: trackByUserId\">\n <td class=\"govuk-table__cell\">{{ user.firstName + ' ' + user.lastName }}</td>\n <td class=\"govuk-table__cell\">{{ user.email }}</td>\n <td class=\"govuk-table__cell\">\n <span class=\"hmcts-badge\">To be added</span>\n </td>\n </tr>\n <tr class=\"govuk-table__row\" *ngFor=\"let user of sharedCase.pendingUnshares; trackBy: trackByUserId\">\n <td class=\"govuk-table__cell\">{{ user.firstName + ' ' + user.lastName }}</td>\n <td class=\"govuk-table__cell\">{{ user.email }}</td>\n <td class=\"govuk-table__cell\">\n <span class=\"hmcts-badge hmcts-badge--red\">To be removed</span>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { SharedCase } from '../../models/case-share.model';\nimport { UserDetails } from '../../models/user-details.model';\nimport { CaseSharingStateService } from '../../services/case-sharing-state/case-sharing-state.service';\n\n@Component({\n selector: 'xuilib-selected-case',\n templateUrl: './selected-case.component.html',\n styleUrls: ['./selected-case.component.scss']\n})\nexport class SelectedCaseComponent implements OnInit, OnChanges {\n\n @Input() public sharedCase: SharedCase;\n @Input() public selectedUser: UserDetails;\n @Input() public opened = false;\n @Input() public removeUserFromCaseToggleOn: boolean;\n @Input() public caseCount: number;\n\n @Output() public unselect = new EventEmitter<SharedCase>();\n @Output() public synchronizeStore = new EventEmitter<any>();\n\n public shareCases: SharedCase[];\n public shareCases$: Observable<SharedCase[]>;\n\n public combinedSortedShares: UserDetails[];\n\n constructor(private readonly stateService: CaseSharingStateService) { }\n\n public ngOnInit() {\n this.shareCases$ = this.stateService.state;\n this.shareCases$.subscribe(shareCases => this.shareCases = shareCases);\n\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes.sharedCase) {\n const sharedWith = this.sharedCase.sharedWith ? this.sharedCase.sharedWith : [];\n const pendingShares = this.sharedCase.pendingShares ? this.sharedCase.pendingShares : [];\n this.combinedSortedShares = this.combineAndSortShares(sharedWith, pendingShares);\n }\n }\n\n public onDeselect(c: SharedCase): void {\n this.unselect.emit(c);\n }\n\n public trackByUserId(user: UserDetails): string {\n return user.idamId;\n }\n\n public canRemove(caseId: string, user: UserDetails): Observable<boolean> {\n return this.shareCases$.pipe(map(cases => {\n if (this.removeUserFromCaseToggleOn) {\n for (const aCase of cases) {\n if (aCase.caseId === caseId) {\n if (aCase.pendingUnshares && aCase.pendingUnshares.some(u => u.idamId === user.idamId)) {\n return false;\n }\n if (aCase.sharedWith && aCase.sharedWith.some(u => u.idamId === user.idamId)) {\n return true;\n }\n }\n }\n }\n return false;\n }));\n }\n\n public canCancel(caseId: string, user: UserDetails): Observable<boolean> {\n return this.shareCases$.pipe(map(cases => {\n for (const aCase of cases) {\n if (aCase.caseId === caseId) {\n if (aCase.pendingShares && aCase.pendingShares.some(u => u.idamId === user.idamId)) {\n return true;\n }\n if (aCase.pendingUnshares && aCase.pendingUnshares.some(u => u.idamId === user.idamId)) {\n return true;\n }\n return false;\n }\n }\n }));\n }\n\n public isToBeRemoved(caseId: string, user: UserDetails): Observable<boolean> {\n return this.shareCases$.pipe(map(cases => {\n for (const aCase of cases) {\n if (aCase.caseId === caseId) {\n return aCase.pendingUnshares && aCase.pendingUnshares.some(u => u.idamId === user.idamId);\n }\n }\n }));\n }\n\n public isToBeAdded(caseId: string, user: UserDetails): Observable<boolean> {\n return this.shareCases$.pipe(map(cases => {\n for (const aCase of cases) {\n if (aCase.caseId === caseId) {\n return aCase.pendingShares && aCase.pendingShares.some(u => u.idamId === user.idamId);\n }\n }\n }));\n }\n\n public onRemove(user: UserDetails, sharedCase: SharedCase): void {\n this.stateService.requestUnshare(user, sharedCase.caseId);\n this.synchronizeStore.emit(this.shareCases);\n }\n\n public onCancel(user: UserDetails, sharedCase: SharedCase): void {\n this.stateService.requestCancel(sharedCase.caseId, user);\n this.synchronizeStore.emit(this.shareCases);\n }\n\n public showNoUsersAccessInfo(): boolean {\n // A user is added to a case\n if (this.sharedCase.pendingShares) {\n if (this.sharedCase.pendingShares.length > 0) {\n return false;\n }\n }\n // A case has 0 users with access to it\n if (this.sharedCase.sharedWith) {\n if (this.sharedCase.sharedWith.length === 0) {\n return true;\n }\n }\n // Access to the last user is removed\n if (this.sharedCase.sharedWith && this.sharedCase.pendingUnshares) {\n if (this.sharedCase.pendingUnshares.length > 0\n && this.sharedCase.sharedWith.length === this.sharedCase.pendingUnshares.length) {\n return true;\n }\n }\n return false;\n }\n\n public showUserHasAccessInfo(): boolean {\n return !this.showNoUsersAccessInfo();\n }\n\n public showUserAccessTable(): boolean {\n if (this.sharedCase.pendingShares) {\n if (this.sharedCase.pendingShares.length > 0) {\n return true;\n }\n }\n if (this.sharedCase.sharedWith) {\n if (this.sharedCase.sharedWith.length > 0) {\n return true;\n }\n }\n return false;\n }\n\n public combineAndSortShares(sharedWith: UserDetails[], pendingShares: UserDetails[]): UserDetails[] {\n return [\n ...sharedWith,\n ...pendingShares\n ].sort((user1, user2) => {\n return user1.firstName.toLowerCase() > user2.firstName.toLowerCase() ? 1 : (user2.firstName.toLowerCase() > user1.firstName.toLowerCase() ? -1 : 0);\n });\n }\n\n public userIdSetter(isPending: boolean, id: number): string {\n return isPending ? `pendingShares-${id}` : `${id}`;\n }\n\n public buildElementId(elementName: string): string {\n return `${elementName}-${this.sharedCase.caseId}`;\n }\n}\n","<div id=\"{{buildElementId('govuk-accordion__section')}}\" class=\"govuk-accordion__section\">\n <div class=\"govuk-grid-row govuk-case-header\">\n <div class=\"govuk-grid-column-three-quarters\">\n <h3 id=\"{{buildElementId('case-title')}}\" class=\"govuk-case-title\">{{ sharedCase.caseTitle }}</h3>\n <h1 id=\"{{buildElementId('case-id')}}\" class=\"govuk-case-sub-title\">{{ sharedCase.caseId }}</h1>\n </div>\n <div class=\"govuk-grid-column-twenty-percent\">\n <button *ngIf=\"caseCount > 1\"\n id=\"{{buildElementId('btn-deselect-case')}}\" \n class=\"govuk-button hmcts-button--secondary\" \n (click)=\"onDeselect(sharedCase)\" \n title=\"Deselect case\">Deselect case\n </button>\n </div>\n <div class=\"govuk-accordion__section-header govuk-grid-column-five-percent\">\n <div class=\"govuk-accordion__section-heading\">\n <button type=\"button\" id=\"{{buildElementId('accordion-with-summary-sections-heading')}}\"\n aria-controls=\"accordion-with-summary-sections-content-1\" class=\"govuk-accordion__section-button\"\n aria-describedby=\"accordion-with-summary-sections-summary-1\" aria-expanded=\"false\" title=\"Expand or Collapse\">\n <span class=\"govuk-accordion__icon\" aria-hidden=\"true\"></span></button>\n </div>\n </div>\n </div>\n <div id=\"{{buildElementId('accordion-with-summary-sections-content')}}\" class=\"govuk-accordion__section-content\"\n aria-labelledby=\"buildElementId('accordion-with-summary-sections-heading')\" >\n <div class=\"govuk-grid-row\" *ngIf=\"showNoUsersAccessInfo()\">\n <span id=\"{{buildElementId('access-info-no-user')}}\" class=\"govuk-div-align-left\">No users from your organisation currently have access to this case.</span>\n </div>\n <div class=\"govuk-grid-row\" *ngIf=\"showUserHasAccessInfo()\">\n <span id=\"{{buildElementId('access-info-has-users')}}\" class=\"govuk-div-align-left\">Users from your organisation with access to this case.</span>\n </div>\n <table class=\"govuk-table\" *ngIf=\"showUserAccessTable()\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <th id=\"{{buildElementId('name-heading')}}\" class=\"govuk-table__header govuk-table-column-header\" scope=\"col\">Name</th>\n <th id=\"{{buildElementId('email-heading')}}\" class=\"govuk-table__header govuk-table-column-header\" scope=\"col\">Email address</th>\n <th id=\"{{buildElementId('action-heading')}}\" class=\"govuk-table__header govuk-table-column-actions\" scope=\"col\">Actions</th>\n <th id=\"{{buildElementId('label-heading')}}\" class=\"govuk-table__header govuk-table-column-label\" scope=\"col\">Status</th>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\" *ngFor=\"let user of combinedSortedShares; index as idx; trackBy: trackByUserId\">\n <td id=\"user-full-name-{{ userIdSetter(canCancel(sharedCase.caseId, user) | async, idx) }}\" class=\"govuk-table__cell\">{{ user.firstName + ' ' + user.lastName }}</td>\n <td id=\"user-email-{{ userIdSetter(canCancel(sharedCase.caseId, user) | async, idx) }}\" class=\"govuk-table__cell\">{{ user.email }}</td>\n <td class=\"govuk-table__cell\">\n <a *ngIf=\"canRemove(sharedCase.caseId, user) | async\" (click)=\"onRemove(user, sharedCase)\" href=\"javascript:void(0);\">Remove <span class=\"govuk-visually-hidden\">{{ user.firstName + ' ' + user.lastName }} from case</span></a>\n <a *ngIf=\"canCancel(sharedCase.caseId, user) | async\" (click)=\"onCancel(user, sharedCase)\" href=\"javascript:void(0);\">Cancel <span class=\"govuk-visually-hidden\">adding {{ user.firstName + ' ' + user.lastName }} to case</span></a>\n </td>\n <td class=\"govuk-table__cell\">\n <span *ngIf=\"isToBeRemoved(sharedCase.caseId, user) | async\" class=\"hmcts-badge hmcts-badge--red\">To be removed</span>\n <span *ngIf=\"isToBeAdded(sharedCase.caseId, user) | async\" class=\"hmcts-badge\">To be added</span>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { SharedCase } from '../../models/case-share.model';\nimport { CaseSharingStateService } from '../../services/case-sharing-state/case-sharing-state.service';\n\n@Component({\n selector: 'xuilib-selected-case-list',\n templateUrl: './selected-case-list.component.html',\n styleUrls: ['./selected-case-list.component.scss']\n})\nexport class SelectedCaseListComponent implements OnInit {\n\n public shareCases: SharedCase[] = [];\n public caseCount: number;\n\n @Input() public shareCases$: Observable<SharedCase[]>;\n\n @Input() public removeUserFromCaseToggleOn: boolean;\n\n @Input() public toConfirm: boolean = false;\n\n @Input() public changeLink: string = '';\n\n @Output() public unselect = new EventEmitter<SharedCase>();\n @Output() public synchronizeStore = new EventEmitter<SharedCase>();\n\n constructor(private readonly stateService: CaseSharingStateService) { }\n\n public ngOnInit() {\n this.shareCases$ = this.stateService.state;\n this.shareCases$.subscribe((shareCases) => {\n this.shareCases = shareCases;\n this.caseCount = this.shareCases.length;\n });\n }\n\n public onUnselect(sharedCase: SharedCase): void {\n this.unselect.emit(sharedCase);\n this.caseCount = this.shareCases.length;\n }\n\n public onSynchronizeStore(event: any): void {\n this.synchronizeStore.emit(event);\n }\n\n public trackByCaseId(sharedCase: SharedCase): string {\n return sharedCase.caseId;\n }\n}\n","<ng-container *ngIf=\"!toConfirm\">\n <xuilib-selected-case\n *ngFor=\"let sharedCase of (shareCases$ | async); trackBy: trackByCaseId\"\n [sharedCase]=\"sharedCase\"\n [caseCount]=\"caseCount\"\n [removeUserFromCaseToggleOn]=\"removeUserFromCaseToggleOn\"\n (unselect)=\"onUnselect($event)\"\n (synchronizeStore)=\"onSynchronizeStore($event)\"\n >\n </xuilib-selected-case>\n</ng-container>\n\n<ng-container *ngIf=\"toConfirm\">\n <xuilib-selected-case-confirm\n *ngFor=\"let sharedCase of (shareCases$ | async); trackBy: trackByCaseId\"\n [sharedCase]=\"sharedCase\"\n [changeLink]=\"changeLink\">\n </xuilib-selected-case-confirm>\n</ng-container>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'xuilib-service-message',\n templateUrl: './service-message.component.html'\n})\nexport class ServiceMessageComponent {\n @Input() public message: string;\n @Input() public key: string;\n @Output() public hideMessage = new EventEmitter<string>();\n constructor() { }\n\n public onHideMessageEvent(key: string) {\n this.hideMessage.emit(key);\n }\n}\n","<div class=\"hmcts-banner hmcts-banner--warning\">\n\n <svg class=\"hmcts-banner__icon\" fill=\"currentColor\" role=\"presentation\" focusable=\"false\"\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 25 25\" height=\"25\" width=\"25\">\n <path d=\"M13.6,15.4h-2.3v-4.5h2.3V15.4z M13.6,19.8h-2.3v-2.2h2.3V19.8z M0,23.2h25L12.5,2L0,23.2z\" />\n </svg>\n\n <div class=\"hmcts-banner__message\">\n <span class=\"hmcts-banner__assistive\">Warning</span>\n <h2 class=\"govuk-heading-s\" [innerHTML]=\"message\"></h2>\n <a [routerLink]=\"[]\" class=\"govuk-link--no-visited-state\" (click)=\"onHideMessageEvent(key)\">Hide message</a>\n </div>\n\n</div>","import { Component, Input, OnInit } from '@angular/core';\nimport { FeatureToggleService } from '../../services/feature-toggle/feature-toggle.service';\n\nexport interface ServiceMessages {\n [key: string]: string;\n}\n\n@Component({\n selector: 'xuilib-service-messages',\n templateUrl: './service-messages.component.html'\n})\nexport class ServiceMessagesComponent implements OnInit {\n public hiddenBanners: string[];\n public filteredMessages = new Map<string, string>();\n\n @Input() public userRoles: string[];\n @Input() public featureToggleKey: string;\n @Input() public serviceMessageCookie: string;\n\n constructor(private readonly featureToggleService: FeatureToggleService) { }\n\n public ngOnInit() {\n this.getServiceMessages();\n }\n\n public getServiceMessages(): void {\n this.featureToggleService.getValue<ServiceMessages>(this.featureToggleKey, null)\n .subscribe(messages => {\n if (!!messages) {\n this.createFilteredMessages(messages);\n }\n });\n }\n\n private createFilteredMessages(messages: ServiceMessages): void {\n this.hiddenBanners = JSON.parse(window.sessionStorage.getItem(this.serviceMessageCookie)) || [];\n Object.keys(messages).forEach(key => {\n const regEx = new RegExp(key);\n if (this.userRoles.some(e => regEx.test(e)) && this.hiddenBanners.indexOf(key) === -1) {\n this.filteredMessages.set(key, messages[key]);\n }\n });\n }\n\n public hideMessage(key: string): void {\n this.filteredMessages.delete(key);\n this.hiddenBanners.push(key);\n window.sessionStorage.setItem(this.serviceMessageCookie, JSON.stringify(this.hiddenBanners));\n }\n}\n","<div *ngIf=\"filteredMessages?.size > 0\" class=\"govuk-width-container govuk-!-margin-top-6\">\n <xuilib-service-message *ngFor=\"let message of filteredMessages | keyvalue\" [key]=\"message.key\"\n [message]=\"message.value\" (hideMessage)=\"hideMessage($event)\"></xuilib-service-message>\n</div>","import { Component, Input, OnInit } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { SharedCase } from '../../models/case-share.model';\nimport { CaseSharingStateService } from '../../services/case-sharing-state/case-sharing-state.service';\n\n@Component({\n selector: 'xuilib-share-case-confirm',\n templateUrl: './share-case-confirm.component.html',\n styleUrls: ['./share-case-confirm.component.scss']\n})\nexport class ShareCaseConfirmComponent implements OnInit {\n\n public shareCases: SharedCase[] = []; // cases selected for sharing\n\n @Input() public shareCases$: Observable<SharedCase[]>;\n @Input() public changeLink: string = '';\n @Input() public completeLink: string = '';\n\n public state$: Observable<SharedCase[]>;\n\n constructor(private readonly stateService: CaseSharingStateService) { }\n\n public ngOnInit() {\n this.shareCases$.subscribe(shareCases => {\n this.shareCases = shareCases;\n this.stateService.setCases(shareCases);\n });\n this.shareCases$ = this.stateService.state;\n }\n\n}\n","<div id=\"casesToConfirm\">\n <h3 class=\"govuk-heading-l\">Cases</h3>\n <div *ngIf=\"shareCases && shareCases.length > 0\" id=\"summarySections\">\n <xuilib-selected-case-list\n [shareCases$]=\"shareCases$\"\n [toConfirm]=\"true\"\n [changeLink]=\"changeLink\">\n </xuilib-selected-case-list>\n </div>\n\n <div id=\"noCaseDisplay\" *ngIf=\"shareCases && shareCases.length === 0\" class=\"govuk-hint\">\n No cases to display.\n </div>\n\n</div>\n\n<div id=\"share-case-nav\" *ngIf=\"shareCases && shareCases.length > 0\">\n <button class=\"govuk-button\" title=\"Confirm\" [routerLink]=\"completeLink\">Confirm</button>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { MatLegacyAutocompleteSelectedEvent as MatAutocompleteSelectedEvent } from '@angular/material/legacy-autocomplete';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { UserDetails } from '../../models/user-details.model';\n\n@Component({\n selector: 'xuilib-user-select',\n templateUrl: './user-select.component.html',\n styleUrls: ['./user-select.component.scss']\n})\nexport class UserSelectComponent implements OnInit {\n\n @Input() public users: UserDetails[];\n\n @Output() public selected = new EventEmitter<UserDetails>();\n\n public filteredUsers: Observable<UserDetails[]>;\n\n public control = new UntypedFormControl();\n\n constructor() { }\n\n public ngOnInit() {\n this.filteredUsers = this.control.valueChanges.pipe(\n map(value => typeof value === typeof 'string' ? this.filterUsers(value) : this.users)\n );\n this.selected.emit(null);\n }\n\n public displayValue(user: UserDetails): string {\n return user ? `${user.firstName} ${user.lastName} - ${user.email}` : '';\n }\n\n public onSelected(e: MatAutocompleteSelectedEvent) {\n this.selected.emit(e.option.value);\n }\n\n public clear() {\n this.control.setValue(null);\n }\n\n public onUserChange(newUserValue: UserDetails) {\n if (!newUserValue || !newUserValue.email) {\n this.selected.emit(null);\n }\n }\n\n private filterUsers(value: string): UserDetails[] {\n if (value) {\n value = value.toLowerCase();\n return this.users.filter(user => {\n if (user.firstName.toLowerCase().includes(value)) {\n return true;\n }\n if (user.lastName.toLowerCase().includes(value)) {\n return true;\n }\n if (user.email.toLowerCase().includes(value)) {\n return true;\n }\n return false;\n });\n }\n return [];\n }\n}\n","<input class=\"govuk-input\" type=\"text\" [matAutocomplete]=\"dropdown\" [formControl]=\"control\" (ngModelChange)=\"onUserChange($event)\" aria-labelledby=\"add-user-hint\">\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 }} {{ user.lastName }} - {{ user.email }}\n </mat-option>\n</mat-autocomplete>","import {DOCUMENT} from '@angular/common';\nimport {AfterViewInit, Component, Inject, Input, OnChanges, SimpleChanges} from '@angular/core';\n/*\n Error Summary component\n State Less component\n @property errorMessages that is array of messages.\n Component is also responsible for scrolling. Up and Down the page when user click on links\n*/\n@Component({\n selector: 'xuilib-hmcts-error-summary',\n templateUrl: './hmcts-error-summary.component.html'\n})\nexport class HmctsErrorSummaryComponent implements AfterViewInit, OnChanges {\n\n @Input() public set errorMessages(value: any) {\n this.messages = value;\n }\n\n @Input() public header: string;\n @Input() public showWarningMessage: boolean;\n\n public messages: object[];\n\n constructor(@Inject(DOCUMENT) private readonly document: any) { }\n\n public ngAfterViewInit(): void {\n this.scrollTo('errorSummary');\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes.errorMessages) {\n this.scrollTo('errorSummary');\n }\n }\n\n public scrollTo(selector: any) {\n if (this.document.querySelector(`#${selector}`)) {\n const el = this.document.querySelector(`#${selector}`);\n\n el.focus();\n }\n }\n\n public hasElement(selector: any) {\n return this.document.querySelector(`#${selector}`);\n }\n\n}\n","<!-- div *ngIf=\"!showWarningMessage && messages && messages.length > 0\" id=\"errorSummary\" class=\"govuk-error-summary\" aria-labelledby=\"error-summary-title\" role=\"alert\" tabindex=\"-1\"\n data-module=\"error-summary\">\n <h2 class=\"govuk-error-summary__title\" id=\"error-summary-title\">\n {{header}}\n </h2>\n <div class=\"govuk-error-summary__body\">\n <ul class=\"govuk-list govuk-error-summary__list\">\n <li *ngFor=\"let message of messages\">\n <a (click)=\"scrollTo(message['id'])\" [routerLink]=\"[][]\" [fragment]=\"message['id']\"\n *ngIf=\"hasElement(message['id'])\">{{message['message']}}</a>\n <span *ngIf=\"!hasElement(message['id'])\">{{message['message']}}</span>\n </li>\n </ul>\n </div>\n</div>\n<div *ngIf=\"showWarningMessage\" class=\"hmcts-banner hmcts-banner--warning\">\n <svg class=\"hmcts-banner__icon\" fill=\"currentColor\" role=\"presentation\" focusable=\"false\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 25 25\" height=\"25\" width=\"25\">\n <path d=\"M13.6,15.4h-2.3v-4.5h2.3V15.4z M13.6,19.8h-2.3v-2.2h2.3V19.8z M0,23.2h25L12.5,2L0,23.2z\" /></svg>\n <div class=\"hmcts-banner__message\">\n <span class=\"hmcts-banner__assistive\">Warning</span>\n <p class=\"govuk-body\" *ngFor=\"let message of messages\">{{ message['message'] }}</p>\n </div>\n</div -->\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { ErrorMessagesModel, GovUiConfigModel } from '../../gov-ui/models';\nimport { SharedCase, SharedCaseErrorMessages } from '../../models/case-share.model';\nimport { UserDetails } from '../../models/user-details.model';\nimport { CaseSharingStateService } from '../../services/case-sharing-state/case-sharing-state.service';\nimport { UserSelectComponent } from '../user-select/user-select.component';\n\n@Component({\n selector: 'xuilib-share-case',\n templateUrl: './share-case.component.html',\n styleUrls: ['./share-case.component.scss']\n})\nexport class ShareCaseComponent implements OnInit {\n\n public shareCases: SharedCase[] = []; // cases selected for sharing\n public selectedCasesErrorMessageConfig: GovUiConfigModel;\n public continueAllowed = false;\n public assignedUsers: UserDetails[];\n public selectedUserToRemove: UserDetails = null;\n\n @Input() public removeUserFromCaseToggleOn: boolean = false;\n\n @Input() public shareCases$: Observable<SharedCase[]>;\n @Input() public users: UserDetails[] = []; // users of this organisation the cases can be shared with\n\n @Input() public confirmLink: string = '';\n @Input() public cancelLink: string = '';\n @Input() public addUserLabel: string;\n @Input() public showRemoveUsers: boolean = false;\n @Input() public fnTitle: string = '';\n @Input() public title: string = '';\n\n @Output() public unselect = new EventEmitter<SharedCase>();\n @Output() public synchronizeStore = new EventEmitter<any>();\n\n private selectedUser: UserDetails;\n\n @ViewChild(UserSelectComponent, { static: true })\n private readonly userSelect: UserSelectComponent;\n\n public validationErrors: { id: string, message: string }[] = [];\n public shareCaseErrorMessage: ErrorMessagesModel;\n\n constructor(private readonly stateService: CaseSharingStateService,\n private readonly router: Router) { }\n\n public ngOnInit() {\n this.shareCases$\n .pipe(tap(sharedCases => {\n // Update the list of users assigned to at least one case\n this.getAssignedUsers(sharedCases.filter(sharedCase => sharedCase.sharedWith && sharedCase.sharedWith.length > 0));\n }))\n .subscribe(shareCases => {\n this.shareCases = shareCases;\n this.stateService.setCases(shareCases);\n // Set the config to be used by the xuilib-gov-uk-error-message component, in particular the element ID to\n // which the error message is associated\n if (shareCases) {\n this.selectedCasesErrorMessageConfig = {\n id: shareCases.length > 0 ? 'cases' : 'noCaseDisplay'\n };\n }\n });\n this.shareCases$ = this.stateService.state;\n this.shareCaseErrorMessage = { isInvalid: false, messages: [] };\n }\n\n public onUnselect(c: SharedCase): void {\n this.validationErrors = [];\n if (this.stateService.getCases().length === 1) {\n this.validationErrors.push({ id: 'cases', message: SharedCaseErrorMessages.OneCaseMustBeSelected });\n this.shareCaseErrorMessage = { isInvalid: true, messages: [SharedCaseErrorMessages.OneCaseMustBeSelected] };\n window.scrollTo({ top: 0, left: 0, behavior: 'smooth' });\n } else {\n this.unselect.emit(c);\n this.stateService.removeCase(c.caseId);\n }\n }\n\n public onSynchronizeStore(event: any): void {\n this.synchronizeStore.emit(event);\n }\n\n public onSelectedUser(user: UserDetails) {\n this.selectedUser = user;\n }\n\n public addUser() {\n const newSharedCases = this.stateService.requestShare(this.selectedUser);\n this.selectedUser = null;\n if (this.userSelect) { this.userSelect.clear(); }\n this.synchronizeStore.emit(newSharedCases);\n // Update the list of assigned users (which includes pending users)\n this.getAssignedUsers(newSharedCases);\n }\n\n public removeUser() {\n if (this.selectedUserToRemove) {\n const newSharedCases = this.stateService.requestUnshare(this.selectedUserToRemove);\n this.synchronizeStore.emit(newSharedCases);\n }\n }\n\n public isDisabledAdd() {\n return this.selectedUser === null || this.shareCases.length === 0;\n }\n\n /**\n * Function originally used to set disabled state of \"Continue\" button, now called by the button click handler to\n * control whether navigation to the confirmation page is allowed. It is prevented if no changes have been made\n */\n public setContinueAllowed(): void {\n // Always start with continueAllowed = false. This covers the scenario where a user might add someone for sharing\n // a case (so, continueAllowed = true), then removes the same user before trying to continue. This would\n // erroneously leave continueAllowed as true\n this.continueAllowed = false;\n this.shareCases$.subscribe(shareCases => {\n for (const caseState of shareCases) {\n if (caseState.pendingShares && caseState.pendingShares.length > 0) {\n this.continueAllowed = true;\n break;\n }\n if (caseState.pendingUnshares && caseState.pendingUnshares.length > 0) {\n this.continueAllowed = true;\n break;\n }\n }\n });\n }\n\n public onDeselect(sharedCase: SharedCase): void {\n if (sharedCase !== null) {\n const updated = [];\n for (const element of this.shareCases) {\n if (element.caseId !== sharedCase.caseId) {\n updated.push(element);\n }\n }\n this.shareCases = updated;\n }\n this.stateService.setCases(this.shareCases);\n }\n\n public onContinue(): void {\n this.setContinueAllowed();\n // If continuation is not allowed, set an error message\n if (!this.continueAllowed) {\n this.validationErrors = [];\n this.validationErrors.push({ id: 'cases', message: SharedCaseErrorMessages.NoChangesRequested });\n this.shareCaseErrorMessage = { isInvalid: true, messages: [SharedCaseErrorMessages.NoChangesRequested] };\n window.scrollTo({ top: 0, left: 0, behavior: 'smooth' });\n }\n // Navigate to confirmation page only if allowed to continue\n if (this.continueAllowed) {\n // Check that no case is left unassigned; a user can be removed only if there is another current user, or if at\n // least one user is to be added. Prevent navigation to confirmation page if there is at least one case left in\n // an unassigned state\n if (this.hasCasesLeftUnassigned(this.shareCases)) {\n this.validationErrors = [];\n this.validationErrors.push({ id: 'cases', message: SharedCaseErrorMessages.OnePersonMustBeAssigned });\n this.shareCaseErrorMessage = { isInvalid: true, messages: [SharedCaseErrorMessages.OnePersonMustBeAssigned] };\n window.scrollTo({ top: 0, left: 0, behavior: 'smooth' });\n } else {\n this.router.navigate([this.confirmLink]);\n }\n }\n }\n\n /**\n * Gets a unique list of all users that have been assigned, or are pending assigment to, at least one case\n * @param sharedCases The list of shared cases from which to get users these are shared with, or are to be shared with\n */\n public getAssignedUsers(sharedCases: SharedCase[]): void {\n const users: UserDetails[] = [];\n sharedCases.forEach(sharedCase => {\n if (sharedCase.sharedWith) {\n sharedCase.sharedWith.forEach(user => {\n if (!users.some(existingUser => user.idamId === existingUser.idamId)) {\n users.push(user);\n }\n });\n }\n if (sharedCase.pendingShares) {\n sharedCase.pendingShares.forEach(user => {\n if (!users.some(existingUser => user.idamId === existingUser.idamId)) {\n users.push(user);\n }\n });\n }\n });\n this.assignedUsers = users;\n }\n\n /**\n * Checks if any shared cases have been left unassigned. This occurs if a shared case has a number of pending\n * unshares equal to the number of current shares, and there are no pending shares.\n * @param sharedCases The array of shared cases to check\n * @returns `true` if at least one case has the condition described above; `false` otherwise\n */\n public hasCasesLeftUnassigned(sharedCases: SharedCase[]): boolean {\n return sharedCases.some(sharedCase => {\n return sharedCase.pendingUnshares && sharedCase.sharedWith &&\n sharedCase.pendingUnshares.length === sharedCase.sharedWith.length &&\n (!sharedCase.pendingShares || sharedCase.pendingShares.length === 0);\n });\n }\n}\n","<xuilib-hmcts-error-summary\n [errorMessages]=\"validationErrors\"\n [header]=\"'There is a problem'\"\n></xuilib-hmcts-error-summary>\n<h1 *ngIf=\"title\" class=\"govuk-heading-xl govuk-!-margin-top-2\">\n <span *ngIf=\"fnTitle\" class=\"govuk-caption-xl\">{{fnTitle}}</span>\n {{title}}\n</h1>\n<div id=\"add-user\">\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label govuk-!-font-weight-bold\" for=\"add-user-input\">{{addUserLabel}}</label>\n <span id=\"add-user-hint\" class=\"govuk-hint\">\n Search by name or email address. You can share access with as many people as you need.\n </span>\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-two-thirds\">\n <xuilib-user-select\n id=\"add-user-input\"\n aria-describedby=\"add-user-hint\"\n [users]=\"users\"\n (selected)=\"onSelectedUser($event)\">\n </xuilib-user-select>\n </div>\n <div class=\"govuk-grid-column-one-thirds\">\n <button id=\"btn-add-user\" (click)=\"addUser()\" class=\"govuk-button govuk-button--secondary\" [disabled]=\"isDisabledAdd()\" title=\"Add user to selected cases\">Add</button>\n </div>\n </div>\n <details id=\"add-user-help\" class=\"govuk-details\" data-module=\"govuk-details\">\n <summary class=\"govuk-details__summary\">\n <span id=\"content-why-can-not-find-email\" class=\"govuk-details__summary-text\">\n Can't find an email address?\n </span>\n </summary>\n <div id=\"content-reason-can-not-find-email\" class=\"govuk-details__text\">\n If you can't find your colleague's email address, they will need to complete their registration. Contact your\n administrator for help.\n </div>\n </details>\n </div>\n <div class=\"govuk-form-group\" *ngIf=\"showRemoveUsers\">\n <label class=\"govuk-label govuk-!-font-weight-bold\" for=\"remove-user-input\">Remove a person from all cases</label>\n <span id=\"remove-user-hint\" class=\"govuk-hint\">\n Select a person to remove them from all selected cases.\n </span>\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-two-thirds\">\n <select [(ngModel)]=\"selectedUserToRemove\" class=\"govuk-select\" id=\"remove-user-input\" aria-describedby=\"remove-user-hint\">\n <option [ngValue]=\"null\" selected>Select a person</option>\n <option *ngFor=\"let user of assignedUsers\" [ngValue]=\"user\">{{user.firstName}} {{user.lastName}} - {{user.email}}</option>\n </select>\n </div>\n <div class=\"govuk-grid-column-one-thirds\">\n <button id=\"btn-remove-user\" (click)=\"removeUser()\" class=\"govuk-button govuk-button--secondary\" title=\"Remove user from selected cases\">Remove</button>\n </div>\n </div>\n </div>\n</div>\n\n<div id=\"cases\" [ngClass]=\"{'govuk-form-group--error': shareCaseErrorMessage.messages && shareCaseErrorMessage.messages.length > 0}\">\n <h3 id=\"title-selected-cases\" class=\"govuk-heading-m\">Selected cases</h3>\n <xuilib-gov-uk-error-message [config]=\"selectedCasesErrorMessageConfig\" [errorMessage]=\"shareCaseErrorMessage\"></xuilib-gov-uk-error-message>\n <div *ngIf=\"shareCases && shareCases.length > 0\" class=\"govuk-accordion\" data-module=\"govuk-accordion\" id=\"accordion-with-summary-sections\">\n <xuilib-selected-case-list\n [shareCases$]=\"shareCases$\"\n [removeUserFromCaseToggleOn]=\"removeUserFromCaseToggleOn\"\n (unselect)=\"onUnselect($event)\"\n (synchronizeStore)=\"onSynchronizeStore($event)\"\n >\n </xuilib-selected-case-list>\n </div>\n\n <div id=\"noCaseDisplay\" *ngIf=\"shareCases && shareCases.length === 0\" class=\"govuk-hint\"\n [ngClass]=\"{'govuk-form-group--error': shareCaseErrorMessage.messages && shareCaseErrorMessage.messages.length > 0}\">\n No cases to display.\n </div>\n\n</div>\n\n<div id=\"share-case-nav\" class=\"govuk-button-group\">\n <button id=\"btn-continue\" class=\"govuk-button\" data-module=\"govuk-button\" (click)=\"onContinue()\" title=\"Continue\">Continue</button>\n <button id=\"btn-cancel\" class=\"govuk-button govuk-button--secondary\" data-module=\"govuk-button\" title=\"Cancel\" [routerLink]=\"cancelLink\">Cancel</button>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport interface TabItem {\n text: string;\n}\n\n@Component({\n selector: 'xuilib-tab',\n templateUrl: './tab.component.html'\n })\n\nexport class TabComponent {\n @Input() public tabItems: any [];\n @Output() public tabChange = new EventEmitter<void>();\n constructor() {}\n\n public tabChanged(event: any): void {\n this.tabChange.emit(event);\n }\n}\n","<mat-tab-group animationDuration=\"0ms\" (selectedTabChange)=\"tabChanged($event)\">\n <mat-tab *ngFor=\"let tabItem of tabItems; let last = last;\" [label]=\"tabItem.text\">\n </mat-tab>\n</mat-tab-group>","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'xuilib-tc-confirm',\n templateUrl: './tc-confirm.component.html',\n styleUrls: ['./tc-confirm.component.scss']\n})\nexport class TcConfirmComponent {\n\n @Input() public buttonText: string;\n @Output() public confirm = new EventEmitter<void>();\n\n constructor() {}\n\n public onClick(): void {\n this.confirm.emit();\n }\n\n}\n","<div class=\"govuk-width-container\">\n <main role=\"main\" class=\"govuk-main-wrapper\">\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-two-thirds\">\n <div class=\"column-two-thirds\">\n <h1 class=\"govuk-heading-xl\">Using this service</h1>\n <h2 class=\"govuk-heading-m\">Terms and conditions</h2>\n <p>We've recently updated the\n <a\n routerLink=\"/terms-and-conditions\"\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >terms and conditions</a\n >.\n </p>\n <p>You must review and accept them.\n </p>\n <p>\n <button class=\"govuk-button\" (click)=\"onClick()\">\n {{ buttonText }}\n </button>\n </p>\n </div>\n </div>\n </div>\n <div class=\"govuk-grid-column-one-third\"></div>\n </main>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'xuilib-tc-display-html',\n templateUrl: './tc-display-html.component.html',\n styleUrls: ['./tc-display-html.component.scss']\n})\nexport class TcDisplayHtmlComponent {\n\n constructor() { }\n\n}\n","<ng-content></ng-content>","import { Component } from '@angular/core';\n\n@Component({\n selector: 'xuilib-tc-display-plain',\n templateUrl: './tc-display-plain.component.html',\n styleUrls: ['./tc-display-plain.component.scss']\n})\nexport class TcDisplayPlainComponent {\n\n constructor() { }\n\n}\n","<ng-content></ng-content>","import { Component, Input } from '@angular/core';\nimport { TCDocument } from '../../models';\n\n@Component({\n selector: 'xuilib-terms-and-conditions',\n templateUrl: './terms-and-conditions.component.html',\n styleUrls: ['./terms-and-conditions.component.scss']\n})\nexport class TermsAndConditionsComponent {\n\n @Input() public document: TCDocument;\n\n constructor() { }\n\n}\n","<ng-container [ngSwitch]=\"document.mimeType\">\n <xuilib-tc-display-html *ngSwitchCase=\"'text/html'\">\n <div [innerHTML]=\"document.content\"></div>\n </xuilib-tc-display-html>\n <xuilib-tc-display-plain *ngSwitchCase=\"'text/plain'\">\n {{ document.content }}\n </xuilib-tc-display-plain>\n <div *ngSwitchDefault>\n An error occured. Please try again.\n </div>\n</ng-container>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { User } from '../../models';\n\n@Component({\n selector: 'xuilib-user-details',\n styleUrls: ['./user-details.component.scss'],\n templateUrl: './user-details.component.html'\n})\nexport class UserDetailsComponent {\n @Input() public user: User;\n @Input() public editPermissionRouterLink: string;\n @Input() public warningTitle: string;\n @Input() public showEditLink: boolean = false;\n @Input() public showHelpLink: boolean = false;\n @Input() public suspendHelpLink: string;\n @Output() public suspendUserEvent = new EventEmitter<User>();\n @Input() public showSuspendUserButton = false;\n @Output() public reinvite = new EventEmitter<User>();\n\n public reinviteClick(user: User): void {\n this.reinvite.emit(user);\n }\n\n public suspendUser(suspendUser: User): void {\n this.suspendUserEvent.emit(suspendUser);\n }\n\n public userHasRole(theRole: string): boolean {\n if (this.user && this.user.roles) {\n return this.user.roles.includes(theRole);\n }\n return false;\n }\n}\n","<div class=\"govuk-warning-text\" *ngIf=\"warningTitle && warningTitle !== ''\">\n<span class=\"govuk-warning-text__icon\">!</span>\n<strong class=\"govuk-warning-text__text\">\n {{ warningTitle }}\n</strong>\n</div>\n<table class=\"govuk-table\" *ngIf=\"user\">\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\">\n <th class=\"govuk-table__header\" scope=\"row\">Name</th>\n <td class=\"govuk-table__cell\">{{user.fullName}}</td>\n <td class=\"govuk-table__cell\"></td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th class=\"govuk-table__header\" scope=\"row\">Email address</th>\n <td class=\"govuk-table__cell\">{{user.email}}</td>\n <td class=\"govuk-table__cell\"></td>\n </tr>\n <tr class=\"govuk-table__row\" *ngIf=\"!user.resendInvite\">\n <th class=\"govuk-table__header\" scope=\"row\">Permissions</th>\n <td class=\"govuk-table__cell\">\n <div *ngIf=\"user.manageOrganisations === 'Yes'\">Manage organisations</div>\n <div *ngIf=\"user.manageUsers === 'Yes'\">Manage users</div>\n <div *ngIf=\"user.manageCases === 'Yes'\">Manage cases</div>\n <div *ngIf=\"userHasRole('pui-caa')\">Case access administrator</div>\n <div *ngIf=\"userHasRole('pui-finance-manager')\">Manage fee accounts</div>\n </td>\n <td class=\"govuk-table__cell\"><a *ngIf=\"editPermissionRouterLink && showEditLink\" [routerLink]=\"editPermissionRouterLink\">Change <span class=\"govuk-visually-hidden\">roles</span></a></td>\n </tr>\n </tbody>\n</table>\n<button *ngIf=\"showSuspendUserButton\" class=\"govuk-button govuk-button--warning\" (click)=\"suspendUser(user)\">\n Suspend account\n</button>\n<div *ngIf=\"user && user.resendInvite\">\n <div class=\"govuk-inset-text\">\n <p>This user has already been invited but has not activated their account.</p>\n <p>If you resend an invitation, they'll receive an email from HM Courts and Tribunals to finish setting up their account.</p>\n <p>You can't invite the same user more than once an hour.</p>\n </div>\n <a role=\"button\" draggable=\"false\" class=\"govuk-button\" (click)=\"reinviteClick(user)\" id=\"resend-invite-button\">\n Resend invitation\n </a>\n</div>\n<p class=\"govuk-body\" *ngIf=\"showHelpLink && suspendHelpLink\"><a [routerLink]=\"suspendHelpLink\" target=\"_blank\">Get help</a> to reactivate this account.</p>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'xuilib-hmcts-pagination',\n templateUrl: './hmcts-pagination.component.html',\n styleUrls: ['./hmcts-pagination.component.scss']\n})\nexport class HmctsPaginationComponent {\n\n @Input() public id: string;\n @Input() public maxSize: number = 7;\n @Input() public pageSize: number = 10;\n @Input() public showPageNumbers: boolean = true;\n @Input() public showResultCount: boolean = true;\n @Output() public pageChange: EventEmitter<number> = new EventEmitter<number>();\n @Output() public pageBoundsCorrection: EventEmitter<number> = new EventEmitter<number>();\n\n}\n","<!-- pagination-template #p=\"paginationApi\" [id]=\"id\" [maxSize]=\"maxSize\" (pageChange)=\"pageChange.emit($event)\"\n (pageBoundsCorrection)=\"pageBoundsCorrection.emit($event)\">\n\n <nav class=\"hmcts-pagination\" id=\"pagination-label\">\n <p class=\"govuk-visually-hidden\" aria-labelledby=\"pagination-label\">Pagination navigation</p>\n <ul class=\"hmcts-pagination__list\" *ngIf=\"!(p.pages.length <= 1)\">\n\n <li class=\"hmcts-pagination__item hmcts-pagination__item--prev\" [class.disabled]=\"p.isFirstPage()\">\n <a [routerLink]=\"[][]\" class=\"hmcts-pagination__link\" *ngIf=\"1 < p.getCurrent()\" (keyup.enter)=\"p.previous()\"\n (click)=\"p.previous()\">Previous <span class=\"govuk-visually-hidden\">set of pages</span></a>\n </li>\n\n <ng-container *ngIf=\"showPageNumbers\">\n <li class=\"hmcts-pagination__item\" [class.hmcts-pagination__item--active]=\"p.getCurrent() === page.value\"\n [class.hmcts-pagination__item--dots]=\"page.label === '...'\" *ngFor=\"let page of p.pages\">\n <a class=\"hmcts-pagination__link\" [routerLink]=\"[][]\" (keyup.enter)=\"p.setCurrent(page.value)\"\n (click)=\"p.setCurrent(page.value)\" *ngIf=\"p.getCurrent() !== page.value\">\n <span class=\"govuk-visually-hidden\">page </span>\n <span>{{ (page.label === '...') ? page.label : (page.label | number:'') }}</span>\n </a>\n <ng-container *ngIf=\"p.getCurrent() === page.value\">\n <span>{{ (page.label === '...') ? page.label : (page.label | number:'') }}</span>\n </ng-container>\n </li>\n </ng-container>\n\n <li class=\"hmcts-pagination__item hmcts-pagination__item--next\" [class.disabled]=\"p.isLastPage()\">\n <a [routerLink]=\"[][]\" class=\"hmcts-pagination__link\" *ngIf=\"!p.isLastPage()\" (keyup.enter)=\"p.next()\"\n (click)=\"p.next()\">Next<span class=\"govuk-visually-hidden\"> page</span></a>\n </li>\n\n </ul>\n <p class=\"hmcts-pagination__results\" *ngIf=\"showResultCount\">Showing <b>{{(p.getCurrent() * pageSize) - pageSize + 1}}</b>\n to <b>{{ p.getCurrent() * pageSize > p.getTotalItems() ? p.getTotalItems() : p.getCurrent() *\n pageSize}}</b> of <b>{{p.getTotalItems()}}</b> results</p>\n </nav>\n\n</pagination-template -->\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Pagination } from '../../models';\nimport { User } from '../../models/user.model';\n\n@Component({\n selector: 'xuilib-user-list',\n styleUrls: ['./user-list.component.scss'],\n templateUrl: './user-list.component.html'\n})\nexport class UserListComponent implements OnInit {\n @Input() public users: User[] = [];\n @Input() public currentPageNumber?: number;\n @Input() public pageTotalSize?: any;\n @Output() public userClick = new EventEmitter<User>();\n @Output() public pageChange = new EventEmitter();\n\n public pagination: Pagination;\n\n public ngOnInit() {\n this.pagination = { itemsPerPage: 50, currentPage: this.currentPageNumber, totalItems: this.pageTotalSize};\n }\n\n public onUserClick(user: User) {\n this.userClick.emit(user);\n }\n\n public emitPageClickEvent(pageNumber: any) {\n this.currentPageNumber = pageNumber;\n this.pageChange.emit(pageNumber);\n }\n}\n","<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</th>\n <th class=\"govuk-table__header\" scope=\"col\">Email</th>\n <th class=\"govuk-table__header\" scope=\"col\">Status</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","import { Component, EventEmitter, Inject, Input, OnInit, Output } from '@angular/core';\nimport { CookieService } from '../../services/cookie/cookie.service';\nimport { windowToken } from '../../window';\n\n@Component({\n selector: 'xuilib-cookie-banner',\n templateUrl: './cookie-banner.component.html'\n})\n\nexport class CookieBannerComponent implements OnInit {\n @Input() public identifier: string;\n @Input() public appName: string;\n @Output() public rejectionNotifier = new EventEmitter<any>();\n @Output() public acceptanceNotifier = new EventEmitter<any>();\n\n public isCookieBannerVisible: boolean = false;\n private readonly window: Window;\n\n constructor(\n private readonly cookieService: CookieService,\n @Inject(windowToken) window: any,\n ) {\n this.window = window as Window;\n }\n\n public ngOnInit(): void {\n this.setState();\n }\n\n public acceptCookie(): void {\n this.cookieService.setCookie(this.identifier, 'true', this.getExpiryDate());\n this.setState(true);\n }\n\n public rejectCookie(): void {\n this.cookieService.setCookie(this.identifier, 'false', this.getExpiryDate());\n this.setState(true);\n }\n\n public setState(reload: boolean = false): void {\n this.isCookieBannerVisible = !this.cookieService.checkCookie(this.identifier);\n\n if (this.areCookiesAccepted()) {\n this.notifyAcceptance();\n } else {\n this.notifyRejection();\n }\n\n if (reload) { // reload if any of the buttons are pressed\n this.window.location.reload();\n }\n }\n\n public areCookiesAccepted(): boolean {\n return this.cookieService.checkCookie(this.identifier) && this.cookieService.getCookie(this.identifier) === 'true';\n }\n\n public notifyRejection(): void {\n this.rejectionNotifier.emit();\n }\n\n public notifyAcceptance(): void {\n this.acceptanceNotifier.emit();\n }\n\n private getExpiryDate(): string {\n const now = new Date();\n const time = now.getTime();\n const expireTime = time + 31536000000; // in 365 days = 3600 * 1000 * 24 * 365\n now.setTime(expireTime);\n return now.toUTCString();\n }\n\n}\n","<div class=\"govuk-cookie-banner \" role=\"region\" attr.aria-label=\"'Cookies on {{appName}}'\" *ngIf=\"isCookieBannerVisible\">\n <div class=\"govuk-cookie-banner__message govuk-width-container\">\n\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-two-thirds\">\n <h2 class=\"govuk-cookie-banner__heading govuk-heading-m\">Cookies on {{appName}}</h2>\n\n <div class=\"govuk-cookie-banner__content\">\n <p>We use some essential cookies to make this service work.</p>\n <p>We’d also like to use analytics cookies so we can understand how you use the service and make improvements.</p>\n </div>\n </div>\n </div>\n\n <div class=\"govuk-button-group\">\n <button value=\"accept\" type=\"button\" name=\"cookies\" class=\"govuk-button\" data-module=\"govuk-button\" (click)=\"acceptCookie()\">\n Accept analytics cookies\n </button>\n <button value=\"reject\" type=\"button\" name=\"cookies\" class=\"govuk-button\" data-module=\"govuk-button\" (click)=\"rejectCookie()\">\n Reject analytics cookies\n </button>\n <a class=\"govuk-link\" routerLink=\"/cookies\">View cookies</a>\n </div>\n </div>\n</div>","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'xuilib-pagination',\n templateUrl: './pagination.component.html',\n styleUrls: ['./pagination.component.scss']\n})\nexport class PaginationComponent {\n\n @Input() public moreItems: boolean;\n @Input() public firstRecord: number;\n @Output() public previousPage: EventEmitter<any> = new EventEmitter();\n @Output() public nextPage: EventEmitter<any> = new EventEmitter();\n\n constructor() { }\n\n public onPrevious(): void {\n this.previousPage.emit(null);\n }\n\n public onNext(): void {\n this.nextPage.emit(null);\n }\n}\n","<nav class=\"hmcts-pagination\" id=\"pagination-label\">\n\n <p class=\"govuk-visually-hidden\" aria-labelledby=\"pagination-label\">Pagination navigation</p>\n\n <ul class=\"hmcts-pagination__list\">\n <li class=\"hmcts-pagination__item hmcts-pagination__item--prev\">\n <a *ngIf=\"firstRecord > 1; else noPrevious\" class=\"hmcts-pagination__link\" (click)=\"onPrevious()\" href=\"javascript:void(0)\">\n Previous page\n </a>\n <ng-template #noPrevious>\n <span class=\"hmcts-pagination__link\">Previous page</span>\n </ng-template>\n </li>\n\n <li class=\"hmcts-pagination__item hmcts-pagination__item--next\">\n <a *ngIf=\"moreItems; else noNext\" class=\"hmcts-pagination__link\" (click)=\"onNext()\" href=\"javascript:void(0)\">Next page</a>\n <ng-template #noNext>\n <span class=\"hmcts-pagination__link\">Next page</span>\n </ng-template>\n </li>\n </ul>\n</nav>\n","import {AfterContentInit, Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';\nimport {AbstractControl, UntypedFormArray, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup} from '@angular/forms';\nimport {Observable, Subject} from 'rxjs';\nimport {debounceTime, mergeMap} from 'rxjs/operators';\nimport {LocationByEPIMMSModel} from '../../models/location.model';\nimport {LocationService} from '../../services/locations/location.service';\n\n@Component({\n selector: 'xuilib-search-venue',\n templateUrl: './search-venue.component.html',\n styleUrls: ['./search-venue.component.scss']\n})\nexport class SearchVenueComponent implements OnInit, AfterContentInit {\n @Input() public control: AbstractControl;\n @Input() public disabled: boolean = null;\n @Input() public locationType: string = '';\n @Input() public selectedLocations: LocationByEPIMMSModel[];\n @Input() public serviceIds: string = '';\n @Input() public submitted?: boolean = true;\n @ViewChild('inputSelectedLocation', { read: ElementRef }) public autoCompleteInputBox: ElementRef<HTMLInputElement>;\n public findLocationFormGroup: UntypedFormGroup;\n @Input() public showAutocomplete: boolean = false;\n @Input() public displayedLocations: LocationByEPIMMSModel[];\n @Output() public locationChanged = new EventEmitter<LocationByEPIMMSModel>();\n public selectedLocation: LocationByEPIMMSModel;\n private readonly minSearchCharacters = 3;\n public keyUpSubject$: Subject<string> = new Subject();\n public readyAfterContent: boolean = false;\n public searchInProgress: boolean = false;\n\n constructor(private readonly locationService: LocationService, fb: UntypedFormBuilder) {\n this.findLocationFormGroup = fb.group({\n findLocationFormControl: [null],\n locationSelectedFormControl: [null]\n });\n this.selectedLocations = [];\n }\n\n public ngAfterContentInit(): void {\n this.readyAfterContent = true;\n }\n\n public ngOnInit(): void {\n this.displayedLocations = [];\n if (this.control) {\n if (this.findLocationFormGroup && this.findLocationFormGroup.controls) {\n this.findLocationFormGroup.controls.locationSelectedFormControl = this.control;\n }\n }\n this.keyUpSubject$.pipe(debounceTime(500)).subscribe(searchValue => this.search(searchValue as string));\n }\n\n public onKeyDown(): void {\n this.locationChanged.emit();\n }\n\n public onKeyUp(event: any): void {\n this.showAutocomplete = false;\n this.keyUpSubject$.next(event.target.value);\n }\n\n public onFocus() {\n this.showAutocomplete = false;\n }\n\n public get displayedLocationsDuplicationFiltered(): LocationByEPIMMSModel[] {\n return this.displayedLocations.filter(\n location => !this.selectedLocations.map(selectedLocation => selectedLocation.epimms_id).includes(location.epimms_id) && location.court_name\n );\n }\n\n public filter(term: string): void {\n this.searchLocations(term).pipe(\n mergeMap((apiData: LocationByEPIMMSModel[]) => {\n const apiFilter = apiData.filter(\n apiLocation => !this.selectedLocations.map(selectedLocation => selectedLocation.epimms_id).includes(apiLocation.epimms_id)\n );\n this.displayedLocations = apiFilter;\n this.searchInProgress = false;\n return apiFilter;\n })\n ).subscribe(location => {\n if (term === location.court_name) {\n this.findLocationFormGroup.controls.locationSelectedFormControl.setValue(location);\n this.displayedLocations = [];\n this.locationChanged.emit(location);\n this.showAutocomplete = false;\n }\n this.searchInProgress = false;\n });\n }\n\n public onSelectionChange(selection?: LocationByEPIMMSModel): void {\n if (this.findLocationFormGroup.controls.findLocationFormControl instanceof UntypedFormArray) {\n (this.findLocationFormGroup.controls.locationSelectedFormControl as UntypedFormArray).push(new UntypedFormControl(selection.epimms_id));\n } else {\n this.findLocationFormGroup.controls.locationSelectedFormControl.setValue(selection);\n }\n this.locationChanged.emit(selection);\n }\n\n public search(currentValue: string): void {\n this.searchInProgress = true;\n this.showAutocomplete = !!currentValue && (currentValue.length >= this.minSearchCharacters);\n if (!currentValue || !currentValue.length) {\n this.findLocationFormGroup.controls.locationSelectedFormControl.markAsPristine();\n this.findLocationFormGroup.controls.locationSelectedFormControl.reset();\n }\n if (this.showAutocomplete) {\n this.filter(currentValue);\n } else {\n this.searchInProgress = false;\n }\n }\n\n public getDisplayName(selectedLocation: LocationByEPIMMSModel): string {\n return selectedLocation.court_name;\n }\n\n public searchLocations(term: string): Observable<LocationByEPIMMSModel[]> {\n return this.locationService.searchLocations(this.serviceIds, this.locationType, term);\n }\n\n public getControlCourtNameValue(): string {\n return this.findLocationFormGroup && this.findLocationFormGroup.controls && this.findLocationFormGroup.controls.locationSelectedFormControl.value ?\n (this.findLocationFormGroup.controls.locationSelectedFormControl.value as LocationByEPIMMSModel).court_name : '';\n }\n}\n","<div class=\"auto-complete-container\">\n <div *ngIf=\"readyAfterContent\" class=\"autocomplete__wrapper\">\n <input\n [formControl]=\"findLocationFormGroup.controls.findLocationFormControl\"\n [matAutocomplete]=\"autoSearchLocation\"\n (keydown)=\"onKeyDown()\"\n (keyup)=\"onKeyUp($event)\"\n (focus)=\"onFocus()\"\n class=\"autocomplete__input autocomplete__input--default search-box\"\n [attr.disabled]=\"!disabled ? null: disabled\"\n [value]=\"getControlCourtNameValue()\"\n #inputSelectedLocation>\n <mat-autocomplete class=\"mat-autocomplete-panel-extend\" autoActiveFirstOption #autoSearchLocation=\"matAutocomplete\">\n <mat-option *ngFor=\"let location of displayedLocationsDuplicationFiltered\"\n [value]=\"getDisplayName(location)\"\n (onSelectionChange)=\"onSelectionChange(location)\"\n [ngClass]=\"{'hide-autocomplete': !showAutocomplete}\">\n {{ getDisplayName(location) }}\n </mat-option>\n <mat-option *ngIf=\"!displayedLocationsDuplicationFiltered?.length && showAutocomplete && !searchInProgress\">{{ 'No results found' }}</mat-option>\n </mat-autocomplete>\n </div>\n</div>\n","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { AbstractControl, UntypedFormArray, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { Observable, Subject } from 'rxjs';\nimport { debounceTime, mergeMap } from 'rxjs/operators';\nimport { JudicialUserModel } from '../../models';\nimport { FindAPersonService } from '../../services/find-person/find-person.service';\n\n@Component({\n selector: 'xuilib-search-judicials',\n templateUrl: './search-judicials.component.html',\n styleUrls: ['./search-judicials.component.scss']\n})\nexport class SearchJudicialsComponent implements OnInit {\n public formGroup: UntypedFormGroup;\n @Input() public control: AbstractControl;\n @Input() public disabled: boolean = null;\n @Input() public selectedJudicials: JudicialUserModel[] = [];\n @Input() public submitted?: boolean = true;\n @Input() public placeholderContent: string = '';\n @Input() public showAutocomplete: boolean = false;\n @Input() public displayedJudicials: JudicialUserModel[];\n @Output() public judicialChanged = new EventEmitter<JudicialUserModel>();\n @Input() public idValue: string = '';\n @Input() public errorMessage: string = 'You must select a name';\n @Input() public serviceId: string = '';\n @ViewChild('inputSelection', { read: ElementRef, static: true }) public autoCompleteInputBox: ElementRef<HTMLInputElement>;\n public selectedJudicial: JudicialUserModel;\n private readonly minSearchCharacters = 3;\n public keyUpSubject$: Subject<string> = new Subject();\n public searchInProgress: boolean = false;\n\n constructor(private readonly judicialService: FindAPersonService, fb: UntypedFormBuilder) {\n this.formGroup = fb.group({\n formControl: [null],\n selectedFormControl: [null]\n });\n }\n\n public ngOnInit(): void {\n this.displayedJudicials = [];\n if (this.control) {\n if (this.formGroup && this.formGroup.controls) {\n this.formGroup.controls.selectedFormControl = this.control;\n this.formGroup.controls.formControl.setValue(this.getControlValueDisplayText());\n }\n }\n this.keyUpSubject$.pipe(debounceTime(500)).subscribe(searchValue => this.search(searchValue as string));\n }\n\n public onKeyDown(): void {\n this.judicialChanged.emit();\n }\n\n public onKeyUp(event: any): void {\n this.showAutocomplete = false;\n this.keyUpSubject$.next(event.target.value);\n }\n\n public onFocus() {\n this.showAutocomplete = false;\n }\n\n public get displayedJudicialsDuplicationFiltered(): JudicialUserModel[] {\n return this.displayedJudicials.filter(\n judicial => !this.selectedJudicials.map(selectedJudicial => selectedJudicial.idamId).includes(judicial.idamId)\n );\n }\n\n public filter(term: string): void {\n this.searchJudicials(term, this.serviceId).pipe(\n mergeMap((apiData: JudicialUserModel[]) => {\n const apiFilter = apiData.filter(\n apiJudicial => !this.selectedJudicials.map(selectedJudicial => selectedJudicial.idamId).includes(apiJudicial.idamId)\n );\n this.displayedJudicials = apiFilter;\n this.searchInProgress = false;\n return apiFilter;\n })\n ).subscribe(judicial => {\n if (term === judicial.fullName) {\n this.formGroup.controls.selectedFormControl.setValue(judicial);\n this.displayedJudicials = [];\n this.judicialChanged.emit(judicial);\n this.showAutocomplete = false;\n }\n this.searchInProgress = false;\n });\n }\n\n public onSelectionChange(selection?: JudicialUserModel): void {\n if (this.formGroup.controls.formControl instanceof UntypedFormArray) {\n (this.formGroup.controls.selectedFormControl as UntypedFormArray).push(new UntypedFormControl(selection.idamId));\n } else {\n this.formGroup.controls.selectedFormControl.setValue(selection);\n }\n this.judicialChanged.emit(selection);\n }\n\n public search(currentValue: string): void {\n this.searchInProgress = true;\n this.showAutocomplete = !!currentValue && (currentValue.length >= this.minSearchCharacters);\n if (!!currentValue) {\n this.formGroup.controls.selectedFormControl.markAsDirty();\n } else {\n this.formGroup.controls.selectedFormControl.reset();\n }\n if (this.showAutocomplete) {\n this.filter(currentValue);\n } else {\n this.searchInProgress = false;\n }\n }\n\n public getDisplayName(selectedJudicial: JudicialUserModel): string {\n return `${selectedJudicial.fullName} (${selectedJudicial.emailId})`;\n }\n\n public searchJudicials(term: string, serviceId: string): Observable<JudicialUserModel[]> {\n return this.judicialService.searchJudicial(term, serviceId);\n }\n\n public getControlValueDisplayText(): string {\n return this.formGroup && this.formGroup.controls && this.formGroup.controls.selectedFormControl.value ?\n this.getDisplayName(this.formGroup.controls.selectedFormControl.value as JudicialUserModel) : '';\n }\n}\n","<div class=\"govuk-form-group\">\n <input id=\"inputSelectPerson{{idValue}}\" [placeholder]=\"placeholderContent\" [formControl]=\"formGroup.controls.formControl\"\n [matAutocomplete]=\"autoComplete\" (keydown)=\"onKeyDown()\" (keyup)=\"onKeyUp($event)\" (focus)=\"onFocus()\"\n class=\"govuk-input\" [attr.disabled]=\"!disabled ? null: disabled\" [value]=\"getControlValueDisplayText()\"\n #inputSelection>\n <mat-autocomplete autoActiveFirstOption #autoComplete=\"matAutocomplete\">\n <mat-option *ngFor=\"let judicial of displayedJudicialsDuplicationFiltered\" class=\"select-option\"\n [value]=\"getDisplayName(judicial)\" (onSelectionChange)=\"onSelectionChange(judicial)\"\n [ngClass]=\"{'hide-autocomplete': !showAutocomplete}\">\n {{ getDisplayName(judicial) }}\n </mat-option>\n <mat-option class=\"select-option\"\n *ngIf=\"!displayedJudicialsDuplicationFiltered?.length && showAutocomplete && !searchInProgress\">\n {{ 'No results found' }}</mat-option>\n </mat-autocomplete>\n</div>\n","import {Component, Input} from '@angular/core';\n/**\n * Main Page Wrapper\n * Responsible for:\n * Wrapping content within the gov-uk html elements bellow\n * @prop showBackLink - switch for back link\n * @prop appHeaderTitle = appHeaderTitle\n * @prop appFunctionalTitle = appFunctionalTitle\n * @prop summaryErrors list of errors\n * @prop back link, appHeaderTitle (appHeaderTitle), summaryErrors (array of errors)\n */\n@Component({\n selector: 'exui-page-wrapper',\n templateUrl: 'exui-page-wrapper.component.html',\n styleUrls: ['exui-page-wrapper.component.scss']\n})\nexport class ExuiPageWrapperComponent {\n\n @Input() public backLink: string;\n @Input() public title: string;\n @Input() public fnTitle: string;\n\n constructor() { }\n\n}\n","<div class=\"page\">\n <a *ngIf=\"backLink\" [routerLink]=\"backLink\" class=\"govuk-back-link\">Back</a>\n <div class=\"govuk-width-container\">\n <main id=\"content\" role=\"main\" class=\"govuk-main-wrapper\">\n <div class=\"govuk-grid-row\">\n <h1 *ngIf=\"title\" class=\"govuk-heading-xl\">\n <span *ngIf=\"fnTitle\" class=\"govuk-caption-xl\">{{fnTitle}}</span>\n {{title}}\n </h1>\n <ng-content>\n\n </ng-content>\n </div>\n </main>\n </div>\n</div>\n","import { Directive, Input, OnDestroy, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { FeatureToggleService } from '../../services/feature-toggle/feature-toggle.service';\n\n@Directive({\n selector: '[xuilibFeatureToggle]'\n})\nexport class FeatureToggleDirective implements OnDestroy {\n private feature: string;\n private subscription: Subscription;\n\n @Input() public set xuilibFeatureToggle(feature: string) {\n this.feature = feature;\n this.updateSubscription();\n }\n\n constructor(\n private readonly service: FeatureToggleService,\n private readonly viewContainer: ViewContainerRef,\n private readonly templateRef: TemplateRef<any>\n ) {}\n\n public ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n private updateSubscription() {\n this.subscription = this.service.isEnabled(this.feature).subscribe(enabled => {\n if (enabled) {\n this.viewContainer.createEmbeddedView(this.templateRef);\n } else {\n this.viewContainer.clear();\n }\n });\n }\n}\n","import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';\n\nexport class LetContext<T = any> {\n public $implicit: T = null;\n public xuilibLet: T = null;\n}\n\n@Directive({\n selector: '[xuilibLet]'\n})\nexport class LetDirective<T = any> {\n private readonly context: LetContext<T> = new LetContext<T>();\n\n constructor(private readonly viewContainer: ViewContainerRef, templateRef: TemplateRef<LetContext<T>>) {\n this.viewContainer.createEmbeddedView(templateRef, this.context);\n }\n\n @Input() public set xuilibLet(condition: T) {\n this.context.$implicit = this.context.xuilibLet = condition;\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { CheckboxesModel, ErrorMessagesModel, GovUiConfigModel } from '../../models';\nimport { HtmlTemplatesHelper } from '../../util/helpers/html-templates.helper';\n/*\n* CheckBox component - state less\n* Responsible for displaying a list of gov-uk-checkboxes\n* @param: options - object with data for wrapper (fieldset) and\n* array of items for gov-uk-checkboxes\n* @param: errors - array of error stings\n* */\n@Component({\n selector: 'xuilib-gov-uk-checkboxes',\n templateUrl: './gov-uk-checkboxes.component.html',\n styleUrls: ['./gov-uk-checkboxes.component.scss']\n})\n\nexport class GovUkCheckboxesComponent implements OnInit {\n @Input() public group: UntypedFormGroup;\n @Input() public config: GovUiConfigModel;\n @Input() public items: CheckboxesModel[];\n @Input() public errorMessage: ErrorMessagesModel;\n\n public columns: CheckboxesModel[][];\n\n public ngOnInit() {\n this.columns = this.setColumns();\n }\n\n public setDescribedBy(): string {\n return HtmlTemplatesHelper.setDescribedBy(this.errorMessage, this.config);\n }\n\n public onChecked(checked: boolean, value: string) {\n const formControl = this.group.get(this.config.name);\n const array = formControl.value ? formControl.value : [];\n\n if (!checked) {\n const modifiedArray = array.filter((item: string) => item !== value);\n formControl.setValue(modifiedArray);\n } else {\n formControl.setValue([...array, value]);\n }\n }\n\n public isChecked(value: string) {\n const formControl = this.group.get(this.config.name);\n return formControl.value && formControl.value.includes(value);\n }\n\n private setColumns(): CheckboxesModel[][] {\n if (this.config.rows && this.config.rows > 1) {\n const array: CheckboxesModel[][] = [];\n\n for (let i = 0; i < this.items.length; i += this.config.rows) {\n const arrayChunk = this.items.slice(i, i + this.config.rows);\n array.push(arrayChunk);\n }\n\n return array;\n } else {\n return [this.items];\n }\n }\n}\n","<div class=\"govuk-form-group gov-uk-input\" [formGroup]=\"group\"\n [ngClass]=\"{'govuk-form-group--error': errorMessage?.isInvalid}\">\n\n <xuilib-gov-label [config]=\"config\"></xuilib-gov-label>\n\n <span *ngIf=\"config.hint\" [id]=\"config.id +'-hint'\" class=\"govuk-hint\">\n {{config.hint}}\n </span>\n\n <xuilib-gov-uk-error-message [config]=\"config\" [errorMessage]=\"errorMessage\"></xuilib-gov-uk-error-message>\n\n <div class=\"govuk-checkboxes govuk-checkboxes--small govuk-checkboxes-multi-column\" data-module=\"govuk-checkboxes\">\n <div class=\"govuk-checkboxes-multi-column__single\" *ngFor=\"let columnItems of columns\">\n <div class=\"govuk-checkboxes__item\" *ngFor=\"let item of columnItems\">\n <input type=\"checkbox\" class=\"govuk-checkboxes__input\"\n [id]=\"item.id\" [name]=\"item.id\" [checked]=\"isChecked(item.value)\" [value]=\"item.value\"\n [attr.aria-describedby]=\"setDescribedBy()\"\n (change)=\"onChecked($event.target.checked, item.value)\"\n >\n <label class=\"govuk-label govuk-checkboxes__label\" [for]=\"item.id\">\n {{ item.label }}\n </label>\n <div *ngIf=\"item.hint\" class=\"govuk-hint govuk-checkboxes__hint\">\n {{ item.hint }}\n </div>\n </div>\n </div>\n </div>\n</div>\n","import {\n Component,\n Input,\n OnInit\n} from '@angular/core';\nimport { ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { ErrorMessagesModel } from '../../models/error-messages-model';\nimport { GovUiConfigModel } from '../../models/gov-ui-config-model';\n/*\n * Gov UK Date Component\n * Responsible for displaying 3 input fields:\n * day / month / year\n * displaying errorMessage messages\n * */\n@Component({\n selector: 'xuilib-gov-uk-date',\n templateUrl: './gov-uk-date.component.html',\n styleUrls: ['./gov-uk-date.component.scss']\n})\nexport class GovUkDateComponent implements OnInit {\n constructor() {}\n @Input() public config: GovUiConfigModel;\n @Input() public errorMessage: ErrorMessagesModel;\n @Input() public formGroup: any;\n @Input() public isOptional: boolean = false;\n\n public month: any;\n public day: any;\n public year: any;\n\n public ngOnInit(): void {\n this.day = `${this.config.id}_day`;\n this.month = `${this.config.id}_month`;\n this.year = `${this.config.id}_year`;\n const dateValidator = this.DateValidator();\n this.formGroup.get(this.day).setValidators(dateValidator);\n }\n\n private isValidDate(d: Date, month: number, year: number): boolean {\n const dateCheck = !isNaN(d.getTime());\n // Month mismatch occurs if the provided day or month are invalid, or either is omitted. **Note:** This is insufficient for\n // checking date validity when the year is omitted because it defaults to 1900 - an extra check is required\n const monthMatch = d.getMonth() === month;\n const yearMatch = d.getFullYear() === year;\n return dateCheck && monthMatch && yearMatch;\n }\n\n private isEmpty(value: any) {\n // Note: Intentional use of == to check for null or undefined\n /* eslint-disable eqeqeq */\n /* tslint:disable:triple-equals */\n // NaN and < 0 checks required for month field\n return value == null || value === '' || isNaN(value) || value < 0;\n /* eslint-enable eqeqeq */\n /* tslint:enable:triple-equals */\n }\n\n public DateValidator(): ValidatorFn {\n return (): ValidationErrors | null => {\n const day = this.formGroup.get(this.day).value;\n const month = this.formGroup.get(this.month).value - 1;\n const year = this.formGroup.get(this.year).value;\n // Validation should pass if the date field is optional and day, month, and year are all empty\n if (this.isOptional && this.isEmpty(day) && this.isEmpty(month) && this.isEmpty(year)) {\n return null;\n }\n // + to coerce year to a number\n return !this.isValidDate(new Date(year, month, day), month, +year) ? { dateComponent: true } : null;\n };\n }\n}\n","<div class=\"govuk-form-group\" [ngClass]=\"{'govuk-form-group--error': errorMessage?.isInvalid}\" [formGroup]=\"formGroup\">\n <div class=\"date-input-container\">\n <xuilib-gov-uk-fieldset\n [config]=\"{\n legend: config.label || 'Date component',\n classes: config.classes || 'govuk-label--m',\n id: config.id,\n hint: config.hint != null ? config.hint : 'For example, 12 11 2007',\n isPageHeading: config.isPageHeading || false}\"\n [errorMessage]=\"errorMessage\">\n <xuilib-gov-uk-error-message\n [config]=\"{id: 'passport'}\"\n *ngIf=\"errorMessage\"\n [errorMessage]=\"errorMessage\">\n </xuilib-gov-uk-error-message>\n <div class=\"govuk-date-input\" [id]=\"config.id+'-date'\">\n <div class=\"govuk-date-input__item\">\n <div class=\"govuk-form-group\">\n <xuilib-gov-label\n [config]=\"{label: 'Day', name: config.id+'-day', id: config.id+'-day', classes: 'govuk-date-input__label'}\">\n </xuilib-gov-label>\n <input class=\"govuk-input govuk-date-input__input govuk-input--width-2\"\n [ngClass]=\"{'govuk-input--error': errorMessage?.isInvalid}\"\n [id]=\"config.id\"\n [name]=\"config.id+'-day'\" type=\"number\" value=\"\" pattern=\"[0-9]*\"\n [formControlName]=\"config.id+'_day'\">\n </div>\n </div>\n <div class=\"govuk-date-input__item\">\n <div class=\"govuk-form-group\">\n <xuilib-gov-label\n [config]=\"{label: 'Month', name: config.id+'-month', id: config.id+'-month', classes: 'govuk-date-input__label'}\">\n </xuilib-gov-label>\n <input class=\"govuk-input govuk-date-input__input govuk-input--width-2\"\n [ngClass]=\"{'govuk-input--error': errorMessage?.isInvalid}\"\n [id]=\"config.id+'-month'\"\n [name]=\"config.id+'-month'\" type=\"number\" value=\"\" pattern=\"[0-9]*\"\n [formControlName]=\"config.id+'_month'\">\n </div>\n </div>\n <div class=\"govuk-date-input__item\">\n <div class=\"govuk-form-group\">\n <xuilib-gov-label\n [config]=\"{label: 'Year', name: config.id+'-year', id: config.id+'-year', classes: 'govuk-date-input__label'}\">\n </xuilib-gov-label>\n <input class=\"govuk-input govuk-date-input__input govuk-input--width-4\"\n [ngClass]=\"{'govuk-input--error': errorMessage?.isInvalid}\"\n [id]=\"config.id+'-year'\"\n [name]=\"config.id+'-year'\" type=\"number\" value=\"\" pattern=\"[0-9]*\"\n [formControlName]=\"config.id+'_year'\">\n </div>\n </div>\n </div>\n </xuilib-gov-uk-fieldset>\n </div>\n</div>\n","import {Component, Input, OnInit} from '@angular/core';\nimport {UntypedFormGroup} from '@angular/forms';\nimport { ErrorMessagesModel } from '../../models';\nimport { GovUiConfigModel } from '../../models/gov-ui-config-model';\nimport {HtmlTemplatesHelper} from '../../util/helpers/html-templates.helper';\n/*\n* Gov UK Input component\n* Responsible for displaying input, hint and error messages\n* @prop errorMessages - array of messages\n* @prop focusOn - passing the FormGroup\n* @prop config - adding configuration\n* */\n@Component({\n selector: 'xuilib-gov-uk-file-upload',\n templateUrl: './gov-uk-file-upload.component.html'\n})\nexport class GovUkFileUploadComponent implements OnInit {\n constructor() { }\n @Input() public errorMessage: ErrorMessagesModel;\n @Input() public group: UntypedFormGroup;\n @Input() public config: GovUiConfigModel;\n // { label: string, hint: string; name: string; id: string, type: string; isPageHeading: boolean, classes: string };\n\n public reloadInput = true;\n\n public ngOnInit(): void {\n this.config.classes = 'govuk-label--m';\n }\n\n public setDescribedBy(): string {\n return HtmlTemplatesHelper.setDescribedBy(this.errorMessage, this.config);\n }\n}\n","<div class=\"govuk-form-group\" [formGroup]=\"group\"\n [ngClass]=\"{'govuk-form-group--error': errorMessage?.isInvalid}\">\n\n <xuilib-gov-label [config]=\"config\"></xuilib-gov-label>\n\n <span *ngIf=\"config.hint\" [id]=\"config.id +'-hint'\" class=\"govuk-hint\">\n {{config.hint}}\n </span>\n\n <xuilib-gov-uk-error-message [config]=\"config\" [errorMessage]=\"errorMessage\"></xuilib-gov-uk-error-message>\n\n <input class=\"govuk-file-upload\"\n *ngIf=\"reloadInput\"\n [formControlName]=\"config.id\"\n [ngClass]=\"{'govuk-file-upload--error': errorMessage?.isInvalid}\"\n [id]=\"config.id\" [name]=\"config.name\"\n [attr.aria-describedby]=\"setDescribedBy()\"\n type=\"file\">\n </div>","import {Component, Input, OnInit} from '@angular/core';\nimport {UntypedFormGroup} from '@angular/forms';\nimport { GovUiConfigModel } from '../../models/gov-ui-config-model';\n/*\n* Gov Uk Radio state-less Component responsible for\n* displaying radios input and hint\n*\n* */\n@Component({\n selector: 'xuilib-gov-radio',\n templateUrl: './gov-uk-radio.component.html'\n})\nexport class GovUkRadioComponent implements OnInit {\n constructor() { }\n @Input() public group: UntypedFormGroup;\n @Input() public config: GovUiConfigModel;\n // {value: string, label: string, hint: string; name: string; focusOn: string; id: string; classes: string}; // TODO create interface\n\n public id: string;\n /*\n * ngOnInIt\n * needed to manage the focus id if passed on in config\n * si it can focus on element when user clicks on error message in the header.\n **/\n public ngOnInit(): void {\n const id = this.config.focusOn ? this.config.focusOn : this.config.value;\n this.config.id = id;\n this.config.classes = this.config.classes ?\n this.config.classes.concat(' govuk-radios__label') : 'govuk-radios__label';\n }\n\n}\n","<div class=\"govuk-radios__item\" [formGroup]=\"group\">\n <input [className]=\"'govuk-radios__input ' + config.classes\"\n [id]=\"config.id\"\n [value]=\"config.value\" type=\"radio\"\n [attr.data-aria-controls]=\"config.id\"\n [name]=\"config.name\"\n [formControl]=\"group.controls[config.name]\">\n <xuilib-gov-label appRemoveHost [config]=\"config\"></xuilib-gov-label>\n</div>","import { Component, Input } from '@angular/core';\nimport { ErrorMessagesModel } from '../../models';\nimport { RadioButtonsModel } from '../../models/radio-buttons.model';\n/*\n* Radios component - state less\n* Responsible for displaying a list of gov-uk-radio components\n* @param: options - object with data for wrapper (fieldset) and\n* array of items for gov-uk-checkboxes\n* @param: errors - array of error stings\n* */\n@Component({\n selector: 'xuilib-gov-uk-radios',\n templateUrl: './gov-uk-radios.component.html'\n})\n\nexport class GovUkRadiosComponent {\n\n @Input() public options: RadioButtonsModel;\n @Input() public errors: ErrorMessagesModel;\n\n}\n","<xuilib-gov-uk-form-group-wrapper\n[error]=\"errors\"\n[config]=\"options.config\"\n[group]=\"options.key\">\n<div class=\"govuk-radios\">\n <xuilib-gov-radio\n appRemoveHost\n *ngFor=\"let item of options.items\"\n [group]=\"options.group\"\n [config]=\"item.config\">\n </xuilib-gov-radio>\n</div>\n</xuilib-gov-uk-form-group-wrapper>","import {Component, Input} from '@angular/core';\nimport {UntypedFormGroup} from '@angular/forms';\nimport { ErrorMessagesModel } from '../../models';\nimport { GovUiConfigModel } from '../../models/gov-ui-config-model';\nimport {HtmlTemplatesHelper} from '../../util/helpers/html-templates.helper';\n/*\n* Gov Uk Select Dumb Component responsible for\n* dropdown input.\n* */\n@Component({\n selector: 'xuilib-gov-select',\n templateUrl: './gov-uk-select.component.html'\n})\nexport class GovUkSelectComponent {\n constructor() {}\n @Input() public errorMessage: ErrorMessagesModel;\n @Input() public group: UntypedFormGroup;\n @Input() public config: GovUiConfigModel;\n // {hint: string; name: string; id: string, isPageHeading: boolean, classes: string };\n @Input() public items: { label: string, value: string; id: string; }[];\n\n public setDescribedBy(): string {\n return HtmlTemplatesHelper.setDescribedBy(this.errorMessage, this.config);\n }\n}\n","<div class=\"govuk-form-group\" [formGroup]=\"group\"\n[ngClass]=\"{'govuk-form-group--error': errorMessage?.isInvalid}\">\n<xuilib-gov-label [config]=\"config\"></xuilib-gov-label>\n<span *ngIf=\"config.hint\" [id]=\"config.id +'-hint'\" class=\"govuk-hint\">\n {{config.hint}}\n</span>\n<xuilib-gov-uk-error-message [config]=\"config\" [errorMessage]=\"errorMessage\"></xuilib-gov-uk-error-message>\n\n<select class=\"govuk-select\"\n [class.govuk-!-width-full]=\"config.fullWidth\"\n [id]=\"config.id\" [name]=\"config.id\" [formControlName]=\"config.id\" [attr.aria-describedby]='setDescribedBy()'>\n <option value=\"{{item.value}}\" *ngFor=\"let item of items\">{{item.label}}</option>\n</select>\n</div>\n","import {formatDate} from '@angular/common';\nimport {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'xuilib-gov-uk-table',\n templateUrl: './gov-uk-table.component.html',\n styleUrls: ['./gov-uk-table.component.scss']\n})\nexport class GovukTableComponent {\n\n @Input() public classes = '';\n @Input() public caption = 'Dates and amounts';\n @Input() public firstCellIsHeader = true;\n @Input() public rows: any;\n @Input() public columnConfig: GovukTableColumnConfig[] = [\n { header: 'Date', key: 'date', type: 'text' },\n { header: 'Amount', key: 'amount' }\n ];\n\n constructor() { }\n\n public formatDate(date: Date): string {\n return formatDate(date, 'dd/MM/yyyy', 'en-UK');\n }\n\n}\n\nexport class GovukTableColumnConfig {\n public header: string;\n public key: string;\n public type?: string;\n constructor() {\n this.header = '';\n this.key = '';\n this.type = 'text';\n }\n }\n","<table class=\"{{'govuk-table ' + classes}}\">\n <caption class=\"govuk-table__caption\">{{caption}}</caption>\n <thead class=\"govuk-table__head\" >\n <tr class=\"govuk-table__row\">\n <th class=\"govuk-table__header\" scope=\"col\" *ngFor=\"let h of columnConfig\">{{h.header}}</th>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\">\n <tr data-selector=\"table-row\" class=\"govuk-table__row\" *ngFor=\"let r of rows\">\n <ng-container *ngFor=\"let col of columnConfig; first as isFirst\">\n <th data-selector=\"table-header\" class=\"govuk-table__header\" scope=\"row\" *ngIf=\"isFirst && firstCellIsHeader\">\n <ng-container *ngIf=\"!col.type || col.type === 'text' || !r.routerLink\">{{r[col.key]}}</ng-container>\n <ng-container *ngIf=\"col.type === 'link' && r.routerLink\">\n <a class=\"govuk-link\" [routerLink]=\"r.routerLink\">{{r[col.key]}}</a>\n </ng-container>\n </th>\n <td data-selector=\"table-cell\" class=\"govuk-table__cell\" *ngIf=\"!(isFirst && firstCellIsHeader)\">\n <ng-container *ngIf=\"col.type === 'date'\">{{formatDate(r[col.key])}}</ng-container>\n <ng-container *ngIf=\"!col.type || col.type === 'text' || !r.routerLink\">{{r[col.key]}}</ng-container>\n <ng-container *ngIf=\"col.type === 'link' && r.routerLink\">\n <a class=\"govuk-link\" [routerLink]=\"r.routerLink\">{{r[col.key]}}</a>\n </ng-container>\n </td>\n </ng-container>\n </tr>\n </tbody>\n</table>\n","import {Component, Input} from '@angular/core';\nimport {UntypedFormGroup} from '@angular/forms';\nimport { ErrorMessagesModel } from '../../models';\nimport { GovUiConfigModel } from '../../models/gov-ui-config-model';\nimport {HtmlTemplatesHelper} from '../../util/helpers/html-templates.helper';\n/*\n* CheckBox component - state less\n* Responsible for displaying a list of gov-uk-checkboxes\n* @param: options - object with data for wrapper (fieldset) and\n* array of items for gov-uk-checkboxes\n* @param: errors - array of errorMessage\n* */\n@Component({\n selector: 'xuilib-gov-uk-textarea',\n templateUrl: './gov-uk-textarea.component.html'\n})\nexport class GovUkTextareaComponent {\n @Input() public config: GovUiConfigModel;\n // {label: string; classes: string; hint: string; key: string; rows: number, id: string};\n @Input() public errorMessage: ErrorMessagesModel;\n @Input() public group: UntypedFormGroup;\n\n public setDescribedBy(): string {\n return HtmlTemplatesHelper.setDescribedBy(this.errorMessage, this.config);\n }\n\n}\n","<div [formGroup]=\"group\" \nclass=\"govuk-form-group\" [ngClass]=\"{'govuk-form-group--error': errorMessage?.isInvalid}\">\n<xuilib-gov-label [config]=\"config\"></xuilib-gov-label>\n<span id=\"more-detail-hint\" class=\"govuk-hint\">\n {{config.hint}}\n</span>\n<xuilib-gov-uk-error-message [config]=\"config\" [errorMessage]=\"errorMessage\"></xuilib-gov-uk-error-message>\n<textarea\n class=\"govuk-textarea\" [formControlName]=\"config.key\"\n [ngClass]=\"{'govuk-textarea--error': errorMessage?.isInvalid}\"\n [id]=\"config.id\" name=\"more-detail\" [rows]=\"config.rows\" [attr.aria-describedby]=\"setDescribedBy()\"></textarea>\n</div>","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'xuilib-hmcts-banner',\n templateUrl: './hmcts-banner.component.html',\n styleUrls: ['./hmcts-banner.component.scss']\n})\nexport class HmctsBannerComponent {\n @Input() public message: string;\n @Input() public type: 'warning' | 'success' | 'information';\n @Input() public title?: string = '';\n @Input() public showMessageIcon?: boolean = false;\n @Input() public messageBoldText?: boolean = false;\n}\n","<ng-container *ngIf=\"message && type\">\n <div *ngIf=\"title\"\n class=\"hmcts-banner-title hmcts-banner-title--{{ type }}\">\n {{ title }}\n </div>\n <div class=\"hmcts-banner hmcts-banner--{{ type }}\">\n <ng-container *ngIf=\"showMessageIcon\">\n <ng-container [ngSwitch]=\"type\">\n <ng-container *ngSwitchCase=\"'warning'\">\n <svg class=\"hmcts-banner__icon hmcts-banner__icon--warning\" fill=\"currentColor\" role=\"presentation\" focusable=\"false\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 25 25\" height=\"25\" width=\"25\">\n <path d=\"M13.6,15.4h-2.3v-4.5h2.3V15.4z M13.6,19.8h-2.3v-2.2h2.3V19.8z M0,23.2h25L12.5,2L0,23.2z\"></path>\n </svg>\n </ng-container>\n <ng-container *ngSwitchCase=\"'success'\">\n <svg class=\"hmcts-banner__icon hmcts-banner__icon--success\" fill=\"currentColor\" role=\"presentation\" focusable=\"false\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 25 25\" height=\"25\" width=\"25\">\n <path d=\"M25,6.2L8.7,23.2L0,14.1l4-4.2l4.7,4.9L21,2L25,6.2z\"></path>\n </svg>\n </ng-container>\n <ng-container *ngSwitchCase=\"'information'\">\n <svg class=\"hmcts-banner__icon hmcts-banner__icon--information\" fill=\"currentColor\" role=\"presentation\" focusable=\"false\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 25 25\" height=\"25\" width=\"25\">\n <path d=\"M13.7,18.5h-2.4v-2.4h2.4V18.5z M12.5,13.7c-0.7,0-1.2-0.5-1.2-1.2V7.7c0-0.7,0.5-1.2,1.2-1.2s1.2,0.5,1.2,1.2v4.8\n C13.7,13.2,13.2,13.7,12.5,13.7z M12.5,0.5c-6.6,0-12,5.4-12,12s5.4,12,12,12s12-5.4,12-12S19.1,0.5,12.5,0.5z\"></path>\n </svg>\n </ng-container>\n </ng-container>\n </ng-container>\n\n <div class=\"hmcts-banner__message\" [class.hmcts-banner__message--bold]=\"messageBoldText\">\n <span class=\"hmcts-banner__assistive\">{{ type }}</span>\n <span class=\"hmcts-banner__message-text govuk-!-font-weight-bold\">{{ message }}</span>\n </div>\n </div>\n</ng-container>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'xuilib-hmcts-identity-bar',\n templateUrl: './hmcts-identity-bar.component.html',\n styleUrls: ['./hmcts-identity-bar.component.scss']\n})\nexport class HmctsIdentityBarComponent {\n\n @Input() public set content(value: any) {\n this.value = value.name;\n }\n\n public value: string;\n\n constructor() { }\n}\n","<div class=\"hmcts-identity-bar\" *ngIf=\"value\">\n\n <div class=\"hmcts-identity-bar__container\">\n\n <div class=\"hmcts-identity-bar__details\">\n \n <span class=\"hmcts-identity-bar__title\">{{value}}</span>\n \n </div> \n\n </div>\n\n</div>","import {Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { HmctsBannerInfo } from '../hmcts-banner/hmcts-banner-info.interface';\n/*\n* Main Content wrapper\n* Responsible for:\n * Wrapping content within the gov-uk html elements bellow\n * @prop showBackLink - switch for back link\n * @prop title = title\n * @prop summaryErrors list of errors\n* @prop back link, title (title), summaryErrors (array of errors)\n* */\n@Component({\n selector: 'xuilib-hmcts-main-wrapper',\n templateUrl: './hmcts-main-wrapper.component.html'\n})\nexport class HmctsMainWrapperComponent implements OnInit {\n public bannerData: HmctsBannerInfo;\n\n @Input() public backLink: string;\n @Input() public title: string;\n @Input() public summaryErrors: {header: string; isFromValid: boolean; items: { id: string; message: any; }[]};\n @Input() public set banner(value: HmctsBannerInfo) {\n this.bannerData = value;\n }\n @Input() public actionButtons: {name: string, class: string, action(): {}}[];\n @Input() public showWarningMessage: boolean;\n\n @Output() public backEvent = new EventEmitter<void>();\n public hasBackLink: boolean;\n\n constructor() {\n }\n\n public ngOnInit() {\n this.hasBackLink = this.backLink !== undefined || this.backEvent.observers.length > 0;\n }\n\n public onGoBack() {\n this.backEvent.emit();\n }\n}\n","<a *ngIf=\"hasBackLink\" [routerLink]=\"backLink\" (click)=\"onGoBack()\" class=\"govuk-back-link\">Back</a>\n<main id=\"content\" role=\"main\" class=\"govuk-main-wrapper\">\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-two-thirds\">\n <xuilib-hmcts-error-summary\n *ngIf=\"summaryErrors && !summaryErrors.isFromValid\"\n [errorMessages]=\"summaryErrors.items\"\n [header]=\"summaryErrors.header\"\n [showWarningMessage]=\"showWarningMessage\">\n </xuilib-hmcts-error-summary>\n <xuilib-hmcts-banner *ngIf=\"bannerData\"\n [type]=\"bannerData.type\"\n [message]=\"bannerData.message\"\n ></xuilib-hmcts-banner>\n <h1 *ngIf=\"title\" class=\"govuk-heading-xl\">{{title}}</h1>\n <ng-content></ng-content>\n </div>\n <div class=\"govuk-grid-column-one-third\" *ngIf=\"actionButtons?.length > 0\">\n <div class=\"hmcts-page-heading__actions-wrapper\">\n <a\n *ngFor=\"let actionButton of actionButtons\"\n (click)=\"actionButton.action()\"\n role=\"button\"\n draggable=\"false\"\n class=\"govuk-button {{ actionButton.class }}\"\n >{{ actionButton.name }}</a>\n </div>\n </div>\n </div>\n</main>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'xuilib-hmcts-primary-navigation',\n templateUrl: './hmcts-primary-navigation.component.html',\n styleUrls: ['./hmcts-primary-navigation.component.scss']\n})\nexport class HmctsPrimaryNavigationComponent {\n\n @Input() public set userLoggedIn(value: any) {\n this.isUserLoggedIn = value;\n }\n\n @Input() public label: string;\n @Input() public items: {active: boolean, href: string, text: string}[];\n @Input() public isBrandedHeader: boolean;\n\n public isUserLoggedIn: boolean;\n constructor() {\n\n }\n\n}\n","<nav *ngIf=\"isUserLoggedIn\" class=\"hmcts-primary-navigation\" [attr.aria-label]=\"label\">\n <div class=\"hmcts-primary-navigation__container\">\n <div class=\"govuk-header__logo\" *ngIf=\"isBrandedHeader\"></div>\n <ul class=\"hmcts-primary-navigation__list\">\n <li class=\"hmcts-primary-navigation__item\" *ngFor=\"let item of items\">\n <a class=\"hmcts-primary-navigation__link\" [attr.aria-current]=\"item.active ? true: null\" [routerLink]=\"item.href\" [innerHTML]=\"item.text\"></a>\n </li>\n </ul>\n </div>\n</nav>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'xuilib-hmcts-sub-navigation',\n styleUrls: ['hmcts-sub-navigation.component.scss'],\n templateUrl: './hmcts-sub-navigation.component.html'\n})\nexport class HmctsSubNavigationComponent {\n @Input() public label: string;\n @Input() public items: SubNavigation[];\n}\n\nexport interface SubNavigation {\n text: string;\n href: string;\n active: boolean;\n total?: number;\n roundel?: number;\n}\n\n","<nav class=\"hmcts-sub-navigation\" attr.aria-label=\"{{label}}\" role=\"navigation\" *ngIf=\"items\">\n <ul class=\"hmcts-sub-navigation__list\">\n <li class=\"hmcts-sub-navigation__item\" *ngFor=\"let item of items\">\n <a data-selector=\"sub-nav-link\" class=\"hmcts-sub-navigation__link\" [routerLink]=\"item.href\"\n [attr.aria-current]=\"item.active ? 'page' : null\">\n {{item.text}}\n\n <span *ngIf=\"item.roundel && item.roundel > 0 \" class=\"xui-alert-link__number\"> {{item.roundel}} </span>\n </a>\n </li>\n </ul>\n</nav>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatLegacyAutocompleteModule as MatAutocompleteModule } from '@angular/material/legacy-autocomplete';\nimport { MatLegacyInputModule as MatInputModule } from '@angular/material/legacy-input';\nimport { MatLegacyTabsModule as MatTabsModule } from '@angular/material/legacy-tabs';\nimport { RouterModule } from '@angular/router';\nimport { NgxPaginationModule, PaginatePipe } from 'ngx-pagination';\nimport { AccessibilityComponent } from './components/accessibility/accessibility.component';\nimport { CheckboxListComponent } from './components/checkbox-list/checkbox-list.component';\nimport { ContactDetailsComponent } from './components/contact-details/contact-details.component';\nimport { CookieBannerComponent } from './components/cookie-banner/cookie-banner.component';\nimport { DueDateComponent } from './components/due-date/due-date.component';\nimport { ExuiPageWrapperComponent } from './components/exui-main-wrapper/exui-page-wrapper.component';\nimport { FindLocationComponent } from './components/find-location/find-location.component';\nimport { FindPersonComponent } from './components/find-person/find-person.component';\nimport { FindServiceComponent } from './components/find-service/find-service.component';\nimport { FindTaskNameComponent } from './components/find-task-name/find-task-name.component';\nimport { GenericFilterComponent } from './components/generic-filter/generic-filter.component';\nimport { HmctsSessionDialogComponent } from './components/hmcts-session-dialog/hmcts-session-dialog.component';\nimport { InviteUserFormComponent } from './components/invite-user-form/invite-user-form.component';\nimport { InviteUserPermissionComponent } from './components/invite-user-permissions/invite-user-permission.component';\nimport { LoadingSpinnerComponent } from './components/loading-spinner/loading-spinner.component';\nimport { PaginationComponent } from './components/pagination/pagination.component';\nimport { SearchJudicialsComponent } from './components/search-judicials/search-judicials.component';\nimport { SearchLocationComponent } from './components/search-location/search-location.component';\nimport { SearchServiceComponent } from './components/search-service/search-service.component';\nimport { SearchVenueComponent } from './components/search-venue/search-venue.component';\nimport { SelectedCaseConfirmComponent } from './components/selected-case-confirm/selected-case-confirm.component';\nimport { SelectedCaseListComponent } from './components/selected-case-list/selected-case-list.component';\nimport { SelectedCaseComponent } from './components/selected-case/selected-case.component';\nimport { ServiceMessageComponent } from './components/service-message/service-message.component';\nimport { ServiceMessagesComponent } from './components/service-messages/service-messages.component';\nimport { ShareCaseConfirmComponent } from './components/share-case-confirm/share-case-confirm.component';\nimport { ShareCaseComponent } from './components/share-case/share-case.component';\nimport { TabComponent } from './components/tab/tab.component';\nimport { TcConfirmComponent } from './components/tc-confirm/tc-confirm.component';\nimport {\n TcDisplayHtmlComponent\n} from './components/terms-and-conditions/tc-display/tc-display-html/tc-display-html.component';\nimport {\n TcDisplayPlainComponent\n} from './components/terms-and-conditions/tc-display/tc-display-plain/tc-display-plain.component';\nimport { TermsAndConditionsComponent } from './components/terms-and-conditions/terms-and-conditions.component';\nimport { UserDetailsComponent } from './components/user-details/user-details.component';\nimport { UserListComponent } from './components/user-list/user-list.component';\nimport { UserSelectComponent } from './components/user-select/user-select.component';\nimport { FeatureToggleDirective } from './directives/feature-toggle/feature-toggle.directive';\nimport { LetDirective } from './directives/let/let.directive';\nimport { GovUkCheckboxComponent } from './gov-ui/components/gov-uk-checkbox/gov-uk-checkbox.component';\nimport { GovUkCheckboxesComponent } from './gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component';\nimport { GovUkDateComponent } from './gov-ui/components/gov-uk-date/gov-uk-date.component';\nimport { GovUkErrorMessageComponent } from './gov-ui/components/gov-uk-error-message/gov-uk-error-message.component';\nimport { GovUkFieldsetComponent } from './gov-ui/components/gov-uk-fieldset/gov-uk-fieldset.component';\nimport { GovUkFileUploadComponent } from './gov-ui/components/gov-uk-file-upload/gov-uk-file-upload.component';\nimport {\n GovUkFormGroupWrapperComponent\n} from './gov-ui/components/gov-uk-form-group-wrapper/gov-uk-form-group-wrapper.component';\nimport { GovUkInputComponent } from './gov-ui/components/gov-uk-input/gov-uk-input.component';\nimport { GovUkLabelComponent } from './gov-ui/components/gov-uk-label/gov-uk-label.component';\nimport { GovUkRadioComponent } from './gov-ui/components/gov-uk-radio/gov-uk-radio.component';\nimport { GovUkRadiosComponent } from './gov-ui/components/gov-uk-radios/gov-uk-radios.component';\nimport { GovUkSelectComponent } from './gov-ui/components/gov-uk-select/gov-uk-select.component';\nimport { GovukTableComponent } from './gov-ui/components/gov-uk-table/gov-uk-table.component';\nimport { GovUkTextareaComponent } from './gov-ui/components/gov-uk-textarea/gov-uk-textarea.component';\nimport { HmctsBannerComponent } from './gov-ui/components/hmcts-banner/hmcts-banner.component';\nimport { HmctsErrorSummaryComponent } from './gov-ui/components/hmcts-error-summary/hmcts-error-summary.component';\nimport { HmctsIdentityBarComponent } from './gov-ui/components/hmcts-identity-bar/hmcts-identity-bar.component';\nimport { HmctsMainWrapperComponent } from './gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component';\nimport { HmctsPaginationComponent } from './gov-ui/components/hmcts-pagination/hmcts-pagination.component';\nimport {\n HmctsPrimaryNavigationComponent\n} from './gov-ui/components/hmcts-primary-navigation/hmcts-primary-navigation.component';\nimport { HmctsSubNavigationComponent } from './gov-ui/components/hmcts-sub-navigation/hmcts-sub-navigation.component';\nimport { RemoveHostDirective } from './gov-ui/directives/remove-host.directive';\nimport { CapitalizePipe } from './pipes';\nimport { windowProvider, windowToken } from './window';\n\nexport const COMMON_COMPONENTS = [\n ExuiPageWrapperComponent,\n TermsAndConditionsComponent,\n TcDisplayHtmlComponent,\n TcDisplayPlainComponent,\n TcConfirmComponent,\n ContactDetailsComponent,\n FeatureToggleDirective,\n LetDirective,\n HmctsSessionDialogComponent,\n UserListComponent,\n UserDetailsComponent,\n InviteUserPermissionComponent,\n InviteUserFormComponent,\n ShareCaseComponent,\n ShareCaseConfirmComponent,\n SelectedCaseListComponent,\n SelectedCaseComponent,\n SelectedCaseConfirmComponent,\n UserSelectComponent,\n TabComponent,\n AccessibilityComponent,\n DueDateComponent,\n CheckboxListComponent,\n ServiceMessageComponent,\n ServiceMessagesComponent,\n LoadingSpinnerComponent,\n GenericFilterComponent,\n CookieBannerComponent,\n FindPersonComponent,\n SearchJudicialsComponent,\n FindLocationComponent,\n FindTaskNameComponent,\n SearchLocationComponent,\n FindServiceComponent,\n SearchServiceComponent,\n SearchVenueComponent,\n PaginationComponent\n];\n\nexport const GOV_UI_COMPONENTS = [\n HmctsIdentityBarComponent,\n HmctsPaginationComponent,\n HmctsSubNavigationComponent,\n HmctsPrimaryNavigationComponent,\n HmctsErrorSummaryComponent,\n HmctsMainWrapperComponent,\n HmctsBannerComponent,\n GovukTableComponent,\n GovUkInputComponent,\n GovUkCheckboxComponent,\n GovUkFormGroupWrapperComponent,\n GovUkLabelComponent,\n GovUkErrorMessageComponent,\n GovUkFieldsetComponent,\n GovUkDateComponent,\n GovUkCheckboxesComponent,\n GovUkRadioComponent,\n GovUkRadiosComponent,\n GovUkSelectComponent,\n GovUkTextareaComponent,\n GovUkFileUploadComponent,\n RemoveHostDirective\n];\n\nconst pipes = [\n CapitalizePipe\n];\n\n@NgModule({\n declarations: [\n ...COMMON_COMPONENTS,\n ...GOV_UI_COMPONENTS,\n ...pipes\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule.forChild([]),\n MatAutocompleteModule,\n MatTabsModule,\n MatInputModule,\n NgxPaginationModule\n ],\n providers: [\n {provide: windowToken, useFactory: windowProvider}\n ],\n exports: [\n ...COMMON_COMPONENTS,\n ...GOV_UI_COMPONENTS,\n PaginatePipe,\n ...pipes\n ]\n})\nexport class ExuiCommonLibModule {\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GovUiService {\n\n constructor() { }\n}\n","import { UntypedFormGroup, ValidatorFn } from '@angular/forms';\n\nexport function checkboxesBeCheckedValidator(minRequired = 1): ValidatorFn {\n return function validate(formGroup: UntypedFormGroup) {\n let checked = 0;\n\n Object.keys(formGroup.controls).forEach(key => {\n const control = formGroup.controls[key];\n\n if (control.value === true) {\n checked ++;\n }\n });\n\n if (checked < minRequired) {\n return {\n requireOneCheckboxToBeChecked: true,\n };\n }\n\n return null;\n };\n}\n","import { UntypedFormGroup, ValidatorFn } from '@angular/forms';\n\nexport function dateValidator(): ValidatorFn {\n return function validate(formGroup: UntypedFormGroup) {\n\n const d = new Date(\n parseInt(formGroup.controls.day.value, 10),\n parseInt(formGroup.controls.month.value, 10) - 1,\n parseInt(formGroup.controls.year.value, 10) - 1\n );\n\n function isValidDate(val: any) {\n return val instanceof Date && !isNaN( +d );\n }\n\n if (!isValidDate(d)) {\n return {\n dateIsInvalid: true,\n };\n }\n\n return null;\n };\n}\n","import { UntypedFormGroup, ValidatorFn } from '@angular/forms';\n\nexport function radioGroupValidator(): ValidatorFn {\n return function validate(formGroup: UntypedFormGroup) {\n if (formGroup.controls) {\n for (const control in formGroup.controls) {\n if (!formGroup.controls[control].valid) {\n return {\n isRadioGroupInvalid: true,\n };\n }\n }\n }\n\n\n return null;\n };\n}\n","/*\n * Public API Surface of gov-ui\n */\n\nexport * from './checkboxes-be-checked.validator';\nexport * from './date.validator';\nexport * from './radio-group.validator';\n","/*\n * Public API Surface of gov-ui\n */\n\nexport * from './directives/remove-host.directive';\nexport * from './gov-ui.service';\nexport * from './validators';\nexport * from './components';\n","/*\n * Public API Surface of exui-common-lib\n */\n\nexport * from './lib/components';\nexport * from './lib/directives';\nexport * from './lib/exui-common-lib.module';\nexport * from './lib/gov-ui';\nexport * from './lib/models';\nexport * from './lib/pipes';\nexport * from './lib/services';\nexport * from './lib/window';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.FeatureToggleService","i1","i2","i1.RoleService","i1.RefDataDataAccessService","i2.SessionStorageService","of","i1.FindAPersonService","i3","i1.LocationService","i3.RefDataService","i4","i5","i6","i7","i2.SearchLocationComponent","i1.TaskNameService","i2.SearchServiceComponent","i1.FilterService","i4.FindPersonComponent","i5.FindLocationComponent","i6.FindTaskNameComponent","i7.FindServiceComponent","i8.CapitalizePipe","i2.GovUkLabelComponent","i3.RemoveHostDirective","i3.GovUkErrorMessageComponent","i4.GovUkFieldsetComponent","i2.GovUkCheckboxComponent","i3.GovUkFormGroupWrapperComponent","i3.GovUkLabelComponent","i4.GovUkErrorMessageComponent","i2.InviteUserPermissionComponent","i3.GovUkInputComponent","i1.CaseSharingStateService","i3.SelectedCaseComponent","i4.SelectedCaseConfirmComponent","i3.ServiceMessageComponent","i4.SelectedCaseListComponent","i5.SelectedCaseListComponent","i6.UserSelectComponent","i7.HmctsErrorSummaryComponent","i8.GovUkErrorMessageComponent","i2.TcDisplayHtmlComponent","i3.TcDisplayPlainComponent","i3.HmctsPaginationComponent","i5.GovUkFieldsetComponent","i2.GovUkFormGroupWrapperComponent","i3.GovUkRadioComponent","i4.RemoveHostDirective","i3.HmctsErrorSummaryComponent","i4.HmctsBannerComponent","MatAutocompleteModule","MatTabsModule","MatInputModule"],"mappings":"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"}