polishing a rock of shit

This commit is contained in:
2024-04-12 22:17:13 +03:00
parent f887d5ef07
commit 8df8f5a2e9
6 changed files with 66 additions and 6 deletions

View File

@ -1,14 +1,15 @@
import {
DesktopOutlined,
GlobalOutlined,
LogoutOutlined,
SettingOutlined,
UserOutlined,
} from "@ant-design/icons";
import { Layout, Menu, MenuProps, Popover } from "antd";
import { Layout, Menu, MenuProps, Popover, Select } from "antd";
import React, { useState } from "react";
import AuthModal from "./AuthModal";
import "./styles.css";
import { StorePrototype, logOut, store } from "../config/store";
import { StorePrototype, logOut, setLanguage, store } from "../config/store";
import { useSelector } from "react-redux";
import tr from "../config/translation";
import { Link, useNavigate } from "react-router-dom";
@ -23,11 +24,34 @@ const HeaderComponent = () => {
const [authModalOpen, setAuthModalOpen] = useState(false);
const [userMenuOpen, setUserMenuOpen] = useState(false);
const [languageSelectOpen, setLanguageSelectOpen] = useState(false);
const currentLanguage = useSelector(
(state: StorePrototype) => state.settings.language
);
const user: NullableUser = useSelector(
(state: StorePrototype) => state.auth.user
);
const languageSelectItems: MenuProps["items"] = [
{
label: "English",
key: "en",
onClick: () => {
store.dispatch(setLanguage("en"));
window.location.reload();
},
},
{
label: "Русский",
key: "ru",
onClick: () => {
store.dispatch(setLanguage("ru"));
window.location.reload();
},
},
];
const userMenuItems: MenuProps["items"] = [
{
label: <Link to="/settings">{tr("Settings")}</Link>,
@ -59,6 +83,28 @@ const HeaderComponent = () => {
icon: <DesktopOutlined />,
disabled: !user,
},
{
label: (
<Popover
trigger="click"
open={languageSelectOpen}
onOpenChange={(isOpen) => setLanguageSelectOpen(isOpen)}
content={
<Menu
theme="dark"
mode="vertical"
items={languageSelectItems}
selectedKeys={currentLanguage ? [currentLanguage] : undefined}
/>
}
>
{tr("Language")}
</Popover>
),
key: "language",
icon: <GlobalOutlined />,
onClick: () => setLanguageSelectOpen(true),
},
{
label: user ? (
<Popover