aboutsummaryrefslogtreecommitdiff
path: root/FrontEnd/src/views/login/index.tsx
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2021-07-01 20:38:28 +0800
committerGitHub <noreply@github.com>2021-07-01 20:38:28 +0800
commiteb306e98fb94fdfbced7b7e91ffb3d85ecb28c2c (patch)
tree5afe2d654a51c8712aa30a419f6edfa19fe1a234 /FrontEnd/src/views/login/index.tsx
parent825aac426d87180e62530321320fbb012efbd897 (diff)
parentb456334cedad566bf2c4c66481ec928dc59eda7d (diff)
downloadtimeline-eb306e98fb94fdfbced7b7e91ffb3d85ecb28c2c.tar.gz
timeline-eb306e98fb94fdfbced7b7e91ffb3d85ecb28c2c.tar.bz2
timeline-eb306e98fb94fdfbced7b7e91ffb3d85ecb28c2c.zip
Merge pull request #649 from crupest/drop-bootstrap
Drop bootstrap!!!
Diffstat (limited to 'FrontEnd/src/views/login/index.tsx')
-rw-r--r--FrontEnd/src/views/login/index.tsx141
1 files changed, 71 insertions, 70 deletions
diff --git a/FrontEnd/src/views/login/index.tsx b/FrontEnd/src/views/login/index.tsx
index a39a9972..ed696437 100644
--- a/FrontEnd/src/views/login/index.tsx
+++ b/FrontEnd/src/views/login/index.tsx
@@ -1,12 +1,11 @@
import React from "react";
import { useHistory } from "react-router";
import { useTranslation } from "react-i18next";
-import { Container, Form } from "react-bootstrap";
import { useUser, userService } from "@/services/user";
import AppBar from "../common/AppBar";
-import LoadingButton from "../common/LoadingButton";
+import LoadingButton from "../common/button/LoadingButton";
import "./index.css";
@@ -79,74 +78,76 @@ const LoginPage: React.FC = (_) => {
};
return (
- <Container fluid className="login-container mt-2">
- <h1 className="text-center">{t("welcome")}</h1>
- <Form>
- <Form.Group>
- <Form.Label htmlFor="username">{t("user.username")}</Form.Label>
- <Form.Control
- id="username"
- disabled={process}
- onChange={(e) => {
- setUsername(e.target.value);
- setUsernameDirty(true);
- }}
- value={username}
- isInvalid={usernameDirty && username === ""}
- />
- {usernameDirty && username === "" && (
- <Form.Control.Feedback type="invalid">
- {t("login.emptyUsername")}
- </Form.Control.Feedback>
- )}
- </Form.Group>
- <Form.Group>
- <Form.Label htmlFor="password">{t("user.password")}</Form.Label>
- <Form.Control
- id="password"
- type="password"
- disabled={process}
- onChange={(e) => {
- setPassword(e.target.value);
- setPasswordDirty(true);
- }}
- value={password}
- onKeyDown={onEnterPressInPassword}
- isInvalid={passwordDirty && password === ""}
- />
- {passwordDirty && password === "" && (
- <Form.Control.Feedback type="invalid">
- {t("login.emptyPassword")}
- </Form.Control.Feedback>
- )}
- </Form.Group>
- <Form.Group>
- <Form.Check<"input">
- id="remember-me"
- type="checkbox"
- checked={rememberMe}
- onChange={(e) => {
- setRememberMe(e.currentTarget.checked);
- }}
- label={t("user.rememberMe")}
- />
- </Form.Group>
- {error ? <p className="text-danger">{t(error)}</p> : null}
- <div className="text-end">
- <LoadingButton
- loading={process}
- variant="primary"
- onClick={(e) => {
- submit();
- e.preventDefault();
- }}
- disabled={username === "" || password === "" ? true : undefined}
- >
- {t("user.login")}
- </LoadingButton>
- </div>
- </Form>
- </Container>
+ <div className="login-container container-fluid mt-2">
+ <h1 className="cru-text-center cru-color-primary">{t("welcome")}</h1>
+ <div className="cru-operation-dialog-group">
+ <label className="cru-operation-dialog-label" htmlFor="username">
+ {t("user.username")}
+ </label>
+ <input
+ id="username"
+ type="text"
+ disabled={process}
+ onChange={(e) => {
+ setUsername(e.target.value);
+ setUsernameDirty(true);
+ }}
+ value={username}
+ />
+ {usernameDirty && username === "" && (
+ <div className="cru-operation-dialog-error-text">
+ {t("login.emptyUsername")}
+ </div>
+ )}
+ </div>
+ <div className="cru-operation-dialog-group">
+ <label className="cru-operation-dialog-label" htmlFor="password">
+ {t("user.password")}
+ </label>
+ <input
+ id="password"
+ type="password"
+ disabled={process}
+ onChange={(e) => {
+ setPassword(e.target.value);
+ setPasswordDirty(true);
+ }}
+ value={password}
+ onKeyDown={onEnterPressInPassword}
+ />
+ {passwordDirty && password === "" && (
+ <div className="cru-operation-dialog-error-text">
+ {t("login.emptyPassword")}
+ </div>
+ )}
+ </div>
+ <div className="cru-operation-dialog-group">
+ <input
+ id="remember-me"
+ type="checkbox"
+ checked={rememberMe}
+ onChange={(e) => {
+ setRememberMe(e.currentTarget.checked);
+ }}
+ />
+ <label className="cru-operation-dialog-inline-label">
+ {t("user.rememberMe")}
+ </label>
+ </div>
+ {error ? <p className="text-danger">{t(error)}</p> : null}
+ <div className="cru-text-end">
+ <LoadingButton
+ loading={process}
+ onClick={(e) => {
+ submit();
+ e.preventDefault();
+ }}
+ disabled={username === "" || password === "" ? true : undefined}
+ >
+ {t("user.login")}
+ </LoadingButton>
+ </div>
+ </div>
);
};