Clean up listeners once has-tooltip set to false

Change-Id: I1127feb10896e7f79e1120567011e4e240560658
This commit is contained in:
Tao Zhou
2020-03-03 15:40:42 +01:00
parent 25ef42a350
commit 7bb2e0e565
2 changed files with 23 additions and 2 deletions

View File

@@ -52,13 +52,27 @@
/** @override */
detached() {
this._handleHideTooltip();
this.removeEventListener('mouseenter', this._mouseenterHandler);
},
/** @override */
attached() {
this._mouseenterHandler = this._handleShowTooltip.bind(this);
},
_setupTooltipListeners() {
if (this._hasSetupTooltipListeners || !this.hasTooltip) { return; }
if (!this.hasTooltip) {
// if attribute set to false, remvoe the listener
this.removeEventListener('mouseenter', this._mouseenterHandler);
return;
}
if (this._hasSetupTooltipListeners) {
return;
}
this._hasSetupTooltipListeners = true;
this.addEventListener('mouseenter', this._handleShowTooltip.bind(this));
this.addEventListener('mouseenter', this._mouseenterHandler);
},
_handleShowTooltip(e) {

View File

@@ -146,5 +146,12 @@ limitations under the License.
element.hasTooltip = true;
assert.isTrue(addListenerStub.called);
});
test('clean up listeners when has-tooltip changed to false', () => {
const removeListenerStub = sandbox.stub(element, 'removeEventListener');
element.hasTooltip = true;
element.hasTooltip = false;
assert.isTrue(removeListenerStub.called);
});
});
</script>