backpack-ui
Version:
Lonely Planet's Components
165 lines (123 loc) • 4.01 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends2 = require("babel-runtime/helpers/extends");
var _extends3 = _interopRequireDefault(_extends2);
var _getPrototypeOf = require("babel-runtime/core-js/object/get-prototype-of");
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
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);
var _reactMotion = require("react-motion");
var _Transition = require("../../libs/react-motion-ui-pack/Transition");
var _Transition2 = _interopRequireDefault(_Transition);
var _flyout = require("../flyout");
var _flyout2 = _interopRequireDefault(_flyout);
var _motionPresets = require("../../utils/motionPresets");
var _motionPresets2 = _interopRequireDefault(_motionPresets);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var styles = {
container: {
base: {
display: "inline-block"
}
}
};
var propTypes = {
/**
* Label for tooltip target
*/
label: _propTypes2.default.string.isRequired,
/**
* Props object for Flyout component
*/
flyout: _propTypes2.default.shape(_flyout2.default.propTypes).isRequired,
/**
* Content to display with tooltip
*/
children: _propTypes2.default.node.isRequired
};
var defaultProps = {
label: "",
flyout: {},
children: null
};
var Tooltip = function (_Component) {
(0, _inherits3.default)(Tooltip, _Component);
function Tooltip() {
(0, _classCallCheck3.default)(this, Tooltip);
var _this = (0, _possibleConstructorReturn3.default)(this, (Tooltip.__proto__ || (0, _getPrototypeOf2.default)(Tooltip)).call(this));
_this.state = {
isOpen: false
};
_this.toggleFlyout = _this.toggleFlyout.bind(_this);
return _this;
}
(0, _createClass3.default)(Tooltip, [{
key: "toggleFlyout",
value: function toggleFlyout() {
this.setState({
isOpen: !this.state.isOpen
});
}
}, {
key: "render",
value: function render() {
var _props = this.props,
label = _props.label,
flyout = _props.flyout,
children = _props.children;
return _react2.default.createElement(
"div",
{
className: "Tooltip",
style: styles.container.base
},
_react2.default.createElement(
"div",
{
onMouseOver: this.toggleFlyout,
onMouseOut: this.toggleFlyout
},
label
),
_react2.default.createElement(
_Transition2.default,
{
runOnMount: false,
component: false,
measure: false,
enter: {
opacity: 1,
translateY: (0, _reactMotion.spring)(0, _motionPresets2.default.quickBounce)
},
leave: {
opacity: 0,
translateY: -150
}
},
this.state.isOpen && _react2.default.createElement(
_flyout2.default,
(0, _extends3.default)({}, flyout, { key: label }),
children
)
)
);
}
}]);
return Tooltip;
}(_react.Component);
Tooltip.propTypes = propTypes;
Tooltip.defaultProps = defaultProps;
Tooltip.styles = styles;
exports.default = Tooltip;