zoapp-ui
Version:
Javascript ES7 React UI Material Components extensions
127 lines (101 loc) • 3.79 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck");
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require("babel-runtime/helpers/createClass");
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require("babel-runtime/helpers/possibleConstructorReturn");
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require("babel-runtime/helpers/inherits");
var _inherits3 = _interopRequireDefault(_inherits2);
var _react = require("react");
var _react2 = _interopRequireDefault(_react);
var _propTypes = require("prop-types");
var _propTypes2 = _interopRequireDefault(_propTypes);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Copyright (c) 2015-present, CWB SAS
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
var Tooltip = function (_Component) {
(0, _inherits3.default)(Tooltip, _Component);
function Tooltip() {
var _ref;
var _temp, _this, _ret;
(0, _classCallCheck3.default)(this, Tooltip);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = Tooltip.__proto__ || Object.getPrototypeOf(Tooltip)).call.apply(_ref, [this].concat(args))), _this), _this.setRef = function (r) {
_this.tooltipRef = r;
_this.updatePosition();
}, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);
}
(0, _createClass3.default)(Tooltip, [{
key: "updatePosition",
value: function updatePosition() {
if (this.tooltipRef && this.containerRef) {
var _containerRef$getBoun = this.containerRef.getBoundingClientRect(),
left = _containerRef$getBoun.left,
top = _containerRef$getBoun.top,
width = _containerRef$getBoun.width,
height = _containerRef$getBoun.height;
var style = "transform: initial; transition: initial;";
this.tooltipRef.style = style;
var rect = this.tooltipRef.getBoundingClientRect();
var adjustedLeft = left + (width - rect.width) / 2;
if (adjustedLeft < 0) {
adjustedLeft = 0;
}
/* const scrollTop = Math.max(
window.pageYOffset,
document.documentElement.scrollTop,
document.body.scrollTop,
); */
var adjustedTop = top + height;
style = "left: " + adjustedLeft + "px; top: " + adjustedTop + "px;";
this.tooltipRef.style = style;
}
}
}, {
key: "render",
value: function render() {
var _this2 = this;
var _props = this.props,
children = _props.children,
label = _props.label;
return _react2.default.createElement(
"div",
{
className: "mdc-tooltype",
ref: function ref(r) {
_this2.containerRef = r;
_this2.updatePosition();
},
onMouseEnter: function onMouseEnter() {
_this2.updatePosition();
},
onWheel: function onWheel() {
_this2.updatePosition();
}
},
children,
_react2.default.createElement(
"span",
{ ref: this.setRef },
label
)
);
}
}]);
return Tooltip;
}(_react.Component);
Tooltip.propTypes = {
label: _propTypes2.default.string,
children: _propTypes2.default.element.isRequired
};
exports.default = Tooltip;