• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

alkem-io / client-web / #5940

12 Oct 2023 06:58AM UTC coverage: 6.209%. First build
#5940

Pull #4941

travis-ci

Pull Request #4941: New Navigation: Alkemio menu and User menu

173 of 8293 branches covered (0.0%)

Branch coverage included in aggregate %.

94 of 94 new or added lines in 12 files covered. (100.0%)

1296 of 15365 relevant lines covered (8.43%)

0.41 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/core/ui/language/LanguageSelect.tsx
1
import { ReactNode, useState } from 'react';
2
import { Menu, MenuItem, MenuProps } from '@mui/material';
3
import { useTranslation } from 'react-i18next';
4
import { supportedLngs } from '@/core/i18n/config';
5
import { Caption } from '../typography';
6

7
interface ChildProps {
8
  openSelect: (anchorEl: HTMLElement) => void;
9
  closeSelect: () => void;
10
  isOpen: boolean;
11
}
12

13
interface LanguageSelectProps extends Pick<MenuProps, 'anchorOrigin' | 'transformOrigin'> {
14
  children: ({ openSelect, closeSelect, isOpen }: ChildProps) => ReactNode;
15
  zIndex?: number;
16
}
17

×
18
const LanguageSelect = ({ zIndex, children, anchorOrigin, transformOrigin }: LanguageSelectProps) => {
×
19
  const { i18n, t } = useTranslation();
20

×
21
  const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);
×
22
  const isOpen = Boolean(anchorEl);
23

×
24
  const handleClose = () => {
×
25
    setAnchorEl(null);
26
  };
27

×
28
  const handleLanguageSelection = (value: string) => {
×
29
    i18n.changeLanguage(value);
×
30
    setAnchorEl(null);
31
  };
32

×
33
  return (
34
    <>
35
      {children({
36
        isOpen,
37
        openSelect: setAnchorEl,
38
        closeSelect: handleClose,
39
      })}
40
      <Menu
×
41
        id="language-menu"
42
        open={isOpen}
43
        anchorEl={anchorEl}
44
        onClose={handleClose}
45
        sx={{ '.MuiMenu-list': { padding: 0 }, zIndex }}
46
        slotProps={{
47
          list: {
48
            'aria-labelledby': 'language-button',
49
          },
50
        }}
51
        anchorOrigin={anchorOrigin}
52
        transformOrigin={transformOrigin}
53
      >
54
        {supportedLngs.map(lng => (
55
          <MenuItem key={lng} selected={lng === i18n.language} onClick={() => handleLanguageSelection(lng)}>
56
            <Caption lang={lng}>{t(`languages.${lng}` as const)}</Caption>
57
          </MenuItem>
58
        ))}
59
      </Menu>
60
    </>
61
  );
62
};
63

64
export default LanguageSelect;
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc