新增横竖模式切换并支持侧栏悬浮展开

This commit is contained in:
JSR
2026-03-18 21:05:07 +08:00
parent d4cbfc556a
commit 224c89f4dd
3 changed files with 146 additions and 33 deletions
+36 -1
View File
@@ -51,6 +51,8 @@ function MainContent(): React.JSX.Element {
const [authVisible, setAuthVisible] = useState(false)
const [authPassword, setAuthPassword] = useState("")
const [authLoading, setAuthLoading] = useState(false)
const [isPortraitMode, setIsPortraitMode] = useState(false)
const [sidebarCollapsed, setSidebarCollapsed] = useState(false)
const activeMenu = useMemo(() => {
const p = location.pathname
@@ -127,6 +129,30 @@ function MainContent(): React.JSX.Element {
if (key === "settings") navigate("/settings")
}
const toggleOrientationMode = async () => {
const api = (window as any).api
if (!api) return
const nextPortraitMode = !isPortraitMode
try {
const maximized = await api.windowIsMaximized()
if (maximized) {
await api.windowMaximize()
}
if (nextPortraitMode) {
await api.windowResize(800, 1000)
setSidebarCollapsed(true)
} else {
await api.windowResize(1180, 680)
setSidebarCollapsed(false)
}
setIsPortraitMode(nextPortraitMode)
} catch (error) {
messageApi.error(t("common.error"))
console.error("Failed to toggle orientation mode:", error)
}
}
const isDark = currentTheme?.mode === "dark"
const brandColor = currentTheme?.config?.tdesign?.brandColor || "#0052D9"
@@ -141,12 +167,21 @@ function MainContent(): React.JSX.Element {
>
{contextHolder}
<Layout style={{ height: "100vh", flexDirection: "row", overflow: "hidden" }}>
<Sidebar activeMenu={activeMenu} permission={permission} onMenuChange={onMenuChange} />
<Sidebar
activeMenu={activeMenu}
permission={permission}
onMenuChange={onMenuChange}
collapsed={sidebarCollapsed}
floatingExpand={isPortraitMode}
onCollapsedChange={setSidebarCollapsed}
/>
<ContentArea
permission={permission}
hasAnyPassword={hasAnyPassword}
onAuthClick={() => setAuthVisible(true)}
onLogout={logout}
isPortraitMode={isPortraitMode}
onToggleOrientation={toggleOrientationMode}
/>
<OOBE visible={wizardVisible} onComplete={() => setWizardVisible(false)} />