diff --git a/packages/menu/src/Menu.ts b/packages/menu/src/Menu.ts index a28059c81c8..ec40e7ec416 100644 --- a/packages/menu/src/Menu.ts +++ b/packages/menu/src/Menu.ts @@ -342,22 +342,20 @@ export class Menu extends SizedMixin(SpectrumElement, { noDefaultSize: true }) { } } - private willSynthesizeClick = 0; + // if the click and pointerup events are on the same target, we should not + // handle the click event. + private pointerUpTarget = null as EventTarget | null; private handleClick(event: Event): void { - if (this.willSynthesizeClick) { - cancelAnimationFrame(this.willSynthesizeClick); - this.willSynthesizeClick = 0; + if (this.pointerUpTarget === event.target) { + this.pointerUpTarget = null; return; } this.handlePointerBasedSelection(event); } private handlePointerup(event: Event): void { - this.willSynthesizeClick = requestAnimationFrame(() => { - event.target?.dispatchEvent(new Event('click')); - this.willSynthesizeClick = 0; - }); + this.pointerUpTarget = event.target; this.handlePointerBasedSelection(event); }