@choice-ui/react 1.5.5 → 1.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -94,6 +94,7 @@ var SelectComponent = memo(function SelectComponent2(props) {
94
94
  const allowMouseUpRef = useRef(true);
95
95
  const selectTimeoutRef = useRef();
96
96
  const scrollRef = useRef(null);
97
+ const isMouseDownFromTriggerRef = useRef(false);
97
98
  const refs = useMemo(
98
99
  () => ({
99
100
  list: listRef,
@@ -102,7 +103,8 @@ var SelectComponent = memo(function SelectComponent2(props) {
102
103
  allowSelect: allowSelectRef,
103
104
  allowMouseUp: allowMouseUpRef,
104
105
  selectTimeout: selectTimeoutRef,
105
- scroll: scrollRef
106
+ scroll: scrollRef,
107
+ isMouseDownFromTrigger: isMouseDownFromTriggerRef
106
108
  }),
107
109
  []
108
110
  // refs are stable references, no dependencies needed
@@ -232,6 +234,7 @@ var SelectComponent = memo(function SelectComponent2(props) {
232
234
  } else {
233
235
  refs.allowSelect.current = false;
234
236
  refs.allowMouseUp.current = true;
237
+ refs.isMouseDownFromTrigger.current = false;
235
238
  }
236
239
  }, [isControlledOpen]);
237
240
  const { handleArrowScroll, handleArrowHide, scrollProps } = useMenuScroll({
@@ -319,6 +322,13 @@ var SelectComponent = memo(function SelectComponent2(props) {
319
322
  },
320
323
  onMouseUp: () => {
321
324
  if (!refs.allowMouseUp.current || customActive) return;
325
+ if (refs.isMouseDownFromTrigger.current) {
326
+ refs.isMouseDownFromTrigger.current = false;
327
+ if (!isDisabled) {
328
+ handleSelect(currentSelectableIndex);
329
+ }
330
+ return;
331
+ }
322
332
  if (refs.allowSelect.current) {
323
333
  handleSelect(currentSelectableIndex);
324
334
  }
@@ -380,6 +390,9 @@ var SelectComponent = memo(function SelectComponent2(props) {
380
390
  onTouchStart() {
381
391
  setTouch(true);
382
392
  },
393
+ onMouseDown() {
394
+ refs.isMouseDownFromTrigger.current = true;
395
+ },
383
396
  onPointerMove({ pointerType }) {
384
397
  if (pointerType !== "touch") {
385
398
  setTouch(false);
@@ -399,6 +412,9 @@ var SelectComponent = memo(function SelectComponent2(props) {
399
412
  {
400
413
  lockScroll: !touch,
401
414
  className: tcx("z-menu", focusManagerProps.modal ? "" : "pointer-events-none"),
415
+ onMouseUp: () => {
416
+ refs.isMouseDownFromTrigger.current = false;
417
+ },
402
418
  children: /* @__PURE__ */ jsx(
403
419
  FloatingFocusManager,
404
420
  {
@@ -94,6 +94,7 @@ const SelectComponent = memo(function SelectComponent2(props) {
94
94
  const allowMouseUpRef = useRef(true);
95
95
  const selectTimeoutRef = useRef();
96
96
  const scrollRef = useRef(null);
97
+ const isMouseDownFromTriggerRef = useRef(false);
97
98
  const refs = useMemo(
98
99
  () => ({
99
100
  list: listRef,
@@ -102,7 +103,8 @@ const SelectComponent = memo(function SelectComponent2(props) {
102
103
  allowSelect: allowSelectRef,
103
104
  allowMouseUp: allowMouseUpRef,
104
105
  selectTimeout: selectTimeoutRef,
105
- scroll: scrollRef
106
+ scroll: scrollRef,
107
+ isMouseDownFromTrigger: isMouseDownFromTriggerRef
106
108
  }),
107
109
  []
108
110
  // refs are stable references, no dependencies needed
@@ -232,6 +234,7 @@ const SelectComponent = memo(function SelectComponent2(props) {
232
234
  } else {
233
235
  refs.allowSelect.current = false;
234
236
  refs.allowMouseUp.current = true;
237
+ refs.isMouseDownFromTrigger.current = false;
235
238
  }
236
239
  }, [isControlledOpen]);
237
240
  const { handleArrowScroll, handleArrowHide, scrollProps } = useMenuScroll({
@@ -319,6 +322,13 @@ const SelectComponent = memo(function SelectComponent2(props) {
319
322
  },
320
323
  onMouseUp: () => {
321
324
  if (!refs.allowMouseUp.current || customActive) return;
325
+ if (refs.isMouseDownFromTrigger.current) {
326
+ refs.isMouseDownFromTrigger.current = false;
327
+ if (!isDisabled) {
328
+ handleSelect(currentSelectableIndex);
329
+ }
330
+ return;
331
+ }
322
332
  if (refs.allowSelect.current) {
323
333
  handleSelect(currentSelectableIndex);
324
334
  }
@@ -380,6 +390,9 @@ const SelectComponent = memo(function SelectComponent2(props) {
380
390
  onTouchStart() {
381
391
  setTouch(true);
382
392
  },
393
+ onMouseDown() {
394
+ refs.isMouseDownFromTrigger.current = true;
395
+ },
383
396
  onPointerMove({ pointerType }) {
384
397
  if (pointerType !== "touch") {
385
398
  setTouch(false);
@@ -399,6 +412,9 @@ const SelectComponent = memo(function SelectComponent2(props) {
399
412
  {
400
413
  lockScroll: !touch,
401
414
  className: tcx("z-menu", focusManagerProps.modal ? "" : "pointer-events-none"),
415
+ onMouseUp: () => {
416
+ refs.isMouseDownFromTrigger.current = false;
417
+ },
402
418
  children: /* @__PURE__ */ jsx(
403
419
  FloatingFocusManager,
404
420
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@choice-ui/react",
3
- "version": "1.5.5",
3
+ "version": "1.5.6",
4
4
  "description": "A desktop-first React UI component library built for professional desktop applications with comprehensive documentation",
5
5
  "sideEffects": false,
6
6
  "type": "module",