Clean up listeners once has-tooltip set to false
Change-Id: I1127feb10896e7f79e1120567011e4e240560658
This commit is contained in:
@@ -52,13 +52,27 @@
|
|||||||
/** @override */
|
/** @override */
|
||||||
detached() {
|
detached() {
|
||||||
this._handleHideTooltip();
|
this._handleHideTooltip();
|
||||||
|
this.removeEventListener('mouseenter', this._mouseenterHandler);
|
||||||
|
},
|
||||||
|
|
||||||
|
/** @override */
|
||||||
|
attached() {
|
||||||
|
this._mouseenterHandler = this._handleShowTooltip.bind(this);
|
||||||
},
|
},
|
||||||
|
|
||||||
_setupTooltipListeners() {
|
_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._hasSetupTooltipListeners = true;
|
||||||
|
|
||||||
this.addEventListener('mouseenter', this._handleShowTooltip.bind(this));
|
this.addEventListener('mouseenter', this._mouseenterHandler);
|
||||||
},
|
},
|
||||||
|
|
||||||
_handleShowTooltip(e) {
|
_handleShowTooltip(e) {
|
||||||
|
|||||||
@@ -146,5 +146,12 @@ limitations under the License.
|
|||||||
element.hasTooltip = true;
|
element.hasTooltip = true;
|
||||||
assert.isTrue(addListenerStub.called);
|
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>
|
</script>
|
||||||
|
|||||||
Reference in New Issue
Block a user