@rc-component/select 1.3.3 → 1.3.5

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.
@@ -9,7 +9,7 @@ import useSelectTriggerControl, { isInside } from "../hooks/useSelectTriggerCont
9
9
  import SelectTrigger from "../SelectTrigger";
10
10
  import { getSeparatedContent, isValidCount } from "../utils/valueUtil";
11
11
  import Polite from "./Polite";
12
- import useOpen from "../hooks/useOpen";
12
+ import useOpen, { macroTask } from "../hooks/useOpen";
13
13
  import { useEvent } from '@rc-component/util';
14
14
  import SelectInput from "../SelectInput";
15
15
  import useComponents from "../hooks/useComponents";
@@ -295,9 +295,7 @@ const BaseSelect = /*#__PURE__*/React.forwardRef((props, ref) => {
295
295
  useSelectTriggerControl(getSelectElements, mergedOpen, triggerOpen, !!mergedComponents.root);
296
296
 
297
297
  // ========================== Focus / Blur ==========================
298
- /** Record real focus status */
299
- // const focusRef = React.useRef<boolean>(false);
300
-
298
+ const internalMouseDownRef = React.useRef(false);
301
299
  const onInternalFocus = event => {
302
300
  setFocused(true);
303
301
  if (!disabled) {
@@ -310,7 +308,7 @@ const BaseSelect = /*#__PURE__*/React.forwardRef((props, ref) => {
310
308
  };
311
309
  const onRootBlur = () => {
312
310
  // Delay close should check the activeElement
313
- if (mergedOpen) {
311
+ if (mergedOpen && !internalMouseDownRef.current) {
314
312
  triggerOpen(false, {
315
313
  cancelFun: () => isInside(getSelectElements(), document.activeElement)
316
314
  });
@@ -348,6 +346,10 @@ const BaseSelect = /*#__PURE__*/React.forwardRef((props, ref) => {
348
346
  triggerOpen(true);
349
347
  }
350
348
  onMouseDown?.(event, ...restArgs);
349
+ internalMouseDownRef.current = true;
350
+ macroTask(() => {
351
+ internalMouseDownRef.current = false;
352
+ });
351
353
  };
352
354
 
353
355
  // ============================ Dropdown ============================
@@ -174,9 +174,9 @@ const Input = /*#__PURE__*/React.forwardRef((props, ref) => {
174
174
  role: role || 'combobox',
175
175
  'aria-expanded': open || false,
176
176
  'aria-haspopup': 'listbox',
177
- 'aria-owns': `${id}_list`,
177
+ 'aria-owns': open ? `${id}_list` : undefined,
178
178
  'aria-autocomplete': 'list',
179
- 'aria-controls': `${id}_list`,
179
+ 'aria-controls': open ? `${id}_list` : undefined,
180
180
  'aria-activedescendant': open ? activeDescendantId : undefined
181
181
  };
182
182
 
@@ -14,7 +14,7 @@ var _useSelectTriggerControl = _interopRequireWildcard(require("../hooks/useSele
14
14
  var _SelectTrigger = _interopRequireDefault(require("../SelectTrigger"));
15
15
  var _valueUtil = require("../utils/valueUtil");
16
16
  var _Polite = _interopRequireDefault(require("./Polite"));
17
- var _useOpen = _interopRequireDefault(require("../hooks/useOpen"));
17
+ var _useOpen = _interopRequireWildcard(require("../hooks/useOpen"));
18
18
  var _util = require("@rc-component/util");
19
19
  var _SelectInput = _interopRequireDefault(require("../SelectInput"));
20
20
  var _useComponents = _interopRequireDefault(require("../hooks/useComponents"));
@@ -304,9 +304,7 @@ const BaseSelect = /*#__PURE__*/React.forwardRef((props, ref) => {
304
304
  (0, _useSelectTriggerControl.default)(getSelectElements, mergedOpen, triggerOpen, !!mergedComponents.root);
305
305
 
306
306
  // ========================== Focus / Blur ==========================
307
- /** Record real focus status */
308
- // const focusRef = React.useRef<boolean>(false);
309
-
307
+ const internalMouseDownRef = React.useRef(false);
310
308
  const onInternalFocus = event => {
311
309
  setFocused(true);
312
310
  if (!disabled) {
@@ -319,7 +317,7 @@ const BaseSelect = /*#__PURE__*/React.forwardRef((props, ref) => {
319
317
  };
320
318
  const onRootBlur = () => {
321
319
  // Delay close should check the activeElement
322
- if (mergedOpen) {
320
+ if (mergedOpen && !internalMouseDownRef.current) {
323
321
  triggerOpen(false, {
324
322
  cancelFun: () => (0, _useSelectTriggerControl.isInside)(getSelectElements(), document.activeElement)
325
323
  });
@@ -357,6 +355,10 @@ const BaseSelect = /*#__PURE__*/React.forwardRef((props, ref) => {
357
355
  triggerOpen(true);
358
356
  }
359
357
  onMouseDown?.(event, ...restArgs);
358
+ internalMouseDownRef.current = true;
359
+ (0, _useOpen.macroTask)(() => {
360
+ internalMouseDownRef.current = false;
361
+ });
360
362
  };
361
363
 
362
364
  // ============================ Dropdown ============================
@@ -183,9 +183,9 @@ const Input = /*#__PURE__*/React.forwardRef((props, ref) => {
183
183
  role: role || 'combobox',
184
184
  'aria-expanded': open || false,
185
185
  'aria-haspopup': 'listbox',
186
- 'aria-owns': `${id}_list`,
186
+ 'aria-owns': open ? `${id}_list` : undefined,
187
187
  'aria-autocomplete': 'list',
188
- 'aria-controls': `${id}_list`,
188
+ 'aria-controls': open ? `${id}_list` : undefined,
189
189
  'aria-activedescendant': open ? activeDescendantId : undefined
190
190
  };
191
191
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rc-component/select",
3
- "version": "1.3.3",
3
+ "version": "1.3.5",
4
4
  "description": "React Select",
5
5
  "engines": {
6
6
  "node": ">=8.x"