all repos — caroster @ 54cb6c4b8a7dd7edbecc198ae921331a52d5aa90

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

frontend/containers/PassengersList/index.tsx (view raw)

 1import List from '@mui/material/List';
 2import {styled, useTheme} from '@mui/material/styles';
 3import ListItem from '@mui/material/ListItem';
 4import Passenger from './Passenger';
 5import {PassengerEntity} from '../../generated/graphql';
 6
 7const PREFIX = 'PassengersList';
 8
 9const classes = {
10  container: `${PREFIX}-container`,
11  passenger: `${PREFIX}-passenger`,
12};
13
14const Root = styled('div')(({theme}) => ({
15  [`&.${classes.container}`]: {
16    padding: theme.spacing(0, 0, 1, 0),
17  },
18
19  [`& .${classes.passenger}`]: {
20    paddingRight: theme.spacing(12),
21  },
22}));
23
24interface Props {
25  passengers: PassengerEntity[];
26  Button: ({
27    onClick,
28    disabled,
29  }: {
30    onClick: () => void;
31    disabled?: boolean;
32  }) => JSX.Element;
33  disabled?: boolean;
34  isTravel?: boolean;
35  onPress?: (passengerId: string) => void;
36  onClick?: (passengerId: string) => void;
37}
38
39const PassengersList = (props: Props) => {
40  const {passengers, Button, onClick, onPress, disabled, isTravel} =
41    props;
42  const theme = useTheme();
43
44  let list = passengers;
45
46  return (
47    <Root sx={{padding: theme.spacing(0, 0, 1, 0)}}>
48      <List disablePadding>
49        {!!list &&
50          list.map((passenger, index) => (
51            <ListItem
52              sx={{paddingRight: theme.spacing(12)}}
53              key={index}
54              disabled={disabled}
55              button={!!onPress}
56              onClick={() => !!onPress && onPress(passenger.id)}
57            >
58              <Passenger
59                key={index}
60                passenger={passenger}
61                isTravel={isTravel}
62                button={
63                  <Button
64                    onClick={() => onClick && onClick(passenger.id)}
65                    disabled={disabled}
66                  />
67                }
68              />
69            </ListItem>
70          ))}
71      </List>
72    </Root>
73  );
74};
75
76export default PassengersList;