| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- import React, { Component } from 'react';
- import { Tooltip } from 'reactstrap';
- // track id generation
- let idCounter = 0;
- // return unique id number
- const UUID = () => idCounter++;
- // reset to sync client/server rendering
- export const resetUUID = () => idCounter = 0;
- /**
- * Wrap an element and assign automatically an ID,
- * creates a handler to show/hide tooltips without
- * the hassle of creating new states and class methods.
- * Support only one child and simple text content.
- */
- class TooltipWrapper extends Component {
- // static propTypes { content: PropTypes.string }
- state = {
- _id: 'id4tooltip_' + UUID(),
- tooltipOpen: false
- };
- toggle = e => {
- this.setState({ tooltipOpen: !this.state.tooltipOpen });
- };
- render() {
- return [
- <Tooltip
- {...this.props}
- isOpen={this.state.tooltipOpen}
- toggle={this.toggle}
- target={this.state._id}
- placement={this.props.placement}
- key="1"
- >
- {this.props.content}
- </Tooltip>,
- React.cloneElement(React.Children.only(this.props.children), {
- id: this.state._id,
- key: '2'
- })
- ];
- }
- }
- export default TooltipWrapper;
|