2023-05-24 13:49:09 +03:00
|
|
|
import React from "react";
|
|
|
|
import { useSelector, useDispatch } from "react-redux";
|
2023-01-16 19:57:55 +03:00
|
|
|
|
2023-05-24 13:49:09 +03:00
|
|
|
import OutstaffingBlock from "../OutstaffingBlock/OutstaffingBlock";
|
|
|
|
import TagSelect from "../Select/TagSelect";
|
|
|
|
import {
|
|
|
|
selectTags,
|
|
|
|
getPositionId,
|
|
|
|
setPositionId,
|
|
|
|
} from "../../redux/outstaffingSlice";
|
2023-01-18 17:37:52 +03:00
|
|
|
|
2023-05-24 13:49:09 +03:00
|
|
|
import front from "../../images/front-end.webp";
|
|
|
|
import back from "../../images/back-end.webp";
|
|
|
|
import design from "../../images/design.webp";
|
2023-01-18 17:37:52 +03:00
|
|
|
|
2023-05-24 13:49:09 +03:00
|
|
|
import "./outstaffing.scss";
|
2021-08-12 17:42:29 +03:00
|
|
|
|
2021-11-30 17:00:58 +03:00
|
|
|
const createSelectPositionHandler =
|
2023-05-24 13:49:09 +03:00
|
|
|
({ positionId, setPositionId, dispatch }) =>
|
|
|
|
(id) => {
|
|
|
|
if (id === positionId) {
|
|
|
|
dispatch(setPositionId(null));
|
|
|
|
} else {
|
|
|
|
dispatch(setPositionId(id));
|
|
|
|
}
|
|
|
|
};
|
2021-08-12 17:42:29 +03:00
|
|
|
|
2021-07-01 14:25:17 +03:00
|
|
|
const Outstaffing = () => {
|
2023-01-13 13:02:48 +03:00
|
|
|
const dispatch = useDispatch();
|
|
|
|
const positionId = useSelector(getPositionId);
|
|
|
|
const tagsArr = useSelector(selectTags);
|
2021-06-01 15:25:01 +03:00
|
|
|
|
2021-11-30 17:00:58 +03:00
|
|
|
const onSelectPosition = createSelectPositionHandler({
|
|
|
|
positionId,
|
|
|
|
setPositionId,
|
2023-05-24 13:49:09 +03:00
|
|
|
dispatch,
|
2023-01-13 13:02:48 +03:00
|
|
|
});
|
2021-06-01 15:25:01 +03:00
|
|
|
return (
|
2023-05-24 13:49:09 +03:00
|
|
|
<>
|
|
|
|
<section className="outstaffing">
|
|
|
|
<div className="row">
|
|
|
|
<div className="col-12 col-xl-4">
|
|
|
|
<OutstaffingBlock
|
|
|
|
dataTags={
|
|
|
|
tagsArr &&
|
|
|
|
tagsArr.flat().filter((tag) => tag.name === "skills_front")
|
|
|
|
}
|
|
|
|
img={front}
|
|
|
|
header="Frontend разработчики"
|
|
|
|
positionId="2"
|
|
|
|
isSelected={positionId === "2"}
|
|
|
|
onSelect={(id) => onSelectPosition(id)}
|
|
|
|
/>
|
|
|
|
</div>
|
|
|
|
<div className="col-12 col-xl-4">
|
|
|
|
<OutstaffingBlock
|
|
|
|
dataTags={
|
|
|
|
tagsArr &&
|
|
|
|
tagsArr.flat().filter((tag) => tag.name === "skills_back")
|
|
|
|
}
|
|
|
|
img={back}
|
|
|
|
header="Backend разработчики"
|
|
|
|
positionId="1"
|
|
|
|
isSelected={positionId === "1"}
|
|
|
|
onSelect={(id) => onSelectPosition(id)}
|
|
|
|
/>
|
|
|
|
</div>
|
|
|
|
<div className="col-12 col-xl-4">
|
|
|
|
<OutstaffingBlock
|
|
|
|
dataTags={
|
|
|
|
tagsArr &&
|
|
|
|
tagsArr.flat().filter((tag) => tag.name === "skills_design")
|
|
|
|
}
|
|
|
|
img={design}
|
|
|
|
header="Дизайн проектов"
|
|
|
|
positionId="5"
|
|
|
|
isSelected={positionId === "5"}
|
|
|
|
onSelect={(id) => onSelectPosition(id)}
|
|
|
|
/>
|
2021-11-30 17:00:58 +03:00
|
|
|
</div>
|
2023-05-24 13:49:09 +03:00
|
|
|
</div>
|
|
|
|
</section>
|
|
|
|
<TagSelect />
|
|
|
|
</>
|
|
|
|
);
|
2023-01-13 13:02:48 +03:00
|
|
|
};
|
2021-06-01 15:25:01 +03:00
|
|
|
|
2023-05-24 13:49:09 +03:00
|
|
|
export default Outstaffing;
|