import React from 'react'
import {Motion, spring} from 'react-motion';
class Tooltip extends React.Component {
static propTypes = {
children: React.PropTypes.node,
content: React.PropTypes.node,
openOnHover: React.PropTypes.bool,
show: React.PropTypes.bool,
onToggle: React.PropTypes.func
};
state = {
show : false
};
render() {
return (
{(this.getShowValue()) ? this.renderAnimatedMessage() : null}
{this.props.children}
);
}
renderAnimatedMessage() {
return (
{this.renderMessage.bind(this)}
)
}
renderMessage(animation) {
return (
)
}
getProps() {
let props = {};
props.className = 'tooltip';
if(this.props.openOnHover) {
props.onMouseOver = this.onMouseOver.bind(this);
props.onMouseOut = this.onMouseOut.bind(this);
}
return props;
}
getChildrenProps() {
let props = {};
props.className = 'tooltip__children';
if(!this.props.openOnHover) {
props.onClick = this.onClick.bind(this);
}
return props;
}
onMouseOver() {
this.setState({
show: true
});
if(this.props.onToggle) {
this.props.onToggle(true);
}
}
onMouseOut() {
this.setState({
show: false
});
if(this.props.onToggle) {
this.props.onToggle(false);
}
}
onClick() {
this.setState({
show: !this.getShowValue()
});
if(this.props.onToggle) {
this.props.onToggle(!this.getShowValue());
}
}
getShowValue() {
return (this.props.show !== undefined) ? this.props.show : this.state.show;
}
}
export default Tooltip;