React tooltip-lite
A lightweight and responsive tooltip. Feel free to Post an issue if you're looking to support more use cases.
Getting started
1. Install with NPM
$ npm install react-tooltip-lite
2. Import into your react Component
import Tooltip from 'react-tooltip-lite';
3. Wrap any element with the Tooltip component to make it a target
<Tooltip content="Go to google">
<a href="http://google.com"> edge</a>
</Tooltip>
CodePen demo: http://codepen.io/bsidelinger912/pen/WOdPNK
styling
By default you need to style react-tooltip-lite with CSS, this allows for psuedo elements and some cool border tricks, as well as using sass variables and such to keep your colors consistant. But as of version 1.2.0 you can also pass the "useDefaultStyles" prop which will allow you to use react-tooltip-lite without a stylesheet. Here's an example stylesheet:
/* default tooltip styles */
.react-tooltip-lite {
background: #333;
color: white;
}
.react-tooltip-lite-up-arrow {
border-top: 10px solid #333;
}
.react-tooltip-lite-down-arrow {
border-bottom: 10px solid #333;
}
.react-tooltip-lite-right-arrow {
border-right: 10px solid #333;
}
.react-tooltip-lite-left-arrow {
border-left: 10px solid #333;
}
Props
You can pass in props to define tip direction, styling, etc. Content is the only required prop.
Name | Type | Description |
---|
content | node (text or html) | the contents of your hover target |
tagName | string | html tag used for className |
direction | string | the tip direction, defaults to up. Possible values are "up", "down", "left", "right" with optional modifer for alignment of "start" and "end". e.g. "left-start" will attempt tooltip on left and align it with the start of the target. If alignment modifier is not specified the default behavior is to align "middle". |
className | string | css class added to the rendered wrapper |
background | string | background color for the tooltip contents and arrow |
color | string | text color for the tooltip contents |
padding | string | padding amount for the tooltip contents (defaults to '10px') |
styles | object | style overrides for the target wrapper |
eventOn | string | full name of supported react event to show the tooltip, e.g.: 'onClick' |
eventOff | string | full name of supported react event to hide the tooltip, e.g.: 'onClick' |
eventToggle | string | full name of supported react event to toggle the tooltip, e.g.: 'onClick', default hover toggling is disabled when using this option |
useHover | boolean | whether to use hover to show/hide the tip, defaults to true |
useDefaultStyles | boolean | uses default colors for the tooltip, so you don't need to write any CSS for it |
isOpen | boolean | forces open/close state from a prop, overrides hover or click state |
tipContentHover | boolean | defines whether you should be able to hover over the tip contents for links and copying content,
defaults to false.
|
hoverDelay | number | the number of milliseconds to determine hover intent, defaults to 200 |
arrow | boolean | Whether or not to have an arrow on the tooltip, defaults to true |
Here's an example using more of the props:
<Tooltip
content={(
<div>
<h4 className="tip-heading">An unordered list to demo some html content</h4>
<ul className="tip-list">
<li>One</li>
<li>Two</li>
<li>Three</li>
<li>Four</li>
<li>Five</li>
</ul>
</div>
)}
direction="right"
tagName="span"
className="target"
>
Target content for big html tip
</Tooltip>
To see more usage examples, take look at the /example folder in the source.