Tooltip components allow you to add your own tooltips to the grid's column headers and cells. Use these when the provided tooltip component or the default browser tooltip do not meet your requirements.
Below is an example of a tooltip component:
class CustomTooltip {
init(params) {
const eGui = this.eGui = document.createElement('div');
const color = params.color || 'white';
const data = params.api.getDisplayedRowAtIndex(params.rowIndex).data;
eGui.classList.add('custom-tooltip');
eGui.style['background-color'] = color;
eGui.innerHTML = `
<p>
<span class"name">${data.athlete}</span>
</p>
<p>
<span>Country: </span>
${data.country}
</p>
<p>
<span>Total: </span>
${data.total}
</p>
`;
}
getGui() {
return this.eGui;
}
}
The example below demonstrates how to provide custom tooltips to the grid. Notice the following:
colDef.tooltipComponent.colDef.tooltipComponentParams.tooltipShowDelay to 0.tooltipHideDelay to 2000.athlete and country columnsImplement this interface to provide a custom tooltip.
interface ITooltipComp {
// The init(params) method is called on the tooltip component once. See below for details on the parameters.
init(params: ITooltipParams): void;
// Returns the DOM element for this tooltip
getGui(): HTMLElement;
}
The interface for the init parameters is as follows:
Properties available on the ITooltipParams<TData = any, TValue = any, TContext = any> interface.
locationTypeTooltipLocation | What part of the application is showing the tooltip, e.g. 'cell', 'header', 'menuItem' etc |
valueTypeTValue | null | The value to be rendered by the tooltip. |
value | The formatted value to be rendered by the tooltip. |
col | Column / ColumnGroup definition. |
column | Column / ColumnGroup |
row | The index of the row containing the cell rendering the tooltip. |
nodeTypeIRowNode | The row node. |
dataTypeTData | Data for the row node in question. |
hide | A callback function that hides the tooltip |
apiTypeGridApi | The grid api. |
column | The column api. |
contextTypeTContext | Application context as set on gridOptions.context. |
See the registering custom components section for details on registering and using custom tooltip components.
If you don't want to use the grid's tooltip component, you can use the enableBrowserTooltips config to use the browser's default tooltip. The grid will simply set an element's title attribute to display the tooltip.
By default, when you hover on an item, it will take 2 seconds for the tooltip to be displayed and then 10 seconds for the tooltip to hide. If you need to change these delays, the tooltipShowDelay and tooltipHideDelay configs should be used, which are set in milliseconds.
The delays will have no effect if you are using browser tooltips, as they are controlled entirely by the browser.
The grid will not show a tooltip if there is no value to show. This is the default behaviour as the simplest form of tooltip will show the value it is provided without any additional information. In this case, it would be strange to show the tooltip with no value as that would show as a blank box.
This can be a problem if you wish a tooltip to display for blank values. For example, you might want to display a tooltip saying "This cell has no value" instead. To achieve this, you should utilise tooltipValueGetter to return something different when the value is blank.
The example below shows both displaying and not displaying the tooltip for blank values. Note the following:
undefined, null and '' (empty string).tooltipField for the tooltip field. When there is no value (the first three rows) no tooltip is displayed.tooltipValueGetter for the tooltip field. The value getter will return a value (an object) regardless of whether the value to display is empty or not. This ensures the tooltip gets displayed even when no cell value is present.When we want to display a header tooltip, we set the headerTooltip config as a string, and that string will be displayed as the tooltip. However, when working with custom tooltips we set colDef.tooltipComponent to assign the column's tooltip component and the headerTooltip value will passed to the params object.
If headerTooltip is not present, the tooltip will not be rendered.
The example below shows how to set a custom tooltip to a header and to a grouped header. Note the following:
tooltipComponent so it will render the value set in its headerTooltip config.tooltipComponent so the the value in headerTooltip is passed to the tooltipComponent params to be used.tooltipComponent detects that it's being rendered by a header because the params object does not contain a rowIndex value.The example below shows how to use the default tooltip component with group columns. Because the group column has no real field assigned to it, the tooltipValueGetter function must be used.
The example below enables mouse tracking to demonstrate a scenario where tooltips need to follow the cursor. To enable this feature, set the tooltipMouseTrack to true in the gridOptions.
By default, it is impossible to click on tooltips and hovering them has no effect. If tooltipInteraction=true is set in the gridOptions, the tooltips will not disappear while being hovered and you will be able to click and select the text within the tooltip.
const gridOptions = {
tooltipInteraction: true,
// other grid options ...
}The example below enables tooltip interaction to demonstrate a scenario where tooltips will not disappear while hovered. Note following:
The example below enables tooltip interaction with custom tooltips. Note following:
Athlete Column cell in the hovered row and then closes itself by calling hideTooltipCallback().The example below demonstrates how to use the default browser tooltips.