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 Spinner from '../common/Spinner'; import { DangerText } from '../common/CustomTexts'; import { ITenantSignUpTenantForm } from './TenantSignUpP'; import HttpStatus from '../../constants/http_status'; import { getLabel, getValidationMessage } from '../../helpers/formUtils'; interface Props { isSubmitting: boolean; error: string; handleSignUpSubmit(siteName: string, subdomain: string): void; } const TenantSignUpForm = ({ isSubmitting, error, handleSignUpSubmit, }: Props) => { const { register, handleSubmit, formState: { errors } } = useForm(); const onSubmit: SubmitHandler = data => { handleSignUpSubmit(data.siteName, data.subdomain); } return (

{ I18n.t('signup.step2.title') }

{errors.siteName?.type === 'required' && getValidationMessage('required', 'tenant', 'site_name')}
!/\s/.test(value), notAlreadyTaken: async (newSubdomain) => { const res = await fetch(`/is_available?new_subdomain=${newSubdomain}`); return res.status === HttpStatus.OK; }, }, })} placeholder={getLabel('tenant', 'subdomain')} id="tenantSubdomain" className="formControl" />
.astuto.io
{errors.subdomain?.type === 'required' && getValidationMessage('required', 'tenant', 'subdomain')} {errors.subdomain?.type === 'pattern' && I18n.t('signup.step2.validations.subdomain_only_letters_and_numbers')} {errors.subdomain?.type === 'notAlreadyTaken' && I18n.t('signup.step2.validations.subdomain_already_taken')}
{ error !== '' && { error } }
); } export default TenantSignUpForm;