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

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 (145) hide show
  1. package/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.mjs +3 -3
  2. package/login/components/field-errors/field-errors.component.mjs +3 -3
  3. package/login/components/group-label/group-label.component.mjs +3 -3
  4. package/login/components/input-field-by-type/input-field-by-type.component.mjs +4 -11
  5. package/login/components/input-tag/input-tag.component.mjs +3 -3
  6. package/login/components/input-tag-selects/input-tag-selects.component.mjs +3 -3
  7. package/login/components/logout-other-sessions/logout-other-sessions.component.mjs +3 -3
  8. package/login/components/password-wrapper/password-wrapper.component.mjs +3 -3
  9. package/login/components/select-tag/select-tag.component.mjs +3 -3
  10. package/login/components/textarea-tag/textarea-tag.component.mjs +3 -3
  11. package/login/components/user-profile-form-fields/user-profile-form-fields.component.mjs +4 -11
  12. package/login/containers/template.component.mjs +4 -5
  13. package/login/pages/code/code.component.mjs +3 -3
  14. package/login/pages/delete-account-confirm/delete-account-confirm.component.mjs +3 -3
  15. package/login/pages/delete-credential/delete-credential.component.mjs +3 -3
  16. package/login/pages/error/error.component.mjs +3 -3
  17. package/login/pages/frontchannel-logout/frontchannel-logout.component.mjs +3 -3
  18. package/login/pages/idp-review-user-profile/idp-review-user-profile.component.mjs +4 -9
  19. package/login/pages/info/info.component.mjs +3 -3
  20. package/login/pages/login/login.component.mjs +5 -15
  21. package/login/pages/login-config-totp/login-config-totp.component.mjs +4 -11
  22. package/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.mjs +3 -3
  23. package/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.mjs +3 -3
  24. package/login/pages/login-idp-link-email/login-idp-link-email.component.mjs +3 -3
  25. package/login/pages/login-oauth-grant/login-oauth-grant.component.mjs +3 -3
  26. package/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.mjs +3 -3
  27. package/login/pages/login-otp/login-otp.component.mjs +3 -3
  28. package/login/pages/login-page-expired/login-page-expired.component.mjs +3 -3
  29. package/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.mjs +3 -3
  30. package/login/pages/login-password/login-password.component.mjs +4 -10
  31. package/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.mjs +4 -9
  32. package/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.mjs +3 -3
  33. package/login/pages/login-reset-otp/login-reset-otp.component.mjs +3 -3
  34. package/login/pages/login-reset-password/login-reset-password.component.mjs +3 -3
  35. package/login/pages/login-update-password/login-update-password.component.mjs +4 -11
  36. package/login/pages/login-update-profile/login-update-profile.component.mjs +4 -9
  37. package/login/pages/login-username/login-username.component.mjs +5 -14
  38. package/login/pages/login-verify-email/login-verify-email.component.mjs +3 -3
  39. package/login/pages/login-x509-info/login-x509-info.component.mjs +3 -3
  40. package/login/pages/logout-confirm/logout-confirm.component.mjs +3 -3
  41. package/login/pages/register/register.component.mjs +3 -3
  42. package/login/pages/saml-post-form/saml-post-form.component.mjs +3 -3
  43. package/login/pages/select-authenticator/select-authenticator.component.mjs +4 -10
  44. package/login/pages/terms/terms.component.mjs +3 -3
  45. package/login/pages/update-email/update-email.component.mjs +4 -10
  46. package/login/pages/webauthn-authenticate/webauthn-authenticate.component.mjs +4 -10
  47. package/login/pages/webauthn-error/webauthn-error.component.mjs +4 -9
  48. package/login/pages/webauthn-register/webauthn-register.component.mjs +4 -9
  49. package/package.json +5 -5
  50. package/src/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.html +19 -19
  51. package/src/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.ts +2 -12
  52. package/src/login/components/field-errors/field-errors.component.html +10 -10
  53. package/src/login/components/field-errors/field-errors.component.ts +1 -7
  54. package/src/login/components/group-label/group-label.component.html +25 -25
  55. package/src/login/components/group-label/group-label.component.ts +1 -8
  56. package/src/login/components/input-field-by-type/input-field-by-type.component.html +57 -57
  57. package/src/login/components/input-field-by-type/input-field-by-type.component.ts +3 -21
  58. package/src/login/components/input-tag/input-tag.component.html +41 -45
  59. package/src/login/components/input-tag/input-tag.component.ts +2 -13
  60. package/src/login/components/input-tag-selects/input-tag-selects.component.html +22 -22
  61. package/src/login/components/input-tag-selects/input-tag-selects.component.ts +3 -17
  62. package/src/login/components/logout-other-sessions/logout-other-sessions.component.html +15 -15
  63. package/src/login/components/password-wrapper/password-wrapper.component.html +13 -13
  64. package/src/login/components/password-wrapper/password-wrapper.component.ts +2 -15
  65. package/src/login/components/select-tag/select-tag.component.html +26 -26
  66. package/src/login/components/select-tag/select-tag.component.ts +4 -19
  67. package/src/login/components/textarea-tag/textarea-tag.component.html +13 -15
  68. package/src/login/components/textarea-tag/textarea-tag.component.ts +2 -12
  69. package/src/login/components/user-profile-form-fields/user-profile-form-fields.component.html +71 -71
  70. package/src/login/components/user-profile-form-fields/user-profile-form-fields.component.ts +4 -28
  71. package/src/login/containers/template.component.html +183 -183
  72. package/src/login/containers/template.component.ts +4 -22
  73. package/src/login/pages/code/code.component.html +21 -21
  74. package/src/login/pages/code/code.component.ts +1 -5
  75. package/src/login/pages/delete-account-confirm/delete-account-confirm.component.html +44 -42
  76. package/src/login/pages/delete-account-confirm/delete-account-confirm.component.ts +2 -7
  77. package/src/login/pages/delete-credential/delete-credential.component.html +29 -29
  78. package/src/login/pages/delete-credential/delete-credential.component.ts +3 -14
  79. package/src/login/pages/error/error.component.html +20 -20
  80. package/src/login/pages/error/error.component.ts +1 -5
  81. package/src/login/pages/frontchannel-logout/frontchannel-logout.component.html +31 -31
  82. package/src/login/pages/frontchannel-logout/frontchannel-logout.component.ts +3 -15
  83. package/src/login/pages/idp-review-user-profile/idp-review-user-profile.component.html +36 -36
  84. package/src/login/pages/idp-review-user-profile/idp-review-user-profile.component.ts +4 -21
  85. package/src/login/pages/info/info.component.html +45 -45
  86. package/src/login/pages/info/info.component.ts +3 -15
  87. package/src/login/pages/login/login.component.html +194 -194
  88. package/src/login/pages/login/login.component.ts +5 -30
  89. package/src/login/pages/login-config-totp/login-config-totp.component.html +189 -179
  90. package/src/login/pages/login-config-totp/login-config-totp.component.ts +5 -26
  91. package/src/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.html +35 -35
  92. package/src/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.ts +3 -14
  93. package/src/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.html +34 -34
  94. package/src/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.ts +3 -16
  95. package/src/login/pages/login-idp-link-email/login-idp-link-email.component.html +32 -30
  96. package/src/login/pages/login-idp-link-email/login-idp-link-email.component.ts +3 -14
  97. package/src/login/pages/login-oauth-grant/login-oauth-grant.component.html +83 -81
  98. package/src/login/pages/login-oauth-grant/login-oauth-grant.component.ts +3 -14
  99. package/src/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.html +57 -57
  100. package/src/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.ts +3 -16
  101. package/src/login/pages/login-otp/login-otp.component.html +96 -96
  102. package/src/login/pages/login-otp/login-otp.component.ts +2 -12
  103. package/src/login/pages/login-page-expired/login-page-expired.component.html +31 -31
  104. package/src/login/pages/login-page-expired/login-page-expired.component.ts +3 -14
  105. package/src/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.html +183 -181
  106. package/src/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.ts +2 -9
  107. package/src/login/pages/login-password/login-password.component.html +82 -82
  108. package/src/login/pages/login-password/login-password.component.ts +3 -20
  109. package/src/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.html +142 -142
  110. package/src/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.ts +4 -23
  111. package/src/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.html +67 -67
  112. package/src/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.ts +4 -18
  113. package/src/login/pages/login-reset-otp/login-reset-otp.component.html +61 -59
  114. package/src/login/pages/login-reset-otp/login-reset-otp.component.ts +2 -12
  115. package/src/login/pages/login-reset-password/login-reset-password.component.html +84 -84
  116. package/src/login/pages/login-reset-password/login-reset-password.component.ts +3 -14
  117. package/src/login/pages/login-update-password/login-update-password.component.html +107 -107
  118. package/src/login/pages/login-update-password/login-update-password.component.ts +5 -26
  119. package/src/login/pages/login-update-profile/login-update-profile.component.html +53 -53
  120. package/src/login/pages/login-update-profile/login-update-profile.component.ts +4 -21
  121. package/src/login/pages/login-username/login-username.component.html +146 -146
  122. package/src/login/pages/login-username/login-username.component.ts +4 -25
  123. package/src/login/pages/login-verify-email/login-verify-email.component.html +22 -22
  124. package/src/login/pages/login-verify-email/login-verify-email.component.ts +3 -14
  125. package/src/login/pages/login-x509-info/login-x509-info.component.html +96 -96
  126. package/src/login/pages/login-x509-info/login-x509-info.component.ts +2 -12
  127. package/src/login/pages/logout-confirm/logout-confirm.component.html +51 -51
  128. package/src/login/pages/logout-confirm/logout-confirm.component.ts +2 -12
  129. package/src/login/pages/register/register.component.html +113 -113
  130. package/src/login/pages/register/register.component.ts +2 -13
  131. package/src/login/pages/saml-post-form/saml-post-form.component.html +47 -48
  132. package/src/login/pages/saml-post-form/saml-post-form.component.ts +2 -14
  133. package/src/login/pages/select-authenticator/select-authenticator.component.html +43 -44
  134. package/src/login/pages/select-authenticator/select-authenticator.component.ts +4 -21
  135. package/src/login/pages/terms/terms.component.html +32 -32
  136. package/src/login/pages/terms/terms.component.ts +2 -12
  137. package/src/login/pages/update-email/update-email.component.html +52 -52
  138. package/src/login/pages/update-email/update-email.component.ts +3 -20
  139. package/src/login/pages/webauthn-authenticate/webauthn-authenticate.component.html +146 -148
  140. package/src/login/pages/webauthn-authenticate/webauthn-authenticate.component.ts +5 -29
  141. package/src/login/pages/webauthn-error/webauthn-error.component.html +53 -53
  142. package/src/login/pages/webauthn-error/webauthn-error.component.ts +3 -18
  143. package/src/login/pages/webauthn-register/webauthn-register.component.html +73 -73
  144. package/src/login/pages/webauthn-register/webauthn-register.component.ts +4 -20
  145. package/src/tsconfig.json +0 -1
@@ -1,36 +1,36 @@
1
1
  @let url = kcContext.url;
2
2
  <kc-login-template
3
- [displayInfo]="displayInfo"
4
- [bodyClassName]="bodyClassName()"
5
- [displayMessage]="displayMessage"
6
- [displayRequiredFields]="displayRequiredFields()"
7
- [documentTitle]="documentTitle()"
3
+ [displayInfo]="displayInfo"
4
+ [bodyClassName]="bodyClassName()"
5
+ [displayMessage]="displayMessage"
6
+ [displayRequiredFields]="displayRequiredFields()"
7
+ [documentTitle]="documentTitle()"
8
8
  >
9
- <ng-container headerNode>
10
- {{ 'termsTitle' | msgStr }}
11
- </ng-container>
12
- <ng-container content>
13
- <div id="kc-terms-text">{{ 'termsText' | msgStr }}</div>
14
- <form
15
- class="form-actions"
16
- [action]="url.loginAction"
17
- method="POST"
18
- >
19
- <input
20
- [kcClass]="['kcButtonClass', 'kcButtonClass', 'kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonLargeClass']"
21
- name="accept"
22
- id="kc-accept"
23
- type="submit"
24
- [value]="'doAccept' | msgStr"
25
- />
26
- <input
27
- [kcClass]="['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonLargeClass']"
28
- name="cancel"
29
- id="kc-decline"
30
- type="submit"
31
- [value]="'doDecline' | msgStr"
32
- />
33
- </form>
34
- <div className="clearfix"></div>
35
- </ng-container>
9
+ <ng-container headerNode>
10
+ {{ 'termsTitle' | msgStr }}
11
+ </ng-container>
12
+ <ng-container content>
13
+ <div id="kc-terms-text">{{ 'termsText' | msgStr }}</div>
14
+ <form
15
+ class="form-actions"
16
+ [action]="url.loginAction"
17
+ method="POST"
18
+ >
19
+ <input
20
+ [kcClass]="['kcButtonClass', 'kcButtonClass', 'kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonLargeClass']"
21
+ name="accept"
22
+ id="kc-accept"
23
+ type="submit"
24
+ [value]="'doAccept' | msgStr"
25
+ />
26
+ <input
27
+ [kcClass]="['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonLargeClass']"
28
+ name="cancel"
29
+ id="kc-decline"
30
+ type="submit"
31
+ [value]="'doDecline' | msgStr"
32
+ />
33
+ </form>
34
+ <div className="clearfix"></div>
35
+ </ng-container>
36
36
  </kc-login-template>
@@ -1,15 +1,5 @@
1
- import {
2
- ChangeDetectionStrategy,
3
- Component,
4
- forwardRef,
5
- inject,
6
- input
7
- } from '@angular/core';
8
- import {
9
- CLASSES,
10
- KC_CONTEXT,
11
- USE_DEFAULT_CSS
12
- } from '@keycloakify/angular/lib/public-api';
1
+ import { ChangeDetectionStrategy, Component, forwardRef, inject, input } from '@angular/core';
2
+ import { CLASSES, KC_CONTEXT, USE_DEFAULT_CSS } from '@keycloakify/angular/lib/public-api';
13
3
  import { ClassKey } from 'keycloakify/login/lib/kcClsx';
14
4
  import { KcContext } from 'keycloakify/login/KcContext';
15
5
  import { ComponentReference } from '@keycloakify/angular/login/classes/component-reference.class';
@@ -1,58 +1,58 @@
1
1
  @let url = kcContext.url;
2
2
  @let isAppInitiatedAction = kcContext.isAppInitiatedAction;
3
3
  <kc-login-template
4
- [displayInfo]="displayInfo"
5
- [bodyClassName]="bodyClassName()"
6
- [displayMessage]="displayMessage"
7
- [displayRequiredFields]="displayRequiredFields()"
8
- [documentTitle]="documentTitle()"
4
+ [displayInfo]="displayInfo"
5
+ [bodyClassName]="bodyClassName()"
6
+ [displayMessage]="displayMessage"
7
+ [displayRequiredFields]="displayRequiredFields()"
8
+ [documentTitle]="documentTitle()"
9
9
  >
10
- <ng-container headerNode>
11
- {{ 'updateEmailTitle' | msgStr }}
12
- </ng-container>
13
- <ng-container content>
14
- <form
15
- id="kc-update-email-form"
16
- [kcClass]="'kcFormClass'"
17
- [action]="url.loginAction"
18
- method="post"
19
- >
20
- <kc-user-profile-form-fields (onIsFormSubmittable)="isFormSubmittable.set($event)"></kc-user-profile-form-fields>
21
- <div [kcClass]="'kcFormGroupClass'">
22
- <div
23
- id="kc-form-options"
24
- [kcClass]="'kcFormOptionsClass'"
10
+ <ng-container headerNode>
11
+ {{ 'updateEmailTitle' | msgStr }}
12
+ </ng-container>
13
+ <ng-container content>
14
+ <form
15
+ id="kc-update-email-form"
16
+ [kcClass]="'kcFormClass'"
17
+ [action]="url.loginAction"
18
+ method="post"
25
19
  >
26
- <div [kcClass]="'kcFormOptionsWrapperClass'"></div>
27
- </div>
28
- <kc-logout-other-sessions></kc-logout-other-sessions>
29
- <div
30
- id="kc-form-buttons"
31
- [kcClass]="'kcFormButtonsClass'"
32
- >
33
- <input
34
- [disabled]="!isFormSubmittable"
35
- [kcClass]="{
36
- kcButtonClass: true,
37
- kcButtonPrimaryClass: true,
38
- kcButtonBlockClass: isAppInitiatedAction,
39
- kcButtonLargeClass: true,
40
- }"
41
- type="submit"
42
- value="{{ 'doSubmit' | msgStr }}"
43
- />
44
- @if (isAppInitiatedAction) {
45
- <button
46
- [kcClass]="['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonLargeClass']"
47
- type="submit"
48
- name="cancel-aia"
49
- value="true"
50
- >
51
- {{ 'doCancel' | msgStr }}
52
- </button>
53
- }
54
- </div>
55
- </div>
56
- </form>
57
- </ng-container>
20
+ <kc-user-profile-form-fields (onIsFormSubmittable)="isFormSubmittable.set($event)"></kc-user-profile-form-fields>
21
+ <div [kcClass]="'kcFormGroupClass'">
22
+ <div
23
+ id="kc-form-options"
24
+ [kcClass]="'kcFormOptionsClass'"
25
+ >
26
+ <div [kcClass]="'kcFormOptionsWrapperClass'"></div>
27
+ </div>
28
+ <kc-logout-other-sessions></kc-logout-other-sessions>
29
+ <div
30
+ id="kc-form-buttons"
31
+ [kcClass]="'kcFormButtonsClass'"
32
+ >
33
+ <input
34
+ [disabled]="!isFormSubmittable"
35
+ [kcClass]="{
36
+ kcButtonClass: true,
37
+ kcButtonPrimaryClass: true,
38
+ kcButtonBlockClass: isAppInitiatedAction,
39
+ kcButtonLargeClass: true
40
+ }"
41
+ type="submit"
42
+ value="{{ 'doSubmit' | msgStr }}"
43
+ />
44
+ @if (isAppInitiatedAction) {
45
+ <button
46
+ [kcClass]="['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonLargeClass']"
47
+ type="submit"
48
+ name="cancel-aia"
49
+ value="true"
50
+ >
51
+ {{ 'doCancel' | msgStr }}
52
+ </button>
53
+ }
54
+ </div>
55
+ </div>
56
+ </form>
57
+ </ng-container>
58
58
  </kc-login-template>
@@ -1,16 +1,5 @@
1
- import {
2
- ChangeDetectionStrategy,
3
- Component,
4
- forwardRef,
5
- inject,
6
- input,
7
- signal
8
- } from '@angular/core';
9
- import {
10
- CLASSES,
11
- KC_CONTEXT,
12
- USE_DEFAULT_CSS
13
- } from '@keycloakify/angular/lib/public-api';
1
+ import { ChangeDetectionStrategy, Component, forwardRef, inject, input, signal } from '@angular/core';
2
+ import { CLASSES, KC_CONTEXT, USE_DEFAULT_CSS } from '@keycloakify/angular/lib/public-api';
14
3
  import { ClassKey } from 'keycloakify/login/lib/kcClsx';
15
4
  import { KcContext } from 'keycloakify/login/KcContext';
16
5
  import { ComponentReference } from '@keycloakify/angular/login/classes/component-reference.class';
@@ -22,13 +11,7 @@ import { MsgStrPipe } from '@keycloakify/angular/login/pipes/msg-str.pipe';
22
11
 
23
12
  @Component({
24
13
  standalone: true,
25
- imports: [
26
- TemplateComponent,
27
- MsgStrPipe,
28
- KcClassDirective,
29
- UserProfileFormFieldsComponent,
30
- LogoutOtherSessionsComponent
31
- ],
14
+ imports: [TemplateComponent, MsgStrPipe, KcClassDirective, UserProfileFormFieldsComponent, LogoutOtherSessionsComponent],
32
15
  selector: 'kc-root',
33
16
  templateUrl: 'update-email.component.html',
34
17
  changeDetection: ChangeDetectionStrategy.OnPush,
@@ -3,160 +3,158 @@
3
3
  @let shouldDisplayAuthenticators = kcContext.shouldDisplayAuthenticators;
4
4
 
5
5
  <kc-login-template
6
- [displayInfo]="displayInfo"
7
- [bodyClassName]="bodyClassName()"
8
- [displayMessage]="displayMessage"
9
- [displayRequiredFields]="displayRequiredFields()"
10
- [documentTitle]="documentTitle()"
6
+ [displayInfo]="displayInfo"
7
+ [bodyClassName]="bodyClassName()"
8
+ [displayMessage]="displayMessage"
9
+ [displayRequiredFields]="displayRequiredFields()"
10
+ [documentTitle]="documentTitle()"
11
11
  >
12
- <ng-container headerNode>
13
- {{ 'webauthn-login-title' | msgStr }}
14
- </ng-container>
15
- <ng-container infoNode>
16
- <div id="kc-registration">
17
- <span>
18
- {{ 'noAccount' | msgStr }}
19
- <a
20
- tabIndex="6"
21
- [href]="url.registrationUrl"
12
+ <ng-container headerNode>
13
+ {{ 'webauthn-login-title' | msgStr }}
14
+ </ng-container>
15
+ <ng-container infoNode>
16
+ <div id="kc-registration">
17
+ <span>
18
+ {{ 'noAccount' | msgStr }}
19
+ <a
20
+ tabIndex="6"
21
+ [href]="url.registrationUrl"
22
+ >
23
+ {{ 'doRegister' | msgStr }}
24
+ </a>
25
+ </span>
26
+ </div>
27
+ </ng-container>
28
+ <ng-container content>
29
+ <div
30
+ id="kc-form-webauthn"
31
+ [kcClass]="'kcFormClass'"
22
32
  >
23
- {{ 'doRegister' | msgStr }}
24
- </a>
25
- </span>
26
- </div>
27
- </ng-container>
28
- <ng-container content>
29
- <div
30
- id="kc-form-webauthn"
31
- [kcClass]="'kcFormClass'"
32
- >
33
- <form
34
- id="webauth"
35
- [action]="url.loginAction"
36
- method="post"
37
- >
38
- <input
39
- type="hidden"
40
- id="clientDataJSON"
41
- name="clientDataJSON"
42
- />
43
- <input
44
- type="hidden"
45
- id="authenticatorData"
46
- name="authenticatorData"
47
- />
48
- <input
49
- type="hidden"
50
- id="signature"
51
- name="signature"
52
- />
53
- <input
54
- type="hidden"
55
- id="credentialId"
56
- name="credentialId"
57
- />
58
- <input
59
- type="hidden"
60
- id="userHandle"
61
- name="userHandle"
62
- />
63
- <input
64
- type="hidden"
65
- id="error"
66
- name="error"
67
- />
68
- </form>
33
+ <form
34
+ id="webauth"
35
+ [action]="url.loginAction"
36
+ method="post"
37
+ >
38
+ <input
39
+ type="hidden"
40
+ id="clientDataJSON"
41
+ name="clientDataJSON"
42
+ />
43
+ <input
44
+ type="hidden"
45
+ id="authenticatorData"
46
+ name="authenticatorData"
47
+ />
48
+ <input
49
+ type="hidden"
50
+ id="signature"
51
+ name="signature"
52
+ />
53
+ <input
54
+ type="hidden"
55
+ id="credentialId"
56
+ name="credentialId"
57
+ />
58
+ <input
59
+ type="hidden"
60
+ id="userHandle"
61
+ name="userHandle"
62
+ />
63
+ <input
64
+ type="hidden"
65
+ id="error"
66
+ name="error"
67
+ />
68
+ </form>
69
69
 
70
- <div
71
- class="no-bottom-margin"
72
- [kcClass]="'kcFormGroupClass'"
73
- >
74
- @if (authenticators) {
75
- <form
76
- id="authn_select"
77
- [kcClass]="'kcFormClass'"
78
- >
79
- @for (authenticator of authenticators.authenticators; track authenticator.credentialId) {
80
- <input
81
- type="hidden"
82
- name="authn_use_chk"
83
- [value]="authenticator.credentialId"
84
- />
85
- }
86
- @if (shouldDisplayAuthenticators) {
87
- @if (authenticators.authenticators.length > 1) {
88
- <p [kcClass]="'kcSelectAuthListItemTitle'">{{ 'webauthn-available-authenticators' | msgStr }}</p>
89
- }
90
- <div [kcClass]="'kcFormOptionsClass'">
91
- @for (
92
- authenticator of authenticators.authenticators;
93
- track authenticator.credentialId;
94
- let i = $index
95
- ) {
96
- <div
97
- [id]="'kc-webauthn-authenticator-item-' + i"
98
- [kcClass]="'kcSelectAuthListItemClass'"
99
- >
100
- <div [kcClass]="'kcSelectAuthListItemIconClass'">
101
- <i
102
- [ngClass]="selectAuthListItemIconClass(authenticator.transports.iconClass)"
103
- [kcClass]="'kcSelectAuthListItemIconPropertyClass'"
104
- ></i>
105
- <div [kcClass]="'kcSelectAuthListItemArrowIconClass'">
106
- <div
107
- [id]="'kc-webauthn-authenticator-label-' + i"
108
- [kcClass]="'kcSelectAuthListItemHeadingClass'"
109
- >
110
- {{ authenticator.label | advancedMsgStr }}
111
- </div>
112
- @if (authenticator.transports.displayNameProperties?.length) {
113
- <div
114
- [id]="'kc-webauthn-authenticator-transport-' + i"
115
- [kcClass]="'kcSelectAuthListItemDescriptionClass'"
116
- >
117
- @for (
118
- displayNameProperty of authenticator.transports.displayNameProperties;
119
- track displayNameProperty;
120
- let last = $last
121
- ) {
122
- {{ displayNameProperty | advancedMsgStr }}
123
- @if (!last) {
124
- <span>, </span>
125
- }
70
+ <div
71
+ class="no-bottom-margin"
72
+ [kcClass]="'kcFormGroupClass'"
73
+ >
74
+ @if (authenticators) {
75
+ <form
76
+ id="authn_select"
77
+ [kcClass]="'kcFormClass'"
78
+ >
79
+ @for (authenticator of authenticators.authenticators; track authenticator.credentialId) {
80
+ <input
81
+ type="hidden"
82
+ name="authn_use_chk"
83
+ [value]="authenticator.credentialId"
84
+ />
85
+ }
86
+ @if (shouldDisplayAuthenticators) {
87
+ @if (authenticators.authenticators.length > 1) {
88
+ <p [kcClass]="'kcSelectAuthListItemTitle'">
89
+ {{ 'webauthn-available-authenticators' | msgStr }}
90
+ </p>
126
91
  }
127
- </div>
128
- <div [kcClass]="'kcSelectAuthListItemDescriptionClass'">
129
- <span [id]="'kc-webauthn-authenticator-createdlabel-' + i">
130
- {{ 'webauthn-createdAt-label' | msgStr }}
131
- </span>
132
- <span [id]="'kc-webauthn-authenticator-created-' + i">{{ authenticator.createdAt }}</span>
133
- </div>
134
- <div [kcClass]="'kcSelectAuthListItemFillClass'"></div>
92
+ <div [kcClass]="'kcFormOptionsClass'">
93
+ @for (authenticator of authenticators.authenticators; track authenticator.credentialId; let i = $index) {
94
+ <div
95
+ [id]="'kc-webauthn-authenticator-item-' + i"
96
+ [kcClass]="'kcSelectAuthListItemClass'"
97
+ >
98
+ <div [kcClass]="'kcSelectAuthListItemIconClass'">
99
+ <i
100
+ [ngClass]="selectAuthListItemIconClass(authenticator.transports.iconClass)"
101
+ [kcClass]="'kcSelectAuthListItemIconPropertyClass'"
102
+ ></i>
103
+ <div [kcClass]="'kcSelectAuthListItemArrowIconClass'">
104
+ <div
105
+ [id]="'kc-webauthn-authenticator-label-' + i"
106
+ [kcClass]="'kcSelectAuthListItemHeadingClass'"
107
+ >
108
+ {{ authenticator.label | advancedMsgStr }}
109
+ </div>
110
+ @if (authenticator.transports.displayNameProperties?.length) {
111
+ <div
112
+ [id]="'kc-webauthn-authenticator-transport-' + i"
113
+ [kcClass]="'kcSelectAuthListItemDescriptionClass'"
114
+ >
115
+ @for (
116
+ displayNameProperty of authenticator.transports.displayNameProperties;
117
+ track displayNameProperty;
118
+ let last = $last
119
+ ) {
120
+ {{ displayNameProperty | advancedMsgStr }}
121
+ @if (!last) {
122
+ <span>, </span>
123
+ }
124
+ }
125
+ </div>
126
+ <div [kcClass]="'kcSelectAuthListItemDescriptionClass'">
127
+ <span [id]="'kc-webauthn-authenticator-createdlabel-' + i">
128
+ {{ 'webauthn-createdAt-label' | msgStr }}
129
+ </span>
130
+ <span [id]="'kc-webauthn-authenticator-created-' + i">{{ authenticator.createdAt }}</span>
131
+ </div>
132
+ <div [kcClass]="'kcSelectAuthListItemFillClass'"></div>
133
+ }
134
+ </div>
135
+ </div>
136
+ </div>
137
+ }
138
+ </div>
135
139
  }
136
- </div>
137
- </div>
138
- </div>
140
+ </form>
139
141
  }
140
- </div>
141
- }
142
- </form>
143
- }
144
142
 
145
- <div
146
- [kcClass]="'kcFormButtonsClass'"
147
- id="kc-form-buttons"
148
- >
149
- <input
150
- [id]="authButtonId"
151
- type="button"
152
- autofocus
153
- [kcClass]="['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonBlockClass', 'kcButtonLargeClass']"
154
- id="cancelWebAuthnAIA"
155
- name="cancel-aia"
156
- [value]="'webauthn-doAuthenticate' | msgStr"
157
- />
143
+ <div
144
+ [kcClass]="'kcFormButtonsClass'"
145
+ id="kc-form-buttons"
146
+ >
147
+ <input
148
+ [id]="authButtonId"
149
+ type="button"
150
+ autofocus
151
+ [kcClass]="['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonBlockClass', 'kcButtonLargeClass']"
152
+ id="cancelWebAuthnAIA"
153
+ name="cancel-aia"
154
+ [value]="'webauthn-doAuthenticate' | msgStr"
155
+ />
156
+ </div>
157
+ </div>
158
158
  </div>
159
- </div>
160
- </div>
161
- </ng-container>
159
+ </ng-container>
162
160
  </kc-login-template>
@@ -1,15 +1,5 @@
1
- import {
2
- ChangeDetectionStrategy,
3
- Component,
4
- forwardRef,
5
- inject,
6
- input
7
- } from '@angular/core';
8
- import {
9
- CLASSES,
10
- KC_CONTEXT,
11
- USE_DEFAULT_CSS
12
- } from '@keycloakify/angular/lib/public-api';
1
+ import { ChangeDetectionStrategy, Component, forwardRef, inject, input } from '@angular/core';
2
+ import { CLASSES, KC_CONTEXT, USE_DEFAULT_CSS } from '@keycloakify/angular/lib/public-api';
13
3
  import { Script } from '@keycloakify/angular/lib/models';
14
4
  import { ClassKey } from 'keycloakify/login/lib/kcClsx';
15
5
  import { KcContext } from 'keycloakify/login/KcContext';
@@ -24,13 +14,7 @@ import { LoginResourceInjectorService } from '@keycloakify/angular/login/service
24
14
 
25
15
  @Component({
26
16
  standalone: true,
27
- imports: [
28
- TemplateComponent,
29
- MsgStrPipe,
30
- AdvancedMsgStrPipe,
31
- KcClassDirective,
32
- LogoutOtherSessionsComponent
33
- ],
17
+ imports: [TemplateComponent, MsgStrPipe, AdvancedMsgStrPipe, KcClassDirective, LogoutOtherSessionsComponent],
34
18
  selector: 'kc-root',
35
19
  templateUrl: 'webauthn-authenticate.component.html',
36
20
  changeDetection: ChangeDetectionStrategy.OnPush,
@@ -43,8 +27,7 @@ import { LoginResourceInjectorService } from '@keycloakify/angular/login/service
43
27
  ]
44
28
  })
45
29
  export class WebauthnAuthenticateComponent extends ComponentReference {
46
- kcContext =
47
- inject<Extract<KcContext, { pageId: 'webauthn-authenticate.ftl' }>>(KC_CONTEXT);
30
+ kcContext = inject<Extract<KcContext, { pageId: 'webauthn-authenticate.ftl' }>>(KC_CONTEXT);
48
31
  loginResourceInjectorService = inject(LoginResourceInjectorService);
49
32
  msgStr = inject(MsgStrPipe);
50
33
  override doUseDefaultCss = inject<boolean>(USE_DEFAULT_CSS);
@@ -59,14 +42,7 @@ export class WebauthnAuthenticateComponent extends ComponentReference {
59
42
 
60
43
  constructor() {
61
44
  super();
62
- const {
63
- url,
64
- isUserIdentified,
65
- challenge,
66
- userVerification,
67
- rpId,
68
- createTimeout
69
- } = this.kcContext;
45
+ const { url, isUserIdentified, challenge, userVerification, rpId, createTimeout } = this.kcContext;
70
46
  const scripts: Script[] = [
71
47
  {
72
48
  type: 'module',