Adding tooltips
Adding a tooltip
You can add a default tooltip to a cell or your custom one. To add a tooltip, you should do the following:
- Import the Tooltip component
- To enable/disable tooltips, use the
tooltipparameter of thecolumnsproperty:- set it to false to disable
- set it to true or do not specify to show a tooltip by default
- define a function that takes an object to be processed as an argument and returns the string to show
- Wrap the Grid element inside the Tooltip element and pass the Grid
apito Tooltip using theapiprop. In React, capture the Grid instance using a ref or a callback ref and expose it as theapivalue (see examples below). For more details see the Gridapi
Example:
import { useState } from "react";
import { getData } from "./common/data";
import { Grid, Tooltip } from "@svar-ui/react-grid";
const { data } = getData();
const columns = [
{ id: "id", width: 50, tooltip: false },
{
id: "city",
width: 100,
header: "City",
},
{
id: "firstName",
header: "First Name",
width: 150,
tooltip: false,
},
{
id: "lastName",
header: "Last Name",
width: 150,
tooltip: false,
},
{ id: "email", header: "Email" },
{ id: "companyName", header: "Company" },
{ id: "date", tooltip: (obj) => obj.date?.toDateString() },
];
export const Example = () => {
// capture the Grid instance (api) using a callback ref
const [api, setApi] = useState();
return (
<Tooltip api={api}>
{/* ref={setApi} will receive the Grid instance and set it as api */}
<Grid data={data} columns={columns} ref={setApi} />
</Tooltip>
);
};
Setting custom tooltip content
In the next example we add a custom React component as a tooltip:
- prepare and import your custom template that should be a React component
- import the Tooltip component and wrap the Grid element into the Tooltip element
- add the component itself as the value of the Tooltip
contentprop - pass Tooltip the Grid
apiobject (captured via ref)
import { useState } from "react";
import { getData } from "../data";
import { Grid, Tooltip } from "@svar-ui/react-grid";
import YourCustomTooltip from "../custom/CustomTooltip.jsx";
const { data, columns } = getData();
export const ExampleWithCustomTooltip = () => {
const [api, setApi] = useState();
return (
<Tooltip content={YourCustomTooltip} api={api}>
<Grid data={data} columns={columns} ref={setApi} />
</Tooltip>
);
};
Example of a custom component:
export const YourCustomTooltip = ({ data }) => {
return (
<div className="data">
<div className="text">
{data.email}
</div>
</div>
);
};
You can place the component in a separate file (e.g. CustomTooltip.jsx) and import it as shown above.
Example CSS for the custom component (in your stylesheet):
.data {
background-color: white;
}
.text {
font-size: 13px;
color: black;
}
Changing a tooltip style
The example below shows how to change the default style of tooltips via CSS classes. Include this in your global stylesheet or component CSS (depending on your setup):
/* in your stylesheet */
.wx-area .tooltip {
background-color: white;
color: black;
border: 2px solid black;
}
Related sample: Tooltips for data cells