UNPKG

25.1 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5Object.defineProperty(exports, "__esModule", {
6 value: true
7});
8exports.default = void 0;
9exports.treeSelectProps = treeSelectProps;
10
11var _vue = require("vue");
12
13var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
14
15var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
16
17var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
18
19var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
20
21var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
22
23var _OptionList = _interopRequireDefault(require("./OptionList"));
24
25var _strategyUtil = require("./utils/strategyUtil");
26
27var _TreeSelectContext = require("./TreeSelectContext");
28
29var _LegacyContext = require("./LegacyContext");
30
31var _useTreeData = _interopRequireDefault(require("./hooks/useTreeData"));
32
33var _valueUtil = require("./utils/valueUtil");
34
35var _useCache3 = _interopRequireDefault(require("./hooks/useCache"));
36
37var _useDataEntities2 = _interopRequireDefault(require("./hooks/useDataEntities"));
38
39var _legacyUtil = require("./utils/legacyUtil");
40
41var _useCheckedKeys3 = _interopRequireDefault(require("./hooks/useCheckedKeys"));
42
43var _useFilterTreeData = _interopRequireDefault(require("./hooks/useFilterTreeData"));
44
45var _warningPropsUtil = _interopRequireDefault(require("./utils/warningPropsUtil"));
46
47var _BaseSelect = require("../vc-select/BaseSelect");
48
49var _omit = _interopRequireDefault(require("../_util/omit"));
50
51var _vueTypes = _interopRequireDefault(require("../_util/vue-types"));
52
53var _vcSelect = require("../vc-select");
54
55var _propsUtil = require("../_util/props-util");
56
57var _useId = _interopRequireDefault(require("../vc-select/hooks/useId"));
58
59var _useMergedState5 = _interopRequireDefault(require("../_util/hooks/useMergedState"));
60
61var _conductUtil = require("../vc-tree/utils/conductUtil");
62
63var _warning = require("../vc-util/warning");
64
65var _toReactive = require("../_util/toReactive");
66
67var _useMaxLevel2 = _interopRequireDefault(require("../vc-tree/useMaxLevel"));
68
69function treeSelectProps() {
70 return (0, _extends2.default)((0, _extends2.default)({}, (0, _omit.default)((0, _BaseSelect.baseSelectPropsWithoutPrivate)(), ['mode'])), {
71 prefixCls: String,
72 id: String,
73 value: {
74 type: [String, Number, Object, Array]
75 },
76 defaultValue: {
77 type: [String, Number, Object, Array]
78 },
79 onChange: {
80 type: Function
81 },
82 searchValue: String,
83
84 /** @deprecated Use `searchValue` instead */
85 inputValue: String,
86 onSearch: {
87 type: Function
88 },
89 autoClearSearchValue: {
90 type: Boolean,
91 default: undefined
92 },
93 filterTreeNode: {
94 type: [Boolean, Function],
95 default: undefined
96 },
97 treeNodeFilterProp: String,
98 // >>> Select
99 onSelect: Function,
100 onDeselect: Function,
101 showCheckedStrategy: {
102 type: String
103 },
104 treeNodeLabelProp: String,
105 fieldNames: {
106 type: Object
107 },
108 // >>> Mode
109 multiple: {
110 type: Boolean,
111 default: undefined
112 },
113 treeCheckable: {
114 type: Boolean,
115 default: undefined
116 },
117 treeCheckStrictly: {
118 type: Boolean,
119 default: undefined
120 },
121 labelInValue: {
122 type: Boolean,
123 default: undefined
124 },
125 // >>> Data
126 treeData: {
127 type: Array
128 },
129 treeDataSimpleMode: {
130 type: [Boolean, Object],
131 default: undefined
132 },
133 loadData: {
134 type: Function
135 },
136 treeLoadedKeys: {
137 type: Array
138 },
139 onTreeLoad: {
140 type: Function
141 },
142 // >>> Expanded
143 treeDefaultExpandAll: {
144 type: Boolean,
145 default: undefined
146 },
147 treeExpandedKeys: {
148 type: Array
149 },
150 treeDefaultExpandedKeys: {
151 type: Array
152 },
153 onTreeExpand: {
154 type: Function
155 },
156 // >>> Options
157 virtual: {
158 type: Boolean,
159 default: undefined
160 },
161 listHeight: Number,
162 listItemHeight: Number,
163 onDropdownVisibleChange: {
164 type: Function
165 },
166 // >>> Tree
167 treeLine: {
168 type: [Boolean, Object],
169 default: undefined
170 },
171 treeIcon: _vueTypes.default.any,
172 showTreeIcon: {
173 type: Boolean,
174 default: undefined
175 },
176 switcherIcon: _vueTypes.default.any,
177 treeMotion: _vueTypes.default.any,
178 children: Array,
179 showArrow: {
180 type: Boolean,
181 default: undefined
182 },
183 showSearch: {
184 type: Boolean,
185 default: undefined
186 },
187 open: {
188 type: Boolean,
189 default: undefined
190 },
191 defaultOpen: {
192 type: Boolean,
193 default: undefined
194 },
195 disabled: {
196 type: Boolean,
197 default: undefined
198 },
199 placeholder: _vueTypes.default.any,
200 maxTagPlaceholder: {
201 type: Function
202 },
203 dropdownPopupAlign: _vueTypes.default.any,
204 customSlots: Object
205 });
206}
207
208function isRawValue(value) {
209 return !value || (0, _typeof2.default)(value) !== 'object';
210}
211
212var _default = (0, _vue.defineComponent)({
213 name: 'TreeSelect',
214 inheritAttrs: false,
215 props: (0, _propsUtil.initDefaultProps)(treeSelectProps(), {
216 treeNodeFilterProp: 'value',
217 autoClearSearchValue: true,
218 showCheckedStrategy: _strategyUtil.SHOW_CHILD,
219 listHeight: 200,
220 listItemHeight: 20,
221 prefixCls: 'vc-tree-select'
222 }),
223 setup: function setup(props, _ref) {
224 var attrs = _ref.attrs,
225 expose = _ref.expose,
226 slots = _ref.slots;
227 var mergedId = (0, _useId.default)((0, _vue.toRef)(props, 'id'));
228 var treeConduction = (0, _vue.computed)(function () {
229 return props.treeCheckable && !props.treeCheckStrictly;
230 });
231 var mergedCheckable = (0, _vue.computed)(function () {
232 return props.treeCheckable || props.treeCheckStrictly;
233 });
234 var mergedLabelInValue = (0, _vue.computed)(function () {
235 return props.treeCheckStrictly || props.labelInValue;
236 });
237 var mergedMultiple = (0, _vue.computed)(function () {
238 return mergedCheckable.value || props.multiple;
239 }); // ========================== Warning ===========================
240
241 if (process.env.NODE_ENV !== 'production') {
242 (0, _vue.watchEffect)(function () {
243 (0, _warningPropsUtil.default)(props);
244 });
245 } // ========================= FieldNames =========================
246
247
248 var mergedFieldNames = (0, _vue.computed)(function () {
249 return (0, _valueUtil.fillFieldNames)(props.fieldNames);
250 }); // =========================== Search ===========================
251
252 var _useMergedState = (0, _useMergedState5.default)('', {
253 value: (0, _vue.computed)(function () {
254 return props.searchValue !== undefined ? props.searchValue : props.inputValue;
255 }),
256 postState: function postState(search) {
257 return search || '';
258 }
259 }),
260 _useMergedState2 = (0, _slicedToArray2.default)(_useMergedState, 2),
261 mergedSearchValue = _useMergedState2[0],
262 setSearchValue = _useMergedState2[1];
263
264 var onInternalSearch = function onInternalSearch(searchText) {
265 var _a;
266
267 setSearchValue(searchText);
268 (_a = props.onSearch) === null || _a === void 0 ? void 0 : _a.call(props, searchText);
269 }; // ============================ Data ============================
270 // `useTreeData` only do convert of `children` or `simpleMode`.
271 // Else will return origin `treeData` for perf consideration.
272 // Do not do anything to loop the data.
273
274
275 var mergedTreeData = (0, _useTreeData.default)((0, _vue.toRef)(props, 'treeData'), (0, _vue.toRef)(props, 'children'), (0, _vue.toRef)(props, 'treeDataSimpleMode'));
276
277 var _useDataEntities = (0, _useDataEntities2.default)(mergedTreeData, mergedFieldNames),
278 keyEntities = _useDataEntities.keyEntities,
279 valueEntities = _useDataEntities.valueEntities;
280 /** Get `missingRawValues` which not exist in the tree yet */
281
282
283 var splitRawValues = function splitRawValues(newRawValues) {
284 var missingRawValues = [];
285 var existRawValues = []; // Keep missing value in the cache
286
287 newRawValues.forEach(function (val) {
288 if (valueEntities.value.has(val)) {
289 existRawValues.push(val);
290 } else {
291 missingRawValues.push(val);
292 }
293 });
294 return {
295 missingRawValues: missingRawValues,
296 existRawValues: existRawValues
297 };
298 }; // Filtered Tree
299
300
301 var filteredTreeData = (0, _useFilterTreeData.default)(mergedTreeData, mergedSearchValue, {
302 fieldNames: mergedFieldNames,
303 treeNodeFilterProp: (0, _vue.toRef)(props, 'treeNodeFilterProp'),
304 filterTreeNode: (0, _vue.toRef)(props, 'filterTreeNode')
305 }); // =========================== Label ============================
306
307 var getLabel = function getLabel(item) {
308 if (item) {
309 if (props.treeNodeLabelProp) {
310 return item[props.treeNodeLabelProp];
311 } // Loop from fieldNames
312
313
314 var titleList = mergedFieldNames.value._title;
315
316 for (var i = 0; i < titleList.length; i += 1) {
317 var title = item[titleList[i]];
318
319 if (title !== undefined) {
320 return title;
321 }
322 }
323 }
324 }; // ========================= Wrap Value =========================
325
326
327 var toLabeledValues = function toLabeledValues(draftValues) {
328 var values = (0, _valueUtil.toArray)(draftValues);
329 return values.map(function (val) {
330 if (isRawValue(val)) {
331 return {
332 value: val
333 };
334 }
335
336 return val;
337 });
338 };
339
340 var convert2LabelValues = function convert2LabelValues(draftValues) {
341 var values = toLabeledValues(draftValues);
342 return values.map(function (item) {
343 var rawLabel = item.label;
344 var rawValue = item.value,
345 rawHalfChecked = item.halfChecked;
346 var rawDisabled;
347 var entity = valueEntities.value.get(rawValue); // Fill missing label & status
348
349 if (entity) {
350 rawLabel = rawLabel !== null && rawLabel !== void 0 ? rawLabel : getLabel(entity.node);
351 rawDisabled = entity.node.disabled;
352 }
353
354 return {
355 label: rawLabel,
356 value: rawValue,
357 halfChecked: rawHalfChecked,
358 disabled: rawDisabled
359 };
360 });
361 }; // =========================== Values ===========================
362
363
364 var _useMergedState3 = (0, _useMergedState5.default)(props.defaultValue, {
365 value: (0, _vue.toRef)(props, 'value')
366 }),
367 _useMergedState4 = (0, _slicedToArray2.default)(_useMergedState3, 2),
368 internalValue = _useMergedState4[0],
369 setInternalValue = _useMergedState4[1];
370
371 var rawMixedLabeledValues = (0, _vue.computed)(function () {
372 return toLabeledValues(internalValue.value);
373 }); // Split value into full check and half check
374
375 var rawLabeledValues = (0, _vue.shallowRef)([]);
376 var rawHalfLabeledValues = (0, _vue.shallowRef)([]);
377 (0, _vue.watchEffect)(function () {
378 var fullCheckValues = [];
379 var halfCheckValues = [];
380 rawMixedLabeledValues.value.forEach(function (item) {
381 if (item.halfChecked) {
382 halfCheckValues.push(item);
383 } else {
384 fullCheckValues.push(item);
385 }
386 });
387 rawLabeledValues.value = fullCheckValues;
388 rawHalfLabeledValues.value = halfCheckValues;
389 }); // const [mergedValues] = useCache(rawLabeledValues);
390
391 var rawValues = (0, _vue.computed)(function () {
392 return rawLabeledValues.value.map(function (item) {
393 return item.value;
394 });
395 });
396
397 var _useMaxLevel = (0, _useMaxLevel2.default)(keyEntities),
398 maxLevel = _useMaxLevel.maxLevel,
399 levelEntities = _useMaxLevel.levelEntities; // Convert value to key. Will fill missed keys for conduct check.
400
401
402 var _useCheckedKeys = (0, _useCheckedKeys3.default)(rawLabeledValues, rawHalfLabeledValues, treeConduction, keyEntities, maxLevel, levelEntities),
403 _useCheckedKeys2 = (0, _slicedToArray2.default)(_useCheckedKeys, 2),
404 rawCheckedValues = _useCheckedKeys2[0],
405 rawHalfCheckedValues = _useCheckedKeys2[1]; // Convert rawCheckedKeys to check strategy related values
406
407
408 var displayValues = (0, _vue.computed)(function () {
409 // Collect keys which need to show
410 var displayKeys = (0, _strategyUtil.formatStrategyValues)(rawCheckedValues.value, props.showCheckedStrategy, keyEntities.value, mergedFieldNames.value); // Convert to value and filled with label
411
412 var values = displayKeys.map(function (key) {
413 var _a, _b, _c;
414
415 return (_c = (_b = (_a = keyEntities.value[key]) === null || _a === void 0 ? void 0 : _a.node) === null || _b === void 0 ? void 0 : _b[mergedFieldNames.value.value]) !== null && _c !== void 0 ? _c : key;
416 }); // Back fill with origin label
417
418 var labeledValues = values.map(function (val) {
419 var targetItem = rawLabeledValues.value.find(function (item) {
420 return item.value === val;
421 });
422 return {
423 value: val,
424 label: targetItem === null || targetItem === void 0 ? void 0 : targetItem.label
425 };
426 });
427 var rawDisplayValues = convert2LabelValues(labeledValues);
428 var firstVal = rawDisplayValues[0];
429
430 if (!mergedMultiple.value && firstVal && (0, _valueUtil.isNil)(firstVal.value) && (0, _valueUtil.isNil)(firstVal.label)) {
431 return [];
432 }
433
434 return rawDisplayValues.map(function (item) {
435 var _a;
436
437 return (0, _extends2.default)((0, _extends2.default)({}, item), {
438 label: (_a = item.label) !== null && _a !== void 0 ? _a : item.value
439 });
440 });
441 });
442
443 var _useCache = (0, _useCache3.default)(displayValues),
444 _useCache2 = (0, _slicedToArray2.default)(_useCache, 1),
445 cachedDisplayValues = _useCache2[0]; // =========================== Change ===========================
446
447
448 var triggerChange = function triggerChange(newRawValues, extra, source) {
449 var labeledValues = convert2LabelValues(newRawValues);
450 setInternalValue(labeledValues); // Clean up if needed
451
452 if (props.autoClearSearchValue) {
453 setSearchValue('');
454 } // Generate rest parameters is costly, so only do it when necessary
455
456
457 if (props.onChange) {
458 var eventValues = newRawValues;
459
460 if (treeConduction.value) {
461 var formattedKeyList = (0, _strategyUtil.formatStrategyValues)(newRawValues, props.showCheckedStrategy, keyEntities.value, mergedFieldNames.value);
462 eventValues = formattedKeyList.map(function (key) {
463 var entity = valueEntities.value.get(key);
464 return entity ? entity.node[mergedFieldNames.value.value] : key;
465 });
466 }
467
468 var _ref2 = extra || {
469 triggerValue: undefined,
470 selected: undefined
471 },
472 triggerValue = _ref2.triggerValue,
473 selected = _ref2.selected;
474
475 var returnRawValues = eventValues; // We need fill half check back
476
477 if (props.treeCheckStrictly) {
478 var halfValues = rawHalfLabeledValues.value.filter(function (item) {
479 return !eventValues.includes(item.value);
480 });
481 returnRawValues = [].concat((0, _toConsumableArray2.default)(returnRawValues), (0, _toConsumableArray2.default)(halfValues));
482 }
483
484 var returnLabeledValues = convert2LabelValues(returnRawValues);
485 var additionalInfo = {
486 // [Legacy] Always return as array contains label & value
487 preValue: rawLabeledValues.value,
488 triggerValue: triggerValue
489 }; // [Legacy] Fill legacy data if user query.
490 // This is expansive that we only fill when user query
491 // https://github.com/react-component/tree-select/blob/fe33eb7c27830c9ac70cd1fdb1ebbe7bc679c16a/src/Select.jsx
492
493 var showPosition = true;
494
495 if (props.treeCheckStrictly || source === 'selection' && !selected) {
496 showPosition = false;
497 }
498
499 (0, _legacyUtil.fillAdditionalInfo)(additionalInfo, triggerValue, newRawValues, mergedTreeData.value, showPosition, mergedFieldNames.value);
500
501 if (mergedCheckable.value) {
502 additionalInfo.checked = selected;
503 } else {
504 additionalInfo.selected = selected;
505 }
506
507 var returnValues = mergedLabelInValue.value ? returnLabeledValues : returnLabeledValues.map(function (item) {
508 return item.value;
509 });
510 props.onChange(mergedMultiple.value ? returnValues : returnValues[0], mergedLabelInValue.value ? null : returnLabeledValues.map(function (item) {
511 return item.label;
512 }), additionalInfo);
513 }
514 }; // ========================== Options ===========================
515
516 /** Trigger by option list */
517
518
519 var onOptionSelect = function onOptionSelect(selectedKey, _ref3) {
520 var selected = _ref3.selected,
521 source = _ref3.source;
522
523 var _a, _b, _c;
524
525 var keyEntitiesValue = (0, _vue.toRaw)(keyEntities.value);
526 var valueEntitiesValue = (0, _vue.toRaw)(valueEntities.value);
527 var entity = keyEntitiesValue[selectedKey];
528 var node = entity === null || entity === void 0 ? void 0 : entity.node;
529 var selectedValue = (_a = node === null || node === void 0 ? void 0 : node[mergedFieldNames.value.value]) !== null && _a !== void 0 ? _a : selectedKey; // Never be falsy but keep it safe
530
531 if (!mergedMultiple.value) {
532 // Single mode always set value
533 triggerChange([selectedValue], {
534 selected: true,
535 triggerValue: selectedValue
536 }, 'option');
537 } else {
538 var newRawValues = selected ? [].concat((0, _toConsumableArray2.default)(rawValues.value), [selectedValue]) : rawCheckedValues.value.filter(function (v) {
539 return v !== selectedValue;
540 }); // Add keys if tree conduction
541
542 if (treeConduction.value) {
543 // Should keep missing values
544 var _splitRawValues = splitRawValues(newRawValues),
545 missingRawValues = _splitRawValues.missingRawValues,
546 existRawValues = _splitRawValues.existRawValues;
547
548 var keyList = existRawValues.map(function (val) {
549 return valueEntitiesValue.get(val).key;
550 }); // Conduction by selected or not
551
552 var checkedKeys;
553
554 if (selected) {
555 var _conductCheck = (0, _conductUtil.conductCheck)(keyList, true, keyEntitiesValue, maxLevel.value, levelEntities.value);
556
557 checkedKeys = _conductCheck.checkedKeys;
558 } else {
559 var _conductCheck2 = (0, _conductUtil.conductCheck)(keyList, {
560 checked: false,
561 halfCheckedKeys: rawHalfCheckedValues.value
562 }, keyEntitiesValue, maxLevel.value, levelEntities.value);
563
564 checkedKeys = _conductCheck2.checkedKeys;
565 } // Fill back of keys
566
567
568 newRawValues = [].concat((0, _toConsumableArray2.default)(missingRawValues), (0, _toConsumableArray2.default)(checkedKeys.map(function (key) {
569 return keyEntitiesValue[key].node[mergedFieldNames.value.value];
570 })));
571 }
572
573 triggerChange(newRawValues, {
574 selected: selected,
575 triggerValue: selectedValue
576 }, source || 'option');
577 } // Trigger select event
578
579
580 if (selected || !mergedMultiple.value) {
581 (_b = props.onSelect) === null || _b === void 0 ? void 0 : _b.call(props, selectedValue, (0, _legacyUtil.fillLegacyProps)(node));
582 } else {
583 (_c = props.onDeselect) === null || _c === void 0 ? void 0 : _c.call(props, selectedValue, (0, _legacyUtil.fillLegacyProps)(node));
584 }
585 }; // ========================== Dropdown ==========================
586
587
588 var onInternalDropdownVisibleChange = function onInternalDropdownVisibleChange(open) {
589 if (props.onDropdownVisibleChange) {
590 var legacyParam = {};
591 Object.defineProperty(legacyParam, 'documentClickClose', {
592 get: function get() {
593 (0, _warning.warning)(false, 'Second param of `onDropdownVisibleChange` has been removed.');
594 return false;
595 }
596 });
597 props.onDropdownVisibleChange(open, legacyParam);
598 }
599 }; // ====================== Display Change ========================
600
601
602 var onDisplayValuesChange = function onDisplayValuesChange(newValues, info) {
603 var newRawValues = newValues.map(function (item) {
604 return item.value;
605 });
606
607 if (info.type === 'clear') {
608 triggerChange(newRawValues, {}, 'selection');
609 return;
610 } // TreeSelect only have multiple mode which means display change only has remove
611
612
613 if (info.values.length) {
614 onOptionSelect(info.values[0].value, {
615 selected: false,
616 source: 'selection'
617 });
618 }
619 };
620
621 var _toRefs = (0, _vue.toRefs)(props),
622 treeNodeFilterProp = _toRefs.treeNodeFilterProp,
623 loadData = _toRefs.loadData,
624 treeLoadedKeys = _toRefs.treeLoadedKeys,
625 onTreeLoad = _toRefs.onTreeLoad,
626 treeDefaultExpandAll = _toRefs.treeDefaultExpandAll,
627 treeExpandedKeys = _toRefs.treeExpandedKeys,
628 treeDefaultExpandedKeys = _toRefs.treeDefaultExpandedKeys,
629 onTreeExpand = _toRefs.onTreeExpand,
630 virtual = _toRefs.virtual,
631 listHeight = _toRefs.listHeight,
632 listItemHeight = _toRefs.listItemHeight,
633 treeLine = _toRefs.treeLine,
634 treeIcon = _toRefs.treeIcon,
635 showTreeIcon = _toRefs.showTreeIcon,
636 switcherIcon = _toRefs.switcherIcon,
637 treeMotion = _toRefs.treeMotion,
638 customSlots = _toRefs.customSlots;
639
640 _vue.toRaw;
641 (0, _LegacyContext.useProvideLegacySelectContext)((0, _toReactive.toReactive)({
642 checkable: mergedCheckable,
643 loadData: loadData,
644 treeLoadedKeys: treeLoadedKeys,
645 onTreeLoad: onTreeLoad,
646 checkedKeys: rawCheckedValues,
647 halfCheckedKeys: rawHalfCheckedValues,
648 treeDefaultExpandAll: treeDefaultExpandAll,
649 treeExpandedKeys: treeExpandedKeys,
650 treeDefaultExpandedKeys: treeDefaultExpandedKeys,
651 onTreeExpand: onTreeExpand,
652 treeIcon: treeIcon,
653 treeMotion: treeMotion,
654 showTreeIcon: showTreeIcon,
655 switcherIcon: switcherIcon,
656 treeLine: treeLine,
657 treeNodeFilterProp: treeNodeFilterProp,
658 keyEntities: keyEntities,
659 customSlots: customSlots
660 }));
661 (0, _TreeSelectContext.useProvideSelectContext)((0, _toReactive.toReactive)({
662 virtual: virtual,
663 listHeight: listHeight,
664 listItemHeight: listItemHeight,
665 treeData: filteredTreeData,
666 fieldNames: mergedFieldNames,
667 onSelect: onOptionSelect
668 }));
669 var selectRef = (0, _vue.ref)();
670 expose({
671 focus: function focus() {
672 var _a;
673
674 (_a = selectRef.value) === null || _a === void 0 ? void 0 : _a.focus();
675 },
676 blur: function blur() {
677 var _a;
678
679 (_a = selectRef.value) === null || _a === void 0 ? void 0 : _a.blur();
680 },
681 scrollTo: function scrollTo(arg) {
682 var _a;
683
684 (_a = selectRef.value) === null || _a === void 0 ? void 0 : _a.scrollTo(arg);
685 }
686 });
687 return function () {
688 var _a;
689
690 var restProps = (0, _omit.default)(props, ['id', 'prefixCls', // Value
691 'value', 'defaultValue', 'onChange', 'onSelect', 'onDeselect', // Search
692 'searchValue', 'inputValue', 'onSearch', 'autoClearSearchValue', 'filterTreeNode', 'treeNodeFilterProp', // Selector
693 'showCheckedStrategy', 'treeNodeLabelProp', // Mode
694 'multiple', 'treeCheckable', 'treeCheckStrictly', 'labelInValue', // FieldNames
695 'fieldNames', // Data
696 'treeDataSimpleMode', 'treeData', 'children', 'loadData', 'treeLoadedKeys', 'onTreeLoad', // Expanded
697 'treeDefaultExpandAll', 'treeExpandedKeys', 'treeDefaultExpandedKeys', 'onTreeExpand', // Options
698 'virtual', 'listHeight', 'listItemHeight', 'onDropdownVisibleChange', // Tree
699 'treeLine', 'treeIcon', 'showTreeIcon', 'switcherIcon', 'treeMotion']);
700 return (0, _vue.createVNode)(_vcSelect.BaseSelect, (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({
701 "ref": selectRef
702 }, attrs), restProps), {}, {
703 "id": mergedId,
704 "prefixCls": props.prefixCls,
705 "mode": mergedMultiple.value ? 'multiple' : undefined,
706 "displayValues": cachedDisplayValues.value,
707 "onDisplayValuesChange": onDisplayValuesChange,
708 "searchValue": mergedSearchValue.value,
709 "onSearch": onInternalSearch,
710 "OptionList": _OptionList.default,
711 "emptyOptions": !mergedTreeData.value.length,
712 "onDropdownVisibleChange": onInternalDropdownVisibleChange,
713 "tagRender": props.tagRender || slots.tagRender,
714 "dropdownMatchSelectWidth": (_a = props.dropdownMatchSelectWidth) !== null && _a !== void 0 ? _a : true
715 }), slots);
716 };
717 }
718});
719
720exports.default = _default;
\No newline at end of file