import type { JSX } from "keycloakify/tools/JSX"; import { useState, useLayoutEffect } from "react"; import type { LazyOrNot } from "keycloakify/tools/LazyOrNot"; import { kcSanitize } from "keycloakify/lib/kcSanitize"; import { getKcClsx, type KcClsx } from "keycloakify/login/lib/kcClsx"; import { clsx } from "keycloakify/tools/clsx"; import type { UserProfileFormFieldsProps } from "keycloakify/login/UserProfileFormFieldsProps"; import type { PageProps } from "keycloakify/login/pages/PageProps"; import type { KcContext } from "../KcContext"; import type { I18n } from "../i18n"; type RegisterProps = PageProps, I18n> & { UserProfileFormFields: LazyOrNot<(props: UserProfileFormFieldsProps) => JSX.Element>; doMakeUserConfirmPassword: boolean; }; export default function Register(props: RegisterProps) { const { kcContext, i18n, doUseDefaultCss, Template, classes, UserProfileFormFields, doMakeUserConfirmPassword } = props; const { kcClsx } = getKcClsx({ doUseDefaultCss, classes }); const { messageHeader, url, messagesPerField, recaptchaRequired, recaptchaVisible, recaptchaSiteKey, recaptchaAction, termsAcceptanceRequired } = kcContext; const { msg, msgStr, advancedMsg } = i18n; const [isFormSubmittable, setIsFormSubmittable] = useState(false); const [areTermsAccepted, setAreTermsAccepted] = useState(false); useLayoutEffect(() => { (window as any)["onSubmitRecaptcha"] = () => { // @ts-expect-error document.getElementById("kc-register-form").requestSubmit(); }; return () => { delete (window as any)["onSubmitRecaptcha"]; }; }, []); return ( ); } function TermsAcceptance(props: { i18n: I18n; kcClsx: KcClsx; messagesPerField: Pick; areTermsAccepted: boolean; onAreTermsAcceptedValueChange: (areTermsAccepted: boolean) => void; }) { const { i18n, kcClsx, messagesPerField, areTermsAccepted, onAreTermsAcceptedValueChange } = props; const { msg } = i18n; return ( <>
{msg("termsTitle")}
{msg("termsText")}
onAreTermsAcceptedValueChange(e.target.checked)} aria-invalid={messagesPerField.existsError("termsAccepted")} />
{messagesPerField.existsError("termsAccepted") && (
)}
); }