._.
This commit is contained in:
parent
3979f02c7e
commit
8cacef14de
@ -9,6 +9,11 @@
|
|||||||
border-radius: 0.5rem !important;
|
border-radius: 0.5rem !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.navbar-nav .nav-item {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
.nav-link.active {
|
.nav-link.active {
|
||||||
color: #ffffff !important;
|
color: #ffffff !important;
|
||||||
background-color: #007bff !important;
|
background-color: #007bff !important;
|
||||||
|
|||||||
@ -39,10 +39,10 @@ const Header = () => {
|
|||||||
<ul className="navbar-nav mx-auto">
|
<ul className="navbar-nav mx-auto">
|
||||||
<li className="nav-item">
|
<li className="nav-item">
|
||||||
<NavLink
|
<NavLink
|
||||||
exact={"false"}
|
className={({ isActive }) =>
|
||||||
className="nav-link"
|
isActive ? "nav-link active" : "nav-link"
|
||||||
|
}
|
||||||
to="/"
|
to="/"
|
||||||
activeClassName="active"
|
|
||||||
>
|
>
|
||||||
Заказы
|
Заказы
|
||||||
</NavLink>
|
</NavLink>
|
||||||
@ -51,70 +51,70 @@ const Header = () => {
|
|||||||
<>
|
<>
|
||||||
<li className="nav-item">
|
<li className="nav-item">
|
||||||
<NavLink
|
<NavLink
|
||||||
exact={"false"}
|
className={({ isActive }) =>
|
||||||
className="nav-link"
|
isActive ? "nav-link active" : "nav-link"
|
||||||
|
}
|
||||||
to="/accessories"
|
to="/accessories"
|
||||||
activeClassName="active"
|
|
||||||
>
|
>
|
||||||
Компоненты
|
Компоненты
|
||||||
</NavLink>
|
</NavLink>
|
||||||
</li>
|
</li>
|
||||||
<li className="nav-item">
|
<li className="nav-item">
|
||||||
<NavLink
|
<NavLink
|
||||||
exact={"false"}
|
className={({ isActive }) =>
|
||||||
className="nav-link"
|
isActive ? "nav-link active" : "nav-link"
|
||||||
|
}
|
||||||
to="/users"
|
to="/users"
|
||||||
activeClassName="active"
|
|
||||||
>
|
>
|
||||||
Пользователи
|
Пользователи
|
||||||
</NavLink>
|
</NavLink>
|
||||||
</li>
|
</li>
|
||||||
<li className="nav-item">
|
<li className="nav-item">
|
||||||
<NavLink
|
<NavLink
|
||||||
exact={"false"}
|
className={({ isActive }) =>
|
||||||
className="nav-link"
|
isActive ? "nav-link active" : "nav-link"
|
||||||
|
}
|
||||||
to="/cities"
|
to="/cities"
|
||||||
activeClassName="active"
|
|
||||||
>
|
>
|
||||||
Города
|
Города
|
||||||
</NavLink>
|
</NavLink>
|
||||||
</li>
|
</li>
|
||||||
<li className="nav-item">
|
<li className="nav-item">
|
||||||
<NavLink
|
<NavLink
|
||||||
exact={"false"}
|
className={({ isActive }) =>
|
||||||
className="nav-link"
|
isActive ? "nav-link active" : "nav-link"
|
||||||
|
}
|
||||||
to="/trucks"
|
to="/trucks"
|
||||||
activeClassName="active"
|
|
||||||
>
|
>
|
||||||
Грузовики
|
Грузовики
|
||||||
</NavLink>
|
</NavLink>
|
||||||
</li>
|
</li>
|
||||||
<li className="nav-item">
|
<li className="nav-item">
|
||||||
<NavLink
|
<NavLink
|
||||||
exact={"false"}
|
className={({ isActive }) =>
|
||||||
className="nav-link"
|
isActive ? "nav-link active" : "nav-link"
|
||||||
|
}
|
||||||
to="/statuses"
|
to="/statuses"
|
||||||
activeClassName="active"
|
|
||||||
>
|
>
|
||||||
Статусы
|
Статусы
|
||||||
</NavLink>
|
</NavLink>
|
||||||
</li>
|
</li>
|
||||||
<li className="nav-item">
|
<li className="nav-item">
|
||||||
<NavLink
|
<NavLink
|
||||||
exact={"false"}
|
className={({ isActive }) =>
|
||||||
className="nav-link"
|
isActive ? "nav-link active" : "nav-link"
|
||||||
|
}
|
||||||
to="/federal_districts"
|
to="/federal_districts"
|
||||||
activeClassName="active"
|
|
||||||
>
|
>
|
||||||
Федеральные округа
|
Федеральные округа
|
||||||
</NavLink>
|
</NavLink>
|
||||||
</li>
|
</li>
|
||||||
<li className="nav-item">
|
<li className="nav-item">
|
||||||
<NavLink
|
<NavLink
|
||||||
exact={"false"}
|
className={({ isActive }) =>
|
||||||
className="nav-link"
|
isActive ? "nav-link active" : "nav-link"
|
||||||
|
}
|
||||||
to="/roles"
|
to="/roles"
|
||||||
activeClassName="active"
|
|
||||||
>
|
>
|
||||||
Роли
|
Роли
|
||||||
</NavLink>
|
</NavLink>
|
||||||
|
|||||||
@ -7,11 +7,13 @@ const Login = () => {
|
|||||||
const [login, setLogin] = useState("");
|
const [login, setLogin] = useState("");
|
||||||
const [password, setPassword] = useState("");
|
const [password, setPassword] = useState("");
|
||||||
const [error, setError] = useState("");
|
const [error, setError] = useState("");
|
||||||
|
const [loading, setLoading] = useState(false);
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
const { login: loginContext } = useAuth();
|
const { login: loginContext } = useAuth();
|
||||||
|
|
||||||
const handleSubmit = async (e) => {
|
const handleSubmit = async (e) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
setLoading(true);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const userData = await loginUser({ login, password });
|
const userData = await loginUser({ login, password });
|
||||||
@ -19,6 +21,8 @@ const Login = () => {
|
|||||||
navigate("/");
|
navigate("/");
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
setError(error.detail ? error.detail : "Ошибка авторизации");
|
setError(error.detail ? error.detail : "Ошибка авторизации");
|
||||||
|
} finally {
|
||||||
|
setLoading(false);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -27,7 +31,7 @@ const Login = () => {
|
|||||||
<h2 className="text-center">Вход</h2>
|
<h2 className="text-center">Вход</h2>
|
||||||
{error && <p className="text-danger text-center">{error}</p>}
|
{error && <p className="text-danger text-center">{error}</p>}
|
||||||
<form onSubmit={handleSubmit} className="border p-4 rounded shadow">
|
<form onSubmit={handleSubmit} className="border p-4 rounded shadow">
|
||||||
<div className="form-group">
|
<div className="form-group mb-3">
|
||||||
<label htmlFor="login">Логин</label>
|
<label htmlFor="login">Логин</label>
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
@ -38,7 +42,7 @@ const Login = () => {
|
|||||||
required
|
required
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className="form-group">
|
<div className="form-group mb-3">
|
||||||
<label htmlFor="password">Пароль</label>
|
<label htmlFor="password">Пароль</label>
|
||||||
<input
|
<input
|
||||||
type="password"
|
type="password"
|
||||||
@ -49,8 +53,23 @@ const Login = () => {
|
|||||||
required
|
required
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<button type="submit" className="btn btn-primary btn-block">
|
<button
|
||||||
Войти
|
type="submit"
|
||||||
|
className="btn btn-primary btn-block"
|
||||||
|
disabled={loading}
|
||||||
|
>
|
||||||
|
{loading ? (
|
||||||
|
<>
|
||||||
|
<span
|
||||||
|
className="spinner-border spinner-border-sm"
|
||||||
|
role="status"
|
||||||
|
aria-hidden="true"
|
||||||
|
></span>
|
||||||
|
Загрузка...
|
||||||
|
</>
|
||||||
|
) : (
|
||||||
|
"Войти"
|
||||||
|
)}
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user