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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (361) hide show
  1. package/README.md +1 -1
  2. package/esm2022/hmcts-rpx-xui-common-lib.mjs +5 -0
  3. package/esm2022/lib/components/accessibility/accessibility.component.mjs +833 -0
  4. package/esm2022/lib/components/checkbox-list/checkbox-list.component.mjs +232 -0
  5. package/esm2022/lib/components/contact-details/contact-details.component.mjs +123 -0
  6. package/esm2022/lib/components/cookie-banner/cookie-banner.component.mjs +151 -0
  7. package/esm2022/lib/components/due-date/due-date.component.mjs +141 -0
  8. package/esm2022/lib/components/exui-main-wrapper/exui-page-wrapper.component.mjs +80 -0
  9. package/esm2022/lib/components/find-location/find-location.component.mjs +220 -0
  10. package/esm2022/lib/components/find-person/find-person.component.mjs +234 -0
  11. package/esm2022/lib/components/find-service/find-service.component.mjs +193 -0
  12. package/esm2022/lib/components/find-task-name/find-task-name.component.mjs +200 -0
  13. package/esm2022/lib/components/generic-filter/generic-filter-utils.mjs +21 -0
  14. package/esm2022/lib/components/generic-filter/generic-filter.component.mjs +1224 -0
  15. package/esm2022/lib/components/hmcts-session-dialog/hmcts-session-dialog.component.mjs +56 -0
  16. package/esm2022/lib/components/invite-user-form/invite-user-form.component.mjs +51 -0
  17. package/esm2022/lib/components/invite-user-permissions/invite-user-permission.component.mjs +54 -0
  18. package/esm2022/lib/components/loading-spinner/loading-spinner.component.mjs +33 -0
  19. package/esm2022/lib/components/pagination/pagination.component.mjs +92 -0
  20. package/esm2022/lib/components/public_api.mjs +39 -0
  21. package/esm2022/lib/components/search-judicials/search-judicials.component.mjs +185 -0
  22. package/esm2022/lib/components/search-location/search-location.component.mjs +240 -0
  23. package/esm2022/lib/components/search-service/search-service.component.mjs +94 -0
  24. package/esm2022/lib/components/search-venue/search-venue.component.mjs +188 -0
  25. package/esm2022/lib/components/selected-case/selected-case.component.mjs +381 -0
  26. package/esm2022/lib/components/selected-case-confirm/selected-case-confirm.component.mjs +135 -0
  27. package/esm2022/lib/components/selected-case-list/selected-case-list.component.mjs +98 -0
  28. package/esm2022/lib/components/service-message/service-message.component.mjs +62 -0
  29. package/esm2022/lib/components/service-messages/service-messages.component.mjs +163 -0
  30. package/esm2022/lib/components/share-case/share-case.component.mjs +427 -0
  31. package/esm2022/lib/components/share-case-confirm/share-case-confirm.component.mjs +85 -0
  32. package/esm2022/lib/components/tab/tab.component.mjs +40 -0
  33. package/esm2022/lib/components/tc-confirm/tc-confirm.component.mjs +66 -0
  34. package/esm2022/lib/components/terms-and-conditions/tc-display/tc-display-html/tc-display-html.component.mjs +17 -0
  35. package/esm2022/lib/components/terms-and-conditions/tc-display/tc-display-plain/tc-display-plain.component.mjs +17 -0
  36. package/esm2022/lib/components/terms-and-conditions/terms-and-conditions.component.mjs +58 -0
  37. package/esm2022/lib/components/user-details/user-details.component.mjs +276 -0
  38. package/esm2022/lib/components/user-list/user-list.component.mjs +100 -0
  39. package/esm2022/lib/components/user-select/user-select.component.mjs +94 -0
  40. package/esm2022/lib/components/write-address/write-address.component.mjs +342 -0
  41. package/esm2022/lib/components/write-address-inputs/write-address-inputs.component.mjs +165 -0
  42. package/esm2022/lib/directives/feature-toggle/feature-toggle.directive.mjs +41 -0
  43. package/esm2022/lib/directives/let/let.directive.mjs +29 -0
  44. package/esm2022/lib/exui-common-lib.module.mjs +313 -0
  45. package/esm2022/lib/gov-ui/components/gov-uk-checkbox/gov-uk-checkbox.component.mjs +55 -0
  46. package/esm2022/lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.mjs +137 -0
  47. package/esm2022/lib/gov-ui/components/gov-uk-date/gov-uk-date.component.mjs +127 -0
  48. package/esm2022/lib/gov-ui/components/gov-uk-error-message/gov-uk-error-message.component.mjs +46 -0
  49. package/esm2022/lib/gov-ui/components/gov-uk-fieldset/gov-uk-fieldset.component.mjs +79 -0
  50. package/esm2022/lib/gov-ui/components/gov-uk-file-upload/gov-uk-file-upload.component.mjs +79 -0
  51. package/esm2022/lib/gov-ui/components/gov-uk-form-group-wrapper/gov-uk-form-group-wrapper.component.mjs +45 -0
  52. package/esm2022/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.mjs +71 -0
  53. package/esm2022/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.mjs +84 -0
  54. package/esm2022/lib/gov-ui/components/gov-uk-radio/gov-uk-radio.component.mjs +48 -0
  55. package/esm2022/lib/gov-ui/components/gov-uk-radios/gov-uk-radios.component.mjs +42 -0
  56. package/esm2022/lib/gov-ui/components/gov-uk-select/gov-uk-select.component.mjs +80 -0
  57. package/esm2022/lib/gov-ui/components/gov-uk-table/gov-uk-table.component.mjs +185 -0
  58. package/esm2022/lib/gov-ui/components/gov-uk-textarea/gov-uk-textarea.component.mjs +57 -0
  59. package/esm2022/lib/gov-ui/components/hmcts-banner/hmcts-banner-info.interface.mjs +2 -0
  60. package/esm2022/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.mjs +111 -0
  61. package/esm2022/lib/gov-ui/components/hmcts-error-summary/hmcts-error-summary.component.mjs +140 -0
  62. package/esm2022/lib/gov-ui/components/hmcts-identity-bar/hmcts-identity-bar.component.mjs +34 -0
  63. package/esm2022/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.mjs +129 -0
  64. package/esm2022/lib/gov-ui/components/hmcts-pagination/hmcts-pagination.component.mjs +204 -0
  65. package/esm2022/lib/gov-ui/components/hmcts-primary-navigation/hmcts-primary-navigation.component.mjs +60 -0
  66. package/esm2022/lib/gov-ui/components/hmcts-sub-navigation/hmcts-sub-navigation.component.mjs +58 -0
  67. package/esm2022/lib/gov-ui/directives/remove-host.directive.mjs +30 -0
  68. package/esm2022/lib/gov-ui/gov-ui.service.mjs +14 -0
  69. package/esm2022/lib/gov-ui/models/checkboxes-model.mjs +2 -0
  70. package/{esm2015/lib/gov-ui/models/gov-ui-config-model.js → esm2022/lib/gov-ui/models/gov-ui-config-model.mjs} +1 -1
  71. package/{esm2015/lib/gov-ui/models/public_api.js → esm2022/lib/gov-ui/models/public_api.mjs} +1 -2
  72. package/esm2022/lib/gov-ui/models/radio-buttons.model.mjs +2 -0
  73. package/esm2022/lib/gov-ui/util/helpers/html-templates.helper.mjs +22 -0
  74. package/{esm2015/lib/gov-ui/validators/checkboxes-be-checked.validator.js → esm2022/lib/gov-ui/validators/checkboxes-be-checked.validator.mjs} +1 -1
  75. package/{esm2015/lib/gov-ui/validators/date.validator.js → esm2022/lib/gov-ui/validators/date.validator.mjs} +1 -1
  76. package/esm2022/lib/gov-ui/validators/radio-group.validator.mjs +15 -0
  77. package/esm2022/lib/models/address-message.enum.mjs +11 -0
  78. package/esm2022/lib/models/address-option.model.mjs +21 -0
  79. package/esm2022/lib/models/address.model.mjs +4 -0
  80. package/{esm2015/lib/models/contact-details.model.js → esm2022/lib/models/contact-details.model.mjs} +1 -1
  81. package/esm2022/lib/models/feature-user.mjs +5 -0
  82. package/esm2022/lib/models/filter.model.mjs +3 -0
  83. package/esm2022/lib/models/index.mjs +19 -0
  84. package/esm2022/lib/models/location.model.mjs +7 -0
  85. package/esm2022/lib/models/person.model.mjs +21 -0
  86. package/{esm2015/lib/models/public_api.js → esm2022/lib/models/public_api.mjs} +2 -1
  87. package/{esm2015/lib/models/search-options.model.js → esm2022/lib/models/search-options.model.mjs} +1 -1
  88. package/esm2022/lib/models/service-message.model.mjs +2 -0
  89. package/esm2022/lib/models/task-name.model.mjs +2 -0
  90. package/esm2022/lib/models/user-access-type.model.mjs +2 -0
  91. package/esm2022/lib/models/user-details.model.mjs +2 -0
  92. package/esm2022/lib/pipes/capitalize/capitalize.pipe.mjs +15 -0
  93. package/esm2022/lib/pipes/index.mjs +2 -0
  94. package/esm2022/lib/services/address/address-parser.mjs +76 -0
  95. package/esm2022/lib/services/address/address-type.enum.mjs +7 -0
  96. package/esm2022/lib/services/address/address.service.mjs +55 -0
  97. package/esm2022/lib/services/case-sharing-state/case-sharing-state.service.mjs +170 -0
  98. package/esm2022/lib/services/cookie/cookie.service.mjs +48 -0
  99. package/esm2022/lib/services/feature-toggle/feature-toggle.guard.mjs +37 -0
  100. package/esm2022/lib/services/feature-toggle/feature-toggle.service.mjs +33 -0
  101. package/esm2022/lib/services/feature-toggle/launch-darkly.service.mjs +65 -0
  102. package/esm2022/lib/services/filter/filter.service.mjs +95 -0
  103. package/esm2022/lib/services/find-person/find-person.service.mjs +92 -0
  104. package/esm2022/lib/services/google-analytics/google-analytics.service.mjs +73 -0
  105. package/esm2022/lib/services/google-tag-manager/google-tag-manager.service.mjs +85 -0
  106. package/{esm2015/lib/services/loading/loading.service.js → esm2022/lib/services/loading/loading.service.mjs} +8 -6
  107. package/esm2022/lib/services/locations/location.service.mjs +38 -0
  108. package/{esm2015/lib/services/manage-session/manage-session.services.js → esm2022/lib/services/manage-session/manage-session.services.mjs} +8 -10
  109. package/esm2022/lib/services/public-api.mjs +18 -0
  110. package/esm2022/lib/services/ref-data/index.mjs +4 -0
  111. package/esm2022/lib/services/ref-data/models/ref-data-htmcs-service.model.mjs +2 -0
  112. package/esm2022/lib/services/ref-data/models/ref-data-region.model.mjs +2 -0
  113. package/esm2022/lib/services/ref-data/ref-data-data-access/models/ref-data-locations-by-service-code-response.model.mjs +2 -0
  114. package/esm2022/lib/services/ref-data/ref-data-data-access/ref-data-data-access.service.mjs +33 -0
  115. package/esm2022/lib/services/ref-data/ref-data.service.mjs +34 -0
  116. package/esm2022/lib/services/role-guard/role.guard.mjs +43 -0
  117. package/esm2022/lib/services/role-guard/role.service.mjs +22 -0
  118. package/esm2022/lib/services/storage/session-storage/session-storage.service.mjs +43 -0
  119. package/esm2022/lib/services/task-name/task-name.service.mjs +35 -0
  120. package/esm2022/lib/services/timeout-notifications/timeout-notifications.service.mjs +103 -0
  121. package/{esm2015/public-api.js → esm2022/public-api.mjs} +2 -1
  122. package/fesm2022/hmcts-rpx-xui-common-lib.mjs +10377 -0
  123. package/fesm2022/hmcts-rpx-xui-common-lib.mjs.map +1 -0
  124. package/index.d.ts +5 -0
  125. package/lib/components/accessibility/accessibility.component.d.ts +7 -1
  126. package/lib/components/checkbox-list/checkbox-list.component.d.ts +8 -2
  127. package/lib/components/contact-details/contact-details.component.d.ts +3 -0
  128. package/lib/components/cookie-banner/cookie-banner.component.d.ts +5 -1
  129. package/lib/components/due-date/due-date.component.d.ts +8 -2
  130. package/lib/components/exui-main-wrapper/exui-page-wrapper.component.d.ts +3 -0
  131. package/lib/components/find-location/find-location.component.d.ts +12 -6
  132. package/lib/components/find-person/find-person.component.d.ts +5 -2
  133. package/lib/components/find-service/find-service.component.d.ts +24 -9
  134. package/lib/components/find-task-name/find-task-name.component.d.ts +44 -0
  135. package/lib/components/generic-filter/generic-filter-utils.d.ts +2 -5
  136. package/lib/components/generic-filter/generic-filter.component.d.ts +25 -6
  137. package/lib/components/hmcts-session-dialog/hmcts-session-dialog.component.d.ts +3 -0
  138. package/lib/components/invite-user-form/invite-user-form.component.d.ts +3 -0
  139. package/lib/components/invite-user-permissions/invite-user-permission.component.d.ts +3 -0
  140. package/lib/components/loading-spinner/loading-spinner.component.d.ts +8 -1
  141. package/lib/components/pagination/pagination.component.d.ts +3 -0
  142. package/lib/components/public_api.d.ts +6 -0
  143. package/lib/components/search-judicials/search-judicials.component.d.ts +3 -0
  144. package/lib/components/search-location/search-location.component.d.ts +25 -20
  145. package/lib/components/search-service/search-service.component.d.ts +16 -9
  146. package/lib/components/search-venue/search-venue.component.d.ts +3 -1
  147. package/lib/components/selected-case/selected-case.component.d.ts +3 -0
  148. package/lib/components/selected-case-confirm/selected-case-confirm.component.d.ts +3 -0
  149. package/lib/components/selected-case-list/selected-case-list.component.d.ts +3 -0
  150. package/lib/components/service-message/service-message.component.d.ts +9 -4
  151. package/lib/components/service-messages/service-messages.component.d.ts +15 -5
  152. package/lib/components/share-case/share-case.component.d.ts +4 -0
  153. package/lib/components/share-case-confirm/share-case-confirm.component.d.ts +3 -0
  154. package/lib/components/tab/tab.component.d.ts +3 -0
  155. package/lib/components/tc-confirm/tc-confirm.component.d.ts +3 -0
  156. package/lib/components/terms-and-conditions/tc-display/tc-display-html/tc-display-html.component.d.ts +3 -0
  157. package/lib/components/terms-and-conditions/tc-display/tc-display-plain/tc-display-plain.component.d.ts +3 -0
  158. package/lib/components/terms-and-conditions/terms-and-conditions.component.d.ts +3 -0
  159. package/lib/components/user-details/user-details.component.d.ts +4 -0
  160. package/lib/components/user-list/user-list.component.d.ts +3 -0
  161. package/lib/components/user-select/user-select.component.d.ts +5 -3
  162. package/lib/components/write-address/write-address.component.d.ts +45 -0
  163. package/lib/components/write-address-inputs/write-address-inputs.component.d.ts +16 -0
  164. package/lib/directives/feature-toggle/feature-toggle.directive.d.ts +3 -0
  165. package/lib/directives/let/let.directive.d.ts +3 -0
  166. package/lib/exui-common-lib.module.d.ts +83 -4
  167. package/lib/gov-ui/components/gov-uk-checkbox/gov-uk-checkbox.component.d.ts +3 -0
  168. package/lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.d.ts +17 -5
  169. package/lib/gov-ui/components/gov-uk-date/gov-uk-date.component.d.ts +3 -0
  170. package/lib/gov-ui/components/gov-uk-error-message/gov-uk-error-message.component.d.ts +3 -0
  171. package/lib/gov-ui/components/gov-uk-fieldset/gov-uk-fieldset.component.d.ts +3 -0
  172. package/lib/gov-ui/components/gov-uk-file-upload/gov-uk-file-upload.component.d.ts +3 -0
  173. package/lib/gov-ui/components/gov-uk-form-group-wrapper/gov-uk-form-group-wrapper.component.d.ts +3 -0
  174. package/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.d.ts +4 -2
  175. package/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.d.ts +4 -0
  176. package/lib/gov-ui/components/gov-uk-radio/gov-uk-radio.component.d.ts +3 -0
  177. package/lib/gov-ui/components/gov-uk-radios/gov-uk-radios.component.d.ts +5 -2
  178. package/lib/gov-ui/components/gov-uk-select/gov-uk-select.component.d.ts +3 -0
  179. package/lib/gov-ui/components/gov-uk-table/gov-uk-table.component.d.ts +3 -0
  180. package/lib/gov-ui/components/gov-uk-textarea/gov-uk-textarea.component.d.ts +3 -0
  181. package/lib/gov-ui/components/hmcts-banner/hmcts-banner-info.interface.d.ts +7 -0
  182. package/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.d.ts +7 -2
  183. package/lib/gov-ui/components/hmcts-error-summary/hmcts-error-summary.component.d.ts +3 -0
  184. package/lib/gov-ui/components/hmcts-identity-bar/hmcts-identity-bar.component.d.ts +3 -0
  185. package/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.d.ts +6 -3
  186. package/lib/gov-ui/components/hmcts-pagination/hmcts-pagination.component.d.ts +3 -0
  187. package/lib/gov-ui/components/hmcts-primary-navigation/hmcts-primary-navigation.component.d.ts +3 -0
  188. package/lib/gov-ui/components/hmcts-sub-navigation/hmcts-sub-navigation.component.d.ts +3 -0
  189. package/lib/gov-ui/directives/remove-host.directive.d.ts +3 -0
  190. package/lib/gov-ui/gov-ui.service.d.ts +3 -0
  191. package/lib/gov-ui/models/checkboxes-model.d.ts +4 -7
  192. package/lib/gov-ui/models/gov-ui-config-model.d.ts +2 -0
  193. package/lib/gov-ui/models/public_api.d.ts +0 -1
  194. package/lib/gov-ui/models/radio-buttons.model.d.ts +9 -0
  195. package/lib/models/address-message.enum.d.ts +9 -0
  196. package/lib/models/address-option.model.d.ts +9 -0
  197. package/lib/models/address.model.d.ts +9 -0
  198. package/lib/models/contact-details.model.d.ts +4 -0
  199. package/lib/models/feature-user.d.ts +4 -6
  200. package/lib/models/filter.model.d.ts +42 -9
  201. package/lib/models/index.d.ts +4 -0
  202. package/lib/models/location.model.d.ts +12 -12
  203. package/lib/models/person.model.d.ts +5 -3
  204. package/lib/models/public_api.d.ts +1 -0
  205. package/lib/models/search-options.model.d.ts +1 -1
  206. package/lib/models/service-message.model.d.ts +8 -0
  207. package/lib/models/task-name.model.d.ts +4 -0
  208. package/lib/models/user-access-type.model.d.ts +6 -0
  209. package/lib/models/user-details.model.d.ts +2 -0
  210. package/lib/pipes/capitalize/capitalize.pipe.d.ts +7 -0
  211. package/lib/pipes/index.d.ts +1 -0
  212. package/lib/services/address/address-parser.d.ts +17 -0
  213. package/lib/services/address/address-type.enum.d.ts +5 -0
  214. package/lib/services/address/address.service.d.ts +15 -0
  215. package/lib/services/case-sharing-state/case-sharing-state.service.d.ts +3 -0
  216. package/lib/services/cookie/cookie.service.d.ts +3 -0
  217. package/lib/services/feature-toggle/feature-toggle.guard.d.ts +8 -2
  218. package/lib/services/feature-toggle/feature-toggle.service.d.ts +4 -0
  219. package/lib/services/feature-toggle/launch-darkly.service.d.ts +14 -10
  220. package/lib/services/filter/filter.service.d.ts +6 -0
  221. package/lib/services/find-person/find-person.service.d.ts +5 -2
  222. package/lib/services/google-analytics/google-analytics.service.d.ts +4 -1
  223. package/lib/services/google-tag-manager/google-tag-manager.service.d.ts +5 -1
  224. package/lib/services/loading/loading.service.d.ts +3 -0
  225. package/lib/services/locations/location.service.d.ts +4 -1
  226. package/lib/services/manage-session/manage-session.services.d.ts +3 -0
  227. package/lib/services/public-api.d.ts +2 -0
  228. package/lib/services/ref-data/index.d.ts +3 -0
  229. package/lib/services/ref-data/models/ref-data-htmcs-service.model.d.ts +13 -0
  230. package/lib/services/ref-data/models/ref-data-region.model.d.ts +4 -0
  231. package/lib/services/ref-data/ref-data-data-access/models/ref-data-locations-by-service-code-response.model.d.ts +8 -0
  232. package/lib/services/ref-data/ref-data-data-access/ref-data-data-access.service.d.ts +18 -0
  233. package/lib/services/ref-data/ref-data.service.d.ts +17 -0
  234. package/lib/services/role-guard/role.guard.d.ts +7 -3
  235. package/lib/services/role-guard/role.service.d.ts +8 -4
  236. package/lib/services/{session-storage → storage/session-storage}/session-storage.service.d.ts +3 -0
  237. package/lib/services/task-name/task-name.service.d.ts +17 -0
  238. package/lib/services/timeout-notifications/timeout-notifications.service.d.ts +8 -2
  239. package/package.json +21 -11
  240. package/public-api.d.ts +1 -0
  241. package/bundles/hmcts-rpx-xui-common-lib.umd.js +0 -5139
  242. package/bundles/hmcts-rpx-xui-common-lib.umd.js.map +0 -1
  243. package/bundles/hmcts-rpx-xui-common-lib.umd.min.js +0 -2
  244. package/bundles/hmcts-rpx-xui-common-lib.umd.min.js.map +0 -1
  245. package/esm2015/hmcts-rpx-xui-common-lib.js +0 -70
  246. package/esm2015/lib/components/accessibility/accessibility.component.js +0 -14
  247. package/esm2015/lib/components/checkbox-list/checkbox-list.component.js +0 -177
  248. package/esm2015/lib/components/contact-details/contact-details.component.js +0 -17
  249. package/esm2015/lib/components/cookie-banner/cookie-banner.component.js +0 -68
  250. package/esm2015/lib/components/due-date/due-date.component.js +0 -115
  251. package/esm2015/lib/components/exui-main-wrapper/exui-page-wrapper.component.js +0 -28
  252. package/esm2015/lib/components/find-location/find-location.component.js +0 -124
  253. package/esm2015/lib/components/find-person/find-person.component.js +0 -118
  254. package/esm2015/lib/components/find-service/find-service.component.js +0 -31
  255. package/esm2015/lib/components/generic-filter/generic-filter-utils.js +0 -21
  256. package/esm2015/lib/components/generic-filter/generic-filter.component.js +0 -387
  257. package/esm2015/lib/components/hmcts-session-dialog/hmcts-session-dialog.component.js +0 -27
  258. package/esm2015/lib/components/invite-user-form/invite-user-form.component.js +0 -25
  259. package/esm2015/lib/components/invite-user-permissions/invite-user-permission.component.js +0 -25
  260. package/esm2015/lib/components/loading-spinner/loading-spinner.component.js +0 -18
  261. package/esm2015/lib/components/pagination/pagination.component.js +0 -28
  262. package/esm2015/lib/components/public_api.js +0 -33
  263. package/esm2015/lib/components/search-judicials/search-judicials.component.js +0 -126
  264. package/esm2015/lib/components/search-location/search-location.component.js +0 -133
  265. package/esm2015/lib/components/search-service/search-service.component.js +0 -31
  266. package/esm2015/lib/components/search-venue/search-venue.component.js +0 -123
  267. package/esm2015/lib/components/selected-case/selected-case.component.js +0 -158
  268. package/esm2015/lib/components/selected-case-confirm/selected-case-confirm.component.js +0 -36
  269. package/esm2015/lib/components/selected-case-list/selected-case-list.component.js +0 -49
  270. package/esm2015/lib/components/service-message/service-message.component.js +0 -22
  271. package/esm2015/lib/components/service-messages/service-messages.component.js +0 -48
  272. package/esm2015/lib/components/share-case/share-case.component.js +0 -205
  273. package/esm2015/lib/components/share-case-confirm/share-case-confirm.component.js +0 -34
  274. package/esm2015/lib/components/tab/tab.component.js +0 -21
  275. package/esm2015/lib/components/tc-confirm/tc-confirm.component.js +0 -22
  276. package/esm2015/lib/components/terms-and-conditions/tc-display/tc-display-html/tc-display-html.component.js +0 -13
  277. package/esm2015/lib/components/terms-and-conditions/tc-display/tc-display-plain/tc-display-plain.component.js +0 -13
  278. package/esm2015/lib/components/terms-and-conditions/terms-and-conditions.component.js +0 -16
  279. package/esm2015/lib/components/user-details/user-details.component.js +0 -41
  280. package/esm2015/lib/components/user-list/user-list.component.js +0 -33
  281. package/esm2015/lib/components/user-select/user-select.component.js +0 -58
  282. package/esm2015/lib/directives/feature-toggle/feature-toggle.directive.js +0 -42
  283. package/esm2015/lib/directives/let/let.directive.js +0 -30
  284. package/esm2015/lib/exui-common-lib.module.js +0 -160
  285. package/esm2015/lib/gov-ui/components/gov-uk-checkbox/gov-uk-checkbox.component.js +0 -31
  286. package/esm2015/lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.js +0 -21
  287. package/esm2015/lib/gov-ui/components/gov-uk-date/gov-uk-date.component.js +0 -64
  288. package/esm2015/lib/gov-ui/components/gov-uk-error-message/gov-uk-error-message.component.js +0 -22
  289. package/esm2015/lib/gov-ui/components/gov-uk-fieldset/gov-uk-fieldset.component.js +0 -28
  290. package/esm2015/lib/gov-ui/components/gov-uk-file-upload/gov-uk-file-upload.component.js +0 -35
  291. package/esm2015/lib/gov-ui/components/gov-uk-form-group-wrapper/gov-uk-form-group-wrapper.component.js +0 -23
  292. package/esm2015/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.js +0 -34
  293. package/esm2015/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.js +0 -21
  294. package/esm2015/lib/gov-ui/components/gov-uk-radio/gov-uk-radio.component.js +0 -33
  295. package/esm2015/lib/gov-ui/components/gov-uk-radios/gov-uk-radios.component.js +0 -21
  296. package/esm2015/lib/gov-ui/components/gov-uk-select/gov-uk-select.component.js +0 -27
  297. package/esm2015/lib/gov-ui/components/gov-uk-table/gov-uk-table.component.js +0 -39
  298. package/esm2015/lib/gov-ui/components/gov-uk-textarea/gov-uk-textarea.component.js +0 -27
  299. package/esm2015/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.js +0 -23
  300. package/esm2015/lib/gov-ui/components/hmcts-error-summary/hmcts-error-summary.component.js +0 -48
  301. package/esm2015/lib/gov-ui/components/hmcts-identity-bar/hmcts-identity-bar.component.js +0 -19
  302. package/esm2015/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.js +0 -41
  303. package/esm2015/lib/gov-ui/components/hmcts-pagination/hmcts-pagination.component.js +0 -28
  304. package/esm2015/lib/gov-ui/components/hmcts-primary-navigation/hmcts-primary-navigation.component.js +0 -23
  305. package/esm2015/lib/gov-ui/components/hmcts-sub-navigation/hmcts-sub-navigation.component.js +0 -15
  306. package/esm2015/lib/gov-ui/directives/remove-host.directive.js +0 -29
  307. package/esm2015/lib/gov-ui/gov-ui.service.js +0 -13
  308. package/esm2015/lib/gov-ui/models/banner-data-model.js +0 -2
  309. package/esm2015/lib/gov-ui/models/checkboxes-model.js +0 -2
  310. package/esm2015/lib/gov-ui/models/isession-storage.interface.js +0 -2
  311. package/esm2015/lib/gov-ui/util/helpers/html-templates.helper.js +0 -22
  312. package/esm2015/lib/gov-ui/util/session-storage/session-storage-utils.js +0 -22
  313. package/esm2015/lib/gov-ui/validators/radio-group.validator.js +0 -15
  314. package/esm2015/lib/models/feature-user.js +0 -5
  315. package/esm2015/lib/models/filter.model.js +0 -3
  316. package/esm2015/lib/models/index.js +0 -15
  317. package/esm2015/lib/models/location.model.js +0 -7
  318. package/esm2015/lib/models/person.model.js +0 -19
  319. package/esm2015/lib/models/user-details.model.js +0 -2
  320. package/esm2015/lib/services/case-sharing-state/case-sharing-state.service.js +0 -157
  321. package/esm2015/lib/services/cookie/cookie.service.js +0 -47
  322. package/esm2015/lib/services/feature-toggle/feature-toggle.guard.js +0 -35
  323. package/esm2015/lib/services/feature-toggle/feature-toggle.service.js +0 -27
  324. package/esm2015/lib/services/feature-toggle/launch-darkly.service.js +0 -59
  325. package/esm2015/lib/services/filter/filter.service.js +0 -64
  326. package/esm2015/lib/services/find-person/find-person.service.js +0 -106
  327. package/esm2015/lib/services/google-analytics/google-analytics.service.js +0 -68
  328. package/esm2015/lib/services/google-tag-manager/google-tag-manager.service.js +0 -71
  329. package/esm2015/lib/services/locations/location.service.js +0 -39
  330. package/esm2015/lib/services/public-api.js +0 -16
  331. package/esm2015/lib/services/role-guard/role.guard.js +0 -37
  332. package/esm2015/lib/services/role-guard/role.service.js +0 -20
  333. package/esm2015/lib/services/session-storage/session-storage.service.js +0 -41
  334. package/esm2015/lib/services/timeout-notifications/timeout-notifications.service.js +0 -92
  335. package/fesm2015/hmcts-rpx-xui-common-lib.js +0 -4172
  336. package/fesm2015/hmcts-rpx-xui-common-lib.js.map +0 -1
  337. package/hmcts-rpx-xui-common-lib.d.ts +0 -69
  338. package/hmcts-rpx-xui-common-lib.metadata.json +0 -1
  339. package/lib/gov-ui/models/banner-data-model.d.ts +0 -4
  340. package/lib/gov-ui/models/isession-storage.interface.d.ts +0 -4
  341. package/lib/gov-ui/util/session-storage/session-storage-utils.d.ts +0 -6
  342. /package/{esm2015/lib/components/index.js → esm2022/lib/components/index.mjs} +0 -0
  343. /package/{esm2015/lib/directives/index.js → esm2022/lib/directives/index.mjs} +0 -0
  344. /package/{esm2015/lib/directives/public-api.js → esm2022/lib/directives/public-api.mjs} +0 -0
  345. /package/{esm2015/lib/gov-ui/components/index.js → esm2022/lib/gov-ui/components/index.mjs} +0 -0
  346. /package/{esm2015/lib/gov-ui/components/public_api.js → esm2022/lib/gov-ui/components/public_api.mjs} +0 -0
  347. /package/{esm2015/lib/gov-ui/index.js → esm2022/lib/gov-ui/index.mjs} +0 -0
  348. /package/{esm2015/lib/gov-ui/models/error-messages-model.js → esm2022/lib/gov-ui/models/error-messages-model.mjs} +0 -0
  349. /package/{esm2015/lib/gov-ui/models/index.js → esm2022/lib/gov-ui/models/index.mjs} +0 -0
  350. /package/{esm2015/lib/gov-ui/public_api.js → esm2022/lib/gov-ui/public_api.mjs} +0 -0
  351. /package/{esm2015/lib/gov-ui/validators/index.js → esm2022/lib/gov-ui/validators/index.mjs} +0 -0
  352. /package/{esm2015/lib/gov-ui/validators/public_api.js → esm2022/lib/gov-ui/validators/public_api.mjs} +0 -0
  353. /package/{esm2015/lib/models/case-share.model.js → esm2022/lib/models/case-share.model.mjs} +0 -0
  354. /package/{esm2015/lib/models/due-date.model.js → esm2022/lib/models/due-date.model.mjs} +0 -0
  355. /package/{esm2015/lib/models/idle-config.model.js → esm2022/lib/models/idle-config.model.mjs} +0 -0
  356. /package/{esm2015/lib/models/pagination.model.js → esm2022/lib/models/pagination.model.mjs} +0 -0
  357. /package/{esm2015/lib/models/tcDocument.model.js → esm2022/lib/models/tcDocument.model.mjs} +0 -0
  358. /package/{esm2015/lib/models/timeout-notification.model.js → esm2022/lib/models/timeout-notification.model.mjs} +0 -0
  359. /package/{esm2015/lib/models/user.model.js → esm2022/lib/models/user.model.mjs} +0 -0
  360. /package/{esm2015/lib/services/index.js → esm2022/lib/services/index.mjs} +0 -0
  361. /package/{esm2015/lib/window.js → esm2022/lib/window.mjs} +0 -0
@@ -0,0 +1,141 @@
1
+ import { formatDate } from '@angular/common';
2
+ import { ChangeDetectorRef, Component, Input, ViewEncapsulation } from '@angular/core';
3
+ import { DateBadgeColour, SECONDS_IN_A_DAY } from '../../models/due-date.model';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ import * as i2 from "rpx-xui-translation";
7
+ function DueDateComponent_span_0_Template(rf, ctx) { if (rf & 1) {
8
+ i0.ɵɵelementStart(0, "span", 1);
9
+ i0.ɵɵpipe(1, "rpxTranslate");
10
+ i0.ɵɵpipe(2, "rpxTranslate");
11
+ i0.ɵɵtext(3);
12
+ i0.ɵɵpipe(4, "rpxTranslate");
13
+ i0.ɵɵelementEnd();
14
+ } if (rf & 2) {
15
+ const ctx_r0 = i0.ɵɵnextContext();
16
+ i0.ɵɵproperty("ngClass", ctx_r0.badge)("title", i0.ɵɵpipeBind1(1, 4, ctx_r0.accessibleLabel));
17
+ i0.ɵɵattribute("aria-label", i0.ɵɵpipeBind1(2, 6, ctx_r0.accessibleLabel));
18
+ i0.ɵɵadvance(3);
19
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(4, 8, ctx_r0.label), "\n");
20
+ } }
21
+ export class DueDateComponent {
22
+ constructor(ref) {
23
+ this.ref = ref;
24
+ /**
25
+ * This should be considered HIGH urgency if there are fewer than this
26
+ * many days until the due date.
27
+ * * Set to 0 if you want it to show HIGH if it was due yesterday.
28
+ * * Set to 1 if you want it to show HIGH if it's due today.
29
+ * * Set to 2 if you want it to show HIGH if it's due tomorrow.
30
+ *
31
+ * Defaults to 0 (ZERO), which means it won't show as HIGH urgency until the
32
+ * due date is in the past.
33
+ *
34
+ * NOTE: If this is higher than the mediumUrgencyCutoff value, MEDIUM urgency
35
+ * will never be shown.
36
+ *
37
+ * ALSO NOTE: Anything overdue is automatically considered HIGH urgency.
38
+ */
39
+ this.highUrgencyCutoff = 0; // Default
40
+ /**
41
+ * This should be considered MEDIUM urgency if there are fewer than this
42
+ * many days until the due date.
43
+ * * Set to 1 if you want it to show MEDIUM if it's due today.
44
+ * * Set to 2 if you want it to show MEDIUM if it's due tomorrow.
45
+ * * Set to 3 if you want it to show MEDIUM if it's due the day after tomorrow.
46
+ *
47
+ * Defaults to 2, which means it won't show as MEDIUM urgency unless the
48
+ * due date is today or tomorrow.
49
+ *
50
+ * NOTE: If this is lower than the highUrgencyCutoff value, MEDIUM urgency
51
+ * will never be shown.
52
+ */
53
+ this.mediumUrgencyCutoff = 2;
54
+ }
55
+ get badge() {
56
+ return this.pBadge;
57
+ }
58
+ get label() {
59
+ return this.pLabel;
60
+ }
61
+ get accessibleLabel() {
62
+ return this.pAccessibleLabel;
63
+ }
64
+ get daysDiff() {
65
+ return this.pDaysDiff;
66
+ }
67
+ // Catch any changes to any of the Input() properties.
68
+ ngOnChanges() {
69
+ this.handleInputChanges();
70
+ }
71
+ // checks the data projected into the component
72
+ ngAfterContentChecked() {
73
+ this.ref.detectChanges();
74
+ }
75
+ // Set up the label, urgency class, and accessibility fields.
76
+ handleInputChanges() {
77
+ // If we don't have a dueDate, skip out of here.
78
+ if (!this.dueDate) {
79
+ return;
80
+ }
81
+ // How many days from today is the due date?
82
+ // Already happened means daysDiff > 0;
83
+ // Today means daysDiff = 0;
84
+ // Yet to come means daysDiff < 0;
85
+ this.pDaysDiff = this.getDaysDifference(this.dueDate, new Date());
86
+ // Is it overdue?
87
+ if (this.daysDiff > 0) {
88
+ this.pBadge = DateBadgeColour.RED;
89
+ const daysLabel = this.daysDiff === 1 ? 'day' : 'days';
90
+ this.pLabel = `+${this.daysDiff} ${daysLabel}`;
91
+ this.pAccessibleLabel = `This task is ${this.daysDiff} ${daysLabel} past its due date`;
92
+ }
93
+ else {
94
+ // Special label for "Today".
95
+ if (this.daysDiff === 0) {
96
+ this.pLabel = 'TODAY';
97
+ this.pAccessibleLabel = 'This task is due to be completed today';
98
+ }
99
+ else {
100
+ this.pLabel = `${formatDate(this.dueDate, 'd MMM', 'en-GB')}`;
101
+ this.pAccessibleLabel = `This task is due to be completed by ${formatDate(this.dueDate, 'd MMMM y', 'en-GB')}`;
102
+ }
103
+ if (this.daysDiff + this.highUrgencyCutoff > 0) {
104
+ this.pBadge = DateBadgeColour.RED;
105
+ }
106
+ else if (this.daysDiff + this.mediumUrgencyCutoff > 0) {
107
+ this.pBadge = DateBadgeColour.ORANGE;
108
+ }
109
+ else {
110
+ this.pBadge = DateBadgeColour.GREEN;
111
+ }
112
+ }
113
+ }
114
+ // This will return the difference between two dates.
115
+ // If fromDate is BEFORE toDate, it will be a positive number.
116
+ // If fromDate is AFTER toDate, it will be a negative number.
117
+ getDaysDifference(fromDate, toDate) {
118
+ const fromEpoch = fromDate.getTime();
119
+ const toEpoch = toDate.getTime();
120
+ const diffSecs = Math.floor((toEpoch - fromEpoch) / 1000);
121
+ return Math.floor(diffSecs / SECONDS_IN_A_DAY);
122
+ }
123
+ static { this.ɵfac = function DueDateComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DueDateComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); }; }
124
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DueDateComponent, selectors: [["xuilib-due-date"]], inputs: { dueDate: "dueDate", highUrgencyCutoff: "highUrgencyCutoff", mediumUrgencyCutoff: "mediumUrgencyCutoff" }, features: [i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [["class", "due-date hmcts-badge", 3, "ngClass", "title", 4, "ngIf"], [1, "due-date", "hmcts-badge", 3, "ngClass", "title"]], template: function DueDateComponent_Template(rf, ctx) { if (rf & 1) {
125
+ i0.ɵɵtemplate(0, DueDateComponent_span_0_Template, 5, 10, "span", 0);
126
+ } if (rf & 2) {
127
+ i0.ɵɵproperty("ngIf", ctx.dueDate);
128
+ } }, dependencies: [i1.NgClass, i1.NgIf, i2.RpxTranslatePipe], styles: [".due-date{white-space:nowrap}.due-date.hmcts-badge--orange{color:#f47738;border-color:#f47738}\n"], encapsulation: 2 }); }
129
+ }
130
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DueDateComponent, [{
131
+ type: Component,
132
+ args: [{ selector: 'xuilib-due-date', encapsulation: ViewEncapsulation.None, template: "<span *ngIf=\"dueDate\" class=\"due-date hmcts-badge\" [ngClass]=\"badge\"\n [title]=\"accessibleLabel | rpxTranslate\" [attr.aria-label]=\"accessibleLabel | rpxTranslate\">\n {{label | rpxTranslate}}\n</span>", styles: [".due-date{white-space:nowrap}.due-date.hmcts-badge--orange{color:#f47738;border-color:#f47738}\n"] }]
133
+ }], () => [{ type: i0.ChangeDetectorRef }], { dueDate: [{
134
+ type: Input
135
+ }], highUrgencyCutoff: [{
136
+ type: Input
137
+ }], mediumUrgencyCutoff: [{
138
+ type: Input
139
+ }] }); })();
140
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DueDateComponent, { className: "DueDateComponent", filePath: "lib/components/due-date/due-date.component.ts", lineNumber: 12 }); })();
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVlLWRhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh1aS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9kdWUtZGF0ZS9kdWUtZGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2R1ZS1kYXRlL2R1ZS1kYXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQXVCLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWEsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkgsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7OztJQ0hoRiwrQkFDa0c7OztJQUNoRyxZQUNGOztJQUFBLGlCQUFPOzs7SUFGRCxBQUQ2QyxzQ0FBaUIsdURBQ3RCOztJQUM1QyxlQUNGO0lBREUsb0VBQ0Y7O0FEUUEsTUFBTSxPQUFPLGdCQUFnQjtJQUUzQixZQUE2QixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQVVuRDs7Ozs7Ozs7Ozs7Ozs7V0FjRztRQUNhLHNCQUFpQixHQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVU7UUFFekQ7Ozs7Ozs7Ozs7OztXQVlHO1FBQ2Esd0JBQW1CLEdBQVcsQ0FBQyxDQUFDO0lBdkNoRCxDQUFDO0lBMkNELElBQVcsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBSUQsSUFBVyxLQUFLO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFJRCxJQUFXLGVBQWU7UUFDeEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENB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QkFBZ0IsQ0FBQyxDQUFDO0lBQ2pELENBQUM7aUhBNUhVLGdCQUFnQjtvRUFBaEIsZ0JBQWdCO1lDWDdCLG9FQUNrRzs7WUFEM0Ysa0NBQWE7OztpRkRXUCxnQkFBZ0I7Y0FONUIsU0FBUzsyQkFDRSxpQkFBaUIsaUJBR1osaUJBQWlCLENBQUMsSUFBSTtrREFZckIsT0FBTztrQkFBdEIsS0FBSztZQWlCVSxpQkFBaUI7a0JBQWhDLEtBQUs7WUFlVSxtQkFBbUI7a0JBQWxDLEtBQUs7O2tGQTFDSyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFmdGVyQ29udGVudENoZWNrZWQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IERhdGVCYWRnZUNvbG91ciwgU0VDT05EU19JTl9BX0RBWSB9IGZyb20gJy4uLy4uL21vZGVscy9kdWUtZGF0ZS5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3h1aWxpYi1kdWUtZGF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnZHVlLWRhdGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnZHVlLWRhdGUuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBEdWVEYXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlckNvbnRlbnRDaGVja2VkIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFRoZSBkdWUgZGF0ZSB0byB1c2UgYXMgdGhlIGJhc2lzIGZvciByZW5kZXJpbmcgdGhpcyBjb21wb25lbnQuIEl0IGlzXG4gICAqIGNvbXBhcmVkIHRvIHRoZSBjdXJyZW50IGRhdGUgYW5kIGRpc3BsYXllZCBhY2NvcmRpbmdseS5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBkdWVEYXRlOiBEYXRlO1xuXG4gIC8qKlxuICAgKiBUaGlzIHNob3VsZCBiZSBjb25zaWRlcmVkIEhJR0ggdXJnZW5jeSBpZiB0aGVyZSBhcmUgZmV3ZXIgdGhhbiB0aGlzXG4gICAqIG1hbnkgZGF5cyB1bnRpbCB0aGUgZHVlIGRhdGUuXG4gICAqICAgICogU2V0IHRvIDAgaWYgeW91IHdhbnQgaXQgdG8gc2hvdyBISUdIIGlmIGl0IHdhcyBkdWUgeWVzdGVyZGF5LlxuICAgKiAgICAqIFNldCB0byAxIGlmIHlvdSB3YW50IGl0IHRvIHNob3cgSElHSCBpZiBpdCdzIGR1ZSB0b2RheS5cbiAgICogICAgKiBTZXQgdG8gMiBpZiB5b3Ugd2FudCBpdCB0byBzaG93IEhJR0ggaWYgaXQncyBkdWUgdG9tb3Jyb3cuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIDAgKFpFUk8pLCB3aGljaCBtZWFucyBpdCB3b24ndCBzaG93IGFzIEhJR0ggdXJnZW5jeSB1bnRpbCB0aGVcbiAgICogZHVlIGRhdGUgaXMgaW4gdGhlIHBhc3QuXG4gICAqXG4gICAqIE5PVEU6IElmIHRoaXMgaXMgaGlnaGVyIHRoYW4gdGhlIG1lZGl1bVVyZ2VuY3lDdXRvZmYgdmFsdWUsIE1FRElVTSB1cmdlbmN5XG4gICAqIHdpbGwgbmV2ZXIgYmUgc2hvd24uXG4gICAqXG4gICAqIEFMU08gTk9URTogQW55dGhpbmcgb3ZlcmR1ZSBpcyBhdXRvbWF0aWNhbGx5IGNvbnNpZGVyZWQgSElHSCB1cmdlbmN5LlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGhpZ2hVcmdlbmN5Q3V0b2ZmOiBudW1iZXIgPSAwOyAvLyBEZWZhdWx0XG5cbiAgLyoqXG4gICAqIFRoaXMgc2hvdWxkIGJlIGNvbnNpZGVyZWQgTUVESVVNIHVyZ2VuY3kgaWYgdGhlcmUgYXJlIGZld2VyIHRoYW4gdGhpc1xuICAgKiBtYW55IGRheXMgdW50aWwgdGhlIGR1ZSBkYXRlLlxuICAgKiAgICAqIFNldCB0byAxIGlmIHlvdSB3YW50IGl0IHRvIHNob3cgTUVESVVNIGlmIGl0J3MgZHVlIHRvZGF5LlxuICAgKiAgICAqIFNldCB0byAyIGlmIHlvdSB3YW50IGl0IHRvIHNob3cgTUVESVVNIGlmIGl0J3MgZHVlIHRvbW9ycm93LlxuICAgKiAgICAqIFNldCB0byAzIGlmIHlvdSB3YW50IGl0IHRvIHNob3cgTUVESVVNIGlmIGl0J3MgZHVlIHRoZSBkYXkgYWZ0ZXIgdG9tb3Jyb3cuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIDIsIHdoaWNoIG1lYW5zIGl0IHdvbid0IHNob3cgYXMgTUVESVVNIHVyZ2VuY3kgdW5sZXNzIHRoZVxuICAgKiBkdWUgZGF0ZSBpcyB0b2RheSBvciB0b21vcnJvdy5cbiAgICpcbiAgICogTk9URTogSWYgdGhpcyBpcyBsb3dlciB0aGFuIHRoZSBoaWdoVXJnZW5jeUN1dG9mZiB2YWx1ZSwgTUVESVVNIHVyZ2VuY3lcbiAgICogd2lsbCBuZXZlciBiZSBzaG93bi5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBtZWRpdW1VcmdlbmN5Q3V0b2ZmOiBudW1iZXIgPSAyO1xuXG4gIC8vIFRoZSBITUNUUyBiYWRnZSBjbGFzcywgdXNlZCBmb3IgY29sb3VyYXRpb24uXG4gIHByaXZhdGUgcEJhZGdlOiBzdHJpbmc7XG4gIHB1YmxpYyBnZXQgYmFkZ2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wQmFkZ2U7XG4gIH1cblxuICAvLyBUaGUgdGV4dHVhbCBsYWJlbCB0byBkaXNwbGF5IGluIHRoZSBjb21wb25lbnQuXG4gIHByaXZhdGUgcExhYmVsOiBzdHJpbmc7XG4gIHB1YmxpYyBnZXQgbGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wTGFiZWw7XG4gIH1cblxuICAvLyBUaGUgYWNjZXNzaWJsZSBsYWJlbCwgd2hpY2ggaXMgYWxzbyB1c2VkIGZvciB0aGUgdG9vbHRpcC5cbiAgcHJpdmF0ZSBwQWNjZXNzaWJsZUxhYmVsOiBzdHJpbmc7XG4gIHB1YmxpYyBnZXQgYWNjZXNzaWJsZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucEFjY2Vzc2libGVMYWJlbDtcbiAgfVxuXG4gIC8vIEhvdyBtYW55IGRheXMgdGhlIGR1ZURhdGUgdmFyaWVzIGZyb20gdG9kYXkuXG4gIHByaXZhdGUgcERheXNEaWZmOiBudW1iZXI7XG4gIHB1YmxpYyBnZXQgZGF5c0RpZmYoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wRGF5c0RpZmY7XG4gIH1cblxuICAvLyBDYXRjaCBhbnkgY2hhbmdlcyB0byBhbnkgb2YgdGhlIElucHV0KCkgcHJvcGVydGllcy5cbiAgcHVibGljIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuaGFuZGxlSW5wdXRDaGFuZ2VzKCk7XG4gIH1cblxuICAvLyBjaGVja3MgdGhlIGRhdGEgcHJvamVjdGVkIGludG8gdGhlIGNvbXBvbmVudFxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIC8vIFNldCB1cCB0aGUgbGFiZWwsIHVyZ2VuY3kgY2xhc3MsIGFuZCBhY2Nlc3NpYmlsaXR5IGZpZWxkcy5cbiAgcHJpdmF0ZSBoYW5kbGVJbnB1dENoYW5nZXMoKSB7XG4gICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhIGR1ZURhdGUsIHNraXAgb3V0IG9mIGhlcmUuXG4gICAgaWYgKCF0aGlzLmR1ZURhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBIb3cgbWFueSBkYXlzIGZyb20gdG9kYXkgaXMgdGhlIGR1ZSBkYXRlP1xuICAgIC8vIEFscmVhZHkgaGFwcGVuZWQgbWVhbnMgZGF5c0RpZmYgPiAwO1xuICAgIC8vIFRvZGF5IG1lYW5zIGRheXNEaWZmID0gMDtcbiAgICAvLyBZZXQgdG8gY29tZSBtZWFucyBkYXlzRGlmZiA8IDA7XG4gICAgdGhpcy5wRGF5c0RpZmYgPSB0aGlzLmdldERheXNEaWZmZXJlbmNlKHRoaXMuZHVlRGF0ZSwgbmV3IERhdGUoKSk7XG5cbiAgICAvLyBJcyBpdCBvdmVyZHVlP1xuICAgIGlmICh0aGlzLmRheXNEaWZmID4gMCkge1xuICAgICAgdGhpcy5wQmFkZ2UgPSBEYXRlQmFkZ2VDb2xvdXIuUkVEO1xuICAgICAgY29uc3QgZGF5c0xhYmVsID0gdGhpcy5kYXlzRGlmZiA9PT0gMSA/ICdkYXknIDogJ2RheXMnO1xuICAgICAgdGhpcy5wTGFiZWwgPSBgKyR7dGhpcy5kYXlzRGlmZn0gJHtkYXlzTGFiZWx9YDtcbiAgICAgIHRoaXMucEFjY2Vzc2libGVMYWJlbCA9IGBUaGlzIHRhc2sgaXMgJHt0aGlzLmRheXNEaWZmfSAke2RheXNMYWJlbH0gcGFzdCBpdHMgZHVlIGRhdGVgO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTcGVjaWFsIGxhYmVsIGZvciBcIlRvZGF5XCIuXG4gICAgICBpZiAodGhpcy5kYXlzRGlmZiA9PT0gMCkge1xuICAgICAgICB0aGlzLnBMYWJlbCA9ICdUT0RBWSc7XG4gICAgICAgIHRoaXMucEFjY2Vzc2libGVMYWJlbCA9ICdUaGlzIHRhc2sgaXMgZHVlIHRvIGJlIGNvbXBsZXRlZCB0b2RheSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBMYWJlbCA9IGAke2Zvcm1hdERhdGUodGhpcy5kdWVEYXRlLCAnZCBNTU0nLCAnZW4tR0InKX1gO1xuICAgICAgICB0aGlzLnBBY2Nlc3NpYmxlTGFiZWwgPSBgVGhpcyB0YXNrIGlzIGR1ZSB0byBiZSBjb21wbGV0ZWQgYnkgJHtmb3JtYXREYXRlKHRoaXMuZHVlRGF0ZSwgJ2QgTU1NTSB5JywgJ2VuLUdCJyl9YDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmRheXNEaWZmICsgdGhpcy5oaWdoVXJnZW5jeUN1dG9mZiA+IDApIHtcbiAgICAgICAgdGhpcy5wQmFkZ2UgPSBEYXRlQmFkZ2VDb2xvdXIuUkVEO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmRheXNEaWZmICsgdGhpcy5tZWRpdW1VcmdlbmN5Q3V0b2ZmID4gMCkge1xuICAgICAgICB0aGlzLnBCYWRnZSA9IERhdGVCYWRnZUNvbG91ci5PUkFOR0U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBCYWRnZSA9IERhdGVCYWRnZUNvbG91ci5HUkVFTjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIHdpbGwgcmV0dXJuIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIGRhdGVzLlxuICAvLyBJZiBmcm9tRGF0ZSBpcyBCRUZPUkUgdG9EYXRlLCBpdCB3aWxsIGJlIGEgcG9zaXRpdmUgbnVtYmVyLlxuICAvLyBJZiBmcm9tRGF0ZSBpcyBBRlRFUiB0b0RhdGUsIGl0IHdpbGwgYmUgYSBuZWdhdGl2ZSBudW1iZXIuXG4gIHByaXZhdGUgZ2V0RGF5c0RpZmZlcmVuY2UoZnJvbURhdGU6IERhdGUsIHRvRGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgY29uc3QgZnJvbUVwb2NoID0gZnJvbURhdGUuZ2V0VGltZSgpO1xuICAgIGNvbnN0IHRvRXBvY2ggPSB0b0RhdGUuZ2V0VGltZSgpO1xuICAgIGNvbnN0IGRpZmZTZWNzID0gTWF0aC5mbG9vcigodG9FcG9jaCAtIGZyb21FcG9jaCkgLyAxMDAwKTtcbiAgICByZXR1cm4gTWF0aC5mbG9vcihkaWZmU2VjcyAvIFNFQ09ORFNfSU5fQV9EQVkpO1xuICB9XG59XG4iLCI8c3BhbiAqbmdJZj1cImR1ZURhdGVcIiBjbGFzcz1cImR1ZS1kYXRlIGhtY3RzLWJhZGdlXCIgW25nQ2xhc3NdPVwiYmFkZ2VcIlxuICAgICAgW3RpdGxlXT1cImFjY2Vzc2libGVMYWJlbCB8IHJweFRyYW5zbGF0ZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiYWNjZXNzaWJsZUxhYmVsIHwgcnB4VHJhbnNsYXRlXCI+XG4gIHt7bGFiZWwgfCBycHhUcmFuc2xhdGV9fVxuPC9zcGFuPiJdfQ==
@@ -0,0 +1,80 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "@angular/router";
5
+ import * as i3 from "rpx-xui-translation";
6
+ const _c0 = ["*"];
7
+ function ExuiPageWrapperComponent_a_1_Template(rf, ctx) { if (rf & 1) {
8
+ i0.ɵɵelementStart(0, "a", 6);
9
+ i0.ɵɵtext(1);
10
+ i0.ɵɵpipe(2, "rpxTranslate");
11
+ i0.ɵɵelementEnd();
12
+ } if (rf & 2) {
13
+ const ctx_r0 = i0.ɵɵnextContext();
14
+ i0.ɵɵproperty("routerLink", ctx_r0.backLink);
15
+ i0.ɵɵadvance();
16
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 2, "Back"));
17
+ } }
18
+ function ExuiPageWrapperComponent_h1_5_span_1_Template(rf, ctx) { if (rf & 1) {
19
+ i0.ɵɵelementStart(0, "span", 9);
20
+ i0.ɵɵtext(1);
21
+ i0.ɵɵpipe(2, "rpxTranslate");
22
+ i0.ɵɵelementEnd();
23
+ } if (rf & 2) {
24
+ const ctx_r0 = i0.ɵɵnextContext(2);
25
+ i0.ɵɵadvance();
26
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, ctx_r0.fnTitle));
27
+ } }
28
+ function ExuiPageWrapperComponent_h1_5_Template(rf, ctx) { if (rf & 1) {
29
+ i0.ɵɵelementStart(0, "h1", 7);
30
+ i0.ɵɵtemplate(1, ExuiPageWrapperComponent_h1_5_span_1_Template, 3, 3, "span", 8);
31
+ i0.ɵɵtext(2);
32
+ i0.ɵɵpipe(3, "rpxTranslate");
33
+ i0.ɵɵelementEnd();
34
+ } if (rf & 2) {
35
+ const ctx_r0 = i0.ɵɵnextContext();
36
+ i0.ɵɵadvance();
37
+ i0.ɵɵproperty("ngIf", ctx_r0.fnTitle);
38
+ i0.ɵɵadvance();
39
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 2, ctx_r0.title), " ");
40
+ } }
41
+ /**
42
+ * Main Page Wrapper
43
+ * Responsible for:
44
+ * Wrapping content within the gov-uk html elements bellow
45
+ * @prop showBackLink - switch for back link
46
+ * @prop appHeaderTitle = appHeaderTitle
47
+ * @prop appFunctionalTitle = appFunctionalTitle
48
+ * @prop summaryErrors list of errors
49
+ * @prop back link, appHeaderTitle (appHeaderTitle), summaryErrors (array of errors)
50
+ */
51
+ export class ExuiPageWrapperComponent {
52
+ constructor() { }
53
+ static { this.ɵfac = function ExuiPageWrapperComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ExuiPageWrapperComponent)(); }; }
54
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ExuiPageWrapperComponent, selectors: [["exui-page-wrapper"]], inputs: { backLink: "backLink", title: "title", fnTitle: "fnTitle" }, ngContentSelectors: _c0, decls: 7, vars: 2, consts: [[1, "page"], ["class", "govuk-back-link", 3, "routerLink", 4, "ngIf"], [1, "govuk-width-container"], ["id", "content", "role", "main", 1, "govuk-main-wrapper"], [1, "govuk-grid-row"], ["class", "govuk-heading-xl", 4, "ngIf"], [1, "govuk-back-link", 3, "routerLink"], [1, "govuk-heading-xl"], ["class", "govuk-caption-xl", 4, "ngIf"], [1, "govuk-caption-xl"]], template: function ExuiPageWrapperComponent_Template(rf, ctx) { if (rf & 1) {
55
+ i0.ɵɵprojectionDef();
56
+ i0.ɵɵelementStart(0, "div", 0);
57
+ i0.ɵɵtemplate(1, ExuiPageWrapperComponent_a_1_Template, 3, 4, "a", 1);
58
+ i0.ɵɵelementStart(2, "div", 2)(3, "main", 3)(4, "div", 4);
59
+ i0.ɵɵtemplate(5, ExuiPageWrapperComponent_h1_5_Template, 4, 4, "h1", 5);
60
+ i0.ɵɵprojection(6);
61
+ i0.ɵɵelementEnd()()()();
62
+ } if (rf & 2) {
63
+ i0.ɵɵadvance();
64
+ i0.ɵɵproperty("ngIf", ctx.backLink);
65
+ i0.ɵɵadvance(4);
66
+ i0.ɵɵproperty("ngIf", ctx.title);
67
+ } }, dependencies: [i1.NgIf, i2.RouterLink, i3.RpxTranslatePipe], styles: [".page[_ngcontent-%COMP%]{width:100%}"] }); }
68
+ }
69
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ExuiPageWrapperComponent, [{
70
+ type: Component,
71
+ args: [{ selector: 'exui-page-wrapper', template: "<div class=\"page\">\n <a *ngIf=\"backLink\" [routerLink]=\"backLink\" class=\"govuk-back-link\">{{'Back' | rpxTranslate}}</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 | rpxTranslate}}</span>\n {{title | rpxTranslate}}\n </h1>\n <ng-content>\n\n </ng-content>\n </div>\n </main>\n </div>\n</div>\n", styles: [".page{width:100%}\n"] }]
72
+ }], () => [], { backLink: [{
73
+ type: Input
74
+ }], title: [{
75
+ type: Input
76
+ }], fnTitle: [{
77
+ type: Input
78
+ }] }); })();
79
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ExuiPageWrapperComponent, { className: "ExuiPageWrapperComponent", filePath: "lib/components/exui-main-wrapper/exui-page-wrapper.component.ts", lineNumber: 17 }); })();
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh1aS1wYWdlLXdyYXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh1aS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9leHVpLW1haW4td3JhcHBlci9leHVpLXBhZ2Utd3JhcHBlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2V4dWktbWFpbi13cmFwcGVyL2V4dWktcGFnZS13cmFwcGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0lDQzdDLDRCQUFvRTtJQUFBLFlBQXlCOztJQUFBLGlCQUFJOzs7SUFBN0UsNENBQXVCO0lBQXlCLGNBQXlCO0lBQXpCLGtEQUF5Qjs7O0lBS3JGLCtCQUErQztJQUFBLFlBQTBCOztJQUFBLGlCQUFPOzs7SUFBakMsY0FBMEI7SUFBMUIsMERBQTBCOzs7SUFEM0UsNkJBQTJDO0lBQ3pDLGdGQUErQztJQUMvQyxZQUNGOztJQUFBLGlCQUFLOzs7SUFGSSxjQUFhO0lBQWIscUNBQWE7SUFDcEIsY0FDRjtJQURFLG1FQUNGOztBRFBSOzs7Ozs7Ozs7R0FTRztBQU1ILE1BQU0sT0FBTyx3QkFBd0I7SUFNbkMsZ0JBQWdCLENBQUM7eUhBTk4sd0JBQXdCO29FQUF4Qix3QkFBd0I7O1lDaEJyQyw4QkFBa0I7WUFDaEIscUVBQW9FO1lBR2hFLEFBREYsQUFERiw4QkFBbUMsY0FDeUIsYUFDNUI7WUFDMUIsdUVBQTJDO1lBSTNDLGtCQUVhO1lBSXJCLEFBREUsQUFERSxBQURFLGlCQUFNLEVBQ0QsRUFDSCxFQUNGOztZQWRBLGNBQWM7WUFBZCxtQ0FBYztZQUlQLGVBQVc7WUFBWCxnQ0FBVzs7O2lGRFdYLHdCQUF3QjtjQUxwQyxTQUFTOzJCQUNFLG1CQUFtQjtvQkFNYixRQUFRO2tCQUF2QixLQUFLO1lBQ1UsS0FBSztrQkFBcEIsS0FBSztZQUNVLE9BQU87a0JBQXRCLEtBQUs7O2tGQUpLLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4vKipcbiAqIE1haW4gUGFnZSBXcmFwcGVyXG4gKiBSZXNwb25zaWJsZSBmb3I6XG4gKiBXcmFwcGluZyBjb250ZW50IHdpdGhpbiB0aGUgZ292LXVrIGh0bWwgZWxlbWVudHMgYmVsbG93XG4gKiBAcHJvcCBzaG93QmFja0xpbmsgLSBzd2l0Y2ggZm9yIGJhY2sgbGlua1xuICogQHByb3AgYXBwSGVhZGVyVGl0bGUgPSBhcHBIZWFkZXJUaXRsZVxuICogQHByb3AgYXBwRnVuY3Rpb25hbFRpdGxlID0gYXBwRnVuY3Rpb25hbFRpdGxlXG4gKiBAcHJvcCBzdW1tYXJ5RXJyb3JzIGxpc3Qgb2YgZXJyb3JzXG4gKiBAcHJvcCBiYWNrIGxpbmssIGFwcEhlYWRlclRpdGxlIChhcHBIZWFkZXJUaXRsZSksIHN1bW1hcnlFcnJvcnMgKGFycmF5IG9mIGVycm9ycylcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZXh1aS1wYWdlLXdyYXBwZXInLFxuICB0ZW1wbGF0ZVVybDogJ2V4dWktcGFnZS13cmFwcGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2V4dWktcGFnZS13cmFwcGVyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRXh1aVBhZ2VXcmFwcGVyQ29tcG9uZW50ICB7XG5cbiAgQElucHV0KCkgcHVibGljIGJhY2tMaW5rOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgZm5UaXRsZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJwYWdlXCI+XG4gIDxhICpuZ0lmPVwiYmFja0xpbmtcIiBbcm91dGVyTGlua109XCJiYWNrTGlua1wiIGNsYXNzPVwiZ292dWstYmFjay1saW5rXCI+e3snQmFjaycgfCBycHhUcmFuc2xhdGV9fTwvYT5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLXdpZHRoLWNvbnRhaW5lclwiPlxuICAgIDxtYWluIGlkPVwiY29udGVudFwiIHJvbGU9XCJtYWluXCIgY2xhc3M9XCJnb3Z1ay1tYWluLXdyYXBwZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLXJvd1wiPlxuICAgICAgICA8aDEgKm5nSWY9XCJ0aXRsZVwiIGNsYXNzPVwiZ292dWstaGVhZGluZy14bFwiPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZm5UaXRsZVwiIGNsYXNzPVwiZ292dWstY2FwdGlvbi14bFwiPnt7Zm5UaXRsZSB8IHJweFRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICAgIHt7dGl0bGUgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICA8L2gxPlxuICAgICAgICA8bmctY29udGVudD5cblxuICAgICAgICA8L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L21haW4+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,220 @@
1
+ import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
+ import { FormControl, FormGroup } from '@angular/forms';
3
+ import { Subject } from 'rxjs';
4
+ import { getValues } from '../generic-filter/generic-filter-utils';
5
+ import { SearchLocationComponent } from '../search-location/search-location.component';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common";
8
+ import * as i2 from "../search-location/search-location.component";
9
+ function FindLocationComponent_label_3_Template(rf, ctx) { if (rf & 1) {
10
+ i0.ɵɵelementStart(0, "label", 6);
11
+ i0.ɵɵtext(1);
12
+ i0.ɵɵelementEnd();
13
+ } if (rf & 2) {
14
+ const ctx_r0 = i0.ɵɵnextContext();
15
+ i0.ɵɵadvance();
16
+ i0.ɵɵtextInterpolate(ctx_r0.locationTitle);
17
+ } }
18
+ function FindLocationComponent_a_6_Template(rf, ctx) { if (rf & 1) {
19
+ const _r2 = i0.ɵɵgetCurrentView();
20
+ i0.ɵɵelementStart(0, "a", 7);
21
+ i0.ɵɵlistener("click", function FindLocationComponent_a_6_Template_a_click_0_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); ctx_r0.addLocation(); return i0.ɵɵresetView($event.preventDefault()); });
22
+ i0.ɵɵtext(1, " Add location ");
23
+ i0.ɵɵelementEnd();
24
+ } }
25
+ function FindLocationComponent_ul_7_li_1_Template(rf, ctx) { if (rf & 1) {
26
+ const _r3 = i0.ɵɵgetCurrentView();
27
+ i0.ɵɵelementStart(0, "li", 10)(1, "a", 11);
28
+ i0.ɵɵlistener("click", function FindLocationComponent_ul_7_li_1_Template_a_click_1_listener($event) { const selection_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r0 = i0.ɵɵnextContext(2); ctx_r0.removeLocation(selection_r4); return i0.ɵɵresetView($event.preventDefault()); });
29
+ i0.ɵɵtext(2);
30
+ i0.ɵɵelementEnd()();
31
+ } if (rf & 2) {
32
+ const selection_r4 = ctx.$implicit;
33
+ const ctx_r0 = i0.ɵɵnextContext(2);
34
+ i0.ɵɵadvance(2);
35
+ i0.ɵɵtextInterpolate1(" ", selection_r4[ctx_r0.propertyNameFilter], " ");
36
+ } }
37
+ function FindLocationComponent_ul_7_Template(rf, ctx) { if (rf & 1) {
38
+ i0.ɵɵelementStart(0, "ul", 8);
39
+ i0.ɵɵtemplate(1, FindLocationComponent_ul_7_li_1_Template, 3, 1, "li", 9);
40
+ i0.ɵɵelementEnd();
41
+ } if (rf & 2) {
42
+ const ctx_r0 = i0.ɵɵnextContext();
43
+ i0.ɵɵadvance();
44
+ i0.ɵɵproperty("ngForOf", ctx_r0.selectedLocations);
45
+ } }
46
+ export class FindLocationComponent {
47
+ constructor() {
48
+ this.locationFieldChanged = new EventEmitter();
49
+ this.submitted = true;
50
+ this.enableAddLocationButton = true;
51
+ this.locationTitle = 'Search for a location by name';
52
+ this.disableInputField = false;
53
+ this.tempSelectedLocation = null;
54
+ this.serviceIds = 'SSCS,IA';
55
+ this.pServices = [];
56
+ this.pDisabled = false;
57
+ }
58
+ get disabled() {
59
+ return this.pDisabled;
60
+ }
61
+ set disabled(value) {
62
+ if (value) {
63
+ this.searchLocationComponent.resetSearchTerm();
64
+ this.removeSelectedValues();
65
+ }
66
+ this.pDisabled = this.disableInputField === true ? true : null;
67
+ }
68
+ get services() {
69
+ return this.pServices;
70
+ }
71
+ set services(value) {
72
+ this.pServices = value;
73
+ const field = this.fields.find(f => {
74
+ if (this.field) {
75
+ return f.name === this.field.findLocationField;
76
+ }
77
+ });
78
+ if (field) {
79
+ if (typeof value === 'string') {
80
+ this.serviceIds = value;
81
+ }
82
+ else {
83
+ this.serviceIds = getValues(field.options, value).filter(x => x !== 'services_all').join(',');
84
+ }
85
+ }
86
+ }
87
+ get selectedLocations() {
88
+ return this.form.get(this.field.name)?.value?.filter(location => location.epimms_id);
89
+ }
90
+ get propertyNameFilter() {
91
+ const DEFAULT_PROPERTY_NAME = 'site_name';
92
+ return this.field.propertyNameFilter ? this.field.propertyNameFilter
93
+ : DEFAULT_PROPERTY_NAME;
94
+ }
95
+ ngOnInit() {
96
+ if (this.formSubmissionEvent$) {
97
+ this.formSubmissionEventSubscription = this.formSubmissionEvent$.subscribe(() => {
98
+ // Shouldn't reset search term if single mode and already has selected
99
+ const oneSelectedAndMaxSelectedOne = this.selectedLocations.length === 1 && this.field.maxSelected === 1;
100
+ if (!oneSelectedAndMaxSelectedOne) {
101
+ this.searchLocationComponent.resetSearchTerm();
102
+ }
103
+ });
104
+ }
105
+ }
106
+ addLocation() {
107
+ if (this.tempSelectedLocation) {
108
+ this.addSelectedLocationsToForm([this.tempSelectedLocation]);
109
+ this.tempSelectedLocation = null;
110
+ this.searchLocationComponent.resetSearchTerm();
111
+ }
112
+ }
113
+ removeLocation(location) {
114
+ if (location.epimms_id) {
115
+ const formArray = this.form.get(this.field.name);
116
+ const index = formArray.value.findIndex(selectedLocation => selectedLocation.epimms_id === location.epimms_id);
117
+ if (index > -1) {
118
+ formArray.removeAt(index);
119
+ }
120
+ }
121
+ }
122
+ onInputChanged(term) {
123
+ // if the filter is in single mode clear the selected locations
124
+ if (typeof term === 'string' && this.field.maxSelected === 1) {
125
+ this.removeSelectedValues();
126
+ }
127
+ }
128
+ onSearchInputChanged() {
129
+ this.locationFieldChanged.emit();
130
+ }
131
+ onLocationSelected(location) {
132
+ if (this.field.maxSelected === 1) {
133
+ this.removeSelectedValues();
134
+ this.addSelectedLocationsToForm([location]);
135
+ }
136
+ else {
137
+ if (!this.selectedLocations.find(x => x.epimms_id === location.epimms_id)) {
138
+ if (location.epimms_id) {
139
+ this.tempSelectedLocation = location;
140
+ }
141
+ }
142
+ }
143
+ }
144
+ removeSelectedValues() {
145
+ const formArray = this.form.get(this.field?.name);
146
+ if (formArray) {
147
+ for (let i = 0; i < formArray.length; i++) {
148
+ formArray.removeAt(i);
149
+ }
150
+ }
151
+ }
152
+ addSelectedLocationsToForm(locations) {
153
+ const formArray = this.form.get(this.field.name);
154
+ for (const location of locations) {
155
+ formArray.push(new FormControl(location));
156
+ }
157
+ }
158
+ ngOnDestroy() {
159
+ this.formSubmissionEventSubscription?.unsubscribe();
160
+ }
161
+ static { this.ɵfac = function FindLocationComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || FindLocationComponent)(); }; }
162
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FindLocationComponent, selectors: [["xuilib-find-location"]], viewQuery: function FindLocationComponent_Query(rf, ctx) { if (rf & 1) {
163
+ i0.ɵɵviewQuery(SearchLocationComponent, 7);
164
+ } if (rf & 2) {
165
+ let _t;
166
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.searchLocationComponent = _t.first);
167
+ } }, inputs: { submitted: "submitted", enableAddLocationButton: "enableAddLocationButton", form: "form", field: "field", fields: "fields", locationTitle: "locationTitle", disableInputField: "disableInputField", formSubmissionEvent$: "formSubmissionEvent$", disabled: "disabled", services: "services" }, outputs: { locationFieldChanged: "locationFieldChanged" }, decls: 8, vars: 13, consts: [[1, "location-picker-custom"], [1, "search-location"], ["id", "input-selected-location-label", 4, "ngIf"], [1, "search-location", 3, "locationTermSearchInputChanged", "locationSelected", "searchLocationChanged", "form", "field", "selectedLocations", "delay", "disabled", "singleMode", "bookingCheck", "serviceIds", "propertyNameFilter", "locationType"], ["href", "#", "class", "govuk-button add-location-button", "data-module", "govuk-button", 3, "click", 4, "ngIf"], ["class", "hmcts-filter-tags selection-container", 4, "ngIf"], ["id", "input-selected-location-label"], ["href", "#", "data-module", "govuk-button", 1, "govuk-button", "add-location-button", 3, "click"], [1, "hmcts-filter-tags", "selection-container"], ["class", "location-selection", 4, "ngFor", "ngForOf"], [1, "location-selection"], ["href", "#", 1, "hmcts-filter__tag", 3, "click"]], template: function FindLocationComponent_Template(rf, ctx) { if (rf & 1) {
168
+ i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div");
169
+ i0.ɵɵtemplate(3, FindLocationComponent_label_3_Template, 2, 1, "label", 2);
170
+ i0.ɵɵelementEnd();
171
+ i0.ɵɵelementStart(4, "exui-search-location", 3);
172
+ i0.ɵɵlistener("locationTermSearchInputChanged", function FindLocationComponent_Template_exui_search_location_locationTermSearchInputChanged_4_listener($event) { return ctx.onInputChanged($event); })("locationSelected", function FindLocationComponent_Template_exui_search_location_locationSelected_4_listener($event) { return ctx.onLocationSelected($event); })("searchLocationChanged", function FindLocationComponent_Template_exui_search_location_searchLocationChanged_4_listener() { return ctx.onSearchInputChanged(); });
173
+ i0.ɵɵelementEnd()();
174
+ i0.ɵɵelementStart(5, "div");
175
+ i0.ɵɵtemplate(6, FindLocationComponent_a_6_Template, 2, 0, "a", 4);
176
+ i0.ɵɵelementEnd();
177
+ i0.ɵɵtemplate(7, FindLocationComponent_ul_7_Template, 2, 1, "ul", 5);
178
+ i0.ɵɵelementEnd();
179
+ } if (rf & 2) {
180
+ i0.ɵɵadvance(3);
181
+ i0.ɵɵproperty("ngIf", ctx.locationTitle);
182
+ i0.ɵɵadvance();
183
+ i0.ɵɵproperty("form", ctx.form)("field", ctx.field)("selectedLocations", ctx.selectedLocations)("delay", 300)("disabled", ctx.disabled)("singleMode", ctx.field.maxSelected === 1)("bookingCheck", ctx.field.bookingCheckType)("serviceIds", ctx.serviceIds)("propertyNameFilter", ctx.propertyNameFilter)("locationType", "case-management");
184
+ i0.ɵɵadvance(2);
185
+ i0.ɵɵproperty("ngIf", ctx.enableAddLocationButton);
186
+ i0.ɵɵadvance();
187
+ i0.ɵɵproperty("ngIf", ctx.field.maxSelected != 1);
188
+ } }, dependencies: [i1.NgForOf, i1.NgIf, i2.SearchLocationComponent], styles: [".add-location-button[_ngcontent-%COMP%]{margin-top:10px;margin-bottom:0}.search-location__input-container[_ngcontent-%COMP%]{display:flex}.search-location[_ngcontent-%COMP%] .auto-complete-container[_ngcontent-%COMP%]{min-width:unset;width:calc(100% - 4px)}.search-location__input[_ngcontent-%COMP%]{flex:1 0 auto}.search-location[_ngcontent-%COMP%] .govuk-button--secondary[_ngcontent-%COMP%]{background-color:#ddd}"] }); }
189
+ }
190
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FindLocationComponent, [{
191
+ type: Component,
192
+ args: [{ selector: 'xuilib-find-location', template: "<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=\"#\" (click)=\"addLocation(); $event.preventDefault()\" 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); $event.preventDefault()\" href=\"#\">\n {{ selection[propertyNameFilter] }}\n </a>\n </li>\n </ul>\n</div>\n", styles: [".add-location-button{margin-top:10px;margin-bottom:0}.search-location__input-container{display:flex}.search-location .auto-complete-container{min-width:unset;width:calc(100% - 4px)}.search-location__input{flex:1 0 auto}.search-location .govuk-button--secondary{background-color:#ddd}\n"] }]
193
+ }], null, { locationFieldChanged: [{
194
+ type: Output
195
+ }], submitted: [{
196
+ type: Input
197
+ }], enableAddLocationButton: [{
198
+ type: Input
199
+ }], form: [{
200
+ type: Input
201
+ }], field: [{
202
+ type: Input
203
+ }], fields: [{
204
+ type: Input
205
+ }], locationTitle: [{
206
+ type: Input
207
+ }], disableInputField: [{
208
+ type: Input
209
+ }], formSubmissionEvent$: [{
210
+ type: Input
211
+ }], searchLocationComponent: [{
212
+ type: ViewChild,
213
+ args: [SearchLocationComponent, { static: true }]
214
+ }], disabled: [{
215
+ type: Input
216
+ }], services: [{
217
+ type: Input
218
+ }] }); })();
219
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FindLocationComponent, { className: "FindLocationComponent", filePath: "lib/components/find-location/find-location.component.ts", lineNumber: 13 }); })();
220
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1sb2NhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2ZpbmQtbG9jYXRpb24vZmluZC1sb2NhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2ZpbmQtbG9jYXRpb24vZmluZC1sb2NhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFhLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUU3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOENBQThDLENBQUM7Ozs7O0lDRmpGLGdDQUFnRTtJQUFBLFlBQWlCO0lBQUEsaUJBQVE7OztJQUF6QixjQUFpQjtJQUFqQiwwQ0FBaUI7Ozs7SUFvQm5GLDRCQUFpSztJQUFySiwwSkFBUyxvQkFBYSx3QkFBRSx1QkFBdUIsS0FBQztJQUMxRCw4QkFDRjtJQUFBLGlCQUFJOzs7O0lBS0YsQUFERiw4QkFBNEUsWUFDeUI7SUFBdEUsZ01BQVMsbUNBQXlCLHdCQUFFLHVCQUF1QixLQUFDO0lBQ3ZGLFlBQ0Y7SUFDRixBQURFLGlCQUFJLEVBQ0Q7Ozs7SUFGRCxlQUNGO0lBREUsd0VBQ0Y7OztJQUpKLDZCQUFpRjtJQUMvRSx5RUFBNEU7SUFLOUUsaUJBQUs7OztJQUxtRCxjQUFvQjtJQUFwQixrREFB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QUFDLHVCQUF1QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQVV6QyxRQUFRO2tCQURsQixLQUFLO1lBY0ssUUFBUTtrQkFEbEIsS0FBSzs7a0ZBbENLLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZpbHRlckZpZWxkQ29uZmlnLCBMb2NhdGlvbkJ5RVBJTU1TTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgZ2V0VmFsdWVzIH0gZnJvbSAnLi4vZ2VuZXJpYy1maWx0ZXIvZ2VuZXJpYy1maWx0ZXItdXRpbHMnO1xuaW1wb3J0IHsgU2VhcmNoTG9jYXRpb25Db21wb25lbnQgfSBmcm9tICcuLi9zZWFyY2gtbG9jYXRpb24vc2VhcmNoLWxvY2F0aW9uLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3h1aWxpYi1maW5kLWxvY2F0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbmQtbG9jYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maW5kLWxvY2F0aW9uLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRmluZExvY2F0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBAT3V0cHV0KCkgcHVibGljIGxvY2F0aW9uRmllbGRDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBASW5wdXQoKSBwdWJsaWMgc3VibWl0dGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIGVuYWJsZUFkZExvY2F0aW9uQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIGZvcm06IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgcHVibGljIGZpZWxkOiBGaWx0ZXJGaWVsZENvbmZpZztcbiAgQElucHV0KCkgcHVibGljIGZpZWxkczogRmlsdGVyRmllbGRDb25maWdbXTtcbiAgQElucHV0KCkgcHVibGljIGxvY2F0aW9uVGl0bGUgPSAnU2VhcmNoIGZvciBhIGxvY2F0aW9uIGJ5IG5hbWUnO1xuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZUlucHV0RmllbGQgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGZvcm1TdWJtaXNzaW9uRXZlbnQkOiBTdWJqZWN0PHZvaWQ+O1xuICBwdWJsaWMgdGVtcFNlbGVjdGVkTG9jYXRpb246IExvY2F0aW9uQnlFUElNTVNNb2RlbCA9IG51bGw7XG4gIHB1YmxpYyBzZXJ2aWNlSWRzOiBzdHJpbmcgPSAnU1NDUyxJQSc7XG4gIEBWaWV3Q2hpbGQoU2VhcmNoTG9jYXRpb25Db21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBzZWFyY2hMb2NhdGlvbkNvbXBvbmVudDogU2VhcmNoTG9jYXRpb25Db21wb25lbnQ7XG4gIHByaXZhdGUgcFNlcnZpY2VzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIHBEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIGZvcm1TdWJtaXNzaW9uRXZlbnRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBEaXNhYmxlZDtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuc2VhcmNoTG9jYXRpb25Db21wb25lbnQucmVzZXRTZWFyY2hUZXJtKCk7XG4gICAgICB0aGlzLnJlbW92ZVNlbGVjdGVkVmFsdWVzKCk7XG4gICAgfVxuICAgIHRoaXMucERpc2FibGVkID0gdGhpcy5kaXNhYmxlSW5wdXRGaWVsZCA9PT0gdHJ1ZSA/IHRydWUgOiBudWxsO1xuICB9XG5cbiAgcHVibGljIGdldCBzZXJ2aWNlcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMucFNlcnZpY2VzO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzZXJ2aWNlcyh2YWx1ZTogc3RyaW5nW10pIHtcbiAgICB0aGlzLnBTZXJ2aWNlcyA9IHZhbHVlO1xuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5maWVsZHMuZmluZChmID0+IHtcbiAgICAgIGlmICh0aGlzLmZpZWxkKSB7XG4gICAgICAgIHJldHVybiBmLm5hbWUgPT09IHRoaXMuZmllbGQuZmluZExvY2F0aW9uRmllbGQ7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoZmllbGQpIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRoaXMuc2VydmljZUlkcyA9IHZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZXJ2aWNlSWRzID0gZ2V0VmFsdWVzKGZpZWxkLm9wdGlvbnMsIHZhbHVlKS5maWx0ZXIoeCA9PiB4ICE9PSAnc2VydmljZXNfYWxsJykuam9pbignLCcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWRMb2NhdGlvbnMoKSB7XG4gICAgcmV0dXJuICh0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQubmFtZSk/LnZhbHVlIGFzIExvY2F0aW9uQnlFUElNTVNNb2RlbFtdKT8uZmlsdGVyKGxvY2F0aW9uID0+IGxvY2F0aW9uLmVwaW1tc19pZCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHByb3BlcnR5TmFtZUZpbHRlcigpOiBrZXlvZiBMb2NhdGlvbkJ5RVBJTU1TTW9kZWwge1xuICAgIGNvbnN0IERFRkFVTFRfUFJPUEVSVFlfTkFNRSA9ICdzaXRlX25hbWUnO1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BlcnR5TmFtZUZpbHRlciA/IHRoaXMuZmllbGQucHJvcGVydHlOYW1lRmlsdGVyIGFzIGtleW9mIExvY2F0aW9uQnlFUElNTVNNb2RlbFxuICAgICAgOiBERUZBVUxUX1BST1BFUlRZX05BTUU7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZm9ybVN1Ym1pc3Npb25FdmVudCQpIHtcbiAgICAgIHRoaXMuZm9ybVN1Ym1pc3Npb25FdmVudFN1YnNjcmlwdGlvbiA9IHRoaXMuZm9ybVN1Ym1pc3Npb25FdmVudCQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgLy8gU2hvdWxkbid0IHJlc2V0IHNlYXJjaCB0ZXJtIGlmIHNpbmdsZSBtb2RlIGFuZCBhbHJlYWR5IGhhcyBzZWxlY3RlZFxuICAgICAgICBjb25zdCBvbmVTZWxlY3RlZEFuZE1heFNlbGVjdGVkT25lID0gdGhpcy5zZWxlY3RlZExvY2F0aW9ucy5sZW5ndGggPT09IDEgJiYgdGhpcy5maWVsZC5tYXhTZWxlY3RlZCA9PT0gMTtcbiAgICAgICAgaWYgKCFvbmVTZWxlY3RlZEFuZE1heFNlbGVjdGVkT25lKSB7XG4gICAgICAgICAgdGhpcy5zZWFyY2hMb2NhdGlvbkNvbXBvbmVudC5yZXNldFNlYXJjaFRlcm0oKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFkZExvY2F0aW9uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRlbXBTZWxlY3RlZExvY2F0aW9uKSB7XG4gICAgICB0aGlzLmFkZFNlbGVjdGVkTG9jYXRpb25zVG9Gb3JtKFt0aGlzLnRlbXBTZWxlY3RlZExvY2F0aW9uXSk7XG4gICAgICB0aGlzLnRlbXBTZWxlY3RlZExvY2F0aW9uID0gbnVsbDtcbiAgICAgIHRoaXMuc2VhcmNoTG9jYXRpb25Db21wb25lbnQucmVzZXRTZWFyY2hUZXJtKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlbW92ZUxvY2F0aW9uKGxvY2F0aW9uOiBMb2NhdGlvbkJ5RVBJTU1TTW9kZWwpOiB2b2lkIHtcbiAgICBpZiAobG9jYXRpb24uZXBpbW1zX2lkKSB7XG4gICAgICBjb25zdCBmb3JtQXJyYXkgPSB0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQubmFtZSkgYXMgRm9ybUFycmF5O1xuICAgICAgY29uc3QgaW5kZXggPSAoZm9ybUFycmF5LnZhbHVlIGFzIExvY2F0aW9uQnlFUElNTVNNb2RlbFtdKS5maW5kSW5kZXgoc2VsZWN0ZWRMb2NhdGlvbiA9PiBzZWxlY3RlZExvY2F0aW9uLmVwaW1tc19pZCA9PT0gbG9jYXRpb24uZXBpbW1zX2lkKTtcbiAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgIGZvcm1BcnJheS5yZW1vdmVBdChpbmRleCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uSW5wdXRDaGFuZ2VkKHRlcm06IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIGlmIHRoZSBmaWx0ZXIgaXMgaW4gc2luZ2xlIG1vZGUgY2xlYXIgdGhlIHNlbGVjdGVkIGxvY2F0aW9uc1xuICAgIGlmICh0eXBlb2YgdGVybSA9PT0gJ3N0cmluZycgJiYgdGhpcy5maWVsZC5tYXhTZWxlY3RlZCA9PT0gMSkge1xuICAgICAgICB0aGlzLnJlbW92ZVNlbGVjdGVkVmFsdWVzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uU2VhcmNoSW5wdXRDaGFuZ2VkKCk6IHZvaWQge1xuICAgIHRoaXMubG9jYXRpb25GaWVsZENoYW5nZWQuZW1pdCgpO1xuICB9XG5cbiAgcHVibGljIG9uTG9jYXRpb25TZWxlY3RlZChsb2NhdGlvbjogTG9jYXRpb25CeUVQSU1NU01vZGVsKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmllbGQubWF4U2VsZWN0ZWQgPT09IDEpIHtcbiAgICAgIHRoaXMucmVtb3ZlU2VsZWN0ZWRWYWx1ZXMoKTtcbiAgICAgIHRoaXMuYWRkU2VsZWN0ZWRMb2NhdGlvbnNUb0Zvcm0oW2xvY2F0aW9uXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghdGhpcy5zZWxlY3RlZExvY2F0aW9ucy5maW5kKHggPT4geC5lcGltbXNfaWQgPT09IGxvY2F0aW9uLmVwaW1tc19pZCkpIHtcbiAgICAgICAgaWYgKGxvY2F0aW9uLmVwaW1tc19pZCkge1xuICAgICAgICAgIHRoaXMudGVtcFNlbGVjdGVkTG9jYXRpb24gPSBsb2NhdGlvbjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlU2VsZWN0ZWRWYWx1ZXMoKTogdm9pZCB7XG4gICAgY29uc3QgZm9ybUFycmF5ID0gdGhpcy5mb3JtLmdldCh0aGlzLmZpZWxkPy5uYW1lKSBhcyBGb3JtQXJyYXk7XG4gICAgaWYgKGZvcm1BcnJheSkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmb3JtQXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgZm9ybUFycmF5LnJlbW92ZUF0KGkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkU2VsZWN0ZWRMb2NhdGlvbnNUb0Zvcm0obG9jYXRpb25zOiBMb2NhdGlvbkJ5RVBJTU1TTW9kZWxbXSk6IHZvaWQge1xuICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuZm9ybS5nZXQodGhpcy5maWVsZC5uYW1lKSBhcyBGb3JtQXJyYXk7XG4gICAgZm9yIChjb25zdCBsb2NhdGlvbiBvZiBsb2NhdGlvbnMpIHtcbiAgICAgIGZvcm1BcnJheS5wdXNoKG5ldyBGb3JtQ29udHJvbChsb2NhdGlvbikpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmZvcm1TdWJtaXNzaW9uRXZlbnRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJsb2NhdGlvbi1waWNrZXItY3VzdG9tXCI+XG4gIDxkaXYgY2xhc3M9XCJzZWFyY2gtbG9jYXRpb25cIj5cbiAgICA8ZGl2PlxuICAgICAgPGxhYmVsIGlkPVwiaW5wdXQtc2VsZWN0ZWQtbG9jYXRpb24tbGFiZWxcIiAqbmdJZj1cImxvY2F0aW9uVGl0bGVcIj57e2xvY2F0aW9uVGl0bGV9fTwvbGFiZWw+XG4gICAgPC9kaXY+XG4gICAgPGV4dWktc2VhcmNoLWxvY2F0aW9uIGNsYXNzPVwic2VhcmNoLWxvY2F0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1dPVwiZm9ybVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWVsZF09XCJmaWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZExvY2F0aW9uc109XCJzZWxlY3RlZExvY2F0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtkZWxheV09XCIzMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbc2luZ2xlTW9kZV09XCJmaWVsZC5tYXhTZWxlY3RlZCA9PT0gMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtib29raW5nQ2hlY2tdPVwiZmllbGQuYm9va2luZ0NoZWNrVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtzZXJ2aWNlSWRzXT1cInNlcnZpY2VJZHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJvcGVydHlOYW1lRmlsdGVyXT1cInByb3BlcnR5TmFtZUZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChsb2NhdGlvblRlcm1TZWFyY2hJbnB1dENoYW5nZWQpPVwib25JbnB1dENoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChsb2NhdGlvblNlbGVjdGVkKT1cIm9uTG9jYXRpb25TZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlYXJjaExvY2F0aW9uQ2hhbmdlZCk9XCJvblNlYXJjaElucHV0Q2hhbmdlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2xvY2F0aW9uVHlwZV09XCInY2FzZS1tYW5hZ2VtZW50J1wiPlxuICAgIDwvZXh1aS1zZWFyY2gtbG9jYXRpb24+XG4gIDwvZGl2PlxuXG4gIDxkaXY+XG4gICAgPGEgaHJlZj1cIiNcIiAoY2xpY2spPVwiYWRkTG9jYXRpb24oKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIiBjbGFzcz1cImdvdnVrLWJ1dHRvbiBhZGQtbG9jYXRpb24tYnV0dG9uXCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1idXR0b25cIiAqbmdJZj1cImVuYWJsZUFkZExvY2F0aW9uQnV0dG9uXCI+XG4gICAgICBBZGQgbG9jYXRpb25cbiAgICA8L2E+XG4gIDwvZGl2PlxuXG4gIDx1bCBjbGFzcz1cImhtY3RzLWZpbHRlci10YWdzIHNlbGVjdGlvbi1jb250YWluZXJcIiAqbmdJZj1cImZpZWxkLm1heFNlbGVjdGVkICE9IDFcIj5cbiAgICA8bGkgY2xhc3M9XCJsb2NhdGlvbi1zZWxlY3Rpb25cIiAgKm5nRm9yPVwibGV0IHNlbGVjdGlvbiBvZiBzZWxlY3RlZExvY2F0aW9uc1wiPlxuICAgICAgPGEgY2xhc3M9XCJobWN0cy1maWx0ZXJfX3RhZ1wiIChjbGljayk9XCJyZW1vdmVMb2NhdGlvbihzZWxlY3Rpb24pOyAkZXZlbnQucHJldmVudERlZmF1bHQoKVwiIGhyZWY9XCIjXCI+XG4gICAgICAgIHt7IHNlbGVjdGlvbltwcm9wZXJ0eU5hbWVGaWx0ZXJdIH19XG4gICAgICA8L2E+XG4gICAgPC9saT5cbiAgPC91bD5cbjwvZGl2PlxuIl19