Skip to content

Commit

Permalink
Fix render toggle listener setup without needing stopPropagation
Browse files Browse the repository at this point in the history
  • Loading branch information
Scott Elwood authored and Scott Elwood committed Oct 5, 2017
1 parent 21fa694 commit e31dd36
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 24 deletions.
31 changes: 20 additions & 11 deletions dist/popover.js
Original file line number Diff line number Diff line change
Expand Up @@ -925,18 +925,22 @@ var Renderer = function () {
}, {
key: 'toggleRenderListeners',
value: function toggleRenderListeners(isToggled) {
var _this = this;

if (this.showOnObjects.length > 0) {
var method = isToggled ? 'addEventListener' : 'removeEventListener';
this.showOnObjects.forEach(function (showOn) {
showOn.element[method](showOn.event, showOn.callback);
setTimeout(function () {
var method = isToggled ? 'addEventListener' : 'removeEventListener';
_this.showOnObjects.forEach(function (showOn) {
showOn.element[method](showOn.event, showOn.callback);
});
});
}
}
}, {
key: 'onTriggerClick',
value: function onTriggerClick(element, event, e) {
this.toggleRenderListeners(false);
this.onShowEvent(e);
this.toggleRenderListeners(false);
}
}, {
key: 'onShowEvent',
Expand Down Expand Up @@ -964,10 +968,14 @@ var Renderer = function () {
}, {
key: 'toggleHideListeners',
value: function toggleHideListeners(isToggled) {
var _this2 = this;

if (this.hideOnObjects.length > 0) {
var method = isToggled ? 'addEventListener' : 'removeEventListener';
this.hideOnObjects.forEach(function (hideOn) {
hideOn.element[method](hideOn.event, hideOn.callback);
setTimeout(function () {
var method = isToggled ? 'addEventListener' : 'removeEventListener';
_this2.hideOnObjects.forEach(function (hideOn) {
hideOn.element[method](hideOn.event, hideOn.callback);
});
});
}
}
Expand Down Expand Up @@ -1036,7 +1044,7 @@ var Renderer = function () {
}, {
key: 'shouldShow',
value: function shouldShow() {
var _this = this;
var _this3 = this;

if (this.isVisible || this.isForceClosing) {
this.toggleRenderListeners(true);
Expand All @@ -1047,7 +1055,7 @@ var Renderer = function () {

if (this.options.showDelay > 0) {
this.showTimeout = setTimeout(function () {
_this._show();
_this3._show();
}, this.options.showDelay);
} else {
this._show();
Expand Down Expand Up @@ -1083,7 +1091,7 @@ var Renderer = function () {
}, {
key: 'shouldHide',
value: function shouldHide() {
var _this2 = this;
var _this4 = this;

if (!this.isVisible) {
return;
Expand All @@ -1093,7 +1101,7 @@ var Renderer = function () {

if (this.options.hideDelay > 0) {
this.hideTimeout = setTimeout(function () {
_this2._hide();
_this4._hide();
}, this.options.hideDelay);
} else {
this._hide();
Expand All @@ -1109,6 +1117,7 @@ var Renderer = function () {
value: function _hide() {
this.options.onBeforeHide();
this.toggleVisibility(false);
this.toggleHideListeners(false);
}
}, {
key: 'toggleVisibility',
Expand Down
31 changes: 18 additions & 13 deletions src/renderer.js
Original file line number Diff line number Diff line change
Expand Up @@ -105,19 +105,21 @@ class Renderer {

toggleRenderListeners(isToggled) {
if (this.showOnObjects.length > 0) {
const method = isToggled ? 'addEventListener' : 'removeEventListener';
this.showOnObjects.forEach((showOn) => {
showOn.element[method](
showOn.event,
showOn.callback,
);
setTimeout(() => {
const method = isToggled ? 'addEventListener' : 'removeEventListener';
this.showOnObjects.forEach((showOn) => {
showOn.element[method](
showOn.event,
showOn.callback,
);
});
});
}
}

onTriggerClick(element, event, e) {
this.toggleRenderListeners(false);
this.onShowEvent(e);
this.toggleRenderListeners(false);
}

onShowEvent(event) {
Expand All @@ -140,12 +142,14 @@ class Renderer {

toggleHideListeners(isToggled) {
if (this.hideOnObjects.length > 0) {
const method = isToggled ? 'addEventListener' : 'removeEventListener';
this.hideOnObjects.forEach((hideOn) => {
hideOn.element[method](
hideOn.event,
hideOn.callback,
);
setTimeout(() => {
const method = isToggled ? 'addEventListener' : 'removeEventListener';
this.hideOnObjects.forEach((hideOn) => {
hideOn.element[method](
hideOn.event,
hideOn.callback,
);
});
});
}
}
Expand Down Expand Up @@ -264,6 +268,7 @@ class Renderer {
_hide() {
this.options.onBeforeHide();
this.toggleVisibility(false);
this.toggleHideListeners(false);
}

toggleVisibility(isVisible = false) {
Expand Down

0 comments on commit e31dd36

Please sign in to comment.