Files
Cockatrice/webclient/src/components/LanguageDropdown/LanguageDropdown.tsx
Jeremy Letto f619ef23fd Upgrade to MUI 5 (#4606)
* save work

* fix perf issue on i18n rollup

* fix reset styling

* move body line-height from reset

Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
2022-10-29 20:17:03 -05:00

58 lines
1.8 KiB
TypeScript

// eslint-disable-next-line
import React, { useEffect, useState } from 'react';
import { useTranslation } from 'react-i18next';
import { Select, MenuItem } from '@mui/material';
import FormControl from '@mui/material/FormControl';
import InputLabel from '@mui/material/InputLabel';
import { Images } from 'images/Images';
import { Language, LanguageCountry, LanguageNative } from 'types';
import './LanguageDropdown.css';
const LanguageDropdown = () => {
const { t, i18n } = useTranslation();
const [language, setLanguage] = useState(i18n.resolvedLanguage);
useEffect(() => {
if (language !== i18n.resolvedLanguage) {
i18n.changeLanguage(language);
}
}, [language]);
return (
<FormControl size='small' variant='outlined' className='LanguageDropdown'>
<Select
id='LanguageDropdown-select'
margin='dense'
value={language}
fullWidth={true}
onChange={e => setLanguage(e.target.value as Language)}
>
{
Object.keys(Language).map((lang) => {
const country = LanguageCountry[lang];
return (
<MenuItem value={lang} key={lang}>
<div className="LanguageDropdown-item">
<img className="LanguageDropdown-item__image" src={Images.Countries[country]} />
<span className="LanguageDropdown-item__label">
{LanguageNative[lang]} {
LanguageNative[lang] !== t(`Common.languages.${lang}`) && (
<>({ t(`Common.languages.${lang}`) })</>
)
}
</span>
</div>
</MenuItem>
);
})
}
</Select>
</FormControl>
)
};
export default LanguageDropdown;