What is rc-tooltip?
The rc-tooltip package is a React component for creating simple and customizable tooltips. It allows developers to easily add tooltip functionality to their React applications, providing users with additional context or information when they hover over or focus on an element. The package supports various customization options, including the tooltip's appearance, positioning, and animation.
What are rc-tooltip's main functionalities?
Basic Tooltip
This code sample demonstrates how to create a basic tooltip that appears on top of an element when it is hovered over. The tooltip's content is specified as 'Tooltip text'.
import React from 'react';
import Tooltip from 'rc-tooltip';
import 'rc-tooltip/assets/bootstrap.css';
const BasicTooltip = () => (
<Tooltip placement="top" trigger={['hover']} overlay={<span>Tooltip text</span>}>
<a href="#">Hover me</a>
</Tooltip>
);
Customized Tooltip
This example shows how to create a tooltip that appears to the right of an element when clicked. The tooltip displays custom content, including a custom style and an arrow pointing to the target element.
import React from 'react';
import Tooltip from 'rc-tooltip';
import 'rc-tooltip/assets/bootstrap_white.css';
const CustomTooltip = () => (
<Tooltip
placement="right"
trigger={['click']}
overlay={<div style={{ height: 50, width: 100, backgroundColor: '#89CFF0' }}>Custom Content</div>}
arrowContent={<div className="rc-tooltip-arrow-inner"></div>}
>
<a href="#">Click me</a>
</Tooltip>
);
Dynamic Tooltip
This code snippet illustrates how to create a tooltip with dynamic visibility, controlled by the component's state. The tooltip appears when the mouse enters the target element and disappears when it leaves.
import React, { useState } from 'react';
import Tooltip from 'rc-tooltip';
const DynamicTooltip = () => {
const [visible, setVisible] = useState(false);
return (
<Tooltip
visible={visible}
onVisibleChange={(vis) => setVisible(vis)}
overlay={<span>Dynamic Content</span>}
>
<a href="#" onMouseEnter={() => setVisible(true)} onMouseLeave={() => setVisible(false)}>Hover or Leave</a>
</Tooltip>
);
};
Other packages similar to rc-tooltip
react-tooltip
react-tooltip is another popular tooltip library for React applications. It offers a wide range of customization options similar to rc-tooltip, but with a different API and additional features such as global tooltip management and more extensive styling capabilities.
tippy.js
tippy.js is a highly customizable tooltip and popover library that can be used with React through a wrapper component. It provides more extensive animation and theming options compared to rc-tooltip, making it suitable for more complex tooltip requirements.
rc-tooltip
React Tooltip
Screenshot
Browsers support
IE / Edge | Firefox | Chrome | Safari | Opera |
---|
IE 8 + ✔ | Firefox 31.0+ ✔ | Chrome 31.0+ ✔ | Safari 7.0+ ✔ | Opera 30.0+ ✔ |
Install
Usage
var Tooltip = require('rc-tooltip');
var React = require('react');
var ReactDOM = require('react-dom');
ReactDOM.render(
<Tooltip placement="left" trigger={['click']} overlay={<span>tooltip</span>}>
<a href="#">hover</a>
</Tooltip>,
container
);
Examples
npm start
and then go to
http://localhost:8007/examples
Online examples: https://react-component.github.io/tooltip/examples/
API
Props
name | type | default | description |
---|
overlayClassName | string | | additional className added to popup overlay |
trigger | string | string[] | ['hover'] | which actions cause tooltip shown. enum of 'hover','click','focus' |
mouseEnterDelay | number | 0 | delay time to show when mouse enter.unit: s. |
mouseLeaveDelay | number | 0.1 | delay time to hide when mouse leave.unit: s. |
overlayStyle | Object | | additional style of overlay node |
prefixCls | String | rc-tooltip | prefix class name |
transitionName | String|Object | | same as https://github.com/react-component/animate |
onVisibleChange | Function | | call when visible is changed |
afterVisibleChange | Function | | call after visible is changed |
visible | boolean | | whether tooltip is visible |
defaultVisible | boolean | | whether tooltip is visible initially |
placement | String | | one of ['left','right','top','bottom', 'topLeft', 'topRight', 'bottomLeft', 'bottomRight', 'rightTop', 'rightBottom', 'leftTop', 'leftBottom'] |
align | Object: alignConfig of [dom-align](https://github.com/yiminghe/dom-align) | | value will be merged into placement's config |
onPopupAlign | function(popupDomNode, align) | | callback when popup node is aligned |
overlay | React.Element | () => React.Element | | popup content |
overlayInnerStyle | Object | | set overlay inner style |
showArrow | boolean | true | arrow visible |
arrowContent | React.Node | null | arrow content |
getTooltipContainer | function | | Function returning html node which will act as tooltip container. By default the tooltip attaches to the body. If you want to change the container, simply return a new element. |
destroyTooltipOnHide | boolean | { keepParent: boolean } | false | whether destroy tooltip when tooltip is hidden.In general, destroyTooltipOnHide will only remove itself instead of parent container of it. Parent container will be removed include tooltip when keepParent is true |
id | String | | Id which gets attached to the tooltip content. Can be used with aria-describedby to achieve Screenreader-Support. |
Important Note
Tooltip
requires a child node that accepts an onMouseEnter
, onMouseLeave
, onFocus
, onClick
event. This means the child node must be a built-in component like div
or span
, or a custom component that passes its props to its built-in component child.
Accessibility
For accessibility purpose you can use the id
prop to link your tooltip with another element. For example attaching it to an input element:
<Tooltip
...
id={this.props.name}>
<input type="text"
...
aria-describedby={this.props.name}/>
</Tooltip>
If you do it like this, a screenreader would read the content of your tooltip if you focus the input element.
NOTE: role="tooltip"
is also added to expose the purpose of the tooltip element to a screenreader.
Development
npm install
npm start
Test Case
npm test
npm run chrome-test
Coverage
npm run coverage
License
rc-tooltip
is released under the MIT license.