dify/web/app/components/workflow/block-selector/use-check-vertical-scrollbar.ts
Coding On Star db4deb1d6b
test(workflow): reorganize specs into __tests__ and align with shared test infrastructure (#33625)
Co-authored-by: CodingOnStar <hanxujiang@dify.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-03-18 16:40:28 +08:00

33 lines
850 B
TypeScript

import { useEffect, useState } from 'react'
const useCheckVerticalScrollbar = (ref: React.RefObject<HTMLElement | null>) => {
const [hasVerticalScrollbar, setHasVerticalScrollbar] = useState(false)
useEffect(() => {
const elem = ref.current
if (!elem)
return
const checkScrollbar = () => {
setHasVerticalScrollbar(elem.scrollHeight > elem.clientHeight)
}
checkScrollbar()
const resizeObserver = new ResizeObserver(checkScrollbar)
resizeObserver.observe(elem)
const mutationObserver = new MutationObserver(checkScrollbar)
mutationObserver.observe(elem, { childList: true, subtree: true, characterData: true })
return () => {
resizeObserver.disconnect()
mutationObserver.disconnect()
}
}, [ref])
return hasVerticalScrollbar
}
export default useCheckVerticalScrollbar