Skip to content

Commit 0703bd1

Browse files
authored
fix: do not trap focus when removing overlay while opening (#10042)
1 parent b9d7940 commit 0703bd1

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

packages/overlay/src/vaadin-overlay-mixin.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,11 @@ export const OverlayMixin = (superClass) =>
156156
disconnectedCallback() {
157157
super.disconnectedCallback();
158158

159+
if (this.__scheduledOpen) {
160+
cancelAnimationFrame(this.__scheduledOpen);
161+
this.__scheduledOpen = null;
162+
}
163+
159164
/* c8 ignore next 3 */
160165
if (this._boundIosResizeListener) {
161166
window.removeEventListener('resize', this._boundIosResizeListener);

packages/overlay/test/basic.test.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,16 @@ describe('vaadin-overlay', () => {
4444
expect(spy).to.not.be.called;
4545
});
4646

47+
it('should not fire when immediately disconnected after setting opened to true', async () => {
48+
overlay.opened = true;
49+
overlay.remove();
50+
51+
await nextFrame();
52+
await aTimeout(0);
53+
54+
expect(spy).to.not.be.called;
55+
});
56+
4757
it('should not propagate through shadow roots', async () => {
4858
overlay.opened = true;
4959
await nextFrame();

0 commit comments

Comments
 (0)