fleet/frontend/components/TableContainer/DataTable/LinkCell/LinkCell.tsx
Jacob Shandling c73904ec8c
UI – Place all TooltipWrapper tooltips on the bottom (#19002)
## Addresses #18741 
<img width="727" alt="Screenshot 2024-05-14 at 3 26 20 PM"
src="https://github.com/fleetdm/fleet/assets/61553566/671c680e-00db-4481-a7b3-5425bf6a610d">

- [x] Changes file added for user-visible changes in `changes/`,
- [x] Manual QA for all new/changed functionality

---------

Co-authored-by: Jacob Shandling <jacob@fleetdm.com>
2024-05-24 14:30:54 -07:00

55 lines
1.2 KiB
TypeScript

// Utilizes Link over Button so we can right click links
import React from "react";
import { Link } from "react-router";
import classnames from "classnames";
import TooltipWrapper from "components/TooltipWrapper";
interface ILinkCellProps {
value: string | JSX.Element;
path: string;
className?: string;
customOnClick?: (e: React.MouseEvent) => void;
/** allows viewing overflow for tooltip */
tooltipContent?: string | React.ReactNode;
title?: string;
}
const baseClass = "link-cell";
const LinkCell = ({
value,
path,
className,
customOnClick,
title,
tooltipContent,
}: ILinkCellProps): JSX.Element => {
const cellClasses = classnames(baseClass, className);
const onClick = (e: React.MouseEvent): void => {
customOnClick && customOnClick(e);
};
return tooltipContent ? (
<TooltipWrapper
className="link-cell-tooltip-wrapper"
tipContent={tooltipContent}
>
<Link className={cellClasses} to={path} onClick={onClick} title={title}>
{value}
</Link>
</TooltipWrapper>
) : (
<Link
className={cellClasses}
to={path}
onClick={customOnClick}
title={title}
>
{value}
</Link>
);
};
export default LinkCell;