Move to TanStack Start from Next.js (#184)

This commit is contained in:
Aslam
2024-10-07 16:44:17 +07:00
committed by GitHub
parent 3a89a1c07f
commit 950ebc3dad
514 changed files with 20021 additions and 15508 deletions

View File

@@ -0,0 +1,36 @@
import * as React from "react"
type ElementRef<T extends HTMLElement> = T | null
type ElementRefs<T extends HTMLElement> = ElementRef<T>[]
interface ActiveItemScrollOptions {
activeIndex: number | null
}
export function useActiveItemScroll<T extends HTMLElement>(
options: ActiveItemScrollOptions,
) {
const { activeIndex } = options
const elementRefs = React.useRef<ElementRefs<T>>([])
const scrollActiveElementIntoView = React.useCallback((index: number) => {
const activeElement = elementRefs.current[index]
activeElement?.focus()
// activeElement?.scrollIntoView({ block: "nearest" })
}, [])
React.useEffect(() => {
if (activeIndex !== null) {
scrollActiveElementIntoView(activeIndex)
}
}, [activeIndex, scrollActiveElementIntoView])
const setElementRef = React.useCallback(
(element: ElementRef<T>, index: number) => {
elementRefs.current[index] = element
},
[],
)
return { setElementRef, scrollActiveElementIntoView }
}