SignIn.tsx 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import { useIntl } from "react-intl";
  2. import { ProForm, ProFormText } from "@ant-design/pro-components";
  3. import { message } from "antd";
  4. import { useNavigate } from "react-router-dom";
  5. import { setTitle } from "../../../reducers/layout";
  6. import { useAppSelector, useAppDispatch } from "../../../hooks";
  7. import { signIn, TO_PROFILE } from "../../../reducers/current-user";
  8. interface IFormData {
  9. email: string;
  10. password: string;
  11. }
  12. const Widget = () => {
  13. const intl = useIntl();
  14. const dispatch = useAppDispatch();
  15. const navigate = useNavigate();
  16. return (
  17. <ProForm<IFormData>
  18. onFinish={async (values: IFormData) => {
  19. // TODO
  20. console.log(values);
  21. // dispatch(signIn([user, token]));
  22. // navigate(TO_PROFILE);
  23. message.success(intl.formatMessage({ id: "flashes.success" }));
  24. }}
  25. >
  26. <ProForm.Group>
  27. <ProFormText
  28. width="md"
  29. name="email"
  30. required
  31. label={intl.formatMessage({ id: "forms.fields.email.label" })}
  32. rules={[{ required: true, type: "email", max: 255, min: 6 }]}
  33. />
  34. </ProForm.Group>
  35. <ProForm.Group>
  36. <ProFormText
  37. width="md"
  38. name="password"
  39. required
  40. label={intl.formatMessage({ id: "forms.fields.password.label" })}
  41. rules={[{ required: true, max: 32, min: 8 }]}
  42. />
  43. </ProForm.Group>
  44. </ProForm>
  45. );
  46. };
  47. export default Widget;