Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import React from "react";
  2. import PropTypes from "prop-types";
  3. import {
  4. DownArrowIcon,
  5. HeaderSelect,
  6. SelectOption,
  7. } from "./ReviewsSorting.styled";
  8. import { useState } from "react";
  9. import { useDispatch, useSelector } from "react-redux";
  10. import { selectSelectedReviews } from "../../../store/selectors/reviewSelector";
  11. import { sortReviews } from "../../../util/helpers/reviewsHelper";
  12. import { reviewSortEnum } from "../../../enums/reviewEnum";
  13. import { setReviews } from "../../../store/actions/review/reviewActions";
  14. const ReviewsSorting = () => {
  15. const reviews = useSelector(selectSelectedReviews);
  16. const dispatch = useDispatch();
  17. const [value, setValue] = useState();
  18. const changeValue = (event) => {
  19. dispatch(
  20. setReviews(
  21. sortReviews(
  22. reviews,
  23. event.target.value.value === reviewSortEnum.POSITIVE.value
  24. )
  25. )
  26. );
  27. setValue(event.target.value);
  28. };
  29. return (
  30. <HeaderSelect
  31. value={value || reviewSortEnum.INITIAL}
  32. IconComponent={DownArrowIcon}
  33. onChange={changeValue}
  34. >
  35. <SelectOption style={{ display: "none" }} value={reviewSortEnum.INITIAL}>
  36. {reviewSortEnum.INITIAL.mainText}
  37. </SelectOption>
  38. {Object.keys(reviewSortEnum).map((property) => {
  39. if (reviewSortEnum[property].value === 0) return;
  40. return (
  41. <SelectOption
  42. value={reviewSortEnum[property]}
  43. key={reviewSortEnum[property].value}
  44. >
  45. {reviewSortEnum[property].mainText}
  46. </SelectOption>
  47. );
  48. })}
  49. </HeaderSelect>
  50. );
  51. };
  52. ReviewsSorting.propTypes = {
  53. children: PropTypes.node,
  54. };
  55. export default ReviewsSorting;