all repos — caroster @ 8b3a718187d3e9765687e3a91de927242e423fbc

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

frontend/containers/TripAlertsList/TravelSelectionModal.tsx (view raw)

 1import {
 2  Button,
 3  Dialog,
 4  DialogActions,
 5  DialogContent,
 6  DialogTitle,
 7  List,
 8  Typography,
 9} from '@mui/material';
10import {useTranslation} from 'next-i18next';
11import useEventStore from '../../stores/useEventStore';
12import AvailableTravel from '../AssignPassenger/AvailableTravel';
13import {TravelEntity} from '../../generated/graphql';
14
15type Props = {
16  open: boolean;
17  onClose: () => void;
18  onAssign: (travel: TravelEntity) => void;
19};
20
21const TravelSelectionModal = (props: Props) => {
22  const {open, onClose, onAssign} = props;
23  const {t} = useTranslation();
24  const travels = useEventStore(s => s.event?.travels?.data || []);
25
26  return (
27    <Dialog open={open} onClose={onClose}>
28      <DialogTitle>{t`passenger.assign.title`}</DialogTitle>
29      <DialogContent sx={{p: 0}}>
30        {!travels?.length && (
31          <Typography px={3}>{t`passenger.assign.no_travel.title`}</Typography>
32        )}
33        <List disablePadding>
34          {travels?.map(travel => (
35            <AvailableTravel
36              key={travel.id}
37              travel={travel}
38              assign={onAssign}
39            />
40          ))}
41        </List>
42      </DialogContent>
43      <DialogActions>
44        <Button onClick={onClose}>{t`generic.cancel`}</Button>
45      </DialogActions>
46    </Dialog>
47  );
48};
49
50export default TravelSelectionModal;