Compare commits
4 Commits
main
...
current-de
Author | SHA1 | Date | |
---|---|---|---|
|
16a5a1f548 | ||
|
a763c5a69a | ||
|
a7c58b2609 | ||
|
3b8ec8e100 |
3
src/assets/icons/arrows/tableArrow.svg
Normal file
3
src/assets/icons/arrows/tableArrow.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg width="9" height="6" viewBox="0 0 9 6" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M4.11629 5.8584L8.07227 0.858398H0.160323L4.11629 5.8584Z" fill="#2E3A59"/>
|
||||
</svg>
|
After Width: | Height: | Size: 184 B |
@ -299,7 +299,7 @@
|
||||
}
|
||||
|
||||
.pass {
|
||||
background-color: #f7d7c9 !important;
|
||||
background-color: #ba5c33 !important;
|
||||
}
|
||||
|
||||
.today {
|
||||
@ -308,7 +308,7 @@
|
||||
}
|
||||
|
||||
.selected {
|
||||
background-color: #f9f9c3 !important;
|
||||
background-color: #cbcbb4 !important;
|
||||
}
|
||||
|
||||
.block {
|
||||
|
@ -664,11 +664,8 @@ export const ModalTiсket = ({
|
||||
"EasyImage",
|
||||
"Image",
|
||||
"ImageCaption",
|
||||
"ImageStyle",
|
||||
"ImageToolbar",
|
||||
"ImageUpload",
|
||||
"MediaEmbed",
|
||||
"BlockQuote"
|
||||
"MediaEmbed"
|
||||
]
|
||||
}}
|
||||
onChange={(event, editor) => {
|
||||
|
@ -683,11 +683,8 @@ export const TicketFullScreen = () => {
|
||||
"EasyImage",
|
||||
"Image",
|
||||
"ImageCaption",
|
||||
"ImageStyle",
|
||||
"ImageToolbar",
|
||||
"ImageUpload",
|
||||
"MediaEmbed",
|
||||
"BlockQuote"
|
||||
"MediaEmbed"
|
||||
]
|
||||
}}
|
||||
onChange={(event, editor) => {
|
||||
|
@ -624,7 +624,15 @@ export const TrackerModal = ({
|
||||
"bulletedList",
|
||||
"numberedList"
|
||||
],
|
||||
removePlugins: ["BlockQuote"],
|
||||
removePlugins: [
|
||||
"CKFinderUploadAdapter",
|
||||
"CKFinder",
|
||||
"EasyImage",
|
||||
"Image",
|
||||
"ImageCaption",
|
||||
"ImageUpload",
|
||||
"MediaEmbed"
|
||||
],
|
||||
placeholder: "Описание задачи"
|
||||
}}
|
||||
onChange={(event, editor) => {
|
||||
|
@ -34,11 +34,15 @@
|
||||
display: flex;
|
||||
align-items: center;
|
||||
grid-column-gap: 30px;
|
||||
column-gap: 30px;
|
||||
column-gap: 10px;
|
||||
margin-top: 20px;
|
||||
cursor: pointer;
|
||||
text-decoration: none;
|
||||
|
||||
img {
|
||||
width: 23px;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-bottom: 0;
|
||||
font-size: 14px;
|
||||
|
@ -127,11 +127,8 @@ export const TrackerTaskComment = ({
|
||||
"EasyImage",
|
||||
"Image",
|
||||
"ImageCaption",
|
||||
"ImageStyle",
|
||||
"ImageToolbar",
|
||||
"ImageUpload",
|
||||
"MediaEmbed",
|
||||
"BlockQuote"
|
||||
"MediaEmbed"
|
||||
]
|
||||
}}
|
||||
onChange={(event, editor) => {
|
||||
|
@ -34,17 +34,20 @@ export const PartnerAddRequest = () => {
|
||||
const [specializationList, setSpecializationList] = useState([]);
|
||||
const [levelList, setLevelList] = useState([]);
|
||||
const [countList] = useState([1, 2, 3, 4, 5]);
|
||||
const [locationList] = useState(["РФ", "Беларусь"]);
|
||||
const [openSkillsSelect, setOpenSkillsSelect] = useState(false);
|
||||
const [openSpecializationList, setOpenSpecializationListOpen] =
|
||||
useState(false);
|
||||
const [openLevelList, setOpenLevelList] = useState(false);
|
||||
const [openCountList, setOpenCountList] = useState(false);
|
||||
const [openLocationList, setOpenLocationList] = useState(false);
|
||||
const [editRequest, setEditRequest] = useState(false);
|
||||
const [selectedSkills, setSelectedSkills] = useState([]);
|
||||
const [selectedSpecialization, setSelectedSpecialization] = useState(
|
||||
"Выберите специализацию"
|
||||
);
|
||||
const [selectedLevel, setSelectedLevel] = useState("Выберите уровень");
|
||||
const [selectedLocation, setSelectedLocation] = useState("Выберите локацию");
|
||||
const [selectedCount, setSelectedCount] = useState(
|
||||
"Выберите кол-во сотрудников"
|
||||
);
|
||||
@ -177,6 +180,7 @@ export const PartnerAddRequest = () => {
|
||||
setOpenSpecializationListOpen(false);
|
||||
setOpenLevelList(false);
|
||||
setOpenCountList(false);
|
||||
setOpenLocationList(false);
|
||||
}
|
||||
};
|
||||
|
||||
@ -202,280 +206,329 @@ export const PartnerAddRequest = () => {
|
||||
? "Страница редактирования заявки"
|
||||
: "Страница добавления заявки"}
|
||||
</h2>
|
||||
<div className="partner-add-request__section">
|
||||
<div className="partner-add-request__form">
|
||||
<div className="partner-add-request__form__block form__block">
|
||||
<h3 className="form__block__title">Данные открытой позиции</h3>
|
||||
<div className="form__block__section">
|
||||
<h3>Название вакансии</h3>
|
||||
<div className="form__block__section__input">
|
||||
<input
|
||||
value={inputs.title}
|
||||
onChange={(e) =>
|
||||
setInputs((prevValue) => ({
|
||||
...prevValue,
|
||||
title: e.target.value
|
||||
}))
|
||||
}
|
||||
type="text"
|
||||
placeholder="Вакансия"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div className="form__block__section">
|
||||
<h3>Выберите специализацию</h3>
|
||||
<div
|
||||
className="form__block__section__selects"
|
||||
onClick={() => {
|
||||
setOpenSpecializationListOpen(!openSpecializationList);
|
||||
}}
|
||||
>
|
||||
<div className="form__block__section__select">
|
||||
<span>
|
||||
{typeof selectedSpecialization === "string"
|
||||
? selectedSpecialization
|
||||
: selectedSpecialization.name}
|
||||
</span>
|
||||
<img
|
||||
className={openSpecializationList ? "rotate" : ""}
|
||||
src={arrowDown}
|
||||
<div className="partner-add-request__main">
|
||||
<div className="partner-add-request__section">
|
||||
<div className="partner-add-request__form">
|
||||
<div className="partner-add-request__form__block form__block">
|
||||
<h3 className="form__block__title">Данные открытой позиции</h3>
|
||||
<div className="form__block__section">
|
||||
<h3>Название вакансии</h3>
|
||||
<div className="form__block__section__input">
|
||||
<input
|
||||
value={inputs.title}
|
||||
onChange={(e) =>
|
||||
setInputs((prevValue) => ({
|
||||
...prevValue,
|
||||
title: e.target.value
|
||||
}))
|
||||
}
|
||||
type="text"
|
||||
placeholder="Вакансия"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
{openSpecializationList &&
|
||||
Boolean(specializationList.length) && (
|
||||
<div className="form__block__dropDown">
|
||||
{specializationList.map((specialization) => {
|
||||
<div className="form__block__section">
|
||||
<h3>Выберите специализацию</h3>
|
||||
<div
|
||||
className="form__block__section__selects"
|
||||
onClick={() => {
|
||||
setOpenSpecializationListOpen(!openSpecializationList);
|
||||
}}
|
||||
>
|
||||
<div className="form__block__section__select">
|
||||
<span>
|
||||
{typeof selectedSpecialization === "string"
|
||||
? selectedSpecialization
|
||||
: selectedSpecialization.name}
|
||||
</span>
|
||||
<img
|
||||
className={openSpecializationList ? "rotate" : ""}
|
||||
src={arrowDown}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
{openSpecializationList &&
|
||||
Boolean(specializationList.length) && (
|
||||
<div className="form__block__dropDown">
|
||||
{specializationList.map((specialization) => {
|
||||
return (
|
||||
<p
|
||||
key={specialization.id}
|
||||
onClick={() => {
|
||||
setOpenSpecializationListOpen(false);
|
||||
setSelectedSpecialization(specialization);
|
||||
}}
|
||||
>
|
||||
{specialization.name}
|
||||
</p>
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
<div className="form__block__section">
|
||||
<h3>Навыки</h3>
|
||||
<div
|
||||
className="form__block__skills"
|
||||
onClick={() => {
|
||||
setOpenSkillsSelect(true);
|
||||
}}
|
||||
>
|
||||
{Boolean(selectedSkills.length) &&
|
||||
selectedSkills.map((skill, index) => {
|
||||
return (
|
||||
<p
|
||||
key={specialization.id}
|
||||
<div className="skill" key={`selected-${skill.id}`}>
|
||||
<span>{skill.name}</span>
|
||||
<img
|
||||
src={deleteIcon}
|
||||
alt="delete"
|
||||
onClick={() => {
|
||||
setSkills((prevArray) => [...prevArray, skill]);
|
||||
setFilteredSkills((prevArray) => [
|
||||
...prevArray,
|
||||
skill
|
||||
]);
|
||||
setSelectedSkills(
|
||||
selectedSkills.filter((skill, indexSkill) => {
|
||||
return indexSkill !== index;
|
||||
})
|
||||
);
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
})}
|
||||
<input
|
||||
type="text"
|
||||
placeholder="Выберите навыки"
|
||||
onChange={(e) => {
|
||||
setFilteredSkills(
|
||||
skills.filter((skill) => {
|
||||
return skill.name
|
||||
.toLowerCase()
|
||||
.includes(e.target.value.toLowerCase());
|
||||
})
|
||||
);
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
{openSkillsSelect && Boolean(filteredSkills.length) && (
|
||||
<div className="form__block__dropDown">
|
||||
{filteredSkills.map((skill, index) => {
|
||||
return (
|
||||
<span
|
||||
key={skill.id}
|
||||
onClick={() => {
|
||||
setOpenSpecializationListOpen(false);
|
||||
setSelectedSpecialization(specialization);
|
||||
setSelectedSkills((prevArray) => [
|
||||
...prevArray,
|
||||
skill
|
||||
]);
|
||||
setFilteredSkills(
|
||||
filteredSkills.filter((skill, skillIndex) => {
|
||||
return skillIndex !== index;
|
||||
})
|
||||
);
|
||||
setSkills(
|
||||
skills.filter((initSkill) => {
|
||||
return initSkill.id !== skill.id;
|
||||
})
|
||||
);
|
||||
setOpenSkillsSelect(false);
|
||||
}}
|
||||
>
|
||||
{specialization.name}
|
||||
{skill.name}
|
||||
</span>
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
<div className="partner-add-request__form__block form__block">
|
||||
<h3 className="form__block__title">Квалификация</h3>
|
||||
<div className="form__block__section">
|
||||
<h3>Выберите уровень знаний </h3>
|
||||
<div
|
||||
className="form__block__section__select"
|
||||
onClick={() => setOpenLevelList(!openLevelList)}
|
||||
>
|
||||
<span>
|
||||
{typeof selectedLevel === "string"
|
||||
? selectedLevel
|
||||
: selectedLevel.name}
|
||||
</span>
|
||||
<img
|
||||
className={openLevelList ? "rotate" : ""}
|
||||
src={arrowDown}
|
||||
/>
|
||||
</div>
|
||||
{openLevelList &&
|
||||
Boolean(Object.values(levelList).length) && (
|
||||
<div className="form__block__dropDown">
|
||||
{Object.values(levelList).map((level, index) => {
|
||||
return (
|
||||
<p
|
||||
key={level}
|
||||
onClick={() => {
|
||||
setOpenLevelList(false);
|
||||
setSelectedLevel({
|
||||
name: level,
|
||||
id: index + 1
|
||||
});
|
||||
}}
|
||||
>
|
||||
{level}
|
||||
</p>
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
<div className="form__block__section">
|
||||
<h3>Введите необходимое описание</h3>
|
||||
<textarea
|
||||
value={inputs.description}
|
||||
onChange={(e) =>
|
||||
setInputs((prevValue) => ({
|
||||
...prevValue,
|
||||
description: e.target.value
|
||||
}))
|
||||
}
|
||||
/>
|
||||
</div>
|
||||
<div className="form__block__section">
|
||||
<h3>Необходимое количество человек на позицию</h3>
|
||||
<div
|
||||
className="form__block__section__select"
|
||||
onClick={() => setOpenCountList(true)}
|
||||
>
|
||||
<span>{selectedCount}</span>
|
||||
<img
|
||||
className={openCountList ? "rotate" : ""}
|
||||
src={arrowDown}
|
||||
/>
|
||||
</div>
|
||||
{openCountList && (
|
||||
<div className="form__block__dropDown">
|
||||
{countList.map((count) => {
|
||||
return (
|
||||
<p
|
||||
key={count}
|
||||
onClick={() => {
|
||||
setOpenCountList(false);
|
||||
setSelectedCount(count);
|
||||
}}
|
||||
>
|
||||
{count}
|
||||
</p>
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
<div className="form__block__section">
|
||||
<h3>Навыки</h3>
|
||||
<div
|
||||
className="form__block__skills"
|
||||
onClick={() => {
|
||||
setOpenSkillsSelect(true);
|
||||
}}
|
||||
>
|
||||
{Boolean(selectedSkills.length) &&
|
||||
selectedSkills.map((skill, index) => {
|
||||
return (
|
||||
<div className="skill" key={`selected-${skill.id}`}>
|
||||
<span>{skill.name}</span>
|
||||
<img
|
||||
src={deleteIcon}
|
||||
alt="delete"
|
||||
onClick={() => {
|
||||
setSkills((prevArray) => [...prevArray, skill]);
|
||||
setFilteredSkills((prevArray) => [
|
||||
...prevArray,
|
||||
skill
|
||||
]);
|
||||
setSelectedSkills(
|
||||
selectedSkills.filter((skill, indexSkill) => {
|
||||
return indexSkill !== index;
|
||||
})
|
||||
);
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
})}
|
||||
<input
|
||||
type="text"
|
||||
placeholder="Выберите навыки"
|
||||
onChange={(e) => {
|
||||
setFilteredSkills(
|
||||
skills.filter((skill) => {
|
||||
return skill.name
|
||||
.toLowerCase()
|
||||
.includes(e.target.value.toLowerCase());
|
||||
})
|
||||
);
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
{openSkillsSelect && Boolean(filteredSkills.length) && (
|
||||
<div className="form__block__dropDown">
|
||||
{filteredSkills.map((skill, index) => {
|
||||
return (
|
||||
<span
|
||||
key={skill.id}
|
||||
onClick={() => {
|
||||
setSelectedSkills((prevArray) => [
|
||||
...prevArray,
|
||||
skill
|
||||
]);
|
||||
setFilteredSkills(
|
||||
filteredSkills.filter((skill, skillIndex) => {
|
||||
return skillIndex !== index;
|
||||
})
|
||||
);
|
||||
setSkills(
|
||||
skills.filter((initSkill) => {
|
||||
return initSkill.id !== skill.id;
|
||||
})
|
||||
);
|
||||
setOpenSkillsSelect(false);
|
||||
}}
|
||||
>
|
||||
{skill.name}
|
||||
</span>
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
<div className="partner-add-request__form__block form__block">
|
||||
<h3 className="form__block__title">Квалификация</h3>
|
||||
<div className="form__block__section">
|
||||
<h3>Выберите уровень знаний </h3>
|
||||
<div
|
||||
className="form__block__section__select"
|
||||
onClick={() => setOpenLevelList(!openLevelList)}
|
||||
>
|
||||
<span>
|
||||
{typeof selectedLevel === "string"
|
||||
? selectedLevel
|
||||
: selectedLevel.name}
|
||||
</span>
|
||||
<img
|
||||
className={openLevelList ? "rotate" : ""}
|
||||
src={arrowDown}
|
||||
/>
|
||||
<div className="partner-add-request__info">
|
||||
<div className="partner-add-request__info__block">
|
||||
<div className="partner-add-request__info__block__title">
|
||||
<img src={processImg} alt="process" />
|
||||
<h4>Процесс:</h4>
|
||||
</div>
|
||||
{openLevelList && Boolean(Object.values(levelList).length) && (
|
||||
<div className="form__block__dropDown">
|
||||
{Object.values(levelList).map((level, index) => {
|
||||
return (
|
||||
<p
|
||||
key={level}
|
||||
onClick={() => {
|
||||
setOpenLevelList(false);
|
||||
setSelectedLevel({ name: level, id: index + 1 });
|
||||
}}
|
||||
>
|
||||
{level}
|
||||
</p>
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
)}
|
||||
<p>
|
||||
При аутстаффе мы предоставляем вам IT-специалистов при этом
|
||||
они находятся в нашем штате.
|
||||
<br />
|
||||
<br />
|
||||
Вы сможете прособеседовать наших специалистов, посмотреть
|
||||
проекты и Git.
|
||||
</p>
|
||||
</div>
|
||||
<div className="form__block__section">
|
||||
<h3>Введите необходимое описание</h3>
|
||||
<textarea
|
||||
value={inputs.description}
|
||||
onChange={(e) =>
|
||||
setInputs((prevValue) => ({
|
||||
...prevValue,
|
||||
description: e.target.value
|
||||
}))
|
||||
}
|
||||
/>
|
||||
</div>
|
||||
<div className="form__block__section">
|
||||
<h3>Необходимое количество человек на позицию</h3>
|
||||
<div
|
||||
className="form__block__section__select"
|
||||
onClick={() => setOpenCountList(true)}
|
||||
>
|
||||
<span>{selectedCount}</span>
|
||||
<img
|
||||
className={openCountList ? "rotate" : ""}
|
||||
src={arrowDown}
|
||||
/>
|
||||
<div className="partner-add-request__info__block">
|
||||
<div className="partner-add-request__info__block__title">
|
||||
<img src={reportImg} alt="reportImg" />
|
||||
<h4>Отчетность:</h4>
|
||||
</div>
|
||||
{openCountList && (
|
||||
<div className="form__block__dropDown">
|
||||
{countList.map((count) => {
|
||||
return (
|
||||
<p
|
||||
key={count}
|
||||
onClick={() => {
|
||||
setOpenCountList(false);
|
||||
setSelectedCount(count);
|
||||
}}
|
||||
>
|
||||
{count}
|
||||
</p>
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
)}
|
||||
<p>
|
||||
Вы можете обратиться к специалисту напрямую.
|
||||
<br />
|
||||
<br />
|
||||
Каждый день специалисты описывают выполненные работы и
|
||||
затраченные на это часы.
|
||||
<br />
|
||||
<br />
|
||||
Можем выделить руководителя проекта и тестировщиков.
|
||||
</p>
|
||||
</div>
|
||||
<div className="form__block__buttons">
|
||||
<Link to="/profile/requests" className="form__block__cancel">
|
||||
Отмена
|
||||
</Link>
|
||||
<button
|
||||
onClick={() => handler()}
|
||||
className={
|
||||
disableBtn()
|
||||
? "form__block__save"
|
||||
: "form__block__save disable"
|
||||
}
|
||||
>
|
||||
Сохранить
|
||||
</button>
|
||||
<div className="partner-add-request__info__block">
|
||||
<div className="partner-add-request__info__block__title">
|
||||
<img src={documentsImg} alt="documentsImg" />
|
||||
<h4>
|
||||
Обмен <br />
|
||||
документами:
|
||||
</h4>
|
||||
</div>
|
||||
<p>
|
||||
В Личном кабинете платформы получайте отчеты выполненных работ
|
||||
и счеты на согласование и оплату
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="partner-add-request__info">
|
||||
<div className="partner-add-request__info__block">
|
||||
<div className="partner-add-request__info__block__title">
|
||||
<img src={processImg} alt="process" />
|
||||
<h4>Процесс:</h4>
|
||||
<div className="partner-add-request__special">
|
||||
<h4>Основные требования по вакансии</h4>
|
||||
<div className="form__block__section special__select">
|
||||
<h3>Локация</h3>
|
||||
<div
|
||||
className="form__block__section__select"
|
||||
onClick={() => setOpenLocationList(true)}
|
||||
>
|
||||
<span>{selectedLocation}</span>
|
||||
<img
|
||||
className={openLocationList ? "rotate" : ""}
|
||||
src={arrowDown}
|
||||
/>
|
||||
</div>
|
||||
<p>
|
||||
При аутстаффе мы предоставляем вам IT-специалистов при этом они
|
||||
находятся в нашем штате.
|
||||
<br />
|
||||
<br />
|
||||
Вы сможете прособеседовать наших специалистов, посмотреть
|
||||
проекты и Git.
|
||||
</p>
|
||||
{openLocationList && (
|
||||
<div className="form__block__dropDown">
|
||||
{locationList.map((location, index) => {
|
||||
return (
|
||||
<p
|
||||
key={index}
|
||||
onClick={() => {
|
||||
setOpenLocationList(false);
|
||||
setSelectedLocation(location);
|
||||
}}
|
||||
>
|
||||
{location}
|
||||
</p>
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
<div className="partner-add-request__info__block">
|
||||
<div className="partner-add-request__info__block__title">
|
||||
<img src={reportImg} alt="reportImg" />
|
||||
<h4>Отчетность:</h4>
|
||||
<div className="form__block__section">
|
||||
<h3>Ставка</h3>
|
||||
<div className="form__block__section__input special__select">
|
||||
<input type="text" placeholder="Оплата" />
|
||||
</div>
|
||||
<p>
|
||||
Вы можете обратиться к специалисту напрямую.
|
||||
<br />
|
||||
<br />
|
||||
Каждый день специалисты описывают выполненные работы и
|
||||
затраченные на это часы.
|
||||
<br />
|
||||
<br />
|
||||
Можем выделить руководителя проекта и тестировщиков.
|
||||
</p>
|
||||
</div>
|
||||
<div className="partner-add-request__info__block">
|
||||
<div className="partner-add-request__info__block__title">
|
||||
<img src={documentsImg} alt="documentsImg" />
|
||||
<h4>
|
||||
Обмен <br />
|
||||
документами:
|
||||
</h4>
|
||||
</div>
|
||||
<div className="form__block__buttons">
|
||||
<Link to="/profile/requests" className="form__block__cancel">
|
||||
Отмена
|
||||
</Link>
|
||||
<button
|
||||
onClick={() => handler()}
|
||||
className={
|
||||
disableBtn()
|
||||
? "form__block__save"
|
||||
: "form__block__save disable"
|
||||
}
|
||||
>
|
||||
Сохранить
|
||||
</button>
|
||||
<p>
|
||||
В Личном кабинете платформы получайте отчеты выполненных работ и
|
||||
счеты на согласование и оплату
|
||||
Нажимая "Сохранить", вы соглашаетесь с Правилами обработки и
|
||||
использования персональных данных
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -23,6 +23,31 @@
|
||||
line-height: 32px;
|
||||
}
|
||||
|
||||
&__main {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
row-gap: 30px;
|
||||
}
|
||||
|
||||
&__special {
|
||||
background: rgba(255, 255, 255, 1);
|
||||
border-radius: 12px;
|
||||
padding: 41px 45px 35px 55px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
h4 {
|
||||
font-weight: 700;
|
||||
color: rgba(91, 104, 113, 1);
|
||||
font-size: 20px;
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
.special__select {
|
||||
max-width: 450px;
|
||||
}
|
||||
}
|
||||
|
||||
&__section {
|
||||
margin-top: 25px;
|
||||
display: flex;
|
||||
@ -99,6 +124,7 @@
|
||||
font-size: 15px;
|
||||
line-height: 18px;
|
||||
outline: none;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
@ -164,13 +190,23 @@
|
||||
|
||||
&__buttons {
|
||||
display: flex;
|
||||
margin-top: 50px;
|
||||
|
||||
button {
|
||||
max-width: 150px;
|
||||
width: 100%;
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
p {
|
||||
font-weight: 300;
|
||||
font-size: 12px;
|
||||
line-height: 18px;
|
||||
color: rgba(0, 0, 0, 1);
|
||||
margin-left: 50px;
|
||||
max-width: 360px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
|
||||
&__cancel {
|
||||
@ -321,7 +357,7 @@
|
||||
background: #ffffff;
|
||||
border-radius: 12px;
|
||||
width: 100%;
|
||||
padding: 74px 48px 136px 62px;
|
||||
padding: 74px 48px 67px 62px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
row-gap: 61px;
|
||||
|
@ -44,9 +44,25 @@ export const PartnerCategories = () => {
|
||||
const theme = useTheme(getTheme());
|
||||
const [nodes, setNodes] = useState([]);
|
||||
const [initialNodes, setInitialNodes] = useState([]);
|
||||
const [activeTab, setActiveTab] = useState(1);
|
||||
|
||||
const [search, setSearch] = useState("");
|
||||
|
||||
const tabs = [
|
||||
{
|
||||
id: 1,
|
||||
name: "Все"
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
name: "Фронтенд"
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
name: "Бэкенд"
|
||||
}
|
||||
];
|
||||
|
||||
const COLUMNS = [
|
||||
{
|
||||
label: "",
|
||||
@ -256,6 +272,21 @@ export const PartnerCategories = () => {
|
||||
<div className="partner-categories__items">
|
||||
{Boolean(initialNodes.length) ? (
|
||||
<>
|
||||
<div className="table__tabs">
|
||||
{tabs.map((tab) => {
|
||||
return (
|
||||
<button
|
||||
onClick={() => setActiveTab(tab.id)}
|
||||
key={tab.id}
|
||||
className={`table__tab ${
|
||||
tab.id === activeTab ? "table__tab--active" : ""
|
||||
}`}
|
||||
>
|
||||
{tab.name}
|
||||
</button>
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
<label className="table__search" htmlFor="search">
|
||||
Поиск по имени:
|
||||
<input
|
||||
|
@ -204,6 +204,29 @@
|
||||
}
|
||||
}
|
||||
|
||||
&__tabs {
|
||||
margin: 0 auto 36px 18px;
|
||||
background: rgba(240, 242, 245, 1);
|
||||
padding: 4px 8px 4px 8px;
|
||||
border-radius: 6px;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
&__tab {
|
||||
color: rgba(46, 58, 89, 1);
|
||||
font-size: 15px;
|
||||
outline: none;
|
||||
background: none;
|
||||
border: none;
|
||||
padding: 0 12px;
|
||||
|
||||
&--active {
|
||||
background: rgba(255, 255, 255, 1);
|
||||
border-radius: 5px;
|
||||
font-size: 16px;
|
||||
}
|
||||
}
|
||||
|
||||
&__pagination {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
|
@ -243,11 +243,8 @@ export const Summary = () => {
|
||||
"EasyImage",
|
||||
"Image",
|
||||
"ImageCaption",
|
||||
"ImageStyle",
|
||||
"ImageToolbar",
|
||||
"ImageUpload",
|
||||
"MediaEmbed",
|
||||
"BlockQuote"
|
||||
"MediaEmbed"
|
||||
]
|
||||
}}
|
||||
onChange={(event, editor) => {
|
||||
|
@ -64,13 +64,18 @@
|
||||
&__back {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
column-gap: 30px;
|
||||
column-gap: 10px;
|
||||
margin-top: 20px;
|
||||
cursor: pointer;
|
||||
|
||||
&:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
img {
|
||||
width: 23px;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-bottom: 0;
|
||||
font-weight: 400;
|
||||
|
Loading…
Reference in New Issue
Block a user