import Avatar from '@material-ui/core/Avatar'; import Button from '@material-ui/core/Button'; import Grid from '@material-ui/core/Grid'; import TextField from '@material-ui/core/TextField'; import Typography from '@material-ui/core/Typography'; import LockOutlinedIcon from '@material-ui/icons/LockOutlined'; import { Formik } from 'formik'; import _isNil from 'ramda/src/isNil'; import React from 'react'; import { useTranslation } from 'react-i18next'; import { useDispatch, useSelector } from 'react-redux'; import { Link } from 'react-router-dom'; import PasswordField from '../../atoms/PasswordField'; import { REGISTER, REMIND_PASSWORD } from '../../constants/routes'; import { LoginOptions, loginRequested } from '../../redux/auth/actionCreators'; import { State } from '../../redux/rootReducer'; import loginSchema from '../../utils/schemas/login'; import useStyles from './styles'; export interface Props { readonly showRemindPassword?: boolean; readonly registerLinkProps?: any; } const LoginForm = ({ showRemindPassword = true, registerLinkProps = {}, }: Props) => { const classes = useStyles(); const { t } = useTranslation(); const { loginLoading } = useSelector(({ auth }: State) => auth); const dispatch = useDispatch(); const login = (options: LoginOptions) => dispatch(loginRequested(options)); return (
{t('auth.login')} { const hasEmailError = Boolean(errors.email && touched.email); const hasPasswordError = Boolean(errors.password && touched.password); return (
{showRemindPassword && ( {t('auth.forgotPassword')} )} {t('auth.dontHaveAccount')} ); }} />
); }; // tslint:disable-next-line:max-file-line-count export default LoginForm;