@kdcloudjs/kdesign 1.5.4 → 1.5.5

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 (73) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/dist/default-theme.js +4 -4
  3. package/dist/kdesign-complete.less +159 -85
  4. package/dist/kdesign.css +153 -83
  5. package/dist/kdesign.css.map +1 -1
  6. package/dist/kdesign.js +220 -151
  7. package/dist/kdesign.js.map +1 -1
  8. package/dist/kdesign.min.css +3 -3
  9. package/dist/kdesign.min.js +6 -6
  10. package/dist/kdesign.min.js.map +1 -1
  11. package/es/_utils/usePopper.js +17 -8
  12. package/es/alert/alert.js +2 -2
  13. package/es/alert/style/index.css +27 -11
  14. package/es/alert/style/index.less +24 -10
  15. package/es/alert/style/mixin.less +8 -2
  16. package/es/alert/style/token.less +16 -8
  17. package/es/config-provider/compDefaultProps.d.ts +1 -0
  18. package/es/config-provider/compDefaultProps.js +2 -1
  19. package/es/dropdown/style/index.css +13 -14
  20. package/es/dropdown/style/index.less +4 -5
  21. package/es/dropdown/style/token.less +6 -5
  22. package/es/radio/style/index.css +6 -0
  23. package/es/radio/style/index.less +8 -0
  24. package/es/search/style/index.css +3 -3
  25. package/es/spin/style/index.css +25 -26
  26. package/es/spin/style/index.less +18 -19
  27. package/es/spin/style/token.less +9 -3
  28. package/es/style/themes/default.less +3 -4
  29. package/es/timeline/style/index.css +22 -21
  30. package/es/timeline/style/index.less +2 -2
  31. package/es/timeline/style/token.less +4 -7
  32. package/es/tree/style/index.css +56 -7
  33. package/es/tree/style/index.less +26 -18
  34. package/es/tree/style/mixin.less +25 -1
  35. package/es/tree/style/token.less +6 -4
  36. package/es/tree/tree.d.ts +2 -0
  37. package/es/tree/tree.js +65 -11
  38. package/es/tree/treeHooks.js +0 -1
  39. package/es/tree/treeNode.d.ts +1 -0
  40. package/es/tree/treeNode.js +45 -49
  41. package/es/tree/utils/treeUtils.js +2 -2
  42. package/lib/_utils/usePopper.js +17 -8
  43. package/lib/alert/alert.js +2 -2
  44. package/lib/alert/style/index.css +27 -11
  45. package/lib/alert/style/index.less +24 -10
  46. package/lib/alert/style/mixin.less +8 -2
  47. package/lib/alert/style/token.less +16 -8
  48. package/lib/config-provider/compDefaultProps.d.ts +1 -0
  49. package/lib/config-provider/compDefaultProps.js +2 -1
  50. package/lib/dropdown/style/index.css +13 -14
  51. package/lib/dropdown/style/index.less +4 -5
  52. package/lib/dropdown/style/token.less +6 -5
  53. package/lib/radio/style/index.css +6 -0
  54. package/lib/radio/style/index.less +8 -0
  55. package/lib/search/style/index.css +3 -3
  56. package/lib/spin/style/index.css +25 -26
  57. package/lib/spin/style/index.less +18 -19
  58. package/lib/spin/style/token.less +9 -3
  59. package/lib/style/themes/default.less +3 -4
  60. package/lib/timeline/style/index.css +22 -21
  61. package/lib/timeline/style/index.less +2 -2
  62. package/lib/timeline/style/token.less +4 -7
  63. package/lib/tree/style/index.css +56 -7
  64. package/lib/tree/style/index.less +26 -18
  65. package/lib/tree/style/mixin.less +25 -1
  66. package/lib/tree/style/token.less +6 -4
  67. package/lib/tree/tree.d.ts +2 -0
  68. package/lib/tree/tree.js +67 -11
  69. package/lib/tree/treeHooks.js +0 -1
  70. package/lib/tree/treeNode.d.ts +1 -0
  71. package/lib/tree/treeNode.js +46 -48
  72. package/lib/tree/utils/treeUtils.js +2 -2
  73. package/package.json +1 -1
package/es/tree/tree.js CHANGED
@@ -2,11 +2,13 @@ import _extends from "@babel/runtime-corejs3/helpers/extends";
2
2
  import _toConsumableArray from "@babel/runtime-corejs3/helpers/toConsumableArray";
3
3
  import _slicedToArray from "@babel/runtime-corejs3/helpers/slicedToArray";
4
4
  import _defineProperty from "@babel/runtime-corejs3/helpers/defineProperty";
5
- import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
5
+ import _Set from "@babel/runtime-corejs3/core-js-stable/set";
6
6
  import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
7
+ import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
7
8
  import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
8
9
  import React, { useContext, useCallback, useEffect } from 'react';
9
10
  import classNames from 'classnames';
11
+ import cloneDeep from 'lodash/cloneDeep';
10
12
  import ConfigContext from '../config-provider/ConfigContext';
11
13
  import { getCompProps } from '../_utils';
12
14
  import TreeNode from './treeNode';
@@ -62,7 +64,9 @@ var InternalTree = /*#__PURE__*/React.forwardRef(function (props, ref) {
62
64
  innerEstimatedItemSize = TreeProps.estimatedItemSize,
63
65
  style = TreeProps.style,
64
66
  filterTreeNode = TreeProps.filterTreeNode,
65
- filterValue = TreeProps.filterValue;
67
+ filterValue = TreeProps.filterValue,
68
+ expandOnClickNode = TreeProps.expandOnClickNode,
69
+ loadData = TreeProps.loadData;
66
70
  var treePrefixCls = getPrefixCls(prefixCls, 'tree', customPrefixcls); // 树样式前缀
67
71
 
68
72
  var treeNodePrefixCls = getPrefixCls(prefixCls, 'tree-node', customPrefixcls); // 树节点样式前缀
@@ -122,6 +126,16 @@ var InternalTree = /*#__PURE__*/React.forwardRef(function (props, ref) {
122
126
  dragOverNodeKey = _React$useState10[0],
123
127
  setDragOverNodeKey = _React$useState10[1];
124
128
 
129
+ var _React$useState11 = React.useState(new _Set()),
130
+ _React$useState12 = _slicedToArray(_React$useState11, 2),
131
+ loadedKeys = _React$useState12[0],
132
+ setLoadedKeys = _React$useState12[1];
133
+
134
+ var _React$useState13 = React.useState(new _Set()),
135
+ _React$useState14 = _slicedToArray(_React$useState13, 2),
136
+ loadingKeys = _React$useState14[0],
137
+ setLoadingKeys = _React$useState14[1];
138
+
125
139
  var isSearching = React.useMemo(function () {
126
140
  return typeof filterTreeNode === 'function' && filterValue;
127
141
  }, [filterValue]);
@@ -170,15 +184,54 @@ var InternalTree = /*#__PURE__*/React.forwardRef(function (props, ref) {
170
184
  listRef.current.style.transform = "translate3d(0,".concat(tempStartOffset, "px,0)");
171
185
  }
172
186
  }, [listRef, scrollRef, virtual, estimatedItemSize]);
173
- var handleExpand = React.useCallback(function (key, value, node) {
174
- var newExpandedKeys = value ? addKeys(expandedKeys, [key]) : delKey(expandedKeys, [key]);
187
+ var handleNodeLoad = useCallback(function (loadedKeys, loadingKeys, data) {
188
+ var key = data.key;
189
+
190
+ if (!loadData || loadedKeys.has(key) || loadingKeys.has(key)) {
191
+ return;
192
+ }
193
+
194
+ setLoadingKeys(function (prevLoadingKeys) {
195
+ var _context;
196
+
197
+ return new _Set(_concatInstanceProperty(_context = []).call(_context, _toConsumableArray(prevLoadingKeys), [key]));
198
+ });
199
+ loadData(data).then(function () {
200
+ setLoadedKeys(function (prevState) {
201
+ var _context2;
202
+
203
+ return new _Set(_concatInstanceProperty(_context2 = []).call(_context2, _toConsumableArray(prevState), [key]));
204
+ });
205
+ setLoadingKeys(function (prevState) {
206
+ var prevLoadingKeys = cloneDeep(prevState);
207
+ prevLoadingKeys.delete(key);
208
+ return prevLoadingKeys;
209
+ });
210
+ }).catch(function (e) {
211
+ setLoadingKeys(function (prevState) {
212
+ var prevLoadingKeys = cloneDeep(prevState);
213
+ prevLoadingKeys.delete(key);
214
+ return prevLoadingKeys;
215
+ });
216
+ setExpandedKeys(function (preExpandedKeys) {
217
+ return delKey(_toConsumableArray(preExpandedKeys), [key]);
218
+ });
219
+ throw e;
220
+ });
221
+ }, [loadData, setExpandedKeys]);
222
+ var handleExpand = React.useCallback(function (key, expanded, node) {
223
+ var newExpandedKeys = expanded ? addKeys(expandedKeys, [key]) : delKey(expandedKeys, [key]);
175
224
  onExpand && onExpand(newExpandedKeys, {
176
225
  node: node,
177
- expanded: value
226
+ expanded: expanded
178
227
  });
179
228
  setScrollKey('');
180
229
  setIsInit(false);
181
- }, [expandedKeys, onExpand]);
230
+
231
+ if (expanded && loadData) {
232
+ handleNodeLoad(loadedKeys, loadingKeys, node);
233
+ }
234
+ }, [expandedKeys, onExpand, loadData, handleNodeLoad, loadedKeys, loadingKeys]);
182
235
  var handleCheck = React.useCallback(function (key, value, node, event, pos) {
183
236
  var newCheckedKeys = value ? addKeys(checkedKeys, [key]) : delKey(checkedKeys, [key]);
184
237
  var checkState = checkStrictly ? getDataCheckededStateStrictly(newCheckedKeys) : getDataCheckededState(spreadAttrData, newCheckedKeys, halfCheckedKeys, maxLevel, false, pos, value);
@@ -267,11 +320,11 @@ var InternalTree = /*#__PURE__*/React.forwardRef(function (props, ref) {
267
320
  });
268
321
  }, [onDragEnd]);
269
322
  var handleDrop = React.useCallback(function (event, node, dragNode, dragNodesKeys) {
270
- var _context;
323
+ var _context3;
271
324
 
272
325
  var pos = getPos(flattenAllData, dragNodesKeys);
273
326
 
274
- var keys = _concatInstanceProperty(_context = getAllChildKeys(flattenAllData, pos)).call(_context, dragNodesKeys);
327
+ var keys = _concatInstanceProperty(_context3 = getAllChildKeys(flattenAllData, pos)).call(_context3, dragNodesKeys);
275
328
 
276
329
  onDrop && onDrop({
277
330
  event: event,
@@ -337,7 +390,6 @@ var InternalTree = /*#__PURE__*/React.forwardRef(function (props, ref) {
337
390
  className: treeRootClassName,
338
391
  ref: listRef
339
392
  }, visibleData && _mapInstanceProperty(visibleData).call(visibleData, function (item) {
340
- // const props: any = {}
341
393
  var checked = getChecked(checkedKeys, item.key);
342
394
  var indeterminate = getHalfChecked(halfCheckedKeys, item.key);
343
395
  item.nodeKey = item.key;
@@ -352,8 +404,7 @@ var InternalTree = /*#__PURE__*/React.forwardRef(function (props, ref) {
352
404
  item.onSelect = handleSelect;
353
405
  item.checked = checked;
354
406
  item.selected = getSelected(selectedKeys, item.key);
355
- item.indeterminate = indeterminate; // item.showLine = showLine
356
-
407
+ item.indeterminate = indeterminate;
357
408
  item.disabled = getDisabled(disabled, item.disabled);
358
409
  item.showIcon = showIcon || false;
359
410
  item.checkable = getCheckable(checkable, item.checkable); // 哪个优先
@@ -368,6 +419,9 @@ var InternalTree = /*#__PURE__*/React.forwardRef(function (props, ref) {
368
419
  item.getDragNode = getDragNode;
369
420
  item.setDragNode = setDragNode;
370
421
  item.dragOver = dragOverNodeKey === item.key && dropPosition === 0;
422
+ item.expandOnClickNode = expandOnClickNode;
423
+ item.loading = loadingKeys.has(item.key) && !loadedKeys.has(item.key);
424
+ item.loadData = loadData;
371
425
  return /*#__PURE__*/React.createElement(TreeNode, _extends({}, item, {
372
426
  key: item.key,
373
427
  ref: treeNodeRef
@@ -112,7 +112,6 @@ export var useScrollToKey = function useScrollToKey(scrollKey, index, estimatedI
112
112
  }
113
113
 
114
114
  if (treeRoot && treeNode) {
115
- // const treeRootScrollTop = treeRoot.scrollTop
116
115
  var treeRootRect = treeRoot.getBoundingClientRect();
117
116
  var treeNodeRect = treeNode.getBoundingClientRect();
118
117
 
@@ -25,6 +25,7 @@ export interface TreeNodeProps {
25
25
  pos?: string;
26
26
  estimatedItemSize?: number;
27
27
  dragOver?: boolean;
28
+ isLeaf?: boolean;
28
29
  onCheck?: (key: string, value: boolean, node: React.ReactNode, event: React.MouseEvent<MouseEvent>, pos: string) => void;
29
30
  onSelect?: (event: React.MouseEvent<MouseEvent>, node: React.ReactNode, key: string) => void;
30
31
  onExpand?: (value: boolean, node: React.ReactNode) => void;
@@ -17,12 +17,13 @@ var __rest = this && this.__rest || function (s, e) {
17
17
  return t;
18
18
  };
19
19
 
20
- import React, { useContext, useEffect } from 'react';
20
+ import React, { useCallback, useContext, useEffect } from 'react';
21
21
  import classNames from 'classnames';
22
22
  import ConfigContext from '../config-provider/ConfigContext';
23
23
  import { getCompProps } from '../_utils';
24
24
  import Checkbox from './../checkbox';
25
25
  import Icon from '../icon';
26
+ import Spin from '../spin';
26
27
  var TreeNode = /*#__PURE__*/React.forwardRef(function (props, ref) {
27
28
  var _context;
28
29
 
@@ -57,6 +58,8 @@ var TreeNode = /*#__PURE__*/React.forwardRef(function (props, ref) {
57
58
  indeterminate = TreeNodeProps.indeterminate,
58
59
  estimatedItemSize = TreeNodeProps.estimatedItemSize,
59
60
  dragOver = TreeNodeProps.dragOver,
61
+ expandOnClickNode = TreeNodeProps.expandOnClickNode,
62
+ loading = TreeNodeProps.loading,
60
63
  onExpand = TreeNodeProps.onExpand,
61
64
  onCheck = TreeNodeProps.onCheck,
62
65
  onDragStart = TreeNodeProps.onDragStart,
@@ -66,7 +69,7 @@ var TreeNode = /*#__PURE__*/React.forwardRef(function (props, ref) {
66
69
  onDragEnd = TreeNodeProps.onDragEnd,
67
70
  onDrop = TreeNodeProps.onDrop,
68
71
  onSelect = TreeNodeProps.onSelect,
69
- 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", "onExpand", "onCheck", "onDragStart", "onDragOver", "onDragLeave", "onDragEnter", "onDragEnd", "onDrop", "onSelect"]);
72
+ 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", "expandOnClickNode", "loading", "onExpand", "onCheck", "onDragStart", "onDragOver", "onDragLeave", "onDragEnter", "onDragEnd", "onDrop", "onSelect"]);
70
73
 
71
74
  var nodeData = React.useMemo(function () {
72
75
  return _extends({
@@ -84,7 +87,6 @@ var TreeNode = /*#__PURE__*/React.forwardRef(function (props, ref) {
84
87
  indeterminate: indeterminate,
85
88
  icon: icon,
86
89
  switcherIcon: switcherIcon,
87
- // showLine,
88
90
  showIcon: showIcon,
89
91
  selected: selected
90
92
  }, others);
@@ -166,57 +168,46 @@ var TreeNode = /*#__PURE__*/React.forwardRef(function (props, ref) {
166
168
  }
167
169
 
168
170
  return indentArr;
169
- }; // line的两种模式, 图标被替换和图标不被替换
171
+ };
172
+
173
+ var isLeaf = useCallback(function () {
174
+ var isLeaf = TreeNodeProps.isLeaf,
175
+ loadData = TreeNodeProps.loadData,
176
+ hasChildNode = TreeNodeProps.hasChildNode;
177
+
178
+ if (isLeaf === false) {
179
+ return false;
180
+ }
170
181
 
182
+ return isLeaf || !loadData && !hasChildNode;
183
+ }, [TreeNodeProps]); // line的两种模式, 图标被替换和图标不被替换
171
184
 
172
185
  var renderExpandIcon = function renderExpandIcon() {
173
- // todo 图标被替换则 line样式改变
174
- // if(switcherIcon){
175
- // }
176
- if (hasChildNode) {
177
- var _classNames2;
178
-
179
- // todo showLine模式 使用+ -符号图标
180
- // if(!!showLine){
181
- // return (
182
- // <span
183
- // onClick={handleClick}
184
- // className={classNames(`${treeNodePrefixCls}-icon`)}
185
- // >
186
- // {expand ? <Icon type='search' /> : <Icon type='add' />}
187
- // </span>
188
- // )
189
- // }
186
+ if (loading) {
187
+ return /*#__PURE__*/React.createElement(Spin, {
188
+ type: "component"
189
+ });
190
+ }
191
+
192
+ var showExpandIcon = !isLeaf();
193
+
194
+ if (showExpandIcon) {
195
+ var _classNames3;
196
+
190
197
  if (Array.isArray(switcherIcon) && switcherIcon.length === 2) {
191
198
  return /*#__PURE__*/React.createElement("span", {
192
- className: classNames("".concat(treeNodePrefixCls, "-icon"))
199
+ className: classNames("".concat(treeNodePrefixCls, "-icon"), _defineProperty({}, "".concat(treeNodePrefixCls, "-icon-hover"), !expandOnClickNode)),
200
+ onClick: expandOnClickNode ? undefined : handleExpandIconClick
193
201
  }, expandState ? renderIcon(switcherIcon[1]) : renderIcon(switcherIcon[0]));
194
202
  }
195
203
 
196
204
  return /*#__PURE__*/React.createElement("span", {
197
- className: classNames("".concat(treeNodePrefixCls, "-icon"), (_classNames2 = {}, _defineProperty(_classNames2, "".concat(treeNodePrefixCls, "-animation-expand"), expandState), _defineProperty(_classNames2, "".concat(treeNodePrefixCls, "-animation-collapse"), !expandState), _classNames2))
205
+ className: classNames("".concat(treeNodePrefixCls, "-icon"), (_classNames3 = {}, _defineProperty(_classNames3, "".concat(treeNodePrefixCls, "-animation-expand"), expandState), _defineProperty(_classNames3, "".concat(treeNodePrefixCls, "-animation-collapse"), !expandState), _defineProperty(_classNames3, "".concat(treeNodePrefixCls, "-icon-hover"), !expandOnClickNode), _classNames3)),
206
+ onClick: expandOnClickNode ? undefined : handleExpandIconClick
198
207
  }, renderIcon(switcherIcon || /*#__PURE__*/React.createElement(Icon, {
199
208
  type: "arrow-right-solid"
200
209
  })));
201
210
  } else {
202
- // if(typeof showLine === 'object' && !showLine.showLeafIcon){
203
- // return (
204
- // <span
205
- // className={classNames(`${treeNodePrefixCls}-icon-hidden`)}
206
- // >
207
- // {/* todo renderLeafLine() */}
208
- // {renderIcon(leafIcon)}
209
- // </span>
210
- // )
211
- // }else if(typeof showLine === 'object' && showLine.showLeafIcon || showLine === true){
212
- // return (
213
- // <span
214
- // className={classNames(`${treeNodePrefixCls}-leaf-icon`)}
215
- // >
216
- // {renderIcon(leafIcon)}
217
- // </span>
218
- // )
219
- // }
220
211
  // 叶子结点 隐藏展开按钮
221
212
  return /*#__PURE__*/React.createElement("span", {
222
213
  className: "".concat(treeNodePrefixCls, "-icon-hidden")
@@ -231,11 +222,11 @@ var TreeNode = /*#__PURE__*/React.forwardRef(function (props, ref) {
231
222
  };
232
223
 
233
224
  var renderNode = function renderNode() {
234
- var _classNames3;
225
+ var _classNames4, _classNames5;
235
226
 
236
227
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
237
228
  draggable: draggable && !disabled,
238
- className: classNames((_classNames3 = {}, _defineProperty(_classNames3, "".concat(treeNodePrefixCls, "-draggabled"), true), _defineProperty(_classNames3, "".concat(treeNodePrefixCls, "-root"), true), _defineProperty(_classNames3, "".concat(treeNodePrefixCls, "-fb-children-pointerEvents"), forbiddenChildrenPointerEvents), _defineProperty(_classNames3, "".concat(treeNodePrefixCls, "-drag-over"), dragOver), _classNames3)),
229
+ className: classNames((_classNames4 = {}, _defineProperty(_classNames4, "".concat(treeNodePrefixCls, "-draggabled"), true), _defineProperty(_classNames4, "".concat(treeNodePrefixCls, "-root"), true), _defineProperty(_classNames4, "".concat(treeNodePrefixCls, "-fb-children-pointerEvents"), forbiddenChildrenPointerEvents), _defineProperty(_classNames4, "".concat(treeNodePrefixCls, "-drag-over"), dragOver), _classNames4)),
239
230
  onDragStart: handleDragStart,
240
231
  onDragEnd: handleDragEnd,
241
232
  onDragOver: handleDragOver,
@@ -244,7 +235,8 @@ var TreeNode = /*#__PURE__*/React.forwardRef(function (props, ref) {
244
235
  onDrop: handleDrop,
245
236
  ref: dragRef
246
237
  }, indent(), renderExpandIcon(), showIcon && renderNodeIcon(), /*#__PURE__*/React.createElement("div", {
247
- className: "".concat(treeNodePrefixCls, "-title-wrap")
238
+ className: classNames((_classNames5 = {}, _defineProperty(_classNames5, "".concat(treeNodePrefixCls, "-title-wrap"), true), _defineProperty(_classNames5, "".concat(treeNodePrefixCls, "-title-wrap-hover"), !expandOnClickNode && !disabled), _defineProperty(_classNames5, "".concat(treeNodePrefixCls, "-title-wrap-selected"), selected && selectable && !disabled && !expandOnClickNode), _classNames5)),
239
+ onClick: expandOnClickNode ? undefined : handleClick
248
240
  }, checkable ? /*#__PURE__*/React.createElement(Checkbox, {
249
241
  onChange: handleOnchange,
250
242
  checked: checked,
@@ -271,12 +263,16 @@ var TreeNode = /*#__PURE__*/React.forwardRef(function (props, ref) {
271
263
  selectNode: handleSelect
272
264
  };
273
265
  });
274
- var handleClick = React.useCallback(function (e) {
275
- e.stopPropagation();
266
+ var handleExpandIconClick = useCallback(function (e) {
267
+ e === null || e === void 0 ? void 0 : e.stopPropagation();
276
268
  setExpandState(!expandState);
277
269
  onExpand && onExpand(nodeKey, !expandState, nodeData);
270
+ }, [expandState, nodeData, nodeKey, onExpand, setExpandState]);
271
+ var handleClick = React.useCallback(function (e) {
272
+ e.stopPropagation();
273
+ expandOnClickNode && handleExpandIconClick();
278
274
  handleSelect(e);
279
- }, [setExpandState, expandState, onExpand, nodeKey, nodeData, handleSelect]);
275
+ }, [expandOnClickNode, handleExpandIconClick, handleSelect]);
280
276
  var handleDragStart = React.useCallback(function (e) {
281
277
  if (!draggable) return;
282
278
  setDragNode(nodeData);
@@ -325,11 +321,11 @@ var TreeNode = /*#__PURE__*/React.forwardRef(function (props, ref) {
325
321
  }
326
322
  }, [onDrop, nodeData, nodeKey]);
327
323
  return /*#__PURE__*/React.createElement("div", {
328
- className: classNames("".concat(treeNodePrefixCls, "-item"), _defineProperty({}, "".concat(treeNodePrefixCls, "-item-hover"), !disabled && selectable), _defineProperty({}, "".concat(treeNodePrefixCls, "-selected"), selected && selectable && !disabled), _defineProperty({}, "".concat(treeNodePrefixCls, "-disabled"), disabled), _defineProperty({}, "".concat(treeNodePrefixCls, "-opened"), expandState), _concatInstanceProperty(_context = "".concat(treeNodePrefixCls, "-item-")).call(_context, nodeKey), className),
324
+ className: classNames("".concat(treeNodePrefixCls, "-item"), _defineProperty({}, "".concat(treeNodePrefixCls, "-item-hover"), !disabled && selectable && expandOnClickNode), _defineProperty({}, "".concat(treeNodePrefixCls, "-selected"), selected && selectable && !disabled && expandOnClickNode), _defineProperty({}, "".concat(treeNodePrefixCls, "-disabled"), disabled), _defineProperty({}, "".concat(treeNodePrefixCls, "-opened"), expandState), _concatInstanceProperty(_context = "".concat(treeNodePrefixCls, "-item-")).call(_context, nodeKey), className),
329
325
  style: _extends({
330
326
  height: "".concat(estimatedItemSize, "px")
331
327
  }, style),
332
- onClick: handleClick
328
+ onClick: expandOnClickNode ? handleClick : undefined
333
329
  }, renderNode());
334
330
  });
335
331
  TreeNode.displayName = 'TreeNode';
@@ -56,7 +56,7 @@ export var flattenAll = function flattenAll(treeData) {
56
56
 
57
57
  var _pos = pos ? _concatInstanceProperty(_context = "".concat(pos, "-")).call(_context, index) : "".concat(index);
58
58
 
59
- var hasChildNode = children && children instanceof Array && children.length > 0;
59
+ var hasChildNode = item.isLeaf ? false : children && children instanceof Array && children.length > 0;
60
60
 
61
61
  var flattenNode = _extends({
62
62
  title: title,
@@ -75,7 +75,7 @@ export var flattenAll = function flattenAll(treeData) {
75
75
  }
76
76
 
77
77
  _level++;
78
- fn(children, newTreeData, _level, _pos, flattenNode);
78
+ hasChildNode && fn(children, newTreeData, _level, _pos, flattenNode);
79
79
  });
80
80
  return newTreeData;
81
81
  };
@@ -520,6 +520,11 @@ function usePopper(locatorElement, popperElement, props) {
520
520
  props.visible === undefined && setVisible(false);
521
521
  onVisibleChange && onVisibleChange(false);
522
522
  }, [onVisibleChange, props.visible]);
523
+
524
+ var matchTrigger = function matchTrigger(words) {
525
+ return Array.isArray(trigger) ? (0, _includes.default)(trigger).call(trigger, words) : trigger === words;
526
+ };
527
+
523
528
  (0, _react.useEffect)(function () {
524
529
  if (exist && visible) {
525
530
  var mouseleaveTimer;
@@ -536,13 +541,13 @@ function usePopper(locatorElement, popperElement, props) {
536
541
  Y = e.clientY;
537
542
  var inTriggerRect = X > left - 2 && X < right + 2 && Y > top - 2 && Y < bottom + 2;
538
543
  var inPopperRect = X > popperRect.left && X < popperRect.right && Y > popperRect.top && Y < popperRect.bottom;
539
- var ableArea = evType === 'contextmenu' ? inPopperRect : inTriggerRect || inPopperRect;
544
+ var ableArea = matchTrigger('contextMenu') ? inPopperRect : inTriggerRect || inPopperRect;
540
545
 
541
546
  if (ableArea) {
542
547
  mouseleaveTimer && clearTimeout(mouseleaveTimer);
543
- evType === 'focus' && triggerNode.focus();
548
+ matchTrigger('focus') && triggerNode.focus();
544
549
  } else {
545
- evType === 'mouseenter' ? mouseleaveTimer = window.setTimeout(hidePopper, mouseLeaveDelay * 1000) : hidePopper();
550
+ matchTrigger('hover') ? mouseleaveTimer = window.setTimeout(hidePopper, mouseLeaveDelay * 1000) : hidePopper();
546
551
  }
547
552
  };
548
553
 
@@ -550,14 +555,18 @@ function usePopper(locatorElement, popperElement, props) {
550
555
  leading: true
551
556
  });
552
557
  var mapEvent = {
553
- mouseenter: 'mousemove',
554
- mouseup: 'mousedown',
558
+ hover: 'mousemove',
559
+ click: 'mousedown',
555
560
  focus: 'mousedown',
556
- contextmenu: 'mousedown'
561
+ contextMenu: 'mousedown'
557
562
  };
558
- document.addEventListener(mapEvent[evType], debounceHidePopper);
563
+ Array.isArray(trigger) ? trigger.forEach(function (action) {
564
+ return document.addEventListener(mapEvent[action], debounceHidePopper);
565
+ }) : document.addEventListener(mapEvent[trigger], debounceHidePopper);
559
566
  return function () {
560
- document.removeEventListener(mapEvent[evType], debounceHidePopper);
567
+ Array.isArray(trigger) ? trigger.forEach(function (action) {
568
+ return document.removeEventListener(mapEvent[action], debounceHidePopper);
569
+ }) : document.removeEventListener(mapEvent[trigger], debounceHidePopper);
561
570
  };
562
571
  }
563
572
  }, [currentPlacement, evType, exist, getTriggerElement, hidePopper, locatorRef, mouseLeaveDelay, popperRef, visible]);
@@ -217,13 +217,13 @@ var Alert = function Alert(props) {
217
217
  };
218
218
 
219
219
  var iconNode = /*#__PURE__*/_react.default.createElement("div", {
220
- className: "".concat(alertPrefixCls, "-icon")
220
+ className: (0, _classnames.default)("".concat(alertPrefixCls, "-icon"), getAlertColorType('icon'))
221
221
  }, icon || /*#__PURE__*/_react.default.createElement(_index.Icon, {
222
222
  type: alertIconType
223
223
  }));
224
224
 
225
225
  var AlertComp = /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
226
- className: (0, _classnames.default)(alertClasses, getAlertColorType('bg'), getAlertColorType('font'))
226
+ className: (0, _classnames.default)(alertClasses, getAlertColorType('bg'), getAlertColorType('border'))
227
227
  }, events, {
228
228
  ref: alertRef
229
229
  }), showIcon && iconNode, /*#__PURE__*/_react.default.createElement("div", {
@@ -109,12 +109,14 @@
109
109
  z-index: var(--kd-g-z-index-apex, 9999);
110
110
  display: none;
111
111
  width: 100%;
112
- padding: var(--kd-c-alert-sizing-padding-top, 8px) var(--kd-c-alert-sizing-padding-horizontal, 12px) var(--kd-c-alert-sizing-padding-bottom, 12px);
112
+ padding: var(--kd-c-alert-sizing-padding-vertical, 12px) var(--kd-c-alert-sizing-padding-horizontal, 20px);
113
113
  -webkit-box-align: center;
114
114
  -ms-flex-align: center;
115
115
  align-items: center;
116
116
  -webkit-transition: display 3s;
117
117
  transition: display 3s;
118
+ border-radius: var(--kd-c-alert-radius-border, 4px);
119
+ border: 1px solid;
118
120
  }
119
121
  .kd-alert-banner-container {
120
122
  display: -webkit-box;
@@ -140,23 +142,24 @@
140
142
  .kd-alert.alert-info-bg-color {
141
143
  background-color: var(--kd-c-alert-color-background-info, var(--kd-g-color-background-ongoing, #f2f9ff));
142
144
  }
143
- .kd-alert.alert-success-font-color {
144
- color: var(--kd-c-alert-color-text-success, var(--kd-g-color-success, #1ba854));
145
+ .kd-alert.alert-success-border-color {
146
+ border-color: var(--kd-c-alert-color-border-success, #DCFAE4);
145
147
  }
146
- .kd-alert.alert-warning-font-color {
147
- color: var(--kd-c-alert-color-text-warning, var(--kd-g-color-warning, #ff991c));
148
+ .kd-alert.alert-warning-border-color {
149
+ border-color: var(--kd-c-alert-color-border-warning, #FFF1D4);
148
150
  }
149
- .kd-alert.alert-error-font-color {
150
- color: var(--kd-c-alert-color-text-error, var(--kd-g-color-error, #fb2323));
151
+ .kd-alert.alert-error-border-color {
152
+ border-color: var(--kd-c-alert-color-border-error, #FFDBE0);
151
153
  }
152
- .kd-alert.alert-info-font-color {
153
- color: var(--kd-c-alert-color-text-info, var(--kd-g-color-ongoing, #276ff5));
154
+ .kd-alert.alert-info-border-color {
155
+ border-color: var(--kd-c-alert-color-border-info, #E0EFFF);
154
156
  }
155
157
  .kd-alert-icon {
156
158
  display: -webkit-box;
157
159
  display: -ms-flexbox;
158
160
  display: flex;
159
161
  cursor: default;
162
+ height: var(--kd-c-alert-message-icon-font-size, var(--kd-g-font-size-middle, 14px));
160
163
  margin-right: var(--kd-c-alert-message-icon-sizing-margin-right, 8px);
161
164
  font-size: var(--kd-c-alert-message-icon-font-size, var(--kd-g-font-size-middle, 14px));
162
165
  }
@@ -164,9 +167,22 @@
164
167
  -ms-flex-item-align: center;
165
168
  align-self: center;
166
169
  }
170
+ .kd-alert-icon.alert-success-icon-color {
171
+ color: var(--kd-c-alert-color-icon-success, var(--kd-g-color-success, #1ba854));
172
+ }
173
+ .kd-alert-icon.alert-warning-icon-color {
174
+ color: var(--kd-c-alert-color-icon-warning, var(--kd-g-color-warning, #ff991c));
175
+ }
176
+ .kd-alert-icon.alert-error-icon-color {
177
+ color: var(--kd-c-alert-color-icon-error, var(--kd-g-color-error, #fb2323));
178
+ }
179
+ .kd-alert-icon.alert-info-icon-color {
180
+ color: var(--kd-c-alert-color-icon-info, var(--kd-g-color-ongoing, #276ff5));
181
+ }
167
182
  .kd-alert-message {
183
+ color: var(--kd-c-alert-color-text, var(--kd-g-color-text-primary, #212121));
168
184
  font-size: var(--kd-c-alert-message-font-size, var(--kd-g-font-size-small, 12px));
169
- line-height: 18px;
185
+ line-height: 16px;
170
186
  display: -webkit-box;
171
187
  display: -ms-flexbox;
172
188
  display: flex;
@@ -196,10 +212,10 @@
196
212
  display: -webkit-box;
197
213
  display: -ms-flexbox;
198
214
  display: flex;
215
+ height: var(--kd-c-alert-message-icon-font-size, var(--kd-g-font-size-middle, 14px));
199
216
  margin-left: var(--kd-c-alert-close-icon-sizing-margin-left, 8px);
200
217
  color: var(--kd-c-alert-close-icon-color-text, var(--kd-g-color-text-secondary, #666));
201
218
  font-size: var(--kd-c-alert-close-icon-font-size, var(--kd-g-font-size-middle, 14px));
202
- justify-self: flex-end;
203
219
  cursor: pointer;
204
220
  }
205
221
  .kd-alert-close-icon:hover {
@@ -16,11 +16,18 @@
16
16
  @info: @alert-info-bg-color;
17
17
  }
18
18
 
19
- .alert-font-type-set() {
20
- @success: @alert-success-font-color;
21
- @warning: @alert-warning-font-color;
22
- @error: @alert-error-font-color;
23
- @info: @alert-info-font-color;
19
+ .alert-icon-type-set() {
20
+ @success: @alert-success-icon-color;
21
+ @warning: @alert-warning-icon-color;
22
+ @error: @alert-error-icon-color;
23
+ @info: @alert-info-icon-color;
24
+ }
25
+
26
+ .alert-border-type-set() {
27
+ @success: @alert-success-border-color;
28
+ @warning: @alert-warning-border-color;
29
+ @error: @alert-error-border-color;
30
+ @info: @alert-info-border-color;
24
31
  }
25
32
 
26
33
  @alert-transition-fn: cubic-bezier(0.32, 0.94, 0.6, 1);
@@ -36,9 +43,11 @@
36
43
  z-index: @z-index-apex;
37
44
  display: none;
38
45
  width: 100%;
39
- padding: @alert-padding-top @alert-padding-horizontal @alert-padding-bottom;
46
+ padding: @alert-padding-vertical @alert-padding-horizontal;
40
47
  align-items: center;
41
48
  transition: display 3s;
49
+ border-radius: @alert-radius-border;
50
+ border: 1px solid;
42
51
  }
43
52
  &-banner-container {
44
53
  display: flex;
@@ -50,19 +59,24 @@
50
59
  each(.alert-bg-type-set(), {
51
60
  .alert-bg-type(@key, @value);
52
61
  });
53
- each(.alert-font-type-set(), {
54
- .alert-font-type(@key, @value);
62
+ each(.alert-border-type-set(), {
63
+ .alert-border-type(@key, @value);
55
64
  });
56
65
  &-icon {
57
66
  display: flex;
58
67
  cursor: default;
59
68
  .icon-center();
69
+ height: @alert-message-icon-font-size;
60
70
  margin-right: @alert-message-icon-margin-right;
61
71
  font-size: @alert-message-icon-font-size;
72
+ each(.alert-icon-type-set(), {
73
+ .alert-icon-type(@key, @value);
74
+ });
62
75
  }
63
76
  &-message {
77
+ color: @alert-message-color-text;
64
78
  font-size: @alert-message-font-size;
65
- line-height: 18px;
79
+ line-height: 16px;
66
80
  display: flex;
67
81
  flex-grow: 1;
68
82
  cursor: default;
@@ -86,10 +100,10 @@
86
100
  }
87
101
  &-close-icon {
88
102
  display: flex;
103
+ height: @alert-message-icon-font-size;
89
104
  margin-left: @alert-close-icon-margin-left;
90
105
  color: @alert-close-icon-color;
91
106
  font-size: @alert-close-icon-font-size;
92
- justify-self: flex-end;
93
107
  cursor: pointer;
94
108
  &:hover {
95
109
  color: @alert-close-icon-color-hover;
@@ -4,12 +4,18 @@
4
4
  }
5
5
  }
6
6
 
7
- .alert-font-type(@type, @color) {
8
- &.alert-@{type}-font-color {
7
+ .alert-icon-type(@type, @color) {
8
+ &.alert-@{type}-icon-color {
9
9
  color: @color
10
10
  }
11
11
  }
12
12
 
13
+ .alert-border-type(@type, @color) {
14
+ &.alert-@{type}-border-color {
15
+ border-color: @color
16
+ }
17
+ }
18
+
13
19
  .square(@side-length) {
14
20
  width: @side-length;
15
21
  height: @side-length;
@@ -8,10 +8,16 @@
8
8
  @alert-error-bg-color: var(~'@{alert-custom-prefix}-color-background-error', @color-background-error); // 反馈浮层错误提示的背景色
9
9
  @alert-info-bg-color: var(~'@{alert-custom-prefix}-color-background-info', @color-background-ongoing); // 反馈浮层一般提示的背景色
10
10
 
11
- @alert-success-font-color: var(~'@{alert-custom-prefix}-color-text-success', @color-success); // 反馈浮层成功提示的文字色
12
- @alert-warning-font-color: var(~'@{alert-custom-prefix}-color-text-warning', @color-warning); // 反馈浮层警告提示的文字色
13
- @alert-error-font-color: var(~'@{alert-custom-prefix}-color-text-error', @color-error); // 反馈浮层错误提示的文字色
14
- @alert-info-font-color: var(~'@{alert-custom-prefix}-color-text-info', @color-ongoing); // 反馈浮层一般提示的文字色
11
+ @alert-message-color-text: var(~'@{alert-custom-prefix}-color-text', @color-text-primary); // 反馈浮层提示的文字色
12
+ @alert-success-icon-color: var(~'@{alert-custom-prefix}-color-icon-success', @color-success); // 反馈浮层成功提示的图标颜色
13
+ @alert-warning-icon-color: var(~'@{alert-custom-prefix}-color-icon-warning', @color-warning); // 反馈浮层警告提示的图标颜色
14
+ @alert-error-icon-color: var(~'@{alert-custom-prefix}-color-icon-error', @color-error); // 反馈浮层错误提示的图标颜色
15
+ @alert-info-icon-color: var(~'@{alert-custom-prefix}-color-icon-info', @color-ongoing); // 反馈浮层一般提示的图标颜色
16
+
17
+ @alert-success-border-color: var(~'@{alert-custom-prefix}-color-border-success', #DCFAE4); // 反馈浮层成功提示的边框色
18
+ @alert-warning-border-color: var(~'@{alert-custom-prefix}-color-border-warning', #FFF1D4); // 反馈浮层警告提示的边框色
19
+ @alert-error-border-color: var(~'@{alert-custom-prefix}-color-border-error', #FFDBE0); // 反馈浮层错误提示的边框色
20
+ @alert-info-border-color: var(~'@{alert-custom-prefix}-color-border-info', #E0EFFF); // 反馈浮层一般提示的边框色
15
21
 
16
22
  @alert-close-icon-color: var(~'@{alert-custom-prefix}-close-icon-color-text', @color-text-secondary);
17
23
  @alert-close-icon-color-hover: var(~'@{alert-custom-prefix}-close-icon-color-text-hover', @color-theme-hover);
@@ -22,8 +28,10 @@
22
28
  @alert-close-icon-font-size: var(~'@{alert-custom-prefix}-close-icon-font-size', @font-size-middle);
23
29
 
24
30
  // spacing
25
- @alert-padding-top: var(~'@{alert-custom-prefix}-sizing-padding-top', 8px);
26
- @alert-padding-bottom: var(~'@{alert-custom-prefix}-sizing-padding-bottom', 12px);
27
- @alert-padding-horizontal: var(~'@{alert-custom-prefix}-sizing-padding-horizontal', 12px);
31
+ @alert-padding-vertical: var(~'@{alert-custom-prefix}-sizing-padding-vertical', 12px);
32
+ @alert-padding-horizontal: var(~'@{alert-custom-prefix}-sizing-padding-horizontal', 20px);
28
33
  @alert-message-icon-margin-right: var(~'@{alert-custom-prefix}-message-icon-sizing-margin-right', 8px);
29
- @alert-close-icon-margin-left: var(~'@{alert-custom-prefix}-close-icon-sizing-margin-left', 8px);
34
+ @alert-close-icon-margin-left: var(~'@{alert-custom-prefix}-close-icon-sizing-margin-left', 8px);
35
+
36
+ // radius
37
+ @alert-radius-border: var(~'@{alert-custom-prefix}-radius-border', 4px);