all repos — caroster @ 5d5e4ac4d7656640903b1bbc356776619411befb

[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                size="small"
41                color="primary"
42                edge="end"
43                onClick={() => onClick(index)}
44              >
45                <Icon>{icon}</Icon>
46              </IconButton>
47            }
48          />
49        ))}
50    </div>
51  );
52};
53
54const useStyles = makeStyles(theme => ({
55  container: {
56    padding: theme.spacing(1, 0),
57  },
58}));
59
60export default PassengersList;