Use children prop for Template

This commit is contained in:
garronej 2023-03-21 02:36:13 +01:00
parent ec479c7e91
commit b3acecdcea
23 changed files with 1238 additions and 1336 deletions

View File

@ -15,12 +15,12 @@ export default function Template(props: TemplateProps<KcContext, I18n>) {
showAnotherWayIfPresent = true, showAnotherWayIfPresent = true,
headerNode, headerNode,
showUsernameNode = null, showUsernameNode = null,
formNode,
infoNode = null, infoNode = null,
kcContext, kcContext,
i18n, i18n,
doUseDefaultCss, doUseDefaultCss,
classes classes,
children
} = props; } = props;
const { getClassName } = useGetClassName({ const { getClassName } = useGetClassName({
@ -153,7 +153,7 @@ export default function Template(props: TemplateProps<KcContext, I18n>) {
/> />
</div> </div>
)} )}
{formNode} {children}
{auth !== undefined && auth.showTryAnotherWayLink && showAnotherWayIfPresent && ( {auth !== undefined && auth.showTryAnotherWayLink && showAnotherWayIfPresent && (
<form <form
id="kc-select-try-another-way-form" id="kc-select-try-another-way-form"

View File

@ -8,7 +8,6 @@ export type TemplateProps<KcContext extends KcContext.Common, I18nExtended exten
doUseDefaultCss: boolean; doUseDefaultCss: boolean;
classes?: Partial<Record<TemplateClassKey, string>>; classes?: Partial<Record<TemplateClassKey, string>>;
formNode: ReactNode;
displayInfo?: boolean; displayInfo?: boolean;
displayMessage?: boolean; displayMessage?: boolean;
displayRequiredFields?: boolean; displayRequiredFields?: boolean;
@ -17,6 +16,8 @@ export type TemplateProps<KcContext extends KcContext.Common, I18nExtended exten
headerNode: ReactNode; headerNode: ReactNode;
showUsernameNode?: ReactNode; showUsernameNode?: ReactNode;
infoNode?: ReactNode; infoNode?: ReactNode;
children: ReactNode;
}; };
export type TemplateClassKey = export type TemplateClassKey =

View File

@ -10,11 +10,7 @@ export default function Error(props: PageProps<Extract<KcContext, { pageId: "err
const { msg } = i18n; const { msg } = i18n;
return ( return (
<Template <Template {...{ kcContext, i18n, doUseDefaultCss, classes }} displayMessage={false} headerNode={msg("errorTitle")}>
{...{ kcContext, i18n, doUseDefaultCss, classes }}
displayMessage={false}
headerNode={msg("errorTitle")}
formNode={
<div id="kc-error-message"> <div id="kc-error-message">
<p className="instruction">{message.summary}</p> <p className="instruction">{message.summary}</p>
{client !== undefined && client.baseUrl !== undefined && ( {client !== undefined && client.baseUrl !== undefined && (
@ -25,7 +21,6 @@ export default function Error(props: PageProps<Extract<KcContext, { pageId: "err
</p> </p>
)} )}
</div> </div>
} </Template>
/>
); );
} }

View File

@ -21,10 +21,7 @@ export default function IdpReviewUserProfile(props: PageProps<Extract<KcContext,
const [isFomSubmittable, setIsFomSubmittable] = useState(false); const [isFomSubmittable, setIsFomSubmittable] = useState(false);
return ( return (
<Template <Template {...{ kcContext, i18n, doUseDefaultCss, classes }} headerNode={msg("loginIdpReviewProfileTitle")}>
{...{ kcContext, i18n, doUseDefaultCss, classes }}
headerNode={msg("loginIdpReviewProfileTitle")}
formNode={
<form id="kc-idp-review-profile-form" className={getClassName("kcFormClass")} action={url.loginAction} method="post"> <form id="kc-idp-review-profile-form" className={getClassName("kcFormClass")} action={url.loginAction} method="post">
<UserProfileFormFields <UserProfileFormFields
kcContext={kcContext} kcContext={kcContext}
@ -51,7 +48,6 @@ export default function IdpReviewUserProfile(props: PageProps<Extract<KcContext,
</div> </div>
</div> </div>
</form> </form>
} </Template>
/>
); );
} }

View File

@ -17,7 +17,7 @@ export default function Info(props: PageProps<Extract<KcContext, { pageId: "info
{...{ kcContext, i18n, doUseDefaultCss, classes }} {...{ kcContext, i18n, doUseDefaultCss, classes }}
displayMessage={false} displayMessage={false}
headerNode={messageHeader !== undefined ? <>{messageHeader}</> : <>{message.summary}</>} headerNode={messageHeader !== undefined ? <>{messageHeader}</> : <>{message.summary}</>}
formNode={ >
<div id="kc-info-message"> <div id="kc-info-message">
<p className="instruction"> <p className="instruction">
{message.summary} {message.summary}
@ -42,7 +42,6 @@ export default function Info(props: PageProps<Extract<KcContext, { pageId: "info
) )
)} )}
</div> </div>
} </Template>
/>
); );
} }

View File

@ -40,7 +40,21 @@ export default function Login(props: PageProps<Extract<KcContext, { pageId: "log
displayInfo={social.displayInfo} displayInfo={social.displayInfo}
displayWide={realm.password && social.providers !== undefined} displayWide={realm.password && social.providers !== undefined}
headerNode={msg("doLogIn")} headerNode={msg("doLogIn")}
formNode={ infoNode={
realm.password &&
realm.registrationAllowed &&
!registrationDisabled && (
<div id="kc-registration">
<span>
{msg("noAccount")}
<a tabIndex={6} href={url.registrationUrl}>
{msg("doRegister")}
</a>
</span>
</div>
)
}
>
<div id="kc-form" className={clsx(realm.password && social.providers !== undefined && getClassName("kcContentWrapperClass"))}> <div id="kc-form" className={clsx(realm.password && social.providers !== undefined && getClassName("kcContentWrapperClass"))}>
<div <div
id="kc-form-wrapper" id="kc-form-wrapper"
@ -182,21 +196,6 @@ export default function Login(props: PageProps<Extract<KcContext, { pageId: "log
</div> </div>
)} )}
</div> </div>
} </Template>
infoNode={
realm.password &&
realm.registrationAllowed &&
!registrationDisabled && (
<div id="kc-registration">
<span>
{msg("noAccount")}
<a tabIndex={6} href={url.registrationUrl}>
{msg("doRegister")}
</a>
</span>
</div>
)
}
/>
); );
} }

View File

@ -23,10 +23,7 @@ export default function LoginConfigTotp(props: PageProps<Extract<KcContext, { pa
}; };
return ( return (
<Template <Template {...{ kcContext, i18n, doUseDefaultCss, classes }} headerNode={msg("loginTotpTitle")}>
{...{ kcContext, i18n, doUseDefaultCss, classes }}
headerNode={msg("loginTotpTitle")}
formNode={
<> <>
<ol id="kc-totp-settings"> <ol id="kc-totp-settings">
<li> <li>
@ -178,18 +175,13 @@ export default function LoginConfigTotp(props: PageProps<Extract<KcContext, { pa
) : ( ) : (
<input <input
type="submit" type="submit"
className={clsx( className={clsx(getClassName("kcButtonClass"), getClassName("kcButtonPrimaryClass"), getClassName("kcButtonLargeClass"))}
getClassName("kcButtonClass"),
getClassName("kcButtonPrimaryClass"),
getClassName("kcButtonLargeClass")
)}
id="saveTOTPBtn" id="saveTOTPBtn"
value={msgStr("doSubmit")} value={msgStr("doSubmit")}
/> />
)} )}
</form> </form>
</> </>
} </Template>
/>
); );
} }

View File

@ -17,10 +17,7 @@ export default function LoginIdpLinkConfirm(props: PageProps<Extract<KcContext,
const { msg } = i18n; const { msg } = i18n;
return ( return (
<Template <Template {...{ kcContext, i18n, doUseDefaultCss, classes }} headerNode={msg("confirmLinkIdpTitle")}>
{...{ kcContext, i18n, doUseDefaultCss, classes }}
headerNode={msg("confirmLinkIdpTitle")}
formNode={
<form id="kc-register-form" action={url.loginAction} method="post"> <form id="kc-register-form" action={url.loginAction} method="post">
<div className={getClassName("kcFormGroupClass")}> <div className={getClassName("kcFormGroupClass")}>
<button <button
@ -53,7 +50,6 @@ export default function LoginIdpLinkConfirm(props: PageProps<Extract<KcContext,
</button> </button>
</div> </div>
</form> </form>
} </Template>
/>
); );
} }

View File

@ -10,11 +10,7 @@ export default function LoginIdpLinkEmail(props: PageProps<Extract<KcContext, {
const { msg } = i18n; const { msg } = i18n;
return ( return (
<Template <Template {...{ kcContext, i18n, doUseDefaultCss, classes }} headerNode={msg("emailLinkIdpTitle", idpAlias)}>
{...{ kcContext, i18n, doUseDefaultCss, classes }}
headerNode={msg("emailLinkIdpTitle", idpAlias)}
formNode={
<>
<p id="instruction1" className="instruction"> <p id="instruction1" className="instruction">
{msg("emailLinkIdp1", idpAlias, brokerContext.username, realm.displayName)} {msg("emailLinkIdp1", idpAlias, brokerContext.username, realm.displayName)}
</p> </p>
@ -24,8 +20,6 @@ export default function LoginIdpLinkEmail(props: PageProps<Extract<KcContext, {
<p id="instruction3" className="instruction"> <p id="instruction3" className="instruction">
{msg("emailLinkIdp4")} <a href={url.loginAction}>{msg("doClickHere")}</a> {msg("emailLinkIdp5")} {msg("emailLinkIdp4")} <a href={url.loginAction}>{msg("doClickHere")}</a> {msg("emailLinkIdp5")}
</p> </p>
</> </Template>
}
/>
); );
} }

View File

@ -37,10 +37,7 @@ export default function LoginOtp(props: PageProps<Extract<KcContext, { pageId: "
}, []); }, []);
return ( return (
<Template <Template {...{ kcContext, i18n, doUseDefaultCss, classes }} headerNode={msg("doLogIn")}>
{...{ kcContext, i18n, doUseDefaultCss, classes }}
headerNode={msg("doLogIn")}
formNode={
<form id="kc-otp-login-form" className={getClassName("kcFormClass")} action={url.loginAction} method="post"> <form id="kc-otp-login-form" className={getClassName("kcFormClass")} action={url.loginAction} method="post">
{otpLogin.userOtpCredentials.length > 1 && ( {otpLogin.userOtpCredentials.length > 1 && (
<div className={getClassName("kcFormGroupClass")}> <div className={getClassName("kcFormGroupClass")}>
@ -90,8 +87,7 @@ export default function LoginOtp(props: PageProps<Extract<KcContext, { pageId: "
</div> </div>
</div> </div>
</form> </form>
} </Template>
/>
); );
} }

View File

@ -10,12 +10,7 @@ export default function LoginPageExpired(props: PageProps<Extract<KcContext, { p
const { msg } = i18n; const { msg } = i18n;
return ( return (
<Template <Template {...{ kcContext, i18n, doUseDefaultCss, classes }} displayMessage={false} headerNode={msg("pageExpiredTitle")}>
{...{ kcContext, i18n, doUseDefaultCss, classes }}
displayMessage={false}
headerNode={msg("pageExpiredTitle")}
formNode={
<>
<p id="instruction1" className="instruction"> <p id="instruction1" className="instruction">
{msg("pageExpiredMsg1")} {msg("pageExpiredMsg1")}
<a id="loginRestartLink" href={url.loginRestartFlowUrl}> <a id="loginRestartLink" href={url.loginRestartFlowUrl}>
@ -28,8 +23,6 @@ export default function LoginPageExpired(props: PageProps<Extract<KcContext, { p
</a>{" "} </a>{" "}
. .
</p> </p>
</> </Template>
}
/>
); );
} }

View File

@ -32,10 +32,7 @@ export default function LoginPassword(props: PageProps<Extract<KcContext, { "pag
}); });
return ( return (
<Template <Template {...{ kcContext, i18n, doUseDefaultCss, classes }} headerNode={msg("doLogIn")}>
{...{ kcContext, i18n, doUseDefaultCss, classes }}
headerNode={msg("doLogIn")}
formNode={
<div id="kc-form"> <div id="kc-form">
<div id="kc-form-wrapper"> <div id="kc-form-wrapper">
<form id="kc-form-login" onSubmit={onSubmit} action={url.loginAction} method="post"> <form id="kc-form-login" onSubmit={onSubmit} action={url.loginAction} method="post">
@ -86,7 +83,6 @@ export default function LoginPassword(props: PageProps<Extract<KcContext, { "pag
</form> </form>
</div> </div>
</div> </div>
} </Template>
/>
); );
} }

View File

@ -21,7 +21,8 @@ export default function LoginResetPassword(props: PageProps<Extract<KcContext, {
{...{ kcContext, i18n, doUseDefaultCss, classes }} {...{ kcContext, i18n, doUseDefaultCss, classes }}
displayMessage={false} displayMessage={false}
headerNode={msg("emailForgotTitle")} headerNode={msg("emailForgotTitle")}
formNode={ infoNode={msg("emailInstruction")}
>
<form id="kc-reset-password-form" className={getClassName("kcFormClass")} action={url.loginAction} method="post"> <form id="kc-reset-password-form" className={getClassName("kcFormClass")} action={url.loginAction} method="post">
<div className={getClassName("kcFormGroupClass")}> <div className={getClassName("kcFormGroupClass")}>
<div className={getClassName("kcLabelWrapperClass")}> <div className={getClassName("kcLabelWrapperClass")}>
@ -67,8 +68,6 @@ export default function LoginResetPassword(props: PageProps<Extract<KcContext, {
</div> </div>
</div> </div>
</form> </form>
} </Template>
infoNode={msg("emailInstruction")}
/>
); );
} }

View File

@ -17,10 +17,7 @@ export default function LoginUpdatePassword(props: PageProps<Extract<KcContext,
const { url, messagesPerField, isAppInitiatedAction, username } = kcContext; const { url, messagesPerField, isAppInitiatedAction, username } = kcContext;
return ( return (
<Template <Template {...{ kcContext, i18n, doUseDefaultCss, classes }} headerNode={msg("updatePasswordTitle")}>
{...{ kcContext, i18n, doUseDefaultCss, classes }}
headerNode={msg("updatePasswordTitle")}
formNode={
<form id="kc-passwd-update-form" className={getClassName("kcFormClass")} action={url.loginAction} method="post"> <form id="kc-passwd-update-form" className={getClassName("kcFormClass")} action={url.loginAction} method="post">
<input <input
type="text" type="text"
@ -132,7 +129,6 @@ export default function LoginUpdatePassword(props: PageProps<Extract<KcContext,
</div> </div>
</div> </div>
</form> </form>
} </Template>
/>
); );
} }

View File

@ -17,10 +17,7 @@ export default function LoginUpdateProfile(props: PageProps<Extract<KcContext, {
const { url, user, messagesPerField, isAppInitiatedAction } = kcContext; const { url, user, messagesPerField, isAppInitiatedAction } = kcContext;
return ( return (
<Template <Template {...{ kcContext, i18n, doUseDefaultCss, classes }} headerNode={msg("loginProfileTitle")}>
{...{ kcContext, i18n, doUseDefaultCss, classes }}
headerNode={msg("loginProfileTitle")}
formNode={
<form id="kc-update-profile-form" className={getClassName("kcFormClass")} action={url.loginAction} method="post"> <form id="kc-update-profile-form" className={getClassName("kcFormClass")} action={url.loginAction} method="post">
{user.editUsernameAllowed && ( {user.editUsernameAllowed && (
<div <div
@ -47,10 +44,7 @@ export default function LoginUpdateProfile(props: PageProps<Extract<KcContext, {
)} )}
<div <div
className={clsx( className={clsx(getClassName("kcFormGroupClass"), messagesPerField.printIfExists("email", getClassName("kcFormGroupErrorClass")))}
getClassName("kcFormGroupClass"),
messagesPerField.printIfExists("email", getClassName("kcFormGroupErrorClass"))
)}
> >
<div className={getClassName("kcLabelWrapperClass")}> <div className={getClassName("kcLabelWrapperClass")}>
<label htmlFor="email" className={getClassName("kcLabelClass")}> <label htmlFor="email" className={getClassName("kcLabelClass")}>
@ -151,7 +145,6 @@ export default function LoginUpdateProfile(props: PageProps<Extract<KcContext, {
</div> </div>
</div> </div>
</form> </form>
} </Template>
/>
); );
} }

View File

@ -41,7 +41,21 @@ export default function LoginUsername(props: PageProps<Extract<KcContext, { page
displayInfo={social.displayInfo} displayInfo={social.displayInfo}
displayWide={realm.password && social.providers !== undefined} displayWide={realm.password && social.providers !== undefined}
headerNode={msg("doLogIn")} headerNode={msg("doLogIn")}
formNode={ infoNode={
realm.password &&
realm.registrationAllowed &&
!registrationDisabled && (
<div id="kc-registration">
<span>
{msg("noAccount")}
<a tabIndex={6} href={url.registrationUrl}>
{msg("doRegister")}
</a>
</span>
</div>
)
}
>
<div id="kc-form" className={clsx(realm.password && social.providers !== undefined && getClassName("kcContentWrapperClass"))}> <div id="kc-form" className={clsx(realm.password && social.providers !== undefined && getClassName("kcContentWrapperClass"))}>
<div <div
id="kc-form-wrapper" id="kc-form-wrapper"
@ -148,21 +162,6 @@ export default function LoginUsername(props: PageProps<Extract<KcContext, { page
</div> </div>
)} )}
</div> </div>
} </Template>
infoNode={
realm.password &&
realm.registrationAllowed &&
!registrationDisabled && (
<div id="kc-registration">
<span>
{msg("noAccount")}
<a tabIndex={6} href={url.registrationUrl}>
{msg("doRegister")}
</a>
</span>
</div>
)
}
/>
); );
} }

View File

@ -10,12 +10,7 @@ export default function LoginVerifyEmail(props: PageProps<Extract<KcContext, { p
const { url, user } = kcContext; const { url, user } = kcContext;
return ( return (
<Template <Template {...{ kcContext, i18n, doUseDefaultCss, classes }} displayMessage={false} headerNode={msg("emailVerifyTitle")}>
{...{ kcContext, i18n, doUseDefaultCss, classes }}
displayMessage={false}
headerNode={msg("emailVerifyTitle")}
formNode={
<>
<p className="instruction">{msg("emailVerifyInstruction1", user?.email)}</p> <p className="instruction">{msg("emailVerifyInstruction1", user?.email)}</p>
<p className="instruction"> <p className="instruction">
{msg("emailVerifyInstruction2")} {msg("emailVerifyInstruction2")}
@ -24,8 +19,6 @@ export default function LoginVerifyEmail(props: PageProps<Extract<KcContext, { p
&nbsp; &nbsp;
{msg("emailVerifyInstruction3")} {msg("emailVerifyInstruction3")}
</p> </p>
</> </Template>
}
/>
); );
} }

View File

@ -17,12 +17,7 @@ export default function LogoutConfirm(props: PageProps<Extract<KcContext, { page
const { msg, msgStr } = i18n; const { msg, msgStr } = i18n;
return ( return (
<Template <Template {...{ kcContext, i18n, doUseDefaultCss, classes }} displayMessage={false} headerNode={msg("logoutConfirmTitle")}>
{...{ kcContext, i18n, doUseDefaultCss, classes }}
displayMessage={false}
headerNode={msg("logoutConfirmTitle")}
formNode={
<>
<div id="kc-logout-confirm" className="content-area"> <div id="kc-logout-confirm" className="content-area">
<p className="instruction">{msg("logoutConfirmHeader")}</p> <p className="instruction">{msg("logoutConfirmHeader")}</p>
<form className="form-actions" action={url.logoutConfirmAction} method="POST"> <form className="form-actions" action={url.logoutConfirmAction} method="POST">
@ -56,8 +51,6 @@ export default function LogoutConfirm(props: PageProps<Extract<KcContext, { page
)} )}
</div> </div>
</div> </div>
</> </Template>
}
/>
); );
} }

View File

@ -17,10 +17,7 @@ export default function Register(props: PageProps<Extract<KcContext, { pageId: "
const { msg, msgStr } = i18n; const { msg, msgStr } = i18n;
return ( return (
<Template <Template {...{ kcContext, i18n, doUseDefaultCss, classes }} headerNode={msg("registerTitle")}>
{...{ kcContext, i18n, doUseDefaultCss, classes }}
headerNode={msg("registerTitle")}
formNode={
<form id="kc-register-form" className={getClassName("kcFormClass")} action={url.registrationAction} method="post"> <form id="kc-register-form" className={getClassName("kcFormClass")} action={url.registrationAction} method="post">
<div <div
className={clsx( className={clsx(
@ -67,10 +64,7 @@ export default function Register(props: PageProps<Extract<KcContext, { pageId: "
</div> </div>
<div <div
className={clsx( className={clsx(getClassName("kcFormGroupClass"), messagesPerField.printIfExists("email", getClassName("kcFormGroupErrorClass")))}
getClassName("kcFormGroupClass"),
messagesPerField.printIfExists("email", getClassName("kcFormGroupErrorClass"))
)}
> >
<div className={getClassName("kcLabelWrapperClass")}> <div className={getClassName("kcLabelWrapperClass")}>
<label htmlFor="email" className={getClassName("kcLabelClass")}> <label htmlFor="email" className={getClassName("kcLabelClass")}>
@ -183,7 +177,6 @@ export default function Register(props: PageProps<Extract<KcContext, { pageId: "
</div> </div>
</div> </div>
</form> </form>
} </Template>
/>
); );
} }

View File

@ -26,7 +26,7 @@ export default function RegisterUserProfile(props: PageProps<Extract<KcContext,
displayMessage={messagesPerField.exists("global")} displayMessage={messagesPerField.exists("global")}
displayRequiredFields={true} displayRequiredFields={true}
headerNode={msg("registerTitle")} headerNode={msg("registerTitle")}
formNode={ >
<form id="kc-register-form" className={getClassName("kcFormClass")} action={url.registrationAction} method="post"> <form id="kc-register-form" className={getClassName("kcFormClass")} action={url.registrationAction} method="post">
<UserProfileFormFields <UserProfileFormFields
kcContext={kcContext} kcContext={kcContext}
@ -65,7 +65,6 @@ export default function RegisterUserProfile(props: PageProps<Extract<KcContext,
</div> </div>
</div> </div>
</form> </form>
} </Template>
/>
); );
} }

View File

@ -26,12 +26,7 @@ export default function Terms(props: PageProps<Extract<KcContext, { pageId: "ter
} }
return ( return (
<Template <Template {...{ kcContext, i18n, doUseDefaultCss, classes }} displayMessage={false} headerNode={msg("termsTitle")}>
{...{ kcContext, i18n, doUseDefaultCss, classes }}
displayMessage={false}
headerNode={msg("termsTitle")}
formNode={
<>
<div id="kc-terms-text">{evtTermMarkdown.state && <Markdown>{evtTermMarkdown.state}</Markdown>}</div> <div id="kc-terms-text">{evtTermMarkdown.state && <Markdown>{evtTermMarkdown.state}</Markdown>}</div>
<form className="form-actions" action={url.loginAction} method="POST"> <form className="form-actions" action={url.loginAction} method="POST">
<input <input
@ -56,8 +51,6 @@ export default function Terms(props: PageProps<Extract<KcContext, { pageId: "ter
/> />
</form> </form>
<div className="clearfix" /> <div className="clearfix" />
</> </Template>
}
/>
); );
} }

View File

@ -21,10 +21,7 @@ export default function UpdateUserProfile(props: PageProps<Extract<KcContext, {
const [isFomSubmittable, setIsFomSubmittable] = useState(false); const [isFomSubmittable, setIsFomSubmittable] = useState(false);
return ( return (
<Template <Template {...{ kcContext, i18n, doUseDefaultCss, classes }} headerNode={msg("loginProfileTitle")}>
{...{ kcContext, i18n, doUseDefaultCss, classes }}
headerNode={msg("loginProfileTitle")}
formNode={
<form id="kc-update-profile-form" className={getClassName("kcFormClass")} action={url.loginAction} method="post"> <form id="kc-update-profile-form" className={getClassName("kcFormClass")} action={url.loginAction} method="post">
<UserProfileFormFields <UserProfileFormFields
kcContext={kcContext} kcContext={kcContext}
@ -80,7 +77,6 @@ export default function UpdateUserProfile(props: PageProps<Extract<KcContext, {
</div> </div>
</div> </div>
</form> </form>
} </Template>
/>
); );
} }

View File

@ -94,10 +94,7 @@ export default function WebauthnAuthenticate(props: PageProps<Extract<KcContext,
const [error, setError] = useState(""); const [error, setError] = useState("");
return ( return (
<Template <Template {...{ kcContext, i18n, doUseDefaultCss, classes }} headerNode={msg("webauthn-login-title")}>
{...{ kcContext, i18n, doUseDefaultCss, classes }}
headerNode={msg("webauthn-login-title")}
formNode={
<div id="kc-form-webauthn" className={getClassName("kcFormClass")}> <div id="kc-form-webauthn" className={getClassName("kcFormClass")}>
<form id="webauth" action={url.loginAction} ref={webAuthForm} method="post"> <form id="webauth" action={url.loginAction} ref={webAuthForm} method="post">
<input type="hidden" id="clientDataJSON" name="clientDataJSON" value={clientDataJSON} /> <input type="hidden" id="clientDataJSON" name="clientDataJSON" value={clientDataJSON} />
@ -112,12 +109,7 @@ export default function WebauthnAuthenticate(props: PageProps<Extract<KcContext,
(() => ( (() => (
<form id="authn_select" className={getClassName("kcFormClass")}> <form id="authn_select" className={getClassName("kcFormClass")}>
{authenticators.authenticators.map(authenticator => ( {authenticators.authenticators.map(authenticator => (
<input <input type="hidden" name="authn_use_chk" value={authenticator.credentialId} key={authenticator.credentialId} />
type="hidden"
name="authn_use_chk"
value={authenticator.credentialId}
key={authenticator.credentialId}
/>
))} ))}
</form> </form>
))()} ))()}
@ -198,7 +190,6 @@ export default function WebauthnAuthenticate(props: PageProps<Extract<KcContext,
</div> </div>
</div> </div>
</div> </div>
} </Template>
/>
); );
} }