Web: LoginMobile: refactoring EmailField, change validation

This commit is contained in:
Artem Tarasov 2021-02-18 14:13:55 +03:00
parent 8b99bf92bb
commit 3b7ce182ed
4 changed files with 45 additions and 28 deletions

View File

@ -1,28 +1,40 @@
import React from "react";
import React, { useState } from "react";
import { FieldContainer, TextInput } from "ASC.Web.Components";
import { FieldContainer, EmailInput } from "ASC.Web.Components";
const EmailField = ({
t,
userNameValid,
errorText,
userName,
isLoading,
onChangeLogin,
onKeyPress,
}) => {
const [errors, setErrors] = useState(null);
const onChangeEmail = (result) => {
const { errors, isValid, value } = result;
setErrors(null);
if (!isValid && errors.length > 0 && value) {
setErrors(t("IncorrectEmail"));
}
onChangeLogin && onChangeLogin(result);
};
return (
<FieldContainer
isVertical={true}
labelVisible={false}
hasError={!userNameValid}
errorMessage={errorText ? errorText : t("RequiredFieldMessage")} //TODO: Add wrong login server error
hasError={userNameValid}
errorMessage={errors ? errors : errorText} //TODO: Add wrong login server error
>
<TextInput
<EmailInput
id="login"
name="login"
hasError={!userNameValid}
value={userName}
hasError={userNameValid}
//value={userName}
placeholder={t("RegistrationEmailWatermark")}
size="large"
scale={true}
@ -30,8 +42,7 @@ const EmailField = ({
tabIndex={1}
isDisabled={isLoading}
autoComplete="username"
onChange={onChangeLogin}
onKeyDown={onKeyPress}
onValidateInput={onChangeEmail}
/>
</FieldContainer>
);

View File

@ -68,31 +68,30 @@ const LoginForm = ({
const [password, setPassword] = useState("");
const [passwordValid, setPasswordValid] = useState(true);
const [isLoading, setIsLoading] = useState(false);
const [hasError, setHasError ] = useState(false)
const onSubmitHandler = () => {
errorText && setErrorText("");
let hasError = false;
let isError = false
const clearUserName = userName.trim();
if (!clearUserName) {
hasError = true;
setUserNameValid(!hasError);
isError = true
setErrorText(t('RequiredFieldMessage'))
setHasError(isError)
}
const clearPass = password.trim();
if (!clearPass) {
hasError = true;
setPasswordValid(!hasError);
isError = true
setPasswordValid(false);
setHasError(isError);
}
if (hasError) return false;
if (isError) return false;
setIsLoading(true);
//const hash = createPasswordHash(pass, fakeApi.fakeHashSettings);
// checkPwd(); //?
fakeApi
.login(clearUserName, clearPass)
@ -107,10 +106,12 @@ const LoginForm = ({
.finally(setIsLoading(false));
};
const onChangeLogin = (e) => {
setUserName(e.target.value);
!userNameValid && setUserNameValid(true);
errorText && setErrorText("");
const onChangeLogin = (result) => {
const { value, isValid } = result;
setUserName(value);
setUserNameValid(isValid);
setHasError(false)
//errors.length > 0 ? setErrorText(errors) : setErrorText(null);
};
const onChangePassword = (e) => {
@ -123,12 +124,14 @@ const LoginForm = ({
<StyledLoginForm>
<EmailField
t={t}
userNameValid={userNameValid}
userNameValid={hasError}
errorText={errorText}
userName={userName}
isLoading={isLoading}
errorText={errorText}
onChangeLogin={onChangeLogin}
onKeyPress={onKeyPress}
/>
<PasswordField
t={t}

View File

@ -32,5 +32,7 @@
"TooltipPasswordSpecial": "special characters (!@#$%^&*)",
"LoginRegistrationBtn": "Register",
"RegistrationTitle": "Cloud office applications",
"RegistrationDesc": "Create Portal"
"RegistrationDesc": "Create portal",
"IncorrectEmail": "Incorrect email"
}

View File

@ -32,5 +32,6 @@
"TooltipPasswordSpecial": "Специальные символы (!@#$%^&*)",
"LoginRegistrationBtn": "Регистрация",
"RegistrationTitle": "Облачные офисные приложения",
"RegistrationDesc": "Создать портал"
"RegistrationDesc": "Создать портал",
"IncorrectEmail": "Неверный email"
}