| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | import React, { Component } from 'react';import { Tooltip } from 'reactstrap';// track id generationlet idCounter = 0;// return unique id numberconst UUID = () => idCounter++;// reset to sync client/server renderingexport 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;
 |