diff --git a/lib/origin.js b/lib/origin.js index ee372dd..f09d2a8 100644 --- a/lib/origin.js +++ b/lib/origin.js @@ -54,7 +54,6 @@ var Origin = function (_Component) { delete props['dispatch']; if (!props.onMouseEnter) { - // Set default hover handler props.onMouseEnter = function (e) { var action = ['show', 'both'].indexOf(_this2.props.delayOn) !== -1 ? _this2.createWithDelay(_actions.show, { el: e.target }) : (0, _actions.show)(_extends({}, _this2.props, { el: e.target })); _this2.props.dispatch(action); @@ -63,7 +62,6 @@ var Origin = function (_Component) { } if (!props.onMouseLeave) { - // Set default leave handler props.onMouseLeave = function (e) { var action = ['hide', 'both'].indexOf(_this2.props.delayOn) !== -1 ? _this2.createWithDelay(_actions.hide) : (0, _actions.hide)(_extends({}, _this2.props)); _this2.props.dispatch(action); @@ -71,13 +69,41 @@ var Origin = function (_Component) { }; } - return _react2.default.createElement( - 'span', - _extends({ ref: 'wrapper' }, props), - this.props.children - ); + return _react2.default.createElement(this.props.tagName, _extends({}, props, { ref: 'wrapper' + })); } }], [{ + key: 'wrapBy', + value: function wrapBy(tagName) { + var CustomOrigin = function (_Origin) { + _inherits(CustomOrigin, _Origin); + + function CustomOrigin() { + _classCallCheck(this, CustomOrigin); + + return _possibleConstructorReturn(this, Object.getPrototypeOf(CustomOrigin).apply(this, arguments)); + } + + _createClass(CustomOrigin, null, [{ + key: 'displayName', + get: function get() { + return Origin.displayName + '.' + tagName; + } + }, { + key: 'defaultProps', + get: function get() { + return _extends({}, Origin.defaultProps, { + tagName: tagName + }); + } + }]); + + return CustomOrigin; + }(Origin); + + return (0, _reactRedux.connect)()(CustomOrigin); + } + }, { key: 'displayName', get: function get() { return 'Origin'; @@ -91,6 +117,7 @@ var Origin = function (_Component) { place: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.arrayOf(_react.PropTypes.string)]), delay: _react.PropTypes.oneOfType([_react.PropTypes.bool, _react.PropTypes.number, _react.PropTypes.string]), delayOn: _react.PropTypes.oneOf(['show', 'hide', 'both']), + tagName: _react.PropTypes.string, onMouseEnter: _react.PropTypes.func, onMouseLeave: _react.PropTypes.func }; @@ -99,7 +126,8 @@ var Origin = function (_Component) { key: 'defaultProps', get: function get() { return { - delayOn: 'hide' + delayOn: 'hide', + tagName: 'span' }; } }]); diff --git a/package.json b/package.json index 1898d2f..b1b72e5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redux-tooltip", - "version": "0.4.5", + "version": "0.4.6", "description": "A tooltip React component for Redux", "main": "./lib/index.js", "repository": {