You've already forked nginx-proxy-manager
mirror of
https://github.com/NginxProxyManager/nginx-proxy-manager.git
synced 2025-06-25 20:02:04 +03:00
65 lines
1.4 KiB
TypeScript
65 lines
1.4 KiB
TypeScript
import {
|
|
Button,
|
|
Box,
|
|
Menu,
|
|
MenuButton,
|
|
MenuButtonProps,
|
|
MenuList,
|
|
MenuItem,
|
|
} from "@chakra-ui/react";
|
|
|
|
import { Flag } from "src/components";
|
|
import { useLocaleState } from "src/context";
|
|
import {
|
|
changeLocale,
|
|
getFlagCodeForLocale,
|
|
intl,
|
|
localeOptions,
|
|
} from "src/locale";
|
|
|
|
interface LocalPickerProps {
|
|
onChange?: any;
|
|
className?: string;
|
|
background?: "normal" | "transparent";
|
|
}
|
|
|
|
function LocalePicker({ onChange, className, background }: LocalPickerProps) {
|
|
const { locale, setLocale } = useLocaleState();
|
|
|
|
const additionalProps: Partial<MenuButtonProps> = {};
|
|
if (background === "transparent") {
|
|
additionalProps["backgroundColor"] = "transparent";
|
|
}
|
|
|
|
const changeTo = (lang: string) => {
|
|
changeLocale(lang);
|
|
setLocale(lang);
|
|
onChange && onChange(locale);
|
|
location.reload();
|
|
};
|
|
|
|
return (
|
|
<Box className={className}>
|
|
<Menu>
|
|
<MenuButton as={Button} {...additionalProps}>
|
|
<Flag countryCode={getFlagCodeForLocale(locale)} />
|
|
</MenuButton>
|
|
<MenuList>
|
|
{localeOptions.map((item) => {
|
|
return (
|
|
<MenuItem
|
|
icon={<Flag countryCode={getFlagCodeForLocale(item[0])} />}
|
|
onClick={() => changeTo(item[0])}
|
|
key={`locale-${item[0]}`}>
|
|
<span>{intl.formatMessage({ id: `locale-${item[1]}` })}</span>
|
|
</MenuItem>
|
|
);
|
|
})}
|
|
</MenuList>
|
|
</Menu>
|
|
</Box>
|
|
);
|
|
}
|
|
|
|
export { LocalePicker };
|