@kdcloudjs/kdesign 1.4.1 → 1.5.2

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 (82) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/dist/kdesign-complete.less +60 -8
  3. package/dist/kdesign.css +58 -10
  4. package/dist/kdesign.css.map +1 -1
  5. package/dist/kdesign.js +595 -306
  6. package/dist/kdesign.js.map +1 -1
  7. package/dist/kdesign.min.css +3 -3
  8. package/dist/kdesign.min.js +8 -8
  9. package/dist/kdesign.min.js.map +1 -1
  10. package/es/anchor/anchor-link.js +0 -6
  11. package/es/anchor/anchor.js +102 -2
  12. package/es/avatar/avatar.js +3 -1
  13. package/es/carousel/carousel.js +4 -4
  14. package/es/config-provider/compDefaultProps.d.ts +0 -1
  15. package/es/config-provider/compDefaultProps.js +0 -1
  16. package/es/date-picker/range-picker.d.ts +1 -0
  17. package/es/date-picker/range-picker.js +2 -0
  18. package/es/date-picker/style/index.css +6 -3
  19. package/es/date-picker/style/index.less +7 -3
  20. package/es/dropdown/style/index.css +3 -0
  21. package/es/dropdown/style/index.less +4 -0
  22. package/es/dropdown/style/token.less +1 -0
  23. package/es/input/ClearableLabeledInput.js +3 -4
  24. package/es/input/style/index.css +13 -0
  25. package/es/input/style/index.less +10 -0
  26. package/es/input/style/mixin.less +6 -1
  27. package/es/menu/menu.d.ts +1 -0
  28. package/es/menu/menu.js +7 -1
  29. package/es/radio/radio.js +6 -1
  30. package/es/select/select.js +1 -1
  31. package/es/select/style/index.css +5 -5
  32. package/es/select/style/index.less +1 -1
  33. package/es/select/style/token.less +3 -2
  34. package/es/table/table.js +8 -2
  35. package/es/tree/style/index.css +30 -1
  36. package/es/tree/style/index.less +25 -1
  37. package/es/tree/style/token.less +3 -0
  38. package/es/tree/tree.d.ts +2 -0
  39. package/es/tree/tree.js +77 -12
  40. package/es/tree/treeHooks.d.ts +1 -1
  41. package/es/tree/treeHooks.js +3 -3
  42. package/es/tree/treeNode.d.ts +1 -0
  43. package/es/tree/treeNode.js +11 -8
  44. package/es/tree/utils/treeUtils.d.ts +4 -2
  45. package/es/tree/utils/treeUtils.js +64 -10
  46. package/lib/anchor/anchor-link.js +0 -6
  47. package/lib/anchor/anchor.js +102 -2
  48. package/lib/avatar/avatar.js +3 -1
  49. package/lib/carousel/carousel.js +4 -4
  50. package/lib/config-provider/compDefaultProps.d.ts +0 -1
  51. package/lib/config-provider/compDefaultProps.js +0 -1
  52. package/lib/date-picker/range-picker.d.ts +1 -0
  53. package/lib/date-picker/range-picker.js +2 -0
  54. package/lib/date-picker/style/index.css +6 -3
  55. package/lib/date-picker/style/index.less +7 -3
  56. package/lib/dropdown/style/index.css +3 -0
  57. package/lib/dropdown/style/index.less +4 -0
  58. package/lib/dropdown/style/token.less +1 -0
  59. package/lib/input/ClearableLabeledInput.js +3 -4
  60. package/lib/input/style/index.css +13 -0
  61. package/lib/input/style/index.less +10 -0
  62. package/lib/input/style/mixin.less +6 -1
  63. package/lib/menu/menu.d.ts +1 -0
  64. package/lib/menu/menu.js +7 -1
  65. package/lib/radio/radio.js +7 -1
  66. package/lib/select/select.js +1 -1
  67. package/lib/select/style/index.css +5 -5
  68. package/lib/select/style/index.less +1 -1
  69. package/lib/select/style/token.less +3 -2
  70. package/lib/table/table.js +8 -2
  71. package/lib/tree/style/index.css +30 -1
  72. package/lib/tree/style/index.less +25 -1
  73. package/lib/tree/style/token.less +3 -0
  74. package/lib/tree/tree.d.ts +2 -0
  75. package/lib/tree/tree.js +79 -11
  76. package/lib/tree/treeHooks.d.ts +1 -1
  77. package/lib/tree/treeHooks.js +3 -3
  78. package/lib/tree/treeNode.d.ts +1 -0
  79. package/lib/tree/treeNode.js +11 -8
  80. package/lib/tree/utils/treeUtils.d.ts +4 -2
  81. package/lib/tree/utils/treeUtils.js +71 -13
  82. package/package.json +2 -2
@@ -93,6 +93,13 @@
93
93
  &-title-disabled {
94
94
  color: @tree-node-disabled-color;
95
95
  }
96
+ &-title-wrap {
97
+ flex: 1;
98
+ position: relative;
99
+ display: flex;
100
+ align-items: center;
101
+ height: 100%;
102
+ }
96
103
  &-title {
97
104
  white-space: nowrap;
98
105
  margin-left: 6px;
@@ -118,12 +125,29 @@
118
125
  height: 100%;
119
126
  }
120
127
 
128
+ &-drag-over {
129
+ background-color: @tree-node-drag-over-color-background;
130
+ border: 2px solid @tree-node-drag-over-border-color;
131
+ }
132
+
121
133
  &-drag-line {
122
134
  position: absolute;
123
135
  left: 0;
124
136
  top: 100%;
125
137
  width: 100%;
126
- border-top: 1px solid #fc8555;
138
+ border-top: 2px solid @tree-node-drag-line-border-color;
139
+
140
+ &::before {
141
+ content: '';
142
+ width: 4px;
143
+ height: 4px;
144
+ background-color: #fff;
145
+ border-radius: 50%;
146
+ border: 2px solid @tree-node-drag-line-border-color;
147
+ position: absolute;
148
+ top: -1px;
149
+ transform: translateY(-50%);
150
+ }
127
151
  }
128
152
  &-leaf-icon {
129
153
  height: @tree-node-icon-height;
@@ -11,6 +11,9 @@
11
11
  @tree-node-checked-text-color: var(~'@{tree-prefix}-node-color-text-checked', @color-theme);
12
12
  @tree-node-hover-bg-color: var(~'@{tree-prefix}-node-color-backgroung-hover', @color-hover);
13
13
  @tree-node-icon-color-text: var(~'@{tree-prefix}-node-icon-color-text', #666666);
14
+ @tree-node-drag-over-border-color: var(~'@{tree-prefix}-node-drag-over-color-border', #5582f3);
15
+ @tree-node-drag-over-color-background: var(~'@{tree-prefix}-node-drag-over-color-background', #E3EBFF);
16
+ @tree-node-drag-line-border-color: var(~'@{tree-prefix}-node-drag-line-color-background', #276FF5);
14
17
 
15
18
  // sizing
16
19
  @tree-expand-icon-height: var(~'@{tree-prefix}-expand-icon-sizing-height', 22px);
package/es/tree/tree.d.ts CHANGED
@@ -12,6 +12,8 @@ export interface TreeProps {
12
12
  disabled?: boolean;
13
13
  draggable?: boolean;
14
14
  expandedKeys?: string[];
15
+ filterValue?: string;
16
+ filterTreeNode?: () => boolean;
15
17
  height?: number;
16
18
  icon?: ReactNode | ((props: any) => ReactNode);
17
19
  switcherIcon?: ReactNode | ((props: any) => ReactNode) | [ReactNode | ((props: any) => ReactNode)];
package/es/tree/tree.js CHANGED
@@ -1,6 +1,8 @@
1
1
  import _extends from "@babel/runtime-corejs3/helpers/extends";
2
+ import _toConsumableArray from "@babel/runtime-corejs3/helpers/toConsumableArray";
2
3
  import _slicedToArray from "@babel/runtime-corejs3/helpers/slicedToArray";
3
4
  import _defineProperty from "@babel/runtime-corejs3/helpers/defineProperty";
5
+ import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
4
6
  import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
5
7
  import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
6
8
  import React, { useContext, useCallback, useEffect } from 'react';
@@ -8,7 +10,7 @@ import classNames from 'classnames';
8
10
  import ConfigContext from '../config-provider/ConfigContext';
9
11
  import { getCompProps } from '../_utils';
10
12
  import TreeNode from './treeNode';
11
- import { getChecked, getHalfChecked, addKeys, flattenAll, delKey, getFilterData, getSpreadAttrData, getDataCheckededState, getDataCheckededStateStrictly, getMaxLevel, getAllChildKeys, getPos, getSelected } from './utils/treeUtils';
13
+ import { getChecked, getHalfChecked, addKeys, flattenAll, delKey, getFilterData, getSpreadAttrData, getDataCheckededState, getDataCheckededStateStrictly, getMaxLevel, getAllChildKeys, getPos, getSelected, calcDropPosition } from './utils/treeUtils';
12
14
  import { useChecked, useExpand, usePlantomHeightEffect, useViewportHeight, useVisibleDataMemo, useScrollToKey, useSelect } from './treeHooks';
13
15
  import isBoolean from 'lodash/isBoolean';
14
16
  var InternalTree = /*#__PURE__*/React.forwardRef(function (props, ref) {
@@ -58,7 +60,9 @@ var InternalTree = /*#__PURE__*/React.forwardRef(function (props, ref) {
58
60
  return '';
59
61
  } : _TreeProps$setTreeNod2,
60
62
  innerEstimatedItemSize = TreeProps.estimatedItemSize,
61
- style = TreeProps.style;
63
+ style = TreeProps.style,
64
+ filterTreeNode = TreeProps.filterTreeNode,
65
+ filterValue = TreeProps.filterValue;
62
66
  var treePrefixCls = getPrefixCls(prefixCls, 'tree', customPrefixcls); // 树样式前缀
63
67
 
64
68
  var treeNodePrefixCls = getPrefixCls(prefixCls, 'tree-node', customPrefixcls); // 树节点样式前缀
@@ -102,22 +106,34 @@ var InternalTree = /*#__PURE__*/React.forwardRef(function (props, ref) {
102
106
  var scrollRef = ref || rootRef;
103
107
  var treeNodeRef = React.useRef(null);
104
108
  var dragNodeRef = React.useRef(null);
109
+ var delayedDragEnterRef = React.useRef(null);
105
110
 
106
111
  var _React$useState5 = React.useState(true),
107
112
  _React$useState6 = _slicedToArray(_React$useState5, 2),
108
113
  isInit = _React$useState6[0],
109
114
  setIsInit = _React$useState6[1];
110
115
 
111
- var _useExpand = useExpand(flattenAllData, expandedKeysProps, defaultExpandedKeys, defaultExpandAll, defaultExpandRoot, defaultExpandParent, scrollKey, isInit),
112
- _useExpand2 = _slicedToArray(_useExpand, 1),
113
- expandedKeys = _useExpand2[0];
116
+ var _React$useState7 = React.useState(null),
117
+ _React$useState8 = _slicedToArray(_React$useState7, 2),
118
+ dropPosition = _React$useState8[0],
119
+ setDropPosition = _React$useState8[1];
120
+
121
+ var _React$useState9 = React.useState(null),
122
+ _React$useState10 = _slicedToArray(_React$useState9, 2),
123
+ dragOverNodeKey = _React$useState10[0],
124
+ setDragOverNodeKey = _React$useState10[1];
125
+
126
+ var _useExpand = useExpand(flattenAllData, expandedKeysProps, defaultExpandedKeys, defaultExpandAll, defaultExpandRoot, defaultExpandParent, scrollKey, isInit, filterTreeNode, filterValue),
127
+ _useExpand2 = _slicedToArray(_useExpand, 2),
128
+ expandedKeys = _useExpand2[0],
129
+ setExpandedKeys = _useExpand2[1];
114
130
 
115
131
  var spreadAttrData = React.useMemo(function () {
116
132
  return getSpreadAttrData(flattenAllData, expandedKeys);
117
133
  }, [flattenAllData, expandedKeys]);
118
134
  var filterData = React.useMemo(function () {
119
- return getFilterData(spreadAttrData);
120
- }, [spreadAttrData]);
135
+ return getFilterData(spreadAttrData, filterTreeNode, filterValue);
136
+ }, [spreadAttrData, filterTreeNode, filterValue]);
121
137
 
122
138
  var _useViewportHeight = useViewportHeight(height, listRef),
123
139
  _useViewportHeight2 = _slicedToArray(_useViewportHeight, 1),
@@ -176,7 +192,15 @@ var InternalTree = /*#__PURE__*/React.forwardRef(function (props, ref) {
176
192
  node: node
177
193
  });
178
194
  }, [onDragStart]);
179
- var handleDragOver = React.useCallback(function (event, node) {
195
+ var handleDragOver = React.useCallback(function (event, node, dropTarget) {
196
+ var dropPos = calcDropPosition(event, dropTarget);
197
+ setDropPosition(dropPos);
198
+ var dragNode = getDragNode();
199
+
200
+ if (dragNode.key === node.key) {
201
+ setDropPosition(null);
202
+ }
203
+
180
204
  onDragOver && onDragOver({
181
205
  event: event,
182
206
  node: node
@@ -188,13 +212,52 @@ var InternalTree = /*#__PURE__*/React.forwardRef(function (props, ref) {
188
212
  node: node
189
213
  });
190
214
  }, [onDragLeave]);
191
- var handleDragEnter = React.useCallback(function (event, node) {
215
+ var handleDragEnter = React.useCallback(function (event, node, dropTarget) {
216
+ var key = node.key,
217
+ pos = node.pos;
218
+ var dragNode = getDragNode();
219
+
220
+ if (!dragNode) {
221
+ return;
222
+ }
223
+
224
+ if (!delayedDragEnterRef.current) {
225
+ delayedDragEnterRef.current = {};
226
+ }
227
+
228
+ _Object$keys(delayedDragEnterRef.current).forEach(function (key) {
229
+ clearTimeout(delayedDragEnterRef.current[key]);
230
+ });
231
+
232
+ if ((dragNode === null || dragNode === void 0 ? void 0 : dragNode.key) !== key) {
233
+ var dragPos = calcDropPosition(event, dropTarget);
234
+ setDragOverNodeKey(key);
235
+ setDropPosition(dragPos);
236
+ delayedDragEnterRef.current[pos] = setTimeout(function () {
237
+ var newExpandedKeys = _toConsumableArray(expandedKeys);
238
+
239
+ if (!node.expand) {
240
+ newExpandedKeys = addKeys(expandedKeys, [key]);
241
+ }
242
+
243
+ if (!('expandedKeys' in TreeProps)) {
244
+ setExpandedKeys(newExpandedKeys);
245
+ }
246
+
247
+ onExpand === null || onExpand === void 0 ? void 0 : onExpand(newExpandedKeys, {
248
+ node: node,
249
+ expanded: true
250
+ });
251
+ }, 800);
252
+ }
253
+
192
254
  onDragEnter && onDragEnter({
193
255
  event: event,
194
256
  node: node
195
257
  });
196
- }, [onDragEnter]);
258
+ }, [TreeProps, expandedKeys, onDragEnter, onExpand, setExpandedKeys]);
197
259
  var handleDragEnd = React.useCallback(function (event, node) {
260
+ setDragOverNodeKey('');
198
261
  onDragEnd && onDragEnd({
199
262
  event: event,
200
263
  node: node
@@ -211,9 +274,10 @@ var InternalTree = /*#__PURE__*/React.forwardRef(function (props, ref) {
211
274
  event: event,
212
275
  node: node,
213
276
  dragNode: dragNode,
214
- keys: keys
277
+ dragNodesKeys: keys,
278
+ dropPosition: dropPosition
215
279
  });
216
- }, [onDrop, flattenAllData]);
280
+ }, [flattenAllData, onDrop, dropPosition]);
217
281
  var handleSelect = React.useCallback(function (event, node, key) {
218
282
  var checked = getChecked(checkedKeys, key);
219
283
  onSelect && onSelect([key], {
@@ -300,6 +364,7 @@ var InternalTree = /*#__PURE__*/React.forwardRef(function (props, ref) {
300
364
  item.style = setTreeNodeStyle(_extends({}, item));
301
365
  item.getDragNode = getDragNode;
302
366
  item.setDragNode = setDragNode;
367
+ item.dragOver = dragOverNodeKey === item.key && dropPosition === 0;
303
368
  return /*#__PURE__*/React.createElement(TreeNode, _extends({}, item, {
304
369
  key: item.key,
305
370
  ref: treeNodeRef
@@ -4,6 +4,6 @@ export declare const useViewportHeight: (height: number, listRef: React.RefObjec
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) => 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) => 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, filterValue: string) => 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[]>>];
@@ -64,7 +64,7 @@ export var useChecked = function useChecked(checkStrictly, checkedKeysProps, def
64
64
  }, [nextHalfCheckedKeys]);
65
65
  return [checkedKeys, halfCheckedKeys, setCheckedKeys, setHalfCheckedKeys];
66
66
  };
67
- export var useExpand = function useExpand(flattenAllData, expandedKeysProps, defaultExpandedKeys, defaultExpandAll, defaultExpandRoot, defaultExpandParent, scrollKey, isInit) {
67
+ export var useExpand = function useExpand(flattenAllData, expandedKeysProps, defaultExpandedKeys, defaultExpandAll, defaultExpandRoot, defaultExpandParent, scrollKey, isInit, filterTreeNode, filterValue) {
68
68
  var expandScrollkeys = [];
69
69
 
70
70
  if (scrollKey) {
@@ -73,8 +73,8 @@ export var useExpand = function useExpand(flattenAllData, expandedKeysProps, def
73
73
  }
74
74
 
75
75
  var initialExpandedKeys = React.useMemo(function () {
76
- return getInitExpandedKeys(flattenAllData, expandedKeysProps, defaultExpandedKeys, defaultExpandAll, defaultExpandRoot, defaultExpandParent, expandScrollkeys);
77
- }, [flattenAllData, expandedKeysProps, defaultExpandedKeys, defaultExpandAll, defaultExpandRoot, defaultExpandParent, scrollKey]);
76
+ return getInitExpandedKeys(flattenAllData, expandedKeysProps, defaultExpandedKeys, defaultExpandAll, defaultExpandRoot, defaultExpandParent, expandScrollkeys, filterTreeNode, filterValue);
77
+ }, [flattenAllData, expandedKeysProps, defaultExpandedKeys, defaultExpandAll, defaultExpandRoot, defaultExpandParent, scrollKey, filterTreeNode, filterValue]);
78
78
  var newExpandedKeys = React.useMemo(function () {
79
79
  return getExpandedKeys(expandedKeysProps, expandScrollkeys);
80
80
  }, [expandedKeysProps]);
@@ -24,6 +24,7 @@ export interface TreeNodeProps {
24
24
  checked?: boolean;
25
25
  pos?: string;
26
26
  estimatedItemSize?: number;
27
+ dragOver?: boolean;
27
28
  onCheck?: (key: string, value: boolean, node: React.ReactNode, event: React.MouseEvent<MouseEvent>, pos: string) => void;
28
29
  onSelect?: (event: React.MouseEvent<MouseEvent>, node: React.ReactNode, key: string) => void;
29
30
  onExpand?: (value: boolean, node: React.ReactNode) => void;
@@ -56,6 +56,7 @@ var TreeNode = /*#__PURE__*/React.forwardRef(function (props, ref) {
56
56
  style = TreeNodeProps.style,
57
57
  indeterminate = TreeNodeProps.indeterminate,
58
58
  estimatedItemSize = TreeNodeProps.estimatedItemSize,
59
+ dragOver = TreeNodeProps.dragOver,
59
60
  onExpand = TreeNodeProps.onExpand,
60
61
  onCheck = TreeNodeProps.onCheck,
61
62
  onDragStart = TreeNodeProps.onDragStart,
@@ -65,7 +66,7 @@ var TreeNode = /*#__PURE__*/React.forwardRef(function (props, ref) {
65
66
  onDragEnd = TreeNodeProps.onDragEnd,
66
67
  onDrop = TreeNodeProps.onDrop,
67
68
  onSelect = TreeNodeProps.onSelect,
68
- 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", "onExpand", "onCheck", "onDragStart", "onDragOver", "onDragLeave", "onDragEnter", "onDragEnd", "onDrop", "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"]);
69
70
 
70
71
  var nodeData = React.useMemo(function () {
71
72
  return _extends({
@@ -234,7 +235,7 @@ var TreeNode = /*#__PURE__*/React.forwardRef(function (props, ref) {
234
235
 
235
236
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
236
237
  draggable: draggable && !disabled,
237
- className: classNames((_classNames3 = {}, _defineProperty(_classNames3, "".concat(treeNodePrefixCls, "-draggabled"), true), _defineProperty(_classNames3, "".concat(treeNodePrefixCls, "-root"), true), _defineProperty(_classNames3, "".concat(treeNodePrefixCls, "-fb-children-pointerEvents"), forbiddenChildrenPointerEvents), _classNames3)),
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)),
238
239
  onDragStart: handleDragStart,
239
240
  onDragEnd: handleDragEnd,
240
241
  onDragOver: handleDragOver,
@@ -242,7 +243,9 @@ var TreeNode = /*#__PURE__*/React.forwardRef(function (props, ref) {
242
243
  onDragEnter: handleDragEnter,
243
244
  onDrop: handleDrop,
244
245
  ref: dragRef
245
- }, indent(), renderExpandIcon(), showIcon && renderNodeIcon(), checkable ? /*#__PURE__*/React.createElement(Checkbox, {
246
+ }, indent(), renderExpandIcon(), showIcon && renderNodeIcon(), /*#__PURE__*/React.createElement("div", {
247
+ className: "".concat(treeNodePrefixCls, "-title-wrap")
248
+ }, checkable ? /*#__PURE__*/React.createElement(Checkbox, {
246
249
  onChange: handleOnchange,
247
250
  checked: checked,
248
251
  indeterminate: !disabled && indeterminate,
@@ -251,9 +254,9 @@ var TreeNode = /*#__PURE__*/React.forwardRef(function (props, ref) {
251
254
  className: classNames("".concat(treeNodePrefixCls, "-title"), _defineProperty({}, "".concat(treeNodePrefixCls, "-title-disabled"), disabled))
252
255
  }, title)) : /*#__PURE__*/React.createElement("span", {
253
256
  className: classNames("".concat(treeNodePrefixCls, "-title"), _defineProperty({}, "".concat(treeNodePrefixCls, "-title-disabled"), disabled))
254
- }, title), showDragLine && /*#__PURE__*/React.createElement("span", {
257
+ }, title), showDragLine && !dragOver && /*#__PURE__*/React.createElement("span", {
255
258
  className: classNames("".concat(treeNodePrefixCls, "-drag-line"))
256
- })));
259
+ }))));
257
260
  };
258
261
 
259
262
  var handleOnchange = React.useCallback(function (e) {
@@ -278,11 +281,11 @@ var TreeNode = /*#__PURE__*/React.forwardRef(function (props, ref) {
278
281
  if (!draggable) return;
279
282
  setDragNode(nodeData);
280
283
  onDragStart && onDragStart(e, props);
281
- }, [onDragStart, nodeData, props, draggable]);
284
+ }, [draggable, setDragNode, nodeData, onDragStart, props]);
282
285
  var handleDragOver = React.useCallback(function (e) {
283
286
  if (!draggable) return;
284
287
  e.preventDefault();
285
- onDragOver && onDragOver(e, nodeData);
288
+ onDragOver && onDragOver(e, nodeData, dragRef.current);
286
289
  }, [onDragOver, nodeData, draggable]);
287
290
  var handleDragLeave = React.useCallback(function (e) {
288
291
  var _a;
@@ -300,7 +303,7 @@ var TreeNode = /*#__PURE__*/React.forwardRef(function (props, ref) {
300
303
  setForbiddenChildrenPointerEvents(true);
301
304
  if (!((_a = dragRef.current) === null || _a === void 0 ? void 0 : _a.isEqualNode(e.target))) return;
302
305
  setShowDragLine(true);
303
- onDragEnter && onDragEnter(e, nodeData);
306
+ onDragEnter && onDragEnter(e, nodeData, dragRef.current);
304
307
  }, [onDragEnter, nodeData, draggable]);
305
308
  var handleDragEnd = React.useCallback(function (e) {
306
309
  if (!draggable) return;
@@ -12,7 +12,8 @@ export declare const getExpand: (expandedKeys: string[], key: string) => boolean
12
12
  export declare const getChecked: (checkedKeys: string[], key: string) => boolean;
13
13
  export declare const getSelected: (selectedKeys: string[], key: string) => boolean;
14
14
  export declare const getHalfChecked: (halfCheckedKeys: string[], key: string) => boolean;
15
- export declare const getFilterData: (data: any[]) => any[];
15
+ export declare const getAllFilterKeys: (data: any[], filterTreeNode: FunctionConstructor) => any[];
16
+ export declare const getFilterData: (data: any[], filterTreeNode: FunctionConstructor, filterValue: string) => any[];
16
17
  export declare const getMaxLevel: (data: any[]) => number;
17
18
  /**
18
19
  *计算node的属性后返回新的 treedata
@@ -42,5 +43,6 @@ export declare const getDataCheckededStateStrictly: (checkedKeys: string[]) => {
42
43
  };
43
44
  export declare const delKey: (prevKeys: string[], delKeys: string[]) => never[] & string[];
44
45
  export declare const getAllNodeKeys: (data: any[]) => string[];
45
- export declare const getInitExpandedKeys: (data: any[], expandedKeys: string[], defaultExpandedKeys: string[], defaultExpandAll: boolean, defaultExpandRoot: boolean, defaultExpandParent: boolean, expandScrollkeys?: string[]) => 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[];
46
47
  export declare const getExpandedKeys: (expandedKeys: string[], expandScrollkeys?: string[]) => string[];
48
+ export declare const calcDropPosition: (event: React.MouseEvent, dropNode: HTMLElement) => 0 | 1 | -1;
@@ -4,10 +4,11 @@ import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable
4
4
  import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
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
- import _startsWithInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/starts-with";
8
7
  import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
9
- import _Array$from from "@babel/runtime-corejs3/core-js-stable/array/from";
8
+ import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
10
9
  import _Set from "@babel/runtime-corejs3/core-js-stable/set";
10
+ import _startsWithInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/starts-with";
11
+ import _Array$from from "@babel/runtime-corejs3/core-js-stable/array/from";
11
12
  import _spliceInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/splice";
12
13
 
13
14
  var __rest = this && this.__rest || function (s, e) {
@@ -22,6 +23,8 @@ var __rest = this && this.__rest || function (s, e) {
22
23
  }
23
24
  return t;
24
25
  };
26
+
27
+ var DRAG_OFFSET = 0.3;
25
28
  /**
26
29
  * 打平所有数组,并添加pos位置信息,
27
30
  * 方便根据expandKeys等计算节点的expand,checkedKeys计算节点checked状态
@@ -31,7 +34,6 @@ var __rest = this && this.__rest || function (s, e) {
31
34
  * @param pos
32
35
  */
33
36
 
34
-
35
37
  export var flattenAll = function flattenAll(treeData) {
36
38
  var newTreeData = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
37
39
  var level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
@@ -94,11 +96,37 @@ var isAllParentExpand = function isAllParentExpand(data, pos) {
94
96
  return expand;
95
97
  };
96
98
 
97
- export var getFilterData = function getFilterData(data) {
99
+ 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
+ var allFilterKeys = [];
106
+
107
+ _mapInstanceProperty(filterKeys).call(filterKeys, function (key) {
108
+ var _context2;
109
+
110
+ return allFilterKeys.push.apply(allFilterKeys, _concatInstanceProperty(_context2 = _toConsumableArray(getAllParentKeys(data, key))).call(_context2, [key]));
111
+ });
112
+
113
+ return _toConsumableArray(new _Set(allFilterKeys));
114
+ };
115
+ export var getFilterData = function getFilterData(data, filterTreeNode, filterValue) {
116
+ var filterData = data;
117
+
118
+ if (typeof filterTreeNode === 'function' && filterValue) {
119
+ filterData = _filterInstanceProperty(filterData).call(filterData, function (item) {
120
+ var _context3;
121
+
122
+ return _includesInstanceProperty(_context3 = getAllFilterKeys(filterData, filterTreeNode)).call(_context3, item.key);
123
+ });
124
+ }
125
+
98
126
  var newData = [];
99
- data.forEach(function (item) {
127
+ filterData.forEach(function (item) {
100
128
  var pos = item.pos;
101
- var parentExpand = isAllParentExpand(data, pos);
129
+ var parentExpand = isAllParentExpand(filterData, pos);
102
130
 
103
131
  if (parentExpand) {
104
132
  newData.push(item);
@@ -230,11 +258,11 @@ export var getSpreadAttrData = function getSpreadAttrData(treeData, expandedKeys
230
258
  return newTreeData;
231
259
  };
232
260
  export var addKeys = function addKeys() {
233
- var _context2;
261
+ var _context4;
234
262
 
235
263
  var prevKeys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
236
264
  var newKeys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
237
- return _Array$from(new _Set(_concatInstanceProperty(_context2 = []).call(_context2, _toConsumableArray(prevKeys), _toConsumableArray(newKeys))));
265
+ return _Array$from(new _Set(_concatInstanceProperty(_context4 = []).call(_context4, _toConsumableArray(prevKeys), _toConsumableArray(newKeys))));
238
266
  };
239
267
  export var getAllParentKeys = function getAllParentKeys(data) {
240
268
  var pos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
@@ -287,14 +315,14 @@ export var getPos = function getPos(data, key) {
287
315
  return node === null || node === void 0 ? void 0 : node.pos;
288
316
  };
289
317
  export var getInitCheckedKeys = function getInitCheckedKeys(data, keys) {
290
- var _context3;
318
+ var _context5;
291
319
 
292
320
  var checkedKeys = [];
293
321
  keys.forEach(function (item) {
294
322
  var pos = getPos(data, item);
295
323
  checkedKeys.push.apply(checkedKeys, _toConsumableArray(getAllChildKeys(data, pos)));
296
324
  });
297
- return _Array$from(new _Set(_concatInstanceProperty(_context3 = []).call(_context3, checkedKeys, _toConsumableArray(keys))));
325
+ return _Array$from(new _Set(_concatInstanceProperty(_context5 = []).call(_context5, checkedKeys, _toConsumableArray(keys))));
298
326
  };
299
327
  export var getInitCheckededState = function getInitCheckededState(data) {
300
328
  var checkedKeys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
@@ -468,6 +496,8 @@ var getRootKeys = function getRootKeys(data) {
468
496
 
469
497
  export var getInitExpandedKeys = function getInitExpandedKeys(data, expandedKeys, defaultExpandedKeys, defaultExpandAll, defaultExpandRoot, defaultExpandParent) {
470
498
  var expandScrollkeys = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : [];
499
+ var filterTreeNode = arguments.length > 7 ? arguments[7] : undefined;
500
+ var filterValue = arguments.length > 8 ? arguments[8] : undefined;
471
501
  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)) || [];
472
502
 
473
503
  if (defaultExpandAll) {
@@ -490,10 +520,34 @@ export var getInitExpandedKeys = function getInitExpandedKeys(data, expandedKeys
490
520
  }
491
521
  }
492
522
 
523
+ if (typeof filterTreeNode === 'function' && filterValue) {
524
+ var _context6;
525
+
526
+ keys = _concatInstanceProperty(_context6 = []).call(_context6, _toConsumableArray(keys), _toConsumableArray(getAllFilterKeys(data, filterTreeNode)));
527
+ }
528
+
493
529
  return _Array$from(new _Set(_toConsumableArray(keys)));
494
530
  };
495
531
  export var getExpandedKeys = function getExpandedKeys(expandedKeys) {
496
532
  var expandScrollkeys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
497
533
  var keys = (expandedKeys === null || expandedKeys === void 0 ? void 0 : _concatInstanceProperty(expandedKeys).call(expandedKeys, expandScrollkeys)) || [];
498
534
  return _Array$from(new _Set(_toConsumableArray(keys)));
535
+ };
536
+ export var calcDropPosition = function calcDropPosition(event, dropNode) {
537
+ var clientY = event.clientY;
538
+
539
+ var _dropNode$getBounding = dropNode.getBoundingClientRect(),
540
+ top = _dropNode$getBounding.top,
541
+ bottom = _dropNode$getBounding.bottom,
542
+ height = _dropNode$getBounding.height;
543
+
544
+ if (clientY <= top + height * DRAG_OFFSET) {
545
+ return -1;
546
+ }
547
+
548
+ if (clientY >= bottom - height * DRAG_OFFSET) {
549
+ return 1;
550
+ }
551
+
552
+ return 0;
499
553
  };
@@ -65,12 +65,6 @@ var AnchorLink = function AnchorLink(props) {
65
65
  }, [href, registerLink, prevHref]);
66
66
 
67
67
  var handleClick = function handleClick(e) {
68
- var anchorElement = document.getElementById(href.replace('#', ''));
69
-
70
- if (anchorElement) {
71
- anchorElement.scrollIntoView();
72
- }
73
-
74
68
  onClick === null || onClick === void 0 ? void 0 : onClick(e, {
75
69
  title: title,
76
70
  href: href
@@ -82,6 +82,85 @@ function getOffsetTop(element, container) {
82
82
  return rect.top;
83
83
  }
84
84
 
85
+ function isWindow(obj) {
86
+ return obj !== null && obj !== undefined && obj === obj.window;
87
+ }
88
+
89
+ function getScroll(target, top) {
90
+ var _a;
91
+
92
+ if (typeof window === 'undefined') {
93
+ return 0;
94
+ }
95
+
96
+ var method = top ? 'scrollTop' : 'scrollLeft';
97
+ var result = 0;
98
+
99
+ if (isWindow(target)) {
100
+ result = target[top ? 'pageYOffset' : 'pageXOffset'];
101
+ } else if (target instanceof Document) {
102
+ result = target.documentElement[method];
103
+ } else if (target) {
104
+ result = target[method];
105
+ }
106
+
107
+ if (target && !isWindow(target) && typeof result !== 'number') {
108
+ result = (_a = (target.ownerDocument || target).documentElement) === null || _a === void 0 ? void 0 : _a[method];
109
+ }
110
+
111
+ return result;
112
+ }
113
+
114
+ function easeInOutCubic(t, b, c, d) {
115
+ var cc = c - b;
116
+ t /= d / 2;
117
+
118
+ if (t < 1) {
119
+ return cc / 2 * t * t * t + b;
120
+ }
121
+
122
+ return cc / 2 * ((t -= 2) * t * t + 2) + b;
123
+ }
124
+
125
+ function scrollTo(y) {
126
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
127
+ var _options$getContainer = options.getContainer,
128
+ getContainer = _options$getContainer === void 0 ? function () {
129
+ return window;
130
+ } : _options$getContainer,
131
+ callback = options.callback,
132
+ _options$duration = options.duration,
133
+ duration = _options$duration === void 0 ? 450 : _options$duration;
134
+ var container = getContainer();
135
+ var scrollTop = getScroll(container, true);
136
+ var startTime = Date.now();
137
+
138
+ var frameFunc = function frameFunc() {
139
+ var timestamp = Date.now();
140
+ var time = timestamp - startTime;
141
+ var nextScrollTop = easeInOutCubic(time > duration ? duration : time, scrollTop, y, duration);
142
+
143
+ if (isWindow(container)) {
144
+ ;
145
+ container.scrollTo(window.pageXOffset, nextScrollTop);
146
+ } else if (container instanceof HTMLDocument || container.constructor.name === 'HTMLDocument') {
147
+ ;
148
+ container.documentElement.scrollTop = nextScrollTop;
149
+ } else {
150
+ ;
151
+ container.scrollTop = nextScrollTop;
152
+ }
153
+
154
+ if (time < duration) {
155
+ window.requestAnimationFrame(frameFunc);
156
+ } else if (typeof callback === 'function') {
157
+ callback();
158
+ }
159
+ };
160
+
161
+ window.requestAnimationFrame(frameFunc);
162
+ }
163
+
85
164
  var InternalAnchor = function InternalAnchor(props, ref) {
86
165
  var _a;
87
166
 
@@ -100,6 +179,7 @@ var InternalAnchor = function InternalAnchor(props, ref) {
100
179
  getCurrentAnchor = anchorProps.getCurrentAnchor,
101
180
  _anchorProps$offsetTo = anchorProps.offsetTop,
102
181
  offsetTop = _anchorProps$offsetTo === void 0 ? 0 : _anchorProps$offsetTo,
182
+ targetOffset = anchorProps.targetOffset,
103
183
  getContainer = anchorProps.getContainer,
104
184
  _anchorProps$bounds = anchorProps.bounds,
105
185
  bounds = _anchorProps$bounds === void 0 ? 5 : _anchorProps$bounds,
@@ -312,6 +392,26 @@ var InternalAnchor = function InternalAnchor(props, ref) {
312
392
 
313
393
  var handleScrollTo = function handleScrollTo(link) {
314
394
  setCurrentActiveLink(link);
395
+ var container = getScrollContainer();
396
+ var scrollTop = getScroll(container, true);
397
+ var sharpLinkMatch = sharpMatcherRegx.exec(link);
398
+
399
+ if (!sharpLinkMatch) {
400
+ return;
401
+ }
402
+
403
+ var targetElement = document.getElementById(sharpLinkMatch[1]);
404
+
405
+ if (!targetElement) {
406
+ return;
407
+ }
408
+
409
+ var eleOffsetTop = getOffsetTop(targetElement, container);
410
+ var y = scrollTop + eleOffsetTop;
411
+ y -= targetOffset !== undefined ? targetOffset : offsetTop || 0;
412
+ scrollTo(y, {
413
+ getContainer: getScrollContainer
414
+ });
315
415
  };
316
416
 
317
417
  var setCurrentActiveLink = (0, _react.useCallback)(function (link) {
@@ -336,9 +436,9 @@ var InternalAnchor = function InternalAnchor(props, ref) {
336
436
  }
337
437
  }
338
438
 
339
- var currentActiveLink = getAnchor(offsetTop || 0, bounds);
439
+ var currentActiveLink = getAnchor(targetOffset !== undefined ? targetOffset : offsetTop || 0, bounds);
340
440
  currentActiveLink && setCurrentActiveLink(currentActiveLink);
341
- }, [affix, setFixedTop, offsetTop, bounds, getAnchor, setCurrentActiveLink, type, getScrollContainer, anchorRef]);
441
+ }, [affix, setFixedTop, offsetTop, bounds, getAnchor, setCurrentActiveLink, type, getScrollContainer, anchorRef, targetOffset]);
342
442
  (0, _react.useEffect)(function () {
343
443
  getScrollContainer().addEventListener('scroll', handleScroll);
344
444
  handleScroll();