UNPKG

3.27 kBJavaScriptView Raw
1import _extends from "@babel/runtime-corejs2/helpers/esm/extends";
2import _objectWithoutPropertiesLoose from "@babel/runtime-corejs2/helpers/esm/objectWithoutPropertiesLoose";
3import _inheritsLoose from "@babel/runtime-corejs2/helpers/esm/inheritsLoose";
4import classNames from 'classnames';
5import React from 'react';
6import PropTypes from 'prop-types';
7import isRequiredForA11y from 'prop-types-extra/lib/isRequiredForA11y';
8import { bsClass, getClassSet, prefix, splitBsProps } from './utils/bootstrapUtils';
9var propTypes = {
10 /**
11 * An html id attribute, necessary for accessibility
12 * @type {string|number}
13 * @required
14 */
15 id: isRequiredForA11y(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),
16
17 /**
18 * Sets the direction the Tooltip is positioned towards.
19 */
20 placement: PropTypes.oneOf(['top', 'right', 'bottom', 'left']),
21
22 /**
23 * The "top" position value for the Tooltip.
24 */
25 positionTop: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
26
27 /**
28 * The "left" position value for the Tooltip.
29 */
30 positionLeft: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
31
32 /**
33 * The "top" position value for the Tooltip arrow.
34 */
35 arrowOffsetTop: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
36
37 /**
38 * The "left" position value for the Tooltip arrow.
39 */
40 arrowOffsetLeft: PropTypes.oneOfType([PropTypes.number, PropTypes.string])
41};
42var defaultProps = {
43 placement: 'right'
44};
45
46var Tooltip =
47/*#__PURE__*/
48function (_React$Component) {
49 _inheritsLoose(Tooltip, _React$Component);
50
51 function Tooltip() {
52 return _React$Component.apply(this, arguments) || this;
53 }
54
55 var _proto = Tooltip.prototype;
56
57 _proto.render = function render() {
58 var _extends2;
59
60 var _this$props = this.props,
61 placement = _this$props.placement,
62 positionTop = _this$props.positionTop,
63 positionLeft = _this$props.positionLeft,
64 arrowOffsetTop = _this$props.arrowOffsetTop,
65 arrowOffsetLeft = _this$props.arrowOffsetLeft,
66 className = _this$props.className,
67 style = _this$props.style,
68 children = _this$props.children,
69 props = _objectWithoutPropertiesLoose(_this$props, ["placement", "positionTop", "positionLeft", "arrowOffsetTop", "arrowOffsetLeft", "className", "style", "children"]);
70
71 var _splitBsProps = splitBsProps(props),
72 bsProps = _splitBsProps[0],
73 elementProps = _splitBsProps[1];
74
75 var classes = _extends({}, getClassSet(bsProps), (_extends2 = {}, _extends2[placement] = true, _extends2));
76
77 var outerStyle = _extends({
78 top: positionTop,
79 left: positionLeft
80 }, style);
81
82 var arrowStyle = {
83 top: arrowOffsetTop,
84 left: arrowOffsetLeft
85 };
86 return React.createElement("div", _extends({}, elementProps, {
87 role: "tooltip",
88 className: classNames(className, classes),
89 style: outerStyle
90 }), React.createElement("div", {
91 className: prefix(bsProps, 'arrow'),
92 style: arrowStyle
93 }), React.createElement("div", {
94 className: prefix(bsProps, 'inner')
95 }, children));
96 };
97
98 return Tooltip;
99}(React.Component);
100
101Tooltip.propTypes = propTypes;
102Tooltip.defaultProps = defaultProps;
103export default bsClass('tooltip', Tooltip);
\No newline at end of file