diff --git a/src/components/Common/Loader/Loader.jsx b/src/components/Common/Loader/Loader.jsx index d61acb83..7a956f32 100644 --- a/src/components/Common/Loader/Loader.jsx +++ b/src/components/Common/Loader/Loader.jsx @@ -8,7 +8,7 @@ export const Loader = ({ width = 50, height = 50, style }) => {
diff --git a/src/components/Common/Loader/loader.scss b/src/components/Common/Loader/loader.scss index 980447e7..610c1161 100644 --- a/src/components/Common/Loader/loader.scss +++ b/src/components/Common/Loader/loader.scss @@ -5,7 +5,6 @@ justify-content: center; align-items: center; position: relative; - //&:hover { // path { // fill: #6aaf5c; diff --git a/src/components/Modal/Tracker/TrackerModal/TrackerModal.jsx b/src/components/Modal/Tracker/TrackerModal/TrackerModal.jsx index c41614db..7d0b38b1 100644 --- a/src/components/Modal/Tracker/TrackerModal/TrackerModal.jsx +++ b/src/components/Modal/Tracker/TrackerModal/TrackerModal.jsx @@ -30,6 +30,7 @@ import { useNotification } from "@hooks/useNotification"; import { getCorrectDate } from "@components/Calendar/calendarHelper"; import BaseButton from "@components/Common/BaseButton/BaseButton"; +import { Loader } from "@components/Common/Loader/Loader"; import ModalLayout from "@components/Common/ModalLayout/ModalLayout"; import arrowRight from "assets/icons/arrows/arrowRightCreateTask.svg"; @@ -90,6 +91,7 @@ export const TrackerModal = ({ const [deadLineDate, setDeadLineDate] = useState(""); const [datePickerOpen, setDatePickerOpen] = useState(false); const [startDate, setStartDate] = useState(new Date()); + const [loader, setLoader] = useState(false); const priority = [ { @@ -138,6 +140,8 @@ export const TrackerModal = ({ return; } + setLoader(true); + apiRequest("/task/create-task", { method: "POST", data: { @@ -158,6 +162,7 @@ export const TrackerModal = ({ text: "Задача с таким именем уже существует", type: "error" }); + setLoader(false); } else { for (let i = 0; i < taskTags.length; i++) { apiRequest("/mark/attach", { @@ -185,9 +190,11 @@ export const TrackerModal = ({ setDescriptionTicket(""); setSelectedExecutorTask("Выберите исполнителя"); setSelectedPriority(null); + setLoader(false); }); } else { setActive(false); + setLoader(false); setValueTicket(""); setDescriptionTicket(""); dispatch(setProjectBoardFetch(projectBoard.id)); @@ -703,9 +710,13 @@ export const TrackerModal = ({
- - Создать - + {loader ? ( + + ) : ( + + Создать + + )} )} diff --git a/src/components/Notification/notification.scss b/src/components/Notification/notification.scss index 7bf0b0fd..9cdba5ce 100644 --- a/src/components/Notification/notification.scss +++ b/src/components/Notification/notification.scss @@ -5,7 +5,7 @@ position: fixed; bottom: 25px; right: 25px; - z-index: 20; + z-index: 10000; &__info { display: flex; diff --git a/src/components/ProfileCalendar/ProfileCalendarComponent.jsx b/src/components/ProfileCalendar/ProfileCalendarComponent.jsx index 6899f2c8..a1a0a580 100644 --- a/src/components/ProfileCalendar/ProfileCalendarComponent.jsx +++ b/src/components/ProfileCalendar/ProfileCalendarComponent.jsx @@ -286,15 +286,15 @@ export const ProfileCalendarComponent = React.memo( ? `${getCorrectDate(startDate)} - ${getCorrectDate(endDate)}` : `${getCorrectDate(endDate)} - ${getCorrectDate(startDate)}` : activePeriod - ? "Выберите диапазон на календаре" - : "Выбрать диапазон"} + ? "Выберите диапазон на календаре" + : "Выбрать диапазон"} {totalRangeHours ? `${totalRangeHours} ${hourOfNum(totalRangeHours)}` : endDate - ? "0 часов" - : ""} + ? "0 часов" + : ""} {endDate && ( { } useEffect(() => { + initListeners(); apiRequest(`/profile/positions-list`).then((el) => setSpecializationList(el) ); @@ -141,6 +142,31 @@ export const PartnerAddRequest = () => { } }; + const initListeners = () => { + document.addEventListener("click", closeByClickingOut); + }; + + const closeByClickingOut = (event) => { + const path = event.path || (event.composedPath && event.composedPath()); + + if ( + event && + !path.find( + (div) => + div.classList && + (div.classList.contains("form__block__section__selects") || + div.classList.contains("form__block__dropDown") || + div.classList.contains("form__block__skills") || + div.classList.contains("form__block__section__select")) + ) + ) { + setOpenSkillsSelect(false); + setOpenSpecializationListOpen(false); + setOpenLevelList(false); + setOpenCountList(false); + } + }; + return (
diff --git a/src/pages/Quiz/QuizPage.js b/src/pages/Quiz/QuizPage.js index ddf102c8..0479ae75 100644 --- a/src/pages/Quiz/QuizPage.js +++ b/src/pages/Quiz/QuizPage.js @@ -7,6 +7,7 @@ import { apiRequest } from "@api/request"; import CategoriesItem from "@components/CategoriesItem/CategoriesItem"; import { Footer } from "@components/Common/Footer/Footer"; +import { Loader } from "@components/Common/Loader/Loader"; import { Navigation } from "@components/Navigation/Navigation"; import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs"; import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader"; @@ -27,7 +28,8 @@ import BackEndImg from "assets/images/partnerProfile/personalBackEnd.svg"; import "./quiz-page.scss"; export const QuizPage = () => { - const [questionnaires, setQuestionnaires] = useState(null); + const [questionnaires, setQuestionnaires] = useState([]); + const [loader, setLoader] = useState(false); const dispatch = useDispatch(); const [personalInfoItems] = useState([ { @@ -102,8 +104,12 @@ export const QuizPage = () => { const [selectedCategory, setSetSelectedCategory] = useState(false); useEffect(() => { + setLoader(true); apiRequest(`/user-questionnaire/questionnaires-list?user_id=${userId}`) - .then((res) => setQuestionnaires(res)) + .then((res) => { + setQuestionnaires(res); + setLoader(false); + }) .catch((e) => console.log(e)); }, []); @@ -122,7 +128,9 @@ export const QuizPage = () => {
{!selectedCategory ? "Тестирование" : "Замена специализации"}
- {!selectedCategory && ( + {loader ? ( + + ) : ( <> {/*
*/} {/* */} diff --git a/src/pages/Quiz/QuizReportPage.js b/src/pages/Quiz/QuizReportPage.js index 7a30b1e8..79c7a6c8 100644 --- a/src/pages/Quiz/QuizReportPage.js +++ b/src/pages/Quiz/QuizReportPage.js @@ -7,6 +7,7 @@ import { selectedTest } from "@redux/quizSlice"; import { apiRequest } from "@api/request"; import { Footer } from "@components/Common/Footer/Footer"; +import { Loader } from "@components/Common/Loader/Loader"; import { Navigation } from "@components/Navigation/Navigation"; import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs"; import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader"; @@ -23,16 +24,19 @@ export const QuizReportPage = () => { navigate("/Quiz"); } + const [testInfo, setTestInfo] = useState({}); + const [loader, setLoader] = useState(false); + useEffect(() => { + setLoader(true); apiRequest( `/user-questionnaire/questionnaire-completed?user_questionnaire_uuid=${params.uuid}` ).then((res) => { setTestInfo(res); + setLoader(false); }); }, []); - const [testInfo, setTestInfo] = useState({}); - return (
@@ -46,13 +50,19 @@ export const QuizReportPage = () => { { name: "Отчет по тестированию", link: "/profile/quiz" } ]} /> -
- Отчет по тестированию позиции {testInfo.questionnaire_title} -
-
- -
- + {loader ? ( + + ) : ( + <> +
+ Отчет по тестированию позиции {testInfo.questionnaire_title} +
+
+ +
+ + + )}