@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
@@ -3,35 +3,37 @@
3
3
  @let realm = kcContext.realm;
4
4
  @let url = kcContext.url;
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
- {{ 'emailLinkIdpTitle' | msgStr: idpAlias }}
14
- </ng-container>
15
- <ng-container content>
16
- <p
17
- id="instruction1"
18
- class="instruction"
19
- >
20
- {{ 'emailLinkIdp1' | msgStr: idpAlias : brokerContext.username : realm.displayName }}
21
- </p>
22
- <p
23
- id="instruction2"
24
- class="instruction"
25
- >
26
- {{ 'emailLinkIdp2' | msgStr }} <a [href]="url.loginAction">{{ 'doClickHere' | msgStr }}</a>
27
- {{ 'emailLinkIdp3' | msgStr }}
28
- </p>
29
- <p
30
- id="instruction3"
31
- class="instruction"
32
- >
33
- {{ 'emailLinkIdp4' | msgStr }} <a [href]="url.loginAction">{{ 'doClickHere' | msgStr }}</a>
34
- {{ 'emailLinkIdp5' | msgStr }}
35
- </p></ng-container
36
- >
12
+ <ng-container headerNode>
13
+ {{ 'emailLinkIdpTitle' | msgStr: idpAlias }}
14
+ </ng-container>
15
+ <ng-container content>
16
+ <p
17
+ id="instruction1"
18
+ class="instruction"
19
+ >
20
+ {{ 'emailLinkIdp1' | msgStr: idpAlias : brokerContext.username : realm.displayName }}
21
+ </p>
22
+ <p
23
+ id="instruction2"
24
+ class="instruction"
25
+ >
26
+ {{ 'emailLinkIdp2' | msgStr }}
27
+ <a [href]="url.loginAction">{{ 'doClickHere' | msgStr }}</a>
28
+ {{ 'emailLinkIdp3' | msgStr }}
29
+ </p>
30
+ <p
31
+ id="instruction3"
32
+ class="instruction"
33
+ >
34
+ {{ 'emailLinkIdp4' | msgStr }}
35
+ <a [href]="url.loginAction">{{ 'doClickHere' | msgStr }}</a>
36
+ {{ 'emailLinkIdp5' | msgStr }}
37
+ </p>
38
+ </ng-container>
37
39
  </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';
@@ -31,8 +21,7 @@ import { MsgStrPipe } from '@keycloakify/angular/login/pipes/msg-str.pipe';
31
21
  ]
32
22
  })
33
23
  export class LoginIdpLinkEmailComponent extends ComponentReference {
34
- kcContext =
35
- inject<Extract<KcContext, { pageId: 'login-idp-link-email.ftl' }>>(KC_CONTEXT);
24
+ kcContext = inject<Extract<KcContext, { pageId: 'login-idp-link-email.ftl' }>>(KC_CONTEXT);
36
25
  override doUseDefaultCss = inject<boolean>(USE_DEFAULT_CSS);
37
26
  override classes = inject<Partial<Record<ClassKey, string>>>(CLASSES);
38
27
  displayRequiredFields = input(false);
@@ -2,91 +2,93 @@
2
2
  @let oauth = kcContext.oauth;
3
3
  @let url = kcContext.url;
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
- @if (client.attributes['logoUri']) {
13
- <img
14
- [src]="client.attributes['logoUri']"
15
- alt=""
16
- />
17
- }
18
- <p>{{ 'oauthGrantTitle' | msgStr: (client.name ? (client.name | advancedMsgStr) : client.clientId) }}</p>
19
- </ng-container>
20
-
21
- <ng-container content>
22
- <div
23
- id="kc-oauth"
24
- class="content-area"
25
- >
26
- <h3>{{ 'oauthGrantRequest' | msgStr }}</h3>
27
- <ul>
28
- @for (clientScope of oauth.clientScopesRequested; track clientScope) {
29
- <li>
30
- <span>
31
- {{ clientScope.consentScreenText | advancedMsgStr }}
32
- @if (clientScope.dynamicScopeParameter) {
33
- : <b>{{ clientScope.dynamicScopeParameter }}</b>
34
- }
35
- </span>
36
- </li>
11
+ <ng-container headerNode>
12
+ @if (client.attributes['logoUri']) {
13
+ <img
14
+ [src]="client.attributes['logoUri']"
15
+ alt=""
16
+ />
37
17
  }
38
- </ul>
18
+ <p>
19
+ {{ 'oauthGrantTitle' | msgStr: (client.name ? (client.name | advancedMsgStr) : client.clientId) }}
20
+ </p>
21
+ </ng-container>
22
+
23
+ <ng-container content>
24
+ <div
25
+ id="kc-oauth"
26
+ class="content-area"
27
+ >
28
+ <h3>{{ 'oauthGrantRequest' | msgStr }}</h3>
29
+ <ul>
30
+ @for (clientScope of oauth.clientScopesRequested; track clientScope) {
31
+ <li>
32
+ <span>
33
+ {{ clientScope.consentScreenText | advancedMsgStr }}
34
+ @if (clientScope.dynamicScopeParameter) {
35
+ : <b>{{ clientScope.dynamicScopeParameter }}</b>
36
+ }
37
+ </span>
38
+ </li>
39
+ }
40
+ </ul>
39
41
 
40
- @if (client.attributes['policyUri'] || client.attributes['tosUri']) {
41
- <h3>
42
- @if (client.name) {
43
- {{ 'oauthGrantInformation' | msgStr: (client.name | advancedMsgStr) }}
44
- } @else {
45
- {{ 'oauthGrantInformation' | msgStr: client.clientId }}
46
- }
47
- @if (client.attributes['policyUri']) {
48
- {{ 'oauthGrantReview' | msgStr }}
49
- <a
50
- [href]="client.attributes['policyUri']"
51
- target="_blank"
42
+ @if (client.attributes['policyUri'] || client.attributes['tosUri']) {
43
+ <h3>
44
+ @if (client.name) {
45
+ {{ 'oauthGrantInformation' | msgStr: (client.name | advancedMsgStr) }}
46
+ } @else {
47
+ {{ 'oauthGrantInformation' | msgStr: client.clientId }}
48
+ }
49
+ @if (client.attributes['policyUri']) {
50
+ {{ 'oauthGrantReview' | msgStr }}
51
+ <a
52
+ [href]="client.attributes['policyUri']"
53
+ target="_blank"
54
+ >
55
+ {{ 'oauthGrantPolicy' | msgStr }}
56
+ </a>
57
+ }
58
+ </h3>
59
+ }
60
+ <form
61
+ class="form-actions"
62
+ [action]="url.oauthAction"
63
+ method="post"
52
64
  >
53
- {{ 'oauthGrantPolicy' | msgStr }}
54
- </a>
55
- }
56
- </h3>
57
- }
58
- <form
59
- class="form-actions"
60
- [action]="url.oauthAction"
61
- method="post"
62
- >
63
- <input
64
- type="hidden"
65
- name="code"
66
- [value]="oauth.code"
67
- />
68
- <div [kcClass]="'kcFormGroupClass'">
69
- <div id="kc-form-options">
70
- <div [kcClass]="'kcFormOptionsWrapperClass'"></div>
71
- </div>
65
+ <input
66
+ type="hidden"
67
+ name="code"
68
+ [value]="oauth.code"
69
+ />
70
+ <div [kcClass]="'kcFormGroupClass'">
71
+ <div id="kc-form-options">
72
+ <div [kcClass]="'kcFormOptionsWrapperClass'"></div>
73
+ </div>
72
74
 
73
- <div id="kc-form-buttons">
74
- <div [kcClass]="'kcFormButtonsWrapperClass'">
75
- <input
76
- [kcClass]="['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonLargeClass']"
77
- type="submit"
78
- [value]="'doYes' | msgStr"
79
- />
80
- <input
81
- [kcClass]="['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonLargeClass']"
82
- type="submit"
83
- [value]="'doNo' | msgStr"
84
- />
85
- </div>
86
- </div>
75
+ <div id="kc-form-buttons">
76
+ <div [kcClass]="'kcFormButtonsWrapperClass'">
77
+ <input
78
+ [kcClass]="['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonLargeClass']"
79
+ type="submit"
80
+ [value]="'doYes' | msgStr"
81
+ />
82
+ <input
83
+ [kcClass]="['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonLargeClass']"
84
+ type="submit"
85
+ [value]="'doNo' | msgStr"
86
+ />
87
+ </div>
88
+ </div>
89
+ </div>
90
+ </form>
91
+ <div className="clearfix"></div>
87
92
  </div>
88
- </form>
89
- <div className="clearfix"></div>
90
- </div>
91
- </ng-container>
93
+ </ng-container>
92
94
  </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';
@@ -32,8 +22,7 @@ import { MsgStrPipe } from '@keycloakify/angular/login/pipes/msg-str.pipe';
32
22
  ]
33
23
  })
34
24
  export class LoginOauthGrantComponent extends ComponentReference {
35
- kcContext =
36
- inject<Extract<KcContext, { pageId: 'login-oauth-grant.ftl' }>>(KC_CONTEXT);
25
+ kcContext = inject<Extract<KcContext, { pageId: 'login-oauth-grant.ftl' }>>(KC_CONTEXT);
37
26
  override doUseDefaultCss = inject<boolean>(USE_DEFAULT_CSS);
38
27
  override classes = inject<Partial<Record<ClassKey, string>>>(CLASSES);
39
28
  displayRequiredFields = input(false);
@@ -1,63 +1,63 @@
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
- {{ 'oauth2DeviceVerificationTitle' | msgStr }}
11
- </ng-container>
12
- <ng-container content>
13
- <form
14
- id="kc-user-verify-device-user-code-form"
15
- [kcClass]="'kcFormClass'"
16
- [action]="url.oauth2DeviceVerificationAction"
17
- method="post"
18
- >
19
- <div [kcClass]="'kcFormGroupClass'">
20
- <div [kcClass]="'kcLabelWrapperClass'">
21
- <label
22
- for="device-user-code"
23
- [kcClass]="'kcLabelClass'"
24
- >
25
- {{ 'verifyOAuth2DeviceUserCode' | msgStr }}
26
- </label>
27
- </div>
28
-
29
- <div [kcClass]="'kcInputWrapperClass'">
30
- <input
31
- id="device-user-code"
32
- name="device_user_code"
33
- autoComplete="off"
34
- type="text"
35
- [kcClass]="'kcInputClass'"
36
- autofocus
37
- />
38
- </div>
39
- </div>
40
- <div [kcClass]="'kcFormGroupClass'">
41
- <div
42
- id="kc-form-options"
43
- [kcClass]="'kcFormOptionsClass'"
9
+ <ng-container headerNode>
10
+ {{ 'oauth2DeviceVerificationTitle' | msgStr }}
11
+ </ng-container>
12
+ <ng-container content>
13
+ <form
14
+ id="kc-user-verify-device-user-code-form"
15
+ [kcClass]="'kcFormClass'"
16
+ [action]="url.oauth2DeviceVerificationAction"
17
+ method="post"
44
18
  >
45
- <div [kcClass]="'kcFormOptionsWrapperClass'"></div>
46
- </div>
19
+ <div [kcClass]="'kcFormGroupClass'">
20
+ <div [kcClass]="'kcLabelWrapperClass'">
21
+ <label
22
+ for="device-user-code"
23
+ [kcClass]="'kcLabelClass'"
24
+ >
25
+ {{ 'verifyOAuth2DeviceUserCode' | msgStr }}
26
+ </label>
27
+ </div>
47
28
 
48
- <div
49
- id="kc-form-buttons"
50
- [kcClass]="'kcFormButtonsClass'"
51
- >
52
- <div [kcClass]="'kcFormButtonsWrapperClass'">
53
- <input
54
- [kcClass]="['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonLargeClass']"
55
- type="submit"
56
- value="{{ 'doSubmit' | msgStr }}"
57
- />
58
- </div>
59
- </div>
60
- </div>
61
- </form>
62
- </ng-container>
29
+ <div [kcClass]="'kcInputWrapperClass'">
30
+ <input
31
+ id="device-user-code"
32
+ name="device_user_code"
33
+ autoComplete="off"
34
+ type="text"
35
+ [kcClass]="'kcInputClass'"
36
+ autofocus
37
+ />
38
+ </div>
39
+ </div>
40
+ <div [kcClass]="'kcFormGroupClass'">
41
+ <div
42
+ id="kc-form-options"
43
+ [kcClass]="'kcFormOptionsClass'"
44
+ >
45
+ <div [kcClass]="'kcFormOptionsWrapperClass'"></div>
46
+ </div>
47
+
48
+ <div
49
+ id="kc-form-buttons"
50
+ [kcClass]="'kcFormButtonsClass'"
51
+ >
52
+ <div [kcClass]="'kcFormButtonsWrapperClass'">
53
+ <input
54
+ [kcClass]="['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonLargeClass']"
55
+ type="submit"
56
+ value="{{ 'doSubmit' | msgStr }}"
57
+ />
58
+ </div>
59
+ </div>
60
+ </div>
61
+ </form>
62
+ </ng-container>
63
63
  </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';
@@ -31,10 +21,7 @@ import { MsgStrPipe } from '@keycloakify/angular/login/pipes/msg-str.pipe';
31
21
  ]
32
22
  })
33
23
  export class LoginOauth2DeviceVerifyUserCodeComponent extends ComponentReference {
34
- kcContext =
35
- inject<
36
- Extract<KcContext, { pageId: 'login-oauth2-device-verify-user-code.ftl' }>
37
- >(KC_CONTEXT);
24
+ kcContext = inject<Extract<KcContext, { pageId: 'login-oauth2-device-verify-user-code.ftl' }>>(KC_CONTEXT);
38
25
  override doUseDefaultCss = inject<boolean>(USE_DEFAULT_CSS);
39
26
  override classes = inject<Partial<Record<ClassKey, string>>>(CLASSES);
40
27
  displayRequiredFields = input(false);
@@ -2,102 +2,102 @@
2
2
  @let otpLogin = kcContext.otpLogin;
3
3
  @let messagesPerField = kcContext.messagesPerField;
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
- <form
16
- id="kc-otp-login-form"
17
- [kcClass]="['kcFormClass']"
18
- [action]="url.loginAction"
19
- method="post"
20
- >
21
- @if (otpLogin.userOtpCredentials.length > 1) {
22
- <div [kcClass]="'kcFormGroupClass'">
23
- <div [kcClass]="'kcInputWrapperClass'">
24
- @for (otpCredential of otpLogin.userOtpCredentials; track otpCredential; let i = $index) {
25
- <ng-container>
26
- <input
27
- [id]="'kc-otp-credential-' + i"
28
- [kcClass]="'kcLoginOTPListClass'"
29
- type="radio"
30
- name="selectedCredentialId"
31
- [value]="otpCredential.id"
32
- [checked]="otpCredential.id === otpLogin.selectedCredentialId"
33
- />
34
- <label
35
- [for]="'kc-otp-credential-' + i"
36
- [kcClass]="'kcLoginOTPListClass'"
37
- [tabIndex]="i"
38
- >
39
- <span [kcClass]="'kcLoginOTPListItemHeaderClass'">
40
- <span [kcClass]="'kcLoginOTPListItemIconBodyClass'">
41
- <i
42
- [kcClass]="'kcLoginOTPListItemIconClass'"
43
- aria-hidden="true"
44
- ></i>
45
- </span>
46
- <span [kcClass]="'kcLoginOTPListItemTitleClass'">{{ otpCredential.userLabel }}</span>
47
- </span>
48
- </label>
49
- </ng-container>
50
- }
51
- </div>
52
- </div>
53
- }
54
- <div [kcClass]="'kcFormGroupClass'">
55
- <div [kcClass]="'kcLabelWrapperClass'">
56
- <label
57
- for="otp"
58
- [kcClass]="'kcLabelClass'"
59
- >
60
- {{ 'loginOtpOneTime' | msgStr }}
61
- </label>
62
- </div>
63
- <div [kcClass]="'kcInputWrapperClass'">
64
- <input
65
- id="otp"
66
- name="otp"
67
- autoComplete="off"
68
- type="text"
69
- [kcClass]="'kcInputClass'"
70
- autoFocus
71
- [attr.aria-invalid]="messagesPerField.existsError('totp')"
72
- />
73
- @if (messagesPerField.existsError('totp')) {
74
- <span
75
- id="input-error-otp-code"
76
- [kcClass]="['kcInputErrorMessageClass']"
77
- aria-live="polite"
78
- [innerHTML]="messagesPerField.get('totp') | kcSanitize: 'html'"
79
- ></span>
80
- }
81
- </div>
82
- </div>
83
- <div [kcClass]="'kcFormGroupClass'">
84
- <div
85
- id="kc-form-options"
86
- [kcClass]="'kcFormOptionsClass'"
87
- ></div>
88
- <div
89
- id="kc-form-buttons"
90
- [kcClass]="'kcFormButtonsClass'"
11
+ <ng-container headerNode>
12
+ {{ 'doLogIn' | msgStr }}
13
+ </ng-container>
14
+ <ng-container content>
15
+ <form
16
+ id="kc-otp-login-form"
17
+ [kcClass]="['kcFormClass']"
18
+ [action]="url.loginAction"
19
+ method="post"
91
20
  >
92
- <input
93
- [kcClass]="['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']"
94
- name="login"
95
- id="kc-login"
96
- type="submit"
97
- value="{{ 'doLogIn' | msgStr }}"
98
- />
99
- </div>
100
- </div>
101
- </form>
102
- </ng-container>
21
+ @if (otpLogin.userOtpCredentials.length > 1) {
22
+ <div [kcClass]="'kcFormGroupClass'">
23
+ <div [kcClass]="'kcInputWrapperClass'">
24
+ @for (otpCredential of otpLogin.userOtpCredentials; track otpCredential; let i = $index) {
25
+ <ng-container>
26
+ <input
27
+ [id]="'kc-otp-credential-' + i"
28
+ [kcClass]="'kcLoginOTPListClass'"
29
+ type="radio"
30
+ name="selectedCredentialId"
31
+ [value]="otpCredential.id"
32
+ [checked]="otpCredential.id === otpLogin.selectedCredentialId"
33
+ />
34
+ <label
35
+ [for]="'kc-otp-credential-' + i"
36
+ [kcClass]="'kcLoginOTPListClass'"
37
+ [tabIndex]="i"
38
+ >
39
+ <span [kcClass]="'kcLoginOTPListItemHeaderClass'">
40
+ <span [kcClass]="'kcLoginOTPListItemIconBodyClass'">
41
+ <i
42
+ [kcClass]="'kcLoginOTPListItemIconClass'"
43
+ aria-hidden="true"
44
+ ></i>
45
+ </span>
46
+ <span [kcClass]="'kcLoginOTPListItemTitleClass'">{{ otpCredential.userLabel }}</span>
47
+ </span>
48
+ </label>
49
+ </ng-container>
50
+ }
51
+ </div>
52
+ </div>
53
+ }
54
+ <div [kcClass]="'kcFormGroupClass'">
55
+ <div [kcClass]="'kcLabelWrapperClass'">
56
+ <label
57
+ for="otp"
58
+ [kcClass]="'kcLabelClass'"
59
+ >
60
+ {{ 'loginOtpOneTime' | msgStr }}
61
+ </label>
62
+ </div>
63
+ <div [kcClass]="'kcInputWrapperClass'">
64
+ <input
65
+ id="otp"
66
+ name="otp"
67
+ autoComplete="off"
68
+ type="text"
69
+ [kcClass]="'kcInputClass'"
70
+ autoFocus
71
+ [attr.aria-invalid]="messagesPerField.existsError('totp')"
72
+ />
73
+ @if (messagesPerField.existsError('totp')) {
74
+ <span
75
+ id="input-error-otp-code"
76
+ [kcClass]="['kcInputErrorMessageClass']"
77
+ aria-live="polite"
78
+ [innerHTML]="messagesPerField.get('totp') | kcSanitize: 'html'"
79
+ ></span>
80
+ }
81
+ </div>
82
+ </div>
83
+ <div [kcClass]="'kcFormGroupClass'">
84
+ <div
85
+ id="kc-form-options"
86
+ [kcClass]="'kcFormOptionsClass'"
87
+ ></div>
88
+ <div
89
+ id="kc-form-buttons"
90
+ [kcClass]="'kcFormButtonsClass'"
91
+ >
92
+ <input
93
+ [kcClass]="['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']"
94
+ name="login"
95
+ id="kc-login"
96
+ type="submit"
97
+ value="{{ 'doLogIn' | msgStr }}"
98
+ />
99
+ </div>
100
+ </div>
101
+ </form>
102
+ </ng-container>
103
103
  </kc-login-template>