@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.
package/es/BaseSelect/index.js
CHANGED
|
@@ -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
|
-
|
|
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 ============================
|
package/es/SelectInput/Input.js
CHANGED
|
@@ -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
|
|
package/lib/BaseSelect/index.js
CHANGED
|
@@ -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 =
|
|
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
|
-
|
|
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 ============================
|
package/lib/SelectInput/Input.js
CHANGED
|
@@ -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
|
|