all repos — caroster @ 3c0bbee900166b5b841ef12b7b71dfc5330de1f8

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

frontend/containers/Languages/Icon.tsx (view raw)

 1import {useState} from 'react';
 2import Box from '@material-ui/core/Box';
 3import IconButton from '@material-ui/core/IconButton';
 4import Icon from '@material-ui/core/Icon';
 5import Menu from '@material-ui/core/Menu';
 6import MenuItem from '@material-ui/core/MenuItem';
 7import {useTranslation} from 'react-i18next';
 8import {Enum_Userspermissionsuser_Lang} from '../../generated/graphql';
 9import withLanguagesSelection, {
10  LanguageSelectionComponentProps,
11} from './withLanguagesSelection';
12
13const IconLanguageSelection = ({
14  language,
15  setLanguage,
16  onConfirmCallback,
17}: LanguageSelectionComponentProps) => {
18  const {t} = useTranslation();
19  const [anchorEl, setAnchorEl] = useState(null);
20
21  const handleClick = event => {
22    setAnchorEl(event.currentTarget);
23  };
24
25  const onConfirm = (lang: Enum_Userspermissionsuser_Lang) => {
26    setLanguage(lang);
27    setAnchorEl(null);
28
29    onConfirmCallback(lang);
30  };
31
32  return (
33    <>
34      <Box position="fixed" top={0} right={0} zIndex={1050} p={1}>
35        <IconButton
36          color="primary"
37          aria-label="Languages"
38          onClick={handleClick}
39        >
40          <Icon>language</Icon>
41        </IconButton>
42      </Box>
43      <Menu
44        id="LanguagesMenu"
45        anchorEl={anchorEl}
46        keepMounted
47        open={Boolean(anchorEl)}
48        onClose={() => setAnchorEl(null)}
49      >
50        <MenuItem
51          disabled={language === Enum_Userspermissionsuser_Lang.Fr}
52          onClick={() => onConfirm(Enum_Userspermissionsuser_Lang.Fr)}
53        >{t`languages.fr`}</MenuItem>
54        <MenuItem
55          disabled={language === Enum_Userspermissionsuser_Lang.En}
56          onClick={() => onConfirm(Enum_Userspermissionsuser_Lang.En)}
57        >{t`languages.en`}</MenuItem>
58      </Menu>
59    </>
60  );
61};
62
63export default withLanguagesSelection(IconLanguageSelection);