@keycloakify/angular 0.0.1-rc.2 → 0.0.1-rc.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (321) hide show
  1. package/lib/tokens/use-default-css.token.d.ts +2 -0
  2. package/lib/tokens/use-default-css.token.js +3 -0
  3. package/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.d.ts +3 -1
  4. package/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.js +106 -0
  5. package/login/components/field-errors/field-errors.component.d.ts +2 -2
  6. package/login/components/field-errors/field-errors.component.js +33 -0
  7. package/login/components/group-label/group-label.component.d.ts +3 -1
  8. package/login/components/group-label/group-label.component.js +43 -0
  9. package/login/components/input-field-by-type/input-field-by-type.component.js +46 -0
  10. package/login/components/input-tag/input-tag.component.d.ts +4 -2
  11. package/login/components/input-tag/input-tag.component.js +90 -0
  12. package/login/components/input-tag-selects/input-tag-selects.component.d.ts +4 -2
  13. package/login/components/input-tag-selects/input-tag-selects.component.js +117 -0
  14. package/login/components/logout-other-sessions/logout-other-sessions.component.d.ts +3 -1
  15. package/login/components/logout-other-sessions/logout-other-sessions.component.js +32 -0
  16. package/login/components/password-wrapper/password-wrapper.component.d.ts +3 -1
  17. package/login/components/password-wrapper/password-wrapper.component.js +46 -0
  18. package/login/components/select-tag/select-tag.component.d.ts +4 -2
  19. package/login/components/select-tag/select-tag.component.js +82 -0
  20. package/login/components/textarea-tag/textarea-tag.component.js +49 -0
  21. package/login/components/user-profile-form-fields/user-profile-form-fields.component.d.ts +4 -2
  22. package/login/components/user-profile-form-fields/user-profile-form-fields.component.js +59 -0
  23. package/login/containers/template.component.js +72 -0
  24. package/login/pages/code/code.component.d.ts +4 -2
  25. package/login/pages/code/code.component.js +35 -0
  26. package/login/pages/delete-account-confirm/delete-account-confirm.component.d.ts +4 -2
  27. package/login/pages/delete-account-confirm/delete-account-confirm.component.js +35 -0
  28. package/login/pages/delete-credential/delete-credential.component.d.ts +4 -2
  29. package/login/pages/delete-credential/delete-credential.component.js +40 -0
  30. package/login/pages/error/error.component.d.ts +4 -2
  31. package/login/pages/error/error.component.js +35 -0
  32. package/login/pages/frontchannel-logout/frontchannel-logout.component.d.ts +4 -2
  33. package/login/pages/frontchannel-logout/frontchannel-logout.component.js +44 -0
  34. package/login/pages/idp-review-user-profile/idp-review-user-profile.component.d.ts +4 -2
  35. package/login/pages/idp-review-user-profile/idp-review-user-profile.component.js +45 -0
  36. package/login/pages/info/info.component.d.ts +4 -8
  37. package/login/pages/info/info.component.js +49 -0
  38. package/login/pages/login/login.component.d.ts +4 -2
  39. package/login/pages/login/login.component.js +44 -0
  40. package/login/pages/login-config-totp/login-config-totp.component.d.ts +4 -2
  41. package/login/pages/login-config-totp/login-config-totp.component.js +42 -0
  42. package/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.d.ts +4 -2
  43. package/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.js +40 -0
  44. package/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.d.ts +4 -2
  45. package/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.js +40 -0
  46. package/login/pages/login-idp-link-email/login-idp-link-email.component.d.ts +4 -2
  47. package/login/pages/login-idp-link-email/login-idp-link-email.component.js +40 -0
  48. package/login/pages/login-oauth-grant/login-oauth-grant.component.d.ts +4 -2
  49. package/login/pages/login-oauth-grant/login-oauth-grant.component.js +40 -0
  50. package/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.d.ts +4 -2
  51. package/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.js +40 -0
  52. package/login/pages/login-otp/login-otp.component.d.ts +4 -2
  53. package/login/pages/login-otp/login-otp.component.js +41 -0
  54. package/login/pages/login-page-expired/login-page-expired.component.d.ts +4 -2
  55. package/login/pages/login-page-expired/login-page-expired.component.js +39 -0
  56. package/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.d.ts +5 -5
  57. package/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.js +84 -0
  58. package/login/pages/login-password/login-password.component.d.ts +4 -2
  59. package/login/pages/login-password/login-password.component.js +43 -0
  60. package/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.d.ts +4 -2
  61. package/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.js +43 -0
  62. package/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.d.ts +4 -2
  63. package/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.js +41 -0
  64. package/login/pages/login-reset-otp/login-reset-otp.component.d.ts +4 -2
  65. package/login/pages/login-reset-otp/login-reset-otp.component.js +40 -0
  66. package/login/pages/login-reset-password/login-reset-password.component.d.ts +4 -2
  67. package/login/pages/login-reset-password/login-reset-password.component.js +41 -0
  68. package/login/pages/login-update-password/login-update-password.component.d.ts +4 -2
  69. package/login/pages/login-update-password/login-update-password.component.js +43 -0
  70. package/login/pages/login-update-profile/login-update-profile.component.d.ts +4 -2
  71. package/login/pages/login-update-profile/login-update-profile.component.js +42 -0
  72. package/login/pages/login-username/login-username.component.d.ts +4 -2
  73. package/login/pages/login-username/login-username.component.js +43 -0
  74. package/login/pages/login-verify-email/login-verify-email.component.d.ts +4 -2
  75. package/login/pages/login-verify-email/login-verify-email.component.js +40 -0
  76. package/login/pages/login-x509-info/login-x509-info.component.d.ts +4 -2
  77. package/login/pages/login-x509-info/login-x509-info.component.js +40 -0
  78. package/login/pages/logout-confirm/logout-confirm.component.d.ts +4 -2
  79. package/login/pages/logout-confirm/logout-confirm.component.js +40 -0
  80. package/login/pages/register/register.component.d.ts +4 -2
  81. package/login/pages/register/register.component.js +48 -0
  82. package/login/pages/saml-post-form/saml-post-form.component.d.ts +4 -2
  83. package/login/pages/saml-post-form/saml-post-form.component.js +52 -0
  84. package/login/pages/select-authenticator/select-authenticator.component.d.ts +4 -2
  85. package/login/pages/select-authenticator/select-authenticator.component.js +41 -0
  86. package/login/pages/terms/terms.component.d.ts +4 -2
  87. package/login/pages/terms/terms.component.js +40 -0
  88. package/login/pages/update-email/update-email.component.d.ts +4 -2
  89. package/login/pages/update-email/update-email.component.js +43 -0
  90. package/login/pages/webauthn-authenticate/webauthn-authenticate.component.d.ts +5 -5
  91. package/login/pages/webauthn-authenticate/webauthn-authenticate.component.js +80 -0
  92. package/login/pages/webauthn-error/webauthn-error.component.d.ts +4 -2
  93. package/login/pages/webauthn-error/webauthn-error.component.js +49 -0
  94. package/login/pages/webauthn-register/webauthn-register.component.d.ts +5 -5
  95. package/login/pages/webauthn-register/webauthn-register.component.js +76 -0
  96. package/login/pipes/kc-sanitize.pipe.d.ts +3 -4
  97. package/login/pipes/kc-sanitize.pipe.js +29 -0
  98. package/login/pipes/{to-array.pipe.mjs → to-array.pipe.js} +1 -2
  99. package/login/providers/keycloakify-angular.providers.d.ts +16 -0
  100. package/login/providers/keycloakify-angular.providers.js +53 -0
  101. package/login/services/i18n.service.d.ts +6 -0
  102. package/{lib/services/i18n.service.mjs → login/services/i18n.service.js} +1 -1
  103. package/login/services/login-resource-injector.service.d.ts +1 -1
  104. package/login/services/login-resource-injector.service.js +68 -0
  105. package/login/services/user-profile-form.service.js +1019 -0
  106. package/{lib/providers/keycloakify-angular.providers.d.ts → login/tokens/classes.token.d.ts} +1 -24
  107. package/login/tokens/classes.token.js +3 -0
  108. package/login/tokens/i18n.token.d.ts +2 -0
  109. package/login/tokens/i18n.token.js +3 -0
  110. package/login/tokens/kc-context.token.d.ts +3 -0
  111. package/login/tokens/kc-context.token.js +3 -0
  112. package/login/tokens/make-user-confirm-password.token.d.ts +2 -0
  113. package/login/tokens/make-user-confirm-password.token.js +3 -0
  114. package/package.json +89 -108
  115. package/src/lib/tokens/use-default-css.token.ts +3 -0
  116. package/src/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.html +19 -19
  117. package/src/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.ts +7 -15
  118. package/src/login/components/field-errors/field-errors.component.html +10 -10
  119. package/src/login/components/field-errors/field-errors.component.ts +6 -11
  120. package/src/login/components/group-label/group-label.component.html +25 -25
  121. package/src/login/components/group-label/group-label.component.ts +10 -14
  122. package/src/login/components/input-field-by-type/input-field-by-type.component.html +57 -57
  123. package/src/login/components/input-field-by-type/input-field-by-type.component.ts +6 -23
  124. package/src/login/components/input-tag/input-tag.component.html +41 -45
  125. package/src/login/components/input-tag/input-tag.component.ts +13 -22
  126. package/src/login/components/input-tag-selects/input-tag-selects.component.html +22 -22
  127. package/src/login/components/input-tag-selects/input-tag-selects.component.ts +12 -23
  128. package/src/login/components/logout-other-sessions/logout-other-sessions.component.html +15 -15
  129. package/src/login/components/logout-other-sessions/logout-other-sessions.component.ts +8 -5
  130. package/src/login/components/password-wrapper/password-wrapper.component.html +13 -13
  131. package/src/login/components/password-wrapper/password-wrapper.component.ts +10 -20
  132. package/src/login/components/select-tag/select-tag.component.html +26 -26
  133. package/src/login/components/select-tag/select-tag.component.ts +13 -25
  134. package/src/login/components/textarea-tag/textarea-tag.component.html +13 -15
  135. package/src/login/components/textarea-tag/textarea-tag.component.ts +5 -14
  136. package/src/login/components/user-profile-form-fields/user-profile-form-fields.component.html +71 -71
  137. package/src/login/components/user-profile-form-fields/user-profile-form-fields.component.ts +15 -34
  138. package/src/login/containers/template.component.html +183 -183
  139. package/src/login/containers/template.component.ts +12 -28
  140. package/src/login/pages/code/code.component.html +21 -21
  141. package/src/login/pages/code/code.component.ts +11 -11
  142. package/src/login/pages/delete-account-confirm/delete-account-confirm.component.html +44 -42
  143. package/src/login/pages/delete-account-confirm/delete-account-confirm.component.ts +12 -13
  144. package/src/login/pages/delete-credential/delete-credential.component.html +29 -29
  145. package/src/login/pages/delete-credential/delete-credential.component.ts +12 -19
  146. package/src/login/pages/error/error.component.html +20 -20
  147. package/src/login/pages/error/error.component.ts +11 -11
  148. package/src/login/pages/frontchannel-logout/frontchannel-logout.component.html +31 -31
  149. package/src/login/pages/frontchannel-logout/frontchannel-logout.component.ts +12 -20
  150. package/src/login/pages/idp-review-user-profile/idp-review-user-profile.component.html +36 -36
  151. package/src/login/pages/idp-review-user-profile/idp-review-user-profile.component.ts +12 -25
  152. package/src/login/pages/info/info.component.html +45 -45
  153. package/src/login/pages/info/info.component.ts +13 -30
  154. package/src/login/pages/login/login.component.html +194 -194
  155. package/src/login/pages/login/login.component.ts +14 -35
  156. package/src/login/pages/login-config-totp/login-config-totp.component.html +189 -179
  157. package/src/login/pages/login-config-totp/login-config-totp.component.ts +13 -32
  158. package/src/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.html +35 -35
  159. package/src/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.ts +12 -19
  160. package/src/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.html +34 -34
  161. package/src/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.ts +12 -21
  162. package/src/login/pages/login-idp-link-email/login-idp-link-email.component.html +32 -30
  163. package/src/login/pages/login-idp-link-email/login-idp-link-email.component.ts +12 -19
  164. package/src/login/pages/login-oauth-grant/login-oauth-grant.component.html +83 -81
  165. package/src/login/pages/login-oauth-grant/login-oauth-grant.component.ts +12 -20
  166. package/src/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.html +57 -57
  167. package/src/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.ts +12 -21
  168. package/src/login/pages/login-otp/login-otp.component.html +96 -96
  169. package/src/login/pages/login-otp/login-otp.component.ts +12 -18
  170. package/src/login/pages/login-page-expired/login-page-expired.component.html +31 -31
  171. package/src/login/pages/login-page-expired/login-page-expired.component.ts +12 -19
  172. package/src/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.html +183 -181
  173. package/src/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.ts +15 -22
  174. package/src/login/pages/login-password/login-password.component.html +82 -82
  175. package/src/login/pages/login-password/login-password.component.ts +12 -25
  176. package/src/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.html +142 -142
  177. package/src/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.ts +13 -28
  178. package/src/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.html +67 -67
  179. package/src/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.ts +14 -24
  180. package/src/login/pages/login-reset-otp/login-reset-otp.component.html +61 -59
  181. package/src/login/pages/login-reset-otp/login-reset-otp.component.ts +13 -19
  182. package/src/login/pages/login-reset-password/login-reset-password.component.html +84 -84
  183. package/src/login/pages/login-reset-password/login-reset-password.component.ts +13 -20
  184. package/src/login/pages/login-update-password/login-update-password.component.html +107 -107
  185. package/src/login/pages/login-update-password/login-update-password.component.ts +14 -31
  186. package/src/login/pages/login-update-profile/login-update-profile.component.html +53 -53
  187. package/src/login/pages/login-update-profile/login-update-profile.component.ts +13 -26
  188. package/src/login/pages/login-username/login-username.component.html +146 -146
  189. package/src/login/pages/login-username/login-username.component.ts +13 -30
  190. package/src/login/pages/login-verify-email/login-verify-email.component.html +22 -22
  191. package/src/login/pages/login-verify-email/login-verify-email.component.ts +13 -20
  192. package/src/login/pages/login-x509-info/login-x509-info.component.html +96 -96
  193. package/src/login/pages/login-x509-info/login-x509-info.component.ts +13 -19
  194. package/src/login/pages/logout-confirm/logout-confirm.component.html +51 -51
  195. package/src/login/pages/logout-confirm/logout-confirm.component.ts +13 -19
  196. package/src/login/pages/register/register.component.html +113 -113
  197. package/src/login/pages/register/register.component.ts +12 -29
  198. package/src/login/pages/saml-post-form/saml-post-form.component.html +47 -48
  199. package/src/login/pages/saml-post-form/saml-post-form.component.ts +12 -20
  200. package/src/login/pages/select-authenticator/select-authenticator.component.html +43 -44
  201. package/src/login/pages/select-authenticator/select-authenticator.component.ts +13 -27
  202. package/src/login/pages/terms/terms.component.html +32 -32
  203. package/src/login/pages/terms/terms.component.ts +13 -19
  204. package/src/login/pages/update-email/update-email.component.html +52 -52
  205. package/src/login/pages/update-email/update-email.component.ts +13 -26
  206. package/src/login/pages/webauthn-authenticate/webauthn-authenticate.component.html +146 -148
  207. package/src/login/pages/webauthn-authenticate/webauthn-authenticate.component.ts +17 -41
  208. package/src/login/pages/webauthn-error/webauthn-error.component.html +53 -53
  209. package/src/login/pages/webauthn-error/webauthn-error.component.ts +13 -24
  210. package/src/login/pages/webauthn-register/webauthn-register.component.html +73 -73
  211. package/src/login/pages/webauthn-register/webauthn-register.component.ts +18 -32
  212. package/src/login/pipes/kc-sanitize.pipe.ts +9 -11
  213. package/src/login/pipes/to-array.pipe.ts +0 -1
  214. package/src/login/providers/keycloakify-angular.providers.ts +68 -0
  215. package/src/{lib → login}/services/i18n.service.ts +3 -2
  216. package/src/login/services/login-resource-injector.service.ts +4 -3
  217. package/src/login/services/user-profile-form.service.ts +5 -7
  218. package/src/login/tokens/classes.token.ts +6 -0
  219. package/src/login/tokens/i18n.token.ts +3 -0
  220. package/src/login/tokens/kc-context.token.ts +4 -0
  221. package/src/login/tokens/make-user-confirm-password.token.ts +5 -0
  222. package/src/tsconfig.json +6 -1
  223. package/lib/i18n.d.ts +0 -4
  224. package/lib/i18n.mjs +0 -6
  225. package/lib/models/index.d.ts +0 -1
  226. package/lib/models/index.mjs +0 -2
  227. package/lib/providers/keycloakify-angular.providers.mjs +0 -54
  228. package/lib/public-api.d.ts +0 -10
  229. package/lib/public-api.mjs +0 -4
  230. package/lib/services/i18n.service.d.ts +0 -6
  231. package/lib/services/index.d.ts +0 -2
  232. package/lib/services/index.mjs +0 -3
  233. package/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.mjs +0 -105
  234. package/login/components/field-errors/field-errors.component.mjs +0 -32
  235. package/login/components/group-label/group-label.component.mjs +0 -41
  236. package/login/components/hello-world/hello-world.component.d.ts +0 -5
  237. package/login/components/hello-world/hello-world.component.mjs +0 -11
  238. package/login/components/index.d.ts +0 -11
  239. package/login/components/index.mjs +0 -12
  240. package/login/components/input-field-by-type/input-field-by-type.component.mjs +0 -52
  241. package/login/components/input-tag/input-tag.component.mjs +0 -89
  242. package/login/components/input-tag-selects/input-tag-selects.component.mjs +0 -115
  243. package/login/components/logout-other-sessions/logout-other-sessions.component.mjs +0 -30
  244. package/login/components/password-wrapper/password-wrapper.component.mjs +0 -44
  245. package/login/components/select-tag/select-tag.component.mjs +0 -80
  246. package/login/components/textarea-tag/textarea-tag.component.mjs +0 -48
  247. package/login/components/user-profile-form-fields/user-profile-form-fields.component.mjs +0 -62
  248. package/login/containers/template.component.mjs +0 -71
  249. package/login/directives/index.d.ts +0 -2
  250. package/login/directives/index.mjs +0 -3
  251. package/login/pages/code/code.component.mjs +0 -32
  252. package/login/pages/delete-account-confirm/delete-account-confirm.component.mjs +0 -32
  253. package/login/pages/delete-credential/delete-credential.component.mjs +0 -37
  254. package/login/pages/error/error.component.mjs +0 -32
  255. package/login/pages/frontchannel-logout/frontchannel-logout.component.mjs +0 -41
  256. package/login/pages/idp-review-user-profile/idp-review-user-profile.component.mjs +0 -47
  257. package/login/pages/info/info.component.mjs +0 -58
  258. package/login/pages/login/login.component.mjs +0 -51
  259. package/login/pages/login-config-totp/login-config-totp.component.mjs +0 -47
  260. package/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.mjs +0 -37
  261. package/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.mjs +0 -37
  262. package/login/pages/login-idp-link-email/login-idp-link-email.component.mjs +0 -37
  263. package/login/pages/login-oauth-grant/login-oauth-grant.component.mjs +0 -38
  264. package/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.mjs +0 -37
  265. package/login/pages/login-otp/login-otp.component.mjs +0 -38
  266. package/login/pages/login-page-expired/login-page-expired.component.mjs +0 -36
  267. package/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.mjs +0 -85
  268. package/login/pages/login-password/login-password.component.mjs +0 -46
  269. package/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.mjs +0 -45
  270. package/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.mjs +0 -38
  271. package/login/pages/login-reset-otp/login-reset-otp.component.mjs +0 -37
  272. package/login/pages/login-reset-password/login-reset-password.component.mjs +0 -38
  273. package/login/pages/login-update-password/login-update-password.component.mjs +0 -47
  274. package/login/pages/login-update-profile/login-update-profile.component.mjs +0 -44
  275. package/login/pages/login-username/login-username.component.mjs +0 -49
  276. package/login/pages/login-verify-email/login-verify-email.component.mjs +0 -37
  277. package/login/pages/login-x509-info/login-x509-info.component.mjs +0 -37
  278. package/login/pages/logout-confirm/logout-confirm.component.mjs +0 -37
  279. package/login/pages/register/register.component.mjs +0 -55
  280. package/login/pages/saml-post-form/saml-post-form.component.mjs +0 -49
  281. package/login/pages/select-authenticator/select-authenticator.component.mjs +0 -45
  282. package/login/pages/terms/terms.component.mjs +0 -37
  283. package/login/pages/update-email/update-email.component.mjs +0 -46
  284. package/login/pages/webauthn-authenticate/webauthn-authenticate.component.mjs +0 -87
  285. package/login/pages/webauthn-error/webauthn-error.component.mjs +0 -51
  286. package/login/pages/webauthn-register/webauthn-register.component.mjs +0 -81
  287. package/login/pipes/advanced-msg-str.pipe.d.ts +0 -8
  288. package/login/pipes/advanced-msg-str.pipe.mjs +0 -19
  289. package/login/pipes/index.d.ts +0 -6
  290. package/login/pipes/index.mjs +0 -7
  291. package/login/pipes/kc-sanitize.pipe.mjs +0 -34
  292. package/login/pipes/msg-str.pipe.d.ts +0 -9
  293. package/login/pipes/msg-str.pipe.mjs +0 -19
  294. package/login/services/index.d.ts +0 -2
  295. package/login/services/index.mjs +0 -3
  296. package/login/services/login-resource-injector.service.mjs +0 -68
  297. package/login/services/user-profile-form.service.mjs +0 -1017
  298. package/src/lib/i18n.ts +0 -9
  299. package/src/lib/models/index.ts +0 -1
  300. package/src/lib/providers/keycloakify-angular.providers.ts +0 -92
  301. package/src/lib/public-api.ts +0 -12
  302. package/src/lib/services/index.ts +0 -2
  303. package/src/login/components/hello-world/hello-world.component.css +0 -0
  304. package/src/login/components/hello-world/hello-world.component.html +0 -1
  305. package/src/login/components/hello-world/hello-world.component.ts +0 -10
  306. package/src/login/components/index.ts +0 -11
  307. package/src/login/directives/index.ts +0 -2
  308. package/src/login/pipes/advanced-msg-str.pipe.ts +0 -13
  309. package/src/login/pipes/index.ts +0 -6
  310. package/src/login/pipes/msg-str.pipe.ts +0 -14
  311. package/src/login/services/index.ts +0 -2
  312. /package/lib/models/{script.model.mjs → script.model.js} +0 -0
  313. /package/lib/services/{resource-injector.service.mjs → resource-injector.service.js} +0 -0
  314. /package/login/{DefaultPage.mjs → DefaultPage.js} +0 -0
  315. /package/login/{KcContext.mjs → KcContext.js} +0 -0
  316. /package/login/classes/{component-reference.class.mjs → component-reference.class.js} +0 -0
  317. /package/login/directives/{attributes.directive.mjs → attributes.directive.js} +0 -0
  318. /package/login/directives/{kc-class.directive.mjs → kc-class.directive.js} +0 -0
  319. /package/login/{i18n.mjs → i18n.js} +0 -0
  320. /package/login/pipes/{input-type.pipe.mjs → input-type.pipe.js} +0 -0
  321. /package/login/pipes/{to-number.pipe.mjs → to-number.pipe.js} +0 -0
@@ -7,197 +7,199 @@
7
7
  @let usernameHidden = kcContext.usernameHidden;
8
8
  @let registrationDisabled = kcContext.registrationDisabled;
9
9
  <kc-login-template [displayInfo]="displayInfo">
10
- <ng-container headerNode>
11
- {{ 'passkey-login-title' | msgStr }}
12
- </ng-container>
13
- <ng-container infoNode>
14
- @if (realm.registrationAllowed && !registrationDisabled) {
15
- <div id="kc-registration">
16
- <span>
17
- {{ 'noAccount' | msgStr }}
18
- <a
19
- tabIndex="6"
20
- [href]="url.registrationUrl"
21
- >
22
- {{ 'doRegister' | msgStr }}
23
- </a>
24
- </span>
25
- </div>
26
- }
27
- </ng-container>
10
+ <ng-container headerNode>
11
+ {{ i18n.msgStr('passkey-login-title') }}
12
+ </ng-container>
13
+ <ng-container infoNode>
14
+ @if (realm.registrationAllowed && !registrationDisabled) {
15
+ <div id="kc-registration">
16
+ <span>
17
+ {{ i18n.msgStr('noAccount') }}
18
+ <a
19
+ tabIndex="6"
20
+ [href]="url.registrationUrl"
21
+ >
22
+ {{ i18n.msgStr('doRegister') }}
23
+ </a>
24
+ </span>
25
+ </div>
26
+ }
27
+ </ng-container>
28
28
 
29
- <ng-container content>
30
- <form
31
- id="webauth"
32
- [action]="url.loginAction"
33
- method="post"
34
- >
35
- <input
36
- type="hidden"
37
- id="clientDataJSON"
38
- name="clientDataJSON"
39
- />
40
- <input
41
- type="hidden"
42
- id="authenticatorData"
43
- name="authenticatorData"
44
- />
45
- <input
46
- type="hidden"
47
- id="signature"
48
- name="signature"
49
- />
50
- <input
51
- type="hidden"
52
- id="credentialId"
53
- name="credentialId"
54
- />
55
- <input
56
- type="hidden"
57
- id="userHandle"
58
- name="userHandle"
59
- />
60
- <input
61
- type="hidden"
62
- id="error"
63
- name="error"
64
- />
65
- </form>
66
- <div
67
- [kcClass]="'kcFormGroupClass'"
68
- no-bottom-margin="true"
69
- style="margin-bottom: 0"
70
- >
71
- @if (authenticators !== undefined && authenticators.authenticators.length !== 0) {
29
+ <ng-container content>
72
30
  <form
73
- id="authn_select"
74
- [kcClass]="'kcFormClass'"
31
+ id="webauth"
32
+ [action]="url.loginAction"
33
+ method="post"
75
34
  >
76
- @for (authenticator of authenticators.authenticators; track authenticator; let i = $index) {
77
35
  <input
78
- type="hidden"
79
- name="authn_use_chk"
80
- readOnly
81
- [value]="authenticator.credentialId"
36
+ type="hidden"
37
+ id="clientDataJSON"
38
+ name="clientDataJSON"
39
+ />
40
+ <input
41
+ type="hidden"
42
+ id="authenticatorData"
43
+ name="authenticatorData"
44
+ />
45
+ <input
46
+ type="hidden"
47
+ id="signature"
48
+ name="signature"
49
+ />
50
+ <input
51
+ type="hidden"
52
+ id="credentialId"
53
+ name="credentialId"
54
+ />
55
+ <input
56
+ type="hidden"
57
+ id="userHandle"
58
+ name="userHandle"
59
+ />
60
+ <input
61
+ type="hidden"
62
+ id="error"
63
+ name="error"
82
64
  />
83
- }
84
65
  </form>
66
+ <div
67
+ [kcClass]="'kcFormGroupClass'"
68
+ no-bottom-margin="true"
69
+ style="margin-bottom: 0"
70
+ >
71
+ @if (authenticators !== undefined && authenticators.authenticators.length !== 0) {
72
+ <form
73
+ id="authn_select"
74
+ [kcClass]="'kcFormClass'"
75
+ >
76
+ @for (authenticator of authenticators.authenticators; track authenticator; let i = $index) {
77
+ <input
78
+ type="hidden"
79
+ name="authn_use_chk"
80
+ readOnly
81
+ [value]="authenticator.credentialId"
82
+ />
83
+ }
84
+ </form>
85
85
 
86
- @if (shouldDisplayAuthenticators) {
87
- @if (authenticators.authenticators.length > 1) {
88
- <p [kcClass]="'kcSelectAuthListItemTitle'">
89
- {{ 'passkey-available-authenticators' | msgStr }}
90
- </p>
91
- }
86
+ @if (shouldDisplayAuthenticators) {
87
+ @if (authenticators.authenticators.length > 1) {
88
+ <p [kcClass]="'kcSelectAuthListItemTitle'">
89
+ {{ i18n.msgStr('passkey-available-authenticators') }}
90
+ </p>
91
+ }
92
92
 
93
- <div [kcClass]="'kcFormClass'">
94
- @for (authenticator of authenticators.authenticators; track authenticator; let i = $index) {
95
- <div
96
- id="'kc-webauthn-authenticator-item-' + i"
97
- [kcClass]="'kcSelectAuthListItemClass'"
98
- >
99
- <i
100
- [ngClass]="selectAuthListItemIconClass(authenticator.transports.iconClass)"
101
- [kcClass]="'kcCommonLogoIdP'"
102
- aria-hidden="true"
103
- ></i>
104
- <div [kcClass]="'kcSelectAuthListItemBodyClass'">
105
- <div
106
- [id]="'kc-webauthn-authenticator-label-' + i"
107
- [kcClass]="'kcSelectAuthListItemHeadingClass'"
108
- >
109
- {{ authenticator.label | advancedMsgStr }}
110
- </div>
111
- @if (
112
- authenticator.transports !== undefined &&
113
- authenticator.transports.displayNameProperties !== undefined &&
114
- authenticator.transports.displayNameProperties.length !== 0
115
- ) {
116
- <div
117
- [id]="'kc-webauthn-authenticator-transport-' + i"
118
- [kcClass]="'kcSelectAuthListItemDescriptionClass'"
119
- >
120
- @for (
121
- nameProperty of authenticator.transports.displayNameProperties;
122
- track nameProperty;
123
- let i = $index
124
- ) {
125
- <span> {{ nameProperty | advancedMsgStr }} </span>
126
- @if (i !== authenticator.transports.displayNameProperties.length - 1) {
127
- <span>, </span>
93
+ <div [kcClass]="'kcFormClass'">
94
+ @for (authenticator of authenticators.authenticators; track authenticator; let i = $index) {
95
+ <div
96
+ id="'kc-webauthn-authenticator-item-' + i"
97
+ [kcClass]="'kcSelectAuthListItemClass'"
98
+ >
99
+ <i
100
+ [ngClass]="selectAuthListItemIconClass(authenticator.transports.iconClass)"
101
+ [kcClass]="'kcCommonLogoIdP'"
102
+ aria-hidden="true"
103
+ ></i>
104
+ <div [kcClass]="'kcSelectAuthListItemBodyClass'">
105
+ <div
106
+ [id]="'kc-webauthn-authenticator-label-' + i"
107
+ [kcClass]="'kcSelectAuthListItemHeadingClass'"
108
+ >
109
+ {{ i18n.advancedMsgStr(authenticator.label) }}
110
+ </div>
111
+ @if (
112
+ authenticator.transports !== undefined &&
113
+ authenticator.transports.displayNameProperties !== undefined &&
114
+ authenticator.transports.displayNameProperties.length !== 0
115
+ ) {
116
+ <div
117
+ [id]="'kc-webauthn-authenticator-transport-' + i"
118
+ [kcClass]="'kcSelectAuthListItemDescriptionClass'"
119
+ >
120
+ @for (
121
+ nameProperty of authenticator.transports.displayNameProperties;
122
+ track nameProperty;
123
+ let i = $index
124
+ ) {
125
+ <span>
126
+ {{ i18n.advancedMsgStr(nameProperty) }}
127
+ </span>
128
+ @if (i !== authenticator.transports.displayNameProperties.length - 1) {
129
+ <span>, </span>
130
+ }
131
+ }
132
+ </div>
133
+ <div [kcClass]="'kcSelectAuthListItemDescriptionClass'">
134
+ <span [id]="'kc-webauthn-authenticator-createdlabel-' + i">
135
+ {{ i18n.msgStr('passkey-createdAt-label') }}
136
+ </span>
137
+ <span [id]="'kc-webauthn-authenticator-created-' + i">
138
+ {{ authenticator.createdAt }}
139
+ </span>
140
+ </div>
141
+ <div [kcClass]="'kcSelectAuthListItemFillClass'"></div>
142
+ }
143
+ </div>
144
+ </div>
128
145
  }
129
- }
130
- </div>
131
- <div [kcClass]="'kcSelectAuthListItemDescriptionClass'">
132
- <span [id]="'kc-webauthn-authenticator-createdlabel-' + i">
133
- {{ 'passkey-createdAt-label' | msgStr }}
134
- </span>
135
- <span [id]="'kc-webauthn-authenticator-created-' + i">
136
- {{ authenticator.createdAt }}
137
- </span>
138
146
  </div>
139
- <div [kcClass]="'kcSelectAuthListItemFillClass'"></div>
140
- }
141
- </div>
142
- </div>
143
- }
144
- </div>
145
- }
146
- }
147
- <div id="kc-form-wrapper">
148
- @if (realm.password) {
149
- <form
150
- id="kc-form-passkey"
151
- [action]="url.loginAction"
152
- method="post"
153
- style="display: none"
154
- >
155
- @if (!usernameHidden) {
156
- <div [kcClass]="'kcFormGroupClass'">
157
- <label
158
- for="username"
159
- [kcClass]="'kcLabelClass'"
160
- >
161
- {{ 'passkey-autofill-select' | msgStr }}
162
- </label>
163
- <input
164
- tabIndex="1"
165
- id="username"
166
- [attr.aria-invalid]="messagesPerField.existsError('username')"
167
- [kcClass]="'kcInputClass'"
168
- name="username"
169
- [value]="login.username ?? ''"
170
- type="text"
171
- autoFocus
172
- autoComplete="off"
173
- />
174
- @if (messagesPerField.existsError('username')) {
175
- <span
176
- id="input-error-username"
177
- [kcClass]="'kcInputErrorMessageClass'"
178
- aria-live="polite"
179
- >
180
- {{ messagesPerField.get('username') }}
181
- </span>
182
147
  }
183
- </div>
184
148
  }
185
- </form>
186
- <div
187
- id="kc-form-passkey-button"
188
- [kcClass]="'kcFormButtonsClass'"
189
- style="display: none"
190
- >
191
- <input
192
- id="authButtonId"
193
- type="button"
194
- autoFocus
195
- value="{{ 'passkey-doAuthenticate' | msgStr }}"
196
- [kcClass]="['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']"
197
- />
198
- </div>
199
- }
200
- </div>
201
- </div>
202
- </ng-container>
149
+ <div id="kc-form-wrapper">
150
+ @if (realm.password) {
151
+ <form
152
+ id="kc-form-passkey"
153
+ [action]="url.loginAction"
154
+ method="post"
155
+ style="display: none"
156
+ >
157
+ @if (!usernameHidden) {
158
+ <div [kcClass]="'kcFormGroupClass'">
159
+ <label
160
+ for="username"
161
+ [kcClass]="'kcLabelClass'"
162
+ >
163
+ {{ i18n.msgStr('passkey-autofill-select') }}
164
+ </label>
165
+ <input
166
+ tabIndex="1"
167
+ id="username"
168
+ [attr.aria-invalid]="messagesPerField.existsError('username')"
169
+ [kcClass]="'kcInputClass'"
170
+ name="username"
171
+ [value]="login.username ?? ''"
172
+ type="text"
173
+ autoFocus
174
+ autoComplete="off"
175
+ />
176
+ @if (messagesPerField.existsError('username')) {
177
+ <span
178
+ id="input-error-username"
179
+ [kcClass]="'kcInputErrorMessageClass'"
180
+ aria-live="polite"
181
+ >
182
+ {{ messagesPerField.get('username') }}
183
+ </span>
184
+ }
185
+ </div>
186
+ }
187
+ </form>
188
+ <div
189
+ id="kc-form-passkey-button"
190
+ [kcClass]="'kcFormButtonsClass'"
191
+ style="display: none"
192
+ >
193
+ <input
194
+ id="authButtonId"
195
+ type="button"
196
+ autoFocus
197
+ [value]="i18n.msgStr('passkey-doAuthenticate')"
198
+ [kcClass]="['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']"
199
+ />
200
+ </div>
201
+ }
202
+ </div>
203
+ </div>
204
+ </ng-container>
203
205
  </kc-login-template>
@@ -1,28 +1,24 @@
1
1
  import { ChangeDetectionStrategy, Component, forwardRef, inject } from '@angular/core';
2
- import {
3
- CLASSES,
4
- KC_CONTEXT,
5
- USE_DEFAULT_CSS
6
- } from '@keycloakify/angular/lib/public-api';
7
- import { Script } from '@keycloakify/angular/lib/models';
8
- import { ClassKey } from 'keycloakify/login/lib/kcClsx';
9
- import { KcContext } from 'keycloakify/login/KcContext';
10
- import { getKcClsx } from 'keycloakify/login/lib/kcClsx';
2
+ import { Script } from '@keycloakify/angular/lib/models/script.model';
3
+ import { USE_DEFAULT_CSS } from '@keycloakify/angular/lib/tokens/use-default-css.token';
11
4
  import { ComponentReference } from '@keycloakify/angular/login/classes/component-reference.class';
12
5
  import { TemplateComponent } from '@keycloakify/angular/login/containers/template.component';
13
6
  import { KcClassDirective } from '@keycloakify/angular/login/directives/kc-class.directive';
14
- import { AdvancedMsgStrPipe } from '@keycloakify/angular/login/pipes/advanced-msg-str.pipe';
15
- import { MsgStrPipe } from '@keycloakify/angular/login/pipes/msg-str.pipe';
16
- import { LoginResourceInjectorService } from '@keycloakify/angular/login/services';
7
+ import { LoginResourceInjectorService } from '@keycloakify/angular/login/services/login-resource-injector.service';
8
+ import { LOGIN_CLASSES } from '@keycloakify/angular/login/tokens/classes.token';
9
+ import { LOGIN_I18N } from '@keycloakify/angular/login/tokens/i18n.token';
10
+ import { KC_LOGIN_CONTEXT } from '@keycloakify/angular/login/tokens/kc-context.token';
11
+ import { ClassKey, getKcClsx } from 'keycloakify/login/lib/kcClsx';
12
+ import { I18n } from '../../i18n';
13
+ import { KcContext } from '../../KcContext';
17
14
 
18
15
  @Component({
19
16
  standalone: true,
20
- imports: [TemplateComponent, MsgStrPipe, KcClassDirective, AdvancedMsgStrPipe],
17
+ imports: [TemplateComponent, KcClassDirective],
21
18
  selector: 'kc-root',
22
19
  templateUrl: 'login-passkeys-conditional-authenticate.component.html',
23
20
  changeDetection: ChangeDetectionStrategy.OnPush,
24
21
  providers: [
25
- MsgStrPipe,
26
22
  {
27
23
  provide: ComponentReference,
28
24
  useExisting: forwardRef(() => LoginPasskeysConditionalAuthenticateComponent)
@@ -30,14 +26,11 @@ import { LoginResourceInjectorService } from '@keycloakify/angular/login/service
30
26
  ]
31
27
  })
32
28
  export class LoginPasskeysConditionalAuthenticateComponent extends ComponentReference {
33
- kcContext =
34
- inject<
35
- Extract<KcContext, { pageId: 'login-passkeys-conditional-authenticate.ftl' }>
36
- >(KC_CONTEXT);
29
+ kcContext = inject<Extract<KcContext, { pageId: 'login-passkeys-conditional-authenticate.ftl' }>>(KC_LOGIN_CONTEXT);
37
30
  loginResourceInjectorService = inject(LoginResourceInjectorService);
38
- msgStr = inject(MsgStrPipe);
31
+ i18n = inject<I18n>(LOGIN_I18N);
39
32
  override doUseDefaultCss = inject<boolean>(USE_DEFAULT_CSS);
40
- override classes = inject<Partial<Record<ClassKey, string>>>(CLASSES);
33
+ override classes = inject<Partial<Record<ClassKey, string>>>(LOGIN_CLASSES);
41
34
  displayInfo: boolean = true;
42
35
 
43
36
  authButtonId = 'authenticateWebAuthnButton';
@@ -72,13 +65,13 @@ export class LoginPasskeysConditionalAuthenticateComponent extends ComponentRefe
72
65
  authButton.addEventListener("click", () => {
73
66
  authenticateByWebAuthn({
74
67
  ...input,
75
- errmsg : ${JSON.stringify(this.msgStr.transform('webauthn-unsupported-browser-text'))}
68
+ errmsg : ${JSON.stringify(this.i18n.msgStr('webauthn-unsupported-browser-text'))}
76
69
  });
77
70
  });
78
71
 
79
72
  initAuthenticate({
80
73
  ...input,
81
- errmsg : ${JSON.stringify(this.msgStr.transform('passkey-unsupported-browser-text'))}
74
+ errmsg : ${JSON.stringify(this.i18n.msgStr('passkey-unsupported-browser-text'))}
82
75
  });
83
76
  `
84
77
  }
@@ -2,89 +2,89 @@
2
2
  @let messagesPerField = kcContext.messagesPerField;
3
3
  @let realm = kcContext.realm;
4
4
  <kc-login-template
5
- [displayInfo]="displayInfo"
6
- [bodyClassName]="bodyClassName()"
7
- [displayMessage]="displayMessage"
8
- [displayRequiredFields]="displayRequiredFields()"
9
- [documentTitle]="documentTitle()"
5
+ [displayInfo]="displayInfo"
6
+ [bodyClassName]="bodyClassName()"
7
+ [displayMessage]="displayMessage"
8
+ [displayRequiredFields]="displayRequiredFields()"
9
+ [documentTitle]="documentTitle()"
10
10
  >
11
- <ng-container headerNode>
12
- {{ 'doLogIn' | msgStr }}
13
- </ng-container>
14
- <ng-container content>
15
- <div id="kc-form">
16
- <div id="kc-form-wrapper">
17
- <form
18
- id="kc-form-login"
19
- (onSubmit)="isLoginButtonDisabled.set(true)"
20
- [action]="url?.loginAction"
21
- method="post"
22
- >
23
- <div
24
- [kcClass]="'kcFormGroupClass'"
25
- class="no-bottom-margin"
26
- >
27
- <hr />
28
- <label
29
- for="password"
30
- [kcClass]="'kcLabelClass'"
31
- >
32
- {{ 'password' | msgStr }}
33
- </label>
34
- <kc-password-wrapper passwordInputId="password">
35
- <input
36
- type="password"
37
- id="password"
38
- name="password"
39
- [kcClass]="'kcInputClass'"
40
- [required]="true"
41
- [autofocus]="true"
42
- [tabindex]="1"
43
- aria-describedby="input-error-password"
44
- />
45
- </kc-password-wrapper>
11
+ <ng-container headerNode>
12
+ {{ i18n.msgStr('doLogIn') }}
13
+ </ng-container>
14
+ <ng-container content>
15
+ <div id="kc-form">
16
+ <div id="kc-form-wrapper">
17
+ <form
18
+ id="kc-form-login"
19
+ (onSubmit)="isLoginButtonDisabled.set(true)"
20
+ [action]="url?.loginAction"
21
+ method="post"
22
+ >
23
+ <div
24
+ [kcClass]="'kcFormGroupClass'"
25
+ class="no-bottom-margin"
26
+ >
27
+ <hr />
28
+ <label
29
+ for="password"
30
+ [kcClass]="'kcLabelClass'"
31
+ >
32
+ {{ i18n.msgStr('password') }}
33
+ </label>
34
+ <kc-password-wrapper passwordInputId="password">
35
+ <input
36
+ type="password"
37
+ id="password"
38
+ name="password"
39
+ [kcClass]="'kcInputClass'"
40
+ [required]="true"
41
+ [autofocus]="true"
42
+ [tabindex]="1"
43
+ aria-describedby="input-error-password"
44
+ />
45
+ </kc-password-wrapper>
46
46
 
47
- @if (messagesPerField.existsError('password')) {
48
- <span
49
- id="input-error-password"
50
- [kcClass]="'kcInputErrorMessageClass'"
51
- aria-live="polite"
52
- [innerHTML]="messagesPerField.getFirstError('password') | kcSanitize: 'html'"
53
- >
54
- </span>
55
- }
56
- </div>
57
- <div [kcClass]="['kcFormGroupClass', 'kcFormSettingClass']">
58
- <div id="kc-form-options"></div>
59
- <div [kcClass]="'kcFormOptionsWrapperClass'">
60
- @if (realm.resetPasswordAllowed) {
61
- <span>
62
- <a
63
- tabindex="5"
64
- href="{{ url.loginResetCredentialsUrl }}"
65
- >
66
- {{ 'doForgotPassword' | msgStr }}
67
- </a>
68
- </span>
69
- }
47
+ @if (messagesPerField.existsError('password')) {
48
+ <span
49
+ id="input-error-password"
50
+ [kcClass]="'kcInputErrorMessageClass'"
51
+ aria-live="polite"
52
+ [innerHTML]="messagesPerField.getFirstError('password') | kcSanitize: 'html'"
53
+ >
54
+ </span>
55
+ }
56
+ </div>
57
+ <div [kcClass]="['kcFormGroupClass', 'kcFormSettingClass']">
58
+ <div id="kc-form-options"></div>
59
+ <div [kcClass]="'kcFormOptionsWrapperClass'">
60
+ @if (realm.resetPasswordAllowed) {
61
+ <span>
62
+ <a
63
+ tabindex="5"
64
+ [href]="url.loginResetCredentialsUrl"
65
+ >
66
+ {{ i18n.msgStr('doForgotPassword') }}
67
+ </a>
68
+ </span>
69
+ }
70
+ </div>
71
+ </div>
72
+ <div
73
+ id="kc-form-buttons"
74
+ [kcClass]="'kcFormGroupClass'"
75
+ >
76
+ <input
77
+ type="submit"
78
+ id="kc-login"
79
+ name="login"
80
+ [value]="i18n.msgStr('doLogIn')"
81
+ [disabled]="isLoginButtonDisabled()"
82
+ [kcClass]="['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']"
83
+ [tabindex]="4"
84
+ />
85
+ </div>
86
+ </form>
70
87
  </div>
71
- </div>
72
- <div
73
- id="kc-form-buttons"
74
- [kcClass]="'kcFormGroupClass'"
75
- >
76
- <input
77
- type="submit"
78
- id="kc-login"
79
- name="login"
80
- [value]="'doLogIn' | msgStr"
81
- [disabled]="isLoginButtonDisabled()"
82
- [kcClass]="['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']"
83
- [tabindex]="4"
84
- />
85
- </div>
86
- </form>
87
- </div>
88
- </div>
89
- </ng-container>
88
+ </div>
89
+ </ng-container>
90
90
  </kc-login-template>