feat: improve single-column layout

This commit is contained in:
codytseng 2025-10-19 18:41:22 +08:00
parent 1674671d7f
commit 936b15e5c2
13 changed files with 316 additions and 231 deletions

View file

@ -3,7 +3,7 @@ import { Titlebar } from '@/components/Titlebar'
import { ScrollArea } from '@/components/ui/scroll-area'
import { TPrimaryPageName, usePrimaryPage } from '@/PageManager'
import { DeepBrowsingProvider } from '@/providers/DeepBrowsingProvider'
import { useScreenSize } from '@/providers/ScreenSizeProvider'
import { useUserPreferences } from '@/providers/UserPreferencesProvider'
import { forwardRef, useEffect, useImperativeHandle, useRef } from 'react'
const PrimaryPageLayout = forwardRef(
@ -26,7 +26,7 @@ const PrimaryPageLayout = forwardRef(
const scrollAreaRef = useRef<HTMLDivElement>(null)
const smallScreenScrollAreaRef = useRef<HTMLDivElement>(null)
const smallScreenLastScrollTopRef = useRef(0)
const { isSmallScreen } = useScreenSize()
const { enableSingleColumnLayout } = useUserPreferences()
const { current, display } = usePrimaryPage()
useImperativeHandle(
@ -45,7 +45,7 @@ const PrimaryPageLayout = forwardRef(
)
useEffect(() => {
if (!isSmallScreen) return
if (!enableSingleColumnLayout) return
const isVisible = () => {
return smallScreenScrollAreaRef.current?.checkVisibility
@ -65,9 +65,9 @@ const PrimaryPageLayout = forwardRef(
return () => {
window.removeEventListener('scroll', handleScroll)
}
}, [current, isSmallScreen, display])
}, [current, enableSingleColumnLayout, display])
if (isSmallScreen) {
if (enableSingleColumnLayout) {
return (
<DeepBrowsingProvider active={current === pageName && display}>
<div