import { Button, ButtonGroup, createStyles, makeStyles, TextField, Theme } from '@material-ui/core'; import * as React from 'react'; import { Controller, useForm } from 'react-hook-form'; import { nameofFactory } from '../common'; export interface LoginFormData { nickname: string; roomName: string; roomPass: string; create: boolean; } const formName = nameofFactory(); const noComplete = { autoComplete: 'off', 'data-lpignore': 'true', }; const useStyles = makeStyles((theme: Theme) => createStyles({ padBottom: { marginBottom: theme.spacing(2), }, }) ); export interface LoginFormProps { existingRoom: boolean; onSubmit: (data: LoginFormData) => Promise; errorMessage?: string; } export function LoginForm(props: LoginFormProps) { const classes = useStyles(); const { control, handleSubmit, errors, setValue, register } = useForm({}); React.useEffect(() => register({ name: formName('create') }), [register]); const doSubmit = handleSubmit(props.onSubmit); return (
e.preventDefault()}> {props.existingRoom ? (
Joining existing game; please choose a nickname.
) : null}
{props.existingRoom ? null : ( <>
)} {props.errorMessage && (
{props.errorMessage}
)}
{props.existingRoom ? null : ( )}
); }