@kdcloudjs/kdesign 1.5.3 → 1.5.6

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 (101) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/dist/default-theme.js +4 -4
  3. package/dist/kdesign-complete.less +164 -88
  4. package/dist/kdesign.css +160 -86
  5. package/dist/kdesign.css.map +1 -1
  6. package/dist/kdesign.js +392 -253
  7. package/dist/kdesign.js.map +1 -1
  8. package/dist/kdesign.min.css +4 -4
  9. package/dist/kdesign.min.js +6 -6
  10. package/dist/kdesign.min.js.map +1 -1
  11. package/es/_utils/usePopper.js +79 -46
  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/drawer/drawer.js +1 -0
  20. package/es/dropdown/dropdown.js +16 -6
  21. package/es/dropdown/style/index.css +13 -14
  22. package/es/dropdown/style/index.less +4 -5
  23. package/es/dropdown/style/token.less +6 -5
  24. package/es/radio/style/index.css +7 -1
  25. package/es/radio/style/index.less +9 -1
  26. package/es/search/style/index.css +3 -3
  27. package/es/select/select.js +1 -1
  28. package/es/spin/style/index.css +25 -26
  29. package/es/spin/style/index.less +18 -19
  30. package/es/spin/style/token.less +9 -3
  31. package/es/stepper/stepper.js +9 -4
  32. package/es/stepper/style/index.css +2 -0
  33. package/es/stepper/style/index.less +2 -0
  34. package/es/stepper/style/token.less +1 -2
  35. package/es/style/icon/kdicon.css +2 -1
  36. package/es/style/icon/kdicon.woff +0 -0
  37. package/es/style/themes/default.less +3 -4
  38. package/es/tabs/style/index.css +1 -0
  39. package/es/tabs/style/index.less +1 -0
  40. package/es/timeline/style/index.css +22 -21
  41. package/es/timeline/style/index.less +2 -2
  42. package/es/timeline/style/token.less +4 -7
  43. package/es/tooltip/tooltip.js +1 -1
  44. package/es/tree/style/index.css +56 -7
  45. package/es/tree/style/index.less +26 -18
  46. package/es/tree/style/mixin.less +25 -1
  47. package/es/tree/style/token.less +6 -4
  48. package/es/tree/tree.d.ts +2 -0
  49. package/es/tree/tree.js +77 -20
  50. package/es/tree/treeHooks.d.ts +1 -1
  51. package/es/tree/treeHooks.js +3 -4
  52. package/es/tree/treeNode.d.ts +1 -0
  53. package/es/tree/treeNode.js +45 -49
  54. package/es/tree/utils/treeUtils.d.ts +6 -3
  55. package/es/tree/utils/treeUtils.js +66 -42
  56. package/lib/_utils/usePopper.js +79 -46
  57. package/lib/alert/alert.js +2 -2
  58. package/lib/alert/style/index.css +27 -11
  59. package/lib/alert/style/index.less +24 -10
  60. package/lib/alert/style/mixin.less +8 -2
  61. package/lib/alert/style/token.less +16 -8
  62. package/lib/config-provider/compDefaultProps.d.ts +1 -0
  63. package/lib/config-provider/compDefaultProps.js +2 -1
  64. package/lib/drawer/drawer.js +1 -0
  65. package/lib/dropdown/dropdown.js +15 -6
  66. package/lib/dropdown/style/index.css +13 -14
  67. package/lib/dropdown/style/index.less +4 -5
  68. package/lib/dropdown/style/token.less +6 -5
  69. package/lib/radio/style/index.css +7 -1
  70. package/lib/radio/style/index.less +9 -1
  71. package/lib/search/style/index.css +3 -3
  72. package/lib/select/select.js +1 -1
  73. package/lib/spin/style/index.css +25 -26
  74. package/lib/spin/style/index.less +18 -19
  75. package/lib/spin/style/token.less +9 -3
  76. package/lib/stepper/stepper.js +9 -4
  77. package/lib/stepper/style/index.css +2 -0
  78. package/lib/stepper/style/index.less +2 -0
  79. package/lib/stepper/style/token.less +1 -2
  80. package/lib/style/icon/kdicon.css +2 -1
  81. package/lib/style/icon/kdicon.woff +0 -0
  82. package/lib/style/themes/default.less +3 -4
  83. package/lib/tabs/style/index.css +1 -0
  84. package/lib/tabs/style/index.less +1 -0
  85. package/lib/timeline/style/index.css +22 -21
  86. package/lib/timeline/style/index.less +2 -2
  87. package/lib/timeline/style/token.less +4 -7
  88. package/lib/tooltip/tooltip.js +1 -1
  89. package/lib/tree/style/index.css +56 -7
  90. package/lib/tree/style/index.less +26 -18
  91. package/lib/tree/style/mixin.less +25 -1
  92. package/lib/tree/style/token.less +6 -4
  93. package/lib/tree/tree.d.ts +2 -0
  94. package/lib/tree/tree.js +78 -20
  95. package/lib/tree/treeHooks.d.ts +1 -1
  96. package/lib/tree/treeHooks.js +3 -4
  97. package/lib/tree/treeNode.d.ts +1 -0
  98. package/lib/tree/treeNode.js +46 -48
  99. package/lib/tree/utils/treeUtils.d.ts +6 -3
  100. package/lib/tree/utils/treeUtils.js +64 -42
  101. package/package.json +1 -1
@@ -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';
@@ -7,13 +7,16 @@ import { TreeNodeData } from '../tree';
7
7
  * @param level
8
8
  * @param pos
9
9
  */
10
- export declare const flattenAll: (treeData: any[], newTreeData?: TreeNodeData[], level?: number, pos?: string | undefined) => TreeNodeData[];
10
+ export declare const flattenAll: (treeData: any[], newTreeData?: TreeNodeData[], level?: number, pos?: string | undefined) => {
11
+ flattenAllData: TreeNodeData[];
12
+ maxLevel: number;
13
+ };
11
14
  export declare const getExpand: (expandedKeys: string[], key: string) => boolean;
12
15
  export declare const getChecked: (checkedKeys: string[], key: string) => boolean;
13
16
  export declare const getSelected: (selectedKeys: string[], key: string) => boolean;
14
17
  export declare const getHalfChecked: (halfCheckedKeys: string[], key: string) => boolean;
15
18
  export declare const getAllFilterKeys: (data: any[], filterTreeNode: FunctionConstructor) => any[];
16
- export declare const getFilterData: (data: any[], filterTreeNode: FunctionConstructor, filterValue: string) => any[];
19
+ export declare const getFilterData: (data: any[], filterTreeNode: FunctionConstructor, isSearching: boolean) => any[];
17
20
  export declare const getMaxLevel: (data: any[]) => number;
18
21
  /**
19
22
  *计算node的属性后返回新的 treedata
@@ -43,6 +46,6 @@ export declare const getDataCheckededStateStrictly: (checkedKeys: string[]) => {
43
46
  };
44
47
  export declare const delKey: (prevKeys: string[], delKeys: string[]) => never[] & string[];
45
48
  export declare const getAllNodeKeys: (data: any[]) => string[];
46
- export declare const getInitExpandedKeys: (data: any[], expandedKeys: string[], defaultExpandedKeys: string[], defaultExpandAll: boolean, defaultExpandRoot: boolean, defaultExpandParent: boolean, expandScrollkeys: string[] | undefined, filterTreeNode: FunctionConstructor, filterValue: string) => string[];
49
+ export declare const getInitExpandedKeys: (data: any[], expandedKeys: string[], defaultExpandedKeys: string[], defaultExpandAll: boolean, defaultExpandRoot: boolean, defaultExpandParent: boolean, expandScrollkeys: string[] | undefined, filterTreeNode: FunctionConstructor, isSearching: boolean) => string[];
47
50
  export declare const getExpandedKeys: (expandedKeys: string[], expandScrollkeys?: string[]) => string[];
48
51
  export declare const calcDropPosition: (event: React.MouseEvent, dropNode: HTMLElement) => 0 | 1 | -1;
@@ -5,7 +5,6 @@ import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/insta
5
5
  import _includesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/includes";
6
6
  import _findInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/find";
7
7
  import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
8
- import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
9
8
  import _Set from "@babel/runtime-corejs3/core-js-stable/set";
10
9
  import _startsWithInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/starts-with";
11
10
  import _Array$from from "@babel/runtime-corejs3/core-js-stable/array/from";
@@ -38,29 +37,54 @@ export var flattenAll = function flattenAll(treeData) {
38
37
  var newTreeData = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
39
38
  var level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
40
39
  var pos = arguments.length > 3 ? arguments[3] : undefined;
41
- treeData && treeData.forEach(function (item, index) {
42
- var _context;
40
+ var maxLevel = 0;
43
41
 
44
- var children = item.children,
45
- title = item.title,
46
- key = item.key,
47
- others = __rest(item, ["children", "title", "key"]);
42
+ var fn = function fn(treeData) {
43
+ var newTreeData = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
44
+ var level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
45
+ var pos = arguments.length > 3 ? arguments[3] : undefined;
46
+ var parent = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;
47
+ treeData && treeData.forEach(function (item, index) {
48
+ var _context;
48
49
 
49
- var _pos = pos ? _concatInstanceProperty(_context = "".concat(pos, "-")).call(_context, index) : "".concat(index);
50
+ var children = item.children,
51
+ title = item.title,
52
+ key = item.key,
53
+ others = __rest(item, ["children", "title", "key"]);
50
54
 
51
- var hasChildNode = children && children instanceof Array && children.length > 0;
52
- newTreeData.push(_extends({
53
- title: title,
54
- key: key,
55
- pos: _pos,
56
- hasChildNode: hasChildNode,
57
- level: level
58
- }, others));
59
- var _level = level;
60
- _level++;
61
- flattenAll(children, newTreeData, _level, _pos);
62
- });
63
- return newTreeData;
55
+ item.parent = parent;
56
+
57
+ var _pos = pos ? _concatInstanceProperty(_context = "".concat(pos, "-")).call(_context, index) : "".concat(index);
58
+
59
+ var hasChildNode = item.isLeaf ? false : children && children instanceof Array && children.length > 0;
60
+
61
+ var flattenNode = _extends({
62
+ title: title,
63
+ key: key,
64
+ pos: _pos,
65
+ hasChildNode: hasChildNode,
66
+ level: level,
67
+ parent: parent
68
+ }, others);
69
+
70
+ newTreeData.push(flattenNode);
71
+ var _level = level;
72
+
73
+ if (maxLevel < level) {
74
+ maxLevel = level;
75
+ }
76
+
77
+ _level++;
78
+ hasChildNode && fn(children, newTreeData, _level, _pos, flattenNode);
79
+ });
80
+ return newTreeData;
81
+ };
82
+
83
+ var flattenAllData = fn(treeData, newTreeData, level, pos);
84
+ return {
85
+ flattenAllData: flattenAllData,
86
+ maxLevel: maxLevel
87
+ };
64
88
  };
65
89
  export var getExpand = function getExpand(expandedKeys, key) {
66
90
  return expandedKeys === null || expandedKeys === void 0 ? void 0 : _includesInstanceProperty(expandedKeys).call(expandedKeys, key);
@@ -97,29 +121,29 @@ var isAllParentExpand = function isAllParentExpand(data, pos) {
97
121
  };
98
122
 
99
123
  export var getAllFilterKeys = function getAllFilterKeys(data, filterTreeNode) {
100
- var filterData = _filterInstanceProperty(data).call(data, function (item) {
101
- return filterTreeNode === null || filterTreeNode === void 0 ? void 0 : filterTreeNode(item);
102
- });
103
-
104
- var filterKeys = getAllNodeKeys(filterData);
105
124
  var allFilterKeys = [];
106
125
 
107
- _mapInstanceProperty(filterKeys).call(filterKeys, function (key) {
108
- var _context2;
126
+ _filterInstanceProperty(data).call(data, function (item) {
127
+ return filterTreeNode === null || filterTreeNode === void 0 ? void 0 : filterTreeNode(item);
128
+ }).forEach(function (item) {
129
+ var node = _extends({}, item);
109
130
 
110
- return allFilterKeys.push.apply(allFilterKeys, _concatInstanceProperty(_context2 = _toConsumableArray(getAllParentKeys(data, key))).call(_context2, [key]));
131
+ while (node) {
132
+ allFilterKeys.push(node.key);
133
+ node = node.parent;
134
+ }
111
135
  });
112
136
 
113
137
  return _toConsumableArray(new _Set(allFilterKeys));
114
138
  };
115
- export var getFilterData = function getFilterData(data, filterTreeNode, filterValue) {
139
+ export var getFilterData = function getFilterData(data, filterTreeNode, isSearching) {
116
140
  var filterData = data;
141
+ var allFilterKeys = null;
117
142
 
118
- if (typeof filterTreeNode === 'function' && filterValue) {
143
+ if (isSearching) {
144
+ allFilterKeys = getAllFilterKeys(filterData, filterTreeNode);
119
145
  filterData = _filterInstanceProperty(filterData).call(filterData, function (item) {
120
- var _context3;
121
-
122
- return _includesInstanceProperty(_context3 = getAllFilterKeys(filterData, filterTreeNode)).call(_context3, item.key);
146
+ return _includesInstanceProperty(allFilterKeys).call(allFilterKeys, item.key);
123
147
  });
124
148
  }
125
149
 
@@ -258,11 +282,11 @@ export var getSpreadAttrData = function getSpreadAttrData(treeData, expandedKeys
258
282
  return newTreeData;
259
283
  };
260
284
  export var addKeys = function addKeys() {
261
- var _context4;
285
+ var _context2;
262
286
 
263
287
  var prevKeys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
264
288
  var newKeys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
265
- return _Array$from(new _Set(_concatInstanceProperty(_context4 = []).call(_context4, _toConsumableArray(prevKeys), _toConsumableArray(newKeys))));
289
+ return _Array$from(new _Set(_concatInstanceProperty(_context2 = []).call(_context2, _toConsumableArray(prevKeys), _toConsumableArray(newKeys))));
266
290
  };
267
291
  export var getAllParentKeys = function getAllParentKeys(data) {
268
292
  var pos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
@@ -315,14 +339,14 @@ export var getPos = function getPos(data, key) {
315
339
  return node === null || node === void 0 ? void 0 : node.pos;
316
340
  };
317
341
  export var getInitCheckedKeys = function getInitCheckedKeys(data, keys) {
318
- var _context5;
342
+ var _context3;
319
343
 
320
344
  var checkedKeys = [];
321
345
  keys.forEach(function (item) {
322
346
  var pos = getPos(data, item);
323
347
  checkedKeys.push.apply(checkedKeys, _toConsumableArray(getAllChildKeys(data, pos)));
324
348
  });
325
- return _Array$from(new _Set(_concatInstanceProperty(_context5 = []).call(_context5, checkedKeys, _toConsumableArray(keys))));
349
+ return _Array$from(new _Set(_concatInstanceProperty(_context3 = []).call(_context3, checkedKeys, _toConsumableArray(keys))));
326
350
  };
327
351
  export var getInitCheckededState = function getInitCheckededState(data) {
328
352
  var checkedKeys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
@@ -497,7 +521,7 @@ var getRootKeys = function getRootKeys(data) {
497
521
  export var getInitExpandedKeys = function getInitExpandedKeys(data, expandedKeys, defaultExpandedKeys, defaultExpandAll, defaultExpandRoot, defaultExpandParent) {
498
522
  var expandScrollkeys = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : [];
499
523
  var filterTreeNode = arguments.length > 7 ? arguments[7] : undefined;
500
- var filterValue = arguments.length > 8 ? arguments[8] : undefined;
524
+ var isSearching = arguments.length > 8 ? arguments[8] : undefined;
501
525
  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)) || [];
502
526
 
503
527
  if (defaultExpandAll) {
@@ -520,10 +544,10 @@ export var getInitExpandedKeys = function getInitExpandedKeys(data, expandedKeys
520
544
  }
521
545
  }
522
546
 
523
- if (typeof filterTreeNode === 'function' && filterValue) {
524
- var _context6;
547
+ if (isSearching) {
548
+ var _context4;
525
549
 
526
- keys = _concatInstanceProperty(_context6 = []).call(_context6, _toConsumableArray(keys), _toConsumableArray(getAllFilterKeys(data, filterTreeNode)));
550
+ keys = _concatInstanceProperty(_context4 = []).call(_context4, _toConsumableArray(keys), _toConsumableArray(getAllFilterKeys(data, filterTreeNode)));
527
551
  }
528
552
 
529
553
  return _Array$from(new _Set(_toConsumableArray(keys)));
@@ -255,6 +255,11 @@ function usePopper(locatorElement, popperElement, props) {
255
255
  visible = _useState10[0],
256
256
  setVisible = _useState10[1];
257
257
 
258
+ var _useState11 = (0, _react.useState)(false),
259
+ _useState12 = (0, _slicedToArray2.default)(_useState11, 2),
260
+ active = _useState12[0],
261
+ setActive = _useState12[1];
262
+
258
263
  (0, _react.useEffect)(function () {
259
264
  if (props.visible) {
260
265
  !exist && setExist(true);
@@ -265,20 +270,20 @@ function usePopper(locatorElement, popperElement, props) {
265
270
  }
266
271
  }, [exist, props.visible]);
267
272
 
268
- var _useState11 = (0, _react.useState)(''),
269
- _useState12 = (0, _slicedToArray2.default)(_useState11, 2),
270
- evType = _useState12[0],
271
- setEvType = _useState12[1];
272
-
273
- var _useState13 = (0, _react.useState)(),
273
+ var _useState13 = (0, _react.useState)(''),
274
274
  _useState14 = (0, _slicedToArray2.default)(_useState13, 2),
275
- align = _useState14[0],
276
- setAlign = _useState14[1];
275
+ evType = _useState14[0],
276
+ setEvType = _useState14[1];
277
277
 
278
- var _useState15 = (0, _react.useState)(placement),
278
+ var _useState15 = (0, _react.useState)(),
279
279
  _useState16 = (0, _slicedToArray2.default)(_useState15, 2),
280
- currentPlacement = _useState16[0],
281
- setCurrentPlacement = _useState16[1];
280
+ align = _useState16[0],
281
+ setAlign = _useState16[1];
282
+
283
+ var _useState17 = (0, _react.useState)(placement),
284
+ _useState18 = (0, _slicedToArray2.default)(_useState17, 2),
285
+ nextPlacement = _useState18[0],
286
+ setNextPlacement = _useState18[1];
282
287
 
283
288
  var alignPopper = (0, _react.useCallback)(function () {
284
289
  if ((locatorRef === null || locatorRef === void 0 ? void 0 : locatorRef.current) && (popperRef === null || popperRef === void 0 ? void 0 : popperRef.current)) {
@@ -323,39 +328,47 @@ function usePopper(locatorElement, popperElement, props) {
323
328
  bottom: locatorTop + borderTop + translateTop + height - containerTop - scrollTop
324
329
  };
325
330
  var currentPos = trigger === 'contextMenu' ? mousePos : locatorPos;
326
- var _currentPlacement = placement;
331
+ var currentPlacement = nextPlacement;
327
332
 
328
333
  if (autoPlacement) {
329
334
  if (top - gap - popperHeight <= 5 && bottom + gap + popperHeight < document.body.clientHeight - 5) {
330
- _currentPlacement = _currentPlacement.replace('top', 'bottom');
335
+ currentPlacement = currentPlacement.replace('top', 'bottom');
331
336
  }
332
337
 
333
338
  if (bottom + gap + popperHeight >= document.body.clientHeight - 5 && top - gap - popperHeight > 5) {
334
- _currentPlacement = _currentPlacement.replace('bottom', 'top');
339
+ currentPlacement = currentPlacement.replace('bottom', 'top');
335
340
  }
336
341
 
337
342
  if (left + popperWidth >= document.body.clientWidth - 5 && right - popperWidth > 5) {
338
- _currentPlacement = _currentPlacement.replace('Left', 'Right');
343
+ currentPlacement = currentPlacement.replace('Left', 'Right');
339
344
  }
340
345
 
341
346
  if (right - popperWidth <= 5 && left + popperWidth < document.body.clientWidth - 5) {
342
- _currentPlacement = _currentPlacement.replace('Right', 'Left');
347
+ currentPlacement = currentPlacement.replace('Right', 'Left');
343
348
  }
344
349
 
345
350
  if (top + popperHeight >= document.body.clientHeight - 5 && bottom - popperHeight > 5) {
346
- _currentPlacement = _currentPlacement.replace('Top', 'Bottom');
351
+ currentPlacement = currentPlacement.replace('Top', 'Bottom');
347
352
  }
348
353
 
349
354
  if (bottom - popperHeight <= 5 && top + popperHeight < document.body.clientHeight - 5) {
350
- _currentPlacement = _currentPlacement.replace('Bottom', 'Top');
355
+ currentPlacement = currentPlacement.replace('Bottom', 'Top');
351
356
  }
352
357
 
353
358
  if (left - gap - popperWidth <= 5 && right + gap + popperWidth < document.body.clientWidth - 5) {
354
- _currentPlacement = _currentPlacement.replace('left', 'right');
359
+ currentPlacement = currentPlacement.replace('left', 'right');
355
360
  }
356
361
 
357
362
  if (right + gap + popperWidth >= document.body.clientWidth - 5 && left - gap - popperWidth > 5) {
358
- _currentPlacement = _currentPlacement.replace('right', 'left');
363
+ currentPlacement = currentPlacement.replace('right', 'left');
364
+ }
365
+
366
+ if (right - width / 2 + popperWidth / 2 >= document.body.clientWidth - 5 && right - popperWidth > 5) {
367
+ currentPlacement += 'Right';
368
+ }
369
+
370
+ if (left - width / 2 - popperWidth / 2 <= 5 && left + popperWidth < document.body.clientWidth - 5) {
371
+ currentPlacement += 'Left';
359
372
  }
360
373
  }
361
374
 
@@ -417,16 +430,16 @@ function usePopper(locatorElement, popperElement, props) {
417
430
  top: topBottom
418
431
  }
419
432
  };
420
- var alignPos = mapAlign[_currentPlacement];
433
+ var alignPos = mapAlign[currentPlacement];
421
434
  var _arrowPos = {
422
435
  top: 0,
423
436
  left: 0
424
437
  };
425
438
 
426
- if (/left/.test(_currentPlacement) || /right/.test(_currentPlacement)) {
427
- if (/Top/.test(_currentPlacement)) {
439
+ if (/left/.test(currentPlacement) || /right/.test(currentPlacement)) {
440
+ if (/Top/.test(currentPlacement)) {
428
441
  _arrowPos.top = arrowOffset;
429
- } else if (/Bottom/.test(_currentPlacement)) {
442
+ } else if (/Bottom/.test(currentPlacement)) {
430
443
  _arrowPos.top = popperHeight - arrowOffset - 2 * arrowSize;
431
444
  } else {
432
445
  _arrowPos.top = (popperHeight - arrowWidth) / 2 - 1;
@@ -453,29 +466,40 @@ function usePopper(locatorElement, popperElement, props) {
453
466
  _arrowPos.top += scrollBottom - document.body.clientHeight;
454
467
  }
455
468
  }
456
- }
457
-
458
- if (/top/.test(_currentPlacement) || /bottom/.test(_currentPlacement)) {
459
- if (/Left/.test(_currentPlacement)) {
469
+ } else if (/top/.test(currentPlacement) || /bottom/.test(currentPlacement)) {
470
+ if (/Left/.test(currentPlacement)) {
460
471
  _arrowPos.left = arrowOffset;
461
- } else if (/Right/.test(_currentPlacement)) {
472
+ } else if (/Right/.test(currentPlacement)) {
462
473
  _arrowPos.left = popperWidth - arrowOffset - 2 * arrowSize;
463
474
  } else {
464
475
  _arrowPos.left = (popperWidth - arrowWidth) / 2 - 1;
465
476
  }
477
+
478
+ if (left <= 0) {
479
+ alignPos.left = locatorPos.left;
480
+ _arrowPos.left = arrowOffset;
481
+ } else if (right >= document.body.clientWidth) {
482
+ alignPos.left = locatorPos.right - popperWidth;
483
+ alignPos.right = -360;
484
+ _arrowPos.left = popperWidth - arrowOffset - 2 * arrowSize;
485
+ }
466
486
  }
467
487
 
468
488
  setAlign(alignPos);
469
489
  setArrowPos(_arrowPos);
470
- setCurrentPlacement(_currentPlacement);
490
+ setNextPlacement(currentPlacement);
471
491
  }
472
- }, [locatorRef, popperRef, container, trigger, mousePos, placement, gap, arrowOffset, arrowSize, arrowWidth, autoPlacement]);
492
+ }, [locatorRef, popperRef, container, trigger, mousePos, autoPlacement, gap, arrowOffset, arrowSize, arrowWidth]);
473
493
  (0, _react.useEffect)(function () {
474
494
  if (canAlign) {
475
495
  alignPopper();
476
496
  setCanAlign(false);
477
497
  props.visible === undefined && setVisible(true);
478
498
  onVisibleChange && onVisibleChange(true);
499
+ setActive(true);
500
+ setTimeout(function () {
501
+ return setActive(false);
502
+ }, 200);
479
503
  }
480
504
  }, [alignPopper, canAlign, onVisibleChange, props]);
481
505
  var arrowStyle = (_arrowStyle = {}, (0, _defineProperty2.default)(_arrowStyle, "--arrowSize", arrowSize + 'px'), (0, _defineProperty2.default)(_arrowStyle, "--arrowSpill", arrowWidth / -2 + 'px'), _arrowStyle);
@@ -487,10 +511,10 @@ function usePopper(locatorElement, popperElement, props) {
487
511
  var popperProps = {
488
512
  ref: popperRef,
489
513
  style: popperContainerStyle,
490
- className: (0, _classnames.default)(prefixCls, popperClassName, currentPlacement, (0, _defineProperty2.default)({
514
+ className: (0, _classnames.default)(prefixCls, popperClassName, nextPlacement, (0, _defineProperty2.default)({
491
515
  arrow: arrow,
492
516
  hidden: !visible
493
- }, "".concat(currentPlacement, "-active"), visible))
517
+ }, "".concat(nextPlacement, "-active"), active))
494
518
  };
495
519
  var popperNode = popperRef.current;
496
520
  var locatorNode = locatorRef.current;
@@ -520,6 +544,11 @@ function usePopper(locatorElement, popperElement, props) {
520
544
  props.visible === undefined && setVisible(false);
521
545
  onVisibleChange && onVisibleChange(false);
522
546
  }, [onVisibleChange, props.visible]);
547
+
548
+ var matchTrigger = function matchTrigger(words) {
549
+ return Array.isArray(trigger) ? (0, _includes.default)(trigger).call(trigger, words) : trigger === words;
550
+ };
551
+
523
552
  (0, _react.useEffect)(function () {
524
553
  if (exist && visible) {
525
554
  var mouseleaveTimer;
@@ -528,21 +557,21 @@ function usePopper(locatorElement, popperElement, props) {
528
557
  var triggerNode = getTriggerElement(locatorRef.current);
529
558
  var triggerRect = triggerNode.getBoundingClientRect();
530
559
  var popperRect = popperRef.current.getBoundingClientRect();
531
- var left = /left/.test(currentPlacement) ? popperRect.right : triggerRect.left;
532
- var right = /right/.test(currentPlacement) ? popperRect.left : triggerRect.right;
533
- var top = /top/.test(currentPlacement) ? popperRect.bottom : triggerRect.top;
534
- var bottom = /bottom/.test(currentPlacement) ? popperRect.top : triggerRect.bottom;
560
+ var left = /left/.test(nextPlacement) ? popperRect.right : triggerRect.left;
561
+ var right = /right/.test(nextPlacement) ? popperRect.left : triggerRect.right;
562
+ var top = /top/.test(nextPlacement) ? popperRect.bottom : triggerRect.top;
563
+ var bottom = /bottom/.test(nextPlacement) ? popperRect.top : triggerRect.bottom;
535
564
  var X = e.clientX,
536
565
  Y = e.clientY;
537
566
  var inTriggerRect = X > left - 2 && X < right + 2 && Y > top - 2 && Y < bottom + 2;
538
567
  var inPopperRect = X > popperRect.left && X < popperRect.right && Y > popperRect.top && Y < popperRect.bottom;
539
- var ableArea = evType === 'contextmenu' ? inPopperRect : inTriggerRect || inPopperRect;
568
+ var ableArea = matchTrigger('contextMenu') ? inPopperRect : inTriggerRect || inPopperRect;
540
569
 
541
570
  if (ableArea) {
542
571
  mouseleaveTimer && clearTimeout(mouseleaveTimer);
543
- evType === 'focus' && triggerNode.focus();
572
+ matchTrigger('focus') && triggerNode.focus();
544
573
  } else {
545
- evType === 'mouseenter' ? mouseleaveTimer = window.setTimeout(hidePopper, mouseLeaveDelay * 1000) : hidePopper();
574
+ matchTrigger('hover') ? mouseleaveTimer = window.setTimeout(hidePopper, mouseLeaveDelay * 1000) : hidePopper();
546
575
  }
547
576
  };
548
577
 
@@ -550,17 +579,21 @@ function usePopper(locatorElement, popperElement, props) {
550
579
  leading: true
551
580
  });
552
581
  var mapEvent = {
553
- mouseenter: 'mousemove',
554
- mouseup: 'mousedown',
582
+ hover: 'mousemove',
583
+ click: 'mousedown',
555
584
  focus: 'mousedown',
556
- contextmenu: 'mousedown'
585
+ contextMenu: 'mousedown'
557
586
  };
558
- document.addEventListener(mapEvent[evType], debounceHidePopper);
587
+ Array.isArray(trigger) ? trigger.forEach(function (action) {
588
+ return document.addEventListener(mapEvent[action], debounceHidePopper);
589
+ }) : document.addEventListener(mapEvent[trigger], debounceHidePopper);
559
590
  return function () {
560
- document.removeEventListener(mapEvent[evType], debounceHidePopper);
591
+ Array.isArray(trigger) ? trigger.forEach(function (action) {
592
+ return document.removeEventListener(mapEvent[action], debounceHidePopper);
593
+ }) : document.removeEventListener(mapEvent[trigger], debounceHidePopper);
561
594
  };
562
595
  }
563
- }, [currentPlacement, evType, exist, getTriggerElement, hidePopper, locatorRef, mouseLeaveDelay, popperRef, visible]);
596
+ }, [nextPlacement, evType, exist, getTriggerElement, hidePopper, locatorRef, mouseLeaveDelay, popperRef, visible]);
564
597
  (0, _react.useEffect)(function () {
565
598
  if (visible) {
566
599
  var scrollAlign = (0, _debounce.default)(function (e) {