Compare commits

..

No commits in common. "1576b2321501d8c406ab2b8193eca628ed2fa265" and "269f3fe70312d047484ec68626b25c6ef101a078" have entirely different histories.

93 changed files with 797 additions and 985 deletions

View File

@ -1,64 +1,63 @@
import "bootstrap/dist/css/bootstrap.min.css";
import React from "react"; import React from "react";
import { useSelector } from "react-redux";
import { import {
Navigate,
Route,
BrowserRouter as Router, BrowserRouter as Router,
Routes Route,
Routes,
Navigate,
} from "react-router-dom"; } from "react-router-dom";
import { getNotification } from "@redux/outstaffingSlice"; import { getNotification } from "@redux/outstaffingSlice";
import { AuthForCandidate } from "@pages/AuthForCandidate/AuthForCandidate"; import Auth from "./pages/Auth/Auth";
import CatalogSpecialists from "@pages/CatalogSpecialists/CatalogSpecialists"; import CatalogSpecialists from "@pages/CatalogSpecialists/CatalogSpecialists";
import { TrackerIntro } from "@pages/TrackerIntro/TrackerIntro"
import { CompanyInfo } from "@pages/CompanyInfo/CompanyInfo"; import { CompanyInfo } from "@pages/CompanyInfo/CompanyInfo";
import { FrequentlyAskedQuestion } from "@pages/FrequentlyAskedQuestion/FrequentlyAskedQuestion"; import { TrackerAuth } from "@pages/TrackerAuth/TrackerAuth";
import { FrequentlyAskedQuestions } from "@pages/FrequentlyAskedQuestions/FrequentlyAskedQuestions"; import { TrackerRegistration } from "@pages/TrackerRegistration/TrackerRegistration";
import { PartnerAddRequest } from "@pages/PartnerAddRequest/PartnerAddRequest"; import Home from "./pages/Home/Home";
import { PartnerBid } from "@pages/PartnerBid/PartnerBid"; import Candidate from "./components/Candidate/Candidate";
import { PartnerEmployeeReport } from "@pages/PartnerEmployeeReport/PartnerEmployeeReport"; import Calendar from "./components/Calendar/Calendar";
import { PartnerEmployees } from "@pages/PartnerEmployees/PartnerEmployees"; import ReportForm from "./components/ReportForm/ReportForm";
import { PartnerRequests } from "@pages/PartnerRequests/PartnerRequests"; import FreeDevelopers from "./components/FreeDevelopers/FreeDevelopers";
import { PartnerSettings } from "@pages/PartnerSettings/PartnerSettings"; import { TicketFullScreen } from "@components/Modal/Tracker/TicketFullScreen/TicketFullScreen";
import { PartnerTreaties } from "@pages/PartnerTreaties/PartnerTreaties"; import { ProfileCalendar } from "@components/ProfileCalendar/ProfileCalendar";
import { PartnerCategories } from "@pages/PartnerСategories/PartnerСategories"; import { RegistrationSetting } from "@pages/RegistrationSetting/RegistrationSetting";
import { Payouts } from "@pages/Payouts/Payouts"; import Article from "./pages/Article/Article";
import { Profile } from "@pages/Profile/Profile"; import FormPage from "./pages/FormPage/FormPage";
import { ProfileCandidate } from "@pages/ProfileCandidate/ProfileCandidate"; import SingleReportPage from "./pages/SingleReportPage/SingleReportPage";
import { ProjectTracker } from "@pages/ProjectTracker/ProjectTracker";
import { PassingTests } from "@pages/Quiz/PassingTests";
import { QuizPage } from "@pages/Quiz/QuizPage"; import { QuizPage } from "@pages/Quiz/QuizPage";
import { QuizReportPage } from "@pages/Quiz/QuizReportPage"; import { QuizReportPage } from "@pages/Quiz/QuizReportPage";
import { RegistrationForCandidate } from "@pages/RegistrationForCandidate/RegistrationForCandidate"; import { Profile } from "@pages/Profile/Profile";
import { RegistrationSetting } from "@pages/RegistrationSetting/RegistrationSetting";
import Statistics from "@pages/Statistics/Statistics";
import { Summary } from "@pages/Summary/Summary"; import { Summary } from "@pages/Summary/Summary";
import { Tracker } from "@pages/Tracker/Tracker";
import { TrackerAuth } from "@pages/TrackerAuth/TrackerAuth";
import { TrackerIntro } from "@pages/TrackerIntro/TrackerIntro";
import { TrackerRegistration } from "@pages/TrackerRegistration/TrackerRegistration";
import { ViewReport } from "@pages/ViewReport/ViewReport"; import { ViewReport } from "@pages/ViewReport/ViewReport";
import { Tracker } from "@pages/Tracker/Tracker";
import { TicketFullScreen } from "@components/Modal/Tracker/TicketFullScreen/TicketFullScreen"; import { Payouts } from "@pages/Payouts/Payouts";
import Notification from "@components/Notification/Notification"; import { PartnerSettings } from "@pages/PartnerSettings/PartnerSettings";
import { ProfileCalendar } from "@components/ProfileCalendar/ProfileCalendar"; import { PartnerRequests } from "@pages/PartnerRequests/PartnerRequests";
import { PartnerAddRequest } from "@pages/PartnerAddRequest/PartnerAddRequest";
import "./assets/fonts/stylesheet.css"; import { PartnerBid } from "@pages/PartnerBid/PartnerBid";
import "./assets/global.scss"; import { PartnerCategories } from "@pages/PartnerСategories/PartnerСategories";
import Calendar from "./components/Calendar/Calendar"; import { PartnerTreaties } from "@pages/PartnerTreaties/PartnerTreaties";
import Candidate from "./components/Candidate/Candidate"; import { PartnerEmployees } from "@pages/PartnerEmployees/PartnerEmployees";
import FreeDevelopers from "./components/FreeDevelopers/FreeDevelopers"; import { AuthForCandidate } from "@pages/AuthForCandidate/AuthForCandidate";
import ReportForm from "./components/ReportForm/ReportForm"; import { RegistrationForCandidate } from "@pages/RegistrationForCandidate/RegistrationForCandidate";
import Article from "./pages/Article/Article"; import { ProfileCandidate } from "@pages/ProfileCandidate/ProfileCandidate";
import Auth from "./pages/Auth/Auth"; import { PartnerEmployeeReport } from "@pages/PartnerEmployeeReport/PartnerEmployeeReport";
import { PassingTests } from "@pages/Quiz/PassingTests";
import Blog from "./pages/Blog/Blog"; import Blog from "./pages/Blog/Blog";
import FormPage from "./pages/FormPage/FormPage"; import Statistics from "@pages/Statistics/Statistics";
import Home from "./pages/Home/Home"; import { ProjectTracker } from "@pages/ProjectTracker/ProjectTracker";
import SingleReportPage from "./pages/SingleReportPage/SingleReportPage"; import { FrequentlyAskedQuestions } from "@pages/FrequentlyAskedQuestions/FrequentlyAskedQuestions";
import { FrequentlyAskedQuestion } from "@pages/FrequentlyAskedQuestion/FrequentlyAskedQuestion";
import Notification from "@components/Notification/Notification";
import { useSelector } from "react-redux";
import "./assets/global.scss";
import "./assets/fonts/stylesheet.css";
import "bootstrap/dist/css/bootstrap.min.css";
const App = () => { const App = () => {
const notification = useSelector(getNotification); const notification = useSelector(getNotification)
return ( return (
<> <>
<Router> <Router>
@ -66,22 +65,10 @@ const App = () => {
<Route exact path="/auth" element={<Auth />} /> <Route exact path="/auth" element={<Auth />} />
<Route exact path="/tracker-intro" element={<TrackerIntro />} /> <Route exact path="/tracker-intro" element={<TrackerIntro />} />
<Route exact path="/tracker-auth" element={<TrackerAuth />} /> <Route exact path="/tracker-auth" element={<TrackerAuth />} />
<Route <Route exact path="/tracker-registration" element={<TrackerRegistration />} />
exact
path="/tracker-registration"
element={<TrackerRegistration />}
/>
<Route exact path="/company" element={<CompanyInfo />} /> <Route exact path="/company" element={<CompanyInfo />} />
<Route <Route exact path="/registration-setting" element={<RegistrationSetting />} />
exact <Route exact path="/catalog-specialists" element={<CatalogSpecialists />} />
path="/registration-setting"
element={<RegistrationSetting />}
/>
<Route
exact
path="/catalog-specialists"
element={<CatalogSpecialists />}
/>
<Route exact path="/worker/:id" element={<FreeDevelopers />} /> <Route exact path="/worker/:id" element={<FreeDevelopers />} />
<Route <Route
@ -126,14 +113,10 @@ const App = () => {
<Route exact path="catalog" element={<Home />} /> <Route exact path="catalog" element={<Home />} />
<Route exact path="calendar" element={<ProfileCalendar />} /> <Route exact path="calendar" element={<ProfileCalendar />} />
<Route exact path="calendar/report" element={<ReportForm />} /> <Route exact path="calendar/report" element={<ReportForm />} />
<Route <Route exact path="calendar/view/:date/:id" element={<ViewReport />} />
exact
path="calendar/view/:date/:id"
element={<ViewReport />}
/>
<Route exact path="summary" element={<Summary />} /> <Route exact path="summary" element={<Summary />} />
<Route exact path="tracker" element={<Tracker />} /> <Route exact path="tracker" element={<Tracker />} />
<Route exact path="statistics/:id" element={<Statistics />} /> <Route exact path="statistics/:id" element={<Statistics/>}/>
<Route exact path="payouts" element={<Payouts />} /> <Route exact path="payouts" element={<Payouts />} />
<Route exact path="settings" element={<PartnerSettings />} /> <Route exact path="settings" element={<PartnerSettings />} />
<Route exact path="requests" element={<PartnerRequests />} /> <Route exact path="requests" element={<PartnerRequests />} />
@ -141,11 +124,7 @@ const App = () => {
<Route exact path="requests-edit" element={<PartnerAddRequest />} /> <Route exact path="requests-edit" element={<PartnerAddRequest />} />
<Route exact path="requests-bid" element={<PartnerBid />} /> <Route exact path="requests-bid" element={<PartnerBid />} />
<Route exact path="employees" element={<PartnerCategories />} /> <Route exact path="employees" element={<PartnerCategories />} />
<Route <Route exact path="employees/report/:uuid" element={<PartnerEmployeeReport />} />
exact
path="employees/report/:uuid"
element={<PartnerEmployeeReport />}
/>
<Route exact path="treaties" element={<PartnerTreaties />} /> <Route exact path="treaties" element={<PartnerTreaties />} />
<Route exact path="quiz"> <Route exact path="quiz">
<Route index element={<QuizPage />} /> <Route index element={<QuizPage />} />
@ -160,6 +139,7 @@ const App = () => {
/> />
</Route> </Route>
<Route exact path="profile-candidate/:id"> <Route exact path="profile-candidate/:id">
<Route index element={<ProfileCandidate />} /> <Route index element={<ProfileCandidate />} />
</Route> </Route>
@ -167,7 +147,9 @@ const App = () => {
<Route path="*" element={<Navigate to="/auth" replace />} /> <Route path="*" element={<Navigate to="/auth" replace />} />
</Routes> </Routes>
</Router> </Router>
{notification.show && <Notification />} {notification.show &&
<Notification />
}
</> </>
); );
}; };

View File

@ -1,6 +1,6 @@
import React from "react"; import React from "react";
import { getCorrectDate } from "@utils/calendarHelper"; import { getCorrectDate } from "@components/Calendar/calendarHelper";
import "./archiveTasksItem.scss"; import "./archiveTasksItem.scss";

View File

@ -11,9 +11,9 @@ import { LogoutButton } from "@components/LogoutButton/LogoutButton";
import rectangle from "assets/images/rectangle_secondPage.png"; import rectangle from "assets/images/rectangle_secondPage.png";
import { currentMonth } from "../../utils/calendarHelper";
import CalendarComponent from "./CalendarComponent"; import CalendarComponent from "./CalendarComponent";
import "./calendar.scss"; import "./calendar.scss";
import { currentMonth } from "./calendarHelper";
const Calendar = () => { const Calendar = () => {
if (localStorage.getItem("role_status") !== "18") { if (localStorage.getItem("role_status") !== "18") {
@ -79,8 +79,8 @@ const Calendar = () => {
</p> </p>
</div> </div>
</div> </div>
<Footer />
</section> </section>
<Footer />
</div> </div>
); );
}; };

View File

@ -6,8 +6,8 @@ import calendarIcon from "assets/icons/calendar.svg";
import ellipse from "assets/icons/ellipse.png"; import ellipse from "assets/icons/ellipse.png";
import rectangle from "assets/images/rectangle__calendar.png"; import rectangle from "assets/images/rectangle__calendar.png";
import { calendarHelper, currentMonthAndDay } from "../../utils/calendarHelper";
import "./calendarComponent.scss"; import "./calendarComponent.scss";
import { calendarHelper, currentMonthAndDay } from "./calendarHelper";
const CalendarComponent = ({ onSelect }) => { const CalendarComponent = ({ onSelect }) => {
const [value, setValue] = useState(moment()); const [value, setValue] = useState(moment());

View File

@ -1,5 +1,6 @@
.calendar { .calendar {
margin-bottom: 40px; margin-bottom: 40px;
font-family: "LabGrotesque", sans-serif;
&__header { &__header {
display: flex; display: flex;
@ -135,6 +136,10 @@
line-height: normal; line-height: normal;
} }
} }
footer {
margin-top: 2rem !important;
}
} }
@media (max-width: 575.98px) { @media (max-width: 575.98px) {

View File

@ -3,6 +3,7 @@
margin: 10px 0; margin: 10px 0;
background-color: #f9f9f9; background-color: #f9f9f9;
padding: 20px 30px; padding: 20px 30px;
font-family: "LabGrotesque", sans-serif;
&__header { &__header {
display: flex; display: flex;

View File

@ -233,8 +233,8 @@ const Candidate = () => {
)} )}
</div> </div>
</div> </div>
<Footer />
</div> </div>
<Footer />
</div> </div>
); );
}; };

View File

@ -148,6 +148,12 @@
} }
} }
} }
footer {
margin-top: 2.5rem !important;
position: relative;
z-index: -2;
}
} }
@media (max-width: 375.98px) { @media (max-width: 375.98px) {

View File

@ -6,6 +6,7 @@
border-radius: 44px; border-radius: 44px;
color: white; color: white;
font-style: normal; font-style: normal;
font-family: "LabGrotesque", sans-serif;
border: none; border: none;
transition: 0.5s; transition: 0.5s;

View File

@ -18,6 +18,7 @@
} }
&__empty { &__empty {
font-family: "LabGrotesque", sans-serif;
font-style: normal; font-style: normal;
font-weight: 700; font-weight: 700;
font-size: 16px; font-size: 16px;

View File

@ -92,8 +92,8 @@ export const FreeDevelopers = () => {
</BaseButton> </BaseButton>
</div> </div>
</div> </div>
<Footer />
</div> </div>
<Footer />
</section> </section>
); );
}; };

View File

@ -1,4 +1,5 @@
.free-dev { .free-dev {
font-family: "LabGrotesque", sans-serif;
overflow: hidden; overflow: hidden;
position: relative; position: relative;
background-color: #f1f1f1; background-color: #f1f1f1;

View File

@ -43,7 +43,7 @@ import send from "assets/icons/send.svg";
import watch from "assets/icons/watch.svg"; import watch from "assets/icons/watch.svg";
import avatarMok from "assets/images/avatarMok.png"; import avatarMok from "assets/images/avatarMok.png";
import { getCorrectDate } from "../../../../utils/calendarHelper"; import { getCorrectDate } from "../../../Calendar/calendarHelper";
import "./modalTicket.scss"; import "./modalTicket.scss";
registerLocale("ru", ru); registerLocale("ru", ru);

View File

@ -77,6 +77,7 @@
line-height: 32px; line-height: 32px;
color: #1458dd; color: #1458dd;
margin: 0; margin: 0;
font-family: "LabGrotesque", sans-serif;
} }
h2 { h2 {
@ -779,6 +780,7 @@
.react-datepicker__current-month { .react-datepicker__current-month {
font-size: 18px; font-size: 18px;
font-family: "LabGrotesque", sans-serif;
text-transform: capitalize; text-transform: capitalize;
} }
@ -821,6 +823,7 @@
.react-datepicker__day { .react-datepicker__day {
font-size: 16px; font-size: 16px;
width: 35px; width: 35px;
font-family: "LabGrotesque", sans-serif;
border-radius: 50px; border-radius: 50px;
padding: 7px; padding: 7px;
} }
@ -829,6 +832,7 @@
font-size: 18px; font-size: 18px;
width: 35px; width: 35px;
font-weight: 500; font-weight: 500;
font-family: "LabGrotesque", sans-serif;
} }
.react-datepicker__triangle { .react-datepicker__triangle {

View File

@ -9,7 +9,6 @@ import { Link, useNavigate, useParams } from "react-router-dom";
import { getProfileInfo } from "@redux/outstaffingSlice"; import { getProfileInfo } from "@redux/outstaffingSlice";
import { getBoarderLoader, setToggleTab } from "@redux/projectsTrackerSlice"; import { getBoarderLoader, setToggleTab } from "@redux/projectsTrackerSlice";
import { getCorrectDate } from "@utils/calendarHelper";
import { import {
backendImg, backendImg,
caseOfNum, caseOfNum,
@ -22,6 +21,7 @@ import { apiRequest } from "@api/request";
import { useNotification } from "@hooks/useNotification"; import { useNotification } from "@hooks/useNotification";
import { getCorrectDate } from "@components/Calendar/calendarHelper";
import { Footer } from "@components/Common/Footer/Footer"; import { Footer } from "@components/Common/Footer/Footer";
import { Loader } from "@components/Common/Loader/Loader"; import { Loader } from "@components/Common/Loader/Loader";
import FileTracker from "@components/FileTracker/FileTracker"; import FileTracker from "@components/FileTracker/FileTracker";

View File

@ -22,13 +22,13 @@ import {
setProjectBoardFetch setProjectBoardFetch
} from "@redux/projectsTrackerSlice"; } from "@redux/projectsTrackerSlice";
import { getCorrectDate } from "@utils/calendarHelper";
import { getCorrectRequestDate, urlForLocal } from "@utils/helper"; import { getCorrectRequestDate, urlForLocal } from "@utils/helper";
import { apiRequest } from "@api/request"; import { apiRequest } from "@api/request";
import { useNotification } from "@hooks/useNotification"; import { useNotification } from "@hooks/useNotification";
import { getCorrectDate } from "@components/Calendar/calendarHelper";
import BaseButton from "@components/Common/BaseButton/BaseButton"; import BaseButton from "@components/Common/BaseButton/BaseButton";
import { Loader } from "@components/Common/Loader/Loader"; import { Loader } from "@components/Common/Loader/Loader";
import ModalLayout from "@components/Common/ModalLayout/ModalLayout"; import ModalLayout from "@components/Common/ModalLayout/ModalLayout";

View File

@ -172,8 +172,7 @@
.executor { .executor {
display: flex; display: flex;
column-gap: 5px; justify-content: space-between;
align-items: center;
&:hover { &:hover {
font-weight: 600; font-weight: 600;
} }
@ -651,6 +650,7 @@
.react-datepicker__current-month { .react-datepicker__current-month {
font-size: 18px; font-size: 18px;
font-family: "LabGrotesque", sans-serif;
text-transform: capitalize; text-transform: capitalize;
padding-bottom: 8px; padding-bottom: 8px;
} }
@ -694,6 +694,7 @@
.react-datepicker__day { .react-datepicker__day {
font-size: 16px; font-size: 16px;
width: 35px; width: 35px;
font-family: "LabGrotesque", sans-serif;
border-radius: 50px; border-radius: 50px;
padding: 7px; padding: 7px;
} }
@ -702,6 +703,7 @@
font-size: 18px; font-size: 18px;
width: 35px; width: 35px;
font-weight: 500; font-weight: 500;
font-family: "LabGrotesque", sans-serif;
} }
.react-datepicker__triangle { .react-datepicker__triangle {

View File

@ -1,3 +1,7 @@
body {
font-family: "LabGrotesque", sans-serif !important;
}
.container { .container {
max-width: 1160px !important; max-width: 1160px !important;
} }
@ -5,6 +9,7 @@
background: #f1f1f1; background: #f1f1f1;
height: 100%; height: 100%;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
padding-top: 23px; padding-top: 23px;
&__title { &__title {

View File

@ -12,11 +12,11 @@ import {
setRequestDate setRequestDate
} from "@redux/reportSlice"; } from "@redux/reportSlice";
import { getReports } from "@utils/calendarHelper";
import { urlForLocal } from "@utils/helper"; import { urlForLocal } from "@utils/helper";
import { apiRequest } from "@api/request"; import { apiRequest } from "@api/request";
import { getReports } from "@components/Calendar/calendarHelper";
import { Footer } from "@components/Common/Footer/Footer"; import { Footer } from "@components/Common/Footer/Footer";
import { Loader } from "@components/Common/Loader/Loader"; import { Loader } from "@components/Common/Loader/Loader";
import { Navigation } from "@components/Navigation/Navigation"; import { Navigation } from "@components/Navigation/Navigation";

View File

@ -11,6 +11,11 @@ import {
setSendRequest setSendRequest
} from "@redux/reportSlice"; } from "@redux/reportSlice";
import { getCorrectYYMMDD } from "@utils/helper";
import { apiRequest } from "@api/request";
import "@components/Calendar/calendarComponent.scss";
import { import {
calendarHelper, calendarHelper,
correctDay, correctDay,
@ -18,12 +23,7 @@ import {
getCorrectDate, getCorrectDate,
getReports, getReports,
hourOfNum hourOfNum
} from "@utils/calendarHelper"; } from "@components/Calendar/calendarHelper";
import { getCorrectYYMMDD } from "@utils/helper";
import { apiRequest } from "@api/request";
import "@components/Calendar/calendarComponent.scss";
import BaseButton from "@components/Common/BaseButton/BaseButton"; import BaseButton from "@components/Common/BaseButton/BaseButton";
import arrow from "assets/icons/arrows/arrowCalendar.png"; import arrow from "assets/icons/arrows/arrowCalendar.png";

View File

@ -1,15 +1,12 @@
.profile__calendar { .profile__calendar {
background: #f1f1f1; background: #f1f1f1;
display: flex; height: 100%;
flex-direction: column;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
.container { .container {
max-width: 1160px; max-width: 1160px;
margin-top: 23px; margin-top: 23px;
display: flex;
flex-direction: column;
flex: 1;
@media (max-width: 570px) { @media (max-width: 570px) {
margin-top: 0; margin-top: 0;

View File

@ -4,82 +4,22 @@ import { NavLink, useNavigate } from "react-router-dom";
import { auth, getProfileInfo, setProfileInfo } from "@redux/outstaffingSlice"; import { auth, getProfileInfo, setProfileInfo } from "@redux/outstaffingSlice";
import { urlForLocal } from "@utils/helper";
import { apiRequest } from "@api/request"; import { apiRequest } from "@api/request";
import { Loader } from "@components/Common/Loader/Loader"; import { Loader } from "@components/Common/Loader/Loader";
import avatarMok from "assets/images/avatarMok.png";
import "./profileHeader.scss"; import "./profileHeader.scss";
export const ProfileHeader = () => { export const ProfileHeader = () => {
const navigate = useNavigate(); const navigate = useNavigate();
const dispatch = useDispatch(); const dispatch = useDispatch();
const profileInfo = useSelector(getProfileInfo); const profileInfo = useSelector(getProfileInfo);
const currentPath = window.location.pathname;
const [user] = useState( const [user] = useState(
localStorage.getItem("role_status") === "18" ? "partner" : "developer" localStorage.getItem("role_status") === "18" ? "partner" : "developer"
); );
const [isLoggingOut, setIsLoggingOut] = useState(false); const [isLoggingOut, setIsLoggingOut] = useState(false);
const [navInfo] = useState({
developer: [
{
path: "/summary",
name: "Резюме"
},
{
path: "/calendar",
name: "Отчеты"
},
{
path: "/tracker",
name: "Трекер"
},
{
path: "/payouts",
name: "Выплаты"
},
{
path: "/quiz",
name: "Тесты"
},
{
path: "/settings",
name: "Настройки"
}
],
partner: [
{
path: "/catalog",
name: "Каталог"
},
{
path: "/requests",
name: "Запросы"
},
{
path: "/employees",
name: "Персонал"
},
{
path: "/tracker",
name: "Трекер"
},
{
path: "/treaties",
name: "Договоры"
},
{
path: "/settings",
name: "Настройки"
}
]
});
useEffect(() => { useEffect(() => {
if (!Object.keys(profileInfo).length) if (!Object.keys(profileInfo).length)
apiRequest(`/user/me`).then((profileInfo) => { apiRequest(`/user/me`).then((profileInfo) => {
@ -100,85 +40,21 @@ export const ProfileHeader = () => {
dispatch(setProfileInfo({})); dispatch(setProfileInfo({}));
}; };
const [active, setActive] = useState(false);
const toggleBar = () => {
if (active) {
setActive(false);
} else {
setActive(true);
}
};
return ( return (
<header className="profile-header"> <header className="profile-header">
<div className="auth-title"> <div className="profile-header__head">
<div className="text"> <div className="profile-header__container">
<NavLink to={"/profile"} className="profile-header__title"> <NavLink to={"/profile"} className="profile-header__title">
itguild. itguild.
<span> <span>
{user === "developer" ? "для разработчиков" : "для партнеров"} {user === "developer" ? "для разработчиков" : "для партнеров"}
</span> </span>
</NavLink> </NavLink>
<button onClick={handler} className="profile-header__logout"> <button onClick={handler} className="profile-header__logout">
{isLoggingOut ? <Loader /> : "Выйти"} {isLoggingOut ? <Loader /> : "Выйти"}
</button> </button>
<div className="burger" onClick={() => toggleBar()}>
<div
className={active ? "burger__line l1 change" : "burger__line"}
></div>
<div
className={active ? "burger__line l2 change" : "burger__line"}
></div>
<div
className={active ? "burger__line l3 change" : "burger__line"}
></div>
</div>
</div> </div>
</div> </div>
<div className={active ? "auth-body active" : "auth-body"}>
{/* <div className="auth-body__title">
<img src={ITguild}></img>
</div> */}
<nav className="auth-body__navigation">
<div className="profile-header__personal-info">
<h3 className="profile-header__personal-info-name">
{profileInfo?.fio ? profileInfo?.fio : profileInfo?.username}
</h3>
<NavLink end to={"/profile"}>
<img
src={
profileInfo?.photo
? urlForLocal(profileInfo.photo)
: avatarMok
}
className="profile-header__personal-info-avatar"
alt="avatar"
/>
</NavLink>
</div>
{navInfo[user].map((link, index) => {
return (
<NavLink
key={index}
end
to={link.path === "/Quiz" ? link.path : `/profile${link.path}`}
className={currentPath.includes(link.path) ? "active" : ""}
>
{link.name}
</NavLink>
);
})}
<button onClick={handler} className="profile-header__logout-burger">
{isLoggingOut ? <Loader /> : "Выйти"}
</button>
</nav>
</div>
</header> </header>
); );
}; };

View File

@ -1,146 +1,13 @@
.profile-header { .profile-header {
width: 100%; width: 100%;
height: 66px;
background: #e1fccf;
padding: 20px;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
font-family: "LabGrotesque", sans-serif;
&__head { &__head {
background: #e1fccf; background: #e1fccf;
} }
.auth-title {
position: relative;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
height: 100%;
z-index: 9999;
max-width: 1160px;
width: 100%;
margin: 0 auto;
padding: 0 15px;
.text {
width: 100%;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
.burger {
display: none;
cursor: pointer;
@media (max-width: 414px) {
display: block;
}
&__line {
width: 32px;
border-radius: 33px;
height: 5px;
background-color: #333;
margin: 5px 0 0 27px;
transition: 0.4s;
}
.l1.change {
transform: rotate(-45deg) translate(-7px, 6px);
}
.l2.change {
opacity: 0;
}
.l3.change {
transform: rotate(45deg) translate(-8px, -8px);
}
}
}
}
&__info {
background: white;
}
.auth-body {
opacity: 0;
z-index: 99;
position: absolute;
top: 0;
right: 0;
height: 0;
width: 0;
overflow: hidden;
background: #e1fccf;
transition: 0.3s;
// @media (max-width: 414px) {
// display: block;
// }
&__title {
display: flex;
margin-top: 24px;
img {
width: 160px;
}
}
&__navigation {
margin-top: 28px;
padding: 0;
list-style: none;
font-size: 14px;
line-height: 20px;
display: flex;
flex-direction: column;
a {
padding: 10px 0 0 0;
}
a,
a:hover,
a:active {
color: #000000;
}
}
&__politic {
margin-top: 42px;
font-size: 14px;
line-height: 22px;
color: #000000;
}
&__contacts {
margin-top: 127px;
color: #000000;
h4 {
font-size: 20px;
line-height: 33px;
}
p {
font-size: 14px;
}
}
}
.auth-body.active {
padding: 40px 10px;
opacity: 1;
display: flex;
overflow: visible;
width: calc(100vw / 3);
transition: width 0.3s;
height: 100%;
flex-direction: column;
align-items: stretch;
}
&__container { &__container {
max-width: 1160px; max-width: 1160px;
padding: 0 15px; padding: 0 15px;
@ -148,11 +15,7 @@
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
min-height: 66px; min-height: 50px;
@media (max-width: 414px) {
display: none;
}
} }
&__title { &__title {
@ -179,19 +42,10 @@
font-size: 16px; font-size: 16px;
line-height: 32px; line-height: 32px;
color: #000000; color: #000000;
@media (max-width: 414px) {
display: none;
}
} }
&__logout-burger { &__info {
background: none; background: #ffffff;
border: none;
font-weight: 500;
font-size: 16px;
line-height: 32px;
color: #000000;
} }
&__nav { &__nav {
@ -215,7 +69,6 @@
a.active { a.active {
color: #000000; color: #000000;
padding: 0;
} }
@media (max-width: 800px) { @media (max-width: 800px) {
@ -234,10 +87,7 @@
&__personal-info { &__personal-info {
display: flex; display: flex;
column-gap: 20px; column-gap: 20px;
flex-direction: row-reverse;
align-items: center; align-items: center;
justify-content: flex-end;
padding: 10px;
&-name { &-name {
margin-bottom: 0; margin-bottom: 0;
@ -253,10 +103,6 @@
} }
} }
a.active {
padding: 0;
}
&-avatar { &-avatar {
width: 37px; width: 37px;
height: 37px; height: 37px;

View File

@ -135,7 +135,7 @@ export const ProjectTicket = ({ project, index }) => {
<img src={edit}></img> <img src={edit}></img>
<p>редактировать</p> <p>редактировать</p>
</div> </div>
<div onClick={() => copyProjectLink(project.id)}> <div onClick={copyProjectLink(project.id)}>
<img src={link}></img> <img src={link}></img>
<p>скопировать ссылку</p> <p>скопировать ссылку</p>
</div> </div>

View File

@ -27,7 +27,7 @@ import {
getCorrectDate, getCorrectDate,
getCreatedDate, getCreatedDate,
hourOfNum hourOfNum
} from "../../utils/calendarHelper"; } from "../Calendar/calendarHelper";
import "./reportForm.scss"; import "./reportForm.scss";
registerLocale("ru", ru); registerLocale("ru", ru);

View File

@ -1,13 +1,10 @@
.report-form { .report-form {
background: #f1f1f1; background: #f1f1f1;
height: 100%;
min-height: 100vh; min-height: 100vh;
display: flex; font-family: "LabGrotesque", sans-serif;
flex-direction: column;
.container { .container {
display: flex;
flex-direction: column;
flex: 1;
max-width: 1160px; max-width: 1160px;
margin-top: 23px; margin-top: 23px;
@ -489,6 +486,7 @@
.react-datepicker__current-month { .react-datepicker__current-month {
font-size: 14px; font-size: 14px;
font-family: "LabGrotesque", sans-serif;
text-transform: capitalize; text-transform: capitalize;
} }
@ -500,11 +498,13 @@
.react-datepicker__day { .react-datepicker__day {
font-size: 14px; font-size: 14px;
width: 35px; width: 35px;
font-family: "LabGrotesque", sans-serif;
} }
.react-datepicker__day-name { .react-datepicker__day-name {
font-size: 14px; font-size: 14px;
width: 35px; width: 35px;
font-family: "LabGrotesque", sans-serif;
} }
.react-datepicker__triangle { .react-datepicker__triangle {

View File

@ -8,14 +8,13 @@ import {
setSendRequest setSendRequest
} from "@redux/reportSlice"; } from "@redux/reportSlice";
import { apiRequest } from "@api/request";
import { import {
getCorrectDate, getCorrectDate,
getCreatedDate, getCreatedDate,
hourOfNum hourOfNum
} from "@utils/calendarHelper"; } from "@components/Calendar/calendarHelper";
import { apiRequest } from "@api/request";
import { Loader } from "@components/Common/Loader/Loader"; import { Loader } from "@components/Common/Loader/Loader";
import "./shortReport.scss"; import "./shortReport.scss";

View File

@ -16,184 +16,184 @@
@media (max-width: 1440px) { @media (max-width: 1440px) {
width: 80px; width: 80px;
} }
}
.auth-title { .auth-title {
position: relative; position: relative;
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: center;
height: 80%;
z-index: 9999;
.text {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: space-between; margin: 70px 0 0 0;
align-items: center;
height: 80%;
z-index: 9999;
.text { h3 {
display: flex; transform: rotate(270deg);
flex-direction: column; font-size: 25px;
margin: 70px 0 0 0; line-height: 32px;
text-transform: uppercase;
color: #222222;
}
h3 { .burger {
transform: rotate(270deg); cursor: pointer;
font-size: 25px; margin-bottom: 70px;
line-height: 32px;
text-transform: uppercase; &__line {
color: #222222; width: 32px;
border-radius: 33px;
height: 5px;
background-color: #333;
margin: 5px 0 0 27px;
transition: 0.4s;
} }
.l1.change {
transform: rotate(-45deg) translate(-7px, 6px);
}
.l2.change {
opacity: 0;
}
.l3.change {
transform: rotate(45deg) translate(-8px, -8px);
}
}
}
.outstaffing {
transform: rotate(270deg);
font-size: 18px;
line-height: 32px;
width: 200px;
img {
margin-right: 15px;
}
}
@media (max-width: 1375px) {
flex-direction: row;
height: 100%;
.text {
margin: 0;
flex-direction: row;
.burger { .burger {
cursor: pointer; margin-bottom: 5px;
margin-bottom: 70px; }
&__line { h3 {
width: 32px; display: none;
border-radius: 33px;
height: 5px;
background-color: #333;
margin: 5px 0 0 27px;
transition: 0.4s;
}
.l1.change {
transform: rotate(-45deg) translate(-7px, 6px);
}
.l2.change {
opacity: 0;
}
.l3.change {
transform: rotate(45deg) translate(-8px, -8px);
}
} }
} }
.outstaffing { .outstaffing {
transform: rotate(270deg); margin: 0;
font-size: 18px; width: 150px;
line-height: 32px; font-size: 12px;
width: 200px; transform: none;
img { img {
margin-right: 15px; margin-right: 5px;
width: 15px;
} }
} }
}
@media (max-width: 1375px) { }
flex-direction: row;
height: 100%; .auth-body {
padding: 40px 10px;
.text { visibility: hidden;
margin: 0; transition: 0.2s ease-in-out;
flex-direction: row; opacity: 0;
z-index: 99;
.burger { position: absolute;
margin-bottom: 5px; top: 0;
} left: 0;
height: 100%;
h3 { background: #e1fccf;
display: none; width: 0;
} flex-direction: column;
} align-items: stretch;
.outstaffing { &__title {
margin: 0; display: flex;
width: 150px; margin-top: 24px;
font-size: 12px;
transform: none; img {
width: 160px;
img { }
margin-right: 5px; }
width: 15px;
} &__navigation {
} margin-top: 28px;
} padding: 0;
} list-style: none;
font-size: 20px;
.auth-body { line-height: 33px;
padding: 40px 10px;
visibility: hidden; a,
transition: 0.2s ease-in-out; a:hover,
opacity: 0; a:active {
z-index: 99; color: #000000;
position: absolute; }
top: 0; }
left: 0;
height: 100%; &__politic {
background: #e1fccf; margin-top: 42px;
width: 0; font-size: 14px;
flex-direction: column; line-height: 22px;
align-items: stretch; color: #000000;
}
&__title {
display: flex; &__contacts {
margin-top: 24px; margin-top: 127px;
color: #000000;
img { h4 {
width: 160px; font-size: 20px;
} line-height: 33px;
} }
p {
&__navigation { font-size: 14px;
margin-top: 28px; }
padding: 0; }
list-style: none;
font-size: 20px; @media (max-width: 1375px) {
line-height: 33px; &__title {
margin-top: 35px;
a, }
a:hover,
a:active { &__politic {
color: #000000; margin-top: 35px;
} }
}
&__contacts {
&__politic { margin: 50px 0 25px 0;
margin-top: 42px; }
font-size: 14px; }
line-height: 22px; }
color: #000000;
} .auth-body.active {
visibility: visible;
&__contacts { transition: 0.1s ease-in-out;
margin-top: 127px; opacity: 1;
color: #000000; display: flex;
h4 { width: 280px;
font-size: 20px; left: 100px;
line-height: 33px;
} @media (max-width: 1440px) {
p { left: 79px;
font-size: 14px; }
}
} @media (max-width: 1375px) {
left: 0;
@media (max-width: 1375px) { width: 100%;
&__title { height: 705px;
margin-top: 35px;
}
&__politic {
margin-top: 35px;
}
&__contacts {
margin: 50px 0 25px 0;
}
}
}
.auth-body.active {
visibility: visible;
transition: 0.1s ease-in-out;
opacity: 1;
display: flex;
width: 280px;
left: 100px;
@media (max-width: 1440px) {
left: 79px;
}
@media (max-width: 1375px) {
left: 0;
width: 100%;
height: 705px;
}
} }
} }

View File

@ -2,11 +2,11 @@ import ClassicEditor from "@ckeditor/ckeditor5-build-classic";
import { CKEditor } from "@ckeditor/ckeditor5-react"; import { CKEditor } from "@ckeditor/ckeditor5-react";
import React, { useState } from "react"; import React, { useState } from "react";
import { getCorrectDate } from "@utils/calendarHelper";
import { urlForLocal } from "@utils/helper"; import { urlForLocal } from "@utils/helper";
import { apiRequest } from "@api/request"; import { apiRequest } from "@api/request";
import { getCorrectDate } from "@components/Calendar/calendarHelper";
import TrackerTaskSubComment from "@components/TrackerTaskComment/TrackerTaskComment"; import TrackerTaskSubComment from "@components/TrackerTaskComment/TrackerTaskComment";
import del from "assets/icons/delete.svg"; import del from "assets/icons/delete.svg";

View File

@ -6,13 +6,15 @@ body {
margin: 0; margin: 0;
padding: 0; padding: 0;
box-sizing: border-box; box-sizing: border-box;
font-family: "LabGrotesque", sans-serif !important; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
sans-serif;
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
} }
code { code {
font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
monospace; monospace;
} }

View File

@ -91,10 +91,10 @@ const Auth = () => {
</div> </div>
</div> </div>
</div> </div>
<Footer />
</div> </div>
</div> </div>
<SideBar /> <SideBar />
<Footer />
</section> </section>
); );
}; };

View File

@ -1,10 +1,10 @@
.auth-partners { .auth-partners {
background-color: #f1f1f1; font-family: "LabGrotesque", sans-serif;
overflow: hidden; overflow: hidden;
position: relative; position: relative;
&__background { &__background {
background-color: #f1f1f1;
position: relative; position: relative;
} }

View File

@ -115,7 +115,7 @@ export const AuthForCandidate = () => {
resetModal={setModalReset} resetModal={setModalReset}
title="Войти, если есть доступ" title="Войти, если есть доступ"
description="Если вы получили доступ, пройдя description="Если вы получили доступ, пройдя
2 шага для входа, или хотите узнать 2 шага для входа или хотите узнать
свои результаты в кабинете" свои результаты в кабинете"
/> />
<div className="auth-candidate__start"> <div className="auth-candidate__start">

View File

@ -1,4 +1,5 @@
.auth-candidate { .auth-candidate {
font-family: "LabGrotesque", sans-serif;
overflow: hidden; overflow: hidden;
position: relative; position: relative;
background-color: #f1f1f1; background-color: #f1f1f1;
@ -61,4 +62,8 @@
} }
} }
} }
footer {
margin-top: 10px;
}
} }

View File

@ -90,10 +90,12 @@ export const Blog = () => {
); );
})} })}
</div> </div>
<div className="blog__load-more"> <div className="blog__load-more">
<button>Загрузить еще</button> <button>Загрузить еще</button>
</div> </div>
</div> </div>
<Footer /> <Footer />
</div> </div>
); );

View File

@ -200,9 +200,9 @@ const CatalogSpecialists = () => {
); );
})} })}
</div> </div>
<Footer />
</div> </div>
<SideBar /> <SideBar />
<Footer />
</section> </section>
); );
}; };

View File

@ -1,8 +1,8 @@
.catalog-specialists { .catalog-specialists {
background: #f1f1f1; background: #f1f1f1;
display: flex; height: 100%;
flex-direction: column;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
&__wrapper { &__wrapper {
padding-top: 24px; padding-top: 24px;

View File

@ -103,8 +103,8 @@ export const CompanyInfo = () => {
</div> </div>
</div> </div>
</div> </div>
<Footer />
</div> </div>
<Footer />
</div> </div>
); );
}; };

View File

@ -1,5 +1,6 @@
.company-info { .company-info {
&__content { &__content {
font-family: "LabGrotesque", sans-serif;
background-color: #f1f1f1; background-color: #f1f1f1;
padding-top: 60px; padding-top: 60px;

View File

@ -96,8 +96,8 @@ const FormPage = () => {
</div> </div>
</div> </div>
</div> </div>
<Footer />
</div> </div>
<Footer />
</div> </div>
); );
}; };

View File

@ -124,6 +124,10 @@
right: 2.5rem; right: 2.5rem;
} }
.form-page footer {
margin-top: 6rem !important;
}
@media (max-width: 991px) { @media (max-width: 991px) {
.form-page { .form-page {
&__separator { &__separator {

View File

@ -2,7 +2,9 @@
.frequently-asked-question { .frequently-asked-question {
background: #f5f5f5; background: #f5f5f5;
height: 100%;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
display: flex; display: flex;
flex-direction: column; flex-direction: column;

View File

@ -1,6 +1,8 @@
.frequently-asked-questions { .frequently-asked-questions {
background: #f5f5f5; background: #f5f5f5;
height: 100%;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
display: flex; display: flex;
flex-direction: column; flex-direction: column;

View File

@ -69,9 +69,9 @@ const Home = () => {
<h2 className="catalog__title">Каталог специалистов</h2> <h2 className="catalog__title">Каталог специалистов</h2>
<Outstaffing /> <Outstaffing />
<Description onLoadMore={loadMore} isLoadingMore={isLoadingMore} /> <Description onLoadMore={loadMore} isLoadingMore={isLoadingMore} />
<Footer />
</div> </div>
</div> </div>
<Footer />
</> </>
); );
}; };

View File

@ -1,8 +1,8 @@
.partner-add-request { .partner-add-request {
background: #f1f1f1; background: #f1f1f1;
display: flex; height: 100%;
flex-direction: column;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
.container { .container {
max-width: 1160px; max-width: 1160px;
@ -314,6 +314,10 @@
} }
} }
footer {
margin-top: 70px;
}
&__info { &__info {
background: #ffffff; background: #ffffff;
border-radius: 12px; border-radius: 12px;

View File

@ -9,11 +9,11 @@ import {
setPartnerRequestInfo setPartnerRequestInfo
} from "@redux/outstaffingSlice"; } from "@redux/outstaffingSlice";
import { getCorrectDate } from "@utils/calendarHelper";
import { urlForLocal } from "@utils/helper"; import { urlForLocal } from "@utils/helper";
import { apiRequest } from "@api/request"; import { apiRequest } from "@api/request";
import { getCorrectDate } from "@components/Calendar/calendarHelper";
import { Footer } from "@components/Common/Footer/Footer"; import { Footer } from "@components/Common/Footer/Footer";
import { Loader } from "@components/Common/Loader/Loader"; import { Loader } from "@components/Common/Loader/Loader";
import ModalLayout from "@components/Common/ModalLayout/ModalLayout"; import ModalLayout from "@components/Common/ModalLayout/ModalLayout";

View File

@ -1,14 +1,11 @@
.partner-bid { .partner-bid {
background: #f1f1f1; background: #f1f1f1;
display: flex; height: 100%;
flex-direction: column;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
.container { .container {
max-width: 1160px; max-width: 1160px;
display: flex;
flex-direction: column;
flex: 1;
margin-top: 23px; margin-top: 23px;
@media (max-width: 570px) { @media (max-width: 570px) {
@ -539,4 +536,8 @@
background: #52b709; background: #52b709;
} }
} }
footer {
margin-top: 70px;
}
} }

View File

@ -5,10 +5,9 @@ import { Navigate, useParams } from "react-router-dom";
import { getRequestDates, setRequestDate } from "@redux/reportSlice"; import { getRequestDates, setRequestDate } from "@redux/reportSlice";
import { getReports } from "@utils/calendarHelper";
import { apiRequest } from "@api/request"; import { apiRequest } from "@api/request";
import { getReports } from "@components/Calendar/calendarHelper";
import { Footer } from "@components/Common/Footer/Footer"; import { Footer } from "@components/Common/Footer/Footer";
import { Loader } from "@components/Common/Loader/Loader"; import { Loader } from "@components/Common/Loader/Loader";
import { Navigation } from "@components/Navigation/Navigation"; import { Navigation } from "@components/Navigation/Navigation";

View File

@ -1,14 +1,10 @@
.employee-report { .employee-report {
background: #f1f1f1; background: #f1f1f1;
display: flex; height: 100%;
flex-direction: column;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
.container { .container {
max-width: 1160px;
display: flex;
flex-direction: column;
flex: 1;
margin-top: 23px; margin-top: 23px;
} }

View File

@ -1,8 +1,8 @@
.partner-employees { .partner-employees {
background: #f1f1f1; background: #f1f1f1;
display: flex; height: 100%;
flex-direction: column;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
&__title { &__title {
color: #000000; color: #000000;
@ -168,13 +168,14 @@
.container { .container {
max-width: 1160px; max-width: 1160px;
display: flex;
flex-direction: column;
flex: 1;
margin-top: 23px; margin-top: 23px;
@media (max-width: 570px) { @media (max-width: 570px) {
margin-top: 0; margin-top: 0;
} }
} }
footer {
margin-top: 70px;
}
} }

View File

@ -1,14 +1,11 @@
.partner-requests { .partner-requests {
background: #f1f1f1; background: #f1f1f1;
display: flex; height: 100%;
flex-direction: column;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
.container { .container {
max-width: 1160px; max-width: 1160px;
display: flex;
flex-direction: column;
flex: 1;
margin-top: 23px; margin-top: 23px;
@media (max-width: 570px) { @media (max-width: 570px) {
@ -355,4 +352,8 @@
} }
} }
} }
footer {
margin-top: 70px;
}
} }

View File

@ -1,8 +1,8 @@
.settings { .settings {
display: flex;
flex-direction: column;
min-height: 100vh;
background: #f1f1f1; background: #f1f1f1;
height: 100%;
min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
.info-personal__title { .info-personal__title {
color: #000000; color: #000000;
@ -12,9 +12,7 @@
} }
&__page { &__page {
display: flex; min-height: 750px;
flex-direction: column;
flex: 1;
max-width: 1160px !important; max-width: 1160px !important;
margin-top: 23px; margin-top: 23px;
} }
@ -131,10 +129,7 @@
} }
.partner-settings { .partner-settings {
display: flex; margin-bottom: 110px;
flex-direction: column;
flex: 1;
margin-bottom: 10px;
&__body { &__body {
display: flex; display: flex;

View File

@ -1,8 +1,8 @@
.treaties { .treaties {
background: #f1f1f1; background: #f1f1f1;
display: flex; height: 100%;
flex-direction: column;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
&__title { &__title {
font-weight: 700; font-weight: 700;
@ -379,13 +379,14 @@
.container { .container {
max-width: 1160px; max-width: 1160px;
display: flex;
flex-direction: column;
flex: 1;
margin-top: 23px; margin-top: 23px;
@media (max-width: 570px) { @media (max-width: 570px) {
margin-top: 0; margin-top: 0;
} }
} }
footer {
margin-top: 70px;
}
} }

View File

@ -1,8 +1,8 @@
.partner-categories { .partner-categories {
background: #f1f1f1; background: #f1f1f1;
display: flex; height: 100%;
flex-direction: column;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
&__title { &__title {
color: #000000; color: #000000;
@ -145,13 +145,14 @@
.container { .container {
max-width: 1160px; max-width: 1160px;
display: flex;
flex-direction: column;
flex: 1;
margin-top: 23px; margin-top: 23px;
@media (max-width: 570px) { @media (max-width: 570px) {
margin-top: 0; margin-top: 0;
} }
} }
footer {
margin-top: 70px;
}
} }

View File

@ -1,18 +1,13 @@
import React from "react"; import React from "react";
import { Footer } from "@components/Common/Footer/Footer";
import { Navigation } from "@components/Navigation/Navigation"; import { Navigation } from "@components/Navigation/Navigation";
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader"; import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
import "./payouts.scss";
export const Payouts = () => { export const Payouts = () => {
return ( return (
<div className="payouts"> <div className="payouts">
<ProfileHeader /> <ProfileHeader />
<Navigation /> <Navigation />
<div className="container"></div>
<Footer />
</div> </div>
); );
}; };

View File

@ -1,13 +0,0 @@
.payouts {
display: flex;
flex-direction: column;
min-height: 100vh;
background: #f1f1f1;
.container {
max-width: 1160px;
display: flex;
flex-direction: column;
flex: 1;
}
}

View File

@ -1,8 +1,8 @@
.profile { .profile {
background: #f1f1f1; background: #f1f1f1;
display: flex; height: 100%;
flex-direction: column;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
&__title { &__title {
font-weight: 700; font-weight: 700;
@ -48,17 +48,92 @@
@media (max-width: 1175px) { @media (max-width: 1175px) {
justify-content: center; justify-content: center;
} }
// .item {
// max-width: 353px;
// width: 100%;
// padding: 35px 45px 15px 30px;
// background: #FFFFFF;
// border-radius: 12px;
// text-decoration: none;
// cursor: pointer;
// transition: all 0.3s ease;
// &:hover {
// box-shadow: 6px 5px 20px rgb(87 98 80 / 21%);
// transform: scale(1.02);
// }
// @media (max-width: 1175px) {
// width: 48%;
// max-width: none;
// }
// @media (max-width: 925px) {
// width: 100%;
// padding: 15px 25px;
// }
// &__about {
// display: flex;
// column-gap: 20px;
// align-items: center;
// margin-bottom: 30px;
// @media (max-width: 925px) {
// margin-bottom: 15px;
// }
// h3 {
// color: #000000;
// font-weight: 500;
// font-size: 18px;
// line-height: 22px;
// max-width: 125px;
// margin-bottom: 0;
// }
// }
// &__info {
// display: flex;
// justify-content: space-between;
// align-items: center;
// p {
// font-weight: 700;
// font-size: 12px;
// line-height: 20px;
// color: #000000;
// margin-bottom: 0;
// span {
// color: #52B709;
// font-weight: 700;
// }
// }
// &Link {
// width: 48px;
// height: 48px;
// background: #DDEEC6;
// border-radius: 50px;
// display: flex;
// justify-content: center;
// align-items: center;
// }
// }
// }
} }
.container { .container {
max-width: 1160px; max-width: 1160px;
margin-top: 23px; margin-top: 23px;
display: flex;
flex-direction: column;
flex: 1;
@media (max-width: 570px) { @media (max-width: 570px) {
margin-top: 0; margin-top: 0;
} }
} }
footer {
margin-top: 70px;
}
} }

View File

@ -1,160 +1,166 @@
.profile-candidate { .profile-candidate{
background: #f1f1f1; background: #F1F1F1;
display: flex; height: 100%;
flex-direction: column; min-height: 100vh;
min-height: 100vh; font-family: "LabGrotesque", sans-serif;
&__container { display: flex;
max-width: 1160px; flex-direction: column;
display: flex; //max-width: 1200px;
flex-direction: column; &__container{
margin: 0 auto 42px auto; max-width: 1160px;
flex: 1 1 auto; margin: 0 auto 42px auto;
padding: 0 15px; flex: 1 1 auto;
} padding: 0 15px;
&__title { }
margin: 0 0 31px 0; &__title{
} margin: 0 0 31px 0;
&__row { }
display: flex; &__row{
gap: 30px; display: flex;
flex-wrap: wrap; gap: 30px;
} flex-wrap: wrap;
// &__column{ }
// flex: 1 1 60%; // &__column{
// } // flex: 1 1 60%;
&__tests { // }
display: flex; &__tests{
flex-wrap: wrap; display: flex;
justify-content: space-between; flex-wrap: wrap;
flex: 1 1 60%; justify-content: space-between;
gap: 30px; flex: 1 1 60%;
} gap: 30px;
&__cards { }
display: flex; &__cards{
gap: 29px; display: flex;
width: 100%; gap: 29px;
@media (max-width: 660px) { width: 100%;
flex-wrap: wrap; @media (max-width: 660px) {
} flex-wrap: wrap;
} }
&__head-bottom { }
margin: 0 0 27px 0; &__head-bottom{
//max-width: 1160px; margin: 0 0 27px 0;
} //max-width: 1160px;
}
} }
.instructions-candidate {
flex: 1 1 auto; .instructions-candidate{
background: #ffffff; flex: 1 1 auto;
border-radius: 12px; background: #FFFFFF;
&__container { border-radius: 12px;
padding: 40px 18px 32px 36px; &__container{
display: flex; padding: 40px 18px 32px 36px;
flex-direction: column; display: flex;
gap: 29px; flex-direction: column;
@media (max-width: 660px) { gap: 29px;
padding: 20px; @media (max-width: 660px) {
} padding: 20px;
} }
&__note { }
display: flex; &__note{
align-items: center; display: flex;
gap: 22px; align-items: center;
&:not(:last-child) { gap: 22px;
margin: 0 0 30px 0; &:not(:last-child){
} margin: 0 0 30px 0;
} }
&__icon {
width: 25px; }
height: 30px; &__icon{
} width: 25px;
&__title { height: 30px;
color: #52b709; }
font-weight: 900; &__title{
font-size: 14px; color: #52B709;
line-height: 171%; font-weight: 900;
margin: 0 0 20px 0; font-size: 14px;
} line-height: 171%;
&__text { margin: 0 0 20px 0;
font-weight: 400; }
font-size: 12px; &__text{
line-height: 200%; font-weight: 400;
color: #000000; font-size: 12px;
max-width: 235px; line-height: 200%;
span { color: #000000;
color: #406128; max-width: 235px;
font-weight: 700; span{
text-decoration: underline; color: #406128;
} font-weight: 700;
} text-decoration: underline;
}
}
} }
.info-candidate { .info-candidate{
width: 100%; width: 100%;
background: #fff; background: #fff;
border-radius: 12px; border-radius: 12px;
padding: 20px 45px; padding: 20px 45px;
display: flex; display: flex;
align-items: center; align-items: center;
gap: 47px; gap: 47px;
@media (max-width: 560px) { @media (max-width:560px) {
padding: 20px; padding: 20px;
} }
&__img { &__img{
flex: 0 0 88px; flex: 0 0 88px;
height: 88px; height: 88px;
img { img{
width: 100%; width: 100%;
height: 100%; height: 100%;
object-fit: cover; object-fit: cover;
border-radius: 50%; border-radius: 50%;
} }
} }
&__info { &__info{
width: 100%; width: 100%;
} }
&__title { &__title{
font-weight: 500; font-weight: 500;
font-size: 16px; font-size: 16px;
line-height: 200%; line-height: 200%;
color: #000000; color: #000000;
margin: 0 0 12px 0; margin: 0 0 12px 0;
} }
&__decor { &__decor{
background: #52b709; background: #52B709;
border-radius: 12px; border-radius: 12px;
height: 8px; height: 8px;
width: 60%; width: 60%;
} }
} }
.bottom-head { .bottom-head{
margin: 0 0 40px 0; margin: 0 0 40px 0;
height: 66px; height: 66px;
background: #fff; background: #FFF;
&__container { &__container{
margin: 0 auto; max-width: 1160px;
padding: 0 15px; margin: 0 auto;
height: 100%; padding: 0 15px;
display: flex; height: 100%;
justify-content: space-between; display: flex;
align-items: center; justify-content: space-between;
} align-items: center;
&__img { }
flex: 0 0 37px; &__img{
height: 37px; flex: 0 0 37px;
img { height: 37px;
width: 100%; img{
height: 100%; width: 100%;
object-fit: cover; height: 100%;
border-radius: 50%; object-fit: cover;
} border-radius: 50%;
} }
&__title { }
font-weight: 500; &__title{
font-size: 18px; font-weight: 500;
line-height: 178%; font-size: 18px;
color: #807777; line-height: 178%;
} color: #807777;
} }
}

View File

@ -58,7 +58,7 @@ import accept from "assets/images/accept.png";
import archive from "assets/images/archiveIcon.png"; import archive from "assets/images/archiveIcon.png";
import avatarMok from "assets/images/avatarMok.png"; import avatarMok from "assets/images/avatarMok.png";
import { getCorrectDate } from "../../utils/calendarHelper"; import { getCorrectDate } from "../../components/Calendar/calendarHelper";
export const ProjectTracker = () => { export const ProjectTracker = () => {
const dispatch = useDispatch(); const dispatch = useDispatch();

View File

@ -1,13 +1,13 @@
.quiz-page { .quiz-page {
background: #f1f1f1; background: #f1f1f1;
height: 100%;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
&__container { &__container {
max-width: 1160px; max-width: 1160px;
display: flex;
flex-direction: column;
margin: 23px auto 42px auto; margin: 23px auto 42px auto;
flex: 1 1 auto; flex: 1 1 auto;
width: 100%; width: 100%;
@ -64,7 +64,9 @@
.interjacent-page-quiz { .interjacent-page-quiz {
background: #f1f1f1; background: #f1f1f1;
height: 100%;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@ -78,7 +80,6 @@
&__container { &__container {
max-width: 1160px; max-width: 1160px;
display: flex;
margin: 23px auto 42px auto; margin: 23px auto 42px auto;
flex: 1 1 auto; flex: 1 1 auto;
width: 100%; width: 100%;
@ -95,14 +96,14 @@
.passing-tests-page { .passing-tests-page {
background: #f1f1f1; background: #f1f1f1;
height: 100%;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
&__container { &__container {
max-width: 1160px; max-width: 1160px;
flex-direction: column;
display: flex;
margin: 23px auto 42px auto; margin: 23px auto 42px auto;
flex: 1 1 auto; flex: 1 1 auto;
width: 100%; width: 100%;
@ -135,14 +136,14 @@
.quiz-report-page { .quiz-report-page {
background: #f1f1f1; background: #f1f1f1;
height: 100%;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
&__container { &__container {
max-width: 1160px; max-width: 1160px;
display: flex;
flex-direction: column;
margin: 23px auto 42px auto; margin: 23px auto 42px auto;
flex: 1 1 auto; flex: 1 1 auto;
width: 100%; width: 100%;

View File

@ -1,4 +1,5 @@
.registration-candidate { .registration-candidate {
font-family: "LabGrotesque", sans-serif;
position: relative; position: relative;
background-color: #f1f1f1; background-color: #f1f1f1;
@ -187,4 +188,8 @@
} }
} }
} }
footer {
margin-top: 80px;
}
} }

View File

@ -212,8 +212,8 @@ export const RegistrationSetting = () => {
</button> </button>
)} )}
</div> </div>
<Footer />
</div> </div>
<Footer />
</div> </div>
); );
}; };

View File

@ -1,5 +1,6 @@
.registration-setting { .registration-setting {
&__content { &__content {
font-family: "LabGrotesque", sans-serif;
background-color: #f1f1f1; background-color: #f1f1f1;
color: #000000; color: #000000;
padding: 50px 0 0; padding: 50px 0 0;

View File

@ -6,7 +6,6 @@ import { setToggleTab } from "@redux/projectsTrackerSlice";
import { copyProjectLink } from "@utils/helper"; import { copyProjectLink } from "@utils/helper";
import { Footer } from "@components/Common/Footer/Footer";
import { Navigation } from "@components/Navigation/Navigation"; import { Navigation } from "@components/Navigation/Navigation";
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs"; import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader"; import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
@ -72,137 +71,133 @@ const Statistics = () => {
/> />
<h2 className="tracker__title">Управление проектами с трекером</h2> <h2 className="tracker__title">Управление проектами с трекером</h2>
</div> </div>
<div className="tracker__tabs"> </div>
<div className="tracker__tabs__head"> <div className="tracker__tabs">
<Link <div className="tracker__tabs__head">
to="/profile/tracker" <Link
className="tab active-tab" to="/profile/tracker"
onClick={() => toggleTabs(1)} className="tab active-tab"
> onClick={() => toggleTabs(1)}
<img src={project} alt="img" /> >
<p>Проекты </p> <img src={project} alt="img" />
</Link> <p>Проекты </p>
<Link </Link>
to="/profile/tracker" <Link
className="tab" to="/profile/tracker"
onClick={() => toggleTabs(2)} className="tab"
> onClick={() => toggleTabs(2)}
<img src={tasks} alt="img" /> >
<p>Все мои задачи</p> <img src={tasks} alt="img" />
</Link> <p>Все мои задачи</p>
<Link </Link>
to="/profile/tracker" <Link
className="tab" to="/profile/tracker"
onClick={() => toggleTabs(3)} className="tab"
> onClick={() => toggleTabs(3)}
<img src={archive} alt="img" /> >
<p>Архив</p> <img src={archive} alt="img" />
</Link> <p>Архив</p>
</div> </Link>
<div className="tracker__tabs__content"> </div>
<div className="tracker__tabs__content__wrapper statistics-body"> <div className="tracker__tabs__content">
<div className="statistics-header"> <div className="tracker__tabs__content__wrapper statistics-body">
<div className="statistics-header__menu"> <div className="statistics-header">
<h1>Статистика проекта</h1> <div className="statistics-header__menu">
<img src={link} alt="#" /> <h1>Статистика проекта</h1>
<span <img src={link} alt="#" />
className="return-text" <span className="return-text" onClick={copyProjectLink("62")}>
onClick={() => copyProjectLink("62")} ссылка на проект
> </span>
ссылка на проект
</span>
</div>
<div className="statistics-header__return">
<img src={arrow} alt="#" />
<Link to={`/profile/tracker`} className="return-text">
К списку проектов
</Link>
</div>
</div> </div>
<div className="statistics-info">
<div className="statistics-info__head"> <div className="statistics-header__return">
<p>Проект: </p> <img src={arrow} alt="#" />
<h1>{"Разработка трекера"}</h1>
<Link to={`/profile/tracker`} className="return-text">
К списку проектов
</Link>
</div>
</div>
<div className="statistics-info">
<div className="statistics-info__head">
<p>Проект: </p>
<h1>{"Разработка трекера"}</h1>
</div>
<div className="statistics-info__team">
<div className="project-info">
<div className="project-info__creator">
<span className="return-text">Создатель проекта:</span>
<div>
<p>{"Василий Тарасов"}</p>{" "}
<img src={mockAvatar} alt="#" />
</div>
</div>
<div className="project-info__tasks">
<div className="task-quantity">
<p>Открытые задачи</p>
<span className="task-quantity_open">{4}</span>
</div>
<div className="task-quantity">
<p>Задач в работе</p>
<span className="task-quantity_work">{5}</span>
</div>
<div className="task-quantity">
<p>Закрыто задач</p>
<span className="task-quantity_closed">{434}</span>
</div>
</div>
</div> </div>
<div className="statistics-info__team"> <div className="list-team">
<div className="project-info"> <div className="list-team__title">
<div className="project-info__creator"> <span className="return-text">Участники проекта:</span>
<span className="return-text">Создатель проекта:</span>
<div>
<p>{"Василий Тарасов"}</p>{" "}
<img src={mockAvatar} alt="#" />
</div>
</div>
<div className="project-info__tasks">
<div className="task-quantity">
<p>Открытые задачи</p>
<span className="task-quantity_open">{4}</span>
</div>
<div className="task-quantity">
<p>Задач в работе</p>
<span className="task-quantity_work">{5}</span>
</div>
<div className="task-quantity">
<p>Закрыто задач</p>
<span className="task-quantity_closed">{434}</span>
</div>
</div>
</div> </div>
<div className="list-team"> <div className="list-team__head">
<div className="list-team__title"> <p>Имя</p>
<span className="return-text">Участники проекта:</span> <p>Почта</p>
</div> <p>Роль</p>
<div className="list-team__head"> <p>Статус</p>
<p>Имя</p> </div>
<p>Почта</p> <div className="list-team__body">
<p>Роль</p> {teams.map((item) => {
<p>Статус</p> return (
</div> <>
<div className="list-team__body"> <div className="list-team__item">
{teams.map((item) => { <div className="person-name">
return ( <img src={item.avatar} alt="#" />
<> <p>{item.name}</p>
<div className="list-team__item">
<div className="person-name">
<img src={item.avatar} alt="#" />
<p>{item.name}</p>
</div>
<div className="person-email">
<img src={emailImg} alt="#" />
<p>{item.email}</p>
</div>
<p className="person-type">{item.role}</p>
{/* <span className="status status-active"> */}
<span
className={
item.status
? "status status-active"
: "status status-none"
}
>
{item.status ? "Активно" : "Не активно"}
</span>
</div> </div>
</> <div className="person-email">
); <img src={emailImg} alt="#" />
})} <p>{item.email}</p>
</div> </div>
</div>
<div className="add-person"> <p className="person-type">{item.role}</p>
<span className="add-person__button">+</span> {/* <span className="status status-active"> */}
<p>Добавить участника</p>
<span
className={
item.status
? "status status-active"
: "status status-none"
}
>
{item.status ? "Активно" : "Не активно"}
</span>
</div>
</>
);
})}
</div> </div>
</div> </div>
<div className="add-person">
<span className="add-person__button">+</span>
<p>Добавить участника</p>
</div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<Footer />
</div> </div>
); );
}; };

View File

@ -1,15 +1,9 @@
.statistics { .statistics {
background: #f1f1f1; background: #f1f1f1;
display: flex; height: 100%;
flex-direction: column;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
.container { position: relative;
max-width: 1160px;
display: flex;
flex-direction: column;
flex: 1;
}
&-header { &-header {
display: flex; display: flex;

View File

@ -1,8 +1,8 @@
.summary { .summary {
background: #f1f1f1; background: #f1f1f1;
display: flex; height: 100%;
flex-direction: column;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
&__content { &__content {
display: flex; display: flex;
@ -509,11 +509,12 @@
} }
} }
footer {
margin-top: 10px;
}
.container { .container {
max-width: 1160px; max-width: 1160px;
display: flex;
flex-direction: column;
flex: 1;
margin-top: 23px; margin-top: 23px;
@media (max-width: 570px) { @media (max-width: 570px) {

View File

@ -1,8 +1,8 @@
.tracker { .tracker {
background: #f1f1f1; background: #f1f1f1;
display: flex; height: 100%;
flex-direction: column;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
position: relative; position: relative;
.container { .container {
@ -18,6 +18,14 @@
margin-top: 23px; margin-top: 23px;
} }
footer {
margin-top: 70px;
.row {
margin-right: 0px;
}
}
&__title { &__title {
font-weight: 700; font-weight: 700;
font-size: 22px; font-size: 22px;
@ -26,9 +34,9 @@
} }
&__tabs { &__tabs {
min-height: 600px;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
flex: 1;
&__head { &__head {
display: flex; display: flex;

View File

@ -38,8 +38,8 @@ export const TrackerAuth = () => {
<ModalReset setModalReset={setModalReset} /> <ModalReset setModalReset={setModalReset} />
</ModalLayout> </ModalLayout>
)} )}
<Footer />
</div> </div>
<Footer />
</div> </div>
); );
}; };

View File

@ -1,16 +1,10 @@
.tracker-auth { .tracker-auth {
display: flex;
flex-direction: column;
min-height: 100vh;
background-color: #f1f1f1;
&__content { &__content {
display: flex; font-family: "LabGrotesque", sans-serif;
flex-direction: column; background-color: #f1f1f1;
flex: 1;
color: #000000; color: #000000;
padding: 50px 0 0; padding: 50px 0 0;
min-height: 100vh;
@media (max-width: 1375px) { @media (max-width: 1375px) {
padding-top: 100px; padding-top: 100px;
@ -31,7 +25,7 @@
margin-bottom: 46px; margin-bottom: 46px;
color: #000000; color: #000000;
span { span {
color: #52b709; color: #52B709;
position: relative; position: relative;
img { img {
position: absolute; position: absolute;

View File

@ -102,8 +102,8 @@ export const TrackerIntro = () => {
</div> </div>
</div> </div>
</div> </div>
<Footer />
</div> </div>
<Footer />
</div> </div>
); );
}; };

View File

@ -1,6 +1,7 @@
.tracker-intro { .tracker-intro {
background-color: #f1f1f1;
&__content { &__content {
font-family: "LabGrotesque", sans-serif;
background-color: #f1f1f1;
color: #000000; color: #000000;
@media (max-width: 1375px) { @media (max-width: 1375px) {

View File

@ -149,8 +149,8 @@ export const TrackerRegistration = () => {
/> />
</ModalLayout> </ModalLayout>
)} )}
<Footer />
</div> </div>
<Footer />
</div> </div>
); );
}; };

View File

@ -1,5 +1,6 @@
.tracker-registration { .tracker-registration {
&__content { &__content {
font-family: "LabGrotesque", sans-serif;
background-color: #f1f1f1; background-color: #f1f1f1;
color: #000000; color: #000000;
padding: 50px 0 0; padding: 50px 0 0;

View File

@ -4,14 +4,13 @@ import { Link, useParams } from "react-router-dom";
import { setEditReport } from "@redux/reportSlice"; import { setEditReport } from "@redux/reportSlice";
import { apiRequest } from "@api/request";
import { import {
getCorrectDate, getCorrectDate,
getCreatedDate, getCreatedDate,
hourOfNum hourOfNum
} from "@utils/calendarHelper"; } from "@components/Calendar/calendarHelper";
import { apiRequest } from "@api/request";
import { Footer } from "@components/Common/Footer/Footer"; import { Footer } from "@components/Common/Footer/Footer";
import { Loader } from "@components/Common/Loader/Loader"; import { Loader } from "@components/Common/Loader/Loader";
import { Navigation } from "@components/Navigation/Navigation"; import { Navigation } from "@components/Navigation/Navigation";
@ -270,8 +269,8 @@ export const ViewReport = () => {
)} )}
</div> </div>
)} )}
<Footer />
</div> </div>
<Footer />
</div> </div>
); );
}; };

View File

@ -1,14 +1,11 @@
.view-report { .view-report {
background: #f1f1f1; background: #f1f1f1;
display: flex; height: 100%;
flex-direction: column;
min-height: 100vh; min-height: 100vh;
font-family: "LabGrotesque", sans-serif;
.container { .container {
max-width: 1160px; max-width: 1160px;
display: flex;
flex-direction: column;
flex: 1;
margin-top: 23px; margin-top: 23px;
@media (max-width: 570px) { @media (max-width: 570px) {
@ -427,4 +424,12 @@
} }
} }
} }
footer {
margin-top: 70px;
@media (max-width: 575px) {
margin-top: 0;
}
}
} }

View File

@ -2,33 +2,34 @@ export function createMarkup(text) {
return { __html: text.split("</p>").join("</p>") }; return { __html: text.split("</p>").join("</p>") };
} }
export function transformHtml(text) { // export function transformHtml(text) {
let startHtml = { // let startHtml = {
__html: text.split("<h3> || <h2>").join("<br><h2>").split("<br>") // __html: text.split("<h3> || <h2>").join("<br><h2>").split("<br>"),
}; // };
startHtml = startHtml.__html.filter( // startHtml = startHtml.__html.filter(
(el) => (el !== null && el !== "") || el === 0 // (el) => (el !== null && el !== "") || el === 0
); // );
const finalHtml = startHtml.map( // const finalHtml = startHtml.map(
(item) => // (item) =>
`<div class='experience__block'> // `<div class='experience__block'>
<div class="summary__sections__head"> // <div class="summary__sections__head">
<h3>Описание опыта работы</h3> // <h3>Описание опыта работы</h3>
<button>Редактировать</button> // <button>Редактировать</button>
</div> // </div>
<div class="experience__content">${item.split("<h3>")[0]}</div> // <div class="experience__content">${item.split("<h3>")[0]}</div>
</div>` // </div>`
); // );
return { __html: finalHtml.join("") }; // return { __html: finalHtml.join("") };
} // }
//
export const setToken = () => { // export const setToken = () => {
const url = new URL(window.location.href); // const url = new URL(window.location.href);
const urlT = url.searchParams.get("token"); // const urlT = url.searchParams.get("token");
urlT ? sessionStorage.setItem("token", "Bearer " + urlT) : ""; // urlT ? sessionStorage.setItem('token', 'Bearer ' + urlT) : '';
const tParam = urlT || sessionStorage.getItem("token"); // const tParam = urlT || sessionStorage.getItem('token');
return tParam ? { Authorization: tParam } : false; // return tParam ? {"Authorization": tParam} : false
}; //
// };
export const getToken = () => { export const getToken = () => {
const tParam = `Bearer ${localStorage.getItem("auth_token")}`; const tParam = `Bearer ${localStorage.getItem("auth_token")}`;