@keycloakify/angular 0.0.1-rc.11 → 0.0.1-rc.13

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 (1203) hide show
  1. package/dist/LICENSE +21 -0
  2. package/dist/README.md +1 -0
  3. package/dist/account/DefaultPage/DefaultPage.d.ts +38 -0
  4. package/dist/account/DefaultPage/index.d.ts +5 -0
  5. package/dist/account/DefaultPage/public-api.d.ts +1 -0
  6. package/dist/account/KcContext/index.d.ts +5 -0
  7. package/dist/account/KcContext/public-api.d.ts +1 -0
  8. package/dist/account/classes/component-reference/index.d.ts +5 -0
  9. package/dist/account/classes/component-reference/public-api.d.ts +1 -0
  10. package/dist/account/containers/template/index.d.ts +5 -0
  11. package/dist/account/containers/template/public-api.d.ts +1 -0
  12. package/dist/account/containers/template/template.component.d.ts +26 -0
  13. package/dist/account/directives/kc-class/index.d.ts +5 -0
  14. package/dist/account/directives/kc-class/public-api.d.ts +1 -0
  15. package/dist/account/i18n/index.d.ts +5 -0
  16. package/dist/account/i18n/public-api.d.ts +1 -0
  17. package/dist/account/pages/account/account.component.d.ts +14 -0
  18. package/dist/account/pages/account/index.d.ts +5 -0
  19. package/dist/account/pages/account/public-api.d.ts +1 -0
  20. package/dist/account/pages/applications/applications.component.d.ts +13 -0
  21. package/dist/account/pages/applications/index.d.ts +5 -0
  22. package/dist/account/pages/applications/public-api.d.ts +1 -0
  23. package/dist/account/pages/federatedIdentity/federatedIdentity.component.d.ts +13 -0
  24. package/dist/account/pages/federatedIdentity/index.d.ts +5 -0
  25. package/dist/account/pages/federatedIdentity/public-api.d.ts +1 -0
  26. package/dist/account/pages/log/index.d.ts +5 -0
  27. package/dist/account/pages/log/log.component.d.ts +13 -0
  28. package/dist/account/pages/log/public-api.d.ts +1 -0
  29. package/dist/account/pages/password/index.d.ts +5 -0
  30. package/dist/account/pages/password/password.component.d.ts +28 -0
  31. package/dist/account/pages/password/public-api.d.ts +1 -0
  32. package/dist/account/pages/sessions/index.d.ts +5 -0
  33. package/dist/account/pages/sessions/public-api.d.ts +1 -0
  34. package/dist/account/pages/sessions/sessions.component.d.ts +13 -0
  35. package/dist/account/pages/totp/index.d.ts +5 -0
  36. package/dist/account/pages/totp/public-api.d.ts +1 -0
  37. package/dist/account/pages/totp/totp.component.d.ts +13 -0
  38. package/dist/account/providers/keycloakify-angular/index.d.ts +5 -0
  39. package/dist/account/providers/keycloakify-angular/keycloakify-angular.providers.d.ts +15 -0
  40. package/dist/account/providers/keycloakify-angular/public-api.d.ts +1 -0
  41. package/dist/account/services/account-resource-injector/account-resource-injector.service.d.ts +10 -0
  42. package/dist/account/services/account-resource-injector/index.d.ts +5 -0
  43. package/dist/account/services/account-resource-injector/public-api.d.ts +1 -0
  44. package/dist/account/services/i18n/index.d.ts +5 -0
  45. package/dist/account/services/i18n/public-api.d.ts +1 -0
  46. package/dist/account/tokens/classes/index.d.ts +5 -0
  47. package/dist/account/tokens/classes/public-api.d.ts +1 -0
  48. package/dist/account/tokens/i18n/index.d.ts +5 -0
  49. package/dist/account/tokens/i18n/public-api.d.ts +1 -0
  50. package/dist/account/tokens/kc-context/index.d.ts +5 -0
  51. package/dist/account/tokens/kc-context/kc-context.token.d.ts +3 -0
  52. package/dist/account/tokens/kc-context/public-api.d.ts +1 -0
  53. package/dist/esm2022/account/DefaultPage/DefaultPage.mjs +34 -0
  54. package/dist/esm2022/account/DefaultPage/keycloakify-angular-account-DefaultPage.mjs +5 -0
  55. package/dist/esm2022/account/DefaultPage/public-api.mjs +2 -0
  56. package/dist/esm2022/account/KcContext/KcContext.mjs +2 -0
  57. package/dist/esm2022/account/KcContext/keycloakify-angular-account-KcContext.mjs +5 -0
  58. package/dist/esm2022/account/KcContext/public-api.mjs +2 -0
  59. package/dist/esm2022/account/classes/component-reference/component-reference.class.mjs +3 -0
  60. package/dist/esm2022/account/classes/component-reference/keycloakify-angular-account-classes-component-reference.mjs +5 -0
  61. package/dist/esm2022/account/classes/component-reference/public-api.mjs +2 -0
  62. package/dist/esm2022/account/containers/template/keycloakify-angular-account-containers-template.mjs +5 -0
  63. package/dist/esm2022/account/containers/template/public-api.mjs +2 -0
  64. package/dist/esm2022/account/containers/template/template.component.mjs +66 -0
  65. package/dist/esm2022/account/directives/kc-class/kc-class.directive.mjs +141 -0
  66. package/dist/esm2022/account/directives/kc-class/keycloakify-angular-account-directives-kc-class.mjs +5 -0
  67. package/dist/esm2022/account/directives/kc-class/public-api.mjs +2 -0
  68. package/dist/esm2022/account/i18n/i18n.mjs +2 -0
  69. package/dist/esm2022/account/i18n/keycloakify-angular-account-i18n.mjs +5 -0
  70. package/dist/esm2022/account/i18n/public-api.mjs +2 -0
  71. package/dist/esm2022/account/pages/account/account.component.mjs +39 -0
  72. package/dist/esm2022/account/pages/account/keycloakify-angular-account-pages-account.mjs +5 -0
  73. package/dist/esm2022/account/pages/account/public-api.mjs +2 -0
  74. package/dist/esm2022/account/pages/applications/applications.component.mjs +37 -0
  75. package/dist/esm2022/account/pages/applications/keycloakify-angular-account-pages-applications.mjs +5 -0
  76. package/dist/esm2022/account/pages/applications/public-api.mjs +2 -0
  77. package/dist/esm2022/account/pages/federatedIdentity/federatedIdentity.component.mjs +36 -0
  78. package/dist/esm2022/account/pages/federatedIdentity/keycloakify-angular-account-pages-federatedIdentity.mjs +5 -0
  79. package/dist/esm2022/account/pages/federatedIdentity/public-api.mjs +2 -0
  80. package/dist/esm2022/account/pages/log/keycloakify-angular-account-pages-log.mjs +5 -0
  81. package/dist/esm2022/account/pages/log/log.component.mjs +36 -0
  82. package/dist/esm2022/account/pages/log/public-api.mjs +2 -0
  83. package/dist/esm2022/account/pages/password/keycloakify-angular-account-pages-password.mjs +5 -0
  84. package/dist/esm2022/account/pages/password/password.component.mjs +107 -0
  85. package/dist/esm2022/account/pages/password/public-api.mjs +2 -0
  86. package/dist/esm2022/account/pages/sessions/keycloakify-angular-account-pages-sessions.mjs +5 -0
  87. package/dist/esm2022/account/pages/sessions/public-api.mjs +2 -0
  88. package/dist/esm2022/account/pages/sessions/sessions.component.mjs +36 -0
  89. package/dist/esm2022/account/pages/totp/keycloakify-angular-account-pages-totp.mjs +5 -0
  90. package/dist/esm2022/account/pages/totp/public-api.mjs +2 -0
  91. package/dist/esm2022/account/pages/totp/totp.component.mjs +37 -0
  92. package/dist/esm2022/account/providers/keycloakify-angular/keycloakify-angular-account-providers-keycloakify-angular.mjs +5 -0
  93. package/dist/esm2022/account/providers/keycloakify-angular/keycloakify-angular.providers.mjs +48 -0
  94. package/dist/esm2022/account/providers/keycloakify-angular/public-api.mjs +2 -0
  95. package/dist/esm2022/account/services/account-resource-injector/account-resource-injector.service.mjs +37 -0
  96. package/dist/esm2022/account/services/account-resource-injector/keycloakify-angular-account-services-account-resource-injector.mjs +5 -0
  97. package/dist/esm2022/account/services/account-resource-injector/public-api.mjs +2 -0
  98. package/dist/esm2022/account/services/i18n/i18n.service.mjs +12 -0
  99. package/dist/esm2022/account/services/i18n/keycloakify-angular-account-services-i18n.mjs +5 -0
  100. package/dist/esm2022/account/services/i18n/public-api.mjs +2 -0
  101. package/dist/esm2022/account/tokens/classes/classes.token.mjs +3 -0
  102. package/dist/esm2022/account/tokens/classes/keycloakify-angular-account-tokens-classes.mjs +5 -0
  103. package/dist/esm2022/account/tokens/classes/public-api.mjs +2 -0
  104. package/dist/esm2022/account/tokens/i18n/i18n.token.mjs +3 -0
  105. package/dist/esm2022/account/tokens/i18n/keycloakify-angular-account-tokens-i18n.mjs +5 -0
  106. package/dist/esm2022/account/tokens/i18n/public-api.mjs +2 -0
  107. package/dist/esm2022/account/tokens/kc-context/kc-context.token.mjs +3 -0
  108. package/dist/esm2022/account/tokens/kc-context/keycloakify-angular-account-tokens-kc-context.mjs +5 -0
  109. package/dist/esm2022/account/tokens/kc-context/public-api.mjs +2 -0
  110. package/dist/esm2022/keycloakify-angular.mjs +5 -0
  111. package/dist/esm2022/lib/directives/attributes/attributes.directive.mjs +26 -0
  112. package/dist/esm2022/lib/directives/attributes/keycloakify-angular-lib-directives-attributes.mjs +5 -0
  113. package/dist/esm2022/lib/directives/attributes/public-api.mjs +2 -0
  114. package/dist/esm2022/lib/keycloakify-angular-lib.mjs +5 -0
  115. package/dist/esm2022/lib/models/script/keycloakify-angular-lib-models-script.mjs +5 -0
  116. package/dist/esm2022/lib/models/script/public-api.mjs +2 -0
  117. package/dist/esm2022/lib/models/script/script.model.mjs +2 -0
  118. package/dist/esm2022/lib/pipes/input-type/input-type.pipe.mjs +20 -0
  119. package/dist/esm2022/lib/pipes/input-type/keycloakify-angular-lib-pipes-input-type.mjs +5 -0
  120. package/dist/esm2022/lib/pipes/input-type/public-api.mjs +2 -0
  121. package/dist/esm2022/lib/pipes/is-array-with-empty-object/is-array-with-empty-object.pipe.mjs +20 -0
  122. package/dist/esm2022/lib/pipes/is-array-with-empty-object/keycloakify-angular-lib-pipes-is-array-with-empty-object.mjs +5 -0
  123. package/dist/esm2022/lib/pipes/is-array-with-empty-object/public-api.mjs +2 -0
  124. package/dist/esm2022/lib/pipes/kc-sanitize/kc-sanitize.pipe.mjs +29 -0
  125. package/dist/esm2022/lib/pipes/kc-sanitize/keycloakify-angular-lib-pipes-kc-sanitize.mjs +5 -0
  126. package/dist/esm2022/lib/pipes/kc-sanitize/public-api.mjs +2 -0
  127. package/dist/esm2022/lib/pipes/to-array/keycloakify-angular-lib-pipes-to-array.mjs +5 -0
  128. package/dist/esm2022/lib/pipes/to-array/public-api.mjs +2 -0
  129. package/dist/esm2022/lib/pipes/to-array/to-array.pipe.mjs +21 -0
  130. package/dist/esm2022/lib/pipes/to-number/keycloakify-angular-lib-pipes-to-number.mjs +5 -0
  131. package/dist/esm2022/lib/pipes/to-number/public-api.mjs +2 -0
  132. package/dist/esm2022/lib/pipes/to-number/to-number.pipe.mjs +20 -0
  133. package/dist/esm2022/lib/public-api.mjs +2 -0
  134. package/dist/esm2022/lib/services/resource-injector/keycloakify-angular-lib-services-resource-injector.mjs +5 -0
  135. package/dist/esm2022/lib/services/resource-injector/public-api.mjs +2 -0
  136. package/dist/esm2022/lib/services/resource-injector/resource-injector.service.mjs +54 -0
  137. package/dist/esm2022/lib/tokens/use-default-css/keycloakify-angular-lib-tokens-use-default-css.mjs +5 -0
  138. package/dist/esm2022/lib/tokens/use-default-css/public-api.mjs +2 -0
  139. package/dist/esm2022/lib/tokens/use-default-css/use-default-css.token.mjs +3 -0
  140. package/dist/esm2022/login/DefaultPage/DefaultPage.mjs +121 -0
  141. package/dist/esm2022/login/DefaultPage/keycloakify-angular-login-DefaultPage.mjs +5 -0
  142. package/dist/esm2022/login/DefaultPage/public-api.mjs +2 -0
  143. package/dist/esm2022/login/KcContext/KcContext.mjs +2 -0
  144. package/dist/esm2022/login/KcContext/keycloakify-angular-login-KcContext.mjs +5 -0
  145. package/dist/esm2022/login/KcContext/public-api.mjs +2 -0
  146. package/dist/esm2022/login/classes/component-reference/component-reference.class.mjs +3 -0
  147. package/dist/esm2022/login/classes/component-reference/keycloakify-angular-login-classes-component-reference.mjs +5 -0
  148. package/dist/esm2022/login/classes/component-reference/public-api.mjs +2 -0
  149. package/dist/esm2022/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.mjs +106 -0
  150. package/dist/esm2022/login/components/add-remove-buttons-multi-valued-attribute/keycloakify-angular-login-components-add-remove-buttons-multi-valued-attribute.mjs +5 -0
  151. package/dist/esm2022/login/components/add-remove-buttons-multi-valued-attribute/public-api.mjs +2 -0
  152. package/dist/esm2022/login/components/field-errors/field-errors.component.mjs +33 -0
  153. package/dist/esm2022/login/components/field-errors/keycloakify-angular-login-components-field-errors.mjs +5 -0
  154. package/dist/esm2022/login/components/field-errors/public-api.mjs +2 -0
  155. package/dist/esm2022/login/components/group-label/group-label.component.mjs +43 -0
  156. package/dist/esm2022/login/components/group-label/keycloakify-angular-login-components-group-label.mjs +5 -0
  157. package/dist/esm2022/login/components/group-label/public-api.mjs +2 -0
  158. package/dist/esm2022/login/components/input-field-by-type/input-field-by-type.component.mjs +46 -0
  159. package/dist/esm2022/login/components/input-field-by-type/keycloakify-angular-login-components-input-field-by-type.mjs +5 -0
  160. package/dist/esm2022/login/components/input-field-by-type/public-api.mjs +2 -0
  161. package/dist/esm2022/login/components/input-tag/input-tag.component.mjs +90 -0
  162. package/dist/esm2022/login/components/input-tag/keycloakify-angular-login-components-input-tag.mjs +5 -0
  163. package/dist/esm2022/login/components/input-tag/public-api.mjs +2 -0
  164. package/dist/esm2022/login/components/input-tag-selects/input-tag-selects.component.mjs +117 -0
  165. package/dist/esm2022/login/components/input-tag-selects/keycloakify-angular-login-components-input-tag-selects.mjs +5 -0
  166. package/dist/esm2022/login/components/input-tag-selects/public-api.mjs +2 -0
  167. package/dist/esm2022/login/components/logout-other-sessions/keycloakify-angular-login-components-logout-other-sessions.mjs +5 -0
  168. package/dist/esm2022/login/components/logout-other-sessions/logout-other-sessions.component.mjs +32 -0
  169. package/dist/esm2022/login/components/logout-other-sessions/public-api.mjs +2 -0
  170. package/dist/esm2022/login/components/password-wrapper/keycloakify-angular-login-components-password-wrapper.mjs +5 -0
  171. package/dist/esm2022/login/components/password-wrapper/password-wrapper.component.mjs +46 -0
  172. package/dist/esm2022/login/components/password-wrapper/public-api.mjs +2 -0
  173. package/dist/esm2022/login/components/select-tag/keycloakify-angular-login-components-select-tag.mjs +5 -0
  174. package/dist/esm2022/login/components/select-tag/public-api.mjs +2 -0
  175. package/dist/esm2022/login/components/select-tag/select-tag.component.mjs +82 -0
  176. package/dist/esm2022/login/components/textarea-tag/keycloakify-angular-login-components-textarea-tag.mjs +5 -0
  177. package/dist/esm2022/login/components/textarea-tag/public-api.mjs +2 -0
  178. package/dist/esm2022/login/components/textarea-tag/textarea-tag.component.mjs +49 -0
  179. package/dist/esm2022/login/components/user-profile-form-fields/keycloakify-angular-login-components-user-profile-form-fields.mjs +5 -0
  180. package/dist/esm2022/login/components/user-profile-form-fields/public-api.mjs +2 -0
  181. package/dist/esm2022/login/components/user-profile-form-fields/user-profile-form-fields.component.mjs +62 -0
  182. package/dist/esm2022/login/containers/template/keycloakify-angular-login-containers-template.mjs +5 -0
  183. package/dist/esm2022/login/containers/template/public-api.mjs +2 -0
  184. package/dist/esm2022/login/containers/template/template.component.mjs +72 -0
  185. package/dist/esm2022/login/directives/kc-class/kc-class.directive.mjs +138 -0
  186. package/dist/esm2022/login/directives/kc-class/keycloakify-angular-login-directives-kc-class.mjs +5 -0
  187. package/dist/esm2022/login/directives/kc-class/public-api.mjs +2 -0
  188. package/dist/esm2022/login/i18n/i18n.mjs +2 -0
  189. package/dist/esm2022/login/i18n/keycloakify-angular-login-i18n.mjs +5 -0
  190. package/dist/esm2022/login/i18n/public-api.mjs +2 -0
  191. package/dist/esm2022/login/pages/code/code.component.mjs +35 -0
  192. package/dist/esm2022/login/pages/code/keycloakify-angular-login-pages-code.mjs +5 -0
  193. package/dist/esm2022/login/pages/code/public-api.mjs +2 -0
  194. package/dist/esm2022/login/pages/delete-account-confirm/delete-account-confirm.component.mjs +35 -0
  195. package/dist/esm2022/login/pages/delete-account-confirm/keycloakify-angular-login-pages-delete-account-confirm.mjs +5 -0
  196. package/dist/esm2022/login/pages/delete-account-confirm/public-api.mjs +2 -0
  197. package/dist/esm2022/login/pages/delete-credential/delete-credential.component.mjs +40 -0
  198. package/dist/esm2022/login/pages/delete-credential/keycloakify-angular-login-pages-delete-credential.mjs +5 -0
  199. package/dist/esm2022/login/pages/delete-credential/public-api.mjs +2 -0
  200. package/dist/esm2022/login/pages/error/error.component.mjs +35 -0
  201. package/dist/esm2022/login/pages/error/keycloakify-angular-login-pages-error.mjs +5 -0
  202. package/dist/esm2022/login/pages/error/public-api.mjs +2 -0
  203. package/dist/esm2022/login/pages/frontchannel-logout/frontchannel-logout.component.mjs +44 -0
  204. package/dist/esm2022/login/pages/frontchannel-logout/keycloakify-angular-login-pages-frontchannel-logout.mjs +5 -0
  205. package/dist/esm2022/login/pages/frontchannel-logout/public-api.mjs +2 -0
  206. package/dist/esm2022/login/pages/idp-review-user-profile/idp-review-user-profile.component.mjs +53 -0
  207. package/dist/esm2022/login/pages/idp-review-user-profile/keycloakify-angular-login-pages-idp-review-user-profile.mjs +5 -0
  208. package/dist/esm2022/login/pages/idp-review-user-profile/public-api.mjs +2 -0
  209. package/dist/esm2022/login/pages/info/info.component.mjs +49 -0
  210. package/dist/esm2022/login/pages/info/keycloakify-angular-login-pages-info.mjs +5 -0
  211. package/dist/esm2022/login/pages/info/public-api.mjs +2 -0
  212. package/dist/esm2022/login/pages/login/keycloakify-angular-login-pages-login.mjs +5 -0
  213. package/dist/esm2022/login/pages/login/login.component.mjs +44 -0
  214. package/dist/esm2022/login/pages/login/public-api.mjs +2 -0
  215. package/dist/esm2022/login/pages/login-config-totp/keycloakify-angular-login-pages-login-config-totp.mjs +5 -0
  216. package/dist/esm2022/login/pages/login-config-totp/login-config-totp.component.mjs +42 -0
  217. package/dist/esm2022/login/pages/login-config-totp/public-api.mjs +2 -0
  218. package/dist/esm2022/login/pages/login-idp-link-confirm/keycloakify-angular-login-pages-login-idp-link-confirm.mjs +5 -0
  219. package/dist/esm2022/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.mjs +40 -0
  220. package/dist/esm2022/login/pages/login-idp-link-confirm/public-api.mjs +2 -0
  221. package/dist/esm2022/login/pages/login-idp-link-confirm-override/keycloakify-angular-login-pages-login-idp-link-confirm-override.mjs +5 -0
  222. package/dist/esm2022/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.mjs +40 -0
  223. package/dist/esm2022/login/pages/login-idp-link-confirm-override/public-api.mjs +2 -0
  224. package/dist/esm2022/login/pages/login-idp-link-email/keycloakify-angular-login-pages-login-idp-link-email.mjs +5 -0
  225. package/dist/esm2022/login/pages/login-idp-link-email/login-idp-link-email.component.mjs +40 -0
  226. package/dist/esm2022/login/pages/login-idp-link-email/public-api.mjs +2 -0
  227. package/dist/esm2022/login/pages/login-oauth-grant/keycloakify-angular-login-pages-login-oauth-grant.mjs +5 -0
  228. package/dist/esm2022/login/pages/login-oauth-grant/login-oauth-grant.component.mjs +40 -0
  229. package/dist/esm2022/login/pages/login-oauth-grant/public-api.mjs +2 -0
  230. package/dist/esm2022/login/pages/login-oauth2-device-verify-user-code/keycloakify-angular-login-pages-login-oauth2-device-verify-user-code.mjs +5 -0
  231. package/dist/esm2022/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.mjs +40 -0
  232. package/dist/esm2022/login/pages/login-oauth2-device-verify-user-code/public-api.mjs +2 -0
  233. package/dist/esm2022/login/pages/login-otp/keycloakify-angular-login-pages-login-otp.mjs +5 -0
  234. package/dist/esm2022/login/pages/login-otp/login-otp.component.mjs +41 -0
  235. package/dist/esm2022/login/pages/login-otp/public-api.mjs +2 -0
  236. package/dist/esm2022/login/pages/login-page-expired/keycloakify-angular-login-pages-login-page-expired.mjs +5 -0
  237. package/dist/esm2022/login/pages/login-page-expired/login-page-expired.component.mjs +39 -0
  238. package/dist/esm2022/login/pages/login-page-expired/public-api.mjs +2 -0
  239. package/dist/esm2022/login/pages/login-passkeys-conditional-authenticate/keycloakify-angular-login-pages-login-passkeys-conditional-authenticate.mjs +5 -0
  240. package/dist/esm2022/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.mjs +84 -0
  241. package/dist/esm2022/login/pages/login-passkeys-conditional-authenticate/public-api.mjs +2 -0
  242. package/dist/esm2022/login/pages/login-password/keycloakify-angular-login-pages-login-password.mjs +5 -0
  243. package/dist/esm2022/login/pages/login-password/login-password.component.mjs +43 -0
  244. package/dist/esm2022/login/pages/login-password/public-api.mjs +2 -0
  245. package/dist/esm2022/login/pages/login-recovery-authn-code-config/keycloakify-angular-login-pages-login-recovery-authn-code-config.mjs +5 -0
  246. package/dist/esm2022/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.mjs +43 -0
  247. package/dist/esm2022/login/pages/login-recovery-authn-code-config/public-api.mjs +2 -0
  248. package/dist/esm2022/login/pages/login-recovery-authn-code-input/keycloakify-angular-login-pages-login-recovery-authn-code-input.mjs +5 -0
  249. package/dist/esm2022/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.mjs +41 -0
  250. package/dist/esm2022/login/pages/login-recovery-authn-code-input/public-api.mjs +2 -0
  251. package/dist/esm2022/login/pages/login-reset-otp/keycloakify-angular-login-pages-login-reset-otp.mjs +5 -0
  252. package/dist/esm2022/login/pages/login-reset-otp/login-reset-otp.component.mjs +40 -0
  253. package/dist/esm2022/login/pages/login-reset-otp/public-api.mjs +2 -0
  254. package/dist/esm2022/login/pages/login-reset-password/keycloakify-angular-login-pages-login-reset-password.mjs +5 -0
  255. package/dist/esm2022/login/pages/login-reset-password/login-reset-password.component.mjs +41 -0
  256. package/dist/esm2022/login/pages/login-reset-password/public-api.mjs +2 -0
  257. package/dist/esm2022/login/pages/login-update-password/keycloakify-angular-login-pages-login-update-password.mjs +5 -0
  258. package/dist/esm2022/login/pages/login-update-password/login-update-password.component.mjs +43 -0
  259. package/dist/esm2022/login/pages/login-update-password/public-api.mjs +2 -0
  260. package/dist/esm2022/login/pages/login-update-profile/keycloakify-angular-login-pages-login-update-profile.mjs +5 -0
  261. package/dist/esm2022/login/pages/login-update-profile/login-update-profile.component.mjs +50 -0
  262. package/dist/esm2022/login/pages/login-update-profile/public-api.mjs +2 -0
  263. package/dist/esm2022/login/pages/login-username/keycloakify-angular-login-pages-login-username.mjs +5 -0
  264. package/dist/esm2022/login/pages/login-username/login-username.component.mjs +43 -0
  265. package/dist/esm2022/login/pages/login-username/public-api.mjs +2 -0
  266. package/dist/esm2022/login/pages/login-verify-email/keycloakify-angular-login-pages-login-verify-email.mjs +5 -0
  267. package/dist/esm2022/login/pages/login-verify-email/login-verify-email.component.mjs +40 -0
  268. package/dist/esm2022/login/pages/login-verify-email/public-api.mjs +2 -0
  269. package/dist/esm2022/login/pages/login-x509-info/keycloakify-angular-login-pages-login-x509-info.mjs +5 -0
  270. package/dist/esm2022/login/pages/login-x509-info/login-x509-info.component.mjs +40 -0
  271. package/dist/esm2022/login/pages/login-x509-info/public-api.mjs +2 -0
  272. package/dist/esm2022/login/pages/logout-confirm/keycloakify-angular-login-pages-logout-confirm.mjs +5 -0
  273. package/dist/esm2022/login/pages/logout-confirm/logout-confirm.component.mjs +40 -0
  274. package/dist/esm2022/login/pages/logout-confirm/public-api.mjs +2 -0
  275. package/dist/esm2022/login/pages/register/keycloakify-angular-login-pages-register.mjs +5 -0
  276. package/dist/esm2022/login/pages/register/public-api.mjs +2 -0
  277. package/dist/esm2022/login/pages/register/register.component.mjs +55 -0
  278. package/dist/esm2022/login/pages/saml-post-form/keycloakify-angular-login-pages-saml-post-form.mjs +5 -0
  279. package/dist/esm2022/login/pages/saml-post-form/public-api.mjs +2 -0
  280. package/dist/esm2022/login/pages/saml-post-form/saml-post-form.component.mjs +52 -0
  281. package/dist/esm2022/login/pages/select-authenticator/keycloakify-angular-login-pages-select-authenticator.mjs +5 -0
  282. package/dist/esm2022/login/pages/select-authenticator/public-api.mjs +2 -0
  283. package/dist/esm2022/login/pages/select-authenticator/select-authenticator.component.mjs +41 -0
  284. package/dist/esm2022/login/pages/terms/keycloakify-angular-login-pages-terms.mjs +5 -0
  285. package/dist/esm2022/login/pages/terms/public-api.mjs +2 -0
  286. package/dist/esm2022/login/pages/terms/terms.component.mjs +40 -0
  287. package/dist/esm2022/login/pages/update-email/keycloakify-angular-login-pages-update-email.mjs +5 -0
  288. package/dist/esm2022/login/pages/update-email/public-api.mjs +2 -0
  289. package/dist/esm2022/login/pages/update-email/update-email.component.mjs +51 -0
  290. package/dist/esm2022/login/pages/webauthn-authenticate/keycloakify-angular-login-pages-webauthn-authenticate.mjs +5 -0
  291. package/dist/esm2022/login/pages/webauthn-authenticate/public-api.mjs +2 -0
  292. package/dist/esm2022/login/pages/webauthn-authenticate/webauthn-authenticate.component.mjs +80 -0
  293. package/dist/esm2022/login/pages/webauthn-error/keycloakify-angular-login-pages-webauthn-error.mjs +5 -0
  294. package/dist/esm2022/login/pages/webauthn-error/public-api.mjs +2 -0
  295. package/dist/esm2022/login/pages/webauthn-error/webauthn-error.component.mjs +49 -0
  296. package/dist/esm2022/login/pages/webauthn-register/keycloakify-angular-login-pages-webauthn-register.mjs +5 -0
  297. package/dist/esm2022/login/pages/webauthn-register/public-api.mjs +2 -0
  298. package/dist/esm2022/login/pages/webauthn-register/webauthn-register.component.mjs +76 -0
  299. package/dist/esm2022/login/providers/keycloakify-angular/keycloakify-angular-login-providers-keycloakify-angular.mjs +5 -0
  300. package/dist/esm2022/login/providers/keycloakify-angular/keycloakify-angular.providers.mjs +53 -0
  301. package/dist/esm2022/login/providers/keycloakify-angular/public-api.mjs +2 -0
  302. package/dist/esm2022/login/services/i18n/i18n.service.mjs +12 -0
  303. package/dist/esm2022/login/services/i18n/keycloakify-angular-login-services-i18n.mjs +5 -0
  304. package/dist/esm2022/login/services/i18n/public-api.mjs +2 -0
  305. package/dist/esm2022/login/services/login-resource-injector/keycloakify-angular-login-services-login-resource-injector.mjs +5 -0
  306. package/dist/esm2022/login/services/login-resource-injector/login-resource-injector.service.mjs +68 -0
  307. package/dist/esm2022/login/services/login-resource-injector/public-api.mjs +2 -0
  308. package/dist/esm2022/login/services/submit/keycloakify-angular-login-services-submit.mjs +5 -0
  309. package/dist/esm2022/login/services/submit/public-api.mjs +2 -0
  310. package/dist/esm2022/login/services/submit/submit.service.mjs +20 -0
  311. package/dist/esm2022/login/services/user-profile-form/keycloakify-angular-login-services-user-profile-form.mjs +5 -0
  312. package/dist/esm2022/login/services/user-profile-form/public-api.mjs +2 -0
  313. package/dist/esm2022/login/services/user-profile-form/user-profile-form.service.mjs +1019 -0
  314. package/dist/esm2022/login/tokens/classes/classes.token.mjs +3 -0
  315. package/dist/esm2022/login/tokens/classes/keycloakify-angular-login-tokens-classes.mjs +5 -0
  316. package/dist/esm2022/login/tokens/classes/public-api.mjs +2 -0
  317. package/dist/esm2022/login/tokens/i18n/i18n.token.mjs +3 -0
  318. package/dist/esm2022/login/tokens/i18n/keycloakify-angular-login-tokens-i18n.mjs +5 -0
  319. package/dist/esm2022/login/tokens/i18n/public-api.mjs +2 -0
  320. package/dist/esm2022/login/tokens/kc-context/kc-context.token.mjs +3 -0
  321. package/dist/esm2022/login/tokens/kc-context/keycloakify-angular-login-tokens-kc-context.mjs +5 -0
  322. package/dist/esm2022/login/tokens/kc-context/public-api.mjs +2 -0
  323. package/dist/esm2022/login/tokens/make-user-confirm-password/keycloakify-angular-login-tokens-make-user-confirm-password.mjs +5 -0
  324. package/dist/esm2022/login/tokens/make-user-confirm-password/make-user-confirm-password.token.mjs +3 -0
  325. package/dist/esm2022/login/tokens/make-user-confirm-password/public-api.mjs +2 -0
  326. package/dist/esm2022/public-api.mjs +2 -0
  327. package/dist/fesm2022/keycloakify-angular-account-DefaultPage.mjs +39 -0
  328. package/dist/fesm2022/keycloakify-angular-account-DefaultPage.mjs.map +1 -0
  329. package/dist/fesm2022/keycloakify-angular-account-KcContext.mjs +4 -0
  330. package/dist/fesm2022/keycloakify-angular-account-KcContext.mjs.map +1 -0
  331. package/dist/fesm2022/keycloakify-angular-account-classes-component-reference.mjs +9 -0
  332. package/dist/fesm2022/keycloakify-angular-account-classes-component-reference.mjs.map +1 -0
  333. package/dist/fesm2022/keycloakify-angular-account-containers-template.mjs +73 -0
  334. package/dist/fesm2022/keycloakify-angular-account-containers-template.mjs.map +1 -0
  335. package/dist/fesm2022/keycloakify-angular-account-directives-kc-class.mjs +148 -0
  336. package/dist/fesm2022/keycloakify-angular-account-directives-kc-class.mjs.map +1 -0
  337. package/dist/fesm2022/keycloakify-angular-account-i18n.mjs +4 -0
  338. package/dist/fesm2022/keycloakify-angular-account-i18n.mjs.map +1 -0
  339. package/dist/fesm2022/keycloakify-angular-account-pages-account.mjs +46 -0
  340. package/dist/fesm2022/keycloakify-angular-account-pages-account.mjs.map +1 -0
  341. package/dist/fesm2022/keycloakify-angular-account-pages-applications.mjs +44 -0
  342. package/dist/fesm2022/keycloakify-angular-account-pages-applications.mjs.map +1 -0
  343. package/dist/fesm2022/keycloakify-angular-account-pages-federatedIdentity.mjs +43 -0
  344. package/dist/fesm2022/keycloakify-angular-account-pages-federatedIdentity.mjs.map +1 -0
  345. package/dist/fesm2022/keycloakify-angular-account-pages-log.mjs +43 -0
  346. package/dist/fesm2022/keycloakify-angular-account-pages-log.mjs.map +1 -0
  347. package/dist/fesm2022/keycloakify-angular-account-pages-password.mjs +114 -0
  348. package/dist/fesm2022/keycloakify-angular-account-pages-password.mjs.map +1 -0
  349. package/dist/fesm2022/keycloakify-angular-account-pages-sessions.mjs +43 -0
  350. package/dist/fesm2022/keycloakify-angular-account-pages-sessions.mjs.map +1 -0
  351. package/dist/fesm2022/keycloakify-angular-account-pages-totp.mjs +44 -0
  352. package/dist/fesm2022/keycloakify-angular-account-pages-totp.mjs.map +1 -0
  353. package/dist/fesm2022/keycloakify-angular-account-providers-keycloakify-angular.mjs +55 -0
  354. package/dist/fesm2022/keycloakify-angular-account-providers-keycloakify-angular.mjs.map +1 -0
  355. package/dist/fesm2022/keycloakify-angular-account-services-account-resource-injector.mjs +44 -0
  356. package/dist/fesm2022/keycloakify-angular-account-services-account-resource-injector.mjs.map +1 -0
  357. package/dist/fesm2022/keycloakify-angular-account-services-i18n.mjs +19 -0
  358. package/dist/fesm2022/keycloakify-angular-account-services-i18n.mjs.map +1 -0
  359. package/dist/fesm2022/keycloakify-angular-account-tokens-classes.mjs +10 -0
  360. package/dist/fesm2022/keycloakify-angular-account-tokens-classes.mjs.map +1 -0
  361. package/dist/fesm2022/keycloakify-angular-account-tokens-i18n.mjs +10 -0
  362. package/dist/fesm2022/keycloakify-angular-account-tokens-i18n.mjs.map +1 -0
  363. package/dist/fesm2022/keycloakify-angular-account-tokens-kc-context.mjs +10 -0
  364. package/dist/fesm2022/keycloakify-angular-account-tokens-kc-context.mjs.map +1 -0
  365. package/dist/fesm2022/keycloakify-angular-lib-directives-attributes.mjs +33 -0
  366. package/dist/fesm2022/keycloakify-angular-lib-directives-attributes.mjs.map +1 -0
  367. package/dist/fesm2022/keycloakify-angular-lib-models-script.mjs +4 -0
  368. package/dist/fesm2022/keycloakify-angular-lib-models-script.mjs.map +1 -0
  369. package/dist/fesm2022/keycloakify-angular-lib-pipes-input-type.mjs +27 -0
  370. package/dist/fesm2022/keycloakify-angular-lib-pipes-input-type.mjs.map +1 -0
  371. package/dist/fesm2022/keycloakify-angular-lib-pipes-is-array-with-empty-object.mjs +27 -0
  372. package/dist/fesm2022/keycloakify-angular-lib-pipes-is-array-with-empty-object.mjs.map +1 -0
  373. package/dist/fesm2022/keycloakify-angular-lib-pipes-kc-sanitize.mjs +36 -0
  374. package/dist/fesm2022/keycloakify-angular-lib-pipes-kc-sanitize.mjs.map +1 -0
  375. package/dist/fesm2022/keycloakify-angular-lib-pipes-to-array.mjs +28 -0
  376. package/dist/fesm2022/keycloakify-angular-lib-pipes-to-array.mjs.map +1 -0
  377. package/dist/fesm2022/keycloakify-angular-lib-pipes-to-number.mjs +27 -0
  378. package/dist/fesm2022/keycloakify-angular-lib-pipes-to-number.mjs.map +1 -0
  379. package/dist/fesm2022/keycloakify-angular-lib-services-resource-injector.mjs +61 -0
  380. package/dist/fesm2022/keycloakify-angular-lib-services-resource-injector.mjs.map +1 -0
  381. package/dist/fesm2022/keycloakify-angular-lib-tokens-use-default-css.mjs +10 -0
  382. package/dist/fesm2022/keycloakify-angular-lib-tokens-use-default-css.mjs.map +1 -0
  383. package/dist/fesm2022/keycloakify-angular-lib.mjs +8 -0
  384. package/dist/fesm2022/keycloakify-angular-lib.mjs.map +1 -0
  385. package/dist/fesm2022/keycloakify-angular-login-DefaultPage.mjs +126 -0
  386. package/dist/fesm2022/keycloakify-angular-login-DefaultPage.mjs.map +1 -0
  387. package/dist/fesm2022/keycloakify-angular-login-KcContext.mjs +4 -0
  388. package/dist/fesm2022/keycloakify-angular-login-KcContext.mjs.map +1 -0
  389. package/dist/fesm2022/keycloakify-angular-login-classes-component-reference.mjs +9 -0
  390. package/dist/fesm2022/keycloakify-angular-login-classes-component-reference.mjs.map +1 -0
  391. package/dist/fesm2022/keycloakify-angular-login-components-add-remove-buttons-multi-valued-attribute.mjs +113 -0
  392. package/dist/fesm2022/keycloakify-angular-login-components-add-remove-buttons-multi-valued-attribute.mjs.map +1 -0
  393. package/dist/fesm2022/keycloakify-angular-login-components-field-errors.mjs +40 -0
  394. package/dist/fesm2022/keycloakify-angular-login-components-field-errors.mjs.map +1 -0
  395. package/dist/fesm2022/keycloakify-angular-login-components-group-label.mjs +50 -0
  396. package/dist/fesm2022/keycloakify-angular-login-components-group-label.mjs.map +1 -0
  397. package/dist/fesm2022/keycloakify-angular-login-components-input-field-by-type.mjs +53 -0
  398. package/dist/fesm2022/keycloakify-angular-login-components-input-field-by-type.mjs.map +1 -0
  399. package/dist/fesm2022/keycloakify-angular-login-components-input-tag-selects.mjs +124 -0
  400. package/dist/fesm2022/keycloakify-angular-login-components-input-tag-selects.mjs.map +1 -0
  401. package/dist/fesm2022/keycloakify-angular-login-components-input-tag.mjs +97 -0
  402. package/dist/fesm2022/keycloakify-angular-login-components-input-tag.mjs.map +1 -0
  403. package/dist/fesm2022/keycloakify-angular-login-components-logout-other-sessions.mjs +39 -0
  404. package/dist/fesm2022/keycloakify-angular-login-components-logout-other-sessions.mjs.map +1 -0
  405. package/dist/fesm2022/keycloakify-angular-login-components-password-wrapper.mjs +53 -0
  406. package/dist/fesm2022/keycloakify-angular-login-components-password-wrapper.mjs.map +1 -0
  407. package/dist/fesm2022/keycloakify-angular-login-components-select-tag.mjs +89 -0
  408. package/dist/fesm2022/keycloakify-angular-login-components-select-tag.mjs.map +1 -0
  409. package/dist/fesm2022/keycloakify-angular-login-components-textarea-tag.mjs +56 -0
  410. package/dist/fesm2022/keycloakify-angular-login-components-textarea-tag.mjs.map +1 -0
  411. package/dist/fesm2022/keycloakify-angular-login-components-user-profile-form-fields.mjs +69 -0
  412. package/dist/fesm2022/keycloakify-angular-login-components-user-profile-form-fields.mjs.map +1 -0
  413. package/dist/fesm2022/keycloakify-angular-login-containers-template.mjs +79 -0
  414. package/dist/fesm2022/keycloakify-angular-login-containers-template.mjs.map +1 -0
  415. package/dist/fesm2022/keycloakify-angular-login-directives-kc-class.mjs +145 -0
  416. package/dist/fesm2022/keycloakify-angular-login-directives-kc-class.mjs.map +1 -0
  417. package/dist/fesm2022/keycloakify-angular-login-i18n.mjs +4 -0
  418. package/dist/fesm2022/keycloakify-angular-login-i18n.mjs.map +1 -0
  419. package/dist/fesm2022/keycloakify-angular-login-pages-code.mjs +42 -0
  420. package/dist/fesm2022/keycloakify-angular-login-pages-code.mjs.map +1 -0
  421. package/dist/fesm2022/keycloakify-angular-login-pages-delete-account-confirm.mjs +42 -0
  422. package/dist/fesm2022/keycloakify-angular-login-pages-delete-account-confirm.mjs.map +1 -0
  423. package/dist/fesm2022/keycloakify-angular-login-pages-delete-credential.mjs +47 -0
  424. package/dist/fesm2022/keycloakify-angular-login-pages-delete-credential.mjs.map +1 -0
  425. package/dist/fesm2022/keycloakify-angular-login-pages-error.mjs +42 -0
  426. package/dist/fesm2022/keycloakify-angular-login-pages-error.mjs.map +1 -0
  427. package/dist/fesm2022/keycloakify-angular-login-pages-frontchannel-logout.mjs +51 -0
  428. package/dist/fesm2022/keycloakify-angular-login-pages-frontchannel-logout.mjs.map +1 -0
  429. package/dist/fesm2022/keycloakify-angular-login-pages-idp-review-user-profile.mjs +60 -0
  430. package/dist/fesm2022/keycloakify-angular-login-pages-idp-review-user-profile.mjs.map +1 -0
  431. package/dist/fesm2022/keycloakify-angular-login-pages-info.mjs +56 -0
  432. package/dist/fesm2022/keycloakify-angular-login-pages-info.mjs.map +1 -0
  433. package/dist/fesm2022/keycloakify-angular-login-pages-login-config-totp.mjs +49 -0
  434. package/dist/fesm2022/keycloakify-angular-login-pages-login-config-totp.mjs.map +1 -0
  435. package/dist/fesm2022/keycloakify-angular-login-pages-login-idp-link-confirm-override.mjs +47 -0
  436. package/dist/fesm2022/keycloakify-angular-login-pages-login-idp-link-confirm-override.mjs.map +1 -0
  437. package/dist/fesm2022/keycloakify-angular-login-pages-login-idp-link-confirm.mjs +47 -0
  438. package/dist/fesm2022/keycloakify-angular-login-pages-login-idp-link-confirm.mjs.map +1 -0
  439. package/dist/fesm2022/keycloakify-angular-login-pages-login-idp-link-email.mjs +47 -0
  440. package/dist/fesm2022/keycloakify-angular-login-pages-login-idp-link-email.mjs.map +1 -0
  441. package/dist/fesm2022/keycloakify-angular-login-pages-login-oauth-grant.mjs +47 -0
  442. package/dist/fesm2022/keycloakify-angular-login-pages-login-oauth-grant.mjs.map +1 -0
  443. package/dist/fesm2022/keycloakify-angular-login-pages-login-oauth2-device-verify-user-code.mjs +47 -0
  444. package/dist/fesm2022/keycloakify-angular-login-pages-login-oauth2-device-verify-user-code.mjs.map +1 -0
  445. package/dist/fesm2022/keycloakify-angular-login-pages-login-otp.mjs +48 -0
  446. package/dist/fesm2022/keycloakify-angular-login-pages-login-otp.mjs.map +1 -0
  447. package/dist/fesm2022/keycloakify-angular-login-pages-login-page-expired.mjs +46 -0
  448. package/dist/fesm2022/keycloakify-angular-login-pages-login-page-expired.mjs.map +1 -0
  449. package/dist/fesm2022/keycloakify-angular-login-pages-login-passkeys-conditional-authenticate.mjs +91 -0
  450. package/dist/fesm2022/keycloakify-angular-login-pages-login-passkeys-conditional-authenticate.mjs.map +1 -0
  451. package/dist/fesm2022/keycloakify-angular-login-pages-login-password.mjs +50 -0
  452. package/dist/fesm2022/keycloakify-angular-login-pages-login-password.mjs.map +1 -0
  453. package/dist/fesm2022/keycloakify-angular-login-pages-login-recovery-authn-code-config.mjs +50 -0
  454. package/dist/fesm2022/keycloakify-angular-login-pages-login-recovery-authn-code-config.mjs.map +1 -0
  455. package/dist/fesm2022/keycloakify-angular-login-pages-login-recovery-authn-code-input.mjs +48 -0
  456. package/dist/fesm2022/keycloakify-angular-login-pages-login-recovery-authn-code-input.mjs.map +1 -0
  457. package/dist/fesm2022/keycloakify-angular-login-pages-login-reset-otp.mjs +47 -0
  458. package/dist/fesm2022/keycloakify-angular-login-pages-login-reset-otp.mjs.map +1 -0
  459. package/dist/fesm2022/keycloakify-angular-login-pages-login-reset-password.mjs +48 -0
  460. package/dist/fesm2022/keycloakify-angular-login-pages-login-reset-password.mjs.map +1 -0
  461. package/dist/fesm2022/keycloakify-angular-login-pages-login-update-password.mjs +50 -0
  462. package/dist/fesm2022/keycloakify-angular-login-pages-login-update-password.mjs.map +1 -0
  463. package/dist/fesm2022/keycloakify-angular-login-pages-login-update-profile.mjs +57 -0
  464. package/dist/fesm2022/keycloakify-angular-login-pages-login-update-profile.mjs.map +1 -0
  465. package/dist/fesm2022/keycloakify-angular-login-pages-login-username.mjs +50 -0
  466. package/dist/fesm2022/keycloakify-angular-login-pages-login-username.mjs.map +1 -0
  467. package/dist/fesm2022/keycloakify-angular-login-pages-login-verify-email.mjs +47 -0
  468. package/dist/fesm2022/keycloakify-angular-login-pages-login-verify-email.mjs.map +1 -0
  469. package/dist/fesm2022/keycloakify-angular-login-pages-login-x509-info.mjs +47 -0
  470. package/dist/fesm2022/keycloakify-angular-login-pages-login-x509-info.mjs.map +1 -0
  471. package/dist/fesm2022/keycloakify-angular-login-pages-login.mjs +51 -0
  472. package/dist/fesm2022/keycloakify-angular-login-pages-login.mjs.map +1 -0
  473. package/dist/fesm2022/keycloakify-angular-login-pages-logout-confirm.mjs +47 -0
  474. package/dist/fesm2022/keycloakify-angular-login-pages-logout-confirm.mjs.map +1 -0
  475. package/dist/fesm2022/keycloakify-angular-login-pages-register.mjs +62 -0
  476. package/dist/fesm2022/keycloakify-angular-login-pages-register.mjs.map +1 -0
  477. package/dist/fesm2022/keycloakify-angular-login-pages-saml-post-form.mjs +59 -0
  478. package/dist/fesm2022/keycloakify-angular-login-pages-saml-post-form.mjs.map +1 -0
  479. package/dist/fesm2022/keycloakify-angular-login-pages-select-authenticator.mjs +48 -0
  480. package/dist/fesm2022/keycloakify-angular-login-pages-select-authenticator.mjs.map +1 -0
  481. package/dist/fesm2022/keycloakify-angular-login-pages-terms.mjs +47 -0
  482. package/dist/fesm2022/keycloakify-angular-login-pages-terms.mjs.map +1 -0
  483. package/dist/fesm2022/keycloakify-angular-login-pages-update-email.mjs +58 -0
  484. package/dist/fesm2022/keycloakify-angular-login-pages-update-email.mjs.map +1 -0
  485. package/dist/fesm2022/keycloakify-angular-login-pages-webauthn-authenticate.mjs +87 -0
  486. package/dist/fesm2022/keycloakify-angular-login-pages-webauthn-authenticate.mjs.map +1 -0
  487. package/dist/fesm2022/keycloakify-angular-login-pages-webauthn-error.mjs +56 -0
  488. package/dist/fesm2022/keycloakify-angular-login-pages-webauthn-error.mjs.map +1 -0
  489. package/dist/fesm2022/keycloakify-angular-login-pages-webauthn-register.mjs +83 -0
  490. package/dist/fesm2022/keycloakify-angular-login-pages-webauthn-register.mjs.map +1 -0
  491. package/dist/fesm2022/keycloakify-angular-login-providers-keycloakify-angular.mjs +60 -0
  492. package/dist/fesm2022/keycloakify-angular-login-providers-keycloakify-angular.mjs.map +1 -0
  493. package/dist/fesm2022/keycloakify-angular-login-services-i18n.mjs +19 -0
  494. package/dist/fesm2022/keycloakify-angular-login-services-i18n.mjs.map +1 -0
  495. package/dist/fesm2022/keycloakify-angular-login-services-login-resource-injector.mjs +75 -0
  496. package/dist/fesm2022/keycloakify-angular-login-services-login-resource-injector.mjs.map +1 -0
  497. package/dist/fesm2022/keycloakify-angular-login-services-submit.mjs +27 -0
  498. package/dist/fesm2022/keycloakify-angular-login-services-submit.mjs.map +1 -0
  499. package/dist/fesm2022/keycloakify-angular-login-services-user-profile-form.mjs +1026 -0
  500. package/dist/fesm2022/keycloakify-angular-login-services-user-profile-form.mjs.map +1 -0
  501. package/dist/fesm2022/keycloakify-angular-login-tokens-classes.mjs +10 -0
  502. package/dist/fesm2022/keycloakify-angular-login-tokens-classes.mjs.map +1 -0
  503. package/dist/fesm2022/keycloakify-angular-login-tokens-i18n.mjs +10 -0
  504. package/dist/fesm2022/keycloakify-angular-login-tokens-i18n.mjs.map +1 -0
  505. package/dist/fesm2022/keycloakify-angular-login-tokens-kc-context.mjs +10 -0
  506. package/dist/fesm2022/keycloakify-angular-login-tokens-kc-context.mjs.map +1 -0
  507. package/dist/fesm2022/keycloakify-angular-login-tokens-make-user-confirm-password.mjs +10 -0
  508. package/dist/fesm2022/keycloakify-angular-login-tokens-make-user-confirm-password.mjs.map +1 -0
  509. package/dist/fesm2022/keycloakify-angular.mjs +8 -0
  510. package/dist/fesm2022/keycloakify-angular.mjs.map +1 -0
  511. package/dist/index.d.ts +5 -0
  512. package/dist/lib/directives/attributes/index.d.ts +5 -0
  513. package/dist/lib/directives/attributes/public-api.d.ts +1 -0
  514. package/dist/lib/index.d.ts +5 -0
  515. package/dist/lib/models/script/index.d.ts +5 -0
  516. package/dist/lib/models/script/public-api.d.ts +1 -0
  517. package/dist/lib/pipes/input-type/index.d.ts +5 -0
  518. package/dist/lib/pipes/input-type/public-api.d.ts +1 -0
  519. package/dist/lib/pipes/is-array-with-empty-object/index.d.ts +5 -0
  520. package/dist/lib/pipes/is-array-with-empty-object/public-api.d.ts +1 -0
  521. package/dist/lib/pipes/kc-sanitize/index.d.ts +5 -0
  522. package/dist/lib/pipes/kc-sanitize/public-api.d.ts +1 -0
  523. package/dist/lib/pipes/to-array/index.d.ts +5 -0
  524. package/dist/lib/pipes/to-array/public-api.d.ts +1 -0
  525. package/dist/lib/pipes/to-number/index.d.ts +5 -0
  526. package/dist/lib/pipes/to-number/public-api.d.ts +1 -0
  527. package/dist/lib/public-api.d.ts +1 -0
  528. package/dist/lib/services/resource-injector/index.d.ts +5 -0
  529. package/dist/lib/services/resource-injector/public-api.d.ts +1 -0
  530. package/dist/lib/services/resource-injector/resource-injector.service.d.ts +10 -0
  531. package/dist/lib/tokens/use-default-css/index.d.ts +5 -0
  532. package/dist/lib/tokens/use-default-css/public-api.d.ts +1 -0
  533. package/dist/login/DefaultPage/DefaultPage.d.ts +260 -0
  534. package/dist/login/DefaultPage/index.d.ts +5 -0
  535. package/dist/login/DefaultPage/public-api.d.ts +1 -0
  536. package/dist/login/KcContext/index.d.ts +5 -0
  537. package/dist/login/KcContext/public-api.d.ts +1 -0
  538. package/dist/login/classes/component-reference/component-reference.class.d.ts +5 -0
  539. package/dist/login/classes/component-reference/index.d.ts +5 -0
  540. package/dist/login/classes/component-reference/public-api.d.ts +1 -0
  541. package/dist/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.d.ts +18 -0
  542. package/dist/login/components/add-remove-buttons-multi-valued-attribute/index.d.ts +5 -0
  543. package/dist/login/components/add-remove-buttons-multi-valued-attribute/public-api.d.ts +1 -0
  544. package/dist/login/components/field-errors/field-errors.component.d.ts +14 -0
  545. package/dist/login/components/field-errors/index.d.ts +5 -0
  546. package/dist/login/components/field-errors/public-api.d.ts +1 -0
  547. package/dist/login/components/group-label/group-label.component.d.ts +15 -0
  548. package/dist/login/components/group-label/index.d.ts +5 -0
  549. package/dist/login/components/group-label/public-api.d.ts +1 -0
  550. package/dist/login/components/input-field-by-type/index.d.ts +5 -0
  551. package/dist/login/components/input-field-by-type/input-field-by-type.component.d.ts +16 -0
  552. package/dist/login/components/input-field-by-type/public-api.d.ts +1 -0
  553. package/dist/login/components/input-tag/index.d.ts +5 -0
  554. package/dist/login/components/input-tag/input-tag.component.d.ts +22 -0
  555. package/dist/login/components/input-tag/public-api.d.ts +1 -0
  556. package/dist/login/components/input-tag-selects/index.d.ts +5 -0
  557. package/dist/login/components/input-tag-selects/input-tag-selects.component.d.ts +28 -0
  558. package/dist/login/components/input-tag-selects/public-api.d.ts +1 -0
  559. package/dist/login/components/logout-other-sessions/index.d.ts +5 -0
  560. package/dist/login/components/logout-other-sessions/logout-other-sessions.component.d.ts +11 -0
  561. package/dist/login/components/logout-other-sessions/public-api.d.ts +1 -0
  562. package/dist/login/components/password-wrapper/index.d.ts +5 -0
  563. package/dist/login/components/password-wrapper/password-wrapper.component.d.ts +17 -0
  564. package/dist/login/components/password-wrapper/public-api.d.ts +1 -0
  565. package/dist/login/components/select-tag/index.d.ts +5 -0
  566. package/dist/login/components/select-tag/public-api.d.ts +1 -0
  567. package/dist/login/components/select-tag/select-tag.component.d.ts +21 -0
  568. package/dist/login/components/textarea-tag/index.d.ts +5 -0
  569. package/dist/login/components/textarea-tag/public-api.d.ts +1 -0
  570. package/dist/login/components/textarea-tag/textarea-tag.component.d.ts +17 -0
  571. package/dist/login/components/user-profile-form-fields/index.d.ts +5 -0
  572. package/dist/login/components/user-profile-form-fields/public-api.d.ts +1 -0
  573. package/dist/login/components/user-profile-form-fields/user-profile-form-fields.component.d.ts +31 -0
  574. package/dist/login/containers/template/index.d.ts +5 -0
  575. package/dist/login/containers/template/public-api.d.ts +1 -0
  576. package/dist/login/containers/template/template.component.d.ts +31 -0
  577. package/dist/login/directives/kc-class/index.d.ts +5 -0
  578. package/dist/login/directives/kc-class/kc-class.directive.d.ts +26 -0
  579. package/dist/login/directives/kc-class/public-api.d.ts +1 -0
  580. package/dist/login/i18n/index.d.ts +5 -0
  581. package/dist/login/i18n/public-api.d.ts +1 -0
  582. package/dist/login/pages/code/code.component.d.ts +13 -0
  583. package/dist/login/pages/code/index.d.ts +5 -0
  584. package/dist/login/pages/code/public-api.d.ts +1 -0
  585. package/dist/login/pages/delete-account-confirm/delete-account-confirm.component.d.ts +13 -0
  586. package/dist/login/pages/delete-account-confirm/index.d.ts +5 -0
  587. package/dist/login/pages/delete-account-confirm/public-api.d.ts +1 -0
  588. package/dist/login/pages/delete-credential/delete-credential.component.d.ts +18 -0
  589. package/dist/login/pages/delete-credential/index.d.ts +5 -0
  590. package/dist/login/pages/delete-credential/public-api.d.ts +1 -0
  591. package/dist/login/pages/error/error.component.d.ts +13 -0
  592. package/dist/login/pages/error/index.d.ts +5 -0
  593. package/dist/login/pages/error/public-api.d.ts +1 -0
  594. package/dist/login/pages/frontchannel-logout/frontchannel-logout.component.d.ts +19 -0
  595. package/dist/login/pages/frontchannel-logout/index.d.ts +5 -0
  596. package/dist/login/pages/frontchannel-logout/public-api.d.ts +1 -0
  597. package/dist/login/pages/idp-review-user-profile/idp-review-user-profile.component.d.ts +25 -0
  598. package/dist/login/pages/idp-review-user-profile/index.d.ts +5 -0
  599. package/dist/login/pages/idp-review-user-profile/public-api.d.ts +1 -0
  600. package/dist/login/pages/info/index.d.ts +5 -0
  601. package/dist/login/pages/info/info.component.d.ts +19 -0
  602. package/dist/login/pages/info/public-api.d.ts +1 -0
  603. package/dist/login/pages/login/index.d.ts +5 -0
  604. package/dist/login/pages/login/login.component.d.ts +19 -0
  605. package/dist/login/pages/login/public-api.d.ts +1 -0
  606. package/dist/login/pages/login-config-totp/index.d.ts +5 -0
  607. package/dist/login/pages/login-config-totp/login-config-totp.component.d.ts +18 -0
  608. package/dist/login/pages/login-config-totp/public-api.d.ts +1 -0
  609. package/dist/login/pages/login-idp-link-confirm/index.d.ts +5 -0
  610. package/dist/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.d.ts +18 -0
  611. package/dist/login/pages/login-idp-link-confirm/public-api.d.ts +1 -0
  612. package/dist/login/pages/login-idp-link-confirm-override/index.d.ts +5 -0
  613. package/dist/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.d.ts +18 -0
  614. package/dist/login/pages/login-idp-link-confirm-override/public-api.d.ts +1 -0
  615. package/dist/login/pages/login-idp-link-email/index.d.ts +5 -0
  616. package/dist/login/pages/login-idp-link-email/login-idp-link-email.component.d.ts +18 -0
  617. package/dist/login/pages/login-idp-link-email/public-api.d.ts +1 -0
  618. package/dist/login/pages/login-oauth-grant/index.d.ts +5 -0
  619. package/dist/login/pages/login-oauth-grant/login-oauth-grant.component.d.ts +18 -0
  620. package/dist/login/pages/login-oauth-grant/public-api.d.ts +1 -0
  621. package/dist/login/pages/login-oauth2-device-verify-user-code/index.d.ts +5 -0
  622. package/dist/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.d.ts +18 -0
  623. package/dist/login/pages/login-oauth2-device-verify-user-code/public-api.d.ts +1 -0
  624. package/dist/login/pages/login-otp/index.d.ts +5 -0
  625. package/dist/login/pages/login-otp/login-otp.component.d.ts +18 -0
  626. package/dist/login/pages/login-otp/public-api.d.ts +1 -0
  627. package/dist/login/pages/login-page-expired/index.d.ts +5 -0
  628. package/dist/login/pages/login-page-expired/login-page-expired.component.d.ts +18 -0
  629. package/dist/login/pages/login-page-expired/public-api.d.ts +1 -0
  630. package/dist/login/pages/login-passkeys-conditional-authenticate/index.d.ts +5 -0
  631. package/dist/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.d.ts +19 -0
  632. package/dist/login/pages/login-passkeys-conditional-authenticate/public-api.d.ts +1 -0
  633. package/dist/login/pages/login-password/index.d.ts +5 -0
  634. package/dist/login/pages/login-password/login-password.component.d.ts +19 -0
  635. package/dist/login/pages/login-password/public-api.d.ts +1 -0
  636. package/dist/login/pages/login-recovery-authn-code-config/index.d.ts +5 -0
  637. package/dist/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.d.ts +20 -0
  638. package/dist/login/pages/login-recovery-authn-code-config/public-api.d.ts +1 -0
  639. package/dist/login/pages/login-recovery-authn-code-input/index.d.ts +5 -0
  640. package/dist/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.d.ts +18 -0
  641. package/dist/login/pages/login-recovery-authn-code-input/public-api.d.ts +1 -0
  642. package/dist/login/pages/login-reset-otp/index.d.ts +5 -0
  643. package/dist/login/pages/login-reset-otp/login-reset-otp.component.d.ts +18 -0
  644. package/dist/login/pages/login-reset-otp/public-api.d.ts +1 -0
  645. package/dist/login/pages/login-reset-password/index.d.ts +5 -0
  646. package/dist/login/pages/login-reset-password/login-reset-password.component.d.ts +18 -0
  647. package/dist/login/pages/login-reset-password/public-api.d.ts +1 -0
  648. package/dist/login/pages/login-update-password/index.d.ts +5 -0
  649. package/dist/login/pages/login-update-password/login-update-password.component.d.ts +18 -0
  650. package/dist/login/pages/login-update-password/public-api.d.ts +1 -0
  651. package/dist/login/pages/login-update-profile/index.d.ts +5 -0
  652. package/dist/login/pages/login-update-profile/login-update-profile.component.d.ts +24 -0
  653. package/dist/login/pages/login-update-profile/public-api.d.ts +1 -0
  654. package/dist/login/pages/login-username/index.d.ts +5 -0
  655. package/dist/login/pages/login-username/login-username.component.d.ts +19 -0
  656. package/dist/login/pages/login-username/public-api.d.ts +1 -0
  657. package/dist/login/pages/login-verify-email/index.d.ts +5 -0
  658. package/dist/login/pages/login-verify-email/login-verify-email.component.d.ts +18 -0
  659. package/dist/login/pages/login-verify-email/public-api.d.ts +1 -0
  660. package/dist/login/pages/login-x509-info/index.d.ts +5 -0
  661. package/dist/login/pages/login-x509-info/login-x509-info.component.d.ts +18 -0
  662. package/dist/login/pages/login-x509-info/public-api.d.ts +1 -0
  663. package/dist/login/pages/logout-confirm/index.d.ts +5 -0
  664. package/dist/login/pages/logout-confirm/logout-confirm.component.d.ts +18 -0
  665. package/dist/login/pages/logout-confirm/public-api.d.ts +1 -0
  666. package/dist/login/pages/register/index.d.ts +5 -0
  667. package/dist/login/pages/register/public-api.d.ts +1 -0
  668. package/dist/login/pages/register/register.component.d.ts +26 -0
  669. package/dist/login/pages/saml-post-form/index.d.ts +5 -0
  670. package/dist/login/pages/saml-post-form/public-api.d.ts +1 -0
  671. package/dist/login/pages/saml-post-form/saml-post-form.component.d.ts +21 -0
  672. package/dist/login/pages/select-authenticator/index.d.ts +5 -0
  673. package/dist/login/pages/select-authenticator/public-api.d.ts +1 -0
  674. package/dist/login/pages/select-authenticator/select-authenticator.component.d.ts +18 -0
  675. package/dist/login/pages/terms/index.d.ts +5 -0
  676. package/dist/login/pages/terms/public-api.d.ts +1 -0
  677. package/dist/login/pages/terms/terms.component.d.ts +18 -0
  678. package/dist/login/pages/update-email/index.d.ts +5 -0
  679. package/dist/login/pages/update-email/public-api.d.ts +1 -0
  680. package/dist/login/pages/update-email/update-email.component.d.ts +24 -0
  681. package/dist/login/pages/webauthn-authenticate/index.d.ts +5 -0
  682. package/dist/login/pages/webauthn-authenticate/public-api.d.ts +1 -0
  683. package/dist/login/pages/webauthn-authenticate/webauthn-authenticate.component.d.ts +23 -0
  684. package/dist/login/pages/webauthn-error/index.d.ts +5 -0
  685. package/dist/login/pages/webauthn-error/public-api.d.ts +1 -0
  686. package/dist/login/pages/webauthn-error/webauthn-error.component.d.ts +19 -0
  687. package/dist/login/pages/webauthn-register/index.d.ts +5 -0
  688. package/dist/login/pages/webauthn-register/public-api.d.ts +1 -0
  689. package/dist/login/pages/webauthn-register/webauthn-register.component.d.ts +22 -0
  690. package/dist/login/providers/keycloakify-angular/index.d.ts +5 -0
  691. package/dist/login/providers/keycloakify-angular/keycloakify-angular.providers.d.ts +16 -0
  692. package/dist/login/providers/keycloakify-angular/public-api.d.ts +1 -0
  693. package/dist/login/services/i18n/index.d.ts +5 -0
  694. package/dist/login/services/i18n/public-api.d.ts +1 -0
  695. package/dist/login/services/login-resource-injector/index.d.ts +5 -0
  696. package/dist/login/services/login-resource-injector/login-resource-injector.service.d.ts +11 -0
  697. package/dist/login/services/login-resource-injector/public-api.d.ts +1 -0
  698. package/dist/login/services/submit/index.d.ts +5 -0
  699. package/dist/login/services/submit/public-api.d.ts +1 -0
  700. package/dist/login/services/user-profile-form/index.d.ts +5 -0
  701. package/dist/login/services/user-profile-form/public-api.d.ts +1 -0
  702. package/dist/login/services/user-profile-form/user-profile-form.service.d.ts +86 -0
  703. package/dist/login/tokens/classes/classes.token.d.ts +127 -0
  704. package/dist/login/tokens/classes/index.d.ts +5 -0
  705. package/dist/login/tokens/classes/public-api.d.ts +1 -0
  706. package/dist/login/tokens/i18n/index.d.ts +5 -0
  707. package/dist/login/tokens/i18n/public-api.d.ts +1 -0
  708. package/dist/login/tokens/kc-context/index.d.ts +5 -0
  709. package/dist/login/tokens/kc-context/kc-context.token.d.ts +3 -0
  710. package/dist/login/tokens/kc-context/public-api.d.ts +1 -0
  711. package/dist/login/tokens/make-user-confirm-password/index.d.ts +5 -0
  712. package/dist/login/tokens/make-user-confirm-password/public-api.d.ts +1 -0
  713. package/dist/public-api.d.ts +1 -0
  714. package/dist/src/account/DefaultPage.ts +61 -0
  715. package/dist/src/account/classes/component-reference/component-reference.class.ts +6 -0
  716. package/dist/src/account/classes/component-reference/index.ts +1 -0
  717. package/dist/src/account/containers/template/index.ts +1 -0
  718. package/dist/src/account/containers/template/template.component.ts +71 -0
  719. package/dist/src/account/directives/kc-class/index.ts +1 -0
  720. package/dist/src/account/directives/kc-class/kc-class.directive.ts +170 -0
  721. package/dist/src/account/pages/account/account.component.ts +34 -0
  722. package/dist/src/account/pages/account/index.ts +1 -0
  723. package/dist/src/account/pages/applications/applications.component.ts +32 -0
  724. package/dist/src/account/pages/applications/index.ts +1 -0
  725. package/dist/src/account/pages/federatedIdentity/federatedIdentity.component.ts +31 -0
  726. package/dist/src/account/pages/federatedIdentity/index.ts +1 -0
  727. package/dist/src/account/pages/log/index.ts +1 -0
  728. package/dist/src/account/pages/log/log.component.ts +31 -0
  729. package/dist/src/account/pages/password/index.ts +1 -0
  730. package/dist/src/account/pages/password/password.component.ts +110 -0
  731. package/dist/src/account/pages/sessions/index.ts +1 -0
  732. package/dist/src/account/pages/sessions/sessions.component.ts +31 -0
  733. package/dist/src/account/pages/totp/index.ts +1 -0
  734. package/dist/src/account/pages/totp/totp.component.ts +32 -0
  735. package/dist/src/account/providers/keycloakify-angular/index.ts +1 -0
  736. package/dist/src/account/providers/keycloakify-angular/keycloakify-angular.providers.ts +64 -0
  737. package/dist/src/account/services/account-resource-injector/account-resource-injector.service.ts +41 -0
  738. package/dist/src/account/services/account-resource-injector/index.ts +1 -0
  739. package/dist/src/account/services/i18n/index.ts +1 -0
  740. package/dist/src/account/tokens/classes/classes.token.ts +6 -0
  741. package/dist/src/account/tokens/classes/index.ts +1 -0
  742. package/dist/src/account/tokens/i18n/index.ts +1 -0
  743. package/dist/src/account/tokens/kc-context/index.ts +1 -0
  744. package/dist/src/account/tokens/kc-context/kc-context.token.ts +6 -0
  745. package/dist/src/lib/directives/attributes/index.ts +1 -0
  746. package/dist/src/lib/models/script/index.ts +1 -0
  747. package/dist/src/lib/pipes/input-type/index.ts +1 -0
  748. package/dist/src/lib/pipes/is-array-with-empty-object/index.ts +1 -0
  749. package/dist/src/lib/pipes/is-array-with-empty-object/is-array-with-empty-object.pipe.ts +16 -0
  750. package/dist/src/lib/pipes/kc-sanitize/index.ts +1 -0
  751. package/dist/src/lib/pipes/to-array/index.ts +1 -0
  752. package/dist/src/lib/pipes/to-array/to-array.pipe.ts +15 -0
  753. package/dist/src/lib/pipes/to-number/index.ts +1 -0
  754. package/dist/src/lib/pipes/to-number/to-number.pipe.ts +13 -0
  755. package/dist/src/lib/services/resource-injector/index.ts +1 -0
  756. package/dist/src/lib/services/resource-injector/resource-injector.service.ts +50 -0
  757. package/dist/src/lib/tokens/use-default-css/index.ts +1 -0
  758. package/dist/src/login/DefaultPage.ts +208 -0
  759. package/dist/src/login/classes/component-reference/component-reference.class.ts +5 -0
  760. package/dist/src/login/classes/component-reference/index.ts +1 -0
  761. package/dist/src/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.ts +136 -0
  762. package/dist/src/login/components/add-remove-buttons-multi-valued-attribute/index.ts +1 -0
  763. package/dist/src/login/components/field-errors/field-errors.component.ts +36 -0
  764. package/dist/src/login/components/field-errors/index.ts +1 -0
  765. package/dist/src/login/components/group-label/group-label.component.ts +46 -0
  766. package/dist/src/login/components/group-label/index.ts +1 -0
  767. package/dist/src/login/components/input-field-by-type/index.ts +1 -0
  768. package/dist/src/login/components/input-field-by-type/input-field-by-type.component.ts +50 -0
  769. package/dist/src/login/components/input-tag/index.ts +1 -0
  770. package/dist/src/login/components/input-tag/input-tag.component.ts +99 -0
  771. package/dist/src/login/components/input-tag-selects/index.ts +1 -0
  772. package/dist/src/login/components/input-tag-selects/input-tag-selects.component.ts +139 -0
  773. package/dist/src/login/components/logout-other-sessions/index.ts +1 -0
  774. package/dist/src/login/components/logout-other-sessions/logout-other-sessions.component.ts +34 -0
  775. package/dist/src/login/components/password-wrapper/index.ts +1 -0
  776. package/dist/src/login/components/password-wrapper/password-wrapper.component.ts +51 -0
  777. package/dist/src/login/components/select-tag/index.ts +1 -0
  778. package/dist/src/login/components/select-tag/select-tag.component.ts +97 -0
  779. package/dist/src/login/components/textarea-tag/index.ts +1 -0
  780. package/dist/src/login/components/textarea-tag/textarea-tag.component.ts +54 -0
  781. package/dist/src/login/components/user-profile-form-fields/index.ts +1 -0
  782. package/dist/src/login/components/user-profile-form-fields/user-profile-form-fields.component.ts +70 -0
  783. package/dist/src/login/containers/template/index.ts +1 -0
  784. package/dist/src/login/containers/template/template.component.ts +78 -0
  785. package/dist/src/login/directives/kc-class/index.ts +1 -0
  786. package/dist/src/login/directives/kc-class/kc-class.directive.ts +167 -0
  787. package/dist/src/login/pages/code/code.component.ts +31 -0
  788. package/dist/src/login/pages/code/index.ts +1 -0
  789. package/dist/src/login/pages/delete-account-confirm/delete-account-confirm.component.ts +31 -0
  790. package/dist/src/login/pages/delete-account-confirm/index.ts +1 -0
  791. package/dist/src/login/pages/delete-credential/delete-credential.component.ts +36 -0
  792. package/dist/src/login/pages/delete-credential/index.ts +1 -0
  793. package/dist/src/login/pages/error/error.component.ts +31 -0
  794. package/dist/src/login/pages/error/index.ts +1 -0
  795. package/dist/src/login/pages/frontchannel-logout/frontchannel-logout.component.ts +41 -0
  796. package/dist/src/login/pages/frontchannel-logout/index.ts +1 -0
  797. package/dist/src/login/pages/idp-review-user-profile/idp-review-user-profile.component.ts +56 -0
  798. package/dist/src/login/pages/idp-review-user-profile/index.ts +1 -0
  799. package/dist/src/login/pages/info/index.ts +1 -0
  800. package/dist/src/login/pages/info/info.component.ts +48 -0
  801. package/dist/src/login/pages/login/index.ts +1 -0
  802. package/dist/src/login/pages/login/login.component.ts +40 -0
  803. package/dist/src/login/pages/login-config-totp/index.ts +1 -0
  804. package/dist/src/login/pages/login-config-totp/login-config-totp.component.ts +38 -0
  805. package/dist/src/login/pages/login-idp-link-confirm/index.ts +1 -0
  806. package/dist/src/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.ts +36 -0
  807. package/dist/src/login/pages/login-idp-link-confirm-override/index.ts +1 -0
  808. package/dist/src/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.ts +36 -0
  809. package/dist/src/login/pages/login-idp-link-email/index.ts +1 -0
  810. package/dist/src/login/pages/login-idp-link-email/login-idp-link-email.component.ts +36 -0
  811. package/dist/src/login/pages/login-oauth-grant/index.ts +1 -0
  812. package/dist/src/login/pages/login-oauth-grant/login-oauth-grant.component.ts +36 -0
  813. package/dist/src/login/pages/login-oauth2-device-verify-user-code/index.ts +1 -0
  814. package/dist/src/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.ts +36 -0
  815. package/dist/src/login/pages/login-otp/index.ts +1 -0
  816. package/dist/src/login/pages/login-otp/login-otp.component.ts +37 -0
  817. package/dist/src/login/pages/login-page-expired/index.ts +1 -0
  818. package/dist/src/login/pages/login-page-expired/login-page-expired.component.ts +35 -0
  819. package/dist/src/login/pages/login-passkeys-conditional-authenticate/index.ts +1 -0
  820. package/dist/src/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.ts +94 -0
  821. package/dist/src/login/pages/login-password/index.ts +1 -0
  822. package/dist/src/login/pages/login-password/login-password.component.ts +40 -0
  823. package/dist/src/login/pages/login-recovery-authn-code-config/index.ts +1 -0
  824. package/dist/src/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.ts +40 -0
  825. package/dist/src/login/pages/login-recovery-authn-code-input/index.ts +1 -0
  826. package/dist/src/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.ts +37 -0
  827. package/dist/src/login/pages/login-reset-otp/index.ts +1 -0
  828. package/dist/src/login/pages/login-reset-otp/login-reset-otp.component.ts +36 -0
  829. package/dist/src/login/pages/login-reset-password/index.ts +1 -0
  830. package/dist/src/login/pages/login-reset-password/login-reset-password.component.ts +37 -0
  831. package/dist/src/login/pages/login-update-password/index.ts +1 -0
  832. package/dist/src/login/pages/login-update-password/login-update-password.component.ts +39 -0
  833. package/dist/src/login/pages/login-update-profile/index.ts +1 -0
  834. package/dist/src/login/pages/login-update-profile/login-update-profile.component.ts +51 -0
  835. package/dist/src/login/pages/login-username/index.ts +1 -0
  836. package/dist/src/login/pages/login-username/login-username.component.ts +39 -0
  837. package/dist/src/login/pages/login-verify-email/index.ts +1 -0
  838. package/dist/src/login/pages/login-verify-email/login-verify-email.component.ts +36 -0
  839. package/dist/src/login/pages/login-x509-info/index.ts +1 -0
  840. package/dist/src/login/pages/login-x509-info/login-x509-info.component.ts +36 -0
  841. package/dist/src/login/pages/logout-confirm/index.ts +1 -0
  842. package/dist/src/login/pages/logout-confirm/logout-confirm.component.ts +36 -0
  843. package/dist/src/login/pages/register/index.ts +1 -0
  844. package/dist/src/login/pages/register/register.component.ts +56 -0
  845. package/dist/src/login/pages/saml-post-form/index.ts +1 -0
  846. package/dist/src/login/pages/saml-post-form/saml-post-form.component.ts +50 -0
  847. package/dist/src/login/pages/select-authenticator/index.ts +1 -0
  848. package/dist/src/login/pages/select-authenticator/select-authenticator.component.ts +37 -0
  849. package/dist/src/login/pages/terms/index.ts +1 -0
  850. package/dist/src/login/pages/terms/terms.component.ts +36 -0
  851. package/dist/src/login/pages/update-email/index.ts +1 -0
  852. package/dist/src/login/pages/update-email/update-email.component.ts +52 -0
  853. package/dist/src/login/pages/webauthn-authenticate/index.ts +1 -0
  854. package/dist/src/login/pages/webauthn-authenticate/webauthn-authenticate.component.ts +82 -0
  855. package/dist/src/login/pages/webauthn-error/index.ts +1 -0
  856. package/dist/src/login/pages/webauthn-error/webauthn-error.component.ts +46 -0
  857. package/dist/src/login/pages/webauthn-register/index.ts +1 -0
  858. package/dist/src/login/pages/webauthn-register/webauthn-register.component.ts +92 -0
  859. package/dist/src/login/providers/keycloakify-angular/index.ts +1 -0
  860. package/dist/src/login/providers/keycloakify-angular/keycloakify-angular.providers.ts +68 -0
  861. package/dist/src/login/services/i18n/index.ts +1 -0
  862. package/dist/src/login/services/login-resource-injector/index.ts +1 -0
  863. package/dist/src/login/services/login-resource-injector/login-resource-injector.service.ts +73 -0
  864. package/dist/src/login/services/submit/index.ts +1 -0
  865. package/dist/src/login/services/user-profile-form/index.ts +1 -0
  866. package/dist/src/login/services/user-profile-form/user-profile-form.service.ts +1502 -0
  867. package/dist/src/login/tokens/classes/classes.token.ts +6 -0
  868. package/dist/src/login/tokens/classes/index.ts +1 -0
  869. package/dist/src/login/tokens/i18n/index.ts +1 -0
  870. package/dist/src/login/tokens/kc-context/index.ts +1 -0
  871. package/dist/src/login/tokens/kc-context/kc-context.token.ts +4 -0
  872. package/dist/src/login/tokens/make-user-confirm-password/index.ts +1 -0
  873. package/dist/src/tsconfig.lib.json +12 -0
  874. package/dist/src/tsconfig.lib.prod.json +10 -0
  875. package/package.json +8 -343
  876. package/account/DefaultPage.d.ts +0 -38
  877. package/account/DefaultPage.js +0 -34
  878. package/account/KcContext.js +0 -2
  879. package/account/classes/component-reference.class.js +0 -3
  880. package/account/containers/template.component.d.ts +0 -26
  881. package/account/containers/template.component.js +0 -66
  882. package/account/directives/kc-class.directive.js +0 -137
  883. package/account/i18n.js +0 -2
  884. package/account/pages/account/account.component.d.ts +0 -14
  885. package/account/pages/account/account.component.js +0 -39
  886. package/account/pages/applications/applications.component.d.ts +0 -13
  887. package/account/pages/applications/applications.component.js +0 -37
  888. package/account/pages/federatedIdentity/federatedIdentity.component.d.ts +0 -13
  889. package/account/pages/federatedIdentity/federatedIdentity.component.js +0 -36
  890. package/account/pages/log/log.component.d.ts +0 -13
  891. package/account/pages/log/log.component.js +0 -36
  892. package/account/pages/password/password.component.d.ts +0 -28
  893. package/account/pages/password/password.component.js +0 -107
  894. package/account/pages/sessions/sessions.component.d.ts +0 -13
  895. package/account/pages/sessions/sessions.component.js +0 -36
  896. package/account/pages/totp/totp.component.d.ts +0 -13
  897. package/account/pages/totp/totp.component.js +0 -37
  898. package/account/providers/keycloakify-angular.providers.d.ts +0 -15
  899. package/account/providers/keycloakify-angular.providers.js +0 -48
  900. package/account/services/i18n.service.js +0 -12
  901. package/account/services/resource-injector.service.d.ts +0 -10
  902. package/account/services/resource-injector.service.js +0 -37
  903. package/account/tokens/classes.token.js +0 -3
  904. package/account/tokens/i18n.token.js +0 -3
  905. package/account/tokens/kc-context.token.d.ts +0 -3
  906. package/account/tokens/kc-context.token.js +0 -3
  907. package/lib/directives/attributes.directive.js +0 -26
  908. package/lib/models/script.model.js +0 -2
  909. package/lib/pipes/input-type.pipe.js +0 -20
  910. package/lib/pipes/is-array-with-empty-object.pipe.js +0 -20
  911. package/lib/pipes/kc-sanitize.pipe.js +0 -29
  912. package/lib/pipes/to-array.pipe.js +0 -21
  913. package/lib/pipes/to-number.pipe.js +0 -20
  914. package/lib/services/resource-injector.service.d.ts +0 -10
  915. package/lib/services/resource-injector.service.js +0 -54
  916. package/lib/tokens/use-default-css.token.js +0 -3
  917. package/login/DefaultPage.d.ts +0 -260
  918. package/login/DefaultPage.js +0 -121
  919. package/login/KcContext.js +0 -2
  920. package/login/classes/component-reference.class.d.ts +0 -5
  921. package/login/classes/component-reference.class.js +0 -3
  922. package/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.d.ts +0 -18
  923. package/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.js +0 -106
  924. package/login/components/field-errors/field-errors.component.d.ts +0 -14
  925. package/login/components/field-errors/field-errors.component.js +0 -33
  926. package/login/components/group-label/group-label.component.d.ts +0 -15
  927. package/login/components/group-label/group-label.component.js +0 -43
  928. package/login/components/input-field-by-type/input-field-by-type.component.d.ts +0 -16
  929. package/login/components/input-field-by-type/input-field-by-type.component.js +0 -46
  930. package/login/components/input-tag/input-tag.component.d.ts +0 -22
  931. package/login/components/input-tag/input-tag.component.js +0 -90
  932. package/login/components/input-tag-selects/input-tag-selects.component.d.ts +0 -28
  933. package/login/components/input-tag-selects/input-tag-selects.component.js +0 -117
  934. package/login/components/logout-other-sessions/logout-other-sessions.component.d.ts +0 -11
  935. package/login/components/logout-other-sessions/logout-other-sessions.component.js +0 -32
  936. package/login/components/password-wrapper/password-wrapper.component.d.ts +0 -17
  937. package/login/components/password-wrapper/password-wrapper.component.js +0 -46
  938. package/login/components/select-tag/select-tag.component.d.ts +0 -21
  939. package/login/components/select-tag/select-tag.component.js +0 -82
  940. package/login/components/textarea-tag/textarea-tag.component.d.ts +0 -17
  941. package/login/components/textarea-tag/textarea-tag.component.js +0 -49
  942. package/login/components/user-profile-form-fields/user-profile-form-fields.component.d.ts +0 -31
  943. package/login/components/user-profile-form-fields/user-profile-form-fields.component.js +0 -62
  944. package/login/containers/template.component.d.ts +0 -31
  945. package/login/containers/template.component.js +0 -72
  946. package/login/directives/kc-class.directive.d.ts +0 -26
  947. package/login/directives/kc-class.directive.js +0 -138
  948. package/login/i18n.js +0 -2
  949. package/login/pages/code/code.component.d.ts +0 -13
  950. package/login/pages/code/code.component.js +0 -35
  951. package/login/pages/delete-account-confirm/delete-account-confirm.component.d.ts +0 -13
  952. package/login/pages/delete-account-confirm/delete-account-confirm.component.js +0 -35
  953. package/login/pages/delete-credential/delete-credential.component.d.ts +0 -18
  954. package/login/pages/delete-credential/delete-credential.component.js +0 -40
  955. package/login/pages/error/error.component.d.ts +0 -13
  956. package/login/pages/error/error.component.js +0 -35
  957. package/login/pages/frontchannel-logout/frontchannel-logout.component.d.ts +0 -19
  958. package/login/pages/frontchannel-logout/frontchannel-logout.component.js +0 -44
  959. package/login/pages/idp-review-user-profile/idp-review-user-profile.component.d.ts +0 -25
  960. package/login/pages/idp-review-user-profile/idp-review-user-profile.component.js +0 -53
  961. package/login/pages/info/info.component.d.ts +0 -19
  962. package/login/pages/info/info.component.js +0 -49
  963. package/login/pages/login/login.component.d.ts +0 -19
  964. package/login/pages/login/login.component.js +0 -44
  965. package/login/pages/login-config-totp/login-config-totp.component.d.ts +0 -18
  966. package/login/pages/login-config-totp/login-config-totp.component.js +0 -42
  967. package/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.d.ts +0 -18
  968. package/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.js +0 -40
  969. package/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.d.ts +0 -18
  970. package/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.js +0 -40
  971. package/login/pages/login-idp-link-email/login-idp-link-email.component.d.ts +0 -18
  972. package/login/pages/login-idp-link-email/login-idp-link-email.component.js +0 -40
  973. package/login/pages/login-oauth-grant/login-oauth-grant.component.d.ts +0 -18
  974. package/login/pages/login-oauth-grant/login-oauth-grant.component.js +0 -40
  975. package/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.d.ts +0 -18
  976. package/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.js +0 -40
  977. package/login/pages/login-otp/login-otp.component.d.ts +0 -18
  978. package/login/pages/login-otp/login-otp.component.js +0 -41
  979. package/login/pages/login-page-expired/login-page-expired.component.d.ts +0 -18
  980. package/login/pages/login-page-expired/login-page-expired.component.js +0 -39
  981. package/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.d.ts +0 -19
  982. package/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.js +0 -84
  983. package/login/pages/login-password/login-password.component.d.ts +0 -19
  984. package/login/pages/login-password/login-password.component.js +0 -43
  985. package/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.d.ts +0 -20
  986. package/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.js +0 -43
  987. package/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.d.ts +0 -18
  988. package/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.js +0 -41
  989. package/login/pages/login-reset-otp/login-reset-otp.component.d.ts +0 -18
  990. package/login/pages/login-reset-otp/login-reset-otp.component.js +0 -40
  991. package/login/pages/login-reset-password/login-reset-password.component.d.ts +0 -18
  992. package/login/pages/login-reset-password/login-reset-password.component.js +0 -41
  993. package/login/pages/login-update-password/login-update-password.component.d.ts +0 -18
  994. package/login/pages/login-update-password/login-update-password.component.js +0 -43
  995. package/login/pages/login-update-profile/login-update-profile.component.d.ts +0 -24
  996. package/login/pages/login-update-profile/login-update-profile.component.js +0 -50
  997. package/login/pages/login-username/login-username.component.d.ts +0 -19
  998. package/login/pages/login-username/login-username.component.js +0 -43
  999. package/login/pages/login-verify-email/login-verify-email.component.d.ts +0 -18
  1000. package/login/pages/login-verify-email/login-verify-email.component.js +0 -40
  1001. package/login/pages/login-x509-info/login-x509-info.component.d.ts +0 -18
  1002. package/login/pages/login-x509-info/login-x509-info.component.js +0 -40
  1003. package/login/pages/logout-confirm/logout-confirm.component.d.ts +0 -18
  1004. package/login/pages/logout-confirm/logout-confirm.component.js +0 -40
  1005. package/login/pages/register/register.component.d.ts +0 -26
  1006. package/login/pages/register/register.component.js +0 -55
  1007. package/login/pages/saml-post-form/saml-post-form.component.d.ts +0 -21
  1008. package/login/pages/saml-post-form/saml-post-form.component.js +0 -52
  1009. package/login/pages/select-authenticator/select-authenticator.component.d.ts +0 -18
  1010. package/login/pages/select-authenticator/select-authenticator.component.js +0 -41
  1011. package/login/pages/terms/terms.component.d.ts +0 -18
  1012. package/login/pages/terms/terms.component.js +0 -40
  1013. package/login/pages/update-email/update-email.component.d.ts +0 -24
  1014. package/login/pages/update-email/update-email.component.js +0 -51
  1015. package/login/pages/webauthn-authenticate/webauthn-authenticate.component.d.ts +0 -23
  1016. package/login/pages/webauthn-authenticate/webauthn-authenticate.component.js +0 -80
  1017. package/login/pages/webauthn-error/webauthn-error.component.d.ts +0 -19
  1018. package/login/pages/webauthn-error/webauthn-error.component.js +0 -49
  1019. package/login/pages/webauthn-register/webauthn-register.component.d.ts +0 -22
  1020. package/login/pages/webauthn-register/webauthn-register.component.js +0 -76
  1021. package/login/providers/keycloakify-angular.providers.d.ts +0 -16
  1022. package/login/providers/keycloakify-angular.providers.js +0 -53
  1023. package/login/services/i18n.service.js +0 -12
  1024. package/login/services/login-resource-injector.service.d.ts +0 -11
  1025. package/login/services/login-resource-injector.service.js +0 -68
  1026. package/login/services/submit.service.js +0 -20
  1027. package/login/services/user-profile-form.service.d.ts +0 -86
  1028. package/login/services/user-profile-form.service.js +0 -1019
  1029. package/login/tokens/classes.token.d.ts +0 -127
  1030. package/login/tokens/classes.token.js +0 -3
  1031. package/login/tokens/i18n.token.js +0 -3
  1032. package/login/tokens/kc-context.token.d.ts +0 -3
  1033. package/login/tokens/kc-context.token.js +0 -3
  1034. package/login/tokens/make-user-confirm-password.token.js +0 -3
  1035. package/src/account/DefaultPage.ts +0 -51
  1036. package/src/account/classes/component-reference.class.ts +0 -6
  1037. package/src/account/containers/template.component.ts +0 -71
  1038. package/src/account/directives/kc-class.directive.ts +0 -150
  1039. package/src/account/pages/account/account.component.ts +0 -34
  1040. package/src/account/pages/applications/applications.component.ts +0 -32
  1041. package/src/account/pages/federatedIdentity/federatedIdentity.component.ts +0 -31
  1042. package/src/account/pages/log/log.component.ts +0 -31
  1043. package/src/account/pages/password/password.component.ts +0 -110
  1044. package/src/account/pages/sessions/sessions.component.ts +0 -31
  1045. package/src/account/pages/totp/totp.component.ts +0 -32
  1046. package/src/account/providers/keycloakify-angular.providers.ts +0 -64
  1047. package/src/account/services/resource-injector.service.ts +0 -37
  1048. package/src/account/tokens/classes.token.ts +0 -6
  1049. package/src/account/tokens/kc-context.token.ts +0 -4
  1050. package/src/lib/pipes/is-array-with-empty-object.pipe.ts +0 -16
  1051. package/src/lib/pipes/to-array.pipe.ts +0 -15
  1052. package/src/lib/pipes/to-number.pipe.ts +0 -13
  1053. package/src/lib/services/resource-injector.service.ts +0 -50
  1054. package/src/login/DefaultPage.ts +0 -208
  1055. package/src/login/classes/component-reference.class.ts +0 -5
  1056. package/src/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.ts +0 -136
  1057. package/src/login/components/field-errors/field-errors.component.ts +0 -36
  1058. package/src/login/components/group-label/group-label.component.ts +0 -46
  1059. package/src/login/components/input-field-by-type/input-field-by-type.component.ts +0 -50
  1060. package/src/login/components/input-tag/input-tag.component.ts +0 -99
  1061. package/src/login/components/input-tag-selects/input-tag-selects.component.ts +0 -139
  1062. package/src/login/components/logout-other-sessions/logout-other-sessions.component.ts +0 -34
  1063. package/src/login/components/password-wrapper/password-wrapper.component.ts +0 -51
  1064. package/src/login/components/select-tag/select-tag.component.ts +0 -97
  1065. package/src/login/components/textarea-tag/textarea-tag.component.ts +0 -54
  1066. package/src/login/components/user-profile-form-fields/user-profile-form-fields.component.ts +0 -70
  1067. package/src/login/containers/template.component.ts +0 -78
  1068. package/src/login/directives/kc-class.directive.ts +0 -167
  1069. package/src/login/pages/code/code.component.ts +0 -31
  1070. package/src/login/pages/delete-account-confirm/delete-account-confirm.component.ts +0 -31
  1071. package/src/login/pages/delete-credential/delete-credential.component.ts +0 -36
  1072. package/src/login/pages/error/error.component.ts +0 -31
  1073. package/src/login/pages/frontchannel-logout/frontchannel-logout.component.ts +0 -41
  1074. package/src/login/pages/idp-review-user-profile/idp-review-user-profile.component.ts +0 -56
  1075. package/src/login/pages/info/info.component.ts +0 -48
  1076. package/src/login/pages/login/login.component.ts +0 -40
  1077. package/src/login/pages/login-config-totp/login-config-totp.component.ts +0 -38
  1078. package/src/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.ts +0 -36
  1079. package/src/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.ts +0 -36
  1080. package/src/login/pages/login-idp-link-email/login-idp-link-email.component.ts +0 -36
  1081. package/src/login/pages/login-oauth-grant/login-oauth-grant.component.ts +0 -36
  1082. package/src/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.ts +0 -36
  1083. package/src/login/pages/login-otp/login-otp.component.ts +0 -37
  1084. package/src/login/pages/login-page-expired/login-page-expired.component.ts +0 -35
  1085. package/src/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.ts +0 -94
  1086. package/src/login/pages/login-password/login-password.component.ts +0 -40
  1087. package/src/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.ts +0 -40
  1088. package/src/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.ts +0 -37
  1089. package/src/login/pages/login-reset-otp/login-reset-otp.component.ts +0 -36
  1090. package/src/login/pages/login-reset-password/login-reset-password.component.ts +0 -37
  1091. package/src/login/pages/login-update-password/login-update-password.component.ts +0 -39
  1092. package/src/login/pages/login-update-profile/login-update-profile.component.ts +0 -51
  1093. package/src/login/pages/login-username/login-username.component.ts +0 -39
  1094. package/src/login/pages/login-verify-email/login-verify-email.component.ts +0 -36
  1095. package/src/login/pages/login-x509-info/login-x509-info.component.ts +0 -36
  1096. package/src/login/pages/logout-confirm/logout-confirm.component.ts +0 -36
  1097. package/src/login/pages/register/register.component.ts +0 -56
  1098. package/src/login/pages/saml-post-form/saml-post-form.component.ts +0 -50
  1099. package/src/login/pages/select-authenticator/select-authenticator.component.ts +0 -37
  1100. package/src/login/pages/terms/terms.component.ts +0 -36
  1101. package/src/login/pages/update-email/update-email.component.ts +0 -52
  1102. package/src/login/pages/webauthn-authenticate/webauthn-authenticate.component.ts +0 -82
  1103. package/src/login/pages/webauthn-error/webauthn-error.component.ts +0 -46
  1104. package/src/login/pages/webauthn-register/webauthn-register.component.ts +0 -92
  1105. package/src/login/providers/keycloakify-angular.providers.ts +0 -68
  1106. package/src/login/services/login-resource-injector.service.ts +0 -73
  1107. package/src/login/services/user-profile-form.service.ts +0 -1502
  1108. package/src/login/tokens/classes.token.ts +0 -6
  1109. package/src/login/tokens/kc-context.token.ts +0 -4
  1110. package/src/tsconfig.json +0 -23
  1111. /package/{account → dist/account/KcContext}/KcContext.d.ts +0 -0
  1112. /package/{account/classes → dist/account/classes/component-reference}/component-reference.class.d.ts +0 -0
  1113. /package/{account/directives → dist/account/directives/kc-class}/kc-class.directive.d.ts +0 -0
  1114. /package/{account → dist/account/i18n}/i18n.d.ts +0 -0
  1115. /package/{account/services → dist/account/services/i18n}/i18n.service.d.ts +0 -0
  1116. /package/{account/tokens → dist/account/tokens/classes}/classes.token.d.ts +0 -0
  1117. /package/{account/tokens → dist/account/tokens/i18n}/i18n.token.d.ts +0 -0
  1118. /package/{lib/directives → dist/lib/directives/attributes}/attributes.directive.d.ts +0 -0
  1119. /package/{lib/models → dist/lib/models/script}/script.model.d.ts +0 -0
  1120. /package/{lib/pipes → dist/lib/pipes/input-type}/input-type.pipe.d.ts +0 -0
  1121. /package/{lib/pipes → dist/lib/pipes/is-array-with-empty-object}/is-array-with-empty-object.pipe.d.ts +0 -0
  1122. /package/{lib/pipes → dist/lib/pipes/kc-sanitize}/kc-sanitize.pipe.d.ts +0 -0
  1123. /package/{lib/pipes → dist/lib/pipes/to-array}/to-array.pipe.d.ts +0 -0
  1124. /package/{lib/pipes → dist/lib/pipes/to-number}/to-number.pipe.d.ts +0 -0
  1125. /package/{lib/tokens → dist/lib/tokens/use-default-css}/use-default-css.token.d.ts +0 -0
  1126. /package/{login → dist/login/KcContext}/KcContext.d.ts +0 -0
  1127. /package/{login → dist/login/i18n}/i18n.d.ts +0 -0
  1128. /package/{login/services → dist/login/services/i18n}/i18n.service.d.ts +0 -0
  1129. /package/{login/services → dist/login/services/submit}/submit.service.d.ts +0 -0
  1130. /package/{login/tokens → dist/login/tokens/i18n}/i18n.token.d.ts +0 -0
  1131. /package/{login/tokens → dist/login/tokens/make-user-confirm-password}/make-user-confirm-password.token.d.ts +0 -0
  1132. /package/{src → dist/src}/account/KcContext.ts +0 -0
  1133. /package/{src/account/containers → dist/src/account/containers/template}/template.component.html +0 -0
  1134. /package/{src → dist/src}/account/i18n.ts +0 -0
  1135. /package/{src → dist/src}/account/pages/account/account.component.html +0 -0
  1136. /package/{src → dist/src}/account/pages/applications/applications.component.html +0 -0
  1137. /package/{src → dist/src}/account/pages/federatedIdentity/federatedIdentity.component.html +0 -0
  1138. /package/{src → dist/src}/account/pages/log/log.component.html +0 -0
  1139. /package/{src → dist/src}/account/pages/password/password.component.html +0 -0
  1140. /package/{src → dist/src}/account/pages/sessions/sessions.component.html +0 -0
  1141. /package/{src → dist/src}/account/pages/totp/totp.component.html +0 -0
  1142. /package/{src/account/services → dist/src/account/services/i18n}/i18n.service.ts +0 -0
  1143. /package/{src/account/tokens → dist/src/account/tokens/i18n}/i18n.token.ts +0 -0
  1144. /package/{src/lib/directives → dist/src/lib/directives/attributes}/attributes.directive.ts +0 -0
  1145. /package/{src/lib/models → dist/src/lib/models/script}/script.model.ts +0 -0
  1146. /package/{src/lib/pipes → dist/src/lib/pipes/input-type}/input-type.pipe.ts +0 -0
  1147. /package/{src/lib/pipes → dist/src/lib/pipes/kc-sanitize}/kc-sanitize.pipe.ts +0 -0
  1148. /package/{src/lib/tokens → dist/src/lib/tokens/use-default-css}/use-default-css.token.ts +0 -0
  1149. /package/{src → dist/src}/login/KcContext.ts +0 -0
  1150. /package/{src → dist/src}/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.html +0 -0
  1151. /package/{src → dist/src}/login/components/field-errors/field-errors.component.html +0 -0
  1152. /package/{src → dist/src}/login/components/group-label/group-label.component.html +0 -0
  1153. /package/{src → dist/src}/login/components/input-field-by-type/input-field-by-type.component.html +0 -0
  1154. /package/{src → dist/src}/login/components/input-tag/input-tag.component.html +0 -0
  1155. /package/{src → dist/src}/login/components/input-tag-selects/input-tag-selects.component.html +0 -0
  1156. /package/{src → dist/src}/login/components/logout-other-sessions/logout-other-sessions.component.html +0 -0
  1157. /package/{src → dist/src}/login/components/password-wrapper/password-wrapper.component.html +0 -0
  1158. /package/{src → dist/src}/login/components/select-tag/select-tag.component.html +0 -0
  1159. /package/{src → dist/src}/login/components/textarea-tag/textarea-tag.component.html +0 -0
  1160. /package/{src → dist/src}/login/components/user-profile-form-fields/user-profile-form-fields.component.html +0 -0
  1161. /package/{src/login/containers → dist/src/login/containers/template}/template.component.html +0 -0
  1162. /package/{src → dist/src}/login/i18n.ts +0 -0
  1163. /package/{src → dist/src}/login/pages/code/code.component.html +0 -0
  1164. /package/{src → dist/src}/login/pages/delete-account-confirm/delete-account-confirm.component.html +0 -0
  1165. /package/{src → dist/src}/login/pages/delete-credential/delete-credential.component.html +0 -0
  1166. /package/{src → dist/src}/login/pages/error/error.component.html +0 -0
  1167. /package/{src → dist/src}/login/pages/frontchannel-logout/frontchannel-logout.component.html +0 -0
  1168. /package/{src → dist/src}/login/pages/idp-review-user-profile/idp-review-user-profile.component.html +0 -0
  1169. /package/{src → dist/src}/login/pages/info/info.component.html +0 -0
  1170. /package/{src → dist/src}/login/pages/login/login.component.html +0 -0
  1171. /package/{src → dist/src}/login/pages/login-config-totp/login-config-totp.component.html +0 -0
  1172. /package/{src → dist/src}/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.html +0 -0
  1173. /package/{src → dist/src}/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.html +0 -0
  1174. /package/{src → dist/src}/login/pages/login-idp-link-email/login-idp-link-email.component.html +0 -0
  1175. /package/{src → dist/src}/login/pages/login-oauth-grant/login-oauth-grant.component.html +0 -0
  1176. /package/{src → dist/src}/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.html +0 -0
  1177. /package/{src → dist/src}/login/pages/login-otp/login-otp.component.html +0 -0
  1178. /package/{src → dist/src}/login/pages/login-page-expired/login-page-expired.component.html +0 -0
  1179. /package/{src → dist/src}/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.html +0 -0
  1180. /package/{src → dist/src}/login/pages/login-password/login-password.component.html +0 -0
  1181. /package/{src → dist/src}/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.html +0 -0
  1182. /package/{src → dist/src}/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.html +0 -0
  1183. /package/{src → dist/src}/login/pages/login-reset-otp/login-reset-otp.component.html +0 -0
  1184. /package/{src → dist/src}/login/pages/login-reset-password/login-reset-password.component.html +0 -0
  1185. /package/{src → dist/src}/login/pages/login-update-password/login-update-password.component.html +0 -0
  1186. /package/{src → dist/src}/login/pages/login-update-profile/login-update-profile.component.html +0 -0
  1187. /package/{src → dist/src}/login/pages/login-username/login-username.component.html +0 -0
  1188. /package/{src → dist/src}/login/pages/login-verify-email/login-verify-email.component.html +0 -0
  1189. /package/{src → dist/src}/login/pages/login-x509-info/login-x509-info.component.html +0 -0
  1190. /package/{src → dist/src}/login/pages/logout-confirm/logout-confirm.component.html +0 -0
  1191. /package/{src → dist/src}/login/pages/register/register.component.html +0 -0
  1192. /package/{src → dist/src}/login/pages/saml-post-form/saml-post-form.component.html +0 -0
  1193. /package/{src → dist/src}/login/pages/select-authenticator/select-authenticator.component.html +0 -0
  1194. /package/{src → dist/src}/login/pages/terms/terms.component.html +0 -0
  1195. /package/{src → dist/src}/login/pages/update-email/update-email.component.html +0 -0
  1196. /package/{src → dist/src}/login/pages/webauthn-authenticate/webauthn-authenticate.component.html +0 -0
  1197. /package/{src → dist/src}/login/pages/webauthn-error/webauthn-error.component.html +0 -0
  1198. /package/{src → dist/src}/login/pages/webauthn-register/webauthn-register.component.html +0 -0
  1199. /package/{src/login/services → dist/src/login/services/i18n}/i18n.service.ts +0 -0
  1200. /package/{src/login/services → dist/src/login/services/submit}/submit.service.ts +0 -0
  1201. /package/{src/login/tokens → dist/src/login/tokens/i18n}/i18n.token.ts +0 -0
  1202. /package/{src/login/tokens → dist/src/login/tokens/make-user-confirm-password}/make-user-confirm-password.token.ts +0 -0
  1203. /package/{stories → dist/stories}/login/pages/login/login.stories.ts +0 -0
@@ -0,0 +1,1502 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ /* eslint-disable @typescript-eslint/ban-ts-comment */
3
+
4
+ import {
5
+ computed,
6
+ inject,
7
+ Injectable,
8
+ signal,
9
+ Signal,
10
+ WritableSignal
11
+ } from '@angular/core';
12
+ import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
13
+ import type { KcContext } from '../../KcContext';
14
+ import type { I18n } from '../../i18n';
15
+ import { LoginResourceInjectorService } from '@keycloakify/angular/login/services/login-resource-injector';
16
+ import { LOGIN_I18N } from '@keycloakify/angular/login/tokens/i18n';
17
+ import { KC_LOGIN_CONTEXT } from '@keycloakify/angular/login/tokens/kc-context';
18
+ import { DO_MAKE_USER_CONFIRM_PASSWORD } from '@keycloakify/angular/login/tokens/make-user-confirm-password';
19
+ import {
20
+ type Attribute,
21
+ type PasswordPolicies,
22
+ type Validators
23
+ } from 'keycloakify/login/KcContext';
24
+ import type {
25
+ KcContextLike as KcContextLike_i18n,
26
+ MessageKey_defaultSet
27
+ } from 'keycloakify/login/i18n/noJsx';
28
+ import { emailRegexp } from 'keycloakify/tools/emailRegExp';
29
+ import { formatNumber } from 'keycloakify/tools/formatNumber';
30
+ import { structuredCloneButFunctions } from 'keycloakify/tools/structuredCloneButFunctions';
31
+ import { assert, id } from 'tsafe';
32
+
33
+ type KcContextLike_useGetErrors = KcContextLike_i18n & {
34
+ messagesPerField: Pick<KcContext['messagesPerField'], 'existsError' | 'get'>;
35
+ passwordPolicies?: PasswordPolicies;
36
+ };
37
+ export namespace FormFieldError {
38
+ export type Source =
39
+ | Source.Validator
40
+ | Source.PasswordPolicy
41
+ | Source.Server
42
+ | Source.Other;
43
+
44
+ export namespace Source {
45
+ export type Validator = {
46
+ type: 'validator';
47
+ name: keyof Validators;
48
+ };
49
+ export type PasswordPolicy = {
50
+ type: 'passwordPolicy';
51
+ name: keyof PasswordPolicies;
52
+ };
53
+ export type Server = {
54
+ type: 'server';
55
+ };
56
+
57
+ export type Other = {
58
+ type: 'other';
59
+ rule: 'passwordConfirmMatchesPassword' | 'requiredField';
60
+ };
61
+ }
62
+ }
63
+
64
+ export type KcContextLike = KcContextLike_i18n &
65
+ KcContextLike_useGetErrors & {
66
+ profile: {
67
+ attributesByName: Record<string, Attribute>;
68
+ html5DataAnnotations?: Record<string, string>;
69
+ };
70
+ passwordRequired?: boolean;
71
+ realm: { registrationEmailAsUsername: boolean };
72
+ url: {
73
+ resourcesPath: string;
74
+ };
75
+ };
76
+ export type FormFieldError = {
77
+ errorMessage: SafeHtml; // this was jsx, be carefull
78
+ errorMessageStr: string;
79
+ source: FormFieldError.Source;
80
+ fieldIndex: number | undefined;
81
+ };
82
+ namespace internal {
83
+ export type FormFieldState = {
84
+ attribute: Attribute;
85
+ errors: FormFieldError[];
86
+ hasLostFocusAtLeastOnce: boolean | boolean[];
87
+ valueOrValues: string | string[];
88
+ };
89
+
90
+ export type State = {
91
+ formFieldStates: FormFieldState[];
92
+ };
93
+ }
94
+ type FormFieldState = {
95
+ attribute: Attribute;
96
+ displayableErrors: FormFieldError[];
97
+ valueOrValues: string | string[];
98
+ };
99
+ type FormState = {
100
+ isFormSubmittable: boolean;
101
+ formFieldStates: FormFieldState[];
102
+ };
103
+ export type FormAction =
104
+ | {
105
+ action: 'update';
106
+ name: string;
107
+ valueOrValues: string | string[];
108
+ /** Default false */
109
+ displayErrorsImmediately?: boolean;
110
+ }
111
+ | {
112
+ action: 'focus lost';
113
+ name: string;
114
+ fieldIndex: number | undefined;
115
+ };
116
+
117
+ @Injectable({ providedIn: 'root' })
118
+ export class UserProfileFormService {
119
+ private kcContext: KcContextLike =
120
+ inject<Extract<KcContext, { pageId: 'register.ftl' }>>(KC_LOGIN_CONTEXT);
121
+ private i18n = inject<I18n>(LOGIN_I18N);
122
+ private doMakeUserConfirmPassword = inject(DO_MAKE_USER_CONFIRM_PASSWORD);
123
+ private loginResourceInjectorService = inject(LoginResourceInjectorService);
124
+ private sanitizer: DomSanitizer = inject(DomSanitizer);
125
+ private initialState: internal.State = (() => {
126
+ const attributes: Attribute[] = (() => {
127
+ mock_user_profile_attributes_for_older_keycloak_versions: {
128
+ if (
129
+ 'profile' in this.kcContext &&
130
+ 'attributesByName' in this.kcContext.profile &&
131
+ Object.keys(this.kcContext.profile.attributesByName).length !== 0
132
+ ) {
133
+ break mock_user_profile_attributes_for_older_keycloak_versions;
134
+ }
135
+
136
+ if (
137
+ 'register' in this.kcContext &&
138
+ this.kcContext.register instanceof Object &&
139
+ 'formData' in this.kcContext.register
140
+ ) {
141
+ //NOTE: Handle legacy register.ftl page
142
+ return (['firstName', 'lastName', 'email', 'username'] as const)
143
+ .filter(name =>
144
+ name !== 'username'
145
+ ? true
146
+ : !this.kcContext.realm.registrationEmailAsUsername
147
+ )
148
+ .map(name =>
149
+ id<Attribute>({
150
+ name: name,
151
+ displayName: id<`\${${MessageKey_defaultSet}}`>(
152
+ `\${${name}}`
153
+ ),
154
+ required: true,
155
+ value:
156
+ (this.kcContext as any).register.formData[name] ?? '',
157
+ html5DataAnnotations: {},
158
+ readOnly: false,
159
+ validators: {},
160
+ annotations: {},
161
+ autocomplete: (() => {
162
+ switch (name) {
163
+ case 'email':
164
+ return 'email';
165
+ case 'username':
166
+ return 'username';
167
+ default:
168
+ return undefined;
169
+ }
170
+ })()
171
+ })
172
+ );
173
+ }
174
+
175
+ if ('user' in this.kcContext && this.kcContext.user instanceof Object) {
176
+ //NOTE: Handle legacy login-update-profile.ftl
177
+ return (['username', 'email', 'firstName', 'lastName'] as const)
178
+ .filter(name =>
179
+ name !== 'username'
180
+ ? true
181
+ : (this.kcContext as any).user.editUsernameAllowed
182
+ )
183
+ .map(name =>
184
+ id<Attribute>({
185
+ name: name,
186
+ displayName: id<`\${${MessageKey_defaultSet}}`>(
187
+ `\${${name}}`
188
+ ),
189
+ required: true,
190
+ value: (this.kcContext as any).user[name] ?? '',
191
+ html5DataAnnotations: {},
192
+ readOnly: false,
193
+ validators: {},
194
+ annotations: {},
195
+ autocomplete: (() => {
196
+ switch (name) {
197
+ case 'email':
198
+ return 'email';
199
+ case 'username':
200
+ return 'username';
201
+ default:
202
+ return undefined;
203
+ }
204
+ })()
205
+ })
206
+ );
207
+ }
208
+
209
+ if ('email' in this.kcContext && this.kcContext.email instanceof Object) {
210
+ //NOTE: Handle legacy update-email.ftl
211
+ return [
212
+ id<Attribute>({
213
+ name: 'email',
214
+ displayName: id<`\${${MessageKey_defaultSet}}`>(`\${email}`),
215
+ required: true,
216
+ value: (this.kcContext.email as any).value ?? '',
217
+ html5DataAnnotations: {},
218
+ readOnly: false,
219
+ validators: {},
220
+ annotations: {},
221
+ autocomplete: 'email'
222
+ })
223
+ ];
224
+ }
225
+
226
+ assert(false, 'Unable to mock user profile from the current kcContext');
227
+ }
228
+
229
+ return Object.values(this.kcContext.profile.attributesByName).map(
230
+ structuredCloneButFunctions
231
+ );
232
+ })();
233
+ // Retro-compatibility and consistency patches
234
+ attributes.forEach(attribute => {
235
+ patch_legacy_group: {
236
+ if (typeof attribute.group !== 'string') {
237
+ break patch_legacy_group;
238
+ }
239
+
240
+ const {
241
+ group,
242
+ groupDisplayHeader,
243
+ groupDisplayDescription,
244
+ groupAnnotations
245
+ } = attribute as Attribute & {
246
+ group: string;
247
+ groupDisplayHeader?: string;
248
+ groupDisplayDescription?: string;
249
+ groupAnnotations: Record<string, string>;
250
+ };
251
+
252
+ delete attribute.group;
253
+ // @ts-expect-error
254
+ delete attribute.groupDisplayHeader;
255
+ // @ts-expect-error
256
+ delete attribute.groupDisplayDescription;
257
+ // @ts-expect-error
258
+ delete attribute.groupAnnotations;
259
+
260
+ if (group === '') {
261
+ break patch_legacy_group;
262
+ }
263
+
264
+ attribute.group = {
265
+ name: group,
266
+ displayHeader: groupDisplayHeader,
267
+ displayDescription: groupDisplayDescription,
268
+ annotations: groupAnnotations,
269
+ html5DataAnnotations: {}
270
+ };
271
+ }
272
+
273
+ // Attributes with options rendered by default as select inputs
274
+ if (
275
+ attribute.validators.options !== undefined &&
276
+ attribute.annotations.inputType === undefined
277
+ ) {
278
+ attribute.annotations.inputType = 'select';
279
+ }
280
+
281
+ // Consistency patch on values/value property
282
+ {
283
+ if (this.getIsMultivaluedSingleField({ attribute })) {
284
+ attribute.multivalued = true;
285
+ }
286
+
287
+ if (attribute.multivalued) {
288
+ attribute.values ??=
289
+ attribute.value !== undefined ? [attribute.value] : [];
290
+ delete attribute.value;
291
+ } else {
292
+ attribute.value ??= attribute.values?.[0];
293
+ delete attribute.values;
294
+ }
295
+ }
296
+ });
297
+ add_password_and_password_confirm: {
298
+ if (!this.kcContext.passwordRequired) {
299
+ break add_password_and_password_confirm;
300
+ }
301
+
302
+ attributes.forEach((attribute, i) => {
303
+ if (
304
+ attribute.name !==
305
+ (this.kcContext.realm.registrationEmailAsUsername
306
+ ? 'email'
307
+ : 'username')
308
+ ) {
309
+ // NOTE: We want to add password and password-confirm after the field that identifies the user.
310
+ // It's either email or username.
311
+ return;
312
+ }
313
+
314
+ attributes.splice(
315
+ i + 1,
316
+ 0,
317
+ {
318
+ name: 'password',
319
+ displayName: id<`\${${MessageKey_defaultSet}}`>('${password}'),
320
+ required: true,
321
+ readOnly: false,
322
+ validators: {},
323
+ annotations: {},
324
+ autocomplete: 'new-password',
325
+ html5DataAnnotations: {}
326
+ },
327
+ {
328
+ name: 'password-confirm',
329
+ displayName:
330
+ id<`\${${MessageKey_defaultSet}}`>('${passwordConfirm}'),
331
+ required: true,
332
+ readOnly: false,
333
+ validators: {},
334
+ annotations: {},
335
+ html5DataAnnotations: {},
336
+ autocomplete: 'new-password'
337
+ }
338
+ );
339
+ });
340
+ }
341
+ const initialFormFieldState: {
342
+ attribute: Attribute;
343
+ valueOrValues: string | string[];
344
+ }[] = [];
345
+
346
+ for (const attribute of attributes) {
347
+ handle_multi_valued_attribute: {
348
+ if (!attribute.multivalued) {
349
+ break handle_multi_valued_attribute;
350
+ }
351
+
352
+ const values = attribute.values?.length ? attribute.values : [''];
353
+
354
+ apply_validator_min_range: {
355
+ if (this.getIsMultivaluedSingleField({ attribute })) {
356
+ break apply_validator_min_range;
357
+ }
358
+
359
+ const validator = attribute.validators.multivalued;
360
+
361
+ if (validator === undefined) {
362
+ break apply_validator_min_range;
363
+ }
364
+
365
+ const { min: minStr } = validator;
366
+
367
+ if (!minStr) {
368
+ break apply_validator_min_range;
369
+ }
370
+
371
+ const min = parseInt(`${minStr}`);
372
+
373
+ for (let index = values.length; index < min; index++) {
374
+ values.push('');
375
+ }
376
+ }
377
+
378
+ initialFormFieldState.push({
379
+ attribute,
380
+ valueOrValues: values
381
+ });
382
+
383
+ continue;
384
+ }
385
+
386
+ initialFormFieldState.push({
387
+ attribute,
388
+ valueOrValues: attribute.value ?? ''
389
+ });
390
+ }
391
+
392
+ const initialState: internal.State = {
393
+ formFieldStates: initialFormFieldState.map(
394
+ ({ attribute, valueOrValues }) => ({
395
+ attribute,
396
+ errors: this.getErrors({
397
+ attributeName: attribute.name,
398
+ formFieldStates: initialFormFieldState
399
+ }),
400
+ hasLostFocusAtLeastOnce:
401
+ valueOrValues instanceof Array &&
402
+ !this.getIsMultivaluedSingleField({ attribute })
403
+ ? valueOrValues.map(() => false)
404
+ : false,
405
+ valueOrValues: valueOrValues
406
+ })
407
+ )
408
+ };
409
+ return initialState;
410
+ })();
411
+
412
+ private state: WritableSignal<internal.State> = signal(this.initialState);
413
+
414
+ formState: Signal<FormState> = computed(() => {
415
+ const state: internal.State = this.state();
416
+ return {
417
+ formFieldStates: state.formFieldStates.map(
418
+ ({
419
+ errors,
420
+ hasLostFocusAtLeastOnce: hasLostFocusAtLeastOnceOrArr,
421
+ attribute,
422
+ ...valueOrValuesWrap
423
+ }) => ({
424
+ displayableErrors: errors.filter(error => {
425
+ const hasLostFocusAtLeastOnce =
426
+ typeof hasLostFocusAtLeastOnceOrArr === 'boolean'
427
+ ? hasLostFocusAtLeastOnceOrArr
428
+ : error.fieldIndex !== undefined
429
+ ? hasLostFocusAtLeastOnceOrArr[error.fieldIndex]
430
+ : hasLostFocusAtLeastOnceOrArr[
431
+ hasLostFocusAtLeastOnceOrArr.length - 1
432
+ ];
433
+ let value = false;
434
+ switch (error.source.type) {
435
+ case 'server':
436
+ value = true;
437
+ break;
438
+ case 'other':
439
+ switch (error.source.rule) {
440
+ case 'requiredField':
441
+ value = hasLostFocusAtLeastOnce;
442
+ break;
443
+ case 'passwordConfirmMatchesPassword':
444
+ value = hasLostFocusAtLeastOnce;
445
+ break;
446
+ }
447
+ // assert<Equals<typeof error.source.rule, never>>(false);
448
+ break;
449
+ case 'passwordPolicy':
450
+ switch (error.source.name) {
451
+ case 'length':
452
+ value = hasLostFocusAtLeastOnce;
453
+ break;
454
+ case 'digits':
455
+ value = hasLostFocusAtLeastOnce;
456
+ break;
457
+ case 'lowerCase':
458
+ value = hasLostFocusAtLeastOnce;
459
+ break;
460
+ case 'upperCase':
461
+ value = hasLostFocusAtLeastOnce;
462
+ break;
463
+ case 'specialChars':
464
+ value = hasLostFocusAtLeastOnce;
465
+ break;
466
+ case 'notUsername':
467
+ value = true;
468
+ break;
469
+ case 'notEmail':
470
+ value = true;
471
+ break;
472
+ }
473
+ // assert<Equals<typeof error.source, never>>(false);
474
+ break;
475
+ case 'validator':
476
+ switch (error.source.name) {
477
+ case 'length':
478
+ value = hasLostFocusAtLeastOnce;
479
+ break;
480
+ case 'pattern':
481
+ value = hasLostFocusAtLeastOnce;
482
+ break;
483
+ case 'email':
484
+ value = hasLostFocusAtLeastOnce;
485
+ break;
486
+ case 'integer':
487
+ value = hasLostFocusAtLeastOnce;
488
+ break;
489
+ case 'multivalued':
490
+ value = hasLostFocusAtLeastOnce;
491
+ break;
492
+ case 'options':
493
+ value = hasLostFocusAtLeastOnce;
494
+ break;
495
+ }
496
+ // assert<Equals<typeof error.source, never>>(false);
497
+ break;
498
+ }
499
+ return value;
500
+ }),
501
+ attribute,
502
+ ...valueOrValuesWrap
503
+ })
504
+ ),
505
+ isFormSubmittable: state.formFieldStates.every(
506
+ ({ errors }) => errors.length === 0
507
+ )
508
+ };
509
+ });
510
+
511
+ constructor() {
512
+ this.loginResourceInjectorService.insertAdditionalScripts(
513
+ Object.keys(this.kcContext.profile?.html5DataAnnotations ?? {})
514
+ .filter(key => key !== 'kcMultivalued' && key !== 'kcNumberFormat') // NOTE: Keycloakify handles it.
515
+ .map(key => ({
516
+ type: 'module',
517
+ src: `${this.kcContext.url.resourcesPath}/js/${key}.js`,
518
+ id: `${this.kcContext.url.resourcesPath}/js/${key}.js`
519
+ }))
520
+ );
521
+ }
522
+
523
+ public dispatchFormAction(formAction: FormAction) {
524
+ if (!formAction) return;
525
+ const state = this.state();
526
+ const formFieldState = state.formFieldStates.find(
527
+ ({ attribute }) => attribute.name === formAction.name
528
+ );
529
+ assert(formFieldState !== undefined);
530
+ switch (formAction.action) {
531
+ case 'update':
532
+ formFieldState.valueOrValues = formAction.valueOrValues;
533
+
534
+ apply_formatters: {
535
+ const { attribute } = formFieldState;
536
+
537
+ const { kcNumberFormat } = attribute.html5DataAnnotations ?? {};
538
+
539
+ if (!kcNumberFormat) {
540
+ break apply_formatters;
541
+ }
542
+
543
+ if (formFieldState.valueOrValues instanceof Array) {
544
+ formFieldState.valueOrValues = formFieldState.valueOrValues.map(
545
+ value => formatNumber(value, kcNumberFormat)
546
+ );
547
+ } else {
548
+ formFieldState.valueOrValues = formatNumber(
549
+ formFieldState.valueOrValues,
550
+ kcNumberFormat
551
+ );
552
+ }
553
+ }
554
+
555
+ formFieldState.errors = this.getErrors({
556
+ attributeName: formAction.name,
557
+ formFieldStates: state.formFieldStates
558
+ });
559
+
560
+ simulate_focus_lost: {
561
+ const { displayErrorsImmediately = false } = formAction;
562
+
563
+ if (!displayErrorsImmediately) {
564
+ break simulate_focus_lost;
565
+ }
566
+
567
+ for (const fieldIndex of formAction.valueOrValues instanceof Array
568
+ ? formAction.valueOrValues.map((...[, index]) => index)
569
+ : [undefined]) {
570
+ this.dispatchFormAction({
571
+ action: 'focus lost',
572
+ name: formAction.name,
573
+ fieldIndex
574
+ });
575
+ }
576
+ }
577
+
578
+ update_password_confirm: {
579
+ if (this.doMakeUserConfirmPassword) {
580
+ break update_password_confirm;
581
+ }
582
+
583
+ if (formAction.name !== 'password') {
584
+ break update_password_confirm;
585
+ }
586
+
587
+ this.dispatchFormAction({
588
+ action: 'update',
589
+ name: 'password-confirm',
590
+ valueOrValues: formAction.valueOrValues,
591
+ displayErrorsImmediately: formAction.displayErrorsImmediately
592
+ });
593
+ }
594
+
595
+ trigger_password_confirm_validation_on_password_change: {
596
+ if (!this.doMakeUserConfirmPassword) {
597
+ break trigger_password_confirm_validation_on_password_change;
598
+ }
599
+
600
+ if (formAction.name !== 'password') {
601
+ break trigger_password_confirm_validation_on_password_change;
602
+ }
603
+
604
+ this.dispatchFormAction({
605
+ action: 'update',
606
+ name: 'password-confirm',
607
+ valueOrValues: (() => {
608
+ const formFieldState = state.formFieldStates.find(
609
+ ({ attribute }) => attribute.name === 'password-confirm'
610
+ );
611
+
612
+ assert(formFieldState !== undefined);
613
+
614
+ return formFieldState.valueOrValues;
615
+ })(),
616
+ displayErrorsImmediately: formAction.displayErrorsImmediately
617
+ });
618
+ }
619
+
620
+ break;
621
+ case 'focus lost':
622
+ if (formFieldState.hasLostFocusAtLeastOnce instanceof Array) {
623
+ const { fieldIndex } = formAction;
624
+ assert(fieldIndex !== undefined);
625
+ formFieldState.hasLostFocusAtLeastOnce[fieldIndex] = true;
626
+ break;
627
+ }
628
+
629
+ formFieldState.hasLostFocusAtLeastOnce = true;
630
+ break;
631
+ }
632
+ this.state.update(state => ({
633
+ ...state,
634
+ formFieldStates: state.formFieldStates.map(f => {
635
+ if (f.attribute === formFieldState.attribute) return formFieldState;
636
+ return f;
637
+ })
638
+ }));
639
+ }
640
+
641
+ private getIsMultivaluedSingleField(params: { attribute: Attribute }) {
642
+ const { attribute } = params;
643
+
644
+ return attribute.annotations.inputType?.startsWith('multiselect') ?? false;
645
+ }
646
+
647
+ private getErrors(params: {
648
+ attributeName: string;
649
+ formFieldStates: {
650
+ attribute: Attribute;
651
+ valueOrValues: string | string[];
652
+ }[];
653
+ }): FormFieldError[] {
654
+ const { messagesPerField, passwordPolicies } = this.kcContext;
655
+
656
+ const { msgStr, advancedMsgStr } = this.i18n;
657
+ const { attributeName, formFieldStates } = params;
658
+
659
+ const formFieldState = formFieldStates.find(
660
+ ({ attribute }) => attribute.name === attributeName
661
+ );
662
+
663
+ assert(formFieldState !== undefined);
664
+
665
+ const { attribute } = formFieldState;
666
+
667
+ const valueOrValues = (() => {
668
+ let { valueOrValues } = formFieldState;
669
+
670
+ unFormat_number: {
671
+ const { kcNumberUnFormat } = attribute.html5DataAnnotations ?? {};
672
+
673
+ if (!kcNumberUnFormat) {
674
+ break unFormat_number;
675
+ }
676
+
677
+ if (valueOrValues instanceof Array) {
678
+ valueOrValues = valueOrValues.map(value =>
679
+ formatNumber(value, kcNumberUnFormat)
680
+ );
681
+ } else {
682
+ valueOrValues = formatNumber(valueOrValues, kcNumberUnFormat);
683
+ }
684
+ }
685
+
686
+ return valueOrValues;
687
+ })();
688
+
689
+ assert(attribute !== undefined);
690
+
691
+ server_side_error: {
692
+ if (attribute.multivalued) {
693
+ const defaultValues = attribute.values?.length ? attribute.values : [''];
694
+
695
+ assert(valueOrValues instanceof Array);
696
+
697
+ const values = valueOrValues;
698
+
699
+ if (
700
+ JSON.stringify(defaultValues) !==
701
+ JSON.stringify(values.slice(0, defaultValues.length))
702
+ ) {
703
+ break server_side_error;
704
+ }
705
+ } else {
706
+ const defaultValue = attribute.value ?? '';
707
+
708
+ assert(typeof valueOrValues === 'string');
709
+
710
+ const value = valueOrValues;
711
+
712
+ if (defaultValue !== value) {
713
+ break server_side_error;
714
+ }
715
+ }
716
+
717
+ let doesErrorExist: boolean;
718
+
719
+ try {
720
+ doesErrorExist = messagesPerField.existsError(attributeName);
721
+ } catch {
722
+ break server_side_error;
723
+ }
724
+
725
+ if (!doesErrorExist) {
726
+ break server_side_error;
727
+ }
728
+
729
+ const errorMessageStr = messagesPerField.get(attributeName);
730
+
731
+ return [
732
+ {
733
+ errorMessageStr,
734
+ errorMessage: this.sanitizer.bypassSecurityTrustHtml(
735
+ `<span>${errorMessageStr}</span>`
736
+ ),
737
+ fieldIndex: undefined,
738
+ source: {
739
+ type: 'server'
740
+ }
741
+ }
742
+ ];
743
+ }
744
+
745
+ handle_multi_valued_multi_fields: {
746
+ if (!attribute.multivalued) {
747
+ break handle_multi_valued_multi_fields;
748
+ }
749
+
750
+ if (this.getIsMultivaluedSingleField({ attribute })) {
751
+ break handle_multi_valued_multi_fields;
752
+ }
753
+
754
+ assert(valueOrValues instanceof Array);
755
+
756
+ const values = valueOrValues;
757
+
758
+ const errors = values
759
+ .map((...[, index]) => {
760
+ const specificValueErrors = this.getErrors({
761
+ attributeName,
762
+ formFieldStates: formFieldStates.map(formFieldState => {
763
+ if (formFieldState.attribute.name === attributeName) {
764
+ assert(formFieldState.valueOrValues instanceof Array);
765
+ return {
766
+ attribute: {
767
+ ...attribute,
768
+ annotations: {
769
+ ...attribute.annotations,
770
+ inputType: undefined
771
+ },
772
+ multivalued: false
773
+ },
774
+ valueOrValues: formFieldState.valueOrValues[index]
775
+ };
776
+ }
777
+
778
+ return formFieldState;
779
+ })
780
+ });
781
+
782
+ return specificValueErrors
783
+ .filter(error => {
784
+ if (
785
+ error.source.type === 'other' &&
786
+ error.source.rule === 'requiredField'
787
+ ) {
788
+ return false;
789
+ }
790
+
791
+ return true;
792
+ })
793
+ .map(
794
+ (error): FormFieldError => ({
795
+ ...error,
796
+ fieldIndex: index
797
+ })
798
+ );
799
+ })
800
+ .reduce((acc, errors) => [...acc, ...errors], []);
801
+
802
+ required_field: {
803
+ if (!attribute.required) {
804
+ break required_field;
805
+ }
806
+
807
+ if (values.every(value => value !== '')) {
808
+ break required_field;
809
+ }
810
+
811
+ const msgArgs = ['error-user-attribute-required'] as const;
812
+
813
+ errors.push({
814
+ errorMessage: this.sanitizer.bypassSecurityTrustHtml(
815
+ `<span data-key="${attributeName}-${errors.length}">${msgStr(...msgArgs)}</span>`
816
+ ),
817
+ errorMessageStr: msgStr(...msgArgs),
818
+ fieldIndex: undefined,
819
+ source: {
820
+ type: 'other',
821
+ rule: 'requiredField'
822
+ }
823
+ });
824
+ }
825
+
826
+ return errors;
827
+ }
828
+
829
+ handle_multi_valued_single_field: {
830
+ if (!attribute.multivalued) {
831
+ break handle_multi_valued_single_field;
832
+ }
833
+
834
+ if (!this.getIsMultivaluedSingleField({ attribute })) {
835
+ break handle_multi_valued_single_field;
836
+ }
837
+
838
+ const validatorName = 'multivalued';
839
+
840
+ const validator = attribute.validators[validatorName];
841
+
842
+ if (validator === undefined) {
843
+ return [];
844
+ }
845
+
846
+ const { min: minStr } = validator;
847
+
848
+ const min = minStr ? parseInt(`${minStr}`) : attribute.required ? 1 : 0;
849
+
850
+ assert(!isNaN(min));
851
+
852
+ const { max: maxStr } = validator;
853
+
854
+ const max = !maxStr ? Infinity : parseInt(`${maxStr}`);
855
+
856
+ assert(!isNaN(max));
857
+
858
+ assert(valueOrValues instanceof Array);
859
+
860
+ const values = valueOrValues;
861
+
862
+ if (min <= values.length && values.length <= max) {
863
+ return [];
864
+ }
865
+
866
+ const msgArgs = [
867
+ 'error-invalid-multivalued-size',
868
+ `${min}`,
869
+ `${max}`
870
+ ] as const;
871
+
872
+ return [
873
+ {
874
+ errorMessage: this.sanitizer.bypassSecurityTrustHtml(
875
+ `<span data-key="0">${msgStr(...msgArgs)}</span>`
876
+ ),
877
+ errorMessageStr: msgStr(...msgArgs),
878
+ fieldIndex: undefined,
879
+ source: {
880
+ type: 'validator',
881
+ name: validatorName
882
+ }
883
+ }
884
+ ];
885
+ }
886
+
887
+ assert(typeof valueOrValues === 'string');
888
+
889
+ const value = valueOrValues;
890
+
891
+ const errors: FormFieldError[] = [];
892
+
893
+ check_password_policies: {
894
+ if (attributeName !== 'password') {
895
+ break check_password_policies;
896
+ }
897
+
898
+ if (passwordPolicies === undefined) {
899
+ break check_password_policies;
900
+ }
901
+
902
+ check_password_policy_x: {
903
+ const policyName = 'length';
904
+
905
+ const policy = passwordPolicies[policyName];
906
+
907
+ if (!policy) {
908
+ break check_password_policy_x;
909
+ }
910
+
911
+ const minLength = policy;
912
+
913
+ if (value.length >= minLength) {
914
+ break check_password_policy_x;
915
+ }
916
+
917
+ const msgArgs = [
918
+ 'invalidPasswordMinLengthMessage',
919
+ `${minLength}`
920
+ ] as const;
921
+
922
+ errors.push({
923
+ errorMessage: this.sanitizer.bypassSecurityTrustHtml(
924
+ `<span data-key="${attributeName}-${errors.length}">${msgStr(...msgArgs)}</span>`
925
+ ),
926
+ errorMessageStr: msgStr(...msgArgs),
927
+ fieldIndex: undefined,
928
+ source: {
929
+ type: 'passwordPolicy',
930
+ name: policyName
931
+ }
932
+ });
933
+ }
934
+
935
+ check_password_policy_x: {
936
+ const policyName = 'digits';
937
+
938
+ const policy = passwordPolicies[policyName];
939
+
940
+ if (!policy) {
941
+ break check_password_policy_x;
942
+ }
943
+
944
+ const minNumberOfDigits = policy;
945
+
946
+ if (
947
+ value.split('').filter(char => !isNaN(parseInt(char))).length >=
948
+ minNumberOfDigits
949
+ ) {
950
+ break check_password_policy_x;
951
+ }
952
+
953
+ const msgArgs = [
954
+ 'invalidPasswordMinDigitsMessage',
955
+ `${minNumberOfDigits}`
956
+ ] as const;
957
+
958
+ errors.push({
959
+ errorMessage: this.sanitizer.bypassSecurityTrustHtml(
960
+ `<span data-key="${attributeName}-${errors.length}">${msgStr(...msgArgs)}</span>`
961
+ ),
962
+ errorMessageStr: msgStr(...msgArgs),
963
+ fieldIndex: undefined,
964
+ source: {
965
+ type: 'passwordPolicy',
966
+ name: policyName
967
+ }
968
+ });
969
+ }
970
+
971
+ check_password_policy_x: {
972
+ const policyName = 'lowerCase';
973
+
974
+ const policy = passwordPolicies[policyName];
975
+
976
+ if (!policy) {
977
+ break check_password_policy_x;
978
+ }
979
+
980
+ const minNumberOfLowerCaseChar = policy;
981
+
982
+ if (
983
+ value
984
+ .split('')
985
+ .filter(
986
+ char =>
987
+ char === char.toLowerCase() && char !== char.toUpperCase()
988
+ ).length >= minNumberOfLowerCaseChar
989
+ ) {
990
+ break check_password_policy_x;
991
+ }
992
+
993
+ const msgArgs = [
994
+ 'invalidPasswordMinLowerCaseCharsMessage',
995
+ `${minNumberOfLowerCaseChar}`
996
+ ] as const;
997
+
998
+ errors.push({
999
+ errorMessage: this.sanitizer.bypassSecurityTrustHtml(
1000
+ `<span data-key="${attributeName}-${errors.length}">${msgStr(...msgArgs)}</span>`
1001
+ ),
1002
+ errorMessageStr: msgStr(...msgArgs),
1003
+ fieldIndex: undefined,
1004
+ source: {
1005
+ type: 'passwordPolicy',
1006
+ name: policyName
1007
+ }
1008
+ });
1009
+ }
1010
+
1011
+ check_password_policy_x: {
1012
+ const policyName = 'upperCase';
1013
+
1014
+ const policy = passwordPolicies[policyName];
1015
+
1016
+ if (!policy) {
1017
+ break check_password_policy_x;
1018
+ }
1019
+
1020
+ const minNumberOfUpperCaseChar = policy;
1021
+
1022
+ if (
1023
+ value
1024
+ .split('')
1025
+ .filter(
1026
+ char =>
1027
+ char === char.toUpperCase() && char !== char.toLowerCase()
1028
+ ).length >= minNumberOfUpperCaseChar
1029
+ ) {
1030
+ break check_password_policy_x;
1031
+ }
1032
+
1033
+ const msgArgs = [
1034
+ 'invalidPasswordMinUpperCaseCharsMessage',
1035
+ `${minNumberOfUpperCaseChar}`
1036
+ ] as const;
1037
+
1038
+ errors.push({
1039
+ errorMessage: this.sanitizer.bypassSecurityTrustHtml(
1040
+ `<span data-key="${attributeName}-${errors.length}">${msgStr(...msgArgs)}</span>`
1041
+ ),
1042
+ errorMessageStr: msgStr(...msgArgs),
1043
+ fieldIndex: undefined,
1044
+ source: {
1045
+ type: 'passwordPolicy',
1046
+ name: policyName
1047
+ }
1048
+ });
1049
+ }
1050
+
1051
+ check_password_policy_x: {
1052
+ const policyName = 'specialChars';
1053
+
1054
+ const policy = passwordPolicies[policyName];
1055
+
1056
+ if (!policy) {
1057
+ break check_password_policy_x;
1058
+ }
1059
+
1060
+ const minNumberOfSpecialChar = policy;
1061
+
1062
+ if (
1063
+ value.split('').filter(char => !char.match(/[a-zA-Z0-9]/)).length >=
1064
+ minNumberOfSpecialChar
1065
+ ) {
1066
+ break check_password_policy_x;
1067
+ }
1068
+
1069
+ const msgArgs = [
1070
+ 'invalidPasswordMinSpecialCharsMessage',
1071
+ `${minNumberOfSpecialChar}`
1072
+ ] as const;
1073
+
1074
+ errors.push({
1075
+ errorMessage: this.sanitizer.bypassSecurityTrustHtml(
1076
+ `<span data-key="${attributeName}-${errors.length}">${msgStr(...msgArgs)}</span>`
1077
+ ),
1078
+ errorMessageStr: msgStr(...msgArgs),
1079
+ fieldIndex: undefined,
1080
+ source: {
1081
+ type: 'passwordPolicy',
1082
+ name: policyName
1083
+ }
1084
+ });
1085
+ }
1086
+
1087
+ check_password_policy_x: {
1088
+ const policyName = 'notUsername';
1089
+
1090
+ const notUsername = passwordPolicies[policyName];
1091
+
1092
+ if (!notUsername) {
1093
+ break check_password_policy_x;
1094
+ }
1095
+
1096
+ const usernameFormFieldState = formFieldStates.find(
1097
+ formFieldState => formFieldState.attribute.name === 'username'
1098
+ );
1099
+
1100
+ if (!usernameFormFieldState) {
1101
+ break check_password_policy_x;
1102
+ }
1103
+
1104
+ const usernameValue = (() => {
1105
+ let { valueOrValues } = usernameFormFieldState;
1106
+
1107
+ assert(typeof valueOrValues === 'string');
1108
+
1109
+ unFormat_number: {
1110
+ const { kcNumberUnFormat } = attribute.html5DataAnnotations ?? {};
1111
+
1112
+ if (!kcNumberUnFormat) {
1113
+ break unFormat_number;
1114
+ }
1115
+
1116
+ valueOrValues = formatNumber(valueOrValues, kcNumberUnFormat);
1117
+ }
1118
+
1119
+ return valueOrValues;
1120
+ })();
1121
+
1122
+ if (usernameValue === '') {
1123
+ break check_password_policy_x;
1124
+ }
1125
+
1126
+ if (value !== usernameValue) {
1127
+ break check_password_policy_x;
1128
+ }
1129
+
1130
+ const msgArgs = ['invalidPasswordNotUsernameMessage'] as const;
1131
+
1132
+ errors.push({
1133
+ errorMessage: this.sanitizer.bypassSecurityTrustHtml(
1134
+ `<span data-key="${attributeName}-${errors.length}">${msgStr(...msgArgs)}</span>`
1135
+ ),
1136
+ errorMessageStr: msgStr(...msgArgs),
1137
+ fieldIndex: undefined,
1138
+ source: {
1139
+ type: 'passwordPolicy',
1140
+ name: policyName
1141
+ }
1142
+ });
1143
+ }
1144
+
1145
+ check_password_policy_x: {
1146
+ const policyName = 'notEmail';
1147
+
1148
+ const notEmail = passwordPolicies[policyName];
1149
+
1150
+ if (!notEmail) {
1151
+ break check_password_policy_x;
1152
+ }
1153
+
1154
+ const emailFormFieldState = formFieldStates.find(
1155
+ formFieldState => formFieldState.attribute.name === 'email'
1156
+ );
1157
+
1158
+ if (!emailFormFieldState) {
1159
+ break check_password_policy_x;
1160
+ }
1161
+
1162
+ assert(typeof emailFormFieldState.valueOrValues === 'string');
1163
+
1164
+ {
1165
+ const emailValue = emailFormFieldState.valueOrValues;
1166
+
1167
+ if (emailValue === '') {
1168
+ break check_password_policy_x;
1169
+ }
1170
+
1171
+ if (value !== emailValue) {
1172
+ break check_password_policy_x;
1173
+ }
1174
+ }
1175
+
1176
+ const msgArgs = ['invalidPasswordNotEmailMessage'] as const;
1177
+
1178
+ errors.push({
1179
+ errorMessage: this.sanitizer.bypassSecurityTrustHtml(
1180
+ `<span data-key="${attributeName}-${errors.length}">${msgStr(...msgArgs)}</span>`
1181
+ ),
1182
+ errorMessageStr: msgStr(...msgArgs),
1183
+ fieldIndex: undefined,
1184
+ source: {
1185
+ type: 'passwordPolicy',
1186
+ name: policyName
1187
+ }
1188
+ });
1189
+ }
1190
+ }
1191
+
1192
+ password_confirm_matches_password: {
1193
+ if (attributeName !== 'password-confirm') {
1194
+ break password_confirm_matches_password;
1195
+ }
1196
+
1197
+ const passwordFormFieldState = formFieldStates.find(
1198
+ formFieldState => formFieldState.attribute.name === 'password'
1199
+ );
1200
+
1201
+ assert(passwordFormFieldState !== undefined);
1202
+
1203
+ assert(typeof passwordFormFieldState.valueOrValues === 'string');
1204
+
1205
+ {
1206
+ const passwordValue = passwordFormFieldState.valueOrValues;
1207
+
1208
+ if (value === passwordValue) {
1209
+ break password_confirm_matches_password;
1210
+ }
1211
+ }
1212
+
1213
+ const msgArgs = ['invalidPasswordConfirmMessage'] as const;
1214
+
1215
+ errors.push({
1216
+ errorMessage: this.sanitizer.bypassSecurityTrustHtml(
1217
+ `<span data-key="${attributeName}-${errors.length}">${msgStr(...msgArgs)}</span>`
1218
+ ),
1219
+ errorMessageStr: msgStr(...msgArgs),
1220
+ fieldIndex: undefined,
1221
+ source: {
1222
+ type: 'other',
1223
+ rule: 'passwordConfirmMatchesPassword'
1224
+ }
1225
+ });
1226
+ }
1227
+
1228
+ const { validators } = attribute;
1229
+
1230
+ required_field: {
1231
+ if (!attribute.required) {
1232
+ break required_field;
1233
+ }
1234
+
1235
+ if (value !== '') {
1236
+ break required_field;
1237
+ }
1238
+
1239
+ const msgArgs = ['error-user-attribute-required'] as const;
1240
+
1241
+ errors.push({
1242
+ errorMessage: this.sanitizer.bypassSecurityTrustHtml(
1243
+ `<span data-key="${attributeName}-${errors.length}">${msgStr(...msgArgs)}</span>`
1244
+ ),
1245
+ errorMessageStr: msgStr(...msgArgs),
1246
+ fieldIndex: undefined,
1247
+ source: {
1248
+ type: 'other',
1249
+ rule: 'requiredField'
1250
+ }
1251
+ });
1252
+ }
1253
+
1254
+ validator_x: {
1255
+ const validatorName = 'length';
1256
+
1257
+ const validator = validators[validatorName];
1258
+
1259
+ if (!validator) {
1260
+ break validator_x;
1261
+ }
1262
+
1263
+ const {
1264
+ 'ignore.empty.value': ignoreEmptyValue = false,
1265
+ max,
1266
+ min
1267
+ } = validator;
1268
+
1269
+ if (ignoreEmptyValue && value === '') {
1270
+ break validator_x;
1271
+ }
1272
+
1273
+ const source: FormFieldError.Source = {
1274
+ type: 'validator',
1275
+ name: validatorName
1276
+ };
1277
+
1278
+ if (max && value.length > parseInt(`${max}`)) {
1279
+ const msgArgs = ['error-invalid-length-too-long', `${max}`] as const;
1280
+
1281
+ errors.push({
1282
+ errorMessage: this.sanitizer.bypassSecurityTrustHtml(
1283
+ `<span data-key="${attributeName}-${errors.length}">${msgStr(...msgArgs)}</span>`
1284
+ ),
1285
+ errorMessageStr: msgStr(...msgArgs),
1286
+ fieldIndex: undefined,
1287
+ source
1288
+ });
1289
+ }
1290
+
1291
+ if (min && value.length < parseInt(`${min}`)) {
1292
+ const msgArgs = ['error-invalid-length-too-short', `${min}`] as const;
1293
+
1294
+ errors.push({
1295
+ errorMessage: this.sanitizer.bypassSecurityTrustHtml(
1296
+ `<span data-key="${attributeName}-${errors.length}">${msgStr(...msgArgs)}</span>`
1297
+ ),
1298
+ errorMessageStr: msgStr(...msgArgs),
1299
+ fieldIndex: undefined,
1300
+ source
1301
+ });
1302
+ }
1303
+ }
1304
+
1305
+ validator_x: {
1306
+ const validatorName = 'pattern';
1307
+
1308
+ const validator = validators[validatorName];
1309
+
1310
+ if (validator === undefined) {
1311
+ break validator_x;
1312
+ }
1313
+
1314
+ const {
1315
+ 'ignore.empty.value': ignoreEmptyValue = false,
1316
+ pattern,
1317
+ 'error-message': errorMessageKey
1318
+ } = validator;
1319
+
1320
+ if (ignoreEmptyValue && value === '') {
1321
+ break validator_x;
1322
+ }
1323
+
1324
+ if (new RegExp(pattern).test(value)) {
1325
+ break validator_x;
1326
+ }
1327
+
1328
+ const msgArgs = [
1329
+ errorMessageKey ?? id<MessageKey_defaultSet>('shouldMatchPattern'),
1330
+ pattern
1331
+ ] as const;
1332
+
1333
+ errors.push({
1334
+ errorMessage: this.sanitizer.bypassSecurityTrustHtml(
1335
+ `<span data-key="${attributeName}-${errors.length}">${advancedMsgStr(...msgArgs)}</span>`
1336
+ ),
1337
+ errorMessageStr: advancedMsgStr(...msgArgs),
1338
+ fieldIndex: undefined,
1339
+ source: {
1340
+ type: 'validator',
1341
+ name: validatorName
1342
+ }
1343
+ });
1344
+ }
1345
+
1346
+ validator_x: {
1347
+ {
1348
+ const lastError = errors[errors.length - 1];
1349
+ if (
1350
+ lastError !== undefined &&
1351
+ lastError.source.type === 'validator' &&
1352
+ lastError.source.name === 'pattern'
1353
+ ) {
1354
+ break validator_x;
1355
+ }
1356
+ }
1357
+
1358
+ const validatorName = 'email';
1359
+
1360
+ const validator = validators[validatorName];
1361
+
1362
+ if (validator === undefined) {
1363
+ break validator_x;
1364
+ }
1365
+
1366
+ const { 'ignore.empty.value': ignoreEmptyValue = false } = validator;
1367
+
1368
+ if (ignoreEmptyValue && value === '') {
1369
+ break validator_x;
1370
+ }
1371
+
1372
+ if (emailRegexp.test(value)) {
1373
+ break validator_x;
1374
+ }
1375
+
1376
+ const msgArgs = [id<MessageKey_defaultSet>('invalidEmailMessage')] as const;
1377
+
1378
+ errors.push({
1379
+ errorMessage: this.sanitizer.bypassSecurityTrustHtml(
1380
+ `<span data-key="${attributeName}-${errors.length}">${msgStr(...msgArgs)}</span>`
1381
+ ),
1382
+ errorMessageStr: msgStr(...msgArgs),
1383
+ fieldIndex: undefined,
1384
+ source: {
1385
+ type: 'validator',
1386
+ name: validatorName
1387
+ }
1388
+ });
1389
+ }
1390
+
1391
+ validator_x: {
1392
+ const validatorName = 'integer';
1393
+
1394
+ const validator = validators[validatorName];
1395
+
1396
+ if (validator === undefined) {
1397
+ break validator_x;
1398
+ }
1399
+
1400
+ const {
1401
+ 'ignore.empty.value': ignoreEmptyValue = false,
1402
+ max,
1403
+ min
1404
+ } = validator;
1405
+
1406
+ if (ignoreEmptyValue && value === '') {
1407
+ break validator_x;
1408
+ }
1409
+
1410
+ const intValue = parseInt(value);
1411
+
1412
+ const source: FormFieldError.Source = {
1413
+ type: 'validator',
1414
+ name: validatorName
1415
+ };
1416
+
1417
+ if (isNaN(intValue)) {
1418
+ const msgArgs = ['mustBeAnInteger'] as const;
1419
+
1420
+ errors.push({
1421
+ errorMessage: this.sanitizer.bypassSecurityTrustHtml(
1422
+ `<span data-key="${attributeName}-${errors.length}">${msgStr(...msgArgs)}</span>`
1423
+ ),
1424
+ errorMessageStr: msgStr(...msgArgs),
1425
+ fieldIndex: undefined,
1426
+ source
1427
+ });
1428
+
1429
+ break validator_x;
1430
+ }
1431
+
1432
+ if (max && intValue > parseInt(`${max}`)) {
1433
+ const msgArgs = ['error-number-out-of-range-too-big', `${max}`] as const;
1434
+
1435
+ errors.push({
1436
+ errorMessage: this.sanitizer.bypassSecurityTrustHtml(
1437
+ `<span data-key="${attributeName}-${errors.length}">${msgStr(...msgArgs)}</span>`
1438
+ ),
1439
+ errorMessageStr: msgStr(...msgArgs),
1440
+ fieldIndex: undefined,
1441
+ source
1442
+ });
1443
+
1444
+ break validator_x;
1445
+ }
1446
+
1447
+ if (min && intValue < parseInt(`${min}`)) {
1448
+ const msgArgs = [
1449
+ 'error-number-out-of-range-too-small',
1450
+ `${min}`
1451
+ ] as const;
1452
+
1453
+ errors.push({
1454
+ errorMessage: this.sanitizer.bypassSecurityTrustHtml(
1455
+ `<span data-key="${attributeName}-${errors.length}">${msgStr(...msgArgs)}</span>`
1456
+ ),
1457
+ errorMessageStr: msgStr(...msgArgs),
1458
+ fieldIndex: undefined,
1459
+ source
1460
+ });
1461
+
1462
+ break validator_x;
1463
+ }
1464
+ }
1465
+
1466
+ validator_x: {
1467
+ const validatorName = 'options';
1468
+
1469
+ const validator = validators[validatorName];
1470
+
1471
+ if (validator === undefined) {
1472
+ break validator_x;
1473
+ }
1474
+
1475
+ if (value === '') {
1476
+ break validator_x;
1477
+ }
1478
+
1479
+ if (validator.options.indexOf(value) >= 0) {
1480
+ break validator_x;
1481
+ }
1482
+
1483
+ const msgArgs = [id<MessageKey_defaultSet>('notAValidOption')] as const;
1484
+
1485
+ errors.push({
1486
+ errorMessage: this.sanitizer.bypassSecurityTrustHtml(
1487
+ `<span data-key="${attributeName}-${errors.length}">${msgStr(...msgArgs)}</span>`
1488
+ ),
1489
+ errorMessageStr: msgStr(...msgArgs),
1490
+ fieldIndex: undefined,
1491
+ source: {
1492
+ type: 'validator',
1493
+ name: validatorName
1494
+ }
1495
+ });
1496
+ }
1497
+
1498
+ //TODO: Implement missing validators. See Validators type definition.
1499
+
1500
+ return errors;
1501
+ }
1502
+ }