import React from 'react' import PropTypes from 'prop-types' import ReactTooltip from 'react-tooltip' import {Info} from 'react-feather' import colors from '../styles/colors' const Tooltip = ({tip, id, icon}) => ( <span className='tooltip'> <span className='icon'> {icon ? ( <span data-tip={tip} data-for={id}>{icon}</span> ) : ( <Info size={12} data-tip={tip} data-for={id} /> )} <ReactTooltip id={id} backgroundColor={colors.black} arrowColor='rgba(0, 0, 0, 0)' multiline overridePosition={( {left, top}, currentEvent, currentTarget, node) => { const d = document.documentElement left = Math.min(d.clientWidth - node.clientWidth, left) top = Math.min(d.clientHeight - node.clientHeight, top) left = Math.max(0, left) top = Math.max(0, top) return {top, left} }} /> </span> <style jsx>{` .tooltip { padding: .4em; position: relative; } .icon { position: absolute; top: 0; } .icon:hover { cursor: help; } `}</style> </span> ) Tooltip.defaultProps = { icon: null } Tooltip.propTypes = { tip: PropTypes.string.isRequired, id: PropTypes.string.isRequired, icon: PropTypes.string } export default Tooltip