138 lines
4.8 KiB
JavaScript
138 lines
4.8 KiB
JavaScript
import _extends from 'babel-runtime/helpers/extends';
|
|
import _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';
|
|
import _classCallCheck from 'babel-runtime/helpers/classCallCheck';
|
|
import _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';
|
|
import _inherits from 'babel-runtime/helpers/inherits';
|
|
import React, { Component } from 'react';
|
|
import PropTypes from 'prop-types';
|
|
import Trigger from 'rc-trigger';
|
|
import { placements } from './placements';
|
|
import Content from './Content';
|
|
|
|
var Tooltip = function (_Component) {
|
|
_inherits(Tooltip, _Component);
|
|
|
|
function Tooltip() {
|
|
var _temp, _this, _ret;
|
|
|
|
_classCallCheck(this, Tooltip);
|
|
|
|
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
|
args[_key] = arguments[_key];
|
|
}
|
|
|
|
return _ret = (_temp = (_this = _possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.getPopupElement = function () {
|
|
var _this$props = _this.props,
|
|
arrowContent = _this$props.arrowContent,
|
|
overlay = _this$props.overlay,
|
|
prefixCls = _this$props.prefixCls,
|
|
id = _this$props.id;
|
|
|
|
return [React.createElement(
|
|
'div',
|
|
{ className: prefixCls + '-arrow', key: 'arrow' },
|
|
arrowContent
|
|
), React.createElement(Content, {
|
|
key: 'content',
|
|
trigger: _this.trigger,
|
|
prefixCls: prefixCls,
|
|
id: id,
|
|
overlay: overlay
|
|
})];
|
|
}, _this.saveTrigger = function (node) {
|
|
_this.trigger = node;
|
|
}, _temp), _possibleConstructorReturn(_this, _ret);
|
|
}
|
|
|
|
Tooltip.prototype.getPopupDomNode = function getPopupDomNode() {
|
|
return this.trigger.getPopupDomNode();
|
|
};
|
|
|
|
Tooltip.prototype.render = function render() {
|
|
var _props = this.props,
|
|
overlayClassName = _props.overlayClassName,
|
|
trigger = _props.trigger,
|
|
mouseEnterDelay = _props.mouseEnterDelay,
|
|
mouseLeaveDelay = _props.mouseLeaveDelay,
|
|
overlayStyle = _props.overlayStyle,
|
|
prefixCls = _props.prefixCls,
|
|
children = _props.children,
|
|
onVisibleChange = _props.onVisibleChange,
|
|
afterVisibleChange = _props.afterVisibleChange,
|
|
transitionName = _props.transitionName,
|
|
animation = _props.animation,
|
|
placement = _props.placement,
|
|
align = _props.align,
|
|
destroyTooltipOnHide = _props.destroyTooltipOnHide,
|
|
defaultVisible = _props.defaultVisible,
|
|
getTooltipContainer = _props.getTooltipContainer,
|
|
restProps = _objectWithoutProperties(_props, ['overlayClassName', 'trigger', 'mouseEnterDelay', 'mouseLeaveDelay', 'overlayStyle', 'prefixCls', 'children', 'onVisibleChange', 'afterVisibleChange', 'transitionName', 'animation', 'placement', 'align', 'destroyTooltipOnHide', 'defaultVisible', 'getTooltipContainer']);
|
|
|
|
var extraProps = _extends({}, restProps);
|
|
if ('visible' in this.props) {
|
|
extraProps.popupVisible = this.props.visible;
|
|
}
|
|
return React.createElement(
|
|
Trigger,
|
|
_extends({
|
|
popupClassName: overlayClassName,
|
|
ref: this.saveTrigger,
|
|
prefixCls: prefixCls,
|
|
popup: this.getPopupElement,
|
|
action: trigger,
|
|
builtinPlacements: placements,
|
|
popupPlacement: placement,
|
|
popupAlign: align,
|
|
getPopupContainer: getTooltipContainer,
|
|
onPopupVisibleChange: onVisibleChange,
|
|
afterPopupVisibleChange: afterVisibleChange,
|
|
popupTransitionName: transitionName,
|
|
popupAnimation: animation,
|
|
defaultPopupVisible: defaultVisible,
|
|
destroyPopupOnHide: destroyTooltipOnHide,
|
|
mouseLeaveDelay: mouseLeaveDelay,
|
|
popupStyle: overlayStyle,
|
|
mouseEnterDelay: mouseEnterDelay
|
|
}, extraProps),
|
|
children
|
|
);
|
|
};
|
|
|
|
return Tooltip;
|
|
}(Component);
|
|
|
|
Tooltip.propTypes = {
|
|
trigger: PropTypes.any,
|
|
children: PropTypes.any,
|
|
defaultVisible: PropTypes.bool,
|
|
visible: PropTypes.bool,
|
|
placement: PropTypes.string,
|
|
transitionName: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),
|
|
animation: PropTypes.any,
|
|
onVisibleChange: PropTypes.func,
|
|
afterVisibleChange: PropTypes.func,
|
|
overlay: PropTypes.oneOfType([PropTypes.node, PropTypes.func]).isRequired,
|
|
overlayStyle: PropTypes.object,
|
|
overlayClassName: PropTypes.string,
|
|
prefixCls: PropTypes.string,
|
|
mouseEnterDelay: PropTypes.number,
|
|
mouseLeaveDelay: PropTypes.number,
|
|
getTooltipContainer: PropTypes.func,
|
|
destroyTooltipOnHide: PropTypes.bool,
|
|
align: PropTypes.object,
|
|
arrowContent: PropTypes.any,
|
|
id: PropTypes.string
|
|
};
|
|
Tooltip.defaultProps = {
|
|
prefixCls: 'rc-tooltip',
|
|
mouseEnterDelay: 0,
|
|
destroyTooltipOnHide: false,
|
|
mouseLeaveDelay: 0.1,
|
|
align: {},
|
|
placement: 'right',
|
|
trigger: ['hover'],
|
|
arrowContent: null
|
|
};
|
|
|
|
|
|
export default Tooltip; |