mirror of
https://github.com/spacedriveapp/spacedrive.git
synced 2026-04-21 15:07:54 -04:00
* 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>
30 lines
880 B
TypeScript
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;
|
|
};
|