UNPKG

3.47 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}
13 * @required
14 */
15 id: isRequiredForA11y(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),
16
17 /**
18 * Sets the direction the Popover is positioned towards.
19 */
20 placement: PropTypes.oneOf(['top', 'right', 'bottom', 'left']),
21
22 /**
23 * The "top" position value for the Popover.
24 */
25 positionTop: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
26
27 /**
28 * The "left" position value for the Popover.
29 */
30 positionLeft: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
31
32 /**
33 * The "top" position value for the Popover arrow.
34 */
35 arrowOffsetTop: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
36
37 /**
38 * The "left" position value for the Popover arrow.
39 */
40 arrowOffsetLeft: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
41
42 /**
43 * Title content
44 */
45 title: PropTypes.node
46};
47var defaultProps = {
48 placement: 'right'
49};
50
51var Popover =
52/*#__PURE__*/
53function (_React$Component) {
54 _inheritsLoose(Popover, _React$Component);
55
56 function Popover() {
57 return _React$Component.apply(this, arguments) || this;
58 }
59
60 var _proto = Popover.prototype;
61
62 _proto.render = function render() {
63 var _extends2;
64
65 var _this$props = this.props,
66 placement = _this$props.placement,
67 positionTop = _this$props.positionTop,
68 positionLeft = _this$props.positionLeft,
69 arrowOffsetTop = _this$props.arrowOffsetTop,
70 arrowOffsetLeft = _this$props.arrowOffsetLeft,
71 title = _this$props.title,
72 className = _this$props.className,
73 style = _this$props.style,
74 children = _this$props.children,
75 props = _objectWithoutPropertiesLoose(_this$props, ["placement", "positionTop", "positionLeft", "arrowOffsetTop", "arrowOffsetLeft", "title", "className", "style", "children"]);
76
77 var _splitBsProps = splitBsProps(props),
78 bsProps = _splitBsProps[0],
79 elementProps = _splitBsProps[1];
80
81 var classes = _extends({}, getClassSet(bsProps), (_extends2 = {}, _extends2[placement] = true, _extends2));
82
83 var outerStyle = _extends({
84 display: 'block',
85 top: positionTop,
86 left: positionLeft
87 }, style);
88
89 var arrowStyle = {
90 top: arrowOffsetTop,
91 left: arrowOffsetLeft
92 };
93 return React.createElement("div", _extends({}, elementProps, {
94 role: "tooltip",
95 className: classNames(className, classes),
96 style: outerStyle
97 }), React.createElement("div", {
98 className: "arrow",
99 style: arrowStyle
100 }), title && React.createElement("h3", {
101 className: prefix(bsProps, 'title')
102 }, title), React.createElement("div", {
103 className: prefix(bsProps, 'content')
104 }, children));
105 };
106
107 return Popover;
108}(React.Component);
109
110Popover.propTypes = propTypes;
111Popover.defaultProps = defaultProps;
112export default bsClass('popover', Popover);
\No newline at end of file