/ frontend / containers / Travel / PassengerActions.tsx
PassengerActions.tsx
 1  import {Box, Icon, IconButton} from '@mui/material';
 2  import usePermissions from '../../hooks/usePermissions';
 3  import useActions from './useActions';
 4  import {PassengerEntity, TravelEntity} from '../../generated/graphql';
 5  
 6  type Props = {
 7    passenger: PassengerEntity;
 8    travel: TravelEntity;
 9    setFocusPassenger: (passenger: PassengerEntity) => void;
10  };
11  
12  const PassengerActions = (props: Props) => {
13    const {passenger, travel, setFocusPassenger} = props;
14    const {
15      userPermissions: {canDeletePassenger, canSeePassengerDetails},
16    } = usePermissions();
17    const actions = useActions({travel});
18  
19    return (
20      <Box display="flex">
21        {canDeletePassenger(passenger) && {
22            id: passenger.id,
23            attributes: {
24              ...passenger.attributes,
25              travel: {data: travel},
26            },
27          } && (
28            <IconButton
29              color="primary"
30              onClick={() => actions.removePassengerFromTravel(passenger.id)}
31              tabIndex={-1}
32            >
33              <Icon>delete_outline</Icon>
34            </IconButton>
35          )}
36        {canSeePassengerDetails(passenger) && (
37          <IconButton
38            color="primary"
39            onClick={() => setFocusPassenger(passenger)}
40          >
41            <Icon>info_outlined</Icon>
42          </IconButton>
43        )}
44      </Box>
45    );
46  };
47  
48  export default PassengerActions;