@kdcloudjs/kdesign 1.7.35 → 1.7.39

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 (102) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +2 -1
  3. package/dist/kdesign-complete.less +189 -28
  4. package/dist/kdesign.css +233 -26
  5. package/dist/kdesign.css.map +1 -1
  6. package/dist/kdesign.js +706 -251
  7. package/dist/kdesign.js.map +1 -1
  8. package/dist/kdesign.min.css +3 -3
  9. package/dist/kdesign.min.js +5 -5
  10. package/dist/kdesign.min.js.map +1 -1
  11. package/es/cascader/cascader.js +8 -4
  12. package/es/cascader/style/index.css +5 -2
  13. package/es/cascader/style/index.less +4 -2
  14. package/es/city-picker/city-picker.js +1 -1
  15. package/es/clipboard/clipboard.d.ts +21 -0
  16. package/es/clipboard/clipboard.js +106 -0
  17. package/es/clipboard/index.d.ts +4 -0
  18. package/es/clipboard/index.js +3 -0
  19. package/es/clipboard/style/css.js +2 -0
  20. package/es/clipboard/style/index.css +190 -0
  21. package/es/clipboard/style/index.d.ts +2 -0
  22. package/es/clipboard/style/index.js +2 -0
  23. package/es/clipboard/style/index.less +32 -0
  24. package/es/clipboard/style/mixin.less +39 -0
  25. package/es/clipboard/style/token.less +52 -0
  26. package/es/clipboard/util.d.ts +13 -0
  27. package/es/clipboard/util.js +197 -0
  28. package/es/config-provider/compDefaultProps.d.ts +5 -0
  29. package/es/config-provider/compDefaultProps.js +5 -0
  30. package/es/index.d.ts +1 -0
  31. package/es/index.js +2 -1
  32. package/es/input-number/inputNumber.js +20 -14
  33. package/es/input-number/useSelectionRange.d.ts +2 -1
  34. package/es/input-number/useSelectionRange.js +3 -2
  35. package/es/message/content.js +1 -4
  36. package/es/select/interface.d.ts +1 -0
  37. package/es/select/select.js +3 -8
  38. package/es/select/style/index.css +7 -4
  39. package/es/select/style/index.less +12 -4
  40. package/es/select/style/token.less +1 -0
  41. package/es/tree/style/index.css +22 -15
  42. package/es/tree/style/index.less +33 -18
  43. package/es/tree/tree.d.ts +1 -0
  44. package/es/tree/tree.js +29 -13
  45. package/es/tree/treeHooks.d.ts +2 -2
  46. package/es/tree/treeHooks.js +11 -6
  47. package/es/tree/treeNode.d.ts +2 -3
  48. package/es/tree/treeNode.js +6 -5
  49. package/es/tree/utils/treeUtils.d.ts +2 -2
  50. package/es/tree/utils/treeUtils.js +5 -6
  51. package/es/tree-select/interface.d.ts +1 -0
  52. package/es/tree-select/style/index.css +7 -4
  53. package/es/tree-select/style/index.less +12 -4
  54. package/es/tree-select/style/token.less +1 -0
  55. package/es/tree-select/tree-select.js +8 -4
  56. package/lib/cascader/cascader.js +8 -4
  57. package/lib/cascader/style/index.css +5 -2
  58. package/lib/cascader/style/index.less +4 -2
  59. package/lib/city-picker/city-picker.js +1 -1
  60. package/lib/clipboard/clipboard.d.ts +21 -0
  61. package/lib/clipboard/clipboard.js +121 -0
  62. package/lib/clipboard/index.d.ts +4 -0
  63. package/lib/clipboard/index.js +11 -0
  64. package/lib/clipboard/style/css.js +4 -0
  65. package/lib/clipboard/style/index.css +190 -0
  66. package/lib/clipboard/style/index.d.ts +2 -0
  67. package/lib/clipboard/style/index.js +4 -0
  68. package/lib/clipboard/style/index.less +32 -0
  69. package/lib/clipboard/style/mixin.less +39 -0
  70. package/lib/clipboard/style/token.less +52 -0
  71. package/lib/clipboard/util.d.ts +13 -0
  72. package/lib/clipboard/util.js +204 -0
  73. package/lib/config-provider/compDefaultProps.d.ts +5 -0
  74. package/lib/config-provider/compDefaultProps.js +5 -0
  75. package/lib/index.d.ts +1 -0
  76. package/lib/index.js +7 -0
  77. package/lib/input-number/inputNumber.js +20 -14
  78. package/lib/input-number/useSelectionRange.d.ts +2 -1
  79. package/lib/input-number/useSelectionRange.js +3 -2
  80. package/lib/message/content.js +1 -4
  81. package/lib/select/interface.d.ts +1 -0
  82. package/lib/select/select.js +3 -8
  83. package/lib/select/style/index.css +7 -4
  84. package/lib/select/style/index.less +12 -4
  85. package/lib/select/style/token.less +1 -0
  86. package/lib/style/components.less +1 -0
  87. package/lib/tree/style/index.css +22 -15
  88. package/lib/tree/style/index.less +33 -18
  89. package/lib/tree/tree.d.ts +1 -0
  90. package/lib/tree/tree.js +28 -12
  91. package/lib/tree/treeHooks.d.ts +2 -2
  92. package/lib/tree/treeHooks.js +10 -5
  93. package/lib/tree/treeNode.d.ts +2 -3
  94. package/lib/tree/treeNode.js +6 -5
  95. package/lib/tree/utils/treeUtils.d.ts +2 -2
  96. package/lib/tree/utils/treeUtils.js +5 -6
  97. package/lib/tree-select/interface.d.ts +1 -0
  98. package/lib/tree-select/style/index.css +7 -4
  99. package/lib/tree-select/style/index.less +12 -4
  100. package/lib/tree-select/style/token.less +1 -0
  101. package/lib/tree-select/tree-select.js +10 -6
  102. package/package.json +1 -1
package/es/tree/tree.js CHANGED
@@ -6,6 +6,7 @@ import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable
6
6
  import _Set from "@babel/runtime-corejs3/core-js-stable/set";
7
7
  import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
8
8
  import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
9
+ import _includesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/includes";
9
10
  import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
10
11
  var __rest = this && this.__rest || function (s, e) {
11
12
  var t = {};
@@ -15,7 +16,7 @@ var __rest = this && this.__rest || function (s, e) {
15
16
  }
16
17
  return t;
17
18
  };
18
- import React, { useContext, useCallback, useEffect } from 'react';
19
+ import React, { useContext, useCallback, useEffect, useMemo } from 'react';
19
20
  import classNames from 'classnames';
20
21
  import cloneDeep from 'lodash/cloneDeep';
21
22
  import ConfigContext from '../config-provider/ConfigContext';
@@ -26,6 +27,7 @@ import { getChecked, getHalfChecked, addKeys, flattenAll, delKey, getFilterData,
26
27
  import { useChecked, useExpand, useSelect } from './treeHooks';
27
28
  import isBoolean from 'lodash/isBoolean';
28
29
  var InternalTree = /*#__PURE__*/React.forwardRef(function (props, ref) {
30
+ var _classNames;
29
31
  var _useContext = useContext(ConfigContext),
30
32
  getPrefixCls = _useContext.getPrefixCls,
31
33
  prefixCls = _useContext.prefixCls,
@@ -79,9 +81,10 @@ var InternalTree = /*#__PURE__*/React.forwardRef(function (props, ref) {
79
81
  onlyExpandOnClickIcon = _TreeProps$onlyExpand === void 0 ? false : _TreeProps$onlyExpand,
80
82
  loadData = TreeProps.loadData,
81
83
  notFoundContent = TreeProps.notFoundContent,
82
- others = __rest(TreeProps, ["prefixCls", "treeData", "virtual", "showIcon", "switcherIcon", "icon", "checkable", "checkStrictly", "disabled", "draggable", "scrollToKey", "expandedKeys", "checkedKeys", "defaultExpandRoot", "defaultExpandAll", "defaultExpandParent", "defaultExpandedKeys", "defaultCheckedKeys", "defaultSelectedKeys", "height", "onCheck", "onExpand", "onDragStart", "onDragOver", "onDragLeave", "onDragEnter", "onDragEnd", "onDrop", "onSelect", "selectedKeys", "setTreeNodeStyle", "setTreeNodeClassName", "estimatedItemSize", "style", "className", "filterTreeNode", "filterValue", "expandOnClickNode", "onlyExpandOnClickIcon", "loadData", "notFoundContent"]);
84
+ showLine = TreeProps.showLine,
85
+ others = __rest(TreeProps, ["prefixCls", "treeData", "virtual", "showIcon", "switcherIcon", "icon", "checkable", "checkStrictly", "disabled", "draggable", "scrollToKey", "expandedKeys", "checkedKeys", "defaultExpandRoot", "defaultExpandAll", "defaultExpandParent", "defaultExpandedKeys", "defaultCheckedKeys", "defaultSelectedKeys", "height", "onCheck", "onExpand", "onDragStart", "onDragOver", "onDragLeave", "onDragEnter", "onDragEnd", "onDrop", "onSelect", "selectedKeys", "setTreeNodeStyle", "setTreeNodeClassName", "estimatedItemSize", "style", "className", "filterTreeNode", "filterValue", "expandOnClickNode", "onlyExpandOnClickIcon", "loadData", "notFoundContent", "showLine"]);
83
86
  var treePrefixCls = getPrefixCls(prefixCls, 'tree', customPrefixcls); // 树样式前缀
84
- var treeNodeClassName = classNames(className, _defineProperty({}, "".concat(treePrefixCls), true));
87
+ var treeNodeClassName = classNames(className, (_classNames = {}, _defineProperty(_classNames, "".concat(treePrefixCls), true), _defineProperty(_classNames, "".concat(treePrefixCls, "-show-line"), showLine), _classNames));
85
88
  var treeRootClassName = "".concat(treePrefixCls, "-root");
86
89
  var estimatedItemSize = innerEstimatedItemSize; // 节点高度
87
90
  var _React$useMemo = React.useMemo(function () {
@@ -125,17 +128,21 @@ var InternalTree = /*#__PURE__*/React.forwardRef(function (props, ref) {
125
128
  _React$useState12 = _slicedToArray(_React$useState11, 2),
126
129
  loadingKeys = _React$useState12[0],
127
130
  setLoadingKeys = _React$useState12[1];
128
- var _React$useState13 = React.useState([]),
131
+ var _React$useState13 = React.useState('NONE'),
129
132
  _React$useState14 = _slicedToArray(_React$useState13, 2),
130
- searchExpandedKeys = _React$useState14[0],
131
- setSearchExpandedKeys = _React$useState14[1];
133
+ searchStatus = _React$useState14[0],
134
+ setSearchStatus = _React$useState14[1];
132
135
  var isSearching = React.useMemo(function () {
133
136
  return typeof filterTreeNode === 'function' && !!filterValue;
134
137
  }, [filterValue]);
135
138
  useEffect(function () {
136
- setSearchExpandedKeys([]);
139
+ if (isSearching) {
140
+ setSearchStatus('SEARCH_START');
141
+ } else {
142
+ setSearchStatus('NONE');
143
+ }
137
144
  }, [filterValue]);
138
- var _useExpand = useExpand(flattenAllData, expandedKeysProps, defaultExpandedKeys, defaultExpandAll, defaultExpandRoot, defaultExpandParent, scrollKey, isInit, filterTreeNode, isSearching, keysData, searchExpandedKeys),
145
+ var _useExpand = useExpand(flattenAllData, expandedKeysProps, defaultExpandedKeys, defaultExpandAll, defaultExpandRoot, defaultExpandParent, scrollKey, isInit, filterTreeNode, isSearching, keysData, searchStatus),
139
146
  _useExpand2 = _slicedToArray(_useExpand, 2),
140
147
  expandedKeys = _useExpand2[0],
141
148
  setExpandedKeys = _useExpand2[1];
@@ -220,12 +227,9 @@ var InternalTree = /*#__PURE__*/React.forwardRef(function (props, ref) {
220
227
  node: node,
221
228
  expanded: expanded
222
229
  });
223
- if (isSearching) {
224
- var newSearchExpandedKeys = expanded ? addKeys(searchExpandedKeys, [key]) : delKey(searchExpandedKeys, [key]);
225
- setSearchExpandedKeys(newSearchExpandedKeys);
226
- }
227
230
  setScrollKey(undefined);
228
231
  setIsInit(false);
232
+ setSearchStatus('SEARCH_DONE');
229
233
  if (expanded && loadData) {
230
234
  handleNodeLoad(loadedKeys, loadingKeys, node);
231
235
  }
@@ -370,6 +374,16 @@ var InternalTree = /*#__PURE__*/React.forwardRef(function (props, ref) {
370
374
  useEffect(function () {
371
375
  setCheckedKeys(checkedKeys);
372
376
  }, [checkedKeys, setCheckedKeys]);
377
+ var isSelectedNodeChildrenKey = function isSelectedNodeChildrenKey() {
378
+ var parentKeys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
379
+ var key = Array.isArray(selectedKeys) ? selectedKeys === null || selectedKeys === void 0 ? void 0 : selectedKeys[0] : selectedKeys;
380
+ return _includesInstanceProperty(parentKeys).call(parentKeys, key);
381
+ };
382
+ var seletedKeyLevel = useMemo(function () {
383
+ var _a;
384
+ var key = Array.isArray(selectedKeys) ? selectedKeys === null || selectedKeys === void 0 ? void 0 : selectedKeys[0] : selectedKeys;
385
+ return (_a = keysData === null || keysData === void 0 ? void 0 : keysData[key]) === null || _a === void 0 ? void 0 : _a.level;
386
+ }, [keysData, selectedKeys]);
373
387
  var renderTreeNode = function renderTreeNode(item) {
374
388
  var checked = getChecked(checkedKeys, item.key);
375
389
  var indeterminate = getHalfChecked(halfCheckedKeys, item.key);
@@ -404,9 +418,11 @@ var InternalTree = /*#__PURE__*/React.forwardRef(function (props, ref) {
404
418
  item.onlyExpandOnClickIcon = onlyExpandOnClickIcon;
405
419
  item.loading = loadingKeys.has(item.key) && !loadedKeys.has(item.key);
406
420
  item.loadData = loadData;
421
+ item.isActiveLine = showLine && isSelectedNodeChildrenKey(item.pathParentKeys);
407
422
  return /*#__PURE__*/React.createElement(TreeNode, _extends({}, item, {
408
423
  key: item.key,
409
- ref: treeNodeRef
424
+ ref: treeNodeRef,
425
+ activeLevel: seletedKeyLevel
410
426
  }));
411
427
  };
412
428
  return /*#__PURE__*/React.createElement("div", _extends({
@@ -1,9 +1,9 @@
1
- import { TreeNodeData, KeysDataType } from './tree';
1
+ import { TreeNodeData, KeysDataType, SearchStatus } from './tree';
2
2
  import React from 'react';
3
3
  export declare const useViewportHeight: (height: number, listRef: React.RefObject<HTMLElement>) => number[];
4
4
  export declare const useVisibleDataMemo: (virtual: boolean, filterData: TreeNodeData[], viewportHeight: number, estimatedItemSize: number, start: number) => TreeNodeData[][];
5
5
  export declare const usePlantomHeightEffect: (plantomRef: React.RefObject<HTMLElement>, filterData: TreeNodeData[], estimatedItemSize: number) => void;
6
6
  export declare const useChecked: (checkStrictly: boolean, checkedKeysProps: string[], defaultCheckedKeys: string[], _flattenAllData: any[], _maxLevel: number, checkable: boolean, keysData: KeysDataType) => readonly [string[], string[], React.Dispatch<React.SetStateAction<string[]>>, React.Dispatch<React.SetStateAction<string[]>>];
7
- export declare const useExpand: (flattenAllData: any[], expandedKeysProps: string[], defaultExpandedKeys: string[], defaultExpandAll: boolean, defaultExpandRoot: boolean, defaultExpandParent: boolean, scrollKey: string, isInit: boolean, filterTreeNode: FunctionConstructor, isSearching: boolean, keysData: KeysDataType, searchExpandedKeys: string[]) => readonly [string[], React.Dispatch<React.SetStateAction<string[]>>];
7
+ export declare const useExpand: (flattenAllData: any[], expandedKeysProps: string[], defaultExpandedKeys: string[], defaultExpandAll: boolean, defaultExpandRoot: boolean, defaultExpandParent: boolean, scrollKey: string, isInit: boolean, filterTreeNode: FunctionConstructor, isSearching: boolean, keysData: KeysDataType, searchStatus: SearchStatus) => readonly [string[], React.Dispatch<React.SetStateAction<string[]>>];
8
8
  export declare const useScrollToKey: (scrollKey: string, index: number, estimatedItemSize: number, scrollRef: any, viewportHeight: number, treeNodePrefixCls: string) => void;
9
9
  export declare const useSelect: (selectedKeysProps: string[], defaultSelectedKeys: string[]) => readonly [string[], React.Dispatch<React.SetStateAction<string[]>>];
@@ -1,7 +1,7 @@
1
1
  import _slicedToArray from "@babel/runtime-corejs3/helpers/slicedToArray";
2
2
  import _sliceInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/slice";
3
3
  import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
4
- import React, { useEffect, useState } from 'react';
4
+ import React, { useEffect, useState, useRef } from 'react';
5
5
  import { getInitCheckededKeys, getDataCheckededStateStrictly, getInitExpandedKeys, getPos, getAllParentKeys } from './utils/treeUtils';
6
6
  export var useViewportHeight = function useViewportHeight(height, listRef) {
7
7
  var _React$useState = React.useState(0),
@@ -59,22 +59,22 @@ export var useChecked = function useChecked(checkStrictly, checkedKeysProps, def
59
59
  }, [nextHalfCheckedKeys]);
60
60
  return [checkedKeys, halfCheckedKeys, setCheckedKeys, setHalfCheckedKeys];
61
61
  };
62
- export var useExpand = function useExpand(flattenAllData, expandedKeysProps, defaultExpandedKeys, defaultExpandAll, defaultExpandRoot, defaultExpandParent, scrollKey, isInit, filterTreeNode, isSearching, keysData, searchExpandedKeys) {
62
+ export var useExpand = function useExpand(flattenAllData, expandedKeysProps, defaultExpandedKeys, defaultExpandAll, defaultExpandRoot, defaultExpandParent, scrollKey, isInit, filterTreeNode, isSearching, keysData, searchStatus) {
63
63
  var expandScrollkeys = [];
64
64
  if (scrollKey) {
65
65
  var pos = getPos(flattenAllData, scrollKey);
66
66
  expandScrollkeys = getAllParentKeys(flattenAllData, pos);
67
67
  }
68
68
  var initialExpandedKeys = React.useMemo(function () {
69
- return getInitExpandedKeys(flattenAllData, expandedKeysProps, defaultExpandedKeys, defaultExpandAll, defaultExpandRoot, defaultExpandParent, expandScrollkeys, filterTreeNode, isSearching, keysData, searchExpandedKeys, isInit);
70
- }, [flattenAllData, expandedKeysProps, defaultExpandedKeys, defaultExpandAll, defaultExpandRoot, defaultExpandParent, scrollKey, filterTreeNode, isSearching, keysData, searchExpandedKeys, isInit]);
69
+ return getInitExpandedKeys(flattenAllData, expandedKeysProps, defaultExpandedKeys, defaultExpandAll, defaultExpandRoot, defaultExpandParent, expandScrollkeys, filterTreeNode, isSearching, keysData, isInit, searchStatus);
70
+ }, [flattenAllData, expandedKeysProps, defaultExpandedKeys, defaultExpandAll, defaultExpandRoot, defaultExpandParent, scrollKey, filterTreeNode, isSearching, keysData, isInit, searchStatus]);
71
71
  var _React$useState7 = React.useState(initialExpandedKeys),
72
72
  _React$useState8 = _slicedToArray(_React$useState7, 2),
73
73
  expandedKeys = _React$useState8[0],
74
74
  setExpandedKeys = _React$useState8[1];
75
75
  React.useEffect(function () {
76
76
  setExpandedKeys(initialExpandedKeys);
77
- }, [flattenAllData, expandedKeysProps, searchExpandedKeys, defaultExpandAll, defaultExpandedKeys, defaultExpandRoot, defaultExpandParent, scrollKey]);
77
+ }, [flattenAllData, expandedKeysProps, defaultExpandAll, defaultExpandedKeys, defaultExpandRoot, defaultExpandParent, scrollKey, searchStatus]);
78
78
  return [expandedKeys, setExpandedKeys];
79
79
  };
80
80
  export var useScrollToKey = function useScrollToKey(scrollKey, index, estimatedItemSize, scrollRef, viewportHeight, treeNodePrefixCls) {
@@ -115,8 +115,13 @@ export var useSelect = function useSelect(selectedKeysProps, defaultSelectedKeys
115
115
  _useState2 = _slicedToArray(_useState, 2),
116
116
  selectedKeys = _useState2[0],
117
117
  setSelectedKeys = _useState2[1];
118
+ var mounting = useRef(true);
118
119
  useEffect(function () {
119
- selectedKeysProps && setSelectedKeys(selectedKeysProps);
120
+ if (mounting.current) {
121
+ mounting.current = false;
122
+ return;
123
+ }
124
+ setSelectedKeys(selectedKeysProps);
120
125
  }, [selectedKeysProps]);
121
126
  return [selectedKeys, setSelectedKeys];
122
127
  };
@@ -10,9 +10,8 @@ export interface TreeNodeProps {
10
10
  draggable?: boolean;
11
11
  disableCheckbox?: boolean;
12
12
  icon?: React.ReactNode | ((props: any) => React.ReactNode);
13
- showLine?: boolean | {
14
- showLeafIcon: boolean;
15
- };
13
+ isActiveLine?: boolean;
14
+ activeLevel?: number;
16
15
  showIcon?: boolean;
17
16
  selected?: boolean;
18
17
  style?: Map<string, string>;
@@ -41,7 +41,8 @@ var TreeNode = /*#__PURE__*/React.forwardRef(function (props) {
41
41
  hasChildNode = TreeNodeProps.hasChildNode,
42
42
  expand = TreeNodeProps.expand,
43
43
  title = TreeNodeProps.title,
44
- showLine = TreeNodeProps.showLine,
44
+ isActiveLine = TreeNodeProps.isActiveLine,
45
+ activeLevel = TreeNodeProps.activeLevel,
45
46
  showIcon = TreeNodeProps.showIcon,
46
47
  selected = TreeNodeProps.selected,
47
48
  setDragNode = TreeNodeProps.setDragNode,
@@ -62,7 +63,7 @@ var TreeNode = /*#__PURE__*/React.forwardRef(function (props) {
62
63
  onDragEnd = TreeNodeProps.onDragEnd,
63
64
  onDrop = TreeNodeProps.onDrop,
64
65
  onSelect = TreeNodeProps.onSelect,
65
- others = __rest(TreeNodeProps, ["nodeKey", "prefixCls", "selectable", "checkable", "className", "icon", "switcherIcon", "disabled", "draggable", "pos", "checked", "level", "getDragNode", "hasChildNode", "expand", "title", "showLine", "showIcon", "selected", "setDragNode", "style", "indeterminate", "estimatedItemSize", "dragOver", "dropPosition", "expandOnClickNode", "onlyExpandOnClickIcon", "loading", "onExpand", "onCheck", "onDragStart", "onDragOver", "onDragLeave", "onDragEnter", "onDragEnd", "onDrop", "onSelect"]);
66
+ others = __rest(TreeNodeProps, ["nodeKey", "prefixCls", "selectable", "checkable", "className", "icon", "switcherIcon", "disabled", "draggable", "pos", "checked", "level", "getDragNode", "hasChildNode", "expand", "title", "isActiveLine", "activeLevel", "showIcon", "selected", "setDragNode", "style", "indeterminate", "estimatedItemSize", "dragOver", "dropPosition", "expandOnClickNode", "onlyExpandOnClickIcon", "loading", "onExpand", "onCheck", "onDragStart", "onDragOver", "onDragLeave", "onDragEnter", "onDragEnd", "onDrop", "onSelect"]);
66
67
  var nodeData = React.useMemo(function () {
67
68
  return _extends({
68
69
  selectable: selectable,
@@ -133,12 +134,11 @@ var TreeNode = /*#__PURE__*/React.forwardRef(function (props) {
133
134
  return icon;
134
135
  };
135
136
  var indent = function indent() {
136
- var _classNames;
137
137
  var indentArr = [];
138
- var className = classNames((_classNames = {}, _defineProperty(_classNames, "".concat(treeNodePrefixCls, "-indent"), true), _defineProperty(_classNames, "".concat(treeNodePrefixCls, "-indent-line"), !!showLine), _classNames));
139
138
  for (var i = 0; i < level; i++) {
139
+ var _classNames;
140
140
  indentArr.push( /*#__PURE__*/React.createElement("span", {
141
- className: className,
141
+ className: classNames((_classNames = {}, _defineProperty(_classNames, "".concat(treeNodePrefixCls, "-indent"), true), _defineProperty(_classNames, "".concat(treeNodePrefixCls, "-indent-active"), !!isActiveLine && i === activeLevel), _classNames)),
142
142
  key: i,
143
143
  style: {
144
144
  height: "".concat(estimatedItemSize)
@@ -244,6 +244,7 @@ var TreeNode = /*#__PURE__*/React.forwardRef(function (props) {
244
244
  }, [expandOnClickNode, handleExpandIconClick, handleSelect, onlyExpandOnClickIcon]);
245
245
  var handleDragStart = React.useCallback(function (e) {
246
246
  if (!draggable) return;
247
+ e.target.classList.add("".concat(treeNodePrefixCls, "-dragging"));
247
248
  setDragNode(nodeData);
248
249
  onDragStart && onDragStart(e, props);
249
250
  }, [draggable, setDragNode, nodeData, onDragStart, props]);
@@ -1,4 +1,4 @@
1
- import { TreeNodeData, KeysDataType } from '../tree';
1
+ import { TreeNodeData, KeysDataType, SearchStatus } from '../tree';
2
2
  /**
3
3
  * 打平所有数组,并添加pos位置信息,
4
4
  * 方便根据expandKeys等计算节点的expand,checkedKeys计算节点checked状态
@@ -60,6 +60,6 @@ export declare const getDataCheckededStateStrictly: (checkedKeys: string[]) => {
60
60
  };
61
61
  export declare const delKey: (prevKeys: string[], delKeys: string[]) => never[] & string[];
62
62
  export declare const getAllNodeKeys: (data: any[]) => string[];
63
- export declare const getInitExpandedKeys: (data: any[], expandedKeys: string[], defaultExpandedKeys: string[], defaultExpandAll: boolean, defaultExpandRoot: boolean, defaultExpandParent: boolean, expandScrollkeys: string[] | undefined, filterTreeNode: FunctionConstructor, isSearching: boolean, keysData: KeysDataType, searchExpandedKeys: string[], isInit: boolean) => string[];
63
+ export declare const getInitExpandedKeys: (data: any[], expandedKeys: string[], defaultExpandedKeys: string[], defaultExpandAll: boolean, defaultExpandRoot: boolean, defaultExpandParent: boolean, expandScrollkeys: string[] | undefined, filterTreeNode: FunctionConstructor, isSearching: boolean, keysData: KeysDataType, isInit: boolean, searchStatus: SearchStatus) => string[];
64
64
  export declare const getExpandedKeys: (expandedKeys: string[], expandScrollkeys?: string[]) => string[];
65
65
  export declare const calcDropPosition: (event: React.MouseEvent, dropNode: HTMLElement) => 0 | 1 | -1;
@@ -583,8 +583,8 @@ export var getInitExpandedKeys = function getInitExpandedKeys(data, expandedKeys
583
583
  var filterTreeNode = arguments.length > 7 ? arguments[7] : undefined;
584
584
  var isSearching = arguments.length > 8 ? arguments[8] : undefined;
585
585
  var keysData = arguments.length > 9 ? arguments[9] : undefined;
586
- var searchExpandedKeys = arguments.length > 10 ? arguments[10] : undefined;
587
- var isInit = arguments.length > 11 ? arguments[11] : undefined;
586
+ var isInit = arguments.length > 10 ? arguments[10] : undefined;
587
+ var searchStatus = arguments.length > 11 ? arguments[11] : undefined;
588
588
  var keys = (expandedKeys === null || expandedKeys === void 0 ? void 0 : _concatInstanceProperty(expandedKeys).call(expandedKeys, expandScrollkeys)) || (defaultExpandedKeys === null || defaultExpandedKeys === void 0 ? void 0 : _concatInstanceProperty(defaultExpandedKeys).call(defaultExpandedKeys, expandScrollkeys)) || [];
589
589
  if (isInit) {
590
590
  if (defaultExpandAll) {
@@ -605,11 +605,10 @@ export var getInitExpandedKeys = function getInitExpandedKeys(data, expandedKeys
605
605
  }
606
606
  }
607
607
  }
608
- if (isSearching) {
609
- var _context6;
610
- keys = _concatInstanceProperty(_context6 = []).call(_context6, _toConsumableArray(searchExpandedKeys), _toConsumableArray(getAllFilterKeys(data, filterTreeNode, keysData).filterExpandKeys));
608
+ if (isSearching && searchStatus === 'SEARCH_START') {
609
+ keys = _toConsumableArray(getAllFilterKeys(data, filterTreeNode, keysData).filterExpandKeys);
611
610
  }
612
- return _Array$from(new _Set(_toConsumableArray(keys)));
611
+ return keys;
613
612
  };
614
613
  export var getExpandedKeys = function getExpandedKeys(expandedKeys) {
615
614
  var expandScrollkeys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
@@ -56,6 +56,7 @@ export interface ITreeSelectProps<T extends TreeSelectValue> extends AbstractSel
56
56
  defaultValue?: T;
57
57
  mode?: Mode;
58
58
  autoFocus?: boolean;
59
+ status?: 'error';
59
60
  onlyExpandOnClickIcon?: boolean;
60
61
  onChange?: (value: T, treeNode: TreeNodeData) => void;
61
62
  onSelect?: (value: T extends (infer I)[] ? I : T, { checked, node, event }: any) => void;
@@ -163,7 +163,7 @@
163
163
  .kd-tree-select-icon-clear:hover {
164
164
  color: var(--kd-c-tree-select-color-border-hover, var(--kd-g-color-theme, #5582f3));
165
165
  }
166
- .kd-tree-select-focused {
166
+ .kd-tree-select-focused:not(.kd-tree-select-error) {
167
167
  border-color: var(--kd-c-tree-select-color-border-foucs, var(--kd-g-color-theme, #5582f3)) !important;
168
168
  }
169
169
  .kd-tree-select-placeholder {
@@ -181,7 +181,7 @@
181
181
  .kd-tree-select-underline {
182
182
  border-bottom: 1px solid var(--kd-c-tree-select-color-border, var(--kd-g-color-input, #999));
183
183
  }
184
- .kd-tree-select-underline:hover:not(.kd-tree-select-multiple-disabled):not(.kd-tree-select-single-disabled) {
184
+ .kd-tree-select-underline:hover:not(.kd-tree-select-multiple-disabled):not(.kd-tree-select-single-disabled):not( .kd-tree-select-error) {
185
185
  border-bottom: 1px solid var(--kd-c-tree-select-color-border-hover, var(--kd-g-color-theme, #5582f3));
186
186
  }
187
187
  .kd-tree-select-bordered {
@@ -189,7 +189,7 @@
189
189
  padding-left: var(--kd-c-tree-select-bordered-spacing-padding-left, 8px) !important;
190
190
  border-radius: var(--kd-c-tree-select-bordered-radius-border, 2px);
191
191
  }
192
- .kd-tree-select-bordered:hover:not(.kd-tree-select-multiple-disabled):not(.kd-tree-select-single-disabled) {
192
+ .kd-tree-select-bordered:hover:not(.kd-tree-select-multiple-disabled):not(.kd-tree-select-single-disabled):not( .kd-tree-select-error) {
193
193
  border: 1px solid var(--kd-c-tree-select-color-border-hover, var(--kd-g-color-theme, #5582f3));
194
194
  }
195
195
  .kd-tree-select-bordered .kd-tree-select-suffix {
@@ -312,7 +312,7 @@
312
312
  white-space: nowrap;
313
313
  text-overflow: ellipsis;
314
314
  }
315
- .kd-tree-select .kd-tree-select-single-focused {
315
+ .kd-tree-select .kd-tree-select-single-focused:not(.kd-tree-select-error) {
316
316
  border-color: var(--kd-c-tree-select-color-border-foucs, var(--kd-g-color-theme, #5582f3)) !important;
317
317
  }
318
318
  .kd-tree-select .kd-tree-select-single-disabled {
@@ -495,6 +495,9 @@
495
495
  color: var(--kd-c-tree-select-footer-color-text-selected, #0e5fd8);
496
496
  padding: 0 2px;
497
497
  }
498
+ .kd-tree-select-error:not(.kd-tree-select-single-disabled):not(.kd-tree-select-multiple-disabled) {
499
+ border-color: var(--kd-c-tree-select-color-error, var(--kd-g-color-error, #fb2323));
500
+ }
498
501
  .kd-tree-select.topLeft.hidden,
499
502
  .kd-tree-select.bottomLeft.hidden,
500
503
  .kd-tree-select.topRight.hidden,
@@ -59,7 +59,7 @@
59
59
  }
60
60
  }
61
61
 
62
- &-focused {
62
+ &-focused:not(.@{tree-select-prefix-cls}-error) {
63
63
  .focusColor();
64
64
  }
65
65
  &-placeholder {
@@ -78,7 +78,9 @@
78
78
 
79
79
  &-underline {
80
80
  border-bottom: 1px solid @tree-select-g-color-border;
81
- &:hover:not(.@{tree-select-prefix-cls}-multiple-disabled):not(.@{tree-select-prefix-cls}-single-disabled) {
81
+ &:hover:not(.@{tree-select-prefix-cls}-multiple-disabled):not(.@{tree-select-prefix-cls}-single-disabled):not(
82
+ .@{tree-select-prefix-cls}-error
83
+ ) {
82
84
  border-bottom: 1px solid @tree-select-g-color-border-hover;
83
85
  }
84
86
  }
@@ -87,7 +89,9 @@
87
89
  border: 1px solid @tree-select-border-g-color-border;
88
90
  padding-left: @tree-select-bordered !important;
89
91
  border-radius: @tree-select-border-radius-border;
90
- &:hover:not(.@{tree-select-prefix-cls}-multiple-disabled):not(.@{tree-select-prefix-cls}-single-disabled) {
92
+ &:hover:not(.@{tree-select-prefix-cls}-multiple-disabled):not(.@{tree-select-prefix-cls}-single-disabled):not(
93
+ .@{tree-select-prefix-cls}-error
94
+ ) {
91
95
  border: 1px solid @tree-select-g-color-border-hover;
92
96
  }
93
97
 
@@ -206,7 +210,7 @@
206
210
  .over();
207
211
  }
208
212
  }
209
- &-focused {
213
+ &-focused:not(.@{tree-select-prefix-cls}-error) {
210
214
  .focusColor();
211
215
  }
212
216
  &-disabled {
@@ -383,6 +387,10 @@
383
387
  }
384
388
  }
385
389
 
390
+ &-error:not(.@{tree-select-prefix-cls}-single-disabled):not(.@{tree-select-prefix-cls}-multiple-disabled) {
391
+ border-color: @tree-select-error-color;
392
+ }
393
+
386
394
  &.topLeft.hidden,
387
395
  &.bottomLeft.hidden,
388
396
  &.topRight.hidden,
@@ -22,6 +22,7 @@
22
22
  @tree-select-single-color-text: var(~'@{tree-select-custom-prefix}-single-color-text', @color-text-primary);
23
23
  @tree-select-clear-color: var(~'@{tree-select-custom-prefix}-icon-clear-color-text', #d9d9d9);
24
24
  @tree-select-clear-color-hover: var(~'@{tree-select-custom-prefix}-icon-clear-color-text-hover', #999);
25
+ @tree-select-error-color: var(~'@{tree-select-custom-prefix}-color-error', @color-error);
25
26
 
26
27
  // font
27
28
  @tree-select-list-font-size: var(~'@{tree-select-custom-prefix}-dropdown-font-size', 12px); // 下拉列表文字大小
@@ -1,4 +1,3 @@
1
- import _typeof from "@babel/runtime-corejs3/helpers/typeof";
2
1
  import _defineProperty from "@babel/runtime-corejs3/helpers/defineProperty";
3
2
  import _slicedToArray from "@babel/runtime-corejs3/helpers/slicedToArray";
4
3
  import _toConsumableArray from "@babel/runtime-corejs3/helpers/toConsumableArray";
@@ -98,7 +97,8 @@ var InternalTreeSelect = function InternalTreeSelect(props, ref) {
98
97
  onCheck = treeSelectProps.onCheck,
99
98
  dropdownRender = treeSelectProps.dropdownRender,
100
99
  onlyExpandOnClickIcon = treeSelectProps.onlyExpandOnClickIcon,
101
- listHeight = treeSelectProps.listHeight;
100
+ listHeight = treeSelectProps.listHeight,
101
+ status = treeSelectProps.status;
102
102
  var isMultiple = mode === 'multiple'; // 是否多选
103
103
  var _useMergedState = useMergedState(isMultiple ? [] : undefined, {
104
104
  value: value,
@@ -154,7 +154,7 @@ var InternalTreeSelect = function InternalTreeSelect(props, ref) {
154
154
  // 下拉列表框样式
155
155
  var dropDownCls = classNames(dropdownClassName, _defineProperty({}, "".concat(selectPrefixCls, "-dropdown"), true));
156
156
  // 多选,单选公共样式
157
- 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));
157
+ 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), _defineProperty(_classNames4, "".concat(selectPrefixCls, "-error"), status === 'error'), _classNames4));
158
158
  useEffect(function () {
159
159
  var arr = [];
160
160
  if (isMultiple) {
@@ -173,7 +173,8 @@ var InternalTreeSelect = function InternalTreeSelect(props, ref) {
173
173
  if (TreeMap.has(initValue)) {
174
174
  arr.push(TreeMap.get(initValue));
175
175
  } else {
176
- _typeof(initValue) !== undefined && arr.push({
176
+ ;
177
+ (initValue !== null && initValue !== void 0 ? initValue : '') !== '' && arr.push({
177
178
  key: initValue,
178
179
  title: initValue
179
180
  });
@@ -353,6 +354,9 @@ var InternalTreeSelect = function InternalTreeSelect(props, ref) {
353
354
  (_a = searchRef.current) === null || _a === void 0 ? void 0 : _a.focus();
354
355
  }
355
356
  }, [showSearch, autoFocus, disabled]);
357
+ useEffect(function () {
358
+ setSelectedKeys(initValue);
359
+ }, [initValue]);
356
360
  // 渲染下拉列表框
357
361
  var renderContent = function renderContent() {
358
362
  var dropDownStyle = _extends({
@@ -83,6 +83,7 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
83
83
  var prefixCls = getPrefixCls(pkgPrefixCls, 'cascader', customPrefixcls);
84
84
  var mergeRef = (0, _react.useRef)();
85
85
  var inputRef = (0, _react.useRef)();
86
+ var suffixRef = (0, _react.useRef)(null);
86
87
  var wrapperRef = (0, _react.useRef)();
87
88
  var _useState = (0, _react.useState)(!!props.popperVisible || !!props.popupVisible || defaultPopupVisible),
88
89
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
@@ -212,10 +213,12 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
212
213
  };
213
214
  _react.default.useEffect(function () {
214
215
  var _a;
215
- (_a = wrapperRef.current) === null || _a === void 0 ? void 0 : _a.addEventListener('mouseup', handleMouseUp);
216
+ ;
217
+ (_a = (isMultiple ? suffixRef : wrapperRef).current) === null || _a === void 0 ? void 0 : _a.addEventListener('mouseup', handleMouseUp);
216
218
  return function () {
217
219
  var _a;
218
- (_a = wrapperRef.current) === null || _a === void 0 ? void 0 : _a.removeEventListener('mouseup', handleMouseUp);
220
+ ;
221
+ (_a = (isMultiple ? suffixRef : wrapperRef).current) === null || _a === void 0 ? void 0 : _a.removeEventListener('mouseup', handleMouseUp);
219
222
  };
220
223
  }, []);
221
224
  var labels = (0, _react.useMemo)(function () {
@@ -317,9 +320,10 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
317
320
  className: "".concat(prefixCls, "-tag-describe-content")
318
321
  }, "\u5171", currentOptions.length, "\u9879")) : null), /*#__PURE__*/_react.default.createElement("span", {
319
322
  className: "".concat(prefixCls, "-placeholder")
320
- }, !currentOptions.length && placeholder), /*#__PURE__*/_react.default.createElement("span", {
323
+ }, !currentOptions.length && placeholder)), /*#__PURE__*/_react.default.createElement("span", {
324
+ ref: suffixRef,
321
325
  className: "".concat(prefixCls, "-suffix")
322
- }, renderSuffix())));
326
+ }, renderSuffix()));
323
327
  };
324
328
  var renderSingle = function renderSingle() {
325
329
  var _classNames5;
@@ -276,9 +276,11 @@
276
276
  }
277
277
  .kd-cascader-bordered.kd-cascader-multiple .kd-cascader-suffix {
278
278
  right: 9px;
279
+ top: 50%;
280
+ -webkit-transform: translateY(-50%);
281
+ transform: translateY(-50%);
279
282
  }
280
283
  .kd-cascader-multiple {
281
- padding: 1px 28px 1px 0;
282
284
  -webkit-transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
283
285
  transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
284
286
  width: 100%;
@@ -291,7 +293,6 @@
291
293
  cursor: pointer;
292
294
  -webkit-box-sizing: border-box;
293
295
  box-sizing: border-box;
294
- overflow-y: auto;
295
296
  overflow-x: hidden;
296
297
  position: relative;
297
298
  border-bottom: 1px solid #d9d9d9;
@@ -311,6 +312,8 @@
311
312
  -ms-flex-wrap: wrap;
312
313
  flex-wrap: wrap;
313
314
  width: 100%;
315
+ padding: 1px 28px 1px 0;
316
+ overflow-y: auto;
314
317
  }
315
318
  .kd-cascader-placeholder {
316
319
  position: absolute;
@@ -180,11 +180,12 @@
180
180
 
181
181
  .@{kd-prefix}-cascader-suffix {
182
182
  right: 9px;
183
+ top: 50%;
184
+ transform: translateY(-50%);
183
185
  }
184
186
  }
185
187
 
186
188
  &-multiple {
187
- padding: 1px 28px 1px 0;
188
189
  transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
189
190
  width: 100%;
190
191
  min-height: 30px;
@@ -193,7 +194,6 @@
193
194
  display: flex;
194
195
  cursor: pointer;
195
196
  box-sizing: border-box;
196
- overflow-y: auto;
197
197
  overflow-x: hidden;
198
198
  position: relative;
199
199
  border-bottom: 1px solid #d9d9d9;
@@ -210,6 +210,8 @@
210
210
  align-items: center;
211
211
  flex-wrap: wrap;
212
212
  width: 100%;
213
+ padding: 1px 28px 1px 0;
214
+ overflow-y: auto;
213
215
  }
214
216
 
215
217
  &-placeholder {
@@ -201,7 +201,7 @@ var InternalSelect = function InternalSelect(props, ref) {
201
201
  if (disabled) return null;
202
202
  var suffixIcon = selectProps.suffixIcon;
203
203
  var arrowIconCls = (0, _classnames.default)((_classNames4 = {}, (0, _defineProperty2.default)(_classNames4, "".concat(selectPrefixCls, "-icon-arrow"), true), (0, _defineProperty2.default)(_classNames4, "".concat(selectPrefixCls, "-icon-arrow-up"), optionShow), (0, _defineProperty2.default)(_classNames4, "".concat(selectPrefixCls, "-icon-arrow-down"), !optionShow), (0, _defineProperty2.default)(_classNames4, "".concat(selectPrefixCls, "-icon-arrow-focus"), optionShow), _classNames4));
204
- var iconShow = allowClear && !disabled && ((initValue !== null && initValue !== void 0 ? initValue : '') !== '' || searchValue);
204
+ var iconShow = allowClear && !disabled && (initValue !== null && initValue !== void 0 ? initValue : '') !== '';
205
205
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, iconShow && /*#__PURE__*/_react.default.createElement("span", {
206
206
  onClick: handleReset,
207
207
  onMouseDown: function onMouseDown(e) {
@@ -0,0 +1,21 @@
1
+ import React from 'react';
2
+ export declare const ClipboardActions: ["copy", "cut"];
3
+ export declare type ClipboardAction = typeof ClipboardActions[number];
4
+ export declare const ClipboardSizes: ["large", "middle", "small"];
5
+ export declare type ClipboardSize = typeof ClipboardSizes[number];
6
+ export interface IClipboardProps {
7
+ action?: ClipboardAction;
8
+ content?: string;
9
+ children?: React.ReactNode;
10
+ className?: string;
11
+ disabled?: boolean;
12
+ icon?: React.ReactNode | false;
13
+ prefixCls?: string;
14
+ size?: ClipboardSize;
15
+ style?: Record<string, unknown>;
16
+ target?: () => HTMLElement | string;
17
+ onError?: (error: Error) => void;
18
+ onSuccess?: (content: string) => void;
19
+ }
20
+ declare const Clipboard: React.ForwardRefExoticComponent<IClipboardProps & React.RefAttributes<unknown>>;
21
+ export default Clipboard;