diff --git a/src/components/tooltip/tooltip.test.ts b/src/components/tooltip/tooltip.test.ts index f4a21b224..5a36d27d0 100644 --- a/src/components/tooltip/tooltip.test.ts +++ b/src/components/tooltip/tooltip.test.ts @@ -134,4 +134,17 @@ describe('', () => { expect(afterHideHandler).to.have.been.calledOnce; expect(base.hidden).to.be.true; }); + + it('should recalculate its target when the slotted element changes', async () => { + const el = await fixture(html` + + Hover me + + `); + + el.innerHTML = 'New element'; + await el.updateComplete; + + expect(el.getTarget().textContent).to.equal('New element'); + }); }); diff --git a/src/components/tooltip/tooltip.ts b/src/components/tooltip/tooltip.ts index 3dc0d2e20..3c9b10cf3 100644 --- a/src/components/tooltip/tooltip.ts +++ b/src/components/tooltip/tooltip.ts @@ -262,6 +262,10 @@ export default class SlTooltip extends LitElement { return triggers.includes(triggerType); } + handleSlotChange() { + this.target = this.getTarget(); + } + private startPositioner() { this.stopPositioner(); this.updatePositioner(); @@ -319,7 +323,7 @@ export default class SlTooltip extends LitElement { render() { return html`
- +