import {Button, Card, Form, Input, Layout} from 'antd'; import {useForm} from 'antd/lib/form/Form'; import {AxiosError} from 'axios'; import React, {FC, memo, useCallback, useState} from 'react'; import {createUseStyles} from 'react-jss'; import authServiceApi from '../../../core/infrastructure/AuthServiceAPI'; type LoginModel = { login: string; password: string; }; const useStyles = createUseStyles({ input: { marginBottom: '16px' }, layout: { height: '100%' }, content: { display: 'flex', flexDirection: 'column', justifyContent: 'center', alignItems: 'center' }, }); const formItemLayout = { labelCol: { xs: {span: 24}, sm: {span: 8} }, wrapperCol: { xs: {span: 24}, sm: {span: 16} } }; const LoginLayout: FC = () => { const classes = useStyles(); const [disabled, setDisabled] = useState(false); const [form] = useForm(); const handleSubmit = useCallback(() => { const {login, password} = form.getFieldsValue(); setDisabled(true); authServiceApi.auth(login, password).catch((error: AxiosError) => { const message = error.response?.data.message; const errors = message ? [message] : ['Some error']; const validationParams = { validating: false, errors }; form.setFields([ {...validationParams, name: 'login'}, {...validationParams, name: 'password'} ]); setDisabled(false); }); }, [form]); return (
); }; export default memo(LoginLayout);