@hmcts/opal-frontend-common 0.0.2

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 (262) hide show
  1. package/README.md +24 -0
  2. package/esm2022/hmcts-opal-frontend-common.mjs +5 -0
  3. package/esm2022/lib/components/govuk/govuk-button/govuk-button.component.mjs +34 -0
  4. package/esm2022/lib/components/govuk/govuk-text-input/govuk-text-input.component.mjs +57 -0
  5. package/esm2022/lib/components/govuk/index.mjs +3 -0
  6. package/esm2022/lib/guards/auth/auth.guard.mjs +20 -0
  7. package/esm2022/lib/guards/auth/index.mjs +2 -0
  8. package/esm2022/lib/guards/can-deactivate/can-deactivate.guard.mjs +6 -0
  9. package/esm2022/lib/guards/can-deactivate/index.mjs +5 -0
  10. package/esm2022/lib/guards/can-deactivate/interfaces/can-deactivate-can-component-deactivate.interface.mjs +2 -0
  11. package/esm2022/lib/guards/can-deactivate/interfaces/index.mjs +2 -0
  12. package/esm2022/lib/guards/has-flow-state/has-flow-state.guard.mjs +16 -0
  13. package/esm2022/lib/guards/has-flow-state/index.mjs +2 -0
  14. package/esm2022/lib/guards/helpers/get-guard-with-dummy-url.mjs +19 -0
  15. package/esm2022/lib/guards/helpers/handle-observable-result.mjs +13 -0
  16. package/esm2022/lib/guards/helpers/index.mjs +5 -0
  17. package/esm2022/lib/guards/helpers/run-auth-guard-with-context.mjs +15 -0
  18. package/esm2022/lib/guards/helpers/run-has-flow-state-guard-with-context.mjs +9 -0
  19. package/esm2022/lib/guards/index.mjs +10 -0
  20. package/esm2022/lib/guards/route-permissions/index.mjs +2 -0
  21. package/esm2022/lib/guards/route-permissions/route-permissions.guard.mjs +25 -0
  22. package/esm2022/lib/guards/signed-in/index.mjs +3 -0
  23. package/esm2022/lib/guards/signed-in/signed-in.guard.mjs +20 -0
  24. package/esm2022/lib/guards/types/can-deactivate.type.mjs +2 -0
  25. package/esm2022/lib/guards/types/guard-return.type.mjs +2 -0
  26. package/esm2022/lib/guards/types/index.mjs +3 -0
  27. package/esm2022/lib/interceptors/http-error/http-error.interceptor.mjs +24 -0
  28. package/esm2022/lib/interceptors/index.mjs +3 -0
  29. package/esm2022/lib/opal-frontend-common.module.mjs +22 -0
  30. package/esm2022/lib/pages/access-denied/access-denied.component.mjs +18 -0
  31. package/esm2022/lib/pages/index.mjs +4 -0
  32. package/esm2022/lib/pages/routing/constants/routing-paths.constant.mjs +9 -0
  33. package/esm2022/lib/pages/routing/constants/routing-titles.constant.mjs +9 -0
  34. package/esm2022/lib/pages/routing/interfaces/routing-paths.interface.mjs +2 -0
  35. package/esm2022/lib/pages/routing/pages.routes.mjs +24 -0
  36. package/esm2022/lib/pages/sign-in/interfaces/index.mjs +2 -0
  37. package/esm2022/lib/pages/sign-in/interfaces/sign-in-stub-form.interface.mjs +2 -0
  38. package/esm2022/lib/pages/sign-in/sign-in-sso/sign-in-sso.component.mjs +23 -0
  39. package/esm2022/lib/pages/sign-in/sign-in-stub/sign-in-stub.component.mjs +39 -0
  40. package/esm2022/lib/pages/sign-in/sign-in.component.mjs +38 -0
  41. package/esm2022/lib/resolvers/index.mjs +3 -0
  42. package/esm2022/lib/resolvers/title/index.mjs +2 -0
  43. package/esm2022/lib/resolvers/title/title.resolver.mjs +22 -0
  44. package/esm2022/lib/resolvers/user-state/index.mjs +2 -0
  45. package/esm2022/lib/resolvers/user-state/user-state.resolver.mjs +12 -0
  46. package/esm2022/lib/routing/constants/index.mjs +2 -0
  47. package/esm2022/lib/routing/constants/sso-endpoints.constant.mjs +7 -0
  48. package/esm2022/lib/routing/index.mjs +3 -0
  49. package/esm2022/lib/routing/interfaces/child-routing-paths.interface.mjs +2 -0
  50. package/esm2022/lib/routing/interfaces/index.mjs +4 -0
  51. package/esm2022/lib/routing/interfaces/nested-routes.interface.mjs +2 -0
  52. package/esm2022/lib/routing/interfaces/sso-endpoints.interface.mjs +2 -0
  53. package/esm2022/lib/services/app-initializer-service/app-initializer.service.mjs +36 -0
  54. package/esm2022/lib/services/app-initializer-service/index.mjs +2 -0
  55. package/esm2022/lib/services/app-insights/app-insights.service.mjs +73 -0
  56. package/esm2022/lib/services/app-insights/index.mjs +4 -0
  57. package/esm2022/lib/services/auth-service/auth.service.mjs +36 -0
  58. package/esm2022/lib/services/auth-service/index.mjs +2 -0
  59. package/esm2022/lib/services/date-service/date.service.mjs +182 -0
  60. package/esm2022/lib/services/date-service/index.mjs +4 -0
  61. package/esm2022/lib/services/index.mjs +12 -0
  62. package/esm2022/lib/services/launch-darkly/index.mjs +5 -0
  63. package/esm2022/lib/services/launch-darkly/launch-darkly.service.mjs +94 -0
  64. package/esm2022/lib/services/launch-darkly/mocks/index.mjs +3 -0
  65. package/esm2022/lib/services/launch-darkly/mocks/launch-darkly-change-flags.mock.mjs +5 -0
  66. package/esm2022/lib/services/launch-darkly/mocks/launch-darkly-flags.mock.mjs +5 -0
  67. package/esm2022/lib/services/permissions-service/index.mjs +4 -0
  68. package/esm2022/lib/services/permissions-service/permissions.service.mjs +40 -0
  69. package/esm2022/lib/services/session-service/constants/index.mjs +2 -0
  70. package/esm2022/lib/services/session-service/constants/session-endpoints.constant.mjs +5 -0
  71. package/esm2022/lib/services/session-service/index.mjs +7 -0
  72. package/esm2022/lib/services/session-service/interfaces/index.mjs +4 -0
  73. package/esm2022/lib/services/session-service/interfaces/session-endpoints.interface.mjs +2 -0
  74. package/esm2022/lib/services/session-service/interfaces/session-token-expiry.interface.mjs +2 -0
  75. package/esm2022/lib/services/session-service/interfaces/session-user-state.interface.mjs +2 -0
  76. package/esm2022/lib/services/session-service/mocks/index.mjs +3 -0
  77. package/esm2022/lib/services/session-service/mocks/session-token-expiry.mock.mjs +5 -0
  78. package/esm2022/lib/services/session-service/mocks/session-user-state.mock.mjs +386 -0
  79. package/esm2022/lib/services/session-service/session.service.mjs +64 -0
  80. package/esm2022/lib/services/sort-service/index.mjs +6 -0
  81. package/esm2022/lib/services/sort-service/interfaces/index.mjs +3 -0
  82. package/esm2022/lib/services/sort-service/interfaces/sort-service-values.interface.mjs +2 -0
  83. package/esm2022/lib/services/sort-service/interfaces/sort-service.interface.mjs +2 -0
  84. package/esm2022/lib/services/sort-service/sort-service.mjs +90 -0
  85. package/esm2022/lib/services/sort-service/types/index.mjs +2 -0
  86. package/esm2022/lib/services/sort-service/types/sort-service.type.mjs +2 -0
  87. package/esm2022/lib/services/transfer-state-service/index.mjs +6 -0
  88. package/esm2022/lib/services/transfer-state-service/interfaces/index.mjs +4 -0
  89. package/esm2022/lib/services/transfer-state-service/interfaces/transfer-state-app-insights-config.interface.mjs +2 -0
  90. package/esm2022/lib/services/transfer-state-service/interfaces/transfer-state-launch-darkly-config.interface.mjs +2 -0
  91. package/esm2022/lib/services/transfer-state-service/interfaces/transfer-state-server-state.interface.mjs +2 -0
  92. package/esm2022/lib/services/transfer-state-service/mocks/index.mjs +4 -0
  93. package/esm2022/lib/services/transfer-state-service/mocks/transfer-state-app-insights-config.mock.mjs +6 -0
  94. package/esm2022/lib/services/transfer-state-service/mocks/transfer-state-launch-darkly-config.mock.mjs +6 -0
  95. package/esm2022/lib/services/transfer-state-service/mocks/transfer-state.mock.mjs +8 -0
  96. package/esm2022/lib/services/transfer-state-service/transfer-state.service.mjs +59 -0
  97. package/esm2022/lib/services/transformation-service/index.mjs +5 -0
  98. package/esm2022/lib/services/transformation-service/interfaces/index.mjs +2 -0
  99. package/esm2022/lib/services/transformation-service/interfaces/transform-item.interface.mjs +2 -0
  100. package/esm2022/lib/services/transformation-service/transformation.service.mjs +69 -0
  101. package/esm2022/lib/services/utils/index.mjs +4 -0
  102. package/esm2022/lib/services/utils/utils.service.mjs +86 -0
  103. package/esm2022/lib/stores/global/global.store.mjs +33 -0
  104. package/esm2022/lib/stores/global/index.mjs +6 -0
  105. package/esm2022/lib/stores/global/interfaces/error-state.interface.mjs +2 -0
  106. package/esm2022/lib/stores/global/interfaces/index.mjs +2 -0
  107. package/esm2022/lib/stores/global/types/global-store.type.mjs +2 -0
  108. package/esm2022/lib/stores/global/types/index.mjs +2 -0
  109. package/esm2022/lib/stores/index.mjs +2 -0
  110. package/esm2022/lib/validators/alphabetical-text/alphabetical-text.validator.mjs +10 -0
  111. package/esm2022/lib/validators/amount/amount.validator.mjs +15 -0
  112. package/esm2022/lib/validators/date-after-year/date-after-year.validator.mjs +12 -0
  113. package/esm2022/lib/validators/date-before/date-before.validator.mjs +15 -0
  114. package/esm2022/lib/validators/date-of-birth/date-of-birth.validator.mjs +18 -0
  115. package/esm2022/lib/validators/future-date/future-date.validator.mjs +15 -0
  116. package/esm2022/lib/validators/index.mjs +20 -0
  117. package/esm2022/lib/validators/invalid-value/invalid-value.validator.mjs +9 -0
  118. package/esm2022/lib/validators/national-insurance-number/national-insurance-number.validator.mjs +16 -0
  119. package/esm2022/lib/validators/numerical-only/numerical-only.validator.mjs +10 -0
  120. package/esm2022/lib/validators/optional-max-length/optional-max-length.validator.mjs +10 -0
  121. package/esm2022/lib/validators/optional-valid-date/optional-valid-date.validator.mjs +23 -0
  122. package/esm2022/lib/validators/optional-valid-email-address/optional-valid-email-address.validator.mjs +11 -0
  123. package/esm2022/lib/validators/optional-valid-telephone/optional-valid-telephone.validator.mjs +14 -0
  124. package/esm2022/lib/validators/over-eighteen/over-eighteen.validator.mjs +45 -0
  125. package/esm2022/lib/validators/past-date/past-date.validator.mjs +16 -0
  126. package/esm2022/lib/validators/special-characters/special-characters.validator.mjs +11 -0
  127. package/esm2022/lib/validators/two-decimal-places/two-decimal-places.validator.mjs +12 -0
  128. package/esm2022/lib/validators/valid-value/valid-value.validator.mjs +9 -0
  129. package/esm2022/public-api.mjs +11 -0
  130. package/fesm2022/hmcts-opal-frontend-common-sign-in-stub.component-CysPzJGJ.mjs +41 -0
  131. package/fesm2022/hmcts-opal-frontend-common-sign-in-stub.component-CysPzJGJ.mjs.map +1 -0
  132. package/fesm2022/hmcts-opal-frontend-common.mjs +1947 -0
  133. package/fesm2022/hmcts-opal-frontend-common.mjs.map +1 -0
  134. package/index.d.ts +5 -0
  135. package/lib/components/govuk/govuk-button/govuk-button.component.d.ts +14 -0
  136. package/lib/components/govuk/govuk-text-input/govuk-text-input.component.d.ts +17 -0
  137. package/lib/components/govuk/index.d.ts +2 -0
  138. package/lib/guards/auth/auth.guard.d.ts +6 -0
  139. package/lib/guards/auth/index.d.ts +1 -0
  140. package/lib/guards/can-deactivate/can-deactivate.guard.d.ts +3 -0
  141. package/lib/guards/can-deactivate/index.d.ts +2 -0
  142. package/lib/guards/can-deactivate/interfaces/can-deactivate-can-component-deactivate.interface.d.ts +4 -0
  143. package/lib/guards/can-deactivate/interfaces/index.d.ts +2 -0
  144. package/lib/guards/has-flow-state/has-flow-state.guard.d.ts +2 -0
  145. package/lib/guards/has-flow-state/index.d.ts +1 -0
  146. package/lib/guards/helpers/get-guard-with-dummy-url.d.ts +12 -0
  147. package/lib/guards/helpers/handle-observable-result.d.ts +8 -0
  148. package/lib/guards/helpers/index.d.ts +4 -0
  149. package/lib/guards/helpers/run-auth-guard-with-context.d.ts +9 -0
  150. package/lib/guards/helpers/run-has-flow-state-guard-with-context.d.ts +3 -0
  151. package/lib/guards/index.d.ts +7 -0
  152. package/lib/guards/route-permissions/index.d.ts +1 -0
  153. package/lib/guards/route-permissions/route-permissions.guard.d.ts +2 -0
  154. package/lib/guards/signed-in/index.d.ts +1 -0
  155. package/lib/guards/signed-in/signed-in.guard.d.ts +8 -0
  156. package/lib/guards/types/can-deactivate.type.d.ts +3 -0
  157. package/lib/guards/types/guard-return.type.d.ts +2 -0
  158. package/lib/guards/types/index.d.ts +2 -0
  159. package/lib/interceptors/http-error/http-error.interceptor.d.ts +2 -0
  160. package/lib/interceptors/index.d.ts +2 -0
  161. package/lib/opal-frontend-common.module.d.ts +14 -0
  162. package/lib/pages/access-denied/access-denied.component.d.ts +7 -0
  163. package/lib/pages/index.d.ts +3 -0
  164. package/lib/pages/routing/constants/routing-paths.constant.d.ts +2 -0
  165. package/lib/pages/routing/constants/routing-titles.constant.d.ts +2 -0
  166. package/lib/pages/routing/interfaces/routing-paths.interface.d.ts +8 -0
  167. package/lib/pages/routing/pages.routes.d.ts +2 -0
  168. package/lib/pages/sign-in/interfaces/index.d.ts +2 -0
  169. package/lib/pages/sign-in/interfaces/sign-in-stub-form.interface.d.ts +3 -0
  170. package/lib/pages/sign-in/sign-in-sso/sign-in-sso.component.d.ts +11 -0
  171. package/lib/pages/sign-in/sign-in-stub/sign-in-stub.component.d.ts +19 -0
  172. package/lib/pages/sign-in/sign-in.component.d.ts +51 -0
  173. package/lib/resolvers/index.d.ts +2 -0
  174. package/lib/resolvers/title/index.d.ts +1 -0
  175. package/lib/resolvers/title/title.resolver.d.ts +10 -0
  176. package/lib/resolvers/user-state/index.d.ts +1 -0
  177. package/lib/resolvers/user-state/user-state.resolver.d.ts +7 -0
  178. package/lib/routing/constants/index.d.ts +1 -0
  179. package/lib/routing/constants/sso-endpoints.constant.d.ts +2 -0
  180. package/lib/routing/index.d.ts +2 -0
  181. package/lib/routing/interfaces/child-routing-paths.interface.d.ts +6 -0
  182. package/lib/routing/interfaces/index.d.ts +3 -0
  183. package/lib/routing/interfaces/nested-routes.interface.d.ts +4 -0
  184. package/lib/routing/interfaces/sso-endpoints.interface.d.ts +6 -0
  185. package/lib/services/app-initializer-service/app-initializer.service.d.ts +20 -0
  186. package/lib/services/app-initializer-service/index.d.ts +1 -0
  187. package/lib/services/app-insights/app-insights.service.d.ts +33 -0
  188. package/lib/services/app-insights/index.d.ts +1 -0
  189. package/lib/services/auth-service/auth.service.d.ts +8 -0
  190. package/lib/services/auth-service/index.d.ts +1 -0
  191. package/lib/services/date-service/date.service.d.ts +123 -0
  192. package/lib/services/date-service/index.d.ts +1 -0
  193. package/lib/services/index.d.ts +11 -0
  194. package/lib/services/launch-darkly/index.d.ts +2 -0
  195. package/lib/services/launch-darkly/launch-darkly.service.d.ts +41 -0
  196. package/lib/services/launch-darkly/mocks/index.d.ts +2 -0
  197. package/lib/services/launch-darkly/mocks/launch-darkly-change-flags.mock.d.ts +10 -0
  198. package/lib/services/launch-darkly/mocks/launch-darkly-flags.mock.d.ts +4 -0
  199. package/lib/services/permissions-service/index.d.ts +1 -0
  200. package/lib/services/permissions-service/permissions.service.d.ts +14 -0
  201. package/lib/services/session-service/constants/index.d.ts +1 -0
  202. package/lib/services/session-service/constants/session-endpoints.constant.d.ts +2 -0
  203. package/lib/services/session-service/index.d.ts +4 -0
  204. package/lib/services/session-service/interfaces/index.d.ts +3 -0
  205. package/lib/services/session-service/interfaces/session-endpoints.interface.d.ts +4 -0
  206. package/lib/services/session-service/interfaces/session-token-expiry.interface.d.ts +4 -0
  207. package/lib/services/session-service/interfaces/session-user-state.interface.d.ts +15 -0
  208. package/lib/services/session-service/mocks/index.d.ts +2 -0
  209. package/lib/services/session-service/mocks/session-token-expiry.mock.d.ts +2 -0
  210. package/lib/services/session-service/mocks/session-user-state.mock.d.ts +2 -0
  211. package/lib/services/session-service/session.service.d.ts +30 -0
  212. package/lib/services/sort-service/index.d.ts +3 -0
  213. package/lib/services/sort-service/interfaces/index.d.ts +2 -0
  214. package/lib/services/sort-service/interfaces/sort-service-values.interface.d.ts +6 -0
  215. package/lib/services/sort-service/interfaces/sort-service.interface.d.ts +4 -0
  216. package/lib/services/sort-service/sort-service.d.ts +64 -0
  217. package/lib/services/sort-service/types/index.d.ts +1 -0
  218. package/lib/services/sort-service/types/sort-service.type.d.ts +1 -0
  219. package/lib/services/transfer-state-service/index.d.ts +3 -0
  220. package/lib/services/transfer-state-service/interfaces/index.d.ts +3 -0
  221. package/lib/services/transfer-state-service/interfaces/transfer-state-app-insights-config.interface.d.ts +5 -0
  222. package/lib/services/transfer-state-service/interfaces/transfer-state-launch-darkly-config.interface.d.ts +5 -0
  223. package/lib/services/transfer-state-service/interfaces/transfer-state-server-state.interface.d.ts +7 -0
  224. package/lib/services/transfer-state-service/mocks/index.d.ts +3 -0
  225. package/lib/services/transfer-state-service/mocks/transfer-state-app-insights-config.mock.d.ts +5 -0
  226. package/lib/services/transfer-state-service/mocks/transfer-state-launch-darkly-config.mock.d.ts +5 -0
  227. package/lib/services/transfer-state-service/mocks/transfer-state.mock.d.ts +2 -0
  228. package/lib/services/transfer-state-service/transfer-state.service.d.ts +23 -0
  229. package/lib/services/transformation-service/index.d.ts +2 -0
  230. package/lib/services/transformation-service/interfaces/index.d.ts +1 -0
  231. package/lib/services/transformation-service/interfaces/transform-item.interface.d.ts +6 -0
  232. package/lib/services/transformation-service/transformation.service.d.ts +30 -0
  233. package/lib/services/utils/index.d.ts +1 -0
  234. package/lib/services/utils/utils.service.d.ts +54 -0
  235. package/lib/stores/global/global.store.d.ts +35 -0
  236. package/lib/stores/global/index.d.ts +3 -0
  237. package/lib/stores/global/interfaces/error-state.interface.d.ts +4 -0
  238. package/lib/stores/global/interfaces/index.d.ts +1 -0
  239. package/lib/stores/global/types/global-store.type.d.ts +2 -0
  240. package/lib/stores/global/types/index.d.ts +1 -0
  241. package/lib/stores/index.d.ts +1 -0
  242. package/lib/validators/alphabetical-text/alphabetical-text.validator.d.ts +2 -0
  243. package/lib/validators/amount/amount.validator.d.ts +2 -0
  244. package/lib/validators/date-after-year/date-after-year.validator.d.ts +2 -0
  245. package/lib/validators/date-before/date-before.validator.d.ts +2 -0
  246. package/lib/validators/date-of-birth/date-of-birth.validator.d.ts +2 -0
  247. package/lib/validators/future-date/future-date.validator.d.ts +2 -0
  248. package/lib/validators/index.d.ts +19 -0
  249. package/lib/validators/invalid-value/invalid-value.validator.d.ts +2 -0
  250. package/lib/validators/national-insurance-number/national-insurance-number.validator.d.ts +2 -0
  251. package/lib/validators/numerical-only/numerical-only.validator.d.ts +2 -0
  252. package/lib/validators/optional-max-length/optional-max-length.validator.d.ts +2 -0
  253. package/lib/validators/optional-valid-date/optional-valid-date.validator.d.ts +2 -0
  254. package/lib/validators/optional-valid-email-address/optional-valid-email-address.validator.d.ts +2 -0
  255. package/lib/validators/optional-valid-telephone/optional-valid-telephone.validator.d.ts +2 -0
  256. package/lib/validators/over-eighteen/over-eighteen.validator.d.ts +14 -0
  257. package/lib/validators/past-date/past-date.validator.d.ts +2 -0
  258. package/lib/validators/special-characters/special-characters.validator.d.ts +2 -0
  259. package/lib/validators/two-decimal-places/two-decimal-places.validator.d.ts +2 -0
  260. package/lib/validators/valid-value/valid-value.validator.d.ts +2 -0
  261. package/package.json +28 -0
  262. package/public-api.d.ts +10 -0
@@ -0,0 +1,23 @@
1
+ export function optionalValidDateValidator() {
2
+ return (control) => {
3
+ const value = control.value;
4
+ if (value) {
5
+ // Check if the value matches the format dd/MM/yyyy
6
+ const dateRegex = /^(\d{2})\/(\d{2})\/(\d{4})$/;
7
+ const match = value.match(dateRegex);
8
+ if (!match) {
9
+ return { invalidDateFormat: { value: value } };
10
+ }
11
+ const [, day, month, year] = match;
12
+ // Check if the date is valid
13
+ const date = new Date(`${year}-${month}-${day}`);
14
+ if (date.getDate() !== parseInt(day, 10) ||
15
+ date.getMonth() + 1 !== parseInt(month, 10) ||
16
+ date.getFullYear() !== parseInt(year, 10)) {
17
+ return { invalidDate: { value: value } };
18
+ }
19
+ }
20
+ return null;
21
+ };
22
+ }
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uYWwtdmFsaWQtZGF0ZS52YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vcGFsLWZyb250ZW5kLWNvbW1vbi9zcmMvbGliL3ZhbGlkYXRvcnMvb3B0aW9uYWwtdmFsaWQtZGF0ZS9vcHRpb25hbC12YWxpZC1kYXRlLnZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFVBQVUsMEJBQTBCO0lBQ3hDLE9BQU8sQ0FBQyxPQUF3QixFQUFxQyxFQUFFO1FBQ3JFLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDNUIsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLG1EQUFtRDtZQUNuRCxNQUFNLFNBQVMsR0FBRyw2QkFBNkIsQ0FBQztZQUNoRCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRXJDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDWCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUNqRCxDQUFDO1lBRUQsTUFBTSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7WUFFbkMsNkJBQTZCO1lBQzdCLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLEtBQUssSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ2pELElBQ0UsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLFFBQVEsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO2dCQUNwQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO2dCQUMzQyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsRUFDekMsQ0FBQztnQkFDRCxPQUFPLEVBQUUsV0FBVyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDM0MsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWYWxpZGF0b3JGbiwgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gb3B0aW9uYWxWYWxpZERhdGVWYWxpZGF0b3IoKTogVmFsaWRhdG9yRm4ge1xuICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9IHwgbnVsbCA9PiB7XG4gICAgY29uc3QgdmFsdWUgPSBjb250cm9sLnZhbHVlO1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgLy8gQ2hlY2sgaWYgdGhlIHZhbHVlIG1hdGNoZXMgdGhlIGZvcm1hdCBkZC9NTS95eXl5XG4gICAgICBjb25zdCBkYXRlUmVnZXggPSAvXihcXGR7Mn0pXFwvKFxcZHsyfSlcXC8oXFxkezR9KSQvO1xuICAgICAgY29uc3QgbWF0Y2ggPSB2YWx1ZS5tYXRjaChkYXRlUmVnZXgpO1xuXG4gICAgICBpZiAoIW1hdGNoKSB7XG4gICAgICAgIHJldHVybiB7IGludmFsaWREYXRlRm9ybWF0OiB7IHZhbHVlOiB2YWx1ZSB9IH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IFssIGRheSwgbW9udGgsIHllYXJdID0gbWF0Y2g7XG5cbiAgICAgIC8vIENoZWNrIGlmIHRoZSBkYXRlIGlzIHZhbGlkXG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoYCR7eWVhcn0tJHttb250aH0tJHtkYXl9YCk7XG4gICAgICBpZiAoXG4gICAgICAgIGRhdGUuZ2V0RGF0ZSgpICE9PSBwYXJzZUludChkYXksIDEwKSB8fFxuICAgICAgICBkYXRlLmdldE1vbnRoKCkgKyAxICE9PSBwYXJzZUludChtb250aCwgMTApIHx8XG4gICAgICAgIGRhdGUuZ2V0RnVsbFllYXIoKSAhPT0gcGFyc2VJbnQoeWVhciwgMTApXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHsgaW52YWxpZERhdGU6IHsgdmFsdWU6IHZhbHVlIH0gfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG59XG4iXX0=
@@ -0,0 +1,11 @@
1
+ export function optionalEmailAddressValidator() {
2
+ const emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
3
+ return (control) => {
4
+ if (control.value) {
5
+ const valid = emailPattern.test(control.value);
6
+ return valid ? null : { emailPattern: { value: control.value } };
7
+ }
8
+ return null;
9
+ };
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uYWwtdmFsaWQtZW1haWwtYWRkcmVzcy52YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vcGFsLWZyb250ZW5kLWNvbW1vbi9zcmMvbGliL3ZhbGlkYXRvcnMvb3B0aW9uYWwtdmFsaWQtZW1haWwtYWRkcmVzcy9vcHRpb25hbC12YWxpZC1lbWFpbC1hZGRyZXNzLnZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFVBQVUsNkJBQTZCO0lBQzNDLE1BQU0sWUFBWSxHQUFHLGtEQUFrRCxDQUFDO0lBQ3hFLE9BQU8sQ0FBQyxPQUF3QixFQUFxQyxFQUFFO1FBQ3JFLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2xCLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9DLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQ25FLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWYWxpZGF0b3JGbiwgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gb3B0aW9uYWxFbWFpbEFkZHJlc3NWYWxpZGF0b3IoKTogVmFsaWRhdG9yRm4ge1xuICBjb25zdCBlbWFpbFBhdHRlcm4gPSAvXlthLXpBLVowLTkuXyUrLV0rQFthLXpBLVowLTkuLV0rXFwuW2EtekEtWl17Mix9JC87XG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiB1bmtub3duIH0gfCBudWxsID0+IHtcbiAgICBpZiAoY29udHJvbC52YWx1ZSkge1xuICAgICAgY29uc3QgdmFsaWQgPSBlbWFpbFBhdHRlcm4udGVzdChjb250cm9sLnZhbHVlKTtcbiAgICAgIHJldHVybiB2YWxpZCA/IG51bGwgOiB7IGVtYWlsUGF0dGVybjogeyB2YWx1ZTogY29udHJvbC52YWx1ZSB9IH07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9O1xufVxuIl19
@@ -0,0 +1,14 @@
1
+ export function optionalPhoneNumberValidator() {
2
+ const numericPattern = /^[\d\s]*$/;
3
+ return (control) => {
4
+ if (control.value) {
5
+ const valueWithoutSpaces = control.value.replace(/\s+/g, '');
6
+ const isValidPattern = numericPattern.test(control.value);
7
+ const isValidLength = valueWithoutSpaces.length === 11;
8
+ const valid = isValidPattern && isValidLength;
9
+ return valid ? null : { phoneNumberPattern: { value: control.value } };
10
+ }
11
+ return null;
12
+ };
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uYWwtdmFsaWQtdGVsZXBob25lLnZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29wYWwtZnJvbnRlbmQtY29tbW9uL3NyYy9saWIvdmFsaWRhdG9ycy9vcHRpb25hbC12YWxpZC10ZWxlcGhvbmUvb3B0aW9uYWwtdmFsaWQtdGVsZXBob25lLnZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFVBQVUsNEJBQTRCO0lBQzFDLE1BQU0sY0FBYyxHQUFHLFdBQVcsQ0FBQztJQUNuQyxPQUFPLENBQUMsT0FBd0IsRUFBcUMsRUFBRTtRQUNyRSxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNsQixNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM3RCxNQUFNLGNBQWMsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxRCxNQUFNLGFBQWEsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLEtBQUssRUFBRSxDQUFDO1lBQ3ZELE1BQU0sS0FBSyxHQUFHLGNBQWMsSUFBSSxhQUFhLENBQUM7WUFDOUMsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUN6RSxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsaWRhdG9yRm4sIEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuZXhwb3J0IGZ1bmN0aW9uIG9wdGlvbmFsUGhvbmVOdW1iZXJWYWxpZGF0b3IoKTogVmFsaWRhdG9yRm4ge1xuICBjb25zdCBudW1lcmljUGF0dGVybiA9IC9eW1xcZFxcc10qJC87XG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiB1bmtub3duIH0gfCBudWxsID0+IHtcbiAgICBpZiAoY29udHJvbC52YWx1ZSkge1xuICAgICAgY29uc3QgdmFsdWVXaXRob3V0U3BhY2VzID0gY29udHJvbC52YWx1ZS5yZXBsYWNlKC9cXHMrL2csICcnKTtcbiAgICAgIGNvbnN0IGlzVmFsaWRQYXR0ZXJuID0gbnVtZXJpY1BhdHRlcm4udGVzdChjb250cm9sLnZhbHVlKTtcbiAgICAgIGNvbnN0IGlzVmFsaWRMZW5ndGggPSB2YWx1ZVdpdGhvdXRTcGFjZXMubGVuZ3RoID09PSAxMTtcbiAgICAgIGNvbnN0IHZhbGlkID0gaXNWYWxpZFBhdHRlcm4gJiYgaXNWYWxpZExlbmd0aDtcbiAgICAgIHJldHVybiB2YWxpZCA/IG51bGwgOiB7IHBob25lTnVtYmVyUGF0dGVybjogeyB2YWx1ZTogY29udHJvbC52YWx1ZSB9IH07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9O1xufVxuIl19
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Validates whether a date, constructed from provided form controls for day, month and year
3
+ * is at least 18 years in the past.
4
+ *
5
+ * @param dayControl - Name of the control for the day portion of the date
6
+ * @param monthControl - Name of the control for the month portion of the date
7
+ * @param yearControl - Name of the control for the year portion of the date
8
+ * @param dateService - An instance of DateService
9
+ * @returns Validator function that returns null if the date is valid and the age is 18 years older,
10
+ * or an error object within { underEighteen: true } if under 18.
11
+ */
12
+ export const overEighteenValidator = (dayControl, monthControl, yearControl, dateService) => {
13
+ return (group) => {
14
+ const day = group.get(dayControl);
15
+ const month = group.get(monthControl);
16
+ const year = group.get(yearControl);
17
+ // Return if controls are not defined or values are not provided
18
+ if (!day || !month || !year || !day.value || !month.value || !year.value) {
19
+ return null;
20
+ }
21
+ // Format day and month to ensure two digits
22
+ const formattedDay = day.value.toString().padStart(2, '0');
23
+ const formattedMonth = month.value.toString().padStart(2, '0');
24
+ const formattedYear = year.value.toString();
25
+ // Create the date string in the format dd/MM/yyyy
26
+ const dateValue = `${formattedDay}/${formattedMonth}/${formattedYear}`;
27
+ const inputDate = dateService.getFromFormat(dateValue, 'dd/MM/yyyy');
28
+ if (inputDate.isValid) {
29
+ // Verify if the entered date is at least 18 years in the past
30
+ const underEighteen = inputDate.diffNow('years').years > -18;
31
+ if (underEighteen) {
32
+ year.setErrors({ underEighteen: true });
33
+ return { underEighteen: true };
34
+ }
35
+ else {
36
+ year.setErrors(null);
37
+ return null;
38
+ }
39
+ }
40
+ else {
41
+ return null;
42
+ }
43
+ };
44
+ };
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Zlci1laWdodGVlbi52YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vcGFsLWZyb250ZW5kLWNvbW1vbi9zcmMvbGliL3ZhbGlkYXRvcnMvb3Zlci1laWdodGVlbi9vdmVyLWVpZ2h0ZWVuLnZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FDbkMsVUFBa0IsRUFDbEIsWUFBb0IsRUFDcEIsV0FBbUIsRUFDbkIsV0FBd0IsRUFDWCxFQUFFO0lBQ2YsT0FBTyxDQUFDLEtBQXNCLEVBQTJCLEVBQUU7UUFDekQsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFcEMsZ0VBQWdFO1FBQ2hFLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN6RSxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCw0Q0FBNEM7UUFDNUMsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzNELE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMvRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRTVDLGtEQUFrRDtRQUNsRCxNQUFNLFNBQVMsR0FBRyxHQUFHLFlBQVksSUFBSSxjQUFjLElBQUksYUFBYSxFQUFFLENBQUM7UUFDdkUsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFckUsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdEIsOERBQThEO1lBQzlELE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBRTdELElBQUksYUFBYSxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDeEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUNqQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDckIsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWYWxpZGF0b3JGbiwgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRlLXNlcnZpY2UvZGF0ZS5zZXJ2aWNlJztcblxuLyoqXG4gKiBWYWxpZGF0ZXMgd2hldGhlciBhIGRhdGUsIGNvbnN0cnVjdGVkIGZyb20gcHJvdmlkZWQgZm9ybSBjb250cm9scyBmb3IgZGF5LCBtb250aCBhbmQgeWVhclxuICogaXMgYXQgbGVhc3QgMTggeWVhcnMgaW4gdGhlIHBhc3QuXG4gKlxuICogQHBhcmFtIGRheUNvbnRyb2wgLSBOYW1lIG9mIHRoZSBjb250cm9sIGZvciB0aGUgZGF5IHBvcnRpb24gb2YgdGhlIGRhdGVcbiAqIEBwYXJhbSBtb250aENvbnRyb2wgLSBOYW1lIG9mIHRoZSBjb250cm9sIGZvciB0aGUgbW9udGggcG9ydGlvbiBvZiB0aGUgZGF0ZVxuICogQHBhcmFtIHllYXJDb250cm9sICAtIE5hbWUgb2YgdGhlIGNvbnRyb2wgZm9yIHRoZSB5ZWFyIHBvcnRpb24gb2YgdGhlIGRhdGVcbiAqIEBwYXJhbSBkYXRlU2VydmljZSAtIEFuIGluc3RhbmNlIG9mIERhdGVTZXJ2aWNlXG4gKiBAcmV0dXJucyBWYWxpZGF0b3IgZnVuY3Rpb24gdGhhdCByZXR1cm5zIG51bGwgaWYgdGhlIGRhdGUgaXMgdmFsaWQgYW5kIHRoZSBhZ2UgaXMgMTggeWVhcnMgb2xkZXIsXG4gKiBvciBhbiBlcnJvciBvYmplY3Qgd2l0aGluIHsgdW5kZXJFaWdodGVlbjogdHJ1ZSB9IGlmIHVuZGVyIDE4LlxuICovXG5leHBvcnQgY29uc3Qgb3ZlckVpZ2h0ZWVuVmFsaWRhdG9yID0gKFxuICBkYXlDb250cm9sOiBzdHJpbmcsXG4gIG1vbnRoQ29udHJvbDogc3RyaW5nLFxuICB5ZWFyQ29udHJvbDogc3RyaW5nLFxuICBkYXRlU2VydmljZTogRGF0ZVNlcnZpY2UsXG4pOiBWYWxpZGF0b3JGbiA9PiB7XG4gIHJldHVybiAoZ3JvdXA6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICBjb25zdCBkYXkgPSBncm91cC5nZXQoZGF5Q29udHJvbCk7XG4gICAgY29uc3QgbW9udGggPSBncm91cC5nZXQobW9udGhDb250cm9sKTtcbiAgICBjb25zdCB5ZWFyID0gZ3JvdXAuZ2V0KHllYXJDb250cm9sKTtcblxuICAgIC8vIFJldHVybiBpZiBjb250cm9scyBhcmUgbm90IGRlZmluZWQgb3IgdmFsdWVzIGFyZSBub3QgcHJvdmlkZWRcbiAgICBpZiAoIWRheSB8fCAhbW9udGggfHwgIXllYXIgfHwgIWRheS52YWx1ZSB8fCAhbW9udGgudmFsdWUgfHwgIXllYXIudmFsdWUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIEZvcm1hdCBkYXkgYW5kIG1vbnRoIHRvIGVuc3VyZSB0d28gZGlnaXRzXG4gICAgY29uc3QgZm9ybWF0dGVkRGF5ID0gZGF5LnZhbHVlLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICBjb25zdCBmb3JtYXR0ZWRNb250aCA9IG1vbnRoLnZhbHVlLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICBjb25zdCBmb3JtYXR0ZWRZZWFyID0geWVhci52YWx1ZS50b1N0cmluZygpO1xuXG4gICAgLy8gQ3JlYXRlIHRoZSBkYXRlIHN0cmluZyBpbiB0aGUgZm9ybWF0IGRkL01NL3l5eXlcbiAgICBjb25zdCBkYXRlVmFsdWUgPSBgJHtmb3JtYXR0ZWREYXl9LyR7Zm9ybWF0dGVkTW9udGh9LyR7Zm9ybWF0dGVkWWVhcn1gO1xuICAgIGNvbnN0IGlucHV0RGF0ZSA9IGRhdGVTZXJ2aWNlLmdldEZyb21Gb3JtYXQoZGF0ZVZhbHVlLCAnZGQvTU0veXl5eScpO1xuXG4gICAgaWYgKGlucHV0RGF0ZS5pc1ZhbGlkKSB7XG4gICAgICAvLyBWZXJpZnkgaWYgdGhlIGVudGVyZWQgZGF0ZSBpcyBhdCBsZWFzdCAxOCB5ZWFycyBpbiB0aGUgcGFzdFxuICAgICAgY29uc3QgdW5kZXJFaWdodGVlbiA9IGlucHV0RGF0ZS5kaWZmTm93KCd5ZWFycycpLnllYXJzID4gLTE4O1xuXG4gICAgICBpZiAodW5kZXJFaWdodGVlbikge1xuICAgICAgICB5ZWFyLnNldEVycm9ycyh7IHVuZGVyRWlnaHRlZW46IHRydWUgfSk7XG4gICAgICAgIHJldHVybiB7IHVuZGVyRWlnaHRlZW46IHRydWUgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHllYXIuc2V0RXJyb3JzKG51bGwpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9O1xufTtcbiJdfQ==
@@ -0,0 +1,16 @@
1
+ export function pastDateValidator() {
2
+ const today = new Date();
3
+ today.setHours(0, 0, 0, 0); // Set time to start of the day to avoid time comparison issues
4
+ return (control) => {
5
+ if (control.value) {
6
+ const [day, month, year] = control.value.split('/');
7
+ const date = new Date(Date.parse(`${month}/${day}/${year}`));
8
+ // Check if the date is in the past
9
+ if (date < today) {
10
+ return { invalidPastDate: { value: control.value } };
11
+ }
12
+ }
13
+ return null;
14
+ };
15
+ }
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzdC1kYXRlLnZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29wYWwtZnJvbnRlbmQtY29tbW9uL3NyYy9saWIvdmFsaWRhdG9ycy9wYXN0LWRhdGUvcGFzdC1kYXRlLnZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFVBQVUsaUJBQWlCO0lBQy9CLE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7SUFDekIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLCtEQUErRDtJQUUzRixPQUFPLENBQUMsT0FBd0IsRUFBcUMsRUFBRTtRQUNyRSxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNsQixNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNwRCxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFN0QsbUNBQW1DO1lBQ25DLElBQUksSUFBSSxHQUFHLEtBQUssRUFBRSxDQUFDO2dCQUNqQixPQUFPLEVBQUUsZUFBZSxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3ZELENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsaWRhdG9yRm4sIEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuZXhwb3J0IGZ1bmN0aW9uIHBhc3REYXRlVmFsaWRhdG9yKCk6IFZhbGlkYXRvckZuIHtcbiAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuICB0b2RheS5zZXRIb3VycygwLCAwLCAwLCAwKTsgLy8gU2V0IHRpbWUgdG8gc3RhcnQgb2YgdGhlIGRheSB0byBhdm9pZCB0aW1lIGNvbXBhcmlzb24gaXNzdWVzXG5cbiAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfSB8IG51bGwgPT4ge1xuICAgIGlmIChjb250cm9sLnZhbHVlKSB7XG4gICAgICBjb25zdCBbZGF5LCBtb250aCwgeWVhcl0gPSBjb250cm9sLnZhbHVlLnNwbGl0KCcvJyk7XG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoRGF0ZS5wYXJzZShgJHttb250aH0vJHtkYXl9LyR7eWVhcn1gKSk7XG5cbiAgICAgIC8vIENoZWNrIGlmIHRoZSBkYXRlIGlzIGluIHRoZSBwYXN0XG4gICAgICBpZiAoZGF0ZSA8IHRvZGF5KSB7XG4gICAgICAgIHJldHVybiB7IGludmFsaWRQYXN0RGF0ZTogeyB2YWx1ZTogY29udHJvbC52YWx1ZSB9IH07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9O1xufVxuIl19
@@ -0,0 +1,11 @@
1
+ export function specialCharactersValidator() {
2
+ const specialCharactersPattern = /\*/;
3
+ return (control) => {
4
+ if (control.value) {
5
+ const hasSpecialCharacters = specialCharactersPattern.test(control.value);
6
+ return hasSpecialCharacters ? { specialCharactersPattern: { value: control.value } } : null;
7
+ }
8
+ return null;
9
+ };
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlY2lhbC1jaGFyYWN0ZXJzLnZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29wYWwtZnJvbnRlbmQtY29tbW9uL3NyYy9saWIvdmFsaWRhdG9ycy9zcGVjaWFsLWNoYXJhY3RlcnMvc3BlY2lhbC1jaGFyYWN0ZXJzLnZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFVBQVUsMEJBQTBCO0lBQ3hDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxDQUFDO0lBQ3RDLE9BQU8sQ0FBQyxPQUF3QixFQUFxQyxFQUFFO1FBQ3JFLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2xCLE1BQU0sb0JBQW9CLEdBQUcsd0JBQXdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxRSxPQUFPLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxFQUFFLHdCQUF3QixFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDOUYsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZhbGlkYXRvckZuLCBBYnN0cmFjdENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzcGVjaWFsQ2hhcmFjdGVyc1ZhbGlkYXRvcigpOiBWYWxpZGF0b3JGbiB7XG4gIGNvbnN0IHNwZWNpYWxDaGFyYWN0ZXJzUGF0dGVybiA9IC9cXCovO1xuICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9IHwgbnVsbCA9PiB7XG4gICAgaWYgKGNvbnRyb2wudmFsdWUpIHtcbiAgICAgIGNvbnN0IGhhc1NwZWNpYWxDaGFyYWN0ZXJzID0gc3BlY2lhbENoYXJhY3RlcnNQYXR0ZXJuLnRlc3QoY29udHJvbC52YWx1ZSk7XG4gICAgICByZXR1cm4gaGFzU3BlY2lhbENoYXJhY3RlcnMgPyB7IHNwZWNpYWxDaGFyYWN0ZXJzUGF0dGVybjogeyB2YWx1ZTogY29udHJvbC52YWx1ZSB9IH0gOiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcbn1cbiJdfQ==
@@ -0,0 +1,12 @@
1
+ export function twoDecimalPlacesValidator() {
2
+ return (control) => {
3
+ const value = control.value;
4
+ if (!value) {
5
+ return null; // No validation if empty
6
+ }
7
+ // Check if the value is a valid number with up to 2 decimal places
8
+ const decimalRegex = /^\d+(\.\d{0,2})?$/;
9
+ return decimalRegex.test(value) ? null : { invalidDecimal: true };
10
+ };
11
+ }
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHdvLWRlY2ltYWwtcGxhY2VzLnZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29wYWwtZnJvbnRlbmQtY29tbW9uL3NyYy9saWIvdmFsaWRhdG9ycy90d28tZGVjaW1hbC1wbGFjZXMvdHdvLWRlY2ltYWwtcGxhY2VzLnZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFVBQVUseUJBQXlCO0lBQ3ZDLE9BQU8sQ0FBQyxPQUF3QixFQUEyQixFQUFFO1FBQzNELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFFNUIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsT0FBTyxJQUFJLENBQUMsQ0FBQyx5QkFBeUI7UUFDeEMsQ0FBQztRQUVELG1FQUFtRTtRQUNuRSxNQUFNLFlBQVksR0FBRyxtQkFBbUIsQ0FBQztRQUV6QyxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDcEUsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB0d29EZWNpbWFsUGxhY2VzVmFsaWRhdG9yKCk6IFZhbGlkYXRvckZuIHtcbiAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgY29uc3QgdmFsdWUgPSBjb250cm9sLnZhbHVlO1xuXG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuIG51bGw7IC8vIE5vIHZhbGlkYXRpb24gaWYgZW1wdHlcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgdmFsdWUgaXMgYSB2YWxpZCBudW1iZXIgd2l0aCB1cCB0byAyIGRlY2ltYWwgcGxhY2VzXG4gICAgY29uc3QgZGVjaW1hbFJlZ2V4ID0gL15cXGQrKFxcLlxcZHswLDJ9KT8kLztcblxuICAgIHJldHVybiBkZWNpbWFsUmVnZXgudGVzdCh2YWx1ZSkgPyBudWxsIDogeyBpbnZhbGlkRGVjaW1hbDogdHJ1ZSB9O1xuICB9O1xufVxuIl19
@@ -0,0 +1,9 @@
1
+ export function validValueValidator(validValues) {
2
+ return (control) => {
3
+ if (control.value === null || control.value === undefined || control.value === '') {
4
+ return null;
5
+ }
6
+ return validValues.some((value) => value === control.value) ? null : { valueNotInArray: true };
7
+ };
8
+ }
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWQtdmFsdWUudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb3BhbC1mcm9udGVuZC1jb21tb24vc3JjL2xpYi92YWxpZGF0b3JzL3ZhbGlkLXZhbHVlL3ZhbGlkLXZhbHVlLnZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFVBQVUsbUJBQW1CLENBQUMsV0FBcUI7SUFDdkQsT0FBTyxDQUFDLE9BQXdCLEVBQTJCLEVBQUU7UUFDM0QsSUFBSSxPQUFPLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxPQUFPLENBQUMsS0FBSyxLQUFLLFNBQVMsSUFBSSxPQUFPLENBQUMsS0FBSyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ2xGLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNqRyxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkVmFsdWVWYWxpZGF0b3IodmFsaWRWYWx1ZXM6IHN0cmluZ1tdKTogVmFsaWRhdG9yRm4ge1xuICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICBpZiAoY29udHJvbC52YWx1ZSA9PT0gbnVsbCB8fCBjb250cm9sLnZhbHVlID09PSB1bmRlZmluZWQgfHwgY29udHJvbC52YWx1ZSA9PT0gJycpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZFZhbHVlcy5zb21lKCh2YWx1ZSkgPT4gdmFsdWUgPT09IGNvbnRyb2wudmFsdWUpID8gbnVsbCA6IHsgdmFsdWVOb3RJbkFycmF5OiB0cnVlIH07XG4gIH07XG59XG4iXX0=
@@ -0,0 +1,11 @@
1
+ export * from './lib/opal-frontend-common.module';
2
+ export * from './lib/components/govuk';
3
+ export * from './lib/guards';
4
+ export * from './lib/interceptors';
5
+ export * from './lib/pages';
6
+ export * from './lib/resolvers';
7
+ export * from './lib/routing';
8
+ export * from './lib/services';
9
+ export * from './lib/stores';
10
+ export * from './lib/validators';
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL29wYWwtZnJvbnRlbmQtY29tbW9uL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvb3BhbC1mcm9udGVuZC1jb21tb24ubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZ292dWsnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ3VhcmRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ludGVyY2VwdG9ycyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wYWdlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZXNvbHZlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcm91dGluZyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdG9yZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmFsaWRhdG9ycyc7XG4iXX0=
@@ -0,0 +1,41 @@
1
+ import * as i0 from '@angular/core';
2
+ import { EventEmitter, Output, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import * as i1 from '@angular/forms';
4
+ import { FormGroup, FormControl, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';
5
+ import { GovukTextInputComponent, GovukButtonComponent } from './hmcts-opal-frontend-common.mjs';
6
+
7
+ class SignInStubComponent {
8
+ signInForm;
9
+ signInFormSubmit = new EventEmitter();
10
+ /**
11
+ * Sets up the sign-in form.
12
+ */
13
+ setupSignInForm() {
14
+ this.signInForm = new FormGroup({
15
+ email: new FormControl(null, [Validators.required]),
16
+ });
17
+ }
18
+ /**
19
+ * Handles the form submission.
20
+ * If the signInForm is valid, emits the signInForm value using the signInFormSubmit event.
21
+ */
22
+ handleFormSubmit() {
23
+ if (this.signInForm.valid) {
24
+ this.signInFormSubmit.emit(this.signInForm.value);
25
+ }
26
+ }
27
+ ngOnInit() {
28
+ this.setupSignInForm();
29
+ }
30
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SignInStubComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
31
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SignInStubComponent, isStandalone: true, selector: "opal-lib-sign-in-stub", outputs: { signInFormSubmit: "signInFormSubmit" }, ngImport: i0, template: "<form (submit)=\"handleFormSubmit()\">\n <div class=\"govuk-grid-column-two-thirds\">\n <fieldset class=\"govuk-fieldset\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--m\">\n <h1 class=\"govuk-fieldset__heading\">Sign in</h1>\n </legend>\n\n <div [formGroup]=\"signInForm\">\n <opal-lib-govuk-text-input\n labelText=\"Email\"\n inputId=\"email\"\n inputName=\"email\"\n inputClasses=\"govuk-!-width-one-half\"\n [control]=\"signInForm.controls['email']\"\n ></opal-lib-govuk-text-input>\n </div>\n </fieldset>\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-one-third\">\n <opal-lib-govuk-button buttonId=\"submitForm\" type=\"submit\"> Sign in</opal-lib-govuk-button>\n </div>\n </div>\n </div>\n</form>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: GovukTextInputComponent, selector: "opal-lib-govuk-text-input", inputs: ["labelText", "labelClasses", "inputId", "inputName", "inputClasses", "hintText", "hintHtml", "errors", "control"] }, { kind: "component", type: GovukButtonComponent, selector: "opal-lib-govuk-button", inputs: ["buttonId", "type", "buttonClasses"], outputs: ["buttonClickEvent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
32
+ }
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SignInStubComponent, decorators: [{
34
+ type: Component,
35
+ args: [{ standalone: true, selector: 'opal-lib-sign-in-stub', imports: [FormsModule, ReactiveFormsModule, GovukTextInputComponent, GovukButtonComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<form (submit)=\"handleFormSubmit()\">\n <div class=\"govuk-grid-column-two-thirds\">\n <fieldset class=\"govuk-fieldset\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--m\">\n <h1 class=\"govuk-fieldset__heading\">Sign in</h1>\n </legend>\n\n <div [formGroup]=\"signInForm\">\n <opal-lib-govuk-text-input\n labelText=\"Email\"\n inputId=\"email\"\n inputName=\"email\"\n inputClasses=\"govuk-!-width-one-half\"\n [control]=\"signInForm.controls['email']\"\n ></opal-lib-govuk-text-input>\n </div>\n </fieldset>\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-one-third\">\n <opal-lib-govuk-button buttonId=\"submitForm\" type=\"submit\"> Sign in</opal-lib-govuk-button>\n </div>\n </div>\n </div>\n</form>\n" }]
36
+ }], propDecorators: { signInFormSubmit: [{
37
+ type: Output
38
+ }] } });
39
+
40
+ export { SignInStubComponent };
41
+ //# sourceMappingURL=hmcts-opal-frontend-common-sign-in-stub.component-CysPzJGJ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hmcts-opal-frontend-common-sign-in-stub.component-CysPzJGJ.mjs","sources":["../../../projects/opal-frontend-common/src/lib/pages/sign-in/sign-in-stub/sign-in-stub.component.ts","../../../projects/opal-frontend-common/src/lib/pages/sign-in/sign-in-stub/sign-in-stub.component.html"],"sourcesContent":["import { ChangeDetectionStrategy, Component, EventEmitter, OnInit, Output } from '@angular/core';\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { ISignInStubForm } from '../interfaces';\nimport { GovukTextInputComponent } from '../../../components/govuk/govuk-text-input/govuk-text-input.component';\nimport { GovukButtonComponent } from '../../../components/govuk/govuk-button/govuk-button.component';\n\n@Component({\n standalone: true,\n selector: 'opal-lib-sign-in-stub',\n imports: [FormsModule, ReactiveFormsModule, GovukTextInputComponent, GovukButtonComponent],\n templateUrl: './sign-in-stub.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SignInStubComponent implements OnInit {\n public signInForm!: FormGroup;\n @Output() private readonly signInFormSubmit = new EventEmitter<ISignInStubForm>();\n\n /**\n * Sets up the sign-in form.\n */\n private setupSignInForm(): void {\n this.signInForm = new FormGroup({\n email: new FormControl(null, [Validators.required]),\n });\n }\n\n /**\n * Handles the form submission.\n * If the signInForm is valid, emits the signInForm value using the signInFormSubmit event.\n */\n public handleFormSubmit(): void {\n if (this.signInForm.valid) {\n this.signInFormSubmit.emit(this.signInForm.value);\n }\n }\n\n public ngOnInit(): void {\n this.setupSignInForm();\n }\n}\n","<form (submit)=\"handleFormSubmit()\">\n <div class=\"govuk-grid-column-two-thirds\">\n <fieldset class=\"govuk-fieldset\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--m\">\n <h1 class=\"govuk-fieldset__heading\">Sign in</h1>\n </legend>\n\n <div [formGroup]=\"signInForm\">\n <opal-lib-govuk-text-input\n labelText=\"Email\"\n inputId=\"email\"\n inputName=\"email\"\n inputClasses=\"govuk-!-width-one-half\"\n [control]=\"signInForm.controls['email']\"\n ></opal-lib-govuk-text-input>\n </div>\n </fieldset>\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-one-third\">\n <opal-lib-govuk-button buttonId=\"submitForm\" type=\"submit\"> Sign in</opal-lib-govuk-button>\n </div>\n </div>\n </div>\n</form>\n"],"names":[],"mappings":";;;;;;MAaa,mBAAmB,CAAA;AACvB,IAAA,UAAU;AACU,IAAA,gBAAgB,GAAG,IAAI,YAAY,EAAmB;AAEjF;;AAEG;IACK,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,CAAC;YAC9B,KAAK,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACpD,SAAA,CAAC;;AAGJ;;;AAGG;IACI,gBAAgB,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;YACzB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;;;IAI9C,QAAQ,GAAA;QACb,IAAI,CAAC,eAAe,EAAE;;wGAxBb,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbhC,g2BAwBA,EDfY,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,udAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,uBAAuB,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,cAAA,EAAA,SAAA,EAAA,WAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,oBAAoB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAI9E,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACN,QAAA,EAAA,uBAAuB,EACxB,OAAA,EAAA,CAAC,WAAW,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,oBAAoB,CAAC,EAEzE,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,g2BAAA,EAAA;8BAIpB,gBAAgB,EAAA,CAAA;sBAA1C;;;;;"}