keycloakify 10.0.0-rc.100 → 10.0.0-rc.101

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 (53) hide show
  1. package/account/Template.js +3 -1
  2. package/account/Template.js.map +1 -1
  3. package/account/pages/Totp.js +5 -1
  4. package/account/pages/Totp.js.map +1 -1
  5. package/bin/893.index.js +1 -0
  6. package/bin/shared/downloadKeycloakDefaultTheme.js.map +1 -1
  7. package/login/Template.js +9 -3
  8. package/login/Template.js.map +1 -1
  9. package/login/TemplateProps.d.ts +0 -1
  10. package/login/UserProfileFormFields.js +1 -1
  11. package/login/UserProfileFormFields.js.map +1 -1
  12. package/login/lib/useUserProfileForm.js +3 -1
  13. package/login/lib/useUserProfileForm.js.map +1 -1
  14. package/login/pages/Error.js +1 -1
  15. package/login/pages/Error.js.map +1 -1
  16. package/login/pages/Info.js +14 -2
  17. package/login/pages/Info.js.map +1 -1
  18. package/login/pages/Login.js +6 -2
  19. package/login/pages/Login.js.map +1 -1
  20. package/login/pages/LoginConfigTotp.js +5 -1
  21. package/login/pages/LoginConfigTotp.js.map +1 -1
  22. package/login/pages/LoginOtp.js +3 -1
  23. package/login/pages/LoginOtp.js.map +1 -1
  24. package/login/pages/LoginPassword.js +3 -1
  25. package/login/pages/LoginPassword.js.map +1 -1
  26. package/login/pages/LoginRecoveryAuthnCodeInput.js +3 -1
  27. package/login/pages/LoginRecoveryAuthnCodeInput.js.map +1 -1
  28. package/login/pages/LoginResetPassword.js +3 -1
  29. package/login/pages/LoginResetPassword.js.map +1 -1
  30. package/login/pages/LoginUpdatePassword.js +5 -1
  31. package/login/pages/LoginUpdatePassword.js.map +1 -1
  32. package/login/pages/Register.js +3 -1
  33. package/login/pages/Register.js.map +1 -1
  34. package/package.json +1 -1
  35. package/src/account/Template.tsx +6 -1
  36. package/src/account/pages/Totp.tsx +16 -6
  37. package/src/bin/shared/downloadKeycloakDefaultTheme.ts +1 -0
  38. package/src/login/Template.tsx +21 -41
  39. package/src/login/TemplateProps.ts +0 -1
  40. package/src/login/UserProfileFormFields.tsx +1 -1
  41. package/src/login/lib/useUserProfileForm.tsx +8 -1
  42. package/src/login/pages/Error.tsx +1 -1
  43. package/src/login/pages/Info.tsx +25 -5
  44. package/src/login/pages/Login.tsx +20 -9
  45. package/src/login/pages/LoginConfigTotp.tsx +16 -6
  46. package/src/login/pages/LoginOtp.tsx +8 -3
  47. package/src/login/pages/LoginPassword.tsx +8 -3
  48. package/src/login/pages/LoginRecoveryAuthnCodeInput.tsx +8 -3
  49. package/src/login/pages/LoginResetPassword.tsx +8 -3
  50. package/src/login/pages/LoginUpdatePassword.tsx +16 -6
  51. package/src/login/pages/Register.tsx +8 -3
  52. package/stories/login/pages/Login.stories.tsx +1 -1
  53. package/vite-plugin/index.js +1 -0
@@ -16,13 +16,33 @@ export default function Info(props: PageProps<Extract<KcContext, { pageId: "info
16
16
  doUseDefaultCss={doUseDefaultCss}
17
17
  classes={classes}
18
18
  displayMessage={false}
19
- headerNode={messageHeader !== undefined ? <>{messageHeader}</> : <>{message.summary}</>}
19
+ headerNode={
20
+ <span
21
+ dangerouslySetInnerHTML={{
22
+ __html: messageHeader ?? message.summary
23
+ }}
24
+ />
25
+ }
20
26
  >
21
27
  <div id="kc-info-message">
22
- <p className="instruction">
23
- {message.summary}
24
- {requiredActions && <b>{requiredActions.map(requiredAction => msgStr(`requiredAction.${requiredAction}` as const)).join(",")}</b>}
25
- </p>
28
+ <p
29
+ className="instruction"
30
+ dangerouslySetInnerHTML={{
31
+ __html: (() => {
32
+ let html = message.summary;
33
+
34
+ if (requiredActions) {
35
+ html += "<b>";
36
+
37
+ html += requiredActions.map(requiredAction => msgStr(`requiredAction.${requiredAction}` as const)).join(",");
38
+
39
+ html += "</b>";
40
+ }
41
+
42
+ return html;
43
+ })()
44
+ }}
45
+ />
26
46
  {(() => {
27
47
  if (skipLink) {
28
48
  return null;
@@ -60,9 +60,10 @@ export default function Login(props: PageProps<Extract<KcContext, { pageId: "log
60
60
  href={p.loginUrl}
61
61
  >
62
62
  {p.iconClasses && <i className={clsx(kcClsx("kcCommonLogoIdP"), p.iconClasses)} aria-hidden="true"></i>}
63
- <span className={clsx(kcClsx("kcFormSocialAccountNameClass"), p.iconClasses && "kc-social-icon-text")}>
64
- {p.displayName}
65
- </span>
63
+ <span
64
+ className={clsx(kcClsx("kcFormSocialAccountNameClass"), p.iconClasses && "kc-social-icon-text")}
65
+ dangerouslySetInnerHTML={{ __html: p.displayName }}
66
+ ></span>
66
67
  </a>
67
68
  </li>
68
69
  ))}
@@ -105,9 +106,14 @@ export default function Login(props: PageProps<Extract<KcContext, { pageId: "log
105
106
  aria-invalid={messagesPerField.existsError("username", "password")}
106
107
  />
107
108
  {messagesPerField.existsError("username", "password") && (
108
- <span id="input-error" className={kcClsx("kcInputErrorMessageClass")} aria-live="polite">
109
- {messagesPerField.getFirstError("username", "password")}
110
- </span>
109
+ <span
110
+ id="input-error"
111
+ className={kcClsx("kcInputErrorMessageClass")}
112
+ aria-live="polite"
113
+ dangerouslySetInnerHTML={{
114
+ __html: messagesPerField.getFirstError("username", "password")
115
+ }}
116
+ />
111
117
  )}
112
118
  </div>
113
119
  )}
@@ -128,9 +134,14 @@ export default function Login(props: PageProps<Extract<KcContext, { pageId: "log
128
134
  />
129
135
  </PasswordWrapper>
130
136
  {usernameHidden && messagesPerField.existsError("username", "password") && (
131
- <span id="input-error" className={kcClsx("kcInputErrorMessageClass")} aria-live="polite">
132
- {messagesPerField.getFirstError("username", "password")}
133
- </span>
137
+ <span
138
+ id="input-error"
139
+ className={kcClsx("kcInputErrorMessageClass")}
140
+ aria-live="polite"
141
+ dangerouslySetInnerHTML={{
142
+ __html: messagesPerField.getFirstError("username", "password")
143
+ }}
144
+ />
134
145
  )}
135
146
  </div>
136
147
 
@@ -112,9 +112,14 @@ export default function LoginConfigTotp(props: PageProps<Extract<KcContext, { pa
112
112
  />
113
113
 
114
114
  {messagesPerField.existsError("totp") && (
115
- <span id="input-error-otp-code" className={kcClsx("kcInputErrorMessageClass")} aria-live="polite">
116
- {messagesPerField.get("totp")}
117
- </span>
115
+ <span
116
+ id="input-error-otp-code"
117
+ className={kcClsx("kcInputErrorMessageClass")}
118
+ aria-live="polite"
119
+ dangerouslySetInnerHTML={{
120
+ __html: messagesPerField.get("totp")
121
+ }}
122
+ />
118
123
  )}
119
124
  </div>
120
125
  <input type="hidden" id="totpSecret" name="totpSecret" value={totp.totpSecret} />
@@ -138,9 +143,14 @@ export default function LoginConfigTotp(props: PageProps<Extract<KcContext, { pa
138
143
  aria-invalid={messagesPerField.existsError("userLabel")}
139
144
  />
140
145
  {messagesPerField.existsError("userLabel") && (
141
- <span id="input-error-otp-label" className={kcClsx("kcInputErrorMessageClass")} aria-live="polite">
142
- {messagesPerField.get("userLabel")}
143
- </span>
146
+ <span
147
+ id="input-error-otp-label"
148
+ className={kcClsx("kcInputErrorMessageClass")}
149
+ aria-live="polite"
150
+ dangerouslySetInnerHTML={{
151
+ __html: messagesPerField.get("userLabel")
152
+ }}
153
+ />
144
154
  )}
145
155
  </div>
146
156
  </div>
@@ -70,9 +70,14 @@ export default function LoginOtp(props: PageProps<Extract<KcContext, { pageId: "
70
70
  aria-invalid={messagesPerField.existsError("totp")}
71
71
  />
72
72
  {messagesPerField.existsError("totp") && (
73
- <span id="input-error-otp-code" className={kcClsx("kcInputErrorMessageClass")} aria-live="polite">
74
- {messagesPerField.get("totp")}
75
- </span>
73
+ <span
74
+ id="input-error-otp-code"
75
+ className={kcClsx("kcInputErrorMessageClass")}
76
+ aria-live="polite"
77
+ dangerouslySetInnerHTML={{
78
+ __html: messagesPerField.get("totp")
79
+ }}
80
+ />
76
81
  )}
77
82
  </div>
78
83
  </div>
@@ -60,9 +60,14 @@ export default function LoginPassword(props: PageProps<Extract<KcContext, { page
60
60
  </PasswordWrapper>
61
61
 
62
62
  {messagesPerField.existsError("password") && (
63
- <span id="input-error-password" className={kcClsx("kcInputErrorMessageClass")} aria-live="polite">
64
- {messagesPerField.get("password")}
65
- </span>
63
+ <span
64
+ id="input-error-password"
65
+ className={kcClsx("kcInputErrorMessageClass")}
66
+ aria-live="polite"
67
+ dangerouslySetInnerHTML={{
68
+ __html: messagesPerField.get("password")
69
+ }}
70
+ />
66
71
  )}
67
72
  </div>
68
73
  <div className={kcClsx("kcFormGroupClass", "kcFormSettingClass")}>
@@ -43,9 +43,14 @@ export default function LoginRecoveryAuthnCodeInput(props: PageProps<Extract<KcC
43
43
  autoFocus
44
44
  />
45
45
  {messagesPerField.existsError("recoveryCodeInput") && (
46
- <span id="input-error" className={kcClsx("kcInputErrorMessageClass")} aria-live="polite">
47
- {messagesPerField.get("recoveryCodeInput")}
48
- </span>
46
+ <span
47
+ id="input-error"
48
+ className={kcClsx("kcInputErrorMessageClass")}
49
+ aria-live="polite"
50
+ dangerouslySetInnerHTML={{
51
+ __html: messagesPerField.get("recoveryCodeInput")
52
+ }}
53
+ />
49
54
  )}
50
55
  </div>
51
56
  </div>
@@ -48,9 +48,14 @@ export default function LoginResetPassword(props: PageProps<Extract<KcContext, {
48
48
  aria-invalid={messagesPerField.existsError("username")}
49
49
  />
50
50
  {messagesPerField.existsError("username") && (
51
- <span id="input-error-username" className={kcClsx("kcInputErrorMessageClass")} aria-live="polite">
52
- {messagesPerField.get("username")}
53
- </span>
51
+ <span
52
+ id="input-error-username"
53
+ className={kcClsx("kcInputErrorMessageClass")}
54
+ aria-live="polite"
55
+ dangerouslySetInnerHTML={{
56
+ __html: messagesPerField.get("username")
57
+ }}
58
+ />
54
59
  )}
55
60
  </div>
56
61
  </div>
@@ -46,9 +46,14 @@ export default function LoginUpdatePassword(props: PageProps<Extract<KcContext,
46
46
  </PasswordWrapper>
47
47
 
48
48
  {messagesPerField.existsError("password") && (
49
- <span id="input-error-password" className={kcClsx("kcInputErrorMessageClass")} aria-live="polite">
50
- {messagesPerField.get("password")}
51
- </span>
49
+ <span
50
+ id="input-error-password"
51
+ className={kcClsx("kcInputErrorMessageClass")}
52
+ aria-live="polite"
53
+ dangerouslySetInnerHTML={{
54
+ __html: messagesPerField.get("password")
55
+ }}
56
+ />
52
57
  )}
53
58
  </div>
54
59
  </div>
@@ -74,9 +79,14 @@ export default function LoginUpdatePassword(props: PageProps<Extract<KcContext,
74
79
  </PasswordWrapper>
75
80
 
76
81
  {messagesPerField.existsError("password-confirm") && (
77
- <span id="input-error-password-confirm" className={kcClsx("kcInputErrorMessageClass")} aria-live="polite">
78
- {messagesPerField.get("password-confirm")}
79
- </span>
82
+ <span
83
+ id="input-error-password-confirm"
84
+ className={kcClsx("kcInputErrorMessageClass")}
85
+ aria-live="polite"
86
+ dangerouslySetInnerHTML={{
87
+ __html: messagesPerField.get("password-confirm")
88
+ }}
89
+ />
80
90
  )}
81
91
  </div>
82
92
 
@@ -118,9 +118,14 @@ function TermsAcceptance(props: {
118
118
  </div>
119
119
  {messagesPerField.existsError("termsAccepted") && (
120
120
  <div className={kcClsx("kcLabelWrapperClass")}>
121
- <span id="input-error-terms-accepted" className={kcClsx("kcInputErrorMessageClass")} aria-live="polite">
122
- {messagesPerField.get("termsAccepted")}
123
- </span>
121
+ <span
122
+ id="input-error-terms-accepted"
123
+ className={kcClsx("kcInputErrorMessageClass")}
124
+ aria-live="polite"
125
+ dangerouslySetInnerHTML={{
126
+ __html: messagesPerField.get("termsAccepted")
127
+ }}
128
+ />
124
129
  </div>
125
130
  )}
126
131
  </div>
@@ -212,7 +212,7 @@ export const WithErrorMessage: Story = {
212
212
  <KcPageStory
213
213
  kcContext={{
214
214
  message: {
215
- summary: "The time allotted for the connection has elapsed. The login process will restart from the beginning.",
215
+ summary: "The time allotted for the connection has elapsed.<br/>The login process will restart from the beginning.",
216
216
  type: "error"
217
217
  }
218
218
  }}
@@ -5188,6 +5188,7 @@ async function downloadKeycloakDefaultTheme(params) {
5188
5188
  (0,external_path_.join)("patternfly", "dist", "fonts", "fontawesome-webfont.woff2"),
5189
5189
  (0,external_path_.join)("patternfly", "dist", "fonts", "PatternFlyIcons-webfont.ttf"),
5190
5190
  (0,external_path_.join)("patternfly", "dist", "fonts", "PatternFlyIcons-webfont.woff"),
5191
+ (0,external_path_.join)("patternfly", "dist", "img", "bg-login.jpg"),
5191
5192
  (0,external_path_.join)("jquery", "dist", "jquery.min.js")
5192
5193
  ];
5193
5194
  }