@kubit-ui-web/react-components
Version:
Kubit React Components is a customizable, accessible library of React web components, designed to enhance your application's user experience
30 lines • 1.23 kB
JavaScript
import React from 'react';
import { ResizeObserver } from '../../utils/resizeObserver/resizeObserver';
import { hasScroll as checkHasScroll } from '../../utils/scroll/hasScroll';
/**
* Custom hook that determines if an element has scroll
*
* @returns An object containing the `hasScroll` boolean and the `handleScrollDetection` callback function to initialize the hook.
*/
export const useScrollDetection = () => {
const [hasScroll, setHasScroll] = React.useState(false);
const resizeObserverRef = React.useRef();
const handleScrollDetection = React.useCallback((element) => {
if (element) {
const handleInnerContentResize = (element) => {
const _hasScroll = checkHasScroll(element);
setHasScroll(_hasScroll);
};
handleInnerContentResize(element);
resizeObserverRef.current = new ResizeObserver(() => {
handleInnerContentResize(element);
});
resizeObserverRef.current.observe(element);
}
else {
resizeObserverRef.current?.disconnect();
}
}, []);
return { hasScroll, handleScrollDetection };
};
//# sourceMappingURL=useScrollDetection.js.map