diff --git a/.yarn/versions/a4fe86bf.yml b/.yarn/versions/a4fe86bf.yml new file mode 100644 index 000000000..517939231 --- /dev/null +++ b/.yarn/versions/a4fe86bf.yml @@ -0,0 +1,5 @@ +releases: + "@radix-ui/react-select": patch + +declined: + - primitives diff --git a/packages/react/select/src/Select.tsx b/packages/react/select/src/Select.tsx index 5e848d8ca..7b885efd0 100644 --- a/packages/react/select/src/Select.tsx +++ b/packages/react/select/src/Select.tsx @@ -288,10 +288,18 @@ const SelectTrigger = React.forwardRef target.releasePointerCapture(event.pointerId); } + const fieldset = target.closest('fieldset'); + const fieldsetDisabled = fieldset ? fieldset.disabled : false; + // only call handler if it's the left button (mousedown gets triggered by all mouse buttons) // but not when the control key is pressed (avoiding MacOS right click); also not for touch // devices because that would open the menu on scroll. (pen devices behave as touch on iOS). - if (event.button === 0 && event.ctrlKey === false && event.pointerType === 'mouse') { + if ( + event.button === 0 && + event.ctrlKey === false && + event.pointerType === 'mouse' && + !fieldsetDisabled + ) { handleOpen(event); // prevent trigger from stealing focus from the active item after opening. event.preventDefault();