@kdcloudjs/kdesign 1.6.40 → 1.7.0

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.
Files changed (57) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/kdesign-complete.less +478 -0
  3. package/dist/kdesign.css +504 -1
  4. package/dist/kdesign.css.map +1 -1
  5. package/dist/kdesign.js +701 -24
  6. package/dist/kdesign.js.map +1 -1
  7. package/dist/kdesign.min.css +2 -2
  8. package/dist/kdesign.min.js +6 -6
  9. package/dist/kdesign.min.js.map +1 -1
  10. package/es/cascader/cascader.js +14 -3
  11. package/es/cascader/util.js +13 -4
  12. package/es/config-provider/compDefaultProps.d.ts +13 -0
  13. package/es/config-provider/compDefaultProps.js +17 -0
  14. package/es/index.d.ts +1 -0
  15. package/es/index.js +2 -1
  16. package/es/input/ClearableLabeledInput.js +8 -2
  17. package/es/input/input.js +1 -5
  18. package/es/tree/tree.d.ts +2 -1
  19. package/es/tree/tree.js +4 -3
  20. package/es/tree-select/index.d.ts +3 -0
  21. package/es/tree-select/index.js +3 -0
  22. package/es/tree-select/interface.d.ts +68 -0
  23. package/es/tree-select/interface.js +4 -0
  24. package/es/tree-select/style/css.js +2 -0
  25. package/es/tree-select/style/index.css +502 -0
  26. package/es/tree-select/style/index.d.ts +2 -0
  27. package/es/tree-select/style/index.js +2 -0
  28. package/es/tree-select/style/index.less +392 -0
  29. package/es/tree-select/style/mixin.less +29 -0
  30. package/es/tree-select/style/token.less +54 -0
  31. package/es/tree-select/tree-select.d.ts +4 -0
  32. package/es/tree-select/tree-select.js +506 -0
  33. package/lib/cascader/cascader.js +14 -3
  34. package/lib/cascader/util.js +13 -4
  35. package/lib/config-provider/compDefaultProps.d.ts +13 -0
  36. package/lib/config-provider/compDefaultProps.js +17 -0
  37. package/lib/index.d.ts +1 -0
  38. package/lib/index.js +7 -0
  39. package/lib/input/ClearableLabeledInput.js +8 -2
  40. package/lib/input/input.js +1 -5
  41. package/lib/style/components.less +1 -0
  42. package/lib/tree/tree.d.ts +2 -1
  43. package/lib/tree/tree.js +4 -3
  44. package/lib/tree-select/index.d.ts +3 -0
  45. package/lib/tree-select/index.js +27 -0
  46. package/lib/tree-select/interface.d.ts +68 -0
  47. package/lib/tree-select/interface.js +13 -0
  48. package/lib/tree-select/style/css.js +4 -0
  49. package/lib/tree-select/style/index.css +502 -0
  50. package/lib/tree-select/style/index.d.ts +2 -0
  51. package/lib/tree-select/style/index.js +4 -0
  52. package/lib/tree-select/style/index.less +392 -0
  53. package/lib/tree-select/style/mixin.less +29 -0
  54. package/lib/tree-select/style/token.less +54 -0
  55. package/lib/tree-select/tree-select.d.ts +4 -0
  56. package/lib/tree-select/tree-select.js +519 -0
  57. package/package.json +1 -1
@@ -0,0 +1,506 @@
1
+ import _defineProperty from "@babel/runtime-corejs3/helpers/defineProperty";
2
+ import _slicedToArray from "@babel/runtime-corejs3/helpers/slicedToArray";
3
+ import _toConsumableArray from "@babel/runtime-corejs3/helpers/toConsumableArray";
4
+ import _extends from "@babel/runtime-corejs3/helpers/extends";
5
+ import _Map from "@babel/runtime-corejs3/core-js-stable/map";
6
+ import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
7
+ import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
8
+ import _includesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/includes";
9
+ import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
10
+ import React, { useContext, useRef, useEffect, useState, useCallback, useLayoutEffect, useMemo } from 'react';
11
+ import { useMergedState } from '../_utils/hooks';
12
+ import classNames from 'classnames';
13
+ import ConfigContext from '../config-provider/ConfigContext';
14
+ import { getCompProps } from '../_utils';
15
+ import { Icon, Tag, Tree } from '../index';
16
+ import usePopper from '../_utils/usePopper';
17
+ var INPUT_MIN_WIDTH = 4; // 输入框最小宽度
18
+ function flattenTreeData(treeData) {
19
+ var map = new _Map();
20
+ function flatten(node) {
21
+ var parentKeys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
22
+ var _a;
23
+ var key = node.key;
24
+ var data = _extends(_extends({}, node), {
25
+ childrenKeys: [],
26
+ parentKeys: parentKeys
27
+ });
28
+ map.set(key, data);
29
+ if (node.children) {
30
+ var keys = [];
31
+ (_a = node.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {
32
+ var _context, _data$childrenKeys, _context2;
33
+ var childKey = flatten(child, _concatInstanceProperty(_context = []).call(_context, _toConsumableArray(parentKeys), [key]));
34
+ keys.push(childKey);
35
+ var grandchildrenKeys = map.get(childKey).childrenKeys;
36
+ (_data$childrenKeys = data.childrenKeys).push.apply(_data$childrenKeys, _concatInstanceProperty(_context2 = [childKey]).call(_context2, _toConsumableArray(grandchildrenKeys)));
37
+ });
38
+ }
39
+ return key;
40
+ }
41
+ treeData.forEach(function (node) {
42
+ flatten(node);
43
+ });
44
+ return map;
45
+ }
46
+ var InternalTreeSelect = function InternalTreeSelect(props, ref) {
47
+ var _context3, _classNames4, _classNames10;
48
+ var _useContext = useContext(ConfigContext),
49
+ getPrefixCls = _useContext.getPrefixCls,
50
+ prefixCls = _useContext.prefixCls,
51
+ userDefaultProps = _useContext.compDefaultProps;
52
+ var treeSelectProps = getCompProps('TreeSelect', userDefaultProps, props);
53
+ var size = treeSelectProps.size,
54
+ value = treeSelectProps.value,
55
+ autoFocus = treeSelectProps.autoFocus,
56
+ className = treeSelectProps.className,
57
+ defaultOpen = treeSelectProps.defaultOpen,
58
+ dropdownClassName = treeSelectProps.dropdownClassName,
59
+ disabled = treeSelectProps.disabled,
60
+ borderType = treeSelectProps.borderType,
61
+ _treeSelectProps$show = treeSelectProps.showArrow,
62
+ showArrow = _treeSelectProps$show === void 0 ? true : _treeSelectProps$show,
63
+ allowClear = treeSelectProps.allowClear,
64
+ customPrefixcls = treeSelectProps.prefixCls,
65
+ onFocus = treeSelectProps.onFocus,
66
+ onBlur = treeSelectProps.onBlur,
67
+ onClear = treeSelectProps.onClear,
68
+ onVisibleChange = treeSelectProps.onVisibleChange,
69
+ mode = treeSelectProps.mode,
70
+ showSearch = treeSelectProps.showSearch,
71
+ onChange = treeSelectProps.onChange,
72
+ onSearch = treeSelectProps.onSearch,
73
+ defaultValue = treeSelectProps.defaultValue,
74
+ placeholder = treeSelectProps.placeholder,
75
+ dropdownStyle = treeSelectProps.dropdownStyle,
76
+ style = treeSelectProps.style,
77
+ clearIcon = treeSelectProps.clearIcon,
78
+ filterTreeNode = treeSelectProps.filterTreeNode,
79
+ treeNodeFilterProp = treeSelectProps.treeNodeFilterProp,
80
+ treeNodeLabelProp = treeSelectProps.treeNodeLabelProp,
81
+ _treeSelectProps$popp = treeSelectProps.popperStyle,
82
+ popperStyle = _treeSelectProps$popp === void 0 ? {} : _treeSelectProps$popp,
83
+ tagRender = treeSelectProps.tagRender,
84
+ treeData = treeSelectProps.treeData,
85
+ virtual = treeSelectProps.virtual,
86
+ treeIcon = treeSelectProps.treeIcon,
87
+ showTreeIcon = treeSelectProps.showTreeIcon,
88
+ switcherIcon = treeSelectProps.switcherIcon,
89
+ treeDefaultExpandAll = treeSelectProps.treeDefaultExpandAll,
90
+ treeDefaultExpandedKeys = treeSelectProps.treeDefaultExpandedKeys,
91
+ treeCheckStrictly = treeSelectProps.treeCheckStrictly,
92
+ treeExpandedKeys = treeSelectProps.treeExpandedKeys,
93
+ treeExpandOnClickNode = treeSelectProps.treeExpandOnClickNode,
94
+ treeLoadData = treeSelectProps.treeLoadData,
95
+ onTreeExpand = treeSelectProps.onTreeExpand,
96
+ onSelect = treeSelectProps.onSelect,
97
+ onCheck = treeSelectProps.onCheck;
98
+ var isMultiple = mode === 'multiple'; // 是否多选
99
+ var _useMergedState = useMergedState(isMultiple ? [] : undefined, {
100
+ value: value,
101
+ defaultValue: defaultValue
102
+ }),
103
+ _useMergedState2 = _slicedToArray(_useMergedState, 2),
104
+ initValue = _useMergedState2[0],
105
+ setInitValue = _useMergedState2[1];
106
+ var _useState = useState(treeExpandedKeys),
107
+ _useState2 = _slicedToArray(_useState, 2),
108
+ expandedKeys = _useState2[0],
109
+ setExpandedKeys = _useState2[1];
110
+ var _useState3 = useState([]),
111
+ _useState4 = _slicedToArray(_useState3, 2),
112
+ selectedKeys = _useState4[0],
113
+ setSelectedKeys = _useState4[1];
114
+ var innerRef = useRef();
115
+ var selectRef = ref || innerRef;
116
+ var searchRef = useRef(null); // 搜索框ref
117
+ var selectionRef = useRef(null);
118
+ var dropDownRef = useRef(null);
119
+ var measureRef = useRef(null);
120
+ var _useState5 = useState(!!props.visible || defaultOpen),
121
+ _useState6 = _slicedToArray(_useState5, 2),
122
+ optionShow = _useState6[0],
123
+ setOptionShow = _useState6[1]; // 下拉列表是否展示
124
+ var _useState7 = useState(''),
125
+ _useState8 = _slicedToArray(_useState7, 2),
126
+ searchValue = _useState8[0],
127
+ setSearchValue = _useState8[1]; // 搜索框定时器
128
+ var _useState9 = useState(INPUT_MIN_WIDTH),
129
+ _useState10 = _slicedToArray(_useState9, 2),
130
+ inputWidth = _useState10[0],
131
+ setInputWidth = _useState10[1]; // 输入框宽度
132
+ var _useState11 = useState(autoFocus),
133
+ _useState12 = _slicedToArray(_useState11, 2),
134
+ focusd = _useState12[0],
135
+ setFocusd = _useState12[1];
136
+ var _useState13 = useState([]),
137
+ _useState14 = _slicedToArray(_useState13, 2),
138
+ selectTreeNodes = _useState14[0],
139
+ setSelectTreeNodes = _useState14[1];
140
+ var TreeMap = useMemo(function () {
141
+ return flattenTreeData(treeData);
142
+ }, [treeData]);
143
+ var isSelected = useMemo(function () {
144
+ return !!(selectTreeNodes === null || selectTreeNodes === void 0 ? void 0 : selectTreeNodes.length);
145
+ }, [selectTreeNodes]);
146
+ var selectPrefixCls = getPrefixCls(prefixCls, 'tree-select', customPrefixcls);
147
+ // 选择器样式
148
+ var selectCls = classNames(selectPrefixCls, className, _defineProperty({}, "".concat(selectPrefixCls, "-visible"), optionShow));
149
+ var selectionCls = classNames(_defineProperty({}, "".concat(selectPrefixCls, "-selector"), true));
150
+ // 下拉列表框样式
151
+ var dropDownCls = classNames(dropdownClassName, _defineProperty({}, "".concat(selectPrefixCls, "-dropdown"), true));
152
+ // 多选,单选公共样式
153
+ var commCls = classNames((_classNames4 = {}, _defineProperty(_classNames4, "".concat(selectPrefixCls, "-bordered"), borderType === 'bordered'), _defineProperty(_classNames4, "".concat(selectPrefixCls, "-underline"), borderType === 'underline'), _defineProperty(_classNames4, "".concat(selectPrefixCls, "-borderless"), borderType === 'none'), _defineProperty(_classNames4, _concatInstanceProperty(_context3 = "".concat(selectPrefixCls, "-size-")).call(_context3, size), size), _defineProperty(_classNames4, "".concat(selectPrefixCls, "-wrapper"), true), _classNames4));
154
+ useEffect(function () {
155
+ var arr = [];
156
+ if (isMultiple && (initValue === null || initValue === void 0 ? void 0 : initValue.length)) {
157
+ for (var index = 0; index < initValue.length; index++) {
158
+ var key = initValue[index];
159
+ if (TreeMap.has(key)) {
160
+ arr.push(TreeMap.get(key));
161
+ }
162
+ }
163
+ } else {
164
+ if (TreeMap.has(initValue)) {
165
+ arr.push(TreeMap.get(initValue));
166
+ }
167
+ }
168
+ setSelectTreeNodes(arr);
169
+ }, [initValue, TreeMap, isMultiple]);
170
+ useEffect(function () {
171
+ if (optionShow === false) {
172
+ handleClear();
173
+ }
174
+ }, [optionShow]);
175
+ var handleFocus = useCallback(function (e) {
176
+ e.stopPropagation();
177
+ setFocusd(true);
178
+ onFocus && onFocus(e);
179
+ }, [onFocus]);
180
+ var handleBlur = useCallback(function (e) {
181
+ e.stopPropagation();
182
+ setFocusd(false);
183
+ onBlur && onBlur(e);
184
+ }, [onBlur]);
185
+ useEffect(function () {
186
+ selectionRef.current.addEventListener('mouseup', function (e) {
187
+ var _a;
188
+ var isCloseBtn = ((_a = e === null || e === void 0 ? void 0 : e.target) === null || _a === void 0 ? void 0 : _a.className.indexOf('kd-tag-close-icon')) > -1;
189
+ if (isCloseBtn) {
190
+ e.stopPropagation();
191
+ }
192
+ });
193
+ }, []);
194
+ useLayoutEffect(function () {
195
+ measureRef.current && setInputWidth(measureRef.current.scrollWidth);
196
+ }, [searchValue]);
197
+ var getTreeNodeLabel = function getTreeNodeLabel(node) {
198
+ return (node === null || node === void 0 ? void 0 : node[treeNodeLabelProp]) || (node === null || node === void 0 ? void 0 : node.title);
199
+ };
200
+ // 输入框变化搜索内容
201
+ var handleSearchChange = useCallback(function (event) {
202
+ var val = event.currentTarget.value;
203
+ setOptionShow(true);
204
+ setSearchValue(val);
205
+ onSearch === null || onSearch === void 0 ? void 0 : onSearch(val);
206
+ }, [onSearch]);
207
+ // 清除搜索内容
208
+ var handleClear = useCallback(function () {
209
+ if (searchRef.current) {
210
+ searchRef.current.value = '';
211
+ setSearchValue('');
212
+ }
213
+ }, [searchRef]);
214
+ // 清空选择器内容
215
+ var handleReset = function handleReset(e) {
216
+ e.stopPropagation();
217
+ if (isMultiple) {
218
+ setInitValue([]);
219
+ } else {
220
+ setInitValue('');
221
+ }
222
+ onClear === null || onClear === void 0 ? void 0 : onClear('');
223
+ setSearchValue('');
224
+ onChange === null || onChange === void 0 ? void 0 : onChange(undefined, undefined);
225
+ };
226
+ // 多选模式下清除某一项
227
+ var handleRemove = function handleRemove(e, key) {
228
+ var _context4;
229
+ var _a, _b;
230
+ if (disabled) return;
231
+ var allRemoveKeys = _concatInstanceProperty(_context4 = []).call(_context4, _toConsumableArray(((_a = TreeMap.get(key)) === null || _a === void 0 ? void 0 : _a.childrenKeys) || []), _toConsumableArray(((_b = TreeMap.get(key)) === null || _b === void 0 ? void 0 : _b.parentKeys) || []), [key]);
232
+ var newSelectTreeNodes = _filterInstanceProperty(selectTreeNodes).call(selectTreeNodes, function (item) {
233
+ return !_includesInstanceProperty(allRemoveKeys).call(allRemoveKeys, item.key);
234
+ });
235
+ var newKeys = _mapInstanceProperty(newSelectTreeNodes).call(newSelectTreeNodes, function (_ref) {
236
+ var key = _ref.key;
237
+ return key;
238
+ });
239
+ if (!Object.hasOwnProperty.call(treeSelectProps, 'value')) {
240
+ setInitValue(newKeys);
241
+ }
242
+ onChange === null || onChange === void 0 ? void 0 : onChange(newKeys, newSelectTreeNodes);
243
+ e.stopPropagation();
244
+ };
245
+ var handleSelect = function handleSelect(keys, state) {
246
+ !isMultiple && !Object.hasOwnProperty.call(treeSelectProps, 'value') && setInitValue(keys[0]);
247
+ setSelectedKeys(keys);
248
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect(keys, state);
249
+ !isMultiple && (onChange === null || onChange === void 0 ? void 0 : onChange(keys[0], [TreeMap.get(keys[0])]));
250
+ if (!isMultiple) {
251
+ setOptionShow(false);
252
+ }
253
+ };
254
+ var handleCheck = function handleCheck(keys, state) {
255
+ onCheck === null || onCheck === void 0 ? void 0 : onCheck(keys, state);
256
+ console.log(1111, state);
257
+ onChange === null || onChange === void 0 ? void 0 : onChange(keys);
258
+ !Object.hasOwnProperty.call(treeSelectProps, 'value') && setInitValue(keys);
259
+ };
260
+ var handleExpand = function handleExpand(keys, state) {
261
+ !Object.hasOwnProperty.call(treeSelectProps, 'treeExpandedKeys') && setExpandedKeys(keys);
262
+ onTreeExpand === null || onTreeExpand === void 0 ? void 0 : onTreeExpand(keys, state);
263
+ };
264
+ // 渲染后缀图标
265
+ var renderSuffix = function renderSuffix() {
266
+ var _classNames5;
267
+ var suffixIcon = treeSelectProps.suffixIcon;
268
+ // 选择器下拉icon样式
269
+ var arrowIconCls = classNames((_classNames5 = {}, _defineProperty(_classNames5, "".concat(selectPrefixCls, "-icon-arrow"), true), _defineProperty(_classNames5, "".concat(selectPrefixCls, "-icon-arrow-up"), optionShow), _defineProperty(_classNames5, "".concat(selectPrefixCls, "-icon-arrow-down"), !optionShow), _defineProperty(_classNames5, "".concat(selectPrefixCls, "-icon-arrow-focus"), optionShow), _classNames5));
270
+ var iconShow = allowClear && !disabled && (isMultiple ? !!selectTreeNodes.length : (initValue !== null && initValue !== void 0 ? initValue : '') !== '' || searchValue);
271
+ var clearIconCls = classNames(_defineProperty({}, "".concat(selectPrefixCls, "-icon-clear"), true));
272
+ return /*#__PURE__*/React.createElement(React.Fragment, null, iconShow && /*#__PURE__*/React.createElement("span", {
273
+ onClick: handleReset,
274
+ onMouseDown: function onMouseDown(e) {
275
+ return e.preventDefault();
276
+ },
277
+ className: clearIconCls
278
+ }, clearIcon || /*#__PURE__*/React.createElement(Icon, {
279
+ type: "close-solid"
280
+ })), showArrow && /*#__PURE__*/React.createElement("span", {
281
+ className: arrowIconCls
282
+ }, suffixIcon || /*#__PURE__*/React.createElement(Icon, {
283
+ type: "arrow-down"
284
+ })));
285
+ };
286
+ var defFilterTreeNode = function defFilterTreeNode(node) {
287
+ var _a;
288
+ if (typeof filterTreeNode === 'function') {
289
+ return filterTreeNode(node, searchValue);
290
+ }
291
+ if ((_a = node === null || node === void 0 ? void 0 : node[treeNodeFilterProp]) === null || _a === void 0 ? void 0 : _includesInstanceProperty(_a).call(_a, searchValue)) {
292
+ return true;
293
+ }
294
+ return false;
295
+ };
296
+ var dropRender = function dropRender() {
297
+ var treeProps = {
298
+ expandOnClickNode: treeExpandOnClickNode,
299
+ loadData: treeLoadData,
300
+ treeData: treeData,
301
+ virtual: virtual,
302
+ defaultExpandAll: treeDefaultExpandAll,
303
+ defaultExpandedKeys: treeDefaultExpandedKeys,
304
+ checkStrictly: treeCheckStrictly,
305
+ selectedKeys: selectedKeys,
306
+ expandedKeys: expandedKeys,
307
+ filterValue: searchValue,
308
+ icon: treeIcon,
309
+ showIcon: showTreeIcon,
310
+ switcherIcon: switcherIcon,
311
+ notFoundContent: renderNotContent(),
312
+ filterTreeNode: defFilterTreeNode,
313
+ onSelect: handleSelect,
314
+ onExpand: handleExpand
315
+ };
316
+ if (isMultiple) {
317
+ treeProps.checkable = true;
318
+ treeProps.checkedKeys = initValue;
319
+ treeProps.onCheck = handleCheck;
320
+ }
321
+ return /*#__PURE__*/React.createElement(Tree, _extends({}, treeProps));
322
+ };
323
+ // 下拉列表为空时显示的内容
324
+ var renderNotContent = function renderNotContent() {
325
+ // 下拉列表为空
326
+ var emptyListCls = classNames(_defineProperty({}, "".concat(selectPrefixCls, "-dropdown-empty"), true));
327
+ var notFoundContent = treeSelectProps.notFoundContent;
328
+ var emptyContent = notFoundContent || '暂无数据';
329
+ return /*#__PURE__*/React.createElement("div", {
330
+ className: emptyListCls
331
+ }, emptyContent);
332
+ };
333
+ useEffect(function () {
334
+ var _a;
335
+ if (showSearch && autoFocus && !disabled) {
336
+ (_a = searchRef.current) === null || _a === void 0 ? void 0 : _a.focus();
337
+ }
338
+ }, [showSearch, autoFocus, disabled]);
339
+ // 渲染下拉列表框
340
+ var renderContent = function renderContent() {
341
+ var dropDownStyle = _extends({
342
+ width: style === null || style === void 0 ? void 0 : style.width
343
+ }, dropdownStyle);
344
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
345
+ className: dropDownCls,
346
+ style: dropDownStyle,
347
+ ref: dropDownRef
348
+ }, dropRender()));
349
+ };
350
+ // 处理多选tag
351
+ var handleMaxTagHolder = useCallback(function () {
352
+ var maxTagPlaceholder = treeSelectProps.maxTagPlaceholder;
353
+ if (typeof maxTagPlaceholder === 'function') {
354
+ return /*#__PURE__*/React.createElement(Tag, {
355
+ type: "edit",
356
+ size: size,
357
+ disabled: disabled
358
+ }, maxTagPlaceholder(selectTreeNodes));
359
+ } else {
360
+ return /*#__PURE__*/React.createElement(Tag, {
361
+ type: "edit",
362
+ size: size,
363
+ disabled: disabled
364
+ }, maxTagPlaceholder);
365
+ }
366
+ }, [selectTreeNodes]);
367
+ var renderSingle = function renderSingle() {
368
+ var label = '';
369
+ if (isSelected) {
370
+ label = getTreeNodeLabel(selectTreeNodes[0]);
371
+ }
372
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
373
+ className: singleCls,
374
+ ref: selectionRef,
375
+ title: label
376
+ }, /*#__PURE__*/React.createElement("span", {
377
+ className: "".concat(selectPrefixCls, "-selection-search")
378
+ }, /*#__PURE__*/React.createElement("input", {
379
+ ref: searchRef,
380
+ value: searchValue,
381
+ className: "".concat(selectPrefixCls, "-selection-search-input"),
382
+ onChange: handleSearchChange,
383
+ onFocus: handleFocus,
384
+ onBlur: handleBlur,
385
+ readOnly: !showSearch || !!disabled
386
+ })), isSelected && !searchValue && /*#__PURE__*/React.createElement("span", {
387
+ className: "".concat(selectPrefixCls, "-selection-item")
388
+ }, label), !isSelected && !searchValue && /*#__PURE__*/React.createElement("span", {
389
+ className: "".concat(selectPrefixCls, "-placeholder")
390
+ }, placeholder), /*#__PURE__*/React.createElement("span", {
391
+ className: "".concat(selectPrefixCls, "-suffix")
392
+ }, renderSuffix())));
393
+ };
394
+ var renderMultiple = function renderMultiple() {
395
+ var _context5, _classNames8, _context6, _classNames9;
396
+ var maxTagCount = treeSelectProps.maxTagCount,
397
+ maxTagPlaceholder = treeSelectProps.maxTagPlaceholder;
398
+ var multipleCls = classNames(commCls, (_classNames8 = {}, _defineProperty(_classNames8, "".concat(selectPrefixCls, "-multiple-disabled"), disabled), _defineProperty(_classNames8, _concatInstanceProperty(_context5 = "".concat(selectPrefixCls, "-")).call(_context5, mode), mode), _defineProperty(_classNames8, "".concat(selectPrefixCls, "-focused"), focusd || optionShow), _defineProperty(_classNames8, "".concat(selectPrefixCls, "-placeholder"), placeholder && !selectTreeNodes.length), _classNames8));
399
+ var itemCls = classNames((_classNames9 = {}, _defineProperty(_classNames9, "".concat(selectPrefixCls, "-selection-item"), true), _defineProperty(_classNames9, _concatInstanceProperty(_context6 = "".concat(selectPrefixCls, "-selection-item-")).call(_context6, size), size), _classNames9));
400
+ var TagStyle = {
401
+ margin: '2px 8px 2px 0',
402
+ maxWidth: '100%'
403
+ };
404
+ return /*#__PURE__*/React.createElement("div", {
405
+ className: multipleCls,
406
+ ref: selectionRef
407
+ }, Array.isArray(selectTreeNodes) && /*#__PURE__*/React.createElement(React.Fragment, null, _mapInstanceProperty(selectTreeNodes).call(selectTreeNodes, function (item, index) {
408
+ var key = item.key;
409
+ var label = getTreeNodeLabel(item);
410
+ return (!maxTagCount || index <= maxTagCount - 1) && /*#__PURE__*/React.createElement("span", {
411
+ key: key,
412
+ className: classNames("".concat(selectPrefixCls, "-selection-tag")),
413
+ onMouseDown: function onMouseDown(e) {
414
+ return e.preventDefault();
415
+ }
416
+ }, typeof tagRender === 'function' ? tagRender === null || tagRender === void 0 ? void 0 : tagRender(_extends({
417
+ onClose: handleRemove,
418
+ disabled: disabled,
419
+ size: size
420
+ }, item)) : /*#__PURE__*/React.createElement(Tag, {
421
+ type: "edit",
422
+ style: TagStyle,
423
+ size: size,
424
+ closable: true,
425
+ disabled: disabled,
426
+ onClose: function onClose(e) {
427
+ return handleRemove(e, key);
428
+ },
429
+ "data-tag": key
430
+ }, label));
431
+ }), maxTagCount && selectTreeNodes.length > maxTagCount ? maxTagPlaceholder ? handleMaxTagHolder() : /*#__PURE__*/React.createElement("span", {
432
+ className: itemCls
433
+ }, /*#__PURE__*/React.createElement("span", {
434
+ className: "".concat(selectPrefixCls, "-selection-item-content")
435
+ }, "\u5171", selectTreeNodes.length, "\u9879")) : null), /*#__PURE__*/React.createElement("span", {
436
+ className: "".concat(selectPrefixCls, "-selection-search"),
437
+ style: {
438
+ width: inputWidth
439
+ }
440
+ }, /*#__PURE__*/React.createElement("input", {
441
+ ref: searchRef,
442
+ value: searchValue,
443
+ className: "".concat(selectPrefixCls, "-selection-search-input"),
444
+ onChange: handleSearchChange,
445
+ onFocus: handleFocus,
446
+ onBlur: handleBlur,
447
+ readOnly: !showSearch || !!disabled
448
+ }), /*#__PURE__*/React.createElement("span", {
449
+ ref: measureRef,
450
+ className: "".concat(selectPrefixCls, "-selection-search-mirror")
451
+ }, searchValue, "\xA0")), /*#__PURE__*/React.createElement("span", {
452
+ className: "".concat(selectPrefixCls, "-placeholder")
453
+ }, !(selectTreeNodes === null || selectTreeNodes === void 0 ? void 0 : selectTreeNodes.length) && !searchValue && placeholder), /*#__PURE__*/React.createElement("span", {
454
+ className: "".concat(selectPrefixCls, "-suffix")
455
+ }, renderSuffix()));
456
+ };
457
+ var singleCls = classNames(commCls, (_classNames10 = {}, _defineProperty(_classNames10, "".concat(selectPrefixCls, "-single"), true), _defineProperty(_classNames10, "".concat(selectPrefixCls, "-single-disabled"), disabled), _defineProperty(_classNames10, "".concat(selectPrefixCls, "-single-focused"), focusd && !disabled || optionShow), _classNames10));
458
+ var renderSelect = function renderSelect() {
459
+ return /*#__PURE__*/React.createElement("div", {
460
+ className: selectCls,
461
+ ref: selectRef,
462
+ style: style
463
+ }, /*#__PURE__*/React.createElement("span", {
464
+ className: selectionCls,
465
+ tabIndex: disabled ? -1 : 0,
466
+ onFocus: function onFocus() {
467
+ var _a;
468
+ return (_a = searchRef.current) === null || _a === void 0 ? void 0 : _a.focus();
469
+ },
470
+ onBlur: function onBlur() {
471
+ var _a;
472
+ return (_a = searchRef.current) === null || _a === void 0 ? void 0 : _a.blur();
473
+ }
474
+ }, !isMultiple ? renderSingle() : renderMultiple()));
475
+ };
476
+ var catchStyle = function catchStyle() {
477
+ var _a;
478
+ if (selectRef === null || selectRef === void 0 ? void 0 : selectRef.current) {
479
+ var _ref2 = (_a = selectRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect(),
480
+ width = _ref2.width;
481
+ return _extends({
482
+ width: (dropdownStyle === null || dropdownStyle === void 0 ? void 0 : dropdownStyle.width) || (width > 75 ? width : 75),
483
+ zIndex: 1050
484
+ }, popperStyle);
485
+ }
486
+ };
487
+ var handleVisibleChange = function handleVisibleChange(visible) {
488
+ if (visible !== optionShow) {
489
+ props.visible === undefined && setOptionShow(visible);
490
+ onVisibleChange === null || onVisibleChange === void 0 ? void 0 : onVisibleChange(visible);
491
+ }
492
+ };
493
+ var popperProps = _extends(_extends({}, treeSelectProps), {
494
+ prefixCls: selectPrefixCls,
495
+ placement: 'bottomLeft',
496
+ popperStyle: catchStyle(),
497
+ defaultVisible: optionShow,
498
+ visible: optionShow,
499
+ onVisibleChange: handleVisibleChange,
500
+ clickToClose: !(showSearch && searchValue)
501
+ });
502
+ return usePopper(renderSelect(), renderContent(), popperProps);
503
+ };
504
+ var TreeSelect = /*#__PURE__*/React.forwardRef(InternalTreeSelect);
505
+ TreeSelect.displayName = 'TreeSelect';
506
+ export default TreeSelect;
@@ -182,6 +182,17 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
182
182
  });
183
183
  });
184
184
  }, [currentOptions, fieldNames.label, isMultiple]);
185
+ var values = (0, _react.useMemo)(function () {
186
+ return !isMultiple ? (0, _map.default)(currentOptions).call(currentOptions, function (_ref3) {
187
+ var value = _ref3.value;
188
+ return value;
189
+ }) : (0, _map.default)(currentOptions).call(currentOptions, function (option) {
190
+ return (0, _map.default)(option).call(option, function (_ref4) {
191
+ var value = _ref4.value;
192
+ return value;
193
+ });
194
+ });
195
+ }, [currentOptions, isMultiple]);
185
196
  var allowClear = allProps.allowClear && value.length > 0;
186
197
  var locatorProps = {
187
198
  style: style,
@@ -269,7 +280,7 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
269
280
  ref: wrapperRef
270
281
  }, Array.isArray(currentOptions) && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, (0, _map.default)(currentOptions).call(currentOptions, function (option, index) {
271
282
  return /*#__PURE__*/_react.default.createElement("span", {
272
- key: (0, _stringify.default)(labels[index]),
283
+ key: (0, _stringify.default)(values[index]),
273
284
  className: (0, _classnames.default)("".concat(prefixCls, "-selection-tag"))
274
285
  }, (!maxTagCount || index <= maxTagCount - 1) && /*#__PURE__*/_react.default.createElement(_tag.default, {
275
286
  type: "edit",
@@ -344,8 +355,8 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
344
355
  (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, newValue, newMultipleOptions);
345
356
  };
346
357
  var onChange = function onChange(selectedOptions) {
347
- var selectedValue = (0, _map.default)(selectedOptions).call(selectedOptions, function (_ref3) {
348
- var value = _ref3[fieldNames.value];
358
+ var selectedValue = (0, _map.default)(selectedOptions).call(selectedOptions, function (_ref5) {
359
+ var value = _ref5[fieldNames.value];
349
360
  return value;
350
361
  });
351
362
  setCurrentOptions(selectedOptions);
@@ -18,9 +18,9 @@ var _set = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable
18
18
  var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
19
19
  var _slice = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/slice"));
20
20
  var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes"));
21
- var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
22
21
  var _from = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/array/from"));
23
22
  var _splice = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/splice"));
23
+ var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
24
24
  var _react = require("react");
25
25
  var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
26
26
  var __rest = void 0 && (void 0).__rest || function (s, e) {
@@ -213,9 +213,18 @@ var getChecked = function getChecked(checkedKeys, key) {
213
213
  };
214
214
  exports.getChecked = getChecked;
215
215
  var getCheckedNodes = function getCheckedNodes(flatNodes, checkedKeys) {
216
- return (0, _filter.default)(flatNodes).call(flatNodes, function (node) {
217
- return checkedKeys === null || checkedKeys === void 0 ? void 0 : (0, _includes.default)(checkedKeys).call(checkedKeys, node.value);
218
- });
216
+ var result = [];
217
+ for (var i = 0; i < checkedKeys.length; i++) {
218
+ var key = checkedKeys[i];
219
+ for (var j = 0; j < flatNodes.length; j++) {
220
+ var obj = flatNodes[j];
221
+ if (obj.value === key) {
222
+ result.push(obj);
223
+ break;
224
+ }
225
+ }
226
+ }
227
+ return result;
219
228
  };
220
229
  var addKeys = function addKeys() {
221
230
  var _context6;
@@ -415,5 +415,18 @@ declare const compDefaultProps: {
415
415
  size: string;
416
416
  underscore: boolean;
417
417
  };
418
+ TreeSelect: {
419
+ size: string;
420
+ borderType: string;
421
+ mode: string;
422
+ defaultOpen: boolean;
423
+ showArrow: boolean;
424
+ placeholder: string;
425
+ optionLabelProp: string;
426
+ treeNodeFilterProp: string;
427
+ showSearch: boolean;
428
+ switcherIcon: () => JSX.Element;
429
+ expandOnClickNode: boolean;
430
+ };
418
431
  };
419
432
  export default compDefaultProps;
@@ -439,6 +439,23 @@ var compDefaultProps = {
439
439
  Link: {
440
440
  size: 'middle',
441
441
  underscore: false
442
+ },
443
+ TreeSelect: {
444
+ size: 'middle',
445
+ borderType: 'underline',
446
+ mode: 'single',
447
+ defaultOpen: false,
448
+ showArrow: true,
449
+ placeholder: '请输入需要搜索的内容',
450
+ optionLabelProp: 'title',
451
+ treeNodeFilterProp: 'title',
452
+ showSearch: true,
453
+ switcherIcon: function switcherIcon() {
454
+ return /*#__PURE__*/React.createElement(_index.Icon, {
455
+ type: "arrow-right-solid"
456
+ });
457
+ },
458
+ expandOnClickNode: false
442
459
  }
443
460
  };
444
461
  var _default = compDefaultProps;
package/lib/index.d.ts CHANGED
@@ -53,3 +53,4 @@ export { default as Table } from './table';
53
53
  export { default as Stepper } from './stepper';
54
54
  export { default as BaseData } from './base-data';
55
55
  export { default as Link } from './link';
56
+ export { default as TreeSelect } from './tree-select';
package/lib/index.js CHANGED
@@ -349,6 +349,12 @@ Object.defineProperty(exports, "TreeNode", {
349
349
  return _treeNode.default;
350
350
  }
351
351
  });
352
+ Object.defineProperty(exports, "TreeSelect", {
353
+ enumerable: true,
354
+ get: function get() {
355
+ return _treeSelect.default;
356
+ }
357
+ });
352
358
  Object.defineProperty(exports, "Typography", {
353
359
  enumerable: true,
354
360
  get: function get() {
@@ -416,6 +422,7 @@ var _table = _interopRequireDefault(require("./table"));
416
422
  var _stepper = _interopRequireDefault(require("./stepper"));
417
423
  var _baseData = _interopRequireDefault(require("./base-data"));
418
424
  var _link = _interopRequireDefault(require("./link"));
425
+ var _treeSelect = _interopRequireDefault(require("./tree-select"));
419
426
  function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
420
427
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
421
428
  /* @remove-on-es-build-begin */