import React, { useEffect, useMemo } from 'react'; import * as Yup from 'yup'; import { useFormik } from 'formik'; import { useIntl } from 'react-intl'; import ErrorMessage from 'components/ErrorMessage'; import AppToaster from 'components/AppToaster'; import { compose } from 'utils'; import InviteFormConnect from 'connectors/InviteForm.connect'; import { useParams } from 'react-router-dom'; import { Button, InputGroup, Intent, FormGroup, HTMLSelect, } from '@blueprintjs/core'; function Invite({ requestSubmitInvite }) { const intl = useIntl(); let params = useParams('accept/:token'); const { token } = params; const phoneRegExp = /^((\\+[1-9]{1,4}[ \\-]*)|(\\([0-9]{2,3}\\)[ \\-]*)|([0-9]{2,4})[ \\-]*)*?[0-9]{3,4}?[ \\-]*[0-9]{3,4}?$/; const language = useMemo(() => [ { value: null, label: 'Select Country' }, { value: 'Arabic', label: 'Arabic' }, { value: 'English', label: 'English' }, ], []); const ValidationSchema = Yup.object().shape({ first_name: Yup.string().required(), last_name: Yup.string().required(), email: Yup.string().email().required(), phone_number: Yup.string().matches(phoneRegExp).required(), language: Yup.string().required(), password: Yup.string() .min(4, 'Password has to be longer than 4 characters!') .required('Password is required!'), }); const initialValues = useMemo( () => ({ first_name: '', last_name: '', email: '', phone_number: '', language: '', password: '', }), [] ); const { handleSubmit, errors, values, touched, getFieldProps, } = useFormik({ enableReinitialize: true, validationSchema: ValidationSchema, initialValues: { ...initialValues, }, onSubmit: (values, { setSubmitting }) => { requestSubmitInvite(values, token).then((response) => { AppToaster.show({ message: 'success', }); setSubmitting(false); }) .catch((error) => { setSubmitting(false); }); }, }); const requiredSpan = useMemo(() => *, []); return (
} > } > } > } > } > } >
); } export default compose(InviteFormConnect)(Invite);