summary-skills #1
@ -19,6 +19,8 @@ import rightArrow from "assets/icons/arrows/arrowRight.svg";
|
|||||||
import arrow from "assets/icons/arrows/left-arrow.png";
|
import arrow from "assets/icons/arrows/left-arrow.png";
|
||||||
import gitImgItem from "assets/icons/gitItemImg.svg";
|
import gitImgItem from "assets/icons/gitItemImg.svg";
|
||||||
import avatarMok from "assets/images/avatarMok.png";
|
import avatarMok from "assets/images/avatarMok.png";
|
||||||
|
import deleteIcon from "assets/icons/closeProjectPersons.svg";
|
||||||
|
import arrowDown from "assets/icons/arrows/selectArrow.png";
|
||||||
|
|
||||||
import "./summary.scss";
|
import "./summary.scss";
|
||||||
|
|
||||||
@ -30,7 +32,11 @@ export const Summary = () => {
|
|||||||
const [openGit, setOpenGit] = useState(false);
|
const [openGit, setOpenGit] = useState(false);
|
||||||
const [gitInfo, setGitInfo] = useState([]);
|
const [gitInfo, setGitInfo] = useState([]);
|
||||||
const [editSummeryOpen, setEditSummeryOpen] = useState(false);
|
const [editSummeryOpen, setEditSummeryOpen] = useState(false);
|
||||||
|
const [editSkills, setEditSkills] = useState(false)
|
||||||
const [summery, setSummery] = useState("");
|
const [summery, setSummery] = useState("");
|
||||||
|
const [selectedSkills, setSelectedSkills] = useState([])
|
||||||
|
const [selectSkillsOpen, setSelectSkillsOpen] = useState(false)
|
||||||
|
const [skillsList, seSkillsList] = useState([]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
apiRequest(
|
apiRequest(
|
||||||
@ -40,8 +46,27 @@ export const Summary = () => {
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setSummery(profileInfo.vc_text);
|
setSummery(profileInfo.vc_text);
|
||||||
|
setSelectedSkills(profileInfo.skillValues)
|
||||||
}, [profileInfo]);
|
}, [profileInfo]);
|
||||||
|
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
apiRequest(`/skills/get-skills-list`).then((el) => {
|
||||||
|
seSkillsList(el);
|
||||||
|
});
|
||||||
|
}, [])
|
||||||
|
|
||||||
|
function setSkills() {
|
||||||
|
apiRequest("/resume/edit-skills", {
|
||||||
|
method: "PUT",
|
||||||
|
data: {
|
||||||
|
"UserCard": {
|
||||||
|
"skill": selectedSkills.map((item) => item.skill_id)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}).then(() => {});
|
||||||
|
}
|
||||||
|
|
||||||
function editSummery() {
|
function editSummery() {
|
||||||
apiRequest("/resume/edit-text", {
|
apiRequest("/resume/edit-text", {
|
||||||
method: "PUT",
|
method: "PUT",
|
||||||
@ -98,18 +123,67 @@ export const Summary = () => {
|
|||||||
<div className="summary__skills skills__section">
|
<div className="summary__skills skills__section">
|
||||||
<div className="summary__sections__head">
|
<div className="summary__sections__head">
|
||||||
<h3>Основной стек</h3>
|
<h3>Основной стек</h3>
|
||||||
<button>Редактировать</button>
|
<button
|
||||||
|
className={editSkills ? "edit" : ""}
|
||||||
|
onClick={() => {
|
||||||
|
if (editSkills) {
|
||||||
|
setSkills()
|
||||||
|
}
|
||||||
|
setEditSkills(!editSkills)
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{editSkills ? "Сохранить" : "Редактировать"}
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div className="skills__section__items">
|
<div className="skills__section__items">
|
||||||
|
{editSkills ?
|
||||||
|
<div className='editSkills'>
|
||||||
|
{selectedSkills &&
|
||||||
|
selectedSkills.map((skill) => {
|
||||||
|
return <span key={skill.skill_id}>
|
||||||
|
{skill.skill.name}
|
||||||
|
<img
|
||||||
|
src={deleteIcon}
|
||||||
|
alt='deleteIcon'
|
||||||
|
onClick={() => setSelectedSkills((prevValue) => prevValue.filter((item) => item.skill_id !== skill.skill_id))}
|
||||||
|
/>
|
||||||
|
</span>
|
||||||
|
})
|
||||||
|
}
|
||||||
|
<div className='selectSkills'>
|
||||||
|
<div className='selectSkills__name' onClick={() => setSelectSkillsOpen(!selectSkillsOpen)}>
|
||||||
|
Выберите скилл
|
||||||
|
<img
|
||||||
|
className={selectSkillsOpen ? "open" : ""}
|
||||||
|
src={arrowDown}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
{selectSkillsOpen &&
|
||||||
|
<div className='selectSkills__dropDown'>
|
||||||
|
{skillsList.map((skill) => {
|
||||||
|
return <p
|
||||||
|
onClick={() => setSelectedSkills((prevValue) => [...prevValue, {'skill': skill, 'skill_id': skill.id}])}
|
||||||
|
key={skill.id}
|
||||||
|
className='selectSkills__item'>
|
||||||
|
{skill.name}
|
||||||
|
</p>
|
||||||
|
})
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
:
|
||||||
<div className="skills__section__items__wrapper">
|
<div className="skills__section__items__wrapper">
|
||||||
{profileInfo.skillValues &&
|
{selectedSkills &&
|
||||||
profileInfo.skillValues.map((skill, index) => (
|
selectedSkills.map((skill, index) => (
|
||||||
<span key={skill.id} className="skill_item">
|
<span key={skill.id} className="skill_item">
|
||||||
{skill.skill.name}
|
{skill.skill.name}
|
||||||
{profileInfo.skillValues.length > index + 1 && ","}
|
{selectedSkills.length > index + 1 && ","}
|
||||||
</span>
|
</span>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
@ -250,6 +250,89 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.editSkills {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 14px;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
span {
|
||||||
|
display: flex;
|
||||||
|
column-gap: 8px;
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
border-radius: 15px;
|
||||||
|
padding: 3px 10px 3px 10px;
|
||||||
|
font-weight: 700;
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 32px;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-transform: uppercase;
|
||||||
|
|
||||||
|
img {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.selectSkills {
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
font-weight: 700;
|
||||||
|
font-size: 16px;
|
||||||
|
|
||||||
|
&__name {
|
||||||
|
display: flex;
|
||||||
|
column-gap: 12px;
|
||||||
|
align-items: center;
|
||||||
|
cursor: pointer;
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
border-radius: 15px;
|
||||||
|
padding: 3px 10px 3px 10px;
|
||||||
|
|
||||||
|
img {
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.open {
|
||||||
|
transform: rotate(180deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__dropDown {
|
||||||
|
position: absolute;
|
||||||
|
background-color: white;
|
||||||
|
border-radius: 12px;
|
||||||
|
max-height: 300px;
|
||||||
|
overflow-y: auto;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
row-gap: 5px;
|
||||||
|
align-items: center;
|
||||||
|
padding: 7px;
|
||||||
|
top: 35px;
|
||||||
|
|
||||||
|
&::-webkit-scrollbar {
|
||||||
|
width: 3px;
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&::-webkit-scrollbar-thumb {
|
||||||
|
background: #cbd9f9;
|
||||||
|
border-radius: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&::-webkit-scrollbar-track {
|
||||||
|
background: #c5c0c6;
|
||||||
|
border-radius: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&__experience {
|
&__experience {
|
||||||
|
Loading…
Reference in New Issue
Block a user