2024-04-06 13:19:12 +08:00
|
|
|
import {
|
|
|
|
IconCaretdown,
|
|
|
|
IconCheckboxTick,
|
|
|
|
IconRowsStroked,
|
|
|
|
} from "@douyinfe/semi-icons";
|
|
|
|
import { Dropdown } from "@douyinfe/semi-ui";
|
|
|
|
import { useLayout } from "../../hooks";
|
|
|
|
import { enterFullscreen, exitFullscreen } from "../../utils/fullscreen";
|
2024-05-16 11:44:39 +08:00
|
|
|
import { useTranslation } from "react-i18next";
|
2024-04-06 13:19:12 +08:00
|
|
|
|
|
|
|
export default function LayoutDropdown() {
|
|
|
|
const { layout, setLayout } = useLayout();
|
2024-05-16 11:44:39 +08:00
|
|
|
const { t } = useTranslation();
|
|
|
|
|
2024-04-06 13:19:12 +08:00
|
|
|
const invertLayout = (component) =>
|
|
|
|
setLayout((prev) => ({ ...prev, [component]: !prev[component] }));
|
|
|
|
|
|
|
|
return (
|
|
|
|
<Dropdown
|
|
|
|
position="bottomLeft"
|
|
|
|
style={{ width: "180px" }}
|
|
|
|
render={
|
|
|
|
<Dropdown.Menu>
|
|
|
|
<Dropdown.Item
|
|
|
|
icon={
|
|
|
|
layout.header ? <IconCheckboxTick /> : <div className="px-2" />
|
|
|
|
}
|
|
|
|
onClick={() => invertLayout("header")}
|
|
|
|
>
|
2024-05-16 11:44:39 +08:00
|
|
|
{t("header")}
|
2024-04-06 13:19:12 +08:00
|
|
|
</Dropdown.Item>
|
|
|
|
<Dropdown.Item
|
|
|
|
icon={
|
|
|
|
layout.sidebar ? <IconCheckboxTick /> : <div className="px-2" />
|
|
|
|
}
|
|
|
|
onClick={() => invertLayout("sidebar")}
|
|
|
|
>
|
2024-05-16 11:44:39 +08:00
|
|
|
{t("sidebar")}
|
2024-04-06 13:19:12 +08:00
|
|
|
</Dropdown.Item>
|
|
|
|
<Dropdown.Item
|
|
|
|
icon={
|
|
|
|
layout.issues ? <IconCheckboxTick /> : <div className="px-2" />
|
|
|
|
}
|
|
|
|
onClick={() => invertLayout("issues")}
|
|
|
|
>
|
2024-05-16 11:44:39 +08:00
|
|
|
{t("issues")}
|
2024-04-06 13:19:12 +08:00
|
|
|
</Dropdown.Item>
|
|
|
|
<Dropdown.Divider />
|
|
|
|
<Dropdown.Item
|
|
|
|
icon={<div className="px-2" />}
|
|
|
|
onClick={() => {
|
|
|
|
if (layout.fullscreen) {
|
|
|
|
exitFullscreen();
|
|
|
|
} else {
|
|
|
|
enterFullscreen();
|
|
|
|
}
|
|
|
|
invertLayout("fullscreen");
|
|
|
|
}}
|
|
|
|
>
|
2024-05-16 11:44:39 +08:00
|
|
|
{t("fullscreen")}
|
2024-04-06 13:19:12 +08:00
|
|
|
</Dropdown.Item>
|
|
|
|
</Dropdown.Menu>
|
|
|
|
}
|
|
|
|
trigger="click"
|
|
|
|
>
|
|
|
|
<div className="py-1 px-2 hover-2 rounded flex items-center justify-center">
|
|
|
|
<IconRowsStroked size="extra-large" />
|
|
|
|
<div>
|
|
|
|
<IconCaretdown />
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</Dropdown>
|
|
|
|
);
|
|
|
|
}
|