diff --git a/src/TooltipPopoverWrapper.js b/src/TooltipPopoverWrapper.js
index 7442712ea..413730fe5 100644
--- a/src/TooltipPopoverWrapper.js
+++ b/src/TooltipPopoverWrapper.js
@@ -222,9 +222,7 @@ class TooltipPopoverWrapper extends React.Component {
let triggers = this.props.trigger.split(' ');
if (triggers.indexOf('manual') === -1) {
if (triggers.indexOf('click') > -1 || triggers.indexOf('legacy') > -1) {
- ['click', 'touchstart'].forEach(event =>
- document.addEventListener(event, this.handleDocumentClick, true)
- );
+ document.addEventListener('click', this.handleDocumentClick, true);
}
if (this._target) {
@@ -267,9 +265,7 @@ class TooltipPopoverWrapper extends React.Component {
this._target.removeEventListener('focusout', this.hide, true);
}
- ['click', 'touchstart'].forEach(event =>
- document.removeEventListener(event, this.handleDocumentClick, true)
- );
+ document.removeEventListener('click', this.handleDocumentClick, true)
}
updateTarget() {
diff --git a/src/__tests__/TooltipPopoverWrapper.spec.js b/src/__tests__/TooltipPopoverWrapper.spec.js
index fadbae5ec..06d003c8c 100644
--- a/src/__tests__/TooltipPopoverWrapper.spec.js
+++ b/src/__tests__/TooltipPopoverWrapper.spec.js
@@ -229,6 +229,44 @@ describe('Tooltip', () => {
wrapper.detach();
});
+ it('should open after receiving single touchstart and single click', () => {
+ const wrapper = mount(
+
+ Tooltip Content
+ ,
+ { attachTo: container }
+ );
+
+ expect(isOpen).toBe(false);
+ target.dispatchEvent(new Event('touchstart'));
+ jest.runTimersToTime(20);
+ target.dispatchEvent(new Event('click'));
+ jest.runTimersToTime(200);
+ expect(isOpen).toBe(true);
+
+ wrapper.detach();
+ });
+
+ it('should close after receiving single touchstart and single click', () => {
+ isOpen = true;
+
+ const wrapper = mount(
+
+ Tooltip Content
+ ,
+ { attachTo: container }
+ );
+
+ expect(isOpen).toBe(true);
+ target.dispatchEvent(new Event('touchstart'));
+ jest.runTimersToTime(20);
+ target.dispatchEvent(new Event('click'));
+ jest.runTimersToTime(200);
+ expect(isOpen).toBe(false);
+
+ wrapper.detach();
+ });
+
it('should pass down custom modifiers', () => {
const wrapper = mount(