all repos — caroster @ 068c5d4e57574e59dfa4cf72bf56584a62f46aa8

[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 as Lang} from '../../generated/graphql';
 9import withLanguagesSelection, {
10  LanguageSelectionComponentProps,
11} from './withLanguagesSelection';
12
13const IconLanguageSelection = ({
14  language,
15  onChangeLang,
16  displayMenu,
17}: LanguageSelectionComponentProps & {displayMenu?: boolean}) => {
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: Lang) => {
26    setAnchorEl(null);
27    onChangeLang(lang);
28  };
29
30  return (
31    <>
32      <Box
33        position="absolute"
34        top={displayMenu ? 56 : 0}
35        right={0}
36        zIndex={1050}
37        p={1}
38      >
39        <IconButton
40          color="primary"
41          aria-label="Languages"
42          onClick={handleClick}
43        >
44          <Icon>language</Icon>
45        </IconButton>
46      </Box>
47      <Menu
48        id="LanguagesMenu"
49        anchorEl={anchorEl}
50        keepMounted
51        open={Boolean(anchorEl)}
52        onClose={() => setAnchorEl(null)}
53      >
54        <MenuItem
55          disabled={language === Lang.Fr}
56          onClick={() => onConfirm(Lang.Fr)}
57        >{t`languages.fr`}</MenuItem>
58        <MenuItem
59          disabled={language === Lang.En}
60          onClick={() => onConfirm(Lang.En)}
61        >{t`languages.en`}</MenuItem>
62      </Menu>
63    </>
64  );
65};
66
67export default withLanguagesSelection(IconLanguageSelection);