// @flow import * as React from 'react'; import classnames from 'classnames'; type Props = { body: string, label?: string, children?: React.Node, icon?: boolean, direction: string, onComponent?: boolean, // extra padding to account for button/form field size alwaysVisible?: boolean, // should tooltip stay open, guide callbacks will close it manually }; type State = { direction: string, }; class ToolTip extends React.PureComponent { static defaultProps = { direction: 'bottom', alwaysVisible: false, }; constructor(props: Props) { super(props); this.state = { direction: this.props.direction, }; } tooltip: ?HTMLSpanElement; render() { const { direction } = this.state; const { children, label, body, icon, onComponent, alwaysVisible } = this.props; const tooltipContent = children || label; const bodyLength = body.length; const isShortDescription = bodyLength < 30; return ( {tooltipContent} { this.tooltip = ref; }} className={classnames('card tooltip__body', { 'tooltip__body--short': isShortDescription, })} > {body} ); } } export default ToolTip;