@keycloakify/angular 0.0.1-rc.23 → 0.0.1-rc.24

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 (108) hide show
  1. package/README.md +2 -0
  2. package/bin/338.index.js +14 -1
  3. package/bin/758.index.js +14 -1
  4. package/bin/925.index.js +13 -2
  5. package/esm2022/login/containers/template/template.component.mjs +11 -5
  6. package/esm2022/login/login.mjs +1 -1
  7. package/esm2022/login/pages/code/code.component.mjs +3 -3
  8. package/esm2022/login/pages/delete-credential/delete-credential.component.mjs +3 -3
  9. package/esm2022/login/pages/error/error.component.mjs +3 -3
  10. package/esm2022/login/pages/idp-review-user-profile/idp-review-user-profile.component.mjs +7 -7
  11. package/esm2022/login/pages/info/info.component.mjs +3 -3
  12. package/esm2022/login/pages/login/login.component.mjs +3 -3
  13. package/esm2022/login/pages/login-idp-link-email/login-idp-link-email.component.mjs +3 -3
  14. package/esm2022/login/pages/login-oauth-grant/login-oauth-grant.component.mjs +3 -3
  15. package/esm2022/login/pages/login-page-expired/login-page-expired.component.mjs +3 -3
  16. package/esm2022/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.mjs +3 -3
  17. package/esm2022/login/pages/login-password/login-password.component.mjs +3 -3
  18. package/esm2022/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.mjs +3 -3
  19. package/esm2022/login/pages/login-reset-otp/login-reset-otp.component.mjs +3 -3
  20. package/esm2022/login/pages/login-reset-password/login-reset-password.component.mjs +3 -3
  21. package/esm2022/login/pages/login-update-profile/login-update-profile.component.mjs +7 -7
  22. package/esm2022/login/pages/login-username/login-username.component.mjs +3 -3
  23. package/esm2022/login/pages/login-verify-email/login-verify-email.component.mjs +3 -3
  24. package/esm2022/login/pages/register/register.component.mjs +7 -7
  25. package/esm2022/login/pages/select-authenticator/select-authenticator.component.mjs +3 -3
  26. package/esm2022/login/pages/update-email/update-email.component.mjs +7 -7
  27. package/esm2022/login/pages/webauthn-authenticate/webauthn-authenticate.component.mjs +3 -3
  28. package/fesm2022/keycloakify-angular-login-containers-template.mjs +10 -4
  29. package/fesm2022/keycloakify-angular-login-containers-template.mjs.map +1 -1
  30. package/fesm2022/keycloakify-angular-login-pages-code.mjs +2 -2
  31. package/fesm2022/keycloakify-angular-login-pages-code.mjs.map +1 -1
  32. package/fesm2022/keycloakify-angular-login-pages-delete-credential.mjs +2 -2
  33. package/fesm2022/keycloakify-angular-login-pages-delete-credential.mjs.map +1 -1
  34. package/fesm2022/keycloakify-angular-login-pages-error.mjs +2 -2
  35. package/fesm2022/keycloakify-angular-login-pages-error.mjs.map +1 -1
  36. package/fesm2022/keycloakify-angular-login-pages-idp-review-user-profile.mjs +6 -6
  37. package/fesm2022/keycloakify-angular-login-pages-idp-review-user-profile.mjs.map +1 -1
  38. package/fesm2022/keycloakify-angular-login-pages-info.mjs +2 -2
  39. package/fesm2022/keycloakify-angular-login-pages-info.mjs.map +1 -1
  40. package/fesm2022/keycloakify-angular-login-pages-login-idp-link-email.mjs +2 -2
  41. package/fesm2022/keycloakify-angular-login-pages-login-idp-link-email.mjs.map +1 -1
  42. package/fesm2022/keycloakify-angular-login-pages-login-oauth-grant.mjs +2 -2
  43. package/fesm2022/keycloakify-angular-login-pages-login-oauth-grant.mjs.map +1 -1
  44. package/fesm2022/keycloakify-angular-login-pages-login-page-expired.mjs +2 -2
  45. package/fesm2022/keycloakify-angular-login-pages-login-page-expired.mjs.map +1 -1
  46. package/fesm2022/keycloakify-angular-login-pages-login-passkeys-conditional-authenticate.mjs +2 -2
  47. package/fesm2022/keycloakify-angular-login-pages-login-passkeys-conditional-authenticate.mjs.map +1 -1
  48. package/fesm2022/keycloakify-angular-login-pages-login-password.mjs +2 -2
  49. package/fesm2022/keycloakify-angular-login-pages-login-password.mjs.map +1 -1
  50. package/fesm2022/keycloakify-angular-login-pages-login-recovery-authn-code-input.mjs +2 -2
  51. package/fesm2022/keycloakify-angular-login-pages-login-recovery-authn-code-input.mjs.map +1 -1
  52. package/fesm2022/keycloakify-angular-login-pages-login-reset-otp.mjs +2 -2
  53. package/fesm2022/keycloakify-angular-login-pages-login-reset-otp.mjs.map +1 -1
  54. package/fesm2022/keycloakify-angular-login-pages-login-reset-password.mjs +2 -2
  55. package/fesm2022/keycloakify-angular-login-pages-login-reset-password.mjs.map +1 -1
  56. package/fesm2022/keycloakify-angular-login-pages-login-update-profile.mjs +6 -6
  57. package/fesm2022/keycloakify-angular-login-pages-login-update-profile.mjs.map +1 -1
  58. package/fesm2022/keycloakify-angular-login-pages-login-username.mjs +2 -2
  59. package/fesm2022/keycloakify-angular-login-pages-login-username.mjs.map +1 -1
  60. package/fesm2022/keycloakify-angular-login-pages-login-verify-email.mjs +2 -2
  61. package/fesm2022/keycloakify-angular-login-pages-login-verify-email.mjs.map +1 -1
  62. package/fesm2022/keycloakify-angular-login-pages-login.mjs +2 -2
  63. package/fesm2022/keycloakify-angular-login-pages-login.mjs.map +1 -1
  64. package/fesm2022/keycloakify-angular-login-pages-register.mjs +7 -7
  65. package/fesm2022/keycloakify-angular-login-pages-register.mjs.map +1 -1
  66. package/fesm2022/keycloakify-angular-login-pages-select-authenticator.mjs +2 -2
  67. package/fesm2022/keycloakify-angular-login-pages-select-authenticator.mjs.map +1 -1
  68. package/fesm2022/keycloakify-angular-login-pages-update-email.mjs +6 -6
  69. package/fesm2022/keycloakify-angular-login-pages-update-email.mjs.map +1 -1
  70. package/fesm2022/keycloakify-angular-login-pages-webauthn-authenticate.mjs +2 -2
  71. package/fesm2022/keycloakify-angular-login-pages-webauthn-authenticate.mjs.map +1 -1
  72. package/login/containers/template/template.component.d.ts +4 -2
  73. package/login/login.d.ts +1 -0
  74. package/login/pages/idp-review-user-profile/idp-review-user-profile.component.d.ts +4 -2
  75. package/login/pages/login-update-profile/login-update-profile.component.d.ts +4 -2
  76. package/login/pages/register/register.component.d.ts +4 -2
  77. package/login/pages/update-email/update-email.component.d.ts +4 -2
  78. package/package.json +7 -7
  79. package/src/bin/eject-page.ts +21 -3
  80. package/src/bin/update-kc-gen.ts +14 -1
  81. package/src/login/containers/template/template.component.html +1 -0
  82. package/src/login/containers/template/template.component.ts +6 -0
  83. package/src/login/login.ts +1 -0
  84. package/src/login/pages/code/code.component.html +1 -0
  85. package/src/login/pages/delete-credential/delete-credential.component.html +26 -26
  86. package/src/login/pages/error/error.component.html +16 -17
  87. package/src/login/pages/idp-review-user-profile/idp-review-user-profile.component.html +1 -1
  88. package/src/login/pages/idp-review-user-profile/idp-review-user-profile.component.ts +4 -3
  89. package/src/login/pages/info/info.component.html +2 -2
  90. package/src/login/pages/login/login.component.html +3 -1
  91. package/src/login/pages/login-idp-link-email/login-idp-link-email.component.html +2 -0
  92. package/src/login/pages/login-oauth-grant/login-oauth-grant.component.html +1 -0
  93. package/src/login/pages/login-page-expired/login-page-expired.component.html +23 -24
  94. package/src/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.html +166 -165
  95. package/src/login/pages/login-password/login-password.component.html +68 -69
  96. package/src/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.html +55 -57
  97. package/src/login/pages/login-reset-otp/login-reset-otp.component.html +48 -49
  98. package/src/login/pages/login-reset-password/login-reset-password.component.html +1 -0
  99. package/src/login/pages/login-update-profile/login-update-profile.component.html +1 -1
  100. package/src/login/pages/login-update-profile/login-update-profile.component.ts +3 -2
  101. package/src/login/pages/login-username/login-username.component.html +5 -3
  102. package/src/login/pages/login-verify-email/login-verify-email.component.html +1 -1
  103. package/src/login/pages/register/register.component.html +2 -2
  104. package/src/login/pages/register/register.component.ts +3 -2
  105. package/src/login/pages/select-authenticator/select-authenticator.component.html +32 -32
  106. package/src/login/pages/update-email/update-email.component.html +1 -1
  107. package/src/login/pages/update-email/update-email.component.ts +3 -2
  108. package/src/login/pages/webauthn-authenticate/webauthn-authenticate.component.html +1 -0
@@ -1,5 +1,4 @@
1
1
  @let realm = kcContext.realm;
2
- @let social = kcContext.social;
3
2
  @let usernameHidden = kcContext.usernameHidden;
4
3
  @let auth = kcContext.auth;
5
4
  @let messagesPerField = kcContext.messagesPerField;
@@ -10,6 +9,7 @@
10
9
  {{ i18n.msgStr('loginAccountTitle') }}
11
10
  </ng-template>
12
11
  <ng-template #infoNode>
12
+ @let url = kcContext.url;
13
13
  <div id="kc-registration-container">
14
14
  <div id="kc-registration">
15
15
  <span>
@@ -25,6 +25,8 @@
25
25
  </div>
26
26
  </ng-template>
27
27
  <ng-template #socialProvidersNode>
28
+ @let realm = kcContext.realm;
29
+ @let social = kcContext.social;
28
30
  @if (!!realm?.password && !!social?.providers?.length) {
29
31
  <div
30
32
  id="kc-social-providers"
@@ -2,7 +2,9 @@
2
2
  @let brokerContext = kcContext.brokerContext;
3
3
  @let realm = kcContext.realm;
4
4
  @let url = kcContext.url;
5
+
5
6
  <ng-template #headerNode>
7
+ @let idpAlias = kcContext.idpAlias;
6
8
  {{ i18n.msgStr('emailLinkIdpTitle', idpAlias) }}
7
9
  </ng-template>
8
10
  <p
@@ -3,6 +3,7 @@
3
3
  @let url = kcContext.url;
4
4
 
5
5
  <ng-template #headerNode>
6
+ @let client = kcContext.client;
6
7
  @if (client.attributes['logoUri']) {
7
8
  <img
8
9
  alt=""
@@ -1,28 +1,27 @@
1
1
  @let url = kcContext.url;
2
2
 
3
- <ng-container #headerNode>
3
+ <ng-template #headerNode>
4
4
  {{ i18n.msgStr('pageExpiredTitle') }}
5
- </ng-container>
6
- <ng-container content>
7
- <p
8
- id="instruction1"
9
- class="instruction"
5
+ </ng-template>
6
+
7
+ <p
8
+ id="instruction1"
9
+ class="instruction"
10
+ >
11
+ {{ i18n.msgStr('pageExpiredMsg1') }}
12
+ <a
13
+ id="loginRestartLink"
14
+ [href]="url.loginRestartFlowUrl"
15
+ >
16
+ {{ i18n.msgStr('doClickHere') }}
17
+ </a>
18
+ .<br />
19
+ {{ i18n.msgStr('pageExpiredMsg2') }}
20
+ <a
21
+ id="loginContinueLink"
22
+ [href]="url.loginAction"
10
23
  >
11
- {{ i18n.msgStr('pageExpiredMsg1') }}
12
- <a
13
- id="loginRestartLink"
14
- [href]="url.loginRestartFlowUrl"
15
- >
16
- {{ i18n.msgStr('doClickHere') }}
17
- </a>
18
- .<br />
19
- {{ i18n.msgStr('pageExpiredMsg2') }}
20
- <a
21
- id="loginContinueLink"
22
- [href]="url.loginAction"
23
- >
24
- {{ i18n.msgStr('doClickHere') }}
25
- </a>
26
- .
27
- </p>
28
- </ng-container>
24
+ {{ i18n.msgStr('doClickHere') }}
25
+ </a>
26
+ .
27
+ </p>
@@ -9,7 +9,9 @@
9
9
  <ng-template #headerNode>
10
10
  {{ i18n.msgStr('passkey-login-title') }}
11
11
  </ng-template>
12
- <ng-container infoNode>
12
+ <ng-template #infoNode>
13
+ @let realm = kcContext.realm;
14
+ @let url = kcContext.url;
13
15
  @if (realm.registrationAllowed && !registrationDisabled) {
14
16
  <div id="kc-registration">
15
17
  <span>
@@ -23,176 +25,175 @@
23
25
  </span>
24
26
  </div>
25
27
  }
26
- </ng-container>
28
+ </ng-template>
27
29
 
28
- <ng-container content>
29
- <form
30
- id="webauth"
31
- method="post"
32
- [action]="url.loginAction"
33
- >
34
- <input
35
- type="hidden"
36
- id="clientDataJSON"
37
- name="clientDataJSON"
38
- />
39
- <input
40
- type="hidden"
41
- id="authenticatorData"
42
- name="authenticatorData"
43
- />
44
- <input
45
- type="hidden"
46
- id="signature"
47
- name="signature"
48
- />
49
- <input
50
- type="hidden"
51
- id="credentialId"
52
- name="credentialId"
53
- />
54
- <input
55
- type="hidden"
56
- id="userHandle"
57
- name="userHandle"
58
- />
59
- <input
60
- type="hidden"
61
- id="error"
62
- name="error"
63
- />
64
- </form>
65
- <div
66
- no-bottom-margin="true"
67
- style="margin-bottom: 0"
68
- [kcClass]="'kcFormGroupClass'"
69
- >
70
- @if (authenticators !== undefined && authenticators.authenticators.length !== 0) {
71
- <form
72
- id="authn_select"
73
- [kcClass]="'kcFormClass'"
74
- >
75
- @for (authenticator of authenticators.authenticators; track authenticator; let i = $index) {
76
- <input
77
- type="hidden"
78
- name="authn_use_chk"
79
- readOnly
80
- [value]="authenticator.credentialId"
81
- />
82
- }
83
- </form>
30
+ <form
31
+ id="webauth"
32
+ method="post"
33
+ [action]="url.loginAction"
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
+ no-bottom-margin="true"
68
+ style="margin-bottom: 0"
69
+ [kcClass]="'kcFormGroupClass'"
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>
84
85
 
85
- @if (shouldDisplayAuthenticators) {
86
- @if (authenticators.authenticators.length > 1) {
87
- <p [kcClass]="'kcSelectAuthListItemTitle'">
88
- {{ i18n.msgStr('passkey-available-authenticators') }}
89
- </p>
90
- }
86
+ @if (shouldDisplayAuthenticators) {
87
+ @if (authenticators.authenticators.length > 1) {
88
+ <p [kcClass]="'kcSelectAuthListItemTitle'">
89
+ {{ i18n.msgStr('passkey-available-authenticators') }}
90
+ </p>
91
+ }
91
92
 
92
- <div [kcClass]="'kcFormClass'">
93
- @for (authenticator of authenticators.authenticators; track authenticator; let i = $index) {
94
- <div
95
- id="'kc-webauthn-authenticator-item-' + i"
96
- [kcClass]="'kcSelectAuthListItemClass'"
97
- >
98
- <i
99
- aria-hidden="true"
100
- [ngClass]="selectAuthListItemIconClass(authenticator.transports.iconClass)"
101
- [kcClass]="'kcCommonLogoIdP'"
102
- ></i>
103
- <div [kcClass]="'kcSelectAuthListItemBodyClass'">
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
+ aria-hidden="true"
101
+ [ngClass]="selectAuthListItemIconClass(authenticator.transports.iconClass)"
102
+ [kcClass]="'kcCommonLogoIdP'"
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
+ ) {
104
116
  <div
105
- [id]="'kc-webauthn-authenticator-label-' + i"
106
- [kcClass]="'kcSelectAuthListItemHeadingClass'"
117
+ [id]="'kc-webauthn-authenticator-transport-' + i"
118
+ [kcClass]="'kcSelectAuthListItemDescriptionClass'"
107
119
  >
108
- {{ i18n.advancedMsgStr(authenticator.label) }}
109
- </div>
110
- @if (
111
- authenticator.transports !== undefined &&
112
- authenticator.transports.displayNameProperties !== undefined &&
113
- authenticator.transports.displayNameProperties.length !== 0
114
- ) {
115
- <div
116
- [id]="'kc-webauthn-authenticator-transport-' + i"
117
- [kcClass]="'kcSelectAuthListItemDescriptionClass'"
118
- >
119
- @for (nameProperty of authenticator.transports.displayNameProperties; track nameProperty; let i = $index) {
120
- <span>
121
- {{ i18n.advancedMsgStr(nameProperty) }}
122
- </span>
123
- @if (i !== authenticator.transports.displayNameProperties.length - 1) {
124
- <span>, </span>
125
- }
126
- }
127
- </div>
128
- <div [kcClass]="'kcSelectAuthListItemDescriptionClass'">
129
- <span [id]="'kc-webauthn-authenticator-createdlabel-' + i">
130
- {{ i18n.msgStr('passkey-createdAt-label') }}
120
+ @for (nameProperty of authenticator.transports.displayNameProperties; track nameProperty; let i = $index) {
121
+ <span>
122
+ {{ i18n.advancedMsgStr(nameProperty) }}
131
123
  </span>
132
- <span [id]="'kc-webauthn-authenticator-created-' + i">
133
- {{ authenticator.createdAt }}
134
- </span>
135
- </div>
136
- <div [kcClass]="'kcSelectAuthListItemFillClass'"></div>
137
- }
138
- </div>
124
+ @if (i !== authenticator.transports.displayNameProperties.length - 1) {
125
+ <span>, </span>
126
+ }
127
+ }
128
+ </div>
129
+ <div [kcClass]="'kcSelectAuthListItemDescriptionClass'">
130
+ <span [id]="'kc-webauthn-authenticator-createdlabel-' + i">
131
+ {{ i18n.msgStr('passkey-createdAt-label') }}
132
+ </span>
133
+ <span [id]="'kc-webauthn-authenticator-created-' + i">
134
+ {{ authenticator.createdAt }}
135
+ </span>
136
+ </div>
137
+ <div [kcClass]="'kcSelectAuthListItemFillClass'"></div>
138
+ }
139
139
  </div>
140
- }
141
- </div>
142
- }
140
+ </div>
141
+ }
142
+ </div>
143
143
  }
144
- <div id="kc-form-wrapper">
145
- @if (realm.password) {
146
- <form
147
- id="kc-form-passkey"
148
- method="post"
149
- style="display: none"
150
- [action]="url.loginAction"
151
- >
152
- @if (!usernameHidden) {
153
- <div [kcClass]="'kcFormGroupClass'">
154
- <label
155
- for="username"
156
- [kcClass]="'kcLabelClass'"
144
+ }
145
+ <div id="kc-form-wrapper">
146
+ @if (realm.password) {
147
+ <form
148
+ id="kc-form-passkey"
149
+ method="post"
150
+ style="display: none"
151
+ [action]="url.loginAction"
152
+ >
153
+ @if (!usernameHidden) {
154
+ <div [kcClass]="'kcFormGroupClass'">
155
+ <label
156
+ for="username"
157
+ [kcClass]="'kcLabelClass'"
158
+ >
159
+ {{ i18n.msgStr('passkey-autofill-select') }}
160
+ </label>
161
+ <input
162
+ tabIndex="1"
163
+ id="username"
164
+ name="username"
165
+ type="text"
166
+ autoFocus
167
+ autoComplete="off"
168
+ [attr.aria-invalid]="messagesPerField.existsError('username')"
169
+ [kcClass]="'kcInputClass'"
170
+ [value]="login.username ?? ''"
171
+ />
172
+ @if (messagesPerField.existsError('username')) {
173
+ <span
174
+ id="input-error-username"
175
+ aria-live="polite"
176
+ [kcClass]="'kcInputErrorMessageClass'"
157
177
  >
158
- {{ i18n.msgStr('passkey-autofill-select') }}
159
- </label>
160
- <input
161
- tabIndex="1"
162
- id="username"
163
- name="username"
164
- type="text"
165
- autoFocus
166
- autoComplete="off"
167
- [attr.aria-invalid]="messagesPerField.existsError('username')"
168
- [kcClass]="'kcInputClass'"
169
- [value]="login.username ?? ''"
170
- />
171
- @if (messagesPerField.existsError('username')) {
172
- <span
173
- id="input-error-username"
174
- aria-live="polite"
175
- [kcClass]="'kcInputErrorMessageClass'"
176
- >
177
- {{ messagesPerField.get('username') }}
178
- </span>
179
- }
180
- </div>
181
- }
182
- </form>
183
- <div
184
- id="kc-form-passkey-button"
185
- style="display: none"
186
- [kcClass]="'kcFormButtonsClass'"
187
- >
188
- <input
189
- id="authButtonId"
190
- type="button"
191
- autoFocus
192
- [value]="i18n.msgStr('passkey-doAuthenticate')"
193
- [kcClass]="['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']"
194
- />
195
- </div>
196
- }
197
- </div></div
198
- ></ng-container>
178
+ {{ messagesPerField.get('username') }}
179
+ </span>
180
+ }
181
+ </div>
182
+ }
183
+ </form>
184
+ <div
185
+ id="kc-form-passkey-button"
186
+ style="display: none"
187
+ [kcClass]="'kcFormButtonsClass'"
188
+ >
189
+ <input
190
+ id="authButtonId"
191
+ type="button"
192
+ autoFocus
193
+ [value]="i18n.msgStr('passkey-doAuthenticate')"
194
+ [kcClass]="['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']"
195
+ />
196
+ </div>
197
+ }
198
+ </div>
199
+ </div>
@@ -5,79 +5,78 @@
5
5
  <ng-template #headerNode>
6
6
  {{ i18n.msgStr('doLogIn') }}
7
7
  </ng-template>
8
- <ng-container content>
9
- <div id="kc-form">
10
- <div id="kc-form-wrapper">
11
- <form
12
- id="kc-form-login"
13
- method="post"
14
- [action]="url?.loginAction"
15
- (onSubmit)="isLoginButtonDisabled.set(true)"
8
+
9
+ <div id="kc-form">
10
+ <div id="kc-form-wrapper">
11
+ <form
12
+ id="kc-form-login"
13
+ method="post"
14
+ [action]="url?.loginAction"
15
+ (onSubmit)="isLoginButtonDisabled.set(true)"
16
+ >
17
+ <div
18
+ class="no-bottom-margin"
19
+ [kcClass]="'kcFormGroupClass'"
16
20
  >
17
- <div
18
- class="no-bottom-margin"
19
- [kcClass]="'kcFormGroupClass'"
21
+ <hr />
22
+ <label
23
+ for="password"
24
+ [kcClass]="'kcLabelClass'"
20
25
  >
21
- <hr />
22
- <label
23
- for="password"
24
- [kcClass]="'kcLabelClass'"
25
- >
26
- {{ i18n.msgStr('password') }}
27
- </label>
28
- <kc-password-wrapper passwordInputId="password">
29
- <input
30
- type="password"
31
- id="password"
32
- name="password"
33
- aria-describedby="input-error-password"
34
- [kcClass]="'kcInputClass'"
35
- [required]="true"
36
- [autofocus]="true"
37
- [tabindex]="1"
38
- />
39
- </kc-password-wrapper>
26
+ {{ i18n.msgStr('password') }}
27
+ </label>
28
+ <kc-password-wrapper passwordInputId="password">
29
+ <input
30
+ type="password"
31
+ id="password"
32
+ name="password"
33
+ aria-describedby="input-error-password"
34
+ [kcClass]="'kcInputClass'"
35
+ [required]="true"
36
+ [autofocus]="true"
37
+ [tabindex]="1"
38
+ />
39
+ </kc-password-wrapper>
40
40
 
41
- @if (messagesPerField.existsError('password')) {
42
- <span
43
- id="input-error-password"
44
- aria-live="polite"
45
- [kcClass]="'kcInputErrorMessageClass'"
46
- [innerHTML]="messagesPerField.getFirstError('password') | kcSanitize: 'html'"
47
- >
41
+ @if (messagesPerField.existsError('password')) {
42
+ <span
43
+ id="input-error-password"
44
+ aria-live="polite"
45
+ [kcClass]="'kcInputErrorMessageClass'"
46
+ [innerHTML]="messagesPerField.getFirstError('password') | kcSanitize: 'html'"
47
+ >
48
+ </span>
49
+ }
50
+ </div>
51
+ <div [kcClass]="['kcFormGroupClass', 'kcFormSettingClass']">
52
+ <div id="kc-form-options"></div>
53
+ <div [kcClass]="'kcFormOptionsWrapperClass'">
54
+ @if (realm.resetPasswordAllowed) {
55
+ <span>
56
+ <a
57
+ tabindex="5"
58
+ [href]="url.loginResetCredentialsUrl"
59
+ >
60
+ {{ i18n.msgStr('doForgotPassword') }}
61
+ </a>
48
62
  </span>
49
63
  }
50
64
  </div>
51
- <div [kcClass]="['kcFormGroupClass', 'kcFormSettingClass']">
52
- <div id="kc-form-options"></div>
53
- <div [kcClass]="'kcFormOptionsWrapperClass'">
54
- @if (realm.resetPasswordAllowed) {
55
- <span>
56
- <a
57
- tabindex="5"
58
- [href]="url.loginResetCredentialsUrl"
59
- >
60
- {{ i18n.msgStr('doForgotPassword') }}
61
- </a>
62
- </span>
63
- }
64
- </div>
65
- </div>
66
- <div
67
- id="kc-form-buttons"
68
- [kcClass]="'kcFormGroupClass'"
69
- >
70
- <input
71
- type="submit"
72
- id="kc-login"
73
- name="login"
74
- [value]="i18n.msgStr('doLogIn')"
75
- [disabled]="isLoginButtonDisabled()"
76
- [kcClass]="['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']"
77
- [tabindex]="4"
78
- />
79
- </div>
80
- </form>
81
- </div>
65
+ </div>
66
+ <div
67
+ id="kc-form-buttons"
68
+ [kcClass]="'kcFormGroupClass'"
69
+ >
70
+ <input
71
+ type="submit"
72
+ id="kc-login"
73
+ name="login"
74
+ [value]="i18n.msgStr('doLogIn')"
75
+ [disabled]="isLoginButtonDisabled()"
76
+ [kcClass]="['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']"
77
+ [tabindex]="4"
78
+ />
79
+ </div>
80
+ </form>
82
81
  </div>
83
- </ng-container>
82
+ </div>