2017-10-19 16:36:18 +03:00
|
|
|
import React, { Component } from 'react';
|
|
|
|
import { Target as BaseTarget } from 'react-popper';
|
|
|
|
import PropTypes from 'prop-types';
|
|
|
|
|
|
|
|
export default class Target extends Component {
|
|
|
|
static contextTypes = {
|
|
|
|
ttpContMangr: PropTypes.object.isRequired
|
|
|
|
};
|
|
|
|
|
|
|
|
render = () => {
|
2017-11-23 14:18:38 +02:00
|
|
|
const { children, tag = false, ...rest } = this.props;
|
2017-10-19 16:36:18 +03:00
|
|
|
|
|
|
|
const {
|
|
|
|
setRef,
|
|
|
|
handleTargetClick,
|
|
|
|
handleTargetMouseEnter,
|
|
|
|
handleTargetMouseLeave,
|
|
|
|
hoverable,
|
|
|
|
clickable
|
|
|
|
} = this.context.ttpContMangr;
|
|
|
|
|
|
|
|
const onMouseEnter =
|
|
|
|
hoverable() && handleTargetMouseEnter
|
|
|
|
? handleTargetMouseEnter
|
|
|
|
: undefined;
|
|
|
|
|
|
|
|
const onMouseLeave =
|
|
|
|
hoverable() && handleTargetMouseLeave
|
|
|
|
? handleTargetMouseLeave
|
|
|
|
: undefined;
|
|
|
|
|
|
|
|
const onClick =
|
|
|
|
clickable() && handleTargetClick ? handleTargetClick : undefined;
|
|
|
|
|
|
|
|
return (
|
|
|
|
<BaseTarget
|
|
|
|
innerRef={setRef('target')}
|
|
|
|
onClick={onClick}
|
|
|
|
onMouseEnter={onMouseEnter}
|
|
|
|
onMouseLeave={onMouseLeave}
|
2017-11-23 14:18:38 +02:00
|
|
|
tag={tag}
|
2017-10-19 16:36:18 +03:00
|
|
|
{...rest}
|
|
|
|
>
|
|
|
|
{children}
|
|
|
|
</BaseTarget>
|
|
|
|
);
|
|
|
|
};
|
|
|
|
}
|