Browse Source

fix: 💨

imwald
codytseng 7 months ago
parent
commit
ad3df9b037
  1. 4
      src/PageManager.tsx
  2. 12
      src/layouts/PrimaryPageLayout/index.tsx
  3. 14
      src/layouts/SecondaryPageLayout/index.tsx
  4. 2
      src/types/index.d.ts

4
src/PageManager.tsx

@ -219,7 +219,7 @@ export function PageManager({ maxStackSize = 5 }: { maxStackSize?: number }) { @@ -219,7 +219,7 @@ export function PageManager({ maxStackSize = 5 }: { maxStackSize?: number }) {
}
setCurrentPrimaryPage(page)
if (needScrollToTop) {
PRIMARY_PAGE_REF_MAP[page].current?.scrollToTop()
PRIMARY_PAGE_REF_MAP[page].current?.scrollToTop('smooth')
}
if (isSmallScreen) {
clearSecondaryPages()
@ -231,7 +231,7 @@ export function PageManager({ maxStackSize = 5 }: { maxStackSize?: number }) { @@ -231,7 +231,7 @@ export function PageManager({ maxStackSize = 5 }: { maxStackSize?: number }) {
if (isCurrentPage(prevStack, url)) {
const currentItem = prevStack[prevStack.length - 1]
if (currentItem?.ref?.current) {
currentItem.ref.current.scrollToTop()
currentItem.ref.current.scrollToTop('instant')
}
return prevStack
}

12
src/layouts/PrimaryPageLayout/index.tsx

@ -31,11 +31,13 @@ const PrimaryPageLayout = forwardRef( @@ -31,11 +31,13 @@ const PrimaryPageLayout = forwardRef(
useImperativeHandle(
ref,
() => ({
scrollToTop: () => {
if (scrollAreaRef.current) {
return scrollAreaRef.current.scrollTo({ top: 0, behavior: 'smooth' })
}
window.scrollTo({ top: 0, behavior: 'smooth' })
scrollToTop: (behavior: ScrollBehavior = 'smooth') => {
setTimeout(() => {
if (scrollAreaRef.current) {
return scrollAreaRef.current.scrollTo({ top: 0, behavior })
}
window.scrollTo({ top: 0, behavior })
}, 10)
}
}),
[]

14
src/layouts/SecondaryPageLayout/index.tsx

@ -34,11 +34,13 @@ const SecondaryPageLayout = forwardRef( @@ -34,11 +34,13 @@ const SecondaryPageLayout = forwardRef(
useImperativeHandle(
ref,
() => ({
scrollToTop: () => {
if (scrollAreaRef.current) {
return scrollAreaRef.current.scrollTo({ top: 0, behavior: 'smooth' })
}
window.scrollTo({ top: 0, behavior: 'smooth' })
scrollToTop: (behavior: ScrollBehavior = 'smooth') => {
setTimeout(() => {
if (scrollAreaRef.current) {
return scrollAreaRef.current.scrollTo({ top: 0, behavior })
}
window.scrollTo({ top: 0, behavior })
}, 10)
}
}),
[]
@ -46,7 +48,7 @@ const SecondaryPageLayout = forwardRef( @@ -46,7 +48,7 @@ const SecondaryPageLayout = forwardRef(
useEffect(() => {
if (isSmallScreen) {
setTimeout(() => window.scrollTo({ top: 0 }), 0)
setTimeout(() => window.scrollTo({ top: 0 }), 10)
return
}
}, [])

2
src/types/index.d.ts vendored

@ -120,7 +120,7 @@ export type TNoteListMode = 'posts' | 'postsAndReplies' | 'you' @@ -120,7 +120,7 @@ export type TNoteListMode = 'posts' | 'postsAndReplies' | 'you'
export type TNotificationType = 'all' | 'mentions' | 'reactions' | 'zaps'
export type TPageRef = { scrollToTop: () => void }
export type TPageRef = { scrollToTop: (behavior?: ScrollBehavior) => void }
export type TNip66RelayInfo = TRelayInfo & {
url: string

Loading…
Cancel
Save