Files
spacedrive/interface/hooks/useIsTextTruncated.ts
ameer2468 1079171e44 [ENG-804, ENG-802, ENG-800] Minor UI Fixes (#1016)
* Minor UI Fixes

* adjustments

* show file name and extension only if truncated and with tooltip

* name

* oops

* truncate lib name

* cleanup

---------

Co-authored-by: Utku Bakir <74243531+utkubakir@users.noreply.github.com>
2023-06-25 16:27:03 +00:00

30 lines
880 B
TypeScript

import { useState, RefObject, useCallback, useEffect } from 'react';
export const useIsTextTruncated = (element: RefObject<HTMLElement>, text: string | null): boolean => {
const determineIsTruncated = useCallback((): boolean => {
if (!element.current) return false;
return element.current.scrollWidth > element.current.clientWidth;
}, [element]);
const [isTruncated, setIsTruncated] = useState<boolean>(determineIsTruncated());
useEffect(() => {
const resizeListener = (): void => {
setIsTruncated(determineIsTruncated());
};
window.addEventListener('resize', resizeListener);
return () => {
window.removeEventListener('resize', resizeListener);
};
}, [element, determineIsTruncated, text]);
useEffect(() => {
setIsTruncated(determineIsTruncated());
}, [element, determineIsTruncated, text]);
return isTruncated;
};