Skip to content

Commit 43a037c

Browse files
committed
Merge pull request #103 from ondy1985/master
Allow user to specify separate off event for the tooltip
2 parents f510164 + d493f83 commit 43a037c

File tree

5 files changed

+47
-8
lines changed

5 files changed

+47
-8
lines changed

dist/react-tooltip.js

Lines changed: 15 additions & 2 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;
@@ -171,14 +172,25 @@ var ReactTooltip = function (_Component) {
171172
var targetArray = this.getTargetArray();
172173

173174
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);
@@ -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
};

dist/react-tooltip.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/index.js

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ class ReactTooltip extends Component {
6868
delayHide: 0,
6969
delayShow: 0,
7070
event: props.event || null,
71+
eventOff: props.eventOff || null,
7172
isCapture: props.isCapture || false
7273
}
7374
this.delayShowLoop = null
@@ -118,14 +119,25 @@ class ReactTooltip extends Component {
118119
let targetArray = this.getTargetArray()
119120

120121
let dataEvent
122+
let dataEventOff
121123
for (let i = 0; i < targetArray.length; i++) {
122124
if (targetArray[i].getAttribute('currentItem') === null) {
123125
targetArray[i].setAttribute('currentItem', 'false')
124126
}
125127
dataEvent = this.state.event || targetArray[i].getAttribute('data-event')
126128
if (dataEvent) {
127-
targetArray[i].removeEventListener(dataEvent, this.checkStatus)
128-
targetArray[i].addEventListener(dataEvent, this.checkStatus, false)
129+
dataEventOff = this.state.eventOff || targetArray[i].getAttribute('data-event-off')
130+
// if off event is specified, we will show tip on data-event and hide it on data-event-off
131+
if (dataEventOff) {
132+
targetArray[i].removeEventListener(dataEvent, this.showTooltip)
133+
targetArray[i].addEventListener(dataEvent, this.showTooltip, false)
134+
135+
targetArray[i].removeEventListener(dataEventOff, this.hideTooltip)
136+
targetArray[i].addEventListener(dataEventOff, this.hideTooltip, false)
137+
} else {
138+
targetArray[i].removeEventListener(dataEvent, this.checkStatus)
139+
targetArray[i].addEventListener(dataEvent, this.checkStatus, false)
140+
}
129141
} else {
130142
targetArray[i].removeEventListener('mouseenter', this.showTooltip)
131143
targetArray[i].addEventListener('mouseenter', this.showTooltip, false)
@@ -648,6 +660,7 @@ ReactTooltip.propTypes = {
648660
delayHide: PropTypes.number,
649661
delayShow: PropTypes.number,
650662
event: PropTypes.any,
663+
eventOff: PropTypes.any,
651664
watchWindow: PropTypes.bool,
652665
isCapture: PropTypes.bool
653666
}

standalone/react-tooltip.js

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ var ReactTooltip = function (_Component) {
153153
delayHide: 0,
154154
delayShow: 0,
155155
event: props.event || null,
156+
eventOff: props.eventOff || null,
156157
isCapture: props.isCapture || false
157158
};
158159
_this.delayShowLoop = null;
@@ -223,14 +224,25 @@ var ReactTooltip = function (_Component) {
223224
var targetArray = this.getTargetArray();
224225

225226
var dataEvent = void 0;
227+
var dataEventOff = void 0;
226228
for (var i = 0; i < targetArray.length; i++) {
227229
if (targetArray[i].getAttribute('currentItem') === null) {
228230
targetArray[i].setAttribute('currentItem', 'false');
229231
}
230232
dataEvent = this.state.event || targetArray[i].getAttribute('data-event');
231233
if (dataEvent) {
232-
targetArray[i].removeEventListener(dataEvent, this.checkStatus);
233-
targetArray[i].addEventListener(dataEvent, this.checkStatus, false);
234+
dataEventOff = this.state.eventOff || targetArray[i].getAttribute('data-event-off');
235+
// if off event is specified, we will show tip on data-event and hide it on data-event-off
236+
if (dataEventOff) {
237+
targetArray[i].removeEventListener(dataEvent, this.showTooltip);
238+
targetArray[i].addEventListener(dataEvent, this.showTooltip, false);
239+
240+
targetArray[i].removeEventListener(dataEventOff, this.hideTooltip);
241+
targetArray[i].addEventListener(dataEventOff, this.hideTooltip, false);
242+
} else {
243+
targetArray[i].removeEventListener(dataEvent, this.checkStatus);
244+
targetArray[i].addEventListener(dataEvent, this.checkStatus, false);
245+
}
234246
} else {
235247
targetArray[i].removeEventListener('mouseenter', this.showTooltip);
236248
targetArray[i].addEventListener('mouseenter', this.showTooltip, false);
@@ -809,6 +821,7 @@ ReactTooltip.propTypes = {
809821
delayHide: _react.PropTypes.number,
810822
delayShow: _react.PropTypes.number,
811823
event: _react.PropTypes.any,
824+
eventOff: _react.PropTypes.any,
812825
watchWindow: _react.PropTypes.bool,
813826
isCapture: _react.PropTypes.bool
814827
};

standalone/react-tooltip.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)