import { FC, useState, useEffect } from 'react'; import Schema, { ValidateFieldsError } from 'async-validator'; import CancelIcon from '@mui/icons-material/Cancel'; import PersonAddIcon from '@mui/icons-material/PersonAdd'; import { Button, Checkbox, Dialog, DialogActions, DialogContent, DialogTitle } from '@mui/material'; import { BlockFormControlLabel, ValidatedPasswordField, ValidatedTextField } from '../../components'; import { User } from '../../types'; import { updateValue } from '../../utils'; import { validate } from '../../validators'; interface UserFormProps { creating: boolean; validator: Schema; user?: User; setUser: React.Dispatch>; onDoneEditing: () => void; onCancelEditing: () => void; } const UserForm: FC = ({ creating, validator, user, setUser, onDoneEditing, onCancelEditing }) => { const updateFormValue = updateValue(setUser); const [fieldErrors, setFieldErrors] = useState(); const open = !!user; useEffect(() => { if (open) { setFieldErrors(undefined); } }, [open]); const validateAndDone = async () => { if (user) { try { setFieldErrors(undefined); await validate(validator, user); onDoneEditing(); } catch (errors: any) { setFieldErrors(errors); } } }; return ( {user && ( <> {creating ? 'Add' : 'Modify'} User } label="is Admin?" /> )} ); }; export default UserForm;