keycloakify 6.3.5 → 6.4.0

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 (78) hide show
  1. package/README.md +6 -0
  2. package/lib/components/Error.d.ts +2 -1
  3. package/lib/components/Error.js +2 -2
  4. package/lib/components/Error.js.map +1 -1
  5. package/lib/components/IdpReviewUserProfile.d.ts +2 -1
  6. package/lib/components/IdpReviewUserProfile.js +2 -2
  7. package/lib/components/IdpReviewUserProfile.js.map +1 -1
  8. package/lib/components/Info.d.ts +2 -1
  9. package/lib/components/Info.js +2 -2
  10. package/lib/components/Info.js.map +1 -1
  11. package/lib/components/KcApp.d.ts +1 -0
  12. package/lib/components/KcApp.js.map +1 -1
  13. package/lib/components/Login.d.ts +2 -1
  14. package/lib/components/Login.js +2 -2
  15. package/lib/components/Login.js.map +1 -1
  16. package/lib/components/LoginConfigTotp.d.ts +2 -1
  17. package/lib/components/LoginConfigTotp.js +2 -2
  18. package/lib/components/LoginConfigTotp.js.map +1 -1
  19. package/lib/components/LoginIdpLinkConfirm.d.ts +2 -1
  20. package/lib/components/LoginIdpLinkConfirm.js +2 -2
  21. package/lib/components/LoginIdpLinkConfirm.js.map +1 -1
  22. package/lib/components/LoginIdpLinkEmail.d.ts +2 -1
  23. package/lib/components/LoginIdpLinkEmail.js +2 -2
  24. package/lib/components/LoginIdpLinkEmail.js.map +1 -1
  25. package/lib/components/LoginOtp.d.ts +2 -1
  26. package/lib/components/LoginOtp.js +2 -2
  27. package/lib/components/LoginOtp.js.map +1 -1
  28. package/lib/components/LoginPageExpired.d.ts +2 -1
  29. package/lib/components/LoginPageExpired.js +2 -2
  30. package/lib/components/LoginPageExpired.js.map +1 -1
  31. package/lib/components/LoginResetPassword.d.ts +2 -1
  32. package/lib/components/LoginResetPassword.js +2 -2
  33. package/lib/components/LoginResetPassword.js.map +1 -1
  34. package/lib/components/LoginUpdatePassword.d.ts +2 -1
  35. package/lib/components/LoginUpdatePassword.js +2 -2
  36. package/lib/components/LoginUpdatePassword.js.map +1 -1
  37. package/lib/components/LoginUpdateProfile.d.ts +2 -1
  38. package/lib/components/LoginUpdateProfile.js +2 -2
  39. package/lib/components/LoginUpdateProfile.js.map +1 -1
  40. package/lib/components/LoginVerifyEmail.d.ts +2 -1
  41. package/lib/components/LoginVerifyEmail.js +2 -2
  42. package/lib/components/LoginVerifyEmail.js.map +1 -1
  43. package/lib/components/LogoutConfirm.d.ts +2 -1
  44. package/lib/components/LogoutConfirm.js +2 -2
  45. package/lib/components/LogoutConfirm.js.map +1 -1
  46. package/lib/components/Register.d.ts +2 -1
  47. package/lib/components/Register.js +2 -2
  48. package/lib/components/Register.js.map +1 -1
  49. package/lib/components/RegisterUserProfile.d.ts +2 -1
  50. package/lib/components/RegisterUserProfile.js +2 -2
  51. package/lib/components/RegisterUserProfile.js.map +1 -1
  52. package/lib/components/Terms.d.ts +2 -1
  53. package/lib/components/Terms.js +2 -2
  54. package/lib/components/Terms.js.map +1 -1
  55. package/lib/components/UpdateUserProfile.d.ts +2 -1
  56. package/lib/components/UpdateUserProfile.js +2 -2
  57. package/lib/components/UpdateUserProfile.js.map +1 -1
  58. package/lib/tsconfig.tsbuildinfo +1 -1
  59. package/package.json +3 -3
  60. package/src/lib/components/Error.tsx +30 -24
  61. package/src/lib/components/IdpReviewUserProfile.tsx +41 -30
  62. package/src/lib/components/Info.tsx +41 -35
  63. package/src/lib/components/KcApp.tsx +64 -58
  64. package/src/lib/components/Login.tsx +174 -166
  65. package/src/lib/components/LoginConfigTotp.tsx +158 -152
  66. package/src/lib/components/LoginIdpLinkConfirm.tsx +42 -36
  67. package/src/lib/components/LoginIdpLinkEmail.tsx +30 -24
  68. package/src/lib/components/LoginOtp.tsx +75 -64
  69. package/src/lib/components/LoginPageExpired.tsx +34 -28
  70. package/src/lib/components/LoginResetPassword.tsx +63 -52
  71. package/src/lib/components/LoginUpdatePassword.tsx +101 -95
  72. package/src/lib/components/LoginUpdateProfile.tsx +103 -91
  73. package/src/lib/components/LoginVerifyEmail.tsx +30 -24
  74. package/src/lib/components/LogoutConfirm.tsx +53 -47
  75. package/src/lib/components/Register.tsx +126 -115
  76. package/src/lib/components/RegisterUserProfile.tsx +59 -48
  77. package/src/lib/components/Terms.tsx +51 -45
  78. package/src/lib/components/UpdateUserProfile.tsx +57 -51
@@ -7,84 +7,95 @@ import { pathJoin } from "../../bin/tools/pathJoin";
7
7
  import { useCssAndCx } from "../tools/useCssAndCx";
8
8
  import type { I18n } from "../i18n";
9
9
 
10
- const LoginOtp = memo(({ kcContext, i18n, ...props }: { kcContext: KcContextBase.LoginOtp; i18n: I18n } & KcProps) => {
11
- const { otpLogin, url } = kcContext;
10
+ const LoginOtp = memo(
11
+ ({
12
+ kcContext,
13
+ i18n,
14
+ doFetchDefaultThemeResources = true,
15
+ ...props
16
+ }: { kcContext: KcContextBase.LoginOtp; i18n: I18n; doFetchDefaultThemeResources?: boolean } & KcProps) => {
17
+ const { otpLogin, url } = kcContext;
12
18
 
13
- const { cx } = useCssAndCx();
19
+ const { cx } = useCssAndCx();
14
20
 
15
- const { msg, msgStr } = i18n;
21
+ const { msg, msgStr } = i18n;
16
22
 
17
- useEffect(() => {
18
- let isCleanedUp = false;
23
+ useEffect(() => {
24
+ let isCleanedUp = false;
19
25
 
20
- headInsert({
21
- "type": "javascript",
22
- "src": pathJoin(kcContext.url.resourcesCommonPath, "node_modules/jquery/dist/jquery.min.js")
23
- }).then(() => {
24
- if (isCleanedUp) return;
26
+ headInsert({
27
+ "type": "javascript",
28
+ "src": pathJoin(kcContext.url.resourcesCommonPath, "node_modules/jquery/dist/jquery.min.js")
29
+ }).then(() => {
30
+ if (isCleanedUp) return;
25
31
 
26
- evaluateInlineScript();
27
- });
32
+ evaluateInlineScript();
33
+ });
28
34
 
29
- return () => {
30
- isCleanedUp = true;
31
- };
32
- }, []);
35
+ return () => {
36
+ isCleanedUp = true;
37
+ };
38
+ }, []);
33
39
 
34
- return (
35
- <Template
36
- {...{ kcContext, i18n, ...props }}
37
- doFetchDefaultThemeResources={true}
38
- headerNode={msg("doLogIn")}
39
- formNode={
40
- <form id="kc-otp-login-form" className={cx(props.kcFormClass)} action={url.loginAction} method="post">
41
- {otpLogin.userOtpCredentials.length > 1 && (
42
- <div className={cx(props.kcFormGroupClass)}>
43
- <div className={cx(props.kcInputWrapperClass)}>
44
- {otpLogin.userOtpCredentials.map(otpCredential => (
45
- <div key={otpCredential.id} className={cx(props.kcSelectOTPListClass)}>
46
- <input type="hidden" value="${otpCredential.id}" />
47
- <div className={cx(props.kcSelectOTPListItemClass)}>
48
- <span className={cx(props.kcAuthenticatorOtpCircleClass)} />
49
- <h2 className={cx(props.kcSelectOTPItemHeadingClass)}>{otpCredential.userLabel}</h2>
40
+ return (
41
+ <Template
42
+ {...{ kcContext, i18n, doFetchDefaultThemeResources, ...props }}
43
+ headerNode={msg("doLogIn")}
44
+ formNode={
45
+ <form id="kc-otp-login-form" className={cx(props.kcFormClass)} action={url.loginAction} method="post">
46
+ {otpLogin.userOtpCredentials.length > 1 && (
47
+ <div className={cx(props.kcFormGroupClass)}>
48
+ <div className={cx(props.kcInputWrapperClass)}>
49
+ {otpLogin.userOtpCredentials.map(otpCredential => (
50
+ <div key={otpCredential.id} className={cx(props.kcSelectOTPListClass)}>
51
+ <input type="hidden" value="${otpCredential.id}" />
52
+ <div className={cx(props.kcSelectOTPListItemClass)}>
53
+ <span className={cx(props.kcAuthenticatorOtpCircleClass)} />
54
+ <h2 className={cx(props.kcSelectOTPItemHeadingClass)}>{otpCredential.userLabel}</h2>
55
+ </div>
50
56
  </div>
51
- </div>
52
- ))}
57
+ ))}
58
+ </div>
59
+ </div>
60
+ )}
61
+ <div className={cx(props.kcFormGroupClass)}>
62
+ <div className={cx(props.kcLabelWrapperClass)}>
63
+ <label htmlFor="otp" className={cx(props.kcLabelClass)}>
64
+ {msg("loginOtpOneTime")}
65
+ </label>
53
66
  </div>
54
- </div>
55
- )}
56
- <div className={cx(props.kcFormGroupClass)}>
57
- <div className={cx(props.kcLabelWrapperClass)}>
58
- <label htmlFor="otp" className={cx(props.kcLabelClass)}>
59
- {msg("loginOtpOneTime")}
60
- </label>
61
- </div>
62
67
 
63
- <div className={cx(props.kcInputWrapperClass)}>
64
- <input id="otp" name="otp" autoComplete="off" type="text" className={cx(props.kcInputClass)} autoFocus />
68
+ <div className={cx(props.kcInputWrapperClass)}>
69
+ <input id="otp" name="otp" autoComplete="off" type="text" className={cx(props.kcInputClass)} autoFocus />
70
+ </div>
65
71
  </div>
66
- </div>
67
72
 
68
- <div className={cx(props.kcFormGroupClass)}>
69
- <div id="kc-form-options" className={cx(props.kcFormOptionsClass)}>
70
- <div className={cx(props.kcFormOptionsWrapperClass)} />
71
- </div>
73
+ <div className={cx(props.kcFormGroupClass)}>
74
+ <div id="kc-form-options" className={cx(props.kcFormOptionsClass)}>
75
+ <div className={cx(props.kcFormOptionsWrapperClass)} />
76
+ </div>
72
77
 
73
- <div id="kc-form-buttons" className={cx(props.kcFormButtonsClass)}>
74
- <input
75
- className={cx(props.kcButtonClass, props.kcButtonPrimaryClass, props.kcButtonBlockClass, props.kcButtonLargeClass)}
76
- name="login"
77
- id="kc-login"
78
- type="submit"
79
- value={msgStr("doLogIn")}
80
- />
78
+ <div id="kc-form-buttons" className={cx(props.kcFormButtonsClass)}>
79
+ <input
80
+ className={cx(
81
+ props.kcButtonClass,
82
+ props.kcButtonPrimaryClass,
83
+ props.kcButtonBlockClass,
84
+ props.kcButtonLargeClass
85
+ )}
86
+ name="login"
87
+ id="kc-login"
88
+ type="submit"
89
+ value={msgStr("doLogIn")}
90
+ />
91
+ </div>
81
92
  </div>
82
- </div>
83
- </form>
84
- }
85
- />
86
- );
87
- });
93
+ </form>
94
+ }
95
+ />
96
+ );
97
+ }
98
+ );
88
99
 
89
100
  declare const $: any;
90
101
 
@@ -4,35 +4,41 @@ import type { KcProps } from "./KcProps";
4
4
  import type { KcContextBase } from "../getKcContext/KcContextBase";
5
5
  import type { I18n } from "../i18n";
6
6
 
7
- const LoginPageExpired = memo(({ kcContext, i18n, ...props }: { kcContext: KcContextBase.LoginPageExpired; i18n: I18n } & KcProps) => {
8
- const { url } = kcContext;
7
+ const LoginPageExpired = memo(
8
+ ({
9
+ kcContext,
10
+ i18n,
11
+ doFetchDefaultThemeResources = true,
12
+ ...props
13
+ }: { kcContext: KcContextBase.LoginPageExpired; i18n: I18n; doFetchDefaultThemeResources?: boolean } & KcProps) => {
14
+ const { url } = kcContext;
9
15
 
10
- const { msg } = i18n;
16
+ const { msg } = i18n;
11
17
 
12
- return (
13
- <Template
14
- {...{ kcContext, i18n, ...props }}
15
- doFetchDefaultThemeResources={true}
16
- displayMessage={false}
17
- headerNode={msg("pageExpiredTitle")}
18
- formNode={
19
- <>
20
- <p id="instruction1" className="instruction">
21
- {msg("pageExpiredMsg1")}
22
- <a id="loginRestartLink" href={url.loginRestartFlowUrl}>
23
- {msg("doClickHere")}
24
- </a>{" "}
25
- .<br />
26
- {msg("pageExpiredMsg2")}{" "}
27
- <a id="loginContinueLink" href={url.loginAction}>
28
- {msg("doClickHere")}
29
- </a>{" "}
30
- .
31
- </p>
32
- </>
33
- }
34
- />
35
- );
36
- });
18
+ return (
19
+ <Template
20
+ {...{ kcContext, i18n, doFetchDefaultThemeResources, ...props }}
21
+ displayMessage={false}
22
+ headerNode={msg("pageExpiredTitle")}
23
+ formNode={
24
+ <>
25
+ <p id="instruction1" className="instruction">
26
+ {msg("pageExpiredMsg1")}
27
+ <a id="loginRestartLink" href={url.loginRestartFlowUrl}>
28
+ {msg("doClickHere")}
29
+ </a>{" "}
30
+ .<br />
31
+ {msg("pageExpiredMsg2")}{" "}
32
+ <a id="loginContinueLink" href={url.loginAction}>
33
+ {msg("doClickHere")}
34
+ </a>{" "}
35
+ .
36
+ </p>
37
+ </>
38
+ }
39
+ />
40
+ );
41
+ }
42
+ );
37
43
 
38
44
  export default LoginPageExpired;
@@ -5,64 +5,75 @@ import type { KcContextBase } from "../getKcContext/KcContextBase";
5
5
  import { useCssAndCx } from "../tools/useCssAndCx";
6
6
  import type { I18n } from "../i18n";
7
7
 
8
- const LoginResetPassword = memo(({ kcContext, i18n, ...props }: { kcContext: KcContextBase.LoginResetPassword; i18n: I18n } & KcProps) => {
9
- const { url, realm, auth } = kcContext;
8
+ const LoginResetPassword = memo(
9
+ ({
10
+ kcContext,
11
+ i18n,
12
+ doFetchDefaultThemeResources = true,
13
+ ...props
14
+ }: { kcContext: KcContextBase.LoginResetPassword; i18n: I18n; doFetchDefaultThemeResources?: boolean } & KcProps) => {
15
+ const { url, realm, auth } = kcContext;
10
16
 
11
- const { msg, msgStr } = i18n;
17
+ const { msg, msgStr } = i18n;
12
18
 
13
- const { cx } = useCssAndCx();
19
+ const { cx } = useCssAndCx();
14
20
 
15
- return (
16
- <Template
17
- {...{ kcContext, i18n, ...props }}
18
- doFetchDefaultThemeResources={true}
19
- displayMessage={false}
20
- headerNode={msg("emailForgotTitle")}
21
- formNode={
22
- <form id="kc-reset-password-form" className={cx(props.kcFormClass)} action={url.loginAction} method="post">
23
- <div className={cx(props.kcFormGroupClass)}>
24
- <div className={cx(props.kcLabelWrapperClass)}>
25
- <label htmlFor="username" className={cx(props.kcLabelClass)}>
26
- {!realm.loginWithEmailAllowed
27
- ? msg("username")
28
- : !realm.registrationEmailAsUsername
29
- ? msg("usernameOrEmail")
30
- : msg("email")}
31
- </label>
32
- </div>
33
- <div className={cx(props.kcInputWrapperClass)}>
34
- <input
35
- type="text"
36
- id="username"
37
- name="username"
38
- className={cx(props.kcInputClass)}
39
- autoFocus
40
- defaultValue={auth !== undefined && auth.showUsername ? auth.attemptedUsername : undefined}
41
- />
42
- </div>
43
- </div>
44
- <div className={cx(props.kcFormGroupClass, props.kcFormSettingClass)}>
45
- <div id="kc-form-options" className={cx(props.kcFormOptionsClass)}>
46
- <div className={cx(props.kcFormOptionsWrapperClass)}>
47
- <span>
48
- <a href={url.loginUrl}>{msg("backToLogin")}</a>
49
- </span>
21
+ return (
22
+ <Template
23
+ {...{ kcContext, i18n, doFetchDefaultThemeResources, ...props }}
24
+ displayMessage={false}
25
+ headerNode={msg("emailForgotTitle")}
26
+ formNode={
27
+ <form id="kc-reset-password-form" className={cx(props.kcFormClass)} action={url.loginAction} method="post">
28
+ <div className={cx(props.kcFormGroupClass)}>
29
+ <div className={cx(props.kcLabelWrapperClass)}>
30
+ <label htmlFor="username" className={cx(props.kcLabelClass)}>
31
+ {!realm.loginWithEmailAllowed
32
+ ? msg("username")
33
+ : !realm.registrationEmailAsUsername
34
+ ? msg("usernameOrEmail")
35
+ : msg("email")}
36
+ </label>
37
+ </div>
38
+ <div className={cx(props.kcInputWrapperClass)}>
39
+ <input
40
+ type="text"
41
+ id="username"
42
+ name="username"
43
+ className={cx(props.kcInputClass)}
44
+ autoFocus
45
+ defaultValue={auth !== undefined && auth.showUsername ? auth.attemptedUsername : undefined}
46
+ />
50
47
  </div>
51
48
  </div>
49
+ <div className={cx(props.kcFormGroupClass, props.kcFormSettingClass)}>
50
+ <div id="kc-form-options" className={cx(props.kcFormOptionsClass)}>
51
+ <div className={cx(props.kcFormOptionsWrapperClass)}>
52
+ <span>
53
+ <a href={url.loginUrl}>{msg("backToLogin")}</a>
54
+ </span>
55
+ </div>
56
+ </div>
52
57
 
53
- <div id="kc-form-buttons" className={cx(props.kcFormButtonsClass)}>
54
- <input
55
- className={cx(props.kcButtonClass, props.kcButtonPrimaryClass, props.kcButtonBlockClass, props.kcButtonLargeClass)}
56
- type="submit"
57
- value={msgStr("doSubmit")}
58
- />
58
+ <div id="kc-form-buttons" className={cx(props.kcFormButtonsClass)}>
59
+ <input
60
+ className={cx(
61
+ props.kcButtonClass,
62
+ props.kcButtonPrimaryClass,
63
+ props.kcButtonBlockClass,
64
+ props.kcButtonLargeClass
65
+ )}
66
+ type="submit"
67
+ value={msgStr("doSubmit")}
68
+ />
69
+ </div>
59
70
  </div>
60
- </div>
61
- </form>
62
- }
63
- infoNode={msg("emailInstruction")}
64
- />
65
- );
66
- });
71
+ </form>
72
+ }
73
+ infoNode={msg("emailInstruction")}
74
+ />
75
+ );
76
+ }
77
+ );
67
78
 
68
79
  export default LoginResetPassword;
@@ -5,115 +5,121 @@ import type { KcContextBase } from "../getKcContext/KcContextBase";
5
5
  import { useCssAndCx } from "../tools/useCssAndCx";
6
6
  import type { I18n } from "../i18n";
7
7
 
8
- const LoginUpdatePassword = memo(({ kcContext, i18n, ...props }: { kcContext: KcContextBase.LoginUpdatePassword; i18n: I18n } & KcProps) => {
9
- const { cx } = useCssAndCx();
8
+ const LoginUpdatePassword = memo(
9
+ ({
10
+ kcContext,
11
+ i18n,
12
+ doFetchDefaultThemeResources = true,
13
+ ...props
14
+ }: { kcContext: KcContextBase.LoginUpdatePassword; i18n: I18n; doFetchDefaultThemeResources?: boolean } & KcProps) => {
15
+ const { cx } = useCssAndCx();
10
16
 
11
- const { msg, msgStr } = i18n;
17
+ const { msg, msgStr } = i18n;
12
18
 
13
- const { url, messagesPerField, isAppInitiatedAction, username } = kcContext;
19
+ const { url, messagesPerField, isAppInitiatedAction, username } = kcContext;
14
20
 
15
- return (
16
- <Template
17
- {...{ kcContext, i18n, ...props }}
18
- doFetchDefaultThemeResources={true}
19
- headerNode={msg("updatePasswordTitle")}
20
- formNode={
21
- <form id="kc-passwd-update-form" className={cx(props.kcFormClass)} action={url.loginAction} method="post">
22
- <input
23
- type="text"
24
- id="username"
25
- name="username"
26
- value={username}
27
- readOnly={true}
28
- autoComplete="username"
29
- style={{ display: "none" }}
30
- />
31
- <input type="password" id="password" name="password" autoComplete="current-password" style={{ display: "none" }} />
21
+ return (
22
+ <Template
23
+ {...{ kcContext, i18n, doFetchDefaultThemeResources, ...props }}
24
+ headerNode={msg("updatePasswordTitle")}
25
+ formNode={
26
+ <form id="kc-passwd-update-form" className={cx(props.kcFormClass)} action={url.loginAction} method="post">
27
+ <input
28
+ type="text"
29
+ id="username"
30
+ name="username"
31
+ value={username}
32
+ readOnly={true}
33
+ autoComplete="username"
34
+ style={{ display: "none" }}
35
+ />
36
+ <input type="password" id="password" name="password" autoComplete="current-password" style={{ display: "none" }} />
32
37
 
33
- <div className={cx(props.kcFormGroupClass, messagesPerField.printIfExists("password", props.kcFormGroupErrorClass))}>
34
- <div className={cx(props.kcLabelWrapperClass)}>
35
- <label htmlFor="password-new" className={cx(props.kcLabelClass)}>
36
- {msg("passwordNew")}
37
- </label>
38
- </div>
39
- <div className={cx(props.kcInputWrapperClass)}>
40
- <input
41
- type="password"
42
- id="password-new"
43
- name="password-new"
44
- autoFocus
45
- autoComplete="new-password"
46
- className={cx(props.kcInputClass)}
47
- />
38
+ <div className={cx(props.kcFormGroupClass, messagesPerField.printIfExists("password", props.kcFormGroupErrorClass))}>
39
+ <div className={cx(props.kcLabelWrapperClass)}>
40
+ <label htmlFor="password-new" className={cx(props.kcLabelClass)}>
41
+ {msg("passwordNew")}
42
+ </label>
43
+ </div>
44
+ <div className={cx(props.kcInputWrapperClass)}>
45
+ <input
46
+ type="password"
47
+ id="password-new"
48
+ name="password-new"
49
+ autoFocus
50
+ autoComplete="new-password"
51
+ className={cx(props.kcInputClass)}
52
+ />
53
+ </div>
48
54
  </div>
49
- </div>
50
55
 
51
- <div className={cx(props.kcFormGroupClass, messagesPerField.printIfExists("password-confirm", props.kcFormGroupErrorClass))}>
52
- <div className={cx(props.kcLabelWrapperClass)}>
53
- <label htmlFor="password-confirm" className={cx(props.kcLabelClass)}>
54
- {msg("passwordConfirm")}
55
- </label>
56
- </div>
57
- <div className={cx(props.kcInputWrapperClass)}>
58
- <input
59
- type="password"
60
- id="password-confirm"
61
- name="password-confirm"
62
- autoComplete="new-password"
63
- className={cx(props.kcInputClass)}
64
- />
56
+ <div className={cx(props.kcFormGroupClass, messagesPerField.printIfExists("password-confirm", props.kcFormGroupErrorClass))}>
57
+ <div className={cx(props.kcLabelWrapperClass)}>
58
+ <label htmlFor="password-confirm" className={cx(props.kcLabelClass)}>
59
+ {msg("passwordConfirm")}
60
+ </label>
61
+ </div>
62
+ <div className={cx(props.kcInputWrapperClass)}>
63
+ <input
64
+ type="password"
65
+ id="password-confirm"
66
+ name="password-confirm"
67
+ autoComplete="new-password"
68
+ className={cx(props.kcInputClass)}
69
+ />
70
+ </div>
65
71
  </div>
66
- </div>
67
72
 
68
- <div className={cx(props.kcFormGroupClass)}>
69
- <div id="kc-form-options" className={cx(props.kcFormOptionsClass)}>
70
- <div className={cx(props.kcFormOptionsWrapperClass)}>
71
- {isAppInitiatedAction && (
72
- <div className="checkbox">
73
- <label>
74
- <input type="checkbox" id="logout-sessions" name="logout-sessions" value="on" checked />
75
- {msgStr("logoutOtherSessions")}
76
- </label>
77
- </div>
78
- )}
73
+ <div className={cx(props.kcFormGroupClass)}>
74
+ <div id="kc-form-options" className={cx(props.kcFormOptionsClass)}>
75
+ <div className={cx(props.kcFormOptionsWrapperClass)}>
76
+ {isAppInitiatedAction && (
77
+ <div className="checkbox">
78
+ <label>
79
+ <input type="checkbox" id="logout-sessions" name="logout-sessions" value="on" checked />
80
+ {msgStr("logoutOtherSessions")}
81
+ </label>
82
+ </div>
83
+ )}
84
+ </div>
79
85
  </div>
80
- </div>
81
86
 
82
- <div id="kc-form-buttons" className={cx(props.kcFormButtonsClass)}>
83
- {isAppInitiatedAction ? (
84
- <>
87
+ <div id="kc-form-buttons" className={cx(props.kcFormButtonsClass)}>
88
+ {isAppInitiatedAction ? (
89
+ <>
90
+ <input
91
+ className={cx(props.kcButtonClass, props.kcButtonPrimaryClass, props.kcButtonLargeClass)}
92
+ type="submit"
93
+ defaultValue={msgStr("doSubmit")}
94
+ />
95
+ <button
96
+ className={cx(props.kcButtonClass, props.kcButtonDefaultClass, props.kcButtonLargeClass)}
97
+ type="submit"
98
+ name="cancel-aia"
99
+ value="true"
100
+ >
101
+ {msg("doCancel")}
102
+ </button>
103
+ </>
104
+ ) : (
85
105
  <input
86
- className={cx(props.kcButtonClass, props.kcButtonPrimaryClass, props.kcButtonLargeClass)}
106
+ className={cx(
107
+ props.kcButtonClass,
108
+ props.kcButtonPrimaryClass,
109
+ props.kcButtonBlockClass,
110
+ props.kcButtonLargeClass
111
+ )}
87
112
  type="submit"
88
113
  defaultValue={msgStr("doSubmit")}
89
114
  />
90
- <button
91
- className={cx(props.kcButtonClass, props.kcButtonDefaultClass, props.kcButtonLargeClass)}
92
- type="submit"
93
- name="cancel-aia"
94
- value="true"
95
- >
96
- {msg("doCancel")}
97
- </button>
98
- </>
99
- ) : (
100
- <input
101
- className={cx(
102
- props.kcButtonClass,
103
- props.kcButtonPrimaryClass,
104
- props.kcButtonBlockClass,
105
- props.kcButtonLargeClass
106
- )}
107
- type="submit"
108
- defaultValue={msgStr("doSubmit")}
109
- />
110
- )}
115
+ )}
116
+ </div>
111
117
  </div>
112
- </div>
113
- </form>
114
- }
115
- />
116
- );
117
- });
118
+ </form>
119
+ }
120
+ />
121
+ );
122
+ }
123
+ );
118
124
 
119
125
  export default LoginUpdatePassword;