Merge branch 'main' of https://git.itguild.info/apuc/guild_front into fixed-pages
This commit is contained in:
@@ -13,10 +13,10 @@ export const AuthBlock = ({ title, description, img, resetModal }) => {
|
||||
<p>{description}</p>
|
||||
</div>
|
||||
<form className="auth__form">
|
||||
<label htmlFor="login">Ваш email *</label>
|
||||
<input id="login" type="text" name="username" placeholder="Email" />
|
||||
<label htmlFor="login">Ваш e-mail</label>
|
||||
<input id="login" type="text" name="username" placeholder="E-mail" />
|
||||
|
||||
<label htmlFor="password">Ваш пароль*</label>
|
||||
<label htmlFor="password">Ваш пароль</label>
|
||||
<input
|
||||
id="password"
|
||||
type="password"
|
||||
@@ -24,13 +24,7 @@ export const AuthBlock = ({ title, description, img, resetModal }) => {
|
||||
placeholder="Пароль"
|
||||
/>
|
||||
<div className="auth__form__buttons">
|
||||
<button
|
||||
onClick={(e) => {
|
||||
e.preventDefault();
|
||||
}}
|
||||
>
|
||||
Войти
|
||||
</button>
|
||||
<button onClick={(e) => e.preventDefault()}>Войти</button>
|
||||
<span onClick={() => resetModal(true)}>Восстановить пароль</span>
|
||||
</div>
|
||||
</form>
|
||||
|
@@ -5,27 +5,33 @@
|
||||
padding: 50px 0 35px 56px;
|
||||
margin-top: 40px;
|
||||
display: flex;
|
||||
position: relative;
|
||||
|
||||
@media (max-width: 1000px) {
|
||||
flex-direction: column;
|
||||
padding: 25px;
|
||||
margin-top: 0;
|
||||
padding: 0;
|
||||
@media (max-width: 1400px) {
|
||||
margin-top: 100px;
|
||||
}
|
||||
|
||||
@media (max-width: 900px) {
|
||||
flex-direction: column-reverse;
|
||||
padding: 20px;
|
||||
margin-top: 100px;
|
||||
}
|
||||
}
|
||||
|
||||
&__info {
|
||||
margin-right: 115px;
|
||||
|
||||
@media (max-width: 1000px) {
|
||||
@media (max-width: 900px) {
|
||||
order: 3;
|
||||
flex-direction: column;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-weight: 500;
|
||||
font-size: 30px;
|
||||
line-height: 32px;
|
||||
margin-bottom: 20px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
p {
|
||||
@@ -35,7 +41,7 @@
|
||||
font-size: 16px;
|
||||
line-height: 30px;
|
||||
|
||||
@media (max-width: 1000px) {
|
||||
@media (max-width: 900px) {
|
||||
max-width: none;
|
||||
margin: 15px 25px;
|
||||
}
|
||||
@@ -46,7 +52,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1000px) {
|
||||
@media (max-width: 900px) {
|
||||
margin-right: 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@@ -70,7 +76,7 @@
|
||||
font-size: 15px;
|
||||
line-height: 18px;
|
||||
|
||||
@media (max-width: 1000px) {
|
||||
@media (max-width: 900px) {
|
||||
max-width: 550px;
|
||||
}
|
||||
}
|
||||
@@ -109,9 +115,8 @@
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1000px) {
|
||||
@media (max-width: 900px) {
|
||||
order: 2;
|
||||
margin-bottom: 55px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -120,7 +125,7 @@
|
||||
right: 48px;
|
||||
top: -90px;
|
||||
|
||||
@media (max-width: 1000px) {
|
||||
@media (max-width: 900px) {
|
||||
order: 1;
|
||||
position: inherit;
|
||||
right: inherit;
|
||||
|
@@ -53,7 +53,7 @@ export const AuthBox = ({ title }) => {
|
||||
data: formData,
|
||||
}).then((res) => {
|
||||
if (!res.access_token) {
|
||||
setError("Введены некоректные данные для входа");
|
||||
setError("Введены некорректные данные для входа");
|
||||
setModalError(true);
|
||||
dispatch(loading(false));
|
||||
} else {
|
||||
@@ -79,14 +79,16 @@ export const AuthBox = ({ title }) => {
|
||||
<h2 className="auth-box__header">
|
||||
Вход <img src={authHead} alt="authImg" />
|
||||
</h2>
|
||||
<div className="auth-box__title">
|
||||
<span>{title}</span>
|
||||
</div>
|
||||
{title && (
|
||||
<div className="auth-box__title">
|
||||
<span>{title}</span>
|
||||
</div>
|
||||
)}
|
||||
<form ref={ref} className="auth-box__form">
|
||||
<label htmlFor="login">Ваш email *</label>
|
||||
<label htmlFor="login">Ваш e-mail</label>
|
||||
<input id="login" type="text" name="username" placeholder="Логин" />
|
||||
|
||||
<label htmlFor="password">Ваш пароль*</label>
|
||||
<label htmlFor="password">Ваш пароль</label>
|
||||
<div className="inputWrapper">
|
||||
<input
|
||||
id="password"
|
||||
@@ -129,7 +131,7 @@ export const AuthBox = ({ title }) => {
|
||||
<ModalRegistration active={modalReg} setActive={setModalReg} />
|
||||
</div>
|
||||
<p className="auth-box__registration">
|
||||
У вас еще нет аккаунта?
|
||||
У вас ещё нет аккаунта?
|
||||
<span
|
||||
onClick={(e) => {
|
||||
e.preventDefault();
|
||||
|
@@ -15,7 +15,8 @@
|
||||
letter-spacing: normal;
|
||||
line-height: 77.81px;
|
||||
text-align: left;
|
||||
margin-top: 164px;
|
||||
margin-top: 150px;
|
||||
margin-bottom: 30px;
|
||||
|
||||
span {
|
||||
color: #52b709;
|
||||
@@ -88,12 +89,12 @@
|
||||
letter-spacing: normal;
|
||||
line-height: 19.2px;
|
||||
text-align: left;
|
||||
margin-bottom: 25px;
|
||||
margin-bottom: 10px;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.inputWrapper {
|
||||
width: 366px;
|
||||
width: 100%;
|
||||
position: relative;
|
||||
|
||||
.eye {
|
||||
@@ -101,6 +102,10 @@
|
||||
position: absolute;
|
||||
right: 20px;
|
||||
top: 15px;
|
||||
|
||||
@media (min-width: 576px) {
|
||||
left: 330px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -152,7 +157,6 @@
|
||||
letter-spacing: normal;
|
||||
line-height: 32px;
|
||||
text-align: center;
|
||||
border: 2px solid #6aaf5c;
|
||||
margin-right: 1.5rem;
|
||||
transition: 0.3s;
|
||||
|
||||
@@ -203,9 +207,13 @@
|
||||
color: #000000;
|
||||
font-size: 17px;
|
||||
font-weight: 400;
|
||||
margin-top: 45px;
|
||||
margin-top: 35px;
|
||||
line-height: 32px;
|
||||
|
||||
@media (max-width: 700px) {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
span {
|
||||
cursor: pointer;
|
||||
color: #52b709;
|
||||
|
@@ -61,9 +61,7 @@ const Calendar = () => {
|
||||
</div>
|
||||
<div>
|
||||
<Link to="/report">
|
||||
<button className="calendar__btn">
|
||||
Заполнить отчет за день
|
||||
</button>
|
||||
<button className="calendar__btn">Заполнить отчет</button>
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
|
@@ -125,6 +125,10 @@
|
||||
margin: 50px 0 0;
|
||||
text-transform: capitalize;
|
||||
|
||||
@media (max-width: 500px) {
|
||||
font-size: 1.7em;
|
||||
}
|
||||
|
||||
span {
|
||||
font-weight: 100;
|
||||
font-style: normal;
|
||||
|
@@ -13,7 +13,7 @@
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
||||
@media (max-width: 560px) {
|
||||
@media (max-width: 760px) {
|
||||
flex-direction: column;
|
||||
row-gap: 15px;
|
||||
}
|
||||
@@ -21,20 +21,13 @@
|
||||
&-info {
|
||||
display: flex;
|
||||
|
||||
@media (max-width: 685px) {
|
||||
font-size: 7px;
|
||||
}
|
||||
|
||||
@media (max-width: 560px) {
|
||||
@media (max-width: 760px) {
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
@media (max-width: 560px) {
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.calendar__hours {
|
||||
margin: 0 10px;
|
||||
margin: 0 5px;
|
||||
line-height: 0;
|
||||
font-weight: 500;
|
||||
display: flex;
|
||||
@@ -45,18 +38,14 @@
|
||||
&-switcher {
|
||||
display: flex;
|
||||
|
||||
@media (max-width: 590px) {
|
||||
font-size: 8px;
|
||||
}
|
||||
|
||||
@media (max-width: 560px) {
|
||||
@media (max-width: 760px) {
|
||||
justify-content: center;
|
||||
font-size: 12px;
|
||||
}
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 2.5em;
|
||||
font-size: 2.2em;
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
letter-spacing: normal;
|
||||
@@ -165,6 +154,11 @@
|
||||
justify-content: center;
|
||||
font-weight: 500;
|
||||
font-size: 12px;
|
||||
|
||||
@media (max-width: 500px) {
|
||||
font-size: 10px;
|
||||
font-weight: 400;
|
||||
}
|
||||
}
|
||||
|
||||
img {
|
||||
@@ -182,27 +176,25 @@
|
||||
}
|
||||
|
||||
@media (max-width: 1200px) {
|
||||
width: 90px;
|
||||
height: 40px;
|
||||
width: 110px;
|
||||
}
|
||||
|
||||
@media (max-width: 968px) {
|
||||
width: 62px;
|
||||
height: 40px;
|
||||
width: 90px;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
@media (max-width: 680px) {
|
||||
width: 70px;
|
||||
font-size: 10px;
|
||||
|
||||
@media (max-width: 610px) {
|
||||
width: auto;
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 610px) {
|
||||
width: 55px;
|
||||
height: 45px;
|
||||
@media (max-width: 550px) {
|
||||
width: 60px;
|
||||
height: 35px;
|
||||
}
|
||||
|
||||
@media (max-width: 480px) {
|
||||
@media (max-width: 450px) {
|
||||
width: 45px;
|
||||
height: 35px;
|
||||
}
|
||||
@@ -294,12 +286,11 @@
|
||||
|
||||
.select {
|
||||
border-radius: 5px;
|
||||
border: 1px solid #c4c4c4;
|
||||
border: 2px solid #c4c4c4;
|
||||
box-shadow: 0 0 59px rgba(44, 44, 44, 0.05);
|
||||
padding: 5px 8px;
|
||||
cursor: pointer;
|
||||
text-align: center;
|
||||
min-width: 350px;
|
||||
}
|
||||
|
||||
.close {
|
||||
|
@@ -174,7 +174,7 @@ const Candidate = () => {
|
||||
<div className="candidate__works works">
|
||||
<div className="works__body">
|
||||
<div className="works__body__info">
|
||||
<p>Страница портфолио кода разработчика</p>
|
||||
<p>Портфолио разработчика</p>
|
||||
</div>
|
||||
<div className="works__item item-works">
|
||||
<Link to="/" className="item-works__body">
|
||||
|
@@ -12,7 +12,7 @@ export const AuthHeader = () => {
|
||||
<div className="auth-header">
|
||||
<div className="auth-header__logo">
|
||||
<h3>
|
||||
itguild.<span>аутстафинг ИТ специалистов</span>
|
||||
itguild.<span>аутстаффинг IT-специалистов</span>
|
||||
</h3>
|
||||
</div>
|
||||
<div className="auth-header__navigation">
|
||||
|
@@ -3,7 +3,7 @@ import React from "react";
|
||||
import email from "assets/icons/emailLogo.svg";
|
||||
import tg from "assets/icons/tgFooter.svg";
|
||||
import vk from "assets/icons/vkLogo.svg";
|
||||
import logo from "assets/images/logo/LogoITguild.svg";
|
||||
import logo from "assets/images/logo/ITguild.svg";
|
||||
|
||||
import "./footer.scss";
|
||||
|
||||
@@ -27,21 +27,19 @@ export const Footer = () => {
|
||||
<div className="footer__bottom">
|
||||
<div className="footer__social">
|
||||
<div className="footer__social__icons">
|
||||
<a>
|
||||
<img src={vk} alt="vk" />
|
||||
<a href="https://www.vk.com/">
|
||||
<img src={vk} alt="vk" width={24} />
|
||||
</a>
|
||||
<a>
|
||||
<img src={tg} alt="tg" />
|
||||
<a href="https://www.telegram.org/">
|
||||
<img src={tg} alt="tg" width={24} />
|
||||
</a>
|
||||
</div>
|
||||
<p>Войти в команду</p>
|
||||
</div>
|
||||
<div className="footer__info">
|
||||
<div className="footer__mail">
|
||||
<a>
|
||||
<img src={email} alt="email" />
|
||||
</a>
|
||||
<p>office@itguild.info</p>
|
||||
<img src={email} alt="email" />
|
||||
<a href="mailto:office@itguild.info">office@itguild.info</a>
|
||||
</div>
|
||||
<a className="footer__policy">Политика конфиденциальности</a>
|
||||
</div>
|
||||
|
@@ -79,11 +79,11 @@ footer {
|
||||
&__mail {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
column-gap: 13px;
|
||||
column-gap: 5px;
|
||||
|
||||
p {
|
||||
a {
|
||||
font-weight: 400;
|
||||
font-size: 12px;
|
||||
font-size: 14px;
|
||||
line-height: 16px;
|
||||
color: #5b6871;
|
||||
}
|
||||
@@ -91,7 +91,7 @@ footer {
|
||||
|
||||
&__policy {
|
||||
font-weight: 400;
|
||||
font-size: 10px;
|
||||
font-size: 13px;
|
||||
line-height: 16px;
|
||||
color: #5b6871;
|
||||
margin-left: 150px;
|
||||
@@ -108,6 +108,7 @@ footer {
|
||||
|
||||
&__copyright {
|
||||
margin-left: auto;
|
||||
font-size: 13px;
|
||||
|
||||
@media (max-width: 910px) {
|
||||
min-width: 142px;
|
||||
|
@@ -98,7 +98,7 @@ const Description = ({ onLoadMore }) => {
|
||||
<div className="description__footer">
|
||||
<div className="description__footer-btn">
|
||||
{candidatesListArr && (
|
||||
<button onClick={() => onLoadMore(2)}>Загрузить еще</button>
|
||||
<button onClick={() => onLoadMore(2)}>Загрузить ещё</button>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
|
@@ -85,13 +85,13 @@ const Form = () => {
|
||||
<div className="row">
|
||||
<div className="col-sm-12">
|
||||
<form className="form" id="test">
|
||||
<label htmlFor="email">Емейл:</label>
|
||||
<label htmlFor="email">E-mail:</label>
|
||||
<input
|
||||
onChange={handleChange}
|
||||
id="email"
|
||||
name="Email"
|
||||
type="email"
|
||||
placeholder="Емейл"
|
||||
placeholder="E-mail"
|
||||
value={data.email}
|
||||
/>
|
||||
|
||||
|
@@ -50,7 +50,7 @@ export const FreeDevelopers = () => {
|
||||
|
||||
<div className="free-dev__body">
|
||||
<div className="free-dev__body-title">
|
||||
<p>Описание опыта работы</p>
|
||||
<p>Опыт работы</p>
|
||||
</div>
|
||||
|
||||
<div className="free-dev__body-text">
|
||||
@@ -86,7 +86,7 @@ export const FreeDevelopers = () => {
|
||||
</div>
|
||||
|
||||
<div className="login">
|
||||
<h3>Для просмотра полного резюме разработчика авторизуйтесь</h3>
|
||||
<h3>Для просмотра полного резюме разработчика, авторизуйтесь</h3>
|
||||
<BaseButton styles={"dev-code"}>
|
||||
<Link to={"/auth"}>Войти</Link>
|
||||
</BaseButton>
|
||||
|
@@ -1,9 +1,6 @@
|
||||
import React, { useState } from "react";
|
||||
import { useSelector } from "react-redux";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
|
||||
import { getRole } from "@redux/roleSlice";
|
||||
|
||||
import { useLogout } from "@hooks/useLogout";
|
||||
|
||||
import { Loader } from "@components/Common/Loader/Loader";
|
||||
@@ -12,8 +9,6 @@ import "./logoutButton.scss";
|
||||
|
||||
export const LogoutButton = () => {
|
||||
const [isLoggingOut, setIsLoggingOut] = useState(false);
|
||||
|
||||
const userRole = useSelector(getRole);
|
||||
const navigate = useNavigate();
|
||||
const { logout } = useLogout();
|
||||
|
||||
@@ -24,7 +19,7 @@ export const LogoutButton = () => {
|
||||
setIsLoggingOut(true);
|
||||
logout();
|
||||
setIsLoggingOut(false);
|
||||
navigate(userRole === "ROLE_DEV" ? "/authdev" : "/auth");
|
||||
navigate("/auth");
|
||||
}}
|
||||
>
|
||||
{isLoggingOut ? <Loader /> : "Выйти"}
|
||||
|
@@ -17,7 +17,7 @@ export const ModalErrorLogin = ({ active, setActive, title }) => {
|
||||
setActive(false);
|
||||
}}
|
||||
>
|
||||
Попробовать еще раз
|
||||
Попробовать ещё раз
|
||||
</BaseButton>
|
||||
<span onClick={() => setActive(false)} className="exit"></span>
|
||||
</ModalLayout>
|
||||
|
@@ -104,11 +104,11 @@ export const ModalRegistration = ({ active, setActive }) => {
|
||||
};
|
||||
return (
|
||||
<ModalLayout active={active} setActive={closeModal} styles={"registration"}>
|
||||
<div className="registration-body__left">
|
||||
<div className="registration-body__main">
|
||||
<h2>
|
||||
Подключайтесь к <p>itguild.</p>
|
||||
Подключайтесь к <p>ITguild</p>
|
||||
</h2>
|
||||
<p className="registration-body__left-desc">
|
||||
<p className="registration-body__main-desc">
|
||||
Зарегистрируйтесь и начните работу уже сегодня
|
||||
</p>
|
||||
|
||||
@@ -132,7 +132,7 @@ export const ModalRegistration = ({ active, setActive }) => {
|
||||
value={inputsValue.userName}
|
||||
placeholder="Имя"
|
||||
/>
|
||||
{inputsError.name && <span>Минимум 2 символов</span>}
|
||||
{inputsError.name && <span>Минимум 2 символа</span>}
|
||||
</div>
|
||||
<div className="inputContainer">
|
||||
<h5>E-mail</h5>
|
||||
@@ -153,13 +153,11 @@ export const ModalRegistration = ({ active, setActive }) => {
|
||||
value={inputsValue.email}
|
||||
placeholder="Почта"
|
||||
/>
|
||||
{inputsError.email && <span>Введите коректный email</span>}
|
||||
{inputsError.email && <span>Введите корректный e-mail</span>}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="input-body__box">
|
||||
{/*<h5>Название компании</h5>*/}
|
||||
{/*<input></input>*/}
|
||||
<div className="inputContainer">
|
||||
<h5>Пароль</h5>
|
||||
<input
|
||||
@@ -181,8 +179,30 @@ export const ModalRegistration = ({ active, setActive }) => {
|
||||
/>
|
||||
{inputsError.password && <span>Минимум 6 символов</span>}
|
||||
</div>
|
||||
<div className="inputContainer">
|
||||
<h5>Повторите пароль</h5>
|
||||
<input
|
||||
className={inputsError.password ? "error" : ""}
|
||||
type="password"
|
||||
onChange={(e) => {
|
||||
setInputsError({
|
||||
name: false,
|
||||
email: false,
|
||||
password: false,
|
||||
});
|
||||
setInputsValue((prevValue) => ({
|
||||
...prevValue,
|
||||
password: e.target.value,
|
||||
}));
|
||||
}}
|
||||
value={inputsValue.password}
|
||||
placeholder="Пароль"
|
||||
/>
|
||||
{inputsError.password && <span>Минимум 6 символов</span>}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="button-box">
|
||||
{loader ? (
|
||||
<Loader style={"green"} />
|
||||
@@ -202,9 +222,9 @@ export const ModalRegistration = ({ active, setActive }) => {
|
||||
{/*</h5>*/}
|
||||
</div>
|
||||
</div>
|
||||
<div className="registration-body__right">
|
||||
<div className="registration-body__about">
|
||||
<h4>Отказ от специалиста в любой момент</h4>
|
||||
<div className="registration-body__right-text">
|
||||
<div className="registration-body__about-text">
|
||||
<img src={anyMoment}></img>
|
||||
<p>
|
||||
Поменяйте, откажитесь или возьмите еще специалиста в любой момент
|
||||
@@ -212,7 +232,7 @@ export const ModalRegistration = ({ active, setActive }) => {
|
||||
</p>
|
||||
</div>
|
||||
<h4>100% постоплата</h4>
|
||||
<div className="registration-body__right-text">
|
||||
<div className="registration-body__about-text">
|
||||
<img src={doc}></img>
|
||||
<p>
|
||||
Договор не подразумевает какую‑либо оплату до того, как вы
|
||||
@@ -220,7 +240,7 @@ export const ModalRegistration = ({ active, setActive }) => {
|
||||
</p>
|
||||
</div>
|
||||
<h4>Есть вопросы?</h4>
|
||||
<div className="registration-body__right-text">
|
||||
<div className="registration-body__about-text">
|
||||
<img src={telegramLogo}></img>
|
||||
<p>Напишите нам в Телеграм. Мы с удовольствием ответим!</p>
|
||||
</div>
|
||||
|
@@ -6,12 +6,10 @@
|
||||
justify-content: space-between;
|
||||
border: 1px solid #dde2e4;
|
||||
border-radius: 8px;
|
||||
width: 1088px;
|
||||
height: 515px;
|
||||
|
||||
&-body {
|
||||
&__left {
|
||||
padding: 33px 0 30px 77px;
|
||||
&__main {
|
||||
padding-left: 30px;
|
||||
|
||||
h2 {
|
||||
font-weight: 500;
|
||||
@@ -51,6 +49,7 @@
|
||||
font-weight: 400;
|
||||
font-size: 15px;
|
||||
line-height: 18px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
input {
|
||||
@@ -112,9 +111,9 @@
|
||||
}
|
||||
}
|
||||
|
||||
&__right {
|
||||
&__about {
|
||||
border-left: 1px solid #f1f1f1;
|
||||
padding: 30px 32px 46px 25px;
|
||||
padding: 20px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
|
@@ -10,7 +10,7 @@ export const ModalReset = ({ setModalReset }) => {
|
||||
<h3 className="modalReset__title">Восстановление доступа</h3>
|
||||
<div className="modalReset__input">
|
||||
<span>Укажите e-mail, для которого хотите восстановить пароль.</span>
|
||||
<input placeholder="email" />
|
||||
<input placeholder="e-mail" />
|
||||
</div>
|
||||
<button className="modalReset__submit">Восстановить</button>
|
||||
<img
|
||||
|
@@ -50,7 +50,7 @@ export const ModalResetPassword = ({ active, setActive }) => {
|
||||
setInputsError((prevValue) => ({ ...prevValue, email: true }));
|
||||
return showNotification({
|
||||
show: true,
|
||||
text: "Введите коректный email",
|
||||
text: "Введите корректный e-mail",
|
||||
type: "error",
|
||||
});
|
||||
}
|
||||
@@ -101,7 +101,7 @@ export const ModalResetPassword = ({ active, setActive }) => {
|
||||
if (data.code === 0) {
|
||||
showNotification({
|
||||
show: true,
|
||||
text: "Введите коректные данные",
|
||||
text: "Введите корректные данные",
|
||||
type: "error",
|
||||
});
|
||||
} else {
|
||||
@@ -127,7 +127,7 @@ export const ModalResetPassword = ({ active, setActive }) => {
|
||||
<h3 className="resetPassword__title">Восстановление пароля</h3>
|
||||
{!step ? (
|
||||
<div className="resetPassword__email">
|
||||
<h5>Введите email:</h5>
|
||||
<h5>Введите ваш e-mail:</h5>
|
||||
<input
|
||||
type="email"
|
||||
onChange={(e) => {
|
||||
@@ -141,13 +141,10 @@ export const ModalResetPassword = ({ active, setActive }) => {
|
||||
token: false,
|
||||
});
|
||||
}}
|
||||
placeholder="Email"
|
||||
placeholder="E-mail"
|
||||
value={inputsValue.email}
|
||||
className={inputsError.email ? "error" : ""}
|
||||
/>
|
||||
{inputsError.email && (
|
||||
<span className="warningText">Введите коректный email</span>
|
||||
)}
|
||||
{loader ? (
|
||||
<Loader style={"green"} />
|
||||
) : (
|
||||
|
@@ -1,5 +1,5 @@
|
||||
.resetPassword {
|
||||
width: 370px;
|
||||
width: 280px;
|
||||
position: relative;
|
||||
|
||||
&__close {
|
||||
@@ -13,7 +13,7 @@
|
||||
&__title {
|
||||
font-size: 20px;
|
||||
text-align: center;
|
||||
margin-bottom: 15px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
&__email {
|
||||
display: flex;
|
||||
@@ -24,6 +24,7 @@
|
||||
h5 {
|
||||
font-size: 16px;
|
||||
margin-bottom: 10px;
|
||||
align-self: flex-start;
|
||||
}
|
||||
|
||||
input {
|
||||
@@ -54,11 +55,9 @@
|
||||
color: #ffffff;
|
||||
font-weight: 500;
|
||||
font-size: 15px;
|
||||
letter-spacing: normal;
|
||||
line-height: 32px;
|
||||
text-align: center;
|
||||
border: 2px solid #6aaf5c;
|
||||
transition: 0.3s;
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
.error {
|
||||
|
@@ -409,7 +409,7 @@ export const TrackerModal = ({
|
||||
{/* />*/}
|
||||
{/*</div>*/}
|
||||
<p className="selectPerson__info">
|
||||
Выберите пользователя в проекте или добавьте по e- mail
|
||||
Выберите пользователя в проекте или добавьте по e-mail
|
||||
</p>
|
||||
<div className="invite__blocks">
|
||||
<div className="addPersonBlock">
|
||||
@@ -468,7 +468,7 @@ export const TrackerModal = ({
|
||||
<div className="input-container invitePersonBlock__input">
|
||||
<input
|
||||
className="name-project"
|
||||
placeholder="email"
|
||||
placeholder="e-mail"
|
||||
type="email"
|
||||
/>
|
||||
</div>
|
||||
|
@@ -742,7 +742,7 @@
|
||||
.exit {
|
||||
cursor: pointer;
|
||||
position: absolute;
|
||||
top: 36px;
|
||||
top: 20px;
|
||||
right: 20px;
|
||||
width: 13px;
|
||||
height: 13px;
|
||||
|
@@ -26,7 +26,7 @@ export const Navigation = () => {
|
||||
},
|
||||
{
|
||||
path: "/calendar",
|
||||
name: "Отчетность",
|
||||
name: "Отчеты",
|
||||
},
|
||||
{
|
||||
path: "/tracker",
|
||||
|
@@ -1,7 +1,7 @@
|
||||
.notification {
|
||||
border-radius: 40px;
|
||||
background: linear-gradient(180deg, #FFF 0%, #EBEBEB 100%);
|
||||
padding: 20px 82px 17px 27px;
|
||||
padding: 15px 60px 15px 15px;
|
||||
position: fixed;
|
||||
bottom: 25px;
|
||||
right: 25px;
|
||||
@@ -13,7 +13,7 @@
|
||||
align-items: center;
|
||||
|
||||
h2 {
|
||||
max-width: 194px;
|
||||
max-width: 210px;
|
||||
font-weight: 500;
|
||||
font-size: 16px;
|
||||
margin-bottom: 0;
|
||||
@@ -27,8 +27,8 @@
|
||||
&__close {
|
||||
cursor: pointer;
|
||||
position: absolute;
|
||||
top: 15px;
|
||||
right: 25px;
|
||||
top: 10px;
|
||||
right: 20px;
|
||||
width: 15px;
|
||||
height: 15px;
|
||||
}
|
||||
|
@@ -9,7 +9,7 @@
|
||||
a {
|
||||
color: #5b6871;
|
||||
font-weight: 400;
|
||||
font-size: 12px;
|
||||
font-size: 13px;
|
||||
line-height: 16px;
|
||||
transition: 0.3s all ease;
|
||||
position: relative;
|
||||
@@ -17,14 +17,6 @@
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
@media (max-width: 525px) {
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
@media (max-width: 455px) {
|
||||
font-size: 9px;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
text-decoration: none;
|
||||
color: #000000;
|
||||
|
@@ -89,7 +89,7 @@ export const ProfileCalendar = () => {
|
||||
<ProfileBreadcrumbs
|
||||
links={[
|
||||
{ name: "Главная", link: "/profile" },
|
||||
{ name: "Ваша отчетность", link: "/profile/calendar" },
|
||||
{ name: "Отчеты", link: "/profile/calendar" },
|
||||
]}
|
||||
/>
|
||||
<h2 className="summary__title">Ваши отчеты</h2>
|
||||
@@ -110,11 +110,9 @@ export const ProfileCalendar = () => {
|
||||
<Link to="/report">
|
||||
<button
|
||||
className="calendar__btn"
|
||||
onClick={() => {
|
||||
dispatch(setReportDate(""));
|
||||
}}
|
||||
onClick={() => dispatch(setReportDate(""))}
|
||||
>
|
||||
Заполнить отчет за день
|
||||
Заполнить отчет
|
||||
</button>
|
||||
</Link>
|
||||
</div>
|
||||
|
@@ -205,11 +205,11 @@ export const ProfileCalendarComponent = React.memo(
|
||||
<div className="calendar-component">
|
||||
<div className="calendar-component__header">
|
||||
<div className="calendar-component__header-info">
|
||||
<h3>Мои отчеты:</h3>
|
||||
<h3>Мои отчеты за </h3>
|
||||
<p className="calendar__hours">
|
||||
{month}
|
||||
<span>
|
||||
{totalHours} {hourOfNum(totalHours)}{" "}
|
||||
({totalHours} {hourOfNum(totalHours)})
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
@@ -316,13 +316,15 @@ export const ProfileCalendarComponent = React.memo(
|
||||
? `${getCorrectDate(startDate)} - ${getCorrectDate(endDate)}`
|
||||
: `${getCorrectDate(endDate)} - ${getCorrectDate(startDate)}`
|
||||
: activePeriod
|
||||
? "Выберите начало диапазона"
|
||||
? "Выберите диапазон на календаре"
|
||||
: "Выбрать диапазон"}
|
||||
</span>
|
||||
<span>
|
||||
{totalRangeHours
|
||||
? `${totalRangeHours} ${hourOfNum(totalRangeHours)}`
|
||||
: "0 часов"}
|
||||
: endDate
|
||||
? "0 часов"
|
||||
: ""}
|
||||
</span>
|
||||
{endDate && (
|
||||
<BaseButton
|
||||
|
@@ -78,7 +78,6 @@
|
||||
margin: 0;
|
||||
max-width: 220px;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
}
|
||||
|
@@ -3,7 +3,6 @@ import { useDispatch, useSelector } from "react-redux";
|
||||
import { NavLink, useNavigate } from "react-router-dom";
|
||||
|
||||
import { auth, getProfileInfo, setProfileInfo } from "@redux/outstaffingSlice";
|
||||
import { getRole } from "@redux/roleSlice";
|
||||
|
||||
import { apiRequest } from "@api/request";
|
||||
|
||||
@@ -15,7 +14,6 @@ export const ProfileHeader = () => {
|
||||
const navigate = useNavigate();
|
||||
const dispatch = useDispatch();
|
||||
const profileInfo = useSelector(getProfileInfo);
|
||||
const userRole = useSelector(getRole);
|
||||
const [user] = useState(
|
||||
localStorage.getItem("role_status") === "18" ? "partner" : "developer"
|
||||
);
|
||||
@@ -43,7 +41,7 @@ export const ProfileHeader = () => {
|
||||
localStorage.clear();
|
||||
dispatch(auth(false));
|
||||
setIsLoggingOut(false);
|
||||
navigate(userRole === "ROLE_DEV" ? "/authdev" : "/auth");
|
||||
navigate("/auth");
|
||||
};
|
||||
|
||||
return (
|
||||
|
@@ -125,8 +125,8 @@ const ReportForm = () => {
|
||||
<ProfileBreadcrumbs
|
||||
links={[
|
||||
{ name: "Главная", link: "/profile" },
|
||||
{ name: "Ваша отчетность", link: "/profile/calendar" },
|
||||
{ name: "Страница добавления нового отчета", link: "/report" },
|
||||
{ name: "Отчеты", link: "/profile/calendar" },
|
||||
{ name: "Добавить отчет", link: "/report" },
|
||||
]}
|
||||
/>
|
||||
<h2 className="summary__title">
|
||||
@@ -180,9 +180,7 @@ const ReportForm = () => {
|
||||
<p className="report-form__task-title--description">
|
||||
Краткое описание задачи
|
||||
</p>
|
||||
<p className="report-form__task-title--hours">
|
||||
Количество часов
|
||||
</p>
|
||||
<p className="report-form__task-title--hours">Кол-во часов</p>
|
||||
</div>
|
||||
|
||||
{inputs.map((input, index) => {
|
||||
@@ -260,7 +258,7 @@ const ReportForm = () => {
|
||||
<p className="addMore" onClick={addInput}>
|
||||
+
|
||||
</p>
|
||||
<span>Добавить еще </span>
|
||||
<span>Добавить задачу</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -299,7 +297,7 @@ const ReportForm = () => {
|
||||
{isFetching ? <Loader /> : "Отправить"}
|
||||
</button>
|
||||
<p className="report-form__footer-text">
|
||||
Всего за день :{" "}
|
||||
Всего за день:{" "}
|
||||
<span>
|
||||
{totalHours} {hourOfNum(totalHours)}
|
||||
</span>
|
||||
|
@@ -54,7 +54,6 @@
|
||||
font-weight: 700;
|
||||
font-style: normal;
|
||||
letter-spacing: normal;
|
||||
line-height: 48.74px;
|
||||
text-align: left;
|
||||
|
||||
@media (max-width: 555px) {
|
||||
@@ -75,7 +74,7 @@
|
||||
|
||||
@media (max-width: 555px) {
|
||||
margin-top: 25px;
|
||||
margin-bottom: 15px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -115,12 +114,11 @@
|
||||
font-weight: 700;
|
||||
font-style: normal;
|
||||
letter-spacing: normal;
|
||||
line-height: 48.74px;
|
||||
width: 12px;
|
||||
}
|
||||
|
||||
&-list {
|
||||
margin-top: 40px;
|
||||
margin-top: 30px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
@@ -146,7 +144,7 @@
|
||||
&-header {
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
margin-top: 40px;
|
||||
margin-top: 20px;
|
||||
margin-left: 50px;
|
||||
|
||||
p {
|
||||
@@ -156,7 +154,7 @@
|
||||
letter-spacing: normal;
|
||||
line-height: normal;
|
||||
text-align: left;
|
||||
margin-bottom: 26px;
|
||||
margin-bottom: 10px;
|
||||
white-space: nowrap;
|
||||
|
||||
@media (max-width: 450px) {
|
||||
@@ -276,6 +274,7 @@
|
||||
margin-left: 28px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
||||
.addMore {
|
||||
display: flex;
|
||||
@@ -285,9 +284,9 @@
|
||||
width: 38px;
|
||||
height: 38px;
|
||||
background: #e8e8e8;
|
||||
margin-bottom: 0;
|
||||
border-radius: 50px;
|
||||
font-size: 32px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
span {
|
||||
@@ -297,7 +296,8 @@
|
||||
letter-spacing: normal;
|
||||
line-height: normal;
|
||||
text-align: left;
|
||||
margin-left: 20px;
|
||||
margin-left: 10px;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -352,6 +352,7 @@
|
||||
|
||||
&__footer {
|
||||
display: flex;
|
||||
flex-direction: column-reverse;
|
||||
align-items: center;
|
||||
margin-top: 20px;
|
||||
|
||||
@@ -380,16 +381,13 @@
|
||||
&-text {
|
||||
font-family: "GT Eesti Pro Display";
|
||||
font-size: 1.9em;
|
||||
font-weight: 600;
|
||||
font-style: normal;
|
||||
letter-spacing: normal;
|
||||
line-height: 22.38px;
|
||||
text-align: left;
|
||||
margin-left: 40px;
|
||||
margin-bottom: 0;
|
||||
margin-bottom: 20px;
|
||||
|
||||
span {
|
||||
font-weight: 100;
|
||||
font-weight: 600;
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -2,7 +2,7 @@ import React, { useState } from "react";
|
||||
import { Link } from "react-router-dom";
|
||||
|
||||
import arrow from "assets/icons/sideBarArrow.svg";
|
||||
import LogoITguild from "assets/images/logo/LogoITguild.svg";
|
||||
import ITguild from "assets/images/logo/ITguild.svg";
|
||||
|
||||
import "./sidebar.scss";
|
||||
|
||||
@@ -37,13 +37,13 @@ export const SideBar = () => {
|
||||
</div>
|
||||
<p className="outstaffing">
|
||||
<img src={arrow}></img>
|
||||
2023 © Outstaffing
|
||||
{new Date().getFullYear()} © Outstaffing
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div className={active ? "auth-body active" : "auth-body"}>
|
||||
<div className="auth-body__title">
|
||||
<img src={LogoITguild}></img>
|
||||
<img src={ITguild}></img>
|
||||
</div>
|
||||
<ul className="auth-body__navigation">
|
||||
<li>
|
||||
|
@@ -125,6 +125,10 @@
|
||||
&__title {
|
||||
display: flex;
|
||||
margin-top: 24px;
|
||||
|
||||
img {
|
||||
width: 160px;
|
||||
}
|
||||
}
|
||||
|
||||
&__navigation {
|
||||
@@ -143,7 +147,7 @@
|
||||
|
||||
&__politic {
|
||||
margin-top: 42px;
|
||||
font-size: 12px;
|
||||
font-size: 14px;
|
||||
line-height: 22px;
|
||||
color: #000000;
|
||||
}
|
||||
@@ -156,7 +160,7 @@
|
||||
line-height: 33px;
|
||||
}
|
||||
p {
|
||||
font-size: 12px;
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -190,6 +194,6 @@
|
||||
@media (max-width: 1375px) {
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 605px;
|
||||
height: 705px;
|
||||
}
|
||||
}
|
||||
|
@@ -81,7 +81,7 @@ export const SliderWorkers = ({ title, titleInfo, subTitle }) => {
|
||||
</Slider>
|
||||
{Boolean(subTitle) ? (
|
||||
<div className="slider-workers__description">
|
||||
<h2>Дополните свою команду опытными ИТ-специалистами</h2>
|
||||
<h2>Дополните Вашу команду опытными IT-специалистами</h2>
|
||||
<p>
|
||||
Даём финансовые, юридические и кадровые гарантии, предоставляем
|
||||
SLA и отвечаем за работу команды. Вам не нужно искать, оформлять
|
||||
|
@@ -46,11 +46,14 @@
|
||||
padding: 8px 26px;
|
||||
font-weight: 400;
|
||||
font-size: 16px;
|
||||
line-height: 32px;
|
||||
|
||||
@media (max-width: 450px) {
|
||||
max-width: 180px;
|
||||
}
|
||||
}
|
||||
|
||||
span {
|
||||
margin-left: 55px;
|
||||
margin-left: 20px;
|
||||
font-weight: 400;
|
||||
font-size: 16px;
|
||||
line-height: 32px;
|
||||
|
@@ -47,7 +47,7 @@ export const Instruction = () => {
|
||||
<img src={comment} alt="" />
|
||||
</div>
|
||||
<div className="instruction__text instruction__text_info">
|
||||
Количество вопросов в тесте: <span>{countQuestions}</span>
|
||||
Вопросов в тесте: <span>{countQuestions}</span>
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
|
Reference in New Issue
Block a user