all repos — caroster @ 010e7c4c0be09d2510ffab44ec663174a79d5192

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

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

 1import React from 'react';
 2import IconButton from '@material-ui/core/IconButton';
 3import Icon from '@material-ui/core/Icon';
 4import {makeStyles} from '@material-ui/core/styles';
 5import Input from './Input';
 6import Passenger from './Passenger';
 7
 8const PassengersList = ({
 9  hideEmpty,
10  passengers,
11  places = 0,
12  addPassenger,
13  icon,
14  onClick,
15}) => {
16  const classes = useStyles();
17
18  let list = passengers;
19
20  if (!hideEmpty) {
21    const emptyList = [...Array(places)];
22    list = Array.isArray(passengers)
23      ? emptyList.map((u, index) => passengers[index])
24      : emptyList;
25  }
26
27  const emptyPlaces = !!passengers ? places - passengers.length : places;
28
29  return (
30    <div className={classes.container}>
31      {emptyPlaces > 0 && <Input addPassenger={addPassenger} />}
32      {!!places &&
33        !!list &&
34        list.map((passenger, index) => (
35          <Passenger
36            key={index}
37            passenger={passenger}
38            button={
39              <IconButton
40                edge="end"
41                size="small"
42                onClick={() => onClick(index)}
43              >
44                <Icon>{icon}</Icon>
45              </IconButton>
46            }
47          />
48        ))}
49    </div>
50  );
51};
52
53const useStyles = makeStyles(theme => ({
54  container: {
55    padding: theme.spacing(1, 0),
56  },
57}));
58
59export default PassengersList;