all repos — caroster @ 354035ce0132854c931c73a0751dbe3d98a8ceb9

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

app/src/containers/WaitingList/CarDialog.js (view raw)

 1import React from 'react';
 2import Slide from '@material-ui/core/Slide';
 3import Dialog from '@material-ui/core/Dialog';
 4import AppBar from '@material-ui/core/AppBar';
 5import Toolbar from '@material-ui/core/Toolbar';
 6import ListItemText from '@material-ui/core/ListItemText';
 7import ListItem from '@material-ui/core/ListItem';
 8import List from '@material-ui/core/List';
 9import IconButton from '@material-ui/core/IconButton';
10import Icon from '@material-ui/core/Icon';
11import {makeStyles} from '@material-ui/core/styles';
12import {useTranslation} from 'react-i18next';
13
14const Transition = React.forwardRef(function Transition(props, ref) {
15  return <Slide direction="up" ref={ref} {...props} />;
16});
17
18const CarDialog = ({cars, open, onClose, onSelect}) => {
19  const classes = useStyles();
20  const {t} = useTranslation();
21
22  return (
23    <Dialog
24      fullScreen
25      open={open}
26      onClose={onClose}
27      TransitionComponent={Transition}
28    >
29      <AppBar>
30        <Toolbar>
31          <IconButton onClick={onClose} color="inherit">
32            <Icon>arrow_back_ios</Icon>
33          </IconButton>
34        </Toolbar>
35      </AppBar>
36      <div className={classes.offset}>
37        <List disablePadding>
38          {cars?.map((car, i) => (
39            <ListItem
40              key={i}
41              button
42              divider
43              disabled={car.passengers?.length === car.seats}
44              onClick={() => onSelect(car)}
45            >
46              <ListItemText
47                primary={car.name}
48                secondary={t('passenger.creation.seats', {
49                  seats: `${car.passengers ? car.passengers.length : 0} / ${
50                    car.seats
51                  }`,
52                })}
53              />
54            </ListItem>
55          ))}
56        </List>
57      </div>
58    </Dialog>
59  );
60};
61
62const useStyles = makeStyles(theme => ({
63  offset: {
64    paddingTop: theme.spacing(7),
65  },
66}));
67
68export default CarDialog;