You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
2.5 KiB
TypeScript
82 lines
2.5 KiB
TypeScript
// Copyright (C) 2020 Intel Corporation
|
|
//
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
import React from 'react';
|
|
import Form, { FormComponentProps } from '@ant-design/compatible/lib/form/Form';
|
|
import Button from 'antd/lib/button';
|
|
import { MailOutlined } from '@ant-design/icons';
|
|
import Input from 'antd/lib/input';
|
|
|
|
export interface ResetPasswordData {
|
|
email: string;
|
|
}
|
|
|
|
type ResetPasswordFormProps = {
|
|
fetching: boolean;
|
|
onSubmit(resetPasswordData: ResetPasswordData): void;
|
|
} & FormComponentProps;
|
|
|
|
class ResetPasswordFormComponent extends React.PureComponent<ResetPasswordFormProps> {
|
|
private handleSubmit = (e: React.FormEvent): void => {
|
|
e.preventDefault();
|
|
const { form, onSubmit } = this.props;
|
|
|
|
form.validateFields((error, values): void => {
|
|
if (!error) {
|
|
onSubmit(values);
|
|
}
|
|
});
|
|
};
|
|
|
|
private renderEmailField(): JSX.Element {
|
|
const { form } = this.props;
|
|
|
|
return (
|
|
<Form.Item hasFeedback>
|
|
{form.getFieldDecorator('email', {
|
|
rules: [
|
|
{
|
|
type: 'email',
|
|
message: 'The input is not valid E-mail!',
|
|
},
|
|
{
|
|
required: true,
|
|
message: 'Please specify an email address',
|
|
},
|
|
],
|
|
})(
|
|
<Input
|
|
autoComplete='email'
|
|
prefix={<MailOutlined style={{ color: 'rgba(0, 0, 0, 0.25)' }} />}
|
|
placeholder='Email address'
|
|
/>,
|
|
)}
|
|
</Form.Item>
|
|
);
|
|
}
|
|
|
|
public render(): JSX.Element {
|
|
const { fetching } = this.props;
|
|
return (
|
|
<Form onSubmit={this.handleSubmit} className='cvat-reset-password-form'>
|
|
{this.renderEmailField()}
|
|
|
|
<Form.Item>
|
|
<Button
|
|
type='primary'
|
|
loading={fetching}
|
|
disabled={fetching}
|
|
htmlType='submit'
|
|
className='cvat-reset-password-form-button'
|
|
>
|
|
Reset password
|
|
</Button>
|
|
</Form.Item>
|
|
</Form>
|
|
);
|
|
}
|
|
}
|
|
|
|
export default Form.create<ResetPasswordFormProps>()(ResetPasswordFormComponent);
|