import React, { useState, useRef, useLayoutEffect } from "react"; import { uniqueId } from "lodash"; import ReactTooltip from "react-tooltip"; import { DEFAULT_EMPTY_CELL_VALUE } from "utilities/constants"; interface ITruncatedTextCellProps { value: string | number | boolean; classes?: string; } const baseClass = "truncated-cell"; const TruncatedTextCell = ({ value, classes = "w250", }: ITruncatedTextCellProps): JSX.Element => { const ref = useRef(null); const [offsetWidth, setOffsetWidth] = useState(0); const [scrollWidth, setScrollWidth] = useState(0); useLayoutEffect(() => { if (ref?.current !== null) { setOffsetWidth(ref.current.offsetWidth); setScrollWidth(ref.current.scrollWidth); } }, []); const tooltipId = uniqueId(); const tooltipDisabled = offsetWidth === scrollWidth; const isDefaultValue = value === DEFAULT_EMPTY_CELL_VALUE; return (
{value}
<> {value}
 
{/* Fixes triple click selecting next element in Safari */}
); }; export default TruncatedTextCell;