all repos — caroster @ a5cf0e5ec409bf5e3c76c95bccb10adaad3758e2

[Octree] Group carpool to your event https://caroster.io

app/src/containers/CarColumns/index.js (view raw)

 1import React, { useMemo } from "react";
 2import Slider from "react-slick";
 3import Container from "@material-ui/core/Container";
 4import { makeStyles } from "@material-ui/core/styles";
 5import Car from "./Car";
 6import AddCar from "./AddCar";
 7import { useEvent } from "../../contexts/Event";
 8import { useStrapi } from "strapi-react-context";
 9
10const settings = {
11  dots: false,
12  infinite: false,
13  speed: 500,
14  slidesToShow: 5,
15  slidesToScroll: 1,
16  arrows: false,
17  lazyLoad: true,
18  swipeToSlide: true,
19  swipe: true,
20  responsive: [
21    {
22      breakpoint: 600,
23      settings: {
24        slidesToShow: 1,
25      },
26    },
27  ],
28};
29
30const CarColumns = ({ ...props }) => {
31  const classes = useStyles();
32  const strapi = useStrapi();
33  const { event } = useEvent();
34
35  const cars = useMemo(
36    () => strapi.stores.cars?.filter((car) => car?.event?.id === event?.id),
37    [strapi.stores.cars, event]
38  );
39
40  return (
41    <div>
42      <Slider {...settings}>
43        {cars &&
44          cars.map((car) => (
45            <Container key={car.id} maxWidth="sm" className={classes.slide}>
46              <Car car={car} {...props} />
47            </Container>
48          ))}
49        <Container maxWidth="sm" className={classes.slide}>
50          <AddCar {...props} />
51        </Container>
52      </Slider>
53    </div>
54  );
55};
56
57const useStyles = makeStyles((theme) => ({
58  slide: {
59    height: `calc(100vh - ${theme.mixins.toolbar.minHeight}px)`,
60    outline: "none",
61    padding: theme.spacing(2),
62  },
63}));
64
65export default CarColumns;