UNPKG

mirador

Version:

An open-source, web-based 'multi-up' viewer that supports zoom-pan-rotate functionality, ability to display/compare simple images, and images with annotations.

55 lines (49 loc) 1.72 kB
import PropTypes from 'prop-types'; import keyBy from 'lodash/keyBy'; import MenuItem from '@mui/material/MenuItem'; import InputLabel from '@mui/material/InputLabel'; import FormControl from '@mui/material/FormControl'; import Select from '@mui/material/Select'; import Typography from '@mui/material/Typography'; import { useSelector } from 'react-redux'; import { useTranslation } from 'react-i18next'; import { getLanguagesFromConfigWithCurrent } from '../state/selectors/config'; /** * Provide a locale picker */ export function LocalePicker({ availableLocales = [], locale = '', setLocale = undefined }) { const languages = useSelector(state => getLanguagesFromConfigWithCurrent(state)); const { t } = useTranslation(); if (!setLocale || availableLocales.length < 2) return null; const selectedLocale = availableLocales.indexOf(locale) >= 0 ? locale : availableLocales[0]; const labels = keyBy(languages, o => o.locale); return ( <FormControl variant="standard"> <InputLabel>{t('language')}</InputLabel> <Select MenuProps={{ anchorOrigin: { horizontal: 'left', vertical: 'bottom', }, }} autoWidth displayEmpty value={selectedLocale} onChange={(e) => { setLocale(e.target.value); }} name="locale" > { availableLocales.map(l => ( <MenuItem key={l} value={l}><Typography variant="body2">{ labels[l]?.label || l }</Typography></MenuItem> )) } </Select> </FormControl> ); } LocalePicker.propTypes = { availableLocales: PropTypes.arrayOf(PropTypes.string), locale: PropTypes.string, setLocale: PropTypes.func, };