From 2c22d97859fd95ba054b2d15b11ffacf6ec08ce6 Mon Sep 17 00:00:00 2001 From: Rasten Remizov Date: Tue, 9 Jun 2026 21:03:43 +0300 Subject: [PATCH 1/3] fix(SelectTrigger): prevent supression of mousedown event --- packages/core/src/Select/SelectTrigger.vue | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/core/src/Select/SelectTrigger.vue b/packages/core/src/Select/SelectTrigger.vue index c87a281a2e..9a2f26386f 100644 --- a/packages/core/src/Select/SelectTrigger.vue +++ b/packages/core/src/Select/SelectTrigger.vue @@ -74,7 +74,7 @@ function handlePointerOpen(event: PointerEvent) { // Whilst browsers generally have no issue focusing the trigger when clicking // on a label, Safari seems to struggle with the fact that there's no `onClick`. // We force `focus` in this case. Note: this doesn't create any other side-effect - // because we are preventing default in `onPointerDown` so effectively + // because we are preventing default in `onMouseDown` so effectively // this only runs for a label 'click' (event?.currentTarget as HTMLElement)?.focus(); } @@ -97,11 +97,18 @@ function handlePointerOpen(event: PointerEvent) { // but not when the control key is pressed (avoiding MacOS right click) if (event.button === 0 && event.ctrlKey === false) { handlePointerOpen(event) - // prevent trigger from stealing focus from the active item after opening. - event.preventDefault(); } } " + @mousedown=" + (event: MouseEvent) => { + // Prevent trigger from stealing focus from the active item after opening. + // We avoid calling `preventDefault` in `pointerdown` because that suppresses + // compatibility mouse events (`mousedown`, `mouseup`, `click`). + if (event.button === 0 && event.ctrlKey === false) + event.preventDefault(); + } + " @pointerup.prevent=" (event: PointerEvent) => { // Only open on pointer up when using touch devices From 8ed0a48b8bf98829022e14f2efdbda3c48d49142 Mon Sep 17 00:00:00 2001 From: Rasten Remizov Date: Tue, 9 Jun 2026 21:13:11 +0300 Subject: [PATCH 2/3] refactor(SelectTrigger): extract condition as function --- packages/core/src/Select/SelectTrigger.vue | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/core/src/Select/SelectTrigger.vue b/packages/core/src/Select/SelectTrigger.vue index 9a2f26386f..80ad0106e8 100644 --- a/packages/core/src/Select/SelectTrigger.vue +++ b/packages/core/src/Select/SelectTrigger.vue @@ -47,6 +47,10 @@ function handlePointerOpen(event: PointerEvent) { y: Math.round(event.pageY), } } + +function isCtrlLeftClick(event: MouseEvent) { + return event.button === 0 && event.ctrlKey === false +}