diff --git a/services/app/apps/codebattle/assets/js/widgets/pages/registration/Registration.jsx b/services/app/apps/codebattle/assets/js/widgets/pages/registration/Registration.jsx
index fbbe3d37f..f5c434017 100644
--- a/services/app/apps/codebattle/assets/js/widgets/pages/registration/Registration.jsx
+++ b/services/app/apps/codebattle/assets/js/widgets/pages/registration/Registration.jsx
@@ -1,22 +1,22 @@
import React, { useState } from 'react';
+import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import axios from 'axios';
import cn from 'classnames';
import { useFormik } from 'formik';
+import { Button } from 'react-bootstrap';
import * as Yup from 'yup';
import i18n from '../../../i18n';
import schemas from '../../formik';
-const getCsrfToken = () => document
- .querySelector("meta[name='csrf-token']")
- .getAttribute('content'); // validation token
+const getCsrfToken = () => document.querySelector("meta[name='csrf-token']").getAttribute('content'); // validation token
const isShowInvalidMessage = (formik, typeValue) => formik.submitCount !== 0 && !!formik.errors[typeValue];
const getInputClassName = isInvalid => cn('form-control', {
- 'is-invalid': isInvalid,
-});
+ 'is-invalid': isInvalid,
+ });
const Container = ({ children }) => (
@@ -46,7 +46,7 @@ const Form = ({ onSubmit, id, children }) => (
);
const Input = ({
- id, type, title, formik,
+ id, type, title, formik,
}) => {
const isInvalid = isShowInvalidMessage(formik, id);
const inputClassName = getInputClassName(isInvalid);
@@ -66,6 +66,39 @@ const Input = ({
);
};
+const PasswordInput = ({ id, title, formik }) => {
+ const [showPassword, setShowPassword] = useState(false);
+ const isInvalid = isShowInvalidMessage(formik, id);
+ const inputClassName = getInputClassName(isInvalid);
+
+ const togglePasswordVisibility = () => {
+ setShowPassword(prevState => !prevState);
+ };
+
+ return (
+
+
{title}
+
+
+
+
+ {isInvalid &&
{formik.errors[id]}
}
+
+ );
+};
+
const Body = ({ children }) => (
{children}
);
@@ -156,9 +189,15 @@ function SignIn() {
// TODO: Add better errors handler
if (error.response.data.errors) {
const { errors } = error.response.data;
- if (errors.email === 'EMAIL_NOT_FOUND') { formik.errors.email = 'Invalid email'; }
- if (errors.email && errors.email !== 'EMAIL_NOT_FOUND') { formik.setFieldError('email', errors.email); }
- if (errors.base) { formik.setFieldError('base', errors.base); }
+ if (errors.email === 'EMAIL_NOT_FOUND') {
+ formik.errors.email = 'Invalid email';
+ }
+ if (errors.email && errors.email !== 'EMAIL_NOT_FOUND') {
+ formik.setFieldError('email', errors.email);
+ }
+ if (errors.base) {
+ formik.setFieldError('base', errors.base);
+ }
}
});
},
@@ -171,12 +210,7 @@ function SignIn() {
-
+
Forgot your password?
@@ -216,9 +250,15 @@ function SignUp() {
// TODO: Add better errors handler
if (error.response.data.errors) {
const { errors } = error.response.data;
- if (errors.name) { formik.setFieldError('name', errors.name); }
- if (errors.email) { formik.setFieldError('email', errors.email); }
- if (errors.base) { formik.setFieldError('base', errors.base); }
+ if (errors.name) {
+ formik.setFieldError('name', errors.name);
+ }
+ if (errors.email) {
+ formik.setFieldError('email', errors.email);
+ }
+ if (errors.base) {
+ formik.setFieldError('base', errors.base);
+ }
}
});
},
@@ -232,18 +272,8 @@ function SignUp() {
-
-
+
+