Clean up listeners once has-tooltip set to false
Change-Id: I1127feb10896e7f79e1120567011e4e240560658
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user