diff --git a/src/components/UI/ModalAdd/ModalAdd.js b/src/components/UI/ModalAdd/ModalAdd.js new file mode 100644 index 00000000..f16c8240 --- /dev/null +++ b/src/components/UI/ModalAdd/ModalAdd.js @@ -0,0 +1,19 @@ +import React from "react"; + +import "./modalAdd.scss"; + +export const ModalAdd = ({ children, active, setActive }) => { + return ( +
setActive(false)} + > +
e.stopPropagation()}> + {children} + setActive(false)}> +
+
+ ); +}; + +export default ModalAdd; diff --git a/src/components/UI/ModalAdd/modalAdd.scss b/src/components/UI/ModalAdd/modalAdd.scss new file mode 100644 index 00000000..86a6580d --- /dev/null +++ b/src/components/UI/ModalAdd/modalAdd.scss @@ -0,0 +1,100 @@ +.modal-add { + z-index: 9; + height: 100%; + width: 100%; + background-color: rgba(0, 0, 0, 0.11); + position: fixed; + top: 0; + left: 0; + display: flex; + align-items: center; + justify-content: center; + transform: scale(0); + + &__content { + position: relative; + width: 424px; + height: 248px; + background: linear-gradient(180deg, #ffffff 0%, #ebebeb 100%); + border-radius: 40px; + + padding: 15px; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + } + + .title-project { + display: flex; + align-items: flex-start; + flex-direction: column; + + .input-container { + width: 287px; + height: 35px; + background: #ffffff; + border-radius: 8px; + } + + h4 { + font-weight: 500; + font-size: 22px; + line-height: 26px; + color: #263238; + margin-bottom: 22px; + } + } + + .name-project { + margin-left: 10px; + border: none; + outline: none; + height: 100%; + width: 90%; + font-size: 14px; + } + + .button-add { + margin: 30px 0 0 0; + width: 130px; + height: 37px; + background: #52b709; + border-radius: 44px; + border: none; + font-weight: 400; + font-size: 15px; + line-height: 32px; + color: #ffffff; + display: flex; + align-items: center; + justify-content: center; + } + + .exit { + cursor: pointer; + position: absolute; + top: 35px; + right: 40px; + + &:before, + &:after { + content: ""; + position: absolute; + width: 16px; + height: 2px; + background: #263238; + } + + &:before { + transform: rotate(45deg); + } + &:after { + transform: rotate(-45deg); + } + } +} + +.modal-add.active { + transform: scale(1); +} diff --git a/src/components/UI/ModalCreate/ModalCreate.js b/src/components/UI/ModalCreate/ModalCreate.js index fbf6099d..de7d8813 100644 --- a/src/components/UI/ModalCreate/ModalCreate.js +++ b/src/components/UI/ModalCreate/ModalCreate.js @@ -4,7 +4,7 @@ import { setProject } from "../../../redux/projectsTrackerSlice"; import "./ModalCreate.scss"; -export const ModalCreate = ({ active, setActive, title, desc }) => { +export const ModalCreate = ({ active, setActive, title }) => { const [inputValue, setInputValue] = useState(""); const dispatch = useDispatch(); @@ -33,7 +33,6 @@ export const ModalCreate = ({ active, setActive, title, desc }) => { >

{title}

-

{desc}

{ description: "Сверстать часть таблицы. Сверстать часть таблицы", dateComplete: "7 марта 2023 г", avatarDo: avatarTest, - project: "Будущее России" + project: "Будущее России", }, { name: "PR - 2245", description: "Сверстать часть таблицы. Сверстать часть таблицы", dateComplete: "7 марта 2023 г", avatarDo: avatarTest, - project: "Будущее России" + project: "Будущее России", }, { name: "PR - 2245", description: "Сверстать часть таблицы. Сверстать часть таблицы", dateComplete: "7 марта 2023 г", avatarDo: avatarTest, - project: "Будущее России" + project: "Будущее России", }, { name: "PR - 2245", description: "Сверстать часть таблицы. Сверстать часть таблицы", dateComplete: "7 марта 2023 г", avatarDo: avatarTest, - project: "Будущее России" + project: "Будущее России", }, { name: "PR - 2245", description: "Сверстать часть таблицы. Сверстать часть таблицы", dateComplete: "7 марта 2023 г", avatarDo: avatarTest, - project: "Будущее России" + project: "Будущее России", }, { name: "PR - 2245", description: "Сверстать часть таблицы. Сверстать часть таблицы", dateComplete: "7 марта 2023 г", avatarDo: avatarTest, - project: "Будущее России" + project: "Будущее России", }, { name: "PR - 2245", description: "Сверстать часть таблицы. Сверстать часть таблицы", dateComplete: "7 марта 2023 г", avatarDo: avatarTest, - project: "Будущее России" + project: "Будущее России", }, { name: "PR - 2245", description: "Сверстать часть таблицы. Сверстать часть таблицы", dateComplete: "7 марта 2023 г", avatarDo: avatarTest, - project: "Будущее России" + project: "Будущее России", }, { name: "PR - 2245", description: "Сверстать часть таблицы. Сверстать часть таблицы", dateComplete: "7 марта 2023 г", avatarDo: avatarTest, - project: "Будущее России" + project: "Будущее России", }, - ]) + ]); const [archiveProjects] = useState([ - { - name: "Будущее России", - date: "7 марта 2023 г" - }, - { - name: "Будущее России", - date: "7 марта 2023 г" - }, - { - name: "Будущее России", - date: "7 марта 2023 г" - }, - { - name: "Будущее России", - date: "7 марта 2023 г" - }, - { - name: "Будущее России", - date: "7 марта 2023 г" - }, - { - name: "Будущее России", - date: "7 марта 2023 г" - }, - { - name: "Будущее России", - date: "7 марта 2023 г" - }, - { - name: "Будущее России", - date: "7 марта 2023 г" - }, - { - name: "Будущее России", - date: "7 марта 2023 г" - }, - ] - ) + { + name: "Будущее России", + date: "7 марта 2023 г", + }, + { + name: "Будущее России", + date: "7 марта 2023 г", + }, + { + name: "Будущее России", + date: "7 марта 2023 г", + }, + { + name: "Будущее России", + date: "7 марта 2023 г", + }, + { + name: "Будущее России", + date: "7 марта 2023 г", + }, + { + name: "Будущее России", + date: "7 марта 2023 г", + }, + { + name: "Будущее России", + date: "7 марта 2023 г", + }, + { + name: "Будущее России", + date: "7 марта 2023 г", + }, + { + name: "Будущее России", + date: "7 марта 2023 г", + }, + ]); const [completeTasks] = useState([ { @@ -245,112 +245,112 @@ export const Tracker = () => { description: "Сверстать часть таблицы. Сверстать часть таблицы", dateComplete: "7 марта 2023 г", avatarDo: avatarTest, - project: "Будущее России" + project: "Будущее России", }, { name: "PR - 2245", description: "Сверстать часть таблицы. Сверстать часть таблицы", dateComplete: "7 марта 2023 г", avatarDo: avatarTest, - project: "Будущее России" + project: "Будущее России", }, { name: "PR - 2245", description: "Сверстать часть таблицы. Сверстать часть таблицы", dateComplete: "7 марта 2023 г", avatarDo: avatarTest, - project: "Будущее России" + project: "Будущее России", }, { name: "PR - 2245", description: "Сверстать часть таблицы. Сверстать часть таблицы", dateComplete: "7 марта 2023 г", avatarDo: avatarTest, - project: "Будущее России" + project: "Будущее России", }, { name: "PR - 2245", description: "Сверстать часть таблицы. Сверстать часть таблицы", dateComplete: "7 марта 2023 г", avatarDo: avatarTest, - project: "Будущее России" + project: "Будущее России", }, { name: "PR - 2245", description: "Сверстать часть таблицы. Сверстать часть таблицы", dateComplete: "7 марта 2023 г", avatarDo: avatarTest, - project: "Будущее России" + project: "Будущее России", }, { name: "PR - 2245", description: "Сверстать часть таблицы. Сверстать часть таблицы", dateComplete: "7 марта 2023 г", avatarDo: avatarTest, - project: "Будущее России" + project: "Будущее России", }, { name: "PR - 2245", description: "Сверстать часть таблицы. Сверстать часть таблицы", dateComplete: "7 марта 2023 г", avatarDo: avatarTest, - project: "Будущее России" + project: "Будущее России", }, { name: "PR - 2245", description: "Сверстать часть таблицы. Сверстать часть таблицы", dateComplete: "7 марта 2023 г", avatarDo: avatarTest, - project: "Будущее России" + project: "Будущее России", }, { name: "PR - 2245", description: "Сверстать часть таблицы. Сверстать часть таблицы", dateComplete: "7 марта 2023 г", avatarDo: avatarTest, - project: "Будущее России" + project: "Будущее России", }, { name: "PR - 2245", description: "Сверстать часть таблицы. Сверстать часть таблицы", dateComplete: "7 марта 2023 г", avatarDo: avatarTest, - project: "Будущее России" + project: "Будущее России", }, { name: "PR - 2245", description: "Сверстать часть таблицы. Сверстать часть таблицы", dateComplete: "7 марта 2023 г", avatarDo: avatarTest, - project: "Будущее России" + project: "Будущее России", }, { name: "PR - 2245", description: "Сверстать часть таблицы. Сверстать часть таблицы", dateComplete: "7 марта 2023 г", avatarDo: avatarTest, - project: "Будущее России" + project: "Будущее России", }, { name: "PR - 2245", description: "Сверстать часть таблицы. Сверстать часть таблицы", dateComplete: "7 марта 2023 г", avatarDo: avatarTest, - project: "Будущее России" + project: "Будущее России", }, { name: "PR - 2245", description: "Сверстать часть таблицы. Сверстать часть таблицы", dateComplete: "7 марта 2023 г", avatarDo: avatarTest, - project: "Будущее России" + project: "Будущее России", }, { name: "PR - 2245", description: "Сверстать часть таблицы. Сверстать часть таблицы", dateComplete: "7 марта 2023 г", avatarDo: avatarTest, - project: "Будущее России" + project: "Будущее России", }, ]); @@ -358,6 +358,7 @@ export const Tracker = () => { // Modal State const [modalActiveTicket, setModalActiveTicket] = useState(false); + const [modalAddWorker, setModalAddWorker] = useState(false); const [modalCreateProject, setModalCreateProject] = useState(false); const [modalCreateColl, setModalCreateColl] = useState(false); const [modalCreateTiket, setModalCreateTiket] = useState(false); @@ -365,7 +366,7 @@ export const Tracker = () => { const [valueColl, setValueColl] = useState(""); // - const [projectTasksOpen, setProjectTasksOpen] = useState(false) + const [projectTasksOpen, setProjectTasksOpen] = useState(false); const [selectedTab, setSelectedTab] = useState({ name: "", @@ -385,7 +386,7 @@ export const Tracker = () => { const toggleTabs = (index) => { if (projectTasksOpen) { - setProjectTasksOpen(false) + setProjectTasksOpen(false); } setToggleTab(index); }; @@ -532,10 +533,11 @@ export const Tracker = () => {
-

Управление проектами с трекером

@@ -543,22 +545,22 @@ export const Tracker = () => {
toggleTabs(1)} + className={toggleTab === 1 ? "tab active-tab" : "tab"} + onClick={() => toggleTabs(1)} > img

Проекты

toggleTabs(2)} + className={toggleTab === 2 ? "tab active-tab" : "tab"} + onClick={() => toggleTabs(2)} > img

Все мои задачи

toggleTabs(3)} + className={toggleTab === 3 ? "tab active-tab" : "tab"} + onClick={() => toggleTabs(3)} > img

Архив

@@ -566,94 +568,102 @@ export const Tracker = () => {
- {Boolean(projects.length) && !projectTasksOpen && + {Boolean(projects.length) && + !projectTasksOpen && projects.map((project, index) => { return ( -
setProjectTasksOpen(true)}> -

{project.name}

-
-

Открытые задачи

- {project.count} - + -
+
setProjectTasksOpen(true)} + > +

{project.name}

+
+

Открытые задачи

+ {project.count} + +
+
); })} - {!Boolean(projects.length) && !projectTasksOpen && -
-
-
- noProjectImg -

Создайте свой первый проект

-
- + {!Boolean(projects.length) && !projectTasksOpen && ( +
+
+
+ noProjectImg +

Создайте свой первый проект

-

Ставьте задачи, следите за прогрессом, ведите учёт рабочего времени

+
- } - {Boolean(projects.length) && !projectTasksOpen && +

+ Ставьте задачи, следите за прогрессом, ведите учёт рабочего + времени +

+
+ )} + {Boolean(projects.length) && !projectTasksOpen && (
- -

Ставьте задачи, следите за прогрессом, ведите учёт рабочего времени

+

+ Ставьте задачи, следите за прогрессом, ведите учёт рабочего + времени +

- } + )}

Проект : Разработка трекера

-
setModalCreateColl(false)} + + -
e.stopPropagation()} - > -
-

Введите название колонки

-
- setValueColl(e.target.value)} - > -
+
+

Введите название колонки

+
+ setValueColl(e.target.value)} + >
-
-
+ + +
- setModalCreateColl(true)} - > - + - + setModalCreateColl(true)}>+

добавить задачу в проект

@@ -671,183 +681,173 @@ export const Tracker = () => { Мои arrow
-
setProjectTasksOpen(false)}> +
setProjectTasksOpen(false)} + >

Вернуться на проекты

- arrow + arrow
-
setModalCreateTiket(false)} - > -
e.stopPropagation()} - > -
-

Введите название карточки

-
- setValueTiket(e.target.value)} - > -
+ +
+

Введите название карточки

+
+ setValueTiket(e.target.value)} + >
-
-
+ +
{tabTaskMok.map((section, wrapperIndex) => { return ( -
dragOverHandler(e)} - onDragEnter={(e) => dragEnterHandler(wrapperIndex)} - onDrop={(e) => dragDropHandler(e, wrapperIndex)} - className={`tasks__board ${ - section.tasks.length >= 3 ? "tasks__board__more" : "" - } ${ - wrapperHover[wrapperIndex] - ? "tasks__board__hover" - : "" - }`} - > -
- - {section.name} - -
- - selectedTabTask( - e, - wrapperIndex, - section.name, - section.tasks - ) - } - > - + - - ... -
-
- {section.tasks.map((task, index) => { - if (index > 2) { - if (!section.open) { - return; +
dragOverHandler(e)} + onDragEnter={(e) => dragEnterHandler(wrapperIndex)} + onDrop={(e) => dragDropHandler(e, wrapperIndex)} + className={`tasks__board ${ + section.tasks.length >= 3 ? "tasks__board__more" : "" + } ${ + wrapperHover[wrapperIndex] ? "tasks__board__hover" : "" + }`} + > +
+ + {section.name} + +
+ + selectedTabTask( + e, + wrapperIndex, + section.name, + section.tasks + ) } - } - return ( -
- dragStartHandler(e, task, wrapperIndex) - } - onDragEnd={(e) => dragEndHandler(e)} - onClick={() => setModalActiveTicket(true)} - > -
-

{task.task}

-
-

- {task.description} -

-
-
- commentsImg - {task.comments} коментариев -
-
- filesImg - {task.files} файлов -
-
- avatar - avatar -
-
-
- ); - })} - {section.tasks.length > 3 && ( - toggleMoreTasks(wrapperIndex)} - > - {section.open ? "-" : "+"} - - )} + > + + +
+ ... +
+ {section.tasks.map((task, index) => { + if (index > 2) { + if (!section.open) { + return; + } + } + return ( +
+ dragStartHandler(e, task, wrapperIndex) + } + onDragEnd={(e) => dragEndHandler(e)} + onClick={() => setModalActiveTicket(true)} + > +
+

{task.task}

+
+

+ {task.description} +

+
+
+ commentsImg + {task.comments} коментариев +
+
+ filesImg + {task.files} файлов +
+
+ avatar + avatar +
+
+
+ ); + })} + {section.tasks.length > 3 && ( + toggleMoreTasks(wrapperIndex)} + > + {section.open ? "-" : "+"} + + )} +
); })}

Список всех задач

search filterArchiveTasks(event)} + type="text" + placeholder="Найти задачу" + onChange={(event) => filterArchiveTasks(event)} />
{allTasks.map((task, index) => { - return( -
-
-
{task.name}
-

{task.description}

-
-
- avatar -
-

{task.project}

- {task.dateComplete} -
-
+ return ( +
+
+
{task.name}
+

{task.description}

+
+
+ avatar +
+

{task.project}

+ {task.dateComplete}
- ) - }) - } +
+
+ ); + })}
@@ -856,36 +856,36 @@ export const Tracker = () => {
search filterArchiveTasks(event)} + type="text" + placeholder="Найти задачу" + onChange={(event) => filterArchiveTasks(event)} />
- {Boolean(filterCompleteTasks.length) ? + {Boolean(filterCompleteTasks.length) ? ( filterCompleteTasks.map((task, index) => { return ( -
-
-

{task.description}

-

{task.dateComplete}

-
-
- avatar -
- Проект -

{task.project}

-
+
+
+

{task.description}

+

{task.dateComplete}

+
+
+ avatar +
+ Проект +

{task.project}

+
); }) - : + ) : (

В архиве задач нет

- } + )}
@@ -894,22 +894,22 @@ export const Tracker = () => {

{archiveProjects.length} проект(ов)

- {Boolean(archiveProjects) ? + {Boolean(archiveProjects) ? ( archiveProjects.map((project, index) => { - return ( -
-
-

{project.name}

-

{project.date}

-
-
- ) - }) - : + return ( +
+
+

{project.name}

+

{project.date}

+
+
+ ); + }) + ) : (

В архиве проектов нет

- } + )}