A React hook to easily create tooltip in your React components
useTooltip
useTooltip is a React hook to easily create tooltip in your React components.
Install
@seracio/tooltip has 2 peer dependencies that need to be installed first
npm i react react-dom d3
npm i @seracio/tooltip
Usage
You need to be aware of several things:
- The hook returns 2 things: the component Tooltip itself and a ref to the container
- The container that will get the ref needs to be in relative position or it won't work
- The hook will make tooltips on each element with a
data-tooltip
attribute - In this attribute, you can specify html or simple text (no jsx though)
const React, { useState } = require('react');
const MyComponent = () => {
const [targetIndex, set] = useState(-1);
const [Tooltip, root] = useTooltip({
enterCb: el => set(+el.getAttribute('data-tooltip-index')),
leaveCb: el => set(-1)
});
const size = 500;
const data = [
{
x: 0,
y: 0,
width: 100,
height: 100
},
{
x: 300,
y: 200,
width: 50,
height: 80
}
];
return (
<div
style={{
position: 'relative',
width: '100%',
maxWidth: '600px',
margin: 'auto'
}}
ref={root}
>
<Tooltip />
<svg
preserveAspectRatio="xMidYMid meet"
viewBox={`0 0 ${size} ${size}`}
>
{data.map((d, i) => {
return (
<rect
style={{ cursor: 'pointer' }}
key={i}
data-tooltip={`rect number ${i + 1}`}
data-tooltip-index={i}
{...d}
fill={targetIndex === i ? 'red' : 'blue'}
/>
);
})}
</svg>
</div>
);
};
<MyComponent />;