@rc-component/select 1.3.0 → 1.3.2
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 +18 -6
- package/es/SelectInput/Content/MultipleContent.js +1 -1
- package/es/SelectInput/index.js +1 -13
- package/es/SelectTrigger.d.ts +1 -0
- package/es/SelectTrigger.js +3 -1
- package/es/hooks/useOpen.js +1 -1
- package/es/hooks/useSelectTriggerControl.d.ts +1 -0
- package/es/hooks/useSelectTriggerControl.js +4 -1
- package/lib/BaseSelect/index.js +18 -6
- package/lib/SelectInput/Content/MultipleContent.js +2 -2
- package/lib/SelectInput/index.js +1 -13
- package/lib/SelectTrigger.d.ts +1 -0
- package/lib/SelectTrigger.js +3 -1
- package/lib/hooks/useOpen.js +1 -1
- package/lib/hooks/useSelectTriggerControl.d.ts +1 -0
- package/lib/hooks/useSelectTriggerControl.js +5 -1
- package/package.json +3 -3
package/es/BaseSelect/index.js
CHANGED
|
@@ -5,11 +5,11 @@ import * as React from 'react';
|
|
|
5
5
|
import { useAllowClear } from "../hooks/useAllowClear";
|
|
6
6
|
import { BaseSelectContext } from "../hooks/useBaseProps";
|
|
7
7
|
import useLock from "../hooks/useLock";
|
|
8
|
-
import useSelectTriggerControl from "../hooks/useSelectTriggerControl";
|
|
8
|
+
import useSelectTriggerControl, { isInside } from "../hooks/useSelectTriggerControl";
|
|
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";
|
|
@@ -288,6 +288,12 @@ const BaseSelect = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
288
288
|
keyLockRef.current = false;
|
|
289
289
|
};
|
|
290
290
|
|
|
291
|
+
// ========================== Focus / Blur ==========================
|
|
292
|
+
const getSelectElements = () => [getDOM(containerRef.current), triggerRef.current?.getPopupElement()];
|
|
293
|
+
|
|
294
|
+
// Close when click on non-select element
|
|
295
|
+
useSelectTriggerControl(getSelectElements, mergedOpen, triggerOpen, !!mergedComponents.root);
|
|
296
|
+
|
|
291
297
|
// ========================== Focus / Blur ==========================
|
|
292
298
|
/** Record real focus status */
|
|
293
299
|
// const focusRef = React.useRef<boolean>(false);
|
|
@@ -302,6 +308,13 @@ const BaseSelect = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
302
308
|
onFocus?.(event);
|
|
303
309
|
}
|
|
304
310
|
};
|
|
311
|
+
const onRootBlur = () => {
|
|
312
|
+
macroTask(() => {
|
|
313
|
+
if (!isInside(getSelectElements(), document.activeElement)) {
|
|
314
|
+
triggerOpen(false);
|
|
315
|
+
}
|
|
316
|
+
});
|
|
317
|
+
};
|
|
305
318
|
const onInternalBlur = event => {
|
|
306
319
|
setFocused(false);
|
|
307
320
|
if (mergedSearchValue) {
|
|
@@ -317,6 +330,7 @@ const BaseSelect = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
317
330
|
});
|
|
318
331
|
}
|
|
319
332
|
}
|
|
333
|
+
onRootBlur();
|
|
320
334
|
if (!disabled) {
|
|
321
335
|
onBlur?.(event);
|
|
322
336
|
}
|
|
@@ -352,9 +366,6 @@ const BaseSelect = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
352
366
|
};
|
|
353
367
|
}
|
|
354
368
|
|
|
355
|
-
// Close when click on non-select element
|
|
356
|
-
useSelectTriggerControl(() => [getDOM(containerRef.current), triggerRef.current?.getPopupElement()], mergedOpen, triggerOpen, !!mergedComponents.root);
|
|
357
|
-
|
|
358
369
|
// ============================ Context =============================
|
|
359
370
|
const baseSelectContext = React.useMemo(() => ({
|
|
360
371
|
...props,
|
|
@@ -488,7 +499,8 @@ const BaseSelect = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
488
499
|
empty: emptyOptions,
|
|
489
500
|
onPopupVisibleChange: onTriggerVisibleChange,
|
|
490
501
|
onPopupMouseEnter: onPopupMouseEnter,
|
|
491
|
-
onPopupMouseDown: onInternalMouseDown
|
|
502
|
+
onPopupMouseDown: onInternalMouseDown,
|
|
503
|
+
onPopupBlur: onRootBlur
|
|
492
504
|
}, renderNode);
|
|
493
505
|
return /*#__PURE__*/React.createElement(BaseSelectContext.Provider, {
|
|
494
506
|
value: baseSelectContext
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { clsx } from 'clsx';
|
|
4
|
-
import Overflow from 'rc-overflow';
|
|
4
|
+
import Overflow from '@rc-component/overflow';
|
|
5
5
|
import Input from "../Input";
|
|
6
6
|
import { useSelectInputContext } from "../context";
|
|
7
7
|
import TransBtn from "../../TransBtn";
|
package/es/SelectInput/index.js
CHANGED
|
@@ -10,7 +10,6 @@ import { isValidateOpenKey } from "../utils/keyUtil";
|
|
|
10
10
|
import { clsx } from 'clsx';
|
|
11
11
|
import { getDOM } from "@rc-component/util/es/Dom/findDOMNode";
|
|
12
12
|
import { composeRef } from "@rc-component/util/es/ref";
|
|
13
|
-
import { macroTask } from "../hooks/useOpen";
|
|
14
13
|
const DEFAULT_OMIT_PROPS = ['value', 'onChange', 'removeIcon', 'placeholder', 'maxTagCount', 'maxTagTextLength', 'maxTagPlaceholder', 'choiceTransitionName', 'onInputKeyDown', 'onPopupScroll', 'tabIndex', 'activeValue', 'onSelectorRemove', 'focused'];
|
|
15
14
|
export default /*#__PURE__*/React.forwardRef(function SelectInput(props, ref) {
|
|
16
15
|
const {
|
|
@@ -38,7 +37,6 @@ export default /*#__PURE__*/React.forwardRef(function SelectInput(props, ref) {
|
|
|
38
37
|
autoFocus,
|
|
39
38
|
// Events
|
|
40
39
|
onMouseDown,
|
|
41
|
-
onBlur,
|
|
42
40
|
onClearMouseDown,
|
|
43
41
|
onInputKeyDown,
|
|
44
42
|
onSelectorRemove,
|
|
@@ -134,15 +132,6 @@ export default /*#__PURE__*/React.forwardRef(function SelectInput(props, ref) {
|
|
|
134
132
|
}
|
|
135
133
|
onMouseDown?.(event);
|
|
136
134
|
});
|
|
137
|
-
const onInternalBlur = event => {
|
|
138
|
-
macroTask(() => {
|
|
139
|
-
const inputNode = getDOM(inputRef.current);
|
|
140
|
-
if (!inputNode || inputNode !== document.activeElement && !inputNode.contains(document.activeElement)) {
|
|
141
|
-
toggleOpen(false);
|
|
142
|
-
}
|
|
143
|
-
});
|
|
144
|
-
onBlur?.(event);
|
|
145
|
-
};
|
|
146
135
|
|
|
147
136
|
// =================== Components ===================
|
|
148
137
|
const {
|
|
@@ -177,8 +166,7 @@ export default /*#__PURE__*/React.forwardRef(function SelectInput(props, ref) {
|
|
|
177
166
|
style: style
|
|
178
167
|
// Mouse Events
|
|
179
168
|
,
|
|
180
|
-
onMouseDown: onInternalMouseDown
|
|
181
|
-
onBlur: onInternalBlur
|
|
169
|
+
onMouseDown: onInternalMouseDown
|
|
182
170
|
}), /*#__PURE__*/React.createElement(Affix, {
|
|
183
171
|
className: clsx(`${prefixCls}-prefix`, classNames?.prefix),
|
|
184
172
|
style: styles?.prefix
|
package/es/SelectTrigger.d.ts
CHANGED
|
@@ -25,6 +25,7 @@ export interface SelectTriggerProps {
|
|
|
25
25
|
onPopupVisibleChange?: (visible: boolean) => void;
|
|
26
26
|
onPopupMouseEnter: () => void;
|
|
27
27
|
onPopupMouseDown: React.MouseEventHandler<HTMLDivElement>;
|
|
28
|
+
onPopupBlur?: React.FocusEventHandler<HTMLDivElement>;
|
|
28
29
|
}
|
|
29
30
|
declare const RefSelectTrigger: React.ForwardRefExoticComponent<SelectTriggerProps & React.RefAttributes<RefTriggerProps>>;
|
|
30
31
|
export default RefSelectTrigger;
|
package/es/SelectTrigger.js
CHANGED
|
@@ -66,6 +66,7 @@ const SelectTrigger = (props, ref) => {
|
|
|
66
66
|
onPopupVisibleChange,
|
|
67
67
|
onPopupMouseEnter,
|
|
68
68
|
onPopupMouseDown,
|
|
69
|
+
onPopupBlur,
|
|
69
70
|
...restProps
|
|
70
71
|
} = props;
|
|
71
72
|
|
|
@@ -117,7 +118,8 @@ const SelectTrigger = (props, ref) => {
|
|
|
117
118
|
},
|
|
118
119
|
popup: /*#__PURE__*/React.createElement("div", {
|
|
119
120
|
onMouseEnter: onPopupMouseEnter,
|
|
120
|
-
onMouseDown: onPopupMouseDown
|
|
121
|
+
onMouseDown: onPopupMouseDown,
|
|
122
|
+
onBlur: onPopupBlur
|
|
121
123
|
}, popupNode),
|
|
122
124
|
ref: triggerPopupRef,
|
|
123
125
|
stretch: stretch,
|
package/es/hooks/useOpen.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
+
export declare function isInside(elements: (HTMLElement | SVGElement | undefined)[], target: HTMLElement): boolean;
|
|
1
2
|
export default function useSelectTriggerControl(elements: () => (HTMLElement | SVGElement | undefined)[], open: boolean, triggerOpen: (open: boolean) => void, customizedTrigger: boolean): void;
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { useEvent } from '@rc-component/util';
|
|
3
|
+
export function isInside(elements, target) {
|
|
4
|
+
return elements.filter(element => element).some(element => element.contains(target) || element === target);
|
|
5
|
+
}
|
|
3
6
|
export default function useSelectTriggerControl(elements, open, triggerOpen, customizedTrigger) {
|
|
4
7
|
const onGlobalMouseDown = useEvent(event => {
|
|
5
8
|
// If trigger is customized, Trigger will take control of popupVisible
|
|
@@ -12,7 +15,7 @@ export default function useSelectTriggerControl(elements, open, triggerOpen, cus
|
|
|
12
15
|
}
|
|
13
16
|
if (open &&
|
|
14
17
|
// Marked by SelectInput mouseDown event
|
|
15
|
-
!event._ignore_global_close && elements()
|
|
18
|
+
!event._ignore_global_close && !isInside(elements(), target)) {
|
|
16
19
|
// Should trigger close
|
|
17
20
|
triggerOpen(false);
|
|
18
21
|
}
|
package/lib/BaseSelect/index.js
CHANGED
|
@@ -10,11 +10,11 @@ var React = _interopRequireWildcard(require("react"));
|
|
|
10
10
|
var _useAllowClear = require("../hooks/useAllowClear");
|
|
11
11
|
var _useBaseProps = require("../hooks/useBaseProps");
|
|
12
12
|
var _useLock = _interopRequireDefault(require("../hooks/useLock"));
|
|
13
|
-
var _useSelectTriggerControl =
|
|
13
|
+
var _useSelectTriggerControl = _interopRequireWildcard(require("../hooks/useSelectTriggerControl"));
|
|
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"));
|
|
@@ -297,6 +297,12 @@ const BaseSelect = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
297
297
|
keyLockRef.current = false;
|
|
298
298
|
};
|
|
299
299
|
|
|
300
|
+
// ========================== Focus / Blur ==========================
|
|
301
|
+
const getSelectElements = () => [(0, _findDOMNode.getDOM)(containerRef.current), triggerRef.current?.getPopupElement()];
|
|
302
|
+
|
|
303
|
+
// Close when click on non-select element
|
|
304
|
+
(0, _useSelectTriggerControl.default)(getSelectElements, mergedOpen, triggerOpen, !!mergedComponents.root);
|
|
305
|
+
|
|
300
306
|
// ========================== Focus / Blur ==========================
|
|
301
307
|
/** Record real focus status */
|
|
302
308
|
// const focusRef = React.useRef<boolean>(false);
|
|
@@ -311,6 +317,13 @@ const BaseSelect = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
311
317
|
onFocus?.(event);
|
|
312
318
|
}
|
|
313
319
|
};
|
|
320
|
+
const onRootBlur = () => {
|
|
321
|
+
(0, _useOpen.macroTask)(() => {
|
|
322
|
+
if (!(0, _useSelectTriggerControl.isInside)(getSelectElements(), document.activeElement)) {
|
|
323
|
+
triggerOpen(false);
|
|
324
|
+
}
|
|
325
|
+
});
|
|
326
|
+
};
|
|
314
327
|
const onInternalBlur = event => {
|
|
315
328
|
setFocused(false);
|
|
316
329
|
if (mergedSearchValue) {
|
|
@@ -326,6 +339,7 @@ const BaseSelect = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
326
339
|
});
|
|
327
340
|
}
|
|
328
341
|
}
|
|
342
|
+
onRootBlur();
|
|
329
343
|
if (!disabled) {
|
|
330
344
|
onBlur?.(event);
|
|
331
345
|
}
|
|
@@ -361,9 +375,6 @@ const BaseSelect = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
361
375
|
};
|
|
362
376
|
}
|
|
363
377
|
|
|
364
|
-
// Close when click on non-select element
|
|
365
|
-
(0, _useSelectTriggerControl.default)(() => [(0, _findDOMNode.getDOM)(containerRef.current), triggerRef.current?.getPopupElement()], mergedOpen, triggerOpen, !!mergedComponents.root);
|
|
366
|
-
|
|
367
378
|
// ============================ Context =============================
|
|
368
379
|
const baseSelectContext = React.useMemo(() => ({
|
|
369
380
|
...props,
|
|
@@ -497,7 +508,8 @@ const BaseSelect = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
497
508
|
empty: emptyOptions,
|
|
498
509
|
onPopupVisibleChange: onTriggerVisibleChange,
|
|
499
510
|
onPopupMouseEnter: onPopupMouseEnter,
|
|
500
|
-
onPopupMouseDown: onInternalMouseDown
|
|
511
|
+
onPopupMouseDown: onInternalMouseDown,
|
|
512
|
+
onPopupBlur: onRootBlur
|
|
501
513
|
}, renderNode);
|
|
502
514
|
return /*#__PURE__*/React.createElement(_useBaseProps.BaseSelectContext.Provider, {
|
|
503
515
|
value: baseSelectContext
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var React = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _clsx = require("clsx");
|
|
9
|
-
var
|
|
9
|
+
var _overflow = _interopRequireDefault(require("@rc-component/overflow"));
|
|
10
10
|
var _Input = _interopRequireDefault(require("../Input"));
|
|
11
11
|
var _context = require("../context");
|
|
12
12
|
var _TransBtn = _interopRequireDefault(require("../../TransBtn"));
|
|
@@ -143,7 +143,7 @@ var _default = exports.default = /*#__PURE__*/React.forwardRef(function Multiple
|
|
|
143
143
|
};
|
|
144
144
|
|
|
145
145
|
// ======================= Render =======================
|
|
146
|
-
return /*#__PURE__*/React.createElement(
|
|
146
|
+
return /*#__PURE__*/React.createElement(_overflow.default, {
|
|
147
147
|
prefixCls: `${prefixCls}-content`,
|
|
148
148
|
className: classNames?.content,
|
|
149
149
|
style: styles?.content,
|
package/lib/SelectInput/index.js
CHANGED
|
@@ -15,7 +15,6 @@ var _keyUtil = require("../utils/keyUtil");
|
|
|
15
15
|
var _clsx = require("clsx");
|
|
16
16
|
var _findDOMNode = require("@rc-component/util/lib/Dom/findDOMNode");
|
|
17
17
|
var _ref = require("@rc-component/util/lib/ref");
|
|
18
|
-
var _useOpen = require("../hooks/useOpen");
|
|
19
18
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
20
19
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
21
20
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
@@ -47,7 +46,6 @@ var _default = exports.default = /*#__PURE__*/React.forwardRef(function SelectIn
|
|
|
47
46
|
autoFocus,
|
|
48
47
|
// Events
|
|
49
48
|
onMouseDown,
|
|
50
|
-
onBlur,
|
|
51
49
|
onClearMouseDown,
|
|
52
50
|
onInputKeyDown,
|
|
53
51
|
onSelectorRemove,
|
|
@@ -143,15 +141,6 @@ var _default = exports.default = /*#__PURE__*/React.forwardRef(function SelectIn
|
|
|
143
141
|
}
|
|
144
142
|
onMouseDown?.(event);
|
|
145
143
|
});
|
|
146
|
-
const onInternalBlur = event => {
|
|
147
|
-
(0, _useOpen.macroTask)(() => {
|
|
148
|
-
const inputNode = (0, _findDOMNode.getDOM)(inputRef.current);
|
|
149
|
-
if (!inputNode || inputNode !== document.activeElement && !inputNode.contains(document.activeElement)) {
|
|
150
|
-
toggleOpen(false);
|
|
151
|
-
}
|
|
152
|
-
});
|
|
153
|
-
onBlur?.(event);
|
|
154
|
-
};
|
|
155
144
|
|
|
156
145
|
// =================== Components ===================
|
|
157
146
|
const {
|
|
@@ -186,8 +175,7 @@ var _default = exports.default = /*#__PURE__*/React.forwardRef(function SelectIn
|
|
|
186
175
|
style: style
|
|
187
176
|
// Mouse Events
|
|
188
177
|
,
|
|
189
|
-
onMouseDown: onInternalMouseDown
|
|
190
|
-
onBlur: onInternalBlur
|
|
178
|
+
onMouseDown: onInternalMouseDown
|
|
191
179
|
}), /*#__PURE__*/React.createElement(_Affix.default, {
|
|
192
180
|
className: (0, _clsx.clsx)(`${prefixCls}-prefix`, classNames?.prefix),
|
|
193
181
|
style: styles?.prefix
|
package/lib/SelectTrigger.d.ts
CHANGED
|
@@ -25,6 +25,7 @@ export interface SelectTriggerProps {
|
|
|
25
25
|
onPopupVisibleChange?: (visible: boolean) => void;
|
|
26
26
|
onPopupMouseEnter: () => void;
|
|
27
27
|
onPopupMouseDown: React.MouseEventHandler<HTMLDivElement>;
|
|
28
|
+
onPopupBlur?: React.FocusEventHandler<HTMLDivElement>;
|
|
28
29
|
}
|
|
29
30
|
declare const RefSelectTrigger: React.ForwardRefExoticComponent<SelectTriggerProps & React.RefAttributes<RefTriggerProps>>;
|
|
30
31
|
export default RefSelectTrigger;
|
package/lib/SelectTrigger.js
CHANGED
|
@@ -75,6 +75,7 @@ const SelectTrigger = (props, ref) => {
|
|
|
75
75
|
onPopupVisibleChange,
|
|
76
76
|
onPopupMouseEnter,
|
|
77
77
|
onPopupMouseDown,
|
|
78
|
+
onPopupBlur,
|
|
78
79
|
...restProps
|
|
79
80
|
} = props;
|
|
80
81
|
|
|
@@ -126,7 +127,8 @@ const SelectTrigger = (props, ref) => {
|
|
|
126
127
|
},
|
|
127
128
|
popup: /*#__PURE__*/React.createElement("div", {
|
|
128
129
|
onMouseEnter: onPopupMouseEnter,
|
|
129
|
-
onMouseDown: onPopupMouseDown
|
|
130
|
+
onMouseDown: onPopupMouseDown,
|
|
131
|
+
onBlur: onPopupBlur
|
|
130
132
|
}, popupNode),
|
|
131
133
|
ref: triggerPopupRef,
|
|
132
134
|
stretch: stretch,
|
package/lib/hooks/useOpen.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
+
export declare function isInside(elements: (HTMLElement | SVGElement | undefined)[], target: HTMLElement): boolean;
|
|
1
2
|
export default function useSelectTriggerControl(elements: () => (HTMLElement | SVGElement | undefined)[], open: boolean, triggerOpen: (open: boolean) => void, customizedTrigger: boolean): void;
|
|
@@ -4,10 +4,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = useSelectTriggerControl;
|
|
7
|
+
exports.isInside = isInside;
|
|
7
8
|
var React = _interopRequireWildcard(require("react"));
|
|
8
9
|
var _util = require("@rc-component/util");
|
|
9
10
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
10
11
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
12
|
+
function isInside(elements, target) {
|
|
13
|
+
return elements.filter(element => element).some(element => element.contains(target) || element === target);
|
|
14
|
+
}
|
|
11
15
|
function useSelectTriggerControl(elements, open, triggerOpen, customizedTrigger) {
|
|
12
16
|
const onGlobalMouseDown = (0, _util.useEvent)(event => {
|
|
13
17
|
// If trigger is customized, Trigger will take control of popupVisible
|
|
@@ -20,7 +24,7 @@ function useSelectTriggerControl(elements, open, triggerOpen, customizedTrigger)
|
|
|
20
24
|
}
|
|
21
25
|
if (open &&
|
|
22
26
|
// Marked by SelectInput mouseDown event
|
|
23
|
-
!event._ignore_global_close && elements()
|
|
27
|
+
!event._ignore_global_close && !isInside(elements(), target)) {
|
|
24
28
|
// Should trigger close
|
|
25
29
|
triggerOpen(false);
|
|
26
30
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rc-component/select",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.2",
|
|
4
4
|
"description": "React Select",
|
|
5
5
|
"engines": {
|
|
6
6
|
"node": ">=8.x"
|
|
@@ -49,11 +49,11 @@
|
|
|
49
49
|
"react-dom": "*"
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
|
+
"@rc-component/overflow": "^1.0.0",
|
|
52
53
|
"@rc-component/trigger": "^3.0.0",
|
|
53
54
|
"@rc-component/util": "^1.3.0",
|
|
54
55
|
"@rc-component/virtual-list": "^1.0.1",
|
|
55
|
-
"clsx": "^2.1.1"
|
|
56
|
-
"rc-overflow": "^1.5.0"
|
|
56
|
+
"clsx": "^2.1.1"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
59
|
"@rc-component/father-plugin": "^2.0.2",
|