import React from 'react'; import { translate } from '../../i18n/i18n'; import { string } from 'yup'; import { FormControl, Input, Stack, WarningOutlineIcon, Box, Button, useToast } from 'native-base'; interface PasswordResetFormProps { onSubmit: (newPassword: string) => Promise; } const PasswordResetForm = ({ onSubmit }: PasswordResetFormProps) => { const [formData, setFormData] = React.useState({ newPassword: { value: '', error: null as string | null, }, confirmNewPassword: { value: '', error: null as string | null, }, }); const [submittingForm, setSubmittingForm] = React.useState(false); const validationSchemas = { password: string() .min(4, translate('passwordTooShort')) .max(100, translate('passwordTooLong')) .required('Password is required'), }; const toast = useToast(); return ( {translate('newPassword')} { let error: null | string = null; validationSchemas.password .validate(t) .catch((e) => (error = e.message)) .finally(() => { setFormData({ ...formData, newPassword: { value: t, error } }); }); }} /> }> {formData.newPassword.error} {translate('confirmNewPassword')} { let error: null | string = null; validationSchemas.password .validate(t) .catch((e) => (error = e.message)); if (!error && t !== formData.newPassword.value) { error = translate('passwordsDontMatch'); } setFormData({ ...formData, confirmNewPassword: { value: t, error }, }); }} /> }> {formData.confirmNewPassword.error} ); }; export default PasswordResetForm;