1 | "use strict";
|
2 |
|
3 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4 | var _typeof = require("@babel/runtime/helpers/typeof");
|
5 | Object.defineProperty(exports, "__esModule", {
|
6 | value: true
|
7 | });
|
8 | exports.isMultiple = exports.default = void 0;
|
9 | var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
10 | var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
11 | var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
12 | var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
13 | var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
14 | var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
15 | var _classnames = _interopRequireDefault(require("classnames"));
|
16 | var _useLayoutEffect = _interopRequireDefault(require("rc-util/lib/hooks/useLayoutEffect"));
|
17 | var _useMergedState3 = _interopRequireDefault(require("rc-util/lib/hooks/useMergedState"));
|
18 | var _isMobile = _interopRequireDefault(require("rc-util/lib/isMobile"));
|
19 | var _ref2 = require("rc-util/lib/ref");
|
20 | var React = _interopRequireWildcard(require("react"));
|
21 | var _useAllowClear2 = require("../hooks/useAllowClear");
|
22 | var _useBaseProps = require("../hooks/useBaseProps");
|
23 | var _useDelayReset3 = _interopRequireDefault(require("../hooks/useDelayReset"));
|
24 | var _useLock3 = _interopRequireDefault(require("../hooks/useLock"));
|
25 | var _useSelectTriggerControl = _interopRequireDefault(require("../hooks/useSelectTriggerControl"));
|
26 | var _Selector = _interopRequireDefault(require("../Selector"));
|
27 | var _SelectTrigger = _interopRequireDefault(require("../SelectTrigger"));
|
28 | var _TransBtn = _interopRequireDefault(require("../TransBtn"));
|
29 | var _valueUtil = require("../utils/valueUtil");
|
30 | var _SelectContext = _interopRequireDefault(require("../SelectContext"));
|
31 | var _Polite = _interopRequireDefault(require("./Polite"));
|
32 | var _excluded = ["id", "prefixCls", "className", "showSearch", "tagRender", "direction", "omitDomProps", "displayValues", "onDisplayValuesChange", "emptyOptions", "notFoundContent", "onClear", "mode", "disabled", "loading", "getInputElement", "getRawInputElement", "open", "defaultOpen", "onDropdownVisibleChange", "activeValue", "onActiveValueChange", "activeDescendantId", "searchValue", "autoClearSearchValue", "onSearch", "onSearchSplit", "tokenSeparators", "allowClear", "prefix", "suffixIcon", "clearIcon", "OptionList", "animation", "transitionName", "dropdownStyle", "dropdownClassName", "dropdownMatchSelectWidth", "dropdownRender", "dropdownAlign", "placement", "builtinPlacements", "getPopupContainer", "showAction", "onFocus", "onBlur", "onKeyUp", "onKeyDown", "onMouseDown"];
|
33 | function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
34 | 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; }
|
35 | var DEFAULT_OMIT_PROPS = ['value', 'onChange', 'removeIcon', 'placeholder', 'autoFocus', 'maxTagCount', 'maxTagTextLength', 'maxTagPlaceholder', 'choiceTransitionName', 'onInputKeyDown', 'onPopupScroll', 'tabIndex'];
|
36 | var isMultiple = exports.isMultiple = function isMultiple(mode) {
|
37 | return mode === 'tags' || mode === 'multiple';
|
38 | };
|
39 | var BaseSelect = React.forwardRef(function (props, ref) {
|
40 | var _customizeRawInputEle;
|
41 | var id = props.id,
|
42 | prefixCls = props.prefixCls,
|
43 | className = props.className,
|
44 | showSearch = props.showSearch,
|
45 | tagRender = props.tagRender,
|
46 | direction = props.direction,
|
47 | omitDomProps = props.omitDomProps,
|
48 | displayValues = props.displayValues,
|
49 | onDisplayValuesChange = props.onDisplayValuesChange,
|
50 | emptyOptions = props.emptyOptions,
|
51 | _props$notFoundConten = props.notFoundContent,
|
52 | notFoundContent = _props$notFoundConten === void 0 ? 'Not Found' : _props$notFoundConten,
|
53 | onClear = props.onClear,
|
54 | mode = props.mode,
|
55 | disabled = props.disabled,
|
56 | loading = props.loading,
|
57 | getInputElement = props.getInputElement,
|
58 | getRawInputElement = props.getRawInputElement,
|
59 | open = props.open,
|
60 | defaultOpen = props.defaultOpen,
|
61 | onDropdownVisibleChange = props.onDropdownVisibleChange,
|
62 | activeValue = props.activeValue,
|
63 | onActiveValueChange = props.onActiveValueChange,
|
64 | activeDescendantId = props.activeDescendantId,
|
65 | searchValue = props.searchValue,
|
66 | autoClearSearchValue = props.autoClearSearchValue,
|
67 | onSearch = props.onSearch,
|
68 | onSearchSplit = props.onSearchSplit,
|
69 | tokenSeparators = props.tokenSeparators,
|
70 | allowClear = props.allowClear,
|
71 | prefix = props.prefix,
|
72 | suffixIcon = props.suffixIcon,
|
73 | clearIcon = props.clearIcon,
|
74 | OptionList = props.OptionList,
|
75 | animation = props.animation,
|
76 | transitionName = props.transitionName,
|
77 | dropdownStyle = props.dropdownStyle,
|
78 | dropdownClassName = props.dropdownClassName,
|
79 | dropdownMatchSelectWidth = props.dropdownMatchSelectWidth,
|
80 | dropdownRender = props.dropdownRender,
|
81 | dropdownAlign = props.dropdownAlign,
|
82 | placement = props.placement,
|
83 | builtinPlacements = props.builtinPlacements,
|
84 | getPopupContainer = props.getPopupContainer,
|
85 | _props$showAction = props.showAction,
|
86 | showAction = _props$showAction === void 0 ? [] : _props$showAction,
|
87 | onFocus = props.onFocus,
|
88 | onBlur = props.onBlur,
|
89 | onKeyUp = props.onKeyUp,
|
90 | onKeyDown = props.onKeyDown,
|
91 | onMouseDown = props.onMouseDown,
|
92 | restProps = (0, _objectWithoutProperties2.default)(props, _excluded);
|
93 |
|
94 |
|
95 | var multiple = isMultiple(mode);
|
96 | var mergedShowSearch = (showSearch !== undefined ? showSearch : multiple) || mode === 'combobox';
|
97 | var domProps = (0, _objectSpread2.default)({}, restProps);
|
98 | DEFAULT_OMIT_PROPS.forEach(function (propName) {
|
99 | delete domProps[propName];
|
100 | });
|
101 | omitDomProps === null || omitDomProps === void 0 || omitDomProps.forEach(function (propName) {
|
102 | delete domProps[propName];
|
103 | });
|
104 |
|
105 |
|
106 | var _React$useState = React.useState(false),
|
107 | _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
|
108 | mobile = _React$useState2[0],
|
109 | setMobile = _React$useState2[1];
|
110 | React.useEffect(function () {
|
111 |
|
112 | setMobile((0, _isMobile.default)());
|
113 | }, []);
|
114 |
|
115 |
|
116 | var containerRef = React.useRef(null);
|
117 | var selectorDomRef = React.useRef(null);
|
118 | var triggerRef = React.useRef(null);
|
119 | var selectorRef = React.useRef(null);
|
120 | var listRef = React.useRef(null);
|
121 | var blurRef = React.useRef(false);
|
122 |
|
123 |
|
124 | var _useDelayReset = (0, _useDelayReset3.default)(),
|
125 | _useDelayReset2 = (0, _slicedToArray2.default)(_useDelayReset, 3),
|
126 | mockFocused = _useDelayReset2[0],
|
127 | setMockFocused = _useDelayReset2[1],
|
128 | cancelSetMockFocused = _useDelayReset2[2];
|
129 |
|
130 |
|
131 | React.useImperativeHandle(ref, function () {
|
132 | var _selectorRef$current, _selectorRef$current2;
|
133 | return {
|
134 | focus: (_selectorRef$current = selectorRef.current) === null || _selectorRef$current === void 0 ? void 0 : _selectorRef$current.focus,
|
135 | blur: (_selectorRef$current2 = selectorRef.current) === null || _selectorRef$current2 === void 0 ? void 0 : _selectorRef$current2.blur,
|
136 | scrollTo: function scrollTo(arg) {
|
137 | var _listRef$current;
|
138 | return (_listRef$current = listRef.current) === null || _listRef$current === void 0 ? void 0 : _listRef$current.scrollTo(arg);
|
139 | },
|
140 | nativeElement: containerRef.current || selectorDomRef.current
|
141 | };
|
142 | });
|
143 |
|
144 |
|
145 | var mergedSearchValue = React.useMemo(function () {
|
146 | var _displayValues$;
|
147 | if (mode !== 'combobox') {
|
148 | return searchValue;
|
149 | }
|
150 | var val = (_displayValues$ = displayValues[0]) === null || _displayValues$ === void 0 ? void 0 : _displayValues$.value;
|
151 | return typeof val === 'string' || typeof val === 'number' ? String(val) : '';
|
152 | }, [searchValue, mode, displayValues]);
|
153 |
|
154 |
|
155 |
|
156 | var customizeInputElement = mode === 'combobox' && typeof getInputElement === 'function' && getInputElement() || null;
|
157 |
|
158 |
|
159 | var customizeRawInputElement = typeof getRawInputElement === 'function' && getRawInputElement();
|
160 | var customizeRawInputRef = (0, _ref2.useComposeRef)(selectorDomRef, customizeRawInputElement === null || customizeRawInputElement === void 0 || (_customizeRawInputEle = customizeRawInputElement.props) === null || _customizeRawInputEle === void 0 ? void 0 : _customizeRawInputEle.ref);
|
161 |
|
162 |
|
163 |
|
164 | var _React$useState3 = React.useState(false),
|
165 | _React$useState4 = (0, _slicedToArray2.default)(_React$useState3, 2),
|
166 | rendered = _React$useState4[0],
|
167 | setRendered = _React$useState4[1];
|
168 | (0, _useLayoutEffect.default)(function () {
|
169 | setRendered(true);
|
170 | }, []);
|
171 | var _useMergedState = (0, _useMergedState3.default)(false, {
|
172 | defaultValue: defaultOpen,
|
173 | value: open
|
174 | }),
|
175 | _useMergedState2 = (0, _slicedToArray2.default)(_useMergedState, 2),
|
176 | innerOpen = _useMergedState2[0],
|
177 | setInnerOpen = _useMergedState2[1];
|
178 | var mergedOpen = rendered ? innerOpen : false;
|
179 |
|
180 |
|
181 | var emptyListContent = !notFoundContent && emptyOptions;
|
182 | if (disabled || emptyListContent && mergedOpen && mode === 'combobox') {
|
183 | mergedOpen = false;
|
184 | }
|
185 | var triggerOpen = emptyListContent ? false : mergedOpen;
|
186 | var onToggleOpen = React.useCallback(function (newOpen) {
|
187 | var nextOpen = newOpen !== undefined ? newOpen : !mergedOpen;
|
188 | if (!disabled) {
|
189 | setInnerOpen(nextOpen);
|
190 | if (mergedOpen !== nextOpen) {
|
191 | onDropdownVisibleChange === null || onDropdownVisibleChange === void 0 || onDropdownVisibleChange(nextOpen);
|
192 | }
|
193 | }
|
194 | }, [disabled, mergedOpen, setInnerOpen, onDropdownVisibleChange]);
|
195 |
|
196 |
|
197 | var tokenWithEnter = React.useMemo(function () {
|
198 | return (tokenSeparators || []).some(function (tokenSeparator) {
|
199 | return ['\n', '\r\n'].includes(tokenSeparator);
|
200 | });
|
201 | }, [tokenSeparators]);
|
202 | var _ref = React.useContext(_SelectContext.default) || {},
|
203 | maxCount = _ref.maxCount,
|
204 | rawValues = _ref.rawValues;
|
205 | var onInternalSearch = function onInternalSearch(searchText, fromTyping, isCompositing) {
|
206 | if (multiple && (0, _valueUtil.isValidCount)(maxCount) && (rawValues === null || rawValues === void 0 ? void 0 : rawValues.size) >= maxCount) {
|
207 | return;
|
208 | }
|
209 | var ret = true;
|
210 | var newSearchText = searchText;
|
211 | onActiveValueChange === null || onActiveValueChange === void 0 || onActiveValueChange(null);
|
212 | var separatedList = (0, _valueUtil.getSeparatedContent)(searchText, tokenSeparators, (0, _valueUtil.isValidCount)(maxCount) ? maxCount - rawValues.size : undefined);
|
213 |
|
214 |
|
215 | var patchLabels = isCompositing ? null : separatedList;
|
216 |
|
217 |
|
218 | if (mode !== 'combobox' && patchLabels) {
|
219 | newSearchText = '';
|
220 | onSearchSplit === null || onSearchSplit === void 0 || onSearchSplit(patchLabels);
|
221 |
|
222 |
|
223 | onToggleOpen(false);
|
224 |
|
225 |
|
226 | ret = false;
|
227 | }
|
228 | if (onSearch && mergedSearchValue !== newSearchText) {
|
229 | onSearch(newSearchText, {
|
230 | source: fromTyping ? 'typing' : 'effect'
|
231 | });
|
232 | }
|
233 | return ret;
|
234 | };
|
235 |
|
236 |
|
237 |
|
238 |
|
239 | var onInternalSearchSubmit = function onInternalSearchSubmit(searchText) {
|
240 |
|
241 | if (!searchText || !searchText.trim()) {
|
242 | return;
|
243 | }
|
244 | onSearch(searchText, {
|
245 | source: 'submit'
|
246 | });
|
247 | };
|
248 |
|
249 |
|
250 | React.useEffect(function () {
|
251 | if (!mergedOpen && !multiple && mode !== 'combobox') {
|
252 | onInternalSearch('', false, false);
|
253 | }
|
254 | }, [mergedOpen]);
|
255 |
|
256 |
|
257 |
|
258 | React.useEffect(function () {
|
259 | if (innerOpen && disabled) {
|
260 | setInnerOpen(false);
|
261 | }
|
262 |
|
263 |
|
264 | if (disabled && !blurRef.current) {
|
265 | setMockFocused(false);
|
266 | }
|
267 | }, [disabled]);
|
268 |
|
269 |
|
270 | |
271 |
|
272 |
|
273 |
|
274 |
|
275 |
|
276 | var _useLock = (0, _useLock3.default)(),
|
277 | _useLock2 = (0, _slicedToArray2.default)(_useLock, 2),
|
278 | getClearLock = _useLock2[0],
|
279 | setClearLock = _useLock2[1];
|
280 | var keyLockRef = React.useRef(false);
|
281 |
|
282 |
|
283 | var onInternalKeyDown = function onInternalKeyDown(event) {
|
284 | var clearLock = getClearLock();
|
285 | var key = event.key;
|
286 | var isEnterKey = key === 'Enter';
|
287 | if (isEnterKey) {
|
288 |
|
289 | if (mode !== 'combobox') {
|
290 | event.preventDefault();
|
291 | }
|
292 |
|
293 |
|
294 | if (!mergedOpen) {
|
295 | onToggleOpen(true);
|
296 | }
|
297 | }
|
298 | setClearLock(!!mergedSearchValue);
|
299 |
|
300 |
|
301 | if (key === 'Backspace' && !clearLock && multiple && !mergedSearchValue && displayValues.length) {
|
302 | var cloneDisplayValues = (0, _toConsumableArray2.default)(displayValues);
|
303 | var removedDisplayValue = null;
|
304 | for (var i = cloneDisplayValues.length - 1; i >= 0; i -= 1) {
|
305 | var current = cloneDisplayValues[i];
|
306 | if (!current.disabled) {
|
307 | cloneDisplayValues.splice(i, 1);
|
308 | removedDisplayValue = current;
|
309 | break;
|
310 | }
|
311 | }
|
312 | if (removedDisplayValue) {
|
313 | onDisplayValuesChange(cloneDisplayValues, {
|
314 | type: 'remove',
|
315 | values: [removedDisplayValue]
|
316 | });
|
317 | }
|
318 | }
|
319 | for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
320 | rest[_key - 1] = arguments[_key];
|
321 | }
|
322 | if (mergedOpen && (!isEnterKey || !keyLockRef.current)) {
|
323 | var _listRef$current2;
|
324 | (_listRef$current2 = listRef.current) === null || _listRef$current2 === void 0 || _listRef$current2.onKeyDown.apply(_listRef$current2, [event].concat(rest));
|
325 | }
|
326 | if (isEnterKey) {
|
327 | keyLockRef.current = true;
|
328 | }
|
329 | onKeyDown === null || onKeyDown === void 0 || onKeyDown.apply(void 0, [event].concat(rest));
|
330 | };
|
331 |
|
332 |
|
333 | var onInternalKeyUp = function onInternalKeyUp(event) {
|
334 | for (var _len2 = arguments.length, rest = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
|
335 | rest[_key2 - 1] = arguments[_key2];
|
336 | }
|
337 | if (mergedOpen) {
|
338 | var _listRef$current3;
|
339 | (_listRef$current3 = listRef.current) === null || _listRef$current3 === void 0 || _listRef$current3.onKeyUp.apply(_listRef$current3, [event].concat(rest));
|
340 | }
|
341 | if (event.key === 'Enter') {
|
342 | keyLockRef.current = false;
|
343 | }
|
344 | onKeyUp === null || onKeyUp === void 0 || onKeyUp.apply(void 0, [event].concat(rest));
|
345 | };
|
346 |
|
347 |
|
348 | var onSelectorRemove = function onSelectorRemove(val) {
|
349 | var newValues = displayValues.filter(function (i) {
|
350 | return i !== val;
|
351 | });
|
352 | onDisplayValuesChange(newValues, {
|
353 | type: 'remove',
|
354 | values: [val]
|
355 | });
|
356 | };
|
357 |
|
358 |
|
359 |
|
360 | var focusRef = React.useRef(false);
|
361 | var onContainerFocus = function onContainerFocus() {
|
362 | setMockFocused(true);
|
363 | if (!disabled) {
|
364 | if (onFocus && !focusRef.current) {
|
365 | onFocus.apply(void 0, arguments);
|
366 | }
|
367 |
|
368 |
|
369 | if (showAction.includes('focus')) {
|
370 | onToggleOpen(true);
|
371 | }
|
372 | }
|
373 | focusRef.current = true;
|
374 | };
|
375 | var onContainerBlur = function onContainerBlur() {
|
376 | blurRef.current = true;
|
377 | setMockFocused(false, function () {
|
378 | focusRef.current = false;
|
379 | blurRef.current = false;
|
380 | onToggleOpen(false);
|
381 | });
|
382 | if (disabled) {
|
383 | return;
|
384 | }
|
385 | if (mergedSearchValue) {
|
386 |
|
387 | if (mode === 'tags') {
|
388 | onSearch(mergedSearchValue, {
|
389 | source: 'submit'
|
390 | });
|
391 | } else if (mode === 'multiple') {
|
392 |
|
393 | onSearch('', {
|
394 | source: 'blur'
|
395 | });
|
396 | }
|
397 | }
|
398 | if (onBlur) {
|
399 | onBlur.apply(void 0, arguments);
|
400 | }
|
401 | };
|
402 |
|
403 |
|
404 | var activeTimeoutIds = [];
|
405 | React.useEffect(function () {
|
406 | return function () {
|
407 | activeTimeoutIds.forEach(function (timeoutId) {
|
408 | return clearTimeout(timeoutId);
|
409 | });
|
410 | activeTimeoutIds.splice(0, activeTimeoutIds.length);
|
411 | };
|
412 | }, []);
|
413 | var onInternalMouseDown = function onInternalMouseDown(event) {
|
414 | var _triggerRef$current;
|
415 | var target = event.target;
|
416 | var popupElement = (_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : _triggerRef$current.getPopupElement();
|
417 |
|
418 |
|
419 | if (popupElement && popupElement.contains(target)) {
|
420 | var timeoutId = setTimeout(function () {
|
421 | var index = activeTimeoutIds.indexOf(timeoutId);
|
422 | if (index !== -1) {
|
423 | activeTimeoutIds.splice(index, 1);
|
424 | }
|
425 | cancelSetMockFocused();
|
426 | if (!mobile && !popupElement.contains(document.activeElement)) {
|
427 | var _selectorRef$current3;
|
428 | (_selectorRef$current3 = selectorRef.current) === null || _selectorRef$current3 === void 0 || _selectorRef$current3.focus();
|
429 | }
|
430 | });
|
431 | activeTimeoutIds.push(timeoutId);
|
432 | }
|
433 | for (var _len3 = arguments.length, restArgs = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
|
434 | restArgs[_key3 - 1] = arguments[_key3];
|
435 | }
|
436 | onMouseDown === null || onMouseDown === void 0 || onMouseDown.apply(void 0, [event].concat(restArgs));
|
437 | };
|
438 |
|
439 |
|
440 | var _React$useState5 = React.useState({}),
|
441 | _React$useState6 = (0, _slicedToArray2.default)(_React$useState5, 2),
|
442 | forceUpdate = _React$useState6[1];
|
443 |
|
444 | function onPopupMouseEnter() {
|
445 | forceUpdate({});
|
446 | }
|
447 |
|
448 |
|
449 | var onTriggerVisibleChange;
|
450 | if (customizeRawInputElement) {
|
451 | onTriggerVisibleChange = function onTriggerVisibleChange(newOpen) {
|
452 | onToggleOpen(newOpen);
|
453 | };
|
454 | }
|
455 |
|
456 |
|
457 | (0, _useSelectTriggerControl.default)(function () {
|
458 | var _triggerRef$current2;
|
459 | return [containerRef.current, (_triggerRef$current2 = triggerRef.current) === null || _triggerRef$current2 === void 0 ? void 0 : _triggerRef$current2.getPopupElement()];
|
460 | }, triggerOpen, onToggleOpen, !!customizeRawInputElement);
|
461 |
|
462 |
|
463 | var baseSelectContext = React.useMemo(function () {
|
464 | return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, props), {}, {
|
465 | notFoundContent: notFoundContent,
|
466 | open: mergedOpen,
|
467 | triggerOpen: triggerOpen,
|
468 | id: id,
|
469 | showSearch: mergedShowSearch,
|
470 | multiple: multiple,
|
471 | toggleOpen: onToggleOpen
|
472 | });
|
473 | }, [props, notFoundContent, triggerOpen, mergedOpen, id, mergedShowSearch, multiple, onToggleOpen]);
|
474 |
|
475 |
|
476 |
|
477 |
|
478 |
|
479 |
|
480 | var showSuffixIcon = !!suffixIcon || loading;
|
481 | var arrowNode;
|
482 | if (showSuffixIcon) {
|
483 | arrowNode = React.createElement(_TransBtn.default, {
|
484 | className: (0, _classnames.default)("".concat(prefixCls, "-arrow"), (0, _defineProperty2.default)({}, "".concat(prefixCls, "-arrow-loading"), loading)),
|
485 | customizeIcon: suffixIcon,
|
486 | customizeIconProps: {
|
487 | loading: loading,
|
488 | searchValue: mergedSearchValue,
|
489 | open: mergedOpen,
|
490 | focused: mockFocused,
|
491 | showSearch: mergedShowSearch
|
492 | }
|
493 | });
|
494 | }
|
495 |
|
496 |
|
497 | var onClearMouseDown = function onClearMouseDown() {
|
498 | var _selectorRef$current4;
|
499 | onClear === null || onClear === void 0 || onClear();
|
500 | (_selectorRef$current4 = selectorRef.current) === null || _selectorRef$current4 === void 0 || _selectorRef$current4.focus();
|
501 | onDisplayValuesChange([], {
|
502 | type: 'clear',
|
503 | values: displayValues
|
504 | });
|
505 | onInternalSearch('', false, false);
|
506 | };
|
507 | var _useAllowClear = (0, _useAllowClear2.useAllowClear)(prefixCls, onClearMouseDown, displayValues, allowClear, clearIcon, disabled, mergedSearchValue, mode),
|
508 | mergedAllowClear = _useAllowClear.allowClear,
|
509 | clearNode = _useAllowClear.clearIcon;
|
510 |
|
511 |
|
512 | var optionList = React.createElement(OptionList, {
|
513 | ref: listRef
|
514 | });
|
515 |
|
516 |
|
517 | var mergedClassName = (0, _classnames.default)(prefixCls, className, (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, "".concat(prefixCls, "-focused"), mockFocused), "".concat(prefixCls, "-multiple"), multiple), "".concat(prefixCls, "-single"), !multiple), "".concat(prefixCls, "-allow-clear"), allowClear), "".concat(prefixCls, "-show-arrow"), showSuffixIcon), "".concat(prefixCls, "-disabled"), disabled), "".concat(prefixCls, "-loading"), loading), "".concat(prefixCls, "-open"), mergedOpen), "".concat(prefixCls, "-customize-input"), customizeInputElement), "".concat(prefixCls, "-show-search"), mergedShowSearch));
|
518 |
|
519 |
|
520 | var selectorNode = React.createElement(_SelectTrigger.default, {
|
521 | ref: triggerRef,
|
522 | disabled: disabled,
|
523 | prefixCls: prefixCls,
|
524 | visible: triggerOpen,
|
525 | popupElement: optionList,
|
526 | animation: animation,
|
527 | transitionName: transitionName,
|
528 | dropdownStyle: dropdownStyle,
|
529 | dropdownClassName: dropdownClassName,
|
530 | direction: direction,
|
531 | dropdownMatchSelectWidth: dropdownMatchSelectWidth,
|
532 | dropdownRender: dropdownRender,
|
533 | dropdownAlign: dropdownAlign,
|
534 | placement: placement,
|
535 | builtinPlacements: builtinPlacements,
|
536 | getPopupContainer: getPopupContainer,
|
537 | empty: emptyOptions,
|
538 | getTriggerDOMNode: function getTriggerDOMNode(node) {
|
539 | return (
|
540 |
|
541 |
|
542 |
|
543 | selectorDomRef.current || node
|
544 | );
|
545 | },
|
546 | onPopupVisibleChange: onTriggerVisibleChange,
|
547 | onPopupMouseEnter: onPopupMouseEnter
|
548 | }, customizeRawInputElement ? ( React.cloneElement(customizeRawInputElement, {
|
549 | ref: customizeRawInputRef
|
550 | })) : React.createElement(_Selector.default, (0, _extends2.default)({}, props, {
|
551 | domRef: selectorDomRef,
|
552 | prefixCls: prefixCls,
|
553 | inputElement: customizeInputElement,
|
554 | ref: selectorRef,
|
555 | id: id,
|
556 | prefix: prefix,
|
557 | showSearch: mergedShowSearch,
|
558 | autoClearSearchValue: autoClearSearchValue,
|
559 | mode: mode,
|
560 | activeDescendantId: activeDescendantId,
|
561 | tagRender: tagRender,
|
562 | values: displayValues,
|
563 | open: mergedOpen,
|
564 | onToggleOpen: onToggleOpen,
|
565 | activeValue: activeValue,
|
566 | searchValue: mergedSearchValue,
|
567 | onSearch: onInternalSearch,
|
568 | onSearchSubmit: onInternalSearchSubmit,
|
569 | onRemove: onSelectorRemove,
|
570 | tokenWithEnter: tokenWithEnter
|
571 | })));
|
572 |
|
573 |
|
574 | var renderNode;
|
575 |
|
576 |
|
577 | if (customizeRawInputElement) {
|
578 | renderNode = selectorNode;
|
579 | } else {
|
580 | renderNode = React.createElement("div", (0, _extends2.default)({
|
581 | className: mergedClassName
|
582 | }, domProps, {
|
583 | ref: containerRef,
|
584 | onMouseDown: onInternalMouseDown,
|
585 | onKeyDown: onInternalKeyDown,
|
586 | onKeyUp: onInternalKeyUp,
|
587 | onFocus: onContainerFocus,
|
588 | onBlur: onContainerBlur
|
589 | }), React.createElement(_Polite.default, {
|
590 | visible: mockFocused && !mergedOpen,
|
591 | values: displayValues
|
592 | }), selectorNode, arrowNode, mergedAllowClear && clearNode);
|
593 | }
|
594 | return React.createElement(_useBaseProps.BaseSelectContext.Provider, {
|
595 | value: baseSelectContext
|
596 | }, renderNode);
|
597 | });
|
598 |
|
599 |
|
600 | if (process.env.NODE_ENV !== 'production') {
|
601 | BaseSelect.displayName = 'BaseSelect';
|
602 | }
|
603 | var _default = exports.default = BaseSelect; |
\ | No newline at end of file |