137 lines
3.2 KiB
JavaScript
Raw Normal View History

2021-11-30 16:00:58 +02:00
import React from 'react'
import OutsideClickHandler from 'react-outside-click-handler'
import {useDispatch, useSelector} from 'react-redux'
2021-11-30 16:00:58 +02:00
import {
selectItems,
selectedItems,
profiles,
2021-11-30 16:00:58 +02:00
} from '../../redux/outstaffingSlice'
import {apiRequest} from "../../api/request";
2021-11-30 16:00:58 +02:00
import './outstaffingBlock.scss'
const handlePositionClick = (
{
dispatch,
positionId,
isSelected,
onSelect,
apiRequest
}) => {
2021-11-30 16:00:58 +02:00
if (isSelected) {
apiRequest('/profile', {
params: {
limit: 1000
},
2021-11-30 16:00:58 +02:00
}).then((profileArr) => {
dispatch(profiles(profileArr));
dispatch(selectedItems([]));
2021-11-30 16:00:58 +02:00
onSelect(positionId)
})
} else {
apiRequest('/profile', {
params: {
limit: '1000',
position_id: positionId
},
}).then((res) => {
dispatch(profiles(res));
dispatch(selectedItems([]));
2021-11-30 16:00:58 +02:00
onSelect(positionId)
})
}
};
2021-11-30 16:00:58 +02:00
const OutstaffingBlock = (
{
dataTags = [],
selected,
img,
header,
positionId,
isSelected,
onSelect
}) => {
2021-11-30 16:00:58 +02:00
const dispatch = useDispatch();
2021-11-30 16:00:58 +02:00
const itemsArr = useSelector(selectItems);
2021-11-30 16:00:58 +02:00
2021-11-30 16:00:58 +02:00
const handleBlockClick = (item, id) => {
if (!itemsArr.find((el) => item === el.value)) {
dispatch(selectedItems([...itemsArr, {id, value: item, label: item}]))
2021-11-30 16:00:58 +02:00
}
};
2021-11-30 16:00:58 +02:00
let classes;
2021-11-30 16:00:58 +02:00
dataTags.forEach((el) => {
if (el.name === 'skills_back') {
classes = 'back'
} else if (el.name === 'skills_design') {
classes = 'des'
} else if (el.name === 'skills_front') {
classes = 'front'
}
});
2021-11-30 16:00:58 +02:00
return (
<OutsideClickHandler
onOutsideClick={() => {
isSelected && onSelect(null)
}}
2021-11-30 16:00:58 +02:00
>
<div
className={`outstaffing-block${
isSelected ? ' outstaffing-block__selected' : ''
}`}
2021-11-30 16:00:58 +02:00
>
<div
className={`outstaffing-block__img ${
selected ? ' outstaffing-block__border' : ''
}`}
onClick={() =>
handlePositionClick({
dispatch,
positionId,
isSelected,
onSelect,
apiRequest
})
}
>
<h3>{header}</h3>
<img className={classes} src={img} alt='img'/>
</div>
<div
className={`${
selected
? 'outstaffing-block__mobile--block'
: 'outstaffing-block__mobile--none'
}`}
>
<p className='outstaffing-block__text'># Популярный стек</p>
{dataTags && (
<ul className='outstaffing-block__items'>
{dataTags.map((item) => (
<li
key={item.id}
onClick={() => handleBlockClick(item.value, item.id)}
>
{item.value}
</li>
))}
</ul>
)}
</div>
2021-11-30 16:00:58 +02:00
</div>
</OutsideClickHandler>
2021-11-30 16:00:58 +02:00
)
};
2021-11-30 16:00:58 +02:00
export default OutstaffingBlock