import * as React from 'react'; import { SubmitHandler, useForm } from 'react-hook-form'; import I18n from 'i18n-js'; import Box from '../common/Box'; import Button from '../common/Button'; import OAuthProviderLink from '../common/OAuthProviderLink'; import { AuthMethod, ITenantSignUpUserForm } from './TenantSignUpP'; import { DangerText } from '../common/CustomTexts'; import { getLabel, getValidationMessage } from '../../helpers/formUtils'; import { EMAIL_REGEX } from '../../constants/regex'; import { IOAuth } from '../../interfaces/IOAuth'; import ActionLink from '../common/ActionLink'; import { BackIcon, EditIcon } from '../common/Icons'; interface Props { currentStep: number; setCurrentStep(step: number): void; authMethod: AuthMethod; setAuthMethod(method: AuthMethod): void; oAuths: Array; userData: ITenantSignUpUserForm; setUserData({}: ITenantSignUpUserForm): void; setGoneBack(goneBack: boolean): void; } const UserSignUpForm = ({ currentStep, setCurrentStep, authMethod, setAuthMethod, oAuths, userData, setUserData, setGoneBack, }: Props) => { const { register, handleSubmit, setError, getValues, formState: { errors } } = useForm({ defaultValues: { fullName: userData.fullName, email: userData.email, password: userData.password, passwordConfirmation: userData.passwordConfirmation, } }); const onSubmit: SubmitHandler = data => { if (data.password !== data.passwordConfirmation) { setError('passwordConfirmation', I18n.t('common.validations.password_mismatch')); return; } setUserData({...data}); setCurrentStep(currentStep + 1); } return (

Create user account

{ currentStep === 1 && authMethod == 'none' && <> { oAuths.length > 0 &&
}
{ oAuths.filter(oAuth => oAuth.isEnabled).map((oAuth, i) => ) }
} { currentStep === 1 && (authMethod == 'email' || authMethod == 'oauth') &&
setAuthMethod('none')} icon={} customClass="backButton" > Use another method
{errors.fullName?.type === 'required' && getValidationMessage('required', 'user', 'full_name')} {errors.fullName?.type === 'minLength' && (getLabel('user', 'full_name') + ' ' + I18n.t('activerecord.errors.messages.too_short', { count: 2 }))} {errors.fullName?.type === 'maxLength' && (getLabel('user', 'full_name') + ' ' + I18n.t('activerecord.errors.messages.too_long', { count: 64 }))}
{errors.email?.type === 'required' && getValidationMessage('required', 'user', 'email')} {errors.email?.type === 'pattern' && I18n.t('common.validations.email')}
{ authMethod == 'email' &&
{ errors.password && I18n.t('common.validations.password', { n: 6 }) }
{ errors.passwordConfirmation && I18n.t('common.validations.password_mismatch') }
}
} { currentStep === 2 &&

{userData.fullName} ({userData.email}) { setGoneBack(true); setCurrentStep(currentStep-1); }} icon={} customClass="editUser" > Edit

}
); } export default UserSignUpForm;