Skip to content

Commit 4f984c7

Browse files
committed
Allow user to specify separate off event for the tooltip
1 parent 00cd3de commit 4f984c7

File tree

5 files changed

+101
-57
lines changed

5 files changed

+101
-57
lines changed

dist/react-tooltip.js

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ var ReactTooltip = function (_Component) {
101101
delayHide: 0,
102102
delayShow: 0,
103103
event: props.event || null,
104+
eventoff: props.eventOff || null,
104105
isCapture: props.isCapture || false
105106
};
106107
_this.delayShowLoop = null;
@@ -170,15 +171,26 @@ var ReactTooltip = function (_Component) {
170171
value: function bindListener() {
171172
var targetArray = this.getTargetArray();
172173

173-
var dataEvent = undefined;
174+
var dataEvent = void 0;
175+
var dataEventOff = void 0;
174176
for (var i = 0; i < targetArray.length; i++) {
175177
if (targetArray[i].getAttribute('currentItem') === null) {
176178
targetArray[i].setAttribute('currentItem', 'false');
177179
}
178180
dataEvent = this.state.event || targetArray[i].getAttribute('data-event');
179181
if (dataEvent) {
180-
targetArray[i].removeEventListener(dataEvent, this.checkStatus);
181-
targetArray[i].addEventListener(dataEvent, this.checkStatus, false);
182+
dataEventOff = this.state.eventOff || targetArray[i].getAttribute('data-event-off');
183+
// if off event is specified, we will show tip on data-event and hide it on data-event-off
184+
if (dataEventOff) {
185+
targetArray[i].removeEventListener(dataEvent, this.showTooltip);
186+
targetArray[i].addEventListener(dataEvent, this.showTooltip, false);
187+
188+
targetArray[i].removeEventListener(dataEventOff, this.hideTooltip);
189+
targetArray[i].addEventListener(dataEventOff, this.hideTooltip, false);
190+
} else {
191+
targetArray[i].removeEventListener(dataEvent, this.checkStatus);
192+
targetArray[i].addEventListener(dataEvent, this.checkStatus, false);
193+
}
182194
} else {
183195
targetArray[i].removeEventListener('mouseenter', this.showTooltip);
184196
targetArray[i].addEventListener('mouseenter', this.showTooltip, false);
@@ -197,7 +209,7 @@ var ReactTooltip = function (_Component) {
197209
key: 'unbindListener',
198210
value: function unbindListener() {
199211
var targetArray = document.querySelectorAll('[data-tip]');
200-
var dataEvent = undefined;
212+
var dataEvent = void 0;
201213

202214
for (var i = 0; i < targetArray.length; i++) {
203215
dataEvent = this.state.event || targetArray[i].getAttribute('data-event');
@@ -220,7 +232,7 @@ var ReactTooltip = function (_Component) {
220232
value: function getTargetArray() {
221233
var id = this.props.id;
222234

223-
var targetArray = undefined;
235+
var targetArray = void 0;
224236

225237
if (id === undefined) {
226238
targetArray = document.querySelectorAll('[data-tip]:not([data-for])');
@@ -269,7 +281,7 @@ var ReactTooltip = function (_Component) {
269281
value: function checkStatus(e) {
270282
var show = this.state.show;
271283

272-
var isCapture = undefined;
284+
var isCapture = void 0;
273285

274286
if (e.currentTarget.getAttribute('data-iscapture')) {
275287
isCapture = e.currentTarget.getAttribute('data-iscapture') === 'true';
@@ -320,7 +332,7 @@ var ReactTooltip = function (_Component) {
320332
/* Detect multiline */
321333
var regexp = /<br\s*\/?>/;
322334
var multiline = e.currentTarget.getAttribute('data-multiline') ? e.currentTarget.getAttribute('data-multiline') : this.props.multiline ? this.props.multiline : false;
323-
var tooltipText = undefined;
335+
var tooltipText = void 0;
324336
var multilineCount = 0;
325337
if (!multiline || multiline === 'false' || !regexp.test(originTooltip)) {
326338
tooltipText = originTooltip;
@@ -455,8 +467,8 @@ var ReactTooltip = function (_Component) {
455467
var targetHeight = currentTarget.clientHeight;
456468
var windoWidth = window.innerWidth;
457469
var windowHeight = window.innerHeight;
458-
var x = undefined;
459-
var y = undefined;
470+
var x = void 0;
471+
var y = void 0;
460472
var defaultTopY = targetTop - tipHeight - 8;
461473
var defaultBottomY = targetTop + targetHeight + 8;
462474
var defaultLeftX = targetLeft - tipWidth - 6;
@@ -728,8 +740,8 @@ var ReactTooltip = function (_Component) {
728740
}
729741
firstCount++;
730742
}
731-
for (var i = string.length - 1; i >= 0; i--) {
732-
if (string[i] !== ' ') {
743+
for (var _i = string.length - 1; _i >= 0; _i--) {
744+
if (string[_i] !== ' ') {
733745
break;
734746
}
735747
lastCount++;
@@ -757,6 +769,7 @@ ReactTooltip.propTypes = {
757769
delayHide: _react.PropTypes.number,
758770
delayShow: _react.PropTypes.number,
759771
event: _react.PropTypes.any,
772+
eventOff: _react.PropTypes.any,
760773
watchWindow: _react.PropTypes.bool,
761774
isCapture: _react.PropTypes.bool
762775
};

0 commit comments

Comments
 (0)