Skip to content

Commit 7827135

Browse files
authored
fix: hide context-menu overlay until rendered (#9329)
1 parent eafb36f commit 7827135

File tree

3 files changed

+8
-7
lines changed

3 files changed

+8
-7
lines changed

packages/context-menu/src/vaadin-context-menu-mixin.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ export const ContextMenuMixin = (superClass) =>
215215
*/
216216
_onVaadinOverlayOpen() {
217217
this.__alignOverlayPosition();
218-
this._overlayElement.style.opacity = '';
218+
this._overlayElement.style.visibility = '';
219219
this.__forwardFocus();
220220
}
221221

@@ -403,7 +403,8 @@ export const ContextMenuMixin = (superClass) =>
403403
this.__y = this._getEventCoordinate(e, 'y');
404404
this.__pageYOffset = window.pageYOffset;
405405

406-
this._overlayElement.style.opacity = '0';
406+
// Hide overlay until it is fully rendered and positioned
407+
this._overlayElement.style.visibility = 'hidden';
407408
this._setOpened(true);
408409
}
409410
}

packages/context-menu/test/overlay.test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,10 @@ describe('overlay', () => {
6363
it('should be invisible before open', async () => {
6464
menu.openOn = 'foobar';
6565
fire(menu.listenOn, 'foobar', { x: 5, y: 5, sourceEvent: { clientX: 10, clientY: 20 } });
66-
expect(window.getComputedStyle(overlay).opacity).to.eql('0');
66+
expect(window.getComputedStyle(overlay).visibility).to.eql('hidden');
6767

6868
await oneEvent(overlay, 'vaadin-overlay-open');
69-
expect(window.getComputedStyle(overlay).opacity).to.eql('1');
69+
expect(window.getComputedStyle(overlay).visibility).to.eql('visible');
7070
});
7171

7272
it('should be visible when open', async () => {

packages/menu-bar/test/sub-menu.test.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ describe('sub-menu', () => {
125125

126126
it('should focus the first item on overlay arrow down after open on click', async () => {
127127
buttons[0].click();
128-
await nextRender();
128+
await oneEvent(subMenuOverlay, 'vaadin-overlay-open');
129129
const overlay = subMenuOverlay.$.overlay;
130130
const item = subMenuOverlay.querySelector('vaadin-menu-bar-item');
131131
const spy = sinon.spy(item, 'focus');
@@ -135,7 +135,7 @@ describe('sub-menu', () => {
135135

136136
it('should focus the last item on overlay arrow up after open on click', async () => {
137137
buttons[0].click();
138-
await nextRender();
138+
await oneEvent(subMenuOverlay, 'vaadin-overlay-open');
139139
const overlay = subMenuOverlay.$.overlay;
140140
const items = subMenuOverlay.querySelectorAll('vaadin-menu-bar-item');
141141
const last = items[items.length - 1];
@@ -237,7 +237,7 @@ describe('sub-menu', () => {
237237
let item = subMenuOverlay.querySelector('vaadin-menu-bar-item');
238238
await nextRender();
239239
arrowLeft(item);
240-
await nextRender();
240+
await oneEvent(subMenuOverlay, 'vaadin-overlay-open');
241241
item = subMenuOverlay.querySelector('vaadin-menu-bar-item');
242242
const spy = sinon.spy(item, 'focus');
243243
arrowDown(buttons[2]);

0 commit comments

Comments
 (0)