Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

Offers.js 1.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import React from "react";
  2. import PropTypes from "prop-types";
  3. import SkeletonOfferCard from "../../Cards/OfferCard/SkeletonOfferCard/SkeletonOfferCard";
  4. import OffersList from "./OffersList/OffersList";
  5. import OffersFilterButton from "./OffersFilterButton/OffersFilterButton";
  6. import OffersSearchField from "./OffersSearchField/OffersSearchField";
  7. import OffersNotFound from "./OffersNotFound/OffersNotFound";
  8. const Offers = (props) => {
  9. const offers = props?.offers;
  10. const arrayForMapping = Array.apply(null, Array(4)).map(() => {});
  11. console.log("rerender");
  12. return (
  13. <>
  14. {!props.myOffers && <OffersFilterButton />}
  15. <OffersSearchField />
  16. <OffersNotFound skeleton={props?.skeleton} />
  17. <OffersList
  18. loading={props?.skeleton}
  19. offers={offers}
  20. isAdmin={props.isAdmin}
  21. isGrid={props?.isGrid}
  22. isUsers={props?.isUsers}
  23. users={props?.users}
  24. myOffers={props?.myOffers}
  25. />
  26. {props?.skeleton &&
  27. arrayForMapping.map((item, index) => (
  28. <SkeletonOfferCard key={index} skeleton={props?.skeleton} />
  29. ))}
  30. </>
  31. );
  32. };
  33. Offers.propTypes = {
  34. children: PropTypes.node,
  35. isGrid: PropTypes.bool,
  36. myOffers: PropTypes.bool,
  37. skeleton: PropTypes.bool,
  38. offers: PropTypes.shape({
  39. apply: PropTypes.func,
  40. search: PropTypes.shape({
  41. searchOffers: PropTypes.func,
  42. }),
  43. filters: PropTypes.shape({
  44. numOfFiltersChosen: PropTypes.number,
  45. }),
  46. }),
  47. toggleFilters: PropTypes.func,
  48. isAdmin: PropTypes.bool,
  49. isUsers: PropTypes.bool,
  50. users: PropTypes.array,
  51. };
  52. Offers.defaultProps = {
  53. myOffers: false,
  54. users: [],
  55. isAdmin: false,
  56. isUsers: false,
  57. isGrid: false,
  58. skeleton: false,
  59. toggleFilters: () => {},
  60. offers: {
  61. apply: () => {},
  62. search: {
  63. searchOffers: () => {},
  64. },
  65. filters: {
  66. numOfFiltersChosen: 0,
  67. },
  68. },
  69. };
  70. export default Offers;